@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-Regular.otf") format("opentype"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-Italic.otf") format("opentype"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-Medium.otf") format("opentype"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-MediumItalic.otf") format("opentype"); font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-Bold.otf") format("opentype"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Acumin Pro"; src: url("/fonts/AcuminPro-BoldItalic.otf") format("opentype"); font-weight: 700; font-style: italic; font-display: swap; }

:root {
  --black: #000000; --white: #ffffff;
  --ground: var(--white); --ink: var(--black); --rule: var(--black);
  --muted: var(--ink);              /* no greys: secondary text differs by size/style only */
  --font-sans: "Acumin Pro", "acumin-pro", "Helvetica Neue", Arial, sans-serif;
  --space-1: 8px; --space-2: 16px; --space-3: 32px; --space-4: 64px;
  --band: 96px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --ground: var(--black); --ink: var(--white); --rule: var(--white); color-scheme: dark; }
}
:root[data-theme="dark"] { --ground: var(--black); --ink: var(--white); --rule: var(--white); color-scheme: dark; }

* { box-sizing: border-box; border-radius: 0; }
html, body { margin: 0; background: var(--ground); color: var(--ink); }
body { font-family: var(--font-sans); font-size: 16px; line-height: 1.4; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-underline-offset: 3px; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* L frame: vertical logo band on desktop, top bar on phones */
.lr-page { display: grid; grid-template-columns: var(--band) 1fr; min-height: 100vh; }
.lr-band { position: sticky; top: 0; height: 100vh; border-right: 1px solid var(--rule); display: flex; justify-content: center; padding: var(--space-3) 0; }
.lr-band img { width: 56%; height: auto; align-self: flex-start; }
.lr-topbar { display: none; }
.logo-white { display: none; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .logo-black { display: none; } :root:not([data-theme="light"]) .logo-white { display: block; } }
:root[data-theme="dark"] .logo-black { display: none; }
:root[data-theme="dark"] .logo-white { display: block; }
.lr-content { min-width: 0; }
.lr-main { padding: var(--space-3); max-width: 1200px; width: 100%; min-width: 0; overflow-wrap: anywhere; }
.lr-nav { display: flex; gap: var(--space-2); flex-wrap: wrap; justify-content: flex-end; padding: var(--space-3) var(--space-3) 0; }
@media (max-width: 720px) {
  .lr-page { grid-template-columns: 1fr; }
  .lr-band { display: none; }
  .lr-topbar { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--rule); }
  .lr-topbar img { height: 20px; width: auto; }
  .lr-main { padding: var(--space-2) 16px; }
  .lr-nav { justify-content: flex-start; padding: var(--space-2) 16px 0; }
}

