@font-face{font-family:Nunito;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/nunito-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/nunito-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-ui:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei";--font-hanzi:"Kaiti SC", "KaiTi", "STKaiti", "PingFang SC", serif;--sky-100:#d5ecfd;--sky-50:#eff8fe;--sky-200:#a9d9f8;--sky-400:#4aa8e0;--sky-500:#268dcc;--sky-600:#1173b8;--sky-700:#0d5b91;--sky-800:#0b4570;--pine-100:#cfeddb;--pine-400:#3fae6a;--pine-600:#268049;--pine-800:#14522d;--sun-50:#fff6e2;--sun-100:#ffe9bd;--sun-200:#ffd98a;--sun-400:#f6a821;--sun-700:#8f5806;--sun-800:#6d4205;--berry-50:#fff4f3;--berry-400:#e2504c;--berry-600:#c0392b;--ink-900:#232a34;--ink-700:#333a45;--ink-500:#5b6675;--ink-300:#8792a1;--on-warm:#3a2410;--paper:#fff;--cream:#fff8ec;--soft:#eaf4fb;--surface:var(--paper);--surface-sunk:#f3f8fc;--surface-hud:#ffffffd1;--on-surface:var(--ink-700);--on-surface-muted:var(--ink-500);--on-accent:#fff;--border:#d9e7f2;--border-strong:#b9d3e6;--skirt:var(--sky-200);--e-1:0 2px 0 var(--skirt), 0 1px 2px #232a340f;--e-2:0 4px 0 var(--skirt), 0 3px 8px #232a3414;--e-3:0 6px 0 var(--skirt), 0 8px 18px #232a341a;--e-4:0 9px 0 var(--skirt), 0 16px 34px #232a3424;--e-modal:0 20px 60px #0b457061;--e-sunk:inset 0 3px 0 #1173b817, inset 0 -1px 0 #ffffffb3;--r-1:10px;--r-2:14px;--r-3:20px;--r-4:28px;--r-5:36px;--r-pill:999px;--z-backdrop:0;--z-content:1;--z-companion:20;--z-hud:30;--z-overlay:100;--z-fly:200;--screen-max:46rem;--band-h:clamp(120px, 22vh, 240px);--band-opacity:.55;--sky-top:var(--sky-100);--sky-bottom:var(--cream);--sky:var(--sky-400);--sky-dark:var(--sky-600);--red:var(--berry-400);--ink:var(--ink-700);--green:var(--pine-600);--green-dark:var(--pine-800);--amber:var(--sun-400);--shadow:var(--e-2);--radius:var(--r-3);font-family:var(--font-ui)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--cream);color:var(--on-surface);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}.hanzi,.wl-hanzi,.mistake-hanzi,.where-char,.feedback-pinyin{font-family:var(--font-hanzi)}button{font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:none}button:not(:disabled),a.btn,a.adm-btn,[role=button]{transition-property:translate,scale,filter,outline-color,background-color,border-color,color;transition-duration:.14s;transition-timing-function:cubic-bezier(.2,.9,.3,1.3)}@media (hover:hover) and (pointer:fine){button:not(:disabled):hover,a.btn:hover,a.adm-btn:hover,[role=button]:hover{filter:brightness(1.035)drop-shadow(0 5px 7px #1173b833);translate:0 -2px}}button:not(:disabled):active,button.pressed:not(:disabled),a.btn:active,a.adm-btn:active,[role=button]:active{filter:brightness(.98)drop-shadow(0 1px 2px #1173b826);translate:0 2px;scale:.97}.icon{vertical-align:-.18em;-webkit-user-select:none;user-select:none;flex:none;width:1.15em;height:1.15em}.btn{justify-content:center;align-items:center;gap:.45em;display:inline-flex}.btn:disabled .icon{filter:grayscale(.7)}button:focus-visible{outline:4px solid var(--amber);outline-offset:2px;filter:drop-shadow(0 0 7px #f6a8217a)}.screen:before{content:"";z-index:var(--z-backdrop);pointer-events:none;background:linear-gradient(180deg, var(--sky-top) 0%, var(--sky-bottom) 62%);position:fixed;inset:0}.screen:after{content:"";z-index:var(--z-backdrop);pointer-events:none;opacity:var(--band-opacity);transform-origin:bottom;background:url(/img/xiaolan-landscape.jpg) bottom/cover no-repeat;animation:18s ease-in-out infinite alternate scenery-drift;position:fixed;inset:-2vh -2vw;-webkit-mask-image:linear-gradient(#00000061,#000 44%);mask-image:linear-gradient(#00000061,#000 44%)}@keyframes scenery-drift{0%{transform:scale(1.015)translate(-.3%)}to{transform:scale(1.035)translate(.3%,-.35%)}}.screen>*{z-index:var(--z-content);position:relative}.screen-start{--band-opacity:.56}.screen-game{--band-opacity:.2}.screen-end{--band-opacity:.45;--sky-top:#ffd9a8;--sky-bottom:#fff1dc}@media (height<=560px){:root{--band-h:90px;--band-opacity:.3}}@media print{.screen:before,.screen:after{display:none}}.screen{min-height:100%;max-width:var(--screen-max);flex-direction:column;align-items:center;margin:0 auto;padding:16px;display:flex}@media (width>=900px){:root{--screen-max:66rem}}@media (width>=1280px){:root{--screen-max:74rem;font-size:17px}}@media (width>=1600px){:root{font-size:18px}}.screen-start,.screen-end{text-align:center;justify-content:center;gap:18px}@media (height<=820px){.screen-start{padding-block:max(8px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-bottom));justify-content:flex-start;gap:10px}.screen-start .mascot-big{width:110px}.screen-start .title{gap:2px;font-size:2rem}.screen-start .intro{font-size:.95rem;line-height:1.25}.screen-start .level-menu{gap:8px}.screen-start .btn-level{min-height:54px;padding:9px 10px}.screen-start .btn-year{min-height:64px;padding:7px 5px}}.screen-game{padding-top:8px;padding-bottom:max(6px, env(safe-area-inset-bottom));gap:8px}.game-layer{display:contents}.game-layer>*{z-index:var(--z-content);position:relative}.game-main{--rail:min(100%, 35rem);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:clamp(8px,1.8vh,20px);width:100%;display:flex}.practice-stage{grid-template-columns:minmax(96px,120px) minmax(0,35rem) minmax(96px,120px);grid-template-areas:"scene card identity";justify-content:center;align-items:center;gap:12px;width:min(100%,66rem);display:grid}.practice-stage .question-card{grid-area:card;width:100%}.practice-scene-lane{pointer-events:none;flex-direction:column;grid-area:scene;justify-content:center;align-items:center;gap:2px;width:100%;min-width:96px;min-height:164px;display:flex}.practice-scene-lane .companion{width:clamp(96px,12vw,120px)}.player-identity{border:2px solid var(--sky-100);border-radius:var(--r-3);width:100%;min-height:116px;box-shadow:var(--e-2);text-align:center;overflow-wrap:anywhere;background:#ffffffe6;flex-direction:column;grid-area:identity;justify-content:center;align-items:center;gap:5px;padding:12px 8px;display:flex}.player-identity strong{color:var(--sky-700);line-height:1.12}.player-identity .tri{color:var(--ink-500);font-size:.72rem}.alias-mascot{--alias-size:58px;--alias-accent:var(--sky-500);flex:0 0 var(--alias-size);width:var(--alias-size);height:var(--alias-size);isolation:isolate;place-items:center;display:inline-grid;position:relative}.alias-mascot-small{--alias-size:36px}.alias-mascot-medium{--alias-size:58px}.alias-mascot-large{--alias-size:76px}.alias-mascot-halo{z-index:-1;background:color-mix(in srgb, var(--alias-accent) 24%, white);box-shadow:0 0 0 4px color-mix(in srgb, var(--alias-accent) 12%, transparent);border-radius:50%;position:absolute;inset:12%}.alias-mascot .animated-mascot{width:100%;height:100%;transition:transform .16s var(--ease-pop), filter .16s ease}.alias-mascot img,.alias-mascot video{object-fit:contain;filter:drop-shadow(0 4px 3px #2a374624);width:100%;height:100%}.alias-name{min-width:0;color:inherit;align-items:center;gap:8px;font-weight:800;display:inline-flex}.alias-name.compact{gap:5px}.alias-name>span:last-child{overflow-wrap:anywhere}.context-prop{object-fit:contain;filter:drop-shadow(0 5px 5px #2a374629);width:62px;height:62px}.practice-scene-symbol{color:var(--amber);font-size:1.7rem;animation:2.4s ease-in-out infinite scene-symbol-breathe}@keyframes scene-symbol-breathe{0%,to{opacity:.5;transform:scale(.86)rotate(-8deg)}50%{opacity:1;transform:scale(1.08)rotate(8deg)}}.mascot-big{width:clamp(120px,30vw,170px);height:auto}.animated-mascot{aspect-ratio:1;flex:none;display:grid}.animated-mascot>*{object-fit:contain;pointer-events:none;width:100%;height:100%;transform:scale(var(--mascot-content-scale,1));grid-area:1/1}.animated-mascot-video{opacity:0;transition:opacity .16s ease-out}.animated-mascot-poster{opacity:1;transition:opacity .16s ease-out}.animated-mascot-poster.is-hidden{opacity:0}.animated-mascot-video.is-ready{opacity:1}.animated-mascot-video.is-dual-loop.is-ready{opacity:0;transition-timing-function:linear}.animated-mascot-video.is-dual-loop.is-ready.is-loop-active{opacity:1}.start-guide{filter:drop-shadow(0 10px 12px #0b457029)}.start-guide-button{color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;line-height:0;transition:transform .14s,filter .14s;display:grid;position:relative}@media (hover:hover) and (pointer:fine){.start-guide-button:hover{filter:brightness(1.03);transform:translateY(-2px)scale(1.025)}}.start-guide-button:active{transform:translateY(1px)scale(.96)}.start-guide-button:focus-visible{outline:4px solid var(--sun-400);outline-offset:5px}.mascot-tap-burst{z-index:2;pointer-events:none;position:absolute;inset:15%}.mascot-tap-burst i{--tap-x:0px;--tap-y:-54px;background:var(--sun-400);opacity:0;border-radius:50%;width:9px;height:9px;animation:.56s ease-out forwards mascot-tap-pop;position:absolute;top:50%;left:50%}.mascot-tap-burst i:nth-child(2){--tap-x:48px;--tap-y:-28px;background:var(--sky-400)}.mascot-tap-burst i:nth-child(3){--tap-x:48px;--tap-y:28px;background:var(--berry-400)}.mascot-tap-burst i:nth-child(4){--tap-x:0px;--tap-y:54px;background:var(--pine-400)}.mascot-tap-burst i:nth-child(5){--tap-x:-48px;--tap-y:28px;background:#9b6bd6}.mascot-tap-burst i:nth-child(6){--tap-x:-48px;--tap-y:-28px;background:var(--sky-500)}@keyframes mascot-tap-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.25)}25%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--tap-x)), calc(-50% + var(--tap-y))) scale(1)}}.screen>.ambient-sparkles{z-index:var(--z-backdrop);pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient-sparkles i{background:radial-gradient(circle,#fff 0 18%,#ffd56a 24% 50%,#f6a82100 72%);border-radius:50%;width:8px;height:8px;animation:4.8s ease-in-out infinite firefly;position:absolute;top:24%;left:12%;box-shadow:0 0 14px #f6a821b8}.ambient-sparkles i:nth-child(2){animation-delay:-1.1s;top:18%;left:82%;transform:scale(.7)}.ambient-sparkles i:nth-child(3){animation-delay:-2.7s;top:58%;left:72%;transform:scale(1.25)}.ambient-sparkles i:nth-child(4){animation-delay:-3.5s;top:67%;left:21%;transform:scale(.8)}.ambient-sparkles i:nth-child(5){animation-delay:-.6s;top:76%;left:91%;transform:scale(.6)}.ambient-sparkles i:nth-child(6){animation-delay:-4.1s;top:47%;left:8%;transform:scale(1.1)}.ambient-sparkles i:nth-child(7){animation-delay:-2s;top:31%;left:63%;transform:scale(.55)}@keyframes firefly{0%,to{opacity:.18;translate:0 6px}45%{opacity:.95}60%{opacity:.7;translate:8px -10px}}.simple-start-button{isolation:isolate;position:relative;overflow:hidden}.simple-start-button:after{content:"";pointer-events:none;background:linear-gradient(100deg,#0000,#ffffff85,#0000);width:28%;animation:3.8s ease-in-out infinite button-glint;position:absolute;inset:-40% auto -40% -45%;transform:skew(-18deg)}@keyframes button-glint{0%,58%{opacity:0;left:-45%}65%{opacity:1}82%,to{opacity:0;left:118%}}.title{color:var(--sky-dark);flex-direction:column;gap:4px;font-size:clamp(2rem,6vw,3rem);display:flex}.title-pinyin{color:var(--sky-600);letter-spacing:.04em;font-size:.38em;font-weight:800}.subtitle{color:var(--berry-600);letter-spacing:.06em;font-size:.45em}.title-sm{color:var(--sky-dark);font-size:clamp(1.4rem,5vw,2rem)}.intro{flex-direction:column;gap:2px;font-size:1.1rem;line-height:1.5;display:flex}.intro-pinyin{color:var(--sky-600);font-size:.85rem;font-weight:800}.intro-en{color:var(--ink-500);font-size:.95rem;font-weight:700}.best{color:var(--amber);align-items:center;gap:8px;font-weight:800;display:inline-flex}.best .tri{line-height:1.05}.best .tri-py,.best .tri-en{font-size:.62em}.best-num{font-size:1.35em}.stats{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.stat{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:4px;min-width:130px;padding:14px 22px;display:flex}.stat-num{color:var(--sky-dark);font-size:1.6rem;font-weight:900}.stat-label{color:#6b7583;font-size:.85rem}.mistakes{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:12px;width:min(100%,440px);padding:18px;display:flex}.mistakes h3{color:var(--red);font-size:1.05rem}.mistakes ul{flex-direction:column;gap:8px;list-style:none;display:flex}.mistakes li{border-bottom:2px dashed var(--soft);grid-template-columns:auto 1fr auto;grid-template-areas:"x hanzi count""x pinyin count""x meaning count";align-items:center;column-gap:12px;padding-bottom:6px;font-size:1.2rem;line-height:1.15;display:grid}.map-x{grid-area:x}.mistake-hanzi{grid-area:hanzi}.mistake-pinyin{grid-area:pinyin}.mistake-meaning{color:var(--ink-500);grid-area:meaning;font-size:.78rem;font-weight:700}.mistake-count{grid-area:count}.mistake-hanzi{font-size:1.5rem;font-weight:700}.mistake-pinyin{color:var(--sky-dark);font-weight:700}.mistake-count{color:var(--red);margin-left:auto;font-size:.9rem;font-weight:800}.scorebar{width:100%;z-index:var(--z-hud);background:var(--surface-hud);border-radius:var(--r-pill);--skirt:var(--sky-100);box-shadow:var(--e-3);justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;display:flex;position:sticky;top:0}@media (width<=480px){.scorebar{border-radius:0 0 var(--r-3) var(--r-3);width:calc(100% + 32px);margin:-16px -16px 0;padding:8px 12px}}.scorebar-left{gap:8px;display:flex}.scorebar-right{align-items:center;gap:6px;display:flex}.music-mute-button{border:2px solid var(--sky-100);width:46px;height:46px;color:var(--sky-700);box-shadow:var(--e-2);cursor:pointer;touch-action:manipulation;transition:transform .14s var(--ease-pop), box-shadow .14s ease, background .14s ease;background:#fffffff5;border-radius:50%;flex:0 0 46px;place-items:center;display:inline-grid;position:relative}.music-mute-button .music-note{background:var(--sun-100);min-width:15px;height:15px;color:var(--amber);border-radius:50%;place-items:center;font-size:.68rem;font-weight:900;line-height:1;display:grid;position:absolute;bottom:3px;right:5px}.music-mute-button[aria-pressed=false]{color:var(--ink-500);background:#ffffffe6}@media (hover:hover) and (pointer:fine){.music-mute-button:hover{box-shadow:var(--e-3), 0 0 18px color-mix(in srgb, var(--sky-400) 32%, transparent);transform:translateY(-2px)scale(1.04)}}.music-mute-button:active{transform:translateY(1px)scale(.96)}.music-mute-button:focus-visible{outline:4px solid color-mix(in srgb, var(--sky-500) 42%, transparent);outline-offset:3px}.music-mute-floating{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));z-index:var(--z-hud);position:fixed}.pause-audio-actions{justify-content:center;align-items:center;gap:12px;margin-top:8px;display:flex}.btn-step{background:var(--paper);border:2px solid var(--soft);box-shadow:var(--shadow);font:inherit;color:var(--sky-dark);cursor:pointer;white-space:nowrap;border-radius:999px;padding:6px 14px;font-size:.95rem;font-weight:800}.btn-step:disabled{opacity:.35;box-shadow:none;cursor:default}.quit-note{color:#6b7583;margin-top:8px;font-size:.78rem;font-weight:700}.chip{background:var(--paper);box-shadow:var(--shadow);border-radius:999px;padding:8px 14px;font-size:1.05rem;font-weight:900}.chip-streak.hot{color:#c9711a;background:#fff1dc;animation:.9s ease-in-out infinite alternate pulse}.chip-review{background:var(--sun-400);color:var(--on-warm);font-size:.85rem}.scorebar-progress{align-items:center;gap:8px;display:flex}@media (width<=640px){.scorebar{flex-wrap:wrap;row-gap:5px}.scorebar-progress{order:3;justify-content:center;width:100%}.chip{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.progress-text{display:none}.chip-review .tri{line-height:1.05}.chip-review .tri-py,.chip-review .tri-en{font-size:.6em}.dots{gap:3px}.dot{width:9px;height:9px}.btn-step{padding:5px 10px;font-size:.85rem}}.dots{gap:5px;display:flex}.dot{background:var(--sky-200);border-radius:50%;width:12px;height:12px;transition:transform .2s cubic-bezier(.34,1.56,.64,1),background-color .2s}.dot.done{background:var(--green)}.dot.now{background:var(--amber);transform:scale(1.25)}.progress-text{color:var(--sky-dark);font-weight:800}.btn-icon{background:var(--paper);width:48px;height:48px;box-shadow:var(--shadow);border-radius:50%;font-size:1.2rem}.question-card{width:var(--rail,min(100%, 30rem));background:var(--surface);border-radius:var(--r-5);--skirt:var(--sky-200);min-height:clamp(9rem,22vh,11.5rem);box-shadow:var(--e-4), inset 0 0 0 4px var(--cream);text-align:center;place-items:center;margin-top:14px;padding:26px 40px 22px;display:grid;position:relative}.lesson-tag{background:var(--sky-600);color:#fff;white-space:nowrap;border-radius:999px;flex-direction:column;align-items:center;padding:4px 12px;font-size:.78rem;font-weight:800;line-height:1.15;display:flex;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.hanzi{color:var(--ink);white-space:nowrap;font-size:clamp(4rem,16vw,6.5rem);font-weight:700;line-height:1.15}.hanzi[data-len="3"]{font-size:clamp(3rem,12vw,5rem)}.hanzi[data-len="4"]{font-size:clamp(2.4rem,9.5vw,4.1rem)}.lesson-tag .tri{line-height:1.12}.lesson-tag .tri-py,.lesson-tag .tri-en{color:#fff;opacity:.92;margin-top:1px;font-size:.82em}.answer-area{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;max-width:100%;min-height:56px;display:flex}.word-box{border-radius:var(--r-3);border:2px solid var(--border-strong);background:var(--surface-sunk);min-width:clamp(74px,18vw,108px);height:64px;box-shadow:var(--e-sunk);color:var(--sky-600);justify-content:center;align-items:center;font-size:1.7rem;font-weight:900;transition:border-color .18s,background-color .18s,box-shadow .18s;display:flex}.word-box.filled{border-style:solid;border-color:var(--green);background:var(--paper);color:var(--green-dark);animation:.28s cubic-bezier(.34,1.56,.64,1) collapse-in;position:relative}.word-box.filled:after{content:"✦";color:var(--amber);pointer-events:none;font-size:1rem;animation:.6s ease-out forwards sparkle;position:absolute;top:-10px;right:-6px}@keyframes collapse-in{0%{opacity:.4;transform:scale(1.5,.72);box-shadow:0 0 #f6a82180}55%{opacity:1;transform:scale(.92,1.08)}78%{transform:scale(1.05,.96);box-shadow:0 0 0 10px #f6a82100}to{transform:scale(1);box-shadow:0 0 0 12px #f6a82100}}.answer-area.celebrate .word-box{animation:.5s cubic-bezier(.34,1.56,.64,1) both box-hop;animation-delay:calc(var(--i,0) * .11s)}@keyframes box-hop{0%{transform:translateY(0)}40%{transform:translateY(-12px)rotate(-2deg)}70%{transform:translateY(2px)rotate(1deg)}to{transform:translateY(0)}}.syllable-group{border-radius:var(--radius);border:2px solid var(--amber);background:#f6a82117;gap:6px;padding:4px 7px;animation:.2s ease-out open-up;display:flex}@keyframes open-up{0%{opacity:.5;transform:scaleX(.7)}to{opacity:1;transform:scaleX(1)}}.letter-box{border-radius:var(--r-2);border:2px solid var(--border-strong);background:var(--surface-sunk);width:clamp(34px,8.5vw,48px);height:clamp(44px,11vw,60px);box-shadow:var(--e-sunk);color:var(--sky-dark);text-transform:lowercase;justify-content:center;align-items:center;font-size:clamp(1.2rem,4vw,1.7rem);font-weight:900;transition:border-color .18s,background-color .18s,box-shadow .18s;display:flex;position:relative}.letter-box.filled{border-color:var(--sky-200);background:var(--surface);--skirt:var(--sky-100);box-shadow:var(--e-1);animation:.18s ease-out pop}.letter-box.next{border-color:var(--sun-400);background:var(--surface);box-shadow:var(--e-sunk), 0 0 0 4px var(--sun-100)}.word-box.is-wrong{border-color:var(--red);color:var(--red);background:#fff4f3;animation:none}.word-box.is-wrong:after{content:"✗";color:var(--red);font-size:1.1rem;font-weight:900;animation:none;top:-12px;right:-4px}.btn-hint{background:var(--sun-50);color:var(--sun-700);--skirt:var(--sun-100);box-shadow:var(--e-2)}.feedback-where{color:var(--ink);margin-top:2px;font-size:.92rem;font-weight:800}.where-char{border:2px solid var(--red);color:var(--red);background:#fff4f3;border-radius:8px;margin-right:6px;padding:0 8px;font-size:1.15rem;display:inline-block}.btn-syllable:disabled{opacity:.35;cursor:default}.controls{width:var(--rail,min(100%, 34rem));padding-bottom:env(safe-area-inset-bottom,0px);grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.controls .btn-primary{grid-column:auto;min-height:4rem;font-size:1.3rem}.btn{border-radius:999px;min-height:72px;padding:18px 30px;font-size:1.28rem;font-weight:900}.btn-big{padding:20px 48px;font-size:1.55rem}.btn-primary{background:var(--green);color:#fff;box-shadow:0 4px 0 var(--green-dark)}.btn-primary:not(:disabled):active{box-shadow:0 1px 0 var(--green-dark);transform:translateY(3px)}.btn-secondary{background:var(--sun-400);color:var(--on-warm);box-shadow:0 4px 0 var(--sun-800), 0 3px 8px #232a341a}.btn-soft{background:var(--surface);color:var(--sky-600);box-shadow:var(--e-2)}.btn-secondary:not(:disabled):active,.btn-soft:not(:disabled):active{box-shadow:0 1px 0 var(--skirt);transform:translateY(3px)}.btn-secondary{--skirt:var(--sun-800)}.btn-soft{--skirt:var(--sky-200)}@media (hover:hover){.btn:not(:disabled):hover{filter:brightness(1.04)}}.btn:disabled{opacity:.45;cursor:default}.feedback{z-index:var(--z-overlay);background:#333a4573;flex-direction:column;justify-content:center;align-items:center;gap:0;padding:20px;display:flex;position:fixed;inset:0}.feedback-body{background:var(--paper);text-align:center;border-radius:24px;flex-direction:column;gap:14px;max-width:min(92vw,420px);padding:26px 34px;animation:.25s ease-out rise;display:flex;box-shadow:0 10px 40px #00000040}.feedback .mascot{z-index:1;width:108px;height:auto}.feedback-with-mascot{width:min(92vw,500px);max-width:min(92vw,500px)}.feedback-top{grid-template-columns:minmax(0,1fr) 120px;align-items:center;gap:12px;display:grid}.feedback-heading{min-width:0}.feedback-mascot-column{align-content:center;place-items:center;width:120px;min-height:112px;display:grid;position:relative}.feedback-mascot-column>*{grid-area:1/1}.feedback-mascot-column .context-prop{z-index:2;place-self:end;width:48px;height:48px}.feedback-with-mascot.streak-proud .feedback-mascot-column{filter:drop-shadow(0 0 10px #f6a82173)}.feedback-with-mascot.streak-big .feedback-mascot-column{filter:drop-shadow(0 0 16px #f6a821b3);transform:scale(1.08)}.feedback-msg{font-size:1.6rem;font-weight:900}.feedback.correct .feedback-msg{color:var(--green)}.feedback.wrong .feedback-msg{color:var(--amber)}.feedback-pinyin{color:var(--sky-dark);font-size:1.4rem;font-weight:800}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti-bit{border-radius:3px;width:12px;height:12px;animation:1.6s linear infinite fall;position:absolute;top:-14px}.confetti-bit.c0{background:var(--red);animation-delay:0s;left:8%}.confetti-bit.c1{background:var(--amber);animation-delay:.25s;left:22%}.confetti-bit.c2{background:var(--green);animation-delay:.1s;left:36%}.confetti-bit.c3{background:var(--sky);animation-delay:.4s;left:50%}.confetti-bit.c4{background:#b467e0;animation-delay:.2s;left:64%}.confetti-bit.c5{background:var(--red);animation-delay:.55s;left:78%}.confetti-bit.c6{background:var(--amber);animation-delay:.35s;left:90%}@keyframes pop{0%{transform:scale(.6)}to{transform:scale(1)}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%{transform:translateY(0)}40%{transform:translateY(-18px)}70%{transform:translateY(0)}85%{transform:translateY(-7px)}to{transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.08)}}@keyframes fall{0%{opacity:1;transform:translateY(-20px)rotate(0)}to{opacity:.7;transform:translateY(105vh)rotate(540deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.animated-mascot-video{display:none}button:not(:disabled),button:not(:disabled):hover,button:not(:disabled):active,button.pressed:not(:disabled),a.btn,a.adm-btn,[role=button]{translate:none!important;scale:1!important}.start-guide-button:hover,.start-guide-button:active,.btn-key:not(:disabled):active,.btn-key.pressed:not(:disabled){transform:none!important}}.level-menu{flex-direction:column;gap:10px;width:min(100%,660px);display:flex}.simple-start{flex-direction:column;align-items:stretch;gap:12px;width:min(100%,660px);display:flex}.simple-level-menu{border:2px solid var(--border);border-radius:var(--r-3);width:100%;box-shadow:var(--e-2);background:#ffffffeb;padding:12px}.simple-start-button{width:100%}.more-toggle{padding:6px 18px;font-size:.9rem}.start-more{border:1px solid var(--border);border-radius:var(--r-4);width:min(100%,540px);box-shadow:var(--e-2);-webkit-backdrop-filter:blur(7px);background:#ffffffd1;flex-direction:column;align-items:center;gap:14px;padding:14px;display:flex}.more-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;display:grid}.more-actions .btn{min-height:62px;padding:8px 10px;font-size:.94rem}.start-more .wordlist{width:100%}.start-more .gate-footer{border-top:1px solid var(--border);width:100%;padding-top:4px}.screen-more{padding-block:max(12px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-bottom));justify-content:flex-start;gap:0}.more-screen{border:2px solid var(--border);border-radius:var(--r-4);width:min(100%,720px);min-height:min(760px,100dvh - 32px);box-shadow:var(--e-4);-webkit-backdrop-filter:blur(8px);background:#ffffffeb;flex-direction:column;align-items:center;gap:14px;padding:clamp(14px,3vw,24px);display:flex}.more-screen-header{grid-template-columns:minmax(100px,auto) 1fr minmax(100px,auto);align-items:center;gap:10px;width:100%;display:grid}.more-screen-header:after{content:""}.more-close{min-height:58px;padding:7px 14px}.more-title{color:var(--sky-600);font-size:1.45rem}.more-guide-button{width:116px;height:116px}.more-subview{flex-direction:column;align-items:center;gap:16px;width:100%;display:flex}.more-screen .more-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.more-screen .more-actions .btn{min-height:86px;padding:12px 14px;font-size:1.08rem}.more-audio-icon{color:var(--sky-600);font-size:1.5rem;line-height:1}.more-stats{justify-content:center;width:100%;padding-block:4px}.more-screen .gate-footer{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:12px;width:100%;padding-top:16px;display:flex}.wordlist-subview{flex:1;min-height:0}.more-back{align-self:flex-start;min-height:58px;padding:8px 16px}.wordlist-subview .wordlist{width:100%;max-height:min(58dvh,620px);box-shadow:var(--e-sunk);flex:1}@media (width<=480px){.more-screen{min-height:calc(100dvh - 24px);padding:12px}.more-screen-header{grid-template-columns:auto 1fr}.more-screen-header:after{display:none}.more-title{font-size:1.15rem}.more-screen .more-actions{grid-template-columns:1fr}.more-screen .more-actions .btn{min-height:76px}.more-guide-button{width:92px;height:92px}.more-guide{width:92px!important;height:92px!important}}.btn-level-all{width:100%}.year-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}@media (width>=620px){.year-row{grid-template-columns:repeat(6,minmax(0,1fr))}}.btn-year{background:var(--paper);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow);border:3px solid #0000;flex-direction:column;align-items:center;gap:2px;min-height:58px;padding:14px 8px;display:flex;position:relative}.btn-year .year-label{color:var(--ink);font-size:1.05rem;font-weight:900}.btn-year .year-sub{color:#6b7583;font-size:.72rem;font-weight:700}.btn-year.selected{border-color:var(--sky);background:var(--soft);box-shadow:var(--shadow), 0 0 0 4px color-mix(in srgb, var(--sky) 24%, transparent), 0 0 22px color-mix(in srgb, var(--sky) 30%, transparent)}.btn-year.partial{border-color:color-mix(in srgb, var(--sky) 68%, white);background:color-mix(in srgb, var(--soft) 64%, white);box-shadow:var(--shadow), 0 0 0 3px color-mix(in srgb, var(--sky) 14%, transparent)}.semester-row{grid-template-columns:repeat(2,1fr);gap:10px;animation:.18s ease-out pop;display:grid}.btn-semester{background:var(--sun-50);border:2px solid var(--border-strong);border-radius:var(--r-3);color:var(--ink);flex-direction:column;align-items:center;gap:2px;padding:14px 12px;font-weight:900;display:flex}.btn-semester .semester-sub{color:#6b7583;font-size:.72rem;font-weight:700}.btn-semester.selected{background:var(--soft);color:var(--sky-dark);border-style:solid}.btn-wordlist{padding:8px 18px;font-size:.92rem}.wordlist{background:var(--paper);border-radius:var(--radius);width:min(100%,660px);max-height:46vh;box-shadow:var(--shadow);grid-template-columns:1fr;gap:4px;padding:10px;display:grid;overflow-y:auto}@media (width>=560px){.wordlist{grid-template-columns:1fr 1fr;gap:4px 14px}}.wordlist-item{border-radius:10px;grid-template-columns:1fr auto;grid-template-areas:"hanzi lesson""pinyin lesson""meaning lesson";align-items:center;column-gap:8px;padding:6px 8px;line-height:1.15;display:grid}.wl-hanzi{grid-area:hanzi}.wl-pinyin{grid-area:pinyin}.wl-meaning{color:var(--ink-500);grid-area:meaning;font-size:.78rem;font-weight:700}.wl-lesson{flex-direction:column;grid-area:lesson;align-items:flex-end;line-height:1.2;display:flex}.wl-lesson .tri{text-align:right;align-items:flex-end}.wordlist-item:nth-child(odd){background:var(--soft)}@media (width>=560px){.wordlist-item:nth-child(odd){background:0 0}.wordlist-item:nth-child(4n+1),.wordlist-item:nth-child(4n+2){background:var(--soft)}}.wl-hanzi{color:var(--ink);white-space:nowrap;font-size:1.15rem;font-weight:700}.wl-pinyin{color:var(--sky-dark);white-space:nowrap;font-size:.95rem;font-weight:800}.wl-lesson{color:#8b95a3;white-space:nowrap;margin-left:auto;font-size:.68rem;font-weight:700}.start-footer{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;min-height:24px;display:flex}.btn-link{font:inherit;color:var(--ink-500);cursor:pointer;background:0 0;border:none;padding:4px;font-size:.92rem;font-weight:700;text-decoration:underline}.btn-link.danger{color:var(--red)}.clear-confirm{color:var(--ink);align-items:center;gap:6px;font-size:.8rem;font-weight:700;display:inline-flex}.btn-level{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);border:3px solid #0000;flex-direction:column;align-items:center;gap:4px;min-height:64px;padding:16px 12px;display:flex}.btn-level .level-label{color:var(--ink);font-size:1.15rem;font-weight:900}.btn-level .level-sub{color:#6b7583;font-size:.75rem;font-weight:700}.btn-level.selected{border-color:var(--sky);background:var(--soft);box-shadow:var(--shadow), 0 0 0 4px color-mix(in srgb, var(--sky) 24%, transparent), 0 0 24px color-mix(in srgb, var(--sky) 28%, transparent)}.btn-level.selected .level-label{color:var(--sky-dark)}.end-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.end-change-level,.pause-sound{justify-content:center;align-items:center;gap:7px;display:inline-flex}.end-change-level{color:var(--sky-600)}.keyboard{width:var(--rail,min(100%, 560px));flex-direction:column;align-items:center;gap:clamp(6px,1vh,9px);display:flex}.kb-row{justify-content:center;gap:6px;width:100%;display:flex}.btn-key{border-radius:var(--r-2);background:var(--surface);--skirt:var(--sky-200);max-width:56px;height:56px;box-shadow:var(--e-2);color:var(--ink);flex:1 1 0;font-size:1.35rem;font-weight:900;transition:transform 60ms}.btn-key:not(:disabled):active{transform:translateY(3px);box-shadow:0 1px #2f7fb640}.btn-key:disabled{opacity:.4;cursor:default}.kb-tones{margin-top:4px}.btn-tone{background:var(--soft);flex-direction:column;justify-content:center;align-items:center;gap:0;max-width:84px;height:62px;display:flex}.btn-tone .tone-mark{color:var(--sky-dark);font-size:1.45rem;line-height:1.1}.btn-tone .tone-sub{color:var(--ink-500);font-size:.68rem;font-weight:800}.tone-py{color:var(--sky-600);font-size:.5rem;font-weight:700;line-height:1}.kb-hint{color:var(--sky-dark);margin:0;font-size:.92rem;font-weight:800}.kb-hint .tri{line-height:1.15}.kb-hint .tri-py,.kb-hint .tri-en{margin-top:0}.caret{background:var(--amber);border-radius:2px;width:3px;height:1.5rem;animation:1s step-end infinite blink;position:absolute}@keyframes blink{50%{opacity:0}}@media (width<=480px){.btn-key{height:48px;font-size:1.15rem}.btn-tone{height:52px}.answer-area{gap:8px;min-height:48px}.word-box{min-width:58px;height:54px;font-size:1.4rem}.letter-box{width:clamp(27px,7.6vw,34px);height:clamp(38px,10vw,44px)}.syllable-group{gap:4px;padding:3px 5px}.answer-area[data-slots="4"]{gap:6px}.answer-area[data-slots="4"] .word-box{min-width:50px;height:48px;font-size:1.2rem}.answer-area[data-slots="4"] .letter-box{width:24px;height:36px;font-size:.95rem}.answer-area[data-slots="4"] .syllable-group{gap:3px;padding:2px 4px}}@media (height<=860px) and (width<=640px){.hanzi{font-size:clamp(3.4rem,14vw,5.2rem)}.hanzi[data-len="3"]{font-size:clamp(2.7rem,11vw,4.2rem)}.hanzi[data-len="4"]{font-size:clamp(2.2rem,8.6vw,3.4rem)}.question-card{min-height:clamp(7rem,15vh,10rem)}}@media (height<=820px) and (width>=641px){.screen-game{gap:4px;padding-top:4px;padding-bottom:4px}.game-main{gap:6px}.question-card{min-height:8rem;margin-top:10px;padding-block:18px 14px}.hanzi{font-size:clamp(3.5rem,10vh,5.3rem)}.hanzi[data-len="3"]{font-size:clamp(3rem,8vh,4.5rem)}.hanzi[data-len="4"]{font-size:clamp(2.5rem,7vh,3.8rem)}.btn-key{height:48px}.btn-tone{height:54px}.controls .btn{min-height:62px}}.feedback.quit .feedback-body{border-top:6px solid var(--sky-400)}.feedback.quit .mascot{animation:none}.quit-msg{color:var(--sky-dark)}.quit-sub{color:#6b7583;font-size:.95rem;font-weight:700}.quit-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.btn-key{transition:transform .12s cubic-bezier(.34,1.56,.64,1),box-shadow .12s}.btn-key:not(:disabled):active,.btn-key.pressed:not(:disabled){outline:4px solid var(--sun-200);outline-offset:1px;box-shadow:var(--e-1), 0 0 18px #f6a8219e;transform:translateY(3px)scale(.9,.85)}.fly-bit{color:var(--sky-dark);font-size:1.5rem;font-weight:900}.fly-letter{font-size:1.6rem}.fly-star{font-size:1.3rem}@keyframes sparkle{0%{opacity:0;transform:scale(.4)rotate(0)}35%{opacity:1;transform:scale(1.25)rotate(40deg)}to{opacity:0;transform:scale(.6)rotate(80deg)translateY(-10px)}}.answer-area.shake{animation:.5s ease-in-out headshake}@keyframes headshake{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(-7px)rotate(-1.2deg)}50%{transform:translate(6px)rotate(1deg)}75%{transform:translate(-4px)rotate(-.6deg)}}.new-record{color:var(--sun-800);font-style:normal}.stat-label .tri{line-height:1.1}.map-sub .tri,.quit-note .tri{line-height:1.25}.companion{pointer-events:none;width:clamp(96px,12vw,120px);height:auto}@media (width<=640px){.practice-stage{grid-template:"scene identity"76px"card card"/minmax(0,1fr) auto;gap:2px}.practice-scene-lane{flex-direction:row;justify-content:flex-end;gap:4px;height:76px;min-height:76px;padding-inline:12px}.practice-scene-lane .companion{width:76px}.practice-scene-lane .context-prop{width:52px;height:52px}.practice-stage .question-card{margin-top:0}.player-identity{border-radius:var(--r-pill);flex-direction:row;align-self:center;width:auto;max-width:150px;min-height:0;padding:8px 11px}.player-identity .tri{display:none}.feedback-top{grid-template-columns:minmax(0,1fr) 90px;gap:6px}.feedback-mascot-column{width:90px;min-height:88px}.feedback .mascot{width:88px}}@keyframes hop{0%,to{transform:translateY(0)rotate(0)}40%{transform:translateY(-22px)rotate(-5deg)}65%{transform:translateY(0)rotate(0)}80%{transform:translateY(-8px)rotate(3deg)}}.chip-streak{position:relative}.chip-streak .flame{transition:transform .2s;display:inline-block}.chip-streak.warm .flame{transform:scale(1.15)}.chip-streak.hot{background:var(--sun-50);color:var(--sun-700);animation:.9s ease-in-out infinite alternate pulse}.chip-streak.hot .flame{animation:.5s ease-in-out infinite flicker;transform:scale(1.3)}.chip-streak.blaze{color:#b35309;background:#ffe4c9}.chip-streak.blaze .flame{animation:.3s ease-in-out infinite flicker;transform:scale(1.5)}@keyframes flicker{0%,to{filter:brightness();transform:scale(1.35)rotate(-3deg)}50%{filter:brightness(1.25);transform:scale(1.45)rotate(3deg)}}.embers{pointer-events:none;position:absolute;inset:0}.embers i{background:var(--amber);border-radius:50%;width:5px;height:5px;animation:1.4s ease-out infinite ember;position:absolute;bottom:30%;left:22%}.embers i:nth-child(2){background:var(--red);animation-delay:.45s;left:40%}.embers i:nth-child(3){animation-delay:.9s;left:30%}@keyframes ember{0%{opacity:.9;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-26px)translate(4px)scale(.4)}}.scorebar.shimmer .chip{animation:1.2s ease-in-out infinite chipshine}@keyframes chipshine{0%,to{box-shadow:var(--shadow)}50%{box-shadow:0 4px #2f7fb640,0 0 18px #f6a821b3}}.coin-icon{vertical-align:-4px;margin-right:2px}.question-card{animation:.4s cubic-bezier(.34,1.56,.64,1) carddrop}@keyframes carddrop{0%{opacity:0;transform:translateY(-26px)rotate(-2.5deg)scale(.94)}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}.btn-level{transition:transform .15s;position:relative}@media (hover:hover) and (pointer:fine){.btn-level:hover{animation:.4s ease-in-out wiggle}}.btn-level.selected{animation:.3s cubic-bezier(.34,1.56,.64,1) selectpop}.level-perch{animation:.35s cubic-bezier(.34,1.56,.64,1) perchpop;position:absolute;top:-30px;right:8px}@keyframes wiggle{0%,to{transform:rotate(0)}30%{transform:rotate(-2deg)}70%{transform:rotate(2deg)}}@keyframes selectpop{0%{transform:scale(.94)}60%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes perchpop{0%{opacity:0;transform:translateY(10px)scale(.5)}to{opacity:1;transform:translateY(0)scale(1)}}.ceremony .enter-1{animation:.5s cubic-bezier(.34,1.56,.64,1) both flyin}.ceremony .enter-2{animation:.4s ease-out .15s both riseup}.ceremony .enter-3{animation:.4s ease-out .3s both riseup}.ceremony .enter-4{animation:.4s ease-out .45s both riseup}.ceremony .enter-5{animation:.4s ease-out .6s both riseup}@keyframes flyin{0%{opacity:0;transform:translate(-60px,-40px)rotate(-10deg)scale(.7)}to{opacity:1;transform:translate(0)rotate(0)scale(1)}}@keyframes riseup{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.confetti-full{z-index:1;position:fixed;inset:0}.chest-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;display:flex;position:relative}.chest-img{filter:drop-shadow(0 6px 10px #b4781440);transform-origin:50% 85%;animation:2.8s ease-in-out infinite chest-bounce}.chest-row:before,.chest-row:after{content:"";pointer-events:none;background:url(/img/coin.webp) 50%/contain no-repeat;width:22px;height:22px;animation:2.4s ease-in-out infinite treasure-coin;position:absolute;top:6px;left:38px}.chest-row:after{width:18px;height:18px;animation-delay:-1.1s;top:18px;left:72px}@keyframes chest-bounce{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-4px)rotate(-1deg)}}@keyframes treasure-coin{0%,to{opacity:0;transform:translateY(12px)rotate(-20deg)scale(.7)}35%,65%{opacity:1}55%{transform:translateY(-20px)rotate(18deg)scale(1)}}.review-complete{max-width:34rem;color:var(--pine-800);font-weight:900;line-height:1.25}.treasure-map{--surface:#f7ecd4;--border:#d9c193;--on-surface:#8a5a1d;--on-surface-muted:#a07c42;--skirt:#c8ab74;background-color:#f7ecd4;background-image:radial-gradient(at 20% 15%,#c59e5d2e,#0000 55%),radial-gradient(at 85% 80%,#c59e5d38,#0000 50%),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:cover;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:3px solid #d9c193;border-radius:10px;position:relative;box-shadow:0 4px #97743c59}.treasure-map h3{color:#8a5a1d}.map-sub{color:#a07c42;font-size:.85rem;font-weight:700}.treasure-map li{border-bottom-color:#e4d3ac}.map-x{color:#c0392b;font-size:1.3rem;font-weight:900;display:inline-block;transform:rotate(-8deg)}.treasure-map .mistake-pinyin{color:#8a5a1d}.btn-year,.btn-semester,.btn-level{line-height:1.15}.year-label{color:var(--ink-700);letter-spacing:.02em;font-size:1.2rem;font-weight:900}.btn-year.selected .year-label{color:var(--sky-600)}.level-pinyin,.year-pinyin,.semester-pinyin,.btn-pinyin{color:var(--sky-600);white-space:nowrap;margin-top:2px;font-size:.74rem;font-weight:800;line-height:1.1;display:block}.year-pinyin{font-size:.68rem}.level-sub,.year-sub,.semester-sub{color:var(--ink-500);margin-top:7px;font-size:.66rem;font-weight:700;line-height:1.25;display:block}.level-sub{font-size:.78rem}.wordlist-count{background:var(--sky-100);color:var(--sky-600);border-radius:var(--r-pill);margin-left:2px;padding:2px 9px;font-size:.82em;font-weight:800}.btn-year{min-height:78px;padding:10px 6px}.btn-semester{padding:10px 12px}.btn-wordlist{gap:8px}.mode-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;display:grid}.mode-card{border-radius:var(--r-4);min-height:104px;box-shadow:var(--e-2), 0 6px 0 var(--sky-200);color:var(--ink-700);cursor:pointer;background:#fffffff0;border:3px solid #0000;justify-content:center;align-items:center;gap:12px;padding:12px;display:flex}.mode-card.selected{border-color:var(--sky-500);background:var(--sky-50);transform:translateY(-2px)}.mode-card .tri-zh{font-size:1.35rem}.mode-card .tri-py,.mode-card .tri-en{font-size:.82rem}.mode-icon{filter:drop-shadow(0 3px 3px #34425724);flex:0 0 58px;place-items:center;width:58px;height:58px;display:grid;position:relative}.mode-icon img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block;position:absolute;inset:0}.mode-book img{transform-origin:50% 72%;transition:opacity .17s,transform .23s cubic-bezier(.2,.8,.2,1),filter .17s}.mode-book-open{opacity:0;transform:translateY(3px)scale(.86)rotate(-2deg)}.mode-book-closed{opacity:1;transform:scale(1)}@media (hover:hover) and (pointer:fine){.practice-mode:hover .mode-book-closed,.practice-mode:focus-visible .mode-book-closed{opacity:0;transform:translateY(4px)scale(.82)}.practice-mode:hover .mode-book-open,.practice-mode:focus-visible .mode-book-open{opacity:1;filter:drop-shadow(0 0 8px color-mix(in srgb, var(--sun-500) 45%, transparent));transform:translateY(-2px)scale(1.08)rotate(1deg)}}.practice-mode:focus-visible .mode-book-closed{opacity:0;transform:translateY(4px)scale(.82)}.practice-mode:focus-visible .mode-book-open{opacity:1;filter:drop-shadow(0 0 8px color-mix(in srgb, var(--sun-500) 45%, transparent));transform:translateY(-2px)scale(1.08)rotate(1deg)}.practice-mode:active .mode-book-closed{opacity:0;transform:translateY(4px)scale(.82)}.practice-mode:active .mode-book-open{opacity:1;transform:translateY(-2px)scale(1.08)rotate(1deg)}.mode-hourglass img{transform-origin:50%;animation:3.6s cubic-bezier(.55,.08,.35,.95) infinite mode-hourglass-turn}@keyframes mode-hourglass-turn{0%,62%{transform:rotate(0)scale(1)}76%{transform:rotate(180deg)scale(1.06)}90%,to{transform:rotate(360deg)scale(1)}}@media (hover:hover) and (pointer:fine){.quiz-mode:hover .mode-hourglass img,.quiz-mode:focus-visible .mode-hourglass img{filter:drop-shadow(0 0 8px color-mix(in srgb, var(--sun-500) 45%, transparent));animation-duration:1.15s}}.quiz-mode:focus-visible .mode-hourglass img{filter:drop-shadow(0 0 8px color-mix(in srgb, var(--sun-500) 45%, transparent));animation-duration:1.15s}.quiz-mode:active .mode-hourglass img{animation-duration:.75s}.year-label{white-space:nowrap}.start-more .tri-zh{font-size:1.2rem}.start-more .tri-py,.start-more .tri-en{font-size:.82rem}.more-actions .btn{min-height:76px;font-size:1.06rem}.start-more .gate-footer{flex-direction:column;align-items:center;gap:10px;padding-top:14px;display:flex}.adult-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.btn-pause-labeled{justify-content:center;align-items:center;gap:8px;width:auto;min-width:92px;min-height:60px;padding:6px 12px;display:flex}.btn-pause-labeled .tri-zh{font-size:.92rem}.btn-pause-labeled .tri-py,.btn-pause-labeled .tri-en{font-size:.58rem}.feedback.wrong{padding-bottom:max(16px, env(safe-area-inset-bottom));justify-content:flex-end}.new-record-card{border-radius:var(--r-3);background:var(--sun-50);border:2px solid var(--amber);min-width:120px;color:var(--amber);justify-content:center;align-self:stretch;align-items:center;padding:10px 14px;font-style:normal;font-weight:900;display:flex}.review-finish{flex-direction:column;align-items:center;gap:12px;display:flex}.review-chest-open{animation:1.05s cubic-bezier(.2,1.4,.4,1) both review-chest-open,2.8s ease-in-out 1.1s infinite chest-bounce}.review-chest-row:before,.review-chest-row:after{animation:1.2s ease-out .55s both review-coin-rise}.review-chest-row:after{animation-delay:.78s}.review-coin-card{animation:.4s ease-out .9s both riseup}@keyframes review-chest-open{0%{opacity:0;transform:scale(.72)translateY(18px)}48%{opacity:1;transform:scale(1.08)translateY(-5px)rotate(-3deg)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes review-coin-rise{0%{opacity:0;transform:translateY(30px)scale(.4)rotate(-30deg)}65%{opacity:1;transform:translateY(-34px)scale(1.15)rotate(20deg)}to{opacity:.9;transform:translateY(-22px)scale(1)rotate(0)}}.quiz-screen{overflow:auto}.quiz-topbar{border-radius:0 0 var(--r-4) var(--r-4);width:min(100%,1040px);min-height:82px;box-shadow:var(--e-2);background:#ffffffed;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;margin:0 auto;padding:10px clamp(12px,3vw,28px);display:grid}.quiz-status-actions{align-items:center;gap:10px;display:inline-flex}.quiz-score-chip{border-radius:var(--r-pill);background:var(--sun-50);min-width:84px;color:var(--amber);padding:10px 14px;font-size:1.35rem;font-weight:900}.quiz-clock{justify-content:center;align-items:center;gap:12px;min-width:0;display:flex}.quiz-hourglass{font-size:2rem;animation:2.4s ease-in-out infinite hourglass-turn}.quiz-clock.paused .quiz-hourglass{animation-play-state:paused}.quiz-clock-track{border-radius:var(--r-pill);background:var(--sky-100);border:2px solid var(--sky-200);width:min(34vw,280px);height:12px;overflow:hidden}.quiz-clock-track>span{transform-origin:0;background:linear-gradient(90deg, var(--green), var(--sky-500));width:100%;height:100%;transition:transform .18s linear;display:block}.quiz-exact-time{min-width:56px;color:var(--ink-700);font-size:1.25rem}.quiz-game-main{padding-top:18px}.quiz-question-stage{grid-template-columns:minmax(96px,120px) minmax(0,35rem) minmax(96px,120px);grid-template-areas:"mascot card identity";justify-content:center;align-items:center;gap:12px;width:min(100%,66rem);display:grid}.quiz-question-stage .question-card{grid-area:card;width:100%}.quiz-mascot-lane{grid-area:mascot;justify-content:center;align-items:center;min-height:116px;display:flex}.quiz-mascot-lane .companion{width:clamp(96px,12vw,120px)}.quiz-controls{grid-template-columns:repeat(4,minmax(0,1fr))}.quiz-feedback-inline{border-radius:var(--r-3);width:min(92%,600px);box-shadow:var(--e-2);background:#fffffff5;justify-content:center;align-items:center;gap:16px;margin:2px auto 8px;padding:10px 18px;animation:.2s ease-out riseup;display:flex}.quiz-feedback-inline.correct{border:3px solid var(--green);color:var(--green)}.quiz-feedback-inline.wrong{border:3px solid var(--red);color:var(--red)}.quiz-feedback-inline strong{font-size:1.45rem}.quiz-error{color:var(--red);text-align:center;font-weight:800}.quiz-paused-overlay{z-index:var(--z-overlay);border-radius:var(--r-pill);box-shadow:var(--e-3);color:var(--sky-700);background:#fffffff5;padding:14px 22px;position:fixed;inset:auto 50% 20px auto;transform:translate(50%)}.quiz-results{gap:18px;min-height:100dvh;padding:28px 16px}.quiz-result-star{font-size:clamp(4rem,12vw,7rem);animation:1.1s ease-in-out infinite hop}.quiz-personal-score{border-radius:var(--r-4);min-width:min(88vw,320px);box-shadow:var(--e-3);background:#fffffff2;flex-direction:column;align-items:center;gap:6px;padding:20px 28px;display:flex}.quiz-personal-score>strong{color:var(--sky-600);font-size:4rem;line-height:1}.quiz-rank{color:var(--amber);font-size:2rem;font-weight:900}.quiz-board-wrap{width:min(100%,720px);overflow-x:auto}.quiz-board{border-collapse:collapse;border-radius:var(--r-3);background:#fff;width:100%;overflow:hidden}.quiz-board th,.quiz-board td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}.quiz-board tr.me{background:var(--sun-50);font-weight:900}.connection-dot{background:var(--ink-300);border-radius:50%;width:12px;height:12px;display:inline-block}.connection-dot.online{background:var(--green);box-shadow:0 0 0 4px #2d9b5d24}.classroom-entry,.classroom-host,.classroom-waiting{background:linear-gradient(145deg,#e5f6ffeb,#fff8e1f0),url(/img/horizon-band.webp) 50%/cover;min-height:100dvh;padding:clamp(18px,4vw,48px)}.classroom-entry,.classroom-waiting{flex-direction:column;justify-content:center;align-items:center;gap:20px;display:flex}.classroom-home-link{position:absolute;inset:24px auto auto 24px}.classroom-card{border-radius:var(--r-4);border:2px solid var(--sky-100);width:min(100%,820px);box-shadow:var(--e-3);background:#fffffff2;padding:clamp(20px,4vw,38px)}.classroom-card h1,.classroom-card h2{color:var(--sky-700)}.classroom-muted{color:var(--ink-500);line-height:1.45}.classroom-form{flex-direction:column;gap:16px;margin-top:20px;display:flex}.classroom-form label:not(.classroom-check),.host-visibility label{color:var(--ink-700);flex-direction:column;gap:7px;font-weight:800;display:flex}.classroom-form input:not([type=checkbox]),.classroom-form select,.host-visibility select,.host-name-edit input{border:2px solid var(--border-strong);border-radius:var(--r-2);width:100%;min-height:48px;color:var(--ink-700);font:inherit;background:#fff;padding:9px 12px}.room-code-input{text-transform:uppercase;letter-spacing:.28em;text-align:center;font-weight:900;font-size:1.8rem!important}.classroom-check{align-items:flex-start;gap:10px;line-height:1.4;display:flex}.classroom-check input{flex:none;width:22px;height:22px}.host-privacy-notice{border-radius:var(--r-3);background:var(--sun-50);border:2px solid var(--sun-200);padding:16px}.host-privacy-notice p{margin-top:8px;line-height:1.45}.turnstile-slot{min-height:65px}.classroom-dev-note{color:var(--green);font-weight:800}.waiting-orbit{font-size:5rem;animation:2.4s ease-in-out infinite waiting-orbit}@keyframes waiting-orbit{0%,to{transform:translate(-18px)rotate(-8deg)}50%{transform:translate(18px)rotate(8deg)}}.connection-ok{color:var(--green);font-weight:800}.connection-warn{color:var(--amber);font-weight:800}.classroom-host{overflow:auto}.classroom-shell-head{justify-content:space-between;align-items:center;gap:20px;width:min(100%,1280px);margin:0 auto 20px;display:flex}.classroom-shell-head h1{color:var(--sky-700)}.classroom-host>.classroom-card{width:min(100%,1280px);margin:0 auto 22px}.host-room-card{width:min(100%,1280px)}.host-room-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.host-phase{text-transform:capitalize;border-radius:var(--r-pill);background:var(--sky-100);padding:6px 12px;font-weight:900}.host-invitation{border-radius:var(--r-3);background:var(--sky-50);grid-template-columns:minmax(220px,300px) 1fr;align-items:center;gap:28px;padding:18px;display:grid}.host-qr img{border-radius:12px;width:min(100%,260px);height:auto;display:block}.host-room-code{letter-spacing:.16em;color:var(--sky-700);font-size:clamp(2.5rem,7vw,5.5rem);display:block}.host-invite-actions,.host-controls,.host-finish-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.host-visibility{max-width:340px;margin:20px 0}.host-clock-panel{border-radius:var(--r-3);background:var(--sun-50);margin:18px 0;padding:18px}.host-clock-panel .quiz-clock{justify-content:flex-start}.host-roster-head{justify-content:space-between;align-items:center;margin-top:20px;display:flex}.host-table-scroll{width:100%;overflow-x:auto}.host-participants{border-collapse:collapse;width:100%;min-width:850px;margin-top:10px}.host-participants th,.host-participants td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:10px}.host-participants th{color:var(--ink-500);text-transform:uppercase;font-size:.78rem}.host-name-edit{grid-template-columns:minmax(120px,1fr) minmax(100px,1fr) auto;gap:6px;display:grid}.btn-small{min-height:42px;padding:7px 11px}.danger{color:var(--red)!important}.host-start{width:min(100%,380px);margin:24px auto 0}.host-empty{text-align:center;color:var(--ink-500);padding:28px}.host-history-list{width:min(100%,820px)!important}.host-history-row{border:0;border-top:1px solid var(--border);text-align:left;cursor:pointer;width:100%;color:var(--ink-700);background:0 0;grid-template-columns:1fr auto auto;gap:14px;padding:14px 4px;display:grid}@media (width<=700px){.quiz-topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px}.quiz-controls{grid-template-columns:1fr}.quiz-controls .btn{min-height:58px}.host-invitation{text-align:center;grid-template-columns:1fr}.host-qr img{margin:auto}.host-invite-actions{justify-content:center}.classroom-shell-head{flex-direction:column;align-items:flex-start}.host-history-row{grid-template-columns:1fr}.mode-card{flex-direction:column;gap:4px;min-height:92px}.feedback.wrong .feedback-body{max-height:54dvh;overflow-y:auto}.quiz-question-stage{grid-template:"mascot identity"76px"card card"/minmax(0,1fr) auto;gap:2px}.quiz-mascot-lane{justify-content:flex-end;min-height:76px;padding-inline:12px}.quiz-mascot-lane .companion{width:76px}.quiz-question-stage .question-card{margin-top:0}}@media (prefers-reduced-motion:reduce){.mode-hourglass,.quiz-hourglass,.quiz-result-star,.waiting-orbit,.review-chest-open,.review-chest-row:before,.review-chest-row:after,.practice-scene-symbol{animation:none!important}}.tri{flex-direction:column;align-items:center;line-height:1.12;display:inline-flex}.tri-zh{font-weight:900}.tri-py{color:var(--sky-600);margin-top:2px;font-size:.66em;font-weight:800}.tri-en{color:var(--ink-500);margin-top:4px;font-size:.6em;font-weight:700}.controls .btn{gap:.3em;min-height:4.5rem;padding:10px 8px;font-size:1.18rem}.controls .btn .tri-py{font-size:.62em}.controls .btn .tri-en{margin-top:2px;font-size:.58em}.controls .btn-primary{min-height:4.5rem;padding:10px 18px;font-size:1.4rem}.btn-hint .tri-py,.btn-hint .tri-en{color:var(--sun-700);opacity:.85}.btn-secondary .tri-py,.btn-secondary .tri-en{color:var(--on-warm);opacity:.9}.btn-step{align-items:center;gap:6px;line-height:1.05;display:inline-flex}.btn-step .tri-py{font-size:.74em}.btn-step .tri-en{margin-top:1px;font-size:.7em}.btn-link{text-decoration:none}.btn-link .tri-zh{text-decoration:underline}.clear-confirm{align-items:center}.btn-primary .tri-py,.btn-primary .tri-en{color:#fff}.tri-head .tri-zh{font-size:1.5rem}.tri-head .tri-py{font-size:.8rem}.tri-head .tri-en{font-size:.78rem}.feedback-where .tri{text-align:left;align-items:flex-start}.feedback-where .tri-zh{font-size:1rem}.answer-meaning{color:var(--ink-500);margin-top:6px;font-size:.85rem;font-weight:700;display:block}.screen-gate{--band-opacity:.34;text-align:center;justify-content:center;gap:18px}@media (height<=820px){.screen-gate{justify-content:flex-start;gap:10px;padding-block:10px}.screen-gate .mascot-big{width:96px}.screen-gate .gate-sub{font-size:.95rem}.screen-gate .code-form{gap:10px}.screen-gate .gate-note{gap:3px;padding:6px 10px;font-size:.72rem;line-height:1.35}}.gate-sub{color:var(--ink-700);font-size:1.05rem;font-weight:800}.gate-sub .tri{line-height:1.2}.gate-error{background:var(--berry-50);color:var(--berry-600);border-radius:var(--r-2);border:2px solid #f3c9c6;padding:8px 16px;font-weight:800}.gate-error .tri-py,.gate-error .tri-en{color:var(--berry-600);opacity:.85}.gate-note{width:min(100%,440px);color:var(--ink-500);border-radius:var(--r-2);-webkit-backdrop-filter:blur(4px);background:#ffffffb3;border:1px solid #b9d3e6b8;flex-direction:column;gap:6px;padding:8px 12px;font-size:.78rem;font-weight:600;line-height:1.45;display:flex}.gate-note-details{display:block}.gate-note-details summary{cursor:pointer;color:var(--sky-600);font-weight:800;list-style:none}.gate-note-details summary::-webkit-details-marker{display:none}.gate-note-details summary:after{content:" +";font-size:1rem}.gate-note-details[open] summary:after{content:" −"}.gate-note-copy{flex-direction:column;gap:6px;margin-top:10px;display:flex}.gate-offline{font-weight:700}.code-form{flex-direction:column;align-items:center;gap:14px;width:min(100%,420px);display:flex}.code-input{width:min(100%,320px);font:inherit;font-variant-numeric:tabular-nums;letter-spacing:.3em;text-align:center;text-indent:.3em;color:var(--sky-600);background:var(--surface);border:2px solid var(--border-strong);border-radius:var(--r-3);box-shadow:var(--e-sunk);appearance:none;padding:12px 14px;font-size:2rem;font-weight:900}.code-input::placeholder{color:var(--border-strong);font-weight:800}.code-input:focus-visible{outline:4px solid var(--amber);outline-offset:2px}.code-input:disabled{opacity:.6}.code-actions{flex-direction:column;align-items:center;gap:10px;display:flex}.roster{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;width:min(100%,520px);display:grid}.roster-card{background:var(--surface);border-radius:var(--r-3);--skirt:var(--sky-200);box-shadow:var(--e-2);border:3px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:150px;padding:16px 10px 14px;transition:transform .12s,box-shadow .12s;display:flex}.roster-card:not(:disabled):active{box-shadow:0 1px 0 var(--skirt);transform:translateY(3px)}@media (hover:hover){.roster-card:hover{border-color:var(--sky)}}.roster-name{color:var(--ink-700);overflow-wrap:anywhere;font-size:1.2rem;font-weight:900;line-height:1.15}.roster-empty{flex-direction:column;align-items:center;gap:12px;display:flex}.gate-footer{color:var(--ink-500);flex-direction:column;align-items:center;gap:6px;font-size:.85rem;font-weight:700;display:flex}.gate-family{color:var(--ink-500)}.avatar{border-radius:50%;flex:none;place-items:center;display:inline-grid;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffffb3}.avatar-mascot{-webkit-user-select:none;user-select:none;width:78%;height:78%}.player-row{background:var(--surface-hud);border-radius:var(--r-pill);--skirt:var(--sky-100);box-shadow:var(--e-1);align-items:center;gap:10px;max-width:100%;padding:5px 14px 5px 6px;font-size:1rem;display:inline-flex}.player-row .tri{line-height:1.05}.player-row .tri-py,.player-row .tri-en{font-size:.62em}.player-row .btn-link{padding:2px 4px;font-size:.8rem}.sync-badge{color:var(--ink-500);align-items:center;gap:8px;font-size:.85rem;font-weight:700;display:inline-flex}.sync-badge .tri{line-height:1.05}.sync-badge .tri-py,.sync-badge .tri-en{font-size:.72em}.sync-dot{background:var(--ink-500);border-radius:50%;flex:none;width:10px;height:10px}.sync-dot.pending{background:var(--sun-400);animation:.9s ease-in-out infinite alternate pulse}.sync-dot.offline{background:var(--ink-500)}.sync-dot.error{background:var(--berry-600)}.sync-dot.ok{background:var(--pine-400)}.sync-backup{color:var(--sky-600);background:0 0;padding:4px;font-size:.78rem;font-weight:800;text-decoration:underline}.star-chip{background:var(--sun-50);color:var(--sun-700);border:2px solid var(--sun-100);border-radius:var(--r-pill);--skirt:var(--sun-100);box-shadow:var(--e-2);align-items:center;gap:12px;max-width:100%;padding:8px 20px;font-size:1.05rem;font-weight:900;display:inline-flex}.star-chip .star-glyph{white-space:nowrap;font-size:1.35rem}.star-chip .tri{line-height:1.12}.star-chip .tri-py,.star-chip .tri-en{color:var(--sun-700);opacity:.85}.start-links{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;max-width:100%;display:flex}.btn-leaderboard{gap:8px;padding:8px 18px;font-size:.92rem}.screen-board{gap:14px}.lb-rule{width:min(100%,440px);font-size:.98rem}.leaderboard{flex-direction:column;gap:8px;width:min(100%,440px);list-style:none;display:flex}.lb-row{background:var(--surface);border-radius:var(--r-3);--skirt:var(--sky-200);box-shadow:var(--e-1);text-align:left;border:2px solid #0000;align-items:center;gap:10px;min-height:54px;padding:6px 14px 6px 8px;display:flex}.lb-row.me{background:var(--soft);border-color:var(--sky)}.lb-rank{width:4.5rem;color:var(--sky-600);white-space:nowrap;flex:none;justify-content:center;font-size:.95rem;display:inline-flex}.lb-rank .tri{line-height:1.05}.lb-rank .tri-py,.lb-rank .tri-en{font-size:.6em}.lb-rank.top .tri-zh{color:var(--sun-700)}.lb-name{min-width:0;color:var(--ink-700);flex:1;align-items:center;gap:8px;font-size:1.1rem;font-weight:900;display:flex}.lb-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.lb-you-tag{background:var(--sky-600);color:var(--on-accent);border-radius:var(--r-pill);flex:none;padding:3px 9px;font-size:.72rem}.lb-you-tag .tri{line-height:1.02}.lb-you-tag .tri-py,.lb-you-tag .tri-en{color:var(--on-accent);opacity:.92;font-size:.8em}.lb-stars{color:var(--sun-700);white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;font-size:1.1rem;font-weight:900}.lb-gap{text-align:center;color:var(--ink-500);letter-spacing:.2em;-webkit-user-select:none;user-select:none;padding:2px 0;font-weight:900;line-height:1}.lb-note{width:min(100%,440px);color:var(--ink-700);flex-direction:column;align-items:center;gap:8px;font-size:1rem;font-weight:800;display:flex}.lb-note .tri{line-height:1.2}.lb-asof{color:var(--ink-500);align-items:center;gap:8px;font-size:.8rem;font-weight:700;display:inline-flex}.lb-asof .tri{line-height:1.05}.lb-asof .tri-py,.lb-asof .tri-en{font-size:.72em}.lb-asof-time{font-variant-numeric:tabular-nums}.lb-actions{flex-direction:column;align-items:center;gap:10px;display:flex}.lb-actions .btn-link:disabled{cursor:default;opacity:.6}.btn-year[aria-disabled=true],.btn-semester.locked{background:color-mix(in srgb, var(--paper) 82%, var(--ink-100));border-color:var(--border);color:var(--ink-500)}.level-lock{filter:grayscale(.2);font-size:.72rem;position:absolute;inset:5px 7px auto auto}.locked-semester-grid{grid-template-columns:repeat(4,minmax(0,1fr));animation:none}.locked-semester-grid .btn-semester{min-height:56px;padding:7px 5px;font-size:.74rem}.locked-access{cursor:pointer}@media (hover:hover) and (pointer:fine){.locked-access:hover{border-color:var(--sun-500);background:color-mix(in srgb, var(--sun-50) 76%, white);box-shadow:0 0 0 4px color-mix(in srgb, var(--sun-500) 18%, transparent), var(--e-2)}}.locked-access:focus-visible{border-color:var(--sun-600);box-shadow:0 0 0 4px color-mix(in srgb, var(--sun-500) 24%, transparent), var(--e-2)}.paid-unlock-message{border-radius:var(--r-2);width:100%;min-height:76px;color:var(--ink-500);opacity:0;pointer-events:none;border:2px solid #0000;flex-direction:column;justify-content:center;align-items:center;margin-top:2px;padding:9px 16px;transition:opacity .15s,transform .15s;display:flex;position:relative;transform:translateY(5px)}.paid-unlock-message>span:first-child{color:var(--sun-700);font-size:1.05rem;font-weight:900}.paid-unlock-message>span:nth-child(2){color:var(--sky-700);font-size:.82rem;font-weight:800}.paid-unlock-message>strong{font-size:.86rem}.paid-unlock-message.visible{border-color:color-mix(in srgb, var(--sun-500) 35%, transparent);background:color-mix(in srgb, var(--sun-50) 72%, white);box-shadow:var(--e-3);opacity:1;transform:translateY(0)}@media (hover:none) and (pointer:coarse){.paid-unlock-message{display:none}}@media (prefers-reduced-motion:reduce){.paid-unlock-message{transition:none}}.free-allowance{color:var(--sky-700);margin:0;font-weight:900}.parental-gate-backdrop{z-index:calc(var(--z-overlay) + 20);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#18263694;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.parental-gate{border-radius:var(--r-4);width:min(100%,520px);box-shadow:var(--e-4);text-align:center;background:#fff;flex-direction:column;gap:18px;padding:clamp(22px,5vw,38px);display:flex}.parental-gate h2{color:var(--sky-700)}.parental-gate p{color:var(--ink-700);line-height:1.45}.parental-gate label{justify-content:center;align-items:center;gap:12px;font-size:1.4rem;font-weight:900;display:flex}.parental-gate input{border:3px solid var(--border-strong);border-radius:var(--r-2);width:110px;min-height:54px;font:inherit;text-align:center}.parental-gate-actions{grid-template-columns:1fr 1fr;gap:12px;display:grid}.parental-gate-actions .btn{min-height:54px}.generated-aliases{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0 18px;display:grid}.generated-aliases .alias-choice{text-align:left;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:10px;min-height:82px;padding:8px 12px;display:grid}.generated-aliases .alias-choice>span:last-child{overflow-wrap:anywhere}.generated-aliases .selected{border-color:var(--sky-500);background:color-mix(in srgb, var(--alias-accent,var(--sky-500)) 8%, var(--sky-50));box-shadow:0 0 0 3px color-mix(in srgb, var(--sky-500) 18%, transparent), var(--e-2)}.generated-aliases .alias-choice:is(:hover,:focus-visible) .alias-mascot .animated-mascot,.generated-aliases .alias-choice.selected .alias-mascot .animated-mascot{filter:drop-shadow(0 7px 5px #2a374633);transform:translateY(-3px)rotate(-2deg)scale(1.06)}.host-name-edit .alias-mascot{align-self:center}.quiz-board .alias-name{white-space:nowrap}@media (prefers-reduced-motion:reduce){.alias-mascot .animated-mascot,.music-mute-button{transition:none}.generated-aliases .alias-choice:is(:hover,:focus-visible) .alias-mascot .animated-mascot,.generated-aliases .alias-choice.selected .alias-mascot .animated-mascot{transform:none}}.alias-choice-form fieldset{border:0;flex-direction:column;gap:10px;padding:0;display:flex}.alias-choice-form legend{color:var(--sky-700);margin-bottom:12px;font-size:1.2rem}.alias-source-choice{align-items:center;gap:10px;flex-direction:row!important;display:flex!important}.alias-source-choice input{width:22px;height:22px}.hub-screen{align-items:stretch;gap:22px;max-width:none;min-height:100dvh;padding:clamp(16px,4vw,48px);overflow:auto}.hub-screen:after{opacity:.2}.hub-header{align-items:flex-start;gap:26px;width:min(100%,1120px);margin:0 auto;display:flex}.hub-header h1{color:var(--sky-700);font-size:clamp(1.8rem,4vw,3rem)}.hub-header p{color:var(--ink-500)}.hub-card,.hub-dashboard{width:min(100%,1120px);margin-inline:auto}.hub-dashboard{gap:22px;display:grid}.hub-card{border:2px solid var(--sky-100);border-radius:var(--r-4);box-shadow:var(--e-3);background:#fffffff5;padding:clamp(20px,4vw,38px)}.hub-card h2{color:var(--sky-700);margin-bottom:6px}.hub-card h3{color:var(--ink-700)}.hub-card p{line-height:1.48}.hub-sign-in{max-width:620px}.hub-form{flex-direction:column;gap:13px;margin-top:18px;display:flex}.hub-form label{color:var(--ink-700);flex-direction:column;gap:6px;font-weight:850;display:flex}.hub-form input,.hub-form select,.ops-screen input,.ops-screen select{border:2px solid var(--border-strong);border-radius:var(--r-2);width:100%;min-height:48px;color:var(--ink-700);font:inherit;background:#fff;padding:9px 12px}.hub-signin-divider{color:var(--ink-500);align-items:center;gap:12px;margin-block:20px;display:flex}.hub-signin-divider:before,.hub-signin-divider:after{content:"";border-top:1px solid var(--border);flex:1}.btn-apple{color:#fff;border-radius:var(--r-2);background:#000;width:100%;min-height:52px;font-weight:800}.hub-fine-print{color:var(--ink-500);margin-top:18px;font-size:.82rem}.hub-card-head{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-block:20px;display:grid}.product-card{border:2px solid var(--border);border-radius:var(--r-3);flex-direction:column;gap:10px;padding:20px;display:flex}.product-card>strong{color:var(--sky-700);font-size:1.35rem}.product-card.owned{border-color:var(--green);background:color-mix(in srgb, white 92%, var(--green))}.promo-form{grid-template-columns:1fr auto;align-items:end;gap:10px;max-width:520px;margin-top:20px;display:grid}.promo-form label{flex-direction:column;gap:6px;font-weight:800;display:flex}.promo-form input{border:2px solid var(--border-strong);border-radius:var(--r-2);min-height:48px;font:inherit;padding:9px 12px}.active-room-summary,.template-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.template-manager{border-top:1px solid var(--border);margin-top:28px;padding-top:20px}.hub-template-form{grid-template-columns:1.2fr 1fr 1fr auto;align-items:end;display:grid}.template-row{border-top:1px solid var(--border);padding:12px 0}.identity-list{margin:14px 0;padding-left:22px}.sensitive-actions{gap:18px;margin-top:16px;display:grid}.inline-code-form{max-width:420px}.delete-account-box{border:2px solid color-mix(in srgb, var(--red) 35%, white);border-radius:var(--r-3);background:#fff8f7;gap:10px;padding:16px;display:grid}.delete-account-box label{flex-direction:column;gap:5px;font-weight:800;display:flex}.delete-account-box input{border:2px solid var(--border-strong);border-radius:var(--r-2);min-height:46px;font:inherit;padding:8px 10px}.hub-notice{border-radius:var(--r-pill);background:var(--green);color:#fff;width:fit-content;max-width:min(90vw,660px);box-shadow:var(--e-3);margin:auto;padding:12px 18px;font-weight:900;position:sticky;bottom:18px}.hub-error{border:2px solid var(--red);border-radius:var(--r-3);background:#fff;padding:12px 18px;position:sticky;bottom:18px}.hub-footer{flex-wrap:wrap;justify-content:center;gap:18px;width:min(100%,1120px);margin:0 auto;padding:8px;display:flex}.ops-screen{color:#253245;background:#f4f7fa;align-content:start;gap:20px;min-height:100dvh;padding:clamp(18px,3vw,42px);display:grid}.ops-header,.ops-card,.ops-metrics,.ops-privacy-banner{width:min(100%,1440px);margin-inline:auto}.ops-header{justify-content:space-between;align-items:center;gap:20px;display:flex}.ops-header h1{color:#126cae}.ops-privacy-banner{background:#e8f4fc;border:1px solid #b8dcf4;border-radius:10px;padding:12px 16px;font-weight:750}.ops-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.ops-metrics article,.ops-card{background:#fff;border:1px solid #d8e1ea;border-radius:14px;box-shadow:0 3px 14px #1b344f14}.ops-metrics article{flex-direction:column;padding:18px;display:flex}.ops-metrics strong{color:#126cae;font-size:2rem}.ops-card{padding:22px}.ops-card table{border-collapse:collapse;width:100%;min-width:760px;margin-top:12px}.ops-card th,.ops-card td{text-align:left;border-bottom:1px solid #e4eaf0;padding:10px}.ops-maintenance{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.ops-maintenance>div{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ops-promo{letter-spacing:.08em;background:#fff5d7;border-radius:8px;padding:8px 12px}.host-name-edit{grid-template-columns:minmax(140px,1fr) auto}@media (width<=760px){.locked-semester-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-header,.hub-card-head{flex-direction:column}.product-grid{grid-template-columns:1fr}.hub-template-form{display:flex}.promo-form{grid-template-columns:1fr}.ops-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-header{flex-direction:column;align-items:flex-start}}@media (width<=420px){.locked-semester-grid{grid-template-columns:1fr 1fr}.generated-aliases,.parental-gate-actions,.ops-metrics{grid-template-columns:1fr}}.public-document-screen{-webkit-user-select:text;user-select:text;min-height:100vh;padding:clamp(16px,3vw,40px);display:block}.public-document-header,.public-document{width:min(900px,100%);margin-inline:auto}.public-document-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;font-weight:800;display:flex}.public-document-header nav{flex-wrap:wrap;justify-content:flex-end;gap:8px 16px;display:flex}.public-document-header a,.public-document a{color:var(--sky-700)}.public-document{border:2px solid var(--border);border-radius:var(--r-4);box-shadow:var(--e-3);color:var(--ink-700);background:#fffffff5;padding:clamp(22px,5vw,54px);line-height:1.62}.public-document h1{color:var(--sky-700);margin:0 0 12px;font-size:clamp(2rem,5vw,3rem)}.public-document h2{color:var(--ink-900);margin:1.8em 0 .35em;font-size:clamp(1.25rem,3vw,1.55rem)}.public-document p,.public-document li{font-size:1rem}.public-document li+li{margin-top:.55em}.policy-lead{font-weight:700;font-size:1.15rem!important}.policy-status{border-radius:var(--r-2);background:var(--sun-50);color:var(--sun-800);margin:-8px 0 22px;padding:10px 14px;font-weight:800}.policy-date{color:var(--ink-500);margin-top:2.5rem;font-weight:700}@media (width<=650px){.public-document-header{flex-direction:column;align-items:flex-start}.public-document-header nav{justify-content:flex-start}}
