:root{
  --purple:#853EFF; --violet:#693AF4; --blue:#34B4FF; --indigo:#33139F;
  /* light theme surfaces */
  --bg:#FAFAFB; --card:#FFFFFF; --card2:#F8FAFC; --ink:#0F172A; --slate:#475569; --slate-light:#94A3B8;
  --line:#E5E7EB; --chip-bg:#EDE7FF; --chip-tx:#33139F; --topbar:rgba(250,250,251,.92);
  --code-bg:#0f1526; --code-line:#1e2740; --code-tx:#e6edfb; --accent:#6b3fb0;
  --gold:#d9a400; --silver:#8a94a6; --bronze:#b06a2c;
}
[data-theme="dark"]{
  --bg:#0b0f17; --card:#141a26; --card2:#10151f; --ink:#e8edf5; --slate:#9aa7bd; --slate-light:#6b7688;
  --line:#232b3a; --chip-bg:#241b46; --chip-tx:#c3a8ff; --topbar:rgba(11,15,23,.92);
  --code-bg:#05070d; --code-line:#1b2233; --code-tx:#e6edfb; --accent:#c3a8ff;
  --gold:#e6b83a; --silver:#aab4c6; --bronze:#c98a52;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}
.hidden{display:none!important}
.g{background:linear-gradient(90deg,#9a6bff,#34B4FF);-webkit-background-clip:text;background-clip:text;color:transparent}
.ico{width:1em;height:1em;display:inline-block;vertical-align:-0.12em;flex:none}
.btn{background:linear-gradient(90deg,#853EFF,#34B4FF);color:#fff;border:none;border-radius:9px;padding:11px 18px;font-weight:600;font-size:14px;cursor:pointer;font-family:inherit}
.btn:hover{opacity:.94}
.ghost{background:transparent;border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:12.5px;cursor:pointer;color:var(--slate);font-family:inherit}
.ghost:hover{background:var(--card2)}
.err{color:#e0574d;font-size:13px;margin-top:8px;min-height:16px}
.msg{font-size:13px;margin-top:8px;min-height:16px}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.16em;font-weight:600;color:#8a7fb0}
.hint{font-size:12.5px;color:var(--slate);margin:6px 0}

/* ENTRY (dark gradient, works in both themes) */
.entry{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(ellipse at 20% 0%,rgba(105,58,244,.5),transparent 55%),
    radial-gradient(ellipse at 90% 100%,rgba(52,180,255,.4),transparent 55%),
    linear-gradient(135deg,#0B111C,#1A0B5C 55%,#33139F)}
.entry-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);
  border-radius:18px;padding:30px 30px;width:100%;max-width:420px;color:#fff}
.entry-brand{display:flex;align-items:center;gap:10px}
.entry-brand .mark{width:34px;height:34px}
.entry-card h1{font-family:'Space Grotesk';font-size:34px;font-weight:700;letter-spacing:-.02em;margin:12px 0 6px}
.entry-card .sub{color:#c6d3e2;font-size:14px;margin-bottom:16px}
.entry-card label{display:block;font-size:12px;color:#aab7c9;margin:12px 0 5px;font-weight:500}
.entry-card input{width:100%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff;
  border-radius:9px;padding:11px 13px;font-size:15px;font-family:inherit}
.entry-card input::placeholder{color:#8a99ad}
.entry-card .btn{width:100%;margin-top:18px}
.entry-card .tagline{font-size:12px;color:#aab7c9;margin-top:10px;text-align:center}
.entry-foot{margin-top:14px;font-size:12.5px;color:#aab7c9}
.entry-foot a{color:#9fd0ff}

/* APP */
.app{max-width:1000px;margin:0 auto;padding:0 20px 60px}
.topbar{position:sticky;top:0;background:var(--topbar);backdrop-filter:blur(8px);
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--line);z-index:5}
.brand{font-family:'Space Grotesk';font-weight:700;font-size:18px;color:var(--ink);display:flex;align-items:center;gap:9px}
.brand .mark{width:24px;height:24px}
.brand-sub{color:var(--slate);font-weight:500;font-size:13px}
.tabs{display:flex;gap:6px;margin-left:8px}
.tab{background:transparent;border:none;padding:8px 14px;border-radius:8px;font-weight:600;font-size:13.5px;color:var(--slate);cursor:pointer;font-family:inherit}
.tab.active{background:var(--ink);color:var(--bg)}
.who{margin-left:auto;font-size:13px;color:var(--slate);display:flex;align-items:center;gap:10px}
.who b{color:var(--accent)}
.camp{background:var(--chip-bg);color:var(--chip-tx);border-radius:6px;padding:2px 8px;font-size:11px;font-weight:600}
.theme-btn{background:transparent;border:1px solid var(--line);border-radius:8px;width:32px;height:30px;display:grid;place-items:center;cursor:pointer;color:var(--slate)}
.theme-btn:hover{background:var(--card2)}
.pane{padding-top:22px}
.pane h2{font-family:'Space Grotesk';font-size:24px;font-weight:700;letter-spacing:-.01em}
.pane-sub{color:var(--slate);font-size:14px;margin-top:6px}

/* intro */
.welcome{background:var(--chip-bg);border:1px solid var(--line);border-radius:10px;padding:12px 15px;font-size:13.5px;color:var(--ink);margin:14px 0}
.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:12px 0}
.panel-h{font-family:'Space Grotesk';font-weight:600;font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.panel-h .ico{color:var(--purple);font-size:17px}
.panel ul{margin:0 0 4px 18px;font-size:13px;color:var(--slate);line-height:1.7}
.protip{font-size:12.5px;color:var(--ink);background:var(--card2);border:1px solid var(--line);border-radius:9px;padding:9px 12px;margin-top:10px;display:flex;gap:8px}
.protip .ico{color:#d9a400;font-size:16px;flex:none;margin-top:1px}
.protip .ptc{flex:1}
.protip ul{margin:6px 0 0 18px;line-height:1.6;color:var(--ink)}
.protip .pnote{margin-top:8px;color:var(--slate)}
.protip .pclose{margin-top:8px}
details.panel summary{cursor:pointer;font-family:'Space Grotesk';font-weight:600;font-size:14px;list-style:none;display:flex;align-items:center;gap:8px}
details.panel summary::-webkit-details-marker{display:none}
details.panel summary .ico{color:var(--slate);font-size:16px}
details.panel[open] summary{margin-bottom:10px}
.tt{width:100%;border-collapse:collapse;margin-bottom:10px}
.tt td{padding:7px 10px;border-top:1px solid var(--line);color:var(--slate);vertical-align:top;font-size:12.5px}
.tt td:first-child{font-weight:600;color:var(--ink);white-space:nowrap;width:38%}
.kbds{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.kbd{font-size:11.5px;color:var(--slate);background:var(--card2);border:1px solid var(--line);border-radius:6px;padding:4px 9px}
.kbd b{color:var(--ink);font-family:monospace}
.res{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px}
.res a{color:var(--accent);text-decoration:none}
.coresteps-label{display:flex;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--slate);margin:20px 2px 8px}

/* accordion */
.acc{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;overflow:hidden}
.acc.done{border-color:var(--purple)}
.acc-head{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;user-select:none}
.acc-head:hover{background:var(--card2)}
.acc-status{flex:0 0 22px;height:22px;border-radius:6px;border:2px solid var(--slate-light);display:grid;place-items:center;color:#fff}
.acc-status .ico{font-size:13px}
.acc.done .acc-status{background:linear-gradient(135deg,#853EFF,#34B4FF);border-color:transparent}
.acc-title{font-family:'Space Grotesk';font-weight:600;font-size:15px;flex:1;color:var(--ink)}
.acc-pts{font-size:12px;font-weight:700;color:var(--chip-tx);background:var(--chip-bg);border-radius:999px;padding:3px 10px;white-space:nowrap}
.acc-chev{color:var(--slate-light);font-size:13px;width:14px;text-align:center}
.acc-body{display:none;padding:4px 18px 18px;border-top:1px solid var(--line)}
.acc.open .acc-body{display:block}
.acc-body p{font-size:13.5px;color:var(--ink);line-height:1.55;margin:10px 0;opacity:.92}
.acc-body ul,.acc-body ol{margin:8px 0 8px 22px;font-size:13.5px;color:var(--ink);line-height:1.6;opacity:.95}
.acc-body li{margin:5px 0}
.acc-body code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--card2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;color:var(--accent);white-space:nowrap}
.stepnote{font-size:12.5px;color:var(--slate);background:var(--card2);border-left:3px solid var(--slate-light);border-radius:0 8px 8px 0;padding:8px 12px;margin:10px 0}
.stepnote b{color:var(--ink)}
.cmd{position:relative;background:var(--code-bg);border:1px solid var(--code-line);border-radius:9px;margin:10px 0;padding:11px 78px 11px 13px}
.cmd pre{margin:0;color:var(--code-tx);font-family:ui-monospace,Menlo,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-word}
.copy{position:absolute;top:8px;right:8px;background:#243049;color:#c6d3e2;border:1px solid #38476a;border-radius:6px;font-size:10.5px;font-weight:600;padding:4px 9px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:5px}
.copy:hover{background:#2e3d5c}
.imdone{margin-top:8px;background:linear-gradient(90deg,#853EFF,#34B4FF);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:7px}
.acc.done .imdone{background:var(--chip-bg);color:var(--chip-tx)}

/* leaderboard */
.lb-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.live-badge{font-size:11px;font-weight:700;color:#137a4b;background:#dff5e8;border:1px solid #a8e0c1;border-radius:999px;padding:2px 9px;text-transform:uppercase;letter-spacing:.05em}
[data-theme="dark"] .live-badge{background:#0e2b1c;color:#5fd39a;border-color:#1d5238}
.lb-sub{font-size:12.5px;color:var(--slate);margin:4px 0 0}
.camp2,.cast-camp{font-size:13px;font-weight:600;color:var(--chip-tx);background:var(--chip-bg);border-radius:6px;padding:3px 10px}
.lb{width:100%;border-collapse:collapse;margin-top:16px;font-size:14px;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.lb th{background:var(--card2);text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--slate);padding:10px 14px}
.lb td{padding:11px 14px;border-top:1px solid var(--line);color:var(--ink)}
.lb .r{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent)}
.rank{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;font-weight:700;font-size:12px;background:var(--card2);color:var(--slate);font-variant-numeric:tabular-nums}
.rank.r1{background:var(--gold);color:#3a2c00} .rank.r2{background:var(--silver);color:#1c2430} .rank.r3{background:var(--bronze);color:#2a1400}

/* admin */
.admin-gate,.new-camp{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;margin-top:16px;max-width:520px}
.new-camp{max-width:none}
.admin-gate label{display:block;font-size:12px;color:var(--slate);margin-bottom:6px}
.admin-gate input,.row input{border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit;background:var(--card);color:var(--ink)}
.admin-gate input{width:100%;margin-bottom:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.row input{flex:1;min-width:180px}
.camp-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:12px}
.camp-card .h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.camp-card b{color:var(--ink)}
.camp-card .code{font-family:'Space Grotesk';font-weight:700;color:var(--chip-tx);background:var(--chip-bg);border-radius:6px;padding:2px 9px;font-size:12.5px}
.camp-card .meta{font-size:12.5px;color:var(--slate);margin-left:auto}
.mini{font-size:11.5px;font-weight:600;border-radius:7px;padding:5px 11px;cursor:pointer;font-family:inherit;border:1px solid var(--line);background:var(--card);color:var(--slate)}
.mini:hover{background:var(--card2)}
.mini.manage{border-color:var(--purple);color:var(--accent)}
.mini.danger{border-color:#e6a9a3;color:#c0392b}
.mini.danger:hover{background:rgba(224,87,77,.08)}
.camp-card .h .mini{margin-left:6px}
.manage-panel{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;display:grid;gap:7px}
.prow{display:flex;align-items:center;gap:10px;font-size:13px}
.prow .pn{display:flex;flex-direction:column;line-height:1.3;font-weight:600;color:var(--ink)}
.prow .pe{font-size:11px;color:var(--slate-light);font-weight:400}
.prow .pm{color:var(--slate);font-size:12px;margin-left:auto}

/* cast */
.cast{position:fixed;inset:0;background:radial-gradient(ellipse at 15% 0%,rgba(105,58,244,.45),transparent 55%),
    radial-gradient(ellipse at 90% 100%,rgba(52,180,255,.35),transparent 55%),#0B111C;color:#fff;z-index:50;padding:28px 40px;overflow:auto}
.cast-top{display:flex;align-items:center;gap:18px;margin-bottom:18px}
.cast-top .brand{color:#fff}
.cast .cast-camp{background:rgba(255,255,255,.12);color:#dcd3ff}
.cast-top .ghost{margin-left:auto;color:#c6d3e2;border-color:rgba(255,255,255,.25)}
.cast-lb{background:transparent;border:none;font-size:30px}
.cast-lb td{border-top:1px solid rgba(255,255,255,.12);padding:16px 18px;color:#fff}
.cast-lb .r{color:#7fe0ff}
.cast-lb tr:first-child td{border-top:none}
@media(max-width:600px){.who{width:100%;order:3}.tabs{order:2}}
