/* speedbrain admin - one stylesheet, no build step. Mobile first. */
:root {
  --paper:#f4f6f5; --card:#ffffff; --ink:#14231d; --soft:#5b6b64; --mute:#8a978f;
  --line:#dfe6e2; --line-2:#c9d3ce; --accent:#0e7150; --accent-ink:#ffffff; --accent-soft:#dcefe6;
  --warn:#9a5a12; --warn-soft:#fbeed8; --bad:#a3262f; --bad-soft:#f9e0e2; --ok:#1c6b3a; --ok-soft:#dcefe6;
  --info:#1f5f8b; --info-soft:#e0eef8;
  --brand:#d6336c;
  --term:#0c0f0e; --term-ink:#d6e2dc; --term-mute:#7d8a84; --term-line:#26302b;
  --shadow:0 1px 2px rgba(20,35,29,.06), 0 8px 24px -12px rgba(20,35,29,.18); --radius:12px;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Cascadia Mono", monospace;
  --top: 56px; --tabbar: 62px;
  /* channel colours (calendar) */
  --ch-website:#0e7150; --ch-linkedin:#0a66c2; --ch-youtube:#c4302b; --ch-x:#3b3b3b;
  --ch-huggingface:#c98a00; --ch-github:#6e5494; --ch-tiktok:#e0245e; --ch-other:#6b5bd6;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) { :root {
  --paper:#0f1613; --card:#161f1b; --ink:#e7efea; --soft:#a3b3aa; --mute:#6f7f77;
  --line:#243029; --line-2:#33423a; --accent:#4cbf94; --accent-ink:#06130d; --accent-soft:#183327;
  --warn:#e0a959; --warn-soft:#3a2a12; --bad:#ef8d93; --bad-soft:#3d1c1f; --ok:#6bd39a; --ok-soft:#173427;
  --info:#7cb8e4; --info-soft:#15293a;
  --brand:#f06595;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  --ch-x:#c9c9c9; --ch-linkedin:#4b9be8; --ch-youtube:#f0625d; --ch-huggingface:#f2b632; --ch-github:#a78bd4; --ch-tiktok:#ff5c8a;
  color-scheme: dark; } }

* { box-sizing:border-box }
html { -webkit-text-size-adjust:100%; }
body { margin:0; background:var(--paper); color:var(--ink);
  font:15px/1.5 ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; min-height:100dvh; }
a { color:var(--accent); text-decoration:none } a:hover { text-decoration:underline }
code, .mono { font-family:var(--mono); font-size:12.5px }
button, input, select, textarea { font:inherit; color:inherit }
[hidden] { display:none !important }
.sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0) }

/* ---------- shell ---------- */
.shell { display:grid; min-height:100dvh; grid-template-rows:var(--top) 1fr;
  grid-template-columns:1fr; grid-template-areas:"top" "main"; }
header.top { grid-area:top; display:flex; align-items:center; gap:10px; padding:0 14px;
  border-bottom:1px solid var(--line); background:var(--card); position:sticky; top:0; z-index:20 }
