/* 課程題庫 — 手機優先（加到主畫面當 App 用）。
 * 外框（返回、底部操作列、全螢幕檢視）用 iOS 毛玻璃；題目本身做成真的試題紙：白紙、標楷體、Times 數字、紅筆批改。 */

/* ---------- 色票 ---------- */
:root{
  --fg:#1c1c1e; --muted:#6e6e73; --faint:#8a8a8e; --line:rgba(60,60,67,.13); --line-strong:rgba(60,60,67,.24);
  --tint:#1c1c1e; --on-tint:#ffffff;
  --fill:rgba(120,120,128,.13); --fill-2:rgba(120,120,128,.07);
  --warn:#b8690f;
  --glass:rgba(255,255,255,.64); --glass-strong:rgba(255,255,255,.86);
  --edge:rgba(255,255,255,.75); --spec:rgba(255,255,255,.95);
  --shadow:0 14px 34px -16px rgba(40,30,70,.25),0 1px 2px rgba(0,0,0,.05);
  --wall:#e9eaee; --w1:rgba(139,92,246,.16); --w2:rgba(217,119,87,.14); --w3:rgba(70,150,255,.12); --w4:rgba(255,184,90,.12);
  --c-mp:#2a78d6; --c-ml:#1baf7a; --c-em:#eb6834;
  /* 紙與墨 */
  --paper:#fffefa; --paper-2:#f6f4ee; --ink:#161616; --ink-2:#45454a; --ink-3:#8b8b90; --rule:#2a2a2a;
  --red:#c8102e; --blue:#1f5fbf; --pencil:#55606e; --hl:rgba(255,226,92,.45);
  --sheet-shadow:0 1px 1.5px rgba(0,0,0,.10),0 10px 28px -10px rgba(40,30,70,.30);
  --blur:blur(28px) saturate(170%);
  --spring:cubic-bezier(.3,1.35,.5,1);
  --body:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI Variable Text","Segoe UI","PingFang TC","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;
  --kai:"Times New Roman","DFKai-SB","BiauKai","標楷體","ExamKai","Kaiti TC",serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --fg:#ebe9e4; --muted:#8d8a84; --faint:#7f7b75; --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16);
  --tint:#ebe9e4; --on-tint:#141414;
  --fill:rgba(255,255,255,.08); --fill-2:rgba(255,255,255,.045);
  --warn:#cf9f63;
  --glass:rgba(26,26,26,.62); --glass-strong:rgba(30,30,30,.88);
  --edge:rgba(255,255,255,.09); --spec:rgba(255,255,255,.07);
  --shadow:0 18px 40px -18px rgba(0,0,0,.8),0 1px 2px rgba(0,0,0,.4);
  --wall:#121212; --w1:rgba(139,92,246,.14); --w2:rgba(217,119,87,.10); --w3:rgba(216,212,202,.05); --w4:rgba(139,92,246,.08);
  --c-mp:#3987e5; --c-ml:#199e70; --c-em:#d95926;
  /* 紙在深色模式稍微壓暗，墨色不變：考卷就是白紙黑字 */
  --paper:#ecebe5; --paper-2:#dcdad3;
  --sheet-shadow:0 1px 1.5px rgba(0,0,0,.4),0 14px 30px -12px rgba(0,0,0,.8);
  color-scheme:dark}}

@font-face{font-family:"ExamKai";src:url("fonts/kai.woff2?v=3") format("woff2");font-display:swap}

/* ---------- 基礎 ---------- */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;color:var(--fg);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
html{background:var(--wall);touch-action:manipulation;overflow-x:hidden;overscroll-behavior-y:none}
body{min-height:100vh;min-height:100dvh;background:transparent;overflow-x:clip;-webkit-tap-highlight-color:transparent}
body::before{content:"";position:fixed;inset:-10vmax;z-index:-1;pointer-events:none;background:
  radial-gradient(42vmax 36vmax at 8% 4%,var(--w1),transparent 70%),
  radial-gradient(34vmax 30vmax at 96% 22%,var(--w2),transparent 70%),
  radial-gradient(46vmax 40vmax at 80% 96%,var(--w3),transparent 70%),
  radial-gradient(36vmax 32vmax at 4% 92%,var(--w4),transparent 70%),
  var(--wall)}