/* Type */
h1, .h1 { font-weight: 700; font-size: 40px; line-height: 1; text-transform: uppercase; margin: 0 0 var(--space-2); letter-spacing: 0; }
h2, .h2 { font-weight: 500; font-size: 24px; line-height: 1.1; text-transform: uppercase; margin: var(--space-3) 0 var(--space-2); }
h3 { font-weight: 700; font-size: 16px; margin: var(--space-2) 0 var(--space-1); }
.label, label, th, .lr-nav a { font-size: 12px; line-height: 1.2; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.label-value { font-size: 12px; line-height: 1.2; font-weight: 400; letter-spacing: .02em; text-transform: uppercase; }
.muted { color: var(--muted); }
.lr-sub { margin: -8px 0 var(--space-2); }
.lede { font-size: 18px; margin: 0 0 var(--space-3); max-width: 640px; }
@media (max-width: 720px) { h1, .h1 { font-size: 28px; } h2, .h2 { font-size: 20px; } }

/* Rules and blocks */
hr, .rule { border: 0; border-top: 1px solid var(--rule); margin: var(--space-3) 0; }
.block { border-top: 1px solid var(--rule); padding-top: var(--space-2); margin-top: var(--space-3); }

/* Forms */
.field { display: grid; gap: var(--space-1); margin-bottom: var(--space-2); max-width: 520px; }
input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea {
  font: inherit; color: var(--ink); background: var(--ground); border: 1px solid var(--rule); padding: 10px 12px; width: 100%;
}
textarea { min-height: 120px; resize: vertical; }
.hint { font-size: 14px; font-style: italic; color: var(--muted); }
.btn { font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; cursor: pointer;
  padding: 12px 20px; border: 1px solid var(--ink); background: var(--ink); color: var(--ground); display: inline-block; text-decoration: none;
  overflow-wrap: normal; word-break: normal; white-space: nowrap; }
.btn--secondary { background: var(--ground); color: var(--ink); }
.btn:disabled { background: var(--ground); color: var(--ink); border: 1px dashed var(--ink); cursor: not-allowed; }
/* Compact buttons for rows of choices (naming panel, SHOW MORE) */
.btn--sm { padding: 7px 12px; font-size: 11px; }
/* A text button: underlined label, no box */
.btn--link { background: none; border: 0; padding: 4px 0; color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.btn--link:disabled { border: 0; }
/* The one primary action on a page (UPLOAD): solid, larger. Disabled it stays the same size, outlined. */
.btn--primary { font-size: 16px; padding: 18px 48px; min-width: 240px; border-width: 2px; }
.btn--primary:disabled { border: 2px solid var(--ink); background: var(--ground); color: var(--ink); }
.actions { display: flex; gap: var(--space-1); flex-wrap: wrap; align-items: center; }

/* Notices: the leading word carries meaning, not colour */
.notice { border: 1px solid var(--rule); padding: var(--space-2); margin: var(--space-2) 0; }
.notice__tag { font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; margin-right: var(--space-1); }

/* Tables */
.table-wrap { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: 14px; }
th, td { text-align: left; padding: 8px 12px 8px 0; border-bottom: 1px solid var(--rule); vertical-align: top;
  overflow-wrap: normal; word-break: normal; }
th { white-space: nowrap; }
/* Long codes and URLs may still break anywhere; words never do. */
td code { overflow-wrap: anywhere; }

/* Delivered tree */
.tree { list-style: none; padding: 0; margin: 0; }
.tree ul { list-style: none; padding-left: var(--space-2); border-left: 1px solid var(--rule); margin: 4px 0 4px 4px; }
.tree li { padding: 4px 0; }
.file-meta { font-size: 14px; color: var(--muted); }

/* Delivered list: search, chips, count, folders */
.dl-controls { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); align-items: flex-end; margin-bottom: var(--space-2); }
.dl-search { display: grid; gap: var(--space-1); flex: 1 1 280px; max-width: 420px; }
.dl-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; cursor: pointer;
  padding: 9px 12px; border: 1px solid var(--ink); background: var(--ground); color: var(--ink); }
.chip[aria-pressed="true"] { background: var(--ink); color: var(--ground); }
.dl-bar { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); align-items: baseline; justify-content: space-between; padding: var(--space-1) 0; border-bottom: 1px solid var(--rule); }
.dl-bar:empty { display: none; }
.dl-count { font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.dl-bar .btn--link { font-size: 12px; }
.dl-empty { font-style: italic; }
.dl-folder { border-bottom: 1px solid var(--rule); }
.dl-folder__head { font: inherit; width: 100%; display: flex; flex-wrap: wrap; gap: 4px var(--space-2); justify-content: space-between; align-items: baseline;
  padding: 12px 0 12px 22px; position: relative; background: none; border: 0; color: var(--ink); cursor: pointer; text-align: left; }
.dl-folder__head::before { content: "\2212"; position: absolute; left: 0; top: 10px; font-weight: 700; width: 14px; text-align: center; }
.dl-folder__head[aria-expanded="false"]::before { content: "+"; }
/* A folder heading with ADD FILES HERE beside it (open events) */
.dl-folder__bar { display: flex; align-items: center; gap: var(--space-1) var(--space-2); }
.dl-folder__bar .dl-folder__head { flex: 1 1 auto; min-width: 0; }
.dl-folder--top .dl-folder__bar { justify-content: space-between; padding: 8px 0 8px 22px; }
.dl-add { flex: none; }
@media (max-width: 720px) { .dl-folder__bar { flex-wrap: wrap; } .dl-folder__bar .dl-add { margin: 0 0 12px 22px; } }
/* Where files added with ADD FILES HERE are going */
.upload-dest:empty { display: none; }
/* Files skipped as already delivered under a new name, with SEND SKIPPED FILES ANYWAY */
.skip-note:empty { display: none; }
.skip-note { border: 1px solid var(--ink); padding: 12px 16px; display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); align-items: center; justify-content: space-between; }
.skip-note p { margin: 0; flex: 1 1 320px; font-size: 14px; }
.upload-dest ul { list-style: none; margin: var(--space-1) 0 0; padding: 0; }
.upload-dest li { font-size: 14px; padding: 2px 0; overflow-wrap: anywhere; }
.dl-folder__name { font-size: 14px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; overflow-wrap: anywhere; }
.dl-folder__meta { font-size: 14px; }
.dl-files { list-style: none; margin: 0 0 var(--space-1); padding: 0 0 0 22px; }
.dl-file { padding: 6px 0; border-top: 1px dotted var(--rule); }
.dl-file__name { display: flex; flex-wrap: wrap; gap: 4px 0; align-items: baseline; }
.dl-file__title { overflow-wrap: anywhere; margin-right: 2px; }
.dl-more { padding: var(--space-2) 0; }
.dl-progress:empty { display: none; }
@media (max-width: 720px) { .dl-search { max-width: none; } .dl-files { padding-left: 0; } }
.tag { font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; border: 1px solid var(--ink); padding: 1px 6px; margin-left: 6px; white-space: nowrap; }
.tag--solid { background: var(--ink); color: var(--ground); margin-left: 0; }
.tag--flush { margin-left: 0; }
pre.cmd { margin: var(--space-1) 0; padding: 12px; border: 1px solid var(--rule); overflow-x: auto; white-space: pre-wrap; overflow-wrap: anywhere; user-select: all; }

