@font-face{font-family:Noto Sans TC;src:url(/fonts/noto-sans-tc.woff2)format("woff2");font-weight:400 700;font-display:swap}@font-face{font-family:LXGW WenKai TC;src:url(/fonts/lxgw-wenkai-tc-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:LXGW WenKai TC;src:url(/fonts/lxgw-wenkai-tc-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Fredoka;src:url(/fonts/fredoka.woff2)format("woff2");font-weight:500 700;font-display:swap}:root{--paper:#f6f7fb;--dot:#d7dbe8;--card:#fff;--line:#e1e4ef;--chip:#eef0f7;--ink:#1e2741;--ink-soft:#5a6482;--staff:#c9cfe0;--accent:#e0457b;--accent-deep:#b7305f;--on-accent:#fff;--accent-bg:#fde8ef;--ok:#17a077;--ok-bg:#e3f6ef;--warn:#e8790c;--warn-bg:#fff0e0;--star:#ffbf2e;--star-off:#dfe2ec;--c-mint:#2fb995;--c-coral:#ff7a6b;--c-sky:#4c86f0;--c-butter:#f4b623;--c-berry:#c9479a;--c-gold:#1e2741;--c-violet:#7b5cd6;--c-navy:#24407a;--tape:#ffd5e1;--tape2:#ffeaf0;--sheet:#fffdf7;--sheet-line:#ece6d6;--sheet-ink:#1b1b1f;--hl:#e0457b;--f-display:"LXGW WenKai TC","Kaiti TC","STKaiti","KaiTi",serif;--f-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--f-num:"Fredoka","Nunito","Arial Rounded MT Bold",system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#121829;--dot:#232c45;--card:#1a2236;--line:#2b3550;--chip:#232d46;--ink:#eef1fa;--ink-soft:#a5aeca;--staff:#3a4566;--accent:#ff6b9a;--accent-deep:#c94a76;--on-accent:#1a0a12;--accent-bg:#3a1e2c;--ok:#3fd1a2;--ok-bg:#163a30;--warn:#ffa24d;--warn-bg:#3d2a16;--star:#ffcc47;--star-off:#38425f;--c-gold:#eef1fa;--c-navy:#5f83cf;--tape:#5a2e43;--tape2:#47263a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#121829;--dot:#232c45;--card:#1a2236;--line:#2b3550;--chip:#232d46;--ink:#eef1fa;--ink-soft:#a5aeca;--staff:#3a4566;--accent:#ff6b9a;--accent-deep:#c94a76;--on-accent:#1a0a12;--accent-bg:#3a1e2c;--ok:#3fd1a2;--ok-bg:#163a30;--warn:#ffa24d;--warn-bg:#3d2a16;--star:#ffcc47;--star-off:#38425f;--c-gold:#eef1fa;--c-navy:#5f83cf;--tape:#5a2e43;--tape2:#47263a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background-color:var(--paper);color:var(--ink);font-family:var(--f-body);background-image:var(--dots);background-size:22px 22px;min-height:100vh;font-size:16px;line-height:1.7}:root{--dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Ccircle cx='11' cy='11' r='1.2' fill='%23d7dbe8'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Ccircle cx='11' cy='11' r='1.2' fill='%23232c45'/%3E%3C/svg%3E")}}:root[data-theme=dark]{--dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Ccircle cx='11' cy='11' r='1.2' fill='%23232c45'/%3E%3C/svg%3E")}button:disabled{pointer-events:none}.wrap{max-width:680px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));flex-direction:column;gap:18px;margin:0 auto;padding-block:20px 56px;display:flex}h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;font-weight:700;line-height:1.3}h1{font-size:30px}h2{font-size:24px}h3{font-size:19px}p{margin:0}.muted{color:var(--ink-soft)}.small{font-size:14px}.eyebrow{letter-spacing:.08em;color:var(--ink-soft);font-size:13px;font-weight:500}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.card{background:var(--card);border:1px solid var(--line);box-shadow:0 3px 0 var(--line);border-radius:18px;flex-direction:column;gap:14px;min-width:0;padding:22px 20px;display:flex;position:relative}.card.taped{margin-top:8px}.card.taped:before{content:"";background:repeating-linear-gradient(45deg,var(--tape) 0 7px,var(--tape2) 7px 14px);opacity:.95;border-radius:2px;width:96px;height:22px;position:absolute;top:-11px;left:22px;transform:rotate(-3deg)}.btn{background:var(--accent);min-height:50px;color:var(--on-accent);box-shadow:0 4px 0 var(--accent-deep);border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:13px 24px;font-size:17px;font-weight:700;transition:transform 80ms,box-shadow 80ms;display:inline-flex}.btn:active{box-shadow:0 1px 0 var(--accent-deep);transform:translateY(3px)}.btn.ghost{background:var(--chip);color:var(--ink);box-shadow:0 4px 0 var(--line)}.btn.small{min-height:40px;padding:8px 16px;font-size:15px}.btn.block{width:100%}.btn[disabled]{opacity:.45;cursor:not-allowed}.linkbtn{color:var(--ink-soft);text-underline-offset:3px;background:0 0;border:0;padding:6px 2px;font-size:14px;text-decoration:underline}.hero{flex-direction:column;gap:14px;display:flex}.hero-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.lvl{background:var(--accent-bg);color:var(--accent);border-radius:999px;align-items:center;gap:8px;padding:4px 12px;font-size:14px;font-weight:700;display:inline-flex}.lvl .n{font-family:var(--f-num)}.xpbar{background:var(--chip);border-radius:999px;height:14px;overflow:hidden}.xpbar>i{background:var(--accent);border-radius:999px;height:100%;transition:width .6s;display:block}.stats{color:var(--ink-soft);flex-wrap:wrap;gap:18px;font-size:14px;display:flex}.stats b{font-family:var(--f-num);color:var(--ink);margin-right:4px;font-size:20px}.topbar{color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font-size:14px;display:flex}.quick{flex-wrap:wrap;gap:10px;display:flex}.quick .btn{flex:180px}.section-h{font-family:var(--f-display);color:var(--ink-soft);margin:6px 0 -4px 4px;font-size:18px;font-weight:700}.map{flex-direction:column;gap:14px;padding-block:6px;display:flex;position:relative}.map:before{content:"";background:repeating-linear-gradient(to right,var(--staff) 0 1px,transparent 1px 6px);width:25px;position:absolute;top:0;bottom:0;left:25px}.station{text-align:left;background:0 0;border:0;grid-template-columns:76px 1fr;align-items:center;gap:12px;width:100%;padding:0;display:grid;position:relative}.station .body{background:var(--card);border:1px solid var(--line);box-shadow:0 3px 0 var(--line);border-radius:16px;flex-direction:column;gap:4px;min-width:0;padding:14px 16px;transition:transform .12s;display:flex}.station:not([disabled]):hover .body{transform:translate(3px)}.station[disabled]{cursor:not-allowed}.station[disabled] .body{opacity:.55}.station .row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.station .t{font-family:var(--f-display);font-size:19px;font-weight:700}.station .s{color:var(--ink-soft);font-size:14px}.pill{white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}.pill.go{background:var(--accent);color:var(--on-accent)}.pill.done{background:var(--ok-bg);color:var(--ok)}.pill.lock{background:var(--chip);color:var(--ink-soft)}.pill.part{background:var(--accent-bg);color:var(--accent)}.sticker{z-index:1;background:var(--c,var(--accent));color:#fff;border:3px solid var(--card);width:66px;height:66px;font-family:var(--f-num);border-radius:50%;justify-self:center;place-items:center;font-weight:700;display:grid;position:relative;transform:rotate(-7deg);box-shadow:0 3px 8px #14192d2e}.sticker.off{background:var(--paper);border:2px dashed var(--staff);box-shadow:none;color:var(--ink-soft);transform:none}.sticker.off>*{opacity:.55}.sticker.big{width:120px;height:120px;font-size:1.8em}.sticker .word{letter-spacing:.02em;font-size:20px}.sticker.big .word{font-size:34px}.tsig{font-family:var(--f-num);vertical-align:middle;flex-direction:column;align-items:center;margin:0 3px;font-size:1.25em;font-weight:700;line-height:.86;display:inline-flex}.sticker .tsig{font-size:24px}.sticker.big .tsig{font-size:44px}.stars{vertical-align:middle;gap:2px;display:inline-flex}.stars svg{width:18px;height:18px}.stars.big svg{width:54px;height:54px}.stars .on{fill:var(--star)}.stars .off{fill:var(--star-off)}.lessons{flex-direction:column;gap:10px;display:flex}.lessonrow{text-align:left;background:var(--card);border:2px solid var(--line);border-radius:14px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:12px 14px;display:flex}.lessonrow:hover{border-color:var(--accent)}.lessonrow .t{font-weight:700}.diag{background:var(--accent-bg);border-radius:14px;flex-direction:column;gap:10px;padding:14px;display:flex}.ltop{align-items:center;gap:12px;display:flex}.xbtn{border:1px solid var(--line);background:var(--card);border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.prog{flex:1;gap:4px;min-width:0;display:flex}.prog i{background:var(--chip);border-radius:999px;flex:1;height:8px}.prog i.d{background:var(--accent)}.prog i.c{background:var(--accent);opacity:.45}.xpchip{font-family:var(--f-num);background:var(--chip);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:15px;font-weight:700;position:relative}.combo{color:var(--accent);font-size:13px;font-weight:700}.timer{font-family:var(--f-num);background:var(--chip);border-radius:999px;padding:4px 12px;font-size:16px;font-weight:700}.timer.low{background:var(--warn-bg);color:var(--warn)}.body-text{flex-direction:column;gap:10px;max-width:62ch;display:flex}.tip{background:var(--accent-bg);border-radius:12px;padding:12px 14px;font-size:15px}.tip .k{color:var(--accent);letter-spacing:.06em;margin-bottom:2px;font-size:13px;font-weight:700;display:block}ol.steps{flex-direction:column;gap:6px;margin:0;padding-left:1.4em;display:flex}.tbl{overflow-x:auto}.tbl table{border-collapse:collapse;width:100%;min-width:300px;font-size:14px}.tbl th,.tbl td{border-bottom:1px solid var(--line);text-align:center;padding:8px 6px}.tbl th{color:var(--ink-soft);font-size:13px;font-weight:700}.tbl td:first-child,.tbl th:first-child{text-align:left}.ex{flex-direction:column;gap:8px;display:flex}.ex-cap{color:var(--ink-soft);font-size:14px;font-weight:500}.sheet{background:var(--sheet);border:1px solid var(--sheet-line);color:var(--sheet-ink);border-radius:12px;padding:6px 8px;overflow:hidden}.sheet svg{height:auto;margin:0 auto;display:block}.sheet .fallback{color:#6b6b6b;text-align:center;padding:16px;font-size:14px}.sheet .vf-stavenote.on path,.sheet .vf-stavenote.on rect,.sheet .vf-stavenote.on text{fill:var(--hl)!important;stroke:var(--hl)!important}.sheet .hit{fill:#0000;cursor:pointer}.sheet .hit:hover{fill:#e0457b1a}.sheet .hit.sel{fill:#e0457b2e;stroke:var(--hl);stroke-width:1.5px}.sheet .hit.right{fill:#17a07733;stroke:#17a077;stroke-width:1.5px}.sheet .hit.wrong{fill:#e8790c33;stroke:#e8790c;stroke-width:1.5px}.sheet.locked .hit{cursor:default}.piece{flex-direction:column;gap:6px;display:flex}.piece summary{cursor:pointer;font-size:15px;font-weight:700}.player{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.play{border:2px solid var(--accent);background:var(--card);color:var(--accent);border-radius:999px;align-items:center;gap:8px;min-height:42px;padding:7px 16px;font-weight:700;display:inline-flex}.play.on{background:var(--accent);color:var(--on-accent)}.play svg{fill:currentColor;width:14px;height:14px}.lights{flex-wrap:wrap;gap:8px;display:flex}.grp{background:var(--chip);border-radius:999px;gap:4px;padding:4px 6px;display:flex}.u{border:2px solid var(--staff);width:26px;height:26px;font-family:var(--f-num);color:var(--ink-soft);border-radius:50%;place-items:center;font-size:13px;font-weight:600;transition:background 60ms,transform 60ms;display:grid}.u.s{border-color:var(--accent);color:var(--accent);font-weight:700}.u.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:scale(1.15)}.kbd{width:100%;max-width:520px;margin:0 auto;display:block}.kbd .w{fill:#fff;stroke:#9aa1b5}.kbd .b{fill:#222}.kbd .on{fill:var(--accent)!important}.kbd text{font-family:var(--f-num);fill:#555;pointer-events:none;font-size:10px}.cof{width:100%;max-width:340px;margin:0 auto;display:block}.cof .seg{cursor:pointer}.cof .seg circle{fill:var(--card);stroke:var(--line);stroke-width:2px}.cof .seg.on circle{fill:var(--accent);stroke:var(--accent)}.cof .seg text{font-family:var(--f-num);fill:var(--ink);font-size:13px;font-weight:700}.cof .seg.on text{fill:var(--on-accent)}.cof .minor{fill:var(--ink-soft)!important;font-size:10px!important;font-weight:500!important}.cof-info{text-align:center;font-size:15px}.qhead{justify-content:space-between;align-items:center;gap:8px;display:flex}.qtext{font-size:18px;font-weight:500}.opts{grid-template-columns:1fr;gap:10px;display:grid}.opts.two{grid-template-columns:1fr 1fr}.opt{text-align:left;background:var(--card);border:2px solid var(--line);border-radius:14px;align-items:center;gap:12px;min-width:0;min-height:56px;padding:12px 14px;font-size:16px;transition:border-color .1s,transform .1s;display:flex}.opt:not([disabled]):hover{border-color:var(--accent)}.opt .k{background:var(--chip);width:28px;height:28px;font-family:var(--f-num);border-radius:8px;flex:none;place-items:center;font-size:14px;font-weight:700;display:grid}.opt .v{flex:1;min-width:0}.opt.tf{font-size:20px;font-weight:700;font-family:var(--f-display);justify-content:center}.opt.picked{border-color:var(--accent);background:var(--accent-bg)}.opt.right{border-color:var(--ok);background:var(--ok-bg)}.opt.right .k{background:var(--ok);color:#fff}.opt.wrong{border-color:var(--warn);background:var(--warn-bg)}.opt.wrong .k{background:var(--warn);color:#fff}.opt[disabled]{cursor:default}.opt-sheet{background:var(--sheet);border-radius:10px;width:100%;padding:4px}.opt-sheet .sheet{border:0;padding:0}.ticks{flex-direction:column;gap:10px;display:flex}.tickrow{border:2px solid var(--line);border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.tickrow.right{border-color:var(--ok);background:var(--ok-bg)}.tickrow.wrong{border-color:var(--warn);background:var(--warn-bg)}.tickbtns{gap:6px;display:flex}.tickbtns button{border:2px solid var(--line);background:var(--card);border-radius:10px;width:46px;height:40px;font-size:18px;font-weight:700}.tickbtns button.on{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.fb{border-radius:14px;flex-direction:column;gap:6px;padding:14px 16px;animation:.25s rise;display:flex}.fb.good{background:var(--ok-bg)}.fb.bad{background:var(--warn-bg)}.fb .h{font-family:var(--f-display);font-size:20px;font-weight:700}.fb.good .h{color:var(--ok)}.fb.bad .h{color:var(--warn)}@keyframes rise{0%{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:none}}.xpfloat{font-family:var(--f-num);color:var(--accent);pointer-events:none;font-weight:700;animation:1s forwards floatup;position:absolute;top:-6px;right:4px}@keyframes floatup{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-26px)}}.qnav{flex-wrap:wrap;gap:6px;display:flex}.qnav button{border:2px solid var(--line);background:var(--card);width:34px;height:34px;font-family:var(--f-num);border-radius:8px;font-size:13px;font-weight:600}.qnav button.ans{background:var(--chip);border-color:var(--staff)}.qnav button.cur{border-color:var(--accent);color:var(--accent)}.band{font-family:var(--f-display);color:var(--accent);font-size:28px;font-weight:700}.bars{flex-direction:column;gap:8px;display:flex}.barrow{grid-template-columns:minmax(0,1fr) 120px 52px;align-items:center;gap:10px;font-size:14px;display:grid}.barrow .track{background:var(--chip);border-radius:999px;height:10px;overflow:hidden}.barrow .track i{background:var(--accent);height:100%;display:block}.barrow .track i.low{background:var(--warn)}.barrow .num{font-family:var(--f-num);text-align:right}.center{text-align:center;align-items:center}.bigstat{flex-wrap:wrap;justify-content:center;gap:28px;display:flex}.bigstat div{flex-direction:column;align-items:center;display:flex}.bigstat b{font-family:var(--f-num);font-size:34px;line-height:1.1}.bigstat span{color:var(--ink-soft);font-size:13px}.btnrow{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.pop{animation:.5s cubic-bezier(.2,1.6,.4,1) both pop}@keyframes pop{0%{opacity:0;transform:scale(.3)rotate(-30deg)}to{opacity:1;transform:scale(1)rotate(-7deg)}}.stars.big svg{animation:.5s cubic-bezier(.2,1.6,.4,1) both pop}.stars.big svg:nth-child(2){animation-delay:.15s}.stars.big svg:nth-child(3){animation-delay:.3s}.cert{background:var(--sheet);color:var(--sheet-ink);text-align:center;border:2px solid var(--sheet-line);box-shadow:0 0 0 8px var(--card),0 0 0 9px var(--line);border-radius:18px;flex-direction:column;gap:12px;padding:30px 22px;display:flex;position:relative}.cert .ttl{font-family:var(--f-display);letter-spacing:.3em;color:#8a7a52;font-size:16px}.cert .nm{font-family:var(--f-display);border-bottom:2px solid #d9cfb4;min-width:60%;margin:0 auto;padding-bottom:6px;font-size:40px;font-weight:700;line-height:1.2}.cert .what{font-size:16px}.cert .meta{color:#5a5446;flex-wrap:wrap;justify-content:center;gap:22px;font-size:14px;display:flex}.cert .meta b{font-family:var(--f-num);color:#1b1b1f;margin-right:4px;font-size:22px}.seal{color:#fff;width:84px;height:84px;font-family:var(--f-num);background:#e0457b;border-radius:50%;place-items:center;margin:4px auto 0;font-size:26px;font-weight:700;display:grid;transform:rotate(-10deg);box-shadow:0 0 0 4px #fffdf7,0 0 0 6px #e0457b}.stafflines{opacity:.8;background:repeating-linear-gradient(#d9cfb4 0 1px,#0000 1px 6px);height:25px}.login{flex-direction:column;gap:12px;display:flex}.login input{font:inherit;border:2px solid var(--line);background:var(--paper);color:var(--ink);border-radius:12px;width:100%;padding:12px 14px;font-size:17px}.err{color:var(--warn);font-size:14px}.foot{flex-direction:column;align-items:center;gap:4px;padding-top:6px;display:flex}.fx{pointer-events:none;z-index:50;width:100%;height:100%;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (max-width:420px){h1{font-size:26px}.qtext{font-size:17px}.barrow{grid-template-columns:minmax(0,1fr) 80px 46px}}.seg{background:var(--chip);border:1px solid var(--line);border-radius:999px;gap:4px;padding:4px;display:flex}.seg button{min-height:44px;color:var(--ink-soft);font:inherit;background:0 0;border:0;border-radius:999px;flex:1;padding:10px 12px;font-weight:700}.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 2px 0 var(--line)}.checks{border:0;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.login .check{align-items:center;gap:10px;display:flex}.login .check input{flex:none;width:22px;height:22px}.ok{color:var(--ok);font-size:14px}.searchrow{align-items:center;gap:10px;display:flex}.search{min-width:0;font:inherit;border:2px solid var(--line);background:var(--paper);color:var(--ink);border-radius:12px;flex:1;padding:10px 14px;font-size:16px}.chips{flex-wrap:wrap;gap:8px;display:flex}.tbl tr.sel td{background:var(--chip)}.rule{border:0;border-top:1px solid var(--line);width:100%;margin:4px 0}.topbar h3{margin:0}.langsw{border:1px solid var(--line);background:var(--chip);border-radius:999px;display:inline-flex;overflow:hidden}.langsw button{font:inherit;color:var(--ink-soft);background:0 0;border:0;min-height:30px;padding:4px 10px;font-size:13px}.langsw button.on{background:var(--card);color:var(--ink);font-weight:700}.login .field{flex-direction:column;gap:6px;display:flex}.termgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.termcard{text-align:left;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;border-radius:14px;flex-direction:column;align-items:flex-start;gap:4px;min-height:84px;padding:12px;display:flex}.termcard .cat{color:var(--ink-soft);font-size:12px}.termcard .term{font-size:16px;font-weight:700}.termcard .meaning{font-size:14px}.termcard.open{background:var(--card);box-shadow:0 2px 0 var(--line)}.termcard.mastered{border-color:var(--ok)}.sheet .hit.gap,.sheet .hit.gap.sel,.sheet .hit.gap.right,.sheet .hit.gap.wrong{fill:#0000;stroke:none}.sheet .hit.gap:hover{fill:#e0457b1a}.sheet .barmark{stroke:#0000;stroke-width:2.5px;pointer-events:none}.sheet .barmark.sel{stroke:#1a2236}.sheet .barmark.right{stroke:#17a077}.sheet .barmark.wrong{stroke:#e8790c}.blanks{flex-direction:column;gap:10px;display:flex}.blank{line-height:2}.blank input{width:4.2em;font:inherit;border:2px solid var(--line);background:var(--paper);color:var(--ink);text-align:center;border-radius:10px;margin:0 4px;padding:4px 8px;font-size:17px}.blank input.right{border-color:var(--ok)}.blank input.wrong{border-color:#e8790c}.blank .fix{color:var(--ok);margin-left:4px;font-weight:700}.picker{flex-direction:column;gap:8px;display:flex}.picker .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.picker .row .lab{min-width:4.5em;color:var(--ink-soft);font-size:14px}.pick{border:2px solid var(--line);background:var(--paper);min-width:44px;min-height:44px;color:var(--ink);font:inherit;border-radius:12px;font-weight:700}.pick.on{border-color:var(--accent);background:var(--accent-bg)}.pick.right{border-color:var(--ok);background:var(--ok-bg)}.pick.wrong{border-color:#e8790c}.tsprev{font-family:var(--f-num);flex-direction:column;align-items:center;margin-left:8px;font-size:28px;line-height:1;display:inline-flex}.staveinput .sheet{padding:4px}.staveinput .row{fill:#0000;cursor:pointer}.staveinput .row:hover{fill:#e0457b2e}.staveinput.locked .row{cursor:default;pointer-events:none}.staveinput.right .sheet{outline:2px solid var(--ok);border-radius:12px}.staveinput.wrong .sheet{border-radius:12px;outline:2px solid #e8790c}.accrow{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.slots{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.ordered{flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;display:flex}.ordered .chip{border:2px solid var(--accent);background:var(--accent-bg);border-radius:999px;padding:6px 12px;font-weight:700}.textans{font:inherit;border:2px solid var(--line);background:var(--paper);color:var(--ink);border-radius:12px;width:100%;padding:12px 14px;font-size:17px}.textans.right{border-color:var(--ok)}.textans.wrong{border-color:#e8790c}.sheet .bracket{stroke:var(--accent);stroke-width:2.5px;fill:none}.sheet .bracket.right{stroke:#17a077}.sheet .bracket.wrong{stroke:#e8790c}.routes{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.route{border:1px solid var(--line);background:var(--card);box-shadow:0 2px 0 var(--line);color:var(--ink);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.route b{font-family:var(--f-num,inherit);font-size:18px}.route span{color:var(--ink-soft);font-size:12px}.route.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.route.on span{color:var(--on-accent)}.gaps ol{flex-direction:column;gap:4px;margin:6px 0 0;padding-left:22px;display:flex}.run-end{height:30vh}.msg textarea{width:100%;font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);resize:vertical;border-radius:12px;padding:10px 12px;font-size:15px;line-height:1.6}.btn.off{opacity:.45;pointer-events:none}a.btn{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.missed{flex-direction:column;gap:10px;margin:0;padding-left:22px;display:flex}.notice{background:var(--chip);border-radius:12px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.notice h4{margin:6px 0 2px;font-size:15px}.consent-rows{flex-direction:column;gap:8px;display:flex}.consent-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.login.danger{border-top:2px solid var(--warn-bg);padding-top:8px}.btn.warn{background:var(--warn);color:#fff}span.ok{color:var(--ok)}.secret{letter-spacing:.06em;word-break:break-all;-webkit-user-select:all;user-select:all;font-size:1.05rem}.app-status{flex-direction:column;gap:6px;margin:0 0 10px;display:flex}.update-banner{background:var(--accent);color:var(--on-accent);font:inherit;cursor:pointer;border:0;border-radius:12px;padding:10px 14px;font-weight:700}.offline-line{background:var(--chip);color:var(--ink-soft);border-radius:999px;align-self:flex-start;margin:0;padding:6px 12px;font-size:.85rem}.offline-line.ok{background:var(--ok-bg);color:var(--ok)}.offline-line.warn{background:var(--warn-bg);color:var(--warn)}.ptr{color:var(--ink-soft);justify-content:center;align-items:flex-end;font-size:.85rem;transition:height .15s ease-out;display:flex;overflow:hidden}.ptr span{padding-bottom:10px}.pending-note{background:var(--warn-bg);color:var(--warn);border-radius:12px;margin:0 0 10px;padding:10px 14px;font-size:.9rem}button.lvl{font:inherit;cursor:pointer;border:0;font-size:14px;font-weight:700}.ladder{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.ladder li{background:var(--chip);border-radius:12px;grid-template-columns:20px 52px 1fr;grid-template-areas:"mark lv name"". .when";align-items:center;column-gap:8px;padding:8px 10px;display:grid}.ladder .mark{color:var(--ok);grid-area:mark;font-weight:700}.ladder .lv{color:var(--ink-soft);grid-area:lv;font-size:13px}.ladder .lv b{font-family:var(--f-num);color:var(--ink);font-size:17px}.ladder .name{font-family:var(--f-display);grid-area:name;font-weight:700}.ladder .when{flex-direction:column;grid-area:when;gap:4px;display:flex}.ladder li.current{background:var(--accent-bg);outline:2px solid var(--accent)}.ladder li.current .mark{color:var(--accent)}.ladder li.future{border:1px dashed var(--line);background:0 0}.ladder li.future .name,.ladder li.future .lv b{color:var(--ink-soft)}.xpbar.small{height:8px}.album{flex-direction:column;gap:14px;display:flex}.album-grade h4{margin:6px 0 8px}.album-grid{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px 6px;display:grid}.album-item{text-align:center;font:inherit;color:inherit;background:0 0;border:0;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;display:flex}button.album-item{cursor:pointer}button.album-item:hover{background:var(--chip)}.album-item .cap{font-size:12px;line-height:1.35}.album-item .got{color:var(--ok)}.other-ach{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.other-ach li{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:8px 0;display:flex}.levelup{text-align:center;background:linear-gradient(180deg,var(--accent-bg),var(--card));flex-direction:column;align-items:center;gap:6px;margin-bottom:12px;display:flex}.lvbadge{background:var(--accent);width:96px;height:96px;color:var(--on-accent);box-shadow:0 6px 0 var(--accent-deep);border-radius:50%;place-content:center;justify-items:center;animation:.6s cubic-bezier(.2,1.6,.4,1) both lvpop;display:grid}.lvbadge span{font-size:14px;font-weight:700;line-height:1}.lvbadge b{font-family:var(--f-num);font-size:40px;line-height:1}@keyframes lvpop{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.lvbadge{animation:none}}.ach-details summary{cursor:pointer;align-items:baseline;gap:10px;list-style:none;display:flex}.ach-details summary::-webkit-details-marker{display:none}.ach-details summary h3{margin:0}.ach-details summary:after{content:"▾";color:var(--ink-soft);margin-left:auto}.ach-details[open] summary:after{content:"▴"}.tbl tr.grade-row th{text-align:left;font-family:var(--f-num);color:var(--accent);border-bottom:2px solid var(--accent-bg);padding:20px 6px 6px;font-size:15px}.tbl tbody tr.grade-row:first-child th{padding-top:10px}.bars-grp{font-family:var(--f-num);color:var(--accent);margin:10px 0 2px}html.in-session,html.in-session body{overscroll-behavior-y:none}.seg.period{background:var(--chip);border-radius:999px;gap:4px;margin-top:10px;padding:4px;display:inline-flex}.seg.period button{font:inherit;cursor:pointer;color:var(--ink-soft);background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:14px}.seg.period button.on{background:var(--card);color:var(--ink);font-weight:700;box-shadow:0 1px 2px #00000014}button.barrow.linkrow{width:100%;font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px}button.barrow.linkrow:hover,button.barrow.linkrow.on{background:var(--chip)}.barrow .num em{font-size:11px;font-style:normal}.barrow .num em.up{color:var(--ok)}.barrow .num em.down{color:var(--warn)}.tbl td.low{color:var(--warn);font-weight:700}.filters{flex-wrap:wrap;align-items:center;gap:10px 16px;margin:6px 0;display:flex}.filters select{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:6px 10px}label.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.mistakes{flex-direction:column;gap:12px;margin-top:8px;display:flex}.mistake{border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:8px;padding:12px;display:flex}.mistake.picked{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg)}.m-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.m-head .muted{margin-right:auto}.pill.warn{background:var(--warn-bg);color:var(--warn)}.m-prompt{font-weight:500}.m-answers{grid-template-columns:1fr 1fr;gap:8px;display:grid}@media (max-width:420px){.m-answers{grid-template-columns:1fr}}.m-ans{border-radius:10px;padding:8px 10px;font-size:14px}.m-ans .lab{margin-bottom:2px;font-size:12px;font-weight:700;display:block}.m-ans.wrong{background:var(--warn-bg)}.m-ans.wrong .lab{color:var(--warn)}.m-ans.right{background:var(--ok-bg)}.m-ans.right .lab{color:var(--ok)}.ans-list{margin:0;padding-left:0;list-style:none}.m-expl{color:var(--ink-soft);border-left:3px solid var(--line);padding-left:8px}.m-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.assign-bar{z-index:5;background:var(--card);border:1px solid var(--line);border-radius:16px;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;display:flex;position:sticky;bottom:12px;box-shadow:0 6px 20px #0000001f}.say{vertical-align:middle;cursor:pointer;background:var(--chip);-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;width:1.6em;height:1.6em;margin-left:4px;font-size:.8em;line-height:1;display:inline-flex}.say:hover,.say:focus-visible{background:var(--accent-bg);outline:none}.no-say .say{display:none}.push-card{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.push-card p{margin:0}.push-card .btnrow{align-items:center;gap:12px;display:flex}.push-line{margin:0 0 10px}.track.two{position:relative}.track.two i{position:absolute;top:0;bottom:0;left:0}.track.two i.seen{opacity:.35}.boxdots{gap:4px;margin-top:6px;display:flex}.boxdots i{background:var(--star-off);border-radius:50%;width:8px;height:8px}.boxdots i.on,.termcard.mastered .boxdots i{background:var(--ok)}.num.nowrap{white-space:nowrap}.legend{align-items:center;gap:6px;margin:8px 0 2px;display:flex}.legend .key{background:var(--accent);border-radius:999px;width:14px;height:8px;display:inline-block}.legend .key.seen{opacity:.35;margin-left:0}.legend .key:not(.seen){margin-left:8px}.missed-terms{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.missed-terms li{border-bottom:1px solid var(--line);padding:8px 0}.seg.seg-multi{border-radius:16px;flex-wrap:wrap;margin-bottom:10px}td.nowrap{white-space:nowrap}.seg .small-tab{opacity:.85;font-size:13px}.seg.seg-multi button{white-space:nowrap;flex:auto;padding:10px 8px}
