/* Dashboard: same race-day tokens as the site, tuned for scanning. Built on app.css. */
.admin{font-size:16px}
.bar .out{background:transparent;color:var(--hero-ink);border:1.5px solid var(--hero-line);border-radius:4px;padding:6px 10px;cursor:pointer;font-family:var(--font-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:13px;flex:none}
.bar nav a[aria-current="page"]{background:var(--white);color:var(--uk)}
.dash{padding-block:32px 80px}
.login{max-width:380px;margin:48px auto;display:grid;gap:14px;background:var(--surface);border:2px solid var(--ink);padding:24px}
.login .label{color:var(--primary)}
.login h1{font-family:var(--font-display);font-weight:400;font-size:40px;line-height:1}
.login .back{font-size:14px;color:var(--muted)}
.view{padding:0;display:grid;gap:24px}
.vhead{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:end;justify-content:space-between}
.vhead h1{font-family:var(--font-display);font-weight:400;font-size:clamp(30px,4.4vw,42px);line-height:1}
.vhead p{color:var(--muted);max-width:46em}
.tools{display:flex;flex-wrap:wrap;gap:8px}
.btn.sm{padding:7px 12px;font-size:13px}
.pnl{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:18px 20px;min-width:0}
.pnl h2{font-family:var(--font-label);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:16px;margin-bottom:10px}
.pnl .hint{color:var(--muted);font-size:14px;margin-bottom:8px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));border:2px solid var(--ink)}
.kpi{padding:14px 16px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);margin:0 -2px -2px 0;background:var(--surface)}
.kpi dt{font-family:var(--font-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:13px;color:var(--muted)}
.kpi dd{font-family:var(--font-display);font-size:34px;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi dd small{font-family:var(--font-body);font-size:15px;color:var(--muted)}

.status{display:inline-block;font-family:var(--font-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:12px;padding:2px 8px;border-radius:3px;white-space:nowrap}
.st-yes{background:var(--primary);color:var(--on-primary)}
.st-no{background:var(--ink);color:var(--bg)}
.st-pend{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--line)}
.st-warn{background:#F5C451;color:#3A2A00}

.bars{display:grid;gap:12px}
.barrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:baseline}
.barrow .track{grid-column:1 / -1;grid-row:2}
.field .linkbtn,.pnl > .linkbtn{justify-self:start}
.barrow .nm{font-weight:600;overflow-wrap:anywhere}
.track{height:16px;background:var(--bg);border:1px solid var(--line);display:flex;overflow:hidden;border-radius:2px}
.track i{display:block;height:100%}
.track .y{background:var(--primary)} .track .n{background:var(--muted)}
.barrow .ct{font-variant-numeric:tabular-nums;font-size:14px;color:var(--muted);white-space:nowrap}

.tscroll{overflow-x:auto}
table{border-collapse:collapse;width:100%}
th{font-family:var(--font-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:13px;color:var(--muted);text-align:left;padding:6px 8px;border-bottom:2px solid var(--ink);white-space:nowrap}
td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}
td.num{text-align:right;font-variant-numeric:tabular-nums}
tr.clickable{cursor:pointer}
tr.clickable:hover td{background:var(--bg)}
.code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;letter-spacing:.06em}
.muted{color:var(--muted)}
.edit-t td{padding:3px 4px}
.edit-t input[type=text],.edit-t input[type=date],.edit-t input[type=number],.edit-t select{background:transparent;border:1.5px solid transparent;border-radius:4px;padding:7px 8px;width:100%;min-width:90px;font:inherit;color:inherit}
.edit-t input:hover,.edit-t select:hover{border-color:var(--line)}
.edit-t input:focus,.edit-t select:focus{border-color:var(--primary);outline:none}
.edit-t input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary);margin:8px}
.edit-t input[type=number]{text-align:right;font-variant-numeric:tabular-nums}
.edit-t tr.done input[type=text]{text-decoration:line-through;color:var(--muted)}
.x{background:none;border:0;cursor:pointer;color:var(--muted);font-size:20px;line-height:1;padding:6px 8px;border-radius:4px}
.x:hover{color:var(--danger)}
.sum{margin-top:10px;font-family:var(--font-label);font-weight:600;letter-spacing:.04em;font-size:16px;font-variant-numeric:tabular-nums}

.editor{border:2px solid var(--ink);background:var(--surface);padding:20px;display:grid;gap:14px}
.editor h2{font-family:var(--font-display);font-weight:400;font-size:26px;line-height:1.1}
.glist{display:grid;gap:8px}
.grow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;gap:8px;align-items:center}
.chk{display:flex;gap:6px;align-items:center;font-size:15px;white-space:nowrap}
.chk input{width:18px;height:18px;accent-color:var(--primary)}
.evchecks{display:flex;flex-wrap:wrap;gap:8px 18px}

