:root{
    --bg:#05070e;
    --ink:#eef3ff; --muted:#8590ad; --faint:#5b6480;
    --glass:rgba(255,255,255,.045); --glass2:rgba(255,255,255,.025);
    --line:rgba(255,255,255,.09); --line2:rgba(255,255,255,.06);
    --brand:#0E5DFF; --brand2:#38e1ff; --brandg:rgba(14,93,255,.45);
    --gold:#ffd24d; --good:#2fe39b; --bad:#ff4d6d;
    --r:20px;
    --disp:'Space Grotesk','Inter',system-ui,sans-serif;
    --body:'Inter',system-ui,-apple-system,sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  body{
    font-family:var(--body); color:var(--ink); min-height:100vh; overflow-x:hidden;
    background:
      radial-gradient(900px 600px at 85% -8%, rgba(14,93,255,.22), transparent 60%),
      radial-gradient(700px 520px at -10% 105%, rgba(56,225,255,.10), transparent 55%),
      var(--bg);
    -webkit-font-smoothing:antialiased;
  }
  body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.4;
    background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);
    background-size:48px 48px;mask:radial-gradient(circle at 50% 30%,#000,transparent 80%)}
  button{font-family:inherit;cursor:pointer;border:none}
  .hidden{display:none!important}

  .card{background:var(--glass);backdrop-filter:blur(22px) saturate(125%);-webkit-backdrop-filter:blur(22px) saturate(125%);
    border:1px solid var(--line);border-radius:var(--r);padding:22px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 24px 60px rgba(0,0,0,.55)}
  .card h2{font-family:var(--disp);font-size:11.5px;letter-spacing:2.2px;text-transform:uppercase;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:10px;margin-bottom:18px}
  .card h2:has(+ .card-sub){margin-bottom:8px}
  .card-sub{color:var(--muted);font-size:13px;line-height:1.5;margin-bottom:18px;max-width:62ch}
  .hb{width:16px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--brand),var(--brand2));display:inline-block;box-shadow:0 0 8px var(--brandg)}
  .hi{width:17px;height:17px;flex-shrink:0;filter:drop-shadow(0 0 5px rgba(14,93,255,.5))}
  .num{font-family:var(--disp);font-variant-numeric:tabular-nums}

  #signin{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
  .signin-card{background:var(--glass);backdrop-filter:blur(26px) saturate(130%);-webkit-backdrop-filter:blur(26px) saturate(130%);
    border:1px solid var(--line);border-radius:30px;padding:46px 40px;max-width:430px;width:100%;text-align:center;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 40px 90px rgba(0,0,0,.6);animation:pop .55s cubic-bezier(.2,.9,.3,1)}
  .mark{margin:0 auto}
  .signin-card h1{font-family:var(--disp);font-size:30px;font-weight:700;margin:18px 0 8px;letter-spacing:-.5px}
  .signin-card .tag{color:var(--muted);font-size:14.5px;margin-bottom:30px;line-height:1.55}
  .gbtn{width:100%;background:#fff;color:#1f2430;font-weight:600;font-size:15px;padding:14px;border-radius:13px;
    display:flex;align-items:center;justify-content:center;gap:12px;transition:transform .18s,box-shadow .18s}
  .gbtn:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(14,93,255,.45)}
  .gicon{width:20px;height:20px}
  .signin-form{display:flex;flex-direction:column;gap:11px}
  .signin-form input{width:100%;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:14px 16px;border-radius:13px;font-size:15px;font-family:inherit;text-align:center;transition:.16s}
  .signin-form input::placeholder{color:var(--muted)}
  .signin-form input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(14,93,255,.25);background:rgba(255,255,255,.09)}
  .signin-form .gbtn{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04122e}
  .signin-foot{margin-top:22px;color:var(--muted);font-size:12px}
  .onboard-gsi{display:flex;justify-content:center;margin-bottom:12px;min-height:44px}
  .onboard-hint{text-align:center;color:var(--muted);font-size:12.5px;margin:2px 0 4px}
  .perks-label{text-align:center;font-family:var(--disp);font-size:10.5px;letter-spacing:1.8px;text-transform:uppercase;color:var(--faint);margin:26px 0 12px}
  .av-wrap{position:relative}
  .av-menu{position:absolute;top:52px;right:0;background:var(--glass);backdrop-filter:blur(18px) saturate(130%);-webkit-backdrop-filter:blur(18px) saturate(130%);border:1px solid var(--line);border-radius:12px;padding:6px;display:none;z-index:70;box-shadow:0 16px 40px rgba(0,0,0,.55)}
  .av-menu.show{display:block}
  .avatar.has-photo{padding:0;overflow:hidden}
  .avatar img{width:100%;height:100%;object-fit:cover;display:block}
  .av-head{padding:9px 12px 11px;border-bottom:1px solid var(--line2);margin-bottom:6px;max-width:220px}
  .av-head .nm{font-weight:600;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .av-head .em{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
  .av-head:empty{display:none}
  .av-menu button{display:block;width:100%;white-space:nowrap;background:none;border:none;color:var(--ink);font-family:inherit;font-size:13px;font-weight:500;padding:9px 14px;border-radius:8px;text-align:left;cursor:pointer;transition:.14s}
  .av-menu button:hover{background:rgba(255,77,109,.14);color:#ffc6d2}
  .perks{display:flex;gap:10px;justify-content:center;margin-top:28px;flex-wrap:wrap}
  .perk{flex:1;min-width:70px;background:var(--glass2);border:1px solid var(--line2);border-radius:13px;padding:12px 6px;color:var(--muted);font-size:10.5px;font-weight:500;letter-spacing:.3px}
  .perk .e{font-size:19px;display:block;margin-bottom:5px;filter:saturate(.85)}

  #app{max-width:1100px;margin:0 auto;padding:22px 22px 70px}
  .topbar{display:flex;align-items:center;gap:14px;margin-bottom:24px;flex-wrap:wrap}
  .brandmark{display:flex;align-items:center;gap:11px;font-family:var(--disp);font-weight:700;font-size:19px;letter-spacing:-.3px}
  .spacer{flex:1}
  .chip{background:var(--glass);border:1px solid var(--line);border-radius:999px;padding:9px 15px;display:flex;align-items:center;gap:8px;font-weight:600;font-size:13.5px;backdrop-filter:blur(12px)}
  .chip .e{font-size:14px}
  .chip.flame{color:#ff9f6b}
  .chip.coins{color:var(--gold)}
  .chip .num{font-weight:700}
  .avatar{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:16px;color:#04122e;box-shadow:0 8px 20px var(--brandg);cursor:pointer;user-select:none}

  .levelbar{display:flex;align-items:center;gap:18px;margin-bottom:22px;padding:16px 20px}
  .lvl-badge{width:50px;height:50px;border-radius:15px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;flex-shrink:0;color:#04122e;box-shadow:0 10px 26px var(--brandg)}
  .lvl-badge small{font-size:8.5px;font-weight:700;letter-spacing:1px;opacity:.8}
  .lvl-badge b{font-family:var(--disp);font-size:20px}
  .xpwrap{flex:1}
  .xprow{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--muted);margin-bottom:8px}
  .xprow .ttl{font-family:var(--disp);color:var(--ink);font-weight:600;letter-spacing:.3px}
  .track{height:8px;background:rgba(255,255,255,.07);border-radius:999px;overflow:hidden;border:1px solid var(--line2)}
  .track .fill{height:100%;border-radius:999px;width:0;transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
  .xpfill{background:linear-gradient(90deg,var(--brand),var(--brand2));box-shadow:0 0 14px var(--brandg)}

  .grid{display:grid;grid-template-columns:1.32fr 1fr;gap:18px}
  @media(max-width:860px){.grid{grid-template-columns:1fr}}
  .col{display:flex;flex-direction:column;gap:18px}

  .timer-display{font-family:var(--disp);font-size:54px;font-weight:600;text-align:center;letter-spacing:1px;font-variant-numeric:tabular-nums;margin:4px 0 4px}
  .timer-sub{text-align:center;color:var(--muted);font-size:12.5px;margin-bottom:18px;min-height:17px}
  .proj-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-bottom:18px}
  .proj{padding:8px 14px;border-radius:999px;background:var(--glass2);border:1px solid var(--line2);font-size:12.5px;font-weight:600;color:var(--muted);transition:.16s;display:flex;align-items:center;gap:7px}
  .proj .pd{width:7px;height:7px;border-radius:50%}
  .proj.active{color:var(--ink);border-color:transparent;background:rgba(14,93,255,.16);box-shadow:inset 0 0 0 1px var(--brand)}
  .proj:hover{color:var(--ink)}
  .clockbtn{width:100%;padding:17px;border-radius:15px;font-family:var(--disp);font-size:16px;font-weight:600;letter-spacing:1px;
    background:linear-gradient(135deg,var(--brand),#2b7bff);color:#fff;border:1px solid rgba(255,255,255,.16);
    box-shadow:0 12px 30px var(--brandg);transition:transform .16s,filter .16s}
  .clockbtn:hover{transform:translateY(-2px);filter:brightness(1.08)}
  .clockbtn.stop{background:linear-gradient(135deg,var(--bad),#ff7a4d);box-shadow:0 12px 30px rgba(255,77,109,.4)}
  .manual{margin-top:14px;text-align:center}
  .manual a{color:var(--brand2);font-size:12.5px;cursor:pointer;opacity:.85}
  .manual a:hover{opacity:1}
  .manual-form{margin-top:14px;display:none;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center}
  .manual-form.show{display:flex}
  .manual-form input,.manual-form select{background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:10px 12px;border-radius:11px;font-size:13px;font-family:inherit}
  .manual-form button{background:var(--brand);color:#fff;padding:10px 17px;border-radius:11px;font-weight:600;font-size:13px}

  /* CIVILIZATION (hex map) */
  .civ-scene{border-radius:15px;overflow:hidden;border:1px solid var(--line);position:relative;line-height:0;background:#070d1d}
  .civ-scene svg{width:100%;height:auto;display:block}
  .civ-photo{width:100%;height:184px;object-fit:cover;display:block}
  .civ-badge{position:absolute;top:10px;right:10px;background:rgba(8,13,28,.66);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(56,225,255,.4);color:#eaf3ff;font-family:var(--disp);font-size:10px;font-weight:600;letter-spacing:1.6px;padding:5px 10px;border-radius:999px;box-shadow:0 4px 14px rgba(0,0,0,.4)}
  .civ-scene::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 50px rgba(5,7,14,.55)}
  .civ-meta{display:flex;align-items:flex-end;justify-content:space-between;margin-top:14px;gap:10px}
  .civ-name{font-family:var(--disp);font-size:21px;font-weight:700;letter-spacing:-.3px}
  .civ-age{color:var(--brand2);font-size:10.5px;letter-spacing:2.5px;font-weight:600;margin-top:2px}
  .civ-hint{color:var(--muted);font-size:11.5px;text-align:right;max-width:48%;line-height:1.4}
  .civ-progwrap{margin-top:13px}
  .civfill{background:linear-gradient(90deg,var(--brand2),var(--brand));box-shadow:0 0 12px rgba(56,225,255,.4)}
  .eras{display:flex;gap:5px;margin-top:11px}
  .eseg{flex:1;text-align:center}
  .eseg .bar{height:3px;border-radius:2px;background:rgba(255,255,255,.1)}
  .eseg.done .bar{background:linear-gradient(90deg,var(--brand),var(--brand2))}
  .eseg.cur .bar{background:var(--brand2);box-shadow:0 0 9px var(--brand2)}
  .eseg .lab{font-size:7.5px;letter-spacing:.5px;color:var(--muted);margin-top:5px;font-weight:600}
  .eseg.cur .lab{color:var(--brand2)}

  .team-goal{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
  .team-goal b{font-family:var(--disp);font-size:23px;font-weight:600}
  .team-goal span{color:var(--muted);font-size:12.5px}
  .teamfill{background:linear-gradient(90deg,var(--brand),var(--gold))}
  .team-track{height:14px}
  .team-reward{margin-top:11px;font-size:12.5px;color:var(--muted)}
  .team-reward b{color:var(--gold);font-weight:600}
  .roster{margin-top:18px;display:flex;flex-direction:column;gap:11px}
  .mate{display:flex;align-items:center;gap:11px}
  .mate .av{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:12px;flex-shrink:0;color:#04122e}
  .mate .nm{font-size:13px;font-weight:500;width:74px;flex-shrink:0}
  .mate .bar{flex:1;height:7px;background:rgba(255,255,255,.07);border-radius:999px;overflow:hidden}
  .mate .barf{height:100%;border-radius:999px}
  .mate .hrs{font-family:var(--disp);font-size:11.5px;color:var(--muted);width:42px;text-align:right;flex-shrink:0}

  .log{display:flex;flex-direction:column;gap:9px;max-height:220px;overflow-y:auto}
  .entry{display:flex;align-items:center;gap:12px;background:var(--glass2);border:1px solid var(--line2);border-radius:13px;padding:11px 14px;animation:slidein .35s ease}
  .entry .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
  .entry .meta{flex:1}
  .entry .pn{font-weight:600;font-size:13px}
  .entry .pt{color:var(--muted);font-size:11px}
  .entry .du{font-family:var(--disp);font-weight:600;font-size:13.5px}
  .empty{color:var(--muted);font-size:12.5px;text-align:center;padding:18px}
  .todayTotal{margin-left:auto;font-family:var(--disp);color:var(--ink);text-transform:none;letter-spacing:0;font-size:11.5px}

  .badges{display:grid;grid-template-columns:repeat(5,1fr);gap:11px}
  @media(max-width:540px){.badges{grid-template-columns:repeat(4,1fr)}}
  .badge{text-align:center;background:var(--glass2);border:1px solid var(--line2);border-radius:15px;padding:15px 6px;transition:.25s}
  .badge.locked{opacity:.28;filter:grayscale(.6)}
  .badge .e{font-size:25px}
  .badge .bn{font-size:10.5px;font-weight:600;margin-top:7px}
  .badge .bd{font-size:9px;color:var(--muted);margin-top:2px;line-height:1.3}
  .badge.unlocked{border-color:rgba(14,93,255,.4);box-shadow:0 0 0 1px rgba(14,93,255,.35) inset, 0 0 18px rgba(14,93,255,.12)}

  .trivia-q{font-size:14.5px;font-weight:500;line-height:1.5;margin-bottom:15px}
  .trivia-opts{display:flex;flex-direction:column;gap:8px}
  .topt{text-align:left;background:var(--glass2);border:1px solid var(--line2);color:var(--ink);padding:12px 14px;border-radius:12px;font-size:13px;font-weight:500;transition:.16s;display:flex;align-items:center;gap:11px}
  .topt:hover{border-color:var(--brand);transform:translateX(3px)}
  .topt .k{width:22px;height:22px;border-radius:7px;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:11px;font-weight:600;flex-shrink:0}
  .topt.correct{background:rgba(47,227,155,.12);border-color:var(--good);color:#bdf5db}
  .topt.wrong{background:rgba(255,77,109,.12);border-color:var(--bad);color:#ffc6d2}
  .topt.dim{opacity:.4}
  .trivia-done{color:var(--muted);font-size:12px;margin-top:13px;text-align:center;line-height:1.5}
  /* ---------- daily trivia dev answer-key ---------- */
  .trivia-dev-btn{margin-left:8px;background:none;border:0;padding:2px;cursor:pointer;color:var(--muted);opacity:.45;display:inline-flex;align-items:center;transition:.16s}
  .trivia-dev-btn svg{width:15px;height:15px}
  .trivia-dev-btn:hover,.trivia-dev-btn.on{opacity:1;color:var(--brand2)}
  .trivia-dev{margin-top:14px;border:1px dashed var(--line2);border-radius:12px;padding:11px 12px;background:rgba(0,0,0,.22)}
  .tdev-nav{display:flex;align-items:center;justify-content:space-between;gap:10px}
  .tdev-btn{background:var(--glass2);border:1px solid var(--line2);color:var(--ink);padding:6px 12px;border-radius:9px;font-family:var(--disp);font-size:11px;font-weight:600;letter-spacing:1px;cursor:pointer;transition:.16s}
  .tdev-btn:hover{border-color:var(--brand);color:var(--brand2)}
  .tdev-day{flex:1;text-align:center;font-family:var(--disp);font-size:11px;letter-spacing:.5px;color:var(--gold)}
  .tdev-hint{margin-top:8px;text-align:center;font-size:10.5px;color:var(--muted)}

  .bstat{background:var(--glass2);border:1px solid var(--line2);border-radius:11px;padding:8px 13px;font-family:var(--disp);font-weight:600;font-size:14px;display:flex;gap:7px;align-items:baseline}
  .bstat small{color:var(--muted);font-weight:600;font-size:9.5px;letter-spacing:1px;font-family:var(--body)}

  /* Blast launch card (under team goal) — grows to fill the column */
  .blast-launch{flex:1;display:flex;flex-direction:column}
  .blast-launch h2{margin-bottom:16px}
  .blast-launch .bl-sub{color:var(--muted);font-size:13px;line-height:1.6;margin-bottom:20px}
  .blast-launch .bl-btn{width:100%;margin-top:auto}
  @media(max-width:860px){.blast-launch{flex:none}.blast-launch .bl-btn{margin-top:8px}}

  /* Full-screen blast overlay */
  #blastOverlay{position:fixed;inset:0;z-index:80;display:none;flex-direction:column;gap:16px;padding:22px;
    background:radial-gradient(900px 520px at 50% 122%, rgba(14,93,255,.16), transparent 60%), rgba(6,10,20,.46);
    backdrop-filter:blur(20px) saturate(125%);-webkit-backdrop-filter:blur(20px) saturate(125%);opacity:0;transition:opacity .35s}
  #blastOverlay.show{display:flex;opacity:1;animation:pop .4s ease}
  .blast-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .blast-title{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:2.4px;text-transform:uppercase}
  .blast-title .hi{width:20px;height:20px}
  .blast-top .bstat{font-size:16px;padding:9px 15px}
  .blast-exit{background:var(--glass);border:1px solid var(--line);color:var(--ink);font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:1px;padding:11px 20px;border-radius:12px;transition:.16s}
  .blast-exit.right{margin-left:auto}
  .blast-exit:hover{border-color:var(--bad);color:#ffc6d2}
  body.blast-on{overflow:hidden}
  body.blast-on #app{filter:blur(6px) brightness(.55) saturate(.9);transition:filter .35s}

  .arena{position:relative;flex:1;width:100%;border-radius:18px;overflow:hidden;border:1px solid var(--line);cursor:crosshair;isolation:isolate;
    background:radial-gradient(900px 460px at 50% 125%, rgba(14,93,255,.22), transparent 62%), linear-gradient(180deg,#08122a,#05070f 72%)}
  .arena::before{content:"";position:absolute;inset:-25%;pointer-events:none;z-index:0;
    background:radial-gradient(circle at 22% 28%, rgba(56,225,255,.16), transparent 42%),radial-gradient(circle at 78% 66%, rgba(124,92,255,.16), transparent 42%),radial-gradient(circle at 50% 108%, rgba(14,93,255,.32), transparent 55%);
    animation:arenaGlow 11s ease-in-out infinite alternate}
  .arena::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.55;
    background-image:linear-gradient(rgba(56,225,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(56,225,255,.08) 1px,transparent 1px);
    background-size:46px 46px;-webkit-mask:radial-gradient(circle at 50% 62%, #000, transparent 80%);mask:radial-gradient(circle at 50% 62%, #000, transparent 80%);animation:gridDrift 7s linear infinite}
  .arena.idle::after{display:none}
  .arena>*{position:relative;z-index:2}
  @keyframes arenaGlow{0%{transform:translate(-2%,-1%) scale(1)}100%{transform:translate(2%,1.5%) scale(1.1)}}
  @keyframes gridDrift{from{background-position:0 0,0 0}to{background-position:0 46px,0 46px}}
  .laser{position:absolute;height:3px;transform-origin:0 50%;border-radius:3px;background:linear-gradient(90deg,rgba(56,225,255,0),rgba(56,225,255,.25) 45%,#a7f0ff);box-shadow:0 0 12px #38e1ff,0 0 4px #fff;pointer-events:none;z-index:8;animation:laserfade .3s ease-out forwards}
  @keyframes laserfade{0%{opacity:1}100%{opacity:0}}
  .muzzle{position:absolute;width:20px;height:20px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff,rgba(56,225,255,.6),transparent 70%);pointer-events:none;z-index:8;animation:boom .28s ease-out forwards}
  .missring{position:absolute;width:14px;height:14px;border:2px solid rgba(180,210,255,.7);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:7;animation:ringexp .42s ease-out forwards}
  .arena.idle{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;cursor:default}
  .startblast{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04122e;font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:.5px;padding:14px 30px;border-radius:14px;box-shadow:0 12px 30px var(--brandg);transition:transform .16s,filter .16s}
  .startblast:hover{transform:translateY(-2px) scale(1.03);filter:brightness(1.08)}
  .target{position:absolute;font-size:50px;cursor:crosshair;user-select:none;line-height:1;background:none;padding:8px;z-index:3;animation:popin .16s ease;transition:transform .1s;filter:drop-shadow(0 4px 8px rgba(0,0,0,.5))}
  .target.good:hover{transform:scale(1.12)}
  .target.bomb{filter:drop-shadow(0 0 8px var(--bad))}
  .boom{position:absolute;font-size:28px;pointer-events:none;animation:boom .5s ease forwards;z-index:5}
  .ring{position:absolute;width:14px;height:14px;border:2px solid var(--brand2);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);animation:ringexp .5s ease-out forwards;z-index:4}
  .scorepop{position:absolute;font-family:var(--disp);font-weight:700;font-size:18px;pointer-events:none;animation:rise .7s ease forwards;z-index:6}
  .arena-hint{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:rgba(255,255,255,.45);font-size:11px;letter-spacing:.5px;pointer-events:none}

  #toast{position:fixed;top:24px;left:50%;transform:translateX(-50%) translateY(-150px);
    background:var(--glass);backdrop-filter:blur(24px) saturate(130%);-webkit-backdrop-filter:blur(24px) saturate(130%);
    border:1px solid rgba(56,225,255,.35);border-radius:17px;padding:15px 22px;display:flex;align-items:center;gap:14px;
    box-shadow:0 24px 60px rgba(0,0,0,.6), 0 0 26px rgba(14,93,255,.18);z-index:100;transition:transform .5s cubic-bezier(.2,1.2,.4,1);max-width:90vw}
  #toast.show{transform:translateX(-50%) translateY(0)}
  #toast .e{font-size:30px}
  #toast .t b{font-family:var(--disp);font-size:14.5px;font-weight:600}
  #toast .t div{color:var(--muted);font-size:12.5px;margin-top:2px}
  .confetti{position:fixed;width:5px;height:16px;top:-20px;z-index:95;pointer-events:none;border-radius:3px}

  @keyframes pop{from{transform:scale(.93);opacity:0}to{transform:scale(1);opacity:1}}
  @keyframes twinkle{0%,100%{opacity:.25}50%{opacity:.95}}
  .twk{animation:twinkle 3.2s ease-in-out infinite}
  @keyframes slidein{from{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}
  @keyframes fall{to{transform:translateY(105vh) rotate(560deg);opacity:.85}}
  @keyframes popin{from{transform:scale(0)}to{transform:scale(1)}}
  @keyframes boom{0%{transform:scale(.6);opacity:1}100%{transform:scale(1.9);opacity:0}}
  @keyframes ringexp{0%{width:14px;height:14px;opacity:.9}100%{width:70px;height:70px;opacity:0}}
  @keyframes rise{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-42px);opacity:0}}
  .pulse{animation:pulse .65s ease}
  @keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.16)}100%{transform:scale(1)}}
  .footnote{text-align:center;color:var(--muted);font-size:11.5px;margin-top:28px;line-height:1.7}

  /* ---------- nav tabs ---------- */
  .nav-tabs{display:flex;gap:6px;margin:6px 0 16px;background:var(--glass2);border:1px solid var(--line2);border-radius:14px;padding:5px;width:max-content}
  .nav-tab{background:none;color:var(--muted);font-family:var(--disp);font-weight:600;font-size:12.5px;letter-spacing:.4px;padding:9px 20px;border-radius:10px;transition:.16s}
  .nav-tab:hover{color:var(--ink)}
  .nav-tab.active{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04122e;box-shadow:0 6px 18px var(--brandg)}
  .av-menu button.danger:hover{background:rgba(255,77,109,.14);color:#ffc6d2}

  /* ---------- job picker in track card ---------- */
  .job-row{display:flex;align-items:center;gap:9px;margin:2px 0 16px;justify-content:center;flex-wrap:wrap}
  .job-row label{color:var(--muted);font-size:11.5px;font-family:var(--disp);font-weight:600;letter-spacing:2.2px;text-transform:uppercase}
  .job-row select{background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:9px 12px;border-radius:11px;font-size:13px;font-family:inherit;max-width:220px}
  .job-manage{color:var(--brand2);font-size:12px;font-weight:600;cursor:pointer}
  .job-manage:hover{text-decoration:underline}
  .jtag{display:inline-block;margin-left:8px;font-family:var(--disp);font-weight:500;font-size:10.5px;letter-spacing:.3px;color:var(--brand2);background:rgba(56,225,255,.1);border:1px solid rgba(56,225,255,.22);border-radius:6px;padding:1px 7px;vertical-align:middle}
  .jtag.rtag{color:#c9b8ff;background:rgba(124,92,255,.12);border-color:rgba(124,92,255,.28)}

  /* ---------- entry edit/delete buttons ---------- */
  .entry .erow{display:flex;gap:4px;margin-left:4px}
  .ebtn{background:var(--glass2);border:1px solid var(--line2);color:var(--muted);width:28px;height:28px;border-radius:9px;font-size:12px;display:flex;align-items:center;justify-content:center;transition:.14s}
  .ebtn:hover{color:var(--ink);border-color:var(--line);background:rgba(255,255,255,.08)}
  .ebtn.del:hover{color:#ffc6d2;border-color:rgba(255,77,109,.4);background:rgba(255,77,109,.14)}

  /* ---------- modals ---------- */
  .modal-wrap{position:fixed;inset:0;background:rgba(3,6,14,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:120;display:none;align-items:center;justify-content:center;padding:20px}
  .modal-wrap.show{display:flex;animation:fadein .2s ease}
  @keyframes fadein{from{opacity:0}to{opacity:1}}
  .modal{background:#0b1224;border:1px solid var(--line);border-radius:22px;padding:24px;width:100%;max-width:460px;box-shadow:0 40px 100px rgba(0,0,0,.7);animation:pop .3s cubic-bezier(.2,.9,.3,1)}
  .modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
  .modal-hd h3{font-family:var(--disp);font-size:17px;font-weight:600}
  .modal-x{background:var(--glass2);border:1px solid var(--line2);color:var(--muted);width:30px;height:30px;border-radius:9px;font-size:13px;transition:.14s}
  .modal-x:hover{color:var(--ink);background:rgba(255,255,255,.08)}
  .modal-note{color:var(--muted);font-size:11.5px;line-height:1.6;margin-top:14px}
  .sync-label{display:block;font-family:var(--disp);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
  #syncUrl,#syncToken{width:100%;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:12px 14px;border-radius:11px;font-size:13px;font-family:inherit}
  #syncUrl:focus,#syncToken:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(14,93,255,.22)}
  .sync-status{font-size:12px;margin:12px 0 4px;min-height:16px;color:var(--muted)}
  .sync-status.ok{color:var(--good)}
  .sync-status.err{color:var(--bad)}

  .job-list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;margin-bottom:14px}
  .jrow{display:flex;align-items:center;gap:12px;background:var(--glass2);border:1px solid var(--line2);border-radius:12px;padding:11px 13px}
  .jrow.arch{opacity:.5}
  .jnum{font-family:var(--disp);font-weight:600;font-size:13px;color:var(--brand2);min-width:52px}
  .jmeta{flex:1;min-width:0}
  .jname{font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .jsub{color:var(--muted);font-size:11px;margin-top:1px}
  .jacts{display:flex;gap:4px}
  .jacts button{background:var(--glass2);border:1px solid var(--line2);color:var(--muted);width:30px;height:30px;border-radius:9px;font-size:12px;transition:.14s}
  .jacts button:hover{color:var(--ink);background:rgba(255,255,255,.08)}
  .jacts button.del:hover{color:#ffc6d2;border-color:rgba(255,77,109,.4);background:rgba(255,77,109,.14)}
  .job-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .job-add input{background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:10px 12px;border-radius:11px;font-size:13px;font-family:inherit;flex:1;min-width:120px}
  .job-add button{background:var(--brand);color:#fff;padding:10px 17px;border-radius:11px;font-weight:600;font-size:13px;white-space:nowrap}

  .edit-grid{display:flex;flex-direction:column;gap:12px}
  .edit-grid label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-family:var(--disp);letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
  .edit-grid select,.edit-grid input{background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);padding:11px 13px;border-radius:11px;font-size:14px;font-family:inherit;letter-spacing:0;text-transform:none}
  .edit-acts{display:flex;gap:10px;margin-top:18px}
  .edit-acts button{flex:1;padding:12px;border-radius:12px;font-weight:600;font-size:14px;transition:.16s}
  .edit-acts .ghost{background:var(--glass2);border:1px solid var(--line);color:var(--ink)}
  .edit-acts .ghost:hover{background:rgba(255,255,255,.08)}
  .edit-acts .primary{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04122e}
  .edit-acts .primary:hover{transform:translateY(-1px);box-shadow:0 10px 26px var(--brandg)}

  /* ---------- timesheets ---------- */
  .range-row{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}
  .range-tab{background:var(--glass2);border:1px solid var(--line2);color:var(--muted);font-size:12.5px;font-weight:500;padding:8px 15px;border-radius:10px;transition:.14s}
  .range-tab:hover{color:var(--ink)}
  .range-tab.active{background:rgba(56,225,255,.12);border-color:rgba(56,225,255,.32);color:var(--brand2)}
  .ts-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}
  .ts-stat{background:var(--glass2);border:1px solid var(--line2);border-radius:14px;padding:15px 12px;text-align:center}
  .ts-stat b{display:block;font-size:22px;font-weight:600}
  .ts-stat span{color:var(--muted);font-size:11px;letter-spacing:.4px}
  @media(max-width:540px){.ts-stats{grid-template-columns:repeat(2,1fr)}}

  .breakdown{display:flex;flex-direction:column;gap:11px}
  .bd-row{display:flex;align-items:center;gap:12px}
  .bd-lab{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;min-width:118px;max-width:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bd-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
  .bd-bar{flex:1;height:9px;background:rgba(255,255,255,.06);border-radius:6px;overflow:hidden}
  .bd-fill{height:100%;border-radius:6px;transition:width .5s cubic-bezier(.2,.9,.3,1)}
  .bd-val{font-family:var(--disp);font-weight:600;font-size:12.5px;min-width:56px;text-align:right}

  .ts-list{display:flex;flex-direction:column;gap:18px;max-height:520px;overflow-y:auto}
  .ts-day{display:flex;flex-direction:column;gap:8px}
  .ts-dayhd{display:flex;justify-content:space-between;align-items:baseline;padding:0 2px 2px;border-bottom:1px solid var(--line2)}
  .ts-dayhd span:first-child{font-family:var(--disp);font-weight:600;font-size:13px}
  .ts-daytot{font-family:var(--disp);font-weight:600;font-size:12px;color:var(--brand2)}

  /* ---------- Blast Zone (3D · Three.js) ---------- */
  .arena{cursor:default}
  .arena.playing{cursor:none}
  #blastStage{position:absolute;inset:0;z-index:2;overflow:hidden}
  #blastStage canvas{width:100%!important;height:100%!important;display:block}
  .bstat.combo span{color:var(--gold)}
  .bstat.combo{border-color:rgba(255,210,77,.35);background:rgba(255,210,77,.08)}

  /* crosshair follows the mouse over the stage */
  .blast-crosshair{position:absolute;z-index:4;width:34px;height:34px;transform:translate(-50%,-50%);pointer-events:none;
    border:2px solid rgba(56,225,255,.9);border-radius:50%;box-shadow:0 0 12px rgba(56,225,255,.6),inset 0 0 8px rgba(56,225,255,.4)}
  .blast-crosshair::before,.blast-crosshair::after{content:"";position:absolute;background:rgba(167,240,255,.95);box-shadow:0 0 6px #38e1ff}
  .blast-crosshair::before{left:50%;top:-9px;width:2px;height:7px;transform:translateX(-50%)}
  .blast-crosshair::after{top:50%;left:-9px;height:2px;width:7px;transform:translateY(-50%)}
  /* red damage flash when a bomb is shot */
  .blast-flash{position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(circle at 50% 55%,rgba(255,77,109,.45),rgba(255,77,109,.12) 60%,transparent 80%);opacity:0}
  .blast-flash.on{animation:blastflash .34s ease-out}
  @keyframes blastflash{0%{opacity:1}100%{opacity:0}}
  /* floating score numbers (projected from 3D) */
  .blast-float{position:absolute;z-index:5;transform:translate(-50%,-50%);pointer-events:none;
    font-family:var(--disp);font-weight:700;font-size:22px;text-shadow:0 2px 10px rgba(0,0,0,.6);
    transition:transform .6s cubic-bezier(.2,.9,.3,1),opacity .6s ease}

  .blast-panel{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;text-align:center;padding:26px;
    background:radial-gradient(600px 400px at 50% 40%,rgba(14,93,255,.14),transparent 70%),rgba(5,7,14,.6);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
  .blast-panel.hidden{display:none}
  .bp-badge{font-size:48px;line-height:1;filter:drop-shadow(0 8px 22px rgba(56,225,255,.45));animation:pop .4s cubic-bezier(.2,.9,.3,1)}
  .bp-title{font-family:var(--disp);font-weight:700;font-size:27px;letter-spacing:.3px}
  .bp-sub{color:var(--muted);font-size:13.5px;line-height:1.55;max-width:360px}
  .bp-score{font-family:var(--disp);font-weight:700;font-size:62px;line-height:1;margin:-4px 0;
    background:linear-gradient(135deg,var(--brand2),#ffffff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 6px 24px rgba(56,225,255,.4))}
  .bp-stats{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:13.5px;font-family:var(--disp);font-weight:600}
  .bp-stats .dot{opacity:.45}
  .bp-badge-msg{color:var(--gold);font-size:13px;font-weight:600}
  .bp-acts{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap;justify-content:center}
