@font-face {
  font-family: Grandstander;
  font-weight: 700;
  font-display: swap;
  src: url('/grandstander-700.woff2') format('woff2');
}
:root { color-scheme: light dark; --fg: light-dark(#111, #f4f2ec); --bg: light-dark(#fbfaf6, #0d0d0d); --muted: light-dark(#5c5b56, #aaa8a0); --line: light-dark(#c9c6bd, #403f3a);
  --wash: light-dark(#eceae2, #272725); --row: light-dark(#f4f2ec, #1e1e1c); --head: light-dark(#efede5, #1d1d1b); --edge: light-dark(#a9a69d, #55544f);
  --pop: light-dark(#d6249f, #ff7ac6); --danger: light-dark(#b42318, #ff8a80); --warn-bg: light-dark(#ffedd5, #2b1a0d); --warn-fg: light-dark(#7c2d12, #fdba74);
  --ok-bg: light-dark(#dcfce7, #0e2819); --ok-fg: light-dark(#14532d, #86efac);
  --ink: var(--fg); --paper: var(--bg); --green: var(--ok-fg);
  --body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --display: Grandstander, "Arial Rounded MT Bold", var(--body);
  --rainbow: linear-gradient(90deg, #e40303, #ff8c00, #ffed00, #008026, #24408e, #732982, #f5a9b8, #5bcefa);
  --rough: 14px 5px 12px 4px / 5px 12px 4px 13px; --rough-small: 7px 3px 6px 4px / 3px 6px 4px 7px; }
:root[data-theme="light"] { color-scheme: light; }
:root[data-theme="dark"] { color-scheme: dark; }
*{box-sizing:border-box}body{margin:0;background:var(--paper);font:15px/1.55 var(--body);color:var(--ink)}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}a{color:var(--fg)}button,.button{cursor:pointer;border:1px solid var(--line);border-radius:9px;padding:10px 16px;background:var(--bg);color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:12px;font-weight:650}button:hover,.button:hover{border-color:var(--fg);background:var(--wash)}button:disabled{opacity:.5;cursor:wait}.primary,.primary:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.quiet{background:transparent;border-color:transparent}.small{font-size:13px;padding:7px 10px}.eyebrow{font-weight:750;font-size:11px;letter-spacing:1.7px;color:var(--fg);margin:0 0 9px}h1{font-size:36px;line-height:1.2;letter-spacing:-1.3px;margin:0 0 10px}h2{font-size:21px;letter-spacing:-.5px;margin:0}h3{margin:0 0 8px;font-size:17px}p{margin:0 0 16px}.muted,small{color:var(--muted)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:32px}.page-head p{color:var(--muted);margin:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:34px}.stat{background:var(--bg);border:1px solid var(--line);border-radius:13px;padding:22px 24px}.stat strong{font-size:30px;display:block;line-height:1.4;letter-spacing:-1px}.stat label{font-size:12px;color:var(--muted)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.tabs{display:flex;gap:5px}.tabs button{background:transparent;border:0;font-size:13px;color:var(--muted)}.tabs button.active{background:var(--wash);color:var(--fg)}input[type=search]{width:250px}.card{background:var(--bg);border:1px solid var(--line);border-radius:14px;overflow:hidden}.event-row{display:flex;align-items:center;gap:22px;padding:24px;border-bottom:1px solid var(--line)}.event-row:last-child{border:0}.dateblock{flex-shrink:0;width:66px;height:70px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--wash);color:var(--fg)}.dateblock span{font-size:10px;font-weight:750;letter-spacing:1.4px}.dateblock strong{font-size:25px;line-height:1.3}.event-main{flex:1}.event-main h3 button{padding:0;border:0;background:none;font-size:18px;font-weight:750;text-align:left}.event-main p{font-size:12px;color:var(--muted);margin:5px 0 0}.badge{display:inline-block;font-size:10px;font-weight:750;padding:4px 9px;border-radius:99px;background:var(--wash);color:var(--fg);letter-spacing:.2px}.badge.live{background:var(--ok-bg);color:var(--green)}.badge.ended{background:var(--row);color:var(--muted)}.event-right{min-width:120px;text-align:right}.event-right small{display:block;font-size:11px}.empty{text-align:center;padding:60px 25px;color:var(--muted)}.banner{background:var(--warn-bg);border:1px solid var(--warn-fg);padding:12px 16px;border-radius:10px;margin-bottom:20px;font-size:13px}.section-nav{display:flex;gap:6px;margin:25px 0;border-bottom:1px solid var(--line);padding-bottom:12px}.section-nav button{border:0;background:transparent;color:var(--muted)}.section-nav button.active{background:var(--bg);color:var(--fg)}.panel{padding:28px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.full{grid-column:1/-1}label.field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650}input,textarea,select{border:1px solid var(--edge);background:var(--bg);color:var(--ink);border-radius:8px;padding:11px 12px;min-width:0}textarea{resize:vertical;min-height:130px}input:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid var(--pop);outline-offset:2px}.form-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.form-footer small{max-width:65%;font-weight:400}.split{display:grid;grid-template-columns:1.5fr 1fr;gap:24px}.info{background:var(--wash);border-radius:12px;padding:22px}.info p{font-size:13px}.list{padding:0;list-style:none}.list li{border-bottom:1px solid var(--line);padding:16px 0}.list li:last-child{border:0}.list li p{font-size:13px;margin:6px 0}.actions{display:flex;gap:10px;flex-wrap:wrap}.back{margin-left:-12px;margin-bottom:24px;font-size:12px}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);background:var(--head)}td,th{padding:15px 20px;border-bottom:1px solid var(--line)}tr:last-child td{border:0}.table-wrap{overflow:auto}details{font-size:12px}summary{cursor:pointer;color:var(--fg)}dl{display:grid;grid-template-columns:1fr 2fr;gap:8px}dt{font-weight:600}dd{margin:0;white-space:pre-wrap}.message-body{white-space:pre-wrap;background:var(--paper);border:1px solid var(--line);padding:18px;border-radius:10px;margin:20px 0}.login{max-width:650px;margin:10vh auto;padding:40px}.login h1{font-size:54px;margin:30px 0 20px}.login p{max-width:440px;color:var(--muted);font-size:17px}.login .eyebrow{font-size:11px;color:var(--fg)}.login .button{margin-top:18px;margin-bottom:20px;padding:14px 22px}.login small{display:block;font-size:12px}#notice{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:14px 22px;background:var(--ink);color:var(--bg);border-radius:10px;box-shadow:0 8px 30px rgb(0 0 0 / .2);max-width:90vw;z-index:10;display:none}#notice.show{display:block}dialog{border:1px solid var(--line);border-radius:16px;max-width:660px;width:calc(100% - 40px);padding:30px;box-shadow:0 20px 70px rgb(0 0 0 / .2)}dialog::backdrop{background:rgb(0 0 0 / .6)}dialog h2{margin-bottom:14px}dialog .actions{justify-content:flex-end;margin-top:25px}.recipient-list{max-height:130px;overflow:auto;padding:12px;background:var(--paper);font-size:12px}.loading{padding:50px;color:var(--muted)}.error{color:var(--danger)}.privacy-note{font-size:11px;color:var(--muted);margin-top:14px}.trail{font-size:12px;color:var(--muted);margin-bottom:20px}@media(max-width:1000px){.split{grid-template-columns:1fr}.event-right{min-width:80px}}@media(max-width:720px){.stats{gap:8px}.stat{padding:16px 12px}.stat strong{font-size:25px}.page-head{align-items:flex-start}h1{font-size:29px}.page-head .button{font-size:12px;padding:10px}.toolbar{align-items:stretch;flex-direction:column}.toolbar input{width:100%}.event-row{gap:14px;padding:20px 16px;flex-wrap:wrap}.event-right{margin-left:80px;text-align:left}.form-grid{grid-template-columns:1fr}.form-footer{align-items:flex-start;flex-direction:column}.form-footer small{max-width:100%}.panel{padding:20px}.login{margin:4vh auto;padding:30px}.login h1{font-size:42px}.section-nav{overflow:auto;white-space:nowrap}}

.event-banner{width:100%;max-height:400px;object-fit:contain;background:var(--paper);border-radius:10px;margin:12px 0 26px}.image-placeholder{aspect-ratio:2;display:grid;place-items:center;border:2px dashed var(--line);border-radius:10px;margin:12px 0 26px;color:var(--muted)}.upload-preview{display:block;max-width:100%;max-height:280px;object-fit:contain;margin:18px 0 8px;border-radius:8px}.image-gallery{display:grid;gap:16px}.image-gallery img{max-width:100%;max-height:300px;object-fit:contain;border-radius:8px}#image-guide{margin-top:16px}#image-status{font-size:13px;margin-top:16px}

.registration-controls{margin-bottom:18px}.registration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}.registration-controls input[type=search]{width:100%}.answer-filter{display:grid;grid-template-columns:minmax(160px,2fr) minmax(120px,1fr) minmax(140px,1fr) auto;gap:12px;align-items:end;padding:16px 0;border-top:1px solid var(--line)}.answer-column{min-width:220px;max-width:420px;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:900px){.answer-filter{grid-template-columns:1fr 1fr}}@media(max-width:600px){.registration-grid,.answer-filter{grid-template-columns:1fr}}

