@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--bg:#0b0d0c;--panel:#101311;--ink:#eef1e8;--muted:#7d877f;--line:#2a312b;--lime:#d7ff3f;--coral:#ff7067;--mono:'IBM Plex Mono',monospace;--sans:'Space Grotesk',Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);background-image:radial-gradient(ellipse at 45% 45%,#22301525,transparent 60%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--lime);outline-offset:4px}button:disabled{cursor:default;opacity:.3}[hidden]{display:none!important}a{color:inherit;text-decoration:none}.topbar{height:74px;margin:auto;padding:0 35px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;font-weight:700;font-size:23px;letter-spacing:-1.2px;gap:5px}.brand>span:not(.brand-icon){color:var(--lime)}.brand-icon{position:relative;font-size:27px;margin-right:14px;color:var(--lime);line-height:1}.brand-icon i{position:absolute;top:4px;left:5px;opacity:.27;font-style:normal}.brand b{font:400 8px var(--mono);letter-spacing:1px;color:var(--muted);margin-left:24px}.top-actions{display:flex;gap:25px}.top-actions button{font:10px var(--mono);color:#a9b0a7}.top-actions button span{margin-left:8px;color:var(--ink)}main{max-width:1140px;margin:auto;padding:26px 30px 22px}.headline{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font:9px var(--mono);color:var(--muted);letter-spacing:1px;margin:0 0 10px}h1{font:500 clamp(28px,3.6vw,49px)/1 var(--sans);letter-spacing:-2.1px;margin:0}h1 em{font-style:normal;color:var(--lime)}.head-dek{font:11px/1.7 var(--mono);color:#9ba397;margin:0 0 0 20px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 225px;gap:34px}.machine{border:1px solid #3a4437;border-radius:10px;overflow:hidden;background:var(--panel);box-shadow:0 18px 90px #0003}.machine-head{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);font:8px var(--mono);letter-spacing:1px;color:#929d8d;gap:10px}.machine-head>span:first-child{color:#dce2d5}.status-dot{display:inline-block;height:5px;width:5px;background:var(--lime);border-radius:50%;margin-right:8px;vertical-align:middle}.text-button{font-size:15px;color:var(--ink);width:20px;padding:0}.arena{height:clamp(400px,calc(100dvh - 253px),680px);position:relative;overflow:hidden;touch-action:none;background:#0b0f0c}canvas{display:block;width:100%;height:100%;touch-action:none}.playing canvas{cursor:none}.hud{position:absolute;top:18px;left:22px;right:22px;display:flex;justify-content:space-between;pointer-events:none;z-index:2}.hud>div{display:flex;flex-direction:column}.hud small{font:8px var(--mono);letter-spacing:1.3px;color:#8d9988}.hud strong{font:500 43px var(--sans);line-height:1.15;letter-spacing:-2px;font-variant-numeric:tabular-nums;text-shadow:0 0 20px #000}.hud strong i{font-style:normal;font-size:18px;color:#7c886f;margin-left:4px}.echo-hud{text-align:right}.echo-hud strong{color:var(--coral)}.overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;text-align:center;background:linear-gradient(0deg,#0a0e0cf2,#0a0e0c87 50%,#0a0e0c45);padding:20px}.start-content{padding:35px 20px 15px;max-width:480px}.small-label{font:8px var(--mono);letter-spacing:1.3px;color:#a5b294;margin:0 0 18px}.start-content h2{font-size:38px;font-weight:500;letter-spacing:-1.7px;line-height:1.08;margin:0 0 25px;text-shadow:0 2px 22px #000}.start-content h2 span{color:var(--lime)}.lime-button{background:var(--lime);color:#161c09;padding:15px 22px;border-radius:4px;font-weight:700;font-size:14px;min-width:210px;display:flex;align-items:center;justify-content:space-between;gap:42px;margin:auto;box-shadow:0 0 25px #ceff3f10;transition:background .15s,transform .15s}.lime-button:hover{background:#e6ff8c;transform:translateY(-1px)}.lime-button span{font-size:20px;font-weight:400}.input-hint{font:7px var(--mono);letter-spacing:1px;color:#7a8976;margin:17px 0 0}.target-clock{position:absolute;bottom:16px;left:22px;right:22px;display:flex;align-items:center;gap:11px;pointer-events:none;font:7px var(--mono);letter-spacing:.7px;color:#87947f;z-index:2}.target-clock>div{height:3px;flex:1;background:#253020;border-radius:3px;overflow:hidden}.target-clock i{display:block;height:100%;background:#d7e2cd;width:100%;transition:width .08s linear}.target-clock b{font-size:9px;color:#d0d8c9;font-weight:400;min-width:32px}.target-clock.urgent{color:var(--coral)}.target-clock.urgent i{background:var(--coral)}.machine-foot{height:39px;display:flex;gap:20px;align-items:center;padding:0 16px;font:7px var(--mono);letter-spacing:.7px;color:#87947f;border-top:1px solid var(--line)}.machine-foot>span{display:flex;align-items:center;gap:7px}.legend-dot{display:block;width:5px;height:5px;border-radius:50%;background:var(--lime)}.legend-dot.past{background:var(--coral)}.legend-dot.spark{background:#fff}.machine-foot .next-echo{margin-left:auto;font-size:6px;gap:6px}.next-echo b{font-size:9px;color:var(--lime);font-weight:400}.sidebar{padding:8px 0 0;display:flex;flex-direction:column}.best-box{padding-bottom:25px;border-bottom:1px solid var(--line)}.best-box .eyebrow{font-size:8px}.best-time{display:flex;align-items:baseline;gap:4px}.best-time>span{font:500 61px/1 var(--sans);letter-spacing:-3px;color:var(--lime)}.best-time small{color:#748266;font:21px var(--sans)}.muted{font:9px/1.7 var(--mono);color:#7e8a76;margin:10px 0 0}.rules{padding-top:24px}.rules>div{display:flex;align-items:flex-start;gap:15px;margin-bottom:19px}.rules>div>span{color:#526047;font:8px var(--mono);padding-top:3px}.rules p{font:11px/1.7 var(--sans);color:#96a28d;margin:0}.rules b{font-weight:500;color:#e8ecdf}.rules b.lime{color:var(--lime)}.rules b.coral{color:var(--coral)}.rules .rule-note{font:8px/1.8 var(--mono);color:#65735b;padding-left:28px}.timeline-card{margin-top:auto;padding-top:24px}.timeline-art{height:30px;display:flex;align-items:center;position:relative;gap:17px}.timeline-art:before{content:'';height:1px;background:linear-gradient(to right,#ff706766,#d7ff3f66);width:105px;position:absolute;left:0;top:15px}.timeline-art i{width:9px;height:9px;border-radius:50%;background:var(--coral);box-shadow:0 0 13px #ff706733;position:relative}.timeline-art i:nth-child(2){opacity:.7}.timeline-art i:nth-child(3){opacity:.35}.timeline-art b{font:6px var(--mono);color:var(--lime);border:1px solid #596b21;padding:4px;z-index:1;background:var(--bg);margin-left:12px}.timeline-card p{font:10px/1.6 var(--sans);color:#7e8a76;margin-top:9px}.route-actions{display:flex;gap:20px;margin-top:20px;padding-top:17px;border-top:1px solid var(--line)}.route-actions button{font:7px var(--mono);color:#9aa58f;padding:0}.bottom-line{display:flex;justify-content:space-between;gap:20px;margin-top:18px;font:7px var(--mono);letter-spacing:.5px;color:#59654f}.announcement{position:absolute;bottom:55px;left:0;right:0;text-align:center;pointer-events:none;z-index:3;font:9px var(--mono);letter-spacing:1px;color:var(--lime);opacity:0;transition:opacity .15s}.announcement.show{opacity:1}.countdown{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#090e0b90;pointer-events:none}.countdown strong{font:500 118px/1 var(--sans);color:var(--lime);letter-spacing:-5px}.countdown span{font:9px var(--mono);letter-spacing:1px;color:#afbea2;margin-top:25px}.pause-overlay{background:#0b100dec;backdrop-filter:blur(4px)}.panel-content h2{font:500 49px/1 var(--sans);letter-spacing:-2px;margin:0 0 27px}.sub-button{font:9px var(--mono);color:#899b7a;display:block;margin:17px auto 0;padding:6px}.result-overlay{background:#090d0aed;backdrop-filter:blur(3px)}.result-content{width:100%;max-width:375px}.result-content h2{font:500 96px/.95 var(--sans);letter-spacing:-6px;color:var(--lime);margin:15px 0 13px;font-variant-numeric:tabular-nums}.result-content h2 span{font-size:34px;letter-spacing:0;color:#667642}.result-content>p:not(.small-label){font:12px var(--sans);color:#acb7a1;margin:0 0 15px}.result-facts{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;font:8px var(--mono);color:#758569;margin-bottom:25px}.result-facts b{color:#c7d3b9;font-weight:500}#personal-best-label{display:none;color:var(--lime);width:100%;font-size:7px;letter-spacing:1px}.result-content .lime-button{width:100%}.share-row{display:grid;grid-template-columns:1.15fr 1fr;gap:8px;margin-top:8px}.share-row button{padding:14px 6px;border:1px solid #364229;border-radius:4px;font:8px var(--mono);color:#c4d0b4}.share-row button:hover{border-color:var(--lime)}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,15px);padding:14px 20px;border:1px solid #57683b;border-radius:5px;background:#17220ff5;color:#dfefc8;font:11px var(--sans);z-index:100;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#101810;border:1px solid #475a34;border-radius:10px;padding:35px;color:var(--ink);max-width:470px}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}dialog .close{position:absolute;right:17px;top:11px;font-size:25px;color:#82916f}dialog h2{font:500 43px/.98 var(--sans);letter-spacing:-2px;margin:24px 0}dialog>p:not(.eyebrow){font:12px/1.7 var(--sans);color:#a0ad91}dialog .eyebrow{padding-right:15px;font-size:7px}.dead .hud,.dead .target-clock{opacity:.12}.paused .hud{opacity:.15}.replaying .hud{opacity:1}.replaying .arena{box-shadow:inset 0 0 0 2px #a49ae444}
@media(min-width:1400px){main{max-width:1200px}.game-layout{grid-template-columns:minmax(0,1fr) 260px;gap:45px}}
@media(max-height:780px) and (min-width:761px){.topbar{height:60px}main{padding-top:20px}.headline{margin-bottom:20px}.arena{height:clamp(370px,calc(100dvh - 234px),570px)}.rules{padding-top:17px}.rules>div{margin-bottom:13px}.timeline-card{padding-top:12px}.best-box{padding-bottom:18px}.best-time>span{font-size:50px}.route-actions{margin-top:12px}.start-content h2{font-size:34px}.result-content h2{font-size:78px}.result-facts{margin-bottom:15px}.result-content .small-label{margin-bottom:10px}.result-content .sub-button{margin-top:9px}}
@media(max-width:900px){.brand b{display:none}.game-layout{grid-template-columns:minmax(0,1fr) 180px;gap:23px}.head-dek{font-size:9px}.topbar{padding:0 25px}.sidebar .eyebrow{font-size:7px}.rules p{font-size:10px}.route-actions{gap:13px}.route-actions button{font-size:6px}}
@media(max-width:760px){.topbar{height:57px;padding:0 18px}.brand{font-size:21px}.brand-icon{font-size:24px;margin-right:10px}.top-actions{gap:17px}.top-actions button{font-size:8px}.top-actions button span{margin-left:3px}main{padding:20px 14px 15px}.headline{display:block;margin-bottom:17px}.headline .eyebrow{font-size:6px;letter-spacing:.8px;margin-bottom:10px}h1{font-size:34px;letter-spacing:-1.7px}.head-dek{font:9px/1.6 var(--mono);margin:11px 0 0;color:#869378}.head-dek br{display:none}.game-layout{display:block}.arena{height:clamp(355px,calc(100vw + 40px),560px)}.machine-head{height:32px;padding:0 12px;font-size:7px;letter-spacing:.5px}.hud{top:14px;left:16px;right:16px}.hud strong{font-size:34px}.hud small{font-size:7px}.hud strong i{font-size:14px}.target-clock{bottom:14px;left:16px;right:16px;font-size:6px;gap:8px}.machine-foot{padding:0 12px;gap:13px;height:34px;font-size:6px}.machine-foot .next-echo{font-size:5px}.next-echo b{font-size:8px}.start-content{padding:48px 0 20px}.start-content h2{font-size:31px;margin-bottom:25px}.small-label{font-size:6px;letter-spacing:1px}.lime-button{font-size:12px;min-width:200px;padding:13px 18px}.input-hint{font-size:6px;letter-spacing:.5px}.sidebar{display:grid;grid-template-columns:1fr 1.7fr;padding:18px 2px 0;gap:15px}.best-box{border:0;padding:0}.best-box .eyebrow{font-size:6px;letter-spacing:.4px;max-width:110px;line-height:1.7}.best-time>span{font-size:43px}.best-time small{font-size:16px}.best-box .muted{font-size:6px;margin-top:6px}.rules{padding:0}.rules>div{gap:9px;margin-bottom:8px}.rules>div>span{font-size:6px;padding-top:3px}.rules p{font-size:9px;line-height:1.5}.rules p br{display:none}.rules .rule-note{font-size:6px;padding-left:19px;margin-top:9px}.timeline-card{display:none}.route-actions{grid-column:1/-1;justify-content:space-between;margin:0;padding:12px 0 0}.route-actions button{font-size:7px}.bottom-line{font-size:5px;letter-spacing:0;margin-top:14px;gap:8px}.bottom-line>span:last-child{text-align:right}.result-content h2{font-size:82px;margin-top:10px}.result-content>p:not(.small-label){font-size:11px}.result-facts{font-size:7px;gap:12px;margin-bottom:18px}.result-content .small-label{font-size:6px;margin-bottom:8px}.result-content .sub-button{margin-top:10px;font-size:8px}.share-row button{font-size:7px;padding:12px 4px}.announcement{font-size:7px;bottom:43px}.panel-content h2{font-size:40px}.playing .headline,.playing .sidebar,.playing .bottom-line,.paused .headline,.paused .sidebar,.paused .bottom-line,.dead .headline,.dead .sidebar,.dead .bottom-line,.replaying .headline,.replaying .sidebar,.replaying .bottom-line{display:none}.playing main,.paused main,.dead main,.replaying main{padding-top:12px}.playing .arena,.paused .arena,.dead .arena,.replaying .arena{height:clamp(390px,calc(100dvh - 150px),740px)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Keep instructions and controls readable on compact screens. */
.top-actions button{font-size:11px;min-height:36px}.machine-head{font-size:9px}.small-label{font-size:10px}.input-hint{font-size:10px;line-height:1.6}.hud small{font-size:10px}.target-clock{font-size:9px}.target-clock b{font-size:11px}.sidebar .eyebrow{font-size:9px}.rules p{font-size:13px}.rules .rule-note{font-size:10px}.muted{font-size:10px}.route-actions button{font-size:9px;min-height:30px}.result-content>p:not(.small-label){font-size:14px}.result-facts{font-size:10px}.share-row button{font-size:10px;min-height:44px}.sub-button{font-size:11px;min-height:34px}.announcement{font-size:11px}.bottom-line{font-size:8px}.result-content .small-label{font-size:10px}#personal-best-label{font-size:9px}
@media(max-width:760px){.top-actions{gap:14px}.top-actions button{font-size:10px}.machine-head{font-size:8px}.headline .eyebrow{font-size:8px}.head-dek{font-size:10px}.hud small{font-size:9px}.target-clock{font-size:8px}.target-clock b{font-size:10px}.start-content .small-label{font-size:8px;line-height:1.7}.input-hint{font-size:8px}.sidebar .eyebrow{font-size:8px}.best-box .muted{font-size:8px}.rules p{font-size:11px}.rules .rule-note{font-size:8px}.route-actions button{font-size:9px}.result-content .small-label{font-size:8px;line-height:1.7}.result-content>p:not(.small-label){font-size:12px}.result-facts{font-size:9px}.share-row button{font-size:9px}.result-content .sub-button{font-size:10px}.announcement{font-size:9px}.bottom-line{font-size:7px;line-height:1.6}}

#share-dialog{width:min(470px,calc(100vw - 28px))}#share-dialog h2{font-size:37px}.share-label{display:block;font:9px var(--mono);color:#879a73;margin:24px 0 8px}#share-link{display:block;width:100%;padding:13px 10px;border:1px solid #4b5b3b;border-radius:4px;background:#070c08;color:#dce7d1;font:11px var(--mono);margin-bottom:14px}#share-dialog .lime-button{width:100%}#share-dialog .eyebrow{font-size:8px}#share-status{min-height:40px}
