:root { color-scheme: dark; --pink:#ff4fd8; --cyan:#50f6ff; --ink:#070312; --cream:#fff3d2; }
* { box-sizing:border-box; }
html, body { margin:0; width:100%; height:100%; overflow:hidden; background:var(--ink); color:white; font-family:Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; }
body::before { content:""; position:fixed; inset:0; background:radial-gradient(circle at 50% 100%,#52206f 0,transparent 45%),linear-gradient(#100522,#05020c); z-index:-2; }
#game { display:block; width:100vw; height:100vh; cursor:crosshair; }
#scanlines { pointer-events:none; position:fixed; inset:0; z-index:20; opacity:.13; background:repeating-linear-gradient(0deg,transparent 0 3px,#000 3px 4px); mix-blend-mode:multiply; }
.panel { position:fixed; z-index:10; left:50%; top:50%; transform:translate(-50%,-50%) skewY(-1deg); width:min(92vw,470px); max-height:calc(100vh - 24px); max-height:calc(100dvh - 24px); overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; padding:38px; border:1px solid #ffffff50; background:linear-gradient(135deg,#17072ded,#090414ee); box-shadow:12px 12px 0 #ff4fd840,-12px -12px 0 #50f6ff30,0 0 80px #9b39ff55; }
.panel::before { content:""; position:absolute; inset:9px; border:1px solid #50f6ff22; pointer-events:none; }
.eyebrow { color:var(--cyan); letter-spacing:.22em; font:700 11px Arial,sans-serif; margin:0 0 18px; }
h1 { font-size:clamp(34px,9.4vw,54px); line-height:.9; white-space:nowrap; letter-spacing:-.04em; font-style:italic; margin:0 0 28px; text-shadow:5px 5px 0 #9026bd; overflow-x:hidden; }
h1 span { color:transparent; -webkit-text-stroke:2px var(--pink); filter:drop-shadow(0 0 10px #ff4fd8aa); }
.tagline { font:italic 15px Georgia,serif; color:#dccbe9; max-width:340px; line-height:1.5; }
label { display:block; color:#cbb9df; letter-spacing:.16em; font:700 10px Arial,sans-serif; margin-top:15px; }
input { display:block; width:100%; margin-top:7px; padding:12px 13px; color:white; border:1px solid #743e91; outline:none; background:#05020b; font:700 16px 'Courier New',monospace; text-transform:uppercase; }
input:focus { border-color:var(--cyan); box-shadow:0 0 16px #50f6ff33; }
button { border:0; padding:13px 18px; color:#13051c; background:linear-gradient(90deg,var(--pink),#ff9edc); font:900 13px Arial,sans-serif; letter-spacing:.1em; cursor:pointer; box-shadow:5px 5px 0 #50f6ff; }
#join { width:100%; margin-top:22px; font-size:15px; }
#train { width:100%; margin-top:10px; font-size:13px; background:linear-gradient(90deg,var(--cyan),#9df3ff); box-shadow:5px 5px 0 var(--pink); }
#trainBadge { position:absolute; top:64px; left:25px; padding:5px 11px; border:1px solid var(--cyan); background:#50f6ff1a; color:var(--cyan); font:700 10px 'Courier New',monospace; letter-spacing:.22em; text-shadow:0 0 10px var(--cyan); box-shadow:0 0 14px #50f6ff44; }
#viewReset { position:fixed; z-index:30; left:50%; bottom:calc(20px + env(safe-area-inset-bottom)); transform:translateX(-50%); padding:11px 20px; border:1px solid var(--pink); border-radius:999px; background:#17072dee; color:var(--pink); font:700 11px 'Courier New',monospace; letter-spacing:.16em; box-shadow:0 0 20px #ff4fd866, 3px 3px 0 var(--cyan); cursor:pointer; }
/* v1.7.0: :hover transforms are desktop-only. On touch, iOS treats the first tap as
   "hover" and eats the click, forcing a confusing second tap. :active gives press feedback everywhere. */
@media (hover:hover) {
  button:hover { filter:brightness(1.18); transform:translate(-1px,-1px); }
  button.ghost:hover { background:#50f6ff14; filter:none; transform:none; }
  .upcard:hover { transform:translate(-2px,-2px); filter:brightness(1.15); }
}
button:active, .upcard:active { filter:brightness(1.32); }
.micro { margin:18px 0 0; color:#806d91; font:11px Arial,sans-serif; text-align:center; }
.hidden { display:none !important; }
#hud { position:fixed; inset:0; z-index:5; pointer-events:none; font-family:Arial,sans-serif; }
.brand { position:absolute; top:22px; left:25px; color:var(--pink); font:italic 900 24px Impact,sans-serif; letter-spacing:.06em; text-shadow:2px 2px #5c1874; }
.brand small { display:block; color:var(--cyan); font:700 9px Arial,sans-serif; letter-spacing:.18em; margin-top:4px; }
.health { position:absolute; left:25px; bottom:25px; width:250px; }
.health span { font:700 10px Arial,sans-serif; letter-spacing:.2em; }
.health div { height:10px; margin-top:7px; padding:2px; border:1px solid #fff8; background:#090314; }
.health i { display:block; width:100%; height:100%; background:linear-gradient(90deg,var(--pink),var(--cyan)); box-shadow:0 0 12px var(--pink); transition:width .15s; }
#copy { pointer-events:auto; position:absolute; right:25px; bottom:25px; font-size:10px; padding:10px 13px; box-shadow:3px 3px 0 var(--cyan); }
#scores { position:absolute; top:25px; right:25px; width:230px; margin:0; padding:10px 15px 10px 34px; border-left:2px solid var(--pink); background:#080312aa; font:12px 'Courier New',monospace; }
#scores li { padding:4px 0; color:#cbb9df; }
#scores b { float:right; color:white; }
#feed { position:absolute; left:25px; top:85px; width:320px; font:11px 'Courier New',monospace; color:#e6ccec; }
#feed div { margin:6px 0; animation:arrive .25s ease-out; text-shadow:0 1px #000; }
#status { position:absolute; left:50%; top:22px; transform:translateX(-50%); color:#fff35c; font:700 10px 'Courier New',monospace; letter-spacing:.15em; }
#dead { position:fixed; z-index:8; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; pointer-events:none; background:#16031a55; text-align:center; }
#dead strong { color:var(--pink); font:italic 46px Impact,sans-serif; letter-spacing:.05em; text-shadow:4px 4px 0 #50f6ff55; }
#dead span { margin-top:10px; font:13px 'Courier New',monospace; letter-spacing:.15em; }
@keyframes arrive { from { transform:translateX(-10px); opacity:0; } }
@media (max-width:700px) {
  .panel { padding:28px; }
  #scores { width:160px; top:66px; font-size:10px; }
  #feed { display:none; }
  .health { width:180px; }
  #copy { top:20px; bottom:auto; right:16px; }
  .brand { left:16px; }
}

.platforms { margin:14px 0 -4px; color:var(--pink); font:700 10px 'Courier New',monospace; letter-spacing:.13em; text-align:center; }
.touch-help { display:none; }
#touchControls { position:fixed; inset:0; z-index:7; pointer-events:none; user-select:none; -webkit-user-select:none; touch-action:none; }
.stick-zone { position:absolute; bottom:0; width:46vw; max-width:360px; height:min(48vh,320px); pointer-events:auto; touch-action:none; }
.stick-left { left:0; }
.stick-right { right:0; }
.stick-base { position:absolute; left:50%; top:62%; width:126px; height:126px; transform:translate(-50%,-50%); border:2px solid #50f6ff66; border-radius:50%; background:radial-gradient(circle,#50f6ff15 0 38%,#140625a8 40% 100%); box-shadow:inset 0 0 24px #50f6ff22,0 0 20px #08020c99; transition:opacity .18s; opacity:.72; }
.stick-right .stick-base { border-color:#ff4fd877; background:radial-gradient(circle,#ff4fd81c 0 38%,#140625a8 40% 100%); box-shadow:inset 0 0 24px #ff4fd824,0 0 20px #08020c99; }
.stick-knob { position:absolute; left:50%; top:50%; width:54px; height:54px; transform:translate(-50%,-50%); border:2px solid var(--cyan); border-radius:50%; background:#17072de8; box-shadow:0 0 18px #50f6ff88; }
.stick-right .stick-knob { border-color:var(--pink); box-shadow:0 0 18px #ff4fd899; }
.stick-zone.active .stick-base { opacity:1; }
/* v5.6.0: one-handed mode — single, bigger move stick; aim stick hidden */
#touchControls.one-hand #aimPad { display:none; }
#touchControls.one-hand .stick-left { width:62vw; max-width:480px; }
#touchControls.one-hand .stick-base { width:150px; height:150px; }
#touchControls.one-hand .stick-knob { width:64px; height:64px; }
.stick-zone > span { position:absolute; left:0; right:0; bottom:max(12px,env(safe-area-inset-bottom)); color:#ffffff88; font:800 10px 'Courier New',monospace; letter-spacing:.18em; text-align:center; text-shadow:0 2px 4px #000; }
#rotateHint { display:none; position:fixed; z-index:6; left:50%; bottom:calc(15px + env(safe-area-inset-bottom)); transform:translateX(-50%); padding:7px 10px; border:1px solid #50f6ff44; background:#080312c9; color:#50f6ffaa; font:700 8px 'Courier New',monospace; letter-spacing:.1em; white-space:nowrap; pointer-events:none; }
@media (hover:none), (pointer:coarse) {
  /* Pinch-zoom hardening: only the gameplay canvas and stick zones swallow
     touches (touch-action:none), so twin-stick play can never accidentally
     zoom the page. Everything else is browser-native: html/body keep their
     default touch-action, so pinch in AND out always work symmetrically and
     the browser can never get stuck in a zoomed state because of us. */
  html,body { overscroll-behavior:none; }
  #game { touch-action:none; }
  #game { cursor:default; }
  .desktop-help { display:none; }
  .touch-help { display:inline; }
  #touchControls:not(.hidden) { display:block; }
  button,input,.panel { touch-action:manipulation; }
  .brand { top:max(10px,env(safe-area-inset-top)); left:max(12px,env(safe-area-inset-left)); font-size:19px; }
  #trainBadge { top:max(46px,calc(env(safe-area-inset-top) + 36px)); left:max(12px,env(safe-area-inset-left)); font-size:8px; }
  #status { top:max(12px,env(safe-area-inset-top)); font-size:8px; }
  #copy { top:max(10px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right)); padding:9px 10px; font-size:8px; }
  .health { top:max(55px,calc(env(safe-area-inset-top) + 6px)); bottom:auto; left:max(12px,env(safe-area-inset-left)); width:155px; }
  #scores { top:max(55px,calc(env(safe-area-inset-top) + 6px)); right:max(12px,env(safe-area-inset-right)); width:135px; max-height:120px; overflow:hidden; font-size:9px; padding:7px 9px 7px 26px; }
  #feed { display:none; }
  #dead strong { padding:0 18px; font-size:clamp(30px,9vw,46px); }
}
/* v5.12.2: Dynamic Island — on touch phones, anchor panels below the island
   instead of dead-center so tall content never slides under it. Vertical
   scroll still works; the -1deg tilt stays. */
@media (hover:none) and (pointer:coarse) {
  .panel {
    top:calc(env(safe-area-inset-top,0px) + 12px);
    transform:translateX(-50%) skewY(-1deg);
    max-height:calc(100vh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 24px);
    max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 24px);
  }
}
@media (hover:none) and (pointer:coarse) and (orientation:portrait) {
  #rotateHint:not(.hidden) { display:block; bottom:calc(178px + env(safe-area-inset-bottom)); }
  .stick-zone { width:49vw; height:36vh; }
  .stick-base { width:112px; height:112px; top:67%; }
}
@media (max-height:620px) {
  .panel { padding:20px 26px; }
  h1 { margin-bottom:18px; }
  .tagline { margin:10px 0; font-size:13px; }
  label { margin-top:9px; }
  input { padding:9px 11px; }
  #join { margin-top:14px; padding:11px; }
  #train { margin-top:8px; padding:10px; }
  .platforms { margin-top:10px; }
  .micro { margin-top:10px; }
}

/* ============ NEON NULL v1.3.0: NULL RUN + generator + skills ============ */
#duel { width:100%; margin-top:10px; font-size:13px; background:linear-gradient(90deg,#ffb02e,#ffe27a); box-shadow:5px 5px 0 var(--cyan); }
#solo { width:100%; margin-top:10px; font-size:13px; background:linear-gradient(90deg,#9b6cff,#d0a6ff); box-shadow:5px 5px 0 var(--cyan); }
.lobby-row { display:flex; gap:10px; margin-top:10px; }
.lobby-row .ghost { flex:1; }
button.ghost { background:transparent; color:var(--cyan); border:1px solid #50f6ff66; box-shadow:none; font-size:11px; padding:11px 12px; }
button.ghost.wide { width:100%; margin-top:16px; }
#skillPts { color:var(--pink); }

/* generator */
#genPanel { max-height:92vh; overflow-y:auto; }
#genPreview { display:block; margin:0 auto 6px; width:240px; height:200px; border:1px solid #50f6ff33; background:#0a0318; box-shadow:inset 0 0 30px #9b39ff33; }
.lore { font:italic 13px Georgia,serif; color:#dccbe9; text-align:center; min-height:20px; margin:4px 0 10px; }
.gen-group { margin-top:12px; }
.gen-group > span { display:block; color:#cbb9df; letter-spacing:.16em; font:700 10px Arial,sans-serif; margin-bottom:6px; }
.gen-btns { display:flex; flex-wrap:wrap; gap:8px; }
.gen-btns button { flex:1 1 auto; padding:9px 6px; font-size:10px; box-shadow:3px 3px 0 var(--cyan); white-space:nowrap; }
.gen-btns button.active { outline:2px solid #fff; filter:brightness(1.25); }
/* v5.11.0: locked unlockables — dimmed with 🔒, tap shows the unlock condition */
.gen-btns button.locked { filter:grayscale(.85) brightness(.7); box-shadow:3px 3px 0 #555; }
.gen-btns.swatches button { flex:0 0 34px; height:30px; padding:0; border:2px solid #ffffff55; }
.gen-btns.swatches button.active { border-color:#fff; }
.gen-group input[type=color] { width:100%; height:34px; margin-top:8px; padding:2px; border:1px solid #743e91; background:#05020b; cursor:pointer; }
.gen-btns.presets button { flex:1 1 45%; font-size:10px; }

/* skill tree */
#skillPanel { max-height:94vh; overflow-y:auto; }
.skill-meta { margin:0 0 6px; }
#skillSvg { display:block; width:100%; height:auto; }
#skillSvg .branch-label { font:700 13px Arial,sans-serif; letter-spacing:.2em; fill:#cbb9df; }
#skillSvg .link { stroke:#ffffff22; stroke-width:2; }
#skillSvg .link.done { stroke:#50f6ff88; }
#skillSvg .node { cursor:pointer; }
#skillSvg .node circle.face { fill:#0a0318; stroke:#ffffff44; stroke-width:2; }
#skillSvg .node.avail circle.face { stroke:var(--cyan); filter:drop-shadow(0 0 6px #50f6ff88); }
#skillSvg .node.done circle.face { fill:#123; stroke:var(--pink); filter:drop-shadow(0 0 8px #ff4fd8aa); }
#skillSvg .node text { fill:#fff; font:700 13px Arial,sans-serif; text-anchor:middle; pointer-events:none; }
#skillSvg .node .nm { fill:#cbb9df; font:700 8px Arial,sans-serif; letter-spacing:.06em; }
#skillSvg .node .cost { fill:#fff35c; font:700 9px Arial,sans-serif; }
#skillSvg .node .ranks { fill:#8f86a8; font:700 9px Arial,sans-serif; } /* v5.12.1: rank pips */
#skillSvg .node.part circle.face { stroke:var(--pink); filter:drop-shadow(0 0 5px #ff4fd866); }
/* v5.12.1: node detail panel — tap any node, get the plain-words truth */
#skillDetail { position:sticky; bottom:0; margin:10px 4px 2px; padding:12px 14px; background:#120826f2;
  border:1px solid #ff4fd866; border-radius:12px; z-index:5; }
#skillDetail.hidden { display:none; }
#sdName { margin:0 0 6px; font-size:15px; letter-spacing:.08em; }
#sdDesc { margin:0 0 6px; font-size:13px; color:#e8e2f5; }
#sdRanks { margin:0 0 10px; font-size:11px; color:#8f86a8; letter-spacing:.06em; }
#sdRow { display:flex; gap:8px; }
#sdUnlock { flex:1; }
#sdUnlock:disabled { opacity:.45; }
/* v5.12.1: tappability hint + intel text size */
.skill-hint { margin:8px 0 0; color:var(--cyan); letter-spacing:.14em; }
.skill-hint.pulse { animation:skillHintPulse 1.8s ease-in-out 2; }
@keyframes skillHintPulse { 0%,100% { opacity:.55; } 50% { opacity:1; text-shadow:0 0 14px var(--cyan); } }
.skill-ops { margin:6px 0 0; }
.skill-ops button.mini { font-size:11px; border:1px solid rgba(255,79,216,.5); border-radius:4px;
  color:var(--pink); padding:6px 10px; letter-spacing:.08em; background:transparent; }
#skillDetail.sz-n #sdName { font-size:15px; }
#skillDetail.sz-l #sdName { font-size:18px; }
#skillDetail.sz-l #sdDesc { font-size:16px; }
#skillDetail.sz-l #sdRanks { font-size:13px; }
#skillDetail.sz-xl #sdName { font-size:21px; }
#skillDetail.sz-xl #sdDesc { font-size:19px; line-height:1.5; }
#skillDetail.sz-xl #sdRanks { font-size:14px; }

/* solo HUD */
#soloHud { position:fixed; inset:0; z-index:5; pointer-events:none; font-family:Arial,sans-serif; }
#soloStats { position:absolute; top:25px; right:25px; text-align:right; font:700 11px 'Courier New',monospace; color:#e6ccec; }
#soloLives { color:var(--pink); font-size:15px; letter-spacing:.1em; text-shadow:0 0 10px var(--pink); }
#soloXpWrap { width:170px; height:8px; margin:8px 0 8px auto; border:1px solid #fff8; background:#090314; }
#soloXpFill { display:block; height:100%; width:0%; background:linear-gradient(90deg,#9b6cff,var(--cyan)); box-shadow:0 0 10px #9b6cff; transition:width .2s; }
#soloScore { color:var(--cyan); letter-spacing:.12em; }
#soloPause { pointer-events:auto; position:absolute; right:25px; bottom:25px; padding:10px 14px; font-size:12px; box-shadow:3px 3px 0 var(--cyan); }

/* upgrade draft */
#draft { position:fixed; z-index:12; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; background:#05020cd9; padding:20px; overflow-y:auto; overscroll-behavior:contain; }
#draft .eyebrow { margin-bottom:10px; }
/* v1.7.0: performance grade banner + picks counter */
#draftGrade { display:flex; flex-direction:column; align-items:center; gap:6px; margin:0 0 4px; font:700 12px 'Courier New',monospace; letter-spacing:.12em; color:#dccbe9; text-align:center; }
#draftGrade .rank { font:italic 900 30px Impact,sans-serif; letter-spacing:.08em; }
#draftGrade .rankS { color:#fff35c; text-shadow:0 0 18px #fff35c88, 2px 2px #7a5c00; }
#draftGrade .rankA { color:#50f6ff; text-shadow:0 0 18px #50f6ff88, 2px 2px #0a4a5c; }
#draftGrade .rankB { color:#ff4fd8; text-shadow:0 0 18px #ff4fd888, 2px 2px #5c1048; }
#draftGrade .rankC { color:#9a8aa8; text-shadow:2px 2px #2a2033; }
#draftGrade .tags { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
#draftGrade .tags em { font:900 10px Arial,sans-serif; font-style:normal; letter-spacing:.14em; color:#7dffb0; border:1px solid #7dffb066; padding:3px 8px; }
#draftPicks { margin:0 0 14px; font:900 13px Arial,sans-serif; letter-spacing:.22em; color:var(--cyan); text-shadow:0 0 12px #50f6ff88; }
#draftCards { display:flex; gap:14px; flex-wrap:wrap; justify-content:center; max-width:900px; }
.upcard { display:flex; flex-direction:column; align-items:center; gap:8px; width:min(240px,86vw); padding:26px 18px; background:linear-gradient(135deg,#17072d,#090414); border:1px solid #ff4fd866; box-shadow:6px 6px 0 #50f6ff55; cursor:pointer; color:white; text-align:center; }
.upcard.claimed { opacity:.42; }
.upcard .claimedTag { font:900 10px Arial,sans-serif; letter-spacing:.14em; color:#7dffb0; }
.upcard.rare { border-color:#fff35c; box-shadow:6px 6px 0 #fff35c88, 0 0 24px #fff35c44; }
.upcard .upicon { font-size:38px; filter:drop-shadow(0 0 10px currentColor); }
.upcard b { font:900 13px Arial,sans-serif; letter-spacing:.1em; }
.upcard i { font:12px 'Courier New',monospace; color:#dccbe9; font-style:normal; }
.upcard .upkey { font:700 10px 'Courier New',monospace; color:var(--cyan); }

/* run over / pause */
#runOver, #pauseMenu { position:fixed; z-index:12; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; gap:12px; background:#0d0214e6; text-align:center; padding:20px; overflow-y:auto; overscroll-behavior:contain; }
#runOver strong, #pauseMenu strong { color:var(--pink); font:italic 52px Impact,sans-serif; letter-spacing:.05em; text-shadow:4px 4px 0 #50f6ff55; }
#runStats { font:13px 'Courier New',monospace; color:#e6ccec; line-height:2; margin-bottom:8px; }
#runStats b { color:var(--cyan); }
#retryBtn, #resumeBtn { font-size:14px; }
#menuBtn, #quitBtn { width:min(240px,70vw); }

@media (hover:none), (pointer:coarse) {
  #soloStats { top:max(12px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right)); }
  #soloXpWrap { width:120px; }
  /* stick zones cover the bottom ~320px — keep the pause button tappable up top */
  #soloPause { top:calc(96px + env(safe-area-inset-top)); bottom:auto; right:max(12px,env(safe-area-inset-right)); }
  #draftCards { flex-direction:column; align-items:stretch; }
  .upcard { width:min(420px,92vw); flex-direction:row; text-align:left; padding:16px; }
  .upcard .upicon { font-size:30px; }
  #genPanel .gen-btns button { font-size:9px; }
}
@media (max-height:620px) {
  #solo { margin-top:8px; padding:10px; }
}

/* ============ NEON NULL v1.4.0: DEMON HORDE ============ */
#horde { width:100%; margin-top:10px; font-size:13px; background:linear-gradient(90deg,#ff335e,#ff8650); box-shadow:5px 5px 0 var(--pink); }
#hordeHud { position:fixed; inset:0; z-index:5; pointer-events:none; font-family:Arial,sans-serif; }
#hordeStats { position:absolute; top:25px; right:25px; text-align:right; font:700 11px 'Courier New',monospace; color:#e6ccec; }
#hordeKills { color:var(--pink); letter-spacing:.12em; text-shadow:0 0 10px var(--pink); }
#hordeXpWrap { width:170px; height:8px; margin:8px 0 8px auto; border:1px solid #fff8; background:#090314; }
#hordeXpFill { display:block; height:100%; width:0%; background:linear-gradient(90deg,#ff335e,#ff8650); box-shadow:0 0 10px #ff335e; transition:width .2s; }
#hordePause { pointer-events:auto; position:absolute; right:25px; bottom:25px; padding:10px 14px; font-size:12px; box-shadow:3px 3px 0 var(--cyan); }
#hordeAim { pointer-events:auto; position:absolute; right:25px; bottom:82px; padding:10px 14px; font-size:11px; box-shadow:3px 3px 0 var(--pink); background:linear-gradient(90deg,var(--cyan),#9df3ff); }
#hordeAim.off { filter:grayscale(.85) brightness(.65); }
#hordeOver, #hordePauseMenu { position:fixed; z-index:12; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; gap:12px; background:#0d0214e6; text-align:center; padding:20px; overflow-y:auto; overscroll-behavior:contain; }
#hordeOver strong, #hordePauseMenu strong { color:#ff335e; font:italic 52px Impact,sans-serif; letter-spacing:.05em; text-shadow:4px 4px 0 #50f6ff55; }
#hordeStats2 { font:13px 'Courier New',monospace; color:#e6ccec; line-height:2; margin-bottom:8px; }
#hordeStats2 b { color:var(--cyan); }
#hordeRetry, #hordeResume { font-size:14px; }
#hordeMenu, #hordeQuit { width:min(240px,70vw); }
@media (hover:none), (pointer:coarse) {
  #hordeStats { top:max(12px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right)); }
  #hordeXpWrap { width:120px; }
  /* stick zones cover the bottom ~320px — keep buttons tappable up top */
  #hordePause { top:calc(96px + env(safe-area-inset-top)); bottom:auto; right:max(12px,env(safe-area-inset-right)); }
  #hordeAim { top:calc(146px + env(safe-area-inset-top)); bottom:auto; right:max(12px,env(safe-area-inset-right)); }
}
@media (max-height:620px) {
  #horde { margin-top:8px; padding:10px; }
}

/* ============ NEON NULL v1.5.0: META EXPANSION ============ */
/* duel */
#duelHud { margin:10px 0; text-align:center; }
#duelScore { font:900 34px 'Courier New',monospace; color:#fff; }
#duelTarget { font:700 11px Arial,sans-serif; letter-spacing:.2em; color:var(--cyan); }
#countdown { position:fixed; top:38%; left:0; right:0; text-align:center; z-index:60;
  font:900 84px 'Courier New',monospace; color:var(--cyan); text-shadow:0 0 30px var(--cyan); pointer-events:none; }
#duelOver { position:fixed; inset:0; z-index:60; display:flex; flex-direction:column; gap:14px;
  align-items:center; justify-content:center; justify-content:safe center; background:#0a0318dd; padding:24px; overflow-y:auto; overscroll-behavior:contain; }
#duelOver strong { font:900 56px 'Courier New',monospace; letter-spacing:.1em; }
#duelOver .eyebrow { margin:0; }
#duelOver button { width:min(320px,80vw); }
/* v1.5.2 online pause */
#onlinePauseBtn { pointer-events:auto; position:absolute; bottom:calc(64px + env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); padding:9px 15px; font-size:14px; box-shadow:3px 3px 0 var(--pink); z-index:15; }
#onlinePause { position:fixed; inset:0; z-index:70; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; gap:12px; background:#0d0214e6; text-align:center; padding:20px; overflow-y:auto; overscroll-behavior:contain; }
#onlinePause strong { font:italic 44px Impact,sans-serif; letter-spacing:.05em; color:#fff; text-shadow:4px 4px 0 #50f6ff55; }
#onlinePause .eyebrow { margin:0; }
#onlinePause .micro { max-width:340px; }
#onlinePause button { width:min(320px,80vw); }
/* v1.6.0 options */
#optPanel { position:fixed; inset:0; z-index:80; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; gap:10px; background:#0d0214f2; text-align:center; padding:20px; overflow-y:auto; overscroll-behavior:contain; }
#optPanel > strong { font:italic 34px Impact,sans-serif; letter-spacing:.05em; color:#fff; text-shadow:3px 3px 0 #9026bd; }
#optPanel .eyebrow { margin:0; }
.opt-row { display:flex; align-items:center; justify-content:space-between; gap:16px; width:min(420px,92vw); padding:10px 14px; border:1px solid #ff4fd855; background:#12041fcc; text-align:left; }
.opt-row b { font:700 12px Arial,sans-serif; letter-spacing:.14em; color:#fff; }
.opt-row .micro { margin:4px 0 0; text-align:left; }
.opt-row.danger { border-color:#ff335e88; }
.nuke-warn { color:#ff8a9a; max-width:min(420px,92vw); visibility:hidden; min-height:2.4em; }
.nuke-warn.show { visibility:visible; }
#optReset { touch-action:none; position:relative; overflow:hidden; min-width:176px; }
#optReset.arming::after { content:""; position:absolute; inset:0; background:#ff335e99; transform:scaleX(var(--hold,0)); transform-origin:left center; pointer-events:none; }
.opt-toggle { min-width:76px; }
.opt-toggle.off { filter:grayscale(.9) brightness(.7); }
#optVol { width:130px; accent-color:#ff4fd8; }
#optClose { width:min(420px,92vw); }
/* v5.12.2: menus are rock solid — no horizontal drag, vertical scroll preserved */
html, body { overflow-x:hidden; }
#draft, #runOver, #pauseMenu, #hordeOver, #hordePauseMenu, #onlinePause, #optPanel, #duelOver { overflow-x:hidden; }
/* arsenal */
#arsenalPanel { max-height:92vh; overflow-y:auto; }
#salvBal { color:#fff35c; }
.wcard, .mcard { display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  background:#140826; border:1px solid #ff4fd833; border-radius:10px; padding:12px; margin:8px 0; }
.wcard.equipped { border-color:var(--cyan); box-shadow:0 0 12px #50f6ff44; }
.mcard.slotted { border-color:#fff35c; box-shadow:0 0 12px #fff35c44; }
.wicon { font-size:28px; line-height:1; }
.wicon.big { font-size:52px; }
.wname { flex:1; font:700 14px 'Courier New',monospace; color:#fff; }
.wname i { display:block; font:400 11px Arial,sans-serif; color:#806d91; margin-top:3px; }
.wstate { font:700 11px Arial,sans-serif; color:var(--cyan); letter-spacing:.08em; }
.whead { display:flex; gap:14px; align-items:center; margin:10px 0 4px; }
.whead h3 { margin:0; font:900 20px 'Courier New',monospace; color:#fff; }
.lore { margin:4px 0 0; font:italic 12px Arial,sans-serif; color:#b9a6cc; }
.stat-row { display:flex; align-items:center; gap:10px; margin:6px 0; font:700 11px Arial,sans-serif; color:#806d91; }
.stat-row span { width:44px; }
.stat-bar { flex:1; height:8px; background:#26071f; border-radius:4px; overflow:hidden; }
.stat-bar i { display:block; height:100%; background:linear-gradient(90deg,#ff4fd8,#50f6ff); }
.slotrow { display:flex; gap:8px; }
.slotbtn { flex:1; background:#140826; border:1px solid #50f6ff55; border-radius:10px; padding:10px 6px;
  color:#fff; font:700 11px Arial,sans-serif; }
.slotbtn span { display:block; font-size:9px; letter-spacing:.15em; color:#806d91; margin-bottom:6px; }
.slotbtn b { font-size:11px; }
#wAction { width:100%; margin-top:14px; }
#wAction.buy { background:linear-gradient(90deg,#b8860b,#ffd700); color:#1a0b00; }
#wTint { width:100%; height:44px; background:#140826; border:1px solid #50f6ff55; border-radius:10px; }
#modPicker .eyebrow { margin:14px 0 8px; }
/* changelog */
#clBadge { background:#ff335e; color:#fff; font-size:9px; padding:2px 8px; border-radius:10px; letter-spacing:.1em; }
.cl-scroll { max-height:60vh; overflow-y:auto; margin:8px 0; }
.cl-entry { border-left:3px solid var(--cyan); padding:6px 12px; margin:0 0 14px; }
.cl-entry h4 { margin:0 0 6px; font:900 15px 'Courier New',monospace; color:#fff; }
.cl-entry h4 span { font:700 11px Arial,sans-serif; color:#806d91; }
.cl-entry ul { margin:0; padding-left:18px; color:#cbb9df; font:13px/1.7 Arial,sans-serif; }
#arsenalSalv { color:#fff35c; }
/* v5.7.0: controller indicator */
#padBadge { position:fixed; top:calc(10px + env(safe-area-inset-top)); right:12px; font-size:22px;
  background:#0a1428cc; border:1px solid #50f6ff88; border-radius:10px; padding:6px 9px; z-index:60; }
/* v5.8.0: build chip + quest board + sass pass + music */
/* build number on the lobby + pause menus */
.build-chip { font:700 11px 'Courier New',monospace; letter-spacing:.18em; color:#806d91;
  border:1px solid #50f6ff33; border-radius:20px; padding:5px 14px; display:inline-block; margin:10px 0 0; }
.buildline { opacity:.55; letter-spacing:.14em; font-size:10px; margin-top:12px; }
.mode-desc { font:400 11px Arial,sans-serif; color:#806d91; margin:2px 0 10px; max-width:min(420px,92vw); }
/* quest board */
#questList { max-height:56vh; overflow-y:auto; margin:8px 0; text-align:left; }
.q-scroll .eyebrow { margin:12px 0 6px; }
.qrow { border:1px solid #50f6ff33; border-radius:10px; padding:10px 12px; margin:0 0 10px; background:#14082688; }
.qrow.done { border-color:#7dffb055; }
.qhead { display:flex; justify-content:space-between; align-items:baseline; }
.qhead b { font:900 13px 'Courier New',monospace; color:#fff; letter-spacing:.06em; }
.qhead span { font:700 11px Arial,sans-serif; color:#50f6ff; }
.qrow.done .qhead span { color:#7dffb0; }
.qbar { height:8px; border-radius:6px; background:#0a0518; border:1px solid #50f6ff33; overflow:hidden; margin:6px 0; }
.qbar i { display:block; height:100%; background:linear-gradient(90deg,#ff4fd8,#50f6ff); }
.qreward { color:#fff35c; }
/* toasts: sass lines + quest completions */
#toast, #questToast { position:fixed; left:50%; bottom:calc(96px + env(safe-area-inset-bottom)); transform:translateX(-50%) translateY(20px);
  max-width:min(480px,92vw); z-index:90; text-align:center; padding:12px 18px; border-radius:12px;
  background:#0d061dF2; border:1px solid #ff4fd888; color:#fff; font:700 13px Arial,sans-serif;
  opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; }
#toast.show, #questToast.show { opacity:1; transform:translateX(-50%) translateY(0); }
#questToast { border-color:#fff35c88; }
#questToast b { display:block; color:#fff35c; letter-spacing:.12em; font-size:12px; margin-bottom:4px; }
#questToast span { display:block; color:#cbb9df; font-style:italic; margin-bottom:4px; }
#questToast em { font-style:normal; color:#7dffb0; font-size:12px; }
/* v5.12.2: level-start variety banner + objective chip */
#levelBanner { position:fixed; left:50%; top:32%; transform:translate(-50%,-50%); z-index:96;
  display:flex; flex-direction:column; align-items:center; gap:6px; text-align:center;
  pointer-events:none; padding:18px 30px; max-width:min(560px,92vw);
  background:#060210d9; border:2px solid #50f6ff; border-radius:14px;
  box-shadow:0 0 34px #50f6ff66, inset 0 0 24px #d044ff22; }
#levelBanner:not(.hidden) { animation:bannerPop .35s ease-out; }
#levelBanner strong { font:900 30px 'Courier New',monospace; color:#fff; letter-spacing:.06em;
  text-shadow:0 0 18px #ff4fd8; }
#levelBanner .btheme { font:700 13px 'Courier New',monospace; color:#8be9ff; letter-spacing:.28em; }
#levelBanner .bmut { font:900 20px 'Courier New',monospace; color:#fff35c; letter-spacing:.08em;
  text-shadow:0 0 14px #fff35c88; margin-top:4px; }
#levelBanner .bdesc { font:400 13px 'Courier New',monospace; color:#cbb9df; font-style:italic; }
#levelBanner .bevent { font:900 16px 'Courier New',monospace; color:#ff5c7a; letter-spacing:.06em;
  text-shadow:0 0 12px #ff335e; margin-top:4px; }
#levelBanner .bobj { font:700 13px 'Courier New',monospace; color:#7dffb0; letter-spacing:.04em; }
@keyframes bannerPop { from { transform:translate(-50%,-50%) scale(.82); opacity:0; }
  to { transform:translate(-50%,-50%) scale(1); opacity:1; } }
#soloObjective { font:700 12px 'Courier New',monospace; color:#7dffb0; letter-spacing:.05em;
  text-shadow:0 0 8px #7dffb066; }
#soloObjective:empty { display:none; }
.objdone { color:#7dffb0; font-weight:700; }
/* first-run NULL RUN hint */
#soloHint { position:fixed; inset:0; z-index:95; display:flex; flex-direction:column; justify-content:center; align-items:center;
  background:#060210f2; padding:24px; text-align:center; gap:10px; }
#soloHint strong { font:900 26px 'Courier New',monospace; color:#fff; letter-spacing:.04em; }
#soloHint .micro { max-width:min(440px,92vw); color:#cbb9df; }
#soloHintTip { color:#fff35c !important; font-style:italic; }
/* respec button */
.respec { border-color:#fff35c88; color:#fff35c; }
/* hit flash + fps */
#hitFlash { position:fixed; inset:0; z-index:70; pointer-events:none; opacity:0;
  background:radial-gradient(ellipse at center, transparent 40%, #ff335e88 100%); transition:opacity .3s; }
#hitFlash.show { opacity:1; transition:opacity .05s; }
#fpsCounter { position:fixed; bottom:calc(10px + env(safe-area-inset-bottom)); right:12px; z-index:60;
  font:700 12px 'Courier New',monospace; color:#7dffb0; background:#0a1428cc;
  border:1px solid #7dffb055; border-radius:8px; padding:4px 8px; }
/* google + apple music rows */
#optGoogle:disabled { opacity:.45; cursor:not-allowed; }
.applemusic { text-decoration:none; display:block; text-align:center; margin-top:10px; }
/* v5.8.0: victory sass on the draft grade card */
.victory-quip { display:block; margin-top:6px; color:#fff35c; font-style:italic; font-size:13px; }
/* v5.9.0 "Bouncer's List": in-game admin panel */
#adminBody { display:flex; flex-direction:column; gap:8px; align-items:center; width:min(420px,92vw); }
#adminPlayerList { display:flex; flex-direction:column; gap:8px; width:min(420px,92vw); }
#adminTokenInput { flex:1; min-width:0; background:#0a0114; border:1px solid #ff4fd855; color:#fff; padding:10px 12px; font:14px monospace; letter-spacing:.05em; }
#adminTokenInput::placeholder { color:#8a6a8f; }
.admin-player { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; border:1px solid #ff4fd855; background:#12041fcc; text-align:left; }
.admin-player .who b { color:#fff; font:700 13px Arial,sans-serif; letter-spacing:.08em; }
.admin-player .who span { color:#ff9de2; font:11px monospace; }
.admin-player .ops { display:flex; gap:6px; flex-shrink:0; }
.admin-player .ops .ghost { padding:8px 10px; font-size:11px; }
.admin-ban { border-color:#ff335e88 !important; }
/* v5.10.0: sticker picker */
.gen-btns.stickers button { flex:0 0 44px; height:40px; font-size:22px; padding:0; }

/* v5.12.0 "Social": chat channels + friends */
.chat-tabs { display: flex; gap: 8px; margin: 8px 0; }
.chat-tab {
  flex: 1; padding: 10px; font-size: 13px; letter-spacing: 1px;
  background: rgba(0,255,255,.06); border: 1px solid rgba(0,255,255,.25);
  color: var(--neon-cyan, #0ff); border-radius: 6px; cursor: pointer; position: relative;
}
.chat-tab.active { background: rgba(0,255,255,.18); border-color: var(--neon-cyan, #0ff); font-weight: bold; }
/* v5.12.1: ghost socket connection dot — a dead socket is never a surprise */
.chat-conn { width:8px; height:8px; border-radius:50%; background:#f66; align-self:center; margin-left:2px; flex:none; }
.chat-conn.on { background:#3f6; box-shadow:0 0 8px #3f6a; }
.chat-conn.connecting { background:#fc3; animation:connBlink 1s ease-in-out infinite; }
@keyframes connBlink { 50% { opacity:.25; } }
.chat-log {
  height: min(38vh, 320px); overflow-y: auto; -webkit-overflow-scrolling: touch;
  background: rgba(0,0,0,.45); border: 1px solid rgba(255,0,255,.2); border-radius: 8px;
  padding: 8px; margin-bottom: 8px; font-size: 13px;
}
.chat-log.sz-s { font-size: 11px; }
.chat-log.sz-l { font-size: 16px; }
.chat-msg { display: flex; gap: 6px; align-items: baseline; padding: 4px 2px; border-bottom: 1px solid rgba(255,255,255,.05); flex-wrap: wrap; }
.chat-msg b { color: var(--neon-cyan, #0ff); font-size: .85em; white-space: nowrap; }
.chat-msg.me b { color: var(--neon-pink, #f0f); }
.chat-msg span { flex: 1 1 auto; word-break: break-word; }
.chat-ops { display: flex; gap: 4px; margin-left: auto; }
.chat-ops button {
  background: none; border: none; font-size: 14px; cursor: pointer; padding: 6px;
  opacity: .7; min-width: 32px; min-height: 32px; /* iPhone-safe touch targets */
}
.chat-ops button:active { opacity: 1; transform: scale(1.15); }
.chat-ops button.mini { font-size: 11px; border: 1px solid rgba(0,255,255,.35); border-radius: 4px; color: var(--neon-cyan, #0ff); padding: 6px 8px; }
.chat-ops button.mini.go { border-color: #0f6; color: #0f6; }
.chat-sys { color: #888; font-style: italic; padding: 4px 2px; }
.chat-row { display: flex; gap: 8px; }
.chat-row input { flex: 1; min-width: 0; }
.un-badge {
  display: inline-block; min-width: 18px; height: 18px; line-height: 18px; text-align: center;
  background: #f0f; color: #000; border-radius: 9px; font-size: 11px; font-weight: bold; padding: 0 4px;
}
button.has-unread { border-color: #f0f !important; box-shadow: 0 0 8px rgba(255,0,255,.5); }
/* v5.12.1: persistent admin-mode badge on the lobby */
.admin-badge {
  display: inline-block; margin-left: 8px; padding: 1px 8px;
  border: 1px solid #ffb14f; border-radius: 8px;
  color: #ffb14f; font-size: 11px; font-weight: bold; letter-spacing: 1px;
  text-shadow: 0 0 6px rgba(255,177,79,.6);
}
#hudChat {
  position: absolute; top: 52px; right: 12px; width: 44px; height: 44px; border-radius: 50%;
  background: rgba(0,0,0,.55); border: 1px solid rgba(0,255,255,.4); font-size: 20px; cursor: pointer; z-index: 5;
}
#hudChat .un-badge { position: absolute; top: -4px; right: -4px; }
.friend-list { max-height: min(34vh, 280px); overflow-y: auto; -webkit-overflow-scrolling: touch; margin: 8px 0; }
.friend-row {
  display: flex; gap: 8px; align-items: center; padding: 8px 4px;
  border-bottom: 1px solid rgba(255,255,255,.06); flex-wrap: wrap;
}
.friend-row.off { opacity: .55; }
.friend-row.req { background: rgba(255,0,255,.07); border-radius: 6px; }
.fdot { width: 10px; height: 10px; border-radius: 50%; background: #555; flex: none; }
.fdot.on { background: #0f6; box-shadow: 0 0 6px #0f6; }
.invite-banner {
  display: flex; gap: 8px; align-items: center; justify-content: space-between;
  background: rgba(0,255,0,.08); border: 1px solid rgba(0,255,0,.35); border-radius: 8px;
  padding: 10px; margin-bottom: 8px; font-size: 13px;
}
.invite-banner button { padding: 8px 16px; font-weight: bold; }

/* v5.12.0: XP bar (lobby, pause menus, game-over/draft) + pilot profile */
.xpbar { display:flex; align-items:center; gap:8px; margin:8px 0; font:700 10px 'Courier New',monospace; letter-spacing:.1em; color:var(--cyan); }
.xpbar .xp-lvl { color:var(--pink); white-space:nowrap; text-shadow:0 0 8px #ff4fd866; }
.xpbar .xp-track { flex:1; height:8px; border-radius:6px; background:#0a0518; border:1px solid #50f6ff33; overflow:hidden; }
.xpbar .xp-track i { display:block; height:100%; background:linear-gradient(90deg,#ff4fd8,#50f6ff); box-shadow:0 0 8px #ff4fd866; }
.xpbar .xp-num { opacity:.85; white-space:nowrap; }
.xpbar.big { font-size:12px; }
.xpbar.big .xp-track { height:12px; }
.lobby-xp { margin:2px 0 10px; }
#profName { margin:0 0 4px; font-size:28px; letter-spacing:.06em; color:var(--cream); text-shadow:2px 2px #5c1874; }
.prof-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin:10px 0 14px; }
.prof-stat { text-align:center; border:1px solid #50f6ff33; border-radius:8px; padding:10px 4px; background:#14082688; }
.prof-stat b { display:block; font-size:20px; color:var(--cream); }
.prof-stat span { font:700 9px Arial,sans-serif; letter-spacing:.16em; color:var(--cyan); }
.prof-list { display:flex; flex-direction:column; gap:6px; margin:0 0 12px; max-height:30vh; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.prof-row { border:1px solid #50f6ff33; border-radius:8px; padding:8px 10px; background:#14082688; cursor:pointer; }
.prof-row.locked { border-style:dashed; opacity:.8; }
.prof-row b { letter-spacing:.08em; }
.prof-row .micro { margin:4px 0; text-align:left; }
.prof-row .cond { color:#ffb35c; font:700 10px Arial,sans-serif; }
.prof-row .unlocked { color:#7dffb0; font:700 10px Arial,sans-serif; font-style:normal; }
.qunlock { color:#ffd35c !important; cursor:pointer; font-weight:700; }
.qunlock:active { opacity:.6; }

/* v5.13 "Armory" — the armory, loadout kits, fortify */
/* the armory doors */
.door { display:flex; flex-direction:column; align-items:flex-start; gap:6px; width:100%; margin:10px 0; padding:16px 18px; text-align:left; }
.door b { font:900 15px Arial,sans-serif; letter-spacing:.12em; }
.door span { font:12px 'Courier New',monospace; color:#dccbe9; }
.door em { font-style:normal; color:var(--cyan); font-weight:700; }
/* kit cards */
#kitList { display:flex; flex-direction:column; gap:10px; margin:14px 0; }
.kcard { display:flex; flex-direction:column; align-items:flex-start; gap:6px; width:100%; padding:14px 16px; text-align:left; background:#14082688; border:1px solid #ff4fd855; color:#fff; cursor:pointer; }
.kcard b { font:900 14px Arial,sans-serif; letter-spacing:.1em; }
.kcard span { font:12px 'Courier New',monospace; color:#dccbe9; }
.kcard .klore { font-style:italic; color:#9a8aa8; font-size:11px; }
.kcard em { font:900 10px Arial,sans-serif; font-style:normal; letter-spacing:.14em; color:#50f6ff; align-self:flex-end; }
.kcard.sel { border-color:#fff35c; box-shadow:0 0 14px #fff35c55; }
.kcard.sel em { color:#fff35c; }
.kcard.locked { opacity:.55; }
.kcard.locked em { color:#9a8aa8; }
/* fortify overlay */
#fortify { position:fixed; z-index:12; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; justify-content:safe center; gap:10px; background:#05020cd9; padding:20px; overflow-y:auto; overscroll-behavior:contain; text-align:center; }
#fortify .eyebrow { margin-bottom:2px; }
.fort-timer { width:min(420px,84vw); height:10px; border:1px solid #50f6ff66; background:#0a1428; }
.fort-timer i { display:block; height:100%; width:100%; background:linear-gradient(90deg,#50f6ff,#ff4fd8); transition:width .2s linear; }
.fort-row { margin:0; }
#fortPads { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; width:min(420px,92vw); }
.fortpad { display:flex; flex-direction:column; gap:4px; align-items:center; padding:12px 6px; background:#14082688; border:1px dashed #50f6ff88; color:#fff; cursor:pointer; }
.fortpad b { font:900 12px Arial,sans-serif; letter-spacing:.08em; }
.fortpad span { font:10px 'Courier New',monospace; color:#dccbe9; }
.fortpad.used { border-style:solid; border-color:#fff35c; }
.fortpad.sel { box-shadow:0 0 14px #50f6ff88; }
#fortPicker { display:flex; flex-direction:column; gap:8px; width:min(420px,92vw); margin-top:4px; }
#fortPicker .eyebrow { margin:4px 0; }
.fstat { color:#fff35c !important; font-weight:700; }
#fortStart { margin-top:4px; }

/* v5.14: save transfer (OPTIONS) */
#optPanel textarea { width:100%; min-height:84px; margin-top:8px; background:#0a0618; color:#9fe8ff;
  border:1px solid #50f6ff44; border-radius:8px; padding:10px;
  font:11px/1.5 'Courier New',monospace; word-break:break-all; resize:vertical; }
#exportBox, #importBox { margin-top:2px; }
#importStatus { color:#ff9edc; }

/* v5.14: run-start difficulty pickers (lobby) — plain segmented control */
.diff-row { display:flex; align-items:center; gap:8px; margin:6px 0 10px; }
.diff-row .diff-label { font-size:10px; letter-spacing:2px; color:#8a7fb8; }
.diff-row button { flex:1; padding:8px 4px; font-size:12px; letter-spacing:1px;
  background:#141024; color:#b9aee0; border:1px solid #50f6ff33; border-radius:8px; }
.diff-row button.on { background:#2a1650; color:#fff; border-color:#ff4fd8; box-shadow:0 0 10px #ff4fd855; }
/* v5.14: difficulty chip on the run HUDs */
.difftag { font-size:10px; letter-spacing:2px; padding:2px 8px; border-radius:20px; border:1px solid #50f6ff55; color:#9fe8ff; }
.difftag.diff-rookie { color:#7dffcf; border-color:#7dffcf66; }
.difftag.diff-nightmare { color:#ff8a9a; border-color:#ff335e88; }

/* v5.14: QUIT TO MENU inline confirm — NULL RUN armory between-levels + horde fortify */
#fortQuit { margin-top:4px; }
.quit-confirm:not(.hidden) { display:flex; align-items:center; justify-content:center; gap:10px; margin-top:14px; }
#fortify .quit-confirm:not(.hidden) { margin-top:4px; }
.quit-confirm span { color:#ff9edc; font:900 12px Arial,sans-serif; letter-spacing:.12em; }
.quit-confirm button { padding:10px 18px; }

/* v5.14 "Identity": sign-in slot, leaderboard, profile account */
#gisWrap { width:min(420px,92vw); margin:2px auto; display:flex; justify-content:center; }
#gisWrap .ghost { width:100%; }
#gisBtn { display:flex; justify-content:center; }
.board-list { width:min(420px,92vw); max-height:46dvh; overflow-y:auto; display:flex; flex-direction:column; gap:6px; margin:8px 0; }
.board-row { display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid #50f6ff33; border-radius:8px; background:#0d0a20aa; }
.board-rank { color:#fff35c; font-weight:800; min-width:2ch; text-align:right; }
.board-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#eaf6ff; }
.board-score { color:#50f6ff; font-weight:700; }
#profAccount { margin:6px 0; }
#profAccount a { color:#50f6ff; }
