@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800;900&family=Barlow:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--cyan:#84f6d3;--amber:#ffc468;--muted:#91a4ad;--panel:#101b23}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#0a141d;color:#edf4f5;font-family:Barlow,system-ui,sans-serif}canvas{display:block}button,input{font:inherit}button{cursor:pointer}.hidden{display:none!important}#game{position:fixed;inset:0}#vignette{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 160px #06131b66}#hud{position:fixed;inset:0;pointer-events:none}.top{display:flex;align-items:flex-start;justify-content:space-between;padding:27px 34px;background:linear-gradient(#051018a0,transparent)}.brand{font:700 21px 'Barlow Condensed',sans-serif;letter-spacing:2px}.brand b{color:var(--cyan)}.brand small{display:block;font:500 10px Barlow,sans-serif;letter-spacing:4px;margin-top:6px;color:#b4c4ca}#timer{position:absolute;left:50%;transform:translateX(-50%);font:600 36px 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums;letter-spacing:2px}#network{font-size:12px;color:var(--cyan);padding-top:6px}#feed{position:absolute;right:32px;top:94px;text-align:right;display:grid;gap:7px}.feed-item{font-size:14px;background:#08141abf;padding:8px 12px;border-right:2px solid var(--cyan);animation:feedin .2s}.beam-icon{color:#d7eeec;margin:0 9px} #crosshair{position:absolute;left:50%;top:50%;width:2px;height:2px;background:#fff;filter:drop-shadow(0 1px 1px #000)}#crosshair i{position:absolute;background:#fff}#crosshair i:nth-child(1){width:1px;height:5px;top:-9px}#crosshair i:nth-child(2){width:1px;height:5px;top:6px}#crosshair i:nth-child(3){height:1px;width:5px;left:-9px}#crosshair i:nth-child(4){height:1px;width:5px;left:6px}#hitmarker{position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);font:50px sans-serif;color:var(--amber);opacity:0;text-shadow:0 0 16px #ffad3f}.bottom{position:absolute;bottom:28px;left:34px;right:34px;display:flex;align-items:flex-end;justify-content:space-between}.label{display:block;color:var(--muted);font-size:10px;letter-spacing:3px}#frags{font:700 54px 'Barlow Condensed',sans-serif}#rank{margin-left:15px;font-size:14px;color:#c6d7db}.weapon{position:absolute;left:50%;transform:translateX(-50%);width:180px;text-align:center;font-size:10px;letter-spacing:3px}.weapon span{color:#adc2c9}#charge{height:3px;background:#40545b;margin:9px 0}#charge>div{height:100%;background:var(--cyan);box-shadow:0 0 8px #84f6d355}#ready{font-size:9px;color:var(--cyan)}.hint{font-size:11px;letter-spacing:1px}.hint span{color:var(--muted)}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#051018b8;backdrop-filter:blur(9px)}.menu-card{width:510px;padding:32px 40px;background:linear-gradient(135deg,#192832f2,#0d171ef5);border:1px solid #78939a35;box-shadow:0 25px 100px #0008;border-top:3px solid var(--cyan)}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--cyan)}h1{font:900 78px/.85 'Barlow Condensed',Impact,sans-serif;letter-spacing:2px;margin:24px 0 16px}h1 em{font-style:normal;color:var(--cyan)}.intro{font-size:13px;color:#b8cbd0}.intro span{color:#59727a;margin:0 6px}#status{font-size:12px;color:var(--amber);min-height:28px;margin:12px 0}#name-label{display:block;font-size:10px;letter-spacing:2px;color:var(--muted)}#nickname{display:block;width:100%;margin:8px 0 20px;padding:12px;background:#071218;border:1px solid #46606a;color:#fff;outline:none}input:focus{border-color:var(--cyan)!important}#settings{border-top:1px solid #ffffff16;padding-top:15px;margin-bottom:21px}.setting{display:flex;align-items:center;gap:13px;margin:10px 0;font-size:12px}.setting label{width:115px;flex-shrink:0}.setting input[type=range]{min-width:60px;flex:1;accent-color:var(--cyan)}.setting input[type=number]{width:65px;padding:4px;border:1px solid #46606a;background:#071218}.setting output{width:65px;text-align:right;color:var(--cyan)}.check{font-size:12px;color:#bccbd0;display:flex;align-items:center;gap:8px}.check input{accent-color:var(--cyan)}#play{width:100%;padding:15px 18px;text-align:left;background:var(--cyan);border:0;color:#09241e;font-size:13px;font-weight:800;letter-spacing:2px}#play span{float:right}#play:hover{background:#b0ffe8}.controls{font-size:11px;line-height:1.9;color:#a0b6bf}.footer{margin:20px 0 0;font-size:10px;color:#5e7a86;letter-spacing:1px}#scoreboard{pointer-events:none;background:#06121a99;backdrop-filter:blur(5px)}.score-card{width:min(760px,94vw);padding:30px 34px;background:#101d27ef;border:1px solid #657f8944;border-top:3px solid var(--cyan)}h2{font:700 35px 'Barlow Condensed',sans-serif;letter-spacing:2px;margin:12px 0}#score-meta{color:#a8c1ca;font-size:12px;margin-bottom:20px}.table-scroll{max-height:60vh;overflow:auto}table{width:100%;border-collapse:collapse;text-align:right;font-size:14px}th{font-size:10px;letter-spacing:2px;color:#76949f;padding:9px}td{padding:9px;border-top:1px solid #ffffff0b;font-variant-numeric:tabular-nums}th:nth-child(2),td:nth-child(2){text-align:left}th:first-child,td:first-child{width:35px;text-align:left;color:#76949f}.swatch{display:inline-block;width:10px;height:10px;border:1px solid #b5c3c8;margin-right:10px}.local{background:#84f6d30d;box-shadow:inset 2px 0 var(--cyan)}#score-footer{font-size:11px;color:#76949f}#death{position:absolute;left:50%;top:35%;transform:translateX(-50%);text-align:center;width:95%;font:700 32px 'Barlow Condensed',sans-serif;letter-spacing:2px;text-shadow:0 2px 5px #000}#death small{display:block;font:12px Barlow,sans-serif;color:#b5c6ca;margin-top:15px;letter-spacing:0}@keyframes feedin{from{opacity:0;transform:translateX(15px)}to{opacity:1;transform:translateX(0)}}@media(max-height:780px){.menu-card{padding:22px 32px}h1{font-size:60px;margin:18px 0}.footer{display:none}#settings{margin-bottom:14px}#nickname{margin-bottom:12px}}@media(max-width:600px){.menu-card{width:94vw}.top{padding:18px}.bottom{left:18px;right:18px}.hint{display:none}.brand{font-size:15px}#timer{font-size:28px}#network{font-size:10px}}

