/* XACKTON Cyber Challenge: participant site.
   Layout: single centred column (max 760px), teal top bar with malachite rule, screens swap in place. */
@font-face{font-family:"Chakra Petch";src:url(fonts/chakra-petch-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Chakra Petch";src:url(fonts/chakra-petch-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Chakra Petch";src:url(fonts/chakra-petch-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --bg:#F3FAF6; --surface:#FFFFFF; --surface-2:#EAF6EF; --line:#C9E7D6;
  --fg:#0B2B28; --muted:#4A6B64;
  --accent:#25D366; --accent-ink:#011C40; --accent-text:#137853; --accent-soft:#C9EFE3; --accent-shadow:#0F614F;
  --teal:#0A4A4A; --good:#188F58; --good-bg:#DDF5E8; --bad:#B42318; --bad-bg:#FDE7E4;
  --gold:#B7791F; --silver:#64748B; --bronze:#9C4F21; --scrim:rgba(1,28,64,.62);
  --f-display:"Chakra Petch","Segoe UI",system-ui,sans-serif;
  --f-body:"Instrument Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --r:10px; color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#05201F; --surface:#0A3333; --surface-2:#0D3D3B; --line:#145250;
  --fg:#EAF4FC; --muted:#A9C9C0;
  --accent-text:#57DC8C; --accent-soft:#0F4A3E;
  --good:#57DC8C; --good-bg:#0F4A36; --bad:#FF8A7A; --bad-bg:#4A1E1B;
  --gold:#F2C14E; --silver:#C2CCD6; --bronze:#E09A63; --scrim:rgba(0,10,14,.75);
  color-scheme:dark;}}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:16px;line-height:1.55;min-height:100vh;display:flex;flex-direction:column}
h1,h2,h3{font-family:var(--f-display);line-height:1.15;text-wrap:balance;margin:0}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent-text)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.mono{font-family:var(--f-mono);font-size:.92em}
.sel{user-select:all}

