@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-condensed-latin-600-normal-CRd5VyFf.woff2) format("woff2"),url(/assets/ibm-plex-sans-condensed-latin-600-normal-6XnkKYvF.woff) format("woff")}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-condensed-latin-700-normal-D8r4s4aS.woff2) format("woff2"),url(/assets/ibm-plex-sans-condensed-latin-700-normal-D3enqrvP.woff) format("woff")}:root{--x15-space-black: #05070a;--x15-stratosphere: #0c1726;--x15-limb: #3d8bd9;--x15-inconel: #16191c;--x15-inconel-2: #22272b;--x15-graphite: #3a4045;--x15-phosphor: #9be38a;--x15-phosphor-dim: #5f9b54;--x15-ink: #e9f3e4;--x15-ink-dim: #8fa08a;--x15-xlr99: #ff6a1a;--x15-xlr99-hot: #ffb36b;--x15-lakebed: #d9c7a3;--x15-paper: #f2ede1;--x15-paper-2: #e6dfcd;--x15-pencil: #1d2226;--x15-caution: #ffb020;--x15-warning: #ff3b30;--x15-nominal: var(--x15-phosphor);--bg: var(--x15-space-black);--bg-sky: linear-gradient(180deg, var(--x15-space-black) 0%, var(--x15-stratosphere) 70%, #183a5f 100%);--surface: var(--x15-inconel);--surface-2: var(--x15-inconel-2);--panel: rgba(8, 12, 10, .62);--border: rgba(155, 227, 138, .25);--border-strong: rgba(155, 227, 138, .5);--text: var(--x15-ink);--text-dim: var(--x15-ink-dim);--data: var(--x15-phosphor);--action: var(--x15-xlr99);--action-text: #160800;--link: var(--x15-phosphor);--focus: var(--x15-xlr99-hot);--ink: var(--text);--dim: var(--text-dim);--accent: var(--data);--font-display: "IBM Plex Sans Condensed", "Arial Narrow", sans-serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--fs-micro: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 16px;--fs-md: 20px;--fs-lg: 25px;--fs-xl: 31px;--fs-2xl: 39px;--fs-3xl: 49px;--fs-4xl: 61px;--fs-hero: clamp(48px, 9vw, 112px);--lh-tight: 1.05;--lh-snug: 1.25;--lh-body: 1.55;--track-label: .12em;--track-display: .02em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--radius-sm: 2px;--radius: 6px;--radius-lg: 10px;--shadow-panel: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 8px 24px rgba(0, 0, 0, .45);--glow-data: 0 0 8px rgba(155, 227, 138, .35);--glow-action: 0 0 18px rgba(255, 106, 26, .45);--ease-out: cubic-bezier(.2, .7, .2, 1);--dur-fast: .12s;--dur: .2s;--dur-slow: .4s}[data-theme=paper]{--bg: var(--x15-paper);--bg-sky: var(--x15-paper);--surface: #fbf8f1;--surface-2: var(--x15-paper-2);--panel: rgba(251, 248, 241, .92);--border: rgba(29, 34, 38, .18);--border-strong: rgba(29, 34, 38, .45);--text: var(--x15-pencil);--text-dim: #5d625f;--data: #2f6b26;--action: #d9520b;--action-text: #fff;--link: #2f6b26;--focus: #d9520b}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 0ms;--dur: 0ms;--dur-slow: 0ms}}:root{font-family:var(--font-mono);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}#view{display:block;width:100vw;height:100vh}#gvision{position:fixed;inset:0;z-index:5;pointer-events:none;background:linear-gradient(rgb(0 0 0 / var(--black, 0)),rgb(0 0 0 / var(--black, 0))),radial-gradient(circle at center,transparent var(--tunnel, 85%),rgb(0 0 0 / var(--edge, 0)) calc(var(--tunnel, 85%) + 25%),#000 100%)}#gvision[hidden]{display:none}#hud,#status,#help,#coach,#corner{z-index:10}#score{z-index:13}#home{z-index:20}#hud{position:fixed;top:var(--space-4);left:var(--space-4);min-width:300px;padding:var(--space-3) 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-sm);line-height:var(--lh-body);pointer-events:none}#hud div{display:flex;justify-content:space-between;gap:var(--space-4)}#hud span{color:var(--text-dim);letter-spacing:.04em}#hud b{font-weight:500;color:var(--data);font-variant-numeric:tabular-nums}#status{position:fixed;top:var(--space-4);left:50%;transform:translate(-50%);padding:6px 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-sm);letter-spacing:.08em;white-space:pre;max-width:calc(100vw - 2 * var(--space-4));overflow:hidden;text-overflow:ellipsis;pointer-events:none}#help{position:fixed;right:var(--space-4);bottom:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-xs);line-height:1.6}#help h2{margin:0 0 6px;font-family:var(--font-display);font-weight:700;font-size:var(--fs-xs);letter-spacing:var(--track-label);color:var(--data)}#help table{border-collapse:collapse}#help td{padding:0 var(--space-3) 0 0}#help td:first-child{color:var(--text-dim)}#coach{position:fixed;top:58px;left:50%;transform:translate(-50%);width:min(470px,calc(100vw - 720px));min-width:340px;display:grid;gap:var(--space-2);padding:var(--space-3) 14px;background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--action);border-radius:var(--radius);box-shadow:var(--shadow-panel);backdrop-filter:blur(6px);font-family:var(--font-body)}#coach[hidden]{display:none!important}#coach.lost{border-left-color:var(--x15-warning)}.coach-top{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.coach-top .x-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coach-top .x-label.ok{color:var(--data)}#coach .x-btn{min-height:28px;padding:0 var(--space-3);font-size:var(--fs-micro)}#coach h3{margin:0;font:700 var(--fs-md) / var(--lh-tight, 1.15) var(--font-display);letter-spacing:var(--track-display);text-wrap:balance}#coach p{margin:0;font-size:13.5px;line-height:1.5;color:var(--text)}#coach p b{color:var(--data);font-weight:600}#coach kbd{font:500 var(--fs-micro) / 1 var(--font-mono);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:3px;padding:1px 6px;white-space:nowrap;color:var(--text)}#coach .coach-warn{color:var(--x15-caution);font-weight:600;font-size:var(--fs-sm)}.cm-row{display:flex;justify-content:space-between;font:500 var(--fs-xs) / 1.6 var(--font-mono);color:var(--text-dim)}.cm-row b{color:var(--data);font-weight:500;font-variant-numeric:tabular-nums}.cm-bar{position:relative;height:8px;border-radius:4px;background:#ffffff12;overflow:hidden}.cm-bar i{position:absolute;top:0;bottom:0;left:0}.cm-zone{background:#9be38a38;border-left:1px solid var(--data);border-right:1px solid var(--data)}.cm-fill{background:var(--text-dim);border-radius:4px;transition:background var(--dur)}.cm-bar.in .cm-fill{background:var(--data)}.cm-bar.bad .cm-fill{background:var(--x15-warning)}.coach-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.coach-actions .x-btn{min-height:36px}.coach-actions .x-btn--primary{flex:1 1 auto;justify-content:space-between;gap:var(--space-4)}.coach-actions .k{font:500 var(--fs-micro) / 1 var(--font-mono);opacity:.7}.coach-dots{display:flex;gap:5px}.coach-dots i{width:18px;height:4px;border-radius:2px;background:var(--border)}.coach-dots i.d{background:var(--data)}.coach-dots i.c{background:var(--action)}.x-label{font-family:var(--font-display);font-weight:600;font-size:var(--fs-xs);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-dim)}.x-display{font-family:var(--font-display);font-weight:700;line-height:var(--lh-tight);letter-spacing:var(--track-display);text-transform:uppercase}.x-readout{font-family:var(--font-mono);font-weight:500;color:var(--data);font-variant-numeric:tabular-nums}.x-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-panel);padding:var(--space-4)}.x-btn{display:inline-flex;align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-5);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:transparent;color:var(--text);font:600 var(--fs-sm) / 1 var(--font-display);letter-spacing:var(--track-label);text-transform:uppercase;cursor:pointer;transition:background var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.x-btn:hover{background:var(--surface-2)}.x-btn--primary{background:var(--action);border-color:var(--action);color:var(--action-text)}.x-btn--primary:hover{background:var(--x15-xlr99-hot);box-shadow:var(--glow-action)}.x-lamp{display:inline-flex;align-items:center;gap:6px;padding:2px var(--space-2);border-radius:var(--radius-sm);font:600 var(--fs-micro) / 1.6 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid currentColor}.x-lamp:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.x-lamp--nominal{color:var(--x15-nominal)}.x-lamp--caution{color:var(--x15-caution)}.x-lamp--warning{color:var(--x15-warning)}#pfd{position:fixed;top:var(--space-4);right:var(--space-4);z-index:11;display:flex;flex-direction:column;gap:2px;pointer-events:none;font-variant-numeric:tabular-nums}.pfd-cell{min-width:clamp(170px,17vw,250px);padding:6px var(--space-4) 8px;background:#030504c7;border:1px solid var(--border-strong);box-shadow:var(--shadow-panel);text-align:right}.pfd-cell:first-child{border-radius:var(--radius) var(--radius) 0 0}.pfd-cell:last-child{border-radius:0 0 var(--radius) var(--radius)}.pfd-label{display:block;text-align:left;font:600 var(--fs-micro) / 1.4 var(--font-display);letter-spacing:var(--track-label);color:var(--text-dim)}.pfd-main{display:flex;justify-content:flex-end;align-items:baseline;gap:6px;line-height:1}.pfd-main b{font:600 clamp(30px,3.4vw,48px) / 1 var(--font-mono);color:var(--data);text-shadow:0 0 10px rgba(155,227,138,.35),0 1px 2px #000}.pfd-main small{font:500 var(--fs-base) / 1 var(--font-mono);color:var(--text-dim)}.pfd-trend{width:1em;font-style:normal;font-size:var(--fs-base);color:var(--text);text-align:center}.pfd-sub{margin-top:4px;font:500 var(--fs-md) / 1.1 var(--font-mono);color:var(--text)}.pfd-sub b{font-weight:500}.pfd-max{margin-top:2px;font:500 var(--fs-micro) / 1.4 var(--font-mono);letter-spacing:.06em;color:var(--text-dim)}#replay{position:fixed;inset:0;z-index:12;pointer-events:none}#replay[hidden]{display:none}.rp-bar{position:absolute;left:50%;bottom:52px;transform:translate(-50%);display:flex;gap:var(--space-4);align-items:baseline;padding:6px 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-sm);letter-spacing:.06em;white-space:nowrap}.rp-bar b{font:700 var(--fs-sm) / 1 var(--font-display);letter-spacing:var(--track-label);color:var(--action)}.rp-bar em{font-style:normal;font-size:var(--fs-xs);color:var(--text-dim)}.rp-track{position:absolute;left:10vw;right:10vw;bottom:28px;height:12px;pointer-events:auto}.rp-seg{position:absolute;top:3px;height:6px;background:#9be38a40;border-radius:var(--radius-sm);cursor:pointer}.rp-seg:hover{background:#9be38a73}.rp-seg i{position:absolute;top:-3px;width:2px;height:12px;margin-left:-1px;background:var(--data)}.rp-head{position:absolute;top:-2px;width:4px;height:16px;margin-left:-2px;background:var(--action);box-shadow:var(--glow-action);z-index:1}.rp-card{position:absolute;left:50%;bottom:22vh;transform:translate(-50%);padding:var(--space-3) var(--space-6);background:#030504cc;border-left:3px solid var(--action);text-align:center}.rp-card[hidden]{display:none}.rp-card.rp-in{animation:rp-in var(--dur-slow) var(--ease-out)}.rp-title{font:700 var(--fs-2xl) / var(--lh-tight) var(--font-display);letter-spacing:var(--track-display);text-transform:uppercase;color:var(--text)}.rp-detail{margin-top:6px;font:600 var(--fs-md) / 1.2 var(--font-mono);color:var(--data);font-variant-numeric:tabular-nums}@keyframes rp-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}body.replaying #view{outline:3px solid var(--action);outline-offset:-3px}body.replaying #help,body.replaying #coach{display:none}#corner{position:fixed;left:var(--space-4);bottom:var(--space-4);width:300px;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}#records,#stats{display:grid;gap:var(--space-2);padding:var(--space-3) 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-xs);pointer-events:none}#records h4{margin:0;font:500 var(--fs-xs) var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}#records .rec-top{display:flex;justify-content:space-between;gap:var(--space-3)}#records .rec-top span{color:var(--text)}#records .rec-top b{font-weight:500;color:var(--data);font-variant-numeric:tabular-nums}#records small{display:block;color:var(--text-dim);font-variant-numeric:tabular-nums}#records .rec-bar{height:4px;margin:4px 0 3px;background:#9be38a26;border-radius:2px;overflow:hidden}#records .rec-bar i{display:block;height:100%;background:var(--data)}#records .rec.done .rec-bar i{background:var(--action)}#records .rec.done .rec-top b{color:var(--action)}#records .rec.locked{opacity:.55}#records .rec-flash{margin:0;padding:4px 6px;color:var(--action-text);background:var(--action);border-radius:2px;font-weight:600;letter-spacing:.04em}body.replaying #corner{display:none}#stats h4{margin:0;font:500 var(--fs-xs) var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}#stats .st-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}#stats .st{display:flex;flex-direction:column}#stats .st b{font:500 1.25em var(--font-display);color:var(--text);font-variant-numeric:tabular-nums}#stats .st span,#stats small{color:var(--text-dim)}#stats .st.ok b{color:var(--data)}#stats .st.bad b{color:var(--action)}#stats .st-types{list-style:none;margin:0;padding:0;display:grid;gap:2px}#stats .st-types li{display:flex;justify-content:space-between;color:var(--text-dim)}#stats .st-types b{font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}#coffee{position:fixed;left:calc(var(--space-4) + 300px + var(--space-3));bottom:var(--space-4);z-index:10;min-height:32px;padding:0 var(--space-4);background:var(--panel);font-size:var(--fs-micro);text-decoration:none;white-space:nowrap}#coffee:hover{background:var(--surface-2)}body.replaying #coffee,body.replaying #records{display:none}#home{position:fixed;inset:0;display:grid;place-items:center;padding:var(--space-4);overflow-y:auto;background:radial-gradient(ellipse at 50% 30%,#0c1726f2,#05070afb);font-family:var(--font-body)}#home[hidden],#score[hidden]{display:none}.home-card{width:min(560px,100%);display:grid;gap:var(--space-3)}.home-card h1{margin:0;font-size:var(--fs-3xl);color:var(--text)}.home-card h2{margin:var(--space-2) 0 0}.home-sub{margin:0;color:var(--text-dim);font-size:14px;line-height:1.5}.home-form{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-2)}.home-form input{flex:1 1 140px;min-height:40px;padding:0 var(--space-3);background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:500 var(--fs-base) var(--font-mono);text-transform:uppercase}.x-btn .k{font:500 var(--fs-micro) / 1 var(--font-mono);opacity:.7}#score{position:fixed;inset:0;display:grid;place-items:center;padding:var(--space-4);overflow-y:auto;pointer-events:none;font-family:var(--font-body)}.sc-card{width:min(460px,100%);display:grid;gap:var(--space-3);background:#05070af2;pointer-events:auto;border-left:4px solid var(--action)}.sc-card h2{margin:var(--space-2) 0 0}.sc-head{display:flex;align-items:baseline;gap:var(--space-5)}.sc-grade{font:700 var(--fs-hero) / .9 var(--font-display)}.sc-total{font-size:var(--fs-2xl)}.sc-total small{font-size:var(--fs-base);color:var(--text-dim)}.sc-rank{margin:0;color:var(--action);font-weight:600;font-size:var(--fs-sm)}.sc-parts{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.sc-parts td{padding:5px 0;border-bottom:1px solid var(--border);vertical-align:top}.sc-parts td:last-child{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.sc-parts td:last-child b{color:var(--data);font-weight:500}.sc-parts td:last-child span{color:var(--text-dim)}.sc-parts small{display:block;color:var(--text-dim);font-size:var(--fs-xs)}.sc-parts .pen b{color:var(--x15-warning)}.sc-actions{display:flex;gap:var(--space-2)}.sc-actions .x-btn{flex:1 1 auto;justify-content:space-between}body.replaying #score,body.replaying #home,body.scored #coach,body.scored #help{display:none}.lb{border-collapse:collapse;width:100%;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.lb th{text-align:left;font:600 var(--fs-micro) var(--font-display);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-dim);padding:4px 6px}.lb td{padding:4px 6px;border-top:1px solid var(--border);font-family:var(--font-mono)}.lb td:nth-child(2){font-family:var(--font-body);color:var(--text)}.lb td:nth-child(n+4),.lb th:nth-child(n+4){text-align:right}.lb tr.me td{background:#ff6a1a29}.lb-empty,.lb-src{margin:0;color:var(--text-dim);font-size:var(--fs-xs)}.g-S{color:var(--x15-xlr99-hot)}.g-A{color:var(--data)}.g-B{color:var(--x15-limb)}.g-C{color:var(--x15-caution)}.g-D{color:var(--text-dim)}.g-F{color:var(--x15-warning)}
