/* Full-viewport game shell. Website navigation and framing have no role here. */
#app{display:block;position:fixed;inset:0;width:100%;height:100dvh;padding:0;background:var(--bg);overflow:hidden}.game-stage{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;box-shadow:none;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%}.game-tools{position:absolute;top:max(20px,env(safe-area-inset-top));left:max(22px,env(safe-area-inset-left));right:max(22px,env(safe-area-inset-right));z-index:8;display:flex;justify-content:space-between;pointer-events:none}.right-tools{margin-left:auto;display:flex;gap:10px}.game-tools button{pointer-events:auto}.tool{width:47px;height:47px;border-radius:16px;background:var(--surface);border:2px solid color-mix(in srgb,var(--accent) 30%,var(--line));color:var(--accent);box-shadow:inset 0 3px 0 #ffffff80,0 5px 0 color-mix(in srgb,var(--accent) 35%,var(--shadow)),0 8px 18px #38235c15}.tool svg{width:21px;height:21px;stroke-width:2.2}.tool:active{transform:translateY(4px);box-shadow:inset 0 2px 0 #ffffff40,0 1px 0 var(--shadow)}.tool:hover{background:var(--surface)}#pause:disabled{display:none}[data-view=menu] .home-tool{visibility:hidden}[data-view=playing] #sound{display:none}.game-overlay{position:absolute;inset:0;background:none;padding:0;z-index:3;pointer-events:none}.menu-card{position:absolute;inset:0;max-width:none;text-align:center;pointer-events:none}.title-heading{position:absolute;top:10%;left:0;right:0;transform:rotate(-4deg);pointer-events:none}.title-heading h1{font:700 clamp(96px,10vw,140px)/1 Space,sans-serif;letter-spacing:-11px;color:#fff4aa;-webkit-text-stroke:7px #6542aa;paint-order:stroke fill;filter:drop-shadow(0 7px 0 #43276f);text-shadow:0 -3px #ffffffb0;margin:0}.title-heading h1 span{display:inline-block}.title-heading h1 span:nth-child(2){color:#ffb5ca;transform:translateY(-7px) rotate(4deg)}.title-heading h1 span:nth-child(3){color:#a9e8fa;transform:rotate(-3deg)}.title-heading h1 span:nth-child(4){color:#ffc774;transform:translateY(4px) rotate(5deg)}.title-heading h1 span:nth-child(5){color:#d4baff;transform:rotate(-5deg)}.title-heading .eyebrow{margin:19px 0 0;font:700 11px Space,sans-serif;letter-spacing:4px;color:var(--accent);-webkit-text-stroke:0;transform:rotate(4deg)}.menu-actions{position:absolute;top:68%;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;width:360px;pointer-events:auto}.menu-copy{font:600 14px Space,sans-serif;color:var(--ink);margin:0 0 17px}.menu-primary{display:flex;justify-content:center}.play-button{display:flex;justify-content:center;align-items:center;gap:18px;min-width:246px;min-height:76px;background:linear-gradient(#ffe99b,#ffc55d);color:#65419b;border:3px solid #9060b8;border-radius:25px;box-shadow:inset 0 5px 0 #fff7d0,0 8px 0 #68418e,0 13px 18px #58357225;font:700 25px Space,sans-serif;letter-spacing:1px;padding:14px 26px;text-shadow:0 1px 0 #ffffff80;transition:transform .12s}.play-button:hover{background:linear-gradient(#fff0b8,#ffd27c);transform:translateY(-2px)}.play-button:active{transform:translateY(6px);box-shadow:inset 0 3px 0 #fff6cd,0 2px 0 #68418e}.play-button .play-triangle{font-size:27px;line-height:1}.world-chip{position:static;transform:none;left:auto;display:flex;align-items:center;justify-content:center;gap:9px;max-width:none;background:color-mix(in srgb,var(--surface) 75%,transparent);border:2px solid color-mix(in srgb,var(--accent) 20%,var(--line));border-radius:14px;color:var(--ink);margin-top:22px;padding:11px 15px;font:600 11px Space,sans-serif;letter-spacing:0;box-shadow:0 3px 0 #7554a012}.world-chip b{color:var(--accent);margin-left:4px}.world-chip #level-name{display:inline;font-weight:400;font-size:10px;color:var(--muted)}.chevron{margin:0;font-size:14px}.menu-dock{position:absolute;left:50%;bottom:max(30px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:28px;z-index:6;pointer-events:auto}.dock-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;background:none;border:0;padding:0;color:var(--ink);font:600 11px Space,sans-serif;min-width:58px}.dock-button>[data-icon]{display:flex;align-items:center;justify-content:center;width:54px;height:49px;border:2px solid #ffffffa0;border-radius:17px;background:#a8dcf3;box-shadow:inset 0 3px 0 #ffffff70,0 5px 0 #73a6cb;color:#45618e}.dock-button:nth-child(2)>[data-icon]{background:#ffc2ce;color:#a8537c;box-shadow:inset 0 3px 0 #ffffff70,0 5px 0 #d392af}.dock-button:nth-child(3)>[data-icon]{background:#cdb9ef;color:#7256a2;box-shadow:inset 0 3px 0 #ffffff70,0 5px 0 #aa8dd2}.dock-button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.dock-button:active>[data-icon]{transform:translateY(4px);box-shadow:0 1px 0 var(--shadow)}.hud{position:absolute;top:max(17px,env(safe-area-inset-top));left:50%;min-width:0;max-width:none;transform:translateX(-50%);gap:22px;padding:12px 20px;background:var(--surface);border:2px solid var(--line);border-radius:20px;box-shadow:inset 0 3px 0 #ffffff80,0 5px 0 color-mix(in srgb,var(--shadow) 70%,var(--accent));z-index:7}.hud strong{font-size:25px}.hud .stat-label{font-size:7px;font-weight:700;letter-spacing:1px}.hud>div{min-width:40px}.hud .hud-time{min-width:100px}.hud>div:last-child{display:block}.gravity-indicator{position:absolute;top:100px;right:8%;z-index:2;font:700 12px Space,sans-serif;gap:6px;opacity:0;padding:9px 12px;border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:13px;background:color-mix(in srgb,var(--surface) 65%,transparent)}.gravity-indicator #flip{font-size:8px}.announcement{z-index:5;top:24%}.touch-controls{display:none;position:absolute;bottom:max(23px,env(safe-area-inset-bottom));left:max(23px,env(safe-area-inset-left));right:max(23px,env(safe-area-inset-right));width:auto;z-index:7;pointer-events:none;gap:0}.touch-controls .move-buttons,.touch-controls .jump{pointer-events:auto}.touch-controls button{width:72px;height:68px;display:flex;align-items:center;justify-content:center;font:700 36px Space,sans-serif;border-radius:23px;border:3px solid #c6b5e4;box-shadow:inset 0 3px 0 #ffffffb0,0 6px 0 #b296ce;background:#fff9f4}.touch-controls button.jump{width:78px;height:73px;border:3px solid #9f75c1;background:linear-gradient(#b9eafc,#7cc4ee);color:#5c438d;box-shadow:inset 0 4px 0 #e8fbff,0 6px 0 #8662a8;border-radius:25px;padding:0;font-size:45px}.touch-controls button.pressed{transform:translateY(5px);box-shadow:0 1px 0 #b296ce}.move-buttons{gap:12px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}#app[data-view=playing] .menu-dock,#app[data-view=paused] .menu-dock,#app[data-view=result] .menu-dock{display:none}#app[data-view=playing] .game-overlay{display:none}#app[data-view=menu] .hud,#app[data-view=menu] .gravity-indicator{display:none}#app[data-view=menu] .world-chip{visibility:visible}#app:not([data-view=menu]) .world-chip{display:none}#app:not([data-view=playing]) .touch-controls{display:none}#app[data-view=paused] .game-overlay,#app[data-view=result] .game-overlay{background:#39265850;backdrop-filter:blur(5px)}#app[data-view=paused] .menu-card,#app[data-view=result] .menu-card{position:relative;inset:auto;display:flex;flex-direction:column;width:min(420px,calc(100vw - 34px));max-height:calc(100dvh - 150px);background:var(--surface);border:4px solid color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:32px;box-shadow:inset 0 4px 0 #ffffff90,0 12px 0 color-mix(in srgb,var(--accent) 45%,var(--shadow)),0 25px 70px #34234f30;padding:38px 23px 31px;pointer-events:auto}#app[data-view=paused] .game-overlay,#app[data-view=result] .game-overlay{display:flex;align-items:center;justify-content:center}#app:not([data-view=menu]) .title-heading{position:static;transform:none;display:flex;flex-direction:column-reverse;gap:12px}#app:not([data-view=menu]) .title-heading h1{font-size:58px;letter-spacing:-3px;color:#ffd375;-webkit-text-stroke:3px #76519b;filter:drop-shadow(0 4px 0 #54376e);text-shadow:none}#app:not([data-view=menu]) .title-heading .eyebrow{transform:none;margin:0;font-size:9px;letter-spacing:1.5px}#app:not([data-view=menu]) .menu-actions{position:static;transform:none;width:auto;margin-top:24px}#app:not([data-view=menu]) .menu-copy{font-size:12px;margin-bottom:25px;line-height:1.8}#app:not([data-view=menu]) .play-button{min-height:62px;min-width:220px;font-size:20px}.support-actions{display:flex;gap:10px;margin:20px 0}.support-actions button{flex:1;font-size:12px}.toast{bottom:120px;z-index:20}.modal-header{padding-bottom:8px}.modal-header .tool{width:36px;height:36px;border-radius:12px;box-shadow:0 3px 0 var(--shadow)}dialog{border:3px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:25px;box-shadow:0 9px 0 color-mix(in srgb,var(--accent) 40%,var(--shadow)),0 30px 100px #30204445}dialog::backdrop{background:#33224470}.modal-body p,.modal-body li{font-size:12px}.legal-page #app{position:static;display:block;height:auto;padding:0 24px;overflow:visible}.legal-page .topbar{height:80px}
@media(pointer:coarse){#app[data-view=playing] .touch-controls{display:flex}.desktop-tool{display:none}}
@media(max-width:650px){.game-tools{top:max(16px,env(safe-area-inset-top));left:16px;right:16px}.right-tools{gap:8px}.tool{width:42px;height:42px;border-radius:14px}.tool svg{width:20px;height:20px}.title-heading{top:16%;transform:rotate(-4deg)}.title-heading h1{font-size:83px;letter-spacing:-6px;-webkit-text-stroke:5px #6542aa;filter:drop-shadow(0 5px 0 #43276f)}.title-heading .eyebrow{font-size:8px;letter-spacing:2px;margin-top:17px}.menu-actions{top:65%;width:300px}.menu-copy{font-size:12px;margin-bottom:16px}.play-button{min-width:215px;min-height:69px;font-size:23px;border-radius:23px}.world-chip{max-width:none;margin-top:20px;padding:10px 13px;font-size:10px;gap:8px}.world-chip #level-name{display:inline;font-size:9px}.menu-dock{bottom:max(35px,env(safe-area-inset-bottom));gap:28px}.dock-button{font-size:10px;gap:7px}.dock-button>[data-icon]{width:49px;height:46px;border-radius:16px}.hud{top:15px;left:44%;min-width:158px;max-width:190px;gap:13px;padding:9px 12px;border-radius:17px}.hud strong{font-size:20px}.hud .stat-label{font-size:5px}.hud>div:last-child{display:none}.hud .hud-time{min-width:76px;padding-right:11px!important}.hud>div{min-width:27px}#app:not([data-view=menu]) #settings-button{display:none}#app:not([data-view=menu]) #sound{display:none}.gravity-indicator{top:91px;right:9%;font-size:10px;padding:6px 9px;gap:3px}.gravity-indicator #flip{font-size:7px}.touch-controls{left:22px;right:22px;bottom:max(27px,env(safe-area-inset-bottom))}.touch-controls button{width:62px;height:59px;border-radius:20px;font-size:31px}.touch-controls button.jump{width:69px;height:64px;font-size:40px;border-radius:23px}.move-buttons{gap:10px}#app[data-view=paused] #settings-button,#app[data-view=result] #settings-button{display:inline-flex}#app:not([data-view=menu]) .title-heading h1{font-size:50px}#app:not([data-view=menu]) .menu-copy{font-size:11px}.announcement{top:27%;font-size:11px}}
@media(max-height:700px) and (orientation:portrait){.title-heading{top:13%}.title-heading h1{font-size:74px}.menu-actions{top:62%}.menu-copy{font-size:11px;margin-bottom:13px}.play-button{min-height:59px;min-width:195px;font-size:21px}.world-chip{margin-top:16px;padding:8px 11px}.menu-dock{bottom:22px;gap:24px}.dock-button>[data-icon]{width:45px;height:40px;border-radius:14px}.dock-button{font-size:9px;gap:6px}}
@media(max-height:590px) and (orientation:landscape){.game-tools{top:12px;left:16px;right:16px}.tool{width:37px;height:37px;border-radius:12px}.right-tools{gap:8px}.title-heading{top:10%;left:2%;right:auto;width:47%;transform:rotate(-5deg)}.title-heading h1{font-size:95px;letter-spacing:-7px;-webkit-text-stroke:5px #6542aa}.title-heading .eyebrow{font-size:8px;letter-spacing:2px;margin-top:13px}.menu-actions{top:23%;left:74%;width:240px}.menu-copy{font-size:11px;margin-bottom:13px}.play-button{min-height:59px;min-width:194px;font-size:21px}.world-chip{margin-top:15px;padding:9px 12px;font-size:9px}.world-chip #level-name{font-size:9px}.menu-dock{left:74%;bottom:25px;gap:25px}.dock-button>[data-icon]{width:43px;height:37px;border-radius:13px}.dock-button svg{width:21px;height:21px}.dock-button{font-size:8px;gap:6px}.hud{top:10px;left:50%;gap:17px;padding:7px 15px;max-width:none;min-width:0}.hud strong{font-size:18px}.hud>div:last-child{display:block}.hud .hud-time{min-width:88px}.hud .stat-label{font-size:5px}.gravity-indicator{top:66px;right:9%;font-size:9px;padding:5px 8px}.touch-controls{bottom:16px;left:22px;right:22px}.touch-controls button{width:58px;height:48px;border-radius:17px;font-size:29px}.touch-controls button.jump{height:52px;width:63px;border-radius:18px;font-size:34px}#app[data-view=paused] .menu-card,#app[data-view=result] .menu-card{width:350px;max-height:calc(100dvh - 36px);padding:22px 22px 20px;overflow:auto}#app:not([data-view=menu]) .title-heading{width:auto;gap:8px}#app:not([data-view=menu]) .title-heading h1{font-size:43px}#app:not([data-view=menu]) .title-heading .eyebrow{font-size:8px}#app:not([data-view=menu]) .menu-actions{margin-top:12px;width:auto}#app:not([data-view=menu]) .menu-copy{margin-bottom:15px;font-size:11px}#app:not([data-view=menu]) .play-button{min-height:49px;min-width:196px;font-size:18px}.text-button{font-size:10px;margin-top:8px;padding:6px}.announcement{top:28%}}
@media(prefers-reduced-motion:reduce){.tool,.play-button{transition:none}}
@media(max-width:650px){.gravity-indicator{top:69px;right:22px;font-size:8px;padding:4px 7px;gap:2px}.gravity-indicator #flip{font-size:6px}}
@media(max-height:590px) and (orientation:landscape){.gravity-indicator{top:57px;font-size:8px;padding:4px 7px;gap:2px}}
#app[data-view=menu] .menu-copy{display:none}

/* Visual cues replace repeated instructions. Names remain available to assistive tools. */
.title-heading .eyebrow,.scene-emblem:empty{display:none}
#app[data-view=menu] .title-heading h1 span{animation:letter-hop 6s ease-in-out infinite}
#app[data-view=menu] .title-heading h1 span:nth-child(2){animation-delay:.12s}
#app[data-view=menu] .title-heading h1 span:nth-child(3){animation-delay:.24s}
#app[data-view=menu] .title-heading h1 span:nth-child(4){animation-delay:.36s}
#app[data-view=menu] .title-heading h1 span:nth-child(5){animation-delay:.48s}
.action-art{display:flex;align-items:center;justify-content:center;pointer-events:none}
.action-art svg{width:42px;height:42px;fill:currentColor;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#app[data-view=result] .action-art svg{fill:none}
#app[data-view=menu] .play-button{min-width:155px;min-height:76px;border-radius:28px;animation:play-breathe 3s ease-in-out infinite}
#app:not([data-view=menu]) .play-button{min-width:135px}
.world-chip{min-height:44px;gap:9px;margin-top:23px;padding:8px 16px}
.world-chip svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.world-chip b{font-size:14px;margin:0}.world-chip #level-name{display:block}
.menu-dock{gap:30px}.dock-button{min-height:52px;min-width:54px}
.dock-button:hover>[data-icon]{animation:dock-wiggle .45s ease-in-out}
.stat-icon{display:inline-flex;color:var(--accent);vertical-align:middle;margin-right:6px}
.stat-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hud>div{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;column-gap:2px;min-width:36px}
.hud .hud-time{min-width:116px;max-width:116px;justify-content:flex-start;position:relative;padding-bottom:7px}
.hud .time-track{position:absolute;bottom:0;left:0;right:16px;min-width:0}
.hud strong{font-size:22px;white-space:nowrap}.hud small{font-size:9px}
.collected{animation:coin-pop .35s ease-out}
.gravity-indicator{display:flex;align-items:center;justify-content:center;gap:0;opacity:1;top:98px;right:max(22px,env(safe-area-inset-right));width:60px;height:60px;padding:5px;isolation:isolate;background:conic-gradient(var(--accent) var(--countdown,360deg),var(--line) 0);border:0;border-radius:50%;box-shadow:0 3px 0 color-mix(in srgb,var(--shadow) 60%,transparent)}
.gravity-indicator:before{content:'';position:absolute;inset:4px;background:var(--surface);border-radius:50%;z-index:-1}
#gravity{display:block;font:700 29px/1 Space,sans-serif;transform:rotate(var(--direction,0deg));transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.gravity-indicator #flip{position:absolute;bottom:-6px;right:-3px;min-width:23px;border-radius:10px;background:var(--surface);border:2px solid var(--line);padding:2px 3px;font:700 10px/1.2 Space,sans-serif;color:var(--ink)}
.gravity-indicator:has(.warning){color:var(--danger)}
.gravity-indicator #flip.warning{color:var(--danger);animation:countdown-tap .6s ease-in-out infinite}
.announcement{display:none;position:absolute;top:27%;left:50%;width:68px;height:68px;padding:0;transform:translateX(-50%);background:var(--surface);color:var(--accent);border:3px solid var(--accent);border-radius:23px;box-shadow:0 5px 0 var(--shadow);pointer-events:none}
.announcement.active{display:flex;align-items:center;justify-content:center;animation:shift-arrival .35s ease-out}
.shift-arrow{font:700 43px/1 Space,sans-serif;transform:rotate(var(--direction,0deg));animation:arrow-drop .5s ease-in-out 3}
.scene-emblem{width:78px;height:78px;display:flex;align-items:center;justify-content:center;border-radius:26px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent);margin:0 auto 5px}
.scene-emblem svg{width:46px;height:46px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#app[data-view=result] .scene-emblem{animation:medal-arrival .6s cubic-bezier(.2,1.5,.5,1)}
#app[data-view=result] .scene-emblem:after{content:'✦';position:absolute;transform:translate(47px,-30px);color:var(--gold);animation:star-twinkle 2s ease-in-out infinite}
#app:not([data-view=menu]) .title-heading{gap:7px}
#app[data-view=paused] .menu-actions{margin-top:12px}
#app[data-view=paused] .menu-copy{display:none}
#app[data-view=result] .menu-copy{display:flex;align-items:center;justify-content:center;gap:24px;margin:0 0 24px}
.result-stat{display:flex;align-items:center;gap:6px;font:700 20px Space,sans-serif;color:var(--ink)}
.result-stat svg,#share svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.result-stat small{font-size:11px}#share{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}#share[hidden]{display:none}
.infinity-cue{display:inline-block;font-size:37px;color:var(--accent);vertical-align:middle;animation:infinity-drift 4s ease-in-out infinite}
.pref-heading p:empty{display:none}.theme-description{display:none}.theme-preview .preview-pip{animation:preview-bob 3s ease-in-out infinite}.theme-card:nth-child(even) .preview-pip{animation-delay:-1.5s}
.play-lessons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:22px}
.play-lesson{text-align:center;min-width:0}.play-lesson h3{font:700 13px Space,sans-serif;margin:13px 0 5px}.play-lesson p{font-size:10px;margin:0;line-height:1.6}
.lesson-art{height:125px;position:relative;overflow:hidden;border-radius:20px;background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1px solid var(--line)}
.demo-floor{position:absolute;bottom:28px;left:10%;right:10%;height:8px;border-radius:5px;background:#b99ae1;border-top:3px solid #e5d4ff}
.demo-pip{position:absolute;left:calc(50% - 13px);bottom:37px;width:26px;height:30px;background:#ffc768;border:3px solid #65477e;border-radius:8px;box-shadow:inset -4px 0 #e6a442;z-index:2}
.demo-pip:before{content:'';position:absolute;left:8px;top:-11px;width:4px;height:8px;background:#65477e;border-radius:3px}
.demo-pip:after{content:'';position:absolute;left:6px;top:-15px;width:8px;height:8px;background:#f183a0;border:2px solid #65477e;border-radius:50%}
.demo-pip i{position:absolute;inset:4px 2px 8px;background:#49365e;border-radius:4px}
.demo-pip i:before,.demo-pip i:after{content:'';position:absolute;top:3px;width:3px;height:5px;border-radius:2px;background:#e1faff;left:3px}.demo-pip i:after{left:auto;right:3px}
.demo-keys{position:absolute;bottom:5px;left:0;right:0;font:700 17px Space,sans-serif;color:var(--accent)}
.lesson-move .demo-pip{animation:teach-move 3s ease-in-out infinite}
.lesson-jump .demo-pip{animation:teach-jump 3s ease-in-out infinite}
.demo-danger{position:absolute;bottom:37px;left:calc(50% - 7px);width:14px;height:14px;background:#f38297;border:2px solid #ad4d75;border-radius:4px;transform:rotate(45deg)}
.demo-room{position:absolute;width:94px;height:94px;top:14px;left:calc(50% - 47px);border:4px solid var(--line);border-radius:13px;animation:teach-turn 8s ease-in-out infinite}
.demo-wall{position:absolute;bottom:0;left:0;right:0;height:6px;border-radius:5px;background:#ffc768;box-shadow:0 -4px 12px #ffc76860}.demo-room .demo-pip{bottom:7px}
.demo-turn{position:absolute;top:24px;left:calc(50% - 7px);font:700 22px Space,sans-serif;color:var(--accent);animation:teach-turn 8s ease-in-out infinite}
.lesson-goal{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:15px 10px;margin-top:24px;font:500 11px Space,sans-serif;color:var(--ink)}
.lesson-goal [data-icon]{display:flex;color:var(--accent)}.lesson-goal svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.goal-arrow{color:var(--accent);animation:goal-nudge 2s ease-in-out infinite}
.lesson-tips{display:flex;justify-content:center;gap:20px;margin-top:10px}.lesson-tips p{font-size:10px}.danger-swatch{color:#b84868;font-size:18px;vertical-align:middle}.star-swatch{color:var(--gold);font-size:18px;vertical-align:middle}
.control-details{margin-top:20px;border-top:1px solid var(--line);padding-top:15px}.control-details summary{font-size:11px;cursor:pointer;color:var(--muted)}
.touch-copy,.pad-copy{display:none}[data-controls=touch] .keyboard-copy,[data-controls=pad] .keyboard-copy{display:none}[data-controls=touch] .touch-copy,[data-controls=pad] .pad-copy{display:inline}
@keyframes letter-hop{0%,6%,100%{translate:0 0}3%{translate:0 -8px}}
@keyframes play-breathe{0%,100%{scale:1}50%{scale:1.035}}
@keyframes dock-wiggle{25%{rotate:-8deg}75%{rotate:8deg}}
@keyframes coin-pop{50%{scale:1.25}}
@keyframes countdown-tap{50%{scale:1.12}}
@keyframes shift-arrival{from{opacity:0;scale:.6}to{opacity:1;scale:1}}
@keyframes arrow-drop{50%{translate:0 4px}}
@keyframes medal-arrival{from{scale:.3;rotate:-20deg;opacity:0}to{scale:1;rotate:0;opacity:1}}
@keyframes star-twinkle{50%{opacity:.5;scale:.8}}
@keyframes infinity-drift{50%{translate:0 -3px}}
@keyframes preview-bob{50%{translate:0 -5px}}
@keyframes teach-move{0%,100%{translate:-28px 0}50%{translate:28px 0}}
@keyframes teach-jump{0%,15%,100%{translate:-29px 0}45%{translate:0 -33px}75%,85%{translate:29px 0}}
@keyframes teach-turn{0%,20%{rotate:0deg}25%,45%{rotate:90deg}50%,70%{rotate:180deg}75%,95%{rotate:270deg}100%{rotate:360deg}}
@keyframes goal-nudge{50%{translate:3px 0}}
@media(max-width:650px){.hud{gap:10px;padding:10px 10px;min-width:166px;max-width:190px}.hud .hud-time{min-width:96px;max-width:96px}.hud strong{font-size:19px}.stat-icon{margin-right:3px}.stat-icon svg{width:15px;height:15px}.gravity-indicator{width:45px;height:45px;top:78px;right:17px}#gravity{font-size:24px}.gravity-indicator #flip{font-size:9px;min-width:21px}.world-chip{padding:8px 15px;min-height:44px}.tool{min-width:44px;min-height:44px}.announcement{width:58px;height:58px}.shift-arrow{font-size:36px}.play-lessons{grid-template-columns:1fr;gap:12px}.play-lesson{display:grid;grid-template-columns:108px 1fr;gap:15px;align-items:center;text-align:left}.lesson-art{height:110px}.play-lesson h3{margin:0 0 6px}.play-lesson p{font-size:11px}.demo-room{top:8px}.lesson-tips{gap:12px}.lesson-tips p{font-size:9px}.scene-emblem{width:62px;height:62px;border-radius:20px}.scene-emblem svg{width:38px;height:38px}}
@media(max-height:590px) and (orientation:landscape){.gravity-indicator{top:62px;width:44px;height:44px}#gravity{font-size:23px}.scene-emblem{width:48px;height:48px;border-radius:15px}.scene-emblem svg{width:30px;height:30px}#app:not([data-view=menu]) .title-heading{gap:4px}#app[data-view=result] .menu-copy{margin-bottom:12px}.result-stat{font-size:17px}.play-lessons{grid-template-columns:repeat(3,minmax(0,1fr))}.play-lesson{display:block;text-align:center}.play-lesson h3{margin-top:10px}}
/* Both the device preference and the in-game switch stop every decorative loop. */
:root[data-motion=reduce] #app *,:root[data-motion=reduce] #app *:before,:root[data-motion=reduce] #app *:after{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){#app *,#app *:before,#app *:after{animation:none!important;transition:none!important}}
.life-meter{position:absolute;z-index:7;top:100px;left:max(22px,env(safe-area-inset-left));padding:7px 9px;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:0 3px 0 var(--shadow)}
#life-hearts{display:flex;gap:5px}.heart{display:flex;color:#bf456f}.heart svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}.heart.full svg{fill:#f48daa}.heart.empty{color:var(--muted)}.heart.empty svg{fill:none;opacity:.55}.life-lost{animation:heart-shake .4s ease-in-out}.life-meter.protected{border-color:#428aaf;box-shadow:0 0 0 3px #8ddcff44}.heart-swatch{color:#bf456f}
#app[data-view=menu] .life-meter{display:none}.lesson-tips{flex-wrap:wrap;gap:5px 17px}.lesson-tips p{margin:2px 0}
@keyframes heart-shake{25%,75%{translate:-4px 0}50%{translate:4px 0}}
@media(max-width:650px){.life-meter{top:79px;left:17px;padding:5px 7px}#life-hearts{gap:4px}.heart svg{width:20px;height:20px}}
@media(max-height:590px) and (orientation:landscape){.life-meter{top:63px;padding:4px 7px}.heart svg{width:18px;height:18px}}
html,body{overscroll-behavior:none;scrollbar-width:none}
#app{touch-action:pan-y}.game-stage,.touch-controls,.game-tools,.menu-dock,.game-overlay{touch-action:none}#modal,#modal *{touch-action:pan-y}#modal{overscroll-behavior:contain}
#app *,html,body{scrollbar-width:none!important;scrollbar-gutter:auto!important}
#app *::-webkit-scrollbar,html::-webkit-scrollbar,body::-webkit-scrollbar{display:none!important;width:0;height:0}
#modal input,#modal textarea,#modal select{font-size:16px}
.scroll-cue{position:sticky;bottom:8px;z-index:4;width:40px;height:34px;min-height:34px;display:flex;align-items:center;justify-content:center;margin:-42px auto 8px;padding:0;border:2px solid var(--line);border-radius:12px;background:var(--surface);color:var(--accent);box-shadow:0 3px 0 var(--shadow)}
.scroll-cue[hidden]{display:none}.scroll-cue span{font:700 25px/1 Space,sans-serif;animation:scroll-nudge 1.5s ease-in-out infinite}
@keyframes scroll-nudge{50%{translate:0 4px}}