.bar{position:sticky;top:0;z-index:5;background:var(--teal);color:#EAF4FC;border-bottom:4px solid var(--accent);padding-top:env(safe-area-inset-top,0px)}
.bar-in{max-width:760px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.brand{font-family:var(--f-display);font-weight:700;letter-spacing:.2em;font-size:17px;color:#EAF4FC;text-decoration:none}
.tabs{margin-left:auto;display:flex;gap:4px}
.tab{background:transparent;border:1px solid transparent;color:#C9EFE3;padding:6px 14px;border-radius:999px;cursor:pointer;font-weight:600;font-size:14px}
.tab[aria-selected="true"]{background:var(--accent);color:var(--accent-ink)}
.tab:hover:not([aria-selected="true"]){border-color:#3ED879}

main{flex:1;width:100%;max-width:760px;margin:0 auto;padding:28px 16px 48px;display:flex;flex-direction:column;gap:24px}
.view,.screen{display:grid;gap:22px}
.eyebrow{font-family:var(--f-display);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-text);font-weight:600}
.lead{color:var(--muted);max-width:60ch;margin:8px 0 0}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.hero h1{font-size:clamp(28px,6vw,44px);font-weight:700}
.hero h1 span{color:var(--accent-text)}
h2{font-size:22px}
.h-lg{font-size:28px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row.between{justify-content:space-between}

.levels{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.lvl{padding:16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--fg);text-decoration:none}
.lvl b{font-family:var(--f-display);font-size:12px;letter-spacing:.14em;color:var(--accent-text)}
.lvl strong{font-size:17px;line-height:1.3;font-family:var(--f-display)}
.lvl small{color:var(--muted)}
.lvl .go{margin-top:auto;padding-top:8px;font-weight:600;color:var(--accent-text)}
.levels-links .lvl:hover{border-color:var(--accent);box-shadow:0 3px 0 var(--accent)}
.rules{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.rules li{font-size:14px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface)}
.rules li b{color:var(--accent-text)}

form{display:grid;gap:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:6px;min-width:0}
.field label{font-weight:600;font-size:14px}
.field small{color:var(--muted);font-size:13px}
.field input,.field select{padding:12px 14px;border-radius:8px;border:1.5px solid var(--line);background:var(--bg);font-size:16px;width:100%}
.field input:focus,.field select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.err{color:var(--bad);font-size:14px;min-height:1.2em}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:var(--accent-ink);border:0;border-radius:8px;padding:13px 22px;font-family:var(--f-display);font-weight:700;font-size:15px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;box-shadow:0 3px 0 var(--accent-shadow);text-decoration:none}
.btn:hover{filter:brightness(1.05)}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--accent-shadow)}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.btn.ghost{background:transparent;color:var(--fg);border:1.5px solid var(--line);box-shadow:none}
.btn.danger{color:var(--bad);border-color:var(--bad)}

.hud{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}
.meter{height:10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden}
.meter i{display:block;height:100%;background:var(--accent);width:0;transition:width .4s ease}
.chip{font-family:var(--f-display);font-weight:600;font-size:14px;padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums}
.chip.xp{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.chip.streak[data-on="true"]{border-color:var(--gold);color:var(--gold)}
.levelhead{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}
.levelhead span{color:var(--muted);font-size:14px}
.qcard{display:grid;gap:16px}
.qmeta{display:flex;gap:8px;flex-wrap:wrap}
.tag{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:4px;background:var(--surface-2);color:var(--muted)}
.tag.pts{background:var(--accent-soft);color:var(--accent-text)}
.qtext{font-size:clamp(18px,3.4vw,21px);font-weight:600;line-height:1.4;margin:0}
.snippet{font-family:var(--f-mono);font-size:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:12px 14px;overflow-x:auto;white-space:pre;line-height:1.6}
.opts{display:grid;gap:10px}
.opt{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:center;text-align:left;padding:12px 14px;border-radius:8px;border:1.5px solid var(--line);background:var(--bg);cursor:pointer;min-width:0}
.opt:hover:not([disabled]){border-color:var(--accent)}
.opt .k{width:32px;height:32px;border-radius:6px;display:grid;place-items:center;font-family:var(--f-display);font-weight:700;background:var(--surface-2)}
.opt[disabled]{cursor:default}
.opt.busy{opacity:.7}
.opt.right{border-color:var(--good);background:var(--good-bg)}
.opt.right .k{background:var(--good);color:var(--bg)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.opt.wrong .k{background:var(--bad);color:var(--bg)}
.opt.dim{opacity:.55}
.feedback{border-radius:8px;padding:14px 16px;display:grid;gap:6px}
.feedback.ok{background:var(--good-bg)} .feedback.no{background:var(--bad-bg)}
.feedback h3{font-size:18px}
.feedback.ok h3{color:var(--good)} .feedback.no h3{color:var(--bad)}
.feedback p{margin:0}
.pop{animation:pop .45s ease}
@keyframes pop{0%{transform:scale(.96)}60%{transform:scale(1.02)}100%{transform:scale(1)}}

.result{text-align:center;display:grid;gap:12px;justify-items:center}
.badge{width:120px;height:120px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:var(--accent);display:grid;place-items:center;color:var(--accent-ink);font-family:var(--f-display);font-weight:700;font-size:34px}
.result h2{font-size:clamp(26px,5vw,34px)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%}
.stat{background:var(--surface-2);border-radius:8px;padding:12px;display:grid;gap:2px}
.stat b{font-family:var(--f-display);font-size:24px;font-variant-numeric:tabular-nums}
.stat small{color:var(--muted);font-size:13px}
.note{font-size:14px;padding:10px 14px;border-radius:8px;background:var(--surface-2);color:var(--muted);border-left:4px solid var(--accent);text-align:left;width:100%}

.podium{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;align-items:end}
.pod{background:var(--surface);border:1px solid var(--line);border-radius:var(--r) var(--r) 0 0;padding:14px 10px;text-align:center;display:grid;gap:4px;min-width:0}
.pod .medal{font-family:var(--f-display);font-weight:700;font-size:28px}
.pod .nm{font-weight:600;overflow-wrap:anywhere}
.pod .sc{font-family:var(--f-display);font-size:18px;font-variant-numeric:tabular-nums}
.pod.p1{min-height:170px;border-top:5px solid var(--gold)} .pod.p1 .medal{color:var(--gold)}
.pod.p2{min-height:140px;border-top:5px solid var(--silver)} .pod.p2 .medal{color:var(--silver)}
.pod.p3{min-height:120px;border-top:5px solid var(--bronze)} .pod.p3 .medal{color:var(--bronze)}
.pod.empty{opacity:.45}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-family:var(--f-display);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.rk{font-family:var(--f-display);font-weight:700;width:48px}
td.nm{white-space:normal;overflow-wrap:anywhere;min-width:120px}
tr.me td{background:var(--accent-soft)}
tr:last-child td{border-bottom:0}
.empty-state{padding:28px 16px;text-align:center;color:var(--muted);white-space:normal}
.live{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.live i{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.3}}

.foot{max-width:760px;width:100%;margin:0 auto;padding:16px 16px calc(20px + env(safe-area-inset-bottom,0px));display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;font-size:13px;color:var(--muted);border-top:1px solid var(--line)}
.linklike{background:none;border:0;padding:0;color:var(--accent-text);text-decoration:underline;cursor:pointer;font-size:13px}

/* consent */
.scrim{position:fixed;inset:0;z-index:50;background:var(--scrim);display:grid;place-items:center;padding:16px;overflow-y:auto}
.modal{background:var(--surface);color:var(--fg);border-radius:14px;border-top:6px solid var(--accent);max-width:600px;width:100%;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.35);max-height:calc(100vh - 32px);overflow-y:auto}
.modal > div{display:grid;gap:14px}
.modal h2{font-size:26px}
.modal p{margin:0}
.modal details{border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:var(--bg)}
.modal summary{cursor:pointer;font-weight:600}
.modal details[open] summary{margin-bottom:8px}
.modal ul{margin:0;padding-left:20px;display:grid;gap:4px}
.modal details p + p{margin-top:8px}
.check{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;font-weight:500;padding:12px;border-radius:8px;background:var(--accent-soft)}
.check input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--good)}
.tiny{font-size:12px;color:var(--muted)}

@media (max-width:600px){
  .levels{grid-template-columns:1fr}
  .grid2{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .hud{grid-template-columns:1fr auto}
  .hud .meter{grid-column:1/-1;order:3}
  .podium{gap:6px}
  .pod .sc{font-size:15px}
  th,td{padding:9px 10px}
  .modal{padding:18px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
