/* ===== 日新学堂 · 三年级放学后学习辅导 ===== */
:root{
  --orange:#FF8A3D; --orange-l:#FFE9D6;
  --green:#2FB37A;  --green-l:#DDF5EA;
  --blue:#4A7BF7;   --blue-l:#E3EBFF;
  --purple:#8B5CF6; --purple-l:#EDE7FF;
  --red:#F4635C;    --red-l:#FFE4E2;
  --yellow:#FFC53D; --yellow-l:#FFF3D1;
  --ink:#2C2A28; --ink2:#6B6560; --ink3:#A39C95;
  --bg:#FFF8F0; --card:#FFFFFF; --line:#F0E6DA;
  --r:18px; --shadow:0 4px 16px rgba(160,120,80,.10);
  --fs:17px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:var(--bg); color:var(--ink); font-size:var(--fs); line-height:1.6;
  padding-bottom:calc(72px + env(safe-area-inset-bottom));
}
body.bigfont{--fs:20px}
body.night{--bg:#1E1C1A;--card:#2A2724;--ink:#F2EDE7;--ink2:#B8B0A8;--ink3:#8A827A;--line:#3A3632}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:inherit}
.hidden{display:none!important}
/* hidden 属性必须真正隐藏元素：.modal-mask/.rest-mask 设了 display:flex（作者样式），
   会盖过浏览器内置的 [hidden]{display:none}，导致遮罩层在加载时永久显示。 */
[hidden]{display:none!important}

/* 顶栏 */
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line);
}
.topbar-left{display:flex;align-items:center;gap:10px}
.avatar{width:44px;height:44px;border-radius:50%;background:var(--orange-l);display:flex;
  align-items:center;justify-content:center;font-size:24px}
.topbar-name{font-weight:700;font-size:1.05rem;line-height:1.2}
.topbar-sub{font-size:.75rem;color:var(--ink3)}
.topbar-right{display:flex;gap:8px}
.streak,.points{background:var(--yellow-l);color:#8A6100;padding:5px 12px;border-radius:999px;
  font-weight:700;font-size:.85rem;white-space:nowrap}
