@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-cyrillic-ext-400-normal-CuPM9foi.woff2) format("woff2"),url(/assets/nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-cyrillic-400-normal-xAOo5cBP.woff2) format("woff2"),url(/assets/nunito-cyrillic-400-normal-D1j0u8EH.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-vietnamese-400-normal-BHkVbP3T.woff2) format("woff2"),url(/assets/nunito-vietnamese-400-normal-DtOtW02z.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-latin-ext-400-normal-i-8OOpdj.woff2) format("woff2"),url(/assets/nunito-latin-ext-400-normal-CjMJVfGn.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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-display:swap;font-weight:400;src:url(/assets/nunito-latin-400-normal-r8SDr6Up.woff2) format("woff2"),url(/assets/nunito-latin-400-normal-DKg4f3fz.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2) format("woff2"),url(/assets/nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2) format("woff2"),url(/assets/nunito-cyrillic-700-normal-DfHRUDv-.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-vietnamese-700-normal-Ch8EUCfz.woff2) format("woff2"),url(/assets/nunito-vietnamese-700-normal-C9SQsXvj.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2) format("woff2"),url(/assets/nunito-latin-ext-700-normal-D4woHhbd.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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-display:swap;font-weight:700;src:url(/assets/nunito-latin-700-normal-Dort48En.woff2) format("woff2"),url(/assets/nunito-latin-700-normal-OcDqTBcA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(/assets/nunito-cyrillic-ext-800-normal-pjRatrRO.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(/assets/nunito-cyrillic-800-normal-DymMgApb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(/assets/nunito-vietnamese-800-normal-Dz0hZPb5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(/assets/nunito-latin-ext-800-normal-CDcxIxx8.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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-display:swap;font-weight:800;src:url(/assets/nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(/assets/nunito-latin-800-normal-D-J0wlBY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--fs: 18px;--bg: #f4f2ff;--bg-top: #e9e4ff;--bar-bg: rgba(233, 228, 255, .88);--card: #ffffff;--text: #1f1b3d;--muted: #6c6889;--line: #e6e2f5;--accent: #6246ea;--accent-dark: #4a30c9;--accent-soft: rgba(98, 70, 234, .1);--accent-text: #ffffff;--tw: #e0435a;--g: #18a058;--g-bg: rgba(24, 160, 88, .12);--y: #e8870c;--y-bg: rgba(245, 158, 11, .15);--r: #e5485d;--r-bg: rgba(229, 72, 93, .12);--shadow: 0 1px 2px rgba(31, 27, 61, .04), 0 6px 18px rgba(31, 27, 61, .06);--tap: 44px;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #14122a;--bg-top: #1e1945;--bar-bg: rgba(30, 25, 69, .88);--card: #1f1c3b;--text: #edebff;--muted: #a4a0c6;--line: #322e57;--accent: #8d7bff;--accent-dark: #6553e0;--accent-soft: rgba(141, 123, 255, .16);--accent-text: #ffffff;--tw: #ff7d8f;--g: #4cd18c;--g-bg: rgba(76, 209, 140, .16);--y: #ffb340;--y-bg: rgba(255, 179, 64, .16);--r: #ff7d8f;--r-bg: rgba(255, 125, 143, .16);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 18px rgba(0, 0, 0, .25);color-scheme:dark}}@media (hover: hover) and (pointer: fine){:root{--tap: 32px}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:linear-gradient(var(--bg-top),var(--bg) 360px) no-repeat,var(--bg);color:var(--text);font:var(--fs)/1.6 "Nunito",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Hiragino Sans","Microsoft YaHei","Segoe UI",sans-serif;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}.muted{color:var(--muted)}.center{min-height:60vh;display:grid;place-items:center}.page{max-width:1200px;margin:0 auto;padding:0 16px calc(16px + env(safe-area-inset-bottom))}.page.narrow{max-width:712px}.page.has-foot{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;margin:0 -16px;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:var(--bar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 0 0 100vmax var(--bar-bg);clip-path:inset(0 -100vmax)}.bar h1{flex:1;min-width:0;margin:0;font-size:1.1em;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar .count{color:var(--muted);font-size:.9em}.icon{min-height:var(--tap);padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:.85em;font-weight:700;white-space:nowrap;box-shadow:0 2px 0 var(--line)}.icon:active:not(:disabled){transform:translateY(2px);box-shadow:none}.note{margin:10px 0 0;font-size:.8em;color:var(--muted)}.primary{min-height:50px;padding:0 22px;border:0;border-radius:14px;background:var(--accent);color:var(--accent-text);font-weight:800;letter-spacing:.02em;box-shadow:0 4px 0 var(--accent-dark);transition:transform .08s,box-shadow .08s}.primary:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--accent-dark)}.primary:disabled{background:var(--line);color:var(--muted);box-shadow:none}.link{border:0;background:none;color:var(--accent);padding:8px 0;min-height:var(--tap)}.foot{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--bar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line)}.foot .primary{flex:0 1 480px}.foot .score{font-weight:600;white-space:nowrap}.toast{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom));z-index:10;transform:translate(-50%);max-width:calc(100% - 32px);padding:10px 16px;border-radius:14px;background:var(--r);color:#fff;font-size:.9em;font-weight:700}.login{max-width:380px;margin:12vh auto 0;padding:0 16px;text-align:center}.login h1{font-size:1.6em;font-weight:800;margin-bottom:4px}.login form{display:grid;gap:12px;margin-top:24px}.login input{min-height:48px;padding:0 14px;border:2px solid var(--line);border-radius:14px;background:var(--card);color:var(--text);font:inherit}.login input:focus{outline:none;border-color:var(--accent)}.login .msg{color:var(--r);font-size:.9em}.home{max-width:680px;margin:0 auto;padding-top:14px;display:grid;gap:12px}.card{border:1px solid var(--line);border-radius:20px;background:var(--card);box-shadow:var(--shadow)}.home .note{margin:0 2px -4px}.sec{margin:12px 4px -4px;font-size:.9em;font-weight:800;color:var(--text)}.sec small{margin-left:8px;font-weight:400;font-size:.85em;color:var(--muted)}.hero{padding:20px;border:0;color:#fff;background:linear-gradient(135deg,#6246ea,#8f5cf0 60%,#c05ce6);box-shadow:0 10px 24px #6246ea47}.hero-tag{margin:0;font-size:.85em;font-weight:700;opacity:.9}.hero h2{margin:4px 0;font-size:1.55em;font-weight:800;line-height:1.25}.hero-meta{margin:0;font-size:.85em;opacity:.85}.hero .primary{width:100%;margin-top:18px;font-size:1.1em;background:#fff;color:#4a30c9;box-shadow:0 4px #28147859}.hero .primary:active{box-shadow:0 1px #28147859}.hero-loading{min-height:200px;opacity:.5}.steps{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}.steps li{position:relative;padding-left:30px;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px}.steps li:before{content:"";position:absolute;left:0;top:.25em;width:18px;height:18px;border-radius:50%;box-sizing:border-box;border:2px solid rgba(255,255,255,.7)}.steps li.step-now:before{background:#fff;box-shadow:0 0 0 4px #ffffff40}.steps li.step-done{opacity:.7}.steps li.step-done:before{content:"✓";display:grid;place-items:center;background:#ffffff4d;border:0;font-size:.7em;font-weight:800}.steps li.step-todo{opacity:.75}.steps b{font-size:1.15em;font-weight:800}.steps li.step-now b{font-size:1.3em}.steps span{font-size:.85em;opacity:.85}.steps small{flex-basis:100%;font-size:.8em;opacity:.85}.stats{padding:14px 16px 0}.streak{display:flex;align-items:baseline;gap:6px;margin:0}.streak{font-weight:700}.streak b{font-size:1.7em;font-weight:800;color:var(--y);font-variant-numeric:tabular-nums}.week{display:flex;justify-content:space-between;margin-top:10px}.wd{display:grid;justify-items:center;gap:2px;font-size:.78em;color:var(--muted)}.wd i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:700;color:#fff;border:2px dashed var(--line)}.wd.on i{border:0;background:var(--y)}.wd.now{color:var(--text);font-weight:600}.wd.now:not(.on) i{border-color:var(--y)}.totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:14px -16px 0;border-top:1px solid var(--line)}.totals>*{padding:10px 12px;white-space:nowrap;display:grid;align-content:start;text-align:left}.totals>*+*{border-left:1px solid var(--line)}.totals .pct{margin-left:4px;font-size:.6em;font-weight:600;color:var(--muted)}.mini-bar{display:block;height:4px;margin-top:6px;border-radius:2px;background:var(--line);overflow:hidden}.mini-bar i{display:block;height:100%}.totals b{font-size:1.45em;font-weight:800;line-height:1.3;font-variant-numeric:tabular-nums}.totals span{font-size:.8em;color:var(--muted)}.level{overflow:hidden}.level.cur{border-color:var(--accent)}.level-head{width:100%;min-height:52px;padding:8px 16px;display:flex;align-items:center;gap:12px;text-align:left;border:0;background:none}.level-name{font-weight:800;white-space:nowrap}.dots{flex:1;display:flex;gap:4px;min-width:0}.dots i{width:8px;height:8px;border-radius:50%;background:var(--line);flex:none}.dots i.half{background:var(--y)}.dots i.on{background:var(--g)}.level-label{font-size:.8em;color:var(--muted);white-space:nowrap}.level.cleared .level-label{color:var(--g);font-weight:600}.level-head:after{content:"›";color:var(--muted);transition:transform .2s}.level-head[aria-expanded=true]:after{transform:rotate(90deg)}.plist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.plist li+li{border-top:1px solid var(--line)}.plist button{width:100%;min-height:56px;padding:8px 16px;display:grid;grid-template-columns:2.4em minmax(0,1fr) auto;column-gap:6px;align-items:center;text-align:left;border:0;background:none}.plist button:hover{background:var(--bg)}.plist .is-next{box-shadow:inset 4px 0 0 var(--accent);background:var(--accent-soft)}.pno{grid-row:span 2;color:var(--muted);font-size:.85em;font-variant-numeric:tabular-nums}.ptitle{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pstatus{grid-row:span 2;font-size:.9em}.pstatus.next{font-size:.78em;font-weight:800;color:var(--accent)}.plist .pmeta{grid-column:2;font-size:.78em;color:var(--muted)}.hero-done{background:linear-gradient(135deg,#12a150,#2bbf7a 60%,#4fcfa0);box-shadow:0 10px 24px #18a05840}.hero .link{margin-top:8px;font-size:.9em;font-weight:700;color:#fff;text-decoration:underline;text-underline-offset:3px}.streak small{margin-left:4px;font-size:.75em;color:var(--muted)}.badge-row{margin:0 -16px;padding:12px 16px 14px;border-top:1px solid var(--line)}.badge-none,.badge-next{margin:0;font-size:.85em;color:var(--muted)}.badge-next{margin-top:8px}.badge-next span{margin-left:6px}.badges{display:flex;flex-wrap:wrap;gap:8px}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px 4px 6px;border-radius:999px;background:var(--y-bg);font-size:.85em;font-weight:600}.badge i{font-style:normal}.popup-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:16px;background:#00000073;animation:fade .2s}.popup{width:min(340px,100%);padding:24px 20px 20px;border-radius:20px;background:var(--card);text-align:center;animation:pop .35s cubic-bezier(.2,1.4,.4,1)}.popup-icon{font-size:3.5em;line-height:1.2}.popup p{margin:4px 0 0}.popup h2{margin:2px 0 12px}.popup .badges{justify-content:center;margin-bottom:12px}.popup .primary{width:100%}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:scale(.7);opacity:0}}.done{max-width:520px;margin:24px auto 0;text-align:center}.done-emoji{font-size:3.5em;line-height:1.2;animation:pop .5s cubic-bezier(.2,1.4,.4,1)}.done h2{margin:6px 0 2px;font-size:1.4em}.done>.muted{margin:0 0 16px}.done .tally{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.done .tally small{font-size:.5em;font-weight:400;color:var(--muted)}.done-badges{margin-top:14px;padding:12px 16px 16px}.done-badges h3{margin:0 0 8px;font-size:.95em}.done-badges .badges{justify-content:center}.done-actions{display:grid;gap:10px;margin-top:20px}.done-actions .icon{min-height:46px}.tally .tstreak{background:var(--accent-soft)}.remind{padding:14px 16px}.remind-title{margin:0 0 8px;font-weight:600}.remind p.muted{margin:0;font-size:.85em}.remind-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.remind-row select{min-height:var(--tap);padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);font:inherit}.remind-hint{flex:1;min-width:8em;font-size:.85em;color:var(--muted)}.remind-row .primary{min-height:var(--tap)}.remind-msg{margin:8px 0 0;font-size:.85em;color:var(--r)}.qprogress{display:flex;align-items:center;gap:12px;margin:14px auto 0;max-width:640px;font-size:.85em;color:var(--muted)}.qbar{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.qbar span{display:block;height:100%;background:var(--accent);transition:width .3s}.speak{width:44px;height:44px;border-radius:50%;padding:0;border:1px solid var(--line);background:var(--bg);font-size:1.1em}.speak:hover{border-color:var(--accent)}.cnum{flex:none;width:2.1em;height:2.1em;border-radius:50%;display:grid;place-items:center;font-size:.65em;color:#8a6d45;border:1px solid #e0c896}.scene{position:relative;overflow:hidden;isolation:isolate;height:calc(100vh - 125px);height:calc(100dvh - 125px);min-height:500px;max-width:1100px;margin:10px auto 0;border-radius:18px}.scene .sky,.scene .ground{position:absolute;left:0;right:0;z-index:-2}.scene .sky{top:0;bottom:0}.scene .ground{bottom:0;width:100%;height:38%}.scene-content{position:relative;height:100%;display:flow-root}.scene-meadow{background:linear-gradient(#6fbef3,#bfe7ff 70%)}.scene-beach{background:linear-gradient(#4e4795,#c86a9c 45%,#ffae6b 75%)}.scene-city{background:linear-gradient(#0d1235,#262063 65%,#46397a)}.scene.full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;height:auto;min-height:0;max-width:none;margin:0;border-radius:0}.scene.full .scene-content{display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}.hud{position:relative;z-index:4;flex:none;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:#ffffff8c;-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);border-bottom:1px solid rgba(255,255,255,.5);color:#1f2328}.hud .bar{position:static;max-width:1100px;margin:0 auto;padding:0;background:none;border:0;box-shadow:none;clip-path:none;-webkit-backdrop-filter:none;backdrop-filter:none}.hud .icon{background:#ffffffb3;border-color:#00000014;color:#1f2328}.hud .qprogress{max-width:1100px;margin:8px auto 0;color:#4b5563}.hud .qbar{background:#0000001f}.scene-city .hud,.scene-beach .hud{background:#0e102073;border-bottom-color:#ffffff1a;color:#f1f3f6}.scene-city .hud .icon,.scene-beach .hud .icon{background:#ffffff24;border-color:#ffffff2e;color:#f1f3f6}.scene-city .hud .qprogress,.scene-beach .hud .qprogress{color:#c9ced6}.scene-city .hud .qbar,.scene-beach .hud .qbar{background:#ffffff2e}@media (prefers-color-scheme: dark){.hud{background:#12141e8c;border-bottom-color:#ffffff14;color:#e6e8eb}.hud .icon{background:#282c36b3;border-color:#ffffff1a;color:#e6e8eb}.hud .qprogress{color:#b8bec6}.hud .qbar{background:#ffffff26}}.stage{position:relative;flex:1;min-height:0;width:100%;max-width:1100px;margin:0 auto;display:flow-root}@media (prefers-color-scheme: dark){.scene-meadow:after,.scene-beach:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:#080c2880}}.sun{position:absolute;top:9%;left:10%;width:70px;height:70px;border-radius:50%;background:#ffe066;box-shadow:0 0 0 14px #ffe06640,0 0 60px #ffd650b3}.moon{position:absolute;top:8%;right:12%;width:56px;height:56px;border-radius:50%;background:#fff6d5;box-shadow:0 0 40px #fff6d580}.star{position:absolute;border-radius:50%;background:#fff;animation:twinkle 3s ease-in-out infinite}@keyframes twinkle{50%{opacity:.25}}.cloud{position:absolute;width:110px;height:34px;border-radius:34px;background:#ffffffeb;animation:drift linear infinite}.cloud:before,.cloud:after{content:"";position:absolute;border-radius:50%;background:inherit}.cloud:before{width:50px;height:50px;left:16px;top:-24px}.cloud:after{width:38px;height:38px;left:54px;top:-16px}.scene-beach .cloud{background:#ffdce68c}.cloud.c1{top:14%;animation-duration:70s;animation-delay:-10s}.cloud.c2{top:30%;animation-duration:95s;animation-delay:-60s;transform:scale(.8)}.cloud.c3{top:52%;animation-duration:120s;animation-delay:-30s;transform:scale(.65)}@keyframes drift{0%{left:-160px}to{left:100%}}.signboard{position:relative;z-index:2;width:min(92%,560px);margin:26px auto 0;padding:16px 56px 12px;text-align:center;color:#2e1f0e;background:#fff6e2;border:4px solid var(--sc, #b07a3c);border-radius:14px;box-shadow:inset 0 0 0 4px #fff6e2,inset 0 0 0 6px #e6c891,0 5px #00000040,0 10px 18px #0000002e;transform-origin:50% 0;animation:sign-in .38s cubic-bezier(.3,1.4,.5,1) both}.signboard.oops{animation:sign-shake .45s ease-in-out}@keyframes sign-shake{20%,60%{transform:translate(-8px) rotate(-1deg)}40%,80%{transform:translate(8px) rotate(1deg)}}.signboard.leaving{animation:sign-out .18s ease-in forwards}@keyframes sign-in{0%{opacity:0;transform:perspective(700px) rotateX(-95deg)}to{opacity:1;transform:perspective(700px) rotateX(0)}}@keyframes sign-out{to{opacity:0;transform:perspective(700px) rotateX(90deg)}}.qno{position:absolute;top:-16px;left:50%;transform:translate(-50%);padding:2px 14px;border-radius:999px;white-space:nowrap;background:var(--sc, #b07a3c);color:#fff;font-weight:800;font-size:.85em;letter-spacing:.04em;box-shadow:0 2px #0003;animation:qno-pop .45s ease-out .2s both}@keyframes qno-pop{0%{transform:translate(-50%) scale(0)}60%{transform:translate(-50%) scale(1.3)}to{transform:translate(-50%) scale(1)}}.signboard .w{font-size:2.2em;font-weight:700;line-height:1.15;overflow-wrap:anywhere}.signboard .w.long{font-size:1.7em}.signboard .ipa{margin-top:4px;font-size:1.1em;opacity:.75;font-family:Lucida Sans Unicode,Arial Unicode MS,Segoe UI,-apple-system,sans-serif}.signboard .speak{position:absolute;top:50%;right:10px;transform:translateY(-50%);background:#fff;border-color:#e6c891;color:#2e1f0e}.result-chip{position:relative;z-index:2;width:fit-content;max-width:92%;margin:10px auto 0;padding:6px 14px;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 10px;border-radius:999px;background:#ffffffeb;color:#1f2328;font-size:.9em;animation:chip-in .25s ease-out}.result-chip span{color:#5b6470}@keyframes chip-in{0%{opacity:0;transform:translateY(-8px)}}.balloons{position:absolute;left:0;right:0;top:150px;bottom:64px;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));place-items:center;padding:0 8px}.balloons.leaving{animation:fly-away .25s ease-in forwards}@keyframes fly-away{to{opacity:0;transform:translateY(-80px)}}.balloon{--w: clamp(48px, 14vw, 80px);border:0;background:none;padding:0;color:inherit;display:flex;justify-content:center;max-width:100%;animation:rise .6s cubic-bezier(.2,.8,.3,1.1) both;animation-delay:calc(var(--i) * 70ms)}.balloon:nth-child(2){margin-top:28px}.balloon:nth-child(3){margin-top:-18px}@keyframes rise{0%{opacity:0;transform:translateY(160px)}}.bob{position:relative;display:flex;flex-direction:column;align-items:center;animation:bob 3.2s ease-in-out infinite;animation-delay:calc(var(--i) * -.8s)}@keyframes bob{50%{transform:translateY(-10px) rotate(calc((var(--i) - 1.5) * 1.5deg))}}.balloon .body{width:var(--w);height:calc(var(--w) * 1.5);filter:drop-shadow(0 6px 6px rgba(0,0,0,.15));transition:transform .15s}.balloon:not(:disabled):hover .body{transform:scale(1.06)}.balloon .tag{display:flex;align-items:center;gap:8px;max-width:44vw;margin-top:-2px;padding:8px 14px;border-radius:8px;font-size:1.15em;font-weight:600;line-height:1.35;text-align:left;background:#fff8e8;color:#2e1f0e;border:1px solid #e0c896;box-shadow:0 3px 8px #0000001f;transform:rotate(calc((var(--i) - 1.5) * -1.2deg));transition:opacity .3s,background .3s;position:relative}.balloon.popped .bob{animation:none}.balloon.popped .body{animation:balloon-pop .35s ease-out forwards}@keyframes balloon-pop{40%{transform:scale(1.25)}to{transform:scale(1.4);opacity:0}}.balloon.popped .tag,.balloon.reveal .tag{z-index:2;background:#22a05a;border-color:#22a05a;color:#fff;font-weight:800;box-shadow:0 0 0 4px #22a05a4d,0 8px 18px #00000040;animation:tag-win .5s cubic-bezier(.3,1.6,.5,1) both}.balloon.popped .tag .cnum,.balloon.reveal .tag .cnum{color:#22a05a;background:#fff;border-color:#fff;font-weight:900}@keyframes tag-win{0%{transform:rotate(0) scale(1)}50%{transform:rotate(0) scale(1.28)}to{transform:rotate(0) scale(1.15)}}.balloon.popped .tag:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:12px;border:3px solid #22a05a;animation:ring .7s ease-out 2 both;pointer-events:none}@keyframes ring{to{transform:scale(1.35,1.7);opacity:0}}.burst{position:absolute;top:calc(var(--w) * .32);left:50%;z-index:3;pointer-events:none}.burst i{position:absolute;width:9px;height:14px;border-radius:2px;background:var(--c);animation:burst .7s ease-out forwards}.burst i:nth-child(odd){background:#ffd84d;width:10px;height:10px;border-radius:50%}@keyframes burst{0%{transform:rotate(var(--a)) translateY(0);opacity:1}to{transform:rotate(var(--a)) translateY(-120px) rotate(200deg);opacity:0}}.plus{position:absolute;top:calc(var(--w) * .1);left:50%;z-index:3;transform:translate(-50%);font-weight:900;font-size:1.7em;color:#ffd84d;white-space:nowrap;pointer-events:none;-webkit-text-stroke:1px #8a5a00;text-shadow:0 3px 0 rgba(0,0,0,.3);animation:float-up 1s ease-out forwards}@keyframes float-up{0%{opacity:0;transform:translate(-50%,10px) scale(.6)}25%{opacity:1;transform:translate(-50%,-6px) scale(1.2)}to{opacity:0;transform:translate(-50%,-60px) scale(1)}}.win-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(circle at 50% 55%,#50dc8273,#50dc8200 70%);animation:win-flash .6s ease-out forwards}@keyframes win-flash{0%{opacity:0}30%{opacity:1}to{opacity:0}}.lose-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(circle at 50% 40%,#e6464652,#e6464600 70%);animation:win-flash .5s ease-out forwards}.balloon.deflate .body{animation:deflate 1s ease-in forwards;transform-origin:50% 60%}@keyframes deflate{20%{transform:rotate(-10deg) scale(.95,.85)}40%{transform:rotate(8deg) scale(.85,.7)}60%{transform:rotate(-6deg) scale(.75,.6)}to{transform:translateY(50px) rotate(4deg) scale(.6,.5);opacity:.55}}.balloon.deflate .bob{animation:none}.balloon.deflate .tag{z-index:2;background:#d63a3f;border-color:#d63a3f;color:#fff;font-weight:800;box-shadow:0 0 0 4px #d63a3f4d,0 8px 18px #00000040;animation:tag-lose .5s ease-out both}.balloon.deflate .tag .cnum{color:#d63a3f;background:#fff;border-color:#fff;font-weight:900}@keyframes tag-lose{0%{transform:rotate(0) scale(1)}20%{transform:rotate(0) scale(1.15) translate(-7px)}40%{transform:rotate(0) scale(1.15) translate(7px)}60%{transform:rotate(0) scale(1.15) translate(-5px)}80%{transform:rotate(0) scale(1.15) translate(4px)}to{transform:rotate(0) scale(1.12)}}.balloons{transition:bottom .35s ease-out}.balloons.with-sheet{bottom:250px}.balloon.reveal .body{animation:glow 1s ease-in-out 2}@keyframes glow{50%{filter:drop-shadow(0 0 16px #fff) drop-shadow(0 0 6px var(--c));transform:scale(1.08)}}.balloon.dim{opacity:.25;transition:opacity .3s}.skip-btn{position:absolute;left:50%;bottom:16px;z-index:2;transform:translate(-50%);min-height:var(--tap);padding:0 22px;border:0;border-radius:999px;background:#ffffffd9;color:#333;font-size:.9em;box-shadow:0 2px 8px #00000026}.sheet{position:absolute;left:10px;right:10px;bottom:10px;z-index:3;max-width:620px;margin:0 auto;padding:14px 16px;border-radius:16px;background:var(--card);color:var(--text);border-top:5px solid var(--r);box-shadow:0 -4px 24px #00000040;animation:sheet-up .3s ease-out .35s both}@keyframes sheet-up{0%{transform:translateY(110%)}}.summary{max-width:640px;margin:20px auto 0}.summary h2{margin:0 0 12px;font-size:1.15em}.summary h3{margin:24px 0 8px;font-size:1em}.tally{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}.tally div{padding:12px 6px;border-radius:12px;font-size:.85em}.tally b{display:block;font-size:1.9em;font-weight:800;line-height:1.2}.tally .t2{background:var(--g-bg)}.tally .t1{background:var(--y-bg)}.tally .t0{background:var(--r-bg)}.weak{list-style:none;margin:0;padding:0;display:grid;gap:8px}.weak li{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;align-items:center;padding:8px 12px;border-radius:10px;background:var(--card);border:1px solid var(--line);border-left:5px solid var(--line)}.weak li.m1{border-left-color:var(--y)}.weak li.m0{border-left-color:var(--r)}.weak .speak{grid-row:span 3;width:38px;height:38px}.weak .w{font-weight:700;font-size:1.15em}.weak .ipa{font-size:.9em;opacity:.8}.weak .mean{font-size:.8em;color:var(--muted)}.again{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.round-info{margin:10px 0 0;font-size:.85em;text-align:center}.fb-word{display:flex;align-items:center;justify-content:space-between;gap:10px}.fb-word b{font-size:1.4em}.fb-word .speak{width:38px;height:38px}.fb-mean{margin-top:2px;font-weight:600}.fb-mean span{font-weight:400;color:var(--muted);font-size:.9em}.fb-ex{margin:8px 0 0;padding:8px 10px;border-radius:8px;background:var(--bg);font-size:.9em;font-style:normal}.fb-ex b{color:var(--tw)}.fb-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;font-size:.85em}.combo{font-weight:700;color:#e8590c;white-space:nowrap;font-size:calc(.9em + var(--heat) * .04em);animation:pop .3s ease-out}.rest{position:relative;top:50%;transform:translateY(-50%);width:min(90%,420px);margin:0 auto;padding:28px 20px;text-align:center;border:1px solid var(--line);border-radius:16px;background:var(--card);animation:rest-in .35s ease-out}.rest h2,.rest p{margin:6px 0}.rest .primary{margin-top:16px;min-width:200px}.rest-emoji{font-size:3em;animation:pop .5s ease-out}@keyframes rest-in{0%{opacity:0;transform:translateY(-50%) scale(.92)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:20}.confetti i{position:absolute;top:-12px;width:8px;height:14px;border-radius:2px;animation-name:confetti-fall;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes confetti-fall{to{transform:translateY(105vh) rotate(calc(var(--rot) + 720deg));opacity:.7}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.confetti{display:none}}.reading{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-top:12px}.passage,.quiz{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.passage .pmeta{margin-bottom:8px;font-size:.8em;color:var(--muted)}.passage p{margin:0 0 .9em}.passage blockquote{margin:0 0 1em;padding:6px 12px;border-left:3px solid var(--line);color:var(--muted);font-size:.85em}.passage .tw{color:var(--tw);cursor:pointer;border-radius:4px;text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:3px}.passage .tw:hover,.passage .tw.on{background:var(--r-bg)}.tw-hint{margin:-4px 0 8px;font-size:.78em;color:var(--muted)}.word-pop{position:fixed;left:50%;bottom:calc(80px + env(safe-area-inset-bottom));z-index:8;transform:translate(-50%);width:min(480px,calc(100% - 24px));padding:12px 16px 14px;border-radius:18px;background:var(--card);border:1px solid var(--line);box-shadow:0 10px 30px #1f1b3d2e;animation:pop-up .2s ease-out}@keyframes pop-up{0%{opacity:0;transform:translate(-50%,12px)}}.wp-head{display:flex;align-items:center;gap:8px}.wp-head b{font-size:1.3em;font-weight:800}.wp-head .speak{width:36px;height:36px;margin-left:auto}.wp-close{width:36px;height:36px;border:0;background:none;color:var(--muted);font-size:1em}.wp-mean{margin-top:2px;font-weight:700}.wp-mean span{font-weight:400;color:var(--muted)}.wp-status{margin-top:6px;font-size:.85em;color:var(--muted)}.passage .blank{font-weight:700;color:var(--accent);white-space:nowrap}.question+.question{margin-top:20px;padding-top:16px;border-top:1px dashed var(--line)}.qtext{font-weight:600}.question ol{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}.opt{width:100%;min-height:var(--tap);padding:8px 12px;text-align:left;border:1px solid var(--line);border-radius:10px;background:var(--bg)}.opt:not(:disabled):hover{border-color:var(--accent)}.opt:disabled{color:var(--text)}.opt.right{background:var(--g-bg);border-color:var(--g);font-weight:600}.opt.wrong{background:var(--r-bg);border-color:var(--r)}.onum{color:var(--muted);margin-right:4px}.expl{margin-top:10px;padding:8px 12px;border-radius:8px;background:var(--y-bg);font-size:.9em}@media (min-width: 600px){.signboard .w{font-size:2.8em}.signboard .w.long{font-size:2.3em}.balloon{--w: clamp(60px, 9vw, 92px)}.balloon .tag{max-width:36vw;font-size:1.3em;padding:10px 18px}}@media (min-width: 1025px),(min-width: 600px) and (orientation: landscape){.page.wide{max-width:1400px}.reading{grid-template-columns:minmax(0,1fr) minmax(0,1fr);height:calc(100vh - 160px - env(safe-area-inset-bottom))}.passage,.quiz{overflow-y:auto}.page.wide.has-foot{padding-bottom:0}}@media (min-width: 900px) and (min-aspect-ratio: 4/3){.balloons{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr;top:170px}.balloon:nth-child(2){margin-top:60px}.balloon:nth-child(3){margin-top:-10px}.balloon:nth-child(4){margin-top:40px}.balloon .tag{max-width:22vw}}@media (max-width: 599px){.scene{margin:8px -16px 0;border-radius:0}.signboard{padding:10px 52px 8px}.balloons{top:130px}.balloon{--w: clamp(50px, 16vw, 72px)}.balloon .tag{font-size:1.1em}.sun{top:auto;left:auto;bottom:34%;right:8%;width:52px;height:52px}}