header.top h1 { font-size:15px; margin:0; font-weight:650; white-space:nowrap }
header.top h1 span { color:var(--mute); font-weight:400 }
h1.brand { display:inline-flex; align-items:center; gap:7px; white-space:nowrap }
h1.brand > span { color:var(--ink) !important; font-weight:650 !important }
h1.brand .brand-sep, h1.brand .brand-sub { color:var(--mute) !important; font-weight:400 !important }
h1.brand .brand-ico { display:inline-grid; font-size:22px; line-height:1;
  font-family:"Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif }
.auth h1.brand .brand-ico { font-size:28px }
.auth h1.brand { flex-wrap:wrap; white-space:normal; row-gap:2px }
.iconbtn { display:inline-grid; place-items:center; width:40px; height:40px; border-radius:10px;
  border:1px solid transparent; background:transparent; cursor:pointer; color:var(--ink) }
.iconbtn:hover { border-color:var(--line-2) }
.iconbtn svg { width:20px; height:20px }
.spacer { flex:1 }
#headline { font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0 }

nav.side { position:fixed; inset:var(--top) auto 0 0; width:min(82vw, 280px); background:var(--card);
  border-right:1px solid var(--line); padding:12px 10px calc(20px + env(safe-area-inset-bottom)); overflow:auto;
  transform:translateX(-102%); transition:transform .18s ease; z-index:30 }
body.nav-open nav.side { transform:none; box-shadow:var(--shadow) }
.scrim { position:fixed; inset:var(--top) 0 0 0; background:rgba(0,0,0,.35); z-index:25; display:none }
body.nav-open .scrim { display:block }
nav.side .group { font-size:11px; letter-spacing:.09em; text-transform:uppercase; color:var(--mute);
  padding:14px 10px 6px; font-weight:600 }
nav.side a { display:flex; align-items:center; gap:10px; padding:10px 10px; border-radius:8px; color:var(--ink);
  font-size:14px; cursor:pointer; min-height:40px }
nav.side a:hover { background:var(--paper); text-decoration:none }
nav.side a.active { background:var(--accent-soft); color:var(--accent); font-weight:600 }
nav.side a svg { width:18px; height:18px; flex:none; opacity:.85 }
nav.side a .dot { width:7px; height:7px; border-radius:50%; background:var(--warn); margin-left:auto; display:none }
nav.side a.dirty .dot { display:block }

main { grid-area:main; padding:16px 14px calc(var(--tabbar) + 28px + env(safe-area-inset-bottom)); min-width:0 }
main > .wrap { max-width:1500px; margin:0 auto }

nav.tabs { position:fixed; left:0; right:0; bottom:0; height:calc(var(--tabbar) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom); display:grid; grid-template-columns:repeat(5, 1fr);
  background:var(--card); border-top:1px solid var(--line); z-index:20 }
nav.tabs a { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  font-size:11px; color:var(--soft); cursor:pointer; text-decoration:none }
nav.tabs a svg { width:22px; height:22px }
nav.tabs a.active { color:var(--accent); font-weight:600 }

@media (min-width: 960px) {
  .shell { grid-template-columns:236px 1fr; grid-template-areas:"top top" "nav main" }
  nav.side { position:sticky; top:var(--top); height:calc(100dvh - var(--top)); transform:none; width:auto;
    grid-area:nav; z-index:1 }
  .scrim, nav.tabs, #menubtn { display:none !important }
  main { padding:22px 28px 60px }
}

/* ---------- type & blocks ---------- */
h2 { font-size:20px; margin:0 0 4px; letter-spacing:-.015em }
.lead { color:var(--soft); margin:0 0 16px; max-width:80ch }
.card { background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:14px 16px; margin-bottom:14px; min-width:0 }
.card > h3, .panel-h { margin:0 0 10px; font-size:12px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--soft); display:flex; align-items:center; gap:8px; flex-wrap:wrap }
.panel-h .spacer { flex:1 }
.grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px }
.stat { padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--paper) }
.stat b { display:block; font-size:21px; letter-spacing:-.02em }
.stat span { color:var(--soft); font-size:12.5px }
.hint { color:var(--mute); font-size:12.5px; margin:4px 0 0 }
.err { color:var(--bad); font-size:13px; margin:6px 0 0 }
.empty { color:var(--mute); padding:12px 0; font-size:13.5px }
.row { display:flex; gap:8px; align-items:center; flex-wrap:wrap }
.tools { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px }
.tools .spacer { flex:1 }

/* ---------- badges & colour names from the terminal dashboard ---------- */
.badge { display:inline-flex; align-items:center; gap:6px; padding:2px 9px; border-radius:999px;
  font-size:12px; font-weight:600; border:1px solid var(--line-2); color:var(--soft); background:var(--paper);
  white-space:nowrap }