.registration-controls .field{min-width:0}.registration-controls select{width:100%;max-width:100%}

#registration-rows td{vertical-align:top}
.event-classification{margin-bottom:20px}
.event-classification dl{display:flex;gap:18px 36px;flex-wrap:wrap;margin:12px 0 0}
.event-classification dt{font-size:12px;color:var(--muted)}
.event-classification dd{margin-top:4px}
.ticket-list{display:grid;gap:20px}
.ticket-editor textarea{min-height:90px}


.event-header-actions{min-width:0;max-width:100%}
.page-head:has(.registration-qr:not([hidden])){align-items:flex-start}
.registration-qr{width:max-content;max-width:100%;margin-top:12px;padding:12px}
.registration-qr img{display:block;max-width:100%;height:auto;image-rendering:pixelated}
.registration-qr .actions{margin-top:8px}
#qr-status:not(:empty){max-width:240px;margin-top:8px;font-size:13px}
@media(max-width:720px){.page-head:has(.event-header-actions){flex-wrap:wrap}}

.login [hidden]{display:none}
#startup-status:empty{display:none}

.is-loading::before {
  content: "";
  display: inline-block;
  width: .85em;
  height: .85em;
  margin-inline-end: .6em;
  vertical-align: -.12em;
  border: 2px solid var(--line);
  border-top-color: var(--fg);
  border-radius: 50%;
  box-sizing: border-box;
}
@keyframes loading-spin {
  to { transform: rotate(1turn); }
}
@media (prefers-reduced-motion: no-preference) {
  .is-loading::before { animation: loading-spin .9s linear infinite; }
}

