/* Graphite design tokens (same direction as CREO v2's creo_v2.css):
   flat neutral surfaces, hairline borders, one muted accent for links/focus. */
:root {
  --g-bg: #f7f7f8;
  --g-surface: #ffffff;
  --g-border: #e3e3e6;
  --g-text: #1d1d20;
  --g-muted: #6b6b73;
  --g-accent: #4f5b93;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --g-bg: #151517;
    --g-surface: #1d1d20;
    --g-border: #2e2e33;
    --g-text: #e8e8ec;
    --g-muted: #9a9aa3;
    --g-accent: #9aa5d8;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --g-bg: #151517;
  --g-surface: #1d1d20;
  --g-border: #2e2e33;
  --g-text: #e8e8ec;
  --g-muted: #9a9aa3;
  --g-accent: #9aa5d8;
  color-scheme: dark;
}

html { scrollbar-gutter: stable; }   /* keep the scrollbar's room, so short and long pages (tabs) line up */
body {
  margin: 0;
  background: var(--g-bg);
  color: var(--g-text);
  font: 15px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif;
}
a { color: var(--g-accent); }
.page { max-width: 960px; margin: 0 auto; padding: 32px 16px; }
.muted { color: var(--g-muted); }

/* ---- Phase 1 chrome: top bar, cards, forms, tables, dialogs ---- */
:root { --g-hover: rgba(0, 0, 0, .04); --g-ok: #3f7a5a; --g-bad: #a1483f; --g-warn: #8a6d2b; }
:root[data-theme="dark"] { --g-hover: rgba(255, 255, 255, .05); --g-ok: #7fb596; --g-bad: #d68a82; --g-warn: #cfb06b; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --g-hover: rgba(255, 255, 255, .05); --g-ok: #7fb596; --g-bad: #d68a82; --g-warn: #cfb06b; }
}

h1 { font-size: 22px; font-weight: 600; margin: 0 0 8px; }
h2 { font-size: 16px; font-weight: 600; margin: 28px 0 10px; }
.small { font-size: 13px; }
.warn { color: var(--g-warn); }
.error { color: var(--g-bad); margin: 0; }
code, pre { font: 13px/1.45 ui-monospace, SFMono-Regular, Menlo, monospace; }

.topbar {
  display: flex; align-items: center; gap: 16px; padding: 10px 16px;
  background: var(--g-surface); border-bottom: 1px solid var(--g-border);
}
.brand { font-weight: 650; color: var(--g-text); text-decoration: none; }
.nav { display: flex; gap: 14px; flex: 1; }
.nav a { color: var(--g-muted); text-decoration: none; }
.nav a:hover { color: var(--g-text); }
.who { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.who-org { max-width: 16ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--g-muted); }
.account { position: relative; }
.account > summary { display: inline-flex; align-items: center; gap: 6px; list-style: none; }
.account > summary::-webkit-details-marker { display: none; }
.account > summary svg { width: 16px; height: 16px; flex: none; }
.account-menu {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; width: 250px; display: grid; gap: 2px;
  padding: 6px; background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .12);
}
.account-menu > a, .account-menu button {
  display: flex; justify-content: space-between; align-items: baseline; gap: 8px; width: 100%; text-align: left;
  font: inherit; font-size: 14px; color: var(--g-text); background: none; border: 0; border-radius: 6px;
  padding: 6px 8px; text-decoration: none; cursor: pointer; box-sizing: border-box;
}
.account-menu > a:hover, .account-menu button:hover { background: var(--g-hover); }
.account-menu button[aria-current] { box-shadow: inset 2px 0 0 var(--g-accent); }
.account-who { display: grid; padding: 4px 8px 8px; border-bottom: 1px solid var(--g-border); overflow-wrap: anywhere; }
.account-orgs { display: grid; padding: 6px 0; border-bottom: 1px solid var(--g-border); margin-bottom: 2px; }
.account-orgs > span { padding: 0 8px 2px; }

.card {
  background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px;
  padding: 20px; color: var(--g-text);
}
.card.narrow { max-width: 360px; margin: 48px auto; display: grid; gap: 12px; }
.head-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }

label { display: grid; gap: 4px; font-size: 13px; color: var(--g-muted); }
label.check { display: flex; align-items: center; gap: 8px; }
input, select {
  font: inherit; color: var(--g-text); background: var(--g-bg);
  border: 1px solid var(--g-border); border-radius: 6px; padding: 7px 9px;
}
input:focus, select:focus, .btn:focus-visible { outline: 2px solid var(--g-accent); outline-offset: 1px; }

.btn {
  font: inherit; font-size: 14px; color: var(--g-text); background: var(--g-surface);
  border: 1px solid var(--g-border); border-radius: 6px; padding: 6px 12px; cursor: pointer;
}
a.btn { display: inline-block; text-decoration: none; text-align: center; }
.btn:hover { background: var(--g-hover); }
.btn.primary { background: var(--g-text); color: var(--g-surface); border-color: var(--g-text); }
.btn.primary:hover { opacity: .9; }
.btn.ghost { background: transparent; border-color: transparent; }
.btn.ghost:hover { background: var(--g-hover); }
.btn.small { font-size: 13px; padding: 3px 8px; }
.btn.icon { display: inline-grid; place-items: center; padding: 6px; }
.btn.icon svg { width: 16px; height: 16px; }

.table { width: 100%; border-collapse: collapse; background: var(--g-surface);
         border: 1px solid var(--g-border); border-radius: 8px; }
.table th { text-align: left; font-weight: 500; font-size: 12px; color: var(--g-muted);
            padding: 8px 10px; border-bottom: 1px solid var(--g-border); }
.table td { padding: 8px 10px; border-bottom: 1px solid var(--g-border); vertical-align: top; }
.table tr:last-child td { border-bottom: 0; }
.row-actions { white-space: nowrap; text-align: right; }

.badge { display: inline-block; font-size: 12px; padding: 1px 7px; border-radius: 999px;
         border: 1px solid var(--g-border); color: var(--g-muted); }
.badge.s-success { color: var(--g-ok); border-color: currentColor; }
.badge.s-failed { color: var(--g-bad); border-color: currentColor; }
.badge.s-warn { color: var(--g-warn); border-color: currentColor; }
.badge.s-running, .badge.s-queued { color: var(--g-accent); border-color: currentColor; }

dialog.card { width: min(480px, calc(100vw - 32px)); max-height: calc(100vh - 32px); padding: 20px;
              box-sizing: border-box; overflow: auto; }
dialog input, dialog select { width: 100%; min-width: 0; box-sizing: border-box; }
dialog label.check input { width: auto; }
dialog.card.wide { width: min(860px, calc(100vw - 32px)); }
dialog::backdrop { background: rgba(0, 0, 0, .35); }
dialog form { display: grid; gap: 10px; }
dialog h2 { margin-top: 0; }
.actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.log { background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 6px;
       padding: 10px; max-height: 55vh; overflow: auto; white-space: pre-wrap; margin: 0; }

/* Phone width: tables become stacked cards, labelled from data-label. */
@media (max-width: 640px) {
  .table.stack thead { display: none; }
  .table.stack, .table.stack tbody, .table.stack tr, .table.stack td { display: block; width: 100%; box-sizing: border-box; }
  .table.stack tr { border-bottom: 1px solid var(--g-border); padding: 6px 0; }
  .table.stack tr:last-child { border-bottom: 0; }
  .table.stack td { border: 0; padding: 3px 12px; }
  .table.stack td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; color: var(--g-muted); }
  .row-actions { text-align: left; white-space: normal; }
  .who-org { display: none; }
  .account-menu { position: fixed; right: 16px; top: 52px; width: min(280px, calc(100vw - 32px)); }
}