.badge.ok, .badge.green, .badge.darkgreen { color:var(--ok); background:var(--ok-soft); border-color:transparent }
.badge.warn, .badge.yellow { color:var(--warn); background:var(--warn-soft); border-color:transparent }
.badge.bad, .badge.red { color:var(--bad); background:var(--bad-soft); border-color:transparent }
.badge.accent, .badge.cyan { color:var(--info); background:var(--info-soft); border-color:transparent }
.badge.dark, .badge.gray { color:var(--mute) }
.t-green, .t-darkgreen { color:var(--ok) } .t-red { color:var(--bad) } .t-yellow { color:var(--warn) }
.t-cyan { color:var(--info) } .t-dark, .t-gray { color:var(--mute) }
.dotc { width:9px; height:9px; border-radius:50%; display:inline-block; background:var(--mute); flex:none }
.dotc.green, .dotc.darkgreen { background:var(--ok) } .dotc.red { background:var(--bad) }
.dotc.yellow { background:var(--warn) } .dotc.cyan { background:var(--info) }

/* ---------- buttons & forms ---------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 13px; border-radius:9px;
  border:1px solid var(--line-2); background:var(--card); cursor:pointer; font-size:14px; line-height:1.2;
  min-height:38px; white-space:nowrap }
.btn:hover { border-color:var(--accent) }
.btn.primary { background:var(--accent); border-color:var(--accent); color:var(--accent-ink); font-weight:600 }
.btn.danger { color:var(--bad) } .btn.danger:hover { border-color:var(--bad) }
.btn.sm { padding:5px 10px; font-size:13px; min-height:32px }
.btn.ghost { border-color:transparent; background:transparent }
.btn:disabled { opacity:.5; cursor:not-allowed }
.btn .k { font-family:var(--mono); font-size:11px; color:var(--mute); border:1px solid var(--line-2);
  border-radius:4px; padding:0 4px }
.btn.primary .k { color:inherit; border-color:currentColor; opacity:.7 }
input[type=text], input[type=url], input[type=number], input[type=password], input[type=time],
input[type=datetime-local], input[type=search], select, textarea {
  width:100%; padding:9px 11px; border:1px solid var(--line-2); border-radius:9px; background:var(--card);
  min-height:40px; font-size:16px; }
@media (min-width: 960px) { input, select, textarea { font-size:14px !important } }
input:focus, select:focus, textarea:focus, .btn:focus-visible, nav a:focus-visible {
  outline:2px solid var(--accent); outline-offset:1px; border-color:var(--accent) }
textarea { min-height:70px; font-family:var(--mono); font-size:13px; resize:vertical }
textarea.prose { font-family:inherit; font-size:14px }
.tools input, .tools select { width:auto; flex:1 1 150px }
.field { display:grid; grid-template-columns:1fr; gap:4px 18px; align-items:start;
  padding:10px 0; border-top:1px solid var(--line) }
.field:first-of-type { border-top:0 }
.field > label { font-weight:600; font-size:13px; word-break:break-word }
.field > label small { display:block; color:var(--mute); font-weight:400; font-family:var(--mono); font-size:11px }
@media (min-width: 720px) { .field { grid-template-columns:minmax(180px, 260px) 1fr } .field > label { padding-top:8px } }
.field.changed > label::before { content:""; display:inline-block; width:7px; height:7px; border-radius:50%;
  background:var(--warn); margin-right:7px; vertical-align:middle }
.switch { position:relative; display:inline-block; width:44px; height:26px; margin-top:6px }
.switch input { opacity:0; width:0; height:0 }
.switch i { position:absolute; inset:0; background:var(--line-2); border-radius:999px; cursor:pointer; transition:.15s }
.switch i::before { content:""; position:absolute; width:20px; height:20px; left:3px; top:3px; background:#fff;
  border-radius:50%; transition:.15s; box-shadow:0 1px 2px rgba(0,0,0,.25) }
.switch input:checked + i { background:var(--accent) }
.switch input:checked + i::before { transform:translateX(18px) }
details.obj { border:1px solid var(--line); border-radius:9px; margin:8px 0; padding:0 12px; background:var(--card) }
details.obj > summary { cursor:pointer; padding:10px 0; font-weight:600; font-size:13.5px }
details.obj > summary .n { color:var(--mute); font-weight:400; font-size:12px }
details.obj[open] > summary { border-bottom:1px solid var(--line); margin-bottom:4px }
.note { background:var(--paper); border-left:3px solid var(--line-2); padding:8px 12px; margin:8px 0;
  border-radius:0 8px 8px 0; font-size:13px; color:var(--soft); position:relative }
.note .edit { position:absolute; right:8px; top:6px; font-size:12px; cursor:pointer; color:var(--accent) }
.note b { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--mute) }

/* ---------- tables: rows become cards on phones ---------- */
table { width:100%; border-collapse:collapse; font-size:13.5px }
th { text-align:left; font-weight:600; font-size:11.5px; letter-spacing:.05em; text-transform:uppercase;
  color:var(--mute); padding:8px 10px; border-bottom:1px solid var(--line) }
