:root{color-scheme:dark;--gold:#edc17c;--ink:#0e1820}*{box-sizing:border-box}body{margin:0;background:#081218;color:#f9eddb;font:14px system-ui,-apple-system,'PingFang SC',sans-serif;overflow:hidden;touch-action:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:1px solid #ffffff30;background:#132c35dd;border-radius:9px;min-height:44px;padding:10px 18px;cursor:pointer;transition:background .16s,transform .16s}button:hover{background:#30505c}button:active{transform:translateY(2px)}button:focus-visible{outline:3px solid #f7d288;outline-offset:3px}button:disabled{opacity:.45;cursor:default}button[hidden],[hidden]{display:none!important}#shell{position:relative;width:100vw;height:100dvh;overflow:hidden}canvas{width:100%;height:100%;display:block;position:absolute}.grain{pointer-events:none;position:absolute;inset:0;background:linear-gradient(90deg,#071820ef 0%,#071820a0 36%,transparent 75%),linear-gradient(0deg,#08151bf0,transparent 40%)}body.playing .grain{background:linear-gradient(0deg,#05111b66,transparent 27%)}header{height:83px;position:absolute;left:4%;right:4%;top:0;display:flex;align-items:center;justify-content:space-between;z-index:5}#brand{font-family:serif;font-weight:900;font-size:26px;letter-spacing:4px;color:#fff3d9}#brand span{color:var(--gold)}#brand small{display:block;font:8px system-ui;letter-spacing:4px;margin-top:2px;color:#98aab0}.top{display:flex;align-items:center;gap:9px}.top button{background:#0d1c2580;font-size:12px;padding:8px 13px}.top>span{color:var(--gold);font-size:13px;margin-right:12px}#lobby{position:absolute;top:16%;left:7%;bottom:3%;width:min(600px,58%)}.eyebrow{letter-spacing:5px;color:var(--gold);font-size:11px}h1{font:bold clamp(30px,4.8vw,68px)/1.2 Georgia,'Songti SC',serif;letter-spacing:6px;margin:17px 0}h1 em{font-style:normal;color:var(--gold)}.intro{line-height:1.9;color:#aebec5;font-size:13px;margin-bottom:22px}#heroes{display:flex;gap:10px}.hero{width:150px;text-align:left;position:relative;padding:12px;background:#132630bb;border-color:#94a4ad36}.hero.selected{border-color:var(--gold);background:linear-gradient(135deg,#7c54332b,#182830);box-shadow:inset 0 -3px var(--gold)}.hero b{display:block;font-size:16px;margin-bottom:5px}.hero small{color:#b2c1c4;font-size:10px}.hero .glyph{position:absolute;right:9px;top:8px;font:25px serif;opacity:.4;color:var(--gold)}.launch{display:flex;gap:12px;margin:22px 0 15px}.primary{background:linear-gradient(110deg,#e6b576,#f3d49c);color:#281e16;font-weight:800;border:0;box-shadow:0 8px 30px #b8782330}.primary:hover{background:#ffe0a5}.launch .primary{min-width:245px;text-align:left}.primary span{float:right;margin-left:25px}#stages{display:flex;gap:6px}#stages button{font-size:11px;background:transparent;padding:8px 12px;border-color:#ffffff18}#stages button.selected{color:var(--gold);border-color:#b5956266}.foot{font-size:10px;line-height:1.8;color:#97a4aa;margin-top:18px}#hud{position:absolute;inset:0;pointer-events:none}.player-status{position:absolute;left:4%;top:90px;width:210px;text-shadow:0 2px 3px #000}.player-status b{letter-spacing:3px}.bar{height:9px;background:#0b151acc;border:1px solid #86919077;margin:8px 0 4px;transform:skewX(-8deg)}.bar i,.rage i{display:block;background:linear-gradient(90deg,#358788,#7be5c9);height:100%;width:100%;transition:width .1s}.player-status small{font-size:10px;color:#d8e9e8}.rage{height:4px;background:#0006;margin:7px 0 4px}.rage i{background:#edbf66;width:0}.stage-status{position:absolute;top:90px;right:4%;text-align:right}.stage-status b{display:block;letter-spacing:2px}.stage-status small{color:var(--gold);display:block;margin-top:8px}#boss-bar{position:absolute;top:87px;left:33%;width:34%;text-align:center;font-size:12px}#boss-bar i{background:linear-gradient(90deg,#842f36,#ed7958)}#combo{position:absolute;right:6%;top:31%;color:#f8cd87;font:bold italic 39px Georgia;text-shadow:0 3px 10px #37180d}#combo small{font:10px system-ui;display:block;text-align:right;letter-spacing:4px}#banner{position:absolute;top:28%;width:100%;text-align:center;font:italic 30px Georgia,'Songti SC',serif;color:#ffe2ae;text-shadow:0 4px 20px #000}#controls{position:absolute;inset:0;pointer-events:none}#stick{pointer-events:auto;position:absolute;bottom:7%;left:6%;width:118px;height:118px;border-radius:50%;background:#0b1c3440;border:1px solid #c8e5e839;box-shadow:inset 0 0 25px #0004;touch-action:none}#knob{position:absolute;left:35px;top:35px;width:48px;height:48px;border:1px solid #9ab3b981;border-radius:50%;background:#aec8ce45}#stick small{position:absolute;bottom:-21px;width:100%;text-align:center;font-size:10px;color:#a5babe}.skills{position:absolute;right:4%;bottom:6%;width:290px;height:130px;pointer-events:none}.skills button{pointer-events:auto;position:absolute;bottom:0;border-radius:50%;width:58px;height:58px;padding:0;background:#142c39e0;border:1px solid #86b3c066;box-shadow:0 5px 20px #0005;font-size:14px;overflow:hidden;touch-action:none}.skills small{display:block;font-size:8px;color:#adc5ce;margin-top:4px}.skills button:nth-child(1){left:0;bottom:0}.skills button:nth-child(2){left:20px;bottom:70px}.skills button:nth-child(3){left:92px;bottom:83px}.skills button:nth-child(4){left:165px;bottom:70px;color:#efd0a0;border-color:#bd955c}.skills .attack{right:0;width:82px;height:82px;font:30px serif;border-color:#ecc282;background:linear-gradient(135deg,#866135,#392b20);box-shadow:0 0 25px #c6953440}.skills i{position:absolute;inset:0;background:#07141acc;display:none;place-items:center;font:18px system-ui}.skills .ready{box-shadow:0 0 20px #e8b86699}.modal-card{background:linear-gradient(135deg,#19313d,#0e1b24);border:1px solid #b0a08060;border-radius:16px;padding:28px 34px;width:min(480px,90vw);box-shadow:0 35px 100px #0009;text-align:center;max-height:90dvh;overflow:auto}#modal{position:absolute;inset:0;z-index:20;background:#020b13b8;backdrop-filter:blur(7px);display:grid;place-items:center}h2{font:32px serif;color:#f4d39c;margin:18px 0}#modal-body{color:#aebfc4;line-height:1.9;font-size:13px}#modal-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:22px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.stats div{border:1px solid #ffffff15;border-radius:8px;padding:12px}.stats strong{display:block;font-size:23px;color:#f3d399}#toast{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);z-index:30;background:#112e3deb;padding:10px 20px;border-radius:30px;color:#f1d09e;pointer-events:none;opacity:0;font-size:12px}body.playing header{height:65px}body.playing #brand{font-size:18px}body.playing #brand small{display:none}@media(max-height:500px){header{height:60px}#lobby{top:18%;left:5%;width:58%}h1{font-size:34px;margin:8px 0}.intro{margin:4px 0 10px;font-size:10px}.hero{padding:8px 10px;width:130px}.hero b{font-size:13px}.launch{margin:12px 0 8px}.foot{margin-top:8px;font-size:9px}.eyebrow{font-size:9px}#stages button{min-height:32px;padding:6px 10px}.player-status,.stage-status{top:68px}.player-status{width:180px}#boss-bar{top:65px}#stick{width:96px;height:96px;bottom:9%}#knob{left:24px;top:24px}.skills{bottom:5%;transform:scale(.9);transform-origin:bottom right}.top button{padding:5px 10px}.top>span{font-size:11px}.player-status small:last-child{display:none}}@media(orientation:portrait){#lobby{width:90%;top:16%;left:5%}h1{font-size:45px}.intro{max-width:65%}.grain{background:linear-gradient(0deg,#071820f7 5%,#07182080 85%)}.hero{flex:1}.top{gap:5px}.top>span{display:none}.top button{padding:6px 10px}#brand{font-size:21px}.launch .primary{min-width:0;flex:1}.player-status{width:150px;top:76px}.stage-status{top:76px;font-size:12px}#boss-bar{top:151px;left:25%;width:50%}#combo{top:26%}.skills{transform:scale(.8);transform-origin:bottom right;right:2%;bottom:5%}#stick{left:4%;bottom:7%;width:90px;height:90px}#knob{left:21px;top:21px}.player-status small:last-child{display:none}.foot{font-size:10px}#stages{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.hero.selected .glyph{opacity:.7}#lobby{z-index:2}button{touch-action:manipulation}
@media(orientation:portrait){.intro{max-width:100%;font-size:12px;background:linear-gradient(90deg,#071820b8,transparent);padding:6px 0}.hero{min-width:0;padding:10px 8px}.hero small{font-size:9px}.hero .glyph{font-size:20px;opacity:.2}h1{font-size:42px}.foot{font-size:9px}#lobby{top:15%}}
@media(orientation:portrait){.skills{width:260px}}
