:root{--bg-top: #fbfcff;--bg-mid: #f2f5ff;--bg-edge: #e3e9fa;--wash-violet: rgba(124, 58, 237, .16);--wash-blue: rgba(59, 130, 246, .18);--glass-1: rgba(255, 255, 255, .62);--glass-2: rgba(255, 255, 255, .72);--glass-3: rgba(255, 255, 255, .84);--glass-thin: rgba(255, 255, 255, .5);--glass-bar: rgba(252, 253, 255, .88);--blur-3: blur(30px) saturate(1.7);--solid-1: #ffffff;--solid-2: #eef1fb;--solid-3: #fcfdff;--surface-sunken: #e7eaf6;--ink-900: #1c2033;--ink-700: #3a4058;--ink-500: #565d76;--ink-400: #7a8099;--ink-450: #6a7089;--hairline: rgba(28, 32, 51, .08);--hairline-strong: rgba(28, 32, 51, .14);--highlight: rgba(255, 255, 255, .9);--highlight-soft: rgba(255, 255, 255, .3);--rim: rgba(255, 255, 255, .7);--cube-white: #ffffff;--cube-red: #ff3b30;--cube-blue: #0a84ff;--cube-orange: #ff9500;--cube-green: #30c758;--cube-yellow: #ffd60a;--blue-50: rgba(219, 232, 255, .62);--blue-100: #e8f0ff;--blue-200: #cddeff;--blue-500: #4361ee;--blue-800: #1e40af;--indigo-600: #4f46e5;--violet-600: #7c3aed;--violet-ink: #5b21b6;--warm-from: #ffa24e;--warm-to: #ff6ba6;--warm-ink: #4a1226;--warm-icon: #c2410c;--warm-label: #8a3d16;--green-100: rgba(209, 245, 228, .6);--green-500: #10b981;--green-600: #0b8158;--green-700: #047857;--green-ink: #05614a;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 20px;--r-xl: 24px;--r-2xl: 28px;--r-pill: 999px;--e0: 0 1px 1px rgba(28, 32, 51, .04);--e1: 0 1px 2px rgba(28, 32, 51, .05), 0 2px 6px rgba(28, 32, 51, .05);--e2: 0 1px 2px rgba(28, 32, 51, .04), 0 4px 10px rgba(28, 32, 51, .06), 0 10px 24px rgba(28, 32, 51, .06);--e3: 0 2px 4px rgba(28, 32, 51, .05), 0 8px 20px rgba(28, 32, 51, .08), 0 24px 48px rgba(40, 44, 90, .1);--e4: 0 4px 8px rgba(28, 32, 51, .06), 0 16px 32px rgba(40, 44, 90, .1), 0 40px 72px rgba(40, 44, 90, .14);--glow-blue: 0 8px 18px -6px rgba(67, 97, 238, .5), 0 16px 36px -12px rgba(79, 70, 229, .42);--glow-blue-hover: 0 10px 24px -6px rgba(67, 97, 238, .56), 0 22px 44px -14px rgba(79, 70, 229, .46);--glow-warm: 0 8px 18px -6px rgba(255, 122, 138, .46), 0 16px 34px -14px rgba(255, 107, 166, .36);--glow-warm-hover: 0 10px 24px -6px rgba(255, 122, 138, .52), 0 20px 42px -14px rgba(255, 107, 166, .4);--glow-violet: 0 4px 12px -4px rgba(124, 58, 237, .2);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s7: 32px;--s8: 40px;--topbar-h: 0px;--tabbar-h: 0px;--dur-1: .11s;--dur-2: .18s;--dur-3: .26s;--dur-4: .42s;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--font: "SF Pro Rounded", "Segoe UI Rounded", -apple-system, BlinkMacSystemFont, "Trebuchet MS", system-ui, sans-serif;--display: "Baloo 2", ui-rounded, "SF Pro Rounded", "Segoe UI Rounded", -apple-system, system-ui, sans-serif}*{box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}html,body{margin:0;height:100%;overflow:hidden;color:var(--ink-900);font-family:var(--font);font-size:16px;-webkit-text-size-adjust:100%;isolation:isolate;background:var(--bg-mid);background-image:radial-gradient(90% 58% at 10% 0%,var(--wash-violet) 0%,rgba(124,58,237,0) 62%),radial-gradient(80% 55% at 90% 4%,var(--wash-blue) 0%,rgba(59,130,246,0) 60%),radial-gradient(130% 92% at 50% 0%,var(--bg-top) 0%,var(--bg-mid) 45%,var(--bg-edge) 100%);background-attachment:fixed}#app{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,38%,520px);grid-template-rows:minmax(0,1fr);height:100dvh}@media(min-width:641px){#app.is-lean{grid-template-columns:minmax(0,1fr) clamp(300px,28%,380px)}#app.is-lean .lesson-card{flex:0 1 auto;justify-content:flex-start}#app.is-lean .nav-item{flex-direction:column;gap:3px;min-height:50px;padding:4px var(--s1);font-size:12.5px}#app.is-lean .pill.is-current .pill-label{display:none}#app.is-lean .pill{min-width:36px;min-height:36px}#app.is-lean .pill .badge{width:28px;height:28px}#app.is-lean #panel-foot{flex-wrap:wrap;justify-content:flex-start;gap:var(--s2)}#app.is-lean #key-legend{text-align:left}}.skip-link{position:fixed;top:-100px;left:var(--s2);z-index:60;padding:10px var(--s4);border-radius:var(--r-md);background-image:linear-gradient(135deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;font-family:var(--font);font-size:15px;font-weight:700;text-decoration:none;box-shadow:inset 0 1px 0 var(--highlight-soft),var(--glow-blue);transition:top var(--dur-2) var(--ease-out)}.skip-link:focus-visible{top:var(--s2);outline:3px solid var(--ink-900);outline-offset:3px}#mainnav:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}#side{position:relative;z-index:2;grid-column:2;grid-row:1;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--hairline);background:var(--glass-2);box-shadow:inset 1px 0 0 var(--rim),-14px 0 40px #282c5a12}#topbar{display:contents}.topbar-row{order:1;flex:0 0 auto;display:flex;align-items:center;gap:var(--s3);padding:var(--s5) var(--s5) 0}.wordmark{flex:0 1 auto;min-width:0;display:flex;align-items:center;gap:10px;margin:0;font-family:var(--display);font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--ink-900)}.wordmark-glyph{width:32px;height:32px;flex:0 0 auto;border-radius:10px;box-shadow:0 1px 2px #1c20331f,0 4px 10px -3px #282c5a38,inset 0 0 0 1px #ffffff59}.trophy-badge{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;padding:var(--s1) var(--s3);border:0;border-radius:var(--r-pill);background:#fff5e4;color:#8a5206;font-family:var(--font);font-size:15px;font-weight:700;white-space:nowrap;box-shadow:inset 0 0 0 1px #b478143d}.trophy-badge .trophy-icon{width:17px;height:17px}.trophy-badge.is-popped{animation:trophy-pop .55s var(--ease-spring)}.trophy-badge[hidden]{display:none}#mainnav{order:2;flex:0 0 auto;display:flex;gap:3px;margin:var(--s3) var(--s5) 0;padding:3px;border-radius:var(--r-md);background:var(--solid-2);box-shadow:inset 0 0 0 1px var(--hairline)}#mainnav>*{flex:1 1 0;min-width:0}#settings{position:relative;z-index:3}.nav-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;min-height:50px;padding:4px var(--s1);border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-500);font-family:var(--font);font-size:12.5px;font-weight:700;letter-spacing:0;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.nav-item .btn-icon{width:21px;height:21px}.icon-solid{fill:currentColor;stroke:none}.nav-item[aria-current=page],.nav-item[aria-expanded=true]{background:var(--solid-1);color:var(--blue-800);box-shadow:inset 0 0 0 1px var(--hairline),var(--e1)}@media(hover:hover)and (pointer:fine){.nav-item:not([aria-current=page]):not([aria-expanded=true]):hover{background:var(--glass-thin);color:var(--ink-700)}}@media(min-width:1200px){.nav-item{flex-direction:row;gap:7px;min-height:44px;padding:0 var(--s2);font-size:14.5px}.pill.is-current{gap:var(--s2);padding-right:var(--s3)}.pill.is-current .pill-label{display:block}}#stage-row{order:3;flex:0 0 auto;padding:var(--s3) var(--s5) var(--s4);border-bottom:1px solid var(--hairline)}#stagebar{flex:1 1 auto;display:flex;flex-wrap:wrap;gap:6px;align-items:center;overscroll-behavior-x:contain;scrollbar-width:none;scroll-behavior:smooth}.quick-switch{flex:0 0 auto;display:flex;align-items:center;gap:var(--s2);min-height:44px;padding:0 10px 0 6px;border:0;border-radius:var(--r-md);background:var(--glass-1);color:var(--ink-500);font-family:var(--font);font-size:14px;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--rim);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.quick-switch-glyph{display:grid;place-items:center;width:28px;height:28px;flex:0 0 auto;border-radius:var(--r-xs);background:#e2e7f7;color:var(--ink-500);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:13px;font-weight:700;box-shadow:inset 0 0 0 1px var(--hairline);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.quick-switch-track{position:relative;flex:0 0 auto;width:34px;height:20px;border-radius:var(--r-pill);background:#d4daec;box-shadow:inset 0 0 0 1px #1c20331a,inset 0 1px 2px #1c20331a;transition:background-color var(--dur-2) var(--ease-out)}.quick-switch-track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--solid-1);box-shadow:0 1px 2px #1c203338;transition:transform var(--dur-2) var(--ease-spring)}.quick-switch[aria-pressed=true]{background:var(--green-100);color:var(--green-ink);box-shadow:inset 0 0 0 1px #04785738}.quick-switch[aria-pressed=true] .quick-switch-glyph{background-image:linear-gradient(180deg,var(--green-600) 0%,var(--green-700) 100%);color:#fff;box-shadow:inset 0 -1px #0000001f}.quick-switch[aria-pressed=true] .quick-switch-track{background-image:linear-gradient(180deg,#0d9668 0%,var(--green-700) 100%)}.quick-switch[aria-pressed=true] .quick-switch-track:after{transform:translate(14px)}.quick-switch:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}@media(hover:hover)and (pointer:fine){.quick-switch:not([aria-pressed=true]):hover{background:var(--solid-1);color:var(--ink-700)}}@media(max-width:640px),(max-height:760px){.quick-switch{display:none}}#stagebar::-webkit-scrollbar{display:none}.pill{--fill: 0;--fill-from: var(--blue-500);--fill-to: var(--green-500);position:relative;flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:0;min-width:40px;min-height:40px;padding:5px;border:0;border-radius:var(--r-pill);background:var(--glass-1);color:var(--ink-500);font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--rim);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.pill:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background-image:linear-gradient(90deg,var(--fill-from),var(--fill-to));background-repeat:no-repeat;background-size:calc(var(--fill) * 100%) 100%;opacity:.22;transition:background-size .4s var(--ease-soft)}.pill .badge,.pill .pill-label{position:relative}.pill .pill-label{display:none}.pill .badge{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--solid-2);color:var(--ink-500);font-size:15px;font-weight:700;box-shadow:inset 0 0 0 1px var(--hairline)}.pill .badge-num,.pill .badge-check{grid-area:1 / 1}.pill .badge-check{display:none;width:17px;height:17px;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;fill:none}.pill.is-done{--fill: 1;--fill-from: var(--green-500);--fill-to: var(--green-500);background:var(--green-100);color:var(--green-ink);box-shadow:inset 0 0 0 1px #04785733,inset 0 1px 0 var(--rim)}.pill.is-done .badge{background-image:linear-gradient(180deg,var(--green-600) 0%,var(--green-700) 100%);color:#fff;box-shadow:inset 0 -1px #00000024}.pill.is-done .badge-num{display:none}.pill.is-done .badge-check{display:block}.pill.is-current{background:var(--blue-50);color:var(--blue-800);font-weight:700;box-shadow:inset 0 0 0 1px #4361ee47,inset 0 1px #ffffffbf,0 0 0 3px #4361ee21,0 4px 12px -4px #4361ee47}.pill.is-current .badge{background-image:linear-gradient(180deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;box-shadow:inset 0 -1px #00000024}.pill.is-just-done{animation:pill-pulse .6s var(--ease-out)}#statusstrip{order:4;flex:0 0 auto;display:flex;align-items:center;justify-content:center;min-height:34px;padding:2px var(--s5);text-align:center}#stage-caption{display:none;margin:0;color:var(--ink-500);font-size:14px;font-weight:700;letter-spacing:0}#stage-toast{margin:0;padding:var(--s1) var(--s4);border-radius:var(--r-pill);background-image:linear-gradient(180deg,var(--green-600) 0%,var(--green-700) 100%);color:#fff;font-size:15px;font-weight:700;box-shadow:inset 0 1px #ffffff3d,0 1px 2px #04785738,0 8px 18px -6px #0478575c;animation:rise-in var(--dur-3) var(--ease-spring)}#stage-toast.is-tip{background-image:linear-gradient(180deg,#333a55 0%,var(--ink-900) 100%);box-shadow:inset 0 1px #ffffff29,0 1px 2px #1c20333d,0 8px 18px -6px #1c20334d}#stage-toast-break{display:block;font-size:13px;font-weight:600}#stage-toast-break[hidden]{display:none}#stage-area{position:relative;grid-column:1;grid-row:1;min-height:0}#scene,#scene canvas{touch-action:none}#scene{position:absolute;top:0;right:0;bottom:0;left:0}#celebrate[hidden]{display:none}#celebrate{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:start center;padding:var(--s4);pointer-events:none}#confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.confetti-piece{position:absolute;top:-8%;left:var(--x);width:var(--w);height:var(--h);border-radius:2px;background:var(--piece-color);opacity:0;animation:confetti-fall var(--dur) linear var(--delay) infinite}.celebrate-stack{position:relative}.celebrate-burst{position:absolute;top:50%;left:50%;translate:-50% -50%;z-index:-1;width:min(160vw,820px);height:min(160vw,820px);background:radial-gradient(circle,#818cf88c,#93c5fd42 30%,#a5b4fc00 58%),repeating-conic-gradient(from 0deg,#7c3aed57,#7c3aed57 6deg,#7c3aed00 6deg,#7c3aed00 20deg);-webkit-mask-image:radial-gradient(circle,#000 12%,rgba(0,0,0,.55) 42%,transparent 70%);mask-image:radial-gradient(circle,#000 12%,rgba(0,0,0,.55) 42%,transparent 70%);animation:burst-spin 34s linear infinite;pointer-events:none}.celebrate-card{position:relative;z-index:1;margin:0;padding:var(--s7) var(--s8);border:0;border-radius:var(--r-2xl);background:var(--solid-3);text-align:center;box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--highlight),var(--e4);animation:bounce-in var(--dur-4) var(--ease-spring)}.celebrate-headline{margin:0;font-family:var(--display);font-size:clamp(30px,7.5vw,52px);font-weight:800;line-height:1.12;letter-spacing:-.01em;color:var(--ink-900)}.celebrate-shelf{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--s1) 10px;margin:var(--s3) 0 0;padding-top:var(--s3);border-top:1px solid var(--hairline);color:var(--ink-500);font-size:clamp(14px,3.2vw,17px);font-weight:600}.celebrate-shelf[hidden]{display:none}.celebrate-trophies{display:inline-flex;align-items:center;gap:6px;color:#8a5206}.trophy-icon{width:20px;height:20px;flex:0 0 auto;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}.celebrate-trophies .trophy-icon{width:clamp(20px,4.4vw,26px);height:clamp(20px,4.4vw,26px)}#panel{order:5;position:relative;flex:1 1 auto;display:flex;flex-direction:column;gap:var(--s4);min-height:0;padding:0 var(--s5) calc(var(--s5) + env(safe-area-inset-bottom));border:0;background:transparent}.lesson-card{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--s4);border-radius:var(--r-lg);background:var(--glass-1);box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--rim)}#goal-slot{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0}#goal-slot .goal-tracker{flex:1 1 0;width:auto;height:auto;min-height:56px;max-width:100%;max-height:240px;aspect-ratio:1}@media(min-width:641px)and (min-height:761px){.lesson-card:has(.offer:not([hidden])) #goal-slot{display:none}}@media(min-width:641px)and (max-height:560px){.lesson-card:has(.offer:not([hidden])) #goal-slot,.lesson-card:has(.offer:not([hidden])) #stage-intro,.lesson-card:has(.offer:not([hidden])) #counter{display:none}}#verify-banner{margin:0;padding:var(--s3) var(--s4);border-radius:var(--r-md);background-image:linear-gradient(135deg,var(--green-600) 0%,var(--green-700) 100%);color:#fff;font-size:16px;font-weight:700;text-align:center;line-height:1.35;box-shadow:inset 0 1px #ffffff3d,0 2px 4px #0478572e,0 12px 26px -10px #0478575c;animation:rise-in var(--dur-3) var(--ease-spring)}.nav-item:focus-visible,.chip:focus-visible,.settings-close:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}.settings-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:0 var(--s1) var(--s1) var(--s2)}.settings-title{margin:0;color:var(--ink-900);font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:0;text-transform:none}.settings-close{position:relative;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:var(--r-pill);background:var(--glass-thin);color:var(--ink-500);font-family:inherit;cursor:pointer;box-shadow:inset 0 0 0 1px var(--hairline);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.settings-close .btn-icon{width:18px;height:18px;stroke-width:2.2}.settings-close:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.settings-close:hover{background:#e2e7f7;color:var(--ink-900)}.chip-note{margin:calc(var(--s1) - var(--s2)) 0 0;padding-inline:var(--s2);color:var(--ink-500);font-size:13px;font-weight:600;line-height:1.35}.settings-row{position:relative;display:flex;align-items:center;gap:var(--s3);min-height:52px;margin:var(--s3) 0 0;padding:var(--s2) var(--s3) var(--s2) var(--s2);border-radius:var(--r-md);color:var(--ink-700);font-family:inherit;font-size:16px;font-weight:600;text-decoration:none;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.settings-row:before{content:"";position:absolute;left:var(--s2);right:var(--s2);top:calc(var(--s3) / -2 - 1px);height:1px;background:var(--hairline)}.settings-row-label{flex:1 1 auto}.settings-row-chevron{width:16px;height:16px;flex:0 0 auto;stroke:var(--ink-400);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(hover:hover)and (pointer:fine){.settings-row:hover{background:var(--glass-thin);color:var(--ink-900)}}.settings-row:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}.settings-note{margin:var(--s1) 0 0;padding-inline:var(--s2);color:var(--ink-500);font-size:13px;font-weight:600;line-height:1.35}#settings-menu{position:absolute;right:0;top:calc(100% + var(--s2));display:flex;flex-direction:column;gap:var(--s2);width:max-content;max-width:min(88vw,336px);max-height:calc(100dvh - 180px);overflow-y:auto;overscroll-behavior:contain;padding:var(--s3);border:0;border-radius:var(--r-xl);background:var(--solid-3);box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--highlight),var(--e3);transform-origin:top right;animation:pop-in var(--dur-3) var(--ease-spring)}#settings-menu[hidden]{display:none}.chip{display:flex;align-items:center;gap:var(--s3);min-height:56px;padding:var(--s2) var(--s3) var(--s2) var(--s2);border:0;border-radius:var(--r-md);background:var(--glass-thin);color:var(--ink-700);font-family:inherit;font-size:16px;font-weight:600;text-align:left;white-space:nowrap;cursor:pointer;box-shadow:inset 0 0 0 1px var(--hairline);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.chip-glyph{display:grid;place-items:center;width:32px;height:32px;flex:0 0 auto;border-radius:10px;background:#e2e7f7;color:var(--ink-500);font-size:14px;font-weight:700;box-shadow:inset 0 0 0 1px var(--hairline);transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.chip-label{flex:1 1 auto}.switch{position:relative;flex:0 0 auto;width:52px;height:32px;border-radius:var(--r-pill);background:#d4daec;box-shadow:inset 0 0 0 1px #1c20331a,inset 0 1px 2px #1c20331a;transition:background-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:var(--solid-1);box-shadow:0 1px 1px #1c20331a,0 2px 6px #1c20332e,inset 0 -1px #1c20330f;transition:transform var(--dur-2) var(--ease-spring)}.chip[aria-pressed=true]{background:var(--green-100);color:var(--green-ink);box-shadow:inset 0 0 0 1px #04785738}.chip[aria-pressed=true] .chip-glyph{background-image:linear-gradient(180deg,var(--green-600) 0%,var(--green-700) 100%);color:#fff;box-shadow:inset 0 -1px #0000001f}.chip[aria-pressed=true] .switch{background:var(--green-600);background-image:linear-gradient(180deg,#0d9668 0%,var(--green-700) 100%);box-shadow:inset 0 0 0 1px #05614a4d,inset 0 1px 2px #0000001f}.chip[aria-pressed=true] .switch:after{transform:translate(20px)}.chip[hidden]{display:none}#hint-row{display:flex;align-items:flex-start;gap:10px}.card-toggle{position:relative;flex:0 0 auto;margin-left:auto;display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--r-xs);background:transparent;color:var(--ink-400);cursor:pointer;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.card-toggle:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.card-toggle .btn-icon{width:18px;height:18px;stroke-width:2.4;transition:transform var(--dur-2) var(--ease-out)}.lesson-card.is-collapsed .card-toggle .btn-icon{transform:rotate(180deg)}@media(hover:hover)and (pointer:fine){.card-toggle:hover{background:var(--glass-thin);color:var(--ink-700)}}.card-toggle:focus-visible{outline:3px solid var(--ink-900);outline-offset:2px}.lesson-card.is-collapsed #hint,.lesson-card.is-collapsed #notation,.lesson-card.is-collapsed #hint-sub,.lesson-card.is-collapsed #stage-intro,.lesson-card.is-collapsed #notation-note,.lesson-card.is-collapsed #goal-slot{display:none}.notation-chip{flex:0 0 auto;margin-top:2px;padding:var(--s1) var(--s2);border:0;border-radius:var(--r-xs);background:var(--glass-1);color:var(--ink-900);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:clamp(16px,4vw,20px);font-weight:600;line-height:1.3;box-shadow:inset 0 0 0 1px var(--hairline)}.notation-chip[hidden]{display:none}#notation-note{margin:6px 0 0;color:var(--ink-500);font-size:13px;font-weight:600;text-align:right}#hint{flex:1 1 auto;margin:0 0 var(--s1);min-height:2.7em;color:var(--ink-900);font-size:clamp(18px,4.4vw,22px);font-weight:600;line-height:1.35;letter-spacing:-.005em}#stage-intro{flex:0 0 auto;margin:0 0 var(--s2);padding:var(--s2) var(--s3);border:0;border-radius:var(--r-sm);background:var(--blue-50);color:var(--blue-800);font-size:15px;font-style:normal;font-weight:600;line-height:1.4;box-shadow:inset 3px 0 0 var(--blue-500),inset 0 0 0 1px #4361ee24}#stage-intro[hidden]{display:none}.stage-intro-body{display:block;min-width:0}#stage-intro.is-new{animation:rise-in var(--dur-3) var(--ease-out)}.stage-watch{display:inline-flex;align-items:center;gap:4px;margin-left:var(--s2);padding:2px 10px;border-radius:var(--r-pill);background:#ffffffc7;color:var(--blue-800);font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap;vertical-align:baseline;box-shadow:inset 0 0 0 1px #4361ee38;transition:background-color var(--dur-2) var(--ease-out)}.stage-watch-icon{width:11px;height:11px;flex:0 0 auto;fill:currentColor}@media(hover:hover)and (pointer:fine){.stage-watch:hover{background:var(--solid-1)}}.goal-tracker{flex:0 0 auto;width:72px;height:72px;overflow:visible}.goal-tracker[hidden]{display:none}.goal-tracker[data-color=white]{--goal-tint: rgba(255, 255, 255, .3);--goal-line: rgba(46, 63, 130, .24);--goal-fill: var(--cube-white);--goal-edge: rgba(46, 63, 130, .42)}.goal-tracker[data-color=yellow]{--goal-tint: rgba(255, 214, 10, .22);--goal-line: rgba(46, 63, 130, .24);--goal-fill: var(--cube-yellow);--goal-edge: rgba(133, 100, 0, .55)}.goal-plate{fill:#2e3f821c;stroke:#2e3f821a;stroke-width:1}.goal-cell{fill:var(--goal-tint);stroke:var(--goal-line);stroke-width:1.25;transition:fill var(--dur-2) var(--ease-out),stroke var(--dur-2) var(--ease-out)}.goal-cell.is-done,.goal-centre{fill:var(--goal-fill);stroke:var(--goal-edge);stroke-width:1.5}.goal-idle{fill:#2e3f8212;stroke:none}.goal-cell.is-pop{transform-box:fill-box;transform-origin:center;animation:goal-pop var(--dur-3) var(--ease-spring)}#hint-sub{margin:0 0 var(--s1);color:var(--violet-ink);font-size:15px;font-weight:700;line-height:1.35}#hint-sub.is-dismissed{display:none}#app:has(#celebrate:not([hidden])) #hint-sub{display:none}.offer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px 10px;max-width:640px;margin:0 0 var(--s2);padding:var(--s2) var(--s2) var(--s2) var(--s3);border:0;border-radius:var(--r-md);background:#fff5e6;color:#5a3a08;font-size:14px;font-weight:700;box-shadow:inset 0 0 0 1px #b478142e,var(--e1)}.offer[hidden]{display:none}.offer-text{flex:0 1 auto}.offer-buttons{display:flex;flex:0 0 auto;gap:var(--s2)}.offer-btn{position:relative;min-height:40px;padding:var(--s2) var(--s4);border:0;border-radius:var(--r-pill);background:var(--solid-1);color:var(--ink-700);font-family:inherit;font-size:14px;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:inset 0 0 0 1px var(--hairline),var(--e0)}.offer-btn:after{content:"";position:absolute;top:-8px;right:0;bottom:-8px;left:0}.offer-btn.is-lead{background-image:linear-gradient(135deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;box-shadow:inset 0 1px 0 var(--highlight-soft),0 4px 12px -4px #4361ee75}.offer-btn:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}#counter{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 5px;margin:0;min-height:1.3em;color:var(--ink-900);font-size:16px;font-weight:700}.counter-stage{font-weight:700}.counter-total{margin-left:3px;color:var(--ink-500);font-size:13.5px;font-weight:600}#buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3);margin-top:auto}#next{grid-area:1 / 1 / 2 / -1}#prev{grid-area:2 / 1}#shuffle{grid-area:2 / 2}#auto{grid-area:3 / 1 / 4 / -1}@media(min-width:641px)and (min-height:561px){#buttons.is-idle #shuffle{grid-area:1 / 1 / 2 / -1;min-height:clamp(58px,8.5vh,80px);font-size:clamp(19px,4.8vw,23px);font-weight:800}#buttons.is-idle #shuffle .btn-icon{width:22px;height:22px}#buttons.is-idle #next{grid-area:2 / 1;min-height:54px;font-size:clamp(17px,4vw,19px);font-weight:700}#buttons.is-idle #prev{grid-area:2 / 2}}#panel-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}#key-legend{display:none;margin:0;color:var(--ink-500);font-size:13px;font-weight:600;text-align:right}@media(hover:hover)and (pointer:fine){#key-legend{display:block}}.btn{position:relative;min-height:60px;padding:var(--s2) var(--s3);border:0;border-radius:var(--r-pill);font-family:inherit;font-size:clamp(17px,4vw,19px);font-weight:700;letter-spacing:-.01em;cursor:pointer;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);transition:transform var(--dur-3) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out),filter var(--dur-2) var(--ease-out)}.btn:active:not(:disabled){transform:translateY(1px) scale(.985);transition-duration:var(--dur-1)}@media(hover:hover)and (pointer:fine){.btn:not(:disabled):hover{transform:translateY(-1px);filter:brightness(1.04);box-shadow:var(--btn-shadow-hover)}}.btn:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px;box-shadow:0 0 0 3px var(--solid-1),var(--btn-shadow)}.btn-icon{width:20px;height:20px;flex:0 0 auto;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}.btn-shuffle{--btn-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(140, 30, 70, .14), var(--glow-warm);--btn-shadow-hover: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(140, 30, 70, .14), var(--glow-warm-hover);background-color:var(--warm-from);background-image:linear-gradient(135deg,var(--warm-from) 0%,var(--warm-to) 100%);color:var(--warm-ink);box-shadow:var(--btn-shadow)}.btn-step{--btn-shadow: inset 0 0 0 1px var(--hairline-strong), inset 0 1px 0 var(--rim), 0 1px 2px rgba(28, 32, 51, .05), 0 6px 14px -6px rgba(40, 44, 90, .16);--btn-shadow-hover: inset 0 0 0 1px rgba(28, 32, 51, .2), inset 0 1px 0 var(--rim), 0 1px 2px rgba(28, 32, 51, .05), 0 10px 20px -6px rgba(40, 44, 90, .2);background-color:var(--glass-1);background-image:none;color:var(--ink-700);box-shadow:var(--btn-shadow)}.btn-next{--btn-shadow: inset 0 1px 0 var(--highlight-soft), inset 0 -1px 0 rgba(0, 0, 0, .1), 0 1px 2px rgba(47, 69, 204, .28), var(--glow-blue);--btn-shadow-hover: inset 0 1px 0 var(--highlight-soft), inset 0 -1px 0 rgba(0, 0, 0, .1), 0 1px 2px rgba(47, 69, 204, .28), var(--glow-blue-hover);min-height:clamp(58px,8.5vh,80px);background-color:var(--blue-500);background-image:linear-gradient(135deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;font-size:clamp(19px,4.8vw,23px);font-weight:800;letter-spacing:.005em;box-shadow:var(--btn-shadow)}.btn-next .btn-icon{width:22px;height:22px}.btn-auto{--btn-shadow: inset 0 0 0 1px rgba(124, 58, 237, .28), inset 0 1px 0 var(--rim), 0 1px 2px rgba(28, 32, 51, .04), var(--glow-violet);--btn-shadow-hover: inset 0 0 0 1px rgba(124, 58, 237, .42), inset 0 1px 0 var(--rim), 0 1px 2px rgba(28, 32, 51, .04), 0 8px 20px -6px rgba(124, 58, 237, .28);background-color:#f3f0ffb8;background-image:none;color:var(--violet-ink);box-shadow:var(--btn-shadow)}@supports ((background-clip: text) or (-webkit-background-clip: text)){.btn-auto:not(:disabled) .btn-label{background-image:linear-gradient(120deg,var(--indigo-600) 0%,var(--violet-600) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}}.btn-auto .btn-icon{fill:var(--violet-ink);stroke:none}.btn-auto:disabled .btn-icon{fill:var(--ink-400)}.btn-auto .icon-pause,.btn-auto.is-running .icon-bolt{display:none}.btn-auto.is-running .icon-pause{display:block}.btn:disabled{background-color:var(--surface-sunken);background-image:none;color:var(--ink-400);box-shadow:inset 0 0 0 1px var(--hairline);transform:none;cursor:default}.btn:disabled .btn-icon{opacity:.5}.btn.is-nudged{animation:nudge .3s ease-in-out}@supports ((backdrop-filter: blur(20px)) or (-webkit-backdrop-filter: blur(20px))){#settings-menu,.celebrate-card{background:var(--glass-3);-webkit-backdrop-filter:var(--blur-3);backdrop-filter:var(--blur-3)}@media(max-width:640px){.offer{background:#fff7e8d6;-webkit-backdrop-filter:var(--blur-3);backdrop-filter:var(--blur-3)}}}@media(min-width:641px)and (min-height:900px){#stage-intro{font-size:16px}#hint{font-size:24px}}@media(min-width:641px)and (max-height:760px){.topbar-row{padding:10px var(--s4) 0}#mainnav{margin:var(--s2) var(--s4) 0}#stage-row{padding:var(--s2) var(--s4) 10px}#statusstrip{min-height:18px;padding-inline:var(--s4)}#panel{gap:var(--s2);padding:0 var(--s4) var(--s3)}.lesson-card{padding:var(--s2)}#stage-intro{padding:6px var(--s3)}#buttons{gap:var(--s2)}#buttons .btn:not(.btn-next){min-height:54px}#hint{font-size:19px}#stage-intro-text{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.stage-watch{margin-left:0;margin-top:3px}}@media(max-width:640px),(min-width:641px)and (max-height:760px){.lesson-card{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--s2);align-items:center}#hint-row,.offer,#hint-sub,#counter,#notation-note{grid-column:1 / -1}#stage-intro{grid-column:1}#goal-slot{grid-column:2;display:block}#goal-slot .goal-tracker{width:64px;height:64px;max-height:none;aspect-ratio:auto}}@media(min-width:641px)and (max-height:560px){#side{overflow-y:auto;overscroll-behavior-y:contain}.topbar-row{padding:4px var(--s4) 0}#mainnav{margin:4px var(--s4) 0}.wordmark{font-size:18px}.wordmark-glyph{width:26px;height:26px;border-radius:var(--r-xs)}#stage-row{padding:4px var(--s4)}#stagebar{flex-wrap:nowrap;gap:5px}.pill{min-width:30px;min-height:30px;padding:3px}.pill .badge{width:24px;height:24px;font-size:13px}.nav-item{min-height:44px;gap:2px;font-size:12px}.nav-item .btn-icon{width:19px;height:19px}#statusstrip{min-height:0;padding-block:0}.lesson-card{padding:4px 6px 10px;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 10px),transparent 100%);mask-image:linear-gradient(to bottom,#000 calc(100% - 10px),transparent 100%)}#hint{margin:0;min-height:0;font-size:17px}#stage-intro{margin:3px 0 0;padding:2px var(--s2);font-size:13px}#stage-intro-text{-webkit-line-clamp:3}.counter-total{display:none}.stage-watch{margin-top:2px;padding:1px 8px;font-size:12px}#counter{margin-top:2px;font-size:13px}#key-legend{display:none}#settings-menu{position:fixed;top:var(--s2);right:var(--s2);bottom:var(--s2);left:auto;width:min(336px,46vw);max-width:none;max-height:none;transform-origin:top right}#buttons{position:sticky;bottom:0;z-index:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s1);margin:auto calc(var(--s4) * -1) 0;padding:var(--s1) var(--s4) calc(var(--s1) + env(safe-area-inset-bottom));border-top:1px solid var(--hairline);background:var(--glass-bar)}#shuffle{grid-area:1 / 1}#prev{grid-area:1 / 2}#next{grid-area:1 / 3}#buttons #auto{grid-area:1 / 4;margin-left:var(--s2);box-shadow:inset 1px 0 0 var(--hairline)}#buttons #auto:focus-visible{box-shadow:0 0 0 3px var(--solid-1),inset 1px 0 0 var(--hairline)}#buttons .btn,#buttons .btn:not(.btn-next){flex-direction:column;gap:2px;min-height:52px;padding:var(--s1) 0;border-radius:var(--r-sm);background-color:transparent;background-image:none;color:var(--ink-500);font-size:12px;font-weight:700;letter-spacing:0;white-space:nowrap;box-shadow:none}#buttons .btn .btn-icon{width:22px;height:22px}#buttons .btn:disabled{background:transparent;color:var(--ink-450);box-shadow:none}#buttons .btn:focus-visible{box-shadow:0 0 0 3px var(--solid-1)}#buttons .btn-shuffle:not(:disabled) .btn-icon{color:var(--warm-icon)}#buttons .btn-shuffle:not(:disabled) .btn-label{color:var(--warm-label)}#buttons .btn-auto:not(:disabled){color:var(--violet-ink)}#buttons .btn-auto .btn-icon{fill:currentColor}#buttons .btn-auto:not(:disabled) .btn-label{background-image:none;-webkit-text-fill-color:currentColor;color:currentColor}#buttons #next{flex-direction:column-reverse;min-height:56px;margin-block:-2px;background-color:var(--blue-500);background-image:linear-gradient(135deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;font-weight:800;box-shadow:inset 0 1px 0 var(--highlight-soft),0 1px 2px #2f45cc47,var(--glow-blue)}#buttons #next:disabled{background-color:var(--surface-sunken);background-image:none;color:var(--ink-500);box-shadow:inset 0 0 0 1px var(--hairline)}#buttons.is-idle #next{margin-block:0;min-height:52px;font-weight:700}#buttons.is-idle #shuffle:not(:disabled){margin-block:-2px;min-height:56px;background-image:linear-gradient(135deg,var(--warm-from) 0%,var(--warm-to) 100%);color:var(--warm-ink);font-weight:800;box-shadow:inset 0 1px #ffffff80,inset 0 -1px #8c1e4624,var(--glow-warm)}#buttons.is-idle #shuffle:not(:disabled) .btn-icon,#buttons.is-idle #shuffle:not(:disabled) .btn-label{color:var(--warm-ink)}}@media(max-width:640px){.topbar-row{width:100%;gap:var(--s2)}.stage-watch{margin-left:6px;padding:1px 8px;font-size:12.5px}#stagebar{width:100%;flex-wrap:nowrap;justify-content:center;gap:6px;overflow-x:hidden}#stage-toast{padding:5px 12px;font-size:13px;line-height:1.3}.celebrate-stack{transform:translateY(-26%)}.celebrate-card{padding:var(--s6) var(--s6)}.pill.is-current{box-shadow:inset 0 0 0 1px #4361ee47,0 0 0 2px #4361ee26}.offer{justify-content:center;margin:0 0 6px;padding:5px 6px 5px 10px;font-size:13px}.offer-btn{min-height:36px;padding:4px var(--s3);font-size:13px}.offer-btn:after{top:-10px;right:0;bottom:-10px;left:0}#settings-menu{padding:var(--s2)}}@media(max-width:640px){.offer{position:absolute;left:10px;right:10px;bottom:calc(100% - 2px);z-index:2;justify-content:center;margin:0;box-shadow:inset 0 0 0 1px #b478142e,var(--e3)}}@media(max-width:640px){:root{--topbar-h: 69px;--tabbar-h: calc(48px + env(safe-area-inset-bottom)) }#side{display:contents}#app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 0 minmax(0,1fr) auto;padding-bottom:var(--tabbar-h)}#topbar{grid-column:1;grid-row:1}#statusstrip{grid-column:1;grid-row:2}#stage-area{grid-column:1;grid-row:3}#panel{grid-column:1;grid-row:4}#topbar{display:flex;flex-direction:column;align-items:center;gap:0;min-height:var(--topbar-h);padding:2px 10px 3px;border-bottom:1px solid var(--hairline)}.topbar-row{padding:0}#stage-row{padding:0;border-bottom:0}.wordmark{font-size:17px}.wordmark-glyph{width:24px;height:24px;border-radius:var(--r-xs)}.pill,.pill.is-current{flex:0 1 34px;min-width:32px;min-height:32px;padding:4px;gap:0}.pill.is-current .pill-label{display:none}.pill .badge{width:24px;height:24px;font-size:13px}#mainnav{position:fixed;left:0;right:0;bottom:0;z-index:20;gap:0;margin:0;padding:0 var(--s1) env(safe-area-inset-bottom);border-radius:0;border-top:1px solid var(--hairline);background:var(--glass-bar);box-shadow:0 -10px 30px #282c5a0f}.nav-item{min-height:48px;gap:2px;border-radius:var(--r-sm);font-size:12.5px}.nav-item[aria-current=page],.nav-item[aria-expanded=true]{background:transparent;color:var(--blue-800);box-shadow:none}.nav-item[aria-current=page] .btn-icon,.nav-item[aria-expanded=true] .btn-icon{stroke-width:2.4}#settings{position:static}#settings-menu{position:fixed;top:auto;left:var(--s2);right:var(--s2);bottom:calc(var(--tabbar-h) + var(--s2));width:auto;max-width:none;max-height:calc(100dvh - var(--tabbar-h) - var(--topbar-h) - var(--s6));overflow-y:auto;overscroll-behavior:contain;transform-origin:bottom center}#statusstrip{position:relative;z-index:4;align-items:flex-start;min-height:0;padding:0 12px}#stage-toast{margin-top:var(--s1)}#panel{gap:0;margin-bottom:6px;padding:7px 12px 0;border-radius:var(--r-lg);background:var(--glass-2);box-shadow:inset 0 1px 0 var(--rim),0 -1px 0 var(--hairline),0 -14px 40px #282c5a12}.lesson-card{flex:0 0 auto;overflow:visible;padding:0;border-radius:0;background:none;box-shadow:none}#verify-banner{margin:0 0 5px;padding:4px 10px;font-size:12.5px}#hint-row{gap:var(--s2);padding-right:var(--s2)}#hint{margin:0;min-height:2.4em;font-size:17px;line-height:1.2}.notation-chip{padding:2px 6px;font-size:15px}#stage-intro{margin:3px 0 0;padding:3px var(--s2) 4px;font-size:14px;line-height:1.3}#stage-intro-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.stage-watch{display:inline-flex;margin-left:0;margin-top:3px}@media(max-height:639px){#stage-intro-text{-webkit-line-clamp:2}}#hint-sub{margin:2px 0 0;font-size:12.5px;line-height:1.2}#counter{align-items:baseline;gap:0 6px;margin:2px 0 5px;min-height:1.1em;font-size:13px}.counter-stage{font-size:14.5px;font-weight:800}.counter-total{display:inline}#notation-note{margin:0 0 var(--s1);font-size:12.5px}#panel-foot{display:contents}#key-legend{margin:0;padding:3px 0 5px;font-size:11.5px;text-align:center}#buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:0 -12px -6px;padding:var(--s1) var(--s1) 6px;border-top:1px solid var(--hairline);border-radius:0 0 var(--r-lg) var(--r-lg)}#shuffle{grid-area:1 / 1}#prev{grid-area:1 / 2}#next{grid-area:1 / 3}#buttons #auto{grid-area:1 / 4;margin-left:var(--s2);box-shadow:inset 1px 0 0 var(--hairline)}#buttons #auto:focus-visible{box-shadow:0 0 0 3px var(--solid-1),inset 1px 0 0 var(--hairline)}#buttons .btn{flex-direction:column;gap:3px;min-height:52px;padding:var(--s1) 2px;border-radius:var(--r-sm);background-color:transparent;background-image:none;color:var(--ink-500);font-size:12.5px;font-weight:700;letter-spacing:0;box-shadow:none}#buttons .btn .btn-icon{width:clamp(23px,5.9vw,26px);height:clamp(23px,5.9vw,26px)}#buttons .btn:focus-visible{box-shadow:0 0 0 3px var(--solid-1)}#buttons .btn:disabled{background:transparent;color:var(--ink-450);box-shadow:none}#buttons .btn-shuffle:not(:disabled) .btn-icon{color:var(--warm-icon)}#buttons .btn-shuffle:not(:disabled) .btn-label{color:var(--warm-label)}#buttons .btn-auto:not(:disabled){color:var(--violet-ink)}#buttons .btn-auto .btn-icon{fill:currentColor}#buttons .btn-auto:not(:disabled) .btn-label{background-image:none;-webkit-text-fill-color:currentColor;color:currentColor}#buttons #next{flex-direction:column-reverse;margin:-2px var(--s1);min-height:56px;background-color:var(--blue-500);background-image:linear-gradient(135deg,var(--blue-500) 0%,var(--indigo-600) 100%);color:#fff;font-size:12.5px;font-weight:800;box-shadow:inset 0 1px 0 var(--highlight-soft),0 1px 2px #2f45cc47,var(--glow-blue)}#buttons #next .btn-icon{width:clamp(24px,6.2vw,27px);height:clamp(24px,6.2vw,27px)}#buttons #next:disabled{background-color:var(--surface-sunken);background-image:none;color:var(--ink-500);box-shadow:inset 0 0 0 1px var(--hairline)}#buttons.is-idle #next{margin:0;min-height:52px;font-weight:700}#buttons.is-idle #shuffle:not(:disabled){margin:-2px var(--s1);min-height:56px;background-image:linear-gradient(135deg,var(--warm-from) 0%,var(--warm-to) 100%);color:var(--warm-ink);font-weight:800;box-shadow:inset 0 1px #ffffff80,inset 0 -1px #8c1e4624,var(--glow-warm)}#buttons.is-idle #shuffle:not(:disabled) .btn-icon,#buttons.is-idle #shuffle:not(:disabled) .btn-label{color:var(--warm-ink)}}@media(max-width:360px){#stagebar{gap:4px}#buttons{padding-inline:0}#buttons .btn{padding-inline:0;font-size:11.5px}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes goal-pop{0%{transform:scale(1)}45%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes bounce-in{0%{opacity:0;transform:scale(.6)}55%{opacity:1;transform:scale(1.1)}78%{transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes nudge{25%{transform:translate(-5px)}75%{transform:translate(5px)}}@keyframes pill-pulse{40%{transform:scale(1.14)}}@keyframes confetti-fall{0%{opacity:0;transform:translate(0) rotate(0)}8%{opacity:1}50%{transform:translate(var(--drift),55vh) rotate(calc(var(--spin) * .5))}90%{opacity:1}to{opacity:0;transform:translateY(115vh) rotate(var(--spin))}}@keyframes burst-spin{to{transform:rotate(360deg)}}@keyframes trophy-pop{30%{transform:scale(1.28) rotate(-4deg)}60%{transform:scale(.94)}}@media(prefers-reduced-motion:reduce){#stagebar{scroll-behavior:auto}.btn,.chip,.chip-glyph,.nav-item,.settings-row,.pill,.pill:before,.switch,.switch:after,.offer-btn,.settings-close,.notation-chip,.trophy-badge,#settings-menu,#verify-banner,#stage-toast,#stage-intro,.goal-cell,#hint-sub,#scan-screen,.scan-card,.scan-back,.celebrate-card,.celebrate-burst,.doctor-card,.trophy-badge.is-popped{animation:none!important;transition:none!important}.btn:active:not(:disabled){transform:none;filter:brightness(.94)}@media(hover:hover)and (pointer:fine){.btn:not(:disabled):hover{transform:none}}#confetti{display:none}}#scan-screen[hidden]{display:none}#scan-screen{--scan-top: calc(var(--topbar-h) + var(--s7));position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;color:var(--ink-900);background:#1c203370;animation:scan-veil-in .14s var(--ease-out)}.scan-card{display:flex;flex-direction:column;gap:var(--s3);width:100%;max-height:calc(100dvh - var(--scan-top));padding:var(--s4) var(--s4) calc(var(--s4) + env(safe-area-inset-bottom));border-radius:var(--r-2xl) var(--r-2xl) 0 0;background:var(--solid-3);overflow-y:auto;box-shadow:inset 0 1px 0 var(--highlight),0 -1px 0 var(--hairline),var(--e4);animation:scan-card-in .18s var(--ease-out)}@supports ((backdrop-filter: blur(4px)) or (-webkit-backdrop-filter: blur(4px))){#scan-screen{-webkit-backdrop-filter:blur(4px) saturate(1.05);backdrop-filter:blur(4px) saturate(1.05)}}@media(min-width:700px){#scan-screen{align-items:center;padding:var(--s6)}.scan-card{width:min(520px,100%,max(360px,calc(100dvh - 200px)));max-height:100%;padding:var(--s5);border-radius:var(--r-2xl)}}@media(min-width:700px)and (max-height:560px){.scan-card{width:min(700px,94vw);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 1fr auto;column-gap:var(--s4);row-gap:var(--s2);align-items:start;padding:var(--s4)}.scan-head,.scan-error{grid-column:1}.scan-stage{grid-column:2;grid-row:1 / -1;align-self:center;width:min(46vh,40vw);height:min(46vh,40vw)}.scan-progress{grid-column:1;align-self:end;justify-content:flex-start}.scan-intro{grid-column:1;align-self:end;text-align:left}.scan-review{grid-column:1 / -1;grid-row:1 / -1}}.scan-head{display:grid;grid-template-columns:1fr 44px;gap:var(--s3);align-items:start}.scan-prompt-row{grid-area:1 / 1;display:flex;align-items:center;gap:12px}.scan-back{grid-area:1 / 2;display:grid;place-items:center;width:44px;height:44px;padding:0;border:none;border-radius:var(--r-md);background:var(--solid-2);color:var(--ink-500);box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--highlight);cursor:pointer;transition:color var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out)}@media(hover:hover)and (pointer:fine){.scan-back:hover{background:var(--surface-sunken);color:var(--ink-900)}}.scan-back:focus-visible{outline:3px solid var(--ink-900);outline-offset:3px}.scan-glyph{flex:0 0 48px;height:58px}.scan-glyph-letter{font-family:var(--display);font-size:7.5px;font-weight:800;text-anchor:middle;dominant-baseline:central}.scan-glyph:empty{display:none}.scan-prompt{margin:0;font-family:var(--display);font-size:clamp(19px,5.4vw,23px);font-weight:700;line-height:1.25;text-wrap:balance}.scan-stage[hidden]{display:none}.scan-stage{position:relative;display:block;flex:0 0 auto;width:min(100%,46vh);aspect-ratio:1;margin:0 auto;border-radius:var(--r-md);overflow:hidden;background:var(--ink-900);box-shadow:inset 0 0 0 1px #ffffff14,var(--e2)}.scan-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scan-guide{position:absolute;left:12.5%;top:12.5%;width:75%;height:75%;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);border:3px solid rgba(255,255,255,.85);border-radius:12px;box-shadow:0 0 0 9999px #00000059;cursor:pointer;transition:border-color .15s}.scan-guide[data-state=holding]{border-color:var(--cube-yellow);box-shadow:0 0 0 6px #ffd60a42,0 0 0 9999px #00000059}.scan-guide[data-state=stable]{border-color:var(--cube-green);box-shadow:0 0 0 8px #30c7586b,0 0 0 9999px #00000059}.scan-guide[data-state=wrong-centre]{border-color:#ffffff80}.scan-guide:focus-visible{outline:3px solid var(--solid-1);outline-offset:3px}.scan-cell{display:grid;place-items:end end;padding:6px;border:1px solid rgba(255,255,255,.35)}.scan-dot{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;border:2px solid rgba(0,0,0,.5);background:#888}.scan-guide.has-letters .scan-dot{font-family:var(--display);font-size:10px;font-weight:800;line-height:1}.scan-error{flex:0 0 auto;margin:0;padding:10px 12px;border-radius:var(--r-sm);background:#fff5e6;color:#5a3a08;box-shadow:inset 0 0 0 1px #b478142e;font-weight:700;text-align:center}.scan-error[hidden],.scan-seen[hidden]{display:none}.scan-seen{position:absolute;inset:auto 12px 10px;margin:0;padding:6px 10px;border-radius:var(--r-sm);background:var(--solid-3);color:var(--ink-900);box-shadow:var(--e2);font-size:13px;font-weight:600;line-height:1.3;text-align:center;pointer-events:none}.scan-seen.is-hint{background:#fcfdffdb;color:var(--ink-700);font-weight:600}.scan-progress[hidden]{display:none}.scan-progress{display:flex;align-items:center;justify-content:center;gap:8px}.scan-progress-text[hidden]{display:none}.scan-progress-text{margin-right:var(--s1);color:var(--ink-500);font-size:13px;font-weight:700}.scan-intro[hidden]{display:none}.scan-intro{margin:0;color:var(--ink-500);font-size:13px;font-weight:600;line-height:1.35;text-align:center;text-wrap:balance}.scan-pip{width:14px;height:14px;border:1px solid var(--hairline-strong);border-radius:var(--r-xs);background:var(--surface-sunken)}.scan-pip.is-done{background:var(--pip);box-shadow:inset 0 1px 0 var(--highlight-soft),0 1px 2px #1c20331f}.scan-pip.is-next{border-color:var(--blue-500);box-shadow:0 0 0 3px #4361ee38}.scan-review[hidden]{display:none}.scan-review{display:flex;flex-direction:column;gap:var(--s3);align-items:center}.scan-review-msg{max-width:36ch;margin:0;font-weight:700;line-height:1.35;text-align:center}.scan-net-scroll{width:min(100%,420px)}.scan-net{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:6px;width:100%}.scan-face{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;aspect-ratio:1;padding:3px;border-radius:var(--r-xs);background:var(--ink-900);box-shadow:var(--e1)}.scan-face[data-face=U]{grid-area:1 / 2}.scan-face[data-face=L]{grid-area:2 / 1}.scan-face[data-face=F]{grid-area:2 / 2}.scan-face[data-face=R]{grid-area:2 / 3}.scan-face[data-face=B]{grid-area:2 / 4}.scan-face[data-face=D]{grid-area:3 / 2}.scan-sticker{position:relative;border:none;border-radius:3px;padding:0;cursor:pointer}.scan-net.has-letters .scan-sticker{font-family:var(--display);font-size:clamp(11px,3.2vw,17px);font-weight:800;line-height:1}.scan-sticker:disabled{cursor:default}.scan-sticker.is-doubt:after,.scan-sticker.is-flagged:after{content:"?";position:absolute;top:1px;right:1px;display:grid;place-items:center;width:13px;height:13px;border-radius:999px;background:#141622e0;color:#fff;font-size:10px;font-weight:800;line-height:1}.scan-sticker.is-flagged{outline:3px solid var(--violet-600);outline-offset:-1px}.scan-sticker:focus-visible{outline:3px solid var(--ink-900);outline-offset:2px}.scan-review-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:min(100%,420px)}@media(max-width:640px){.scan-net-scroll{width:100%;min-height:0;overflow:auto;padding-bottom:2px;overscroll-behavior:contain}.scan-review{min-height:0}.scan-head,.scan-progress,.scan-review-msg,.scan-review-buttons{flex-shrink:0}.scan-sticker{min-width:36px;min-height:36px}}@media(max-width:640px){#scan-screen{padding:var(--scan-top) var(--s2) calc(var(--tabbar-h) + var(--s2))}.scan-card{max-height:100%;padding:var(--s4);border-radius:var(--r-2xl)}}@media(pointer:coarse){.scan-net-scroll{min-height:0;overflow:auto;padding-bottom:2px;overscroll-behavior:contain}.scan-review{min-height:0}.scan-sticker{min-width:36px;min-height:36px}}@media(max-width:640px)and (max-height:700px){.scan-stage{width:min(100%,40vh)}.scan-error{padding:6px 10px;font-size:13px}}@keyframes scan-veil-in{0%{opacity:0}}@keyframes scan-card-in{0%{opacity:0;transform:translateY(10px)}}#doctor[hidden]{display:none}#doctor{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:end center;padding:var(--s4);pointer-events:none;z-index:2}.doctor-card{display:flex;flex-direction:column;gap:var(--s2);width:min(100%,460px);max-height:100%;overflow-y:auto;padding:var(--s4) var(--s5) var(--s5);border-radius:var(--r-2xl);background:var(--solid-3);pointer-events:auto;box-shadow:inset 0 0 0 1px var(--hairline),inset 0 1px 0 var(--highlight),var(--e4);animation:rise-in var(--dur-3) var(--ease-spring)}.doctor-title{display:flex;align-items:center;gap:6px;margin:0;font-family:var(--display);font-size:15px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:#9a5b00}.doctor-title:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--cube-orange);box-shadow:0 0 0 3px #ff950033}.doctor-news{margin:0;font-size:clamp(15px,3.6vw,17px);line-height:1.45;color:var(--ink-700)}.doctor-do{display:flex;align-items:center;gap:var(--s3);margin:0;padding:var(--s3);border-radius:var(--r-lg);background:var(--solid-2);font-size:clamp(15px,3.6vw,17px);font-weight:600;line-height:1.4;color:var(--ink-900)}.doctor-turn{flex:0 0 auto;display:block;width:48px;height:48px}.doctor-turn[hidden]{display:none}.doctor-turn svg{display:block;width:100%;height:100%}.doctor-turn.is-counterclockwise svg{transform:scaleX(-1)}.doctor-buttons{display:flex;flex-direction:column;gap:var(--s1);margin-top:var(--s1)}.doctor-leave{min-height:56px;padding:var(--s2) var(--s3);border:0;border-radius:var(--r-pill);background:none;font-family:inherit;font-size:16px;font-weight:600;color:var(--ink-500);cursor:pointer}.doctor-leave:hover{color:var(--ink-700)}.doctor-leave:focus-visible{outline:3px solid var(--ink-900);outline-offset:2px}@media(max-width:640px){#doctor{padding:var(--s2)}.doctor-card{max-height:62%;padding:var(--s3) var(--s4) var(--s4)}.doctor-turn{width:40px;height:40px}#stage-area.has-doctor #scene{translate:0 -22%}}