td { padding:9px 10px; border-bottom:1px solid var(--line); vertical-align:top; word-break:break-word }
tr:last-child td { border-bottom:0 }
td .sub { color:var(--mute); font-size:12px; margin-top:2px }
td.title { font-weight:600 }
.actions-cell { display:flex; gap:6px; justify-content:flex-end; flex-wrap:wrap }
@media (max-width: 719px) {
  table.rt thead { display:none }
  table.rt, table.rt tbody, table.rt tr, table.rt td { display:block; width:100% }
  table.rt tr { border:1px solid var(--line); border-radius:10px; padding:6px 10px; margin-bottom:10px; background:var(--card) }
  table.rt td { border:0; padding:5px 0; display:grid; grid-template-columns:96px 1fr; gap:8px }
  table.rt td::before { content:attr(data-label); color:var(--mute); font-size:11.5px; text-transform:uppercase;
    letter-spacing:.04em; padding-top:2px }
  table.rt td[data-label=""] { grid-template-columns:1fr } table.rt td[data-label=""]::before { display:none }
  .actions-cell { justify-content:flex-start }
}

/* ---------- dialog & toast ---------- */
dialog { border:1px solid var(--line); border-radius:14px; background:var(--card); color:var(--ink);
  padding:0; width:min(620px, 94vw); max-height:90dvh; box-shadow:var(--shadow) }
dialog::backdrop { background:rgba(0,0,0,.45) }
dialog form, dialog .body { padding:18px 20px }
dialog h3 { margin:0 0 12px; font-size:16px }
dialog .field { grid-template-columns:1fr; padding:6px 0; border:0 }
dialog .actions { display:flex; gap:10px; justify-content:flex-end; margin-top:16px; flex-wrap:wrap }
@media (max-width: 719px) { dialog { width:100vw; max-width:100vw; margin:auto 0 0; border-radius:16px 16px 0 0;
  padding-bottom:env(safe-area-inset-bottom) } }
#toasts { position:fixed; right:14px; left:14px; bottom:calc(var(--tabbar) + 14px + env(safe-area-inset-bottom));
  display:flex; flex-direction:column; align-items:flex-end; gap:8px; z-index:60; pointer-events:none }