.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.ph{background:var(--surface);border:1px solid var(--line);padding:8px;display:grid;gap:6px}
.ph img{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--bg)}
.ph.hid img{opacity:.35}
.ph .meta{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.ph .acts{display:flex;flex-wrap:wrap;gap:10px;font-size:13px}
.ph .acts a,.ph .acts button{font-size:13px}

.locked{background:var(--hero-bg);color:var(--hero-ink);padding:28px 24px;border-radius:6px;display:grid;gap:8px}
.locked .label{color:var(--hero-accent)}
.locked .big{font-family:var(--font-display);font-size:clamp(28px,4vw,40px);line-height:1.05}
.locked p{color:var(--hero-muted)}
.letter{background:var(--surface);border:1px solid var(--line);padding:18px 20px}
.letter .from{font-family:var(--font-hand);font-size:26px;color:var(--pencil)}
.letter p{white-space:pre-wrap}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:4px;font-family:var(--font-label);font-weight:600;letter-spacing:.04em;z-index:40;max-width:calc(100% - 32px)}
.toast.err{background:var(--danger);color:#fff}

@media (max-width:620px){
  .grow{grid-template-columns:1fr 1fr}
}

/* guests: filters, tags, address */
.gfilters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.gfilters input{flex:1 1 220px;max-width:340px}
.gfilters select{flex:0 1 240px}
.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tag-chip{font-family:var(--font-label);font-weight:600;letter-spacing:.04em;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:1px 6px;color:var(--muted)}
.addr{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:10px}
.addr-d summary{cursor:pointer;font-family:var(--font-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:13px;color:var(--muted)}
.answers{list-style:disc;padding-left:1.2em;display:grid;gap:4px;font-size:15px}

/* messages */
.note-warn{border-color:#F5C451;border-width:2px}
.who{border:1px dashed var(--line);border-radius:4px;padding:10px 14px;display:grid;gap:4px}

/* site content editor */
.sf-bar{position:sticky;top:calc(env(safe-area-inset-top,0px) + 53px);z-index:10;display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--bg);padding-block:10px;border-bottom:1px solid var(--line)}
.sf-bar .msg{flex:1 1 200px}
.sf-sec > summary{cursor:pointer;list-style:none}
.sf-sec > summary::-webkit-details-marker{display:none}
.sf-sec > summary h2{display:inline;margin:0}
.sf-sec > summary::after{content:"+";float:right;font-family:var(--font-label);font-size:20px;color:var(--muted)}
.sf-sec[open] > summary::after{content:"\2212"}
.sf-body{display:grid;gap:14px;margin-top:14px}
.sf-bool{font-size:15px;white-space:normal;align-items:flex-start}
.sf-list{display:grid;gap:8px}
.sf-item{border:1px solid var(--line);border-radius:4px;background:var(--bg)}
.sf-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:4px 6px 4px 10px}
.sf-toggle{flex:1;min-width:0;text-align:left;background:none;border:0;padding:6px 0;cursor:pointer;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sf-toggle::before{content:"\25B8  ";color:var(--muted)}
.sf-toggle[aria-expanded="true"]::before{content:"\25BE  "}
.sf-tools{display:flex;gap:2px;flex:none}
.sf-item-body{display:grid;gap:12px;padding:4px 12px 14px}
.sf-imgrow{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.sf-img{width:96px;height:96px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;overflow:hidden;border-radius:3px}
.sf-img img{width:100%;height:100%;object-fit:cover}
.sf-img .muted{font-size:12px}

/* printing: RSVP cards (8 per page) and the reception sign */
#print-area{display:none}
@media print{
  @page{margin:12mm}
  body.printing > *:not(#print-area){display:none!important}
  body.printing #print-area{display:block!important;color:#000;background:#fff}
  body.printing{background:#fff}
  .cards{display:grid;grid-template-columns:1fr 1fr;gap:6mm}
  .pcard{border:1px dashed #999;padding:6mm;display:grid;gap:2mm;justify-items:center;text-align:center;break-inside:avoid;height:62mm}
  .pc-names{font:400 14pt Georgia,serif;margin:0}
  .pc-to{font:600 11pt Arial,sans-serif;margin:0}
  .pcard .qrbox svg{width:30mm;height:30mm}
  .pc-how{font:9pt Arial,sans-serif;margin:0;color:#333}
  .pc-code{font:700 16pt ui-monospace,Menlo,monospace;letter-spacing:.15em;margin:0}
  .sign{display:grid;justify-items:center;text-align:center;gap:8mm;padding-top:20mm}
  .sg-names{font:400 22pt Georgia,serif;margin:0;color:#0033A0}
  .sg-head{font:400 64pt Georgia,serif;margin:0}
  .sg-sub{font:16pt Arial,sans-serif;max-width:150mm;margin:0}
  .sign .qrbox svg{width:110mm;height:110mm}
  .sg-url{font:14pt ui-monospace,Menlo,monospace;margin:0}
}
.sf-body,.sf-list,.sf-item-body,.view,.editor{grid-template-columns:minmax(0,1fr)}
.view .field{grid-template-columns:minmax(0,1fr)}
@media (max-width:520px){ .sf-item-body{padding-inline:8px} .sf-head{padding-left:8px} }

/* photo inbox */
.seg{justify-self:start;width:max-content;display:inline-flex;flex-wrap:wrap;border:1.5px solid var(--ink);border-radius:4px;overflow:hidden;margin-bottom:18px;max-width:100%}
.seg button{background:transparent;border:0;padding:9px 14px;font-family:var(--font-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:14px;color:var(--ink);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--surface)}
.inbox-link{display:grid;gap:10px;margin-bottom:18px}
.inbox-link input{width:100%;font:inherit;font-size:15px;padding:9px 10px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink)}
.inbox-link .tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ph select{width:100%;font:inherit;font-size:14px;padding:7px 8px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink)}
.ph .note{font-size:14px;overflow-wrap:anywhere}
.ph .used{font-size:12px;font-family:var(--font-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ok,#2e7d32)}
.sf-bulk{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}
