:root{font-family:'PingFang SC','Microsoft YaHei',system-ui,sans-serif;color:#e9f9ff;background:#020716;color-scheme:dark;--cyan:#66e7ff;--pink:#ff8de1;--green:#7cf0b0;--yellow:#ffd873;--purple:#b79aff}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{display:grid;place-items:center;background:radial-gradient(circle at 50% 12%,#142d4f,#060d20 52%,#020716)}button,input{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;touch-action:manipulation}button:focus-visible{outline:2px solid #b5f3ff;outline-offset:2px}button:disabled{opacity:.35}.boot{height:100%;display:grid;place-items:center;color:#7f9fb1;font-size:12px;letter-spacing:.12em}
.shell{position:relative;isolation:isolate;width:min(100vw,560px);height:100dvh;min-height:0;margin-inline:auto;overflow:hidden;background:#061128;box-shadow:0 0 80px #000b}.shell::after{content:'';position:absolute;inset:0;z-index:30;pointer-events:none;border:1px solid #83e5ff18;box-shadow:inset 0 0 80px #0005}#world{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#hud{position:absolute;inset:0;z-index:10;pointer-events:none}#hud button{pointer-events:auto}#modal{position:absolute;inset:0;z-index:40;pointer-events:none}#modal>*{pointer-events:auto}#toast{position:absolute;z-index:55;left:20px;right:20px;bottom:132px;padding:9px 13px;text-align:center;border-radius:16px;background:#07152eef;border:1px solid #8edcf136;color:#add1df;font-size:11px;line-height:1.6;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:none}
.game-head{position:absolute;left:12px;right:12px;top:max(12px,env(safe-area-inset-top));display:grid;grid-template-columns:42px 1fr auto 42px;gap:9px;align-items:start;padding:9px 10px;border:1px solid #82dff338;border-radius:18px;background:#07152fc9;backdrop-filter:blur(10px);box-shadow:0 8px 30px #0005}.game-head>button{width:42px;height:42px;border:1px solid #8adcf54f;border-radius:50%;background:#0d2340bf;font-size:20px}.game-head>div:nth-child(2){min-width:0}.game-head small{display:block;color:#78a8bc;font-size:8px;letter-spacing:.14em}.game-head h1{margin:3px 0 2px;font-size:14px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-head p{margin:0;color:#86a8b7;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stars{color:#d9f7ff;letter-spacing:.12em;font-size:12px;padding-top:5px;white-space:nowrap;text-shadow:0 0 10px #68dcff55}.status-pill{position:absolute;top:max(92px,calc(env(safe-area-inset-top) + 80px));left:50%;transform:translateX(-50%);width:max-content;max-width:86%;padding:5px 10px;border:1px solid #85d8ed20;border-radius:12px;background:#06142bd7;color:#8db0c0;font-size:9px;line-height:1.5;text-align:center;white-space:normal;overflow-wrap:anywhere}
.controls{position:absolute;left:14px;right:14px;bottom:max(16px,calc(env(safe-area-inset-bottom) + 8px));display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.move,.actions{display:flex;gap:10px;align-items:flex-end}.controls button{border:1px solid #9eeafd6f;background:radial-gradient(circle at 35% 25%,#284f72,#0a1c37 65%,#071328);box-shadow:0 7px 25px #0007,inset 0 1px #fff2;color:#d8f7ff;border-radius:50%;user-select:none;touch-action:none}.move button{width:58px;height:58px;font-size:18px}.jump{width:76px;height:76px;font-size:23px;display:flex;flex-direction:column;align-items:center;justify-content:center}.jump small,.aux small{display:block;font-size:8px;margin-top:2px}.aux{width:51px;height:51px;font-size:15px;color:#d8c8ff;border-color:#c3a2ff69!important}.aux.on{background:#244866!important;box-shadow:0 0 22px #7ddfff33}.special{color:#fff0b6!important;border-color:#ffd87869!important}
.actions{display:grid;grid-template-columns:51px 76px}.controls .jump{grid-column:2}
.home{position:absolute;inset:0;padding:calc(max(24px,env(safe-area-inset-top)) + 4px) 24px max(26px,calc(env(safe-area-inset-bottom) + 18px));display:flex;flex-direction:column;align-items:center;text-align:center;background:linear-gradient(180deg,#06152bc4,#06112644 48%,#061229e5)}
.result button,.dialog button{min-height:44px;border:1px solid #86d9ea42;border-radius:12px;background:#0d213bbd;color:#cce6f0;padding:8px 12px}.primary{background:linear-gradient(135deg,#173b5b,#202a4c)!important;color:#f4fdff!important;border-color:#a9e9f26d!important;box-shadow:0 8px 28px #0005}
.result{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:safe center;overflow-y:auto;padding:28px;text-align:center;background:#061126dc;backdrop-filter:blur(6px)}.result>small{color:#aaf7ff;letter-spacing:.12em;font-size:12px}.result h1{font-size:25px;font-weight:460;letter-spacing:.1em;margin:18px 0 8px}.result h2{margin:0;color:#cce6f0;font-size:16px;font-weight:500}.result-stars{font-size:42px;letter-spacing:.15em;margin:24px 0;color:#dff8ff;text-shadow:0 0 20px #7adfff55}.result p{font-size:16px;color:#b7d8f5;margin:0 0 24px}.result button{width:min(300px,85%);margin:4px}
.finale{background:radial-gradient(circle at 50% 37%,color-mix(in srgb,var(--finale) 20%,#061126),#061126ec 63%)}.finale>small{color:var(--finale)}.finale-orb{width:110px;height:110px;display:grid;place-items:center;margin:18px 0 4px;border:2px solid var(--finale);border-radius:50%;color:#fff;font-size:50px;text-shadow:0 0 20px var(--finale);box-shadow:0 0 16px var(--finale),inset 0 0 20px var(--finale);animation:finale-in 1.05s ease-out both}.finale .result-stars{color:var(--finale)}@keyframes finale-in{from{opacity:0;transform:scale(.25) rotate(-90deg)}60%{opacity:1;transform:scale(1.12) rotate(12deg)}to{transform:scale(1) rotate(0)}}
.shade{position:absolute;inset:0;background:#020717c7;display:grid;place-items:center;padding:18px}.dialog{width:min(440px,100%);max-height:min(82dvh,700px);overflow:auto;padding:17px;border:1px solid #8fddf14e;border-radius:20px;background:linear-gradient(160deg,#0b1e39fa,#0a142dfa);box-shadow:0 24px 80px #000a}.dialog header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.dialog header h2{margin:0;font-size:17px;font-weight:550}.dialog header button{width:38px;height:38px;padding:0;border-radius:50%;font-size:20px}.dialog-sub,.dialog p{color:#91afbf;font-size:10px;line-height:1.7}.chapter-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}.chapter-tab{min-height:52px!important;padding:7px 4px!important}.chapter-tab b{display:block;color:#b9ebf5;font-size:10px}.chapter-tab span{display:block;font-size:8px;color:#7c99aa;margin-top:3px}.chapter-tab.active{border-color:#a9efff;background:#143750}.level-list{display:grid;gap:4px}.level-row{display:grid!important;grid-template-columns:44px 1fr auto;gap:9px;align-items:center;text-align:left!important;padding:8px 2px!important;min-height:58px!important;border:0!important;border-bottom:1px solid #81cbe91a!important;border-radius:0!important;background:none!important}.level-index{width:38px;height:38px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--tone) 60%,transparent);border-radius:10px;color:var(--tone);font-size:10px}.level-row b{font-size:11px;font-weight:550}.level-row small{display:block;color:#718e9f;font-size:8px;margin-top:3px}.level-row em{font-style:normal;font-size:10px;color:#c9edf3}.tool-list,.wire-list{display:grid;gap:8px}.tool-list section{padding:10px;border:1px solid #82c9df25;border-radius:12px;background:#081a31}.tool-list section>b{display:block;margin-bottom:7px;font-size:11px}.tool-list section>div{display:flex;gap:5px;flex-wrap:wrap}.tool-list button,.wire-list button{min-height:40px!important;font-size:10px;text-align:left}.tool-list button small,.wire-list button small{display:block;color:#738d9d;font-size:8px;margin-top:3px}.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.wire-list button[aria-pressed=true]{border-style:dashed;color:#8294a2}.seal-preview{position:relative;height:205px;border:1px solid #8d70ba45;border-radius:14px;background:#071022;margin:10px 0}.seal-preview i{position:absolute;transform:translate(-50%,-50%);width:25px;height:25px;display:grid;place-items:center;border:1px solid #b99aff67;border-radius:50%;font-style:normal;color:#d8c7ff;font-size:9px}.seal-preview span{position:absolute;right:8%;top:42%;font-size:28px;color:#fff0a5}
#neon-art-status{opacity:.72!important;bottom:4px!important;left:6px!important;font-size:8px!important;max-width:260px!important;padding:3px 6px!important}#neon-art-status[open]{font-size:10px!important;opacity:1!important}.ui-skin-ready .game-head>button:last-child{background-image:var(--ui-pause);background-size:cover;color:transparent}
.game-head{border-color:#69e6ff9c;background:linear-gradient(135deg,#051437ed,#11194beb);box-shadow:0 0 18px #19cdff40,0 10px 30px #0008,inset 0 1px #ffffff45}.game-head::after{content:'';position:absolute;left:16px;right:16px;bottom:3px;height:2px;border-radius:2px;background:linear-gradient(90deg,#00e6ff,#9b8bff 52%,#ff4d8b);box-shadow:0 0 9px #65eaff}.game-head h1{font-size:15px;font-weight:650;color:#f7f8ff;text-shadow:0 0 10px #8beaff77}.game-head small{color:#9cbdf8}.game-head p{color:#c6d8f5}.stars{color:#ffda68;font-size:15px;letter-spacing:.02em;text-shadow:0 0 10px #ffc45f,0 0 20px #ffb94a88}.status-pill{border-color:#83e9ff78;background:#071537e3;color:#d1eaff;box-shadow:0 0 14px #45dfff36}.controls .move button{border-color:#70eaffbe;box-shadow:0 0 16px #12dbff55,inset 0 0 12px #12dbff36}.controls .jump{border-color:#ff8de1c9;box-shadow:0 0 21px #ff4d8b74,inset 0 0 15px #ff4d8b42}.controls .special{border-color:#b79affb8!important;box-shadow:0 0 18px #b79aff70}
.home{background:linear-gradient(180deg,#07132ac9 0%,#07132a67 43%,#071329e8 100%)}
@media (orientation:landscape){.shell{height:100dvh;width:min(56.25dvh,560px)}}@media (max-width:360px){.move button{width:52px;height:52px}.jump{width:67px;height:67px}.aux{width:46px;height:46px}.game-head h1{font-size:12px}.game-head{grid-template-columns:38px 1fr auto 38px}.game-head>button{width:38px;height:38px}}@media (max-height:620px){.status-pill{display:none}.controls{bottom:10px}.game-head{top:8px}.result-stars{margin:12px 0;font-size:32px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media (orientation:landscape) and (max-height:620px){
  .shell{min-height:0;width:min(100vw,max(280px,56.25dvh))}
  .game-head{left:6px;right:6px;top:5px;grid-template-columns:32px minmax(0,1fr) 32px;gap:4px;padding:5px;border-radius:12px}
  .game-head>button{width:32px;height:32px;font-size:17px}
  .game-head h1{font-size:11px}.game-head small{font-size:7px}.game-head p{font-size:8px}.stars{display:none}
  .controls{--touch:44px;left:6px;right:6px;bottom:6px;gap:8px}
  .move{gap:8px}.actions{display:grid;grid-template-columns:44px 64px;gap:8px}
  .move button,.jump,.aux{width:var(--touch);height:var(--touch)}
  .controls .jump{width:64px;height:64px;grid-column:2}
  .move button{font-size:15px}.jump{font-size:18px}.aux{font-size:13px}
  .jump small,.aux small{font-size:6px;margin-top:0}
  .home{padding:10px 8px}
  .result{padding:8px}.finale-orb{width:44px;height:44px;margin:6px 0;font-size:25px}.result h1{font-size:16px;margin:5px 0}.result h2{font-size:14px}.result-stars{font-size:22px;margin:5px 0}.result p{margin-bottom:6px}.result button{min-height:44px;margin:4px;padding:6px;flex-shrink:0}
  .shade{padding:6px}.dialog{max-height:calc(100dvh - 12px);padding:8px}
}

.game-head{grid-template-columns:44px minmax(0,1fr) auto 44px}
.game-head>button{width:44px;height:44px}
.game-head small{font-size:10px;letter-spacing:.08em}
.game-head p{font-size:11px}
.status-pill{max-width:92%;padding:7px 11px;font-size:12px;line-height:1.45}
.jump small,.aux small{font-size:10px}
.dialog header button{width:44px;height:44px}
.dialog-sub,.dialog p{font-size:12px}
.chapter-tab span,.level-row small{font-size:10px}
.level-row b{font-size:12px}
.tool-list button,.wire-list button{min-height:44px!important;font-size:12px}
.pause-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pause-actions .primary,.pause-actions button[data-action="home"]{grid-column:1/-1}
.pause-actions button,.result button,.chapter-tab.active{border-color:#69e6ff9c;background:linear-gradient(135deg,#071c40,#182052);box-shadow:inset 0 1px #ffffff38,0 0 13px #2bdcff38}
.pause-actions .primary,.result .primary{box-shadow:0 0 18px #2bdcff65,inset 0 0 10px #5bddff42}
.pause-actions button[data-action="home"],.result button[data-action="home"]{border-color:#ff8de17a;background:linear-gradient(135deg,#201440,#381452);box-shadow:0 0 12px #ff4d8b38}
.game-head::after{content:'';position:absolute;left:14px;right:14px;bottom:2px;height:3px;border-radius:3px;background:linear-gradient(to right,#00e6ff var(--beat,0%),#43205b var(--beat,0%));box-shadow:0 0 9px #00e6ff}
.status-pill{border-color:#00e6ff73;color:#f0fbff;background:#071738eb;font-weight:600}
.pause-actions label{display:grid;gap:5px;align-content:center;padding:8px;color:#d5f7ff;font-size:12px;pointer-events:auto}
.pause-actions input{width:100%;accent-color:#00e6ff}
.home{background:linear-gradient(180deg,#07132a9c 0%,#07132a40 45%,#071329e3 100%),url('/resources/home-neon-city.webp') center/cover}
@media (max-width:360px){.game-head{grid-template-columns:44px minmax(0,1fr) auto 44px}.game-head>button{width:44px;height:44px}}
@media (max-height:620px){
  .status-pill{display:block;top:max(82px,calc(env(safe-area-inset-top) + 76px));font-size:12px;padding:4px 7px}
}
@media (orientation:landscape) and (max-height:620px){
  .game-head{grid-template-columns:44px minmax(0,1fr) 44px}
  .game-head>button{width:44px;height:44px}
}

.actions{position:relative}.controls .build-access{position:absolute;right:86px;bottom:calc(100% + 8px)}

.result-stars,.finale .result-stars{color:#ffd54a;text-shadow:0 0 20px #ffd54a66}
@media (max-height:620px) and (orientation:portrait){.finale-orb{width:76px;height:76px;margin:12px 0 0;font-size:36px}}.home{overflow-y:auto}

.endless-mode .game-head{background:#090f22!important;border:1px solid #43527a;border-radius:10px;box-shadow:none}.endless-mode .game-head button{background:#111c32!important;border:1px solid #5acfdc;border-radius:8px;box-shadow:none}.endless-mode .controls button{background:#0d1b26!important;border:1px solid #00e6ff;border-radius:12px;box-shadow:none}.endless-mode .controls .jump{border-color:#5bffc7}.endless-mode .status-pill{border-radius:6px;box-shadow:none}

.endless-mode .game-head>button:last-child{color:#efffff!important;background-image:none!important}

.reduced-motion *{animation:none!important;transition:none!important}

@media (max-width:360px) and (orientation:portrait){.actions{display:grid;grid-template-columns:46px 67px;gap:10px}.controls .jump{grid-column:2}}

/* Simple neon geometry: keep the actor atlas, draw the surrounding UI with CSS. */
.home{background:linear-gradient(180deg,#05091930 0%,transparent 42%,#03091d20 100%)!important}
.game-head,.endless-mode .game-head{background:#080d26e8!important;box-shadow:none!important;backdrop-filter:none;border:1px solid #393b70;border-radius:9px}
.game-head>button,.ui-skin-ready .game-head>button:last-child,.controls button{background:#181744!important;background-image:none!important;color:#f5faff!important;border-radius:9px;box-shadow:none!important;border:1px solid #7371bc!important}
.controls .jump{background:#00b9d8!important;border-color:#00e6ff!important}.status-pill{background:#080d26e8;border-radius:6px;box-shadow:none}.stars{color:#ffe052}.result,.dialog{background:#080d26f5;backdrop-filter:none}.result button,.dialog button{border-radius:9px;box-shadow:none;background:#191747}.result button.primary,.dialog button.primary{background:#00aecd!important}
@media(orientation:landscape) and (max-height:620px){
 .home{display:grid;grid-template-columns:84px minmax(0,1fr);grid-template-rows:auto auto 100px auto;gap:6px 10px;padding:12px}
}

.chapter-tabs{display:flex;overflow-x:auto;gap:6px;padding-bottom:8px;scroll-snap-type:x proximity}.chapter-tab{flex:0 0 104px;scroll-snap-align:start}

/* Keep run feedback grouped and readable without moving the touch controls. */
.run-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(330px,100%);gap:8px;margin:0 0 14px;flex-shrink:0}
.run-stats>div{padding:10px 4px;border:1px solid #516193;border-radius:8px;background:#101730}
.run-stats dt{font-size:12px;color:#b4c6f2}.run-stats dd{font-size:24px;font-weight:650;color:#f6fbff;margin:4px 0 0;font-variant-numeric:tabular-nums}
.result-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:12px;flex-shrink:0}.result-badges span{font-size:12px;color:#ffe052;border:1px solid #ffe05270;border-radius:5px;padding:4px 7px}
.result .personal-record{font-size:14px;line-height:1.6;color:#b4c6f2;max-width:330px;margin-bottom:10px}.result .replay-target{font-size:16px;line-height:1.5;margin-bottom:16px;color:#70eeff}
.level-row>span:nth-child(2){min-width:0}.level-row b{font-size:14px}.level-row small{font-size:12px;line-height:1.5;overflow-wrap:anywhere}.level-row .level-record{color:#aaf7ff;font-variant-numeric:tabular-nums}.level-row em{white-space:nowrap;color:#ffe052}
.dialog .failure-tip{font-size:16px;line-height:1.6;color:#bceaff}
.dialog-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-top:16px;min-width:0}
.dialog-actions>button{width:100%;min-width:0;min-height:48px;margin:0;padding:12px;font-size:14px;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.dialog-actions>.dialog-sub{margin:0}
@media(max-height:620px){.run-stats{margin-bottom:8px}.run-stats>div{padding:6px 3px}.run-stats dd{font-size:20px}.result .replay-target,.result .personal-record{margin-bottom:8px}.result-badges{margin-bottom:8px}}

@media(max-height:620px){.result{padding:12px 20px}.finale-orb{display:none}.result h1{font-size:20px;margin:6px 0}.result-stars{font-size:28px;margin:8px 0}.result>p:first-of-type{margin-bottom:10px}.result button{flex-shrink:0}}

/* Keep continuation visible while long results scroll above it. */
.result{height:min(100%,100dvh);padding:max(16px,env(safe-area-inset-top)) 20px max(16px,env(safe-area-inset-bottom));justify-content:flex-start;overflow:hidden;gap:12px;pointer-events:auto}
.result-content{display:flex;flex-direction:column;align-items:center;justify-content:safe center;flex:1;min-height:0;width:100%;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:4px 4px 8px;scroll-padding:8px;pointer-events:auto}
.result-content>*{flex-shrink:0}.result-content>small{color:#aaf7ff;letter-spacing:.12em;font-size:12px}.finale .result-content>small{color:var(--finale)}
.result-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:min(330px,100%);flex-shrink:0;padding-top:12px;border-top:1px solid #516193}
.result .result-actions button{width:100%;min-height:48px;margin:0;padding:10px 8px;font-size:14px;line-height:1.3}.result .result-actions .primary{grid-column:1/-1;font-size:17px;font-weight:650}

/* Compact one-tap swap sits immediately left of jump. */
.controls .special.swap-action{grid-column:1;grid-row:2;width:51px;height:51px;border-radius:9px;background:#28204e80!important;border:1px solid #ffe052b3!important}
.controls .special.swap-action span{display:none}.controls .special.swap-action small{font-size:13px;font-weight:650;margin:0;color:#fff3a6}
.swap-tutorial{position:absolute;left:0;right:0;bottom:calc(100% + 8px);padding:8px 10px;border:1px solid #ffe05280;border-radius:8px;background:#11132dec;color:#fff3a6;font-size:12px;line-height:1.5;text-align:center;pointer-events:none}
@media(max-width:360px) and (orientation:portrait){.controls .special.swap-action{width:46px;height:46px}}
@media(orientation:landscape) and (max-height:620px){.controls .special.swap-action{width:44px;height:44px}}

.actions:has(.swap-action) .jump{grid-row:2}
/* Translucent fills preserve full-strength labels and neon outlines. */
#app .controls button,#app .dialog button{background:#18174480!important;background-image:none!important}
#app .controls button.jump{background:#00b9d899!important}
#app .controls button.swap-action{background:#28204e80!important}
#app button.on,#app button[aria-pressed="true"]{background:#244866b3!important}
#app button:active{background:#26485cbb!important}

/* Geometric action assets; text remains in accessible names and short tutorials. */
.controls button{display:flex;align-items:center;justify-content:center}
.control-icon{width:26px;height:26px;flex-shrink:0;pointer-events:none;filter:drop-shadow(0 0 4px #67dcff55)}
.controls .jump{flex-direction:column}.jump .control-icon{width:30px;height:30px}
.controls .special.swap-action .control-icon{display:block}
.tool-tray[hidden]{display:none}.tool-tray{position:absolute;left:0;right:0;bottom:calc(100% + 48px);display:flex;gap:8px;align-items:flex-start;padding:8px;border:1px solid #67e8ff66;border-radius:12px;background:#06152bd9;pointer-events:auto;box-shadow:0 8px 24px #0005}
.tool-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;flex:1;max-height:176px;overflow:auto}
.controls .tool-tray button{min-width:44px;min-height:48px;width:auto;height:auto;border-radius:8px;padding:6px;flex-wrap:wrap;gap:4px;background:#17254480!important}
.tool-tray>button{width:44px!important;height:48px!important;flex-shrink:0}.tool-tray small{display:block;width:100%;font-size:10px;line-height:1.3;color:#dbfaff}
.piece-preview{width:min(35px,100%);height:16px;border:2px solid var(--piece-color);border-radius:2px;box-shadow:0 0 5px var(--piece-color)}
.score-notes{display:flex;gap:1px}.score-notes i{display:block}.score-notes .control-icon{width:18px;height:22px}
.tool-tray [aria-pressed=false]{border-style:dashed;color:#a8b7cc;box-shadow:none}
@media(orientation:landscape) and (max-height:620px){.tool-tray{bottom:calc(100% + 8px)}.tool-options{max-height:110px}}

.controls button[hidden]{display:none!important}
/* Contextual help stays out of the movement controls and never opens automatically. */
/* A stable 48px icon entry; only a deliberate tap reveals details. */
.hint-button{position:absolute;right:12px;top:max(128px,calc(env(safe-area-inset-top) + 116px));width:48px;height:48px;padding:12px;display:flex;gap:0;align-items:center;justify-content:center;border:1px solid #ffe36d80;border-radius:12px;color:#fff1a9;pointer-events:auto;background:#172342b8!important}
.hint-button .control-icon{width:24px;height:24px}
.hint-button.offered{border-color:#ffe36d;box-shadow:0 0 12px #ffd54a40}.hint-button.offered:after{content:'';position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:#ffe36d}.hint-button:active{background:#324258d9!important}.hint-button:disabled{opacity:.45}
.hint-card{position:absolute;top:max(184px,calc(env(safe-area-inset-top) + 172px));left:12px;right:12px;border:1px solid #e9d66a88;border-radius:12px;padding:8px 12px;background:#071329ed;pointer-events:auto;box-shadow:0 6px 20px #0004}
.hint-card[hidden]{display:none!important}.hint-card header{display:flex;align-items:center;gap:8px;color:#fff1a9;font-size:14px;min-height:48px}.hint-focus .control-icon{width:24px;height:24px}.hint-access{margin-left:auto;color:#b9ccd9;font-size:11px;white-space:nowrap}.hint-title{white-space:nowrap}
.hint-card header button{width:48px;height:48px;padding:14px;border-radius:10px;flex-shrink:0}.hint-card p{margin:2px 0 6px;font-size:14px;line-height:1.5;color:#f4fbff}.hint-note{display:block;color:#b9ccd9;font-size:11px;line-height:1.5;margin:2px 0 6px}
.hint-card>button{min-height:48px;width:100%;border-radius:10px;padding:8px 12px;color:#fff1a9;border-color:#e9d66a99}.hint-card>button[hidden]{display:none!important}
@media(max-height:600px){.hint-button{top:max(108px,calc(env(safe-area-inset-top) + 96px))}.hint-card{top:max(164px,calc(env(safe-area-inset-top) + 152px));padding:4px 8px}.hint-card p{font-size:13px;line-height:1.4}.hint-card header{min-height:48px}.hint-card header button{width:48px;height:48px}}
@media(orientation:landscape) and (max-height:450px){.hint-access{display:none}.hint-focus{display:none}.hint-card header{gap:4px}.hint-card{padding:2px 8px}.hint-note{display:none}.hint-card p{font-size:12px;line-height:1.3;margin:0 0 4px}.hint-card>button{min-height:48px}}

.controls button.hint-target-control{border-color:#ffe36d!important;box-shadow:0 0 12px #ffd54a66}

/* Unlocked instructions live in the scene; only a close control remains in the HUD. */
.hint-card.visual-guide{left:auto;right:12px;width:48px;padding:0;background:#071329b8;box-shadow:none}
.hint-card.visual-guide .hint-focus,.hint-card.visual-guide .hint-title,.hint-card.visual-guide .hint-access,.hint-card.visual-guide .hint-note{display:none}
.hint-card.visual-guide .hint-text{display:none}
.hint-card.visual-guide header{justify-content:center}

/* Progression uses the same restrained geometry as the playable world. */
.collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 20px}
.collection-item{display:flex;flex-direction:column;align-items:center;gap:8px;min-height:116px;padding:12px!important;border:1px solid #50648c!important;border-radius:12px;background:#101d35!important;color:#eaf6ff!important}
.collection-item.selected{border-color:#76edff!important;background:#163449!important}.collection-item:disabled,.collection-tracks button:disabled{opacity:.65;cursor:default}
.collection-item small,.collection-tracks small{font-size:12px;color:#c4d6eb;line-height:1.5}.style-swatch{display:block;width:48px;height:28px;border:2px solid #76edff;box-shadow:0 0 8px #76edff44;border-radius:2px}
.style-ripple{border-radius:50%;width:32px;height:32px}.style-prism{transform:rotate(-15deg);border-color:#ce9aff}.style-comet{height:8px;width:48px;border-right:8px solid #fff;border-radius:8px}
.collection-tracks{display:grid;gap:8px}.collection-tracks button{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:52px;text-align:left}.collection-tracks small{max-width:52%;text-align:right}.dialog h3{font-size:16px;color:#bceaff;margin:20px 0 8px}
.daily-goals{margin:12px 0;padding-left:24px;line-height:1.9;color:#ffe484}.rhythm-award{color:#ffe484!important}.level-row em small{display:block;font-size:10px;color:#ffe484;font-style:normal;margin-top:5px}.level-row em{min-width:60px}.level-row{gap:8px}
@media(max-height:680px){.collection-item{min-height:100px}}

.chapter-lights{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;margin:12px auto;width:min(100%,340px)}
.chapter-lights i{font-style:normal;border:1px solid #737ba055;border-radius:5px;padding:7px 0;color:#747fa2;font-size:12px}
.chapter-lights i.lit{color:#e9ffff;border-color:var(--finale);background:#4fbce51c;animation:chapter-light .65s both;animation-delay:var(--delay)}
@keyframes chapter-light{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.reduced-motion .chapter-lights i.lit{animation:none}

/* Shared touch rectangles match the Canvas port; labels stay visible at minimum opacity. */
.controls{inset:0!important;display:block;pointer-events:none}.controls .move,.controls .actions{position:static;display:block}.controls>.move>button,.controls>.actions>button{position:absolute!important;right:auto!important;bottom:auto!important;min-width:44px;min-height:44px;pointer-events:auto}.controls .swap-tutorial{bottom:180px;left:16px;right:16px}.controls .tool-tray{bottom:235px;left:12px;right:12px}
.pause-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0}.pause-actions>button{min-width:0;min-height:48px;padding:10px 8px;white-space:normal;overflow-wrap:anywhere;font-size:13px;line-height:1.45}.pause-actions>label{grid-column:1/-1;min-width:0}.pause-actions label{display:grid;grid-template-columns:105px 1fr;gap:8px;align-items:center;min-height:44px;font-size:13px}.pause-actions input{width:100%;min-width:0;min-height:44px;accent-color:#00e6ff}.report-scroll{overflow:auto}.report-scroll table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.report-scroll th,.report-scroll td{padding:8px;text-align:left;border-bottom:1px solid #59608755}.replay-controls{position:absolute;left:16px;right:16px;bottom:max(20px,env(safe-area-inset-bottom));text-align:center;pointer-events:auto}.replay-controls p{color:#bdeeff;font-size:12px}.replay-controls button{min-height:48px;padding:12px 24px;color:#fff;border:1px solid #00e6ff;border-radius:10px}

@media(max-height:620px) and (orientation:portrait){.home{padding:12px 20px max(12px,env(safe-area-inset-bottom))}}

/* Dialogs stay within the portrait game, including small landscape shells. */
.dialog{width:min(100%,400px);min-width:0;max-height:100%;overscroll-behavior:contain}.dialog header h2{min-width:0;overflow-wrap:anywhere}.dialog header button{width:44px;height:44px;flex-shrink:0}.shade{padding:12px;min-width:0}.dialog:has([data-setting="control-size"]){max-width:360px}.dialog:has([data-setting="control-size"]) .pause-actions{grid-template-columns:minmax(0,1fr)}
.status-pill{left:12px;right:72px;top:max(98px,calc(env(safe-area-inset-top) + 94px));transform:none;max-width:none;width:auto;text-align:left;font-weight:400;font-size:12px;padding:6px 9px;line-height:1.5}
.game-head h1{font-size:14px;line-height:1.4}.game-head small{letter-spacing:0;font-size:12px}.game-head p{font-size:12px;line-height:1.4}
.pause-menu{margin-top:14px}.pause-menu>button{font-size:14px}.pause-menu>button[data-action="home"]{margin-top:8px;background:#10142b;border-color:#626c9255;color:#b9cce0}
.settings-sections{display:grid;gap:8px}.settings-sections details{border:1px solid #626c9255;border-radius:10px;overflow:hidden}.settings-sections summary,.level-details summary{cursor:pointer;min-height:48px;padding:12px;line-height:24px;font-size:14px;color:#bceaff;touch-action:manipulation}.settings-sections details[open] summary{border-bottom:1px solid #626c9244}.settings-sections .pause-actions{padding:8px;grid-template-columns:minmax(0,1fr)}.settings-sections .pause-actions label{grid-template-columns:105px minmax(0,1fr)}
.chapter-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 0 8px;scroll-snap-type:x proximity}.chapter-tabs::-webkit-scrollbar{display:none}.chapter-tab{flex:0 0 104px;scroll-snap-align:center}.chapter-tab b{font-size:13px}.chapter-tab span{font-size:12px}.dialog{scrollbar-width:thin;scrollbar-color:#4c507c transparent}
.level-list{gap:8px}.level-entry{border:1px solid #46496777;border-radius:10px;background:#0d173480;min-width:0;scroll-margin-block:12px}.level-entry.current{border-color:#00e6ff;background:#06304480}.level-entry .level-row{padding:10px!important;grid-template-columns:44px minmax(0,1fr) 54px;border-bottom:0!important;min-height:64px!important;gap:8px}.level-row b{font-size:14px;line-height:1.5}.level-row small{font-size:12px}.level-row em{font-size:14px;min-width:0}.level-index{font-size:12px;width:40px;height:40px}.level-details summary{min-height:44px;font-size:12px;padding:6px 12px;color:#9db0c9}.level-details p{padding:0 12px;font-size:13px}.level-details[open]{border-top:1px solid #626c9244}
summary:focus-visible{outline:2px solid #00e6ff;outline-offset:-3px}
@media(max-width:360px){.game-head{grid-template-columns:44px minmax(0,1fr) 44px;gap:8px}.game-head .stars{display:none}}
@media(max-height:620px) and (orientation:portrait){.status-pill{top:max(88px,calc(env(safe-area-inset-top) + 84px))}}

.reward-preview{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 12px;text-align:left;background:#0c193aaa;border:1px solid #547d9a66;border-radius:10px;font-size:12px}
.reward-preview .style-swatch{flex:none;width:28px;height:18px;box-shadow:none}.reward-preview>span:nth-child(2){flex:1}.reward-preview small{display:block;color:#a6bcd5;font-size:11px;margin-top:3px}
.style-mint{border-color:#54ffc1;transform:skew(-18deg)}.style-ember{border-color:#ffe052;transform:skew(-18deg)}.style-aurora{border-color:#a66bff;background:linear-gradient(110deg,#00e6ff55,#a66bff55,#54ffc155)}.style-duet{border-color:#ff35b5;border-bottom-color:#00e6ff}.style-starlight{border-color:#e5d5ff;border-right-color:#ffe052}.style-spectrum{border-color:#00e6ff;border-right-color:#ff35b5;border-bottom-color:#ffe052}

.home{background:linear-gradient(180deg,#070c1c66,#070c1c22 48%,#070c1ce8),url('../resources/home-neon-city.webp') center/cover!important}
/* Design v2: a game HUD with a portrait, checkpoint rail and event-driven accents. */
.game-head,.endless-mode .game-head{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;min-height:88px;gap:12px;padding:10px 12px;border:1px solid #3c7092;background:linear-gradient(125deg,#0c2340f2,#111a38ef)!important;border-radius:16px;box-shadow:inset 0 1px #c4faff24,0 6px 20px #02061266}
.game-head::after{display:none}.hud-emblem{position:relative;width:44px;height:64px;padding-bottom:16px}.hud-emblem img{width:44px;height:48px;object-fit:contain;background:linear-gradient(160deg,#21405d,#111e39);border:1px solid #4bbed2;border-radius:10px}.game-head .hud-heading{min-width:0;position:relative}.game-head h1{margin:0 0 6px;font-size:14px;line-height:20px;text-shadow:none;font-weight:650}.hud-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.game-head small{font-size:12px;line-height:16px;color:#aec8e6;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-bonus{font-size:17px;color:#9aacc5}.hud-bonus.collected{color:#ffe052;text-shadow:0 0 8px #ffe05255}.hud-stages{display:flex;gap:5px;height:4px;margin-top:8px}.hud-stages:empty{display:none}.hud-stages i{flex:1;border-radius:2px;background:#33455e}.hud-stages i.current{background:#a66bff}.hud-stages i.passed{background:#00e6ff}.game-head>button{display:grid;place-items:center;width:44px;height:44px;padding:8px;background:linear-gradient(155deg,#223554,#111d33)!important;border:1px solid #7088ae!important;border-radius:12px!important;box-shadow:inset 0 1px #d8ecff33!important;color:#ecf7ff!important;background-image:none!important}.game-head>button .control-icon{display:block}
.beat-track{display:flex;gap:4px;position:absolute;left:0;bottom:4px}.beat-track i{display:block;width:8px;height:4px;border-radius:2px;background:#49617d}.beat-track i.active{background:#00e6ff;box-shadow:0 0 7px #00e6ff99}
.status-pill{top:max(112px,calc(env(safe-area-inset-top) + 100px));left:12px;transform:none;display:flex;align-items:center;gap:8px;max-width:calc(100% - 90px);min-height:32px;padding:5px 10px;border:1px solid #34516c;border-radius:10px;background:#0b1a32e8;box-shadow:inset 2px 0 #00e6ff66;color:#ecf7ff;font-size:12px;text-align:left;font-weight:500}.status-mark{display:flex;flex:none;color:#70eeff}.status-mark svg{width:16px;height:16px}.hud-feedback{position:absolute;left:18px;right:80px;top:max(152px,calc(env(safe-area-inset-top) + 140px));display:flex;align-items:center;flex-wrap:wrap;gap:8px;pointer-events:none}.hud-phrase,.hud-combo{position:static;line-height:22px;padding:1px 7px;font-size:12px;color:#b0f6ff;background:#0c243ddd;border-radius:6px}.hud-combo{color:#ffdd8a;border:1px solid #ffe05255}.hint-button{top:max(110px,calc(env(safe-area-inset-top) + 98px));box-shadow:0 0 9px #ffe05218!important}
.result{background:radial-gradient(ellipse at 50% 25%,#18316070,transparent 50%),linear-gradient(180deg,#070c1cbb,#070c1cf2 78%),url('../resources/home-neon-city.webp') center/cover}.result-goals{width:100%;margin:12px 0;display:grid;gap:8px}.result-goals>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 13px;background:#101e37e8;border:1px solid #3a4c74;border-left:3px solid #00e6ff;border-radius:10px;text-align:left}.result-goals>div:nth-child(2){border-left-color:#ffe052}.result-goals>div:nth-child(3){border-left-color:#a66bff}.result-goals dt{display:flex;align-items:center;gap:8px;font-size:13px;color:#ecf7ff}.result-goals dt>span{width:18px;color:#80ecff;font-size:17px}.result-goals>div:nth-child(2) dt>span{color:#ffe052}.result-goals>div:nth-child(3) dt>span{color:#caa5ff}.result-goals dd{font-size:12px;color:#b0f6ff;margin:0;text-align:right;max-width:60%}.result-brief{font-size:13px!important;color:#aec8e6!important}.result-details{width:100%;text-align:left}.result-details summary{min-height:44px;line-height:24px;padding:10px;cursor:pointer;font-size:13px;color:#aec8e6}.result-details[open]{padding:8px;background:#101a30;border-radius:8px}.result-details p{font-size:12px;line-height:1.6;margin-bottom:10px}.result-details .unlock-award{display:none}.result .result-content{width:min(100%,360px)}.result .result-stars{margin:18px 0;font-size:36px;text-shadow:0 0 14px #ffe05255}.result .result-actions{width:min(100%,360px);display:grid;grid-template-columns:1fr 1fr;gap:8px}.result .result-actions button{margin:0;width:100%;min-height:48px}.result .result-actions .primary{grid-column:1/-1;min-height:56px;border-color:#00e6ff!important;background:linear-gradient(135deg,#095068,#18365e)!important;box-shadow:0 0 20px #00e6ff22,inset 0 1px #bdfaff55}.level-objectives summary{min-height:44px;padding:10px 0;cursor:pointer;font-size:14px;color:#aec8e6}.level-objectives p{font-size:12px}.level-objectives{border-bottom:1px solid #36445e}
@media(max-width:360px){.game-head{gap:8px;padding-inline:10px}.game-head h1{font-size:13px}.game-head small{font-size:11px}.result{padding:16px}.result-goals dd{font-size:12px}.result-goals dt{gap:4px}}
@media(max-height:620px) and (orientation:portrait){.game-head{top:max(8px,env(safe-area-inset-top));min-height:84px}.status-pill{top:max(104px,calc(env(safe-area-inset-top) + 96px))}.hint-button{top:max(102px,calc(env(safe-area-inset-top) + 94px))}.hud-feedback{top:max(144px,calc(env(safe-area-inset-top) + 136px))}.result h1{font-size:22px;margin:12px 0}.result .result-stars{margin:12px 0;font-size:28px}}
.reduced-motion .beat-track i.active,.reduced-motion .hud-bonus.collected{box-shadow:none;text-shadow:none}

/* Calibration owns a fixed press target; the running game stays paused behind it. */
.calibration-status{min-height:3em;color:#c5eafa;text-align:center}
.dialog .calibration-pad{--pulse:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:112px;border:2px solid #4de7ef;background:rgba(12,58,82,calc(.45 + var(--pulse)*.4));box-shadow:inset 0 0 calc(var(--pulse)*22px) #55eaff66;touch-action:manipulation}
.calibration-pad span{font-size:32px}.calibration-pad small{font-size:13px;color:#d5f8ff}

.calibration-pad svg{width:36px;height:36px}

/* Compact play HUD: movement space first, four clear beats beside real progress. */
.game-head{min-height:72px;grid-template-columns:36px minmax(0,1fr) 44px;gap:10px;padding:8px 10px}
.hud-emblem{width:36px;height:44px;padding:0}.hud-emblem img{width:36px;height:44px}
.game-head h1{font-size:13px;line-height:18px;margin:0 0 2px}.hud-meta{min-height:18px;gap:8px}.hud-meta small{font-size:12px;line-height:16px}
.hud-meta .beat-track{position:static;display:flex;gap:4px;width:auto;height:7px;margin-left:auto;flex-shrink:0;transform:none}
.hud-meta .beat-track i{width:10px;height:7px;border-radius:2px;background:#33455e}.hud-meta .beat-track i.active{background:#63f5ff;box-shadow:0 0 6px #00e6ff66;transform:none}
.hud-stages{height:4px;margin-top:5px}.status-pill{top:calc(max(12px,env(safe-area-inset-top)) + 82px);min-height:28px;padding:5px 9px}.hint-button{top:calc(max(12px,env(safe-area-inset-top)) + 80px)}
.hud-feedback{top:calc(max(12px,env(safe-area-inset-top)) + 120px)}.status-pill[hidden]{display:none}
.rhythm-review{margin:12px 0;padding:12px;border:1px solid #374d70;border-radius:12px;background:#09172b}.rhythm-review p{margin:0 0 10px}.rhythm-review ol{display:flex;gap:7px;flex-wrap:wrap;list-style:none;margin:0;padding:0}.rhythm-review li{display:flex;flex-direction:column;gap:4px;padding:8px;border-radius:7px;background:#152640;font-size:11px;color:#c4d6ec}.rhythm-review li b{color:#fff}.rhythm-review .timing-perfect{border-bottom:2px solid #60f4db}.rhythm-review .timing-good{border-bottom:2px solid #7fbfff}.rhythm-review .timing-early,.rhythm-review .timing-late{border-bottom:2px solid #ffd979}
@media(max-height:620px){.game-head{top:8px;min-height:68px}.status-pill{top:84px}.hint-button{top:82px}.hud-feedback{top:122px}}
@media(max-width:360px){.game-head{gap:7px}.game-head h1{font-size:13px}.hud-meta small{font-size:11px}.hud-meta{gap:5px}.hud-meta .beat-track{gap:3px}.hud-meta .beat-track i{width:9px}}
.goal-options{display:grid;gap:10px;margin:14px 0}.goal-options button{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:5px;min-height:64px}
.goal-options small{color:#acc4dc;font-size:12px;font-weight:400;line-height:1.45}.daily-tiers{display:grid;gap:10px;margin:16px 0}.daily-tiers section{padding:12px 14px;border-radius:12px;background:#0b1c31;border:1px solid #334e6b}.daily-tiers h3{font-size:15px;margin:0 0 8px;color:#8af3ea}.daily-tiers section+section h3{color:#ffe083}.daily-tiers p{margin:0}.daily-tiers small{color:#aec8dc}.daily-tiers ul{margin:4px 0 8px}
.daily-tiers + button.primary{width:100%;min-height:48px}

/* Earned items stay visible without competing with the primary continue action. */
.reward-card{display:grid;grid-template-columns:32px minmax(0,1fr);gap:8px 10px;align-items:center;margin:14px 0;padding:12px;border:1px solid #62dce96b;border-radius:14px;background:#10344880;text-align:left}
.reward-card>span{font-size:25px;color:#b2faff;text-shadow:0 0 12px #00e6ff66}
.reward-card small,.reward-card b{display:block;overflow-wrap:anywhere}.reward-card small{color:#a9c8db;font-size:12px}.reward-card b{margin-top:4px;font-size:15px;color:#f1fbff}
.reward-card-actions{grid-column:2;display:flex;flex-wrap:wrap;gap:8px}.reward-card-actions button{min-height:44px;min-width:72px;width:auto;padding:8px 16px;font-size:13px}
.result-next-goal{padding:12px 0;border-bottom:1px solid #7ebdd12b}.result-next-goal b{color:#aeedee;font-size:16px}.result-next-goal p{margin-bottom:4px;font-size:13px;line-height:1.6}

/* Countdown keeps the jump buffer available while mechanism commands wait. */
.controls button:disabled{opacity:.3!important;cursor:default}

/* Interaction previews keep the real controls at their measured sizes. */
.controls button.is-held{border-color:#fff!important;background-color:#1b5273b8!important;box-shadow:inset 0 0 0 2px #f0fcff88,0 0 14px #67e8ff55!important}
.controls-preview{border:1px solid #34546b;border-radius:12px;padding:8px;background:#071629;overflow:hidden;margin:10px 0}
.controls-preview canvas{display:block;width:100%;height:180px}
.controls-preview small{display:block;text-align:center;color:#b9d6e7;font-size:11px;margin-top:6px}
.tool-options button[aria-pressed="true"]{outline:2px solid #e3fbff;outline-offset:-2px}
.tool-options .build-confirm{border-color:#81e8bc;background:#123e3c}
.orientation-guard{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px;text-align:center;background:#071022f5;color:#e9f9ff}
.orientation-guard[hidden]{display:none}
.orientation-guard>span{font-size:54px;color:#69dce9}.orientation-guard h2{font-size:22px}.orientation-guard p{font-size:14px;color:#b6d9ec}

.settings-sections .controls-preview{position:sticky;top:0;z-index:2}

/* Commit/cancel stay outside the scrolling choices, leaving the selected pose visible. */
.tool-commands{display:flex;flex-direction:column;gap:8px;flex:0 0 48px}
.controls .tool-commands button{width:48px;height:52px;padding:4px}
.tool-tray[data-kind="build"] .tool-options{max-height:128px;gap:8px}
.tool-commands .build-confirm{border-color:#81e8bc;background:#123e3c!important}

/* Home: content-sized buttons; one rule set shared by new and returning players. */
.home{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:24px;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;pointer-events:auto;text-align:center;background:linear-gradient(180deg,#070c1c66,#070c1c22 48%,#070c1ce8),url('../resources/home-neon-city.webp') center/cover}
.home>*{flex-shrink:0;width:100%;max-width:330px;min-width:0}
.hero-copy{margin:0}.hero-copy small{color:#9bdaf4;font-size:11px;letter-spacing:.2em}.hero-copy h1{margin:12px 0;font-size:clamp(36px,10vw,50px);font-weight:600;letter-spacing:.15em;line-height:1.2;color:#f7f8ff;text-shadow:0 0 22px #66e7ff55,0 0 40px #a66bff33}.hero-copy p{margin:0;color:#d2def6;font-size:13px;line-height:1.6;letter-spacing:.08em}
.home-stats{display:grid;gap:4px;padding:12px 16px;border:1px solid #5b92b877;border-radius:14px;background:#07172ebd;color:#b7d3e7}.home-stats b{font-size:20px;font-weight:600;color:#f1fbff}.home-stats span,.home-stats small{font-size:12px;line-height:1.5}.home-stats .home-chapter{color:#aaf7ff;margin-top:4px}
.home-buttons{display:grid;gap:12px;margin:0;padding:0}
.home .home-buttons button{width:100%;min-width:0;height:auto;min-height:48px;padding:12px 16px;border:1px solid #607aa6;border-radius:12px;background:linear-gradient(145deg,#172c4eec,#172041ed);box-shadow:inset 0 1px #c5dfff33;color:#f1fbff;font-size:14px;font-weight:550;line-height:1.5;white-space:normal;overflow-wrap:anywhere;transition:filter .12s,border-color .12s}
.home .home-buttons button:active{filter:brightness(1.22);border-color:#bceeff}
.home .home-buttons button[data-action="play"]{min-height:56px;font-size:17px;border-color:#00e6ff!important;background:linear-gradient(125deg,#07566b,#203b6b)!important;box-shadow:0 0 24px #00e6ff30,inset 0 1px #b8fbff66!important}
.home .home-buttons .selected-goal{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;min-height:80px}
.home .goal-copy{display:flex;flex-direction:column;gap:8px;min-width:0}.home .goal-copy b{font-size:14px;font-weight:600;line-height:1.5}.home .goal-copy small{display:block;font-size:12px;font-weight:400;line-height:1.6;color:#b7cde3}.home .goal-arrow{flex:none;font-size:24px;color:#9bdaf4}
.home-mode-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.home .home-mode-buttons button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 8px;min-height:64px}.home-mode-buttons small{font-size:12px;font-weight:400;line-height:1.5;color:#bceaff}.home .home-mode-buttons button[data-action="endless"]{border-color:#54ffc188}.home .home-mode-buttons button[data-action="daily"]{border-color:#a66bff}
.home-links{display:flex;gap:8px}.home .home-links button{flex:1;min-width:0;background:#0b1331d9;color:#bceaff;border-color:#6163a088;box-shadow:none}
.home .home-buttons .reward-preview{background:linear-gradient(110deg,#102f45e8,#201e43e8);text-align:left;min-height:76px}.home .reward-preview small{line-height:1.5;margin-top:6px}
.home .home-buttons button[data-action="art-retry"]{border-color:transparent;background:none;box-shadow:none;color:#b7cde3;font-size:12px}
@media(max-height:680px){.home{gap:16px;padding:max(16px,env(safe-area-inset-top)) 20px max(16px,env(safe-area-inset-bottom))}.hero-copy h1{font-size:36px;margin:8px 0}.home-stats{padding:10px 12px}.home-buttons{gap:10px}}
@media(max-height:540px){.home{justify-content:flex-start;gap:12px}.hero-copy h1{font-size:32px}.home-stats{padding:8px 12px}}

/* Numeric readouts stay above full-width touch sliders on narrow screens. */
.settings-sections .pause-actions label.setting-field{grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding:8px 4px;min-width:0}
.setting-field>span{min-width:0;line-height:1.5}.setting-field output{color:#bceaff;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.settings-sections .setting-field input{grid-column:1/-1;margin:0;min-height:44px}

/* Goal acceptance is explicit and does not compete with Continue. */
.selected-goal .goal-complete,.completed-goal>small{color:#8fe6cb;font-size:12px;line-height:1.5}
.goal-next-label{color:#a6eaff;font-size:12px;line-height:1.5}
.completed-goal{display:grid;gap:8px;margin:16px 0;padding:14px;border:1px solid #55cfc54d;border-radius:14px;background:#16353655;text-align:left;min-width:0}
.completed-goal b{font-size:15px;line-height:1.5}
.completed-goal p{margin:0;font-size:13px;line-height:1.6;color:#c4d4df}
.completed-goal button{min-height:44px;margin-top:4px}