@media (min-width: 960px) { #toasts { left:auto; bottom:18px } }
.toast { background:var(--ink); color:var(--paper); padding:10px 14px; border-radius:10px; font-size:13.5px;
  box-shadow:var(--shadow); max-width:440px; animation:in .18s ease-out; pointer-events:auto }
.toast.bad { background:var(--bad); color:#fff } .toast.ok { background:var(--ok); color:#fff }
@keyframes in { from { transform:translateY(8px); opacity:0 } }

/* ---------- login ---------- */
.auth { min-height:100dvh; display:grid; place-items:center; padding:20px }
.auth .box { width:min(420px, 100%); background:var(--card); border:1px solid var(--line); border-radius:16px;
  box-shadow:var(--shadow); padding:26px 24px }
.auth h1 { font-size:20px; margin:0 0 4px } .auth h1 span { color:var(--mute); font-weight:400 }
.auth p { color:var(--soft); font-size:14px }
.auth label { display:block; font-weight:600; font-size:13px; margin:14px 0 6px }
.auth .code { letter-spacing:.35em; font-family:var(--mono); font-size:22px !important; text-align:center }
.auth .btn { width:100%; margin-top:18px; min-height:46px }
.auth .alt { text-align:center; margin-top:16px; font-size:13.5px }
.auth .check { display:flex; gap:8px; align-items:center; font-weight:400; margin-top:14px }
.auth .check input { width:18px; height:18px }
.qr { display:grid; place-items:center; background:#fff; border-radius:12px; padding:12px; margin:10px 0 }
.qr img, .qr svg { width:200px; height:200px; image-rendering:pixelated }
.secret { font-family:var(--mono); font-size:13px; word-break:break-all; background:var(--paper);
  padding:8px 10px; border-radius:8px; text-align:center }
.steps { counter-reset:s; padding:0; list-style:none; margin:8px 0 }
.steps li { counter-increment:s; position:relative; padding-left:30px; margin:6px 0; font-size:13.5px; color:var(--soft) }
.steps li::before { content:counter(s); position:absolute; left:0; top:0; width:20px; height:20px; border-radius:50%;
  background:var(--accent-soft); color:var(--accent); font-size:12px; font-weight:700; display:grid; place-items:center }

/* ---------- console ---------- */
.con { display:grid; gap:14px; grid-template-columns:1fr }
@media (min-width: 1100px) {
  .con { grid-template-columns:minmax(0, 1.6fr) minmax(0, 1fr); grid-template-areas:
    "svc addr" "sys tasks" "jobs jobs" "orders orders" "log log" }
  .con > .a-svc { grid-area:svc } .con > .a-addr { grid-area:addr } .con > .a-sys { grid-area:sys }
  .con > .a-tasks { grid-area:tasks } .con > .a-jobs { grid-area:jobs } .con > .a-orders { grid-area:orders }
  .con > .a-log { grid-area:log }
}
.con .card { margin:0 }
.svc { display:grid; grid-template-columns:auto 1fr auto; gap:8px 12px; align-items:center;
  padding:8px 0; border-top:1px solid var(--line) }
.svc:first-of-type { border-top:0 }
.svc .name { font-weight:600; display:flex; gap:8px; align-items:center; min-width:0 }
.svc .name small { color:var(--mute); font-weight:400; font-family:var(--mono); font-size:11.5px }
.svc .state { font-size:13px }
.svc .ops { display:flex; gap:6px }
.svc .nr { font-family:var(--mono); color:var(--info); width:14px; text-align:right }
@media (max-width: 420px) { .svc { grid-template-columns:auto 1fr } .svc .ops { grid-column:1 / -1; justify-content:flex-end } }
.svc .name { flex-wrap:wrap }
.kv { display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:13.5px; align-items:baseline }
.kv > span:nth-child(odd) { color:var(--soft) }
.kv a { word-break:break-all }
.kv .local { color:var(--mute); font-family:var(--mono); font-size:12.5px }
.meter { display:grid; grid-template-columns:48px 1fr 58px; gap:10px; align-items:center; font-size:13px; margin:6px 0 }
.meter .bar { height:10px; border-radius:999px; background:var(--paper); border:1px solid var(--line); overflow:hidden }
.meter .bar i { display:block; height:100%; background:var(--ok); border-radius:999px; transition:width .4s }
.meter .bar i.yellow { background:var(--warn) } .meter .bar i.red { background:var(--bad) }
.meter .val { font-family:var(--mono); text-align:right }
.meter .extra { grid-column:2 / -1; color:var(--mute); font-size:12px; margin-top:-4px }
.spark { width:100%; height:44px; display:block; margin-top:6px }
.spark path.l { fill:none; stroke-width:1.6 }
.jobrow { display:grid; grid-template-columns:auto auto 1fr; gap:4px 12px; align-items:center; padding:9px 4px;
  border-top:1px solid var(--line); cursor:pointer; border-radius:8px }
.jobrow:first-child { border-top:0 }
.jobrow:hover { background:var(--paper) }
.jobrow.sel { background:var(--accent-soft) }
.jobrow .id { font-family:var(--mono); color:var(--soft); text-align:right; min-width:26px }
.jobrow .t { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.jobops { display:flex; gap:6px; flex-wrap:wrap; padding:8px 4px 4px 42px }
.order { display:grid; grid-template-columns:18px 1fr auto auto; gap:8px; font-size:13.5px; padding:5px 0;
  border-top:1px solid var(--line); align-items:baseline }
.order:first-child { border-top:0 }
.order .res { grid-column:2 / -1; font-size:12.5px; color:var(--mute) }
.order .res .x { color:var(--bad) }
.term { background:var(--term); color:var(--term-ink); border-radius:10px; padding:10px 12px; font-family:var(--mono);
  font-size:12.5px; line-height:1.45; height:min(52vh, 520px); overflow:auto; white-space:pre-wrap; word-break:break-word;
  border:1px solid var(--term-line) }
.term .e { color:#ef8d93 } .term .w { color:#e0a959 } .term .o { color:#6bd39a }
.cmdbar { display:flex; gap:8px; margin-top:10px }
.cmdbar .p { font-family:var(--mono); color:var(--accent); align-self:center }
.cmdbar input { font-family:var(--mono) }
.consolebar { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px }
.consolebar .btn { flex:1 1 auto }
@media (min-width: 720px) { .consolebar .btn { flex:0 0 auto } }

/* ---------- calendar ---------- */
.cal-wrap { display:grid; gap:14px; grid-template-columns:1fr }
@media (min-width: 1100px) { .cal-wrap { grid-template-columns:minmax(0, 1fr) 300px } }
.legend { display:flex; gap:12px; flex-wrap:wrap; font-size:12.5px; color:var(--soft) }
.legend span { display:inline-flex; align-items:center; gap:6px }
.legend i { width:10px; height:10px; border-radius:3px; display:inline-block }
#calendar { --fc-border-color:var(--line); --fc-page-bg-color:var(--card); --fc-neutral-bg-color:var(--paper);
  --fc-today-bg-color:var(--accent-soft); --fc-button-bg-color:var(--card); --fc-button-text-color:var(--ink);
  --fc-button-border-color:var(--line-2); --fc-button-hover-bg-color:var(--paper);
  --fc-button-hover-border-color:var(--accent); --fc-button-active-bg-color:var(--accent);
  --fc-button-active-border-color:var(--accent); --fc-list-event-hover-bg-color:var(--paper);
  --fc-now-indicator-color:var(--bad); font-size:13px }
#calendar .fc-button { box-shadow:none !important; text-transform:none; border-radius:8px }
#calendar .fc-button-active { color:var(--accent-ink) }
#calendar .fc-toolbar-title { font-size:17px }
#calendar .fc-event { cursor:pointer; border-radius:6px; padding:1px 3px; border-width:1px }
#calendar .ev-published { opacity:1 }
#calendar .ev-queued { background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.18) 0 6px, transparent 6px 12px) }
#calendar .ev-timed, #calendar .ev-job { border-style:dashed; border-width:2px }
#calendar .ev-awaiting { border-style:dotted; border-width:2px; background:var(--warn-soft) !important; color:var(--warn) !important }
#calendar .ev-skipped, #calendar .ev-other { opacity:.5 }
#calendar .ev-inflight { border-style:dotted; border-width:2px; background:var(--warn-soft) !important; color:var(--warn) !important }
#calendar .ev-uploading { border-style:dotted }
#calendar .ev-error { background:var(--bad-soft) !important; color:var(--bad) !important; border-color:var(--bad) !important }
#calendar a.fc-event, #calendar .fc-list-event-title a { color:inherit }
@media (max-width: 719px) {
  #calendar .fc-toolbar { flex-direction:column; gap:8px; align-items:stretch }
  #calendar .fc-toolbar-chunk { display:flex; justify-content:center }
  #calendar .fc-toolbar-title { font-size:16px; text-align:center }
}
.waitlist a { display:block; padding:8px 0; border-top:1px solid var(--line); color:var(--ink) }
.waitlist a:first-child { border-top:0 }
.detail .chans { display:flex; gap:6px; flex-wrap:wrap; margin:6px 0 10px }
.chip { display:inline-flex; align-items:center; gap:6px; padding:3px 10px; border-radius:999px; font-size:12.5px;
  font-weight:600; color:#fff }

@media (max-width: 560px) {
  header.top h1 .brand-sep, header.top h1 .brand-sub { display:none }
  #headline { max-width:38vw }
  #dirty .badge { display:none }
}
@media (max-width: 719px) { .btn .k { display:none } }
