/* 小学生学习工作台 公共样式（移动端优先） */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#fdf6ec;color:#453525;font-size:15px;line-height:1.5}
button{font-family:inherit;cursor:pointer}
input,textarea,select{font-family:inherit}

/* 顶栏 */
.top{position:sticky;top:0;z-index:20;background:#f0930f;color:#fff;padding:10px 14px;display:flex;align-items:center;gap:10px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.top .t1{font-size:17px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .sub{font-size:12px;opacity:.85}
.pill{background:rgba(255,255,255,.18);border-radius:999px;padding:4px 12px;font-size:13px;white-space:nowrap}
.linkish{background:none;border:none;color:#fff;font-size:13px;text-decoration:underline;padding:4px}

.wrap{max-width:720px;margin:0 auto;padding:12px 12px 90px}

/* 卡片 */
.card{background:#fff;border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 2px 8px rgba(30,80,50,.07)}
.card h3{margin:0 0 8px;font-size:15px}
.muted{color:#9c8a72;font-size:12px}

/* 分区标题 */
.area{margin:16px 2px 8px;font-size:14px;font-weight:700;color:#8a5a12;display:flex;align-items:center;gap:6px}
.area .addbtn{margin-left:auto;background:#fff2dc;border:none;color:#f0930f;border-radius:999px;padding:3px 10px;font-size:12px}

/* 任务卡 */
.task{background:#fff;border-radius:14px;padding:12px 12px 10px;margin-bottom:10px;box-shadow:0 2px 8px rgba(30,80,50,.07)}
.task.done{background:#fffbf2;border:1px solid #bfe6cf}
.task .r1{display:flex;align-items:center;gap:8px}
.task .ic{font-size:22px}
.task .nm{flex:1;min-width:0;font-weight:600;font-size:15px}
.task .pts{background:#fff3d6;color:#9a6b00;border-radius:999px;padding:2px 9px;font-size:12px;white-space:nowrap}
.task .r2{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.cbtn{width:34px;height:34px;border-radius:10px;border:1px solid #ecdcc4;background:#fff;font-size:17px;color:#8a5a12}
.cnt{min-width:70px;text-align:center;font-weight:700;font-size:16px}
.bar{height:6px;background:#f4e7d4;border-radius:4px;overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:#f0930f;border-radius:4px;transition:width .3s}

/* 证明 */
.proofs{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.pchip{display:inline-flex;align-items:center;gap:4px;background:#fdf8f0;border:1px solid #eadcc6;border-radius:10px;padding:4px 8px;font-size:12px;max-width:100%}
.pchip.audio{background:#eef3ff;border-color:#c9d7f5}
.pchip.video{background:#fdeef5;border-color:#f2c9dc}
.pchip .x{color:#b3382c;font-weight:700;padding:0 2px}
.pbtns{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.sbtn{border:1px solid #ecdcc4;background:#fffdf8;color:#8a5a12;border-radius:10px;padding:7px 10px;font-size:13px}
.sbtn.pri{background:#f0930f;border-color:#f0930f;color:#fff}
.sbtn.warn{background:#fff;border-color:#e5b6b0;color:#b3382c}
.sbtn:disabled{opacity:.45}
.rec-on{color:#d33;font-weight:700}
.need{font-size:11px;color:#b3382c;margin-top:4px}

/* 登录 */
.login{max-width:360px;margin:8vh auto;text-align:center;padding:0 16px}
.login .logo{font-size:52px}
.pinbox{display:flex;gap:8px;justify-content:center;margin:18px 0}
.pindot{width:44px;height:52px;border:2px solid #ecdcc4;border-radius:12px;background:#fff;font-size:26px;display:flex;align-items:center;justify-content:center}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;margin:0 auto}
.pad button{height:58px;font-size:22px;border-radius:14px;border:1px solid #ecdcc4;background:#fff;color:#453525}
.pad button:active{background:#fff2dc}

/* 日历 */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal .h{font-size:11px;color:#9c8a72;text-align:center;padding:2px 0}
.cd{aspect-ratio:1;border-radius:10px;background:#fdf8f1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13px;border:none;padding:0}
.cd small{font-size:9px;color:#9c8a72}
.cd.full{background:#c9ecd6;color:#8a5a00}
.cd.part{background:#fdeec9;color:#7a5a00}
.cd.today{outline:2px solid #f0930f;outline-offset:-2px}
.cd.sel{outline:2px solid #f59e0b;outline-offset:-2px}
.monnav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.monnav b{font-size:16px}

/* 商店/宠物 */
.shop{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.item{background:#fff;border-radius:14px;padding:12px;text-align:center;box-shadow:0 2px 8px rgba(30,80,50,.07)}
.item .ic{font-size:30px}
.item .nm{font-weight:600;margin:4px 0}
.item .cost{color:#9a6b00;font-size:13px;font-weight:700}
.petbox{text-align:center}
.petbox .face{font-size:64px;line-height:1.2}
.lvbar{height:8px;background:#f4e7d4;border-radius:4px;overflow:hidden;margin:8px 20px}
.lvbar i{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24)}

/* 弹层 */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:#fff;width:100%;max-width:560px;border-radius:18px 18px 0 0;padding:16px;max-height:85vh;overflow:auto}
.sheet h3{margin:0 0 10px}
@media(min-width:560px){.mask{align-items:center}.sheet{border-radius:18px}}

/* 家长端表格 */
.ptable{width:100%;border-collapse:collapse;font-size:13px}
.ptable th{background:#f0f6f2;padding:6px 4px;font-size:12px;color:#7a6650}
.ptable td{border-bottom:1px solid #f7ecdc;padding:5px 4px;vertical-align:middle}
.ptable input[type=text],.ptable input[type=number]{width:100%;min-width:56px;padding:6px;border:1px solid #e9dac2;border-radius:8px;font-size:13px}
.ptable input[type=number]{width:58px}
.rowbtn{border:none;background:#fdecec;color:#b3382c;border-radius:8px;padding:5px 8px;font-size:12px}
.okchip{background:#c9ecd6;color:#8a5a00;border-radius:8px;padding:2px 8px;font-size:12px}
.pdchip{background:#fdeec9;color:#7a5a00;border-radius:8px;padding:2px 8px;font-size:12px}
.livechip{background:#fdeaea;color:#b3382c;border:1px solid #f5cdc8;border-radius:8px;padding:1px 7px;font-size:11.5px;white-space:nowrap}
.rjchip{background:#eee;color:#888;border-radius:8px;padding:2px 8px;font-size:12px}
.sect{margin:20px 0 8px;font-weight:700;color:#8a5a12;font-size:15px}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.tab{border:1px solid #ecdcc4;background:#fff;border-radius:999px;padding:6px 14px;font-size:13px;color:#8a5a12}
.tab.on{background:#f0930f;color:#fff;border-color:#f0930f}
.hwta{width:100%;min-height:120px;border:1px solid #e9dac2;border-radius:10px;padding:10px;font-size:14px;resize:vertical}
.rec-line{font-size:12px;color:#b3382c;margin-top:6px}

/* =========================================================
   错题本
   ========================================================= */
.mut{color:#9c8a72;font-size:13px;padding:20px;text-align:center}

/* 复习提醒条 */
.mt-banner{background:linear-gradient(90deg,#fff3d6,#ffe9bd);border:1px solid #f3d79a;color:#8a5a00;border-radius:12px;padding:10px 12px;font-size:14px;margin-bottom:10px;display:flex;align-items:center;gap:6px;cursor:pointer}
.mt-banner b{font-size:16px}
.mt-banner-go{margin-left:auto;font-weight:700;white-space:nowrap}

/* 顶部操作 */
.mt-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.mt-count{margin-left:auto;font-size:13px;color:#9c8a72}
.mt-count b{color:#8a5a12;font-size:16px}

/* 学科筛选 */
.mt-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.mt-chip{border:1px solid #ecdcc4;background:#fff;color:#8a5a12;border-radius:999px;padding:5px 12px;font-size:13px}
.mt-chip.on{background:#f0930f;color:#fff;border-color:#f0930f}
.mt-chip i{font-style:normal;opacity:.7;font-size:11px}

.mt-empty{background:#fff;border-radius:14px;padding:24px 18px;text-align:center;color:#9c8a72;font-size:13px;line-height:1.8}

/* 学生端列表 */
.mt-list{display:flex;flex-direction:column;gap:8px}
.mt-item{background:#fff;border-radius:14px;padding:10px;display:flex;gap:10px;box-shadow:0 2px 8px rgba(30,80,50,.07);cursor:pointer;align-items:flex-start}
.mt-item.due{border-left:4px solid #f59e0b}
.mt-thumb{width:64px;height:64px;flex:0 0 64px;border-radius:10px;overflow:hidden;background:#fdf8f0;display:flex;align-items:center;justify-content:center;border:1px solid #f2e6d4}
.mt-thumb.sm{width:48px;height:48px;flex-basis:48px}
.mt-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mt-thumb-txt{font-size:22px;font-weight:700;color:#f0930f}
.mt-body{flex:1;min-width:0}
.mt-line1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.mt-subj{background:#fff2dc;color:#8a5a00;border-radius:6px;padding:1px 7px;font-size:12px;font-weight:600}
.mt-kp{font-size:12px;color:#6b5638;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52%}
.mt-tag{font-size:11px;border-radius:6px;padding:1px 6px;background:#f7ecdc;color:#8a7a64}
.mt-tag.hot{background:#ffe9bd;color:#8a5a00;font-weight:700}
.mt-tag.ok{background:#c9ecd6;color:#8a5a00}
.mt-q{font-size:13px;color:#5c4a35;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-line2{display:flex;align-items:center;gap:8px;margin-top:5px}
.mt-dots{display:inline-flex;gap:3px}
.mt-dots i{width:7px;height:7px;border-radius:50%;background:#e0e8e3;display:block}
.mt-dots i.on{background:#f0930f}
.mt-prog{font-size:11px;color:#a89a86}

/* 家长端工具条 */
.mt-toolbar{display:flex;gap:8px;margin-bottom:10px}
.mt-search{flex:1;min-width:0;padding:8px 10px;border:1px solid #e9dac2;border-radius:10px;font-size:14px}
.mt-sel{padding:8px;border:1px solid #e9dac2;border-radius:10px;font-size:13px;background:#fff}
.mt-bulk{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:8px 12px;margin-bottom:10px;box-shadow:0 2px 8px rgba(30,80,50,.07);position:sticky;top:52px;z-index:9}
.mt-check-all{font-size:13px;color:#5c4a35;display:flex;align-items:center;gap:5px}
.mt-selcount{font-size:13px;color:#9c8a72}
.mt-selcount b{color:#f0930f;font-size:15px}
.mt-bulk .sbtn{margin-left:auto}
.mt-rows{display:flex;flex-direction:column;gap:8px}
.mt-row{background:#fff;border-radius:12px;padding:8px;display:flex;gap:8px;align-items:center;box-shadow:0 2px 6px rgba(30,80,50,.06)}
.mt-row.on{background:#fffbf2;border:1px solid #bfe6cf}
.mt-cb{flex:0 0 auto;display:flex;align-items:center;padding:0 2px}
.mt-cb input{width:20px;height:20px}
.mt-rowbtns{display:flex;flex-direction:column;gap:4px}
.mt-mini{border:1px solid #ecdcc4;background:#fffdf8;color:#8a5a12;border-radius:8px;padding:4px 8px;font-size:12px}
.mt-mini.warn{border-color:#e5b6b0;color:#b3382c;background:#fff}

/* 弹层 */
.mt-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:80;display:flex;align-items:flex-end;justify-content:center}
.mt-sheet{background:#fff;width:100%;max-width:560px;border-radius:18px 18px 0 0;max-height:92vh;display:flex;flex-direction:column}
.mt-sheet.wide{max-width:780px}
.mt-hd{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;border-bottom:1px solid #f7ecdc;flex:0 0 auto}
.mt-hd b{font-size:16px}
.mt-hd-sub{font-size:12px;color:#a89a86;flex:1;min-width:0}
.mt-x{margin-left:auto;border:none;background:#fdf8f0;color:#5a6b61;width:30px;height:30px;border-radius:50%;font-size:18px;line-height:1;flex:0 0 auto}
.mt-sheet-body{padding:12px 16px;overflow:auto;flex:1}
.mt-ft{display:flex;gap:8px;padding:10px 16px 14px;border-top:1px solid #f7ecdc;flex:0 0 auto}

/* 框选 / 去背景画布 */
.mt-crop-stage,.mt-clean-stage{padding:10px;overflow:auto;background:#3a4440;flex:1;display:flex;align-items:center;justify-content:center}
.mt-crop-stage canvas,.mt-clean-stage canvas{max-width:100%;max-height:56vh;display:block;border-radius:6px;background:#fff;touch-action:none}
.mt-tune{padding:8px 16px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px solid #f7ecdc;font-size:13px}
.mt-tune label{display:inline-flex;align-items:center;gap:5px;color:#5c4a35}
.mt-tune select{padding:4px 6px;border:1px solid #e9dac2;border-radius:8px;font-size:13px;background:#fff}
.mt-tune input[type=range]{width:90px}

/* 表单 */
.mt-form{padding:4px 0}
.mt-f{margin-bottom:10px;display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.mt-f label{font-size:12px;color:#9c8a72}
.mt-f input,.mt-f select,.mt-f textarea{width:100%;padding:8px 10px;border:1px solid #e9dac2;border-radius:10px;font-size:14px;background:#fff}
.mt-f textarea{resize:vertical}
.mt-f2{display:flex;gap:10px}
.mt-formthumb{margin-bottom:10px;text-align:center}
.mt-formthumb img{max-width:100%;max-height:130px;border:1px solid #f2e6d4;border-radius:8px}

/* 复习 */
.mt-review-img{width:100%;border:1px solid #f2e6d4;border-radius:10px;margin-bottom:10px}
.mt-review-q{font-size:15px;line-height:1.7;color:#453525;margin-bottom:10px}
.mt-hint{font-size:12px;color:#a89a86;text-align:center;margin:8px 0}
.mt-review-btns{display:flex;gap:10px}
.mt-review-btns .sbtn{flex:1;padding:12px;font-size:15px}
.mt-answer{margin-top:12px;background:#fffdf8;border:1px solid #f2e6d4;border-radius:10px;padding:10px;font-size:13px;line-height:1.8;color:#5c4a35}
.mt-answer summary{cursor:pointer;color:#8a5a12;font-weight:600}

@media(min-width:560px){.mt-mask{align-items:center}.mt-sheet{border-radius:18px}}

/* 擦除工具 */
.mt-erase-bar{border-top:none;padding-top:0}
.mt-erase-tip{font-size:12px;color:#a89a86;flex-basis:100%}
.sbtn.on{background:#f59e0b;border-color:#f59e0b;color:#fff}
.mt-clean-stage canvas{cursor:default}

/* =========================================================
   游戏化：宠物乐园 / 勋章成就 / 心愿商店
   ========================================================= */
.pet-card{text-align:center}
.pet-card.sick{background:linear-gradient(180deg,#fff6f4,#fff 60%)}
.pet-hd{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.pet-hd>div{flex:1;min-width:0;text-align:left}
.pet-name{font-size:17px}
.pet-tag{margin-left:6px;font-size:12px;background:#fff2dc;color:#8a5a00;border-radius:6px;padding:1px 7px;font-weight:400}
.pet-face{font-size:72px;line-height:1.12;margin:4px 0 6px}
.pet-face.sm{font-size:56px}
.pet-say{background:#f4f9f6;border-radius:12px;padding:8px 12px;font-size:13px;color:#5c4a35;display:inline-block;margin-bottom:10px;max-width:100%}

/* ---------- 宠物形象：真实照片，随等级长大 ---------- */
/* 白色圆角舞台：照片本身是白底，放在这块浅色台面上边缘完全融进去 */
.pet-wrap{position:relative;display:inline-block;margin:8px auto 8px;line-height:0;
  background:radial-gradient(ellipse at 50% 38%,#ffffff 58%,#fbfdfc 100%);
  border-radius:24px;padding:10px 14px 18px;
  box-shadow:0 8px 22px rgba(30,80,50,.10), inset 0 0 0 1px #fdf6ea}
.pet-stage{position:relative;display:inline-block;line-height:0;
  transform-origin:50% 92%;will-change:transform}
.pet-avatar{--ps:1;width:calc(104px * var(--ps));height:calc(104px * var(--ps));object-fit:contain;
  display:block;transition:width .5s cubic-bezier(.2,.8,.3,1),height .5s cubic-bezier(.2,.8,.3,1),filter .3s}
.pet-avatar.emoji{font-size:calc(64px * var(--ps));line-height:1;display:flex;align-items:flex-end;justify-content:center}
.pet-mood{position:absolute;right:-4px;bottom:2px;font-size:20px;line-height:1;background:#fff;border-radius:50%;
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 8px rgba(30,80,50,.18);pointer-events:none}
/* 地面投影：跳舞腾空时自动缩小变淡 */
.pet-shadow{position:absolute;left:50%;bottom:-8px;width:76%;height:13px;transform:translateX(-50%);
  background:radial-gradient(ellipse at center,rgba(40,70,55,.26),rgba(40,70,55,0) 70%);
  border-radius:50%;pointer-events:none}
.pet-stage.gone .pet-avatar{filter:grayscale(.9) opacity(.5)}
.pet-card .pet-stage.sick .pet-avatar{filter:saturate(.8)}
.size-tip{font-size:12px;color:#9c8a72;margin:2px 0 8px}
.size-tip b{color:#8a5a12}

/* 舞台聚光：跳舞时亮起来 */
.pet-stage::before{content:'';position:absolute;left:50%;top:50%;width:190%;height:150%;
  transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;opacity:0;transition:opacity .35s;
  background:radial-gradient(ellipse at center,rgba(255,231,150,.55),rgba(255,231,150,0) 68%)}
.pet-stage.dancing::before{opacity:1}

/* 音符粒子 */
.note-float{position:absolute;font-size:16px;pointer-events:none;user-select:none;
  animation:noteUp 1.8s ease-out forwards;will-change:transform,opacity}
@keyframes noteUp{
  0%{opacity:0;transform:translate(0,0) scale(.5) rotate(0)}
  18%{opacity:1}
  100%{opacity:0;transform:translate(var(--dx,0),-72px) scale(1.1) rotate(var(--rot,20deg))}
}

/* ---------- 舞步面板 ---------- */
.dance-wrap{margin-top:12px;padding-top:10px;border-top:1px dashed #f2e6d4;text-align:left}
.dance-t{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#8a5a12;margin-bottom:8px}
.dance-t .mute{margin-left:auto;font-weight:400;font-size:12px;color:#6b7f74;background:#fff9ef;
  border:1px solid #f2e6d4;border-radius:999px;padding:3px 10px;cursor:pointer}
.dance-list{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.dance-btn{background:#fff;border:1px solid #f2e6d4;border-radius:12px;padding:8px 4px;cursor:pointer;
  text-align:center;color:#5c4a35;line-height:1.35;font-size:11px;transition:.15s}
.dance-btn .d-ic{display:block;font-size:22px;line-height:1.2;margin-bottom:2px}
.dance-btn b{display:block;font-size:12.5px;font-weight:700}
.dance-btn .d-sub{color:#a89a86;font-size:10.5px}
.dance-btn.locked{background:#f8faf9;opacity:.6;cursor:not-allowed}
.dance-btn.on{border-color:#f0930f;background:#eaf8f0;box-shadow:0 0 0 2px rgba(46,158,107,.14)}
.dance-btn.now{border-color:#e0a02c;background:#fff8e8;box-shadow:0 0 0 2px rgba(224,160,44,.18)}
.dance-hint{font-size:11.5px;color:#a89a86;margin-top:7px;line-height:1.5}

/* 跳舞时的音乐律动条 */
.eq{display:inline-flex;gap:2px;align-items:flex-end;height:11px;margin-left:4px;vertical-align:middle}
.eq i{width:3px;background:#f0930f;border-radius:2px;height:4px;animation:eqJump .6s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:.15s}
.eq i:nth-child(3){animation-delay:.3s}
.eq i:nth-child(4){animation-delay:.45s}
@keyframes eqJump{0%,100%{height:4px}50%{height:11px}}

/* 商店里的宠物缩略图 */
.shop-pet{width:56px;height:56px;object-fit:contain;display:block;margin:0 auto}

/* 还没领养时的品种选择预览 */
.pet-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 4px}
.pet-pick span{background:#fffdf9;border:1px solid #f5e9d8;border-radius:12px;padding:6px 2px}
.pet-pick img{width:100%;height:56px;object-fit:contain;display:block}
.pet-pick b{display:block;font-size:11.5px;color:#5c4a35;font-weight:600;margin-top:2px}

/* 领养取名弹窗 */
.nm-mask{position:fixed;inset:0;background:rgba(18,40,30,.42);display:flex;align-items:center;justify-content:center;
  z-index:60;padding:20px;animation:fadeIn .18s}
.nm-card{background:#fff;border-radius:18px;padding:20px;width:100%;max-width:340px;box-shadow:0 18px 48px rgba(0,0,0,.22)}
.nm-card h3{margin:0 0 4px;font-size:17px}
.nm-card p{margin:0 0 12px;font-size:12.5px;color:#9c8a72;line-height:1.6}
.nm-card img{width:88px;height:88px;object-fit:contain;display:block;margin:2px auto 8px}
.nm-card input{width:100%;box-sizing:border-box;padding:12px;border:1px solid #ccd6d0;border-radius:11px;font-size:16px}
.nm-card .nm-btns{display:flex;gap:8px;margin-top:14px}
.nm-card .nm-btns button{flex:1;padding:11px;border:0;border-radius:11px;font-size:14px;cursor:pointer}
.nm-card .nm-btns .ok{background:#f0930f;color:#fff}
.nm-card .nm-btns .no{background:#fdf6ea;color:#41564b}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.lvline{display:flex;align-items:center;gap:8px;margin:4px 0 10px}
.lvtag{font-size:12px;font-weight:700;color:#8a5a12;background:#fff2dc;border-radius:999px;padding:2px 9px;flex:0 0 auto}
.lvline .lvbar{flex:1;height:8px;background:#f6eada;border-radius:999px;overflow:hidden;margin:0}
.lvline .lvbar i{display:block;height:100%;background:linear-gradient(90deg,#ffcf7d,#f0930f);border-radius:999px;transition:width .3s}
.lvline .muted{font-size:12px;flex:0 0 auto}

.attrs{margin:6px 0 10px}
.attr{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:13px}
.attr-lb{flex:0 0 82px;text-align:left;color:#5c4a35}
.attr-bar{flex:1;height:9px;background:#fdf6ea;border-radius:999px;overflow:hidden}
.attr-bar i{display:block;height:100%;border-radius:999px;transition:width .3s}
.attr b{flex:0 0 30px;text-align:right;font-size:13px}

.pet-alert{background:#fff2f0;border:1px solid #f3c9c2;color:#a5352a;border-radius:12px;padding:9px 11px;font-size:13px;line-height:1.6;margin-bottom:10px;text-align:left}
.pet-alert .sbtn{margin-top:6px}
.pet-acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.pet-acts .sbtn{flex:1 1 28%;font-size:12px;padding:7px 4px}
.inv{background:#fffdf8;border:1px solid #f2e6d4;border-radius:10px;padding:7px 10px;font-size:12px;color:#6b5638;margin-top:10px}

.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:8px}
.badge{background:#fff;border-radius:12px;padding:9px 6px;text-align:center;box-shadow:0 2px 6px rgba(30,80,50,.06);border:1px solid #fdf6ea}
.badge.got{background:linear-gradient(180deg,#fffdf3,#fff6dd);border-color:#f0d68a;box-shadow:0 3px 10px rgba(180,130,10,.16)}
.badge-ic{font-size:26px;line-height:1.25}
.badge:not(.got) .badge-ic{filter:grayscale(1);opacity:.4}
.badge-nm{font-size:12px;color:#4a5c52;margin-top:3px;font-weight:600;line-height:1.3}
.badge.got .badge-nm{color:#8a5a00}
.badge-bar{height:4px;background:#fdf6ea;border-radius:999px;overflow:hidden;margin:6px 4px 2px}
.badge-bar i{display:block;height:100%;background:#f7c67a}
.badge-pg{font-size:10px;color:#9aa8a0}
.badge-day{font-size:10px;color:#b08900;margin-top:2px}

.shop-head{display:flex;align-items:center;gap:10px}
.bigpts{font-size:27px;color:#8a5a12;line-height:1.2}
.frzpts{font-size:20px;color:#b07a00}
.tipbar{background:#fff8e6;border:1px solid #f0dcae;color:#8a5a00;border-radius:12px;padding:8px 12px;font-size:13px;line-height:1.6;margin-bottom:10px}
.kidx{font-size:11px;color:#9c8a72;margin-top:2px}
.lim{font-size:11px;color:#b07a00;margin-top:2px}
.item.off{opacity:.55}
.redeem-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f0f4f1;font-size:13px}
.redeem-row:last-child{border-bottom:none}
.rst{font-size:11px;border-radius:6px;padding:1px 7px;white-space:nowrap;flex:0 0 auto}
.rst.pend{background:#fff1cf;color:#8a5a00}
.rst.ok{background:#d8f0e2;color:#8a5a00}
.rst.rej{background:#f6e6e4;color:#a5352a}
.sickcard{background:linear-gradient(180deg,#fff5f3,#fff);border:1px solid #f3c9c2}

.toast{position:fixed;left:50%;bottom:38px;transform:translate(-50%,8px);background:rgba(28,58,44,.95);color:#fff;
  padding:10px 16px;border-radius:12px;font-size:14px;line-height:1.5;z-index:120;max-width:86vw;text-align:center;
  box-shadow:0 8px 24px rgba(0,0,0,.22);opacity:0;animation:toastIn .22s forwards;pointer-events:none}
.toast.out{animation:toastOut .45s forwards}
@keyframes toastIn{to{opacity:1;transform:translate(-50%,0)}}
@keyframes toastOut{to{opacity:0;transform:translate(-50%,-8px)}}
.badge-toast{background:linear-gradient(135deg,#b8860b,#e0b13a);font-weight:600}
.badge-toast .bt-ic{font-size:20px;vertical-align:-2px;margin-right:2px}

/* 番茄钟 */
.focus-card{background:linear-gradient(180deg,#fff7f3,#fff 70%)}
.focus-hd{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.focus-hd b{font-size:15px}
.focus-hd .muted{margin-left:auto;font-size:12px}
.focus-hd .fmin{color:#c0392b;font-size:15px}
.focus-time{font-size:44px;font-weight:700;text-align:center;color:#c0392b;
  font-variant-numeric:tabular-nums;letter-spacing:1px;line-height:1.25;margin:2px 0}
.focus-mode{text-align:center;font-size:12px;color:#9c8a72;margin-bottom:8px}
.focus-sel{width:100%;padding:7px 9px;border:1px solid #e9dac2;border-radius:10px;font-size:13px;background:#fff;margin-bottom:8px}
.focus-modes{display:flex;gap:6px;margin-bottom:8px}
.focus-modes .sbtn{flex:1;font-size:12px;padding:6px 4px}
.tchip{border:1px solid #f0c9a8;background:#fff6ee;color:#b25b1d;border-radius:999px;
  padding:1px 8px;font-size:11px;white-space:nowrap;flex:0 0 auto;margin-right:4px}
.pet-alert.danger{background:#fff3e0;border-color:#f0c48a;color:#a35b00}
.petbox.gone .pet-face{opacity:.75}

/* ---------- 页脚版本号 ---------- */
.verfoot{margin:18px 0 4px;text-align:center;font-size:11px;color:#bda98f;
  letter-spacing:.2px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.verfoot:active{opacity:.6}
.verfoot .vdot{opacity:.5;margin:0 4px}
.verfoot .vstale{color:#c0392b;font-weight:600}

/* =========================================================
   新版外观：暖橙主题 + 左侧导航（参考稿）
   ---------------------------------------------------------
   配色：主色 #f59b1b（阳光橙），页面底色 #fdf6ec（奶油），
        卡片纯白、圆角 16-18、阴影很浅；正文棕灰而不是纯黑，
        整体偏「作业本 + 阳光」的感觉。
   结构：顶部橙色横条 → 左导航（桌面）/ 横向胶囊条（手机）→ 内容区。
   ========================================================= */
:root{
  --brand:#f59b1b; --brand-d:#e2870a; --brand-l:#ffe6bd; --brand-soft:#fff3dd;
  --ink:#4a3a28; --ink2:#7d6a52; --ink3:#a9977f;
  --bg:#fdf6ec; --card:#fff; --line:#f2e5d2;
  --ok:#2f9e6b; --danger:#c0392b;
  --r-card:16px; --sh:0 6px 18px rgba(150,100,30,.07);
}

/* ---------- 顶栏 ---------- */
.top{background:linear-gradient(95deg,#ffbc42,#f8a01c 52%,#ef8f08);
  padding:9px 16px;gap:12px;box-shadow:0 4px 16px rgba(210,130,15,.26);align-items:center}
.top .brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.top .logo{width:38px;height:38px;flex:0 0 38px;border-radius:12px;background:rgba(255,255,255,.24);
  display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1}
.top .bwrap{min-width:0}
.top .bname{font-size:16.5px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;letter-spacing:.2px}
.top .bsub{font-size:11.5px;color:rgba(255,255,255,.88);margin-top:2px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.top-r{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.tpill{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.95);color:#a1620a;
  border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;white-space:nowrap;
  box-shadow:0 2px 6px rgba(150,95,10,.14)}
.tpill b{font-size:15px;color:var(--brand-d);font-weight:800;font-variant-numeric:tabular-nums}
.tpill.ghost{background:rgba(255,255,255,.2);color:#fff;box-shadow:none}
.tpill.ghost b{color:#fff}
.topout{background:rgba(255,255,255,.2);border:none;color:#fff;border-radius:999px;
  padding:7px 14px;font-size:12.5px;cursor:pointer}
.topout:hover{background:rgba(255,255,255,.32)}

/* ---------- 外壳 ---------- */
.shell{display:flex;align-items:flex-start;max-width:1300px;margin:0 auto}
.side{position:sticky;top:66px;width:186px;flex:0 0 186px;margin:14px 0 24px 14px;
  background:#fff;border-radius:18px;padding:10px 8px;box-shadow:var(--sh);z-index:20}
.nav{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;
  padding:11px 12px;border-radius:12px;font-size:14px;color:#6b5a44;text-align:left;
  cursor:pointer;text-decoration:none;transition:background .15s,color .15s;line-height:1.2}
.nav:hover{background:#fff8ea}
.nav .ni{font-size:17px;width:22px;text-align:center;flex:0 0 22px}
.nav.on{background:linear-gradient(90deg,#fff2da,#fffaef);color:#c07406;font-weight:700;
  box-shadow:inset 0 0 0 1.5px #ffd79a}
.side-hr{height:1px;background:#f5ead9;margin:8px 12px}
.main{flex:1;min-width:0;padding:14px 16px 48px}

/* ---------- 问候 ---------- */
.hello{display:flex;align-items:center;gap:10px;margin:2px 2px 14px}
.hello .sun{font-size:22px;line-height:1}
.hello h1{margin:0;font-size:21px;font-weight:800;color:#4a3a28;letter-spacing:.2px}
.hello .day{font-size:12.5px;color:var(--ink3);margin-top:4px}

/* ---------- 三张数据卡 ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.stat{background:#fff;border-radius:var(--r-card);padding:18px 10px 16px;text-align:center;
  box-shadow:var(--sh)}
.stat .v{font-size:30px;font-weight:800;color:var(--brand);line-height:1.1;
  font-variant-numeric:tabular-nums;letter-spacing:.5px}
.stat .lb{font-size:12.5px;color:var(--ink3);margin-top:5px}
.stat .lb i{font-style:normal;color:#f4c274;margin-left:2px}

/* ---------- 今日进度 ---------- */
.prog-card{background:#fff;border-radius:var(--r-card);padding:18px 20px 20px;box-shadow:var(--sh);margin-bottom:16px}
.pc-t{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#4a3a28;margin-bottom:14px}
.pbar{position:relative;height:14px;border-radius:999px;background:#f8ecd8}
.pbar i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,#ffcb6b,#f59b1b);transition:width .45s ease}
.pbar .knob{position:absolute;top:50%;width:20px;height:20px;border-radius:50%;background:#fff;
  border:3.5px solid var(--brand);transform:translate(-50%,-50%);
  box-shadow:0 2px 8px rgba(210,130,10,.32)}
.pbar.zero .knob{display:none}
.pc-sub{font-size:12.5px;color:var(--ink3);margin:10px 0 14px}
.pc-sub b{color:var(--brand);font-weight:700}
.pc-sub .pct{color:var(--brand);font-weight:700}
.pills{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
.subj{display:flex;align-items:center;gap:8px;background:#fffaf0;border-radius:9px;
  padding:9px 11px;font-size:13px;border-left:3px solid var(--brand);min-width:0}
.subj .nm{color:#6b5a44;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.subj .ct{margin-left:auto;color:#a9977f;font-variant-numeric:tabular-nums;white-space:nowrap}
.subj .ct b{color:#4a3a28;font-weight:700}
.subj.all{background:#f3fbf6;border-left-color:#38a870}
.subj.all .ct b{color:#238059}

/* ---------- 今日作业 ---------- */
.hw-card{background:#fff;border-radius:var(--r-card);padding:18px 20px 20px;box-shadow:var(--sh);margin-bottom:16px}
.hw-t{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#4a3a28;margin-bottom:6px}
.hw-hint{font-size:12.5px;color:var(--ink3);margin:0 0 12px;line-height:1.65}
.hw-card .hwta{min-height:138px;border:1px solid #efe0c8;border-radius:12px;background:#fffdf8;
  padding:12px 14px;font-size:14px;line-height:1.75;color:#4a3a28;width:100%;resize:vertical}
.hw-card .hwta:focus{outline:none;border-color:#f8c877;box-shadow:0 0 0 3px rgba(245,155,27,.13)}
.btn-pri{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(180deg,#fcb343,#f09009);
  border:none;color:#fff;border-radius:11px;padding:11px 20px;font-size:14px;font-weight:700;
  cursor:pointer;box-shadow:0 4px 12px rgba(225,140,15,.3)}
.btn-pri:active{transform:translateY(1px);box-shadow:0 2px 8px rgba(225,140,15,.3)}
.btn-pri:disabled{opacity:.5}
.hw-more{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.hw-more .sbtn{background:#fffdf8;border-color:#efe0c8;color:#8a7048;font-size:12.5px;padding:7px 11px}

/* ---------- 通用卡片/按钮微调（覆盖旧绿色） ---------- */
.card{background:#fff;border-radius:var(--r-card);box-shadow:var(--sh);padding:16px 18px}
.card h3{font-size:15px;color:#4a3a28}
.area{margin:18px 4px 9px;font-size:13.5px;font-weight:700;color:#8a6a3a;letter-spacing:.2px}
.area .addbtn{background:#fff3dd;border:1px solid #ffd79a;color:#c07406;border-radius:999px;
  padding:4px 11px;font-size:11.5px;cursor:pointer}
.sbtn{background:#fffdf8;border:1px solid #ecdcc4;color:#8a6a3a;border-radius:10px}
.sbtn.pri{background:linear-gradient(180deg,#fcb343,#f09009);border-color:#f09009;color:#fff;
  box-shadow:0 3px 10px rgba(225,140,15,.26)}
.sbtn.warn{background:#fff7f6;border-color:#f0c7c1;color:#b3382c}
.task{background:#fff;border-radius:14px;box-shadow:var(--sh);border:1px solid #fbf1e2}
.task.done{background:#fbfefc;border:1px solid #d8efdf}
.task .pts{background:#fff2d8;color:#a9690a}
.task .nm{color:#4a3a28}
.bar{background:#f8ecd8}
.bar i{background:linear-gradient(90deg,#ffcb6b,#f59b1b)}
.tchip{background:#fff6e8;border-color:#f6d9ab;color:#b06a10}
.focus-card{background:#fff}
.focus-time{color:#e8870c}
.focus-hd .fmin{color:#e8870c}
.focus-modes .sbtn.on,.sbtn.on{background:linear-gradient(180deg,#fcb343,#f09009);border-color:#f09009;color:#fff}
.verfoot{color:#c9b79c}
.cd.today{outline-color:#f59b1b}

/* ---------- 登录页 ---------- */
.login .logo{font-size:56px}
.login h2{color:#3f3122}
.login .pad button{background:#fff;border-color:#efe0c8;color:#4a3a28}
.login .pad button:active{background:#fff3dd}
.pindot{border-color:#efd9b4;background:#fff}

/* ---------- 手机端 ---------- */
@media(max-width:880px){
  .shell{display:block}
  .side{position:sticky;top:58px;width:auto;flex:none;margin:0;border-radius:0;padding:8px 10px;
    display:flex;gap:6px;overflow-x:auto;box-shadow:0 4px 12px rgba(150,100,30,.07);
    border-bottom:1px solid var(--line);scrollbar-width:none}
  .side::-webkit-scrollbar{display:none}
  .nav{width:auto;flex:0 0 auto;padding:9px 13px;border-radius:999px;font-size:13px;gap:6px}
  .nav .ni{width:auto;flex:none;font-size:15px}
  .nav.on{background:linear-gradient(180deg,#ffb733,#f09009);color:#fff;
    box-shadow:0 3px 10px rgba(225,140,15,.28)}
  .side-hr{display:none}
  .main{padding:12px 12px 60px}
}
@media(max-width:560px){
  .top{padding:8px 12px;gap:8px}
  .top .logo{width:34px;height:34px;flex-basis:34px;font-size:18px}
  .top .bname{font-size:15px}
  .top .bsub{font-size:10.5px}
  .tpill{padding:5px 10px;font-size:11.5px}
  .tpill b{font-size:13px}
  .topout{padding:6px 11px;font-size:11.5px}
  .hello h1{font-size:18px}
  .stats{gap:9px}
  .stat{padding:14px 6px 12px}
  .stat .v{font-size:23px}
  .stat .lb{font-size:11px}
  .pills{grid-template-columns:1fr}
  .prog-card,.hw-card,.card{padding:15px 14px}
}

/* ---------- 细节收尾 ---------- */
.bigpts{color:var(--brand-d)}
.frzpts{color:#c08a1a}
.cal{max-width:660px;margin:0 auto}
.area{border-left:3px solid #f5c375;padding-left:9px;padding-top:2px;padding-bottom:2px}
.area .addbtn{margin-top:0}
@media(max-width:480px){
  .top .bn2{display:none}
  .top .fcode{display:none}
  .area{font-size:12.5px}
}
/* 顶栏两个胶囊统一成「白底 + 橙字」，跟参考稿一致；半透明只保留 hover 反馈 */
.tpill.ghost{background:rgba(255,255,255,.92);color:#a1620a;box-shadow:0 2px 6px rgba(150,95,10,.12)}
.tpill.ghost b{color:var(--brand-d)}
/* 错题本批量条跟着新的顶栏高度走，别被压住 */
.mt-bulk{top:62px}
@media(max-width:880px){.mt-bulk{top:100px}}

/* 超窄屏（≤430px）：顶栏分两行，孩子名字保住，胶囊放第二行；顶栏不再吸顶，
   只留导航条吸顶，避免小屏上被两层固定条吃掉视野 */
@media(max-width:430px){
  .top{position:static;flex-wrap:wrap;padding:9px 11px 8px;row-gap:7px}
  .top .brand{flex:1 1 100%}
  .top-r{flex:1 1 100%;justify-content:space-between;gap:6px}
  .tpill{padding:4px 9px;font-size:11px;gap:4px}
  .tpill b{font-size:12.5px}
  .topout{padding:5px 10px;font-size:11px}
  .top .bn1{font-size:16px}
  .side{top:0}
  .main{padding:10px 10px 56px}
}

/* 侧栏学科快捷跳转：右侧带 n/m 小计数，手机上不显示（横向条太挤） */
.nav-sub{font-size:13.5px;color:#7d6a52}
.nav-sub .nct{margin-left:auto;font-size:11.5px;color:#b9a68c;font-variant-numeric:tabular-nums}
.nav-sub:hover .nct{color:#c07406}
@media(max-width:880px){.nav-sub{display:none}}

/* ---------- 互斥组（新概念三选一）----------
   同组里已经选了别的，这张卡就变灰、锁住按钮，只留一行说明。
   不直接隐藏：让孩子看得见「还有另外两种方式」，明天可以换。 */
.task.lock{background:#fdfcf9;border:1px dashed #e7dccb;box-shadow:none;opacity:.86}
.task.lock .nm{color:#9b8d7a}
.task.lock .pts{background:#f3efe6;color:#a3947f}
.locktip{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#a3947f;
  background:#f8f3e9;border-radius:9px;padding:7px 11px;line-height:1.5}
.cbtn:disabled{opacity:.42;cursor:not-allowed}
/* 家长任务表：「三选一」小标记 */
.excltip{font-size:10.5px;color:#b08a4a;margin-top:2px;line-height:1.2}
/* 计数按钮不许折行（「＋5」在窄卡片里会被挤成两行） */
.cbtn{white-space:nowrap}

/* 录音浮条 */
.recbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:60;
  display:flex;align-items:center;gap:10px;background:#fff;border-radius:14px;
  padding:10px 12px 10px 14px;box-shadow:0 10px 30px rgba(150,100,30,.22);
  border:1px solid #f3e2c8;max-width:calc(100vw - 24px)}
.recbar #recstat{font-size:13px;color:#4a3a28;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recbar .rdot{width:9px;height:9px;border-radius:50%;background:#e0533d;flex:0 0 9px;
  animation:recpulse 1.1s ease-in-out infinite}
@keyframes recpulse{0%,100%{opacity:1}50%{opacity:.25}}
.recbar .sbtn{padding:7px 12px;font-size:12.5px;white-space:nowrap}
@media(max-width:430px){.recbar{bottom:12px;left:12px;right:12px;transform:none;justify-content:space-between}}
.task.lock .bar{display:none}

/* ---------- 必做 / 选做 ----------
   家务、自主任务是选做：卡片上打个「选做」小标，进度条只按必做算。 */
.optchip{background:#eef3ff;color:#3a5fa8;border-radius:8px;padding:1px 7px;font-size:11.5px;white-space:nowrap;font-weight:400}
.areatag{font-size:11.5px;font-weight:400;color:#9b8569;background:#fdf3e3;border:1px solid #f0e0c6;border-radius:8px;padding:1px 8px;margin-left:6px;white-space:nowrap}
.nav-sub .nopt{font-size:10.5px;color:#7d93bd;background:#eef3ff;border-radius:6px;padding:0 5px;margin-left:4px}
.pc-opt{margin-top:10px;font-size:12.5px;color:#8a7a66;background:#fffaf0;border:1px solid #f6ead6;border-radius:9px;padding:8px 11px;line-height:1.6}
.pc-opt b{color:#3a5fa8}

/* ---------- 家长端「证据」页 ---------- */
.evbar{position:relative}
.evnav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.evdate{padding:8px 10px;border:1px solid #ecdcc2;border-radius:10px;font-size:14px;background:#fff;color:#43331f}
.evpick{margin-top:10px}
.evpick select{width:100%;padding:9px 10px;border:1px solid #ecdcc2;border-radius:10px;font-size:14px;background:#fff;color:#43331f}
.evhint{font-size:12px;margin-top:6px;line-height:1.6;color:#9b8569}
.evsum .evsum-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}
.evsum .evsum-top b{font-size:15px;color:#43331f}
.evnums{font-size:13px;color:#6b5a45;margin-top:2px}
.evmiss{background:linear-gradient(180deg,#fff6f3,#fff);border:1px solid #f3c9c2}
.evok{background:linear-gradient(180deg,#f2fbf5,#fff);border:1px solid #cfe9d8;color:#2c6e48}
.evmlist{margin-top:6px}
.evmrow{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;padding:5px 0;border-bottom:1px dashed #f0e6d6;font-size:13px;color:#4a3a28}
.evmrow:last-child{border-bottom:0}
.evmrow .muted{margin-left:auto}
.evcard{background:#fff;border:1px solid #f3e7d4;border-radius:12px;padding:12px;margin-bottom:10px;box-shadow:0 1px 4px rgba(120,80,20,.04)}
.evcard.done{border-color:#d9ecdf;background:#fcfffd}
.evhd{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.evic{font-size:17px;flex:0 0 auto}
.evnm{flex:1;min-width:0;font-weight:600;color:#43331f;font-size:14px;line-height:1.4}
.evmeta{font-size:12px;color:#8a7a66;margin-top:4px}
.evlack{font-size:12px;color:#b3382c;margin-top:6px}
.evproofs{margin-top:8px}
.evimgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.evimg{width:100%;height:104px;object-fit:cover;border-radius:10px;background:#f6f8f7;display:block}
.evmedia{margin-top:8px}
.evmedia audio,.evmedia video{width:100%;margin-top:4px;border-radius:8px}
.evmedia video{max-height:240px;background:#000}
.evdays{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.evdaychip{border:1px solid #f0d7c8;background:#fff6f1;color:#a54a33;border-radius:8px;padding:4px 8px;font-size:12px;cursor:pointer}
.evdaychip:hover{background:#ffece4}
@media(max-width:560px){
  .evimg{height:86px}
  .evdate{flex:1;min-width:130px}
}
/* 漏打卡清单里的日期按钮：.linkish 本来是顶栏用的白字，白卡上要换深色 */
.evmrow .linkish{color:#a54a33;font-weight:600;font-size:13px;padding:0 2px;text-decoration:underline}
.evmrow .linkish:hover{color:#c05a3d}

/* ---------- 家长端：改成与学生端同一套外壳 ----------
   顶栏 + 左侧竖排导航 + 右侧主区。家长主要在电脑上用，
   左栏常驻比顶上排一行标签好找；手机上左栏自动变成横向滑动的胶囊条（沿用 .side 的媒体查询）。 */
.pmain{max-width:1120px;margin:0 auto;width:100%}
.pmain .card{margin-bottom:14px}
.pmain .sect{margin-top:18px}
/* 导航右侧的计数：待确认 / 待补打卡 */
/* 只作用于家长端导航：学生端侧栏的学科计数（.nav-sub）保持原样 */
.side .nav:not(.nav-sub) .nct{margin-left:auto;font-size:11.5px;color:#b9a68c;
  font-variant-numeric:tabular-nums;background:#fdf5e8;border-radius:8px;padding:1px 7px;line-height:1.5}
.side .nav.on:not(.nav-sub) .nct{color:#c07406;background:#fff2da}
.side .nav:not(.nav-sub) .nct.warn{color:#c0392b;background:#fdeceb}
/* 顶栏的「学生端」是个链接，样式和「退出」按钮对齐 */
a.topout{display:inline-flex;align-items:center;text-decoration:none}
/* 手机上顶栏放不下这么多胶囊：学生端入口左栏里已经有了，这里收起来 */
@media(max-width:560px){
  .pmain .card{margin-bottom:12px}
  .top .top-r a.topout{display:none}
}
/* 表单类页面收窄一点，桌面上不至于一行拉到底 */
.pmain .narrow{max-width:760px}

/* ---------- v1.6.0 ---------- */
/* 宠物卡片底部：弃养换一只的入口。.linkish 本来是顶栏白字，白卡上要换深色 */
.pet-foot{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;
  margin-top:12px;padding-top:10px;border-top:1px dashed #f0e6d6}
.pet-foot .linkish{color:#a54a33;font-size:12.5px;text-decoration:underline}
.pet-foot .linkish:hover{color:#c0392b}
.pet-foot .muted{font-size:12px}
/* 视频证据的下载链接：老师要视频时，家长点这里存到本地再转发 */
.dl{color:#2e9e6b;text-decoration:underline}
.dl:hover{color:#237a53}

/* ---------- v1.7.0 上传进度条 / 断点续传 ---------- */
/* 上传进度：贴在屏幕底部，孩子能看见传到百分之几了 */
.upbar{position:fixed;left:0;right:0;bottom:0;z-index:150;display:none;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:transparent}
.upb-card{max-width:520px;margin:0 auto;background:#fffdf8;border:1px solid #ecdcc4;border-radius:14px;
  padding:12px 14px;box-shadow:0 6px 24px rgba(60,40,10,.18)}
.upb-top{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin-bottom:8px}
.upb-top b{color:#7a4a12}
.upb-top span{color:#2e9e6b;font-weight:700}
.upb-track{height:10px;border-radius:6px;background:#f0e6d6;overflow:hidden}
.upb-fill{height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,#fcb343,#f09009);
  transition:width .18s ease}
.upb-sub{margin-top:7px;font-size:12.5px;color:#8a7a5a}
.upb-btns{margin-top:10px;display:flex;gap:8px;justify-content:flex-end}
.sbtn.sm{padding:5px 9px;font-size:12.5px}
/* 顶部常驻提示：还有没传完的视频 */
.uppending{position:sticky;top:0;z-index:30;display:none;align-items:center;gap:10px;flex-wrap:wrap;
  background:#fff6e2;border-bottom:1px solid #f0dfbe;color:#8a5a12;font-size:13px;padding:8px 14px}
.uppending .sbtn{padding:4px 9px;font-size:12.5px}

/* ---------- v1.8.0 拍视频改成「按天、按需开启」 ---------- */
/* 学生端：今天被家长点名要视频的任务卡上一条小提示 */
.cliptip{margin-top:8px;padding:7px 10px;border-radius:9px;background:#fff2e0;
  border:1px dashed #f0c98a;color:#9a5a10;font-size:12.5px;line-height:1.5}
/* 家长端证据页：按日期勾选「今天要拍视频」 */
.clipbar{border-left:4px solid #f0a12a}
.clipbar-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.clipbar-top b{color:#8a5a12;font-size:15px}
.clipbar-top .muted,.clipbar-hint{font-size:12.5px;color:#8a7a66}
.clipbar-hint{margin:8px 0 10px;line-height:1.65}
.cliplist{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 14px}
.clipitem{display:flex;align-items:center;gap:7px;font-size:13px;padding:5px 7px;border-radius:8px;
  background:#fffaf1;border:1px solid #f4e8d5;cursor:pointer;min-width:0}
.clipitem:hover{background:#fff3dd}
.clipitem input{flex:none;width:15px;height:15px;accent-color:#f09009}
.clipitem span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clipitem.fixed{opacity:.72;cursor:default;background:#f7f7f3}
.clipfix{font-size:11px;color:#a08a6a;white-space:nowrap}
.cliptag{color:#c06a12;background:#fff2e0;border-radius:6px;padding:1px 5px;font-size:11px}

/* ---------- v1.10.0 家长通知（写通知 + 语音朗读） ---------- */
/* 学生端首页的通知卡：蓝色系和家长端写通知的入口呼应，未读的暖黄高亮 */
.notice-card{border-left:4px solid #5a8fd6}
.notice-hd2{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.notice-hd2 b{color:#3a5a8a;font-size:15px}
.notice-hd2 .muted{font-size:12px}
.notice-card .nct,.pmain .notice-item .nct{display:inline-block;margin-left:6px;margin-left:auto;font-size:11px;
  color:#fff;background:#e0603c;border-radius:8px;padding:1px 7px;font-variant-numeric:tabular-nums}
.notice-card .notice-hd .nct{margin-left:auto}
.notice-item{padding:10px 12px;border-radius:10px;background:#f8fafd;border:1px solid #e4ecf5;margin-bottom:8px}
.notice-item.unread{background:#fff8ec;border-color:#f2dfc0}
.notice-item:last-child{margin-bottom:0}
.notice-hd{display:flex;align-items:center;gap:8px}
.notice-day{font-size:12px;color:#8a96a8}
.notice-txt{font-size:14.5px;line-height:1.7;color:#333;white-space:pre-wrap;word-break:break-word;margin-top:3px}
.notice-ops{margin-top:8px;display:flex;gap:8px}
/* 家长端通知管理列表：字号略小，信息更密 */
.pmain .notice-txt{font-size:13.5px}
.pmain .notice-hd{gap:10px}
.pmain .notice-hd b{font-size:13px;color:#4a3a28}
.pmain .notice-hd b .muted{font-weight:400;font-size:12px}
.pmain .notice-ts{margin-left:auto;font-size:12px;white-space:nowrap}