/* ---- Companies: search, profile, tags ---- */
.page.wide, .page:has(.split), .page:has(#results) { max-width: 1180px; }
h3 { font-size: 13px; font-weight: 600; margin: 16px 0 6px; color: var(--g-muted); text-transform: uppercase; letter-spacing: .03em; }
.searchbar { display: flex; gap: 8px; align-items: center; margin: 12px 0; flex-wrap: wrap; }
.searchbar input[type=search] { flex: 1 1 280px; min-width: 0; }
.seg { display: inline-flex; border: 1px solid var(--g-border); border-radius: 6px; overflow: hidden; }
.seg label { display: block; color: var(--g-text); font-size: 13px; }
.seg input { position: absolute; opacity: 0; pointer-events: none; }
.seg span { display: block; padding: 6px 10px; cursor: pointer; }
.seg span span { display: inline; padding: 0; }   /* a count inside a label */
.seg input:checked + span { background: var(--g-hover); font-weight: 600; }
.seg input:focus-visible + span { outline: 2px solid var(--g-accent); outline-offset: -2px; }
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.filters select { font-size: 13px; padding: 5px 8px; max-width: 220px; }
.pager { display: flex; justify-content: center; align-items: center; gap: 12px; margin: 14px 0; }
.clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--g-muted); }
#results td:first-child { max-width: 360px; }

.company-head h1 { margin-bottom: 2px; }
.split { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.split aside { display: grid; gap: 16px; }
.split aside h2 { margin-top: 0; }
.claims { padding-left: 18px; }
.claims li { margin: 4px 0; }
ul.plain { list-style: none; padding: 0; margin: 0; }
ul.plain li { padding: 4px 0; border-bottom: 1px solid var(--g-border); }
ul.plain li:last-child { border-bottom: 0; }

.tagrow { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px; padding: 8px 0; border-top: 1px solid var(--g-border); }
.taglabel { font-size: 12px; color: var(--g-muted); display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.taglabel .btn { padding: 0 4px; font-size: 12px; color: var(--g-accent); }
.lenshead { margin-top: 18px; }
.tag { display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 4px; margin: 2px 4px 2px 0; padding: 2px 8px;
       border: 1px solid var(--g-border); border-radius: 999px; font-size: 13px; background: var(--g-surface); }
.tag.primary { border-color: var(--g-accent); }
.tag .why { font-size: 12px; }
.tag .why summary { cursor: pointer; color: var(--g-muted); list-style: none; display: inline; }
.tag .why summary::-webkit-details-marker { display: none; }
.tag .why[open] { flex-basis: 100%; }
.tag .x { border: 0; background: none; color: var(--g-muted); cursor: pointer; font-size: 14px; padding: 0 2px; }
.chips { display: flex; flex-wrap: wrap; gap: 4px; min-height: 28px; }
.picklist { list-style: none; padding: 0; margin: 0; max-height: 40vh; overflow: auto; border: 1px solid var(--g-border); border-radius: 6px; }
.picklist li + li { border-top: 1px solid var(--g-border); }
.picklist button { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 8px 10px;
                   color: var(--g-text); cursor: pointer; font: inherit; }
.picklist button:hover, .picklist button:focus-visible { background: var(--g-hover); }

@media (max-width: 640px) {
  .tagrow { grid-template-columns: minmax(0, 1fr); }
  .taglabel { flex-direction: row; align-items: center; gap: 8px; }
  #results td:first-child { max-width: none; }
}

/* Narrow screens: the nav gets its own row and scrolls sideways instead of pushing the bar wider. */
@media (max-width: 640px) {
  .topbar { flex-wrap: wrap; row-gap: 6px; }
  .nav { order: 3; flex: 1 0 100%; overflow-x: auto; white-space: nowrap; scrollbar-width: none; padding-bottom: 2px; }
  .nav::-webkit-scrollbar { display: none; }
}

/* ---- Assistant panel (J9) ---- */
.ai-fab { position: fixed; right: 20px; bottom: 20px; width: 44px; height: 44px; border-radius: 50%;
          border: 1px solid var(--g-border); background: var(--g-surface); color: var(--g-accent); font-size: 20px;
          cursor: pointer; box-shadow: 0 2px 10px rgba(0, 0, 0, .12); z-index: 40; }
.ai-fab:hover { background: var(--g-hover); }
/* "Chat with this document" (D86): a pill beside the assistant button. */
.ai-doc-fab { position: fixed; right: 74px; bottom: 24px; height: 36px; padding: 0 14px; border-radius: 18px;
              border: 1px solid var(--g-border); background: var(--g-surface); color: var(--g-text); font: inherit;
              font-size: 13px; cursor: pointer; box-shadow: 0 2px 10px rgba(0, 0, 0, .12); z-index: 40; }
.ai-doc-fab::before { content: "✦"; color: var(--g-accent); margin-right: 6px; }
.ai-doc-fab:hover { background: var(--g-hover); }
.ai-doc-fab[hidden] { display: none; }
.ai-panel { position: fixed; right: 16px; bottom: 16px;
            width: min(var(--ai-w, 420px), calc(100vw - 32px)); height: min(var(--ai-h, 640px), calc(100vh - 32px));
            display: flex; flex-direction: column; background: var(--g-surface); color: var(--g-text);
            border: 1px solid var(--g-border); border-radius: 10px; box-shadow: 0 6px 30px rgba(0, 0, 0, .18); z-index: 50; }
.ai-panel[hidden] { display: none; }
.ai-panel.max { width: min(1100px, calc(100vw - 32px)); height: calc(100vh - 32px); }
/* Resize grips on the free edges (the panel is anchored bottom right). */
.ai-grip { position: absolute; z-index: 2; touch-action: none; }
.ai-grip-w { left: -4px; top: 12px; bottom: 12px; width: 8px; cursor: ew-resize; }
.ai-grip-n { top: -4px; left: 12px; right: 12px; height: 8px; cursor: ns-resize; }
.ai-grip-nw { left: -5px; top: -5px; width: 16px; height: 16px; cursor: nwse-resize; }
.ai-grip-w:hover, .ai-panel.resizing .ai-grip-w { box-shadow: inset 2px 0 0 var(--g-accent); }
.ai-grip-n:hover, .ai-panel.resizing .ai-grip-n { box-shadow: inset 0 2px 0 var(--g-accent); }
.ai-panel.resizing { user-select: none; }
.ai-panel.max .ai-grip { display: none; }
.ai-export { position: relative; }
.ai-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 3; min-width: 200px; max-width: 280px;
           display: grid; padding: 4px; background: var(--g-surface); border: 1px solid var(--g-border);
           border-radius: 8px; box-shadow: 0 6px 20px rgba(0, 0, 0, .14); }
.ai-menu[hidden] { display: none; }
.ai-menu a, .ai-menu button { display: block; text-align: left; padding: 7px 10px; border: 0; border-radius: 6px;
                              background: none; color: var(--g-text); font: inherit; font-size: 13px;
                              text-decoration: none; cursor: pointer; overflow-wrap: anywhere; }
.ai-menu a:hover, .ai-menu button:hover:not(:disabled) { background: var(--g-hover); }
.ai-menu [aria-disabled], .ai-menu button:disabled { color: var(--g-muted); cursor: default; pointer-events: none; }
.ai-menu p { margin: 2px 10px 4px; }
.ai-head { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--g-border); }
.ai-ctx { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-tools { display: flex; gap: 2px; }
.ai-list { padding: 8px 12px; border-bottom: 1px solid var(--g-border); max-height: 40%; overflow: auto; }
.ai-list input { width: 100%; box-sizing: border-box; margin-bottom: 6px; }
.ai-log { flex: 1; overflow: auto; padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.ai-msg { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.ai-msg p { margin: 0 0 6px; }
.ai-msg ul, .ai-msg ol { margin: 0 0 6px; padding-left: 20px; }
.ai-user { align-self: flex-end; max-width: 85%; background: var(--g-bg); border: 1px solid var(--g-border);
           border-radius: 10px; padding: 6px 10px; white-space: pre-wrap; }
.ai-assistant { max-width: 100%; }
.ai-status { font-size: 12px; color: var(--g-muted); }
.ai-error { font-size: 13px; color: var(--g-bad); }
.ai-proposal { border: 1px solid var(--g-accent); border-radius: 8px; padding: 10px; }
.ai-proposal .actions { margin-top: 4px; }
.ai-table { overflow-x: auto; }
.ai-table .table { font-size: 13px; }
/* Words in table cells wrap at spaces, never mid-word; a wide table scrolls instead. */
.ai-table th, .ai-table td { overflow-wrap: normal; word-break: normal; min-width: 4.5em; }
.ai-table th { white-space: nowrap; }
.ai-ideas { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 10px 0; max-height: 30%; overflow: auto; }
.ai-ideas[hidden] { display: none; }
.ai-idea { font: inherit; font-size: 12.5px; line-height: 1.3; text-align: left; padding: 5px 10px; border-radius: 14px;
           border: 1px solid var(--g-border); background: var(--g-bg); color: var(--g-text); cursor: pointer; }
.ai-idea:hover { border-color: var(--g-accent); }
.ai-form { display: flex; gap: 8px; padding: 10px; border-top: 1px solid var(--g-border); }
.ai-form textarea { flex: 1; resize: none; font: inherit; color: var(--g-text); background: var(--g-bg);
                    border: 1px solid var(--g-border); border-radius: 6px; padding: 7px 9px; min-width: 0; }
.ai-form textarea:focus { outline: 2px solid var(--g-accent); outline-offset: 1px; }
@media (max-width: 640px) {
  .ai-panel, .ai-panel.max { inset: 0; width: 100%; height: 100%; border-radius: 0; border: 0; }
  .ai-max, .ai-grip { display: none; }
  .ai-fab { right: 14px; bottom: 14px; }
  .ai-doc-fab { right: 66px; bottom: 18px; }
}

/* ---- Charts (uPlot, D28; report figures, D82). Series colours: the validated categorical order, per mode
   (light: three slots below 3:1, so charts always carry a legend and a table view). ---- */
:root { --g-series-1: #2a78d6; --g-series-2: #eb6834; --g-series-3: #1baf7a; --g-series-4: #eda100; --g-series-5: #e87ba4;
        --g-series-6: #008300; --g-series-7: #6250d6; --g-series-8: #e34948; --g-grid: rgba(0, 0, 0, .07); }
:root[data-theme="dark"] { --g-series-1: #3987e5; --g-series-2: #d95926; --g-series-3: #199e70; --g-series-4: #c98500;
        --g-series-5: #d55181; --g-series-6: #008300; --g-series-7: #9085e9; --g-series-8: #e66767; --g-grid: rgba(255, 255, 255, .08); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --g-series-1: #3987e5; --g-series-2: #d95926; --g-series-3: #199e70; --g-series-4: #c98500;
        --g-series-5: #d55181; --g-series-6: #008300; --g-series-7: #9085e9; --g-series-8: #e66767; --g-grid: rgba(255, 255, 255, .08); }
}
.chart { position: relative; width: 100%; }
.chart .u-legend { display: none; }
.chart-tip { position: absolute; pointer-events: none; background: var(--g-surface); color: var(--g-text);
             border: 1px solid var(--g-border); border-radius: 6px; padding: 4px 8px; font-size: 12px;
             box-shadow: 0 2px 8px rgba(0, 0, 0, .12); white-space: nowrap; z-index: 2; }
.chart-tip .sw { display: inline-block; width: 10px; height: 2px; vertical-align: middle; margin-right: 4px; }
.chart-bar { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.chart-legend { display: flex; gap: 12px; font-size: 12px; color: var(--g-muted); }
.chart-legend .sw { display: inline-block; width: 14px; height: 2px; vertical-align: middle; margin-right: 4px; }
.ranges { display: inline-flex; gap: 2px; }
.ranges .btn { padding: 2px 8px; font-size: 12px; }
.ranges .btn[aria-pressed="true"] { background: var(--g-hover); font-weight: 600; }
.stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin: 10px 0; }
.stat { border: 1px solid var(--g-border); border-radius: 8px; padding: 8px 10px; }
.stat .k { font-size: 12px; color: var(--g-muted); }
.stat .v { font-size: 17px; font-weight: 600; }
.up { color: var(--g-ok); } .down { color: var(--g-bad); }

/* ---- Themes: tabs and funding bars ---- */
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--g-border); margin: 22px 0 12px; overflow-x: auto; }
.tab { border: 0; background: none; padding: 8px 12px; font: inherit; color: var(--g-muted); cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; }
.tab[aria-selected="true"] { color: var(--g-text); border-bottom-color: var(--g-text); font-weight: 600; }
.bars { display: flex; align-items: flex-end; gap: 2px; height: 160px; padding-bottom: 34px; position: relative; }
.bar-col { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; position: relative; outline: none; }
.bar { width: min(28px, 70%); background: var(--g-series-1); border-radius: 4px 4px 0 0; }
.bar-x { position: absolute; bottom: -32px; font-size: 11px; color: var(--g-muted); text-align: center; line-height: 1.2; }
.bar-col:hover::after, .bar-col:focus::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 4px); left: 50%; transform: translateX(-50%);
  background: var(--g-surface); color: var(--g-text); border: 1px solid var(--g-border); border-radius: 6px; padding: 3px 8px; font-size: 12px; white-space: nowrap; z-index: 3; }
