:root{
  --bg:#0a0a0a; --panel:#141414; --panel-2:#101010; --border:#262626; --border-2:#333;
  --text:#d8d8d8; --text-dim:#9a9a9a; --muted:#6f6f6f; --hi:#ffffff;
  --red:#ff3b3b; --red-glow:rgba(255,59,59,.55); --green:#27d07a; --green-glow:rgba(39,208,122,.5);
  --accent:#c9a227; /* restrained gold for prize/congrats moments */
  --maxw:1100px;
  --mono:'JetBrains Mono','SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
  --sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{min-height:100vh;line-height:1.5}
a{color:var(--text);text-decoration:none}
button{font-family:inherit;cursor:pointer}
.mono{font-family:var(--mono)}
.muted{color:var(--muted)}
.dim{color:var(--text-dim)}
.hide{display:none!important}

/* layout */
.wrap{max-width:var(--maxw);margin:0 auto;padding:20px;width:100%}
.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.col{display:flex;flex-direction:column}
.row{display:flex;gap:12px;flex-wrap:wrap}
.spacer{flex:1}

/* brand */
.brand{letter-spacing:6px;font-weight:700;font-size:34px;color:var(--hi);font-family:var(--mono)}
.brand-sub{letter-spacing:4px;color:var(--text-dim);font-size:12px;margin-top:4px;text-transform:uppercase}

/* topbar */
.topbar{position:sticky;top:0;z-index:20;background:rgba(10,10,10,.92);backdrop-filter:blur(6px);
  border-bottom:1px solid var(--border)}
.topbar .wrap{display:flex;align-items:center;gap:14px;padding:12px 20px}
.topbar .brand{font-size:20px;letter-spacing:4px}
.topbar .brand-sub{margin:0;font-size:9px}
.navbtns{display:flex;gap:6px;flex-wrap:wrap}
.navbtns a{padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-size:11px;letter-spacing:1px;color:var(--text-dim)}
.navbtns a.active,.navbtns a:hover{border-color:var(--border-2);color:var(--hi)}

/* panels */
.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:16px}
.panel h2{margin:0 0 12px;font-size:13px;letter-spacing:3px;color:var(--text-dim);text-transform:uppercase;font-weight:600}
.panel.full{width:100%}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#1c1c1c;color:var(--hi);
  border:1px solid var(--border-2);border-radius:8px;padding:12px 18px;font-size:13px;letter-spacing:1px;
  transition:.15s;font-weight:600}