/* Match Roster's masthead, type, and ink-on-paper controls. */
.staff-header {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .6rem 1.25rem;
  padding: .65rem clamp(1rem, 4vw, 3rem) calc(.65rem + 5px);
  background: var(--rainbow) 0 100% / 100% 5px no-repeat var(--head);
}
.staff-header::after {
  content: "";
  position: absolute;
  inset: 0 0 5px;
  z-index: -1;
  pointer-events: none;
  background: var(--fg);
  opacity: .14;
  mask: url('/grunge.svg') 0 0 / 360px;
}
.staff-brand {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  margin-inline-end: auto;
  text-decoration: none;
}
.cfya-mark {
  width: 2.1rem;
  aspect-ratio: 1186 / 1604;
  flex: none;
  background: var(--fg);
  mask: url('/cfya.svg') center / contain no-repeat;
}
.staff-brand strong, h1, h2, th {
  font-family: var(--display);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
}
.staff-brand strong { font-size: 1.25rem; }
.staff-brand small, .staff-account small { display: block; }
.staff-account { text-align: end; font-weight: 650; }
.staff-account small { font-weight: 400; }
.staff-nav {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: .35rem 1rem;
  margin-bottom: 1.5rem;
  padding-bottom: .65rem;
  border-bottom: 1px solid var(--line);
}
.staff-nav button, .staff-nav summary { padding: .45rem .7rem; }
.staff-nav button { justify-content: flex-start; }
.staff-nav button.active, .staff-nav summary:hover, .staff-nav details[open] summary {
  background: var(--wash);
}
.staff-nav summary { border-radius: var(--rough-small); font-weight: 650; font-size: 15px; }
.staff-nav .admin-nav-items { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .35rem; }
.workspace { max-width: 82rem; margin: 0 auto; padding: 1.25rem clamp(1rem, 4vw, 3rem) 3rem; }
.card, .stat, dialog, .info { border-radius: var(--rough); }
.card, .stat, dialog { border-color: var(--edge); }
dialog { background: var(--bg); color: var(--fg); box-shadow: 5px 5px 0 var(--fg); }
button, .button, input, select, textarea { border-radius: var(--rough-small); }
button, .button { border-color: var(--edge); }
.primary { font-family: var(--display); text-transform: uppercase; border: 2px solid var(--fg); }
.primary:hover, .primary:focus-visible { box-shadow: 3px 3px 0 var(--pop); }
.quiet { border-color: transparent; }
.error { color: var(--danger); }
.banner { color: var(--warn-fg); }
.login { margin: clamp(2rem, 9vh, 6rem) auto; text-align: center; }
.login h1 { font-size: clamp(2rem, 6vw, 3.35rem); }
.login p { margin-inline: auto; }
.login .button { max-width: 100%; }
.theme-toggle { padding: .4rem; border: 1px solid var(--edge); background: transparent; }
.theme-toggle svg { width: 1.2rem; height: 1.2rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.theme-toggle[data-next="dark"] .sun, .theme-toggle[data-next="light"] .moon { display: none; }
:focus-visible { outline: 3px solid var(--pop); outline-offset: 2px; }
[hidden] { display: none !important; }

@media (max-width: 600px) {
  .staff-header { gap: .5rem .75rem; }
  .staff-brand { flex: 1 1 auto; }
  .staff-account { order: 3; flex: 1 1 100%; text-align: start; }
  .staff-nav .admin-nav-items { flex-direction: column; }
  .login { padding: 1rem; }
}
.staff-nav [aria-current="page"] { box-shadow: inset 0 -2px var(--fg); }
@media (max-width: 720px) {
  .stats { grid-template-columns: repeat(auto-fit, minmax(min(8rem, 100%), 1fr)); }
  .tabs, .page-head { flex-wrap: wrap; }
}
