@import url('/home.css');
:root{color-scheme:dark;--ink:#ecf4f2;--muted:#9caaa9;--mint:#a2efc6;--signal:#f0b36d;--line:#304146}
*{box-sizing:border-box}body{margin:0;background:#111b20;color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}main{max-width:1280px;margin:auto;padding:44px 38px 20px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:30px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:var(--mint);margin:0 0 12px}.eyebrow span{padding:0 10px;color:#64736f}h1{font-size:clamp(25px,4.5vw,54px);letter-spacing:-2px;line-height:1.1;margin:0;font-weight:900}h1 span{color:var(--mint)}h1 i{font-style:normal;font-size:35px;color:var(--mint);margin-left:18px}.subtitle{color:var(--muted);font-size:14px;margin:13px 0 0}.edition{font-size:10px;letter-spacing:1.4px;line-height:2;text-align:right;white-space:nowrap}.edition small{color:var(--muted);letter-spacing:0;font-size:12px}.live-dot{display:inline-block;background:var(--mint);width:6px;height:6px;border-radius:50%;margin-right:6px}.game-shell{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#17252a;box-shadow:0 22px 75px #0003}.toolbar{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;gap:12px}.level-info{display:flex;gap:15px;align-items:center}.level-info>span{font:11px ui-monospace,monospace;color:var(--mint);border-right:1px solid var(--line);padding-right:15px}.level-info strong{font-size:13px}.tools{display:flex;align-items:center;gap:10px}button{font:inherit;cursor:pointer;border:1px solid #405259;border-radius:8px;background:#24363d;color:var(--ink);padding:9px 14px;font-size:12px;font-weight:650}button:hover{background:#334b53}button:focus-visible,canvas:focus-visible{outline:3px solid var(--mint);outline-offset:3px}button:disabled{cursor:default;opacity:.45}.wallet{font-size:15px;min-width:60px;margin-right:10px}.wallet>span{color:#78e9f3;padding-right:4px}.stage{position:relative;aspect-ratio:1100/620;overflow:hidden;background:#b9e5df}canvas{width:100%;height:100%;display:block;touch-action:none}.stage-label{position:absolute;top:22px;left:24px;right:24px;display:flex;justify-content:space-between;pointer-events:none;font-size:9px;font-weight:800;letter-spacing:2px;color:#295c5b}.stage-label span:last-child{color:#376e64}.overlay{position:absolute;inset:0;background:#132b3440;display:grid;place-items:center;backdrop-filter:blur(4px);padding:20px}.overlay[hidden]{display:none}.overlay-card{width:min(420px,100%);padding:32px;text-align:center;border:1px solid #fff4;border-radius:18px;background:#14252df0;box-shadow:0 18px 75px #15303c44}.overlay-card h2{font-size:clamp(24px,3vw,38px);line-height:1.08;letter-spacing:-1px;margin:15px 0;color:#f0f8f3}.overlay-card>p:not(.eyebrow){font-size:13px;color:#b9cccb;line-height:1.7}.primary{background:var(--mint);color:#143a2b;border:0;padding:13px 25px;min-width:180px;font-weight:800;margin-top:9px}.primary:hover{background:#c0ffdb}.primary span{padding-left:20px}.overlay-card .overlay-hint{font-size:10px!important;letter-spacing:1px;margin-bottom:0}.game-bottom{display:flex;justify-content:space-between;gap:12px;padding:15px 22px;align-items:center}.control-guide{display:flex;align-items:center;gap:20px;font-size:11px;color:#a6b8b9}kbd{font:10px ui-monospace,monospace;background:#25383e;border:1px solid #456066;padding:3px 5px;border-radius:4px;margin-right:3px}.progress-caption{font-size:10px;color:#91a5a6}.below{display:grid;grid-template-columns:repeat(3,1fr);gap:50px;padding:33px 4px 23px}.below>div{position:relative;padding-left:35px}.step-number{position:absolute;left:0;top:1px;font:11px ui-monospace,monospace;color:#6d9386}.below h3{font-size:14px;margin:0 0 7px}.below p{font-size:12px;line-height:1.75;color:var(--muted);margin:0}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:22px;padding-top:15px}footer p{font-size:10px;color:#7f9698;line-height:1.7;margin:0}.vex-note{color:#d6ab7a}.toast{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);background:#122d30ed;border:1px solid #b3f3d377;border-radius:20px;padding:9px 18px;color:#d5ffe9;font-size:12px;pointer-events:none;opacity:0;transition:opacity .2s;white-space:nowrap}.toast.visible{opacity:1}.touch-controls{display:flex;justify-content:space-between;padding:0 20px 14px}.touch-controls>div{display:flex;gap:9px}.touch-controls button{min-width:58px;min-height:44px;touch-action:none;user-select:none}.jump-touch{background:#a2efc6;color:#17372a;min-width:115px!important}dialog{color:var(--ink);background:#14252b;border:1px solid #547069;border-radius:18px;padding:28px;width:min(560px,calc(100% - 28px));max-height:85vh}dialog::backdrop{background:#07151bc9;backdrop-filter:blur(5px)}.dialog-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.dialog-top .eyebrow{font-size:9px}.dialog-top h2{margin:0;font-size:26px;letter-spacing:-1px}.shop-balance{background:#21383d;border-radius:8px;padding:12px;display:flex;justify-content:space-between;font-size:13px}.shop-balance>span{color:#7fe8f3}.shop-item{display:flex;gap:14px;align-items:center;border-bottom:1px solid var(--line);padding:15px 0}.swatch{width:38px;height:42px;border-radius:9px;background:var(--skin);border-top:9px solid #f5ddbb;flex-shrink:0;box-shadow:inset 0 -8px #0002}.shop-copy{flex:1}.shop-copy h3{font-size:14px;margin:0 0 4px}.shop-copy p,.shop-foot{font-size:11px;color:var(--muted);line-height:1.6;margin:0}.shop-item button{min-width:100px}.shop-foot{margin-top:18px}.notice{padding:15px;background:#492c21} @media(pointer:fine){.touch-controls{display:none}} @media(max-width:760px){main{padding:25px 14px 20px}.intro{margin-bottom:22px}.edition{display:none}h1{letter-spacing:-1px}h1 i{font-size:22px;margin-left:8px}.eyebrow{font-size:8px;letter-spacing:1.1px}.toolbar{padding:11px}.level-info{gap:7px}.level-info>span{font-size:9px;padding-right:7px}.level-info strong{font-size:11px}.tools{gap:6px}.tools button{padding:8px 10px}.wallet{margin:0;min-width:40px;font-size:12px}.game-bottom{padding:12px;gap:8px}.control-guide{gap:8px;font-size:9px}.progress-caption{display:none}.below{gap:15px;padding-top:25px}.below>div{padding-left:0}.step-number{position:static;display:block;margin-bottom:8px}.below h3{font-size:12px}.below p{font-size:11px}footer{display:block}footer p+p{margin-top:7px}.stage-label{top:12px;left:12px;right:12px;font-size:7px;letter-spacing:1px}.stage{min-height:290px;aspect-ratio:auto}.overlay-card{padding:18px;width:330px}.overlay-card h2{font-size:26px;margin:8px 0}.overlay-card>p:not(.eyebrow){font-size:11px;margin:7px 0}.primary{padding:10px 18px}.overlay-hint{display:none}.subtitle{font-size:12px}.touch-controls{display:flex}.shop-item{gap:10px}.shop-item button{min-width:85px;padding:9px}.dialog-top h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

#level-select{font:650 12px system-ui;background:#17252a;color:#ecf4f2;border:0;max-width:230px;padding:4px;cursor:pointer}#level-select:focus-visible{outline:2px solid #a2efc6}@media(max-width:760px){#level-select{font-size:10px;max-width:140px}}
#leaderboard-button{margin-top:12px;color:#a2efc6;font-size:11px}.local-board{font-size:10px;color:#a2efc6;background:#244a3c;padding:10px;border-radius:6px;line-height:1.6}#nickname-form{margin-top:20px}#nickname-form label{font-size:12px;display:block;margin-bottom:8px}.nickname-row{display:flex;gap:8px}.nickname-row input{min-width:0;flex:1;border:1px solid #53716b;background:#0e1d23;color:#e6f9ed;padding:10px;border-radius:6px;font:14px system-ui}#nickname-form small{display:block;font-size:10px;color:#9caaa9;margin-top:7px;line-height:1.6}#leaderboard-status{font-size:12px;color:#9caaa9;line-height:1.7}.rank-table{width:100%;border-collapse:collapse;text-align:left;margin:18px 0}.rank-table th{font-size:10px;letter-spacing:1px;color:#8da9a1}.rank-table td{font-size:13px}.rank-table th,.rank-table td{padding:11px 7px;border-bottom:1px solid #304146}.rank-table td:last-child,.rank-table th:last-child{text-align:right;color:#8de9ee}.rank-table tr.self{background:#244a3c}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.reward-bar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:9px 22px;background:#1c3034;border-top:1px solid #304146;color:#a3c8b9;font-size:10px;line-height:1.6}.reward-bar span:last-child{color:#95a8a8}@media(max-width:760px){.reward-bar{padding:8px 11px;font-size:9px;gap:3px 10px}}
.difficulty-row{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:0 0 20px}.difficulty-row .eyebrow{margin-bottom:5px}.difficulty-row p:not(.eyebrow){font-size:11px;color:#9caaa9;margin:0}.difficulty-buttons{display:flex;gap:6px}.difficulty-buttons button{min-width:82px}.difficulty-buttons small{display:block;color:#9dbbb0;font-size:10px;margin-top:4px}.difficulty-buttons button[aria-pressed=true]{color:#15362a;background:#a2efc6;border-color:#a2efc6}.difficulty-buttons button[aria-pressed=true] small{color:#315747}.ability-paths{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.ability-paths section{border:1px solid #37524b;border-radius:8px;background:#1c3436;padding:14px}.ability-paths h3{font-size:13px;color:#a2efc6;margin:0 0 9px}.ability-paths p{font-size:11px;color:#c1d8cf;line-height:1.8;margin:0 0 8px}.ability-paths small{font-size:9px;color:#8faea2;line-height:1.6}#boss-banner{position:absolute;top:55px;left:50%;transform:translateX(-50%);background:#162a30ec;border:1px solid #d4a78180;border-radius:9px;padding:9px 16px;font-size:11px;text-align:center;color:#f2dfc2;max-width:90%;pointer-events:none}.control-guide{flex-wrap:wrap;gap:10px 16px}.game-bottom{align-items:flex-start}@media(max-width:760px){.difficulty-row{display:block}.difficulty-buttons{margin-top:12px}.difficulty-buttons button{min-width:0;flex:1;padding:8px}.ability-paths{gap:7px}.ability-paths section{padding:10px}.touch-controls{padding:0 10px 10px}.touch-controls button{min-width:45px;padding:8px;font-size:10px}.jump-touch{min-width:66px!important}#boss-banner{top:35px;font-size:9px;padding:7px 10px}.toast{max-width:94%;white-space:normal;text-align:center}.stage-label{gap:10px}.game-bottom .control-guide{gap:7px}}

/* Course and difficulty form one wrapping selection group. */
.toolbar{flex-wrap:wrap}.course-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-width:0;flex:1}.level-info{min-width:0}.difficulty-buttons{flex-wrap:wrap}.difficulty-buttons button{min-width:64px;padding:8px 10px}.difficulty-buttons button:disabled{opacity:.6;border-style:dashed}.difficulty-buttons button:disabled small{color:#c0ceca}.challenge-status{margin:0;padding:0 22px 12px;font-size:11px;line-height:1.6;color:var(--muted)}.progression-tools{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;padding:12px 22px;border-top:1px solid var(--line);font-size:11px}.progression-tools label{display:flex;align-items:center;gap:7px;font-weight:650}.progression-tools input{accent-color:var(--mint);width:17px;height:17px}.progression-tools span{flex:1;min-width:170px;color:var(--muted);line-height:1.6}.progression-tools button{font-size:11px}.reset-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}#reset-dialog p{color:var(--muted);font-size:13px;line-height:1.7}#confirm-reset{border-color:var(--mint)}input:focus-visible{outline:3px solid var(--mint);outline-offset:3px}
@media(max-width:760px){.course-controls{gap:10px;flex-basis:100%}.course-controls .difficulty-buttons{margin:0;width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.course-controls .difficulty-buttons button{min-width:0;padding:8px 4px;font-size:11px}.toolbar .tools{margin-left:auto}.challenge-status{padding:0 11px 10px}.progression-tools{padding:10px 11px}.progression-tools span{min-width:150px}.progression-tools button{width:100%}}

/* Scoped controls update: compact difficulties and a separate risk toggle. */
.challenge-controls{display:flex;flex-direction:column;gap:8px;min-width:0}
.permadeath-controls{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding-left:24px}
.permadeath-controls button{min-height:34px;padding:6px 10px;font-size:11px}
#permadeath{border:1px solid #81918d;border-radius:18px;background:#17252a}
#permadeath[aria-pressed=true]{background:#9c2635;border-color:#ff8c98;color:#fff0f1}
#permadeath:hover{border-color:#cbded6}
#permadeath-help-button{width:34px;padding:4px;border-radius:50%}
.course-controls .difficulty-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0}
.course-controls .difficulty-buttons button{min-width:0;padding:5px 9px;min-height:32px;white-space:nowrap}
.difficulty-buttons small{display:inline;font-size:inherit;margin:0}
.reset-row{display:flex;justify-content:flex-end;padding:7px 22px;border-top:1px solid var(--line)}
.reset-row button{font-size:11px;padding:6px 10px;min-height:34px}
#permadeath-dialog p{font-size:13px;line-height:1.7;color:var(--muted)}
@media(max-width:760px){.challenge-controls{width:100%}.course-controls .difficulty-buttons button{padding:5px 3px;font-size:10px}.reset-row{padding:7px 11px}}

/* LOCAL PROPOSAL ONLY: compact page rhythm, pending management style approval. */
main{padding-top:18px}
.intro{margin-bottom:16px;gap:16px}
.intro .eyebrow{margin-bottom:6px;font-size:9px}
.intro h1{font-size:clamp(25px,3vw,36px);letter-spacing:-1px}
.intro h1 i{font-size:24px;margin-left:9px}
.intro .subtitle{margin-top:5px;font-size:12px}
.toolbar{padding:10px 16px;gap:8px}
.course-controls{gap:12px}
.challenge-controls{gap:5px}
.challenge-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.reward-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding:6px 16px;align-items:center}
.reward-bar>span{grid-column:1}
.reward-bar>span:nth-child(2){color:#95a8a8}
.reward-bar #reset-button{grid-column:2;grid-row:1 / span 2;align-self:end;min-height:34px;padding:6px 10px;font-size:11px}
@media(max-width:760px){
 main{padding:12px 10px 20px}
 .intro{margin-bottom:12px}.intro .eyebrow{font-size:8px;letter-spacing:1px}.intro .subtitle{font-size:11px}
 .toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;padding:9px 10px;gap:6px 8px;align-items:center}
 .course-controls{display:contents}
 .level-info{grid-column:1;grid-row:1;gap:6px}
 .level-info>span{font-size:9px;padding-right:6px}
 #level-select{max-width:132px;font-size:10px}
 .toolbar .tools{grid-column:2;grid-row:1;gap:5px;margin:0}
 .tools .wallet{font-size:11px;min-width:26px}
 .toolbar .tools button{padding:6px 8px;min-height:34px;font-size:11px}
 .challenge-controls{grid-column:1 / -1;grid-row:2;gap:5px}
 .reward-bar{padding:6px 10px;font-size:9px;gap:2px 8px;line-height:1.5}
 .reward-bar #reset-button{padding:6px;font-size:10px}
}
@media(max-width:350px){.level-info>span{display:none}#level-select{max-width:125px}}

@media(max-width:760px){.overlay{padding:14px}.overlay-card{width:100%;max-width:330px;padding:14px}}
.progress-caption.waiting{display:block;color:var(--mint)}
.tools button.wallet{background:transparent;border:0;padding:6px 2px;white-space:nowrap}
.tools button.wallet:hover{background:#334b53}
.test-mode-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:9px 16px;background:#244a3c;color:var(--mint);font-size:11px}
.test-mode-banner[hidden]{display:none}
#test-dialog{max-width:620px}
#test-dialog p{font-size:13px;line-height:1.7}
#test-dialog .reset-actions{flex-wrap:wrap}
@media(max-width:760px){.game-bottom:has(.progress-caption.waiting){flex-wrap:wrap}.progress-caption.waiting{flex-basis:100%}}
@media(max-width:350px){.course-controls .difficulty-buttons{gap:4px}.course-controls .difficulty-buttons button{font-size:9px;padding-inline:2px}}

/* Local correction: keep the risk toggle immediately after Expert. */
.course-controls .difficulty-buttons{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.course-controls .difficulty-buttons>button{flex:0 0 auto}
.expert-controls{display:flex;align-items:center;gap:8px;min-width:0}
.permadeath-controls{padding:0;gap:6px}
.course-controls .permadeath-controls button{flex:none;min-height:34px;padding:6px 10px;font-size:11px}
.course-controls #permadeath-help-button{width:34px;padding:4px}
@media(max-width:760px){.course-controls .difficulty-buttons{column-gap:6px;row-gap:6px}.course-controls .difficulty-buttons>button{flex:1 0 auto}.expert-controls{flex:1 0 auto;justify-content:flex-start}.expert-controls>[data-difficulty]{margin-right:0;flex:0 0 auto}.course-controls .permadeath-controls button{font-size:10px}}

@media(min-width:761px) and (max-width:1050px){.toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto}.course-controls{display:contents}.level-info{grid-column:1;grid-row:1}.toolbar .tools{grid-column:2;grid-row:1}.challenge-controls{grid-column:1 / -1;grid-row:2}.course-controls .difficulty-buttons{flex-wrap:nowrap}}

/* Use spare desktop width around the risk controls without adding a row. */
@media(min-width:1051px){.challenge-controls{flex:1}.expert-controls{flex:1}.expert-controls .permadeath-controls{margin-inline:auto}}

/* Let the existing tagline share the heading line when there is room. */
.intro-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 20px}
.intro .subtitle{margin:0}

/* The shop shell keeps balance, categories and Close outside the scroller. */
#shop{padding:0;width:min(720px,calc(100% - 24px));max-height:calc(100dvh - 24px);overflow:hidden}
#shop[open]{display:flex;flex-direction:column}
.shop-header{flex:none;padding:22px 24px 16px;border-bottom:1px solid var(--line);background:#182a30}
.shop-header .dialog-top{margin:0;gap:12px;align-items:flex-start}
.shop-header .eyebrow{margin-bottom:7px}
.shop-header .shop-balance{margin:14px 0;color:var(--ink);font-size:13px}
.shop-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.shop-tabs button{min-width:0;padding:9px 5px;font-size:12px;line-height:1.3}
.shop-tabs [aria-selected=true]{background:var(--mint);border-color:var(--mint);color:#143a2b}
.shop-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:0 24px 22px}
#shop [role=tabpanel]{padding-top:12px}
#shop [role=tabpanel]:focus-visible{outline:2px solid var(--mint);outline-offset:-2px}
#shop [role=tabpanel][hidden]{display:none}
@media(max-width:760px){.shop-header{padding:16px 12px 12px}.shop-header .dialog-top h2{font-size:22px}.shop-header .shop-balance{margin:10px 0}.shop-tabs{gap:4px}.shop-tabs button{font-size:10px;padding:9px 3px;min-height:36px}.shop-scroll{padding:0 12px 16px}#shop .shop-copy{min-width:0}#shop .shop-copy h3{font-size:12px}#shop .shop-item{gap:8px}#shop .shop-item button{min-width:76px;padding:9px 6px;font-size:11px}}

.intro .eyebrow .vex-credit{padding:0;color:var(--signal)}
