:root{--fg:#f4f5f7;--dim:#9ba3af;--faint:#ffffff1f;--panel:#0a0c109e;--accent:#3e6ae1;--good:#3ddc84;--bad:#ff5a4f;--n2:#38d0ff;--gold:#d9b46a;font-family:Inter,SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--fg);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;background:#000;margin:0;overflow:hidden}#game{outline:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui .interactive,#ui button,#ui select,#ui input,#ui .card{pointer-events:auto}.hidden{display:none!important}button{font:inherit;color:inherit}#loading{z-index:50;background:#000;flex-direction:column;justify-content:center;align-items:center;gap:22px;transition:opacity .8s;display:flex;position:fixed;inset:0}#loading .wordmark{letter-spacing:.55em;margin-right:-.55em;font-size:44px;font-weight:300}#loading .bar{background:var(--faint);width:240px;height:2px;overflow:hidden}#loading .bar div{background:var(--fg);width:0;height:100%;transition:width .3s}#loading .msg{color:var(--dim);letter-spacing:.18em;text-transform:uppercase;font-size:12px}.hud{transition:opacity .3s;position:absolute;inset:0}.hud .panel{background:var(--panel);-webkit-backdrop-filter:blur(10px);border:1px solid #ffffff12;border-radius:14px}.speedo{text-align:center;min-width:260px;padding:10px 34px 14px;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.speedo .num{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:76px;font-weight:300;line-height:1}.speedo .unit{color:var(--dim);letter-spacing:.2em;text-transform:uppercase;margin-top:2px;font-size:12px}.speedo .gears{letter-spacing:.5em;color:#ffffff4d;margin-top:8px;font-size:13px;font-weight:500}.speedo .gears b{color:var(--fg)}.power{background:var(--faint);border-radius:2px;width:220px;height:4px;margin:10px auto 0;position:relative;overflow:hidden}.power .regen{background:var(--good);position:absolute;top:0;bottom:0;right:70%}.power .drive{background:var(--fg);position:absolute;top:0;bottom:0;left:30%}.power .zero{background:#ffffff80;width:1px;position:absolute;top:-2px;bottom:-2px;left:30%}.kw{color:var(--dim);font-variant-numeric:tabular-nums;letter-spacing:.08em;margin-top:6px;font-size:11px}.gmeter{align-items:center;gap:14px;padding:14px;display:flex;position:absolute;bottom:26px;left:26px}.gmeter canvas{width:116px;height:116px}.gmeter .vals{color:var(--dim);font-variant-numeric:tabular-nums;min-width:92px;font-size:12px;line-height:1.9}.gmeter .vals b{color:var(--fg);float:right;font-weight:500}.systems{width:268px;padding:16px 18px;font-size:12px;position:absolute;bottom:26px;right:26px}.sys-row{color:var(--dim);justify-content:space-between;align-items:center;gap:10px;margin:7px 0;display:flex}.sys-row b{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:500}.meter{background:var(--faint);border-radius:2px;height:4px;margin:2px 0 9px;overflow:hidden}.meter div{background:var(--fg);border-radius:2px;height:100%;transition:width 80ms linear}.meter.n2 div{background:var(--n2)}.meter.fan div{background:linear-gradient(90deg,#8aa2ff,#c48aff)}.meter.batt div{background:var(--good)}.chip{letter-spacing:.12em;text-transform:uppercase;color:var(--dim);border:1px solid #ffffff2e;border-radius:99px;padding:3px 8px;font-size:10px}.chip.on{color:#000;background:var(--fg);border-color:var(--fg)}.chip.warn{color:#000;background:#ffb020;border-color:#ffb020}.chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.topleft{position:absolute;top:22px;left:26px}.topleft .trim{letter-spacing:.3em;text-transform:uppercase;font-size:13px;font-weight:500}.topleft .sub{color:var(--dim);margin-top:4px;font-size:12px}.topright{text-align:right;color:var(--dim);font-variant-numeric:tabular-nums;font-size:11px;line-height:1.7;position:absolute;top:18px;right:22px}.badge{color:#b8c9ff;letter-spacing:.08em;background:#3e6ae140;border-radius:6px;padding:2px 8px;font-weight:600;display:inline-block}.badge.gl{color:#ffd58a;background:#ffb02033}.objective{min-width:360px;max-width:520px;padding:14px 22px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.objective .title{letter-spacing:.22em;text-transform:uppercase;color:var(--dim);font-size:11px}.objective .goal{margin-top:5px;font-size:16px;font-weight:500}.objective ul{color:var(--dim);margin:10px 0 0;padding:0;font-size:13px;list-style:none}.objective li{align-items:center;gap:10px;margin:5px 0;display:flex}.objective li:before{content:"";border:1px solid #ffffff59;border-radius:50%;flex:none;width:9px;height:9px}.objective li.active{color:var(--fg)}.objective li.active:before{border-color:var(--fg);box-shadow:0 0 0 3px #ffffff1f}.objective li.done{color:var(--good)}.objective li.done:before{background:var(--good);border-color:var(--good)}.objective .hint{color:var(--dim);border-top:1px solid var(--faint);margin-top:10px;padding-top:9px;font-size:11px}.bigtime{text-align:center;text-shadow:0 2px 30px #0009;position:absolute;top:31%;left:50%;transform:translate(-50%,-50%)}.bigtime .v{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:92px;font-weight:200}.bigtime .l{letter-spacing:.35em;color:var(--dim);font-size:12px}.toasts{flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%)}.toast{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.04em;background:#0009;border:1px solid #ffffff1a;border-radius:99px;padding:10px 20px;font-size:15px;animation:2.6s forwards toast}.toast.good{border-color:#3ddc8499}.toast.bad{border-color:#ff5a4fb3}@keyframes toast{0%{opacity:0;transform:translateY(10px)scale(.96)}10%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-8px)}}.banner{letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:10px;padding:8px 18px;font-size:12px;display:flex;position:absolute;bottom:196px;left:50%;transform:translate(-50%)}.banner .dot{background:var(--gold);border-radius:50%;width:8px;height:8px;animation:1.2s infinite pulse}.banner.replay .dot{background:var(--bad)}.banner .prog{background:var(--faint);width:120px;height:2px}.banner .prog div{background:var(--fg);height:100%}@keyframes pulse{50%{opacity:.3}}.keys{color:var(--dim);padding:12px 14px;font-size:11px;line-height:1.75;position:absolute;bottom:182px;left:26px}.keys kbd{text-align:center;min-width:20px;color:var(--fg);border:1px solid #ffffff40;border-radius:4px;margin-right:6px;padding:0 5px;font-family:inherit;font-size:10px;line-height:17px;display:inline-block}.menu{background:linear-gradient(90deg,#000000d1 0%,#00000059 32%,#0000 55% 65%,#000000bf 100%);grid-template-columns:minmax(380px,470px) 1fr minmax(320px,400px);display:grid;position:absolute;inset:0}.menu .left{pointer-events:auto;flex-direction:column;padding:48px 40px;display:flex;overflow-y:auto}.menu .right{pointer-events:auto;flex-direction:column;grid-column:3;gap:12px;padding:48px 34px;display:flex;overflow-y:auto}.wordmark{letter-spacing:.5em;font-size:40px;font-weight:300}.event{color:var(--dim);letter-spacing:.12em;text-transform:uppercase;margin-top:12px;font-size:12px;line-height:1.7}.modes{flex-direction:column;gap:8px;margin-top:36px;display:flex}.mode{text-align:left;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;padding:14px 16px;transition:background .15s,border-color .15s}.mode:hover{background:#ffffff14}.mode.sel{background:#ffffff1a;border-color:#ffffffa6}.mode .k{letter-spacing:.2em;color:var(--dim);text-transform:uppercase;font-size:10px}.mode .t{margin-top:3px;font-size:17px;font-weight:500}.mode .d{color:var(--dim);margin-top:6px;font-size:12.5px;line-height:1.5;display:none}.mode.sel .d{display:block}.mode .e{color:#c7b48f;margin-top:8px;font-size:11.5px;font-style:italic;line-height:1.5;display:none}.mode.sel .e{display:block}.actions{gap:10px;margin-top:22px;display:flex}.btn{cursor:pointer;letter-spacing:.04em;background:#ffffff1f;border:none;border-radius:8px;flex:1;padding:13px 18px;font-size:14px;font-weight:500;transition:background .15s}.btn:hover{background:#fff3}.btn.primary{background:var(--fg);color:#111}.btn.primary:hover{background:#fff}.btn.small{flex:none;padding:8px 12px;font-size:12px}.links{color:var(--dim);gap:16px;margin-top:18px;font-size:12px;display:flex}.links button{color:var(--dim);cursor:pointer;letter-spacing:.06em;background:0 0;border:none;padding:0}.links button:hover{color:var(--fg)}.card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#0e1014b8;border:1px solid #ffffff14;border-radius:14px;padding:16px 18px;transition:border-color .15s,background .15s}.card:hover{background:#181a20c7}.card.sel{border-color:#ffffffb3}.card .row1{justify-content:space-between;align-items:baseline;display:flex}.card .n{font-size:20px;font-weight:500}.card .r{letter-spacing:.18em;text-transform:uppercase;color:var(--dim);font-size:10px}.card .tag{color:var(--dim);margin-top:4px;font-size:12px}.card .stats{text-align:center;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px;display:grid}.card .stats b{font-variant-numeric:tabular-nums;font-size:18px;font-weight:500;display:block}.card .stats span{color:var(--dim);letter-spacing:.06em;font-size:10px}.card .feat{color:var(--dim);margin-top:10px;font-size:11px;line-height:1.6;display:none}.card.sel .feat{display:block}.card .res{color:var(--gold);margin-top:6px;font-size:11px}.section-label{letter-spacing:.25em;text-transform:uppercase;color:var(--dim);margin-bottom:2px;font-size:10px}.modal-wrap{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto;background:#0000008c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal{background:#0e1014f0;border:1px solid #ffffff1a;border-radius:18px;width:min(620px,92vw);max-height:88vh;padding:28px 32px;overflow-y:auto}.modal h2{margin:0;font-size:26px;font-weight:400}.modal .sub{color:var(--dim);margin-top:8px;font-size:13px;line-height:1.6}.modal .ok{color:var(--good)}.modal .no{color:var(--bad)}.modal table{border-collapse:collapse;width:100%;margin-top:18px;font-size:13px}.modal td,.modal th{border-bottom:1px solid var(--faint);text-align:left;font-variant-numeric:tabular-nums;padding:9px 4px}.modal th{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:400}.modal td.v{text-align:right;color:var(--fg)}.modal td.ref{text-align:right;color:var(--dim);font-size:12px}.modal .actions{margin-top:22px}.settings-grid{grid-template-columns:1fr auto;align-items:center;gap:14px 20px;margin-top:20px;font-size:14px;display:grid}.settings-grid label{color:var(--dim)}.seg{background:#ffffff0f;border-radius:8px;padding:3px;display:inline-flex}.seg button{cursor:pointer;color:var(--dim);background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:12px}.seg button.on{color:#111;background:#ffffffe6}input[type=range]{accent-color:#fff;width:160px}.controls-grid{grid-template-columns:1fr 1fr;gap:6px 26px;margin-top:18px;font-size:13px;display:grid}.controls-grid div{border-bottom:1px solid var(--faint);color:var(--dim);justify-content:space-between;padding:6px 0;display:flex}.controls-grid kbd{color:var(--fg);font-family:inherit}.pass{color:var(--good);font-weight:600}.fail{color:var(--bad);font-weight:600}.spin{border:2px solid var(--faint);border-top-color:var(--fg);vertical-align:-2px;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite sp;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}@media (max-width:1100px){.menu{background:#000000b3;grid-template-columns:1fr;overflow-y:auto}.menu .right{grid-column:1;padding-top:0}.systems,.gmeter{transform-origin:bottom;transform:scale(.85)}.keys{display:none}}.hud.replaying .objective,.hud.replaying .keys,.hud.replaying .gmeter,.hud.replaying .systems,.hud.replaying .bigtime{display:none}.menu .left,.menu .right{scrollbar-width:none}.menu .left::-webkit-scrollbar{display:none}.menu .right::-webkit-scrollbar{display:none}
