/* ============================================================
   EQ OPS — shared staff UI
   Poster look, matched to the attendee page: paper ground, white
   cards, ink borders, hard offset shadows, xerox grain, electric
   accent. Reads great in a lit room. Accent + fonts come from
   event.js (window.EV) so the whole thing re-skins per edition.
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wdth,wght@12..96,75..100,200..800&family=Archivo:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&family=Permanent+Marker&display=swap');

:root{
  --blue:#2A13FF;          /* accent — overridden by event.js */
  --blue-soft:#4C3BFF;
  --blue-deep:#000083;
  --ink:#231F20;
  --paper:#EDECE9;
  --panel:#FFFFFF;         /* cards are white paper */
  --panel-2:#F4F3F0;       /* insets / inputs / muted rows */
  --line:#D8D6D2;
  --white:#FFFFFF;
  --dim:#5A5859;
  --good:#1E7F4B;
  --warn:#B5480A;
  --bad:#C0392B;
  --display:'Bricolage Grotesque','Archivo Black',Impact,sans-serif;
  --mono:'Space Mono',ui-monospace,monospace;
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.30'/%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:'Archivo',system-ui,sans-serif;font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
/* xerox grain over the whole page */
body::before{content:'';position:fixed;inset:0;z-index:0;pointer-events:none;
  opacity:.5;mix-blend-mode:multiply;background-image:var(--grain);}
body>*{position:relative;z-index:1;}
a{color:var(--blue);}
img{display:block;max-width:100%;}

/* event lockup for launcher + sign-in */
.eqlock{display:inline-flex;align-items:flex-start;gap:9px;line-height:1;}
.eqlock .eq{font-family:var(--display);font-weight:800;font-stretch:78%;text-transform:uppercase;
  line-height:.8;background:var(--blue);color:#fff;padding:.04em .1em;transform:rotate(-2deg);
  box-shadow:4px 4px 0 var(--ink);}
.eqlock .no2{font-family:'Permanent Marker',cursive;color:#fff;background:var(--blue);
  padding:2px 8px;transform:rotate(4deg);font-size:.34em;margin-top:.12em;box-shadow:2px 2px 0 var(--ink);}

/* ---------- shell ---------- */
.bar{
  position:sticky;top:0;z-index:50;display:flex;gap:14px;align-items:center;
  padding:12px 18px;background:var(--ink);color:#fff;
  border-bottom:3px solid var(--blue);box-shadow:0 4px 0 rgba(35,31,32,.14);
}
.bar .logo{display:inline-flex;align-items:flex-start;gap:7px;filter:drop-shadow(2px 2px 0 rgba(0,0,0,.35));
  text-decoration:none;cursor:pointer;transition:transform .1s ease;}