body.night .streak,body.night .points{background:#4A3F1A;color:#FFD77A}

/* 页面 */
main{padding:14px 14px 20px;max-width:820px;margin:0 auto}
.page-title{font-size:1.3rem;font-weight:800;margin:4px 0 12px}
.section{margin-bottom:16px}
.sec-h{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}
.sec-h h3{margin:0;font-size:1rem;font-weight:700}
.sec-h .more{font-size:.8rem;color:var(--ink3)}

/* 卡片 */
.card{background:var(--card);border-radius:var(--r);padding:14px;box-shadow:var(--shadow);margin-bottom:12px}
.card.tight{padding:10px 12px}

/* 今日重点大卡 */
.focus-card{
  background:linear-gradient(135deg,#FF9E52,#FF7A2F);color:#fff;border-radius:22px;
  padding:18px;box-shadow:0 6px 20px rgba(255,138,61,.35);margin-bottom:14px;
}
.focus-card .fc-tag{font-size:.75rem;opacity:.9;letter-spacing:2px}
.focus-card .fc-title{font-size:1.5rem;font-weight:800;margin:4px 0 2px}
.focus-card .fc-desc{font-size:.9rem;opacity:.95}
.focus-card .fc-btn{margin-top:14px;background:#fff;color:#E8661A;border-radius:14px;
  padding:12px 20px;font-weight:800;display:inline-block}

/* 任务行 */
.task{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;background:var(--card);
  box-shadow:var(--shadow);margin-bottom:10px;transition:.15s}
.task.done{opacity:.55}
.task .tk-ico{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-size:22px;flex:0 0 42px}
.task .tk-main{flex:1;min-width:0}
.task .tk-title{font-weight:700;font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task .tk-desc{font-size:.8rem;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task .tk-min{font-size:.8rem;color:var(--ink2);flex:0 0 auto}
.task .tk-go{background:var(--orange);color:#fff;border-radius:12px;padding:8px 14px;font-weight:700;
  font-size:.85rem;flex:0 0 auto}
.task.done .tk-go{background:var(--green-l);color:var(--green)}
.ico-review{background:var(--blue-l)} .ico-micro{background:var(--purple-l)}
.ico-mistake{background:var(--red-l)} .ico-sport{background:var(--green-l)} .ico-read{background:var(--yellow-l)}

/* 进度条 */
.bar{height:10px;border-radius:99px;background:var(--line);overflow:hidden}
.bar > i{display:block;height:100%;border-radius:99px;background:var(--green);transition:.4s}

/* 按钮 */
.btn{border-radius:14px;padding:11px 18px;font-weight:700;background:var(--line);color:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn-primary{background:var(--orange);color:#fff}
.btn-green{background:var(--green);color:#fff}
.btn-blue{background:var(--blue);color:#fff}
.btn-ai{background:var(--purple);color:#fff}
.btn-ghost{background:transparent;border:2px solid var(--line)}
.btn-sm{padding:7px 12px;font-size:.85rem;border-radius:11px}
.btn-block{width:100%}
.btn:disabled{opacity:.45}
/* AI 聊天 */
.ai-msgs{max-height:46vh;overflow:auto;display:flex;flex-direction:column;gap:10px;margin-bottom:10px;padding:2px}
.ai-msg{padding:10px 13px;border-radius:14px;line-height:1.7;font-size:.95rem;max-width:88%}
.ai-msg.bot{background:var(--purple-l);color:#3a1d8a;align-self:flex-start;border-bottom-left-radius:4px}
.ai-msg.user{background:var(--blue-l);color:#1f3f9e;align-self:flex-end;border-bottom-right-radius:4px}
.ai-status{font-size:.78rem;color:var(--ink3);min-height:1.1em;margin-bottom:8px}
.ai-input-row{display:flex;gap:8px;align-items:center}
.ai-input{flex:1;padding:11px 12px;border:2px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink)}
.btn-row{display:flex;gap:10px;flex-wrap:wrap}

/* 表单 */
.field{margin-bottom:14px}
.field label{display:block;font-size:.85rem;color:var(--ink2);margin-bottom:6px;font-weight:600}
.field input,.field select,.field textarea{
  width:100%;padding:11px 12px;border:2px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--orange)}

/* 课表网格 */
.tt-grid{display:grid;grid-template-columns:44px repeat(5,1fr);gap:4px;font-size:.72rem}
.tt-cell{border-radius:8px;padding:6px 2px;text-align:center;min-height:44px;display:flex;
  align-items:center;justify-content:center;background:var(--card);border:1px solid var(--line);
  font-weight:600;line-height:1.15;word-break:break-all}
.tt-head{background:transparent;border:none;font-weight:700;color:var(--ink3);min-height:auto}
.tt-slot{cursor:pointer}
.tt-slot.empty{color:var(--ink3);font-weight:400}
.s-math{background:var(--blue-l);color:#2451C7}
.s-chinese{background:var(--red-l);color:#C93B33}
.s-english{background:var(--purple-l);color:#6434C9}
.s-science{background:var(--green-l);color:#1C7A4E}
.s-moral{background:var(--yellow-l);color:#8A6100}
.s-pe{background:#D8F0FF;color:#1B6E92}
.s-art{background:#FFE0F0;color:#B03A79}
.s-music{background:#EDE7FF;color:#6434C9}
.s-it{background:#DDF3F5;color:#1B7C82}
.s-labor{background:#EEEBE4;color:#6B6560}
.s-other{background:#EEEBE4;color:#6B6560}

/* 微单元播放器 */
.mu-wrap{background:var(--card);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.mu-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.mu-badge{background:var(--purple-l);color:var(--purple);padding:4px 12px;border-radius:99px;
  font-size:.78rem;font-weight:700}
.mu-steps{display:flex;gap:6px;margin-bottom:14px}
.mu-steps i{flex:1;height:6px;border-radius:99px;background:var(--line)}
.mu-steps i.on{background:var(--purple)}
.mu-stem{font-size:1.15rem;line-height:1.7;margin:10px 0 16px;font-weight:600}
.mu-tip{background:var(--yellow-l);border-radius:12px;padding:10px 12px;font-size:.9rem;margin-bottom:12px}
.mu-method{background:var(--blue-l);border-radius:12px;padding:12px;margin-bottom:12px}
.mu-method h4{margin:0 0 8px;font-size:.95rem}
.mu-method ol{margin:0;padding-left:20px}
.mu-method li{margin-bottom:6px}
.q-item{margin-bottom:16px}
.q-stem{font-weight:600;margin-bottom:8px;line-height:1.6}
.q-pic{font-size:2.1rem;text-align:center;line-height:1.4;background:var(--line);
  border-radius:12px;padding:14px 8px;margin-bottom:10px;letter-spacing:2px}
.q-input{width:100%;padding:12px;border:2px solid var(--line);border-radius:12px;font-size:1.05rem;
  text-align:center;background:var(--card);color:var(--ink)}
.q-input:focus{outline:none;border-color:var(--orange)}
.q-input.right{border-color:var(--green);background:var(--green-l)}
.q-input.wrong{border-color:var(--red);background:var(--red-l)}
.q-fb{margin-top:6px;font-size:.85rem;min-height:20px}
.q-fb.ok{color:var(--green);font-weight:700}

/* AI 小老师对话 */
.ai-chat{height:46vh;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:10px;
  background:var(--line);border-radius:14px;margin-bottom:10px}
.ai-msg{max-width:86%;padding:9px 13px;border-radius:14px;line-height:1.6;font-size:.98rem;white-space:pre-wrap}
.ai-user{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:4px}
.ai-bot{align-self:flex-start;background:var(--card);color:var(--ink);border:1px solid var(--line);border-bottom-left-radius:4px}
.ai-bar{display:flex;gap:8px;align-items:center}
.q-fb.no{color:var(--red);font-weight:700}
.choices{display:flex;flex-wrap:wrap;gap:8px}
.choice{padding:10px 16px;border-radius:12px;border:2px solid var(--line);background:var(--card);font-weight:600}
.choice.sel{border-color:var(--orange);background:var(--orange-l)}
.choice.right{border-color:var(--green);background:var(--green-l)}
.choice.wrong{border-color:var(--red);background:var(--red-l)}

/* 错题本 */
.mk-item{display:flex;gap:10px;background:var(--card);border-radius:14px;padding:10px;
  box-shadow:var(--shadow);margin-bottom:10px}
.mk-img{width:74px;height:74px;border-radius:10px;object-fit:cover;background:var(--line);flex:0 0 74px}
.mk-img-ph{width:74px;height:74px;border-radius:10px;background:var(--line);flex:0 0 74px;
  display:flex;align-items:center;justify-content:center;font-size:26px}
.mk-main{flex:1;min-width:0}
.mk-q{font-size:.92rem;font-weight:600;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.mk-meta{font-size:.75rem;color:var(--ink3);margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.72rem;font-weight:700}
.tag-kp{background:var(--blue-l);color:var(--blue)}
.tag-err{background:var(--red-l);color:var(--red)}
.tag-stage{background:var(--green-l);color:var(--green)}
.tag-due{background:var(--yellow-l);color:#8A6100}
.mk-ans{font-size:.8rem;margin-top:4px}
.mk-ans .bad{color:var(--red);text-decoration:line-through}
.mk-ans .good{color:var(--green);font-weight:700}

/* 进度地图 */
.pm-subj{margin-bottom:14px}
.pm-lane{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.pm-u{padding:7px 11px;border-radius:10px;font-size:.78rem;font-weight:600;background:var(--line);color:var(--ink3)}
.pm-u.done{background:var(--green);color:#fff}
.pm-u.cur{background:var(--orange);color:#fff;box-shadow:0 0 0 3px var(--orange-l)}
.pm-u.exam{background:var(--red);color:#fff}

/* 统计 */
.stat-row{display:flex;gap:10px;flex-wrap:wrap}
.stat{flex:1;min-width:92px;background:var(--card);border-radius:14px;padding:12px;text-align:center;
  box-shadow:var(--shadow)}
.stat b{display:block;font-size:1.5rem;line-height:1.2}
.stat span{font-size:.75rem;color:var(--ink3)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{padding:5px 12px;border-radius:99px;background:var(--line);font-size:.82rem;cursor:pointer}
.chip.on{background:var(--orange);color:#fff}

/* 弹层 */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100;display:flex;
  align-items:flex-end;justify-content:center}
.modal-box{background:var(--card);width:100%;max-width:640px;max-height:88vh;overflow:auto;
  border-radius:22px 22px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom))}
.modal-box h3{margin:0 0 12px;font-size:1.1rem}
@media(min-width:700px){
  .modal-mask{align-items:center}
  .modal-box{border-radius:22px;max-height:84vh}
}

/* 护眼 */
.rest-mask{position:fixed;inset:0;background:rgba(30,28,26,.92);z-index:200;display:flex;
  align-items:center;justify-content:center;color:#fff;text-align:center}
.rest-eye{font-size:64px}
.rest-title{font-size:1.4rem;font-weight:800;margin-top:8px}
.rest-desc{opacity:.85;font-size:.9rem}
.rest-count{font-size:3.4rem;font-weight:800;margin-top:10px;color:#FFC53D}

/* 底部导航 */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;background:var(--card);
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tab{flex:1;padding:8px 2px 7px;display:flex;flex-direction:column;align-items:center;gap:2px;
  font-size:.7rem;color:var(--ink3);font-weight:600}
.tab span{font-size:21px;line-height:1}
.tab.active{color:var(--orange)}
.tab.active span{transform:translateY(-1px)}

/* 空态 */
.empty{text-align:center;padding:36px 16px;color:var(--ink3)}
.empty .e-ico{font-size:46px}
.empty p{margin:8px 0 0;font-size:.9rem}

/* 提示条 */
.notice{background:var(--yellow-l);border-radius:12px;padding:10px 12px;font-size:.85rem;
  margin-bottom:12px;line-height:1.5}
.notice.blue{background:var(--blue-l)}
.notice.red{background:var(--red-l)}

/* 打印：只打印任务单/错题册 */
@media print{
  body{background:#fff;padding:0;font-size:12pt}
  .topbar,.tabbar,.modal-mask,.rest-mask,.no-print{display:none!important}
  main{padding:0;max-width:none}
  .card,.task,.mk-item{box-shadow:none;border:1px solid #ccc;break-inside:avoid}
  .print-only{display:block!important}
}
.print-only{display:none}
.print-head{text-align:center;margin-bottom:14px;border-bottom:2px solid #333;padding-bottom:8px}
.print-head h2{margin:0;font-size:16pt}
.print-head p{margin:4px 0 0;font-size:10pt;color:#555}