.bar-col:hover .bar, .bar-col:focus .bar { outline: 2px solid var(--g-surface); box-shadow: 0 0 0 3px var(--g-series-1); }

.notice { border-left: 2px solid var(--g-accent); background: var(--g-hover); padding: 6px 10px; border-radius: 0 6px 6px 0; }
.hbar-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 8px 32px; margin-top: 18px; }
.hbar-grid h3 { font-size: 13px; margin: 0 0 6px; color: var(--g-muted); font-weight: 600; }
.hbars { display: grid; gap: 4px; }
.hbar-row { display: grid; grid-template-columns: minmax(70px, 110px) 1fr auto; gap: 8px; align-items: center; font-size: 13px; }
.hbar-k { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hbar-track { height: 10px; }
.hbar { display: block; height: 100%; background: var(--g-series-1); border-radius: 0 4px 4px 0; }
.hbar-v { font-variant-numeric: tabular-nums; white-space: nowrap; }

.stat .v select { font-size: 14px; font-weight: 500; padding: 4px 6px; max-width: 100%; }

/* ---- Filings ---- */
.linkish { background: none; border: 0; padding: 0; font: inherit; color: var(--g-accent); cursor: pointer; text-align: left; }
.linkish:hover, .linkish:focus-visible { text-decoration: underline; }
.filters label.check { white-space: nowrap; }
.filters label.check input { width: auto; }

/* ---- Signals ---- */
.signal-list { display: grid; gap: 8px; }
.signal { border: 1px solid var(--g-border); border-radius: 8px; padding: 10px 12px; background: var(--g-surface); }
.signal.dim { opacity: .6; }
.signal p { margin: 6px 0; }
.signal-head { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.signal-score { margin-left: auto; font-variant-numeric: tabular-nums; }
.signal-actions { display: flex; flex-wrap: wrap; gap: 4px; }
.signal-actions [aria-pressed="true"] { border-color: var(--g-accent); color: var(--g-accent); }
.signal-why ul { margin: 6px 0; padding-left: 18px; }
.nowrap { white-space: nowrap; }

/* `hidden` wins over component display rules (e.g. label.check in a dialog). */
[hidden] { display: none !important; }

/* ---- Home dashboard ---- */
.page:has(.dash) { max-width: 1180px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.dash-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.dash-head h1 { margin: 0; }
.dash-head p { margin: 2px 0 0; }
.dash-tools { display: flex; gap: 8px; align-items: center; }
.dash-search { display: flex; gap: 8px; margin: 16px 0 12px; }
.dash-search input { flex: 1; min-width: 0; }
.dash-health { margin: 0 0 12px; color: var(--g-muted); line-height: 1.7; }
.pulse { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 10px; margin-bottom: 18px; }
.pulse-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.pulse .stat { background: var(--g-surface); }
.pulse .stat .v { font-size: 22px; font-variant-numeric: tabular-nums; }
.pulse details { margin-top: 4px; }
.trend { color: var(--g-text); font-variant-numeric: tabular-nums; }
.bars.mini { height: 92px; padding-bottom: 20px; margin-top: 8px; }
.bars.mini .bar-x { bottom: -18px; white-space: nowrap; }
.bars.mini .bar-col:first-child .bar-x { left: 0; }
.bars.mini .bar-col:last-child .bar-x { right: 0; }
.bar.partial { opacity: .45; }
.dash-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.dash-col { display: grid; gap: 16px; }
.panel { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 14px 16px; }
.panel-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.panel-head h2 { margin: 0; }
.panel .table { border: 0; border-radius: 0; }
.panel .table th:first-child, .panel .table td:first-child { padding-left: 0; }
.panel .table th:last-child, .panel .table td:last-child { padding-right: 0; }
.dash-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.mine { color: var(--g-accent); }
.feed { list-style: none; margin: 0; padding: 0; }
.feed li { padding: 8px 0; border-bottom: 1px solid var(--g-border); }
.feed li:first-child { padding-top: 0; }
.feed li:last-child { border-bottom: 0; padding-bottom: 0; }
.feed-head { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 3px; }
.clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 14px; }
.theme-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.theme-card { border-bottom: 1px solid var(--g-border); padding-bottom: 10px; display: grid; gap: 4px; }
.theme-card:last-child { border-bottom: 0; padding-bottom: 0; }
.theme-card-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.badge.todo { margin-left: auto; color: var(--g-accent); border-color: currentColor; text-decoration: none; }
.theme-perf { display: flex; align-items: center; gap: 12px; font-variant-numeric: tabular-nums; }
.spark { width: 140px; height: 32px; flex: none; }
.row-split { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
@media (max-width: 860px) {
  .pulse, .dash-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .hide-sm { display: none; }
  .pulse .stat .v { font-size: 18px; }
  .row-split { flex-wrap: wrap; }
}

/* ---- Library ---- */
.page:has(.lib), .page:has(.doc-head) { max-width: 1180px; }
.lib-upload { display: grid; gap: 12px; margin: 12px 0 8px; }
.drop { display: grid; gap: 4px; justify-items: center; text-align: center; padding: 22px 12px; cursor: pointer;
        border: 1px dashed var(--g-border); border-radius: 8px; color: var(--g-text); }
.drop:hover, .drop.over { border-color: var(--g-accent); background: var(--g-hover); }
.drop input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.drop:focus-within { outline: 2px solid var(--g-accent); outline-offset: 1px; }
.lib-options { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
.lib-company { position: relative; flex: 1 1 240px; min-width: 0; display: flex; gap: 6px; align-items: center; }
.lib-company input { flex: 1; min-width: 0; }
.lib-company .picklist { position: absolute; top: 100%; left: 0; right: 0; z-index: 5; background: var(--g-surface); }
#uploads:empty { display: none; }
/* The tag filter: a picker in the search bar, chosen tags as chips under it, a document's tags on its row. */
.lib-tagpick { position: relative; flex: 0 1 220px; min-width: 0; }
.lib-tagpick input { width: 100%; box-sizing: border-box; }
.lib-tagpick .picklist { position: absolute; top: calc(100% + 2px); left: 0; z-index: 5; min-width: 100%; width: max-content;
                         max-width: min(440px, calc(100vw - 32px)); background: var(--g-surface); }
@media (max-width: 640px) {   /* the picker sits on the right of its row: open the list leftwards */
  .lib-tagpick .picklist { left: auto; right: 0; }
}
.lib-tags { margin: -4px 0 12px; align-items: center; }
.lib-tags .tag { gap: 6px; align-items: center; }
.row-tags { display: flex; flex-wrap: wrap; margin-top: 4px; }
button.tag, a.tag { font: inherit; color: var(--g-text); cursor: pointer; text-decoration: none; }
button.tag:hover, a.tag:hover { border-color: var(--g-accent); }
.tag.small { font-size: 12px; padding: 1px 7px; }
#uploads li { padding: 6px 0; }
/* Browse as cards: the first page on top (the file type when there is none), then meta, title, intro, tags. */
.lib-docs-head { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin: 18px 0 10px; }
.lib-docs-head h2 { margin: 0; }
.lib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; margin-bottom: 12px; }
.lib-card { display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--g-border); border-radius: 8px;
            background: var(--g-surface); overflow: hidden; }
.lib-card:hover { border-color: var(--g-accent); }
.lib-cover { position: relative; display: grid; place-items: center; aspect-ratio: 16 / 10; background: var(--g-hover);
             border-bottom: 1px solid var(--g-border); color: var(--g-muted); font-size: 13px; letter-spacing: .06em;
             text-decoration: none; overflow: hidden; }
.lib-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; }
.lib-card-body { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px 12px; flex: 1; min-width: 0; }
.lib-card-body h3 { margin: 0; font-size: 15px; line-height: 1.3; overflow-wrap: anywhere; }
.lib-card-body h3 a { color: var(--g-text); text-decoration: none; }
.lib-card-body h3 a:hover { text-decoration: underline; }
.lib-card-body p { margin: 0; color: var(--g-muted); line-height: 1.45; }
.lib-card .badges { display: flex; flex-wrap: wrap; gap: 4px; }
.lib-card .row-tags { margin-top: 0; gap: 4px; }
.lib-card-by { margin-top: auto; padding-top: 2px; }
.lib-card-by:empty { display: none; }
.clamp-4 { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.lib-recent li { padding: 8px 0; border-bottom: 1px solid var(--g-border); gap: 12px; }
.lib-recent li > span:first-child { min-width: 0; }
.passages { display: grid; gap: 8px; margin-bottom: 8px; }
.passage { border: 1px solid var(--g-border); border-radius: 8px; padding: 10px 12px; background: var(--g-surface); }
.passage p { margin: 6px 0 0; white-space: pre-line; }
.clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.doc-head { align-items: flex-start; flex-wrap: wrap; }
.doc-head h1 { overflow-wrap: anywhere; }
.doc-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.doc-links { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
.doc-find input { width: 100%; box-sizing: border-box; }
.find-hits { margin-top: 8px; }
.find-hits li { padding: 6px 0; }
.doc-main { min-width: 0; }
.doc-main > h2:first-child, .doc-cover + h2 { margin-top: 0; }
.doc-summary { line-height: 1.6; }
/* The first page, as the document's face; it opens the page viewer. */
.doc-cover { margin: 8px 0 20px; }
.doc-cover > button { display: block; width: 100%; padding: 0; border: 1px solid var(--g-border); border-radius: 8px;
                      overflow: hidden; background: var(--g-hover); cursor: zoom-in; }
.doc-cover > button:focus-visible { outline: 2px solid var(--g-accent); outline-offset: 2px; }
.doc-cover img { display: block; width: 100%; max-height: 70vh; object-fit: contain; }
.doc-cover figcaption { margin-top: 6px; }
dialog.page-viewer { width: min(1200px, calc(100vw - 32px)); max-height: calc(100vh - 32px); padding: 0; border: 1px solid var(--g-border);
                     border-radius: 10px; background: var(--g-surface); color: var(--g-text); display: none; flex-direction: column; }
dialog.page-viewer[open] { display: flex; }
.pv-bar { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--g-border); flex-wrap: wrap; }
.pv-bar #pv-label { min-width: 96px; text-align: center; }
.pv-bar #pv-open { margin-left: auto; }
.pv-bar form { display: block; }
.pv-body { overflow-y: auto; padding: 14px; display: grid; gap: 12px; }
.pv-image:empty { display: none; }
.pv-image img { display: block; width: 100%; height: auto; max-height: calc(100vh - 140px); object-fit: contain; background: var(--g-hover);
                border-radius: 6px; }
.pv-text summary { cursor: pointer; }
.pv-text .doc-text { margin-top: 8px; }
.doc-text { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.doc-text p { margin: 6px 0; }
.doc-text ul, .doc-text ol { margin: 6px 0; padding-left: 20px; }
.doc-text .ai-table { overflow-x: auto; }
.doc-text .table { font-size: 13px; }
.facts { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; margin: 0; }
.facts dt { color: var(--g-muted); }
.facts dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 860px) {
  .split { grid-template-columns: minmax(0, 1fr); }
}

/* ---- Deals ---- */
/* The board and the opportunity grid use the whole screen; a deal's own page keeps a reading width. */
.page:has(.deals), .page:has(.opps) { max-width: none; padding: 24px 24px 32px; }
.page:has(.deal) { max-width: 1240px; }
textarea { font: inherit; color: var(--g-text); background: var(--g-bg); border: 1px solid var(--g-border);
           border-radius: 6px; padding: 7px 9px; width: 100%; box-sizing: border-box; resize: vertical; }
textarea:focus { outline: 2px solid var(--g-accent); outline-offset: 1px; }
.pre { white-space: pre-line; overflow-wrap: anywhere; margin: 0 0 6px; }
.deals-head { align-items: flex-start; flex-wrap: wrap; }
.deals-head p { margin: 0; }
.board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; align-items: start; margin-top: 8px; }
.board-col { background: var(--g-hover); border: 1px solid var(--g-border); border-radius: 8px; padding: 10px; min-height: 120px; }
.board-col h2 { margin: 0 0 8px; font-size: 14px; }
.board-col.drop-target, .board-closed.drop-target { border-color: var(--g-accent); }
.board-cards { display: grid; gap: 8px; }
/* Wide screens: a busy column lays its cards out two across rather than growing a long scroll. */
@media (min-width: 1700px) {
  .board-col .board-cards { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
}
.board-empty { margin: 4px 2px; }
.deal-card { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 10px 12px;
             display: grid; gap: 4px; overflow-wrap: anywhere; }
.deal-card[draggable="true"] { cursor: grab; }
.deal-card.dragging { opacity: .5; }
.deal-card-foot { display: flex; justify-content: space-between; align-items: center; gap: 6px; margin-top: 2px; }
.deal-move { font-size: 12px; padding: 2px 4px; max-width: 120px; }
.closed { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; margin-top: 14px; }
.board-closed { border: 1px solid var(--g-border); border-radius: 8px; padding: 8px 10px; background: var(--g-surface); }
.board-closed summary { cursor: pointer; }
.closed-cards { margin-top: 8px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.import-table { max-height: 45vh; overflow: auto; }
.df-company { border: 0; padding: 0; margin: 0; display: grid; gap: 6px; min-width: 0; }
.df-company .picklist { margin-top: 4px; }
.df-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.deal-round { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.deal-round label.wide { grid-column: 1 / -1; }
.deal-round label > span a { margin-left: 4px; }
.deal-meta { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) minmax(0, .8fr); gap: 10px; margin-top: 8px; }
.deal-meta span { color: var(--g-text); }
.note-form { display: grid; gap: 6px; margin-bottom: 10px; justify-items: start; }
.note-form .actions { justify-self: end; margin-top: 0; }
.notes li { padding: 8px 0; }
.history li { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.pipe-stages { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.deal-card.overdue { border-left: 3px solid var(--g-warn); }

/* Deal timeline (D57): one step per open stage, a line through the dots; stacked on phones. */
.timeline { margin: 12px 0 18px; }
.timeline > p { margin: 6px 0 0; }
.tl { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0; }
.tl-step { position: relative; padding: 0 12px 0 0; display: grid; gap: 3px; align-content: start; }
.tl-head { display: flex; align-items: center; gap: 8px; }
.tl-head::after { content: ""; flex: 1; height: 1px; background: var(--g-border); margin-left: 4px; }
.tl-step:last-child .tl-head::after { display: none; }
.tl-dot { position: relative; z-index: 1; width: 11px; height: 11px; border-radius: 50%; flex: none;
          background: var(--g-surface); border: 2px solid var(--g-border); box-sizing: border-box; }
.tl-step.done .tl-dot { background: var(--g-muted); border-color: var(--g-muted); }
.tl-step.current .tl-dot { background: var(--g-accent); border-color: var(--g-accent); }
.tl-step.overdue .tl-dot { background: var(--g-warn); border-color: var(--g-warn); }
.tl-step.skipped { color: var(--g-muted); }
.tl-step.skipped .tl-dot { border-color: var(--g-muted); opacity: .5; }
.tl-step.planned strong, .tl-step.skipped strong { font-weight: 500; }
.tl-step .tl-head strong { font-size: 14px; }
.tl-step > .small, .tl-due { padding-left: 19px; }
.tl-due { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--g-muted); flex-wrap: wrap; }
.tl-due input { font-size: 13px; padding: 2px 4px; }
.links li { padding: 6px 0; }
.link-form { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.2fr) auto; gap: 6px; margin: 8px 0 4px; }
@media (max-width: 640px) {
  .tl { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .tl-head::after { display: none; }
  .link-form { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 960px) {
  .board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .page:has(.deals), .page:has(.opps) { padding: 20px 16px; }
}
@media (max-width: 640px) {
  .board, .closed, .df-row, .deal-round, .deal-meta { grid-template-columns: minmax(0, 1fr); }
  .board-col { min-height: 0; }
}
.deal .table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pipeline-btn { margin-left: 4px; }
.deal .split aside > * { min-width: 0; }
.deal .ai-table { overflow-x: auto; }

/* ---- Taxonomy ---- */
.page:has(.tax) { max-width: 1180px; }
.tax-layout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 24px; align-items: start; margin-top: 12px; }
.tax-nav { position: sticky; top: 12px; }
.tax-nav h3:first-child { margin-top: 0; }
.tax-nav a[aria-current="page"] { font-weight: 600; color: var(--g-text); }
.tax-main h2 { margin-top: 0; }
.tax-filter { width: min(320px, 100%); box-sizing: border-box; }
.tax-values > li { padding: 8px 0 8px calc(var(--depth, 0) * 18px); }
.tax-values .small + .small { margin-top: 2px; }
.tax-gate { margin: 12px 0; }
.tax-gate h3 { margin-top: 0; }
.tax-gate p { margin: 4px 0; }
.tax-facet { margin-top: 18px; }
.tax-facet > .small { margin: 0 0 4px; }
.tax-edit-row { padding: 10px 0; }
.tax-edit-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 8px; }
.tax-edit-grid .wide { grid-column: 1 / -1; }
.tax-edit-grid input, .tax-edit-grid textarea, #editor > label input, #editor > label textarea { width: 100%; box-sizing: border-box; }
#editor { display: grid; gap: 10px; }
#editor input[readonly] { color: var(--g-muted); }
.tax-retag { margin-bottom: 16px; }
.diff { background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 6px; padding: 10px; max-height: 50vh;
        overflow: auto; font-size: 12px; white-space: pre; }
.diff .add { color: var(--g-ok); }
.diff .del { color: var(--g-bad); }
.lens-others li { padding: 4px 0; }
.lenshead a { color: inherit; text-decoration: none; }
.lenshead .btn { text-transform: none; letter-spacing: 0; font-weight: 400; }
@media (max-width: 760px) {
  .tax-layout { grid-template-columns: minmax(0, 1fr); }
  .tax-nav { position: static; }
  .tax-nav ul.plain { display: flex; flex-wrap: wrap; gap: 4px 12px; }
  .tax-nav ul.plain li { border: 0; padding: 2px 0; }
  .tax-edit-grid { grid-template-columns: minmax(0, 1fr); }
}
#check-form { grid-template-columns: minmax(0, 1fr); }
#check-form .diff { width: 100%; box-sizing: border-box; }
.tax-main .head-row { flex-wrap: wrap; }
.tax-main .head-row .tax-filter { flex: 1 1 200px; max-width: 320px; }
.tax-value { overflow-wrap: anywhere; }

/* ---- Dealflow: tabs and the opportunity flow ---- */
.tabs { display: flex; gap: 16px; margin: 2px 0 6px; }
.tabs a { color: var(--g-muted); text-decoration: none; padding-bottom: 2px; border-bottom: 2px solid transparent; }
.tabs a[aria-current="page"] { color: var(--g-text); border-bottom-color: var(--g-accent); }
.view-seg { flex-wrap: wrap; margin: 10px 0 0; }
.opp-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr)); gap: 14px;
            margin-top: 12px; }