/* Uploader blocks: TEST/SHOW, note, dashboard, naming panel, UPLOAD and status, evenly spaced */
#uploader > * + * { margin-top: var(--space-3); }
#uploader > .banner { margin-top: 0; }
#uploader .field { margin-bottom: 0; }

/* TEST FILES / SHOW CONTENT: two square toggles over real radio inputs */
.toggle { border: 0; padding: 0; margin-left: 0; margin-right: 0; min-width: 0; }
.toggle legend { padding: 0; margin-bottom: var(--space-1); }
.toggle__req { font-weight: 400; }
.toggle__options { display: grid; grid-template-columns: repeat(2, minmax(0, 260px)); gap: var(--space-2); }
.toggle__option { position: relative; display: flex; align-items: center; justify-content: center; min-height: 72px; padding: 12px 16px;
  border: 1px solid var(--ink); cursor: pointer; font-size: 16px; text-align: center; background: var(--ground); color: var(--ink); }
.toggle__option input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.toggle__option:hover { outline: 1px solid var(--ink); outline-offset: -3px; }
.toggle__option:has(input:checked) { background: var(--ink); color: var(--ground); }
/* A square marker, hollow or filled, so the choice never rests on colour alone (borders survive forced colours) */
.toggle__option::before { content: ""; flex: none; box-sizing: border-box; width: 14px; height: 14px; margin-right: 10px; border: 2px solid currentColor; }
.toggle__option:has(input:checked)::before { border-width: 7px; }
@media (forced-colors: active) { .toggle__option:has(input:checked) { border-width: 4px; } }
.toggle__option:has(input:focus-visible) { outline: 2px solid var(--ink); outline-offset: 3px; }
@media (max-width: 720px) { .toggle__options { grid-template-columns: 1fr 1fr; gap: var(--space-1); } .toggle__option { font-size: 14px; min-height: 64px; } }

/* UPLOAD and the status line under it */
.upload-actions { border-top: 1px solid var(--rule); padding-top: var(--space-3); }
.upload-status { margin-top: var(--space-2); max-width: 760px; min-height: 1.4em; }
.speed { margin-top: var(--space-2); max-width: 760px; border-top: 1px solid var(--rule); padding-top: var(--space-1); }
.speed[hidden], .speed [hidden] { display: none; }
.speed p { margin: 0 0 4px; font-size: 14px; }
.speed__text { font-weight: 700; }
@media (max-width: 720px) { .btn--primary { width: 100%; min-width: 0; } }

