/* Secret Cell · Studio (the Nex admin portal).
   Colour, type and size tokens are copied from the Studio Plan dashboard
   (Studio_Plan/exporters/html_assets/studio.css), so the two read as one system in light and dark.
   build_portal.py warns when a token here drifts from studio.css. Status colours are for problems only.
   --muted-text is the portal's own: secondary text that still reads at 4.5:1 in light mode (--muted stays for
   decoration such as separators). */
:root {
  --bg: #eef1f2;
  --surface: #fbfcfc;
  --surface-2: #f2f5f6;
  --surface-3: #e6ebed;
  --ink: #13191c;
  --ink-2: #48535a;
  --muted: #6f7b82;
  --muted-text: #5f6b72;
  --line: #dde3e6;
  --line-strong: #c2cbd0;
  --link: #1b5fae;
  --focus: #1b5fae;
  --select: #13191c;
  --select-ink: #fbfcfc;
  --crit: #d03b3b;
  --crit-ink: #a3221c;
  --crit-tint: #f8dcd9;
  --warn: #e8830c;
  --warn-ink: #8a4a00;
  --warn-tint: #fde2c4;
  --good: #0ca30c;
  --good-ink: #1d6e1d;
  --info: #5f7b8f;
  --info-tint: #e2eaf0;

  --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-display: "Avenir Next", "Avenir", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;
  --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --fs-xs: 11px;
  --fs-s: 12px;
  --fs-m: 14px;
  --fs-l: 16px;
  --fs-xl: 20px;
  --fs-xxl: 28px;

  --gutter: 24px;
  --radius: 8px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0e1113;
    --surface: #161a1d;
    --surface-2: #1c2125;
    --surface-3: #252b30;
    --ink: #edf1f2;
    --ink-2: #b4bec3;
    --muted: #87939a;
    --muted-text: #87939a;
    --line: #283036;
    --line-strong: #3a444a;
    --link: #8ab8ff;
    --focus: #8ab8ff;
    --select: #edf1f2;
    --select-ink: #121517;
    --crit: #e05252;
    --crit-ink: #ff9d97;
    --crit-tint: #4a1f1f;
    --warn: #ec9338;
    --warn-ink: #f7bd7e;
    --warn-tint: #452b12;
    --good: #0ca30c;
    --good-ink: #58c558;
    --info: #8aa3b5;
    --info-tint: #1f2a33;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #0e1113;
  --surface: #161a1d;
  --surface-2: #1c2125;
  --surface-3: #252b30;
  --ink: #edf1f2;
  --ink-2: #b4bec3;
  --muted: #87939a;
  --muted-text: #87939a;
  --line: #283036;
  --line-strong: #3a444a;
  --link: #8ab8ff;
  --focus: #8ab8ff;
  --select: #edf1f2;
  --select-ink: #121517;
  --crit: #e05252;
  --crit-ink: #ff9d97;
  --crit-tint: #4a1f1f;
  --warn: #ec9338;
  --warn-ink: #f7bd7e;
  --warn-tint: #452b12;
  --good: #0ca30c;
  --good-ink: #58c558;
  --info: #8aa3b5;
  --info-tint: #1f2a33;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 104px; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 14px/1.45 var(--font-ui);
  -webkit-font-smoothing: antialiased;
}
a { color: var(--link); text-underline-offset: 2px; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
h1, h2, h3, h4 { text-wrap: balance; margin: 0; }
p, li, td, .sub { text-wrap: pretty; }   /* no one-word last line (Chrome 117 and later) */
.nw { white-space: nowrap; }             /* a date kept whole; a range breaks only at "to" */
code, .mono { font-family: var(--font-mono); font-size: .92em; }
.num { font-variant-numeric: tabular-nums; }
.skip { position: absolute; left: -9999px; top: 8px; background: var(--surface); padding: 6px 10px; border-radius: 6px; z-index: 50; }
.skip:focus { left: 8px; }

/* ------------------------------------------------------------------ header (as on the Studio Plan dashboard) */
.wrap { max-width: 1200px; margin: 0 auto; padding-inline: var(--gutter); }
.chrome { position: sticky; top: 0; z-index: 20; background: var(--bg); border-bottom: 1px solid var(--line); }
/* below 1201px the header can wrap onto a second row (5 or 6 tabs), so it scrolls away instead of staying on top:
   it never covers an anchor's heading or a focused link. A wrapped "user · level" row sits on the right. */
@media (max-width: 1200px) { .chrome { position: static; } html { scroll-padding-top: 0; } .who { margin-left: auto; } }
.bar { display: flex; align-items: center; gap: 12px 20px; flex-wrap: wrap; padding-block: 16px; min-height: 76px; }
/* the Viewer's bar has no tabs: the date sits next to the user at every width, and a wrapped row stays on the right */
.bar:not(:has(.tabs)) { justify-content: flex-end; }
.bar:not(:has(.tabs)) .brand { margin-right: auto; }
.bar:not(:has(.tabs)) .asof, .bar:not(:has(.tabs)) .who { margin-left: 0; }
.brand { display: flex; align-items: center; gap: 10px; min-width: 0; color: var(--ink); text-decoration: none; }
.nex-mark { display: block; flex: none; height: 17px; width: auto; color: var(--ink); }
.brand-name { font: 650 var(--fs-xl)/1.1 var(--font-display); letter-spacing: -.01em; white-space: nowrap; }
.brand-name .sep { color: var(--muted); font-weight: 500; }
.tabs { display: flex; gap: 4px; align-items: center; flex: 1 1 auto; min-width: 0; }
.tab { padding: 8px 12px 10px; font-weight: 580; color: var(--ink-2); border: 0; white-space: nowrap; font-size: var(--fs-m); text-decoration: none; }
.tab:hover { color: var(--ink); }
.tab[aria-current] { color: var(--ink); }
.asof { font-size: var(--fs-s); color: var(--ink-2); font-weight: 550; margin-left: auto; white-space: nowrap; }
.who { display: flex; align-items: center; gap: 8px; font-size: var(--fs-s); color: var(--ink-2); white-space: nowrap; }
.who form { margin: 0; }
.signout { font: inherit; font-weight: 600; color: var(--ink); background: var(--surface); border: 1px solid var(--line-strong); border-radius: 6px; padding: 3px 9px; cursor: pointer; min-height: 24px; }
.signout:hover { border-color: var(--ink); }

main.wrap { padding-block: 22px 40px; }
.view-head { margin-bottom: 16px; }
.view-head h1 { font: 600 var(--fs-xxl)/1.15 var(--font-display); letter-spacing: -.01em; }
.view-head .lede { margin: 6px 0 0; color: var(--ink-2); max-width: 78ch; }
.head-row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; }
.head-act { margin: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; }   /* tap targets 24 px apart on a phone */
.head-sub { font-size: var(--fs-s); font-weight: 600; }
.view-head .meta { margin: 6px 0 0; color: var(--ink-2); display: flex; flex-wrap: wrap; gap: 2px 0; }
.view-head .meta span + span::before { content: "\00b7"; color: var(--muted); padding: 0 8px; }
.crumb { font-size: var(--fs-s); margin-bottom: 6px; }
.crumb a { color: var(--ink-2); }

.section { margin-top: 30px; }
.section > h2 { font: 600 var(--fs-l)/1.3 var(--font-display); margin-bottom: 4px; display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.section > h2 small { font: 500 var(--fs-s) var(--font-ui); color: var(--muted-text); }
.sec-sub { color: var(--ink-2); font-size: var(--fs-s); margin: 0 0 10px; max-width: 80ch; }
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; min-width: 0; }
.note { color: var(--ink-2); font-size: var(--fs-s); max-width: 90ch; margin: 10px 0 0; }
.muted { color: var(--muted-text); }
.sw { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 8px; vertical-align: 1px; flex: none; background: var(--pc, var(--muted)); }
.view-head h1 .sw { width: 14px; height: 14px; vertical-align: 2px; margin-right: 10px; }
.sub { display: block; color: var(--ink-2); font-size: var(--fs-s); margin-top: 2px; font-weight: 400; }
td > .sub.fix:first-child { margin-top: 0; }
.sub.then { color: var(--ink); font-size: inherit; }
.lead-line { display: block; font-weight: 600; margin-bottom: 2px; }
.sub a { font-weight: 600; }

/* ------------------------------------------------------------------ chips */
.chip { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-s); font-weight: 650; padding: 2px 7px; border-radius: 4px; white-space: nowrap; line-height: 1.45; background: var(--surface-3); color: var(--ink-2); }
.chip.warn { background: var(--warn-tint); color: var(--warn-ink); }
.chip.crit { background: var(--crit-tint); color: var(--crit-ink); }
.chip.good { background: transparent; color: var(--good-ink); box-shadow: inset 0 0 0 1px var(--good-ink); }
.chip.line { background: transparent; color: var(--ink-2); box-shadow: inset 0 0 0 1px var(--line-strong); font-weight: 600; }
a.chip-link { text-decoration: none; }
a.chip-link:hover .chip { box-shadow: inset 0 0 0 1px currentColor; }
.chip.code { font-family: var(--font-mono); font-size: 10px; letter-spacing: .03em; font-weight: 600; }

/* ------------------------------------------------------------------ tables */
.table-wrap { overflow-x: auto; max-width: 100%; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
table.t { border-collapse: separate; border-spacing: 0; width: 100%; font-size: var(--fs-m); }
table.t th, table.t td { padding: 9px 12px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
table.t thead th { background: var(--surface-2); font-size: var(--fs-s); font-weight: 600; color: var(--ink-2); white-space: nowrap; }
table.t tbody tr:last-child td, table.t tbody tr:last-child th { border-bottom: 0; }
table.t tbody th { font-weight: 600; }
table.t.compact { font-size: var(--fs-s); }
table.t.compact th, table.t.compact td { padding: 7px 10px; }
table.t td.n { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
@media (min-width: 1100px) { table.t.fixed { table-layout: fixed; } table.t.fixed td, table.t.fixed th { overflow-wrap: anywhere; } table.t.fixed thead th { white-space: normal; } }
table.t .ttl { font-weight: 650; font-size: var(--fs-l); text-decoration: none; }
table.t .ttl:hover { text-decoration: underline; }
table.t a.site { font-weight: 600; }
a.repo, span.repo { font-family: var(--font-mono); font-size: 1em; overflow-wrap: anywhere; }
@media (min-width: 700px) { .repos a.repo, .repos span.repo { white-space: nowrap; } }   /* Links: repo names stay whole */
/* the word joiner (U+2060) keeps the arrow on the link's last line */
.ext::after { content: "\2060\2197"; font-size: .85em; margin-left: 2px; color: var(--muted); }

/* Tables stack into one card per row on a phone: each cell names its column (data-label). */
@media (max-width: 699px) {
  .table-wrap.stack { border: 0; background: none; overflow: visible; }
  table.stack, table.stack tbody, table.stack tr, table.stack td, table.stack tbody th { display: block; width: 100%; }
  table.stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  table.stack tr { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; margin-bottom: 10px; }
  table.stack td, table.stack tbody th { border: 0; padding: 3px 0; min-width: 0; overflow-wrap: anywhere; }
  table.stack td.wide, table.stack tbody th.wide { grid-column: 1 / -1; }
  table.stack.dense tr { grid-auto-flow: row dense; }
  table.stack .nw { white-space: nowrap; }   /* dates stay whole in a card too */
  .view-head .meta { gap: 2px 14px; }
  .view-head .meta span + span::before { content: none; }
  table.stack td[data-label]::before { content: attr(data-label); display: block; font-size: var(--fs-xs); font-weight: 650; color: var(--muted-text); text-transform: uppercase; letter-spacing: .05em; margin-top: 4px; }
  table.stack td.n { text-align: left; }
  table.stack td:empty, table.stack td.sm-hide { display: none; }
}

/* ------------------------------------------------------------------ status panel, facts, callouts */
.status { display: flex; gap: 12px; align-items: flex-start; }
.status .chip { flex: none; margin-top: 2px; }
.status p { margin: 0; max-width: 80ch; }
.status p + p { margin-top: 6px; color: var(--ink-2); }
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px 24px; margin: 0; }
.facts div { min-width: 0; }
.facts dt { font-size: var(--fs-xs); color: var(--muted-text); font-weight: 650; text-transform: uppercase; letter-spacing: .06em; }
.facts dd { margin: 3px 0 0; font-weight: 550; overflow-wrap: anywhere; }
.facts dd .sub { font-weight: 400; }
dl.facts.panel { margin: 0 0 12px; }
.board-head .counts { margin-bottom: 10px; }
.board-head p { margin: 0; color: var(--ink-2); max-width: 100ch; }
.board-head p b { color: var(--ink); }
.callout { border-radius: var(--radius); padding: 10px 14px; font-size: var(--fs-m); background: var(--info-tint); color: var(--ink-2); max-width: 100%; overflow-wrap: anywhere; }
.callout p { margin: 0; }
.callout p + p { margin-top: 6px; }
.due-list .sub, .callout p { max-width: 78ch; }   /* readable line length, as .lede and .sec-sub */
.callout b { color: var(--ink); }
.callout.warn { background: var(--warn-tint); color: var(--warn-ink); }
.callout.warn b { color: inherit; }
.callout.stale { margin: 0 0 14px; }
.callout + .table-wrap, .callout + .due-list, .callout + .section { margin-top: 12px; }   /* a callout never touches what follows */
.counts { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0; padding: 0; list-style: none; color: var(--ink-2); }
.counts b { color: var(--ink); font-size: var(--fs-l); font-variant-numeric: tabular-nums; margin-right: 4px; }
.joining { margin: 12px 0 0; color: var(--ink-2); font-size: var(--fs-s); }

/* link lists (Planning) */
.links { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr)); gap: 8px; }
.links li { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; min-width: 0; }
.links a { font-weight: 600; overflow-wrap: anywhere; }
.links .sub { overflow-wrap: anywhere; }
.btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); border-radius: 6px; padding: 7px 14px; font-weight: 600; text-decoration: none; }
.btn:hover { border-color: var(--ink); }
.btn.primary { background: var(--select); color: var(--select-ink); border-color: var(--select); }
.btn.primary:hover { opacity: .9; }
.path { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--ink-2); overflow-wrap: anywhere; }


/* ------------------------------------------------------------------ guide */
.guide-nav { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; padding: 0; list-style: none; }
.guide-nav a { display: inline-block; padding: 5px 11px; border-radius: 14px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink-2); text-decoration: none; font-size: var(--fs-s); font-weight: 600; }
.guide-nav a:hover { color: var(--ink); border-color: var(--ink); }
.guide-nav a[aria-current="page"] { background: var(--select); color: var(--select-ink); border-color: var(--select); }
.doc { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px 28px 26px; max-width: 820px; }
.doc > :first-child { margin-top: 0; }
.doc h1 { font: 600 var(--fs-xxl)/1.2 var(--font-display); margin: 0 0 8px; }
.doc h2 { font: 600 var(--fs-l)/1.3 var(--font-display); margin: 26px 0 6px; }
.doc h3 { font-size: var(--fs-m); margin: 18px 0 4px; }
.doc h4 { font-size: var(--fs-s); margin: 14px 0 4px; }
.doc p, .doc li { line-height: 1.6; }
.doc p { margin: 8px 0; }
.doc ul, .doc ol { margin: 8px 0; padding-left: 22px; }
.doc li { margin: 3px 0; }
.doc li > ul, .doc li > ol { margin: 3px 0; }
.doc blockquote { margin: 12px 0; padding: 10px 14px; border-radius: var(--radius); background: var(--info-tint); color: var(--ink-2); }
.doc blockquote p { margin: 0; }
.doc blockquote p + p { margin-top: 6px; }
.doc blockquote strong { color: var(--ink); }
.doc pre { background: var(--surface-2); border: 1px solid var(--line); border-radius: 6px; padding: 10px 12px; overflow-x: auto; font-size: var(--fs-s); }
@media (min-width: 700px) { .doc pre { font-size: var(--fs-xs); } }   /* a wide sketch (Options section 7) fits the column */
/* a box that scrolls sideways shows its scrollbar, so a cut line never looks complete (macOS hides overlay bars) */
.doc pre::-webkit-scrollbar, .table-wrap::-webkit-scrollbar { height: 8px; }
.doc pre::-webkit-scrollbar-thumb, .table-wrap::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 4px; }
.doc code { background: var(--surface-2); border-radius: 3px; padding: 0 3px; overflow-wrap: anywhere; }
.doc pre code { background: none; padding: 0; font-size: inherit; }   /* never below the 11 px floor */
.doc pre.cmd { white-space: pre-wrap; overflow-wrap: anywhere; }   /* a command shows whole at any width */
.doc .table-wrap { margin: 10px 0; }
.doc table.t { font-size: var(--fs-s); }
.doc table.t thead th { white-space: normal; }   /* a long option name wraps, so every column fits */
.doc table.t td[data-label="Source"] { overflow-wrap: anywhere; }   /* long URLs break, so the table fits its column */
.doc .lead { color: var(--ink-2); font-size: var(--fs-l); margin-top: 0; }
.pager { display: flex; justify-content: space-between; gap: 12px; margin-top: 18px; max-width: 820px; flex-wrap: wrap; }
.pager a { font-weight: 600; }
.chapters { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 12px; }
.chapters li { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; }
.chapters a { font: 600 var(--fs-l)/1.3 var(--font-display); text-decoration: none; }
.chapters a:hover { text-decoration: underline; }
.chapters .n { display: block; font-size: var(--fs-xs); color: var(--muted-text); font-weight: 650; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 4px; }
.chapters p { margin: 6px 0 0; color: var(--ink-2); font-size: var(--fs-s); }