.opp { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 14px 16px;
       display: flex; flex-direction: column; gap: 10px; overflow-wrap: anywhere; scroll-margin-top: 12px; min-width: 0; }
.opp-head { display: grid; gap: 4px; }
.opp-head .badges { display: flex; flex-wrap: wrap; gap: 4px; }
.opp-head .badges:not(:has(.badge)) { display: none; }
.opp.hit { border-color: var(--g-accent); }
.opp h2 { margin: 0; font-size: 17px; line-height: 1.3; }
.opp p { margin: 0; }
.opp-terms { color: var(--g-text); font-weight: 600; }
.opp-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; }
.opp-foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px;
            border-top: 1px solid var(--g-border); padding-top: 10px; margin-top: auto; }
.opp-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.opp-assign { font-size: 13px; padding: 3px 6px; max-width: 160px; }
.stars { display: inline-flex; }
.star { background: none; border: 0; padding: 0 1px; font-size: 18px; line-height: 1; cursor: pointer; color: var(--g-muted); }
.star.on { color: var(--g-accent); }
.star:disabled { cursor: default; }
.star:focus-visible { outline: 2px solid var(--g-accent); border-radius: 3px; }
.badge.house { color: var(--g-accent); border-color: currentColor; }
.view-seg span { white-space: nowrap; }
.opp-one { font-size: 15px; line-height: 1.45; }
.opp-tags { display: flex; flex-wrap: wrap; gap: 0; }
.opp-tags .tag { font-size: 12px; }
.tag.lens { border-style: dashed; }
/* The ask as a small grid of terms: label above value, so amounts line up and scan. */
.opp-ask { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px 12px; margin: 0;
           padding: 10px 12px; background: var(--g-hover); border-radius: 6px; }
