:root{
  --bg:#0f1117; --card:#171a23; --ink:#e8eaf0; --muted:#9aa0b0;
  --accent:#5b8cff; --accent2:#7c5bff; --line:#262a36;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--font); color:var(--ink);
  background:radial-gradient(1200px 600px at 50% -10%,#1b2030 0%,var(--bg) 60%);
  min-height:100vh; -webkit-font-smoothing:antialiased;
}

/* ---- Bio card ---- */
.card{
  max-width:520px; margin:0 auto; padding:40px 24px 56px; text-align:center;
}
.avatar{
  width:108px;height:108px;border-radius:50%;margin:8px auto 18px;
  display:grid;place-items:center;font-size:38px;font-weight:700;letter-spacing:1px;
  color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 10px 30px rgba(91,140,255,.35);
}
.avatar.sm{width:54px;height:54px;font-size:18px;margin:0}
.avatar.photo{padding:0;object-fit:cover;background:#1f2433;border:2px solid rgba(255,255,255,.12)}
.avatar.sm.photo{flex:0 0 auto}
.card h1{margin:0 0 4px;font-size:30px;line-height:1.1}
.title{margin:0 0 18px;color:var(--accent);font-weight:600}
.tags{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:22px}
.tag{
  font-size:12px;padding:5px 11px;border-radius:999px;
  background:#1f2433;border:1px solid var(--line);color:var(--muted)
}
.bio{
  color:var(--ink);opacity:.92;line-height:1.65;font-size:16px;
  max-width:42ch;margin:0 auto 26px;text-align:left
}
.links{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:30px}
.link{
  text-decoration:none;font-weight:600;font-size:14px;color:var(--ink);
  padding:10px 16px;border-radius:10px;border:1px solid var(--line);background:#1c2130;
  transition:transform .08s ease,border-color .2s ease
}
.link:hover{transform:translateY(-1px);border-color:var(--accent)}
.qr{margin:8px auto 14px}
.qr img{
  background:#fff;padding:10px;border-radius:12px;width:120px;height:120px;
  box-shadow:0 6px 20px rgba(0,0,0,.4)
}
.qr figcaption{color:var(--muted);font-size:12px;margin-top:6px}
.qr-num{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;text-align:center}
.qr .qr-num{color:var(--ink);font-size:14px;letter-spacing:3px;margin-top:8px}
.code{color:var(--muted);font-size:13px;letter-spacing:.3px}
.code code{color:var(--ink);background:#1c2130;padding:2px 8px;border-radius:6px;border:1px solid var(--line)}
.back{margin-top:20px}
.back a,.foot a{color:var(--accent);text-decoration:none}
.back a:hover,.foot a:hover{text-decoration:underline}

/* ---- Directory ---- */
.dir{max-width:760px;margin:0 auto;padding:44px 20px 60px}
.dir-head{text-align:center;margin-bottom:30px}
.dir-head h1{font-size:32px;margin:0 0 6px}
.dir-head p{color:var(--muted);margin:0}
.dir-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.dir-card{
  display:flex;gap:14px;align-items:center;text-decoration:none;color:inherit;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;
  transition:transform .08s ease,border-color .2s ease
}
.dir-card:hover{transform:translateY(-2px);border-color:var(--accent)}
.dir-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.dir-name{font-weight:700}
.dir-title{color:var(--accent);font-size:13px}
.dir-code{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.foot{text-align:center;margin-top:34px}

/* ---- Print sheet ---- */
.print{background:#fff;color:#111}
.print-head{max-width:760px;margin:0 auto;padding:28px 20px 6px}
.print-head h1{margin:0 0 8px}
.print-head p{color:#444;line-height:1.55;max-width:60ch}
/* White framed panel: solid white background + padding gives extra quiet zone
   beyond the code's own margin, and the thin frame is a cut/placement guide. */
.qr-panel{
  background:#fff;border:1.5px solid #111;border-radius:6px;
  padding:10px;margin:0 auto 8px;width:max-content
}
.qr-panel img{display:block;width:150px;height:150px}
.qr-panel .qr-num{color:#111;font-size:13px;letter-spacing:3px;margin-top:6px}
.qr-panel.big .qr-num.big{font-size:22px;letter-spacing:6px;margin-top:12px}

/* ---- Shirt sheet: photo + front & back QR, one page per person ---- */
.big-label{
  text-align:center;break-after:page;page-break-after:always;
  padding:20px 0;display:flex;flex-direction:column;align-items:center
}
.big-label:last-child{break-after:auto;page-break-after:auto}
.big-head{display:flex;gap:16px;align-items:center;justify-content:center;margin-bottom:20px}
.big-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;border:2px solid #ddd}
.big-meta{text-align:left}
.big-name{font-weight:800;font-size:26px}
.big-title{color:#555;font-size:15px;margin-top:2px}
.big-code{font-size:12px;color:#666;margin-top:8px;word-break:break-all}
.big-qrs{display:flex;gap:24px;justify-content:center;align-items:flex-start}
.big-qr{margin:0}
.big-qr figcaption{font-weight:800;font-size:15px;letter-spacing:3px;color:#111;margin-top:8px}
.qr-panel.big{padding:14px;border-width:2px}
.qr-panel.big img{width:85mm;height:85mm}

/* ---- Admin ---- */
.adm{max-width:920px;margin:0 auto;padding:40px 20px 60px}
.adm-head h1{margin:0 0 6px;font-size:28px}
.adm-head p{color:var(--muted);margin:0 0 24px;max-width:60ch}
.adm-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}
.adm-btn{
  text-decoration:none;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  padding:14px 18px;border-radius:12px;display:flex;align-items:center;gap:8px;
  box-shadow:0 8px 22px rgba(91,140,255,.3)
}
.adm-btn small{font-weight:500;opacity:.85}
.adm-btn.ghost{background:#1c2130;color:var(--ink);border:1px solid var(--line);box-shadow:none}
.adm-table{width:100%;border-collapse:collapse;font-size:14px}
.adm-table th{
  text-align:left;color:var(--muted);font-weight:600;font-size:12px;
  text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:1px solid var(--line)
}
.adm-table td{padding:14px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.adm-note{color:var(--muted);font-size:13px;line-height:1.55;max-width:70ch;margin:0 0 16px}
.a-variants{display:flex;gap:14px;flex-wrap:wrap}
.qv{margin:0;text-align:center}
.qv img{width:84px;height:84px;background:#fff;padding:4px;border-radius:8px;display:block}
.qv figcaption{color:var(--muted);font-size:11px;margin-top:5px;text-transform:uppercase;letter-spacing:.5px}
.badge{display:block;margin-top:3px;font-size:10px;letter-spacing:0;text-transform:none;padding:1px 6px;border-radius:999px}
.badge.ok{background:rgba(76,175,80,.15);color:#7ed492;border:1px solid rgba(76,175,80,.35)}
.badge.warn{background:rgba(255,170,0,.12);color:#ffc24d;border:1px solid rgba(255,170,0,.35)}
.a-name{font-weight:700}
.a-title{color:var(--accent);font-size:12px}
.a-code{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px;margin-top:4px}
.a-url{margin-top:2px}
.adm-table a{color:var(--accent);text-decoration:none;word-break:break-all}
.adm-table a:hover{text-decoration:underline}
.adm-foot{color:var(--muted);font-size:12px;margin-top:18px}

@media print{
  .no-print{display:none}
  @page{margin:12mm}
}
