:root{--bg:#eaf6fb;--bg-2:#fdf6e3;--surface:#fff;--surface-2:#f4f9fc;--ink:#0f2a3d;--muted:#5b7385;--line:#d4e5ee;--primary:#0a7570;--primary-2:#2563eb;--fill:var(--primary);--fill-2:var(--primary-2);--primary-ink:#fff;--sun:#f59e0b;--ok:#15803d;--ok-bg:#e8f8ee;--bad:#be123c;--voice-f:#a21caf;--bad-bg:#fdebef;--shadow:0 10px 30px #0f2a3d14;--shadow-lg:0 18px 50px #0f2a3d24;--radius:18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Segoe UI,system-ui,-apple-system,Roboto,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1b26;--bg-2:#10222f;--surface:#132b3b;--surface-2:#183447;--ink:#e6f1f7;--muted:#8fa9ba;--line:#ffffff1a;--primary:#2dd4bf;--primary-2:#60a5fa;--fill:#0f766e;--fill-2:#2563eb;--ok:#4ade80;--ok-bg:#4ade801f;--bad:#fb7185;--voice-f:#e879f9;--bad-bg:#fb71851f;--shadow:0 10px 30px #0000004d;--shadow-lg:0 18px 50px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0b1b26;--bg-2:#10222f;--surface:#132b3b;--surface-2:#183447;--ink:#e6f1f7;--muted:#8fa9ba;--line:#ffffff1a;--primary:#2dd4bf;--primary-2:#60a5fa;--fill:#0f766e;--fill-2:#2563eb;--ok:#4ade80;--ok-bg:#4ade801f;--bad:#fb7185;--voice-f:#e879f9;--bad-bg:#fb71851f;--shadow:0 10px 30px #0000004d;--shadow-lg:0 18px 50px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--ink);margin:0}#root{min-height:100%}button{font:inherit;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,a:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline:3px solid var(--primary);outline-offset:2px}h1[tabindex="-1"]:focus{outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}:root[data-font=large] #root{zoom:1.15}:root[data-font=xlarge] #root{zoom:1.3}.app-root{background:radial-gradient(900px 500px at 0% -10%, color-mix(in srgb, var(--primary) 16%, transparent), transparent), radial-gradient(800px 500px at 100% 0%, color-mix(in srgb, var(--sun) 14%, transparent), transparent), linear-gradient(180deg, var(--bg), var(--bg-2));flex-direction:column;min-height:100svh;display:flex}.main-pad{flex:1;width:min(860px,100%);margin:0 auto;padding:20px 16px 48px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.muted{color:var(--muted);font-size:14px}.panel-head h1,.session-sub h1,.result-card h1{margin:0;font-size:22px}h2{margin-block:1em;font-size:1.17em}.app-header{z-index:10;background:color-mix(in srgb, var(--surface) 80%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 16px;display:flex;position:sticky;top:0}.brand{cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0;font-size:17px;font-weight:800;display:flex}.brand-mark{background:linear-gradient(135deg, var(--fill), var(--fill-2));border-radius:10px;place-items:center;width:34px;height:34px;font-size:18px;display:grid}.lv{white-space:nowrap;align-items:center;gap:8px;min-width:0;margin-left:auto;font-size:13px;font-weight:700;display:flex}.lv-bar{background:var(--line);border-radius:99px;flex-shrink:1;width:clamp(48px,14vw,120px);min-width:20px;height:8px;overflow:hidden}.lv-bar>span,.mini-bar>span,.progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--sun), #fb923c);height:100%;transition:width .5s;display:block}.toggles{gap:4px;display:flex}.icon-btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:10px;width:34px;height:34px}.icon-btn.off{opacity:.55}@media (width<=480px){.brand-name{display:none}}.float-toast{z-index:20;background:var(--ink);color:var(--surface);text-align:center;box-shadow:var(--shadow-lg);pointer-events:none;border-radius:18px;width:max-content;max-width:calc(100% - 32px);padding:10px 18px;font-weight:700;animation:.35s drop-in;position:fixed;top:64px;left:50%;transform:translate(-50%)}@keyframes drop-in{0%{opacity:0;transform:translate(-50%,-12px)}}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:12px;padding:10px 18px;font-weight:700;transition:transform .1s,filter .15s,background .15s}.btn:hover:not(:disabled){filter:brightness(1.04);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:var(--primary-ink);background:linear-gradient(135deg, var(--fill), var(--fill-2));box-shadow:0 6px 16px color-mix(in srgb, var(--primary) 30%, transparent);border-color:#0000}.btn-ghost{background:0 0}.btn-warn{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 40%, transparent);background:var(--bad-bg)}.btn-sm{padding:6px 12px;font-size:14px}.btn-lg{padding:13px 26px;font-size:17px}.kbd-hint{opacity:.7;margin-left:6px;font-size:11px;font-weight:600}.tag{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);border-radius:99px;margin-top:10px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.tag-go{color:var(--primary);border-color:color-mix(in srgb, var(--primary) 40%, transparent);margin:4px 0 0}.toast{background:color-mix(in srgb, var(--sun) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--sun) 35%, transparent);border-radius:12px;padding:10px 14px}.panel{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);margin-top:14px;padding:20px}.panel.empty{text-align:center}.panel-head{align-items:center;gap:12px;margin-bottom:12px;display:flex}.hero-card{background:linear-gradient(135deg, var(--fill), var(--fill-2));color:#fff;box-shadow:var(--shadow-lg);border-radius:24px;align-items:center;gap:16px;padding:28px 26px;display:flex;overflow:hidden}.hero-card :focus-visible{outline-color:#fff}.hero-card h1{margin:0 0 8px;font-size:clamp(26px,5vw,36px);line-height:1.15}.hero-card p{opacity:.92;max-width:44ch;margin:0 0 20px}.hero-card .btn-primary{color:var(--fill-2);background:#fff}.hero-card .btn-ghost{color:#fff;border-color:#ffffff80}.hero-art{margin-left:auto;font-size:clamp(64px,14vw,120px);animation:4s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-8px)rotate(-3deg)}}@media (width<=560px){.hero-art{display:none}}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,120px),1fr));gap:12px;margin-top:16px;display:grid}.stat{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:16px;flex-direction:column;gap:2px;padding:14px 16px;display:flex}.stat b{font-size:22px}.stat span{color:var(--muted);font-size:13px}.stat-btn{cursor:pointer}.stat-btn:hover{border-color:var(--primary)}.tip{margin-top:18px}.grid-grades{grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:12px;display:grid}.tile,.hub-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;box-shadow:var(--shadow);flex-direction:column;align-items:flex-start;padding:16px;transition:transform .15s,border-color .15s;display:flex}.tile:hover,.hub-card:hover{border-color:var(--primary);transform:translateY(-3px)}.tile h2,.hub-card h2,.hub-card h3{margin:0 0 4px;font-size:18px}.tile small{color:var(--muted)}.tile-meta{color:var(--muted);margin-top:12px;font-size:13px;font-weight:700}.mini-bar{background:var(--line);border-radius:99px;width:100%;height:6px;margin-top:6px;display:block;overflow:hidden}.hub-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:14px;margin-top:12px;display:grid}.hub-card .icon{margin-bottom:6px;font-size:30px}.hub-card.featured{color:#fff;background:linear-gradient(135deg, var(--fill), var(--fill-2));border:0;grid-column:1/-1}.hub-card.featured .muted{color:#ffffffe0}.hub-card.featured .tag{color:#fff;background:#fff3;border-color:#0000}.seg{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;gap:4px;padding:4px;display:inline-flex}.seg button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:10px;padding:8px 16px;font-weight:700}.seg button.on,.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.flashcard{cursor:pointer;perspective:1000px;background:0 0;border:0;width:100%;margin-top:12px;padding:0;display:block}.flash-inner{min-height:190px;transform-style:preserve-3d;transition:transform .5s;display:block;position:relative}.flashcard.flipped .flash-inner{transform:rotateY(180deg)}.flash-face{border-radius:var(--radius);backface-visibility:hidden;background:var(--surface-2);border:2px dashed var(--line);flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex;position:absolute;inset:0}.flash-face.back{border-style:solid;border-color:color-mix(in srgb, var(--primary) 40%, transparent);transform:rotateY(180deg)}.flash-face .en{font-size:clamp(30px,6vw,44px);font-weight:800}.flash-face .zh{font-size:20px}.pos{color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, transparent);border-radius:6px;margin:0 6px;padding:0 6px;font-size:12px;font-style:italic;font-weight:700;display:inline-block}.session-head{align-items:center;gap:12px;display:flex}.progress{background:var(--line);border-radius:99px;flex:1;height:12px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary), var(--primary-2))}.session-sub,.practice-stats{justify-content:space-between;align-items:center;gap:10px;min-height:30px;margin-top:12px;display:flex}.practice-stats{margin:0 0 10px}.combo{color:#fff;background:linear-gradient(135deg,#f97316,#ef4444);border-radius:99px;padding:3px 12px;font-weight:800;animation:.35s pop}.kind-chip{color:var(--primary);background:color-mix(in srgb, var(--primary) 12%, transparent);border-radius:99px;padding:2px 10px;font-size:12px;font-weight:700;display:inline-block}.q-prompt{align-items:center;gap:12px;margin:14px 0 4px;display:flex}.q-en{font-size:clamp(28px,6vw,38px);font-weight:800}.speak-btn{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:10px;padding:4px 10px;font-size:15px}.listen-big{cursor:pointer;background:linear-gradient(135deg, var(--fill), var(--fill-2));width:84px;height:84px;box-shadow:0 8px 20px color-mix(in srgb, var(--primary) 35%, transparent);border:0;border-radius:50%;font-size:36px;animation:2s ease-in-out infinite pulse}@keyframes pulse{50%{transform:scale(1.06)}}.sentence{margin:14px 0 4px;font-size:19px;line-height:1.7}.blank{border-bottom:3px solid var(--primary);text-align:center;min-width:4ch;color:var(--primary);margin:0 4px;padding:0 8px;font-weight:700;display:inline-block}.blank-ok{color:var(--ok);border-color:var(--ok)}.blank-bad{color:var(--bad);border-color:var(--bad)}.mc-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px;margin-top:14px;display:grid}.mc-opt{text-align:left;border:2px solid var(--line);background:var(--surface);cursor:pointer;border-radius:14px;align-items:center;gap:10px;padding:13px 14px;font-size:16px;transition:border-color .15s,transform .1s;display:flex}.mc-opt:hover:not(:disabled){border-color:var(--primary);transform:translateY(-1px)}.mc-opt:disabled{cursor:default}.mc-opt.correct{border-color:var(--ok);background:var(--ok-bg)}.mc-opt.wrong{border-color:var(--bad);background:var(--bad-bg)}.mc-opt.dim{opacity:.5}.kbd{width:24px;height:24px;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:7px;flex:none;place-items:center;font-size:12px;font-weight:800;display:grid}.question.pop .explain{animation:.35s pop}.question.shake .mc-opt.wrong,.question.shake .spell-input{animation:.4s shake}@keyframes pop{0%{opacity:.4;transform:scale(.92)}60%{transform:scale(1.03)}}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.spell{margin-top:14px}.spell-zh{font-size:24px;font-weight:800}.hint{letter-spacing:2px;color:var(--muted);margin:8px 0 12px;font-family:ui-monospace,Consolas,monospace;font-size:20px}.spell-input{border:2px solid var(--line);background:var(--surface-2);width:100%;max-width:420px;color:var(--ink);border-radius:12px;padding:12px 14px;font-size:20px}.spell-input.ok{border-color:var(--ok);background:var(--ok-bg)}.spell-input.bad{border-color:var(--bad);background:var(--bad-bg)}.explain{border-left:5px solid var(--ok);background:var(--ok-bg);border-radius:14px;margin-top:14px;padding:12px 14px}.explain.bad{border-left-color:var(--bad);background:var(--bad-bg)}.explain-head{color:var(--ok);font-weight:800}.explain.bad .explain-head{color:var(--bad)}.explain .sentence{margin:6px 0 2px;font-size:17px}.word-line{flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:6px;display:flex}.word-en{font-size:18px}.result-card{text-align:center;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);border-radius:24px;padding:26px 20px}.result-stars{letter-spacing:6px;margin:10px 0 4px;font-size:54px}.star{color:var(--line);display:inline-block}.star.on{color:var(--sun);text-shadow:0 4px 14px color-mix(in srgb, var(--sun) 50%, transparent);animation:.5s backwards star-in}@keyframes star-in{0%{opacity:0;transform:scale(0)rotate(-60deg)}70%{transform:scale(1.25)}}.result-stats{justify-content:center;gap:clamp(16px,6vw,48px);margin-top:12px;display:flex}.result-stats div{flex-direction:column;display:flex}.result-stats b{font-size:26px}.result-stats span{color:var(--muted);font-size:13px}.result-perfect{color:var(--sun);font-weight:800}.wrong-list,.mistake-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.wrong-list li,.mistake-list li{background:var(--surface-2);border-radius:12px;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 10px;display:flex}.mistake-list{margin-top:14px}.mistake-n{color:var(--bad);margin-left:auto;font-weight:800}.map{flex-direction:column;gap:18px;margin:16px 0 0;padding:0;list-style:none;display:flex;position:relative}.map:before{content:"";border-left:4px dashed color-mix(in srgb, var(--primary) 35%, transparent);position:absolute;top:30px;bottom:30px;left:50%;transform:translate(-50%)}.map-node{align-items:center;gap:14px;width:50%;display:flex;position:relative}.map-node.left{text-align:right;flex-direction:row-reverse;margin-right:auto;padding-right:0;transform:translate(42px)}.map-node.right{margin-left:auto;transform:translate(-42px)}.island{border:4px solid var(--surface);width:84px;height:84px;box-shadow:var(--shadow-lg);cursor:pointer;background:radial-gradient(circle at 35% 30%,#fff8,#0000 60%),linear-gradient(135deg,#5eead4,#38bdf8);border-radius:50%;flex:none;transition:transform .15s}.island:hover:not(:disabled){transform:scale(1.08)}.island.locked{background:var(--line);cursor:not-allowed;box-shadow:none}.island.gold{background:radial-gradient(circle at 35% 30%,#fff8,#0000 60%),linear-gradient(135deg,#fde047,#f59e0b)}.island.current{outline:4px solid color-mix(in srgb, var(--sun) 60%, transparent);outline-offset:3px;animation:1.6s ease-in-out infinite pulse}.island:focus-visible,.island.current:focus-visible{outline:4px solid var(--primary);outline-offset:3px}.island-emoji{font-size:38px}.island-info{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.map-node.left .island-info{align-items:flex-end}.island-words{font-size:12px}.stars{color:var(--sun);letter-spacing:2px}.stars-off{color:var(--line)}@media (width<=560px){.map:before{left:42px}.map-node,.map-node.left,.map-node.right{text-align:left;flex-direction:row;width:100%;margin:0;transform:none}.map-node.left .island-info{align-items:flex-start}}.badge-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:10px;margin-top:12px;display:grid}.badge{border:1px solid var(--line);background:var(--surface);color:var(--muted);filter:grayscale();opacity:.7;border-radius:14px;flex-direction:column;gap:2px;padding:12px;font-size:13px;display:flex}.badge b{font-size:15px}.badge.on{color:var(--ink);filter:none;opacity:1;border-color:color-mix(in srgb, var(--sun) 50%, transparent);background:color-mix(in srgb, var(--sun) 10%, var(--surface))}.ipa{color:var(--muted);margin:0 4px;font-family:Lucida Sans Unicode,Segoe UI,Arial Unicode MS,sans-serif;font-size:14px}.word-ex{flex-basis:100%;margin-top:2px;font-size:14px}.flash-face .zh-front{text-align:center;max-width:90%;font-size:clamp(22px,5vw,32px);font-weight:700}.flash-summary h2{margin:0 0 6px}.flash-summary h2:focus{outline:none}.flash-unknown{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:6px 16px;margin:10px 0 0;padding:0;list-style:none;display:grid}.flash-unknown .link-btn{text-decoration:none}.flash-ex{text-align:center;max-width:90%;margin-top:6px;font-size:15px}.flash-inner{min-height:240px}.unit-select{align-items:center;gap:8px;max-width:100%;display:inline-flex}.unit-select>span{white-space:nowrap;flex:none}.unit-select select{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;border-radius:10px;flex:0 auto;min-width:0;max-width:100%;padding:8px 12px}.unit-en{color:var(--muted);margin:-6px 0 0;font-style:italic}.grammar-card{border-left:5px solid var(--primary)}.grammar-card h2{margin:8px 0 6px}.vocab{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.vocab li{background:var(--surface-2);border-radius:12px;flex-direction:column;padding:8px 10px;display:flex}.vocab-word{text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.vocab-word b{font-size:17px}.vocab-zh{font-size:14px;transition:filter .2s}.vocab-zh.masked{filter:blur(6px);-webkit-user-select:none;user-select:none}.vocab li:hover .vocab-zh.masked{filter:none}.tag-soft{vertical-align:middle;color:var(--sun);border-color:color-mix(in srgb, var(--sun) 40%, transparent);margin:0 0 0 8px}.tile-legacy{opacity:.85}.order{margin-top:12px}.order-line{border:2px dashed var(--line);background:var(--surface-2);border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px;min-height:58px;padding:10px;display:flex}.order-line.ok{border-style:solid;border-color:var(--ok);background:var(--ok-bg)}.order-line.bad{border-style:solid;border-color:var(--bad);background:var(--bad-bg)}.question.shake .order-line.bad{animation:.4s shake}.order-bank{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.token{border:2px solid var(--line);background:var(--surface);cursor:pointer;border-bottom-width:4px;border-radius:10px;padding:8px 14px;font-size:17px;font-weight:600;transition:transform .1s}.token:hover:not(:disabled){border-color:var(--primary);transform:translateY(-2px)}.token:disabled{opacity:.25;cursor:default}.token.placed{border-color:color-mix(in srgb, var(--primary) 50%, transparent)}.token.placed:disabled{opacity:1}.order-punct{color:var(--muted);font-size:22px;font-weight:800}.unit-start{background:linear-gradient(transparent, var(--bg-2) 35%);margin-top:8px;padding:14px 0 16px;position:sticky;bottom:0}.reading-p{margin:12px 0 0;font-size:17px;line-height:1.75}.tap-hint{margin:8px 0 0;font-size:14px}.tw{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:4px}.tw:hover{background:color-mix(in srgb, var(--primary) 12%, transparent)}.tw.on{background:color-mix(in srgb, var(--primary) 24%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 24%, transparent)}.tap-sheet{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:25;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:min(560px,100% - 24px);max-height:50vh;box-shadow:var(--shadow);padding:12px 14px;position:fixed;overflow-y:auto;transform:translate(-50%)}.tap-sheet p{margin:6px 0 0}.tap-sheet .row{margin-top:8px}.tap-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.tap-word{flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;display:flex}.tap-word b{overflow-wrap:anywhere;font-size:22px}.tap-zh{font-size:18px}.tap-note,.tap-where{font-size:14px}.tap-close{background:var(--surface-2);width:36px;height:36px;color:var(--ink);font:inherit;cursor:pointer;border:0;border-radius:50%;flex:none}@media print{.tap-sheet,.tap-hint{display:none}.tw.on{box-shadow:none;background:0 0}}.reading-zh{background:var(--surface-2);color:var(--muted);border-radius:10px;margin:10px 0 0;padding:8px 12px;line-height:1.7}.reading-q{margin:0;font-size:17px;font-weight:700}.result-inline{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.result-inline>:not(.row):not(.btn){flex:200px;min-width:0}.result-inline>.row,.result-inline>.btn{flex-shrink:0}.reading-entry{text-align:left;cursor:pointer;border-left:5px solid var(--sun);align-items:center;gap:14px;width:100%;display:flex}.reading-entry:hover{border-color:var(--sun);transform:translateY(-2px)}:root{--chart:#0e9f9a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--chart:#0d9488}}:root[data-theme=dark]{--chart:#0d9488}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.chart{margin-top:14px;padding-left:28px;position:relative}.chart-max{color:var(--muted);font-size:11px;position:absolute;top:-4px;left:0}.chart-plot{border-bottom:1px solid var(--line);background:linear-gradient(var(--line), var(--line)) 0 0 / 100% 1px no-repeat;align-items:flex-end;gap:2px;height:160px;display:flex}.chart-col{flex:1;justify-content:center;align-items:flex-end;height:100%;display:flex;position:relative}.chart-bar{background:var(--chart);opacity:.85;border-radius:4px 4px 0 0;width:min(70%,22px);min-height:2px;transition:opacity .15s}.chart-bar.today{opacity:1}.chart-col.on .chart-bar,.chart-col:hover .chart-bar{opacity:1;outline:2px solid var(--surface)}.chart-tip{white-space:nowrap;background:var(--ink);color:var(--surface);pointer-events:none;opacity:0;z-index:2;border-radius:8px;padding:4px 8px;font-size:12px;transition:opacity .1s;position:absolute;bottom:calc(100% + 6px)}.chart-col.on .chart-tip,.chart-col:hover .chart-tip{opacity:1;top:0;bottom:auto}.chart-x{gap:2px;margin-top:4px;display:flex}.chart-x span{white-space:nowrap;text-align:center;min-width:0;color:var(--muted);flex:1;font-size:11px}.chart-x span:last-child{text-align:right}.meter{background:var(--line);border-radius:99px;flex:1;height:10px;display:block;overflow:hidden}.meter.small{height:6px}.meter>span{border-radius:inherit;background:var(--chart);height:100%;display:block}.mastery{border-top:1px solid var(--line);padding:8px 0}.mastery summary{cursor:pointer;align-items:center;gap:12px;list-style:none;display:flex}.mastery summary::-webkit-details-marker{display:none}.mastery summary:before{content:"▸";color:var(--muted);transition:transform .15s}.mastery[open] summary:before{transform:rotate(90deg)}.mastery-name{width:6em;font-weight:700}.mastery-num{text-align:right;width:4.5em;color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.mastery ul{flex-direction:column;gap:6px;margin:8px 0 0;padding:0 0 0 20px;list-style:none;display:flex}.mastery li{align-items:center;gap:12px;font-size:14px;display:flex}.mastery-unit{text-overflow:ellipsis;white-space:nowrap;width:min(16em,45%);overflow:hidden}.due-note{color:var(--primary);margin:0 0 10px;font-weight:600}.chart-tip.tip-start{left:0}.chart-tip.tip-end{right:0}.save-ok,.save-bad{margin:10px 0 0;font-weight:600}.save-ok{color:var(--ok)}.save-bad{color:var(--bad)}.offline-pill{color:var(--surface);background:var(--muted);border-radius:99px;padding:3px 10px;font-size:12px;font-weight:700}.update-bar{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;background:var(--ink);color:var(--surface);box-shadow:var(--shadow-lg);border-radius:99px;align-items:center;gap:12px;padding:8px 8px 8px 16px;font-weight:700;animation:.3s drop-in;display:flex;position:fixed;transform:translate(-50%)}.install-card{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.ios-hint{margin-top:6px;font-size:14px}.setting-row{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.setting-row input{width:20px;height:20px;accent-color:var(--primary);flex:none;margin-top:2px}.setting-row>span{flex-direction:column;gap:2px;display:flex}.listening-scene{margin:10px 0 14px;line-height:1.6}.dialogue{gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.dialogue-line{border:2px solid #0000;border-radius:12px;grid-template-columns:4.5em 1fr;align-items:start;gap:10px;padding:8px 10px;transition:background .2s,border-color .2s;display:grid}.dialogue-line.speaking{background:var(--surface-2);border-color:var(--primary)}.dialogue-who{overflow-wrap:anywhere;padding-top:2px;font-size:14px;font-weight:700}.dialogue-line.f .dialogue-who{color:var(--voice-f)}.dialogue-line.m .dialogue-who{color:var(--primary-2)}.dialogue-text{flex-direction:column;gap:2px;display:flex}.dialogue-en{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:17px;line-height:1.6}button.dialogue-en:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.line-say{vertical-align:baseline;cursor:pointer;background:0 0;border:0;border-radius:6px;margin-left:6px;padding:0 4px;font-size:15px}.line-say:hover{background:var(--surface-2)}.exam-list{gap:12px;display:grid}.exam-card{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.exam-card>div{flex:1;min-width:10em}.exam-best{color:var(--primary);font-weight:700}.exam-bars,.exam-units{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.exam-bars li{align-items:center;gap:12px;font-size:14px;display:flex}.exam-bars li>span:first-child{flex:none;width:5.5em}.exam-units li{border-radius:10px;align-items:center;gap:10px;padding:6px 10px;font-size:14px;display:flex}.exam-units li>span:first-child{flex:1}.exam-units li.weak{background:var(--bad-bg)}.exam-units li.weak .mastery-num{color:var(--ink)}.speak-modes{flex-wrap:wrap;max-width:100%;margin:0 0 12px}.speak-en{margin:12px 0 4px;font-size:22px;font-weight:700;line-height:1.5}.speak-en .w-ok{color:var(--ok)}.speak-en .w-miss{color:var(--bad);text-underline-offset:4px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.speak-zh{margin:0 0 12px}.speak-actions{margin-top:8px}.rec-on{animation:1.2s ease-in-out infinite rec-pulse}@keyframes rec-pulse{50%{opacity:.75}}.rec-tip{color:var(--bad);margin:10px 0 0;font-weight:700}.my-rec{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.my-rec audio{max-width:100%;height:36px}.speak-rate{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.dialogue-who-inline.f{color:var(--voice-f)}.dialogue-who-inline.m{color:var(--primary-2)}.chat{flex-direction:column;gap:10px;margin:0 0 14px;padding:0;list-style:none;display:flex}.bubble{background:var(--surface);border:1px solid var(--line);border-radius:16px 16px 16px 4px;flex-direction:column;align-self:flex-start;gap:2px;max-width:85%;padding:10px 14px;font-size:17px;display:flex}.bubble.mine{background:color-mix(in srgb, var(--primary) 10%, var(--surface));border-radius:16px 16px 4px;align-self:flex-end}.bubble.now{border:2px solid var(--primary)}.your-turn{color:var(--primary);font-size:13px;font-weight:700}@media (prefers-reduced-motion:reduce){.rec-on{animation:none}}.speak-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.speak-nav [role=status]{text-align:center;flex:1;min-width:0;font-size:13px}.speak-nav>.btn{white-space:nowrap;flex-shrink:0}.points{gap:6px;margin:0;padding:0;list-style:none;display:grid}.points label{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.points input{width:18px;height:18px;accent-color:var(--primary);flex:none;margin-top:3px}.phrase-chips{flex-wrap:wrap;gap:8px;display:flex}.phrase-chip{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:12px;flex-direction:column;align-items:flex-start;gap:0;padding:6px 12px;display:flex}.phrase-chip:hover{border-color:var(--primary)}.phrase-chip .muted{font-size:12px}.draft-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.draft-count{font-size:14px;font-weight:700}.draft-count.short{color:var(--muted)}.draft-count.fit{color:var(--ok)}.draft-count.long{color:var(--bad)}.draft{box-sizing:border-box;border:2px solid var(--line);background:var(--surface);width:100%;color:var(--ink);font:inherit;resize:vertical;border-radius:12px;padding:12px;font-size:17px;line-height:1.7;display:block}.draft:focus{border-color:var(--primary);outline:none}.checks{background:var(--surface-2);border-radius:12px;margin-top:12px;padding:12px}.checks-sum{margin:0 0 8px;font-weight:700}.checks ul{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.checks li{grid-template-columns:1.2em 7em 1fr;gap:6px;font-size:14px;display:grid}.checks li.ok>span:first-child{color:var(--ok)}.checks li.warn>span:first-child,.checks li.warn b{color:var(--bad)}.model-essay .reading-p{white-space:pre-line}.model-essay mark{background:color-mix(in srgb, var(--sun) 30%, transparent);color:inherit;border-radius:4px;padding:0 2px}@media (width<=480px){.checks li{grid-template-columns:1.2em 1fr}.checks li>span:last-child{grid-column:2}}.mock-table{border-collapse:collapse;width:100%;margin:8px 0 12px;font-size:15px}.mock-table th,.mock-table td{text-align:left;border-bottom:1px solid var(--line);padding:6px 8px}.mock-table td:not(:first-child),.mock-table th:not(:first-child){text-align:center}.mock-bar{z-index:5;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;scroll-margin-top:80px;display:flex;position:sticky;top:64px}.mock-timer{font-variant-numeric:tabular-nums;margin-right:auto;font-weight:800}.mock-bar>*{white-space:nowrap;flex-shrink:0}.mock-bar{container-type:inline-size}@container (width<=210px){.mock-bar>.muted{display:none}}.mock-timer.soon{color:var(--sun)}.mock-timer.over{color:var(--bad)}.mock-confirm{border:2px solid var(--primary)}.mock-tabs{grid-template-columns:repeat(6,1fr);gap:4px;margin-bottom:8px;display:grid}.mock-tabs button{border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font:inherit;cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;padding:6px 2px;font-size:13px;font-weight:700;display:flex}.mock-tabs button span{font-size:11px;font-weight:500}.mock-tabs button[aria-current=step]{background:var(--surface);color:var(--ink);border-color:var(--primary)}.mock-h{margin:12px 0;font-size:20px}.mock-h small{margin-left:6px;font-size:14px;font-weight:500}.mock-q{min-width:0;margin:0 0 10px}.mock-q legend{float:left;width:100%;margin:0 0 8px;padding:0;font-size:16px;font-weight:700;line-height:1.6}.mock-opts{clear:both;gap:6px;display:grid}.mock-opts label{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:flex-start;gap:8px;padding:8px 10px;display:flex}.mock-opts label.on{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, var(--surface))}.mock-opts input{accent-color:var(--primary);margin-top:4px}.mock-nav{justify-content:space-between;margin-top:12px}.mock-score{text-align:center;margin-bottom:12px}.mock-total b{color:var(--primary);font-size:56px;line-height:1}.mock-total span{color:var(--muted);font-size:20px}.mock-review{padding-top:8px;padding-bottom:8px}.mock-review-head{width:100%;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;padding:6px 0;font-weight:700;display:flex}.mock-item{border-left:4px solid var(--ok);background:var(--surface-2);border-radius:10px;margin-top:8px;padding:8px 10px}.mock-item.bad{border-left-color:var(--bad)}.mock-item.ok>p:first-child>span{color:var(--ok)}.mock-item.bad>p:first-child>span{color:var(--bad)}.mock-passage+.mock-passage{margin-top:14px}.mock-passage-h{margin:6px 0;font-size:1.05em}.mock-script{margin-top:10px}.mock-script summary{cursor:pointer;font-weight:700}.mock-mine{white-space:pre-line;background:var(--surface-2);border-radius:10px;padding:10px}.report-entry{border-left-color:var(--primary);margin-bottom:12px}.report-entry:hover{border-color:var(--primary)}.report-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.report-brand{color:var(--primary);margin:0;font-size:14px;font-weight:700}.report-meta{color:var(--muted);flex-direction:column;align-items:flex-end;gap:2px;font-size:14px;display:flex}.report-h{margin:18px 0 8px;font-size:18px}.report-note{margin:6px 0 0;font-size:13px}.report-tiles{grid-template-columns:repeat(auto-fit,minmax(min(100%,120px),1fr));gap:8px;display:grid}.report-tile{text-align:center;flex-direction:column;align-items:center;gap:2px;margin:0;padding:12px 6px;display:flex}.report-tile b{font-size:26px;line-height:1.1}.report-tile small{font-size:12px}.report-skills{gap:10px;margin:0;padding:0;list-style:none;display:grid}.report-skills li{grid-template-columns:3em 1fr 8.5em;align-items:center;gap:10px;display:grid}.report-skill-name{font-weight:700}.report-skill-val{flex-direction:column;line-height:1.25;display:flex}.report-skill-val small{font-size:12px}.report-dl{grid-template-columns:repeat(2,1fr);gap:10px 16px;margin:0;display:grid}.report-dl div{border-bottom:1px dashed var(--line);justify-content:space-between;gap:8px;padding-bottom:6px;display:flex}.report-dl dt{color:var(--muted)}.report-dl dd{margin:0;font-weight:700}.report-mocks{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.report-mocks li{background:var(--surface-2);border-radius:10px;flex-direction:column;align-items:center;padding:6px 12px;font-size:13px;display:flex}.report-weak{gap:6px;margin:0;padding:0;list-style:none;display:grid}.report-weak li{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.report-advice{gap:8px;margin:0;padding-left:1.4em;line-height:1.6;display:grid}@media (width<=480px){.report-dl{grid-template-columns:1fr}.report-skills li{grid-template-columns:2.6em 1fr 7.5em;gap:8px}}@media print{:root,:root[data-theme],:root:not([data-theme=light]){--bg:#fff;--bg-2:#fff;--surface:#fff;--surface-2:#f3f4f6;--ink:#000;--muted:#555;--line:#ccc;--primary:#0a7570;--chart:#0e9f9a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.app-header,.no-print,.float-toast{display:none!important}html,body,.app-root{background:#fff!important}.report .panel{box-shadow:none;break-inside:avoid}.report-h{break-after:avoid}.report .meter,.report .meter>span{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (width<=480px){.hub-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.hub-card{padding:12px}.hub-card .icon{margin-bottom:2px;font-size:24px}.hub-card h2,.hub-card h3{font-size:16px}.hub-card .muted{font-size:13px;line-height:1.4}.report-meta{flex-flow:wrap;align-items:flex-start;gap:2px 12px}}@media (width<=400px){.mock-tabs{grid-template-columns:repeat(3,1fr)}}.story summary{cursor:pointer}.story[open] summary{margin-bottom:4px}.gap-tip{margin:8px 0 4px;font-size:.9em}.gap-p{line-height:2.3}.gap-slot{margin:0 2px}.gap-slot>*+*{margin-left:3px}.gap-no{color:var(--primary);font-size:.75em;font-weight:700}.gap-input{font:inherit;border:none;border-bottom:2px solid var(--line);background:var(--surface-2);min-width:5.5em;max-width:min(11em,100%);color:var(--ink);text-align:center;border-radius:0;padding:0 4px}.gap-input:focus-visible{outline:2px solid var(--primary);outline-offset:1px;border-bottom-color:var(--primary)}.gap-input.ok{border-bottom-color:var(--ok);background:var(--ok-bg);color:var(--ok);font-weight:700}.gap-input.bad{border-bottom-color:var(--bad);background:var(--bad-bg);color:var(--bad);text-decoration:line-through}.gap-hint{color:var(--muted)}.gap-answer{color:var(--ok);font-weight:700}.gap-explains{gap:8px;margin:0;padding:0;list-style:none;display:grid}.gap-meta{font-weight:400}.seven-p{line-height:2.1}.seven-slot{margin:0 2px}.seven-slot>*+*{margin-left:3px}.seven-select{font:inherit;border:2px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:8px;padding:0 4px;font-weight:700}.seven-select:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.seven-select.ok{border-color:var(--ok);background:var(--ok-bg);color:var(--ok)}.seven-select.bad{border-color:var(--bad);background:var(--bad-bg);color:var(--bad)}.seven-options{gap:8px;margin:0;padding:0;list-style:none;display:grid}.seven-options li{flex-wrap:wrap;align-items:baseline;gap:8px;line-height:1.5;display:flex}.seven-options li.used>span:not(.seven-tag){color:var(--muted)}.seven-tag{border:1px solid var(--primary);color:var(--primary);border-radius:999px;flex:none;padding:1px 8px;font-size:.8em}.seven-letter{width:1.6em;color:var(--primary);flex:none}.seven-options li>span:not(.seven-tag){flex:14em}.explain.seven-note{border-left-color:var(--line);background:var(--surface-2)}.cloze-p{line-height:2.1}.cloze-slot{border-bottom:2px solid var(--line);min-width:4.5em;color:var(--ink);text-align:center;margin:0 2px;padding:0 4px;font-weight:700;text-decoration:none;display:inline-block}.cloze-slot:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.cloze-slot .gap-no{margin-right:4px}.cloze-slot.ok{border-bottom-color:var(--ok);background:var(--ok-bg);color:var(--ok)}.cloze-slot.bad{border-bottom-color:var(--bad);background:var(--bad-bg);color:var(--bad)}.cloze-qs{gap:6px;margin:0;padding:0;list-style:none;display:grid}.cloze-qs li{border-radius:10px;padding:4px 8px;scroll-margin-top:80px}.cloze-qs li.ok{background:var(--ok-bg)}.cloze-qs li.bad{background:var(--bad-bg)}.cloze-qs fieldset{border:none;grid-template-columns:repeat(2,minmax(0,1fr));align-items:baseline;gap:4px 14px;margin:0;padding:0 0 0 2.2em;display:grid;position:relative}@media (width>=640px){.cloze-qs fieldset{grid-template-columns:repeat(4,minmax(0,1fr))}}.cloze-qs{container-type:inline-size}@container (width<=300px){.cloze-qs fieldset{grid-template-columns:minmax(0,1fr)}}.cloze-qs .cloze-opt{overflow-wrap:anywhere;min-width:0}.cloze-qs .cloze-key{grid-column:1/-1}.cloze-qs legend{padding:0;font-weight:700;position:absolute;top:0;left:0}.cloze-qs label{cursor:pointer;align-items:baseline;gap:4px;display:inline-flex}.cloze-qs label.is-key{color:var(--ok);font-weight:700}.cloze-qs li.bad .gap-answer,.cloze-qs li.bad label.is-key{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--ok);text-decoration-color:var(--ok);text-decoration-thickness:2px}.hub-group{color:var(--muted);letter-spacing:.05em;margin:22px 0 0;font-size:15px;font-weight:700}.unit-tasks{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px;margin-top:10px;display:grid}.unit-task{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--sun);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:12px;padding:12px 14px;transition:transform .15s,border-color .15s;display:flex}.unit-task:hover{border-color:var(--primary);transform:translateY(-2px)}.unit-task:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.unit-task-icon{flex:none;font-size:26px}.unit-task-body{gap:1px;min-width:0;display:grid}.unit-task-body b{overflow-wrap:anywhere}.unit-task-label{color:var(--primary);font-size:12px;font-weight:700}.unit-task-body .muted{font-size:13px}.unit-task-listening,.unit-task-monologue,.unit-task-speaking{border-left-color:var(--primary-2)}.unit-task-cloze{border-left-color:var(--ok)}.unit-task-seven,.unit-task-gapfill{border-left-color:var(--primary)}@media (prefers-reduced-motion:reduce){.unit-task{transition:none}.unit-task:hover{transform:none}}@media (width>=900px){.hub-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hub-card.featured{grid-column:1/-1}}@media (width<=480px){.vocab{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.vocab .vocab-word{overflow-wrap:anywhere}.vocab .vocab-word .ipa{overflow-wrap:normal;margin:0;display:block}}.plan-card{margin-top:16px}.plan-list{gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.plan-list li{background:var(--surface-2);border-radius:12px;align-items:center;gap:12px;padding:8px 10px;display:flex}.plan-check{border:2px solid var(--line);width:26px;height:26px;color:var(--ok);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.plan-list li.done .plan-check{border-color:var(--ok);background:var(--ok-bg)}.plan-text{flex:1;min-width:0;display:grid}.plan-text .muted{overflow-wrap:anywhere;font-size:13px}.plan-list .btn{flex:none}.gap-initial{color:var(--primary);font-weight:700}.unit-task-done{color:var(--ok);font-size:12px;font-weight:700}.explain.bad .muted{color:var(--ink)}.card-text{flex:200px;min-width:0}.backup-card{border-left:5px solid var(--sun);flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;display:flex}.island-practice{color:var(--muted);font-size:12px}.island-practice.all{color:var(--ok);font-weight:700}.answer-script{background:var(--surface-2);border-radius:10px;margin-top:10px;padding:8px 12px;line-height:1.6}.answer-script p{margin:4px 0}.class-table-wrap{max-width:100%;overflow-x:auto}.class-table-wrap:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.class-table th,.class-table td{white-space:nowrap}.name-field{gap:4px;margin:0 0 12px;display:grid}.name-field input{font:inherit;border:1px solid var(--line);background:var(--surface);max-width:16em;color:var(--ink);border-radius:8px;padding:6px 10px}.theme-field{border:none;margin:12px 0 0;padding:0}.theme-field legend{margin-bottom:6px;padding:0}.theme-field .seg label{cursor:pointer}.theme-field .seg input{opacity:0;pointer-events:none;position:absolute}.theme-field .seg label:focus-within{outline:2px solid var(--primary);outline-offset:2px}.seg label{color:var(--muted);border-radius:10px;padding:8px 16px;font-weight:700}.seg label.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.retell-hints{margin:8px 0 12px;padding-left:22px;line-height:1.6}.retell-points{border:1px solid var(--line);border-radius:12px;margin:12px 0 0;padding:10px 12px}.retell-points legend{padding:0 4px;font-weight:700}.retell-points .check-row{cursor:pointer;align-items:flex-start;gap:8px;padding:6px 0;display:flex}.retell-points .check-row input{flex:none;margin-top:4px}.print-paper{background:var(--surface);color:var(--ink);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:12px;padding:20px 18px;line-height:1.6}.print-head{text-align:center;margin-bottom:12px}.print-head h1,.print-key>h1{margin:0 0 4px;font-size:20px}.print-head p{margin:2px 0}.print-fill{margin-top:8px!important}.print-h{margin:18px 0 6px;font-size:16px}.print-h small{margin-left:4px;font-size:13px;font-weight:400}.print-sub{margin:10px 0 4px;font-weight:700}.print-para{text-indent:2em;margin:0 0 6px}.print-q p{margin:6px 0 2px}.print-opts{flex-wrap:wrap;gap:2px 18px;margin:0 0 4px;padding-left:0;list-style-position:inside;display:flex}.print-opts-col{display:block}.print-opts-col li{margin:2px 0}.print-cloze{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:0 16px;display:grid}.print-cloze .print-q{gap:6px;display:flex}.print-cloze .print-q>span{white-space:nowrap;flex:none}.print-points{margin:0 0 6px}.print-lines{background-image:repeating-linear-gradient(to bottom, transparent 0 31px, var(--line) 31px 32px);height:260px;margin-top:8px}.print-key{border-top:2px dashed var(--line);margin-top:28px;padding-top:16px}.print-answers{margin:0;padding-left:26px}.print-answers li{margin:3px 0}.print-script p{margin:2px 0}@media print{.print-paper{border:0;padding:0;font-size:11pt}.print-key{break-before:page;border-top:0;margin-top:0}.print-q,.print-sub{break-inside:avoid}.print-h,.print-sub{break-after:avoid}}.print-words{border-collapse:collapse;width:100%}.print-words td{border-bottom:1px solid var(--line);vertical-align:top;padding:3px 8px 3px 0}@media print{.print-words tr{break-inside:avoid}}.print-dictation td:first-child{width:2.5em}.print-dictation .print-blank{border-bottom:1px solid var(--ink);width:45%}.print-dictation td{padding-top:10px}.dict-hint{margin:0 0 8px;font-size:18px;font-weight:700}.dict-wrong{margin:0;padding-left:20px;line-height:1.8}.dict-given{color:var(--bad,#c0392b);margin-left:8px;font-size:14px}.ph-group{margin-bottom:12px}.ph-group-title{color:var(--muted);margin:8px 0 6px;font-size:15px}.ph-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,76px),1fr));gap:8px;display:grid}.ph-key{border:2px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.ph-key.on{border-color:var(--primary);background:var(--surface-2)}.ph-sym{font-size:20px;font-weight:700}.ph-count{color:var(--muted);font-size:12px}.ph-detail{margin-top:10px}.ph-detail-head{flex-wrap:wrap;align-items:center;gap:8px;margin:0;display:flex}.ph-big{font-size:30px;font-weight:800}.ph-tip{margin:8px 0;line-height:1.6}.ph-examples{gap:4px;margin:0;padding:0;list-style:none;display:grid}.ph-word{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:4px 2px;line-height:1.5}.ph-ipa{color:var(--muted)}.ph-hit{color:var(--primary);text-underline-offset:3px;font-weight:800;text-decoration:underline}.ph-tag{margin-top:0}.ph-from{margin-left:6px}.ph-question{text-align:center;overflow-wrap:anywhere;margin:14px 0;font-size:30px;font-weight:700}.sent-input{width:100%;max-width:640px;font:inherit;border:2px solid var(--line);background:var(--surface-2);color:var(--ink);resize:vertical;border-radius:12px;padding:10px 14px;font-size:18px;line-height:1.5;display:block}.sent-answer{margin:6px 0 0}.sent-wrong li{margin-bottom:6px}.sent-wrong .dict-given{margin-left:0;display:block}.homework-entry{margin:12px 0}.hw-mark{border:2px solid var(--line);vertical-align:-.15em;border-radius:50%;place-items:center;width:1.2em;height:1.2em;font-size:12px;line-height:1;display:inline-grid}.hw-mark.ok{border-color:var(--ok);background:var(--ok);color:#fff}.homework-add{gap:6px;margin:10px 0;display:grid}.homework-add textarea{width:100%;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);resize:vertical;border-radius:10px;padding:8px;font-family:ui-monospace,Consolas,monospace}.homework-item{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.homework-tasks{flex-wrap:wrap;gap:6px;margin:6px 0;padding:0;list-style:none;display:flex}.homework-task{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:6px 12px}.homework-task.ok,.homework-item.done b{color:var(--muted)}.hw-fieldset{border:1px solid var(--line);border-radius:12px;margin:10px 0;padding:8px 10px}.hw-fieldset legend{padding:0 4px;font-weight:700}.hw-checks{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:4px 12px;display:grid}.hw-kinds{grid-template-columns:repeat(auto-fill,minmax(min(100%,110px),1fr))}.hw-checks label{cursor:pointer;align-items:flex-start;gap:6px;padding:4px 0;display:flex}.hw-checks input{flex:none;margin-top:4px}.hw-row{flex-wrap:wrap;gap:10px;margin:8px 0 12px;display:flex}.hw-row label{flex:160px;gap:2px;display:grid}.hw-row input,.hw-code textarea{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;min-width:0;padding:8px}.hw-code{gap:6px;margin-top:12px;display:grid}.hw-code textarea{word-break:break-all;width:100%;font-family:ui-monospace,Consolas,monospace}.issued{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}.issued summary{cursor:pointer;font-weight:700}.issued-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.issued-list li{border:1px solid var(--line);border-radius:10px;padding:8px 10px}.issued-list .row{margin-top:4px}#hw-words{box-sizing:border-box;width:100%;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);resize:vertical;border-radius:10px;margin-top:6px;padding:8px;display:block}.class-table td.hw-todo{color:var(--bad);font-weight:700}.class-table .sort-btn{all:unset;cursor:pointer;white-space:nowrap;font-weight:inherit;border-radius:4px}.class-table .sort-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.class-table .sort-idle{opacity:.45}@media print{.class-table .sort-btn span{display:none}}.hw-summary ul{margin:0;padding-left:20px;line-height:1.7}.hw-overdue{color:var(--bad);font-weight:700}.seg{flex-wrap:wrap;max-width:100%}.seg button{white-space:nowrap}@media (width<=480px){.seg button{padding:8px 12px}.seg[role=tablist]{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;width:100%;display:grid}.seg[role=tablist] button{padding:8px 4px}.seg.word-tabs{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row}}:root[data-font] .seg[role=tablist]{width:auto;display:inline-flex}:root[data-font] .seg[role=tablist] button{padding:8px 12px}.lookup-bar{margin-bottom:12px}.lookup-input{width:100%;font:inherit;border:2px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:10px 14px;font-size:16px}.lookup-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.lookup-item{border:1px solid var(--line);background:var(--surface);overflow-wrap:anywhere;border-radius:14px;gap:6px;padding:12px 14px;display:grid}.lookup-head{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.lookup-head b{font-size:20px}.lookup-head .icon-btn{margin-left:auto}.lookup-ex{font-size:14px;line-height:1.6}.lookup-go{text-align:left;justify-self:start}.lookup-actions{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.lookup-collected{color:var(--ok);font-size:14px;font-weight:700}.print-orders{margin:0;padding-left:26px}.print-orders li{break-inside:avoid;margin:0 0 14px}.print-orders p{margin:0 0 4px}.print-line{border-bottom:1px solid var(--ink);height:28px}.mistake-end{align-items:center;gap:8px;margin-left:auto;display:inline-flex}.mistake-end .mistake-n{margin-left:0}.mistake-remove{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:8px;padding:2px 8px;font-size:13px}.mistake-remove:hover{color:var(--bad);border-color:var(--bad)}.mistake-undo{background:var(--surface-2);border-radius:12px;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:12px 0 0;padding:8px 12px;display:flex}.save-version{margin:12px 0 0;font-size:.85em}.storage-warn{border-color:var(--bad,#c0392b)}.device-check-open{margin-top:8px}.device-check{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.device-check h3{margin:0 0 8px;font-size:1em}.device-checks{gap:6px;margin:0 0 12px;padding:0;line-height:1.5;list-style:none;display:grid}.device-playback{gap:6px;display:grid}.device-playback audio{width:100%;max-width:360px}.device-report{box-sizing:border-box;width:100%;font:inherit;font-size:.85em}.report-issue{margin:8px 0 0;font-size:.85em}.report-issue-btn{color:color-mix(in srgb, var(--muted) 75%, var(--ink));cursor:pointer;font:inherit;background:0 0;border:none;min-height:32px;padding:4px 0;font-size:.85em;text-decoration:underline}.report-issue-form{gap:6px;display:grid}.report-issue-form textarea{box-sizing:border-box;width:100%;font:inherit}.report-list{gap:6px;margin:8px 0;padding-left:1.2em;font-size:.9em;display:grid}.my-reports{margin-top:12px}.weak-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,15em),1fr));gap:4px 16px;margin:8px 0;padding-left:1.6em;font-size:.9em;display:grid}.my-reports summary{cursor:pointer}.score-paste{gap:6px;margin-top:14px;display:grid}.score-paste .hub-group{margin:0}.score-paste textarea,.score-code{box-sizing:border-box;width:100%;font:inherit;word-break:break-all;font-size:.85em}.score-code{margin-top:8px}.link-btn{font:inherit;color:var(--primary);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.help h2{margin:0 0 8px;scroll-margin-top:72px}.help-list{margin:0;padding-left:22px;line-height:1.75}.help-list li+li{margin-top:6px}@media print{.help .panel-head button{display:none}.help .panel{break-inside:auto;box-shadow:none;border:0;padding:0}.help-list li{break-inside:avoid}}.gb-bar{gap:8px;display:grid}.gb-only{cursor:pointer;align-items:center;gap:6px;font-size:15px;display:inline-flex}.gb-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.gb-item{overflow-wrap:anywhere;gap:8px;margin:0;display:grid}.gb-unit{margin:0;font-size:14px}.gb-title{flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;font-size:1.15em;display:flex}.gb-pending{font-size:13px}.gb-note{margin:0;line-height:1.7}.gb-ex{background:var(--surface-2,var(--surface));border:1px solid var(--line);border-radius:12px;padding:8px 12px}.gb-ex .sentence{margin:0 0 4px;font-size:1.05em}.gb-more summary{cursor:pointer;font-weight:700}.gb-more .gb-ex{margin-top:8px}.gb-go{justify-self:start}