.opp-ask div { min-width: 0; }
.opp-ask dt { color: var(--g-muted); font-size: 12px; }
.opp-ask dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.opp-ask dd a { font-size: 12px; font-weight: 400; }
.opp .opp-ask dd { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }   /* in full in the brief */
/* The deck's first page on a card: its title slide, usually the logo. */
.opp-cover { display: block; margin: -14px -16px 0; border-bottom: 1px solid var(--g-border); border-radius: 8px 8px 0 0;
             overflow: hidden; background: var(--g-hover); aspect-ratio: 16 / 9; }
.opp-cover img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
.opp-meta .btn { margin-right: 4px; }

/* The brief: a modal with the header and terms on top, sections two across, highlights and questions full width. */
dialog.brief-dialog { width: min(980px, calc(100vw - 32px)); padding: 0; display: none; flex-direction: column; }
dialog.brief-dialog[open] { display: flex; }
.brief-body { overflow-y: auto; padding: 24px 28px; display: grid; gap: 18px; }
.brief-head { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 20px; align-items: start; }
.brief-head h2 { margin: 0 0 6px; font-size: 22px; }
.brief-head .badges { display: flex; gap: 4px; flex-wrap: wrap; }
.brief-head .badges:not(:has(.badge)) { display: none; }
.brief-head p { margin: 8px 0 0; }
.brief-cover { display: block; border: 1px solid var(--g-border); border-radius: 6px; overflow: hidden; aspect-ratio: 16 / 9;
               background: var(--g-hover); }