/* Naming panel: bulk answers on top, then one compact row per file */
.naming:empty { display: none; }
.naming__head { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; justify-content: space-between; }
.naming__bulk { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); align-items: center; }
.naming__count { font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.naming__good { display: flex; gap: var(--space-1); align-items: center; font-size: 14px; }
.naming__note { font-size: 14px; font-style: italic; margin: var(--space-1) 0 0; }
.naming__rows { list-style: none; margin: var(--space-2) 0 0; padding: 0; }
.nrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px var(--space-2); align-items: center; padding: 8px 0; border-top: 1px solid var(--rule); font-size: 14px; }
.nrow__names { display: flex; flex-wrap: wrap; gap: 0 8px; align-items: baseline; min-width: 0; overflow-wrap: anywhere; }
.nrow__to { font-weight: 700; }
.nrow__actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: flex-end; }
.nrow__status, .nrow__outcome { font-size: 11px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.nrow__outcome { margin-right: 6px; }
.nrow--block { grid-template-columns: auto minmax(0, 1fr) auto; }
.nrow--block .nrow__status { border: 1px solid var(--ink); padding: 2px 6px; }
.nrow--done .nrow__names { font-style: italic; }
.nrow--note { grid-template-columns: 1fr; font-style: italic; border-top-style: dotted; }
@media (max-width: 720px) {
  .nrow, .nrow--block { grid-template-columns: 1fr; }
  .nrow__actions { justify-content: flex-start; }
  .naming__head { align-items: flex-start; flex-direction: column; }
}

/* Uppy overrides: square, monochrome, brand type */
.uppy-Root, .uppy-Dashboard-inner { font-family: var(--font-sans) !important; border-radius: 0 !important; }
.uppy-Dashboard-inner { background: var(--ground) !important; border: 1px solid var(--rule) !important; }
.uppy-c-btn, .uppy-StatusBar, .uppy-Dashboard-Item-previewInnerWrap, .uppy-DashboardContent-bar { border-radius: 0 !important; }
.uppy-c-btn-primary { background: var(--ink) !important; color: var(--ground) !important; }
.uppy-StatusBar-progress { background-color: var(--ink) !important; }
.uppy-Dashboard-AddFiles-title, .uppy-Dashboard-AddFiles-title *, .uppy-StatusBar-statusPrimary { text-transform: uppercase; letter-spacing: .02em; }
/* Uppy, everything else: one ink colour on the ground, no greys, no tints */
.uppy-Root, .uppy-Root * { color: var(--ink) !important; border-color: var(--rule) !important; box-shadow: none !important; }
.uppy-Root svg[fill]:not([fill="none"]), .uppy-Root svg [fill]:not([fill="none"]) { fill: currentColor !important; }
.uppy-Root svg[stroke]:not([stroke="none"]), .uppy-Root svg [stroke]:not([stroke="none"]) { stroke: currentColor !important; }
.uppy-DashboardContent-bar, .uppy-StatusBar, .uppy-StatusBar-content, .uppy-StatusBar-actions, .uppy-Dashboard-files,
.uppy-Dashboard-Item-previewInnerWrap, .uppy-Dashboard-AddFiles, .uppy-Dashboard-dropFilesHereHint, .uppy-Dashboard-FileCard,
.uppy-DashboardContent-panel, .uppy-Dashboard-progressindicators, .uppy-Dashboard-serviceMsg { background: var(--ground) !important; }
.uppy-Dashboard-Item-previewInnerWrap { border: 1px solid var(--rule) !important; }
.uppy-DashboardContent-bar { border-bottom: 1px solid var(--rule) !important; }
.uppy-DashboardContent-back, .uppy-DashboardContent-addMore, .uppy-DashboardContent-title, .uppy-Dashboard-browse,
.uppy-StatusBar-statusSecondary, .uppy-StatusBar-actionBtn { text-transform: uppercase; letter-spacing: .02em; font-weight: 700; }
.uppy-Dashboard-browse { text-decoration: underline; }
.uppy-StatusBar-progress, .uppy-StatusBar.is-error .uppy-StatusBar-progress, .uppy-StatusBar.is-complete .uppy-StatusBar-progress { background-color: var(--ink) !important; }
.uppy-StatusBar::before { background-color: var(--rule) !important; }
.uppy-Informer p, .uppy-Dashboard-Item-errorDetails { background: var(--ink) !important; color: var(--ground) !important; border-radius: 0 !important; }
.uppy-Informer p * { color: var(--ground) !important; }
/* @uppy/dashboard 6.0.1 renders its Informer twice (above and below the status bar), so every message showed twice. Keep one. */
.uppy-Informer:has(~ .uppy-Informer) { display: none; }
.uppy-Dashboard-Item-previewIconBg { display: none !important; }
.uppy-Dashboard-Item-action--remove { background: transparent !important; }
.uppy-Dashboard-Item-action--remove svg path { fill: var(--ink) !important; }
.uppy-Root .uppy-Dashboard-Item-action--remove svg path[fill]:not([fill="none"]) { fill: var(--ground) !important; }

/* Uppy, layout fixes */
/* The page lets long words break anywhere; inside Uppy a name would split mid-extension. Uppy already shortens long names in the middle. */
.uppy-Root, .uppy-Root * { overflow-wrap: normal; word-break: normal; }
.uppy-Dashboard-Item-name { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }
.uppy-Dashboard-AddFiles-title { font-size: 16px !important; font-weight: 700 !important; }
.uppy-Dashboard-AddFiles-title, .uppy-Dashboard-AddFiles-title .uppy-Dashboard-browse { text-transform: uppercase !important; letter-spacing: .02em !important; font-weight: 700 !important; }
.uppy-Dashboard-AddFiles-title .uppy-Dashboard-browse { text-decoration: underline !important; text-underline-offset: 3px; border-bottom: 0 !important; }
.uppy-Dashboard-note { font-size: 14px !important; }
/* An obvious scrollbar on the file list when it holds more than fits */
.uppy-Dashboard-files { overflow-y: scroll !important; scrollbar-color: var(--ink) var(--ground); }
/* Status bar: a ruled band under the list, never over the tiles; the progress bar is its top edge */
.uppy-StatusBar:not([aria-hidden=true]) { border-top: 1px solid var(--rule) !important; }
.uppy-StatusBar::before { height: 0 !important; }
.uppy-StatusBar-progress { height: 4px !important; }
.uppy-StatusBar-content { padding-left: 16px !important; }
.uppy-Root .uppy-StatusBar-actionBtn--done { font-size: 12px !important; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; padding: 8px 16px !important;
  border: 1px solid var(--ink) !important; background: var(--ink) !important; color: var(--ground) !important; border-radius: 0 !important; line-height: 1.2 !important; }
/* Long lists use Uppy's one-row-per-file layout (see main.ts): a hairline between rows */
.uploader--dense .uppy-Dashboard-Item { border-bottom: 1px solid var(--rule) !important; }
.uppy-StatusBar-progress { z-index: 1003 !important; top: 0; left: 0; }
.uppy-StatusBar-content, .uppy-StatusBar-actions { background: transparent !important; }

/* Content spec: the pre-flight block in the uploader (informs only, never blocks) */
.preflight:empty { display: none; }
.preflight__head { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); align-items: baseline; }
.preflight__summary { font-size: 14px; }
.preflight__sets, .preflight__rows { list-style: none; margin: var(--space-1) 0 0; padding: 0; }
.preflight__sets li { font-size: 14px; font-weight: 700; padding: 6px 0; border-top: 1px dotted var(--rule); }
.prow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px var(--space-2); padding: 6px 0; border-top: 1px solid var(--rule); font-size: 14px; }
.prow__name { min-width: 0; overflow-wrap: anywhere; }
.prow__text { text-align: right; }
.prow--differs .prow__text { font-weight: 700; }
.prow--unknown .prow__text, .prow--checking .prow__text { font-style: italic; }
@media (max-width: 720px) { .prow { grid-template-columns: 1fr; } .prow__text { text-align: left; } }

/* Content spec pages and the event page's SPEC section */
.spec__list { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px var(--space-2); margin: 0; }
.spec__list dt { font-size: 12px; line-height: 1.6; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.spec__list dd { margin: 0; }
.spec-details { margin: var(--space-1) 0; }
.spec-details > summary, .spec-cell > summary { cursor: pointer; font-size: 12px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.spec-cell ul { margin: 4px 0 0; padding-left: 18px; font-size: 13px; }
.spec-users { margin: 0; padding-left: 18px; }

/* Admin spec form */
.spec-form__surfaces { max-width: 640px; border: 0; padding: 0; }
.spec-form__surfaces input { min-width: 90px; }
.spec-form__codecs { border: 0; padding: 0; max-width: 640px; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 6px var(--space-2); }
.spec-form__codecs legend { margin-bottom: var(--space-1); }
.spec-form__check { display: flex; gap: 8px; align-items: center; }
