:root{--ice:#69f3ed;--blue:#55bfef;--pink:#fa6eaa;--amber:#ffcf80;--bg:#070e1a;--line:rgba(136,201,224,.26)}
*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:#07101b;color:#e8f7ff;font-family:Consolas,'Lucida Console',monospace}button{font:inherit}#world{display:block;width:100%;height:100%;cursor:crosshair;outline:none}body.playing #world{cursor:none}
.film-grain,.scanlines,.vignette{position:fixed;inset:0;pointer-events:none;z-index:2}.scanlines{background:repeating-linear-gradient(0deg,transparent 0px,rgba(2,8,14,.07) 2px,transparent 4px);opacity:.37}.vignette{background:radial-gradient(ellipse at center,transparent 33%,rgba(1,5,13,.46) 100%)}.film-grain{opacity:.13;background-image:url('data:image/svg+xml,%3Csvg viewBox="0 0 180 180" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="n"%3E%3CfeTurbulence type="fractalNoise" baseFrequency=".78" numOctaves="3" stitchTiles="stitch"/%3E%3C/filter%3E%3Crect width="100%25" height="100%25" filter="url(%23n)" opacity=".13"/%3E%3C/svg%3E')}
#damage-flash{position:fixed;inset:0;background:rgba(255,65,104,.27);opacity:0;pointer-events:none;z-index:9;transition:opacity .25s}
.hud{position:fixed;inset:0;z-index:5;pointer-events:none;padding:29px 36px 18px;display:flex;flex-direction:column;justify-content:space-between;transition:opacity .2s}.hud.hidden{opacity:0}.hud-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.identity{display:flex;align-items:center;gap:13px}.brand-icon{border:1px solid var(--ice);width:39px;height:39px;transform:skew(-12deg);display:grid;place-items:center;box-shadow:inset 0 0 18px #50e2db20;color:#8afbf3}.brand-icon span{font-weight:900;transform:skew(12deg);font-size:14px}.brand{font-family:Arial,Helvetica,sans-serif;font-size:22px;letter-spacing:2px;font-weight:900;line-height:1}.brand span{color:var(--ice)}.edition{margin-top:7px;font-size:9px;letter-spacing:1.5px;color:#80a4bd}.edition-dot{font-size:8px;color:var(--ice)}.top-center{border:1px solid var(--line);background:rgba(5,18,32,.7);padding:12px 17px;letter-spacing:2px;color:#adc4d9;font-size:10px;margin-right:100px}.live-indicator{display:inline-block;background:#66f3ce;width:7px;height:7px;border-radius:50%;margin-right:12px;box-shadow:0 0 10px #66f3ce}.pill-btn{pointer-events:auto;background:rgba(10,29,42,.63);border:1px solid var(--line);padding:12px 17px;color:#bcd7e9;font-size:10px;letter-spacing:1px;cursor:pointer}.pill-btn:hover{border-color:var(--ice);color:#fff}
.crosshair{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%)}.crosshair i{position:absolute;background:#bbfffa;box-shadow:0 0 6px #69f3ed}.ch-top{height:4px;width:1px;top:-6px;left:8px}.ch-bottom{height:4px;width:1px;bottom:-6px;left:8px}.ch-left{width:4px;height:1px;left:-6px;top:8px}.ch-right{width:4px;height:1px;right:-6px;top:8px}.crosshair span{position:absolute;left:7px;top:7px;width:4px;height:4px;border:1px solid #ebfffd}.reticle-label{position:absolute;left:50%;top:calc(50% + 36px);transform:translateX(-50%);font-size:10px;color:var(--ice);letter-spacing:2px;white-space:nowrap;text-shadow:0 0 8px #69f3ed}
.hud-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.speed-panel{width:300px;flex-shrink:0}.smallcaps{font-size:10px;letter-spacing:1.8px;color:#a4c1d2}.wave-dot{display:inline-block;background:var(--ice);height:6px;width:6px;margin-bottom:1px;margin-right:7px;box-shadow:0 0 12px var(--ice)}.speed-read{display:flex;align-items:center;gap:9px;height:93px}.speed-read>span{font-family:Arial,Helvetica,sans-serif;font-weight:900;font-style:italic;font-size:93px;letter-spacing:-6px;line-height:1;color:#f0faff;text-shadow:0 0 26px #b9e6fd23;font-variant-numeric:tabular-nums}.speed-unit{font-size:18px;line-height:1.35;color:var(--ice);font-weight:bold}.speed-unit span{font-size:11px;color:#96adbe}.speed-track{height:8px;position:relative;background:#142b3c;border-left:2px solid #9efef9;overflow:hidden}.speed-fill{height:100%;width:0;background:linear-gradient(90deg,#32b7e9,#72f8e2,#ffc978);box-shadow:0 0 18px #73f5e0;transition:width .1s}.speed-ticks{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0%,transparent 9.5%,#061521aa 9.7%,#061521aa 10%)}.speed-sub{display:flex;justify-content:space-between;margin-top:10px;color:#7e9aad;font-size:10px}.speed-sub b{color:#c3e4ec}.speed-sub .uncapped{color:var(--ice)}.center-panel{align-self:flex-end;display:flex;align-items:center;flex-direction:column;gap:14px;flex:1;min-width:0}.ability-row{display:flex;gap:14px;align-items:center}.ability{display:flex;gap:6px;align-items:center;font-size:10px;color:#9aaec2;white-space:nowrap}.ability kbd,.controls-grid kbd{padding:5px 6px;min-width:23px;text-align:center;border:1px solid #668398a1;border-bottom-width:2px;background:rgba(16,31,46,.85);color:#dbf4fb;border-radius:3px;font-size:10px;font-weight:bold}.ability b{color:var(--ice);font-size:9px}.toast{min-height:17px;color:var(--ice);font-size:11px;letter-spacing:2px;text-shadow:0 0 12px #69f3ed}.run-panel{width:210px;flex-shrink:0;text-align:right;border-right:2px solid #73f1eb;padding-right:14px}.run-label{font-size:10px;color:#8aa7ba;letter-spacing:1px}.run-label span{color:#7ef5de;margin-left:9px}.clock{font-family:Arial,Helvetica,sans-serif;font-size:35px;font-weight:900;margin:6px 0 12px;letter-spacing:-1px}.stat-row{display:flex;justify-content:space-between;font-size:10px;color:#829cae;margin-top:7px;letter-spacing:1px}.stat-row strong{color:#d3edf6;font-size:11px}.bottom-border{position:absolute;bottom:12px;left:36px;right:36px;display:flex;justify-content:space-between;color:#5d8197;font-size:9px;letter-spacing:1.2px;border-top:1px solid #2944547a;padding-top:7px}
.event-banner{position:fixed;pointer-events:none;top:33%;left:50%;transform:translateX(-50%) scale(.9);text-align:center;z-index:6;opacity:0;transition:opacity .2s,transform .2s}.event-banner.show{opacity:1;transform:translateX(-50%) scale(1)}.event-kicker{color:#a7b6c6;font-size:11px;letter-spacing:4px}.event-banner #event-name{font:italic 900 clamp(40px,7vw,93px)/1 Arial,Helvetica,sans-serif;letter-spacing:-3px;color:var(--ice);text-shadow:0 0 34px #4bffed80}.event-banner #event-sub{color:#d1faff;letter-spacing:5px;font-size:10px;margin-top:8px}
.menu{position:fixed;inset:0;z-index:12;display:flex;align-items:center;background:linear-gradient(90deg,rgba(4,11,23,.96),rgba(4,11,23,.93) 50%,rgba(4,11,23,.6));opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.menu.show{opacity:1;visibility:visible}.menu-frame{margin-left:max(8%,38px);width:min(650px,83vw);position:relative}.menu-eyebrow{letter-spacing:2.6px;color:#8cacc1;font-size:11px;display:flex;align-items:center;gap:15px}.menu-line{display:block;width:35px;height:2px;background:var(--ice)}.menu-title{position:relative;font-family:Arial,Helvetica,sans-serif;font-weight:1000;font-size:clamp(76px,11vw,154px);line-height:.83;letter-spacing:-9px;margin:36px 0 16px;font-style:italic}.menu-title>span{color:#f4fcff}.menu-title>em{color:var(--ice);font-style:italic;text-shadow:0 0 55px #22efe535}.title-mark{position:absolute;left:300px;top:65px;color:var(--pink);font-size:100px;transform:rotate(27deg);text-shadow:0 0 35px #ff3f9f44}.menu-subtitle{font-family:Arial,Helvetica,sans-serif;font-weight:900;letter-spacing:5px;font-size:17px}.menu-subtitle span{color:var(--ice)}.menu-description{margin:20px 0 30px;font:14px/1.8 Arial,Helvetica,sans-serif;color:#94b0c1;max-width:510px}.menu-description strong{color:#e8ffff}.play-btn{width:360px;max-width:100%;padding:19px 24px;border:0;display:flex;gap:16px;align-items:center;cursor:pointer;background:var(--ice);color:#071923;clip-path:polygon(0 0,95% 0,100% 30%,100% 100%,0 100%);font-size:12px;letter-spacing:2px;transition:background .15s,transform .15s}.play-btn:hover{transform:translateY(-2px);background:#a0fff6}.play-btn>span:first-child{font-size:18px}.btn-arrow{margin-left:auto;font-size:22px}.menu-pointer{margin:12px 0 27px;font-size:10px;color:#7c9aaf}.menu-controls{padding-top:18px;border-top:1px solid #325466;width:min(605px,100%)}.controls-title{color:#74e9e2;letter-spacing:2px;font-size:10px;margin-bottom:14px}.controls-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px 12px}.controls-grid>div{display:flex;align-items:center;gap:5px}.controls-grid span{font-size:9px;color:#8da9bd;margin-left:5px;letter-spacing:.6px;white-space:nowrap}.menu-side{position:absolute;right:5%;top:10%;bottom:10%;display:flex;flex-direction:column;justify-content:space-between;align-items:center;opacity:.6}.vertical-word{writing-mode:vertical-rl;color:#83aeb7;font-size:10px;letter-spacing:5px}.build-no{font-size:14px;color:var(--ice)}
#no-webgl{position:fixed;z-index:100;inset:25%;background:#152338;color:white;padding:30px;border:1px solid #fa6eaa;font-size:18px}
@media(max-width:760px){.hud{padding:18px}.top-center,.edition,.menu-side,.center-panel{display:none}.brand{font-size:16px}.brand-icon{width:29px;height:29px}.hud-bottom{margin-bottom:25px}.speed-panel{width:210px}.speed-read{height:72px}.speed-read>span{font-size:65px}.run-panel{width:150px}.clock{font-size:22px}.stat-row{font-size:8px}.bottom-border{left:16px;right:16px;font-size:7px}.bottom-border span:last-child{display:none}.menu-frame{margin-left:24px}.menu-title{letter-spacing:-4px}.title-mark{display:none}.menu-subtitle{letter-spacing:2px;font-size:13px}.controls-grid{grid-template-columns:repeat(2,1fr)}.menu-description{font-size:12px}}

/* FLOW V2 — optional physics tuner in the pause/launch menu */
.menu-frame{max-height:94vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#31646b transparent;padding:8px 10px 12px 0}
.physics-tuner{max-width:605px;margin-top:20px;padding:13px 17px 12px;background:rgba(17,42,55,.66);border:1px solid #296169;border-left:3px solid var(--ice)}
.tuner-top,.tuner-ends{display:flex;justify-content:space-between;gap:12px;align-items:center}
.tuner-top{color:#88f6ea;font-size:11px;letter-spacing:1.4px}
.tuner-top output{color:#f3fdff}
.physics-tuner input{width:100%;margin:13px 0 6px;accent-color:#69f3ed;cursor:pointer}
.tuner-ends{color:#8badc0;font-size:9px;letter-spacing:1px}
.physics-tuner p{font:11px/1.3 Arial,sans-serif;color:#99b8c7;margin:10px 0 0}
.physics-tuner p strong{color:#dcfaff}

/* V3 : progression de campagne, régénération, écran de fin. */
.top-center{min-width:260px;text-align:center;margin-right:0;padding:10px 17px 11px}
.zone-detail{display:block;font-size:10px;color:#74f4e4;letter-spacing:1px;margin-top:7px}
.progress-rail{height:3px;margin-top:8px;background:#193848;overflow:hidden}
.progress-rail>div{height:100%;width:0;background:linear-gradient(90deg,#45caed,#e6fc7e);transition:width .18s}
.generation-settings{max-width:605px;background:rgba(20,33,57,.74);border:1px solid #3e6679;padding:13px 17px;margin-top:17px}
.generation-settings>div{display:flex;justify-content:space-between;gap:14px;font-size:10px;color:#89ceee;letter-spacing:1px}
.generation-settings strong{font-size:11px;color:#eafff5}
.generation-settings p{font:11px/1.45 Arial,sans-serif;color:#a3b6c4;margin:11px 0}
.generation-settings p strong{color:#e8faff}
.reroll-button{background:transparent;border:1px solid #60d6e0;color:#81f7e9;padding:11px 13px;font-size:10px;letter-spacing:1.1px;width:100%;cursor:pointer;text-align:left}
.reroll-button:hover{background:#102e40;border-color:#b5fcff}
.level-clear{position:fixed;inset:0;z-index:10;display:grid;place-items:center;pointer-events:none;background:radial-gradient(ellipse at center,rgba(6,34,47,.91),rgba(3,9,20,.84));opacity:0;visibility:hidden;transition:opacity .22s,visibility .22s}
.level-clear.show{opacity:1;visibility:visible}
.clear-card{padding:42px min(6vw,70px);width:min(620px,91vw);text-align:center;border:1px solid #68f6db88;box-shadow:0 0 45px #3ef9c71a,inset 0 0 32px #3ef9c712;background:#071726d9}
.clear-kicker{font-size:10px;letter-spacing:3px;color:#f4d18e}
.clear-card h2{font:italic 900 clamp(37px,7vw,76px)/1 Arial,sans-serif;margin:20px 0 28px;letter-spacing:-3px;color:#e7fbff}
.clear-card h2 span{color:#69f3ed}
.clear-stats{display:flex;justify-content:center;gap:60px;margin-bottom:30px}
.clear-stats>div{display:flex;flex-direction:column;gap:7px}
.clear-stats span{font-size:10px;letter-spacing:2px;color:#96b0c1}
.clear-stats b{font-size:26px;font-family:Arial,sans-serif;color:#f8ffff}
.clear-next{padding:15px;border:1px solid #326871;color:#b8d8df;font-size:12px;letter-spacing:2px}
.clear-next b{color:#fbd18f;font-size:16px}
.clear-tag{margin-top:19px;color:#6ba5b8;font-size:9px;letter-spacing:1.4px}
@media(max-width:760px){.top-center{display:none}.clear-stats{gap:35px}.menu-frame{max-height:92vh}}


/* V5 SOLO : état grappin et affichage des commandes. */
.center-panel .ability-row{flex-wrap:wrap;justify-content:center;row-gap:8px}
.reticle-label{max-width:90vw;text-align:center;white-space:normal}

/* V7 ADMIN // responsive live physics lab */
.hud-actions{display:flex;gap:8px;pointer-events:auto}
.pill-admin{color:#86fbef;border-color:#5ce9df70;background:#0d303dba}
.pill-admin:hover{background:#174a54}
.open-admin-menu{width:min(605px,100%);display:flex;justify-content:space-between;gap:20px;align-items:center;margin-top:20px;padding:15px 18px;background:#09333a;border:1px solid #57ece4;color:#b2fffa;font-size:12px;letter-spacing:1.2px;cursor:pointer;text-align:left}
.open-admin-menu span{color:#ffce86}.open-admin-menu:hover{background:#145260}
.admin-overlay{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(3,10,21,.91);backdrop-filter:blur(11px);visibility:hidden;opacity:0;pointer-events:none;transition:opacity .18s,visibility .18s}
.admin-overlay.show{visibility:visible;opacity:1;pointer-events:auto}
.admin-shell{width:min(1120px,96vw);height:min(790px,94vh);min-height:400px;display:flex;flex-direction:column;border:1px solid #3d8a9b;background:linear-gradient(135deg,#0a1c2a,#08121f 67%,#0d182c);box-shadow:0 22px 90px #000c,0 0 60px #1fe4da15;color:#e8faff}
.admin-header{display:flex;justify-content:space-between;align-items:center;padding:20px 27px 18px;border-bottom:1px solid #28485d;gap:20px;flex-shrink:0}
.admin-brand{display:flex;align-items:center;gap:18px}.admin-symbol{width:54px;height:54px;border:1px solid #6bebdc;background:#102f3b;display:grid;place-items:center;font-weight:900;font-size:17px;position:relative;box-shadow:0 0 16px #68e9ed19}.admin-symbol span{position:absolute;bottom:4px;right:4px;font-size:11px;color:#ffb96a}.admin-eyebrow{font-size:9px;letter-spacing:2px;color:#8daab7}.admin-brand h2{font:italic 900 32px/1 Arial,sans-serif;letter-spacing:-.7px;margin:6px 0 0}.admin-brand h2 em{font-style:italic;color:#69f3ed}.admin-header-actions{display:flex;align-items:center;gap:20px}.admin-status{font-size:10px;letter-spacing:1px;color:#81aaaf}.admin-status i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#6ff6dc;margin-right:7px;box-shadow:0 0 10px #6ff6dc}.admin-close{color:#b8e1e8;background:#102435;border:1px solid #3a6a7b;width:36px;height:36px;cursor:pointer}.admin-close:hover{border-color:#6ff6dc;color:white}
.admin-intro{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:15px 27px;border-bottom:1px solid #1e4256;flex-shrink:0}.admin-intro>span{color:#6fe3db;letter-spacing:1px;font-size:10px;background:#0d333e;padding:8px 10px}.admin-intro>p{color:#839fac;font-size:10px;line-height:1.5;flex-basis:100%;margin:0}
.admin-main{display:grid;grid-template-columns:minmax(0,1fr) 265px;gap:0;flex:1;min-height:0}
.admin-tuners{overflow:auto;padding:13px 22px 26px;scrollbar-color:#326575 #071624;scrollbar-width:thin}
.admin-group{margin:15px 0 21px}.admin-group>h3{font-size:11px;letter-spacing:2px;color:#75ede3;border-bottom:1px solid #295063;padding:0 0 12px;margin:0 0 14px}
.admin-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.admin-control{background:#112736;border:1px solid #315063;padding:13px 14px 11px;min-width:0}.admin-control:focus-within{border-color:#7df9eb}
.admin-control-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-control-head label{font-size:11px;color:#d1e9f4;line-height:1.35}.admin-value{display:flex;align-items:center;gap:5px;white-space:nowrap}.admin-value input{font:12px Consolas,monospace;text-align:right;color:#8cfff2;background:#061824;border:1px solid #345d68;padding:5px 4px;width:55px;min-width:0}.admin-value span{font-size:9px;color:#6d9fae;min-width:24px}
.admin-control input[type=range]{display:block;width:100%;margin:13px 0 8px;accent-color:#66efe4;cursor:pointer;height:4px}.admin-control p{font:10px/1.4 Arial,sans-serif;color:#88a9b6;margin:0;min-height:28px}
.admin-side{border-left:1px solid #255063;padding:23px 19px;background:linear-gradient(180deg,#112b39,#0a1c2a);overflow:auto}.admin-side-label{font-size:10px;letter-spacing:1.8px;color:#94c4d1}.pull-indicator{display:flex;align-items:baseline;gap:10px;margin:23px 0 10px}.pull-indicator>span{font:italic 900 76px/.9 Arial,sans-serif;letter-spacing:-5px;color:#6cf7e7;text-shadow:0 0 23px #55fbd033}.pull-indicator>small{color:#8ca9bd;font-size:12px}.admin-meter{height:7px;background:#193847;margin:16px 0 24px}.admin-meter>div{height:100%;width:55%;background:linear-gradient(90deg,#4bbeda,#8dffe4);transition:width .07s}.admin-side p{font:12px/1.6 Arial,sans-serif;color:#98b6c4;margin:0 0 16px}.admin-side p strong{color:#dbf7fa}.admin-switch{display:flex;align-items:center;gap:10px;margin:19px 0;padding:13px 8px;border-block:1px solid #305465;font-size:10px;letter-spacing:.9px;cursor:pointer;color:#b9f5f1}.admin-switch input{position:absolute;opacity:0;pointer-events:none}.admin-switch-track{display:inline-block;width:30px;height:17px;border-radius:20px;background:#516775;position:relative;flex-shrink:0}.admin-switch-track:before{content:'';position:absolute;left:3px;top:3px;width:11px;height:11px;border-radius:50%;background:#e6f9fb;transition:transform .12s}.admin-switch input:checked+.admin-switch-track{background:#218e8a}.admin-switch input:checked+.admin-switch-track:before{transform:translateX(13px)}.admin-switch input:focus-visible+.admin-switch-track{outline:2px solid white}.admin-note{background:#162e3e;border-left:2px solid #ffbd79;font:11px/1.65 Arial,sans-serif;color:#acc8d0;padding:12px}.admin-note b{color:#ffd08b}
.admin-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #285064;padding:16px 24px;background:#081825;flex-shrink:0}.admin-footer>span{color:#83a2b2;font-size:9px;letter-spacing:.7px}.admin-footer kbd{border:1px solid #688999;padding:3px 6px;color:#c8faf5}.admin-footer>div{display:flex;gap:9px}.admin-footer button{cursor:pointer;padding:12px 15px;font-size:10px;letter-spacing:.7px;white-space:nowrap}.admin-secondary{background:transparent;border:1px solid #547184;color:#bad7e4}.admin-secondary:hover{border-color:#a1d5e4}.admin-primary{background:#6af1e4;border:1px solid #6af1e4;color:#0b2730;font-weight:900}.admin-primary:hover{background:#a1fff6}
@media(max-width:900px){.admin-main{display:flex;flex-direction:column;overflow-y:auto}.admin-tuners,.admin-side{overflow:visible}.admin-side{display:block;border-left:0;border-top:1px solid #255063}.admin-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.admin-overlay{padding:0}.admin-shell{width:100vw;height:100dvh;max-height:none;border:0}.admin-header{padding:15px}.admin-brand h2{font-size:24px}.admin-intro{padding:12px}.admin-intro>span{font-size:8px}.admin-tuners{padding:10px}.admin-control-grid{grid-template-columns:1fr}.admin-footer{flex-direction:column;align-items:stretch}.admin-footer>div{justify-content:stretch}.admin-footer button{flex:1;padding:12px 4px}.admin-status{display:none}}

/* V8: extra generator controls */
.admin-generate{border-color:#69f3ed;color:#84fff2;background:#10343f}
.admin-generate:hover{background:#185360}
@media(max-width:700px){.admin-footer>div{flex-wrap:wrap}.admin-footer button{font-size:9px}}

/* V8 sector radar: readable branch choices while moving at high speed. */
.route-radar{position:absolute;right:36px;top:110px;width:260px;padding:12px 11px 10px;background:#061725d9;border:1px solid #316574b8;box-shadow:0 0 24px #0006;pointer-events:none}
.radar-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.4px;color:#73eade;margin-bottom:7px}.radar-head b{color:#ecffff}
#route-map{display:block;width:100%;height:180px;background:linear-gradient(#091b2a,#08131f);border:1px solid #2c4a60}
.radar-foot{font-size:8px;letter-spacing:1.1px;text-align:center;color:#87a9b9;margin-top:9px}
@media(max-width:1000px){.route-radar{width:195px;top:95px;right:18px}.radar-foot{font-size:7px}}
@media(max-width:760px){.route-radar{display:none}}

/* V12 — admin-only fly panel and bank display */
.fly-hud{max-width:100%;padding:9px 12px;border:1px solid #83bcff;color:#a8ddff;background:#0b2741e8;font-size:10px;letter-spacing:1px;text-align:center;box-shadow:0 0 22px #468dfc22}
.fly-hud b{color:#e5f7ff;font-size:12px}
.fly-hud kbd{display:inline-block;padding:2px 5px;border:1px solid #8fd8ff;color:white}
.admin-fly-box{border:1px solid #416e91;background:#102b43;padding:13px;margin:22px 0}
.admin-fly-box p{margin:14px 0 8px;font-size:11px}
.admin-fly-box b{color:#d8edff}
.admin-fly-box .admin-switch{margin:10px 0}
.admin-fly-box button{display:block;width:100%;border:1px solid #92d7ff;color:#0a1a2f;background:#8edbff;font-size:11px;font-weight:bold;padding:12px 8px;cursor:pointer}
.admin-fly-box button:disabled{cursor:not-allowed;opacity:.4}
.admin-fly-box button:not(:disabled):hover{background:#d0efff}
.admin-fly-state{color:#91b2c9;letter-spacing:1px;text-align:center;font-size:10px;padding-top:10px}
.admin-fly-state.active{color:#90fcdf}

/* V13: clean HUD — only stopwatch, pace, radar and race checkpoints. */
.ability-row,.bottom-border{display:none!important}
.event-banner.checkpoint-style{top:24%;width:min(730px,90vw);padding:18px 22px 22px;background:linear-gradient(90deg,transparent,#09293cdb 16%,#123447e8 50%,#09293cdb 84%,transparent);border-block:1px solid #74f6eba8;box-shadow:0 0 48px #36f5db23}
.event-banner.checkpoint-style #event-name{font:italic 900 clamp(27px,4.8vw,64px)/1 Arial,Helvetica,sans-serif;letter-spacing:-1px;white-space:nowrap;color:#f4ffff;text-shadow:0 0 26px #65eefa9e}
.event-banner.checkpoint-style #event-sub{color:#80ffdc;letter-spacing:3px;font-weight:900;font-size:13px;margin-top:13px}
#checkpoint-status{display:block;margin-top:9px;color:#7ef7e5!important;letter-spacing:1.8px;font-size:12px}
.center-panel{justify-content:flex-end}


/* V14: in-world next-checkpoint navigator. Coordinates come from the real
   camera projection; markers near/off screen are clamped inside the viewport. */
.checkpoint-waypoint{
 position:fixed;left:50%;top:43%;z-index:8;
 transform:translate(-50%,-50%);display:flex;flex-direction:column;
 align-items:center;gap:4px;min-width:108px;
 pointer-events:none;user-select:none;will-change:left,top;
 color:#9bfff1;text-shadow:0 0 11px #66ffeb8a;
 filter:drop-shadow(0 3px 9px #020d18a8);
}
.checkpoint-waypoint[hidden]{display:none}
.waypoint-diamond{width:22px;height:22px;display:grid;place-items:center;
 border-radius:50%;border:1px solid #7bfbe8;
 background:#082f41d9;box-shadow:0 0 0 4px #3bf8df17,0 0 16px #53fee650;
 font-size:13px;line-height:1}
.waypoint-diamond span{transform:translateY(-.5px)}
.waypoint-badge{min-width:99px;padding:5px 9px 6px;border:1px solid #59ddca99;
 border-radius:4px;background:#071b2cdb;text-align:center;
 backdrop-filter:blur(3px);white-space:nowrap}
#waypoint-name{font-size:8px;font-weight:900;letter-spacing:1.1px;color:#84dbd6}
#waypoint-distance{display:block;margin-top:3px;font:900 19px/1.1 Arial,Helvetica,sans-serif;
 letter-spacing:.2px;color:#f0fffa;font-variant-numeric:tabular-nums}
.waypoint-arrow{display:none;position:absolute;top:-22px;left:calc(50% - 8px);
 color:#f4d694;font:900 16px/1 Arial,Helvetica,sans-serif;
 transform-origin:50% 12px;text-shadow:0 0 11px #ffd595}
.checkpoint-waypoint.is-edge .waypoint-arrow{display:block}
.checkpoint-waypoint.is-edge .waypoint-diamond{border-color:#eac988;color:#ffd58d}
.checkpoint-waypoint.is-finish .waypoint-badge{border-color:#f0cc88}
.checkpoint-waypoint.is-finish .waypoint-diamond{color:#ffe3a2;border-color:#ffe3a2}
.checkpoint-waypoint.is-finish #waypoint-name{color:#ffe0a3}
@media(max-width:700px){
 .checkpoint-waypoint{min-width:88px}
 .waypoint-badge{padding:4px 6px;min-width:84px}
 #waypoint-name{font-size:7px;letter-spacing:.4px}
 #waypoint-distance{font-size:15px}
}

/* V17: lightweight UI indicators; no extra rendering engine */
#rail-status{position:fixed;left:50%;bottom:13%;transform:translateX(-50%);pointer-events:none;z-index:18;font:800 13px/1.4 monospace;letter-spacing:.2em;color:#ffe3a6;text-shadow:0 0 12px #e9aa4b;opacity:0;transition:opacity .12s;}
#rail-status.on{opacity:1;}
#impact-flash{position:fixed;inset:0;z-index:15;pointer-events:none;opacity:0;border:0 solid #ffe49f;}
#impact-flash.pulse{animation:impactPulse .26s ease-out;}
@keyframes impactPulse{0%{opacity:.65;border-width:8px;}100%{opacity:0;border-width:0;}}

/* V20 experimental lab */
.lab-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:15px 0 8px}.lab-buttons button{border:1px solid #398d9c;color:#dff9fc;background:#122b3b;font-weight:800;font-size:12px;letter-spacing:.07em;border-radius:7px;min-height:43px;cursor:pointer}.lab-buttons button:hover{background:#285066;border-color:#9fffe2}@media(max-width:680px){.lab-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}}

#perf-readout{position:fixed;right:18px;bottom:18px;z-index:15;color:#95c5cd;background:rgba(5,20,31,.62);border:1px solid rgba(86,177,179,.28);font:600 10px/1.4 monospace;letter-spacing:.075em;padding:4px 8px;border-radius:5px;pointer-events:none}body:not(.playing) #perf-readout{display:none}