.brief-cover img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
.brief-one { font-size: 16px; line-height: 1.45; }
.brief-summary { margin: 0; line-height: 1.6; }
.brief-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 28px;
              border-top: 1px solid var(--g-border); padding-top: 18px; }
.brief-grid section { min-width: 0; }
.brief-grid section.wide { grid-column: 1 / -1; }
.brief-grid h3 { margin: 0 0 4px; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
                 color: var(--g-muted); }
.brief-grid p { margin: 0; line-height: 1.55; }
.brief-grid ul { margin: 0; padding-left: 18px; line-height: 1.55; }
.brief-grid li + li { margin-top: 3px; }
.brief-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap;
              padding: 12px 28px; border-top: 1px solid var(--g-border); }
.brief-foot form { display: block; margin-left: auto; }
.brief-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
@media (max-width: 640px) {
  .brief-body { padding: 18px 16px; }
  .brief-foot { padding: 10px 16px; }
  .brief-head, .brief-grid { grid-template-columns: minmax(0, 1fr); }
  .brief-head .brief-cover { max-width: 280px; }
}

/* Timing (D56): is the raise still open? Plain text with a small mark; past raises fade. */
.timing { display: inline-flex; align-items: center; gap: 6px; }
.timing::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--g-muted); flex: none; }
.timing.upcoming { color: var(--g-text); font-weight: 600; }
.timing.upcoming::before { background: var(--g-ok); }
.timing.recent::before { background: var(--g-accent); }
.timing.past { color: var(--g-warn); }
.timing.past::before { background: var(--g-warn); }
.timing.unknown { color: var(--g-muted); }
.timing .muted { font-weight: 400; }

/* Company profile: documents that only name the company, folded away (D52) */
#company-docs details { margin-top: 8px; }
#company-docs summary { cursor: pointer; }

/* Admin console (D74): a section list beside the page; across the top on small screens. */
.page:has(.admin) { max-width: 1280px; }
.admin { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 28px; align-items: start; }
.admin-nav { display: flex; flex-direction: column; gap: 2px; position: sticky; top: 16px; }
.admin-nav a { color: var(--g-muted); text-decoration: none; padding: 6px 10px; border-radius: 6px; }
.admin-nav a:hover { color: var(--g-text); background: var(--g-surface); }
.admin-nav a[aria-current="page"] { color: var(--g-text); background: var(--g-surface); box-shadow: inset 2px 0 0 var(--g-accent); }
.admin-main > h1:first-child, .admin-main > .head-row:first-child h1 { margin-top: 0; }
.admin-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; margin: 14px 0; }
.admin-card { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 12px 14px; }
.admin-card h2 { font-size: 14px; font-weight: 600; margin: 0 0 8px; }
.admin-card dl { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; margin: 0; font-size: 14px; }
.admin-card dt { color: var(--g-muted); }
.admin-card dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.admin-card p { margin: 8px 0 0; }
@media (max-width: 760px) {
  .admin { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .admin-nav { flex-direction: row; overflow-x: auto; position: static; border-bottom: 1px solid var(--g-border); padding-bottom: 6px; }
  .admin-nav a { white-space: nowrap; }
  .admin-nav a[aria-current="page"] { box-shadow: inset 0 -2px 0 var(--g-accent); }
}

/* ---- Settings: profile and members (D72) ---- */
.settings-form { display: grid; gap: 10px; max-width: 420px; }
.invite-row { display: flex; gap: 8px; flex-wrap: wrap; }
.invite-row input { flex: 1 1 220px; min-width: 0; }
.invite-row + .error, .invite-row ~ .muted { margin-top: 6px; }
#members select { font-size: 13px; padding: 4px 6px; }
.audit { list-style: none; margin: 0; padding: 0; border: 1px solid var(--g-border); border-radius: 8px; background: var(--g-surface); }
.audit li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 12px; border-bottom: 1px solid var(--g-border); font-size: 14px; }
.audit li:last-child { border-bottom: 0; }
.audit li > .small { white-space: nowrap; }
@media (max-width: 640px) {
  .audit li { flex-direction: column; gap: 2px; }
}

/* ---- Research reports (RESEARCH.md): list, outline and sections, block editors ---- */
.page:has(.report) { max-width: 1180px; }
.rp-list { list-style: none; padding: 0; margin: 8px 0 0; display: grid; gap: 10px; }
.rp-item { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 12px 14px; }
.rp-item p { margin: 4px 0 0; }
.rp-title { font-weight: 600; text-decoration: none; color: var(--g-text); }
.rp-title:hover { color: var(--g-accent); }
.rp-head { display: grid; gap: 14px; padding-bottom: 16px; border-bottom: 1px solid var(--g-border); }
.rp-head-main { min-width: 0; }
.rp-head-main p { margin: 4px 0; }
.rp-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--g-muted); }
.rp-eyebrow a { color: var(--g-accent); text-decoration: none; }
.rp-eyebrow a:hover { text-decoration: underline; }
.rp-title { font-size: clamp(26px, 3.4vw, 34px); line-height: 1.15; font-weight: 650; letter-spacing: -.012em; margin: 6px 0 8px; }
.rp-brief { color: var(--g-muted); max-width: 68ch; font-size: 17px; line-height: 1.5; margin: 0 0 10px !important; }
.rp-meta { margin-top: 8px !important; }
.rp-head .doc-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.rp-export { position: relative; }
.rp-export > summary { list-style: none; }
.rp-export > summary::-webkit-details-marker { display: none; }
.rp-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 5; display: grid; min-width: 180px; padding: 4px;
           background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; }
.rp-menu a, .rp-menu button { font: inherit; font-size: 14px; color: var(--g-text); background: none; border: 0; text-align: left;
                              padding: 6px 8px; border-radius: 6px; cursor: pointer; text-decoration: none; }
.rp-menu a:hover, .rp-menu button:hover { background: var(--g-hover); }
.report .notice { margin: 12px 0 0; }
.rp-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 28px; align-items: start; margin-top: 20px; }
.rp-outline { position: sticky; top: 12px; max-height: calc(100vh - 24px); overflow: auto; font-size: 14px; }
.rp-outline summary { font-size: 12px; font-weight: 600; color: var(--g-muted); text-transform: uppercase; letter-spacing: .03em;
                      cursor: pointer; padding: 2px 0 6px; }
.rp-tree { list-style: none; padding: 0; margin: 0 0 10px; }
.rp-tree li { padding: 3px 0 3px calc(var(--depth, 0) * 14px); }
.rp-tree a { color: var(--g-text); text-decoration: none; display: inline-flex; gap: 6px; border-left: 2px solid transparent;
             padding-left: 6px; margin-left: -8px; }
