:root{
  --ink:#07080a; --plate:#101318; --line:#242a33; --line-2:#39424f;
  --hi:#ffd60a; --text:#e9edf3; --mute:#79828f; --bad:#ff4d5e;
  --pad: env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html,body{height:100%}
body{
  background:var(--ink); color:var(--text);
  font-family:Archivo,system-ui,-apple-system,Segoe UI,sans-serif;
  -webkit-font-smoothing:antialiased; overflow:hidden;
}
#arena{position:fixed;inset:0;width:100%;height:100%;display:none}
#arena.on{display:block}

.chamfer,.key,.opt,.set,.row,.bar,.status,.pick,.toast{
  clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);
}

/* ---------- screens ---------- */
.screen{position:fixed;inset:0;display:none;flex-direction:column;z-index:2}
.screen.on{display:flex}
.screen.sheet{z-index:5;background:var(--ink)}
#s-lobby{pointer-events:none;background:none}
/* welcome: the board keeps the top of the screen, the wordmark and keys the bottom */
body:has(#s-welcome.on) #arena{bottom:auto;height:54svh}
#s-welcome .col{justify-content:flex-end;padding-bottom:26px}
/* landscape is too short to stack, so the board runs full height behind a fade */
@media (orientation:landscape){
  body:has(#s-welcome.on) #arena{height:100%}
  #s-welcome{background:linear-gradient(180deg,transparent 48%,var(--ink) 88%)}
}
#s-lobby .icon,#s-lobby .pad{pointer-events:auto}

.col{flex:1;width:min(520px,100%);margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:14px}
.col.center{justify-content:center;align-items:stretch;text-align:center}
.col.scroll{overflow-y:auto;min-height:0}

/* ---------- bar ---------- */
.bar{
  display:flex;align-items:center;gap:10px;
  background:var(--plate);border:1px solid var(--line);
  margin:12px 12px 0;padding:8px 12px;
}
.bar-title{flex:1;text-align:center;font-size:12px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}
.bar .icon{margin:0}

.icon{
  font:inherit;font-size:14px;line-height:1;background:var(--plate);
  border:1px solid var(--line);color:var(--text);width:36px;height:34px;cursor:pointer;
}
.icon.corner{position:fixed;top:12px;right:12px;z-index:3}
.icon:focus-visible,.key:focus-visible,.opt:focus-visible,input:focus-visible{outline:2px solid var(--hi);outline-offset:2px}

/* ---------- welcome ---------- */
.mark{margin-bottom:6px;line-height:.92}
.mark-main{display:block;font-size:clamp(38px,12.5vw,72px);font-weight:900;letter-spacing:-.03em}
.lede{color:var(--mute);font-size:14px;line-height:1.5;margin:2px 0 18px}

/* ---------- keys ---------- */
.key{
  font:inherit;font-size:14px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
  background:var(--hi);color:#000;border:0;padding:15px 18px;width:100%;cursor:pointer;
}
.key.big{padding:17px 18px}
.key.ghost{background:var(--plate);color:var(--text);border:1px solid var(--line-2)}
.key.danger{background:var(--plate);color:var(--bad);border:1px solid var(--bad)}
.key[disabled]{opacity:.4;cursor:default}
.key.lit{box-shadow:0 0 0 2px var(--hi) inset,0 0 24px rgba(255,214,10,.35)}

/* ---------- settings ---------- */
.set{background:var(--plate);border:1px solid var(--line);padding:12px 12px 14px}
.set legend{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--hi);padding:0 4px}
.opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.opts.col-opts{flex-direction:column}
.opt{
  font:inherit;font-size:13px;font-weight:700;background:#0b0e13;color:var(--mute);
  border:1px solid var(--line-2);padding:10px 14px;cursor:pointer;flex:1 0 auto;
}
.opt.on{background:var(--hi);color:#000;border-color:var(--hi)}
.custom{display:flex;align-items:center;gap:10px;margin-top:10px;color:var(--mute);font-size:13px}
.custom input{width:100%}

input{
  font:inherit;font-size:16px;font-weight:900;background:#0b0e13;color:var(--text);
  border:1px solid var(--line-2);padding:12px 14px;width:100%;
}
input::placeholder{color:#39424f}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.code-in{text-align:center;font-size:34px;letter-spacing:.34em;text-transform:uppercase;padding:20px 10px}
.hint{color:var(--mute);font-size:12px;text-align:center}
.hint.bad{color:var(--bad)}

/* ---------- rows ---------- */
.row{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:var(--plate);border:1px solid var(--line);padding:12px 14px;
}
.row .k{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.row .v{font-size:15px;font-weight:900}
.row .v.code{color:var(--hi);letter-spacing:.16em}
.row .v.small{font-size:11px;font-weight:700;color:var(--mute);word-break:break-all;text-align:right}

/* ---------- bottom pad ---------- */
.pad{
  width:min(520px,100%);margin:0 auto;
  padding:12px 16px calc(12px + var(--pad));
}
.pick{
  position:fixed;left:0;right:0;bottom:0;width:100%;
  background:var(--plate);border-top:1px solid var(--line);
  padding:12px 16px calc(14px + var(--pad));
}
.read{min-height:18px;margin:0 0 8px;text-align:center;font:700 12px/1.4 Archivo,sans-serif;
  letter-spacing:.16em;text-transform:uppercase;color:var(--hi)}
.mark{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;
  border:1px solid #242b36;background:#0f141b;margin-bottom:8px}
.mark .nm{flex:1;font-weight:700}
.mark .band{font-size:12px;letter-spacing:.08em;color:var(--dim)}
.mark.aim{border-color:var(--hi);box-shadow:0 0 18px rgba(255,214,10,.15) inset}
.mark.turn .nm{color:var(--hi)}
.mark.out{opacity:.45}
.mark.me{cursor:default}
.open-head{display:flex;align-items:baseline;justify-content:space-between;
  max-width:520px;margin:18px auto 8px;font:700 11px/1 Archivo,sans-serif;
  letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.link-key{background:none;border:0;padding:0;cursor:pointer;color:var(--hi);
  font:700 11px/1 Archivo,sans-serif;letter-spacing:.18em;text-transform:uppercase}
.open{max-width:520px;margin:0 auto;width:100%}
.open-room{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:12px;margin-bottom:8px;border:1px solid #242b36;background:#0f141b;cursor:pointer}
.open-room:hover{border-color:var(--hi)}
.open-room .who{flex:1;font-weight:700}
.open-room .meta{font-size:12px;letter-spacing:.06em;color:var(--dim)}
.open-room .tag{font:700 10px/1 Archivo,sans-serif;letter-spacing:.14em;text-transform:uppercase;
  color:#0b0d10;background:var(--hi);padding:4px 7px}
.or{max-width:520px;margin:18px auto 10px;text-align:center;position:relative;
  font:700 11px/1 Archivo,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.or:before{content:'';position:absolute;left:0;right:0;top:50%;border-top:1px solid #242b36}
.or span{position:relative;background:var(--bg);padding:0 10px}
.name-in{width:100%;max-width:520px;margin:0 auto;display:block;text-align:center;
  font-size:18px;letter-spacing:.04em}
#s-join .read{min-height:18px;margin:0 0 8px;text-align:center;font:700 12px/1.4 Archivo,sans-serif;
  letter-spacing:.16em;text-transform:uppercase;color:var(--hi)}
.mark{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;
  border:1px solid #242b36;background:#0f141b;margin-bottom:8px}
.mark .nm{flex:1;font-weight:700}
.mark .band{font-size:12px;letter-spacing:.08em;color:var(--dim)}
.mark.aim{border-color:var(--hi);box-shadow:0 0 18px rgba(255,214,10,.15) inset}
.mark.turn .nm{color:var(--hi)}
.mark.out{opacity:.45}
.mark.me{cursor:default}
.open-head{display:flex;align-items:baseline;justify-content:space-between;
  max-width:520px;margin:18px auto 8px;font:700 11px/1 Archivo,sans-serif;
  letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.link-key{background:none;border:0;padding:0;cursor:pointer;color:var(--hi);
  font:700 11px/1 Archivo,sans-serif;letter-spacing:.18em;text-transform:uppercase}
.open{max-width:520px;margin:0 auto;width:100%}
.open-room{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:12px;margin-bottom:8px;border:1px solid #242b36;background:#0f141b;cursor:pointer}
.open-room:hover{border-color:var(--hi)}
.open-room .who{flex:1;font-weight:700}
.open-room .meta{font-size:12px;letter-spacing:.06em;color:var(--dim)}
.open-room .tag{font:700 10px/1 Archivo,sans-serif;letter-spacing:.14em;text-transform:uppercase;
  color:#0b0d10;background:var(--hi);padding:4px 7px}
.or{max-width:520px;margin:18px auto 10px;text-align:center;position:relative;
  font:700 11px/1 Archivo,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.or:before{content:'';position:absolute;left:0;right:0;top:50%;border-top:1px solid #242b36}
.or span{position:relative;background:var(--bg);padding:0 10px}
.name-in{margin-bottom:12px}
.skins{display:flex;gap:6px;overflow-x:auto;max-width:520px;margin:0 auto 10px;
  padding-bottom:2px;scrollbar-width:none}
.skins::-webkit-scrollbar{display:none}
.skin{flex:0 0 auto;padding:6px 12px;font:700 11px/1 Archivo,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);background:#0f141b;border:1px solid #242b36;
  cursor:pointer;white-space:nowrap}
.skin.on{color:var(--hi);border-color:var(--hi)}
.skin[disabled]{opacity:.45;cursor:default}
.pick-label{display:block;font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--hi);margin-bottom:8px}
.pick-row{display:flex;gap:10px;max-width:520px;margin:0 auto}
.pick-in{flex:1;text-align:center;font-size:22px;letter-spacing:.06em}
.pick-in.lit{border-color:var(--hi);color:var(--hi);box-shadow:0 0 22px rgba(255,214,10,.2) inset}
.pick-row .key{width:auto;min-width:120px}

/* ---------- status ---------- */
.status{
  position:fixed;top:12px;left:50%;transform:translateX(-50%);
  background:var(--plate);border:1px solid var(--line);
  padding:10px 16px;max-width:min(70vw,460px);text-align:center;
  font-size:13px;font-weight:700;z-index:3;
}

/* ---------- seat rail ---------- */
.rail{
  position:fixed;left:0;right:0;bottom:calc(112px + var(--pad));
  display:flex;flex-wrap:wrap;gap:6px;justify-content:center;padding:0 12px;z-index:3;
}
.seat{
  display:flex;align-items:center;gap:7px;background:var(--plate);
  border:1px solid var(--line);padding:5px 10px 5px 5px;
  clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
}
.seat .dot{width:16px;height:16px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 2px rgba(0,0,0,.35)}
.seat .nm{font-size:11px;font-weight:700}
.seat .st{font-size:9px;font-weight:900;letter-spacing:.14em;color:var(--mute)}
.seat.ready{border-color:var(--hi)}
.seat.ready .st{color:var(--hi)}
.seat.open{opacity:.45}
.seat.open .dot{background:none;box-shadow:inset 0 0 0 2px var(--line-2)}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(120px + var(--pad));transform:translateX(-50%);
  background:var(--plate);border:1px solid var(--hi);color:var(--hi);
  padding:10px 16px;font-size:12px;font-weight:700;letter-spacing:.06em;z-index:6;
}

@media (max-width:520px){
  .pick-row .key{min-width:96px}
  .status{max-width:78vw;font-size:12px}
}
@media (prefers-reduced-motion: reduce){ *{animation:none!important;transition:none!important} }