footer.foot { color: var(--muted-text); font-size: var(--fs-xs); padding-bottom: 28px; }
footer.foot .in { border-top: 1px solid var(--line); padding-top: 14px; }
footer.foot p { margin: 0; }
footer.foot p + p { margin-top: 3px; }

@media (max-width: 599px) {
  :root { --gutter: 16px; }
  .bar { gap: 0 12px; }
  .brand { gap: 8px; min-height: 24px; }   /* a 24px target on phones (WCAG 2.5.8) */
  .brand-name { font-size: var(--fs-l); }
  .nex-mark { height: 14px; }
  .asof { order: 2; margin-left: auto; }
  .who { order: 3; flex-basis: 100%; justify-content: flex-end; }
  .tabs { order: 4; flex-basis: 100%; flex-wrap: wrap; }
  .tab { padding: 8px 9px 10px; }
  .view-head h1 { font-size: 24px; }
  .doc { padding: 16px 16px 20px; }
  .doc h1 { font-size: 24px; }
  .status { flex-direction: column; gap: 6px; }
}
@media (max-width: 420px) { .tab { padding-inline: 5px; font-size: 13px; } .tabs { gap: 0; } }
@media (max-width: 380px) { .tab { padding-inline: 4px; } .brand-name { font-size: 15px; } .asof { font-size: var(--fs-xs); } }
@media print {
  .chrome { position: static; }
  .tabs, .skip { display: none; }
  body { background: #fff; }
}

/* ------------------------------------------------------------------ outline beside a guide chapter or doc (wide screens) */
.outline { display: none; }
@media (min-width: 1100px) {
  .reading { display: grid; grid-template-columns: minmax(0, 870px) minmax(160px, 240px); gap: 32px; align-items: start; }   /* the Options sketch fits at 11 px */
  .reading .doc { max-width: none; }
  .outline { display: block; position: sticky; top: 76px; font-size: var(--fs-s); max-height: calc(100vh - 96px); overflow-y: auto; }
  .outline p { margin: 4px 0 8px; font-size: var(--fs-xs); font-weight: 650; color: var(--muted-text); text-transform: uppercase; letter-spacing: .06em; }
  .outline ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--line); }
  .outline a { display: block; padding: 4px 0 4px 12px; color: var(--ink-2); text-decoration: none; line-height: 1.35; }
  .outline a:hover { color: var(--ink); text-decoration: underline; }
  .outline a:focus-visible { outline-offset: -2px; }   /* the outline scrolls, so a ring outside the link is clipped */
}

/* ------------------------------------------------------------------ levels: sub-navigation, sign-in */
.subnav { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; }
.subnav a { display: inline-block; padding: 5px 11px; border-radius: 14px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink-2); text-decoration: none; font-size: var(--fs-s); font-weight: 600; }
.subnav a:hover { color: var(--ink); border-color: var(--ink); }
.subnav a[aria-current="page"] { background: var(--select); color: var(--select-ink); border-color: var(--select); }
.m0 { margin: 0; }
.mb10 { margin: 0 0 10px; }
.note.flush { margin-top: 0; }
.note.top { margin: -6px 0 14px; }
.h3 { font-size: var(--fs-m); margin: 18px 0 8px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
ul.plain { margin: 6px 0 0; padding-left: 20px; max-width: 90ch; }
ul.plain li { margin: 4px 0; line-height: 1.5; }
.btn.small { padding: 4px 10px; font-size: var(--fs-s); }
.stack-list { display: flex; flex-direction: column; gap: 3px; }
.compact-doc { max-width: 900px; padding: 16px 20px; }
.compact-doc h3:first-child { margin-top: 0; }

main.login { display: flex; justify-content: center; padding-top: 40px; }
.login-card { width: 100%; max-width: 380px; padding: 22px 24px; }
.login-card h1 { font: 600 var(--fs-xxl)/1.2 var(--font-display); margin-bottom: 12px; }
.login-form { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.login-form + form { margin-top: 14px; }
.login-form label { font-size: var(--fs-s); font-weight: 650; color: var(--ink-2); margin-top: 6px; }
.login-form input { font: inherit; font-size: var(--fs-l); padding: 9px 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface); color: var(--ink); min-width: 0; }
.login-form input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.login-form .btn { margin-top: 14px; justify-content: center; font-size: var(--fs-l); padding: 9px 14px; cursor: pointer; }
.login-msg { margin: 0 0 8px; padding: 8px 10px; border-radius: 6px; background: var(--warn-tint); color: var(--warn-ink); font-weight: 600; font-size: var(--fs-s); }
.login-card .qr { display: block; width: 240px; max-width: 100%; height: auto; margin: 16px auto; }
.login-card > .more { margin-block: 16px; }
.login-card .chip.code { display: block; max-width: 100%; white-space: normal; overflow-wrap: anywhere; line-height: 1.8; padding: 8px 10px; }

/* ------------------------------------------------------------------ Prototypes (the Viewer page) */
.protos { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); gap: 10px; }
.protos li { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; min-width: 0; }
.proto-line { font-weight: 550; min-width: 0; overflow-wrap: anywhere; }
.protos li:has(.proto-still) { flex-wrap: wrap; align-content: flex-start; }
.proto-still { flex: 0 0 100%; display: block; }   /* the build's title screen, above its name */
.proto-still img, img.proto-still { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: calc(var(--radius) - 2px); border: 1px solid var(--line); background: var(--surface-2); }
.btn.play { flex: none; background: var(--select); color: var(--select-ink); border-color: var(--select); }
.btn.play::after { content: "\2060\2197"; font-size: .85em; margin-left: 2px; }
.protos .soon { flex: none; max-width: 45%; text-align: right; font-size: var(--fs-s); color: var(--ink-2); }

/* ------------------------------------------------------------------ schedules and resources (Producer) */
.sched-wrap { overflow-x: auto; }
table.sched { border-collapse: separate; border-spacing: 0; font-size: var(--fs-s); min-width: 100%; }
table.sched th, table.sched td { border-bottom: 1px solid var(--line); padding: 5px 6px; text-align: left; vertical-align: top; }
table.sched thead th { background: var(--surface-2); color: var(--ink-2); font-weight: 600; white-space: nowrap; position: sticky; top: 0; }
table.sched tbody th[scope="row"], table.sched thead th:first-child { position: sticky; left: 0; background: var(--surface); z-index: 1; min-width: 150px; max-width: 200px; font-weight: 600; border-right: 1px solid var(--line); }
table.sched thead th:first-child { background: var(--surface-2); z-index: 2; }
table.sched tbody th .sub { font-weight: 400; }
table.sched tr.grp th { background: var(--surface-2); color: var(--ink-2); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .06em; font-weight: 650; padding: 6px; position: static; }
table.sched tr.grp th > span { display: inline-block; position: sticky; left: 6px; }   /* the team name stays in view when the grid scrolls sideways */
table.sched td { min-width: 52px; white-space: nowrap; }
table.sched td.pc, .legend .pc { background: color-mix(in srgb, var(--pc, var(--muted)) 26%, var(--surface)); color: var(--ink); }
table.sched td.pc { box-shadow: inset 3px 0 var(--pc, var(--muted)); }   /* the project's full colour, so close hues still read apart */
table.sched td.spec { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--pc, var(--muted)) 20%, var(--surface)) 0 5px, var(--surface) 5px 9px); }
table.sched td.off { color: var(--muted-text); }
table.sched .pj { display: block; font-weight: 650; }
table.sched .h { display: block; font-size: var(--fs-xs); color: var(--ink-2); }
table.sched .h.under { color: var(--warn-ink); font-weight: 650; display: inline-block; border: 1px solid currentColor; border-radius: 4px; padding: 0 3px; background: var(--surface); }   /* free time: outlined words, never a fill */
table.sched .h.over { color: var(--crit-ink); font-weight: 650; }
table.sched td.free { background: none; }
table.sched td.overb { background: var(--crit-tint); }
table.sched.gaps td .sub { font-size: var(--fs-xs); }
table.sched.counts-t td { text-align: center; font-weight: 600; }
.legend { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: var(--fs-xs); color: var(--ink-2); }
.legend .pc { display: inline-block; padding: 1px 5px; border-radius: 3px; font-weight: 650; }
.due-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.due-list li { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 14px; }
.due-list .due-draft { display: block; margin-top: 8px; }
.doc ol.steps > li { margin: 8px 0; }
.doc ol.steps pre { margin: 6px 0 0; }