a.bar .logo,.bar a.logo:hover{transform:translateY(-1px);}
.bar a.logo:active{transform:translate(1px,1px);}
.bar .logo .eq{font-family:var(--display);font-weight:800;font-stretch:78%;font-size:1.1rem;
  text-transform:uppercase;background:var(--blue);color:#fff;padding:4px 7px;transform:rotate(-2deg);line-height:.9;}
.bar .logo .no2{font-family:'Permanent Marker',cursive;font-size:.72rem;color:#fff;background:var(--blue);
  padding:1px 6px;transform:rotate(3deg);margin-top:1px;}
.bar nav{display:flex;gap:5px;flex-wrap:wrap;margin-left:8px;}
.bar nav a{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;
  text-decoration:none;color:#B8B6B4;padding:7px 11px;border:1px solid transparent;border-radius:6px;
  transition:color .12s ease,background .12s ease,border-color .12s ease;
}
.bar nav a:hover{color:#fff;border-color:#4A474D;}
.bar nav a[aria-current]{color:#fff;background:var(--blue);border-color:var(--blue);}
.bar .right{margin-left:auto;display:flex;gap:12px;align-items:center;}
.bar .who{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;color:#B8B6B4;text-transform:uppercase;}

.wrap{width:min(1240px,94vw);margin:0 auto;padding:26px 0 80px;}
h1{font-family:var(--display);font-weight:800;font-stretch:80%;text-transform:uppercase;
   font-size:clamp(1.7rem,4vw,2.6rem);line-height:.95;margin:0 0 5px;letter-spacing:.01em;color:var(--ink);}
.sub{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:0 0 24px;}
.sub::before{content:'';display:inline-block;width:22px;height:3px;background:var(--blue);
  vertical-align:middle;margin-right:9px;}

/* ---------- controls ---------- */
input,select,textarea{
  width:100%;font-family:'Archivo',sans-serif;font-size:1rem;color:var(--ink);
  background:var(--panel-2);border:1.5px solid var(--ink);border-radius:8px;padding:12px 13px;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(42,19,255,.18);}
input::placeholder,textarea::placeholder{color:#A9A7A3;}
label.fl{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--dim);margin:0 0 6px;}
.field{margin-bottom:16px;}

.btn{
  font-family:var(--display);font-weight:800;font-stretch:84%;text-transform:uppercase;
  font-size:.95rem;letter-spacing:.02em;padding:13px 20px;border:0;border-radius:9px;
  background:var(--blue);color:#fff;cursor:pointer;line-height:1;
  box-shadow:3px 3px 0 var(--ink);
  transition:transform .1s ease,box-shadow .1s ease;
}
.btn:hover{filter:brightness(1.06);}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink);}
.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;background:#C9C7C3;color:#8A8884;}
.btn.ghost{background:#fff;border:1.5px solid var(--ink);color:var(--ink);box-shadow:2px 2px 0 rgba(35,31,32,.35);}
.btn.danger{background:#fff;border:1.5px solid var(--bad);color:var(--bad);box-shadow:2px 2px 0 rgba(35,31,32,.25);}
.btn.good{background:#fff;border:1.5px solid var(--good);color:var(--good);box-shadow:2px 2px 0 rgba(35,31,32,.25);}
.btn.sm{font-size:.78rem;padding:9px 13px;box-shadow:2px 2px 0 var(--ink);}
.btn.block{width:100%;}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px;}

/* ---------- panels ---------- */
.grid{display:grid;gap:18px;}
.cols-2{grid-template-columns:1fr 1fr;}
.cols-3{grid-template-columns:repeat(3,1fr);}
.panel{background:var(--panel);border:1.5px solid var(--ink);border-radius:12px;padding:20px 18px 18px;
  box-shadow:4px 4px 0 rgba(35,31,32,.12);}
.panel h2{display:inline-flex;align-items:center;gap:8px;
  font-family:var(--display);font-weight:800;font-stretch:84%;text-transform:uppercase;
  font-size:.92rem;letter-spacing:.02em;margin:0 0 16px;color:#fff;
  background:var(--blue);padding:6px 12px;border-radius:5px;transform:rotate(-1.5deg);
  box-shadow:2px 2px 0 var(--ink);}
.panel h2::before{content:'';width:8px;height:8px;background:#fff;flex:none;transform:rotate(-6deg);}

/* ---------- queue rows ---------- */
.row{
  display:flex;gap:13px;align-items:center;padding:11px;border:1.5px solid var(--ink);
  border-radius:10px;background:#fff;margin-bottom:9px;box-shadow:2px 2px 0 rgba(35,31,32,.1);
  transition:box-shadow .12s ease,transform .12s ease;
}
.row:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 rgba(35,31,32,.16);}
.row.live{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:4px 4px 0 var(--ink);}
.row.live .row .meta .sm,.row.live .meta .sm{color:#D9D3FF;}
.row.done{opacity:.5;box-shadow:none;}
.row .n{font-family:var(--display);font-weight:800;font-size:1.1rem;width:30px;text-align:center;color:var(--blue);flex:none;}
.row.live .n{color:#fff;}
.av{width:46px;height:46px;border-radius:7px;object-fit:cover;background:var(--panel-2);flex:none;border:1.5px solid var(--ink);}
.av.ph{display:grid;place-items:center;font-family:var(--display);font-size:1rem;color:var(--blue);}
.row .meta{min-width:0;flex:1;}
.row .nm{font-weight:700;font-size:1rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.row .meta .sm{font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;color:var(--dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;}
.row .acts{display:flex;gap:6px;flex:none;}

.tag{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
  padding:3px 7px;border-radius:4px;background:var(--ink);color:#fff;}
.tag.blue{background:var(--blue);}
.tag.good{background:#E3F3EA;color:var(--good);border:1px solid var(--good);}
.tag.warn{background:#FBEAD9;color:var(--warn);border:1px solid var(--warn);}
.tag.bad{background:#FBE3E0;color:var(--bad);border:1px solid var(--bad);}

.empty{padding:26px;text-align:center;color:var(--dim);font-family:var(--mono);
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;}

/* ---------- stat ---------- */
.stats{display:flex;gap:11px;flex-wrap:wrap;margin-bottom:20px;}
.stat{background:#fff;border:1.5px solid var(--ink);border-radius:10px;padding:12px 17px;
  box-shadow:3px 3px 0 rgba(35,31,32,.12);}
.stat b{display:block;font-family:var(--display);font-weight:800;font-size:1.7rem;line-height:1;color:var(--blue);}
.stat span{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);}

/* ---------- toggle ---------- */
.tog{display:flex;gap:9px;align-items:center;font-family:var(--mono);font-size:.68rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--dim);cursor:pointer;}
.tog input{width:auto;accent-color:var(--blue);}

/* ---------- toast ---------- */
#toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(140%);
  background:var(--ink);color:#fff;
  padding:13px 20px;border-radius:9px;z-index:999;font-weight:600;
  box-shadow:4px 4px 0 var(--blue);
  transition:transform .22s cubic-bezier(.2,.9,.3,1.2);max-width:90vw;text-align:center;
}
#toast.show{transform:translateX(-50%) translateY(0);}
#toast.err{box-shadow:4px 4px 0 var(--bad);}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}
@media (max-width:900px){ .cols-2,.cols-3{grid-template-columns:1fr;} }
@media (max-width:560px){
  .bar{flex-wrap:wrap;} .wrap{padding-top:16px;}
  .row{flex-wrap:wrap;} .row .acts{width:100%;}
  .row .acts .btn{flex:1;}
}