.bot-tag{display:inline-block;margin-left:8px;padding:2px 4px;border:1px solid #84f6d344;color:#84f6d3;font-size:9px;letter-spacing:1px;vertical-align:middle}

.controls{white-space:pre-line}#play #play-label{float:none}.movement-hints{text-align:right}#run-state{min-height:21px;font-size:11px;letter-spacing:1px;color:#96b5bb;opacity:.8}#run-state.active{color:var(--cyan);opacity:1}#notice{position:absolute;top:87px;left:50%;transform:translateX(-50%);padding:6px 12px;background:#08141ac9;color:#b8d2d5;font-size:12px}.setting label{width:133px}.menu-card{width:550px}h1{font-size:72px}.brand{font-size:20px}th:first-child{font-size:9px;letter-spacing:0}#play{display:flex;justify-content:space-between}

#fps{position:absolute;top:85px;left:34px;color:#a8c2c9;font-size:11px;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px #000}.check+.check{margin-top:8px}

#leave-queue{width:100%;padding:15px 18px;background:#243a45;color:#dcebee;border:1px solid #58717b;font-weight:600}#leave-queue:hover{background:#314c59}

/* The live leaders sit over the intermission veil, below every menu. */
#scoreboard{z-index:1}#menu{z-index:3}.menu-card{width:min(550px,94vw);max-height:94dvh;overflow-y:auto}
#leaders{position:fixed;top:88px;left:34px;width:230px;margin:0;padding:0;list-style:none;pointer-events:none;z-index:2;font:500 12px Barlow,system-ui,sans-serif}
.leader{display:grid;grid-template-columns:22px 9px minmax(0,1fr) 28px;gap:7px;align-items:center;padding:6px 9px;background:#07141cd6;border-bottom:1px solid #adc7cc15;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px #000}
.leader.local{background:#16332fe6}.leader-rank{color:#9fb8c1}.leader .swatch{width:9px;height:9px;margin:0}.leader-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leader-frags{text-align:right;font-weight:700;color:#e7f5f5}
#fps{left:auto;right:34px;top:59px}.setting output{min-width:40px;text-align:right;color:var(--cyan)}
@media(max-width:600px){.brand{font-size:15px;max-width:155px}.brand small{letter-spacing:3px}.menu-card{padding:22px 24px}h1{font-size:58px}#leaders{left:18px;top:74px;width:210px}.leader{font-size:11px;padding:5px 7px}#fps{left:auto;right:18px;top:53px}#feed{right:18px;top:206px;max-width:calc(100vw - 36px)}.feed-item{font-size:11px}#notice{top:173px;width:calc(100vw - 36px);text-align:center}}


#timer.urgent{color:#ff2a2a;text-shadow:0 2px 4px #000,0 0 15px #000}
#countdown{position:absolute;left:50%;bottom:calc(50% + 26px);transform:translateX(-50%);pointer-events:none;text-align:center;color:#ff2a2a;font:800 clamp(80px,18vw,200px)/.85 'Barlow Condensed',Impact,sans-serif;text-shadow:0 4px 8px #000,2px 0 2px #000,-2px 0 2px #000,0 -2px 2px #000}
#countdown span{display:block;animation:count-pop .94s both;transform-origin:center bottom}
@keyframes count-pop{0%{opacity:0;transform:scale(1.6)}15%{opacity:1;transform:scale(1)}72%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.75)}}
@media(prefers-reduced-motion:reduce){#countdown span{animation-name:count-fade}@keyframes count-fade{0%,100%{opacity:0}15%,72%{opacity:1}}}

#wake-up{position:fixed;inset:0;pointer-events:none}#wake-dark{position:absolute;inset:0;background:#010307}
#lid-top,#lid-bottom{position:absolute;left:-5%;width:110%;height:56%;background:#010204;filter:blur(4px);box-shadow:0 0 20px 12px #010204;will-change:transform}
#lid-top{top:-56%;border-radius:0 0 48% 48%/0 0 12% 12%}#lid-bottom{bottom:-56%;border-radius:48% 48% 0 0/12% 12% 0 0}
#hud>.bottom,#hud>#fps,#hud>#feed,#hud>#notice,#hud>#crosshair,#hud>#hitmarker,#hud>#death,#hud .top>:not(.brand){opacity:var(--wake-opacity,1)}
#hud.waking>.bottom,#hud.waking>#fps,#hud.waking>#feed,#hud.waking>#notice,#hud.waking>#crosshair,#hud.waking>#hitmarker,#hud.waking>#death,#hud.waking .top>:not(.brand){visibility:hidden}
@media(prefers-reduced-motion:reduce){#lid-top,#lid-bottom{display:none}}

.colored{font-weight:700;text-shadow:0 1px 1px rgba(0,0,0,.9),0 0 2px rgba(0,0,0,.8)}
.colored.name-dark{background:#dfe7ea;padding:0 .3em;border-radius:3px;text-shadow:none;justify-self:start;max-width:100%}

/* Pulse-aligned intro digits hold until replaced, including the last 590 ms. */
#countdown.intro-count span{animation:intro-pop .5s both}
@keyframes intro-pop{0%{opacity:0;transform:scale(1.6)}20%,100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){#countdown.intro-count span{animation-name:intro-fade}@keyframes intro-fade{0%{opacity:0}20%,100%{opacity:1}}}
/* Menu additions share the existing play button's dimensions and typography. */
.menu-button{display:block;width:100%;padding:15px 18px;margin-top:8px;text-align:left;background:var(--cyan);border:0;color:#09241e;font-size:13px;font-weight:800;letter-spacing:2px}
.menu-button:hover{background:#b0ffe8}.menu-button.danger{background:#d7263d;color:#fff}.menu-button.danger:hover{background:#ec3d54}
button:focus-visible{outline:3px solid #fff;outline-offset:3px}
.menu-dialog{color:#edf4f5;border:0;padding:0;background:transparent;max-width:94vw;max-height:94dvh;overflow:auto}
.menu-dialog::backdrop{background:#03080cd9;backdrop-filter:blur(9px)}
.dialog-panel{width:min(480px,90vw);padding:28px;background:linear-gradient(135deg,#192832,#0d171e);border:1px solid #78939a55;border-top:3px solid #d7263d;box-shadow:0 25px 100px #0008}
.dialog-panel p{margin:0 0 24px;font-size:20px;line-height:1.5;overflow-wrap:anywhere}.dialog-actions{display:flex;gap:12px}.dialog-actions button{text-align:center}
.about-dialog{width:100vw;height:100dvh;max-width:none;max-height:none;background:#05070c;text-align:center;padding:24px;overflow:auto}
.about-dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}
.splash-content{display:flex;flex-direction:column;align-items:center}.adi-signature{color:#fff}.about-contact{position:relative;margin:26px 0;color:#fff;font-size:16px;user-select:text}.about-contact a{color:inherit;user-select:text}.about-dialog>.menu-button{width:auto;min-width:120px;text-align:center;margin-top:8px}
@media(max-height:550px){.about-dialog[open]{justify-content:flex-start}.about-dialog .adi-art{height:35dvh}.about-dialog .adi-signature{margin-top:12px}.about-contact{margin:16px 0}}
#login-fields small{display:block;color:var(--muted);margin:-12px 0 14px;font-size:11px}#password-label{display:block;font-size:10px;letter-spacing:2px;color:var(--muted)}#password{display:block;width:100%;margin:8px 0 18px;padding:12px;background:#071218;border:1px solid #46606a;color:#fff}#logged-in{margin-bottom:18px;font-size:13px}#logout{border:0;background:none;color:var(--cyan);text-decoration:underline;padding:4px;cursor:pointer}.colored,.colored.name-dark{background:none;padding:0;border-radius:0;text-shadow:1px 0 2px #071015,-1px 0 2px #071015,0 1px 2px #071015,0 -1px 2px #071015}.score-card{max-height:94dvh;overflow:auto}.table-scroll{max-height:35vh}#all-time{border-top:1px solid #ffffff22;margin-top:16px}#all-time h3{font-size:19px}#all-time p{font-size:11px;color:var(--muted)}.ranking-scroll{max-height:24vh;overflow:auto;pointer-events:auto}.full-ranking .ranking-scroll{max-height:65vh}.full-ranking .table-scroll,.full-ranking #score-meta{display:none}.full-ranking{pointer-events:auto!important}

/* Splash/about: pure black, logo silhouette filled with a rainbow gradient, white signature. */
#adi-splash,.about-dialog{background:#000}
.adi-art::before{display:none}
.adi-logo-fill{position:relative;height:100%;max-width:85%;aspect-ratio:1141/1600;background:linear-gradient(160deg,#ff3b5c 0%,#ff9f1c 18%,#ffe44d 34%,#3ddc84 50%,#2ec4ff 66%,#7b5cff 82%,#ff3bd4 100%);-webkit-mask:url(logo.png) center/contain no-repeat;mask:url(logo.png) center/contain no-repeat}

#debug{position:fixed;bottom:100px;left:12px;z-index:10000;max-width:calc(100vw - 24px);margin:0;padding:10px;background:#08121eeb;color:#e6f2f5;font:12px/1.5 monospace;pointer-events:none;white-space:pre-wrap;border:1px solid #587482;}

#alone-caption{position:fixed;top:0;left:0;right:0;z-index:20;margin:0;padding:8px 16px;background:#050c14f5;color:#fff;font:600 clamp(14px,1.6vw,18px)/1.4 Barlow,system-ui,sans-serif;text-align:center;text-transform:none;letter-spacing:normal;pointer-events:none;border-bottom:1px solid #ffffff25}
#hud .top,#feed,#fps,#leaders{translate:0 var(--alone-height,0px)}