.btn:hover{background:#262626;border-color:#444}
.btn.ghost{background:transparent;color:var(--text-dim)}
.btn.ghost:hover{color:var(--hi)}
.btn.wide{width:100%}
.btn.sm{padding:8px 12px;font-size:12px}
.btn.xs{padding:5px 9px;font-size:11px;letter-spacing:0}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.danger{border-color:#5a2020;color:#ff7b7b}
.btn.danger:hover{background:#241010}
.btn.go{border-color:#1f6b45;color:var(--green)}

/* form */
label.fld{display:block;margin:8px 0}
label.fld span{display:block;font-size:10px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-bottom:5px}
input[type=text],input[type=number],input[type=password],textarea,select{
  width:100%;background:#0c0c0c;border:1px solid var(--border);border-radius:7px;color:var(--text);
  padding:11px 12px;font-size:13px;font-family:var(--mono);outline:none}
input:focus,textarea:focus,select:focus{border-color:#4a4a4a}
textarea{resize:vertical;min-height:90px}
.chk{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--text-dim);margin:7px 0;cursor:pointer}
.chk input{width:auto}

/* tables */
table{width:100%;border-collapse:collapse;font-size:12px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid #1c1c1c}
th{color:var(--muted);font-weight:600;letter-spacing:1px;font-size:10px;text-transform:uppercase}
td.mono{font-family:var(--mono)}

/* pills / badges */
.pill{display:inline-block;padding:3px 9px;border-radius:999px;font-size:10px;letter-spacing:1px;border:1px solid var(--border-2);color:var(--text-dim)}
.pill.red{border-color:#5a2020;color:#ff7b7b}
.pill.green{border-color:#1f6b45;color:var(--green)}
.pill.team{border-color:var(--border-2);color:var(--hi)}

/* connect screen */
.connect-card{max-width:440px;width:100%;text-align:center}
.connect-card .brand{font-size:42px}
.connect-card .tagline{color:var(--text-dim);margin:18px 0 26px;font-size:13px;line-height:1.6}
.wallet-btns{display:flex;flex-direction:column;gap:12px}
.status-line{margin-top:18px;min-height:18px;font-size:12px;color:var(--text-dim)}
.status-line.err{color:#ff7b7b}

/* denied */
.denied{max-width:460px;text-align:center}
.denied h1{font-family:var(--mono);letter-spacing:3px;color:var(--hi);font-size:24px;margin:0 0 10px}
.denied p{color:var(--text-dim)}

/* congrats modal */
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px}
.congrats{max-width:520px;width:100%;background:linear-gradient(180deg,#161616,#0d0d0d);
  border:1px solid var(--accent);border-radius:16px;padding:34px 28px;text-align:center;
  box-shadow:0 0 60px rgba(201,162,39,.25)}
.congrats .spark{font-family:var(--mono);letter-spacing:5px;color:var(--accent);font-size:13px;margin-bottom:10px}
.congrats h1{font-family:var(--mono);font-size:26px;letter-spacing:2px;color:var(--hi);margin:0 0 6px}
.congrats .sub{color:var(--text-dim);font-size:13px;margin-bottom:8px}
.congrats .teams{margin:16px 0;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.share-row{display:flex;gap:10px;justify-content:center;margin-top:18px;flex-wrap:wrap}
.card-preview{margin:18px auto 0;border:1px solid var(--border);border-radius:10px;max-width:100%;display:block}

/* glowing bulbs (used on launch page in a later phase; styles ready now) */
.bulb{width:18px;height:18px;border-radius:50%;background:var(--red);box-shadow:0 0 10px 2px var(--red-glow);animation:pulse 1.4s infinite ease-in-out}
.bulb.armed{background:var(--green);box-shadow:0 0 12px 3px var(--green-glow);animation:none}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.86)}}

/* countdown clock */
.clock{font-family:var(--mono);font-size:30px;letter-spacing:3px;color:var(--hi)}
.clock .tick{display:inline-block;min-width:1ch;transition:transform .2s}

/* toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);opacity:0;
  background:#1c1c1c;border:1px solid var(--border-2);border-radius:8px;padding:11px 16px;font-size:12px;
  color:var(--text);z-index:80;transition:.25s;pointer-events:none;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{border-color:#5a2020;color:#ff9b9b}

/* member home */
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:13px}
.kv .k{color:var(--muted)}
.bot-card{border:1px solid var(--border);border-radius:10px;padding:16px;background:var(--panel-2)}
.bot-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.note{font-size:12px;color:var(--text-dim);line-height:1.6}
.section-title{font-family:var(--mono);letter-spacing:3px;color:var(--text-dim);font-size:12px;text-transform:uppercase;margin:6px 0 12px}

/* mobile */
@media(max-width:760px){
  .wrap{padding:14px}
  .bot-grid{grid-template-columns:1fr}
  .brand{font-size:26px;letter-spacing:4px}
  .connect-card .brand{font-size:34px}
  .topbar .wrap{flex-wrap:wrap}
  .clock{font-size:24px}
  table{font-size:11px}
  th,td{padding:6px 7px}
}

/* ---- bot switcher ---- */
.bot-switch{width:auto;min-width:180px;padding:8px 10px;font-size:12px}
@media(max-width:760px){.bot-switch{min-width:0;flex:1}}

/* ---- vote view ---- */
.vote-panel{max-width:680px;margin:0 auto}
.vote-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.clock-wrap{text-align:right}
.opts{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.opt{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:8px;padding:12px 14px;cursor:pointer;transition:.15s}
.opt:hover{border-color:#444;background:var(--panel-2)}
.opt input{width:auto}
.opt span{font-size:14px;color:var(--text)}
.voted-ok{font-family:var(--mono);letter-spacing:2px;color:var(--green);font-size:15px;text-align:center;padding:8px;border:1px solid #1f6b45;border-radius:8px;background:rgba(39,208,122,.06)}
.tally-row{display:grid;grid-template-columns:130px 1fr 70px;gap:10px;align-items:center;margin:6px 0;font-size:12px}
.tally-label{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tally-bar{height:10px;background:#0c0c0c;border:1px solid var(--border);border-radius:6px;overflow:hidden}
.tally-fill{height:100%;background:linear-gradient(90deg,#3a3a3a,#fff)}
.tally-n{font-family:var(--mono);color:var(--muted);text-align:right;font-size:11px}
.center-pad{text-align:center;padding:30px 18px}

/* ---- launch board ---- */
.bulb-grid{display:flex;flex-wrap:wrap;gap:16px;margin:16px 0;justify-content:center}
.bulb-cell{display:flex;flex-direction:column;align-items:center;gap:6px;width:64px}
.bulb-cell.me{outline:1px dashed var(--border-2);border-radius:10px;padding:8px}
.bulb-id{font-size:10px;color:var(--muted)}
.bulb-you{font-size:9px;letter-spacing:1px;color:var(--accent)}
.launch-status{text-align:center;font-family:var(--mono);letter-spacing:2px;color:var(--text-dim);font-size:13px;margin-top:8px}

/* ---- rewards ---- */
.me-row td{background:rgba(201,162,39,.06)}
.deposit-box{border:1px solid var(--border);border-radius:8px;padding:14px;margin-top:14px;background:var(--panel-2)}

/* ---- dashboard VS ---- */
.vs-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:860px){.vs-grid{grid-template-columns:1fr}}
.vs-card{margin:0}
.vs-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.vs-pnl{font-family:var(--mono);font-size:18px;font-weight:700}
.vs-pnl.pos{color:var(--green)}.vs-pnl.neg{color:var(--red)}
.dash-chart{width:100%;height:180px;display:block;border:1px solid var(--border);border-radius:8px;background:#080808}
.vs-stats{margin-top:12px}
.pos{color:var(--green)}.neg{color:var(--red)}

/* ---- LED countdown timer ---- */
.timer-mount:empty{display:none}
.timer-mount{display:flex;justify-content:center;padding:0 14px}
.led-timer{display:flex;flex-direction:column;align-items:center;gap:10px;margin:14px 0 4px}
.led-title{color:#fff;font-family:var(--mono);letter-spacing:4px;font-size:14px;text-transform:uppercase;text-align:center;text-shadow:0 0 6px rgba(255,255,255,.25)}
.led-window{position:relative;background:#060606;border-radius:12px;padding:16px 26px;border:1px solid #161616;
  box-shadow:inset 0 4px 12px rgba(0,0,0,.95), inset 0 -1px 0 rgba(255,255,255,.04), inset 0 0 22px rgba(255,120,0,.05), 0 1px 0 rgba(255,255,255,.05);}
.led-window::after{content:"";position:absolute;inset:0;border-radius:12px;pointer-events:none;
  background:repeating-linear-gradient(0deg, rgba(0,0,0,0) 0 2px, rgba(0,0,0,.18) 2px 3px);} /* faint LED scanlines */
.led-stack{display:grid}
.led-stack>*{grid-area:1/1;font-family:"Courier New",Courier,monospace;font-weight:700;font-size:42px;line-height:1;letter-spacing:5px;font-variant-numeric:tabular-nums}
.led-ghost{color:rgba(255,130,0,.07)} /* unlit segments */
.led-digits{color:#ff9b21;text-shadow:0 0 6px rgba(255,140,0,.75), 0 0 16px rgba(255,110,0,.45), 0 0 2px rgba(255,180,80,.9);}
@media(max-width:560px){
  .led-stack>*{font-size:28px;letter-spacing:3px}
  .led-window{padding:12px 16px}
  .led-title{font-size:12px;letter-spacing:3px}
}

/* ---- kill switch ---- */
.kill-banner{background:rgba(255,59,59,.12);border:1px solid var(--red);color:#ffb3b3;border-radius:8px;padding:12px 14px;margin-bottom:16px;font-family:var(--mono);font-size:12px;letter-spacing:.5px}

/* ---- clickable rows + modal ---- */
.click-row{cursor:pointer}
.click-row:hover td{background:var(--panel-2)}
.gmodal{width:min(560px,94vw);max-height:84vh;overflow:auto;background:#0e0e0e;border:1px solid var(--border-2);border-radius:12px}
.gmodal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border);color:#fff;letter-spacing:1px;font-family:var(--mono);font-size:14px}
.gmodal-body{padding:16px}
.pop-x{background:none;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer}
.pop-x:hover{color:#fff}

/* transient connection indicator — replaces the old full-page error flash */
.conn-chip{position:fixed;right:14px;bottom:14px;z-index:9999;display:none;
  background:#1a1a1a;color:#bdbdbd;border:1px solid #333;border-radius:6px;
  padding:6px 12px;font-size:11px;letter-spacing:1px;font-family:monospace;
  box-shadow:0 4px 16px rgba(0,0,0,.5);opacity:.92}

/* launch lock-in countdown */
.launch-countdown{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:10px 0 4px;padding:10px 14px;border:1px solid #2a2a2a;border-radius:10px;
  background:linear-gradient(180deg,#161616,#101010)}
.launch-countdown .cd-label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#9a9a9a}
.launch-countdown .cd-clock{font-size:20px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums}

/* ---- global wrapping / no-overlap hardening (mobile) ---- */
*{min-width:0}
body,.panel,.note,.kv,.deposit-box,p,td,th,div,span{overflow-wrap:break-word;word-break:break-word}
.mono{overflow-wrap:anywhere;word-break:break-all}            /* long addresses wrap, never overflow */
table{width:100%;table-layout:auto;border-collapse:collapse}
td,th{word-break:break-word;vertical-align:top}
.deposit-box{overflow:hidden}
.deposit-box .row{flex-wrap:wrap;gap:8px}
.deposit-box input{min-width:0}
/* tables that still get wide can scroll instead of overlapping */
.panel{overflow-x:auto}
