:root{--bg:#081713;--text:#eaf1df;--muted:#8eaa99;--dim:#577769;--accent:#c7e5a0;--purple:#c4a6e7;--line:#b9d5c021;--sans:'Inter',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Consolas,monospace}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}body{min-width:280px}button,input,select{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:disabled{cursor:default;opacity:.33}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}#board:focus-visible{outline:none}[hidden]{display:none!important}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;pointer-events:none}.sr{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}#atmosphere,#field,#heroArt{position:fixed;inset:0;width:100%;height:100dvh;pointer-events:none}#atmosphere{z-index:0}#field{z-index:1;pointer-events:auto;transition:opacity .25s}#board{width:100%;height:100%;display:block;touch-action:none}#heroArt{z-index:2}body:not([data-screen=title]) #heroArt{display:none}body[data-screen=title] #field,body[data-screen=map] #field{opacity:0;pointer-events:none}.hud{position:fixed;inset:0;pointer-events:none;z-index:4}.hud button{pointer-events:auto}.hud-top{position:absolute;top:max(25px,env(safe-area-inset-top));left:max(30px,env(safe-area-inset-left));right:max(30px,env(safe-area-inset-right));display:flex;justify-content:space-between;gap:15px;align-items:center}.hud-left,.hud-right{display:flex;align-items:center;gap:19px}.round{width:44px;height:44px;border:1px solid #b5d1b82c;background:#14291fc4;border-radius:50%;display:grid;place-items:center;color:#aec7b3;transition:background .15s,transform .12s,border-color .15s}.round:hover{background:#25412ed9;border-color:#b4d19766;color:#e7f0d6}.round:active{transform:scale(.91)}.round.subtle{background:transparent;border-color:transparent}.level-caption span,.eyebrow{font:10px var(--mono);text-transform:uppercase;letter-spacing:2.4px;color:var(--muted)}.level-caption span{font-size:9px;letter-spacing:1.7px}.level-caption h1{font:23px/1.2 var(--serif);font-weight:400;letter-spacing:-.45px;margin:7px 0 0}.flowers{display:flex;gap:8px}.flowers>span{color:#6e8971;opacity:.68;transition:opacity .2s,filter .2s}.flowers svg{width:25px;height:25px}.flowers>span.kind-1{color:#b096ce}.flowers>span.kind0{color:#9cbf79}.flowers>span.lit{color:#e2edbc;opacity:1;filter:drop-shadow(0 0 7px #cfe38d70)}.flowers>span.lit svg{fill:#d6e7ac35}.flowers>span.lit.kind1{color:#d9bcf6}.flowers>span.lit.kind0{color:#c0f08e}#goalCounter{font:11px var(--mono);color:#b5c7a9;white-space:nowrap}.hud-bottom{position:absolute;bottom:max(26px,env(safe-area-inset-bottom));left:30px;right:30px;display:flex;align-items:center;justify-content:space-between;gap:16px}.hud-tools{display:flex;align-items:center;gap:9px}.move-meter{margin-left:10px;display:flex;gap:7px;align-items:baseline}.move-meter strong{font:23px var(--serif);font-weight:400;color:#dce4cb}.move-meter span{font:8px var(--mono);letter-spacing:1.4px;color:#839c87}.key-legend{font:14px var(--mono);color:#a2b78e;position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;white-space:nowrap}.key-legend span{font:10px var(--sans);color:#749382}.key-legend i{height:10px;width:1px;background:var(--line);margin:0 6px}.dpad{display:none}.level-intro{position:absolute;left:50%;top:15%;transform:translateX(-50%);font:11px var(--mono);letter-spacing:3px;color:#b7cba8;text-align:center;opacity:0;transition:opacity .25s;pointer-events:none}.level-intro.show{opacity:1}.coach{position:absolute;left:50%;transform:translateX(-50%);bottom:105px;padding:10px 16px;border-radius:25px;background:#0c211bdb;border:1px solid #8cad7c30;font-size:11px;color:#c5d9b4;line-height:1.6;max-width:90vw;width:max-content;text-align:center;pointer-events:none}.demo-bar{pointer-events:auto;position:absolute;left:50%;transform:translateX(-50%);bottom:90px;display:flex;align-items:center;gap:12px;background:#1d3025f2;border:1px solid #ccdbab35;border-radius:30px;padding:9px 16px;color:#c8d5b8;font-size:11px}.demo-bar b{font-weight:500;font-family:var(--mono);margin-left:5px}.demo-bar button{padding:6px;border-radius:9px}.demo-bar svg{width:16px;height:16px}.demo-bar button:hover{background:#bad79d20}
.screen{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:max(26px,env(safe-area-inset-top)) max(26px,env(safe-area-inset-right)) max(26px,env(safe-area-inset-bottom)) max(26px,env(safe-area-inset-left));background:#06120cd9;overflow:auto;overscroll-behavior:contain;animation:screen-in .2s ease-out}.screen[hidden]{display:none}body[data-screen=title] .screen{background:none}body[data-screen=map] .screen{background:#07161277}body[data-screen=success] .screen{background:linear-gradient(90deg,#071710bf,#071710eb 35%,#071710eb 65%,#071710bf)}@keyframes screen-in{from{opacity:0}to{opacity:1}}.screen .wrap{width:min(450px,100%);text-align:center;position:relative}.screen h2{font:42px/1.08 var(--serif);letter-spacing:-1.2px;font-weight:400;margin:15px 0 25px}.screen .back{position:absolute;left:30px;top:max(25px,env(safe-area-inset-top));display:flex;gap:10px;align-items:center;color:#92b09c;font-size:11px;padding:8px}.back svg{width:18px;height:18px}.screen .back:hover{color:#e4efcc}.lead{color:#9fb59f;font-size:13px;line-height:1.8;margin:-10px 0 20px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:52px;padding:14px 26px;background:#d6e6ba;color:#1f3429;font-size:13px;font-weight:550;border-radius:30px;border:1px solid #edf7d329;box-shadow:0 0 32px -17px #d9ecaa77;transition:background .15s,transform .15s}.primary:hover{background:#e4f0cf;transform:translateY(-1px)}.primary:active{transform:scale(.975)}.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:12px 22px;border:1px solid #a6c39b32;border-radius:26px;font-size:12px;color:#bdceb3;background:#b2cc9c09}.secondary:hover{background:#b2cc9c15;color:#edf5dd}.text-btn{color:#8eaa97;font-size:12px;padding:13px 10px;display:inline-flex;align-items:center;justify-content:center;gap:9px}.text-btn:hover{color:#e7f0d8}.text-btn svg{width:17px;height:17px}.stack{display:flex;flex-direction:column;align-items:stretch;gap:11px}.fine{font:9px/1.8 var(--mono);color:#71917e;letter-spacing:.6px;margin-top:20px}.separator{height:1px;background:var(--line);margin:20px 0}.title-wrap{width:min(1120px,100%);padding:30px 0;align-self:center;position:relative;z-index:2}.title-copy{width:440px;max-width:100%}.title-copy h2{font:clamp(85px,10vw,142px)/1 var(--serif);letter-spacing:-8px;margin:23px 0 22px}.title-copy .subtitle{font:20px var(--serif);letter-spacing:.2px;color:#9fb998;line-height:1.7;margin:0 0 34px}.title-copy .primary{min-width:250px;justify-content:space-between}.title-copy .title-links{display:flex;align-items:center;gap:16px;margin-top:10px}.title-copy .text-btn:first-child{padding-left:0}.title-meta{position:fixed;bottom:max(30px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);color:#5f8475;font:9px var(--mono);letter-spacing:2.7px;white-space:nowrap}.title-corner{position:fixed;right:30px;top:25px;display:flex;gap:12px}.title-progress{font:10px var(--mono);letter-spacing:1px;color:#789980;margin-top:25px;display:flex;align-items:center;gap:12px}.progress-dots{display:flex;gap:5px}.progress-dots i{width:4px;height:4px;border-radius:50%;background:#b6d29724}.progress-dots i.on{background:#c5e699}.pause-level{font:12px var(--mono);color:#86a487;letter-spacing:1px;margin-bottom:20px}.pause .stack{max-width:290px;margin:auto}.screen .completion{font:15px var(--serif);color:#b4c69d}.victory-emblem{width:116px;height:116px;margin:0 auto;color:#dfebbc;filter:drop-shadow(0 0 20px #b9dc7938)}.victory-emblem svg{width:100%;height:100%;stroke-width:.7;fill:#d7e7ac16}.success h2{margin-bottom:15px}.score{font:30px var(--serif);color:#e3ecd0;margin:20px 0 8px}.score small{font:11px var(--sans);color:#91aa8b;margin-left:7px}.mastery{display:inline-flex;gap:6px;align-items:center;font:9px var(--mono);letter-spacing:1.7px;text-transform:uppercase;color:#d9eab9;border-bottom:1px solid #b7d29233;padding-bottom:8px;margin:0 0 25px}.success .primary{min-width:255px;margin-top:16px}.success-row{display:flex;justify-content:center;gap:18px;margin-top:12px}.unlocked-note{font:12px/1.6 var(--serif);color:#a5bea0;margin:12px 0 1px}.panel{width:min(460px,100%);margin:30px 0}.panel h2{text-align:left;font-size:36px;margin-bottom:30px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 0;color:#bed0b5;font-size:12px}.settings-row input[type=checkbox]{appearance:none;width:35px;height:21px;background:#385243;border:1px solid #869e6540;border-radius:20px;position:relative;cursor:pointer}.settings-row input[type=checkbox]:after{content:'';display:block;position:absolute;width:13px;height:13px;top:3px;left:4px;background:#9fb49a;border-radius:50%;transition:transform .15s}.settings-row input:checked{background:#89ac67}.settings-row input:checked:after{transform:translateX(13px);background:#eef5da}.volume-line{display:flex;align-items:center;gap:15px;padding:6px 0 12px}.volume-line input{flex:1;min-width:0;accent-color:#b9d990}.volume-line output{font:11px var(--mono);color:#acbf9e;width:38px}.segmented{display:flex;background:#95b0820b;padding:4px;border-radius:13px;gap:4px}.segmented button{flex:1;padding:10px 4px;font-size:11px;color:#8ca58f;border-radius:9px}.segmented button.active{background:#b7d0991a;color:#e5efd7}.section-label{font:9px var(--mono);letter-spacing:1.6px;color:#73927f;margin:15px 0 13px;text-transform:uppercase}.settings-foot{display:flex;gap:10px;flex-wrap:wrap;justify-content:space-between;margin-top:16px}.settings-foot .text-btn{font-size:10px;padding:10px 0}.guide-list{display:grid;gap:17px;margin:24px 0}.guide-row{display:flex;gap:16px;align-items:center;color:#b6cbb4;text-align:left;font-size:12px;line-height:1.6}.guide-row strong{color:#e2ecd5;font-weight:500}.guide-symbol{min-width:40px;height:40px;display:grid;place-items:center;background:#9cbd7b15;border:1px solid #a8c4862a;border-radius:13px;color:#c0df96;font:20px var(--serif)}.guide-symbol.purple{background:#b69bdf12;border-color:#bd9bed2a;color:#c7a7ec}.hint-copy{text-align:center;font:19px/1.65 var(--serif);color:#d0dec2;margin:24px 0 26px;min-height:70px}.hint-count{font:9px var(--mono);color:#7f9a83;letter-spacing:1.6px}.help-tabs{display:flex;justify-content:center;gap:25px}.help-tabs button{font-size:12px;color:#738f79;padding:9px 0;border-bottom:1px solid transparent}.help-tabs button.active{color:#dbe9c4;border-bottom-color:#8ea772}
/* Chapter map: one living path and a genuine optional branch, not a grid of cards. */
.map-wrap{width:min(1000px,100%);height:min(730px,calc(100dvh - 90px));display:flex;flex-direction:column;position:relative;margin:20px auto 0}.map-head{text-align:center}.map-head h2{font-size:35px;margin:10px 0 8px}.chapter-tabs{display:flex;justify-content:center;gap:10px;margin:17px auto 0}.chapter-tabs button{height:35px;min-width:35px;border-radius:50%;border:1px solid transparent;color:#739581;font:13px var(--serif)}.chapter-tabs button.selected{border-color:#a8c88063;background:#9dbb8212;color:#daebbb}.chapter-tabs button.locked{opacity:.45}.map-land{position:relative;flex:1;min-height:340px;margin-top:8px}.map-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;stroke-width:1}.map-lines path{stroke:#82ad6c42;stroke-dasharray:3 6;fill:none;vector-effect:non-scaling-stroke}.map-lines path.done{stroke:#adc68795;stroke-dasharray:none}.map-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:170px;display:flex;flex-direction:column;align-items:center;gap:9px;padding:12px 4px;border-radius:20px}.map-node .node-stone{width:76px;height:66px;background:radial-gradient(ellipse at 38% 27%,#355042,#20392e 60%,#132b22);border-radius:42% 52% 42% 50%;border:1px solid #9eb99130;display:grid;place-items:center;box-shadow:0 7px 0 #0c1f18,0 12px 30px #030c084a;position:relative;color:#d7e5c3;font:22px var(--serif);transition:transform .2s,box-shadow .2s}.map-node:not(:disabled):hover .node-stone{transform:translateY(-3px);box-shadow:0 9px 0 #0c1f18,0 20px 35px #8cbb3920}.map-node .node-stone>svg{position:absolute;right:-6px;top:-7px;width:22px;height:22px;color:#c0df8e;fill:#162b2055}.map-node.current .node-stone{border-color:#b9db9477;box-shadow:0 7px 0 #10251b,0 0 28px #b6d78120}.map-node.done .node-stone{background:radial-gradient(ellipse at 35% 25%,#4c6747,#2b432f 60%,#193224)}.map-node strong{font:16px var(--serif);font-weight:400;max-width:165px;color:#c9d8ba;line-height:1.2;text-align:center}.map-node small{font:8px var(--mono);letter-spacing:1px;color:#82a381}.map-node:disabled{opacity:.37}.map-node.optional .node-stone{border-style:dashed}.map-node>span:first-child{font:8px var(--mono);color:#768f7c;letter-spacing:1.6px}.map-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#7f9c83;font-size:11px;flex-shrink:0;padding:10px 0}.map-footer .chapter-step{display:flex;align-items:center;gap:10px;font-size:11px;padding:10px;color:#bbceaa}.chapter-step svg{width:16px;height:16px}.map-footer .chapter-step:disabled{opacity:.24}.map-caption{text-align:center;font:10px var(--sans);color:#6d8d79;margin-bottom:2px}
#curtain{position:fixed;inset:0;background:#081713;opacity:0;pointer-events:none;z-index:25;transition:opacity .14s}#curtain.cover{opacity:1;pointer-events:auto}#toast{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,8px);opacity:0;pointer-events:none;background:#294333f5;border:1px solid #abc69622;color:#d5e6c1;z-index:30;font-size:11px;padding:12px 19px;border-radius:24px;transition:opacity .18s,transform .18s;max-width:88vw;text-align:center;line-height:1.6}#toast.visible{opacity:1;transform:translate(-50%,0)}body[data-motion=reduced] *,body[data-motion=reduced] *::before,body[data-motion=reduced] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(min-width:1500px){.title-wrap{width:1250px}.title-copy h2{font-size:160px}.hud-top{left:45px;right:45px}.hud-bottom{left:45px;right:45px}}
@media(max-width:850px){.title-wrap{width:100%;padding-left:4%}.title-copy h2{font-size:110px}.title-copy .subtitle{font-size:18px}.map-wrap{height:calc(100dvh - 110px)}.map-node{width:155px}.map-node strong{font-size:15px}.level-caption h1{font-size:20px}.key-legend{display:none}}
@media(max-width:600px){.screen{padding:21px}.screen .back{top:max(16px,env(safe-area-inset-top));left:16px}.screen h2{font-size:35px}.hud-top{top:max(18px,env(safe-area-inset-top));left:16px;right:16px;gap:8px}.hud-left,.hud-right{gap:11px}.level-caption span{font-size:7px;letter-spacing:1px}.level-caption h1{font-size:18px;max-width:190px}.desktop{display:none}.round{width:39px;height:39px}.flowers{gap:3px}.flowers svg{width:19px;height:19px}#goalCounter{font-size:10px}.hud-bottom{left:18px;right:18px;bottom:max(32px,env(safe-area-inset-bottom))}.hud-tools{gap:7px}.move-meter{position:fixed;bottom:154px;left:24px;margin:0;gap:5px}.move-meter strong{font-size:19px}.move-meter span{font-size:7px}.dpad{display:grid;pointer-events:auto;grid-template-columns:repeat(3,43px);grid-template-rows:repeat(2,43px);gap:5px;position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%)}.dpad button{display:grid;place-items:center;background:#c1d49b09;border:1px solid #b7c59724;border-radius:15px;color:#b1c896}.dpad button[data-dir=U]{grid-column:2}.dpad button[data-dir=L]{grid-row:2;grid-column:1}.dpad button[data-dir=D]{grid-row:2;grid-column:2}.dpad button[data-dir=R]{grid-row:2;grid-column:3}.dpad button.pressed,.dpad button:active{background:#acd07838;border-color:#bed18e77}.dpad .up{transform:rotate(-90deg)}.dpad .down{transform:rotate(90deg)}.dpad .left{transform:rotate(180deg)}.coach{bottom:162px;font-size:10px;max-width:84vw}.demo-bar{bottom:151px;font-size:10px;padding:7px 10px;gap:8px}.title-wrap{width:100%;padding:0;align-self:center;text-align:center;margin-top:0}.title-copy{width:100%}.title-copy h2{font-size:100px;letter-spacing:-6px;margin:19px 0 17px}.title-copy .subtitle{font-size:18px;margin-bottom:27px}.title-copy .title-links{justify-content:center;gap:14px}.title-copy .text-btn:first-child{padding-left:10px}.title-copy .primary{min-width:235px}.title-progress{justify-content:center;margin-top:19px}.title-meta{font-size:7px;letter-spacing:1.5px;bottom:18px}.title-corner{top:18px;right:18px;gap:7px}.eyebrow{font-size:8px}.title-copy .eyebrow{letter-spacing:3px}.map-wrap{height:calc(100dvh - 102px);margin-top:45px}.map-head h2{font-size:28px;margin:9px 0 6px}.map-head>.eyebrow{font-size:8px}.chapter-tabs{gap:8px;margin-top:12px}.chapter-tabs button{height:31px;min-width:31px}.map-land{min-height:280px;margin-top:0}.map-node{width:137px;gap:6px}.map-node .node-stone{width:63px;height:55px;font-size:20px}.map-node strong{font-size:14px;max-width:136px}.map-node small{font-size:7px}.map-node>span:first-child{font-size:7px}.map-footer{padding-bottom:0;font-size:9px;gap:3px}.map-footer .chapter-step{font-size:9px;gap:5px;padding:8px 3px}.map-caption{font-size:9px;margin:6px 0}.panel{margin:34px 0}.settings-row{padding:11px 0}.panel h2{font-size:32px;margin-bottom:24px}.guide-row{font-size:11px}.hint-copy{font-size:18px}.victory-emblem{width:95px;height:95px}.success-row{gap:9px}}
@media(max-width:365px){.hud-top{left:12px;right:12px}.level-caption h1{max-width:165px;font-size:16px}.hud-right{gap:5px}.flowers{display:none}.hud-left{gap:9px}.dpad{grid-template-columns:repeat(3,38px);grid-template-rows:repeat(2,39px);gap:4px}.hud-tools{gap:5px}.hud-tools .round{width:33px;height:33px}.hud-bottom{left:12px;right:12px}.screen{padding:18px}.title-copy h2{font-size:88px}.title-copy .title-links{gap:4px}.title-copy .text-btn{font-size:11px}.map-node strong{font-size:12px;max-width:124px}.map-node{width:126px}.map-head h2{font-size:25px}.map-footer .chapter-step{font-size:8px}}
@media(max-height:530px) and (min-width:601px){.hud-top{top:14px;left:20px;right:20px}.hud-bottom{bottom:16px;left:20px;right:20px}.round{width:36px;height:36px}.title-copy h2{font-size:80px;margin:14px 0 13px}.title-copy .subtitle{margin-bottom:20px;font-size:16px}.title-progress{margin-top:13px}.title-meta{bottom:13px}.screen h2{font-size:30px;margin:10px 0 18px}.screen .wrap{max-height:90dvh;overflow:auto}.victory-emblem{width:68px;height:68px}.success .score{margin:12px 0}.map-wrap{height:calc(100dvh - 45px);margin-top:0}.map-head h2{font-size:25px;margin:5px}.map-head .eyebrow{display:none}.chapter-tabs{margin-top:8px}.map-land{min-height:190px}.map-node .node-stone{width:48px;height:40px;font-size:16px}.map-node{gap:4px}.map-node strong{font-size:12px}.map-node>span:first-child{display:none}.map-caption{display:none}.coach{bottom:70px}.title-wrap{padding-left:7%}}
/* Reading-order and semantic-color refinements. */
.flowers>span.kind-1{color:#b4bca0}.flowers>span.kind1{color:#b096ce}
.success .primary{display:flex;width:max-content;max-width:100%;margin:18px auto 0}
.success .mastery{display:table;margin:0 auto 21px}
.map-node .node-stone>svg{position:static;width:30px;height:30px;fill:#b5d79412;color:#bccca8}
.map-node .node-stone>svg+svg{position:absolute;right:-6px;top:-7px;width:19px;height:19px;color:#c6df99;fill:#17291e}
.map-node:disabled{opacity:.48}
@media(max-width:600px){.title-copy .title-progress{background:#0716107a;width:max-content;padding:5px 10px;border-radius:12px;margin-left:auto;margin-right:auto}.title-wrap{transform:translateY(-18px)}}
/* Long settings/help content scrolls from its beginning on small screens. */
body[data-screen=settings] .screen,body[data-screen=help] .screen{align-items:flex-start;padding-top:max(88px,calc(env(safe-area-inset-top) + 66px))}
body[data-screen=settings] .panel,body[data-screen=help] .panel{margin:0 auto 35px}
@media(max-height:650px){body[data-screen=success] .screen{align-items:flex-start;padding-top:36px}.success .victory-emblem{width:72px;height:72px}.success h2{font-size:31px;margin:12px 0}.success .score{margin:10px 0 7px}}