/* 不提供存圖／分享：圖片與畫布不能長按、不能拖 */
img,canvas{-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none}
.glass{background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--edge);box-shadow:inset 0 1px 0 var(--spec),var(--shadow)}
button{font:inherit;color:var(--fg);cursor:pointer;border:0;border-radius:999px;background:var(--fill);font-weight:600;padding:10px 18px;min-height:44px;
  transition:transform .35s var(--spring),background .2s ease,opacity .2s ease;touch-action:manipulation}
button:active{transform:scale(.96);transition-duration:.08s}
button:disabled{opacity:.3;cursor:default;transform:none}
a{color:inherit;text-decoration:none;-webkit-touch-callout:none}
:focus-visible{outline:3px solid color-mix(in srgb,var(--fg) 30%,transparent);outline-offset:2px}

/* ---------- 版面 ---------- */
.main{max-width:680px;margin:0 auto;padding:calc(var(--safe-t) + 8px) 16px calc(var(--safe-b) + 32px)}
.main.has-dock{padding-bottom:calc(var(--safe-b) + 110px)}
.top{display:flex;align-items:center;gap:6px;min-height:52px;margin:0 -6px 4px}
.back{display:inline-flex;align-items:center;gap:2px;background:none;padding:8px 10px 8px 4px;min-height:44px;color:var(--fg);font-weight:500;font-size:17px;max-width:72%}
.back svg{width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.back span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top .spacer{flex:1}
.top .count{font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums;padding-right:8px}
.top .ghost{background:none;color:var(--muted);font-weight:500;font-size:15px;padding:8px 10px}
h1{font-size:34px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:4px 2px 4px}
.sub{color:var(--muted);font-size:15.5px;margin:0 2px 20px}
.eyebrow{font-size:13px;letter-spacing:.06em;color:var(--muted);font-weight:600;margin:22px 4px 8px}
.empty{color:var(--muted);text-align:center;padding:40px 16px}

/* ---------- 第 1 層：課程（資料夾） ---------- */
.courses{display:grid;gap:14px}
.course{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:16px 16px 16px 14px;border-radius:24px;transition:transform .35s var(--spring)}
.course:active{transform:scale(.98)}
.course.disabled{opacity:.6}
.stack{position:relative;width:46px;height:58px;flex:none}
.stack i{position:absolute;inset:0;background:var(--paper);border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.stack i:nth-child(1){transform:translate(6px,-4px) rotate(5deg);background:var(--paper-2)}
.stack i:nth-child(2){transform:translate(3px,-2px) rotate(2deg)}
.stack i:nth-child(3){border-top:7px solid var(--cc);background:repeating-linear-gradient(var(--paper) 0 7px,#d9d6cc 7px 8px) 0 6px/100% calc(100% - 12px) no-repeat,var(--paper)}
.course .cn{font-family:var(--kai);font-size:23px;font-weight:700;letter-spacing:.04em;line-height:1.25}
.course .cd{font-size:14px;color:var(--muted);margin-top:2px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chip{font-size:12.5px;padding:2px 9px;border-radius:999px;background:var(--fill);color:var(--fg);font-weight:500;white-space:nowrap}
.chev{width:18px;height:18px;flex:none;fill:none;stroke:var(--faint);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}

/* ---------- 第 2 層：考卷封面 ---------- */
.covers{display:grid;gap:26px;padding:6px 6px 0}
.cover{display:block;position:relative;background:var(--paper);color:var(--ink);font-family:var(--kai);border-radius:3px;padding:16px 14px 14px;box-shadow:var(--sheet-shadow);transition:transform .35s var(--spring)}
.cover:active{transform:scale(.985)}
.cover.multi::before,.cover.multi::after{content:"";position:absolute;inset:0;background:var(--paper-2);border-radius:3px;box-shadow:var(--sheet-shadow);z-index:-1}
.cover.multi::before{transform:translate(5px,5px)}
.cover.multi::after{transform:translate(10px,10px);z-index:-2;opacity:.8}
.cover .heading{font-size:17.5px;font-weight:700;text-align:center;letter-spacing:.03em;line-height:1.35;margin:2px 0 10px}
.cover .score{position:absolute;top:8px;right:12px}

/* ---------- 試題紙 ---------- */
.paper{position:relative;background:var(--paper);color:var(--ink);font-family:var(--kai);border-radius:3px;box-shadow:var(--sheet-shadow);padding:16px 12px 18px;margin:0 -6px 18px;
  --code-bg:rgba(0,0,0,.045); --t-op:#3d2f99; --t-label:#9a5300; --t-imm:#17714a; --t-com:#7a7a80}
.ph-top{display:flex;align-items:flex-end;gap:6px}
.ph-title{flex:1;text-align:center;font-size:16.5px;font-weight:700;letter-spacing:.03em;line-height:1.35}
.ph-page{font-size:12px;white-space:nowrap;padding-bottom:2px}
.ph-table{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:8px;font-size:12px;line-height:1.3;text-align:center}
.ph-table th,.ph-table td{border:1px solid var(--rule);padding:4px 2px;overflow-wrap:anywhere}
.ph-table th{font-weight:400;letter-spacing:.15em}
.ph-table td{height:30px}
.pbody{border:1.5px solid var(--rule);border-top:0;padding:6px 6px 10px}
.psec{font-weight:700;font-size:15.5px;margin:10px 2px 2px;letter-spacing:.02em}
.psec:first-child{margin-top:4px}

/* 一題一個子項目 */
.pq{border-radius:6px;transition:background .2s ease}
.pq-head{display:grid;grid-template-columns:auto 1fr;column-gap:2px;padding:7px 4px 7px 2px;border-radius:6px;font-size:16px;line-height:1.68;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pq-head:active{background:var(--hl)}
.pq.open{background:rgba(255,226,92,.13)}
.pq.open .oline{display:none}
.pq-body{padding:0 6px 12px;animation:rise .22s ease both}
.umeta{font-family:var(--body);font-size:12.5px;color:var(--ink-3);margin:-2px 0 2px}
.uhead{font-weight:700;margin-top:4px}
.uhead .pts{font-family:var(--body);font-size:12.5px;font-weight:400;color:var(--ink-3)}
.utools{display:flex;gap:8px}
.utools .preveal{flex:1}
.redo{margin:10px 0 0 auto;background:none;color:var(--ink-3);font-family:var(--body);font-weight:500;font-size:14px;min-height:36px;padding:4px 6px}
.paper .scorebox{position:absolute;top:10px;right:10px;z-index:1}
.dock.two{grid-template-columns:56px 1fr}
.pq+.pq{border-top:1px dashed rgba(0,0,0,.12);border-top-left-radius:0;border-top-right-radius:0}
.pn{white-space:nowrap;font-variant-numeric:tabular-nums}
.paren{display:inline-block;min-width:2.3em;text-align:center;position:relative}
.paren b{font-weight:400;color:var(--pencil);font-size:1.05em}
.paren .ok,.paren .no{position:absolute;left:-.8em;top:-.3em;color:var(--red);font-size:1.15em;font-weight:700;transform:rotate(-8deg)}
.pq .stem{min-width:0;overflow-wrap:anywhere}
.pq .oline{display:inline}
.pq .oline span{margin-right:.7em}
.pq .oline span.right{color:var(--red)}
.pq .fix{color:var(--red);font-weight:700;margin:0 .35em 0 .2em}
.pq .fix:empty{display:none}
.pq .figs{margin:6px 0 2px}
.pq .subs{margin-top:2px}
.pq .subs div{padding-left:.2em}

/* 段落、程式、表格（紙上與題目頁共用） */
.rich{overflow-wrap:anywhere}
.rich p{margin:0 0 8px}.rich p:last-child{margin-bottom:0}
.rich ul,.rich ol{margin:0 0 8px;padding-left:1.6em}
.rich code{font-family:var(--mono);font-size:.84em;background:var(--code-bg);padding:1px 4px;border-radius:4px}
.rich pre.code{margin:8px 0;padding:10px 12px;background:var(--code-bg);border-radius:6px;overflow-x:auto;font-family:var(--mono);font-size:13.5px;line-height:1.55;tab-size:8;-webkit-overflow-scrolling:touch}
.rich pre.code code{background:none;padding:0;font-size:inherit;white-space:pre}
.t-op{color:var(--t-op);font-weight:600}.t-label{color:var(--t-label);font-weight:600}.t-imm{color:var(--t-imm)}.t-com{color:var(--t-com);font-style:italic}
.tablewrap{overflow-x:auto;margin:8px 0;-webkit-overflow-scrolling:touch}
.rich table{border-collapse:collapse;font-size:14.5px;min-width:100%}
.rich th,.rich td{border:1px solid rgba(0,0,0,.25);padding:5px 8px;text-align:left;vertical-align:top}
.rich th{font-weight:700}
.figs{display:grid;gap:8px;margin:10px 0 4px}
.fig{margin:0;background:#fff;cursor:zoom-in;line-height:0}
.fig img{display:block;max-width:100%;height:auto;margin:0 auto}
.fig.missing{background:rgba(0,0,0,.04);padding:10px 12px;color:var(--ink-2);font-size:14px;line-height:1.5;cursor:default;border:1px dashed rgba(0,0,0,.2)}

/* ---------- 考卷頁：PDF／PNG 預覽 ---------- */
.pv{margin:0 0 18px}
.pv-head{display:flex;align-items:center;gap:8px;margin:0 2px 8px}
.pv-head .kind{font-size:11.5px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:6px;background:var(--fg);color:var(--wall)}
.pv-head b{font-size:16px;font-weight:650}
.pv-head .note{margin-left:auto;font-size:13.5px;color:var(--muted)}
.pv-strip{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 16px 14px;margin:0 -16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.pv-strip::-webkit-scrollbar{display:none}
.pv-page{flex:none;width:62%;max-width:300px;aspect-ratio:728/1032;background:#fff;border-radius:3px;box-shadow:var(--sheet-shadow);scroll-snap-align:start;scroll-margin-left:16px;overflow:hidden;position:relative;cursor:zoom-in;padding:0;transition:transform .35s var(--spring)}
.pv-page:active{transform:scale(.97)}
.pv-page canvas,.pv-page img{width:100%;height:100%;display:block}
.pv-page .pg{position:absolute;bottom:7px;right:7px;font-size:11.5px;font-weight:600;background:rgba(20,20,20,.62);color:#fff;border-radius:999px;padding:1px 8px;line-height:1.6}
.pv-page .ld{position:absolute;inset:0;display:grid;place-items:center;color:#aaa;font-size:13px}

/* ---------- 題目頁 ---------- */
.tags{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}
.tag{font-family:var(--body);font-size:12px;padding:1px 8px;border-radius:999px;background:rgba(0,0,0,.06);color:var(--ink-2)}
.unit.part{border-top:1px dashed rgba(0,0,0,.18);margin-top:10px;padding-top:8px}
.unit .pno{margin-right:.3em}
/* 選項：像在考卷上作答 */
.popts{display:grid;margin-top:10px;border-top:1px solid rgba(0,0,0,.1)}
.popt{display:grid;grid-template-columns:2.2em 1fr auto;align-items:start;gap:4px;text-align:left;width:100%;background:none;border-radius:0;border-bottom:1px solid rgba(0,0,0,.1);
  padding:10px 4px;min-height:52px;font-family:var(--kai);font-weight:400;font-size:17px;line-height:1.6;color:var(--ink)}
.popt:active{background:var(--hl);transform:none}
.popt .k{display:inline-grid;place-items:center;width:1.9em;height:1.9em;margin-top:-.15em;border-radius:50%;border:2px solid transparent}
.popt .v{min-width:0}
.popt .m{color:var(--red);font-weight:700;font-size:20px;line-height:1.2;padding:0 4px}
.popt.picked{background:rgba(85,96,110,.08)}
.popt.right .k{border-color:var(--red);color:var(--red)}
.popts.done .popt{cursor:default}
/* 紅筆批註 */
.pans{margin-top:14px;border-left:3px solid var(--red);padding:4px 0 4px 12px;animation:rise .25s ease both}
.pans .lbl{display:flex;align-items:center;gap:10px;color:var(--red);font-weight:700;font-size:15px;margin-bottom:4px}
.pans.none .lbl{color:var(--ink-3)}
.stamp{display:inline-block;font-family:var(--body);font-size:12px;font-weight:700;letter-spacing:.06em;border:1.5px solid currentColor;border-radius:4px;padding:0 6px;line-height:1.6;transform:rotate(-4deg)}
.stamp.s-訂{color:var(--red)}.stamp.s-作{color:var(--blue)}.stamp.s-參{color:var(--ink-3)}
.preveal{width:100%;margin-top:12px;background:transparent;border:1.5px dashed rgba(0,0,0,.28);border-radius:8px;color:var(--ink-2);font-family:var(--kai);font-weight:700;font-size:16px;min-height:46px}
.preveal:active{background:var(--hl)}
.flag{display:flex;gap:6px;font-family:var(--body);font-size:13.5px;color:#a3570a;margin-top:10px;line-height:1.5}
.flag::before{content:"⚠";flex:none}
.legend{font-size:13px;color:var(--muted);margin:2px 4px 0;display:flex;gap:8px;flex-wrap:wrap;align-items:center;line-height:2}
.legend .stamp{transform:none}

/* 紅筆分數 */
.score{color:var(--red);font-family:var(--kai);font-weight:700;font-size:22px;line-height:1;transform:rotate(-6deg);border:2px solid var(--red);border-radius:50%;min-width:46px;height:46px;display:grid;place-items:center;padding:0 6px}
.score small{font-size:11px;display:block;margin-top:-6px;font-weight:400}

/* ---------- 底部拇指操作列 ---------- */
.dock{position:fixed;left:12px;right:12px;bottom:calc(max(10px,var(--safe-b) - 10px));z-index:10;max-width:560px;margin:0 auto;
  display:grid;grid-template-columns:56px 1fr 56px;gap:8px;padding:6px;border-radius:999px;background:var(--glass-strong)}
.dock button{min-height:52px;padding:0}
.dock .nb{display:grid;place-items:center}
.dock .nb svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.dock .mid{font-size:16.5px}

/* ---------- 全螢幕檢視（雙指縮放；沒有下載／分享） ---------- */
.viewer{position:fixed;inset:0;z-index:60;background:#18181a;display:grid;grid-template-rows:auto 1fr;animation:fade .2s ease both;color:#fff}
.vbar{display:flex;align-items:center;gap:8px;padding:calc(var(--safe-t) + 6px) 10px 8px 14px;background:rgba(24,24,26,.94)}
.vbar .vt{flex:1;min-width:0;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vbar .vp{font-size:14px;color:#aaa;font-variant-numeric:tabular-nums}
.vbar button{background:rgba(255,255,255,.14);color:#fff;min-height:38px;padding:4px 14px;font-size:15px}
.vbar .vz{min-width:38px;padding:4px 0}
.vscroll{position:relative;overflow:auto;touch-action:pan-x pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.vpages{width:calc(var(--z,1) * 100%);padding:10px 0 calc(var(--safe-b) + 28px);display:grid;gap:10px}
.vpage{margin:0 8px;aspect-ratio:728/1032;background:#fff;position:relative}
.vpage.free{aspect-ratio:auto;min-height:120px;display:grid;place-items:center}
.vpage.free img{height:auto}
.vpage canvas,.vpage img{width:100%;height:100%;display:block}
.vpage .ld{position:absolute;inset:0;display:grid;place-items:center;color:#999;font-size:14px}
.vhint{position:fixed;left:50%;bottom:calc(var(--safe-b) + 18px);transform:translateX(-50%);background:rgba(0,0,0,.6);color:#fff;font-size:13px;padding:5px 12px;border-radius:999px;pointer-events:none;animation:hint 2.6s ease both}

@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes hint{0%,70%{opacity:1}100%{opacity:0}}
.view{animation:rise .28s ease both}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
.cover .ph-table{table-layout:auto}

/* PDF 文字層（pdf.js 3.11 的 textLayer 規則精簡版）：字是透明的，疊在畫布上，選取時才看得到反白 */
.pdfpage{position:relative;width:100%;height:100%}
.pdfpage canvas{position:absolute;inset:0;width:100%;height:100%}
.textLayer{position:absolute;inset:0;overflow:hidden;line-height:1;text-align:initial;-webkit-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2;
  -webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0% 0%}
.textLayer span.markedContent{top:0;height:0}
.textLayer ::selection{background:rgba(0,110,255,.28)}
.textLayer br::selection{background:transparent}
.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}
.textLayer .endOfContent.active{top:0}

/* 反白：講義連結指到的那段字 */
.textLayer span.hit{background:rgba(255,196,0,.5);border-radius:2px;box-shadow:0 0 0 2px rgba(255,196,0,.35)}

/* 講義清單（課程頁） */
.notes{border-radius:22px;overflow:hidden;display:grid}
.note{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border-radius:0;padding:14px 16px;min-height:58px;font-weight:500}
.note+.note{border-top:1px solid var(--line)}
.note:active{background:var(--fill-2);transform:none}
.note .nt{flex:1;min-width:0;font-family:var(--kai);font-size:17.5px;font-weight:700;letter-spacing:.02em}
.note .np{font-size:13.5px;color:var(--muted);white-space:nowrap}

/* 解答下方的講義出處 */
.refs{margin-top:10px;padding-top:8px;border-top:1px dashed rgba(0,0,0,.18);display:grid;gap:6px}
.refs .rl{font-family:var(--body);font-size:12.5px;font-weight:700;color:var(--ink-3);letter-spacing:.06em}
.ref{display:grid;gap:1px;justify-items:start;text-align:left;width:100%;background:rgba(31,95,191,.07);border:1px solid rgba(31,95,191,.22);border-radius:10px;padding:8px 12px;min-height:44px;color:var(--blue);font-family:var(--body);font-weight:600}
.ref:active{background:rgba(31,95,191,.14)}
.ref .rt{font-size:14.5px}
.ref .rw{font-size:13px;font-weight:400;color:var(--ink-2)}

/* 全部解答：只列答案（紅筆），不展開詳解 */
.key{display:none}
.paper.show-key .key{display:grid;grid-template-columns:auto 1fr;column-gap:8px;margin:0 6px 8px 2.6em;padding:4px 10px;border-left:2px solid var(--red);color:var(--red);font-size:15.5px;line-height:1.6}
.paper.show-key .pq.open .key{display:none}
.key .kl{grid-row:1 / 99;font-weight:700}
.key .krow{display:flex;gap:6px;min-width:0}
.key .kp{font-weight:700;flex:none}
.key .rich{min-width:0;color:var(--ink)}
.key.mc .rich{color:var(--red)}
.key .none{color:var(--ink-3)}
.key pre.code{font-size:12.5px}
.paper.show-key .oline span.ok{color:var(--red);font-weight:700}

/* 練習／考試模式 */
.modebar{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 16px;border-radius:20px;margin:0 0 16px;scroll-margin-top:calc(var(--safe-t) + 8px)}
.modebar .mtxt{flex:1;min-width:0;display:grid;gap:1px}
.modebar .mtxt b{font-size:16.5px}
.modebar .mtxt span{font-size:13.5px;color:var(--muted);line-height:1.45}
.modebar.taking{border-color:color-mix(in srgb,var(--red) 45%,transparent)}
.modebar.taking .mtxt b{color:var(--red)}
.modebar.done .mtxt b{color:var(--red);font-family:var(--kai);font-size:19px}
.mbtns{display:grid;gap:6px}
.mbtn{min-height:40px;padding:6px 14px;font-size:15px;white-space:nowrap}
.mbtn.primary{background:var(--tint);color:var(--on-tint)}
button.armed{background:var(--red)!important;color:#fff!important}
.taking-tag{position:absolute;top:10px;right:12px;font-family:var(--body);font-size:12px;font-weight:700;color:var(--red);border:1.5px solid var(--red);border-radius:6px;padding:0 6px}
/* 考試中：鉛筆圈選，可以改 */
.mode-taking .popt.picked{background:rgba(85,96,110,.10)}
.mode-taking .popt.picked .k{border-color:var(--pencil);color:var(--pencil)}
.mode-taking .pq.open{background:rgba(85,96,110,.06)}
.wans{display:block;width:100%;margin-top:8px;font-family:var(--kai);font-size:16.5px;line-height:1.6;color:var(--pencil);background:repeating-linear-gradient(transparent 0 calc(1.6em - 1px),rgba(0,0,0,.12) calc(1.6em - 1px) 1.6em);border:1px dashed rgba(0,0,0,.25);border-radius:6px;padding:4px 10px;resize:vertical;min-height:5.2em;-webkit-user-select:text;user-select:text}
.wans:focus{outline:2px solid rgba(85,96,110,.35);outline-offset:1px}
.mine{margin-top:10px;padding:6px 10px;border-radius:6px;background:rgba(85,96,110,.08);color:var(--pencil);white-space:pre-wrap;font-size:16px}
.mine .ml{font-family:var(--body);font-size:12px;font-weight:700;color:var(--ink-3)}

/* 講義卡片：不滿版，頁面等比例適配；左右滑動換頁 */
.ncard-wrap{position:fixed;inset:0;z-index:55;background:rgba(10,10,14,.42);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;padding:calc(var(--safe-t) + 10px) 10px calc(var(--safe-b) + 10px);animation:fade .2s ease both}
.ncard{width:100%;max-width:780px;max-height:100%;display:grid;grid-template-rows:auto 1fr auto;border-radius:22px;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--edge);box-shadow:0 24px 60px -20px rgba(0,0,0,.55);overflow:hidden;animation:rise .25s ease both}
.nhead{display:flex;align-items:center;gap:8px;padding:10px 8px 6px 16px}
.ntitle{flex:1;min-width:0;font-weight:650;font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.npg{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}
.nx{min-width:40px;min-height:40px;padding:0;font-size:16px}
.nstrip{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-height:0}
.nstrip::-webkit-scrollbar{display:none}
.ncell{flex:0 0 100%;display:grid;place-items:center;padding:4px 10px;scroll-snap-align:start;scroll-snap-stop:always}
.nslot{position:relative;width:var(--pw);aspect-ratio:var(--pr);background:#fff;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.25);overflow:hidden}
.nslot>.pdfpage,.nslot>canvas{width:100%;height:100%}
.nslot .ld{position:absolute;inset:0;display:grid;place-items:center;color:#999;font-size:14px}
.nfoot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px 12px 16px}
.nhint{font-size:13.5px;color:var(--muted)}
.nfoot button{min-height:42px;font-size:15px;padding:6px 18px}

/* 解題思路（AI 補充） */
.steps{margin-top:12px;padding:10px 12px;border-radius:10px;background:rgba(31,95,191,.05);border:1px solid rgba(31,95,191,.16)}
.steps .sl{display:flex;align-items:center;gap:8px;font-family:var(--body);font-size:13.5px;font-weight:700;color:var(--blue);margin-bottom:4px}
.steps .ai{font-size:11.5px;font-weight:500;color:var(--ink-3);border:1px solid rgba(0,0,0,.15);border-radius:999px;padding:0 7px}
.steps .rich{font-size:16px;line-height:1.7}
.steps .rich ol{padding-left:1.4em}

.ref .rk{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;border-radius:5px;padding:0 6px;margin-right:6px;vertical-align:1px;color:#fff;background:var(--blue)}
.ref .rk.k-textbook{background:#1b8a5a}.ref .rk.k-exercise{background:#9a5300}.ref .rk.k-manual{background:#6e6e73}

/* 課程頁：講義收進一個摺疊區 */
.notesbox{margin-top:22px;border-radius:22px;overflow:hidden}
.notesbox>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:14px 16px;min-height:56px;cursor:pointer;font-weight:650;font-size:16.5px;-webkit-tap-highlight-color:transparent}
.notesbox>summary::-webkit-details-marker{display:none}
.notesbox>summary .cnt{font-weight:500;font-size:14px;color:var(--muted)}
.notesbox>summary .chev{margin-left:auto;transition:transform .25s ease}
.notesbox[open]>summary .chev{transform:rotate(90deg)}
.notesbox .ngroup{padding:0 0 4px}
.notesbox .ngroup .gl{font-size:12.5px;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:8px 16px 2px;border-top:1px solid var(--line)}