.rp-tree a:hover { color: var(--g-accent); }
.rp-tree a.active { color: var(--g-accent); border-left-color: var(--g-accent); font-weight: 600; }
.rp-tree .rp-no { color: var(--g-muted); font-variant-numeric: tabular-nums; min-width: 1.6em; font-weight: 400; }
.rp-main { min-width: 0; }
.rp-section { scroll-margin-top: 12px; }
.rp-section.depth-0 { padding: 6px 0 26px; border-bottom: 1px solid var(--g-border); margin-bottom: 26px; }
.rp-section.depth-0:last-of-type { border-bottom: 0; }
.rp-sec-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.rp-h { margin: 0 0 10px; color: var(--g-text); text-transform: none; letter-spacing: -.005em; line-height: 1.25; }
h2.rp-h { font-size: 24px; font-weight: 650; }
h3.rp-h { font-size: 19px; font-weight: 600; }
h4.rp-h { font-size: 16px; font-weight: 600; }
.rp-h .rp-no { color: var(--g-accent); font-variant-numeric: tabular-nums; margin-right: .45em; font-weight: 600; }
.rp-section .rp-section { margin-top: 24px; }
.rp-instruction { margin: 0 0 8px; font-style: italic; }
.rp-tools { display: inline-flex; gap: 2px; flex-wrap: wrap; margin-left: auto; opacity: .55; }
.rp-sec-head:hover .rp-tools, .rp-block:hover .rp-tools, .rp-tools:focus-within { opacity: 1; }
.rp-block { margin: 6px 0 10px; position: relative; }
.rp-block > .rp-block-foot .rp-tools { position: absolute; top: -6px; right: 0; opacity: 0; background: var(--g-bg);
                                       border: 1px solid var(--g-border); border-radius: 6px; }
.rp-block:hover > .rp-block-foot .rp-tools, .rp-block > .rp-block-foot .rp-tools:focus-within { opacity: 1; }
.rp-block.editing { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 12px; }
.rp-text { max-width: 72ch; font-size: 16px; line-height: 1.7; }
.rp-text p { margin: 0 0 14px; }
.rp-text ul, .rp-text ol { margin: 0 0 14px; padding-left: 22px; }
.rp-text li { margin: 0 0 6px; }
.rp-text li::marker { color: var(--g-muted); }
.rp-text p > strong:only-child { display: block; margin-top: 22px; font-size: 16.5px; }
.rp-text a { color: var(--g-accent); text-decoration-color: color-mix(in srgb, var(--g-accent) 40%, transparent); text-underline-offset: 2px; }
.rp-text em { color: inherit; }
.rp-main .table { background: transparent; font-variant-numeric: tabular-nums; font-size: 14px; line-height: 1.45; border: 0;
                  width: auto; min-width: min(100%, 320px); max-width: 100%; }
.rp-main .table th { color: var(--g-text); font-weight: 600; font-size: 13px; border-bottom: 1.5px solid var(--g-text); background: none;
                     vertical-align: bottom; }
.rp-main .table td { padding: 7px 12px 7px 0; }
.rp-main .table th { padding: 7px 12px 7px 0; }
.rp-main .table td.num, .rp-main .table th.num { text-align: right; }
.rp-main .ai-table { margin: 4px 0 18px; }
.rp-block-foot { display: flex; align-items: center; gap: 6px; }
.rp-table-wrap { overflow-x: auto; }
.rp-table-wrap .table { width: auto; min-width: min(100%, 360px); }
.rp-source { margin: 4px 0 0; }

/* Report files (D88): the list, and the cell picker for tables and charts taken from a workbook */
.rf-list { display: grid; gap: 10px; margin: 10px 0 12px; }
ul.rf-list li.rf-item { border: 1px solid var(--g-border); border-radius: 8px; padding: 10px 12px; }
.rf-item p { margin: 4px 0 0; }
.rf-item ul { margin: 4px 0 0; padding-left: 18px; }
.rf-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rf-head a { font-weight: 600; overflow-wrap: anywhere; }
.rf-actions { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
#extract-form > * { min-width: 0; }   /* the cell grid scrolls inside the dialog instead of widening it */
.rf-pick { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 140px; gap: 10px; }
.rf-click { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 10px 0 6px; }
.rf-grid-wrap { max-height: 320px; overflow: auto; border: 1px solid var(--g-border); border-radius: 6px; }
.rf-grid { border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; }
.rf-grid th, .rf-grid td { border: 1px solid var(--g-border); padding: 2px 6px; white-space: nowrap; max-width: 220px;
  overflow: hidden; text-overflow: ellipsis; }
.rf-grid thead th { position: sticky; top: 0; background: var(--g-bg); color: var(--g-muted); font-weight: 500; z-index: 1; }
.rf-grid tbody th { position: sticky; left: 0; background: var(--g-bg); color: var(--g-muted); font-weight: 500; text-align: right; }
.rf-grid td { cursor: cell; background: var(--g-surface); }
.rf-grid td:hover { background: var(--g-hover); }
.rf-grid td.in { background: color-mix(in srgb, var(--g-accent) 12%, var(--g-surface)); }
.rf-grid tr.picked td.in, .rf-grid td.in.picked { box-shadow: inset 0 0 0 1px var(--g-accent); }
.rf-grid tr.picked td.in { font-weight: 600; }
.rf-as { margin: 8px 0; }
.rf-chart-opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.rf-preview:not(:empty) { margin-top: 10px; padding-top: 6px; border-top: 1px solid var(--g-border); }
.rf-preview .rp-chart { max-width: 640px; }
@media (max-width: 600px) {
  .rf-pick { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .rf-pick label:last-child { grid-column: 1 / -1; }
  .rf-grid-wrap { max-height: 260px; }
}
.rp-table-wrap caption { caption-side: top; text-align: left; font-size: 13px; color: var(--g-muted); padding: 0 0 4px; }
.rp-add { display: flex; gap: 2px; flex-wrap: wrap; margin: 2px 0 0; }
.rp-add .btn { color: var(--g-muted); }
.rp-editor { display: grid; gap: 8px; }
.rp-editor textarea { width: 100%; box-sizing: border-box; font: 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
.rp-editor .seg { justify-self: start; }
.rp-editor p { margin: 0; }
.rp-preview { border: 1px dashed var(--g-border); border-radius: 6px; padding: 8px 10px; min-height: 80px; }
.rp-section-form { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 8px; padding: 12px; margin: 8px 0; }
.rp-section-form input, .rp-section-form textarea, .rp-section-form select { width: 100%; box-sizing: border-box; }
.rp-section-form label.check input { width: auto; }
.rp-grid-scroll { overflow-x: auto; }
.rp-grid { border-collapse: collapse; }
.rp-grid th, .rp-grid td { padding: 2px; }
.rp-grid input { width: 9em; min-width: 0; box-sizing: border-box; padding: 5px 7px; }
.rp-grid thead input { font-weight: 600; }
.rp-grid-tools { display: flex; gap: 6px; flex-wrap: wrap; }
.rp-empty { padding: 24px 0; }
.rp-versions li { padding: 8px 0; }
.rp-editors li { padding: 6px 0; }
.rp-add-editor { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 6px; margin-top: 8px; }
.rp-settings-actions { justify-content: space-between; flex-wrap: wrap; }
.rp-settings-actions #delete-report { margin-right: auto; color: var(--g-bad); }
#settings-dialog textarea { width: 100%; box-sizing: border-box; }
#new-dialog textarea { width: 100%; box-sizing: border-box; }
/* drafting with the assistant (D77) */
.rp-run { margin-top: 12px; border: 1px solid var(--g-border); border-radius: 8px; background: var(--g-surface); padding: 8px 12px;
          display: grid; gap: 6px; font-size: 14px; }
.rp-run-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rp-run-line > span:first-of-type:not(.spinner), .rp-run-line > .spinner + span { flex: 1 1 200px; }
.rp-run progress { width: 100%; height: 4px; accent-color: var(--g-accent); }
.rp-run details ul { margin: 4px 0 0; padding-left: 18px; }
.spinner { width: 12px; height: 12px; border: 2px solid var(--g-border); border-top-color: var(--g-accent); border-radius: 50%;
           animation: spin 0.9s linear infinite; flex: none; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation-duration: 3s; } }
.rp-findings p { margin: 6px 0; max-width: 75ch; }
.rp-findings ul { display: grid; gap: 6px; margin: 4px 0 2px; }
.rp-findings li { line-height: 1.45; }
.rp-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--g-accent); vertical-align: middle; }
.rp-proposal { border: 1px solid var(--g-border); border-left: 2px solid var(--g-accent); border-radius: 8px; background: var(--g-surface);
               padding: 10px 12px; margin: 6px 0 12px; display: grid; gap: 8px; scroll-margin-top: 12px; }