/* Visual workspace: project identity, short action surfaces, details on demand. */
[hidden] { display: none !important; }
.icon { display: inline-block; width: 20px; height: 20px; flex: 0 0 20px; vertical-align: middle; }
.project-icon { width: 24px; height: 24px; flex-basis: 24px; }
body { line-height: 1.5; }
main.wrap { padding-top: 28px; padding-bottom: 42px; }
h1, .view-head h1 { letter-spacing: -.035em; font-size: clamp(28px,3.5vw,42px); line-height: 1.15; font-weight: 700; }
h2 { letter-spacing: -.025em; }
.view-head { margin-bottom: 26px; }
.eyebrow { font-size: 11px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-text); margin: 0 0 10px; }
.lede { font-size: 15px; color: var(--ink-2); max-width: 65ch; }
.head-row { align-items: center; gap: 20px; }
.btn { font: inherit; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; border-radius: 10px; font-weight: 650; white-space: normal; }
.btn.primary { background: var(--select); color: var(--select-ink); }
.btn .icon { width: 18px; height: 18px; flex-basis: 18px; }
.btn.small { min-height: 36px; }
.chrome { background: var(--surface); }
.brand-name { font-size: 15px; letter-spacing: -.02em; }
.tabs { gap: 4px; }
.tabs .tab { min-height: 42px; display: inline-flex; align-items: center; padding: 9px 12px; font-weight: 650; border-radius: 9px; }
.tab[aria-current="page"] { background: var(--select); color: var(--select-ink); }
.subnav { margin: 0 0 28px; border-bottom: 1px solid var(--line); padding-bottom: 12px; gap: 8px; }
.subnav a { padding: 8px 12px; border-radius: 8px; min-height: 40px; }
.asof { font-size: 11px; }
.metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; margin: 0 0 28px; }
.metric { display: flex; align-items: center; gap: 15px; border: 1px solid var(--line); background: var(--surface); padding: 19px 20px; border-radius: 14px; color: var(--ink); text-decoration: none; min-width: 0; }
a.metric:hover { border-color: var(--line-strong); background: var(--surface-2); }
.metric > span:not(.metric-icon) { display: grid; gap: 2px; }
.metric b { font-size: clamp(23px,2.5vw,30px); font-weight: 700; line-height: 1.2; letter-spacing: -.04em; }
.metric span span { font-size: 12px; color: var(--ink-2); }
.metric-icon { width: 44px; height: 44px; border-radius: 12px; background: var(--surface-2); display: grid; place-items: center; flex: 0 0 44px; }
.metric-arrow { margin-left: auto; width: 17px; color: var(--muted-text); }
.metric.warn .metric-icon { background: var(--warn-tint); color: var(--warn-ink); }
.metric.good .metric-icon { color: var(--good-ink); }
.filter-bar { display: flex; align-items: center; gap: 12px; margin: 20px 0; flex-wrap: wrap; }
.search-label { min-width: 220px; min-height: 44px; flex: 1; display: flex; align-items: center; gap: 10px; padding: 0 14px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--surface); }
.search-label > .icon { color: var(--muted-text); width: 18px; }
.search-label input { height: 42px; min-height: 0; padding: 0; border: 0; background: transparent; color: var(--ink); font: inherit; width: 100%; min-width: 0; outline-offset: 6px; }
.select-label { display: inline-flex; gap: 8px; align-items: center; font-size: 12px; color: var(--ink-2); }
select { font: inherit; color: var(--ink); background: var(--surface); border: 1px solid var(--line-strong); border-radius: 8px; padding: 10px 30px 10px 12px; min-height: 42px; max-width: 100%; }
.filter-bar select, .filter-bar .btn { min-height: 44px; }
.filter-count { color: var(--muted-text); font-size: 12px; min-width: 60px; }
.project-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 22px; }
.project-card { background: var(--surface); border: 1px solid var(--line); border-radius: 17px; overflow: hidden; display: flex; flex-direction: column; }
.project-card:hover { border-color: var(--line-strong); box-shadow: 0 8px 25px #10162009; }
.project-art-link { display: block; }
.project-art { height: 168px; width: 100%; background: color-mix(in srgb,var(--pc,#5f3dc4) 17%,var(--surface)); position: relative; overflow: hidden; display: grid; place-items: center; color: var(--pc,#5f3dc4); }
.project-art:after { content: ''; position: absolute; width: 220px; height: 220px; border: 1px solid currentColor; opacity: .15; border-radius: 50%; transform: translate(100px,-40px); }
.project-art:before { content: ''; position: absolute; width: 140px; height: 140px; background: currentColor; opacity: .07; border-radius: 32px; transform: translate(-150px,90px) rotate(30deg); }
.art-disc { display: grid; place-items: center; width: 100px; height: 100px; border-radius: 30px; background: var(--surface); box-shadow: 0 8px 20px #00000008; z-index: 1; transform: rotate(-8deg); }
.art-disc .icon { width: 64px; height: 64px; transform: rotate(8deg); stroke-width: 1.25; }
.art-rub .art-disc { border-radius: 25px; }
.art-orbit { position: absolute; height: 260px; width: 260px; border: 1px solid currentColor; opacity: .13; border-radius: 60px; transform: rotate(25deg); }
.project-art.photo:before, .project-art.photo:after { content: none; }
.project-art img { width: 100%; height: 100%; object-fit: cover; }
.project-card-body { padding: 20px 22px 18px; display: flex; flex: 1; flex-direction: column; }
.card-kicker { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 11px; color: var(--ink-2); }
.chip { font-size: 11px; line-height: 1.6; padding: 3px 8px; border-radius: 6px; font-weight: 650; }
.project-card h2 { font-size: 19px; margin: 13px 0 20px; }
.project-card h2 a { color: var(--ink); text-decoration: none; display: flex; align-items: center; gap: 10px; }
.project-card h2 .icon { width: 21px; flex-basis: 21px; }
.next-event { font-size: 14px; padding-bottom: 18px; flex: 1; }
.label { display: block; text-transform: uppercase; font-size: 10px; font-weight: 750; letter-spacing: .075em; color: var(--muted-text); margin-bottom: 5px; }
.next-event .sub { margin-top: 4px; font-size: 12px; }
.card-bottom { border-top: 1px solid var(--line); padding-top: 13px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.owner { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-2); flex-wrap: wrap; }
.owner .icon { width: 15px; height: 15px; flex-basis: 15px; }
.card-open { width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 10px; display: grid; place-items: center; color: var(--ink); flex: 0 0 36px; }
.card-open:hover { background: var(--surface-3); }
.more { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; margin-top: 14px; padding: 0; }
.more > summary { position: relative; list-style: none; min-height: 50px; padding: 14px 18px 14px 44px; cursor: pointer; color: var(--ink); font-size: 13px; font-weight: 650; border-radius: inherit; }
.more > summary::-webkit-details-marker { display: none; }
.more > summary::before { content: ''; position: absolute; left: 19px; top: 50%; width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-50%) rotate(-45deg); }
.more[open] > summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.more[open] > summary::before { transform: translateY(-70%) rotate(45deg); }
.more > summary:hover { background: var(--surface-2); }
.more > summary:focus-visible { outline-offset: -4px; }
.more > summary .summary-label { min-width: 0; flex: 1; }
.more > summary .chip { flex-shrink: 0; }
.more[open] > :not(summary) { margin: 0 18px 18px; }
.more[open] > summary { border-bottom: 1px solid var(--line); margin-bottom: 18px; }
.title-hero { display: grid; grid-template-columns: 250px minmax(0,1fr); align-items: center; gap: 30px; margin-bottom: 24px; }
.title-hero .project-art { height: 190px; border-radius: 16px; }
.title-hero h1 { display: flex; align-items: center; gap: 12px; }
.title-hero h1 .icon { width: 34px; height: 34px; flex-basis: 34px; }
.title-meta { display: flex; align-items: center; gap: 12px; color: var(--ink-2); font-size: 13px; margin-top: 16px; }
.quick-actions { display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0; }
.inline-status { display: flex; gap: 8px; align-items: center; font-size: 12px; color: var(--ink-2); }
.milestone-track { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); list-style: none; margin: 12px 0 26px; padding: 0; gap: 0; }
.milestone-track li { display: flex; flex-direction: column; gap: 4px; border-top: 2px solid var(--line-strong); padding: 16px 20px 5px 0; position: relative; }
.milestone-dot { width: 10px; height: 10px; background: var(--select); border: 3px solid var(--bg); outline: 1px solid var(--select); border-radius: 100%; position: absolute; top: -6px; }
.milestone-track time { color: var(--ink-2); font-size: 12px; }
.milestone-track li > span:not(.milestone-dot) { font-size: 12px; color: var(--muted-text); }
.project-details { display: grid; gap: 0; }
.project-details .section { margin-top: 0; }
.actions { padding: 0; margin: 0; list-style: none; display: grid; grid-template-columns: minmax(0,1fr); gap: 10px; }
.action-card, .due-list .action-card { min-width: 0; display: flex; align-items: flex-start; gap: 16px; background: var(--surface); border: 1px solid var(--line); border-radius: 13px; padding: 18px; }
.action-card.crit { border-left: 4px solid var(--crit); }
.action-card.warn { border-left: 4px solid var(--warn); }
.action-glyph { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: var(--surface-2); color: var(--ink-2); flex: 0 0 40px; }
.action-body { min-width: 0; flex: 1; }
.action-title { color: var(--ink); font-weight: 700; font-size: 15px; text-decoration: none; }
a.action-title:hover { text-decoration: underline; }
.action-meta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin-top: 5px; color: var(--ink-2); font-size: 12px; }
.action-meta > span { display: inline-flex; align-items: center; gap: 6px; }
.action-meta .chip { white-space: normal; max-width: 100%; }
.action-meta .icon { width: 14px; height: 14px; flex-basis: 14px; }
.action-detail { border: 0; margin-top: 5px; background: transparent; }
.action-detail > summary { min-height: 36px; padding: 8px 0 8px 20px; color: var(--link); font-size: 12px; font-weight: 500; }
.action-detail > summary::before { left: 2px; width: 6px; height: 6px; }
.more.action-detail > :not(summary) { margin-left: 0; margin-right: 0; }
.action-detail[open] > summary { border-bottom: 0; margin-bottom: 4px; }
.action-detail .sub { display: block; margin-top: 8px; font-size: 13px; color: var(--ink-2); }
.work-columns { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(280px,1fr); gap: 28px; }
.work-columns > * { min-width: 0; }
.section { margin-top: 30px; }
.section > h2 { font-size: 19px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.section > h2 small { font-size: 12px; color: var(--muted-text); font-weight: 500; }
.tool-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin: 14px 0; }
.tool-card { min-width: 0; overflow-wrap: anywhere; display: flex; align-items: flex-start; gap: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 17px; color: var(--ink); text-decoration: none; }
.tool-card > span { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tool-card b { font-size: 14px; }
.tool-card small { color: var(--ink-2); font-size: 12px; }
.tool-card .icon { color: var(--muted-text); }
.tool-card:hover { border-color: var(--line-strong); background: var(--surface-2); }
.foot .in { font-size: 11px; color: var(--muted-text); }
.foot p { margin: 4px 0; }
.empty-state { padding: 30px; border: 1px dashed var(--line-strong); border-radius: 14px; text-align: center; color: var(--ink-2); }
@media (max-width: 1100px) {
  .project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .work-columns { grid-template-columns: 1fr; }
}
@media (max-width: 1200px) {
  .chrome .bar { gap: 12px; }
  .tabs { order: 5; flex-basis: 100%; border-top: 1px solid var(--line); padding-top: 12px; padding-bottom: 0; }
  .who { margin-left: auto; }
}
@media (max-width: 620px) {
  main.wrap { padding-top: 20px; }
  .project-grid, .tool-grid { grid-template-columns: minmax(0,1fr); }
  .metrics { gap: 8px; }
  .metric { padding: 12px 10px; align-items: flex-start; flex-direction: column; gap: 8px; }
  .metric b { font-size: 22px; }
  .metric-icon { height: 30px; width: 30px; flex-basis: 30px; border-radius: 8px; }
  .metric-arrow { display: none; }
  .metric span span { font-size: 11px; }
  .filter-bar { gap: 8px; }
  .search-label { min-width: 100%; }
  .select-label { flex: 1; }
  .select-label select { flex: 1; min-width: 0; }
  .head-row { align-items: flex-start; }
  .head-row > .btn { align-self: flex-start; }
  .title-hero { grid-template-columns: 1fr; gap: 18px; }
  .title-hero .project-art { height: 155px; }
  .milestone-track { grid-template-columns: 1fr; gap: 10px; }
  .milestone-track li { border-top: 0; border-left: 2px solid var(--line-strong); padding: 6px 0 8px 20px; }
  .milestone-dot { top: 12px; left: -6px; }
  .action-card, .due-list .action-card { padding: 13px; gap: 10px; }
  .action-glyph { width: 30px; height: 30px; flex-basis: 30px; }
  .action-meta { gap: 6px 10px; }
  .tabs .tab { padding: 8px 10px; }
  .asof { display: none; }
}
@media print {
  .filter-bar, .quick-actions { display: none !important; }
  [data-filter-item][hidden] { display: block !important; }
  .project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .project-card, .action-card { break-inside: avoid; }
}
.build-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px; }
.section-heading { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.section-heading h2 { margin:0; }
.build-type { display:flex; align-items:center; flex-wrap:wrap; gap:9px; margin:0 0 20px; padding-bottom:16px; border-bottom:1px solid var(--line); font-size:16px; font-weight:700; }
.build-type > span { font-size:11px; font-weight:500; color:var(--muted); margin-left:auto; }
.build-item { min-width:0; }
.build-item h3,.build-item h4 { margin:0 0 8px; line-height:1.35; overflow-wrap:anywhere; }
.build-source-date { display:flex; align-items:center; flex-wrap:wrap; gap:7px; font-size:12px; color:var(--muted); margin:10px 0; }
.build-note { color:var(--muted); font-size:13px; line-height:1.55; margin:10px 0; }
.build-recordings { display:grid; gap:18px; margin-top:18px; }
.build-recording { margin:0; min-width:0; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.build-recording video { display:block; width:100%; max-width:100%; aspect-ratio:16/9; background:#10131b; object-fit:contain; }
.build-recording figcaption { display:grid; gap:7px; padding:13px; font-size:12px; }
.build-recording figcaption > span { color:var(--muted); }
.build-recording figcaption .btn { justify-self:start; }
.recording-empty { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; margin:18px 0 0; padding:14px 0 0; border-top:1px solid var(--line); }
.build-empty { padding:10px 0; color:var(--muted); }
.build-empty > .icon { width:32px; height:32px; margin-bottom:10px; }
.build-empty h3 { color:var(--ink); font-size:17px; margin:0 0 8px; }
.build-empty p { font-size:13px; }
.project-builds .more .build-item + .build-item { margin-top:22px; padding-top:22px; border-top:1px solid var(--line); }
.standalone-build { max-width:820px; }
.shelf-note { font-size:13px; color:var(--muted); margin:20px 0; line-height:1.6; }
.prototype-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.prototype-card { min-width:0; border:1px solid var(--line); border-radius:15px; overflow:hidden; background:var(--surface); }
.prototype-picture { display:flex; align-items:center; justify-content:center; aspect-ratio:16/9; background:color-mix(in srgb,var(--link) 8%,var(--surface)); }
.prototype-picture > .icon { width:68px; height:68px; color:var(--link); }
.prototype-picture > img { display:block; width:100%; height:100%; object-fit:cover; }
.prototype-body { padding:20px; }
.prototype-body h2 { font-size:20px; margin:0 0 10px; }
.prototype-body p { font-size:13px; line-height:1.55; }
.prototype-body .quick-actions { margin-bottom:0; }
@media(max-width:1100px) { .prototype-grid {grid-template-columns:repeat(2,minmax(0,1fr));} }
@media(max-width:620px) { .prototype-grid {grid-template-columns:minmax(0,1fr);} .prototype-body {padding:18px;} .build-card {padding:18px;} }
.build-card { min-width: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 15px; padding: 22px; }
.build-identity { display: flex; align-items: center; gap: 15px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.build-identity > .icon { padding: 10px; background: color-mix(in srgb,var(--pc,#5f3dc4) 12%,var(--surface)); color: var(--pc,#5f3dc4); width: 55px; height: 55px; flex: 0 0 55px; border-radius: 13px; }
.build-identity h2 { font-size: 19px; margin: 0 0 3px; }
.build-identity a { font-size: 12px; }
.build-line { padding-top: 17px; }
.build-line-head { display: flex; gap: 10px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.build-version { font-size: 23px; font-weight: 700; letter-spacing: -.03em; margin: 7px 0 10px; }
.build-meta { display: flex; gap: 18px; flex-wrap: wrap; color: var(--ink-2); font-size: 12px; }
.build-meta > span { display: flex; align-items: center; gap: 5px; }
.build-meta .icon { width: 15px; height: 15px; flex-basis: 15px; }
.file-name { font-size: 12px; color: var(--muted-text); overflow-wrap: anywhere; }
.resource-group > summary, .crew-detail > summary { display: flex; align-items: center; gap: 12px; }
.resource-group .tool-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
@media(max-width: 760px) { .build-grid { grid-template-columns: 1fr; } .resource-group .tool-grid { grid-template-columns: minmax(0,1fr); } }
table.visual-sched { min-width: 860px; width: 100%; table-layout: fixed; }
.visual-sched th:first-child { width: 200px; }
table.visual-sched td { white-space: normal; padding: 0; vertical-align: top; }
.assignment { position: relative; }
.assignment > summary { padding: 13px 12px; cursor: pointer; list-style: none; min-height: 96px; }
.assignment > summary::-webkit-details-marker { display: none; }
.assignment > summary:after { content: '+'; position: absolute; right: 8px; top: 8px; color: var(--ink-2); }
.assignment[open] > summary:after { content: '−'; }
.assignment-project { display: flex; align-items: center; gap: 9px; font-size: 12px; padding-right: 10px; font-weight: 650; }
.assignment-project .icon { flex: 0 0 20px; width: 20px; height: 20px; }
.assignment-project small { color: var(--ink-2); display: block; font-weight: 400; }
table.sched .assignment .h { margin-top: 7px; margin-left: 29px; font-size: 11px; }
.assignment-kind { display: block; color: var(--ink-2); font-size: 10px; margin: 2px 0 0 29px; }
.assignment-list { list-style: none; margin: 0; padding: 10px; background: var(--surface); }
.assignment-list li { display: flex; gap: 6px; align-items: flex-start; margin: 7px 0; font-size: 12px; }
.assignment-list b { margin-left: auto; white-space: nowrap; }
.assignment-list .icon { width: 16px; height: 16px; flex-basis: 16px; }
.assignment > .note { background: var(--surface); margin: 0; padding: 10px; font-size: 11px; }
.schedule-key { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; color: var(--ink-2); font-size: 12px; }
.schedule-key .icon { width: 16px; }
.crew-detail .milestone-track { grid-template-columns: repeat(auto-fit,minmax(180px,1fr)); gap: 20px 0; }
@media (max-width: 620px) { .crew-detail .milestone-track { grid-template-columns: 1fr; } }
.sched-wrap { border-radius: 12px; }
.sched-wrap:focus-visible { outline: 3px solid var(--focus); }
@media (max-width: 700px) {
  table.visual-sched { min-width: 600px; }
  table.visual-sched tbody th[scope="row"], table.visual-sched thead th:first-child {
    width: 120px; min-width: 120px; max-width: 120px;
  }
}
.decision-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 15px 25px; margin: 16px 0; }
.decision-facts > div { min-width: 0; }
.decision-facts dt { font-size: 11px; color: var(--muted-text); margin-bottom: 4px; }
.decision-facts dd { margin: 0; font-size: 13px; }
.agreement > summary { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.agreement > summary > span:first-child { display: flex; align-items: center; gap: 10px; margin-right: auto; }
.agreement > summary time { color: var(--ink-2); font-size: 12px; }
@media(max-width:620px) { .decision-facts { grid-template-columns: 1fr; } }
.overview-aside { margin-top: 0; }
.launch-panel { padding: 22px; border-radius: 14px; }
.launch-panel h2 { display: flex; align-items: center; gap: 10px; font-size: 18px; margin: 12px 0; }
.status-steps { list-style: none; margin: 17px 0; padding: 0; display: grid; gap: 12px; font-size: 13px; color: var(--ink-2); }
.status-steps li { display: flex; align-items: center; gap: 10px; }
.status-steps .icon { width: 16px; height: 16px; }
.tool-stack { display: grid; gap: 10px; }
.capacity-clear { display: flex; gap: 16px; padding: 22px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); }
.capacity-clear > .icon { color: var(--good-ink); }
.capacity-clear > div { display: grid; gap: 4px; }
.capacity-clear span { color: var(--ink-2); font-size: 12px; }
.site-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 15px; }
.site-card { background: var(--surface); border: 1px solid var(--line); border-radius: 13px; padding: 18px; min-width: 0; }
.site-title { display: flex; gap: 10px; align-items: center; margin-bottom: 15px; }
.site-title h3 { font-size: 13px; overflow-wrap: anywhere; margin: 0; }
.site-card .more { margin-top: 10px; font-size: 12px; }
.site-card .more > summary { min-height: 40px; padding: 10px 12px 10px 32px; font-size: 12px; }
.site-card .more > summary::before { left: 13px; }
@media(max-width:960px) { .site-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media(max-width:620px) { .site-grid { grid-template-columns: 1fr; } }
.auth-key { overflow-wrap: anywhere; padding: 12px; background: var(--bg); }
.access-form { display: flex; align-items: end; flex-wrap: wrap; gap: 12px; margin: 16px 0; }
.access-form label { display: grid; gap: 5px; font-size: 13px; }
.access-form select { min-height: 42px; padding: 8px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 7px; }
.response-template { width: 100%; min-height: 85px; resize: vertical; color: var(--ink); background: var(--surface); border: 1px solid var(--line); padding: 12px; font: inherit; }
@media(max-width:620px) {
  .chrome .bar { min-height: 50px; padding-block: 12px; gap: 10px; }
  .brand-name { font-size: 13px; }
  .signed { font-size: 11px; }
  .tabs { flex-wrap: nowrap; overflow-x: auto; padding-top: 10px; padding-bottom: 4px; }
  .tabs .tab { white-space: nowrap; min-height: 36px; }
  main.wrap { padding-top: 16px; }
  .view-head { margin-bottom: 16px; }
  .view-head .eyebrow { margin-bottom: 5px; }
  .view-head h1 { font-size: 25px; }
  .metrics { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; margin: 14px 0; }
  .metric { padding: 10px 8px; min-height: 80px; gap: 4px; }
  .metric-icon, .metric-arrow { display: none; }
  .metric b { font-size: 19px; }
  .metric span span { font-size: 10px; }
  .filter-bar { margin: 12px 0; gap: 8px; }
  .project-grid { gap: 12px; }
  .project-card { position: relative; }
  .project-card > .project-art-link { position: absolute; left: 14px; top: 18px; width: 45px; height: 45px; border-radius: 10px; overflow: hidden; }
  .project-card .project-art { height: 45px; min-height: 0; }
  .project-card .art-disc { width: 39px; height: 39px; }
  .project-card .art-disc .icon { width: 26px; height: 26px; }
  .project-card .art-orbit { display: none; }
  .project-card-body { padding: 14px; }
  .project-card-body .card-kicker { padding-left: 57px; gap: 5px; font-size: 10px; }
  .project-card-body h2 { padding-left: 57px; margin: 6px 0 14px; font-size: 18px; }
  .project-card-body h2 .project-icon { display: none; }
  .next-event { padding: 10px 0; }
  .card-bottom { padding-top: 8px; }
  .resource-shortcuts { display: none; }
  .subnav { margin-bottom: 15px; overflow-x: auto; flex-wrap: nowrap; }
  .subnav a { white-space: nowrap; }
  .subnav a:focus-visible, .tabs .tab:focus-visible { outline-offset: -3px; }
  .title-meta { flex-wrap: wrap; gap: 8px 12px; }
  .agreement > summary { gap: 8px 12px; }
  .agreement > summary > span:first-child { flex-basis: 100%; }
}

/* Reusable command blocks also appear outside the guide document. */
pre.cmd { white-space: pre-wrap; overflow-wrap: anywhere; max-width: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); font-size: 12px; }
#commands { margin-top: 28px; }

/* Titles: a visual board and timeline of the same library. */
.view-head .eyebrow{display:none}.title-view-toggle{display:flex;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.title-view-toggle button{display:grid;place-items:center;width:40px;height:36px;padding:8px;border:0;background:transparent;border-radius:8px;cursor:pointer}.title-view-toggle button[aria-pressed=true]{background:var(--select);color:var(--select-ink)}.title-view-toggle svg{width:19px;height:19px}
/* Numbered stages stay aligned; connecting arrows sit between lanes. */
.title-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:stretch}
.title-column{--column-color:#74638f;position:relative;min-width:0;min-height:620px;padding:0 12px 16px;background:color-mix(in srgb,var(--column-color) 4%,var(--surface));border:1px solid var(--line);border-radius:16px}
.title-column>h2{display:flex;align-items:center;gap:10px;min-height:84px;box-sizing:border-box;margin:0 -12px 16px;padding:18px 15px;background:color-mix(in srgb,var(--column-color) 9%,var(--surface));border-bottom:3px solid var(--column-color);border-radius:15px 15px 0 0;color:var(--ink);font-size:15px;letter-spacing:0}
.title-column:not(:last-child):after{content:"→";position:absolute;top:29px;right:-19px;width:20px;height:24px;display:grid;place-items:center;background:var(--bg);color:var(--muted);font-size:18px;z-index:2}
.column-greenlight{--column-color:#82611e}.column-production{--column-color:#306f8c}.column-live{--column-color:#407354}
.stage-number{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:10px;background:var(--column-color);color:#fff;font-size:12px;font-weight:650}
.stage-label{display:grid;gap:5px}.stage-label>small{font-size:10px;line-height:1.2;font-weight:450;color:var(--muted)}
.column-count{display:grid;place-items:center;flex:none;width:25px;height:25px;margin-left:auto;border:1px solid color-mix(in srgb,var(--column-color) 22%,var(--line));border-radius:8px;background:var(--surface);color:var(--ink-2);font-size:11px;font-weight:600}
.title-column-cards{display:grid;gap:16px}
.title-column-empty{display:grid;justify-items:center;align-content:center;gap:12px;min-height:175px;margin:0;padding:24px 12px;border:1px dashed var(--line-strong);border-radius:12px;background:var(--surface);text-align:center;color:var(--muted)}
.title-column-empty>svg{width:28px;height:28px;stroke-width:1.2;color:var(--column-color)}
.title-card{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 2px 5px #00000004}.title-card:hover{border-color:var(--line-strong);box-shadow:0 5px 18px #0000000a}.title-card-art{display:grid;aspect-ratio:16/10;overflow:hidden;text-decoration:none;background:var(--surface-2)}.title-card-art>img{width:100%;height:100%;object-fit:cover}.title-art-placeholder{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:radial-gradient(ellipse at 20% 10%,#d7e3ec 0,transparent 70%),linear-gradient(125deg,#e9e3ef,#dfe9e6);color:#6b7f84}.title-art-placeholder>svg{width:54px;height:54px;stroke-width:1.1;opacity:.75}.title-art-placeholder>small{font-size:9px;font-weight:500;opacity:.75}.title-card-info{padding:13px}.title-card-kicker{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);min-height:15px}.title-health{color:var(--warn)}.title-health svg{width:14px;height:14px}.title-card h2{font-size:15px;line-height:1.3;margin:5px 0 12px}.title-card h2 a{color:var(--ink);text-decoration:none}.title-target{display:flex;flex-wrap:wrap;gap:5px 8px;justify-content:space-between;align-items:center;font-size:10px}.title-target>span{padding:3px 6px;background:color-mix(in srgb,var(--column-color) 12%,var(--surface));color:var(--ink-2);border-radius:5px}.title-target>time{color:var(--ink-2)}.title-card-footer{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-top:14px}.title-owner{display:flex;align-items:center;gap:7px;min-width:0;font-size:10px;color:var(--ink-2)}.title-owner>.person-avatar{width:26px;height:26px;font-size:9px}.title-owner .person-label>.person-avatar{display:none}.title-availability{margin-left:auto;color:var(--muted)}.title-availability>svg{width:15px;height:15px}.title-column-empty,.title-board-note{color:var(--muted);font-size:11px}.title-board-note{margin-top:20px}
.title-timeline{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.title-timeline-axis,.title-timeline-row{display:grid;grid-template-columns:225px minmax(700px,1fr);min-width:925px}.title-timeline-axis{height:45px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:11px;font-weight:650}.title-timeline-axis>span{padding:15px}.title-timeline-axis>div{position:relative}.title-timeline-axis>div>span{position:absolute;top:15px}.title-timeline-row{min-height:76px;border-bottom:1px solid var(--line)}.title-timeline-row:last-child{border-bottom:0}.title-timeline-row>a{position:sticky;left:0;z-index:3;display:flex;gap:10px;align-items:center;padding:12px;background:var(--surface);border-right:1px solid var(--line);text-decoration:none;color:var(--ink)}.title-timeline-row>a>span:last-child{display:grid;gap:5px}.title-timeline-row b{font-size:12px}.title-timeline-row small{font-size:10px;color:var(--muted)}.mini-title-art{width:48px;height:42px;overflow:hidden;border-radius:7px;flex:none}.mini-title-art img{width:100%;height:100%;object-fit:cover}.mini-title-art .title-art-placeholder{gap:0}.mini-title-art svg{width:28px;height:28px}.mini-title-art small{display:none}.title-timeline-track{position:relative;min-height:76px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),var(--line) calc(25% - 1px),var(--line) 25%)}.title-span{position:absolute;top:24px;height:28px;border-radius:9px;background:#d8ccee;color:#5f4e7c;font-size:10px;text-decoration:none;overflow:hidden}.title-span>span{padding:7px 10px;display:block}.title-span.phase-greenlight{background:#eadcb7;color:#786127}.title-span.phase-production{background:#bddcea;color:#355f74}.title-span.phase-live{background:#c8e3d2;color:#416f53}.title-milestone{position:absolute;top:34px;transform:translateX(-50%) rotate(45deg);width:8px;height:8px;border:2px solid var(--surface);border-radius:2px;background:var(--ink-2)}.timeline-unscheduled{display:inline-block;padding:29px 18px;color:var(--muted);font-size:11px}
@media(max-width:1050px){.title-board{grid-template-columns:repeat(4,260px);overflow-x:auto;padding-bottom:15px}}@media(max-width:600px){.title-board{grid-template-columns:repeat(4,245px);gap:18px}}
.assign-slot{display:block;width:100%;margin-top:12px;padding:7px 0;border:0;border-top:1px solid var(--line);background:none;color:var(--ink-2);font:inherit;font-size:11px;text-align:left;cursor:pointer}.assign-slot>span{float:right}.assigned-dates{display:block;margin-top:7px;color:var(--muted);font-size:10px}#assign-slot-dialog{max-width:560px;width:calc(100% - 40px);padding:28px;border:1px solid var(--line);border-radius:18px;background:var(--surface);color:var(--ink);box-shadow:0 20px 80px #0003}#assign-slot-dialog::backdrop{background:#19242e66;backdrop-filter:blur(4px)}#assign-slot-dialog h2{margin-top:0;font-size:22px}#assign-slot-dialog label{display:grid;gap:8px;font-size:12px}#assign-slot-dialog select{max-width:100%;padding:10px;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:8px}.dialog-close{float:right;border:0;background:none;color:inherit;font-size:24px;cursor:pointer}.slot-summary{white-space:pre-line;line-height:1.7;font-size:12px;color:var(--ink-2)}.dialog-actions{display:flex;gap:12px;margin-top:24px}.dialog-actions button{padding:9px 17px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--ink);cursor:pointer}.dialog-actions button:first-child{background:var(--ink);color:var(--surface)}.title-timeline-track>.assign-slot{position:absolute;right:10px;top:0;width:auto;border:0;background:var(--surface);padding:5px 8px;z-index:2}
.title-capture{display:block;position:relative;height:100%;width:100%;overflow:hidden}.title-capture>img{width:100%;height:100%;object-fit:cover}.title-capture>small{position:absolute;left:7px;bottom:7px;max-width:calc(100% - 14px);padding:3px 5px;color:#fff;background:#18252bbd;border-radius:4px;font-size:8px;letter-spacing:.02em;line-height:1.3}.mini-title-art .title-capture>small{display:none}
.team-one{--team-color:#3d66b3}.team-two{--team-color:#985083}.team-three{--team-color:#ac6226}.team-studio{--team-color:#64748b}.title-card{border-top:3px solid var(--team-color)}.team-badge{display:inline-flex;align-items:center;justify-self:start;gap:5px;padding:4px 7px;border-radius:6px;background:color-mix(in srgb,var(--team-color) 10%,var(--surface));color:var(--team-color);font-size:10px;font-weight:650;line-height:1.2;white-space:nowrap}.team-badge:before{content:"";width:6px;height:6px;background:var(--team-color);border-radius:50%;flex:none}.title-owner>span:last-child{display:grid;gap:3px}.title-owner small{font-size:8px;line-height:1;color:var(--muted);font-weight:400}.title-owner b{font-size:10px;font-weight:500;line-height:1.3}.title-timeline-row>a{border-left:3px solid var(--team-color)}.title-card-kicker+.title-target{margin-top:7px}
/* Reversible concept archive stays with its workflow stage. */
.title-state-form{margin:8px 0 0;text-align:right}.title-state-form button{font:500 11px/1.3 var(--font-ui);color:var(--muted);background:none;border:0;padding:5px 0;cursor:pointer}.title-state-form button:hover{color:var(--ink);text-decoration:underline}.title-state-form button:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.title-archive{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.title-archive summary,.timeline-archive summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:600}.title-archive summary span,.timeline-archive summary span{float:right;font-variant-numeric:tabular-nums}.title-archive-cards{display:grid;gap:16px;margin-top:16px}.title-archive .title-card{opacity:.8}.title-archive .title-card:hover{opacity:1}.timeline-archive{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}.title-archive-rows{margin-top:12px}
.version-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:18px}.version-card{border:1px solid var(--line);border-radius:12px;padding:18px;min-width:0;background:var(--surface)}.version-card h3{font-size:17px;margin:10px 0 14px}.version-card p{font-size:12px;line-height:1.6;color:var(--muted)}.version-heading{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:var(--muted)}.version-kind{text-transform:uppercase;letter-spacing:.08em;font-weight:700}.version-card video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#182024;border-radius:6px}.version-card .file-name{overflow-wrap:anywhere}.project-history>details{margin-top:16px}@media(max-width:700px){.version-grid{grid-template-columns:1fr}}

/* Compact title cards: identity, target and owner each occupy one row. */
.title-card-art{aspect-ratio:16/9}.title-card-info{padding:10px 11px}.title-card-heading{display:flex;align-items:center;gap:8px;justify-content:space-between}.title-card-heading h2{font-size:14px;line-height:1.25;margin:0;min-width:0}.title-card-heading .team-badge{padding:3px 5px;font-size:9px;flex:none}.title-target{margin-top:8px;font-size:10px;gap:4px}.title-target>span{padding:2px 5px}.title-card-footer{margin-top:9px;gap:6px}.title-owner>.person-avatar{width:22px;height:22px}.title-owner b{font-size:10px}.title-card-scope{font-size:10px;line-height:1.3;color:var(--muted);margin-top:5px}.title-card-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.title-card-actions:empty{display:none}.title-card-actions .assign-slot{margin-top:7px;padding:5px 0;font-size:10px;border:0;background:none;width:auto;min-height:0}.title-card-actions .title-state-form{margin-top:7px;margin-left:auto}.title-state-form button{font-size:10px;padding:5px 0}.assigned-dates{font-size:9px;margin-top:4px}.title-capture small{font-size:9px;padding:4px 6px;max-width:calc(100% - 14px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
/* Studio-wide canvas, aligned with the full-width plan. */
:root{--gutter:24px}.wrap{max-width:none;width:100%;box-sizing:border-box}main.wrap{padding-top:22px}.title-board{gap:18px}.title-column:not(:last-child):after{right:-19px}.title-column>h2{min-height:70px;padding-block:12px}.standalone-build{max-width:none}@media(min-width:1600px){.title-card-art{aspect-ratio:2/1}}@media(max-width:620px){:root{--gutter:14px}}

/* One project: summary first, then the shared plan's dates and booked hours. */
/* Three visual summaries share spacing, but each has its own visual anchor. */
.project-summary{border:1px solid var(--line);border-radius:18px;background:var(--surface);overflow:hidden}
.project-summary-heading{display:flex;gap:16px;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line)}
.summary-title-icon{display:grid;place-items:center;width:52px;height:52px;flex:none;border-radius:14px;background:var(--surface-2);color:var(--ink-2)}
.summary-title-icon .icon{width:28px;height:28px}
.project-summary-heading h1{margin:4px 0 0;font-size:30px;line-height:1.15}
.project-summary-heading .eyebrow{margin:0;font-size:10px}
.project-summary-heading .title-meta{margin:6px 0 0;color:var(--ink-2);font-size:12px}
.project-summary-facts{display:grid;grid-template-columns:1.16fr 1fr .9fr;gap:0}
.project-summary-facts>article{display:flex;flex-direction:column;padding:22px 24px;min-width:0}
.project-summary-facts>article+article{border-left:1px solid var(--line)}
.project-summary-facts h2{display:flex;align-items:center;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-text);margin:0 0 20px}
.project-summary-facts h2 .icon{width:16px;height:16px;flex:none}
.project-summary-facts .summary-value{font-size:20px;line-height:1.25;font-weight:650;margin:0 0 6px;overflow-wrap:anywhere}
.project-summary-facts .note{margin:5px 0;line-height:1.45}
.summary-build-art{height:158px;position:relative;border-radius:10px;overflow:hidden;background:var(--surface-2);margin-bottom:16px}
.summary-build-art>.title-capture,.summary-build-art>.title-art-placeholder{display:block;width:100%;height:100%;min-height:0}
.summary-build-art .title-capture img{width:100%;height:100%;object-fit:cover}
.summary-build-art .title-capture small{font-size:9px;bottom:8px;left:8px;padding:5px 7px}
.summary-build-art .title-art-placeholder{display:grid;place-content:center;justify-items:center;gap:10px}
.summary-build-art:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.summary-build-meta{display:flex;flex-wrap:wrap;align-items:center;gap:7px 12px;font-size:11px;color:var(--muted-text);margin-top:8px}
.summary-platform{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2)}
.summary-platform .icon{width:13px;height:13px}
.summary-card-action{margin-top:auto;padding-top:20px}
.summary-card-action .btn{min-height:42px;padding:10px 16px;gap:9px;margin:0}
.summary-target{display:flex;align-items:center;gap:20px;min-height:158px}
.summary-calendar{display:flex;flex-direction:column;align-items:center;width:100px;flex:none;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--surface);box-shadow:0 4px 12px #10162006}
.summary-calendar>span{width:100%;padding:7px 0;text-align:center;background:var(--info-tint);color:var(--link);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.summary-calendar>b{font-size:46px;font-weight:600;letter-spacing:-.05em;line-height:1;padding-top:13px}
.summary-calendar>small{font-size:11px;color:var(--muted-text);padding:7px 0 13px}
.summary-kicker{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-text);margin-bottom:8px}
.summary-roadmap{display:flex;list-style:none;margin:22px 0 0;padding:0;gap:10px}
.summary-roadmap li{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:7px;font-size:10px;color:var(--muted-text)}
.summary-roadmap li:not(:last-child):after{content:'';position:absolute;left:37px;right:0;top:16px;height:1px;background:var(--line-strong)}
.summary-phase-dot{display:grid;place-items:center;position:relative;z-index:1;width:33px;height:33px;border:1px solid var(--line-strong);border-radius:50%;font-size:10px;font-weight:650;background:var(--surface)}
.summary-roadmap .is-next .summary-phase-dot{color:#fff;background:var(--link);border-color:var(--link);box-shadow:0 0 0 4px var(--info-tint)}
.summary-roadmap b{font-size:11px;line-height:1.35;font-weight:600;color:var(--ink-2)}
.summary-roadmap time{line-height:1.3}
.summary-target-note{display:inline-flex;align-items:center;gap:7px;min-height:42px;color:var(--muted-text);font-size:11px}
.summary-target-note .icon{width:14px;height:14px}
.summary-team-heading{margin-bottom:20px}.summary-team .team-badge{font-size:11px;padding:5px 8px}
.summary-lead.person-label{display:flex;gap:13px;align-items:center}
.summary-lead>.person-avatar{width:52px;height:52px;font-size:17px}
.summary-lead>span:last-child{display:grid;gap:6px}
.summary-lead small{color:var(--muted-text);font-size:11px}
.summary-lead b{font-size:17px;line-height:1.25;font-weight:650}
.summary-crew-stat{display:flex;align-items:center;gap:12px;margin-top:27px}
.summary-crew-stat>b{font-size:42px;line-height:1;font-weight:600;letter-spacing:-.04em}
.summary-crew-stat>span{color:var(--muted-text);font-size:12px}
.summary-avatar-row{display:flex;align-items:center;margin:16px 0 0;padding-left:3px}
.summary-avatar-row>span{display:inline-flex;margin-left:-3px}.summary-avatar-row .person-avatar{width:38px;height:38px;border:2px solid var(--surface);box-shadow:none}
.summary-avatar-more{width:38px;height:38px;border:2px solid var(--surface);border-radius:50%;align-items:center;justify-content:center;background:var(--surface-2);color:var(--ink-2);font-size:11px;font-weight:650}
.summary-crew{margin-top:auto;padding-top:20px;font-size:12px;color:var(--ink-2)}
.summary-crew summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:42px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:9px;cursor:pointer;color:var(--ink);font-weight:600}
.summary-crew summary::-webkit-details-marker{display:none}.summary-crew summary .icon{width:16px;height:16px;flex:none}.summary-crew[open] summary .icon{transform:rotate(90deg)}
.summary-crew summary:hover{background:var(--surface-2)}.summary-crew summary:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.summary-crew ul{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:14px}
.summary-crew li{display:flex;align-items:flex-start;gap:10px;font-size:11px}
.summary-crew li>span:last-child{display:grid;gap:4px}.summary-crew li b{font-weight:600;line-height:1.4}.summary-crew li small{font-size:10px;color:var(--muted-text);line-height:1.5}
.summary-empty-art{display:grid;place-items:center;min-height:158px;color:var(--muted-text);background:var(--surface-2);border-radius:12px;margin-bottom:16px}.summary-empty-art .icon{width:46px;height:46px;stroke-width:1}
.project-summary-actions{margin-top:14px}
.project-plan-toolbar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:14px 0}
.project-plan-toolbar .view-switch{margin:0}
.plan-period{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600}
.plan-period select{padding:7px 26px 7px 9px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit}
.project-plan-scroll{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.project-plan-scroll:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.project-plan-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;table-layout:fixed;font-size:11px;font-variant-numeric:tabular-nums}
.project-plan-table th,.project-plan-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;padding:8px 4px;min-width:36px;max-width:54px;white-space:nowrap}
.project-plan-table thead th{background:var(--surface-2);color:var(--ink-2);font-weight:600}
.project-plan-table .plan-row-name{position:sticky;left:0;z-index:2;min-width:200px;max-width:200px;width:200px;text-align:left;padding:12px 16px;white-space:normal;background:var(--surface);box-shadow:2px 0 0 var(--line)}
.project-plan-table thead .plan-row-name{background:var(--surface-2);z-index:3}
.project-plan-table .plan-row-name b{font-size:12px;display:block}
.project-plan-table .plan-row-name span{display:block;font-size:11px;color:var(--muted-text);margin-top:3px;font-weight:400}
.project-plan-table .plan-week{height:42px}
.project-plan-table .plan-active{background:var(--info-tint);border-top:8px solid var(--surface);border-bottom:8px solid var(--surface)}
.schedule-table .plan-phase-row:nth-child(even){--phase-surface:var(--surface-2);background:var(--phase-surface)}
.schedule-table .plan-phase-row:nth-child(odd){--phase-surface:var(--surface)}
.schedule-table .plan-phase-row .plan-row-name{background:var(--phase-surface)}
.schedule-table .plan-active{border-top-color:var(--phase-surface);border-bottom-color:var(--phase-surface)}
.schedule-table .plan-phase-start{border-top-left-radius:13px;border-bottom-left-radius:13px}
.schedule-table .plan-phase-end{border-top-right-radius:13px;border-bottom-right-radius:13px}
.plan-milestone{display:inline-flex;align-items:center;justify-content:center;background:var(--link);color:#fff;border-radius:5px;min-height:25px;padding:3px 5px;font-size:10px;font-weight:700}
.project-plan-table .plan-this-week{box-shadow:inset 2px 0 var(--link),inset -2px 0 var(--link)}
.project-plan-table .plan-hours-0{color:var(--muted)}
.project-plan-table .plan-hours-1{background:color-mix(in srgb,var(--info-tint) 55%,var(--surface));color:var(--ink)}
.project-plan-table .plan-hours-2{background:var(--info-tint);color:var(--ink)}
.project-plan-table .plan-hours-3{background:color-mix(in srgb,var(--link) 30%,var(--surface));color:var(--ink)}
.project-plan-table .plan-hours-4{background:var(--link);color:#fff;font-weight:650}
.project-plan-table tfoot td,.project-plan-table tfoot th{background:var(--surface-2);font-weight:650}
.project-plan [hidden]{display:none!important}
@media(max-width:900px){.project-summary-heading{padding:18px;gap:14px}.project-summary-heading h1{font-size:26px}.project-summary-facts{grid-template-columns:1fr}.project-summary-facts>article{padding:20px}.project-summary-facts>article+article{border-left:0;border-top:1px solid var(--line)}.summary-build-art{height:auto;aspect-ratio:16/9;max-height:280px}.summary-target{min-height:130px}.summary-lead>.person-avatar{width:48px;height:48px}.summary-crew{margin-top:16px}.project-plan-table .plan-row-name{min-width:155px;max-width:155px;width:155px;padding:10px}.project-plan-toolbar{gap:12px}.project-plan .section-heading{align-items:flex-start;flex-direction:column;gap:2px}}
@media print{.project-plan [data-project-panel][hidden]{display:block!important}.project-plan-toolbar{display:none}.project-plan-scroll{overflow:visible}.project-plan-table{font-size:7px}.project-plan-table th,.project-plan-table td{min-width:10px;padding:3px 1px}.project-plan-table .plan-row-name{min-width:100px;max-width:100px;position:static}}
.project-plan-toolbar .view-switch{display:inline-flex;border:1px solid var(--line-strong);border-radius:9px;padding:3px;gap:3px;background:var(--surface)}
.project-plan-toolbar .view-switch button{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border:0;border-radius:6px;background:transparent;color:var(--ink-2);font:600 13px var(--font-ui);cursor:pointer}
.project-plan-toolbar .view-switch button[aria-pressed=true]{background:var(--ink);color:var(--surface)}
.project-plan-toolbar .view-switch button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* Compact build cards: preview a clip, open the full recording when needed. */
.project-builds .build-grid{gap:16px;align-items:start}
.project-builds .build-card{padding:18px;border-radius:13px}
.project-builds .build-type{font-size:14px;margin-bottom:14px;padding-bottom:12px;gap:8px}
.project-builds .build-type>.icon{width:17px;height:17px}
.build-item-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.build-item-heading h3,.build-item-heading h4{font-size:16px;margin:0;line-height:1.35}
.build-item-heading .build-version{flex:none;font-size:11px;font-weight:600;letter-spacing:0;margin:0;padding:4px 7px;border-radius:5px;background:var(--surface-2);color:var(--ink-2)}
.project-builds .build-source-date{font-size:11px;margin:7px 0 12px}
.project-builds .quick-actions{gap:8px;margin:12px 0}.project-builds .quick-actions .btn{min-height:36px;padding:8px 11px;font-size:11px;gap:7px}.project-builds .quick-actions .icon{width:15px;height:15px}
.build-recordings{gap:10px;margin-top:14px}.build-recording{border:0;border-radius:0;overflow:visible}
.recording-row{display:flex;align-items:center;gap:14px;padding:10px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink);min-width:0;background:var(--surface-2)}
.recording-thumb{position:relative;display:grid;place-items:center;flex:0 0 142px;aspect-ratio:16/9;overflow:hidden;background:#182024;border-radius:6px;color:#fff}
.recording-thumb.portrait img{object-fit:contain}
.recording-thumb img{display:block;width:100%;height:100%;object-fit:cover}.recording-play{position:absolute;display:grid;place-items:center;width:30px;height:30px;border:1px solid #ffffff88;border-radius:50%;background:#14202bbd;color:white}.recording-play .icon{width:15px;height:15px}.recording-duration{position:absolute;right:5px;bottom:5px;background:#14202bd9;color:white;font-size:9px;line-height:1;padding:4px 5px;border-radius:3px;font-variant-numeric:tabular-nums}
.recording-copy{min-width:0;display:grid;gap:7px}.recording-copy b{font-size:12px;line-height:1.4;font-weight:600}.recording-copy small{font-size:10px;color:var(--muted-text)}.recording-row>.icon{width:15px;height:15px;flex:none;margin-left:auto;color:var(--muted-text)}.recording-row:hover{border-color:var(--line-strong);color:var(--ink)}.recording-row:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.project-builds .build-details,.recording-details{border:0;padding:0;margin:10px 0 0;background:transparent;box-shadow:none}.project-builds .build-details>summary,.recording-details>summary{font-size:10px;font-weight:500;padding:2px 0;color:var(--muted-text);cursor:pointer}.project-builds .build-details p,.recording-details p{font-size:11px;color:var(--muted-text);line-height:1.5;margin:8px 0}.project-builds .build-details .btn,.recording-details .btn{font-size:11px;min-height:32px;padding:6px 10px;margin-top:8px}
.version-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.version-card{padding:15px}.version-card h3{font-size:14px}.version-card .file-name{font-size:10px}.version-card .recording-copy{display:none}.version-card .recording-thumb{flex-basis:160px}
@media(max-width:600px){.recording-thumb{flex-basis:108px}.recording-row{gap:10px;padding:8px}.recording-copy b{font-size:11px}.project-builds .build-card{padding:16px}.version-grid{grid-template-columns:minmax(0,1fr)}}
/* File previews stay inside the staff route; file type stays visible without a thumbnail. */
.file-grid,.tool-grid:has(.file-card){display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:16px}
.tool-card.file-card{--file-accent:#557696;display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:11px;background:var(--surface-2);border:1px solid transparent;border-radius:13px;text-decoration:none;color:var(--ink);min-width:0;overflow:hidden;box-shadow:none}
.tool-card.file-card:hover{border-color:var(--line-strong);background:var(--surface);box-shadow:0 3px 12px #14202b08}.tool-card.file-card:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.file-card-heading{display:flex;align-items:center;gap:9px;padding:2px 1px;min-width:0}.file-card-heading>b{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:1.4}
.file-kind-icon{display:grid;place-items:center;width:25px;height:25px;border-radius:6px;background:var(--file-accent);color:white;flex:none}.file-kind-icon .icon{width:16px;height:16px}
.file-preview{display:block;height:126px;border-radius:7px;background:var(--surface);overflow:hidden;border:1px solid var(--line)}.file-preview>img{display:block;width:100%;height:100%;object-fit:contain;object-position:center top;background:#fff}
.file-type-preview{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:color-mix(in srgb,var(--file-accent) 5%,var(--surface));color:var(--file-accent)}.file-type-preview>.icon{width:40px;height:40px;stroke-width:1.2}.file-type-preview>span{font-size:10px}
.file-card-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:1px 2px}.file-card-footer>small{font-size:10px;color:var(--muted-text)}.file-card-footer>.icon{width:13px;height:13px;color:var(--muted-text);flex:none}
.tool-card.file-kind-deck,.tool-card.file-kind-design{--file-accent:#b48116}.tool-card.file-kind-sheet{--file-accent:#27845b}.tool-card.file-kind-pdf{--file-accent:#b34c4c}.tool-card.file-kind-doc,.tool-card.file-kind-onboarding,.tool-card.file-kind-contract-template{--file-accent:#477cc6}.tool-card.file-kind-folder{--file-accent:#718398}.tool-card.file-kind-video{--file-accent:#7d65af}.tool-card.file-kind-repo{--file-accent:#535d68}
.btn>.external-link-icon{width:13px;height:13px;flex:none;opacity:.75;margin-left:3px}
@media(max-width:600px){.file-grid,.tool-grid:has(.file-card){grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tool-card.file-card{padding:9px;gap:8px}.file-card-heading{gap:6px}.file-card-heading>b{font-size:11px}.file-preview{height:100px}.file-kind-icon{width:21px;height:21px}.file-kind-icon>.icon{width:14px;height:14px}}
@media(max-width:360px){.file-grid,.tool-grid:has(.file-card){grid-template-columns:minmax(0,1fr)}}
.project-builds .build-details>summary,.recording-details>summary{min-height:24px;line-height:1.4;padding:5px 0 5px 17px;display:block}.project-builds .build-details>summary::before,.recording-details>summary::before{left:2px;width:5px;height:5px}.project-builds .build-details[open]>summary,.recording-details[open]>summary{margin-bottom:8px}.project-builds .build-details[open]>:not(summary),.recording-details[open]>:not(summary){margin:8px 0}.project-builds .more:not(.build-details):not(.recording-details)>summary{min-height:36px;padding-block:10px;font-size:11px}
/* Keep the file-card chrome horizontal over the generic tool-card defaults. */
.tool-card.file-card>.file-card-heading,.tool-card.file-card>.file-card-footer{flex-direction:row;text-align:left}
.tool-card.file-card>.file-card-heading{gap:9px}.tool-card.file-card>.file-card-footer{gap:14px}
.tool-card.file-card .file-kind-icon>.icon{color:#fff}
.tool-card.file-card .file-type-preview>.icon{color:var(--file-accent)}
/* Release groups retain an overview bar while their milestone rows are closed. */
.project-plan-table .plan-release-row>th,.project-plan-table .plan-release-row>td{background:var(--surface-2);border-top:1px solid var(--line-strong)}
.project-plan-table .plan-release-row>.plan-row-name{padding:0}
.plan-release-toggle{display:flex;align-items:center;gap:11px;width:100%;min-height:62px;padding:12px 14px;border:0;background:transparent;color:var(--ink);text-align:left;font:inherit;cursor:pointer}
.plan-release-toggle:hover{background:var(--info-tint)}.plan-release-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}
.plan-release-toggle>span:last-child{display:grid;gap:5px;min-width:0}.plan-release-toggle b{line-height:1.35}.plan-release-toggle small{font-size:10px;font-weight:400;color:var(--muted-text)}
.release-caret{display:block;width:6px;height:6px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(-45deg);flex:none;margin-right:2px}
.plan-release-toggle[aria-expanded="true"] .release-caret{transform:rotate(45deg)}
.project-plan-table .plan-release-row>td{padding-left:0;padding-right:0}.release-range-mark{display:block;height:7px;background:var(--link);opacity:.6}
.plan-release-row .plan-phase-start .release-range-mark{margin-left:4px;border-radius:4px 0 0 4px}.plan-release-row .plan-phase-end .release-range-mark{margin-right:4px;border-radius:0 4px 4px 0}
[data-release-phases] .plan-row-name{padding-left:30px}
@media print{[data-release-phases][hidden]{display:table-row-group!important}}
.service-icon{display:inline-block;width:18px;height:18px;flex:none;color:var(--ink);vertical-align:middle}
.service-googledocs{color:#4285f4}.service-googlesheets{color:#188038}.service-googleslides{color:#e4a500}.service-googledrive{color:#188038}.service-figma{color:#a259ff}.service-miro{color:#242424}.service-slack{color:#611f69}.service-microsoftonedrive{color:#0078d4}.service-youtube{color:#e62117}.service-netlify{color:#168a8a}
.btn.primary>.service-icon{color:currentColor}
.file-card .file-kind-icon:has(.service-icon){background:transparent;border-radius:0}.file-kind-icon .service-icon{width:22px;height:22px}
.file-type-preview>.service-icon{width:42px;height:42px}
.file-grid{align-items:start}.file-entry{min-width:0}.file-entry>.file-card{width:100%;box-sizing:border-box}
.file-preview>.recording-thumb{display:grid;width:100%;height:100%;border-radius:0;aspect-ratio:auto;background:var(--surface-2);color:var(--ink-2)}
.file-preview .recording-thumb img{object-fit:cover}.file-card-footer time{display:block;margin-top:4px;font-size:10px;color:var(--muted-text)}
.file-entry-details.more{border:0;margin:4px 0 0;padding:0;background:transparent;box-shadow:none}.file-entry-details.more>summary{min-height:24px;font-size:10px;padding:6px 10px 6px 22px;color:var(--muted-text)}.file-entry-details.more>summary::before{left:9px;width:5px;height:5px}.file-entry-details.more p{font-size:11px;line-height:1.5;margin:8px 10px;overflow-wrap:anywhere}.file-entry-details.more .btn{font-size:11px;padding:6px 9px;min-height:32px;margin:5px 10px}.file-entry-details.more>summary .icon{width:12px;height:12px}
.file-card.file-kind-source{--file-accent:#535d68}
/* Crew count and portraits form one framed group, with every person visible. */
.summary-crew-box{margin-top:22px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.summary-crew-stat{margin:0;gap:16px;justify-content:space-between}
.summary-crew-stat>span{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:550;color:var(--ink-2)}
.summary-crew-stat>span .icon{width:17px;height:17px;color:var(--muted-text)}
.summary-crew-stat>b{display:grid;place-items:center;min-width:40px;height:40px;padding:0 7px;border-radius:10px;background:var(--surface);font-size:25px;line-height:1;letter-spacing:-.025em}
.summary-avatar-row{flex-wrap:wrap;gap:7px;margin:14px 0 0;padding:0}
.summary-avatar-row>span{margin:0;flex:none;border-radius:50%}.summary-avatar-row .person-avatar{width:38px;height:38px;border:0}
.person-hover{cursor:help;outline-offset:3px}.person-hover:focus-visible{outline:2px solid var(--focus)}
.person-tooltip{position:fixed;z-index:10000;max-width:min(280px,calc(100vw - 24px));padding:9px 12px;border-radius:8px;background:var(--ink);color:var(--surface);font-size:12px;line-height:1.5;box-shadow:0 5px 18px #0002;pointer-events:none}
/* Star controls stay outside each file link, so opening and starring are distinct actions. */
.file-tile{position:relative;min-width:0}.file-tile .file-card-heading{padding-right:40px}.file-tile .file-card{height:100%}
.file-star-form{position:absolute;top:9px;right:9px;margin:0;z-index:2}.file-star-form button{display:grid;place-items:center;width:32px;height:32px;padding:6px;border:1px solid transparent;border-radius:8px;background:var(--surface);color:var(--muted-text);cursor:pointer}
.file-star-form button:hover{background:var(--surface-2);border-color:var(--line-strong);color:var(--ink)}.file-star-form button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.file-star-form button[aria-pressed=true]{color:#997211;background:#fff7d9}.file-star-form button[aria-pressed=true] .icon{fill:#edca60;stroke:#997211}.file-star-form button:disabled{opacity:.5;cursor:wait}
.starred-files .section-heading>a{display:inline-flex;align-items:center;gap:6px;font-size:12px;text-decoration:none}.starred-files .section-heading>a .icon{width:14px;height:14px}
.starred-files{scroll-margin-top:100px}.starred-tray{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:16px;align-items:start}.starred-tray:empty{display:none}
.file-info-icon{display:none}
.file-entry-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;flex-wrap:wrap}.file-entry-details{min-width:0;flex:1}.file-entry-details[open]{flex-basis:100%}
.file-archive-form{margin:3px 0 0 auto}.file-archive-form button{font:inherit;font-size:10px;color:var(--muted-text);border:0;border-radius:6px;padding:7px 10px;background:transparent;cursor:pointer}.file-archive-form button:hover{background:var(--surface-2);color:var(--ink)}.file-archive-form button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.file-archive-form button:disabled{opacity:.5;cursor:wait}
.starred-tray .file-entry-actions{display:block;position:relative;margin:0;padding:0}.starred-tray .file-card-footer{min-height:30px;padding-right:30px}.starred-tray .file-archive-form{display:none}
.starred-tray .file-entry-details{position:static;margin:0}.starred-tray .file-entry-details[open]{padding:0 16px 12px}
.starred-tray .file-entry-details>summary{position:absolute;top:-42px;right:12px;z-index:2;display:grid;place-items:center;width:30px;height:30px;min-height:30px;box-sizing:border-box;padding:5px;margin-left:auto;border-radius:50%;color:var(--muted-text);background:var(--surface-2)}
.starred-tray .file-entry-details>summary::before,.starred-tray .file-detail-label{display:none}.starred-tray .file-entry-details>summary .file-info-icon{display:block;width:20px;height:20px}
.starred-tray .file-entry-details>summary:hover{color:var(--ink);background:var(--line)}.starred-tray .file-entry-details>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.starred-tray .file-entry-details p{font-size:12px;line-height:1.6;margin:9px 0;color:var(--muted-text)}
.file-archive.more{margin:24px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;padding:0;box-shadow:none}.file-archive.more>summary{display:flex;gap:8px;align-items:center;padding:17px 0 17px 20px;font-size:12px;color:var(--muted-text);min-height:44px}.file-archive.more>summary::before{left:3px}.file-archive.more>summary span{font-size:10px;border:1px solid var(--line);padding:2px 6px;border-radius:6px}.file-archive .file-star-form{display:none}.file-archive .file-card-heading{padding-right:0}.file-archive[open]>.file-grid{margin:8px 0 0}
.tool-card.file-card>.file-purpose{display:block;font-size:11px;line-height:1.5;color:var(--muted-text);text-align:left}.starred-tray .file-purpose{font-size:12px}

.star-empty{margin:0;padding:20px 22px;border:1px dashed var(--line-strong);border-radius:12px;color:var(--muted-text);font-size:12px;background:var(--surface)}.star-status:not(.sr-only){font-size:12px;color:var(--warn);margin-top:12px}
.file-version-control{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted-text)}.file-version-control select{font:inherit;padding:8px 42px 8px 12px;border:1px solid var(--line-strong);border-radius:8px;background-color:var(--surface);color:var(--ink)}
.file-entry[hidden],.star-empty[hidden]{display:none!important}
@media(max-width:420px){.file-version-control{font-size:11px}.project-files>.section-heading{gap:12px;flex-wrap:wrap}}
.tool-card.file-card>.file-preview{display:block}.file-preview>.recording-thumb{flex:none;min-height:0}
.file-apk-preview{gap:8px}.file-apk-preview>strong{font-size:20px;line-height:1.2;font-weight:650;letter-spacing:-.02em;color:var(--ink)}.file-apk-preview>.icon{width:24px;height:24px}

/* The project summary owns build actions; saved resources stay separate. */
.summary-build{position:relative;container-type:inline-size}
.project-summary-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
.summary-build-layout{display:grid;gap:16px;align-items:center;min-width:0}
.summary-build-preview{display:block;min-width:0;border-radius:10px;overflow:hidden;background:var(--surface-2)}
.summary-build-preview>.recording-thumb{display:grid;width:100%;aspect-ratio:16/9;border-radius:0}.summary-build-preview img{width:100%;height:100%;object-fit:cover}
.summary-build-layout>.summary-build-art{height:auto;aspect-ratio:16/9;margin:0}
.summary-build-copy{min-width:0}.summary-build-copy .summary-value{font-size:19px;line-height:1.3}
.summary-build-copy .summary-build-meta{margin:9px 0 14px;gap:7px 10px;font-size:10px}
.summary-version{padding:3px 7px;background:var(--surface-2);border:1px solid var(--line);border-radius:5px;color:var(--ink-2);font-weight:600}
.summary-build-actions{display:flex;flex-wrap:wrap;gap:7px}.summary-build-actions .btn{font-size:11px;min-height:35px;padding:7px 10px}
.summary-build-repo{display:flex;gap:9px;align-items:center;margin-top:12px;color:var(--ink);text-decoration:none;padding:8px;border:1px solid var(--line);border-radius:8px;min-width:0}
.summary-build-repo>img{width:58px;height:38px;object-fit:cover;object-position:top;border-radius:3px;flex:none}.summary-build-repo>.service-icon{width:25px;height:25px;flex:none}
.summary-build-repo>span{min-width:0;font-size:10px;color:var(--muted-text)}.summary-build-repo b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:var(--ink);margin-top:3px}.summary-build-repo>.icon{margin-left:auto;width:12px;height:12px;flex:none}.summary-build-repo:hover{background:var(--surface-2)}
.summary-build-info{margin:0;min-width:0}.summary-build-info>summary{position:absolute;right:20px;top:16px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface-2);color:var(--muted-text);cursor:pointer;list-style:none}.summary-build-info>summary::-webkit-details-marker{display:none}.summary-build-info>summary>.icon{width:19px;height:19px}.summary-build-info>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.summary-build-info>div{margin-top:18px;padding-top:6px;border-top:1px solid var(--line)}.summary-build-info>div>div{padding:10px 0}.summary-build-info b{font-size:12px}.summary-build-info p{font-size:11px;color:var(--muted-text);line-height:1.5;margin:6px 0}
.project-summary-facts .summary-build>h2{padding-right:30px}
:is(.starred-files,.project-plan,.project-files)>:is(h2,.section-heading)>h2,:is(.starred-files,.project-plan,.project-files)>h2{display:flex;align-items:center;gap:9px}
:is(.starred-files,.project-plan,.project-files) h2>.icon{width:19px;height:19px;flex:none;color:var(--muted-text)}
.summary-build .summary-build-preview>.recording-thumb{height:160px;aspect-ratio:auto}
.summary-build .summary-build-layout{gap:14px}
.summary-build .summary-build-copy .summary-value{font-size:18px}
@media(min-width:701px) and (max-width:900px){.project-summary-facts>article{padding:18px 15px}.summary-target{gap:12px}.summary-calendar{width:76px}.summary-lead.person-label{gap:10px}.summary-lead b{font-size:15px}.summary-crew-box{padding:12px}.summary-avatar-row .person-avatar{width:30px;height:30px}}
@media(max-width:700px){.project-summary-facts{grid-template-columns:minmax(0,1fr)}.project-summary-facts>article+article{border-left:0;border-top:1px solid var(--line)}.summary-build-info>summary{right:14px;top:14px}}
@media(max-width:600px){.starred-tray{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.starred-tray .file-entry-details>summary{top:-40px;right:9px}.starred-tray .file-card-footer{padding-right:27px}}
@media(max-width:360px){.starred-tray{grid-template-columns:minmax(0,1fr)}}

/* Shared destinations: short labels, one purpose per tool. */
.portal-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}
.portal-tool{display:flex;align-items:center;gap:14px;min-height:108px;padding:20px;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--ink);text-decoration:none}
.portal-tool:hover{border-color:var(--line-strong);background:var(--surface-2)}.portal-tool:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.portal-tool-icon{display:grid;place-items:center;flex:none;width:43px;height:43px;border-radius:11px;background:var(--surface-2);color:var(--ink-2)}.portal-tool-icon>.icon{width:22px;height:22px}
.portal-tool>span:nth-child(2){display:grid;gap:7px;min-width:0}.portal-tool b{font-size:15px;font-weight:650}.portal-tool small{font-size:11px;line-height:1.5;color:var(--muted-text)}.portal-tool>.icon{margin-left:auto;flex:none;width:16px;height:16px;color:var(--muted-text)}
.home-upcoming-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.home-coming .section-heading h2,.home-shortcuts>h2,#reports .section-heading h2{display:flex;align-items:center;gap:9px}.home-coming h2>.icon,.home-shortcuts h2>.icon,#reports h2>.icon{width:19px;height:19px;color:var(--muted-text)}
.home-coming .section-heading>a{display:inline-flex;gap:7px;align-items:center;font-size:12px;text-decoration:none}.home-coming .section-heading>a>.icon{width:14px;height:14px}
.home-upcoming-item{display:flex;gap:16px;align-items:center;min-height:112px;padding:18px 20px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);text-decoration:none}.home-upcoming-item:hover{background:var(--surface-2)}
.home-upcoming-item>time{display:grid;justify-items:center;flex:none;width:58px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);overflow:hidden}.home-upcoming-item time>span{font-size:10px;text-transform:uppercase;padding:5px 0;color:var(--muted-text)}.home-upcoming-item time>b{font-size:25px;line-height:1;padding:1px 0 9px;font-weight:600}
.home-upcoming-item>span{display:grid;gap:9px;min-width:0}.home-upcoming-item small{display:flex;align-items:center;gap:5px;color:var(--muted-text);font-size:10px}.home-upcoming-item small>.icon{width:12px;height:12px}.home-upcoming-item>span>b{font-size:15px;font-weight:600;line-height:1.4}.home-upcoming-item>.icon{margin-left:auto;width:16px;flex:none;color:var(--muted-text)}
.admin-report-links{display:flex;flex-wrap:wrap;gap:9px}.admin-report-links .btn{font-size:12px;min-height:40px;padding:9px 12px}.admin-attention.more>summary{display:flex;align-items:center;gap:9px}.admin-attention summary>.icon{width:17px;height:17px;color:var(--warn)}.admin-count{margin-left:auto;font-size:11px;padding:3px 8px;border-radius:6px;background:var(--surface-2);font-weight:600}
@media(max-width:850px){.portal-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-upcoming-item{padding:15px;gap:12px}}
@media(max-width:560px){.portal-tool-grid,.home-upcoming-grid{grid-template-columns:minmax(0,1fr)}.portal-tool{min-height:91px;padding:16px}.home-upcoming-item{min-height:96px}.home-upcoming-item>span>b{font-size:14px}}

/* Project navigation and browser-build shelf. */
.project-navigation{display:flex;align-items:center;gap:6px;margin:0 0 25px;border-bottom:1px solid var(--line);padding-bottom:10px}
.project-navigation a{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:8px;text-decoration:none;font-size:12px;font-weight:550;color:var(--muted-text)}.project-navigation a .icon{width:16px;height:16px}.project-navigation a[aria-current]{color:var(--ink);background:var(--surface-2)}.project-navigation a:hover{background:var(--surface-2)}
.web-prototype-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}.web-prototype-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;min-width:0}
.web-prototype-card .summary-build-layout{grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}.web-prototype-card .summary-build-preview{aspect-ratio:16/9}.web-prototype-card .summary-build-preview>span{width:100%;height:100%}
.web-prototype-heading{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:18px}.web-prototype-heading>a{display:inline-flex;gap:7px;align-items:center;color:var(--muted-text);font-size:11px;text-decoration:none}.web-prototype-heading>a>.icon{width:12px;height:12px}.web-prototype-card h2{font-size:19px;line-height:1.3;margin:0 0 8px;font-weight:650}.web-prototype-date,.web-prototype-missing{font-size:10px;color:var(--muted-text);line-height:1.5;margin:0 0 14px}.web-prototype-missing{margin:12px 0 0}.web-prototype-recording-date{display:flex;align-items:center;gap:6px;margin:14px 0 0;font-size:10px;color:var(--muted-text);line-height:1.4}.web-prototype-recording-date>.icon{width:13px;height:13px;flex:none}.web-prototype-card .title-capture{display:block;aspect-ratio:16/9}.web-prototype-card .title-capture img{width:100%;height:100%;object-fit:cover}.prototype-pending{display:inline-flex;gap:6px;align-items:center;min-height:35px;font-size:11px;color:var(--muted-text)}.prototype-pending>.icon{width:14px;height:14px}
@media(max-width:1100px){.web-prototype-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.web-prototype-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){.web-prototype-card{padding:16px}.project-navigation a{padding:8px 10px}}
.finance-year{margin:22px 0;border:1px solid var(--line);border-radius:12px;padding:20px;background:var(--surface)}.finance-year>summary{cursor:pointer;display:flex;justify-content:space-between;font-weight:700;font-size:19px;gap:20px}.finance-year>summary>span{font-size:12px;color:var(--muted);font-weight:400}.finance-year[open]>summary{margin-bottom:22px}.finance-scroll{overflow:auto}.finance-table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px}.finance-table th,.finance-table td{padding:13px 12px;border-bottom:1px solid var(--line);text-align:right}.finance-table th:first-child{text-align:left}.finance-table thead th{font-size:10px;color:var(--muted);font-weight:600}.decision-list{display:grid;gap:10px}.decision-card{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:17px}.decision-card>summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:9px;align-items:baseline}.decision-kind{font-size:10px;color:var(--muted);min-width:100px}.decision-card b{font-size:13px}.decision-preview{display:block;flex-basis:100%;padding-left:109px;color:var(--muted);font-size:12px;line-height:1.5}.decision-card[open] .decision-preview{display:none}.decision-card>p{font-size:13px;line-height:1.7}.admin-report-links{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:650px){.finance-year{padding:14px}.finance-year>summary{flex-direction:column;gap:5px}.decision-preview{padding-left:0}}

/* Finance keeps retainer coverage and monthly exceptions visible before its tables. */
.finance-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin:8px 0 25px}.finance-controls label{display:grid;gap:7px;font-size:11px;color:var(--muted-text)}.finance-controls select{min-width:150px;font-size:13px;min-height:40px}.finance-controls>span{font-size:11px;color:var(--muted-text);margin-left:auto;padding-bottom:12px}
.finance-period>h2{font-size:21px;margin:18px 0}.finance-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.finance-chart-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.finance-chart-card{min-width:0;padding:21px 23px 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.finance-chart-card h3{font-size:15px;margin:0 0 13px}.finance-chart-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:var(--muted-text);margin-bottom:8px}.finance-chart-legend>span{display:inline-flex;align-items:center;gap:6px}.finance-chart-legend>span:before{content:'';width:11px;height:8px;border-radius:2px;background:var(--chart-colour)}.legend-committed{--chart-colour:#4c7eab}.legend-planned{--chart-colour:#b7cede}.legend-overage{--chart-colour:#c56c60}.legend-unused{--chart-colour:#d9ad65}.finance-chart-legend>.legend-retainer:before{height:0;border-top:2px dashed var(--ink-2);width:16px;background:none;border-radius:0}
.finance-chart-scroll{overflow:auto}.finance-chart{display:block;width:100%;height:auto;min-width:760px;font:12px var(--font-ui)}.finance-grid{stroke:var(--line);stroke-width:1}.finance-axis-label{fill:var(--muted-text);font-size:11px}.finance-committed{fill:#4c7eab}.finance-planned{fill:#b7cede}.finance-overage{fill:#c56c60}.finance-unused{fill:#d9ad65}.finance-retainer-line{fill:none;stroke:var(--ink-2);stroke-width:2;stroke-dasharray:5 4;pointer-events:none}.finance-chart-hit{fill:transparent}.finance-chart-month{outline:none;cursor:help}.finance-chart-month:hover .finance-chart-hit,.finance-chart-month:focus .finance-chart-hit{fill:var(--surface-2)}.finance-chart-tooltip{position:fixed;z-index:100;pointer-events:none;max-width:min(300px,calc(100vw - 24px));white-space:pre-line;background:var(--ink);color:var(--surface);padding:12px 14px;border-radius:9px;font-size:12px;line-height:1.65;box-shadow:0 5px 25px #0003}.finance-reading{margin:17px 0 22px}
@media(max-width:650px){.finance-controls{gap:10px}.finance-controls label{flex:1;min-width:0}.finance-controls select{min-width:0;width:100%;font-size:12px}.finance-controls>span{margin-left:0;flex-basis:100%;padding:0}.finance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-chart-card{padding:16px 13px 5px}.finance-chart-legend{gap:9px 14px;font-size:10px}}

@media(max-width:1100px){.finance-chart-grid{grid-template-columns:minmax(0,1fr)}}

/* Retainer composition: solid identified people, hatched unfilled roles. */
.finance-employees{fill:#6d889e}.finance-freelancers{fill:#5c9c95}.finance-spec-assigned{fill:#a59ac2}.finance-open-bg{fill:#e2eeeb}.finance-open-hatch{fill:none;stroke:#5c9c95;stroke-width:1.5}.finance-spec-bg{fill:#eeebf5}.finance-spec-hatch{fill:none;stroke:#a59ac2;stroke-width:1.5}.legend-employees{--chart-colour:#6d889e}.legend-freelancers{--chart-colour:#5c9c95}.legend-spec-assigned{--chart-colour:#a59ac2}.finance-chart-legend>.legend-open-roles:before{background:repeating-linear-gradient(135deg,#e2eeeb 0 3px,#5c9c95 3px 4px)}.finance-chart-legend>.legend-spec-unfilled:before{background:repeating-linear-gradient(135deg,#eeebf5 0 3px,#a59ac2 3px 4px)}

.finance-chart-full{min-width:2100px}.finance-axis-year{font-weight:600}.finance-chart-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

.finance-project-cost{margin:26px 0;border:1px solid var(--line);border-radius:12px;padding:22px;background:var(--surface)}.finance-project-cost h3{margin:0 0 8px;font-size:18px}.finance-project-table{border-collapse:collapse;width:100%;min-width:600px;font-size:12px}.finance-project-table th,.finance-project-table td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:right}.finance-project-table th:first-child{text-align:left;width:27%}.finance-project-table td:nth-child(2){width:33%}.finance-project-table svg{display:block;width:100%;height:14px}.finance-project-table thead{color:var(--muted-text);font-size:11px}.finance-project-table tfoot{font-weight:700}.finance-overhead-row{color:var(--muted-text)}@media(max-width:650px){.finance-project-cost{padding:16px 13px}}
/* Finance project/release estimates share one SL/Nex column layout. */
.finance-project-table{min-width:880px;font-size:12px;width:100%}.finance-cost-head,.finance-cost-summary,.finance-release-row,.finance-cost-total{display:grid;grid-template-columns:minmax(240px,2fr) minmax(140px,1.35fr) 90px 110px 110px 120px;align-items:center;gap:12px;padding:13px 8px;text-align:right;font-variant-numeric:tabular-nums}.finance-cost-head{font-size:11px;color:var(--muted-text);border-bottom:1px solid var(--line)}.finance-cost-head>:first-child,.finance-cost-summary>:first-child,.finance-release-row>:first-child,.finance-cost-total>:first-child{text-align:left}.finance-cost-project{border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0;padding:0;background:transparent}.finance-cost-summary{cursor:pointer;list-style:none}.finance-cost-summary::-webkit-details-marker{display:none}.finance-cost-summary:hover,.finance-cost-summary:focus-visible{background:var(--surface-2)}.finance-cost-summary:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.finance-cost-name{display:flex;align-items:center;gap:10px}.finance-cost-name>.icon{flex:none;width:14px;height:14px}.finance-cost-name>span{min-width:0}.finance-cost-name small,.finance-release-name small{display:block;margin-top:4px;color:var(--muted-text);font-size:10px;font-weight:400}.finance-cost-project[open] .finance-cost-chevron{transform:rotate(90deg)}.finance-release-list{background:var(--surface-2);border-top:1px solid var(--line)}.finance-release-row{border-bottom:1px solid var(--line);font-size:11px}.finance-release-name{padding-left:24px;line-height:1.5}.finance-release-note{font-size:10px;line-height:1.5;color:var(--muted-text);margin:0;padding:12px 32px}.finance-cost-total{font-weight:700;border-top:1px solid var(--line-strong)}.finance-cost-sl{fill:#5c9c95}.finance-cost-nex{fill:#6d889e}.legend-cost-sl{--chart-colour:#5c9c95}.legend-cost-nex{--chart-colour:#6d889e}.finance-cost-bar svg{display:block;width:100%;height:14px}.admin-file-grid{margin:16px 0 22px}.admin-file-grid .file-card-heading>b{white-space:normal;min-height:34px;overflow-wrap:anywhere}.admin-file-grid .file-purpose{font-size:11px;color:var(--muted-text);overflow-wrap:anywhere}
.finance-cost-title{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.finance-cost-title h3{margin:0}.finance-cost-filter{display:flex;gap:4px;padding:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px}.finance-cost-filter button{padding:7px 12px;border:0;border-radius:6px;background:transparent;color:var(--muted-text);font:inherit;font-size:11px;cursor:pointer}.finance-cost-filter button[aria-pressed="true"]{background:var(--ink);color:var(--surface)}.finance-cost-filter button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.finance-cost-category{font-size:10px;font-weight:600;color:var(--muted-text);padding:15px 8px 8px;border-bottom:1px solid var(--line)}.finance-project-cost{scroll-margin-top:100px}

/* ------------------------------------------------------------------ generated by build_portal.py:
   project colours (.c-<hex>) and column widths (col.w-<percent>) */
.c-099268 { --pc: #099268; }
.c-0b7285 { --pc: #0b7285; }
.c-1098ad { --pc: #1098ad; }
.c-2f6fde { --pc: #2f6fde; }
.c-5c940d { --pc: #5c940d; }
.c-5f3dc4 { --pc: #5f3dc4; }
.c-868e96 { --pc: #868e96; }
.c-8a8f98 { --pc: #8a8f98; }
.c-9c36b5 { --pc: #9c36b5; }
.c-a9791c { --pc: #a9791c; }
.c-ae3ec9 { --pc: #ae3ec9; }
.c-c2255c { --pc: #c2255c; }
.c-d9480f { --pc: #d9480f; }
.c-e67700 { --pc: #e67700; }
.c-f08c00 { --pc: #f08c00; }
col.w-11 { width: 11%; }
col.w-13 { width: 13%; }
col.w-14 { width: 14%; }
col.w-15 { width: 15%; }
col.w-17 { width: 17%; }
col.w-18 { width: 18%; }
col.w-19 { width: 19%; }
col.w-20 { width: 20%; }
col.w-21 { width: 21%; }
col.w-22 { width: 22%; }
col.w-24 { width: 24%; }
col.w-28 { width: 28%; }
col.w-30 { width: 30%; }
col.w-34 { width: 34%; }
col.w-38 { width: 38%; }
col.w-40 { width: 40%; }
col.w-60 { width: 60%; }
col.w-62 { width: 62%; }
col.w-70 { width: 70%; }
col.w-82 { width: 82%; }
.board-left-0 { left: 0%; }
.board-left-56 { left: 0.56%; }
.board-left-389 { left: 3.89%; }
.board-left-444 { left: 4.44%; }
.board-left-778 { left: 7.78%; }
.board-left-1056 { left: 10.56%; }
.board-left-1221 { left: 12.21%; }
.board-left-1222 { left: 12.22%; }
.board-left-1278 { left: 12.78%; }
.board-left-1308 { left: 13.08%; }
.board-left-1310 { left: 13.1%; }
.board-left-1332 { left: 13.32%; }
.board-left-1389 { left: 13.89%; }
.board-left-1500 { left: 15%; }
.board-left-1554 { left: 15.54%; }
.board-left-1611 { left: 16.11%; }
.board-left-1722 { left: 17.22%; }
.board-left-1778 { left: 17.78%; }
.board-left-1833 { left: 18.33%; }
.board-left-1887 { left: 18.87%; }
.board-left-1998 { left: 19.98%; }
.board-left-2000 { left: 20%; }
.board-left-2056 { left: 20.56%; }
.board-left-2111 { left: 21.11%; }
.board-left-2167 { left: 21.67%; }
.board-left-2222 { left: 22.22%; }
.board-left-2278 { left: 22.78%; }
.board-left-2331 { left: 23.31%; }
.board-left-2387 { left: 23.87%; }
.board-left-2389 { left: 23.89%; }
.board-left-2444 { left: 24.44%; }
.board-left-2500 { left: 25%; }
.board-left-2554 { left: 25.54%; }
.board-left-2556 { left: 25.56%; }
.board-left-2667 { left: 26.67%; }
.board-left-2720 { left: 27.2%; }
.board-left-2722 { left: 27.22%; }
.board-left-2778 { left: 27.78%; }
.board-left-2998 { left: 29.98%; }
.board-left-3000 { left: 30%; }
.board-left-3111 { left: 31.11%; }
.board-left-3275 { left: 32.75%; }
.board-left-3278 { left: 32.78%; }
.board-left-3442 { left: 34.42%; }
.board-left-3444 { left: 34.44%; }
.board-left-3497 { left: 34.97%; }
.board-left-3556 { left: 35.56%; }
.board-left-3608 { left: 36.08%; }
.board-left-3611 { left: 36.11%; }
.board-left-3667 { left: 36.67%; }
.board-left-3719 { left: 37.19%; }
.board-left-3722 { left: 37.22%; }
.board-left-3775 { left: 37.75%; }
.board-left-3778 { left: 37.78%; }
.board-left-3830 { left: 38.3%; }
.board-left-3833 { left: 38.33%; }
.board-left-3886 { left: 38.86%; }
.board-left-3889 { left: 38.89%; }
.board-left-3944 { left: 39.44%; }
.board-left-4000 { left: 40%; }
.board-left-4056 { left: 40.56%; }
.board-left-4111 { left: 41.11%; }
.board-left-4167 { left: 41.67%; }
.board-left-4203 { left: 42.03%; }
.board-left-4206 { left: 42.06%; }
.board-left-4219 { left: 42.19%; }
.board-left-4222 { left: 42.22%; }
.board-left-4274 { left: 42.74%; }
.board-left-4278 { left: 42.78%; }
.board-left-4389 { left: 43.89%; }
.board-left-4441 { left: 44.41%; }
.board-left-4444 { left: 44.44%; }
.board-left-4496 { left: 44.96%; }
.board-left-4611 { left: 46.11%; }
.board-left-4718 { left: 47.18%; }
.board-left-4722 { left: 47.22%; }
.board-left-4944 { left: 49.44%; }
.board-left-5000 { left: 50%; }
.board-left-5052 { left: 50.52%; }
.board-left-5056 { left: 50.56%; }
.board-left-5163 { left: 51.63%; }
.board-left-5167 { left: 51.67%; }
.board-left-5218 { left: 52.18%; }
.board-left-5222 { left: 52.22%; }
.board-left-5274 { left: 52.74%; }
.board-left-5278 { left: 52.78%; }
.board-left-5333 { left: 53.33%; }
.board-left-5385 { left: 53.85%; }
.board-left-5389 { left: 53.89%; }
.board-left-5440 { left: 54.4%; }
.board-left-5444 { left: 54.44%; }
.board-left-5500 { left: 55%; }
.board-left-5556 { left: 55.56%; }
.board-left-5607 { left: 56.07%; }
.board-left-5611 { left: 56.11%; }
.board-left-5662 { left: 56.62%; }
.board-left-5667 { left: 56.67%; }
.board-left-5722 { left: 57.22%; }
.board-left-5829 { left: 58.29%; }
.board-left-5833 { left: 58.33%; }
.board-left-5884 { left: 58.84%; }
.board-left-5889 { left: 58.89%; }
.board-left-5995 { left: 59.95%; }
.board-left-6162 { left: 61.62%; }
.board-left-6167 { left: 61.67%; }
.board-left-6500 { left: 65%; }
.board-left-6606 { left: 66.06%; }
.board-left-6611 { left: 66.11%; }
.board-left-6667 { left: 66.67%; }
.board-left-6772 { left: 67.72%; }
.board-left-6828 { left: 68.28%; }
.board-left-6833 { left: 68.33%; }
.board-left-6883 { left: 68.83%; }
.board-left-6944 { left: 69.44%; }
.board-left-7000 { left: 70%; }
.board-left-7105 { left: 71.05%; }
.board-left-7111 { left: 71.11%; }
.board-left-7167 { left: 71.67%; }
.board-left-7216 { left: 72.16%; }
.board-left-7222 { left: 72.22%; }
.board-left-7272 { left: 72.72%; }
.board-left-7328 { left: 73.28%; }
.board-left-7333 { left: 73.33%; }
.board-left-7439 { left: 74.39%; }
.board-left-7444 { left: 74.44%; }
.board-left-7605 { left: 76.05%; }
.board-left-8049 { left: 80.49%; }
.board-left-8056 { left: 80.56%; }
.board-left-8167 { left: 81.67%; }
.board-left-8278 { left: 82.78%; }
.board-left-8327 { left: 83.27%; }
.board-left-8333 { left: 83.33%; }
.board-left-8444 { left: 84.44%; }
.board-left-8500 { left: 85%; }
.board-left-8549 { left: 85.49%; }
.board-left-8556 { left: 85.56%; }
.board-left-8611 { left: 86.11%; }
.board-left-8660 { left: 86.6%; }
.board-left-8667 { left: 86.67%; }
.board-left-8715 { left: 87.15%; }
.board-left-8722 { left: 87.22%; }
.board-left-8771 { left: 87.71%; }
.board-left-8778 { left: 87.78%; }
.board-left-8882 { left: 88.82%; }
.board-left-9048 { left: 90.48%; }
.board-left-9056 { left: 90.56%; }
.board-left-9215 { left: 92.15%; }
.board-left-9492 { left: 94.92%; }
.board-left-9500 { left: 95%; }
.board-left-9556 { left: 95.56%; }
.board-left-9722 { left: 97.22%; }
.board-left-9770 { left: 97.7%; }
.board-left-9833 { left: 98.33%; }
.board-left-9889 { left: 98.89%; }
.board-left-10000 { left: 100%; }
.board-width-56 { width: 0.56%; }
.board-width-111 { width: 1.11%; }
.board-width-167 { width: 1.67%; }
.board-width-222 { width: 2.22%; }
.board-width-278 { width: 2.78%; }
.board-width-333 { width: 3.33%; }
.board-width-389 { width: 3.89%; }
.board-width-444 { width: 4.44%; }
.board-width-500 { width: 5%; }
.board-width-555 { width: 5.55%; }
.board-width-666 { width: 6.66%; }
.board-width-722 { width: 7.22%; }
.board-width-833 { width: 8.33%; }
.board-width-888 { width: 8.88%; }
.board-width-944 { width: 9.44%; }
.board-width-999 { width: 9.99%; }
.board-width-1055 { width: 10.55%; }
.board-width-1110 { width: 11.1%; }
.board-width-1166 { width: 11.66%; }
.board-width-1221 { width: 12.21%; }
.board-width-1277 { width: 12.77%; }
.board-width-1278 { width: 12.78%; }
.board-width-1332 { width: 13.32%; }
.board-width-1333 { width: 13.33%; }
.board-width-1388 { width: 13.88%; }
.board-width-1443 { width: 14.43%; }
.board-width-1445 { width: 14.45%; }
.board-width-1500 { width: 15%; }
.board-width-1556 { width: 15.56%; }
.board-width-1610 { width: 16.1%; }
.board-width-1665 { width: 16.65%; }
.board-width-1722 { width: 17.22%; }
.board-width-1723 { width: 17.23%; }
.board-width-1778 { width: 17.78%; }
.board-width-2387 { width: 23.87%; }
.board-width-2498 { width: 24.98%; }
.board-width-2554 { width: 25.54%; }
.board-width-2831 { width: 28.31%; }
.board-width-3222 { width: 32.22%; }
.board-width-7444 { width: 74.44%; }
.board-width-9611 { width: 96.11%; }
.person-label { display: inline-flex; align-items: center; gap: 8px; vertical-align: middle; max-width: 100%; }
.person-label > span:last-child { min-width: 0; }
.person-avatar { --avatar-bg: #e0e8f4; --avatar-ink: #344d72; display: inline-grid; place-items: center; flex: 0 0 auto; vertical-align: middle; width: 32px; height: 32px; overflow: hidden; border-radius: 50%; background: var(--avatar-bg); color: var(--avatar-ink); box-shadow: 0 0 0 2px var(--surface); font: 700 11px/1 var(--font-display, sans-serif); letter-spacing: -.02em; }
.person-avatar img { width: 100%; height: 100%; display: block; object-fit: cover; }
.person-avatar.tone-1 { --avatar-bg: #e6e0f1; --avatar-ink: #604c7a; }
.person-avatar.tone-2 { --avatar-bg: #dcece6; --avatar-ink: #2e6252; }
.person-avatar.tone-3 { --avatar-bg: #f2e3d8; --avatar-ink: #80583e; }
.person-avatar.tone-4 { --avatar-bg: #eedde3; --avatar-ink: #7c455c; }
.person-avatar.tone-5 { --avatar-bg: #dcebef; --avatar-ink: #386370; }
.person-avatar.vacancy { background: transparent; border: 1px dashed var(--line-strong); color: var(--muted); box-shadow: none; }
.action-meta .person-avatar, .owner .person-avatar { width: 26px; height: 26px; font-size: 9px; }
.avatar-stack { display: inline-flex; align-items: center; padding-left: 5px; }
.avatar-stack .person-avatar { margin-left: -5px; }
@media print { .person-avatar { box-shadow: none; width: 18px; height: 18px; font-size: 7px; } }
/* People is a directory with individual profiles, using the shared portal shell. */
.people-view-nav{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:0 0 22px;padding-bottom:12px;flex-wrap:wrap}
.people-view-nav a{padding:9px 16px;border-radius:8px;color:var(--muted);text-decoration:none;font-weight:600}
.people-view-nav a[aria-current]{background:var(--ink);color:var(--surface)}
.people-summary{display:flex;gap:26px;flex-wrap:wrap;margin-bottom:24px;color:var(--muted);font-size:13px}.people-summary b{color:var(--ink);font-size:18px;margin-right:5px}.people-summary a{display:inline-flex;gap:3px;align-items:center;color:inherit;text-decoration:none}
.people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.people-card,.person-panel,.hiring-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px;min-width:0}.people-card{display:flex;flex-direction:column;gap:14px}.people-card-top{display:flex;gap:13px;align-items:center}.people-card-top>.person-avatar{width:52px;height:52px;font-size:16px;box-shadow:none}.people-card h2{font-size:17px;margin:0 0 5px;line-height:1.3}.people-card h2 a{color:var(--ink);text-decoration:none}.people-card-top p{margin:0;font-size:12px;color:var(--muted)}.people-tags{display:flex;gap:6px;flex-wrap:wrap}.people-chip{display:inline-flex;align-items:center;padding:5px 9px;background:var(--bg);border-radius:6px;color:var(--muted);font-size:11px;font-weight:600}.people-chip.nex{background:#e0f2eb;color:#28694f}.people-chip.sl{background:#e7eafa;color:#4d568f}.people-chip.freelance{background:#f7eddb;color:#7b6034}.people-capacity,.people-history{font-size:12px;color:var(--muted);margin:0;line-height:1.6}.people-projects{display:flex;gap:6px;flex-wrap:wrap}.people-projects a,.people-projects>span{font-size:11px;padding:4px 8px;border:1px solid var(--line);border-radius:5px;text-decoration:none;color:var(--ink)}.people-profile-link{margin-top:auto;padding-top:10px;border-top:1px solid var(--line);font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:space-between;text-decoration:none;color:var(--ink)}
.person-hero{display:flex;align-items:center;gap:22px;margin:25px 0 30px}.person-hero>.person-avatar{width:88px;height:88px;font-size:28px}.person-hero h1{margin:0 0 8px;font-size:30px}.person-hero p{margin:0 0 12px;color:var(--muted)}.person-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.person-panel h2,.hiring-card h2{margin:0 0 15px;font-size:18px}.person-panel p{font-size:13px;line-height:1.7}.employment-history{list-style:none;padding:0;margin:0}.employment-history li{display:flex;flex-direction:column;gap:5px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}.employment-history span{font-size:12px;color:var(--muted)}.person-timeline-scroll{overflow:auto;margin-top:18px;border:1px solid var(--line);border-radius:10px}.person-timeline{min-width:780px;background:var(--surface)}.person-timeline-scale,.person-timeline-row{display:grid;grid-template-columns:220px 1fr}.person-timeline-scale{padding:12px 14px;font-size:11px;color:var(--muted);border-bottom:1px solid var(--line)}.person-timeline-row>div:first-child{padding:14px;font-size:12px}.person-timeline-row small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.person-timeline-row{border-bottom:1px solid var(--line)}.person-timeline-track{position:relative;min-height:60px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(8.3333% - 1px),var(--line) calc(8.3333% - 1px),var(--line) 8.3333%)}.person-timeline-bar{position:absolute;top:20px;height:20px;background:#8c82b1;border-radius:3px;min-width:2px}.person-timeline-bar.planned{background:#d8d3e7;border:1px dashed #8c82b1}.person-timeline-bar:focus{outline:2px solid var(--ink);outline-offset:2px}.people-match-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.people-match-list a{display:flex;flex-direction:column;padding:16px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink);font-size:13px;gap:7px}.people-match-list span{font-size:11px;color:var(--muted)}
.hiring-list{display:grid;gap:16px}.hiring-card{display:grid;grid-template-columns:1fr 1.5fr;gap:25px}.hiring-card h3{font-size:13px;margin:0 0 12px}.candidate-list{display:flex;gap:8px;flex-wrap:wrap}.candidate-list>a{display:flex;flex-direction:column;gap:6px;padding:9px;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--ink);font-size:12px}.candidate-list small{max-width:220px;color:var(--muted);font-size:10px}
@media(max-width:1000px){.people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.people-match-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.people-grid,.person-detail-grid,.hiring-card,.people-match-list{grid-template-columns:1fr}.people-card,.person-panel,.hiring-card{padding:18px}.person-hero{gap:15px}.person-hero>.person-avatar{width:64px;height:64px}.person-hero h1{font-size:24px}.people-summary{gap:12px;font-size:11px}.people-summary b{font-size:15px}}

.person-year-scale{position:relative;height:16px}.person-year-scale>span{position:absolute;top:0}
/* One header definition, compiled into the portal and integrated Schedule.
   Scope prevents the Schedule's own controls from changing the studio header. */
:root { --studio-shell-height: 81px; }
html:has(header.chrome) { scroll-padding-top: calc(var(--studio-shell-height) + 16px); }
:is(header.chrome, #portal-shell) {
  position: sticky; top: 0; z-index: 100;
  background: var(--surface); border: 0; border-bottom: 1px solid var(--line);
  color: var(--ink); font-family: var(--font-ui); font-size: 14px;
}
:is(header.chrome, #portal-shell) .wrap.bar {
  display: flex; align-items: center; flex-wrap: wrap;
  width: 100%; max-width: none; min-height: 80px; margin: 0;
  padding: 16px 24px; gap: 12px 24px; box-sizing: border-box;
}
:is(header.chrome, #portal-shell) .brand {
  display: flex; align-items: center; flex: 0 0 auto;
  min-width: 0; min-height: 36px; padding: 0; margin: 0;
  color: var(--ink); text-decoration: none;
}
:is(header.chrome, #portal-shell) .studio-logo { display: block; width: 236px; height: auto; flex: none; }
:is(header.chrome, #portal-shell) .tabs {
  display: flex; align-items: center; flex: 1 1 auto; flex-wrap: nowrap;
  gap: 4px; min-width: 0; padding: 0; margin: 0; order: 0;
  border: 0; overflow: visible; -webkit-mask-image: none; mask-image: none;
}
:is(header.chrome, #portal-shell) .tab {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 10px 16px; margin: 0;
  border: 0; border-radius: 9px; background: transparent;
  color: var(--ink-2); font: 650 14px/24px var(--font-ui);
  text-decoration: none; letter-spacing: normal; white-space: nowrap;
}
:is(header.chrome, #portal-shell) .tab:hover { background: var(--surface-2); color: var(--ink); }
:is(header.chrome, #portal-shell) .tab[aria-current="page"] { background: var(--select); color: var(--select-ink); }
:is(header.chrome, #portal-shell) :is(.tab, .brand, .signout):focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
:is(header.chrome, #portal-shell) .asof { margin: 0 0 0 auto; color: var(--muted-text); font: 400 11px/1.4 var(--font-ui); white-space: nowrap; }
:is(header.chrome, #portal-shell) .who { display: flex; align-items: center; gap: 8px; margin-left: auto; color: var(--ink-2); font: 400 12px/1.4 var(--font-ui); white-space: nowrap; }
:is(header.chrome, #portal-shell) .who-name { font: 400 12px/1.4 var(--font-ui); color: var(--ink-2); white-space: nowrap; }
:is(header.chrome, #portal-shell) .preview-badge { display: inline-flex; align-items: center; gap: 7px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-2); color: var(--ink-2); font: 500 10px/1.4 var(--font-ui); }
:is(header.chrome, #portal-shell) .preview-badge::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: #668c78; }
:is(header.chrome, #portal-shell) .who form { margin: 0; }
:is(header.chrome, #portal-shell) .signout { display: inline-block; min-height: 30px; padding: 4px 9px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface); color: var(--ink); font: 600 12px/20px var(--font-ui); cursor: pointer; }
@media (max-width: 1100px) { :is(header.chrome, #portal-shell) .asof { display: none; } }
@media (max-width: 900px) {
  :root { --studio-shell-height: 113px; }
  :is(header.chrome, #portal-shell) .wrap.bar { min-height: 112px; padding: 12px 16px; gap: 8px 16px; }
  :is(header.chrome, #portal-shell) .studio-logo { width: 212px; }
  :is(header.chrome, #portal-shell) .tabs { order: 5; flex-basis: 100%; }
  :is(header.chrome, #portal-shell) .tab { min-height: 40px; padding: 8px 16px; }
  :is(header.chrome, #portal-shell) .who-name { margin-left: auto; }
}
@media (max-width: 600px) {
  :is(header.chrome, #portal-shell) .wrap.bar { padding-inline: 14px; }
  :is(header.chrome, #portal-shell) .studio-logo { width: 188px; }
  :is(header.chrome, #portal-shell) .tabs { gap: 4px; }
  :is(header.chrome, #portal-shell) .tab { flex: 1 1 auto; padding-inline: 9px; }
  :is(header.chrome, #portal-shell) .who-name { font-size: 10px; }
  :is(header.chrome, #portal-shell) .who > :not(form) { display: none; }
}
@media print { :is(header.chrome, #portal-shell) { display: none; } }
@media (max-width:380px) {
  :is(header.chrome, #portal-shell) .studio-logo { width:166px; }
  :is(header.chrome, #portal-shell) .tabs { gap:2px; }
  :is(header.chrome, #portal-shell) .tab { font-size:12px; padding-inline:5px; }
}
/* Shared select treatment: space for the text, arrow and outer edge. */
select:not([multiple]):not([size]), .plan-period select, #assign-slot-dialog select,
.ctl select, .fctl select {
  appearance: none;
  -webkit-appearance: none;
  padding-inline: 12px 42px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23727f87' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 13px center;
  background-size: 16px 16px;
  cursor: pointer;
  text-overflow: ellipsis;
}
select:focus-visible { outline: 2px solid var(--focus, var(--link)); outline-offset: 3px; }
select:disabled { cursor: default; opacity: .6; }
@media (forced-colors: active) {
  select:not([multiple]):not([size]), .plan-period select, #assign-slot-dialog select,
  .ctl select, .fctl select { appearance: auto; background-image: none; }
}
.studio-event{display:flex;align-items:center;gap:18px;margin:20px 0;padding:16px 20px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink)}
.studio-event>time{display:grid;justify-items:center;align-content:center;width:58px;min-height:65px;border-radius:10px;flex:none;background:var(--info-tint,#e7eef9);color:var(--link)}
.studio-event>time>span{font-size:10px;line-height:1.2;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.studio-event>time>b{font-size:28px;line-height:1.15;font-weight:650}
.studio-event-copy{min-width:180px}.studio-event-day{display:block;font-size:11px;color:var(--muted-text,var(--ink-2));margin-bottom:5px}.studio-event-copy h2{font-size:17px;font-weight:650;line-height:1.3;margin:0}
.studio-event-links{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.studio-event-links a{display:inline-flex;align-items:center;gap:14px;min-height:38px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:8px;text-decoration:none;color:var(--ink);font-size:11px;font-weight:600}.studio-event-links a:first-child{background:var(--ink);color:var(--surface);border-color:var(--ink)}.studio-event-links a:hover{box-shadow:0 2px 8px #0001}.studio-event-links a:focus-visible{outline:2px solid var(--focus,var(--link));outline-offset:3px}.studio-event-links a>span{font-size:14px;flex:none}
@media(max-width:1100px){.studio-event{flex-wrap:wrap}.studio-event-links{margin-left:76px;width:100%}}
@media(max-width:600px){.studio-event{padding:16px;gap:12px}.studio-event-copy{min-width:0;flex:1}.studio-event-copy h2{font-size:16px}.studio-event-links{margin-left:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.studio-event-links a{justify-content:space-between;font-size:10px;gap:10px;padding:8px 10px}}
@media print{.studio-event{break-inside:avoid}.studio-event-links a{border:0;padding:0}.studio-event-links a:first-child{color:var(--ink);background:none}}
