/* KO ARENA — design system v2 (cinematic fighting-game / esports)
 * angular panels, condensed display type, real game splash art, zero emoji.
 * Copyright (C) 2021-2026, 0xray (studio) — product: KO ARENA.
 */
:root{
  --bg:#07080e; --ink:#f1f4ff; --muted:#98a2bf; --faint:#646e92;
  --line:rgba(255,255,255,.07); --line2:rgba(255,255,255,.16);
  --accent:#ff6a16; --accent2:#ffc24a; --accent-ink:#160c02;
  --panel:rgba(11,15,24,.82); --panel-top:rgba(24,30,46,.9);
  --ok:#3ad17e; --warn:#ffc861; --err:#ff6b73;
  --t-iron:#9095a3; --t-bronze:#cf8347; --t-silver:#cdd6e6; --t-gold:#ffc944;
  --t-plat:#36e6c8; --t-diamond:#54b5ff; --t-master:#b873ff; --t-grand:#ff5c70; --t-chall:#ffd95a;
  --disp:"Bahnschrift","Oswald","Roboto Condensed","Arial Narrow",sans-serif;
  --cut:18px;
}
*{box-sizing:border-box}
/* The ?dev=1 gate hides internal test surfaces with the [hidden] attribute, but the
   UA rule [hidden]{display:none} is only (0,1,0) — a plain class like index.html's
   .setup{display:flex} ties it and wins as author CSS, so the dev relay/room/role
   console rendered for players. Make [hidden] authoritative site-wide. */
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{
  background:var(--bg); color:var(--ink); position:relative; overflow-x:hidden;
  font-family:"Segoe UI",-apple-system,Roboto,"Microsoft YaHei",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
/* clean deep base — near-black with ONE warm KO glow (low-centre, behind the CTA)
   + a faint cool rim. No photo wash. */
body::before{ content:""; position:fixed; inset:0; z-index:-2; background:
  radial-gradient(1200px 560px at 50% 119%, rgba(255,106,22,.16), transparent 58%),
  radial-gradient(1000px 640px at 88% -14%, rgba(70,92,160,.12), transparent 56%),
  linear-gradient(180deg,#0a0c15,#08090f 58%,#06070c); }
/* fine HUD grid, faded toward the edges + soft top glow scanlines */
body::after{ content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background-image:
    linear-gradient(rgba(150,180,255,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(150,180,255,.045) 1px, transparent 1px);
  background-size:50px 50px;
  -webkit-mask-image:radial-gradient(125% 95% at 50% 32%, #000 0%, rgba(0,0,0,.45) 48%, transparent 82%);
  mask-image:radial-gradient(125% 95% at 50% 32%, #000 0%, rgba(0,0,0,.45) 48%, transparent 82%); }
.shell{max-width:1080px;margin:0 auto;padding:0 20px 60px;position:relative}
.display{font-family:var(--disp);font-weight:700;letter-spacing:.5px;line-height:.98}
.kicker{font-family:var(--disp);font-size:12px;letter-spacing:3px;text-transform:uppercase;color:var(--accent2)}
.muted{color:var(--muted)} .faint{color:var(--faint)}

/* ---- top nav (slim) ---- */
/* min-height, not height: the nav wraps on narrow screens (brand row + links row) and a
   fixed height made the second row overflow onto the hero. */
.nav{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;min-height:64px;padding:6px 0;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand svg{filter:drop-shadow(0 3px 10px rgba(255,106,22,.55))}
.brand .wm{font-family:var(--disp);font-weight:700;font-size:21px;letter-spacing:2.5px;white-space:nowrap}
.brand .wm .x{color:var(--accent2)}
.brand .sep{width:1px;height:20px;background:var(--line2);margin:0 4px}
.brand .mode{font-family:var(--disp);font-size:13px;letter-spacing:3px;color:var(--muted);text-transform:uppercase}
.links{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.links a{font-family:var(--disp);font-size:14px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--muted);text-decoration:none;padding:8px 14px;position:relative}
.links a:hover{color:var(--ink)}
.links a.cur{color:var(--accent2)}
.links a.cur::after{content:"";position:absolute;left:14px;right:14px;bottom:2px;height:2px;background:var(--accent)}
.addr{font-family:Consolas,monospace;font-size:12px;color:var(--muted);
  border:1px solid var(--line);padding:6px 10px;background:rgba(0,0,0,.3)}

/* ---- angular button ---- */
.btn{cursor:pointer;font-family:var(--disp);font-size:15px;letter-spacing:2px;text-transform:uppercase;
  border:1px solid var(--line2);background:rgba(255,255,255,.04);color:var(--ink);
  padding:11px 22px;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  transition:background .15s,color .15s,transform .08s}
.btn:hover{background:rgba(255,255,255,.09);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.btn.primary{border:none;color:var(--accent-ink);font-weight:700;
  background:linear-gradient(100deg,var(--accent2),var(--accent));
  box-shadow:0 10px 26px rgba(255,106,22,.4)}
.btn.primary:hover{box-shadow:0 14px 34px rgba(255,106,22,.55)}
.btn.ghost{background:transparent}

/* ---- panel (angular, accent top strip) ---- */
.panel{position:relative;padding:22px 24px;
  background:linear-gradient(180deg,var(--panel-top),var(--panel));
  clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, 0 100%);}
.panel.cut-l{clip-path:polygon(var(--cut) 0, 100% 0, 100% 100%, 0 100%, 0 var(--cut))}
.panel::before{content:"";position:absolute;left:0;top:0;height:3px;width:64px;background:var(--accent)}
.panel + .panel{margin-top:16px}
.panel h2{margin:0 0 14px;font-family:var(--disp);font-size:15px;letter-spacing:3px;
  text-transform:uppercase;color:var(--muted);font-weight:700}

/* ---- hero band ---- */
.hero{position:relative;margin-top:8px;min-height:300px;overflow:hidden;
  border:1px solid rgba(255,255,255,.06);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 26px),calc(100% - 26px) 100%,0 100%);
  background:
    radial-gradient(680px 280px at 50% 128%, rgba(255,106,22,.16), transparent 62%),
    radial-gradient(520px 360px at 10% 0%, rgba(80,150,210,.07), transparent 60%),
    linear-gradient(180deg,rgba(20,24,40,.45),rgba(6,8,15,.55))}
/* thin accent line top-left */
.hero::after{content:"";position:absolute;top:0;left:0;height:2px;width:130px;z-index:4;
  background:linear-gradient(90deg,var(--accent),transparent)}
.hero .fighter{position:absolute;bottom:-12px;height:332px;width:auto;pointer-events:none;opacity:.92;
  filter:saturate(.96) drop-shadow(0 6px 26px rgba(0,0,0,.55))}
.hero .fighter.left{left:-22px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 42%);mask-image:linear-gradient(90deg,transparent,#000 42%)}
.hero .fighter.right{right:-22px;-webkit-mask-image:linear-gradient(270deg,transparent,#000 42%);mask-image:linear-gradient(270deg,transparent,#000 42%)}
.hero-core{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;
  gap:34px;padding:34px 24px;flex-wrap:wrap;text-align:center}
/* moving light sweep */
.hud-sweep{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}
.hud-sweep::before{content:"";position:absolute;top:-50%;left:-40%;width:42%;height:200%;
  transform:skewX(-18deg);background:linear-gradient(100deg,transparent,rgba(255,190,110,.08),transparent);
  animation:sweep 7.5s ease-in-out infinite}
@keyframes sweep{0%{left:-45%}55%,100%{left:135%}}
/* corner brackets (HUD frame) */
.brk{position:absolute;width:26px;height:26px;pointer-events:none;z-index:4;opacity:.75}
.brk.tl{top:12px;left:12px;border-top:2px solid var(--accent);border-left:2px solid var(--accent)}
.brk.tr{top:12px;right:12px;border-top:2px solid var(--accent2);border-right:2px solid var(--accent2)}
.brk.bl{bottom:14px;left:12px;border-bottom:2px solid var(--accent2);border-left:2px solid var(--accent2)}
.brk.br{bottom:14px;right:12px;border-bottom:2px solid var(--accent);border-right:2px solid var(--accent)}

/* ---- rank emblem (hex) ---- */
.emblem{--tier:#6b7699;--glow:rgba(120,140,200,.4);width:150px;height:150px;position:relative;flex:0 0 auto}
.emblem svg{width:100%;height:100%;filter:drop-shadow(0 0 20px var(--glow));animation:emblemGlow 3.6s ease-in-out infinite}
@keyframes emblemGlow{50%{filter:drop-shadow(0 0 34px var(--glow))}}
.emblem .hex-fill{fill:rgba(10,14,24,.85)}
.emblem .hex-stroke{stroke:var(--tier);stroke-width:4;fill:none}
.emblem .hex-inner{stroke:var(--tier);stroke-width:1.5;fill:none;opacity:.5}
.emblem .sigil{fill:var(--tier)}
.emblem .roman{font-family:var(--disp);font-weight:700;fill:var(--accent2);font-size:30px;letter-spacing:2px}
.t-iron .emblem,.emblem.t-iron{--tier:var(--t-iron);--glow:rgba(144,149,163,.4)}
.t-bronze .emblem,.emblem.t-bronze{--tier:var(--t-bronze);--glow:rgba(207,131,71,.45)}
.t-silver .emblem,.emblem.t-silver{--tier:var(--t-silver);--glow:rgba(205,214,230,.4)}
.t-gold .emblem,.emblem.t-gold{--tier:var(--t-gold);--glow:rgba(255,201,68,.5)}
.t-plat .emblem,.emblem.t-plat{--tier:var(--t-plat);--glow:rgba(54,230,200,.5)}
.t-diamond .emblem,.emblem.t-diamond{--tier:var(--t-diamond);--glow:rgba(84,181,255,.55)}
.t-master .emblem,.emblem.t-master{--tier:var(--t-master);--glow:rgba(184,115,255,.55)}
.t-grand .emblem,.emblem.t-grand{--tier:var(--t-grand);--glow:rgba(255,92,112,.55)}
.t-chall .emblem,.emblem.t-chall{--tier:var(--t-chall);--glow:rgba(255,217,90,.6)}

.rank-meta{text-align:left;min-width:230px}
.rank-meta .tname{font-family:var(--disp);font-size:40px;font-weight:700;line-height:1;
  color:var(--tier,#e6ecff)}
.t-iron .tname{color:var(--t-iron)}.t-bronze .tname{color:var(--t-bronze)}.t-silver .tname{color:var(--t-silver)}
.t-gold .tname{color:var(--t-gold)}.t-plat .tname{color:var(--t-plat)}.t-diamond .tname{color:var(--t-diamond)}
.t-master .tname{color:var(--t-master)}.t-grand .tname{color:var(--t-grand)}.t-chall .tname{color:var(--t-chall)}
.lpbar{height:10px;background:rgba(0,0,0,.5);border:1px solid var(--line);overflow:hidden;margin:12px 0 7px;max-width:280px;
  clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.lpbar>span{display:block;height:100%;width:0%;background:linear-gradient(90deg,var(--accent2),var(--accent));
  box-shadow:0 0 12px rgba(255,106,22,.6);transition:width .5s cubic-bezier(.2,.8,.2,1)}

/* ---- stats strip ---- */
.strip{display:flex;gap:2px;margin-top:14px;flex-wrap:wrap}
.strip .cell{flex:1;min-width:90px;background:rgba(12,16,26,.8);border-top:2px solid var(--line2);
  padding:14px 16px;text-align:center}
.strip .cell .v{font-family:var(--disp);font-size:26px;font-weight:700}
.strip .cell .k{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);margin-top:2px}
.strip .cell.accent{border-top-color:var(--accent)}
.strip .cell .v.win{color:var(--ok)} .strip .cell .v.lose{color:var(--err)}

/* ---- chips / pills ---- */
.chips{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--disp);font-size:13px;letter-spacing:1.5px;
  text-transform:uppercase;color:var(--muted);padding:7px 13px;background:rgba(0,0,0,.32);border:1px solid var(--line)}
.chip .n{color:var(--accent2);font-weight:700;font-variant-numeric:tabular-nums}
.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 9px var(--ok)}

/* ---- cta ---- */
.cta{width:100%;font-family:var(--disp);font-size:22px;font-weight:700;letter-spacing:6px;text-transform:uppercase;
  color:var(--accent-ink);border:none;cursor:pointer;padding:20px 0;
  background:linear-gradient(100deg,var(--accent2),var(--accent));
  clip-path:polygon(16px 0,100% 0,calc(100% - 16px) 100%,0 100%);
  box-shadow:0 12px 30px rgba(255,106,22,.4)}
.cta:hover{box-shadow:0 16px 44px rgba(255,106,22,.6)}
.cta:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.4)}
.cta.live{animation:pulse 2.2s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 12px 50px rgba(255,106,22,.8)}}
.queuebox{display:none;text-align:center;color:var(--muted);font-size:14px;margin-top:14px;font-family:var(--disp);letter-spacing:1px}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--accent2);border-top-color:transparent;
  border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---- inputs / table ---- */
input,select{background:rgba(0,0,0,.4);border:1px solid var(--line);color:var(--ink);padding:10px 12px;font-size:14px;outline:none}
input:focus,select:focus{border-color:rgba(255,194,74,.55)}
label{font-family:var(--disp);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--faint)}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);font-size:14px}
th{font-family:var(--disp);color:var(--faint);font-size:12px;letter-spacing:2px;text-transform:uppercase}
tr:last-child td{border-bottom:none}
.tag-mode{font-family:var(--disp);font-size:11px;letter-spacing:1px;padding:3px 9px;border:1px solid var(--line)}
.tag-mode.ranked{color:var(--accent2);border-color:rgba(255,194,74,.4)}
.tag-mode.casual{color:#9fd0ff;border-color:rgba(90,140,255,.35)}
.empty{color:var(--faint);text-align:center;padding:28px 6px;font-family:var(--disp);letter-spacing:1px}

/* ---- status / misc ---- */
.status{margin-top:14px;font-size:13px;color:var(--muted);min-height:18px}
.status.ok{color:#7be0a4}.status.err{color:var(--err)}.status.warn{color:var(--warn)}
.note{color:var(--faint);font-size:12px;line-height:1.7;margin-top:14px}
.fade-in{animation:fade .5s ease both}@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ok{color:#7be0a4}.warn{color:var(--warn)}.err{color:var(--err)}
code{background:rgba(0,0,0,.4);border:1px solid var(--line);padding:1px 6px;font-size:12px;font-family:Consolas,monospace}
/* ---- footer (brand + socials + studio credit; same on every page) ---- */
.foot{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;
  margin-top:36px;padding-top:15px;border-top:1px solid var(--line);
  font-family:var(--disp);font-size:12px;letter-spacing:1.6px;text-transform:uppercase;color:var(--faint)}
.foot .fl,.foot .fr{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.foot .fbrand{color:var(--muted);font-weight:700;letter-spacing:2.5px}
.foot a{color:var(--faint);text-decoration:none;transition:color .15s}
.foot a:hover{color:var(--accent2)}
.foot .slink{display:inline-flex;align-items:center;gap:7px}
.foot .slink svg{opacity:.9}
/* chart link before the token is live: readable, not clickable, same box */
.foot .slink.pending{opacity:.5;cursor:default}
.foot .slink.pending:hover{color:var(--faint)}
.foot .by{color:rgba(100,110,146,.75)}

/* ---- season prize-pool strip (ranked page) ---- */
.pitch{position:relative;margin-top:22px;padding:15px 20px 16px;
  background:linear-gradient(100deg,rgba(255,106,22,.11),rgba(12,16,26,.88) 52%);
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%)}
.pitch::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
.pitch p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.75}
.pitch .en{color:var(--faint);font-size:12px}
/* contract-address chip — filled in by token.js once TOKEN_CA is set */
.ca{display:inline-block;margin-top:10px;font-family:Consolas,monospace;font-size:11.5px;letter-spacing:.4px;
  color:var(--faint);border:1px solid var(--line);padding:5px 10px;background:rgba(0,0,0,.32);text-decoration:none}
a.ca:hover{color:var(--accent2);border-color:rgba(255,194,74,.4)}

@media(max-width:640px){.hero .fighter{height:240px;opacity:.5}.rank-meta .tname{font-size:32px}.cta{letter-spacing:3px;font-size:18px}}