.rp-proposal > p { margin: 0; }
.rp-proposal-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rp-proposal-head .seg { margin-left: auto; }
.rp-proposal-edit { width: 100%; box-sizing: border-box; font: 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
.rp-proposal-note { color: var(--g-muted); border-top: 1px solid var(--g-border); padding-top: 6px; }
.rp-proposal-note p, .rp-proposal-note ul { margin: 4px 0 0; }
.rp-proposal-note ul { padding-left: 18px; }
.rp-proposal .actions { margin: 0; }
.rp-sources ul { margin: 4px 0 0; padding-left: 18px; max-height: 200px; overflow: auto; }
.rp-diff { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 14px; line-height: 1.55; max-width: 75ch; }
.rp-diff ins { text-decoration: none; background: color-mix(in srgb, var(--g-ok) 16%, transparent); color: var(--g-text); }
.rp-diff del { background: color-mix(in srgb, var(--g-bad) 14%, transparent); color: var(--g-muted); }
.rp-draft-pick { border: 0; padding: 0; margin: 0; min-width: 0; }
.rp-draft-pick legend { font-weight: 600; font-size: 14px; padding: 0; }
.rp-how { border: 0; padding: 0; margin: 0; min-width: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.rp-how legend { font-weight: 600; font-size: 14px; padding: 0; margin-bottom: 4px; }
.rp-how label.check { font-size: 14px; }
.rp-outline-note { margin: 6px 0 0; }
.rp-tags { margin: 8px 0 0; }
.rp-tags a.tag, .rp-item a.tag { text-decoration: none; color: var(--g-text); }
.rp-tags a.tag:hover, .rp-item a.tag:hover { border-color: var(--g-muted); }
.rp-tag-group { margin: 0 0 8px; }
.tag.suggested { border-style: dashed; }
.rp-tag-add { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.rp-tag-add select { width: auto; }
.rp-tag-add input[type=search] { flex: 1 1 180px; min-width: 0; }
.rp-tag-found li { margin: 4px 0; }
.linklike { border: 0; background: none; padding: 0; color: var(--g-accent); cursor: pointer; font: inherit; text-decoration: underline; }
.passage mark { background: none; color: inherit; font-weight: 600; text-decoration: underline; text-decoration-color: var(--g-accent); text-underline-offset: 2px; }
.rp-draft-all { display: flex; gap: 2px; margin: 4px 0; }
.rp-draft-list { max-height: 40vh; overflow: auto; border: 1px solid var(--g-border); border-radius: 6px; padding: 4px 8px; margin: 0; }
.rp-draft-list li { padding: 3px 0 3px calc(var(--depth, 0) * 16px); }
.rp-draft-list label.check { align-items: baseline; font-size: 14px; }
#draft-dialog textarea { width: 100%; box-sizing: border-box; }
/* figures: charts and diagrams (D82) */
.fig { margin: 8px 0 20px; max-width: 760px; }
.fig-title { font-weight: 600; font-size: 15px; margin: 0 0 2px; color: var(--g-text); }
.fig-sub { font-size: 13px; color: var(--g-muted); margin: 0 0 6px; }
.fig-plot { position: relative; margin-top: 8px; }
.fig-plot svg { display: block; max-width: 100%; height: auto; }
.fig-diagram .fig-plot { overflow-x: auto; }
.fig-diagram .fig-plot svg { margin: 0 auto; }
.fig-foot { display: flex; gap: 8px; align-items: baseline; justify-content: space-between; margin: 6px 0 0; font-size: 12.5px;
            color: var(--g-muted); }
.fig-foot .btn { flex: none; }
.fig-table { margin-top: 8px; }
.md-fig > pre, .rp-text pre { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 6px; padding: 10px 12px;
                             overflow-x: auto; font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
.rp-chart-params { display: grid; gap: 8px; }
.rp-md-help .linkish { font-size: inherit; }
#chart-dialog select, #chart-dialog input { width: 100%; box-sizing: border-box; }

/* lifecycle and plan (D78-D80) */
button.rp-chip { font: inherit; font-size: 12px; background: none; cursor: pointer; }
button.rp-chip:not(.s-success):not(.s-failed):not(.s-running) { color: var(--g-muted); }
.rp-checklist { margin: 0; display: grid; gap: 4px; font-size: 14px; }
.rp-checklist li::before { content: "✓ "; color: var(--g-ok); }
.rp-checklist li.warn::before { content: "! "; color: var(--g-warn); font-weight: 700; }
.rp-target { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rp-target input { width: auto; }
.rp-tl { margin: 12px 0; display: grid; gap: 4px; }
.rp-tl-axis { display: flex; justify-content: space-between; gap: 8px; }
.rp-tl-row { display: grid; grid-template-columns: minmax(90px, 30%) minmax(0, 1fr); gap: 8px; align-items: center; font-size: 13px; }
.rp-tl-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: calc(var(--depth, 0) * 10px); }
.rp-tl-track { position: relative; height: 10px; background: var(--g-hover); border-radius: 3px; }
.rp-tl-bar { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 3px; background: var(--g-border); }
.rp-tl-bar.st-drafting, .rp-tl-bar.st-in_review, .rp-tl-sw.st-drafting { background: color-mix(in srgb, var(--g-accent) 55%, transparent); }
.rp-tl-bar.st-done, .rp-tl-sw.st-done { background: var(--g-ok); }
.rp-tl-bar.late, .rp-tl-sw.late { background: var(--g-bad); }
.rp-tl-sw { display: inline-block; width: 10px; height: 8px; border-radius: 2px; margin: 0 3px 0 8px; background: var(--g-border); }
.rp-tl-sw:first-child { margin-left: 0; }
.rp-tl-line { position: absolute; top: -3px; bottom: -3px; width: 0; border-left: 2px solid var(--g-text); z-index: 1; }
.rp-tl-line.target { border-left: 2px dashed var(--g-accent); }
.rp-tl-key { margin: 4px 0 0; }
.rp-plan { display: grid; gap: 0; border-top: 1px solid var(--g-border); }
.rp-plan-row { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) 150px 140px; gap: 8px; align-items: center;
               padding: 6px 0; border-bottom: 1px solid var(--g-border); font-size: 14px; }
.rp-plan-row.head { font-size: 12px; color: var(--g-muted); font-weight: 600; }
.rp-plan-row.late .rp-plan-h::after { content: " · overdue"; color: var(--g-bad); font-size: 12px; }
.rp-plan-h { padding-left: calc(var(--depth, 0) * 14px); min-width: 0; overflow-wrap: anywhere; }
.rp-plan select, .rp-plan input { width: 100%; box-sizing: border-box; }
.rp-activity { margin-top: 10px; }
.rp-activity ul { margin: 6px 0 0; display: grid; gap: 4px; max-height: 240px; overflow: auto; }
@media (max-width: 640px) {
  .rp-plan-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .rp-plan-row .rp-plan-h { grid-column: 1 / -1; font-weight: 600; }
  .rp-plan-row.head { display: none; }
}
@media (max-width: 900px) {
  .rp-layout { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .rp-outline { position: static; max-height: none; border: 1px solid var(--g-border); border-radius: 8px; padding: 8px 12px;
                background: var(--g-surface); }
  .rp-outline summary { padding: 2px 0; }
  .rp-outline details[open] summary { padding-bottom: 6px; }
  .rp-tools { opacity: 1; margin-left: 0; }
  .rp-block > .rp-block-foot .rp-tools { position: static; opacity: 1; border: 0; background: none; }
}
@media (max-width: 640px) {
  .rp-add-editor { grid-template-columns: minmax(0, 1fr); }
  .rp-menu { left: 0; right: auto; }
  h2.rp-h { font-size: 17px; }
  .rp-proposal-head .seg { margin-left: 0; }
  .rp-proposal .actions .btn { flex: 1; }
}
