/* Domus — authenticated tax workspace
   Quiet, serious, fast. Editorial weight, restrained chrome. */

:root, [data-palette="cream"] {
  --bg: #f1e9d9;
  --paper: #faf5e9;
  --paper-2: #f5edda;
  --ink: #1a1512;
  --ink-2: #5a534a;
  --ink-3: #8e8676;
  --ink-4: #b4ab98;
  --line: #e2d6bd;
  --line-2: #d0c2a3;
  --line-3: #f0e6cf;

  --accent: #b73a1c;
  --accent-soft: #f7d9c8;
  --accent-tint: #fbe8db;

  --blocker: #b73a1c;
  --blocker-soft: #f7d9c8;
  --good: #4f6b3b;
  --good-soft: #d6dfc8;
  --judgment: #8a6614;
  --judgment-soft: #ecd9a9;
  --waiting: #5e5648;
  --waiting-soft: #ddd2b8;
  --auto: #3a5a73;
  --auto-soft: #c8d6df;

  --scope-shared: #b8973e;
  --scope-mark: #4d7059;
  --scope-liang: #6d5d9c;
  --scope-wen: #b86d4a;
  --scope-wenbin: #5c6470;
  --scope-acct: #3f5670;

  --shadow-card: 0 1px 0 rgba(40,28,16,0.04), 0 1px 2px rgba(40,28,16,0.03);
  --shadow-pop: 0 1px 0 rgba(40,28,16,0.06), 0 12px 32px -8px rgba(40,28,16,0.18);
  --radius: 10px;
  --radius-sm: 6px;
  --radius-lg: 16px;
}

[data-palette="coffee"] {
  --bg: #1a1310;
  --paper: #221813;
  --paper-2: #2a1e17;
  --ink: #f4ead7;
  --ink-2: #c2b39a;
  --ink-3: #8a7d6a;
  --ink-4: #5e5345;
  --line: #3a2b21;
  --line-2: #4a382b;
  --line-3: #2e2018;

  --accent: #e07a3d;
  --accent-soft: #4a2a17;
  --accent-tint: #3a1e10;

  --blocker: #e07a3d;
  --blocker-soft: #4a2a17;
  --good: #97b576;
  --good-soft: #2d3a1f;
  --judgment: #d4a44a;
  --judgment-soft: #3a2c14;
  --waiting: #a8997e;
  --waiting-soft: #2e251a;
  --auto: #8eaec6;
  --auto-soft: #1f2c36;

  --scope-shared: #d4a44a;
  --scope-mark: #97b576;
  --scope-liang: #b09cd6;
  --scope-wen: #e89a78;
  --scope-wenbin: #98a3b3;
  --scope-acct: #8eaec6;

  --shadow-card: 0 1px 0 rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
  --shadow-pop: 0 1px 0 rgba(0,0,0,0.5), 0 16px 40px -8px rgba(0,0,0,0.5);
}

[data-palette="slate"] {
  --bg: #e6e9ee;
  --paper: #f4f6f9;
  --paper-2: #eef1f5;
  --ink: #131820;
  --ink-2: #4d5666;
  --ink-3: #7d8593;
  --ink-4: #adb4be;
  --line: #d6dce4;
  --line-2: #c0c7d1;
  --line-3: #e7ebf0;

  --accent: #20498c;
  --accent-soft: #cfd9eb;
  --accent-tint: #e2e8f3;

  --blocker: #b13b30;
  --blocker-soft: #f0d4d0;
  --good: #386b54;
  --good-soft: #cee0d6;
  --judgment: #8a661c;
  --judgment-soft: #eadcb9;
  --waiting: #5a6373;
  --waiting-soft: #d2d6dd;
  --auto: #20498c;
  --auto-soft: #cfd9eb;

  --scope-shared: #8a661c;
  --scope-mark: #386b54;
  --scope-liang: #6f5d9c;
  --scope-wen: #a35632;
  --scope-wenbin: #4d5566;
  --scope-acct: #20498c;

  --shadow-card: 0 1px 0 rgba(15,25,45,0.04), 0 1px 2px rgba(15,25,45,0.04);
  --shadow-pop: 0 1px 0 rgba(15,25,45,0.06), 0 12px 32px -8px rgba(15,25,45,0.15);
}

/* density */
[data-density="compact"] {
  --row-pad-y: 10px;
  --card-pad: 14px;
  --section-gap: 24px;
}
:root, [data-density="comfortable"] {
  --row-pad-y: 14px;
  --card-pad: 20px;
  --section-gap: 36px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: "Geist", ui-sans-serif, system-ui, sans-serif;
  font-feature-settings: "ss01", "cv11";
  font-size: 14px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.serif { font-family: "Instrument Serif", "Source Serif 4", Georgia, serif; font-weight: 400; letter-spacing: -0.005em; }
.serif-it { font-family: "Instrument Serif", Georgia, serif; font-style: italic; font-weight: 400; }
.mono { font-family: "Geist Mono", ui-monospace, monospace; font-feature-settings: "tnum", "ss01"; }
.tnum { font-variant-numeric: tabular-nums; }

button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input, textarea, select { font: inherit; color: inherit; }
a { color: inherit; text-decoration: none; }

/* ---------- App shell ---------- */
.app {
  display: grid;
  grid-template-columns: 224px 1fr;
  min-height: 100vh;
}

.sidebar {
  background: var(--bg);
  border-right: 1px solid var(--line);
  padding: 22px 18px;
  display: flex;
  flex-direction: column;
  gap: 22px;
  position: sticky;
  top: 0;
  height: 100vh;
}
.wordmark {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 2px 6px;
}
.wordmark-glyph {
  width: 26px; height: 26px;
  border-radius: 6px;
  background: var(--ink);
  color: var(--paper);
  display: grid; place-items: center;
  font-family: "Instrument Serif", serif;
  font-size: 18px;
  line-height: 1;
}
.wordmark-text { font-family: "Instrument Serif", serif; font-size: 19px; letter-spacing: -0.01em; }
.wordmark-text em { font-style: italic; }

.season-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 11.5px;
  color: var(--ink-2);
  background: var(--paper);
  width: fit-content;
  cursor: pointer;
}
.season-pill .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }

.nav { display: flex; flex-direction: column; gap: 1px; }
.nav-divider {
  height: 1px;
  background: var(--line);
  margin: 12px 8px;
  border-radius: 1px;
}
.nav-label {
  font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink-3);
  padding: 0 6px 6px;
  margin-top: 12px;
}
.nav-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 10px;
  border-radius: 7px;
  color: var(--ink-2);
  font-size: 13.5px;
  cursor: pointer;
  transition: background 120ms, color 120ms;
  white-space: nowrap;
  text-align: left;
}
.nav-item-left { min-width: 0; }
.nav-item-left span:not(.badge) { white-space: nowrap; }
.nav-item:hover { background: var(--paper-2); color: var(--ink); }
.nav-item.is-active { background: var(--paper); color: var(--ink); box-shadow: var(--shadow-card); }
.nav-item-left { display: flex; align-items: center; gap: 10px; }
.nav-item .badge {
  font-size: 11px;
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-3);
  min-width: 18px;
  text-align: center;
}
.nav-item.is-active .badge { background: var(--bg); color: var(--ink-2); }
.nav-item.has-blocker .badge { background: var(--blocker-soft); color: var(--blocker); }

.sidebar-foot {
  margin-top: auto;
  display: flex; flex-direction: column; gap: 8px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.user-switch {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 8px;
  border-radius: 8px;
  cursor: pointer;
}
.user-switch:hover { background: var(--paper-2); }
.avatar {
  width: 26px; height: 26px;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11.5px; font-weight: 500;
  color: white;
  letter-spacing: 0.02em;
}
.avatar.mark { background: var(--scope-mark); }
.avatar.liang { background: var(--scope-liang); }
.avatar.wen { background: var(--scope-wen); }
.avatar.wenbin { background: var(--scope-wenbin); }
.avatar.acct { background: var(--scope-acct); }
.user-switch-name { font-size: 13px; line-height: 1.15; }
.user-switch-role { font-size: 11px; color: var(--ink-3); }
.user-switch-wrap { width: 100%; }
.user-menu {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow-pop);
  overflow: hidden;
  z-index: 30;
  animation: menuIn 140ms ease-out;
}
@keyframes menuIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
.user-menu-label {
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-3);
  padding: 10px 12px 6px;
  border-bottom: 1px solid var(--line);
  background: var(--paper-2);
}
.user-menu-item {
  display: flex; align-items: center; gap: 10px;
  width: 100%;
  padding: 8px 10px;
  cursor: pointer;
  text-align: left;
  border-bottom: 1px solid var(--line-3);
  transition: background 100ms;
}
.user-menu-item:last-child { border-bottom: 0; }
.user-menu-item:hover { background: var(--paper-2); }
.user-menu-item.is-active { background: var(--accent-tint); }
.user-menu-divider {
  height: 1px;
  background: var(--line);
  margin: 6px 0;
}

/* Filing-unit chip — sits in the sidebar foot above the user switch,
   shows the active return. The menu dropdown also has a section for
   switching between filing units the current member belongs to. */
.filing-unit-chip {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper-2);
  font-size: 11.5px;
  color: var(--ink-2);
}
.filing-unit-chip-eyebrow {
  font-size: 9.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.filing-unit-chip-label {
  font-weight: 500;
  color: var(--ink);
  font-feature-settings: "tnum" 1;
}
.filing-unit-chip-pip {
  width: 6px; height: 6px;
  border-radius: 999px;
  background: var(--good);
  margin-left: auto;
}
.filing-unit-menu-year {
  display: inline-flex;
  align-items: center; justify-content: center;
  min-width: 36px;
  padding: 2px 6px;
  border-radius: 6px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  font-size: 11px;
  font-feature-settings: "tnum" 1;
  color: var(--ink-2);
}
.filing-unit-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--ink-2);
  text-transform: none;
}

/* ============================================================
   Workspace settings (Phase 5 — admin surface)
   ============================================================ */
.ws-tabs {
  display: flex;
  gap: 4px;
  margin-top: 28px;
  border-bottom: 1px solid var(--line);
}
.ws-tab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 16px 12px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink-3);
  cursor: pointer;
  transition: color 100ms, border-color 100ms;
}
.ws-tab:hover { color: var(--ink-2); }
.ws-tab.is-active {
  color: var(--ink);
  border-bottom-color: var(--accent);
}
.ws-tab-count {
  font-size: 11px;
  padding: 1px 6px;
  background: var(--paper-2);
  border-radius: 999px;
  color: var(--ink-3);
}
.ws-tab.is-active .ws-tab-count { background: var(--accent-tint); color: var(--accent); }

.ws-body { margin-top: 24px; }

.ws-section-head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: end;
  margin-bottom: 20px;
}
.ws-section-title {
  font-size: 18px;
  font-weight: 500;
  color: var(--ink);
}
.ws-section-sub {
  font-size: 13px;
  color: var(--ink-3);
  line-height: 1.5;
  margin-top: 4px;
  max-width: 60ch;
}
.ws-section-sub code {
  font-family: "Geist Mono", monospace;
  font-size: 11.5px;
  padding: 1px 5px;
  background: var(--paper-2);
  border-radius: 3px;
  color: var(--ink-2);
}

.ws-empty-inline { font-size: 12px; color: var(--ink-3); font-style: italic; }

/* ---- Members tab ---- */
.ws-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 14px;
}
.ws-member-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 16px;
  display: flex; flex-direction: column; gap: 10px;
}
.ws-member-head {
  display: flex; align-items: center; gap: 12px;
}
.ws-member-name { font-size: 14.5px; font-weight: 500; color: var(--ink); }
.ws-member-email { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.ws-member-role {
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.ws-member-scopes {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding-top: 4px;
  border-top: 1px solid var(--line);
  margin-top: 4px;
  padding-top: 10px;
}
.ws-admin-toggle {
  display: inline-flex; align-items: center; gap: 8px;
  cursor: pointer;
  user-select: none;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-3);
  padding: 4px 10px 4px 6px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--paper);
  transition: background 120ms, color 120ms, border-color 120ms;
}
.ws-admin-toggle:hover { border-color: var(--line-2); }
.ws-admin-toggle.is-on {
  color: var(--accent);
  background: var(--accent-tint);
  border-color: var(--accent-tint);
}
.ws-admin-toggle input {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
.ws-admin-toggle-track {
  position: relative;
  display: inline-block;
  width: 22px; height: 12px;
  background: var(--line-2);
  border-radius: 999px;
  transition: background 140ms;
}
.ws-admin-toggle.is-on .ws-admin-toggle-track { background: var(--accent); }
.ws-admin-toggle-thumb {
  position: absolute;
  top: 1px; left: 1px;
  width: 10px; height: 10px;
  background: var(--paper);
  border-radius: 999px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15);
  transition: transform 140ms cubic-bezier(0.4, 0, 0.2, 1);
}
.ws-admin-toggle.is-on .ws-admin-toggle-thumb { transform: translateX(10px); }
.ws-admin-toggle-label { line-height: 1; }

.ws-scope-tag {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 8px;
  font-size: 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-2);
}
.ws-scope-tag-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 999px;
}
.ws-scope-tag-role {
  font-size: 10px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  padding-left: 4px;
  border-left: 1px solid var(--line-2);
  margin-left: 2px;
}
.ws-role-lead { border-color: var(--accent-tint); }
.ws-role-collaborator { border-color: var(--line); }
.ws-role-contributor { border-color: var(--line); background: transparent; }

/* ---- Scopes tab ---- */
.ws-scope-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 16px;
}
.ws-scope-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
}
.ws-scope-card-head {
  display: flex; align-items: center; gap: 10px;
}
.ws-scope-card-title { font-size: 15px; font-weight: 500; color: var(--ink); }
.ws-scope-card-sub { font-size: 12px; color: var(--ink-3); margin-top: 2px; line-height: 1.4; }
.ws-scope-card-count { font-size: 11px; color: var(--ink-3); }
.ws-scope-members {
  display: flex; flex-direction: column; gap: 6px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.ws-scope-member-row {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: 10px;
  align-items: center;
  padding: 6px;
  border-radius: 6px;
  transition: background 80ms;
}
.ws-scope-member-row:hover { background: var(--paper-2); }
.ws-scope-member-name { font-size: 13px; font-weight: 500; color: var(--ink); }
.ws-scope-member-email { font-size: 11px; color: var(--ink-3); margin-top: 1px; }
.ws-role-select {
  font-size: 11.5px;
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: var(--paper);
  color: var(--ink-2);
}
.ws-scope-add-form {
  display: flex; gap: 8px;
  padding: 6px 0 0;
  border-top: 1px dashed var(--line);
  padding-top: 12px;
  align-items: center;
  flex-wrap: wrap;
}
.ws-scope-add-cta {
  margin-top: 4px;
  align-self: flex-start;
}

/* ---- Tax years tab ---- */
.ws-year-list {
  display: flex; flex-direction: column; gap: 24px;
}
.ws-year-block {}
.ws-year-header {
  display: flex; align-items: baseline; gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 10px;
}
.ws-year-num {
  font-family: "Instrument Serif", serif;
  font-size: 32px;
  color: var(--ink);
}
.ws-year-count { font-size: 11px; color: var(--ink-3); letter-spacing: 0.04em; text-transform: uppercase; }
.ws-year-units { display: flex; flex-direction: column; gap: 8px; }
.ws-fu-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 12px 16px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.ws-fu-row.is-signed { background: var(--paper-2); }
.ws-fu-status {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px;
  padding: 4px 8px;
  border-radius: 5px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  border: 1px solid var(--line);
  color: var(--ink-2);
}
.ws-fu-status-MFJ { color: var(--accent); border-color: var(--accent-tint); background: var(--accent-tint); }
.ws-fu-status-MFS { color: var(--ink-2); }
.ws-fu-status-HOH { color: var(--judgment); border-color: var(--judgment); }
.ws-fu-status-S   { color: var(--ink-3); }
.ws-fu-status-QSS { color: var(--ink-3); }
.ws-fu-label { font-size: 14px; font-weight: 500; color: var(--ink); }
.ws-fu-meta {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px;
  color: var(--ink-3);
  margin-top: 4px;
}
.ws-fu-name { color: var(--ink-2); }
.ws-fu-pill {
  font-size: 11px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-3);
}
.ws-fu-pill-signed {
  color: var(--good);
  border-color: var(--good);
  display: inline-flex; align-items: center; gap: 5px;
}
.ws-fu-preview {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px;
  background: var(--paper-2);
  border-radius: 6px;
  border: 1px dashed var(--line-2);
  font-size: 13px;
  color: var(--ink-2);
}

/* ---- Modals + forms ---- */
.ws-modal-head { padding: 24px 28px 18px; border-bottom: 1px solid var(--line); }
.ws-modal-body { padding: 22px 28px; max-height: 60vh; overflow-y: auto; }
.ws-modal-foot {
  display: flex; justify-content: flex-end; gap: 8px;
  padding: 14px 24px;
  border-top: 1px solid var(--line);
  background: var(--paper-2);
}
.ws-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.ws-form-section { margin-top: 18px; }
.ws-field { display: flex; flex-direction: column; gap: 6px; }
.ws-field-label {
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  display: flex; justify-content: space-between; align-items: baseline;
}
.ws-field-hint { font-size: 10.5px; color: var(--ink-3); text-transform: none; font-weight: 400; letter-spacing: 0; }
.ws-field input,
.ws-field select,
.ws-select {
  font-family: inherit;
  font-size: 13px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  color: var(--ink);
}
.ws-field input:focus,
.ws-field select:focus,
.ws-select:focus { outline: 1.5px solid var(--accent); outline-offset: 0; border-color: var(--accent); }
.ws-checkbox-row {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 8px 0;
  cursor: pointer;
  font-size: 13px;
  color: var(--ink-2);
}
.ws-checkbox-row input { margin-top: 3px; }
.ws-grant-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.ws-grant-row:last-child { border-bottom: 0; }
.ws-grant-label { font-size: 13px; color: var(--ink); display: flex; flex-direction: column; }
.ws-grant-sub { font-size: 11px; color: var(--ink-3); }
.ws-grant-pills { display: flex; gap: 4px; }
.ws-grant-pill {
  font-size: 11px;
  padding: 4px 9px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: var(--paper);
  color: var(--ink-3);
  cursor: pointer;
  font-family: inherit;
}
.ws-grant-pill.is-active {
  background: var(--accent);
  color: var(--paper);
  border-color: var(--accent);
}
.ws-select {
  width: 100%;
}

/* ---------- Sidebar year switcher ---------- */
.season-switcher {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 4px 4px;
  border-radius: 6px;
  cursor: pointer;
  transition: background 100ms;
}
.season-switcher:hover { background: var(--paper-2); }
.season-switcher-label {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  flex: 1;
  text-align: left;
}
.season-switcher-meta {
  font-size: 12px;
  color: var(--ink-2);
}
.season-menu {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow-pop);
  overflow: hidden;
  z-index: 30;
  animation: menuIn 140ms ease-out;
}
.season-menu-label {
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-3);
  padding: 10px 12px 6px;
  border-bottom: 1px solid var(--line);
  background: var(--paper-2);
}
.season-menu-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px 12px;
  cursor: pointer;
  text-align: left;
  border-bottom: 1px solid var(--line-3);
  transition: background 100ms;
}
.season-menu-item:hover { background: var(--paper-2); }
.season-menu-item.is-active { background: var(--accent-tint); cursor: default; }
.season-menu-year {
  font-size: 22px;
  line-height: 1;
  color: var(--ink);
  letter-spacing: -0.015em;
  min-width: 44px;
}
.season-menu-status { font-size: 12.5px; color: var(--ink); line-height: 1.2; }
.season-menu-foot {
  display: flex;
  align-items: center;
  padding: 8px 12px;
  background: var(--paper-2);
  border-top: 1px solid var(--line);
}

/* ---------- Past season sheet ---------- */
.past-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.past-stat {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 14px;
}
.past-event {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 8px 0;
}
.past-event-pip {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--ink-4);
  margin-top: 7px;
  flex-shrink: 0;
}

/* ---------- Main column ---------- */
.main { padding: 0; background: var(--bg); min-width: 0; }
.surface {
  max-width: 1180px;
  margin: 0 auto;
  padding: 36px 56px 80px;
}
.surface-narrow {
  max-width: 880px;
  margin: 0 auto;
  padding: 36px 56px 80px;
}

.eyebrow {
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin: 0 0 10px;
}
.h1 {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 56px;
  line-height: 0.98;
  letter-spacing: -0.015em;
  margin: 0;
  text-wrap: balance;
  color: var(--ink);
}
.h1 em { font-style: italic; color: var(--ink); }
.h2 {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 30px;
  line-height: 1.04;
  letter-spacing: -0.01em;
  margin: 0;
}
.h2 em { font-style: italic; }
.h3 {
  font-family: "Geist", sans-serif;
  font-weight: 500;
  font-size: 15px;
  letter-spacing: -0.005em;
  margin: 0;
}
.dim { color: var(--ink-2); }
.dimmer { color: var(--ink-3); }
.lede {
  font-size: 14.5px;
  color: var(--ink-2);
  max-width: 60ch;
  margin: 14px 0 0;
}

/* ---------- Card primitive ---------- */
.card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
}
.card-pad { padding: var(--card-pad); }
.card-row {
  display: flex; align-items: center; gap: 14px;
  padding: var(--row-pad-y) var(--card-pad);
  border-bottom: 1px solid var(--line);
}
.card-row:last-child { border-bottom: 0; }
.card-row.is-clickable { cursor: pointer; transition: background 100ms; }
.card-row.is-clickable:hover { background: var(--paper-2); }

/* ---------- Chip / tag ---------- */
.chip {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-2);
  border: 1px solid var(--line);
  letter-spacing: 0.005em;
  white-space: nowrap;
}
.chip.blocker { background: var(--blocker-soft); color: var(--blocker); border-color: transparent; }
.chip.good { background: var(--good-soft); color: var(--good); border-color: transparent; }
.chip.judgment { background: var(--judgment-soft); color: var(--judgment); border-color: transparent; }
.chip.waiting { background: var(--waiting-soft); color: var(--waiting); border-color: transparent; }
.chip.auto { background: var(--auto-soft); color: var(--auto); border-color: transparent; }
.chip.accent { background: var(--accent-tint); color: var(--accent); border-color: transparent; }
.chip-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: 0.8; }

.kbd {
  font-family: "Geist Mono", monospace;
  font-size: 10.5px;
  padding: 1px 5px;
  border: 1px solid var(--line-2);
  border-bottom-width: 2px;
  border-radius: 4px;
  color: var(--ink-2);
  background: var(--paper-2);
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  border-radius: 8px;
  border: 1px solid var(--line-2);
  background: var(--paper);
  color: var(--ink);
  font-size: 13px;
  cursor: pointer;
  transition: background 100ms, border-color 100ms, transform 60ms;
}
.btn:hover { background: var(--paper-2); border-color: var(--ink-3); }
.btn:active { transform: translateY(0.5px); }
.btn.primary {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.btn.primary:hover { background: var(--ink-2); border-color: var(--ink-2); }
.btn.accent {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
}
.btn.accent:hover { filter: brightness(1.05); }
.btn.ghost { background: transparent; border-color: transparent; color: var(--ink-2); }
.btn.ghost:hover { background: var(--paper-2); color: var(--ink); }
.btn.sm { padding: 5px 10px; font-size: 12px; border-radius: 6px; }
.btn.lg { padding: 12px 20px; font-size: 14px; }

/* ---------- Scope edge ---------- */
.scope-edge {
  position: relative;
  overflow: hidden;
}
.scope-edge::before {
  content: "";
  position: absolute;
  left: 0; top: 12px; bottom: 12px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--ink-4);
}
.scope-edge.shared::before,
.scope-edge.joint::before { background: var(--scope-shared); }
.scope-edge.mark::before { background: var(--scope-mark); }
.scope-edge.liang::before { background: var(--scope-liang); }
.scope-edge.wen::before { background: var(--scope-wen); }
.scope-edge.acct::before { background: var(--scope-acct); }
[data-privacy-chrome="off"] .scope-edge::before { display: none; }

/* ============================================================
   Ownership context policy
   ------------------------------------------------------------
   In single-user view (Mark or Liang signed in) the user's own
   color rail is suppressed — when everything on screen is either
   theirs or jointly-owned, painting a rail in their own color is
   redundant decoration. The Joint rail stays so shared items
   still distinguish themselves from private ones. In joint view
   all three rails (mark / liang / joint) render normally.

   See UI-GOTCHAS.md §"Ownership context" for the rationale and
   the matching rules for inline owner chips in JSX surfaces.
   ============================================================ */
[data-active-user="mark"]  .scope-edge.mark::before  { display: none; }
[data-active-user="liang"] .scope-edge.liang::before { display: none; }

/* Inline owner tag on checklist rows. Picks up the same scope-* tokens as
   the color rail so the chip color matches the rail color when both
   render. Sits next to the row title without breaking title-wrap. */
.checklist-row-owner-tag {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  margin-left: 8px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  border: 1px solid var(--line-2);
  vertical-align: 2px;
  white-space: nowrap;
}
.checklist-row-owner-tag.scope-joint {
  color: var(--scope-shared);
  border-color: var(--scope-shared);
  background: transparent;
}
.checklist-row-owner-tag.scope-mark {
  color: var(--scope-mark);
  border-color: var(--scope-mark);
  background: transparent;
}
.checklist-row-owner-tag.scope-liang {
  color: var(--scope-liang);
  border-color: var(--scope-liang);
  background: transparent;
}

/* ---------- Lane lists ---------- */
.lanes { display: grid; gap: 16px; }
.lane {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}
.lane-head {
  display: flex; align-items: baseline; gap: 14px;
  padding: 16px var(--card-pad) 4px;
}
.lane-title { font-size: 13.5px; font-weight: 500; flex: 1; min-width: 0; }
.lane-count {
  margin-left: auto;
  font-size: 12px;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}
.lane-sub {
  padding: 0 var(--card-pad) 12px;
  font-size: 12.5px;
  color: var(--ink-3);
}

.task-row {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 12px var(--card-pad);
  border-top: 1px solid var(--line);
  cursor: pointer;
  transition: background 100ms;
  position: relative;
}
.task-row:hover { background: var(--paper-2); }
.task-row.is-done { opacity: 0.55; }
.task-row.is-done .task-title { text-decoration: line-through; text-decoration-thickness: 1px; text-decoration-color: var(--ink-3); }
.task-checkbox {
  width: 18px; height: 18px;
  border: 1.5px solid var(--line-2);
  border-radius: 5px;
  display: grid; place-items: center;
  flex-shrink: 0;
  transition: background 100ms, border-color 100ms;
  background: transparent;
}
.task-checkbox:hover { border-color: var(--ink-3); }
.task-checkbox.is-checked {
  background: var(--good);
  border-color: var(--good);
  color: white;
}
.task-title { font-size: 13.5px; color: var(--ink); line-height: 1.35; }
.task-meta { display: flex; align-items: center; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
.task-meta-text { font-size: 11.5px; color: var(--ink-3); white-space: nowrap; }
.task-meta-text strong { color: var(--ink-2); font-weight: 500; }
.task-aside { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.task-aside .est { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }

.lane-foot {
  display: flex; align-items: center; gap: 12px;
  padding: 10px var(--card-pad);
  background: var(--paper-2);
  border-top: 1px solid var(--line);
  font-size: 12px;
  color: var(--ink-2);
}
.lane-empty {
  padding: 20px var(--card-pad);
  font-size: 13px;
  color: var(--ink-3);
  font-style: italic;
  border-top: 1px solid var(--line);
}

/* ---------- Hero / Today ---------- */
.hero {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 28px;
  align-items: end;
  margin-bottom: 28px;
}
.next-action {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 22px;
  box-shadow: var(--shadow-card);
  position: relative;
}
.next-action::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: var(--radius-lg);
  pointer-events: none;
  box-shadow: inset 0 0 0 1px var(--accent-soft);
  opacity: 0.6;
}
.next-action .eyebrow { color: var(--accent); margin-bottom: 14px; }
.next-action h3 {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 24px;
  line-height: 1.08;
  letter-spacing: -0.005em;
  margin: 0 0 10px;
}

/* gauges row */
.gauges {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin: 36px 0 36px;
}
.gauge {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 18px;
  display: flex; flex-direction: column; gap: 6px;
  position: relative;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 120ms;
}
.gauge:hover { border-color: var(--line-2); }
.gauge-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px;
  color: var(--ink-3);
}
.gauge-head .avatar { width: 18px; height: 18px; font-size: 9px; }
.gauge-statement {
  font-family: "Instrument Serif", serif;
  font-size: 18px;
  line-height: 1.15;
  letter-spacing: -0.005em;
  text-wrap: pretty;
  color: var(--ink);
  min-height: 3.5em;
  word-break: normal;
  overflow-wrap: break-word;
}
.gauge-statement em { font-style: italic; }
.gauge-statement .num { font-style: normal; color: var(--accent); font-variant-numeric: tabular-nums; }
.gauge-bar {
  margin-top: 8px;
  height: 4px;
  background: var(--line-3);
  border-radius: 999px;
  overflow: hidden;
}
.gauge-bar-fill {
  height: 100%;
  background: var(--ink);
  border-radius: 999px;
  transition: width 400ms ease;
}
.gauge.is-ready .gauge-bar-fill { background: var(--good); }
.gauge.is-ready .gauge-statement .num { color: var(--good); }
.gauge-foot {
  margin-top: 4px;
  font-size: 11.5px;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
  display: flex; align-items: center; gap: 6px;
  white-space: nowrap;
  flex-wrap: wrap;
  row-gap: 2px;
}

/* ---------- Section / divider ---------- */
.section { margin-top: var(--section-gap); }
.section-head {
  display: flex; align-items: baseline; gap: 14px;
  margin-bottom: 12px;
}
.section-head .h2 { flex: 1; }
.section-head .actions { display: flex; gap: 8px; }

.hr { height: 1px; background: var(--line); margin: 24px 0; border: 0; }

/* ---------- Forms ---------- */
.field-label { font-size: 12px; color: var(--ink-3); margin-bottom: 4px; }
.field-input {
  display: block;
  width: 100%;
  padding: 8px 10px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 13px;
  outline: none;
}
.field-input:focus { border-color: var(--ink-3); background: var(--paper); }

/* ---------- Modal / sheet ---------- */
.scrim {
  position: fixed; inset: 0;
  background: rgba(20, 14, 8, 0.32);
  display: grid; place-items: center;
  z-index: 50;
  animation: fadeIn 120ms ease-out;
}
[data-palette="coffee"] .scrim { background: rgba(0,0,0,0.55); }
[data-palette="slate"] .scrim { background: rgba(15,25,45,0.32); }
.sheet {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-pop);
  max-width: 720px;
  width: calc(100vw - 80px);
  max-height: calc(100vh - 80px);
  overflow: auto;
  animation: sheetIn 180ms ease-out;
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes sheetIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* ---------- Quick decision deck ---------- */
.deck-stage {
  display: grid; place-items: center;
  min-height: calc(100vh - 80px);
  padding: 40px 56px;
  position: relative;
}
.deck-card {
  width: min(560px, 100%);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-pop);
  padding: 32px;
  position: relative;
  transition: transform 240ms ease, opacity 240ms ease;
}
.deck-card.exit-keep { transform: translateX(60vw) rotate(8deg); opacity: 0; }
.deck-card.exit-skip { transform: translateX(-60vw) rotate(-8deg); opacity: 0; }
.deck-card.exit-up { transform: translateY(-60vh); opacity: 0; }
.deck-stack-behind {
  position: absolute;
  width: min(560px, 100%);
  height: 200px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  z-index: -1;
}
.deck-stack-behind.s1 { transform: translateY(8px) scale(0.97); opacity: 0.6; }
.deck-stack-behind.s2 { transform: translateY(16px) scale(0.94); opacity: 0.3; }

.deck-actions {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin-top: 24px;
}
.deck-action {
  padding: 14px;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  background: var(--paper-2);
  cursor: pointer;
  text-align: center;
  transition: background 100ms;
}
.deck-action:hover { background: var(--bg); }
.deck-action .label { font-size: 13px; font-weight: 500; }
.deck-action .key { display: block; font-size: 10.5px; color: var(--ink-3); margin-top: 4px; }
.deck-action.keep { background: var(--good-soft); border-color: transparent; color: var(--good); }
.deck-action.skip { background: var(--paper-2); }
.deck-action.review { background: var(--judgment-soft); border-color: transparent; color: var(--judgment); }

/* ---------- Board ---------- */
.board {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 18px;
}
.board-col {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 10px;
  min-height: 200px;
  display: flex; flex-direction: column; gap: 8px;
}
.board-col-head {
  display: flex; align-items: center; gap: 8px;
  padding: 4px 6px 8px;
  font-size: 12px;
  color: var(--ink-2);
  border-bottom: 1px solid var(--line);
  margin-bottom: 4px;
}
.board-col-count {
  margin-left: auto;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}
.board-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  cursor: grab;
  font-size: 13px;
  position: relative;
  transition: box-shadow 120ms, transform 120ms;
}
.board-card:hover { box-shadow: var(--shadow-card); }
.board-card.is-dragging { opacity: 0.4; }
.board-card.drag-target { box-shadow: 0 0 0 2px var(--accent); }
.board-card-title { font-size: 13px; line-height: 1.3; }
.board-card-meta { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }

/* ---------- Document tracker ---------- */
.doc-table {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.doc-row {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 100px 110px 120px 90px;
  gap: 12px;
  align-items: center;
  gap: 18px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
  cursor: pointer;
  transition: background 100ms;
}
.doc-row:last-child { border-bottom: 0; }
.doc-row:hover { background: var(--paper-2); }
.doc-row-header {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  cursor: default;
}
.doc-row-header:hover { background: var(--paper-2); }
.doc-status {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px;
}
.doc-status .pip {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--line-2);
}
.doc-status.received .pip { background: var(--good); }
.doc-status.classified .pip { background: var(--good); box-shadow: 0 0 0 2px var(--good-soft); }
.doc-status.requested .pip { background: var(--judgment); }
.doc-status.missing .pip { background: var(--blocker); }
.doc-status.not_applicable .pip { background: transparent; border: 1.5px solid var(--ink-4); }
.doc-status.needs-review .pip { background: var(--judgment); }
.doc-status.confirmed .pip { background: var(--good); box-shadow: 0 0 0 2px var(--good-soft); }
.doc-form-pill {
  font-size: 11px;
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--ink);
  color: var(--paper);
  font-family: "Geist Mono", monospace;
  letter-spacing: 0.04em;
  display: inline-flex;
  white-space: nowrap;
  line-height: 1.3;
  flex-shrink: 0;
}

/* Entity / form cell in the Documents table */
.doc-row-entity {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.doc-row-entity-text {
  min-width: 0;
}
.doc-row-entity-name {
  font-weight: 500;
  font-size: 13.5px;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------- Filing / Packet ---------- */
.packet-frame {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 36px 44px;
  box-shadow: var(--shadow-card);
  position: relative;
}
.packet-frame::before {
  content: "";
  position: absolute;
  top: 16px; left: 16px; right: 16px; bottom: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  pointer-events: none;
  opacity: 0.4;
}
.packet-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  border-bottom: 1px solid var(--line);
  padding-bottom: 18px;
  margin-bottom: 18px;
}

/* ---------- Filing history — archive of past returns at the bottom
     of the Filing surface. Cards open PastSeasonSheet. Filing
     deliberately hosts both current-year + history per
     SEASONAL-DESIGN.md. ---------- */
.fh-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}
.fh-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 18px 20px;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: border-color 120ms, transform 120ms;
}
.fh-card:hover { border-color: var(--ink-3); transform: translateY(-1px); }
.fh-card-head { display: flex; align-items: center; justify-content: space-between; }
.fh-year { font-size: 32px; letter-spacing: -0.015em; line-height: 1; color: var(--ink); }
.fh-card-result { display: flex; flex-direction: column; gap: 2px; }
.fh-card-result .serif { font-size: 22px; letter-spacing: -0.005em; line-height: 1.1; }
.fh-card-meta { color: var(--ink-3); }
.fh-card-notable {
  padding-top: 12px;
  border-top: 1px solid var(--line-2);
  margin-top: 2px;
}
.fh-card-notable-list {
  margin: 6px 0 0; padding: 0; list-style: none;
  display: flex; flex-direction: column; gap: 4px;
}
.fh-card-notable-list li::before {
  content: "·"; margin-right: 6px; color: var(--ink-3);
}

/* Filing readiness gates — two parallel pre-flight callouts shown on
   the Filing surface. One per concern: 2024 must be locked AND the
   checklist must be complete. Each shows its source-surface link.
   See SEASONAL-DESIGN.md → "Filing as the durable archive". */
.filing-gate {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 24px;
  font-size: 12.5px;
}
.filing-gate-blocker {
  background: var(--blocker-soft);
  color: var(--blocker);
  border-top: 1px solid color-mix(in oklch, var(--blocker) 20%, var(--line));
}
.filing-gate-ready {
  background: color-mix(in oklch, var(--good) 8%, var(--paper));
  color: var(--good);
  border-top: 1px solid color-mix(in oklch, var(--good) 22%, var(--line));
}
.filing-gate .btn {
  background: var(--paper);
  color: inherit;
}

/* ---------- Filing destinations ---------- */
.filing-channel-bar {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.filing-channel-cell {
  padding: 14px 18px;
  border-right: 1px solid var(--line);
  min-width: 0;
}
.filing-channel-cell:last-child { border-right: none; }

.filing-dest-list {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--paper);
  overflow: hidden;
}
.filing-dest-row {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 16px;
  padding: 18px 22px;
  align-items: start;
  border-bottom: 1px solid var(--line);
}
.filing-dest-row:last-child { border-bottom: none; }
.filing-dest-icon {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  color: var(--ink-2);
  margin-top: 2px;
}
.filing-dest-body { min-width: 0; }
.filing-dest-headline {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.filing-dest-label {
  font-size: 14.5px;
  font-weight: 500;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.filing-dest-forms {
  color: var(--ink-3);
}
.filing-dest-channel {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin-top: 6px;
  font-size: 12.5px;
  color: var(--ink-2);
}
.filing-dest-channel-arrow {
  color: var(--ink-4);
  font-size: 13px;
  line-height: 1.3;
  flex-shrink: 0;
}
.filing-dest-detail {
  margin: 8px 0 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--ink-3);
  max-width: 58ch;
}
.filing-dest-auth {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  font-size: 11.5px;
  color: var(--ink-3);
  padding: 4px 8px;
  background: var(--paper-2);
  border-radius: 999px;
  border: 1px solid var(--line);
}
.filing-dest-auth svg { color: var(--ink-3); }
.filing-dest-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  flex-shrink: 0;
}
.filing-dest-open {
  white-space: nowrap;
  text-decoration: none;
}
.filing-dest-open svg { transition: transform 120ms; }
.filing-dest-open:hover svg { transform: translateX(2px); }

@media (max-width: 720px) {
  .filing-channel-bar { grid-template-columns: 1fr; }
  .filing-channel-cell { border-right: none; border-bottom: 1px solid var(--line); }
  .filing-channel-cell:last-child { border-bottom: none; }
  .filing-dest-row { grid-template-columns: 36px 1fr; }
  .filing-dest-actions { grid-column: 2; flex-direction: row; align-items: center; }
}

/* ---------- Review workspace ---------- */
.review-layout {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 20px;
  align-items: start;
}
.review-main { display: flex; flex-direction: column; gap: 16px; }
.review-side { display: flex; flex-direction: column; gap: 14px; position: sticky; top: 24px; }
.evidence-link {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12.5px;
  cursor: pointer;
  transition: border-color 100ms;
}
.evidence-link:hover { border-color: var(--line-2); }
.evidence-icon {
  width: 26px; height: 32px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 3px;
  flex-shrink: 0;
  position: relative;
}
.evidence-icon::after {
  content: "";
  position: absolute; top: 3px; left: 3px; right: 3px; bottom: 14px;
  background: repeating-linear-gradient(180deg, var(--line) 0 1px, transparent 1px 4px);
}

/* ---------- Season setup ---------- */
.entity-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.entity-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex; align-items: center; gap: 14px;
  cursor: pointer;
  transition: border-color 100ms;
}
.entity-card:hover { border-color: var(--line-2); }
.entity-card.deactivated { opacity: 0.5; background: var(--paper-2); }
.entity-card.deactivated .entity-name { text-decoration: line-through; text-decoration-color: var(--ink-3); }
.entity-glyph {
  width: 36px; height: 36px;
  border-radius: 8px;
  background: var(--paper-2);
  display: grid; place-items: center;
  font-family: "Instrument Serif", serif;
  font-size: 16px;
  color: var(--ink-2);
  flex-shrink: 0;
}
.entity-name { font-size: 13.5px; line-height: 1.2; }
.entity-meta { font-size: 11.5px; color: var(--ink-3); margin-top: 2px; }

/* ---------- Checklist ---------- */
.checklist-tabs {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  margin-top: 28px;
}
.checklist-tab {
  text-align: left;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 14px 14px 12px;
  cursor: pointer;
  transition: border-color 120ms, background 120ms;
  display: flex; flex-direction: column; gap: 6px;
}
.checklist-tab:hover { border-color: var(--line-2); }
.checklist-tab.is-active {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.checklist-tab.is-active .dim { color: var(--ink-3); }
.checklist-tab-label { font-size: 12.5px; font-weight: 500; letter-spacing: -0.005em; }
.checklist-tab-meta { font-size: 18px; font-family: "Instrument Serif", serif; line-height: 1; }
.checklist-tab-meta .dim { font-size: 13px; color: var(--ink-3); }
.checklist-tab-bar { height: 2px; background: var(--line-3); border-radius: 999px; overflow: hidden; margin-top: 4px; }
.checklist-tab.is-active .checklist-tab-bar { background: rgba(255,255,255,0.12); }
.checklist-tab-bar > div { height: 100%; border-radius: 999px; transition: width 240ms; }
.checklist-tab.is-active .checklist-tab-bar > div { background: var(--paper) !important; }

.checklist-section {
  margin-top: 28px;
  border-top: 1px solid var(--line);
  padding-top: 18px;
}
.checklist-section-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px;
  margin-bottom: 8px;
}
.checklist-rows {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.checklist-row {
  display: grid;
  grid-template-columns: 22px 1fr auto 14px;
  align-items: center;
  gap: 14px;
  padding: 12px 16px 12px 18px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
  position: relative;
}
.checklist-row:last-child { border-bottom: 0; }
.checklist-row.is-clickable { cursor: pointer; }
.checklist-row.is-clickable:hover { background: var(--paper-2); }
.checklist-row.is-done .checklist-row-title { color: var(--ink-2); }
.checklist-row.is-skipped .checklist-row-title { color: var(--ink-3); text-decoration: line-through; text-decoration-color: var(--ink-4); text-decoration-thickness: 1px; }
.checklist-row.is-skipped .checklist-row-sub { color: var(--ink-3); }
.checklist-row-title { font-size: 13.5px; line-height: 1.3; }
.checklist-row-sub {
  font-size: 11.5px;
  color: var(--ink-3);
  margin-top: 3px;
  display: flex; gap: 8px;
  align-items: baseline;
  flex-wrap: wrap;
}
.checklist-row-sub > * + *::before { content: "·"; margin-right: 8px; color: var(--ink-4); }
.checklist-row-meta {
  display: flex; align-items: center; gap: 10px;
  white-space: nowrap;
}

@media (max-width: 1100px) {
  .checklist-tabs { grid-template-columns: repeat(3, 1fr); }
}
.row { display: flex; align-items: center; gap: 8px; }
.row-tight { display: flex; align-items: center; gap: 4px; }
.col { display: flex; flex-direction: column; }
.between { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.gap-2 { gap: 8px; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
.gap-6 { gap: 24px; }
.mt-1 { margin-top: 4px; }
.mt-2 { margin-top: 8px; }
.mt-3 { margin-top: 12px; }
.mt-4 { margin-top: 16px; }
.mt-6 { margin-top: 24px; }
.mt-8 { margin-top: 32px; }
.mb-1 { margin-bottom: 4px; }
.mb-2 { margin-bottom: 8px; }
.mb-3 { margin-bottom: 12px; }
.mb-4 { margin-bottom: 16px; }
.grow { flex: 1; }
.shrink-0 { flex-shrink: 0; }
.center { display: grid; place-items: center; }
.no-wrap { white-space: nowrap; }
.truncate { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.small { font-size: 12px; }
.tiny { font-size: 11px; }
.uppercase { text-transform: uppercase; letter-spacing: 0.12em; font-size: 11px; }

/* Selection */
::selection { background: var(--accent-soft); color: var(--ink); }
[data-palette="coffee"] ::selection { background: var(--accent); color: var(--ink); }

/* Subtle focus ring */
*:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ---------- Toasts ---------- */
.toast-stack {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column-reverse;
  gap: 8px;
  z-index: 70;
  pointer-events: none;
}
.toast {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px 10px 16px;
  background: var(--ink);
  color: var(--paper);
  border-radius: 10px;
  box-shadow: var(--shadow-pop);
  font-size: 13px;
  min-width: 320px;
  max-width: 480px;
  animation: toastIn 200ms ease-out;
}
@keyframes toastIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.toast-text { flex: 1; line-height: 1.4; }
.toast-action {
  background: transparent;
  color: var(--accent);
  font-size: 12.5px;
  font-weight: 500;
  padding: 4px 8px;
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
  border: 0;
  transition: background 100ms;
}
.toast-action:hover { background: rgba(255,255,255,0.08); }
.toast-close {
  background: transparent;
  color: var(--ink-3);
  padding: 4px;
  cursor: pointer;
  display: grid;
  place-items: center;
  border-radius: 4px;
  transition: color 100ms, background 100ms;
  border: 0;
}
.toast-close:hover { color: var(--paper); background: rgba(255,255,255,0.08); }

/* ---------- Document detail fields ---------- */
.doc-fields { display: flex; flex-direction: column; gap: 18px; }
.doc-fields-section-title {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line);
}
.doc-fields-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 18px;
}
.doc-field { padding: 4px 0; }
.doc-field-label {
  font-size: 11.5px;
  color: var(--ink-3);
  margin-bottom: 2px;
}
.doc-field-value {
  font-size: 15px;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.005em;
}
.doc-field-input { position: relative; }
.doc-field-prefix {
  position: absolute;
  left: 9px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ink-3);
  font-size: 13px;
  pointer-events: none;
}
.doc-field.is-editing .doc-field-value { display: none; }

.doc-summary {
  padding: 12px 14px;
  background: var(--paper-2);
  border-radius: 8px;
}

details > summary { list-style: none; }
details > summary::-webkit-details-marker { display: none; }
details[open] > summary::after { content: "  ▾"; color: var(--ink-3); font-size: 10px; }
details:not([open]) > summary::after { content: "  ▸"; color: var(--ink-3); font-size: 10px; }

/* ---------- Ingestion modal ---------- */
.ingest-timeline {
  display: flex; flex-direction: column;
  gap: 12px;
  padding: 8px 0;
}
.ingest-phase {
  display: flex; align-items: center; gap: 12px;
  transition: opacity 200ms;
}
.ingest-phase.is-pending { opacity: 0.4; }
.ingest-phase-dot {
  width: 22px; height: 22px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--paper-2);
  border: 1.5px solid var(--line-2);
  flex-shrink: 0;
  color: var(--paper);
  transition: all 200ms;
}
.ingest-phase.is-done .ingest-phase-dot {
  background: var(--good);
  border-color: var(--good);
}
.ingest-phase.is-active .ingest-phase-dot {
  background: var(--ink);
  border-color: var(--ink);
}
.ingest-phase-label {
  font-size: 13.5px;
  color: var(--ink);
}
.ingest-phase.is-pending .ingest-phase-label { color: var(--ink-3); }

.ingest-phase-pip {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--ink-3);
}
.ingest-spinner {
  width: 12px; height: 12px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.2);
  border-top-color: var(--paper);
  animation: ingest-spin 600ms linear infinite;
}
@keyframes ingest-spin {
  to { transform: rotate(360deg); }
}

/* ---------- Drag-and-drop target ---------- */
.checklist-section.is-drag-over {
  position: relative;
}
.checklist-section.is-drag-over .checklist-rows {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-tint);
  background: var(--accent-tint);
}
.checklist-section.is-drag-over::after {
  content: "Drop to upload";
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: var(--ink);
  color: var(--paper);
  font-size: 12.5px;
  font-weight: 500;
  padding: 8px 16px;
  border-radius: 999px;
  pointer-events: none;
  z-index: 10;
  box-shadow: var(--shadow-pop);
}

/* =========================================================
   Signals surface
   ========================================================= */

.signals-funnel {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  box-shadow: var(--shadow-card);
}
.signals-funnel-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 18px;
  margin-bottom: 16px;
}
.signals-funnel-stat {
  display: flex; align-items: baseline; gap: 12px;
  margin-top: 6px;
}
.signals-funnel-stat .serif { font-size: 38px; line-height: 1; letter-spacing: -0.015em; }
.signals-funnel-arrow { font-size: 28px; color: var(--ink-3); font-family: "Instrument Serif", serif; }
.signals-funnel-stat-meta { font-size: 12.5px; color: var(--ink-3); margin-left: 6px; }
.signals-funnel-legend {
  display: flex; gap: 16px;
  font-size: 11.5px; color: var(--ink-3);
  align-items: center;
  margin-top: 6px;
}
.legend-pip {
  display: inline-block; width: 10px; height: 10px; border-radius: 2px;
}
.legend-pip.kept { background: var(--good); }
.legend-pip.dropped { background: var(--line-2); }

.signals-funnel-bars { display: flex; flex-direction: column; gap: 6px; }
.signals-funnel-row {
  display: grid;
  grid-template-columns: 220px 1fr 220px;
  align-items: center;
  gap: 14px;
  padding: 6px 0;
}
.signals-funnel-stage {
  display: flex; align-items: center; gap: 10px;
  font-size: 12.5px;
  color: var(--ink-2);
}
.signals-funnel-num {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--paper-2);
  color: var(--ink-3);
  display: grid; place-items: center;
  font-size: 10.5px;
  border: 1px solid var(--line);
}
.signals-funnel-bar-track {
  height: 14px;
  position: relative;
  background: transparent;
  border-radius: 3px;
}
.signals-funnel-bar-in {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: var(--line-2);
  border-radius: 3px;
  opacity: 0.45;
}
.signals-funnel-bar-out {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: var(--good);
  border-radius: 3px;
  transition: width 400ms ease;
}
.signals-funnel-counts {
  font-size: 11.5px;
  color: var(--ink-2);
  text-align: right;
  white-space: nowrap;
}

/* Tabs row */
.signals-tabs, .rf-tabs {
  display: flex;
  gap: 6px;
  margin-top: 28px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 0;
}
.signals-tab, .rf-tab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 14px;
  font-size: 13px;
  color: var(--ink-2);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  transition: color 100ms, border-color 100ms;
  white-space: nowrap;
}
.signals-tab:hover, .rf-tab:hover { color: var(--ink); }
.signals-tab.is-active, .rf-tab.is-active {
  color: var(--ink);
  border-bottom-color: var(--ink);
  font-weight: 500;
}
.rf-tab.judgment.is-active {
  color: var(--judgment);
  border-bottom-color: var(--judgment);
}
.signals-tab-count, .rf-tab-count {
  font-size: 11px;
  color: var(--ink-3);
  background: var(--paper-2);
  padding: 1px 6px;
  border-radius: 999px;
}
.signals-tab.is-active .signals-tab-count, .rf-tab.is-active .rf-tab-count {
  background: var(--ink);
  color: var(--paper);
}

/* Explanation block reused across tabs */
.signals-feed-explain {
  max-width: 78ch;
  margin-top: 24px;
}

/* Feed list */
.signals-feed-list { display: flex; flex-direction: column; gap: 10px; }
.signal-card {
  display: grid;
  grid-template-columns: 4px 1fr;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}
.signal-card.v-muted { opacity: 0.65; }
.signal-card.v-dedup_merged { opacity: 0.7; }
.signal-card-rail { background: var(--ink-4); }
.signal-card-body { padding: 14px 18px; }
.signal-card-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px;
}
.signal-card-subject {
  font-family: "Instrument Serif", serif;
  font-size: 19px;
  line-height: 1.25;
  letter-spacing: -0.005em;
}
.signal-card-sender { font-size: 12px; color: var(--ink-2); margin-top: 4px; }
.signal-card-sender .mono { color: var(--ink-2); }
.signal-card-reasons {
  display: flex; flex-wrap: wrap;
  gap: 6px 14px;
}
.signal-reason {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px;
  color: var(--ink-2);
}
.signal-suggestion {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 12px;
  background: var(--accent-tint);
  color: var(--accent);
  border-radius: 6px;
  font-size: 12.5px;
  line-height: 1.4;
}
.signal-card-foot {
  display: flex; align-items: center; gap: 12px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
}

/* Pipeline tab */
.pipeline-list {
  display: flex; flex-direction: column;
  gap: 8px;
}
.pipeline-stage {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 16px;
  padding: 16px 20px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.pipeline-stage-num {
  font-size: 38px;
  line-height: 1;
  color: var(--ink-3);
  letter-spacing: -0.02em;
}
.pipeline-stage-name { font-size: 15px; font-weight: 500; }
.pipeline-stage-desc { font-size: 13px; color: var(--ink-2); margin-top: 4px; line-height: 1.5; max-width: 78ch; }
.pipeline-stage-flow {
  display: flex; align-items: center; gap: 12px;
  flex-wrap: wrap;
}
.pipeline-flow-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 13px;
}
.pipeline-flow-pill.out { background: var(--good-soft); color: var(--good); border-color: transparent; }
.pipeline-flow-arrow {
  display: flex; align-items: center; gap: 6px;
  flex: 1;
  min-width: 80px;
  max-width: 260px;
}
.pipeline-flow-arrow-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, var(--line) 0%, var(--line-2) 100%);
  position: relative;
}
.pipeline-flow-arrow-line::after {
  content: "→";
  position: absolute;
  right: -2px; top: -10px;
  color: var(--ink-3);
}
.pipeline-flow-drop {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px;
  background: transparent;
  border: 1px dashed var(--line-2);
  border-radius: 6px;
  font-size: 12px;
  color: var(--ink-3);
}

/* Principles */
.signals-philosophy {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 28px;
}
.signals-philosophy-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.signals-principle {
  padding: 16px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.signals-principle > svg { color: var(--accent); }
.signals-principle-title {
  font-family: "Instrument Serif", serif;
  font-size: 17px;
  line-height: 1.2;
  margin: 8px 0 4px;
}
.signals-principle p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--ink-2);
}

/* Sources table */
.source-row {
  display: grid;
  grid-template-columns: 1.6fr 80px 100px 90px 160px 130px 90px;
  align-items: center;
  gap: 14px;
  padding: 12px 18px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.source-row:last-child { border-bottom: 0; }
.source-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
}
.mute-bar {
  width: 80px; height: 4px;
  background: var(--line-3);
  border-radius: 999px;
  overflow: hidden;
}
.mute-bar > div {
  height: 100%; background: var(--good); border-radius: 999px;
}

/* Trust ladder */
.trust-ladder {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.trust-level {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 18px 18px 18px 24px;
  position: relative;
  overflow: hidden;
}
.trust-level-rail {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
}
.trust-level-head {
  display: flex; align-items: baseline; gap: 10px;
}
.trust-level-num {
  font-size: 24px;
  color: var(--ink-3);
  letter-spacing: -0.01em;
}
.trust-level-label {
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.005em;
}

/* =========================================================
   Rollforward (Season) surface
   ========================================================= */

.rf-tiles {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  margin-top: 26px;
}
.rf-tile {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 14px 16px;
  position: relative;
  overflow: hidden;
}
.rf-tile-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
}
.rf-tile-label { font-size: 11.5px; color: var(--ink-2); text-transform: uppercase; letter-spacing: 0.1em; }
.rf-tile-value {
  font-size: 38px;
  line-height: 1;
  margin-top: 10px;
  letter-spacing: -0.02em;
}
.rf-tile-desc {
  font-size: 11.5px;
  color: var(--ink-3);
  margin-top: 8px;
  line-height: 1.4;
  min-height: 2.8em;
}

.rf-cluster {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.rf-cluster-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 22px;
  display: flex;
  flex-direction: column;
}
.rf-cluster-head {
  font-size: 24px;
  line-height: 1.15;
  letter-spacing: -0.005em;
  margin: 8px 0 14px;
}
.rf-cluster-head em { font-style: italic; }
.rf-cluster-body { display: flex; flex-direction: column; gap: 6px; }
.rf-cluster-row {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 0;
  border-bottom: 1px dashed var(--line-3);
  font-size: 13px;
}
.rf-cluster-row:last-child { border-bottom: 0; }

.rf-source-card {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 18px 22px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  border-left: 3px solid var(--accent);
}

/* Carryover rows */
.cf-row {
  display: grid;
  grid-template-columns: 2fr 1fr 160px 160px 100px;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
}
.cf-row:last-child { border-bottom: 0; }
.cf-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
}

/* Estimate rows */
.est-row {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
}
.est-row:last-child { border-bottom: 0; }

/* Annual decision rows */
.ad-row {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 18px;
  border-bottom: 1px solid var(--line);
}
.ad-row:last-child { border-bottom: 0; }

/* Exception cards (used in both Season and Foreign tabs) */
.ex-list { display: flex; flex-direction: column; gap: 10px; }
.ex-card {
  display: grid;
  grid-template-columns: 4px 1fr;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.ex-rail { background: var(--blocker); }
.ex-body { padding: 16px 20px; }
.ex-title {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 20px;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.2;
}
.ex-blurb {
  margin: 0;
  font-size: 13px;
  color: var(--ink-2);
  line-height: 1.55;
  max-width: 80ch;
}

/* Foreign corp rows */
.fc-row {
  display: grid;
  grid-template-columns: 2.4fr 1fr 0.7fr 0.5fr 1.4fr 100px;
  align-items: center;
  gap: 14px;
  padding: 12px 18px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.fc-row:last-child { border-bottom: 0; }
.fc-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
}

/* Foreign account rows */
.fa-row {
  display: grid;
  grid-template-columns: 50px 130px 1.4fr 1.4fr 160px;
  align-items: center;
  gap: 14px;
  padding: 11px 18px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.fa-row:last-child { border-bottom: 0; }
.fa-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
}
.fa-row-tail { background: var(--paper-2); }
.fa-row-total {
  background: var(--ink);
  color: var(--paper);
  border-bottom: 0;
}
.fa-row-total .dim { color: var(--ink-3); }

/* Full-account modal */
.fa-full-row {
  display: grid;
  grid-template-columns: 40px 110px 1.4fr 1.4fr 70px 130px 140px;
  align-items: center;
  gap: 14px;
  padding: 10px 32px;
  border-bottom: 1px solid var(--line-3);
  font-size: 13px;
}
.fa-full-row:last-child { border-bottom: 0; }
.fa-full-row.is-flagged {
  background: var(--judgment-soft);
}
.fa-full-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  padding: 10px 32px;
  position: sticky;
  top: 0;
  z-index: 1;
}
.fa-full-sortable {
  background: transparent;
  border: 0;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  padding: 0;
  letter-spacing: inherit;
}
.fa-full-sortable:hover { color: var(--ink); }

/* Institution rollup chips */
.fa-rollup {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.fa-rollup-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 12px;
  cursor: pointer;
  transition: border-color 100ms, background 100ms;
}
.fa-rollup-pill:hover {
  border-color: var(--ink-3);
  background: var(--paper);
}
.fa-rollup-pill.is-active {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
  padding-right: 6px;
}
.fa-rollup-pill.is-active .fa-rollup-name { color: var(--paper); }
.fa-rollup-pill.is-active .fa-rollup-meta { color: rgba(255,255,255,0.65); }
.fa-rollup-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px; height: 18px;
  border-radius: 999px;
  background: rgba(255,255,255,0.18);
  color: var(--paper);
  transition: background 100ms;
  cursor: pointer;
}
.fa-rollup-clear:hover { background: rgba(255,255,255,0.3); }
.fa-rollup-name { color: var(--ink); }
.fa-rollup-meta { color: var(--ink-3); font-size: 11px; }

/* =========================================================
   Foreign accounts — 2025 working surface
   ========================================================= */

/* Drop zone */
.fa-dropzone {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 22px 26px;
  background: var(--paper);
  border: 1.5px dashed var(--line-2);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: border-color 120ms, background 120ms, transform 120ms;
}
.fa-dropzone:hover {
  border-color: var(--ink-3);
  background: var(--paper-2);
}
.fa-dropzone.is-drag-over {
  border-color: var(--accent);
  background: var(--accent-tint);
  box-shadow: 0 0 0 4px var(--accent-soft);
}
.fa-dropzone-icon {
  width: 56px; height: 56px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 14px;
  display: grid; place-items: center;
  color: var(--ink-2);
  flex-shrink: 0;
}
.fa-dropzone.is-drag-over .fa-dropzone-icon {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--paper);
}

/* Owner segmented control */
.fa-owner-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 12.5px;
  color: var(--ink-2);
  background: transparent;
  cursor: pointer;
  transition: background 100ms, color 100ms;
}
.fa-owner-pill:hover { color: var(--ink); }
.fa-owner-pill.is-active {
  background: var(--paper);
  color: var(--ink);
  box-shadow: var(--shadow-card);
}
.fa-owner-count {
  font-size: 11px;
  color: var(--ink-3);
  background: var(--paper-2);
  padding: 1px 6px;
  border-radius: 999px;
}
.fa-owner-pill.is-active .fa-owner-count {
  background: var(--bg);
  color: var(--ink-2);
}
.fa-owner-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
}
.fa-owner-dot-mark { background: var(--scope-mark); }
.fa-owner-dot-liang { background: var(--scope-liang); }
.fa-owner-dot-joint { background: var(--scope-shared); }

/* Owner chip in the row */
.fa-owner-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 8px;
  font-size: 11.5px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--paper-2);
  color: var(--ink-2);
}
.fa-owner-chip-mark  { border-color: var(--scope-mark);  color: var(--scope-mark); background: transparent; }
.fa-owner-chip-liang { border-color: var(--scope-liang); color: var(--scope-liang); background: transparent; }
.fa-owner-chip-joint { border-color: var(--scope-shared);color: var(--scope-shared); background: transparent; }

/* 2025 row layout */
.fa-2025-row {
  display: grid;
  grid-template-columns: 32px 110px 1.4fr 90px 95px 110px 130px 1fr;
  align-items: center;
  gap: 14px;
  padding: 12px 18px;
  border-bottom: 1px solid var(--line-3);
  font-size: 13px;
}
.fa-2025-row:last-child { border-bottom: 0; }
.fa-2025-row.is-dormant { opacity: 0.7; }
.fa-2025-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  padding: 10px 18px;
  border-bottom: 1px solid var(--line);
}

/* Ingest modal */
.ingest-stat-card {
  flex: 1;
  padding: 14px 18px;
  border-radius: var(--radius);
  border: 1px solid transparent;
}
.ingest-stat-card.good { background: var(--good-soft); }
.ingest-stat-card.judgment { background: var(--judgment-soft); }
.ingest-stat-card.blocker { background: var(--blocker-soft); }

.ingest-match-row {
  display: grid;
  grid-template-columns: 40px 110px 1.6fr 130px 180px;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line-3);
  font-size: 12.5px;
}
.ingest-match-row:last-child { border-bottom: 0; }
.ingest-match-row-head {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
}

/* Inline 2025-max editor (foreign accounts row) */
.fa-value-button {
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  cursor: text;
  color: inherit;
  font-variant-numeric: tabular-nums;
  border-radius: 4px;
  transition: background 100ms;
  letter-spacing: -0.005em;
}
.fa-value-button:hover {
  background: var(--paper-2);
  box-shadow: 0 0 0 4px var(--paper-2);
}
.fa-edit-input {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  width: 100%;
  border-bottom: 1.5px solid var(--accent);
  padding: 2px 0;
  background: var(--paper-2);
  border-radius: 4px 4px 0 0;
}
.fa-edit-prefix {
  font-family: "Geist", sans-serif;
  font-size: 13px;
  color: var(--ink-3);
  padding-left: 6px;
}
.fa-edit-input input {
  background: transparent;
  border: 0;
  outline: none;
  font: inherit;
  font-family: "Instrument Serif", serif;
  font-size: 16px;
  text-align: right;
  width: 100%;
  padding: 2px 6px 2px 0;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.005em;
}

/* Clear-X button in the search input */
.fa-clear-x {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: var(--paper-2);
  border: 0;
  color: var(--ink-2);
  cursor: pointer;
  transition: background 100ms, color 100ms;
}
.fa-clear-x:hover {
  background: var(--ink);
  color: var(--paper);
}

/* Active-filter banner */
.fa-filter-banner {
  margin-top: 12px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 14px;
  background: var(--accent-tint);
  border: 1px solid var(--accent-soft);
  border-radius: var(--radius);
}
.fa-active-filter {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 10px 4px 12px;
  background: var(--paper);
  border: 1px solid var(--accent-soft);
  border-radius: 999px;
  font-size: 12px;
  cursor: pointer;
  color: var(--ink);
  transition: background 100ms, border-color 100ms;
}
.fa-active-filter:hover {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.fa-active-filter:hover .dim { color: var(--ink-3); }
.fa-active-filter strong { font-weight: 500; }
.fa-clear-all {
  margin-left: auto;
  color: var(--accent);
  font-weight: 500;
}
.fa-clear-all:hover { background: var(--paper); }

/* =========================================================
   Foreign entities (Form 5471) — corp row + evidence panel
   ========================================================= */

.fe-corp {
  border-bottom: 1px solid var(--line);
}
.fe-corp:last-child { border-bottom: 0; }
.fe-corp.is-expanded {
  background: var(--paper-2);
}

.fe-corp-row {
  display: grid;
  grid-template-columns: 28px 1.6fr 1fr 130px 200px 130px;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  cursor: pointer;
  transition: background 100ms;
}
.fe-corp-row:hover { background: var(--paper-2); }
.fe-corp.is-expanded .fe-corp-row {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.fe-corp-toggle {
  display: grid;
  place-items: center;
  width: 22px; height: 22px;
  border-radius: 6px;
  color: var(--ink-3);
  background: transparent;
  cursor: pointer;
  transition: background 100ms, color 100ms;
}
.fe-corp-toggle:hover {
  background: var(--paper-2);
  color: var(--ink);
}

.fe-progress-bar {
  width: 100%;
  height: 5px;
  background: var(--line-3);
  border-radius: 999px;
  overflow: hidden;
}
.fe-progress-fill {
  height: 100%;
  border-radius: 999px;
  transition: width 280ms ease;
}
.fe-progress-fill.fe-stage-missing  { background: var(--blocker); }
.fe-progress-fill.fe-stage-partial  { background: var(--judgment); }
.fe-progress-fill.fe-stage-complete { background: var(--good); }

/* Expanded evidence panel */
.fe-evidence-panel {
  padding: 18px 24px 24px;
  background: var(--paper-2);
  border-top: 1px solid var(--line);
}
.fe-evidence-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.fe-evidence-item {
  display: grid;
  grid-template-columns: 24px 1fr 130px;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  transition: border-color 100ms;
}
.fe-evidence-item:hover { border-color: var(--line-2); }
.fe-evidence-item.is-received {
  background: var(--good-soft);
  border-color: transparent;
}
.fe-evidence-item.is-received .fe-evidence-label { color: var(--good); }
.fe-evidence-check {
  width: 20px; height: 20px;
  border: 1.5px solid var(--line-2);
  border-radius: 6px;
  display: grid;
  place-items: center;
  background: var(--paper);
  cursor: pointer;
  flex-shrink: 0;
  transition: background 100ms, border-color 100ms;
}
.fe-evidence-check:hover {
  border-color: var(--ink-3);
}
.fe-evidence-item.is-received .fe-evidence-check {
  background: var(--good);
  border-color: var(--good);
  color: white;
}
.fe-evidence-label {
  font-size: 13.5px;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px;
  font-weight: 500;
  letter-spacing: -0.005em;
}
.fe-evidence-sched {
  font-size: 10.5px;
  color: var(--ink-3);
  background: var(--paper-2);
  padding: 1px 6px;
  border-radius: 4px;
  letter-spacing: 0.04em;
  font-weight: 400;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
/* Don't let the form-ref's dotted-border + tooltip wrapping break the pill. */
.fe-evidence-sched .form-ref {
  border-bottom: 0;
  padding: 0;
}
.fe-evidence-sched .form-ref:hover,
.fe-evidence-sched .form-ref:focus-visible {
  background: transparent;
}
.fe-evidence-item.is-received .fe-evidence-sched {
  background: rgba(255,255,255,0.4);
}

/* fc-row hover (used by Rollforward → Foreign filings list) */
.fc-row.is-clickable {
  transition: background 100ms;
}
.fc-row.is-clickable:hover {
  background: var(--paper-2);
}

/* Forms inventory */
.forms-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: 14px;
}
.forms-group { padding: 22px; }
.forms-pills {
  display: flex; flex-wrap: wrap;
  gap: 6px;
}

/* Responsive */
@media (max-width: 1100px) {
  .rf-tiles { grid-template-columns: repeat(3, 1fr); }
  .rf-cluster { grid-template-columns: 1fr; }
  .signals-philosophy-grid { grid-template-columns: repeat(2, 1fr); }
  .trust-ladder { grid-template-columns: 1fr 1fr; }
  .signals-funnel-row { grid-template-columns: 160px 1fr 180px; }
  .forms-grid { grid-template-columns: 1fr; }
}


/* ============================================================
   Form / Schedule reference tooltips
   ============================================================ */

.form-ref {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  position: relative;
  cursor: help;
  padding: 0 2px;
  border-bottom: 1px dotted var(--line-2);
  color: inherit;
  outline: none;
  transition: background 120ms, border-color 120ms;
}
.form-ref:hover,
.form-ref:focus-visible {
  background: var(--accent-tint);
  border-bottom-color: var(--accent);
}
.form-ref-token {
  font-variant-numeric: tabular-nums;
}
.form-ref > svg { opacity: 0.55; transition: opacity 120ms; }
.form-ref:hover > svg,
.form-ref:focus-visible > svg { opacity: 1; color: var(--accent); }

.form-ref-tip {
  position: absolute;
  z-index: 1000;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  width: 280px;
  background: var(--paper);
  border: 1px solid var(--line-2);
  border-radius: 10px;
  padding: 12px 14px;
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity 140ms ease, transform 140ms ease;
  white-space: normal;
  text-align: left;
  font-style: normal;
  font-weight: 400;
  font-family: inherit;
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: var(--ink);
  cursor: default;
}
.form-ref:hover .form-ref-tip,
.form-ref:focus-visible .form-ref-tip,
.form-ref-tip:hover {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
/* small arrow */
.form-ref-tip::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--paper);
  filter: drop-shadow(0 1px 0 var(--line-2));
}
.form-ref-tip-title {
  font-family: "Instrument Serif", serif;
  font-size: 16px;
  line-height: 1.15;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.form-ref-tip-sub {
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-top: 2px;
  margin-bottom: 4px;
}
.form-ref-tip-desc {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--ink-2);
}
.form-ref-tip-link {
  margin-top: 8px;
  font-size: 12px;
  color: var(--accent);
  text-decoration: none;
  font-weight: 500;
  align-self: flex-start;
  padding: 4px 8px;
  background: var(--accent-tint);
  border-radius: 4px;
  transition: background 100ms;
}
.form-ref-tip-link:hover {
  background: var(--accent-soft);
}

/* Flip the tooltip downward when there's no room above */
@media (max-height: 600px) {
  .form-ref-tip { bottom: auto; top: calc(100% + 8px); transform: translateX(-50%) translateY(-4px); }
  .form-ref-tip::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--paper); }
  .form-ref:hover .form-ref-tip,
  .form-ref:focus-visible .form-ref-tip,
  .form-ref-tip:hover { transform: translateX(-50%) translateY(0); }
}

/* ============================================================
   <HelpTip> — standalone info icon with a richer hover tooltip
   ============================================================ */
.help-tip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  cursor: help;
  color: var(--ink-3);
  background: transparent;
  border: 1px solid var(--line-2);
  position: relative;
  outline: none;
  transition: color 120ms, background 120ms, border-color 120ms;
}
.help-tip:hover,
.help-tip:focus-visible {
  color: var(--accent);
  background: var(--accent-tint);
  border-color: var(--accent);
}
.help-tip-pop {
  position: absolute;
  z-index: 1000;
  top: calc(100% + 10px);
  left: 0;
  width: 360px;
  background: var(--paper);
  border: 1px solid var(--line-2);
  border-radius: 12px;
  box-shadow: 0 18px 40px -16px rgba(0,0,0,0.25), 0 4px 12px -4px rgba(0,0,0,0.08);
  padding: 16px 18px;
  display: none;
  flex-direction: column;
  gap: 10px;
  color: var(--ink);
  text-align: left;
  cursor: default;
  /* Reset any cascading text styling — HelpTip is often placed inside
     an .eyebrow which has uppercase + heavy letter-spacing. The popup
     content is normal body copy and shouldn't inherit that. */
  text-transform: none;
  letter-spacing: normal;
  font-weight: 400;
}
.help-tip:hover .help-tip-pop,
.help-tip:focus-visible .help-tip-pop,
.help-tip-pop:hover {
  display: flex;
}
.help-tip-pop::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 4px;
  border: 6px solid transparent;
  border-bottom-color: var(--paper);
}
.help-tip-pop::after {
  content: "";
  position: absolute;
  bottom: calc(100% + 1px);
  left: 4px;
  border: 6px solid transparent;
  border-bottom-color: var(--line-2);
  z-index: -1;
}
.help-tip-title {
  font-weight: 500;
  font-size: 13px;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.help-tip-para {
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--ink-2);
}
.help-tip-para strong { color: var(--ink); font-weight: 500; }
.help-tip-para em { font-style: italic; color: var(--ink-2); }
.help-tip-link {
  font-size: 12px;
  color: var(--accent);
  text-decoration: none;
  align-self: flex-start;
  border-bottom: 1px solid transparent;
  transition: border-color 120ms;
}
.help-tip-link:hover { border-bottom-color: var(--accent); }

/* When the section sits near the right edge, anchor the popover to the right
   of the icon instead so it doesn't overflow the viewport. */
@media (max-width: 900px) {
  .help-tip-pop { width: min(320px, 80vw); }
}

/* ============================================================
   Section-level "Marked not applicable" styling
   ============================================================ */
.checklist-section.is-section-skipped .checklist-section-head > div:first-child > h3 {
  text-decoration: line-through;
  text-decoration-color: var(--ink-4);
  text-decoration-thickness: 1px;
  color: var(--ink-3);
}
.checklist-section.is-section-skipped .checklist-rows {
  opacity: 0.7;
}


/* ============================================================
   Kickoff (annual setup) surface and sidebar
   ============================================================ */

/* ---- Compact sidebar shown during Kickoff ---- */
.sidebar-kickoff .sidebar-eyebrow {
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin: 18px 4px 10px;
}
.kickoff-nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.kickoff-nav-item {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 10px 10px;
  border-radius: 8px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  color: var(--ink-2);
  transition: background 120ms;
}
.kickoff-nav-item:hover:not(:disabled) { background: var(--paper-2); }
.kickoff-nav-item:disabled { cursor: not-allowed; color: var(--ink-4); }
.kickoff-nav-item.is-active {
  background: var(--ink);
  color: var(--paper);
}
.kickoff-nav-item.is-active .kickoff-nav-sub { color: rgba(255,255,255,0.65); }
.kickoff-nav-item.is-done { color: var(--ink-2); }
.kickoff-nav-item.is-done .kickoff-nav-num {
  background: var(--good);
  color: white;
  border-color: var(--good);
}
.kickoff-nav-num {
  width: 22px; height: 22px;
  flex-shrink: 0;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11.5px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  background: var(--paper);
  border: 1px solid var(--line-2);
  color: var(--ink-3);
}
.kickoff-nav-item.is-active .kickoff-nav-num {
  background: var(--paper);
  color: var(--ink);
  border-color: var(--paper);
}
.kickoff-nav-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}
.kickoff-nav-label {
  font-size: 13px;
  font-weight: 500;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kickoff-nav-sub {
  font-size: 11px;
  color: var(--ink-3);
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kickoff-note {
  margin-top: 18px;
  padding: 10px 12px;
  background: var(--paper-2);
  border-radius: 8px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 11.5px;
  color: var(--ink-3);
  line-height: 1.45;
}
.kickoff-note > svg { flex-shrink: 0; margin-top: 1px; opacity: 0.7; }

/* ---- Kickoff surface (main pane) ---- */
.kickoff-surface {
  max-width: 920px;
}

/* Top stepper — visible inline as well as in the sidebar so the user always
   sees the four-beat shape. Numbered pills connected by a line. */
.kickoff-stepper {
  display: flex;
  align-items: center;
  gap: 0;
  margin-bottom: 28px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.kickoff-step {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px 4px 4px;
  background: transparent;
  border: 0;
  cursor: pointer;
  position: relative;
  font: inherit;
  color: var(--ink-3);
  border-radius: 999px;
  transition: background 120ms;
}
.kickoff-step + .kickoff-step::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--line-2);
  margin-right: 8px;
}
.kickoff-step:disabled { cursor: not-allowed; }
.kickoff-step:hover:not(:disabled) { background: var(--paper-2); }
.kickoff-step-num {
  width: 22px; height: 22px;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11.5px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  background: var(--paper-2);
  border: 1px solid var(--line-2);
  color: var(--ink-3);
  transition: background 120ms, color 120ms, border-color 120ms;
}
.kickoff-step-label { font-size: 13px; }
.kickoff-step-active .kickoff-step-num {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.kickoff-step-active .kickoff-step-label { color: var(--ink); font-weight: 500; }
.kickoff-step-done .kickoff-step-num {
  background: var(--good);
  color: white;
  border-color: var(--good);
}
.kickoff-step-done .kickoff-step-label { color: var(--ink-2); }
.kickoff-step-future .kickoff-step-num { background: transparent; }

.kickoff-step-body { padding-bottom: 80px; }
.kickoff-step-body .eyebrow { color: var(--accent); }

/* ---- Step 1 · Upload ---- */
.kickoff-onfile {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  margin-top: 28px;
  padding: 22px 24px;
  background: color-mix(in oklch, var(--good) 6%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--good) 28%, var(--line));
  border-radius: 14px;
}
.kickoff-onfile-glyph {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: color-mix(in oklch, var(--good) 14%, var(--paper));
  color: var(--good);
  display: grid;
  place-items: center;
}
.kickoff-onfile-actions {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
}
.kickoff-drop {
  margin-top: 28px;
  padding: 56px 24px;
  background: var(--paper);
  border: 2px dashed var(--line-2);
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-align: center;
  cursor: pointer;
  transition: background 120ms, border-color 120ms;
  outline: none;
}
.kickoff-drop:hover,
.kickoff-drop:focus-visible {
  background: var(--paper-2);
  border-color: var(--ink-3);
}
.kickoff-drop.is-over {
  background: var(--accent-tint);
  border-color: var(--accent);
}
.kickoff-drop-title {
  font-size: 17px;
  font-family: "Instrument Serif", "Source Serif 4", Georgia, serif;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.kickoff-drop-sub {
  font-size: 12.5px;
  color: var(--ink-3);
  margin-top: 6px;
}

/* ---- Multi-file upload queue ---- */
.kickoff-multi-queue {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  padding: 16px 18px;
}
.kickoff-multi-queue-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.kickoff-multi-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.kickoff-multi-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper-2);
  transition: border-color 120ms, background 120ms;
}
.kickoff-multi-row.is-parsing { border-color: var(--judgment); background: var(--paper); }
.kickoff-multi-row.is-done    { border-color: var(--good); background: var(--paper); }
.kickoff-multi-row.is-failed  { border-color: var(--blocker); }
.kickoff-multi-row-head {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
}
.kickoff-multi-row-filename {
  font-size: 13px;
  color: var(--ink);
  font-weight: 500;
  word-break: break-all;
}
.kickoff-multi-row-primary {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  padding: 2px 7px;
  background: var(--accent-tint);
  border-radius: 999px;
}
.kickoff-multi-row-meta {
  display: flex; gap: 6px; align-items: center;
  font-size: 11.5px;
  color: var(--ink-3);
  margin-top: 4px;
  flex-wrap: wrap;
}
.kickoff-multi-row-sep { color: var(--line-2); }
.kickoff-multi-row-status.good     { color: var(--good); font-weight: 500; }
.kickoff-multi-row-status.judgment { color: var(--judgment); font-weight: 500; }
.kickoff-multi-row-status.blocker  { color: var(--blocker); font-weight: 500; }
.kickoff-multi-row-error { color: var(--blocker); font-size: 11px; }
.kickoff-multi-row-bar {
  margin-top: 8px;
  height: 3px;
  background: var(--paper-2);
  border-radius: 999px;
  overflow: hidden;
}
.kickoff-multi-row-bar-fill {
  height: 100%;
  background: var(--accent);
  transition: width 220ms cubic-bezier(0.4, 0, 0.2, 1);
}
.kickoff-multi-row.is-done .kickoff-multi-row-bar-fill { background: var(--good); }
.kickoff-multi-add {
  margin-top: 12px;
  display: inline-flex; align-items: center; gap: 6px;
}

/* ---- Origination history strip on carryover detail ---- */
.co-history-strip {
  margin-top: 24px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper-2);
}
.co-history-strip-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 12px;
}
.co-history-strip-empty {
  font-size: 13px;
  color: var(--ink-3);
  line-height: 1.5;
}
.co-history-strip-empty strong { color: var(--ink-2); }
.co-history-layers {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.co-history-layer {
  display: grid;
  grid-template-columns: 60px 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 8px 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 13px;
}
.co-history-layer-year {
  font-family: "Instrument Serif", serif;
  font-size: 19px;
  color: var(--ink);
}
.co-history-layer-source {
  font-size: 11.5px;
  color: var(--ink-3);
  font-feature-settings: "tnum" 1;
}
.co-history-layer-source-mono { font-family: "Geist Mono", monospace; font-size: 11px; color: var(--ink-2); }
.co-history-layer-amount {
  font-feature-settings: "tnum" 1;
  font-weight: 500;
  color: var(--ink);
}
.co-history-layer.is-unverified .co-history-layer-amount {
  color: var(--judgment);
}
.co-history-strip-cta {
  margin-top: 12px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--accent);
  text-decoration: none;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  font-family: inherit;
}
.co-history-strip-cta:hover { text-decoration: underline; }

/* ---- Filing units tab — prior return attachment ---- */
.ws-fu-prior-return {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--ink-3);
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper-2);
}
.ws-fu-prior-return.is-parsed { color: var(--good); border-color: var(--good); }
.ws-fu-prior-return.is-pending { color: var(--judgment); border-color: var(--judgment); }
/* ----- Filing history table (compact, row-per-year) -----
   Replaces the older .fh-grid + .fh-card layout. Each row is ~44px;
   click to expand inline with full per-year stats. Scales cleanly
   to 10–20+ rows without dominating the page. */
.fh-table {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  background: var(--paper);
}
.fh-table-head,
.fh-row {
  display: grid;
  grid-template-columns: 64px 110px 110px 110px 1fr 130px;
  gap: 16px;
  align-items: center;
  padding: 10px 18px;
  text-align: left;
}
.fh-table-head {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  padding-top: 11px;
  padding-bottom: 11px;
}
.fh-col-result { text-align: right; }
.fh-col-prior  { text-align: right; }
.fh-row {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
  font-family: inherit;
  color: var(--ink);
  transition: background 80ms;
}
.fh-row:last-of-type { border-bottom: 0; }
.fh-row:hover { background: var(--paper-2); }
.fh-row.is-open { background: var(--paper-2); border-bottom-color: var(--line-2); }
.fh-row-year {
  font-size: 22px;
  letter-spacing: -0.01em;
  line-height: 1;
}
.fh-row-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--ink-2);
}
.fh-status-pip {
  display: inline-block;
  width: 7px; height: 7px;
  border-radius: 999px;
  flex-shrink: 0;
}
.fh-status-pip.is-filed { background: var(--good); }
.fh-status-pip.is-late  { background: var(--judgment); }
.fh-row-result {
  font-feature-settings: "tnum" 1;
  font-weight: 500;
  font-size: 14px;
  text-align: right;
}
.fh-row-result.is-refund  { color: var(--good); }
.fh-row-result.is-balance { color: var(--accent); }
.fh-row-filed { white-space: nowrap; }
.fh-row-notable {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fh-row-prior {
  display: inline-flex;
  justify-content: flex-end;
  align-items: center;
}
.fh-row-prior-pill,
.fh-row-prior-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 9px;
  font-size: 11px;
  border-radius: 5px;
  border: 1px solid var(--line);
  background: var(--paper);
  font-family: inherit;
  color: var(--ink-3);
  cursor: pointer;
}
.fh-row-prior-pill.is-parsed { color: var(--good); border-color: var(--good); cursor: default; }
.fh-row-prior-pill.is-pending { color: var(--judgment); border-color: var(--judgment); cursor: default; }
.fh-row-prior-cta { color: var(--accent); }
.fh-row-prior-cta:hover { background: var(--accent-tint); border-color: var(--accent); }

/* Inline expand panel */
.fh-row-expand {
  padding: 16px 22px 18px;
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.fh-row-expand:last-child { border-bottom: 0; }
.fh-expand-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 18px;
}
.fh-expand-stat { min-width: 0; }
.fh-expand-notable .fh-expand-notable-list {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fh-expand-notable-list li::before {
  content: "·";
  margin-right: 6px;
  color: var(--ink-3);
}
.fh-expand-actions {
  display: flex;
  justify-content: flex-end;
}
}
.kickoff-explainer {
  margin-top: 36px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
}
@media (max-width: 800px) {
  .kickoff-explainer { grid-template-columns: 1fr; }
}
.kickoff-explainer-col .eyebrow { color: var(--accent); }
.kickoff-bullets {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.kickoff-bullets li {
  font-size: 13px;
  color: var(--ink-2);
  line-height: 1.45;
  padding-left: 18px;
  position: relative;
}
.kickoff-bullets li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 8px;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--ink-3);
}
.kickoff-bullets-foot {
  margin-top: 14px;
  font-size: 12px;
  color: var(--ink-3);
  font-style: italic;
  line-height: 1.5;
  border-left: 2px solid var(--line-2);
  padding-left: 10px;
}
.kickoff-revisit {
  margin-top: 24px;
  padding: 12px 16px;
  background: var(--good-soft);
  border-radius: 10px;
  display: flex;
  gap: 10px;
  align-items: center;
}

/* ---- Step 1 · Parsing card ---- */
.kickoff-parsing-card {
  margin-top: 28px;
  padding: 24px 26px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
}
.kickoff-spinner {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 2.5px solid var(--line-2);
  border-top-color: var(--ink);
  animation: kickoffSpin 850ms linear infinite;
}
@keyframes kickoffSpin {
  to { transform: rotate(360deg); }
}
.kickoff-progress-track {
  margin-top: 18px;
  height: 6px;
  background: var(--paper-2);
  border-radius: 999px;
  overflow: hidden;
}
.kickoff-progress-bar {
  height: 100%;
  background: var(--ink);
  border-radius: 999px;
  transition: width 220ms ease-out;
}
.kickoff-stage-list {
  list-style: none;
  margin: 18px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.kickoff-stage {
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 12.5px;
  color: var(--ink-3);
  line-height: 1.4;
}
.kickoff-stage-marker {
  width: 16px; height: 16px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--paper-2);
  color: var(--ink-3);
  font-size: 10px;
  flex-shrink: 0;
}
.kickoff-stage-text {
  flex: 1;
  min-width: 0;
}
.kickoff-stage.is-done .kickoff-stage-marker {
  background: var(--good);
  color: white;
}
.kickoff-stage.is-done { color: var(--ink-2); }
.kickoff-stage.is-active {
  color: var(--ink);
  font-weight: 500;
}
.kickoff-stage.is-active .kickoff-stage-marker {
  background: var(--ink);
  color: var(--paper);
  animation: kickoffPulse 1200ms infinite;
}
@keyframes kickoffPulse {
  0%, 100% { box-shadow: 0 0 0 0 var(--ink); }
  50% { box-shadow: 0 0 0 4px transparent; }
}

/* ---- Step 2 · Review ---- */
.kickoff-summary-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 12px;
}
@media (max-width: 800px) {
  .kickoff-summary-grid { grid-template-columns: repeat(2, 1fr); }
}
.kickoff-summary-cell {
  background: var(--paper);
  padding: 18px 22px;
  position: relative;
}
.kickoff-summary-cell:nth-child(1) { border-top-left-radius: 11px; }
.kickoff-summary-cell:nth-child(3) { border-top-right-radius: 11px; }
.kickoff-summary-cell:nth-last-child(3) { border-bottom-left-radius: 11px; }
.kickoff-summary-cell:nth-last-child(1) { border-bottom-right-radius: 11px; }
@media (max-width: 800px) {
  .kickoff-summary-cell:nth-child(1) { border-top-left-radius: 11px; border-top-right-radius: 0; }
  .kickoff-summary-cell:nth-child(2) { border-top-right-radius: 11px; }
  .kickoff-summary-cell:nth-child(3) { border-top-left-radius: 0; border-top-right-radius: 0; }
  .kickoff-summary-cell:nth-last-child(2) { border-bottom-left-radius: 11px; }
  .kickoff-summary-cell:nth-last-child(1) { border-bottom-right-radius: 11px; }
}
.kickoff-carryover-row {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 18px;
  border-top: 1px solid var(--line);
}
.kickoff-carryover-row:first-child { border-top: 0; }
.kickoff-exception-row {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}
.kickoff-exception-head {
  width: 100%;
  background: transparent;
  border: 0;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  cursor: pointer;
  font: inherit;
  transition: background 120ms;
}
.kickoff-exception-head:hover { background: var(--paper-2); }
.kickoff-exception-grow {
  flex: 1;
  min-width: 0;
  text-align: left;
}
.kickoff-exception-blurb {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kickoff-exception-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.kickoff-exception-body {
  padding: 0 16px 14px 36px;
  color: var(--ink-2);
  line-height: 1.55;
  border-top: 1px solid var(--line);
}

/* ---- Step 3 · Setup cards ---- */
.kickoff-setup-progress {
  margin-top: 18px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.kickoff-setup-progress-bar {
  flex: 1;
  height: 6px;
  background: var(--paper-2);
  border-radius: 999px;
  overflow: hidden;
}
.kickoff-setup-progress-bar > div {
  height: 100%;
  background: var(--ink);
  border-radius: 999px;
  transition: width 220ms ease-out;
}
.kickoff-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  display: grid;
  grid-template-columns: 4px 1fr;
  /* DO NOT add `overflow: hidden` to this card. The setup-card prompts contain
     <HelpTip> popovers which are absolutely positioned and need to escape the
     card boundary — `overflow: hidden` clips them to the cream box, which is
     a bug we hit before. Keep the rounded corners on the rail itself
     (border-top-left-radius + border-bottom-left-radius below) instead of
     relying on the card to clip. */
  transition: border-color 120ms;
}
.kickoff-card.is-answered { border-color: var(--good); }
.kickoff-card-rail {
  background: var(--line-2);
  border-top-left-radius: 11px;
  border-bottom-left-radius: 11px;
}
.kickoff-card-rail[data-answer="confirm"],
.kickoff-card-rail[data-answer="no"],
.kickoff-card-rail[data-answer="answered"] { background: var(--good); }
.kickoff-card-rail[data-answer="changed"],
.kickoff-card-rail[data-answer="yes"],
.kickoff-card-rail[data-answer="new"] { background: var(--judgment); }
.kickoff-card-rail[data-answer="not_sure"] { background: var(--blocker); }
.kickoff-card-body {
  padding: 20px 24px;
}
.kickoff-card-title {
  font-size: 19px;
  font-weight: 400;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.25;
  display: inline-block;
}
.kickoff-card-from-pyl {
  margin-left: 10px;
  padding: 1px 7px;
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  background: transparent;
  color: var(--ink-3);
  border: 1px solid var(--line-2);
  vertical-align: middle;
  position: relative;
  top: -2px;
}
.kickoff-card-icon {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--paper-2);
  color: var(--ink-3);
  display: grid; place-items: center;
  flex-shrink: 0;
}
.kickoff-card-default {
  margin-top: 14px;
  padding: 10px 14px;
  background: var(--paper-2);
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.kickoff-card-chips-wrap {
  margin-top: 12px;
}
.kickoff-chips-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  border: 0;
  padding: 4px 0;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  color: var(--ink-2);
}
.kickoff-chips-toggle:hover { color: var(--ink); }
.kickoff-answer-row {
  margin-top: 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}
.kickoff-answer-pill {
  padding: 5px 14px;
  border-radius: 999px;
  font-size: 12.5px;
  border: 0;
  background: transparent;
  cursor: pointer;
  color: var(--ink-2);
  font: inherit;
  white-space: nowrap;
  transition: background 120ms, color 120ms;
}
.kickoff-answer-pill:hover { background: var(--paper); }
.kickoff-answer-pill.is-active {
  background: var(--ink);
  color: var(--paper);
}
.kickoff-answer-pill.is-active[data-answer="confirm"],
.kickoff-answer-pill.is-active[data-answer="no"]      { background: var(--good); }
.kickoff-answer-pill.is-active[data-answer="changed"],
.kickoff-answer-pill.is-active[data-answer="yes"],
.kickoff-answer-pill.is-active[data-answer="new"]     { background: var(--judgment); color: white; }
.kickoff-answer-pill.is-active[data-answer="not_sure"] { background: var(--blocker); }
.kickoff-answer-hint {
  flex-basis: 100%;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--ink-2);
  font-size: 12.5px;
  line-height: 1.5;
  padding: 8px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line-2);
  border-radius: 6px;
}
.kickoff-answer-hint > svg { margin-top: 3px; flex-shrink: 0; }
.kickoff-freeform {
  flex-basis: 100%;
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 4px;
}
.kickoff-freeform-label {
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--ink-3);
}
.kickoff-freeform-input {
  width: 100%;
  padding: 10px 12px;
  font: inherit;
  font-size: 13px;
  line-height: 1.5;
  background: var(--paper);
  border: 1px solid var(--line-2);
  border-radius: 8px;
  outline: none;
  resize: vertical;
  min-height: 76px;
  color: var(--ink);
  font-family: inherit;
}
.kickoff-freeform-input:focus { border-color: var(--accent); }
.kickoff-freeform-input::placeholder { color: var(--ink-4); }
.kickoff-card-foot {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  line-height: 1.5;
}

/* Per-voucher answer block inside the estimated-payments card */
.kickoff-vouchers {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  background: var(--paper-2);
  border-radius: 8px;
  overflow: hidden;
}
.kickoff-vouchers-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
}
.kickoff-voucher-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 14px;
  border-top: 1px solid var(--line);
}
.kickoff-voucher-row:first-of-type { border-top: 0; }
.kickoff-voucher-pill {
  padding: 4px 12px;
  font-size: 12;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: 999px;
  color: var(--ink-2);
  font: inherit;
  white-space: nowrap;
  transition: background 120ms, color 120ms;
}
.kickoff-voucher-pill:hover { background: var(--paper-2); }
.kickoff-voucher-pill.is-active[data-status="paid"]     { background: var(--good); color: white; }
.kickoff-voucher-pill.is-active[data-status="not_paid"] { background: var(--ink); color: var(--paper); }
.kickoff-voucher-pill.is-active[data-status="unsure"]   { background: var(--blocker); color: white; }

/* ---- Step 4 · Done ---- */
.kickoff-done-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
@media (max-width: 800px) {
  .kickoff-done-grid { grid-template-columns: 1fr; }
}
.kickoff-done-cell {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 18px 22px;
}
.kickoff-done-list {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  color: var(--ink-2);
}
.kickoff-done-list strong {
  font-family: "Instrument Serif", "Source Serif 4", Georgia, serif;
  font-size: 18px;
  color: var(--ink);
  font-weight: 400;
  font-variant-numeric: tabular-nums;
  margin-right: 4px;
}

/* ---- Shared bottom actions row ---- */
.kickoff-actions {
  margin-top: 40px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
  flex-wrap: wrap;
}
.kickoff-actions .btn {
  white-space: nowrap;
}
.btn.lg {
  padding: 10px 20px;
  font-size: 14px;
}

/* ============================================================
   End Kickoff
   ============================================================ */

.scope-chip-interactive {
  cursor: pointer;
  font: inherit;
  line-height: 1;
  transition: background 100ms;
}
.scope-chip-interactive:hover {
  background: var(--paper-2) !important;
}
.scope-chip-interactive:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}


/* ============================================================
   Foreign entity detail surface
   ============================================================ */
.fe-summary-strip {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
/* Variant with four cells — used on the Foreign earnings detail page. Keeps
   the same cell padding/divider treatment, just adds the extra column. */
.fe-summary-strip.is-4col {
  grid-template-columns: 1fr 1fr 1fr 1fr;
}
@media (max-width: 1100px) {
  .fe-summary-strip.is-4col { grid-template-columns: 1fr 1fr; }
  .fe-summary-strip.is-4col .fe-summary-cell:nth-child(2) { border-right: 0; }
}

/* ---- Foreign earnings · inline-editable card ---- */
.fe-edit-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fe-edit-field label {
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--ink-3);
}
.fe-edit-field .field-input {
  padding: 6px 9px;
  font-size: 13px;
  width: 100%;
  background: var(--paper);
  border: 1px solid var(--line-2);
  border-radius: 6px;
  outline: none;
}
.fe-edit-field .field-input:focus { border-color: var(--accent); }
.fe-edit-input-wrap {
  position: relative;
}
.fe-edit-input-wrap .fe-edit-input-prefix {
  position: absolute;
  left: 9px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ink-3);
  font-size: 11px;
  font-family: "Geist Mono", monospace;
  letter-spacing: 0.04em;
  pointer-events: none;
}
.fe-edit-input-wrap .field-input {
  padding-left: 38px;
}

/* Period (date-range) picker — two native date inputs separated by an en-dash */
.fe-period-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 6px;
}
.fe-period-row .fe-date-input {
  font-variant-numeric: tabular-nums;
  font-family: "Geist Mono", monospace;
  font-size: 12px;
  padding: 6px 8px;
  color: var(--ink);
}
.fe-period-row .fe-date-input::-webkit-calendar-picker-indicator {
  /* Tint the picker icon so it sits in the design palette instead of bright blue */
  cursor: pointer;
  opacity: 0.55;
  filter: grayscale(1);
}
.fe-period-row .fe-date-input::-webkit-calendar-picker-indicator:hover {
  opacity: 0.9;
}
.fe-period-dash {
  color: var(--ink-3);
  font-size: 14px;
  text-align: center;
}

/* ---- Foreign earnings · summary card (3 cells with light dividers) ---- */
.fe-earnings-card {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr;
}
.fe-earnings-cell {
  padding: 18px 22px;
  border-right: 1px solid var(--line);
}
.fe-earnings-cell:last-child { border-right: 0; }
@media (max-width: 1000px) {
  .fe-earnings-card { grid-template-columns: 1fr; }
  .fe-earnings-cell { border-right: 0; border-bottom: 1px solid var(--line); }
  .fe-earnings-cell:last-child { border-bottom: 0; }
}

/* ---- Foreign earnings · evidence slot row ---- */
/* Action column for each slot row. Stacked, fixed-width buttons so labels
   never wrap mid-word (the old layout truncated "View file" onto two lines). */
.fe-slot-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  min-width: 170px;
  flex-shrink: 0;
  text-align: center;
}
.fe-slot-actions .btn { white-space: nowrap; }

/* Filename pill — doubles as the View affordance. Hover swaps the icon to an
   external-link cue so the user reads it as "clickable file" rather than
   "static label". */
.fe-file-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  padding: 6px 10px;
  background: var(--paper-2);
  border: 1px solid transparent;
  border-radius: 6px;
  max-width: 540px;
  cursor: pointer;
  font: inherit;
  color: var(--ink-2);
  transition: border-color 100ms, background 100ms;
}
.fe-file-pill:hover,
.fe-file-pill:focus-visible {
  border-color: var(--accent);
  background: var(--accent-tint);
  outline: none;
}
.fe-file-pill > svg { color: var(--ink-3); flex-shrink: 0; }
.fe-file-pill:hover > svg { color: var(--accent); }
.fe-file-pill-name {
  font-size: 11.5px;
  color: var(--ink-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  flex: 1;
  text-align: left;
}
.fe-file-pill-meta {
  white-space: nowrap;
  margin-left: auto;
}

/* Tertiary Remove link — looks like text, behaves like a button. Keeps the
   destructive action visually subordinate to Replace/View. */
.fe-slot-remove {
  background: transparent;
  border: 0;
  padding: 2px 6px;
  font-size: 11px;
  color: var(--ink-3);
  cursor: pointer;
  align-self: center;
  border-radius: 4px;
  transition: color 100ms, background 100ms;
}
.fe-slot-remove:hover {
  color: var(--blocker);
  background: var(--blocker-soft);
}
.fe-summary-cell {
  padding: 18px 22px;
  border-right: 1px solid var(--line);
}
.fe-summary-cell:last-child { border-right: 0; }

/* Hard-required item rows on the detail page */
.fe-hard-item {
  display: grid;
  grid-template-columns: 28px 1fr auto;
  gap: 14px;
  align-items: flex-start;
  padding: 16px 20px;
  transition: background 100ms;
}
.fe-hard-item:hover { background: var(--paper-2); }
.fe-hard-item.is-done {
  background: var(--good-soft);
}
.fe-hard-item.is-done .fe-evidence-label { color: var(--ink-2); }

/* Conditional Q&A cards */
.fe-cond-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-left: 3px solid var(--ink-4);
  border-radius: var(--radius);
  padding: 16px 18px;
  transition: border-color 120ms, background 120ms;
}
.fe-cond-pending {
  border-left-color: var(--ink-4);
}
.fe-cond-none {
  border-left-color: var(--good);
  background: var(--good-soft);
}
.fe-cond-none .fe-cond-icon-none {
  background: var(--good);
  color: var(--paper);
}
.fe-cond-active-pending {
  border-left-color: var(--judgment);
  background: var(--judgment-soft);
}
.fe-cond-active-pending .fe-cond-icon-active-pending {
  background: var(--judgment);
  color: var(--paper);
}
.fe-cond-active-done {
  border-left-color: var(--good);
}
.fe-cond-active-done .fe-cond-icon-active-done {
  background: var(--good);
  color: var(--paper);
}
.fe-cond-icon {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--paper-2);
  color: var(--ink-3);
  flex-shrink: 0;
}
.fe-cond-icon-pending {
  background: transparent;
  border: 1px dashed var(--line-2);
}


/* ============================================================
   Foreign entities — country overview grid + per-country card
   ============================================================ */
.fe-country-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 14px;
}
.fe-country-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: border-color 120ms, box-shadow 120ms;
}
.fe-country-card:hover {
  border-color: var(--line-2);
  box-shadow: var(--shadow-card);
}
.fe-country-card.is-drag-over {
  border-color: var(--accent);
  background: var(--accent-tint);
}
.fe-country-card-head {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: 0;
  padding: 16px 18px 14px;
  cursor: pointer;
  border-bottom: 1px dashed var(--line);
  transition: background 100ms;
}
.fe-country-card-head:hover {
  background: var(--paper-2);
}
.fe-country-card-head:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}
.fe-country-card-meters {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.fe-country-card-corps {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.fe-country-card-corp {
  font-size: 11px;
  color: var(--ink-2);
  background: var(--paper-2);
  border: 1px solid var(--line);
  padding: 2px 8px;
  border-radius: 999px;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fe-country-card-corp.more {
  color: var(--ink-3);
  background: transparent;
  font-style: italic;
}
.fe-country-card-drop {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  background: var(--paper-2);
  color: var(--ink-3);
  font-size: 12px;
  cursor: pointer;
  transition: background 100ms, color 100ms;
}
.fe-country-card-drop:hover {
  background: var(--accent-tint);
  color: var(--accent);
}
.fe-country-card.is-drag-over .fe-country-card-drop {
  background: var(--accent-soft);
  color: var(--accent);
}


/* ============================================================
   Foreign entity — entity profile (address) block
   ============================================================ */
.fe-entity-profile {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
}
.fe-entity-profile-cell {
  padding: 14px 20px 18px;
  border-right: 1px solid var(--line);
}
.fe-entity-profile-cell:last-child {
  border-right: 0;
}
@media (max-width: 880px) {
  .fe-entity-profile {
    grid-template-columns: 1fr;
  }
  .fe-entity-profile-cell {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .fe-entity-profile-cell:last-child {
    border-bottom: 0;
  }
}


/* ============================================================
   Foreign org chart
   ============================================================ */
.org-chart-frame {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 14px 0 14px;
  position: relative;
  overflow: hidden;
}
.org-chart-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 20px 10px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 10px;
}
.org-chart-toolbar .btn[disabled] { opacity: 0.4; pointer-events: none; }
.org-chart-zoom-readout {
  min-width: 38px;
  text-align: center;
  color: var(--ink-2);
}
.org-chart-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  padding: 16px 20px;
}
.org-chart-stage {
  position: relative;
}
.org-chart-sizer {
  position: relative;
  overflow: hidden;
  margin: 0 auto;
}
.org-chart-svg {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  overflow: visible;
}
.org-chart-line {
  fill: none;
  stroke: var(--line-2);
  stroke-width: 1.5;
  stroke-linecap: round;
}
.org-chart-line.is-dashed {
  stroke-dasharray: 5 4;
  stroke: var(--judgment);
  opacity: 0.7;
}
.org-chart-line-note {
  font-family: "Geist", sans-serif;
  font-size: 10px;
  fill: var(--judgment);
  text-anchor: middle;
  font-style: italic;
  letter-spacing: 0.02em;
}

.org-node {
  position: absolute;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 14px;
  box-shadow: var(--shadow-card);
  text-align: left;
  cursor: pointer;
  transition: border-color 120ms, box-shadow 120ms, transform 60ms;
  font-family: inherit;
}
.org-node-corp:hover {
  border-color: var(--accent);
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}
.org-node-corp:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.org-node-external {
  background: var(--paper-2);
  border-style: dashed;
  cursor: default;
  align-items: flex-start;
}
.org-node-external.is-orphan {
  border-color: var(--judgment);
  background: var(--judgment-soft);
}

/* ============================================================
   Kickoff · skim modal (foreign corps + foreign accounts)
   Read-only overlay that opens on top of the kickoff funnel so
   the user can sanity-check the prior-year roster without
   navigating away from the setup cards.
   ============================================================ */
.kickoff-skim {
  display: flex;
  flex-direction: column;
  max-height: 85vh;
}
.kickoff-skim-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 24px 28px 18px;
  border-bottom: 1px solid var(--line);
}
.kickoff-skim-title {
  font-size: 26px;
  letter-spacing: -0.01em;
  margin: 6px 0 0;
  line-height: 1.15;
}
.kickoff-skim-body {
  padding: 20px 28px 12px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}
.kickoff-skim-foot {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 28px;
  border-top: 1px solid var(--line);
  background: var(--paper-2);
}

.kickoff-skim-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  padding: 14px 16px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 10px;
}
.kickoff-skim-stats > div { min-width: 0; }

.kickoff-skim-group { margin-top: 4px; }

.kickoff-skim-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}
.kickoff-skim-row-tail {
  background: var(--paper-2);
  border-style: dashed;
}
.kickoff-skim-vote {
  font-size: 16px;
  color: var(--ink-2);
  text-align: right;
  min-width: 56px;
  flex-shrink: 0;
}
.kickoff-skim-money {
  font-size: 15px;
  color: var(--ink);
  text-align: right;
  min-width: 96px;
  flex-shrink: 0;
}

.kickoff-skim-inst {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line);
}
.kickoff-skim-inst:last-child { border-bottom: 0; }

.kickoff-skim-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 12px;
  background: var(--judgment-soft, var(--paper-2));
  border: 1px solid var(--line);
  border-left: 3px solid var(--judgment);
  border-radius: 8px;
}

/* Inline help-tip inside the kickoff prompt sentence needs to keep the
   sentence baseline tidy — the icon itself is 12px so the wrapper just
   nudges its alignment to the surrounding text. */
.kickoff-prompt .help-tip { vertical-align: -1px; }

/* ============================================================
   Checklist · Kickoff follow-ups
   Renders at the top of each tab when the user's kickoff answers
   warrant action on that tab. See ChecklistKickoffFollowups in
   surfaces-checklist.jsx + KICKOFF_CHECKLIST_MAP in data-kickoff.js.
   ============================================================ */
.ck-followups {
  margin-top: 18px;
  padding: 16px 18px 18px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--accent-tint, var(--paper-2));
  background: linear-gradient(180deg, var(--paper-2) 0%, var(--paper) 100%);
}
.ck-followups-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ck-followup {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  transition: border-color 120ms, box-shadow 120ms;
}
.ck-followup-judgment { border-left: 3px solid var(--judgment); }
.ck-followup-blocker  { border-left: 3px solid var(--blocker); }
.ck-followup-parsed   { background: var(--good-soft, var(--paper-2)); }
.ck-followup-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.ck-followup-pill {
  padding: 1px 8px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: 999px;
}
.ck-followup-pill-judgment { color: var(--judgment); border-color: var(--judgment); background: transparent; }
.ck-followup-pill-blocker  { color: var(--blocker);  border-color: var(--blocker);  background: transparent; }
.ck-followup-quote {
  display: flex;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
}
.ck-followup-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ck-followup-actions-resolved {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ck-followup-actions-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--paper);
  border: 1px solid var(--line);
}
.ck-followup-action {
  display: flex;
  gap: 10px;
  align-items: baseline;
}
.ck-followup-action-kind {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 60px;
  padding: 1px 6px;
  font-family: var(--mono, ui-monospace, "JetBrains Mono", monospace);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: 4px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  color: var(--ink-3);
}
.ck-followup-action-kind-stub   { color: var(--accent);   border-color: var(--accent);   }
.ck-followup-action-kind-flag   { color: var(--judgment); border-color: var(--judgment); }
.ck-followup-action-kind-update { color: var(--ink-2);    border-color: var(--ink-2);    }
.ck-followup-action-kind-note   { color: var(--ink-3);    border-color: var(--line-2);   }

/* ============================================================
   Carryover detail sheet (Rollforward · Carryovers + estimates)
   Click any row → opens a Modal that explains the carryover, lists
   expected evidence, accepts (mock) file attachments, takes a note,
   and confirms / reopens the 2025 opening balance.
   ============================================================ */
.cf-row.is-clickable {
  cursor: pointer;
  transition: background 100ms;
}
.cf-row.is-clickable:hover { background: var(--paper-2); }
.cf-row.is-confirmed { background: var(--good-soft, transparent); }
.cf-row.is-confirmed:hover { background: var(--good-soft, var(--paper-2)); }

.co-sheet {
  display: flex;
  flex-direction: column;
  max-height: 88vh;
}
.co-sheet-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 22px 28px 18px;
  border-bottom: 1px solid var(--line);
}
.co-sheet-title {
  font-size: 26px;
  letter-spacing: -0.01em;
  margin: 6px 0 0;
  line-height: 1.15;
}
.co-sheet-body {
  padding: 20px 28px 8px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}
.co-sheet-body section { padding-bottom: 4px; }
.co-section-title {
  font-family: "Instrument Serif", Georgia, serif;
  font-size: 18px;
  margin: 4px 0 0;
}
.co-sheet-foot {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 28px;
  border-top: 1px solid var(--line);
  background: var(--paper-2);
}
.co-evidence-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.co-evidence-item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  cursor: pointer;
  transition: border-color 100ms, background 100ms;
}
.co-evidence-item:hover { border-color: var(--line-2); background: var(--paper-2); }
.co-evidence-item.is-checked {
  background: var(--good-soft, var(--paper-2));
  border-color: var(--good);
}
.co-evidence-checkbox {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin: 2px 0 0;
  accent-color: var(--good);
  cursor: pointer;
}
.co-evidence-title {
  font-weight: 500;
  color: var(--ink);
  line-height: 1.4;
}
.co-evidence-item.is-checked .co-evidence-title {
  color: var(--ink-2);
  text-decoration: line-through;
  text-decoration-color: var(--line-2);
  text-decoration-thickness: 1px;
}
.co-evidence-optional {
  margin-left: 8px;
  padding: 1px 6px;
  font-size: 10px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-3);
  border-color: var(--line-2);
  background: transparent;
}
.co-reconcile-list {
  margin: 0;
  padding: 0 0 0 18px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.co-reconcile-list li { padding-left: 4px; }
.co-empty {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 14px 16px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--paper-2);
}
.co-file-row {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

/* ============================================================
   SurfaceCarryover (full-page carryover detail)
   Reuses .co-evidence-list / .co-evidence-item / .co-empty /
   .co-file-row / .co-reconcile-list / .co-section-title from
   the original sheet styles above. Adds page-level layout
   (hero, status strip, footer bar) so each carryover lives at
   #/carryover/<id> instead of in a modal.
   ============================================================ */
.co-surface { padding-bottom: 64px; }
.co-crumbs { align-items: center; flex-wrap: wrap; }
.co-hero {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 32px;
  align-items: flex-start;
}
@media (max-width: 900px) {
  .co-hero { grid-template-columns: 1fr; }
}
.co-hero-status {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: var(--paper);
}
.co-summary-cell {
  padding: 16px 18px;
  border-right: 1px solid var(--line);
}
.co-summary-cell:last-child { border-right: 0; }
.co-page-foot {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 24px;
  margin-top: 24px;
  border-top: 1px solid var(--line);
}

/* Rollforward · "How this connects to your checklist" mental-model card.
   Sits between the lede and the status pyramid. Subdued accent border
   on the left so it reads as guidance, not an action. */
.rf-relation {
  padding: 18px 22px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  background: var(--paper-2);
  border-radius: 12px;
}

/* Foreign-account close affordance + modal */
.fa-row-close-action {
  margin-top: 6px;
  padding: 2px 8px !important;
  font-size: 10.5px !important;
  color: var(--ink-3);
}
.fa-row-close-action:hover { color: var(--ink); }
.btn.xs { padding: 2px 8px; font-size: 11px; }

.fa-close-modal {
  display: flex;
  flex-direction: column;
  max-height: 88vh;
}
.fa-close-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 22px 28px 14px;
  border-bottom: 1px solid var(--line);
}
.fa-close-title {
  font-size: 24px;
  letter-spacing: -0.01em;
  margin: 4px 0 0;
  line-height: 1.15;
}
.fa-close-body {
  padding: 18px 28px 6px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}
.fa-close-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 16px;
}
.fa-close-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fa-close-field .eyebrow { margin: 0; }
.fa-close-field .tiny.dim { margin-top: 4px; }
.fa-close-input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  font: inherit;
  color: var(--ink);
}
.fa-close-input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-tint);
}
.fa-close-amount {
  display: flex;
  align-items: stretch;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  padding: 0 8px;
}
.fa-close-amount .fa-edit-prefix {
  display: flex;
  align-items: center;
  color: var(--ink-3);
}
.fa-close-amount .fa-close-input {
  border: 0;
  padding-left: 0;
}
.fa-close-amount:focus-within {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-tint);
}
.fa-close-attach {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 14px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--paper-2);
  cursor: pointer;
}
.fa-close-attach input { margin-top: 3px; flex-shrink: 0; }
.fa-close-foot {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  border-top: 1px solid var(--line);
  background: var(--paper-2);
}

/* ============================================================
   Employment-income surface (W-2 + 1099-NEC detail page)
   Pattern parallels surfaces-foreign-earnings.jsx — breadcrumbs,
   hero, slot-by-slot evidence collection — but the layout is
   purpose-built so its CSS lives in its own block here.
   ============================================================ */
.ei-surface { padding-bottom: 64px; }

.ei-crumbs {
  align-items: center;
  flex-wrap: wrap;
}

.ei-hero {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 32px;
  align-items: flex-start;
}
@media (max-width: 900px) {
  .ei-hero { grid-template-columns: 1fr; }
}

.ei-hero-status {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: var(--paper);
}
.ei-summary-cell {
  padding: 16px 18px;
  border-right: 1px solid var(--line);
}
.ei-summary-cell:last-child { border-right: 0; }

.ei-sched-c-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
}
@media (max-width: 800px) {
  .ei-sched-c-grid { grid-template-columns: 1fr; }
}

/* Numbered "Schedule C → SE → QBI" flow list above the input grid.
   Each step has an inline <HelpTip> next to the term it explains;
   we leave a little extra line-height so the help icon doesn't crowd
   the digit. */
.ei-sched-c-flow {
  margin: 14px 0 0;
  padding: 0 0 0 24px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ei-sched-c-flow li {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--ink-2);
  padding-left: 4px;
}
.ei-sched-c-flow li strong { color: var(--ink); font-weight: 500; }
.ei-sched-c-flow .help-tip { vertical-align: -1px; margin-left: 2px; }
.ei-sched-c-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ei-sched-c-field .eyebrow { margin: 0; }
.ei-amount {
  display: flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  padding: 0 10px;
}
.ei-amount-prefix { color: var(--ink-3); font-size: 13px; }
.ei-amount input {
  flex: 1;
  border: 0;
  background: transparent;
  padding: 8px 0;
  font: inherit;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.ei-amount:focus-within {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-tint);
}

.ei-slot-row {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: 14px;
  align-items: flex-start;
  padding: 16px 18px;
  border-bottom: 1px solid var(--line);
  transition: background 100ms;
}
.ei-slot-row:last-child { border-bottom: 0; }
.ei-slot-row.is-filled { background: var(--good-soft, transparent); }
.ei-slot-check {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 2px;
}
.ei-slot-optional {
  margin-left: 8px;
  padding: 1px 7px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--ink-3);
  border-color: var(--line-2);
  background: transparent;
}
.ei-slot-file {
  display: flex;
  gap: 6px;
  align-items: center;
  padding: 6px 10px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  max-width: 100%;
  min-width: 0;
}
.ei-slot-note {
  margin-top: 8px;
}
.ei-slot-note-display {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: 8px 10px;
  border: 1px dashed var(--line);
  border-radius: 6px;
  background: var(--paper);
  text-align: left;
  font: inherit;
  color: inherit;
  cursor: pointer;
  transition: border-color 100ms;
}
.ei-slot-note-display:hover { border-color: var(--accent); border-style: solid; }
.ei-slot-note-input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  font: inherit;
  color: var(--ink);
  resize: vertical;
}
.ei-slot-note-add {
  padding: 3px 8px !important;
  font-size: 11px !important;
}
.ei-slot-actions {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-end;
}

.ei-foot {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 24px;
  margin-top: 24px;
  border-top: 1px solid var(--line);
}

/* ============================================================
   Rollforward exceptions — resolution UI + destination effects.
   See EXCEPTIONS.md.
   ============================================================ */

/* Tab header tile */
.ex-tab-counts {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* Resolved + no-action card variants */
.ex-card.ex-resolved {
  background: linear-gradient(180deg, var(--good-soft, var(--paper-2)) 0%, var(--paper) 80%);
  border-color: color-mix(in oklch, var(--good) 25%, var(--line));
}
.ex-card.ex-no-action {
  background: var(--paper-2);
  border-color: var(--line);
  opacity: 0.88;
}

/* Preview list (open state, after Resolve with AI is clicked) */
.ex-preview {
  border: 1px solid var(--line);
  background: var(--paper-2);
  border-radius: var(--radius);
  padding: 14px 16px;
}
.ex-preview-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ex-preview-empty {
  padding: 12px 0 2px;
}
.ex-preview-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ex-preview-note .kickoff-freeform-input {
  width: 100%;
  font-size: 13px;
}

/* Applied-toolcalls list (resolved state) */
.ex-toolcall-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

/* One toolcall row, used in both preview list and resolved list */
.ex-plan-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 10px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.ex-plan-row-applied {
  border-color: color-mix(in oklch, var(--good) 18%, var(--line));
  background: var(--paper);
}
.ex-plan-kind {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--ink-3);
  white-space: nowrap;
}
.ex-plan-kind-accent   { color: var(--accent);   border-color: var(--accent);   }
.ex-plan-kind-judgment { color: var(--judgment); border-color: var(--judgment); }
.ex-plan-kind-ink-2    { color: var(--ink-2);    border-color: var(--ink-2);    }

.ex-plan-quote {
  padding: 8px 10px;
  font-size: 12.5px;
  color: var(--ink-2);
  background: var(--paper-2);
  border-left: 2px solid var(--line-2);
  border-radius: 4px;
  line-height: 1.5;
  max-width: 78ch;
}

/* No-action prompt */
.ex-noaction-prompt {
  padding: 12px 14px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
  border-radius: var(--radius);
}
.ex-noaction-prompt .kickoff-freeform-input {
  width: 100%;
}
.ex-noaction-reason {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 8px 10px;
  background: var(--paper);
  border: 1px dashed var(--line);
  border-radius: 4px;
  max-width: 78ch;
}

/* ============================================================
   Destination effects — small inline UI fragments that surfaces
   render when an exception toolcall lands on their target.
   ============================================================ */

/* Sticky review note */
.xfx-note {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 14px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
  max-width: 78ch;
}
.xfx-note + .xfx-note { margin-top: 8px; }
.xfx-note-eyebrow {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--accent);
  font-weight: 600;
  margin-bottom: 4px;
}
.xfx-note-text {
  font-size: 13px;
  color: var(--ink);
  line-height: 1.5;
}
.xfx-note-meta {
  font-size: 11px;
  color: var(--ink-3);
  margin-top: 6px;
}

/* Flag chip (inline next to other status chips) */
.xfx-flag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 500;
  color: var(--judgment);
  border: 1px solid var(--judgment);
  background: color-mix(in oklch, var(--judgment) 8%, transparent);
  border-radius: 999px;
  cursor: help;
}

/* Prefill badge (inline next to a prefilled value) */
.xfx-prefill-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  font-size: 10px;
  font-weight: 500;
  color: var(--accent);
  background: var(--accent-tint, color-mix(in oklch, var(--accent) 10%, transparent));
  border-radius: 999px;
  margin-left: 8px;
  white-space: nowrap;
}

/* Extra evidence/expected-doc row added by AI resolution */
.xfx-evidence-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--paper);
  border: 1px dashed var(--accent);
  border-radius: 6px;
}
.xfx-evidence-row + .xfx-evidence-row { margin-top: 6px; }
.xfx-evidence-source {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--accent);
  font-weight: 600;
}


/* ============================================================
   Rollforward sign-off — milestone CTA at the bottom of the
   2024 → 2025 page + locked banner at the top + sidebar badge
   variant. See EXCEPTIONS.md + redesign notes.
   ============================================================ */

/* Foreign filings tab · discovery callout — banner at the top of
   the tab when there are unresolved foreign account/corp candidates.
   Links into the unified Attention inbox where triage happens. */
.ft-discovery-callout {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 18px;
  background: color-mix(in oklch, var(--accent) 6%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--accent) 28%, var(--line));
  border-radius: 12px;
}

/* ============================================================
   Attention — unified triage inbox surface.
   Lock band (sign-off blockers), Discovery band (AI candidates),
   Followup band (kickoff answers awaiting resolution). One row
   shape across kinds with typed pill on the left + CTA on the
   right. See surfaces-attention.jsx for the band layout logic.
   ============================================================ */
.att-empty {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 18px 22px;
  background: color-mix(in oklch, var(--good) 6%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--good) 28%, var(--line));
  border-radius: 14px;
}
.att-link {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: var(--accent);
  cursor: pointer;
  text-decoration: underline;
}
.att-link:hover { color: var(--ink); }

.att-band {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 22px 24px 18px;
}
.att-band-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.att-band-title {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 26px;
  line-height: 1.1;
  letter-spacing: -0.005em;
  margin: 0;
  color: var(--ink);
}
.att-band-blurb {
  font-size: 13px;
  color: var(--ink-2);
  max-width: 70ch;
  line-height: 1.55;
  margin: 0;
}
.att-band-counts {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  color: var(--ink-2);
}
.att-band-count {
  font-size: 12px;
}
.att-band-eyebrow-lock      { color: var(--blocker); }
.att-band-eyebrow-discovery { color: var(--accent);  }
.att-band-eyebrow-followup  { color: var(--judgment); }

.att-band-lock      { border-left: 3px solid var(--blocker); }
.att-band-discovery { border-left: 3px solid var(--accent);  }
.att-band-followup  { border-left: 3px solid var(--judgment); }

.att-band-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.att-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 14px 14px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: background 120ms, border-color 120ms;
}
.att-row:hover {
  background: var(--paper);
  border-color: var(--line-2);
}
.att-row-tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 108px;
  padding: 3px 10px;
  margin-top: 1px;
  border-radius: 999px;
  border: 1px solid currentColor;
  background: transparent;
  font-size: 10.5px;
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.att-row-tag-blocker   { color: var(--blocker); }
.att-row-tag-judgment  { color: var(--judgment); }
.att-row-tag-discovery { color: var(--accent); }
.att-row-tag-neutral   { color: var(--ink-2); }

.att-row-body { flex: 1; min-width: 0; }
.att-row-title {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}
.att-row-meta {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 3px;
}
.att-row-reason {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 4px;
}
.att-row-flag { color: var(--judgment); margin-top: 3px; }
.att-row-source { line-height: 1.4; }
.att-row-actions {
  flex-shrink: 0;
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin-top: 1px;
}

@media (max-width: 720px) {
  .att-row { flex-wrap: wrap; }
  .att-row-actions { margin-left: auto; }
}

/* Rollforward · Overview tab — per-category action summary
   4-card grid (Carryovers / Open items / Foreign / Entity roster).
   Each card shows the category's top-level status, a short list of
   specific blockers, and a CTA into the dedicated tab. */
.rf-ov-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.rf-ov-card {
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 20px 22px 18px;
}
.rf-ov-card-title {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 22px;
  line-height: 1.15;
  letter-spacing: -0.005em;
  margin: 0;
  color: var(--ink);
}
.rf-ov-card-list {
  list-style: none;
  margin: 18px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.rf-ov-card-line {
  display: flex;
  align-items: baseline;
  gap: 9px;
  color: var(--ink-2);
}
.rf-ov-card-dot {
  flex-shrink: 0;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--ink-3);
  transform: translateY(-1px);
}
.rf-ov-card-cta {
  align-self: flex-start;
  margin-top: 14px;
}

/* Quiet footnote at the bottom of the Overview tab — parse stats
   and source pedigree in a thin band, not a card. */
.rf-ov-foot {
  border-top: 1px solid var(--line-2);
  padding-top: 16px;
}
.rf-ov-foot-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.rf-ov-foot-stats {
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
  color: var(--ink);
}
.rf-ov-foot-stats > span {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}

@media (max-width: 900px) {
  .rf-ov-grid { grid-template-columns: 1fr; }
}

/* Rollforward · Action stack
   The primary call-to-action area at the top of the rollforward
   page. Lists every concrete thing blocking sign-off (carryovers,
   open items, estimates) in priority order. Each row is a button
   that deep-links to the surface that resolves it.
   ============================================================ */
.rf-actions {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 22px 24px 18px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.02);
}
.rf-actions-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.rf-actions-summary {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}
.rf-actions-summary > span:not(:last-child)::after {
  content: "·";
  margin-left: 16px;
  color: var(--ink-3);
}
.rf-actions-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.rf-action {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  width: 100%;
  transition: background 120ms, border-color 120ms;
}
.rf-action:hover {
  background: var(--paper-2);
  border-color: var(--line);
}
.rf-action-tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 76px;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid currentColor;
  background: transparent;
  font-size: 10.5px;
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.02em;
}
.rf-action-tag-material  { color: var(--blocker); }
.rf-action-tag-warn      { color: var(--blocker); }
.rf-action-tag-review    { color: var(--judgment); }
.rf-action-tag-ask       { color: var(--judgment); }
.rf-action-tag-carryover { color: var(--accent); }
.rf-action-tag-estimate  { color: var(--ink-2); }

.rf-action-body {
  flex: 1;
  min-width: 0;
}
.rf-action-label {
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.35;
}
.rf-action-sub {
  font-size: 11.5px;
  color: var(--ink-3);
  line-height: 1.4;
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.rf-action-cta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 500;
  transition: background 120ms, color 120ms;
}
.rf-action:hover .rf-action-cta {
  background: var(--ink);
  color: var(--paper);
}
.rf-action-more {
  align-self: flex-start;
  margin-top: 4px;
  padding: 6px 12px;
  background: transparent;
  border: 0;
  color: var(--ink-2);
  font-size: 12px;
  font-family: inherit;
  cursor: pointer;
  border-radius: 8px;
}
.rf-action-more:hover { background: var(--paper-2); color: var(--ink); }

/* Ready-to-sign-off variant — celebratory tint, button inline. */
.rf-actions-ready {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 22px 24px;
  background: linear-gradient(180deg,
    color-mix(in oklch, var(--good) 6%, var(--paper)) 0%,
    var(--paper) 100%);
  border-color: color-mix(in oklch, var(--good) 30%, var(--line));
}
.rf-actions-ready-icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: color-mix(in oklch, var(--good) 14%, var(--paper));
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Background strip — the demoted classification stats. Thin, quiet,
   single-line; tabs to its right. Compares poorly with the action
   stack on purpose. */
.rf-bg-strip {
  display: flex;
  align-items: baseline;
  gap: 18px;
  flex-wrap: wrap;
  padding: 10px 4px 0;
  color: var(--ink-2);
}
.rf-bg-cell {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12px;
}

@media (max-width: 720px) {
  .rf-action {
    flex-wrap: wrap;
  }
  .rf-action-cta { margin-left: auto; }
  .rf-actions-ready {
    flex-wrap: wrap;
  }
}

/* Bottom CTA bar (open state) */
.rf-signoff-bar {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 22px 26px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  border-top: 3px solid var(--accent);
}
.rf-signoff-bar .btn.primary {
  font-size: 14px;
  padding: 10px 22px;
  white-space: nowrap;
}

/* Top banner (signed-off state) */
.rf-signoff-banner {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 18px;
  background: var(--good-soft, color-mix(in oklch, var(--good) 8%, var(--paper)));
  border: 1px solid color-mix(in oklch, var(--good) 25%, var(--line));
  border-left: 3px solid var(--good);
  border-radius: var(--radius);
}

/* Sidebar badge — green checkmark variant */
.badge.is-good {
  background: var(--good);
  color: white;
  font-weight: 600;
}

/* ============================================================
   Checklist rollforward-status strip — persistent reminder that
   the checklist sits on top of the 2024 rollforward.
   ============================================================ */
.ck-rf-status {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 18px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-left: 3px solid var(--judgment);
  border-radius: var(--radius);
}
.ck-rf-status.is-ready {
  border-left-color: var(--accent);
}
.ck-rf-status.is-signed {
  border-left-color: var(--good);
  background: color-mix(in oklch, var(--good) 5%, var(--paper-2));
  align-items: center;
}
.ck-rf-status .btn { flex-shrink: 0; }


/* Badge variant — icon (used for the lock when rollforward is signed off) */
.badge.is-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 999px;
}
.badge.is-icon.is-good {
  background: var(--good);
  color: white;
}


/* ============================================================
   C-corp triggers in the AddEntityForm. Mirrors the checkbox
   styling used for evidence items on the carryover detail page.
   ============================================================ */
.ck-ccorp-hint {
  padding: 10px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
  font-size: 12px;
  color: var(--ink-2);
  line-height: 1.5;
  margin-top: 8px;
  max-width: 56ch;
}
.ck-ccorp-triggers {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
}
.ck-ccorp-trigger {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 12px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  transition: border-color 120ms, background 120ms;
}
.ck-ccorp-trigger:hover {
  border-color: var(--ink-3);
}
.ck-ccorp-trigger input[type="checkbox"] {
  margin-top: 2px;
  flex-shrink: 0;
}
.ck-ccorp-trigger > div {
  min-width: 0;
}
.ck-ccorp-empty {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  padding: 8px 10px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
  border-radius: 6px;
}


/* Discovery queue inline edit form (c_corp triage) */
.dq-edit {
  padding: 12px 14px 14px;
  background: var(--paper-2);
  border-top: 1px solid var(--line);
  border-radius: 0 0 6px 6px;
  margin-left: -16px;
  margin-right: -16px;
  margin-bottom: -16px;
  padding-left: 64px;
  padding-right: 20px;
}


/* AI evidence row drag-over feedback */
.xfx-evidence-row.is-drag-over {
  border-color: var(--accent);
  background: var(--accent-tint, color-mix(in oklch, var(--accent) 8%, var(--paper)));
}


/* Pending AI-created entity stub row inside a checklist section.
   Visually distinct from real rows so the user knows this entity hasn't
   been committed yet — dashed accent border + sparkle chip. */
.checklist-row-pending {
  border-left: 3px solid var(--accent);
  background: color-mix(in oklch, var(--accent) 4%, var(--paper));
  border-bottom: 1px dashed var(--line);
}
.checklist-row-pending:hover {
  background: color-mix(in oklch, var(--accent) 7%, var(--paper));
}
.chip-pending-stub {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 1px 7px;
  font-size: 10px;
  font-weight: 500;
  color: var(--accent);
  background: var(--accent-tint, color-mix(in oklch, var(--accent) 10%, transparent));
  border: 1px solid transparent;
  border-radius: 999px;
}
.doc-status.pending .pip {
  background: var(--accent);
}


/* ============================================================
   Entities workspace (Phase 1) — listing page + detail page.
   ============================================================ */

/* Hero strip on the workspace landing */
.entities-hero {
  display: grid;
  grid-template-columns: 200px 200px 1fr;
  gap: 16px;
  margin-top: 24px;
}
.entities-hero-cell {
  padding: 18px 20px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.entities-hero-cta {
  display: flex;
  flex-direction: column;
}

/* Filter bar */
.entities-filter {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.entities-search {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
}
.entities-search-input {
  border: 0;
  background: transparent;
  padding: 6px 0;
  font-size: 13.5px;
  color: var(--ink);
  width: 100%;
  outline: none;
}
.entities-search-input::placeholder { color: var(--ink-3); }

/* Kind groups */
.entities-group { margin-top: 32px; }
.entities-group-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 12px;
}
.entities-group-title {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.005em;
  margin: 0;
  color: var(--ink);
}
.entities-group-count {
  color: var(--ink-3);
  font-size: 13px;
}

.entities-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 10px;
}

/* Entity tile */
.entity-tile {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  cursor: pointer;
  text-align: left;
  transition: border-color 120ms, transform 80ms;
  width: 100%;
}
.entity-tile:hover {
  border-color: var(--ink-3);
  transform: translateY(-1px);
}
.entity-tile-glyph {
  width: 38px; height: 38px;
  flex-shrink: 0;
  border-radius: 8px;
  background: var(--paper-2);
  display: grid;
  place-items: center;
  font-family: "Instrument Serif", serif;
  font-size: 18px;
  color: var(--ink-2);
}
.entity-tile-body { flex: 1; min-width: 0; }
.entity-tile-name {
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.entity-tile-meta {
  font-size: 11px;
  color: var(--ink-3);
  margin-top: 4px;
}
.entity-tile-sep { margin: 0 6px; color: var(--line-2); }
.entity-tile-foot { margin-top: 6px; }

.entities-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 20px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  justify-content: center;
}

/* Entity detail page */
.entity-section {
  padding: 20px 22px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.entity-section-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.entity-id-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 18px;
}
.entity-id-cell { min-width: 0; }

.entity-form-chip {
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 4px 8px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  cursor: pointer;
  transition: border-color 120ms;
}
.entity-form-chip:hover { border-color: var(--accent); }

.entity-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
  border-radius: 6px;
}

.entity-doc-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.entity-doc-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
}

.entity-workpaper {
  width: 100%;
  padding: 12px 14px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-family: inherit;
  font-size: 13px;
  color: var(--ink);
  line-height: 1.55;
  resize: vertical;
  outline: none;
}
.entity-workpaper:focus {
  border-color: var(--accent);
}

/* Cap table grid */
.entity-captable {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
}
.entity-captable-row {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 2fr;
  gap: 12px;
  padding: 10px 14px;
  align-items: center;
  border-bottom: 1px solid var(--line);
}
.entity-captable-row:last-child { border-bottom: 0; }
.entity-captable-head {
  background: var(--paper-2);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
}
.entity-captable-add {
  background: var(--paper-2);
}

.entity-classification {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.entity-class-row { display: flex; flex-direction: column; }


/* ============================================================
   Entity workspace — Phase 2 cards.
   Ownership neighborhood, year history, cap table, property
   depreciation, activity log. See surfaces-entity-phase2.jsx.
   ============================================================ */

/* Ownership neighborhood mini-graph */
.onbh {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 16px 0;
}
.onbh-row {
  display: flex;
  gap: 12px;
  align-items: stretch;
  flex-wrap: wrap;
  justify-content: center;
}
.onbh-node {
  min-width: 180px;
  max-width: 240px;
  padding: 10px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: default;
  transition: border-color 120ms, transform 80ms;
}
.onbh-node[onclick], .onbh-node.onbh-node-parent, .onbh-node.onbh-node-child {
  cursor: pointer;
}
.onbh-node:hover {
  border-color: var(--ink-3);
}
.onbh-node-focal {
  border-color: var(--accent);
  border-width: 2px;
  background: color-mix(in oklch, var(--accent) 5%, var(--paper));
}
.onbh-node-member.is-household {
  border-color: color-mix(in oklch, var(--good) 35%, var(--line));
  background: color-mix(in oklch, var(--good) 4%, var(--paper));
}
.onbh-node-eyebrow {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
}
.onbh-node-name {
  font-size: 13.5px;
  font-weight: 500;
  margin-top: 4px;
  color: var(--ink);
}
.onbh-node-meta {
  font-size: 11px;
  color: var(--ink-3);
  margin-top: 4px;
}
.onbh-connector {
  width: 2px;
  height: 24px;
  background: var(--line);
}

/* Year history table */
.yhist {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
}
.yhist-row {
  display: grid;
  grid-template-columns: 90px repeat(auto-fit, minmax(0, 1fr));
  gap: 12px;
  padding: 10px 14px;
  align-items: center;
  border-bottom: 1px solid var(--line);
}
.yhist-row:last-child { border-bottom: 0; }
.yhist-row-head {
  background: var(--paper-2);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
}
.yhist-row.is-current {
  background: color-mix(in oklch, var(--accent) 4%, var(--paper));
}
.yhist-cell-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
}
.yhist-cell {
  font-size: 13.5px;
}

/* Cap table */
.captable {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
}
.captable-row {
  display: grid;
  grid-template-columns: 2fr 1fr 110px 50px;
  gap: 10px;
  padding: 8px 12px;
  align-items: center;
  border-bottom: 1px solid var(--line);
}
.captable-row:last-child { border-bottom: 0; }
.captable-head {
  background: var(--paper-2);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
  padding: 10px 12px;
}
.captable-empty { padding: 14px; background: var(--paper-2); }
.captable-row-add { background: var(--paper-2); }
.captable-row-addbtn {
  grid-template-columns: auto 1fr;
  background: var(--paper-2);
}
.captable-input {
  border: 1px solid transparent;
  background: transparent;
  padding: 4px 6px;
  font-size: 13px;
  color: var(--ink);
  border-radius: 4px;
  width: 100%;
}
.captable-input:hover { border-color: var(--line); }
.captable-input:focus {
  outline: none;
  border-color: var(--accent);
  background: var(--paper);
}

/* Property depreciation */
.depr-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.depr-cell {
  padding: 14px 16px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.depr-cell-wide {
  grid-column: span 2;
  background: color-mix(in oklch, var(--good) 4%, var(--paper));
  border-color: color-mix(in oklch, var(--good) 25%, var(--line));
}
.depr-imp-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.depr-imp-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 4px;
}
.depr-imp-add {
  background: var(--paper-2);
}

/* Activity log */
.activity-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.activity-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.activity-dot {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.activity-dot-accent { background: color-mix(in oklch, var(--accent) 18%, transparent); color: var(--accent); }
.activity-dot-good { background: color-mix(in oklch, var(--good) 18%, transparent); color: var(--good); }
.activity-dot-ink-2 { background: var(--paper); color: var(--ink-2); border: 1px solid var(--line); }
.activity-dot-ink-3 { background: var(--paper); color: var(--ink-3); border: 1px solid var(--line); }


/* Cap-table events */
.cte-list { display: flex; flex-direction: column; gap: 6px; }
.cte-row {
  display: grid;
  grid-template-columns: 200px 1fr 30px;
  gap: 12px;
  padding: 10px 14px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  align-items: center;
}
.cte-date { display: flex; flex-direction: column; gap: 4px; }
.cte-chip-formation,
.cte-chip-admission { background: color-mix(in oklch, var(--good) 12%, transparent); color: var(--good); border-color: transparent; }
.cte-chip-transfer { background: color-mix(in oklch, var(--accent) 12%, transparent); color: var(--accent); border-color: transparent; }
.cte-chip-gift     { background: color-mix(in oklch, var(--accent) 12%, transparent); color: var(--accent); border-color: transparent; }
.cte-chip-redemption { background: color-mix(in oklch, var(--blocker) 12%, transparent); color: var(--blocker); border-color: transparent; }
.cte-chip-issuance { background: color-mix(in oklch, var(--good) 12%, transparent); color: var(--good); border-color: transparent; }
.cte-add { padding: 14px; background: var(--paper-2); border: 1px solid var(--line); border-radius: 6px; }

/* Foreign-corp evidence list */
.fc-evidence-list { display: flex; flex-direction: column; gap: 6px; }
.fc-evidence-item {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 14px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.fc-evidence-item.is-on-file {
  background: color-mix(in oklch, var(--good) 5%, var(--paper-2));
  border-color: color-mix(in oklch, var(--good) 20%, var(--line));
}

/* Ownership graph */
.og-scroll { overflow: auto; padding: 12px; background: var(--paper-2); border: 1px solid var(--line); border-radius: 6px; }
.og-canvas { position: relative; }
.og-edges { position: absolute; left: 0; top: 0; pointer-events: none; }
.og-node {
  position: absolute;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px 12px;
  cursor: pointer;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: border-color 120ms, transform 80ms;
}
.og-node:hover { border-color: var(--ink-3); transform: translateY(-1px); }
.og-node.is-corp { border-color: color-mix(in oklch, var(--accent) 30%, var(--line)); }
.og-node.is-account { border-color: color-mix(in oklch, var(--auto, var(--ink-3)) 30%, var(--line)); }
.og-node-eyebrow {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  font-weight: 600;
}
.og-node-name { font-size: 12.5px; font-weight: 500; color: var(--ink); line-height: 1.3; }
.og-node-meta { font-size: 10.5px; color: var(--ink-3); }


/* Entities workspace — sub-tab rows. Used twice:
   - `.entities-subtabs-primary` (top): All / Domestic / Foreign
   - `.entities-subtabs` (below): the kind filter within that scope
   Same flat-tab visual language for both, with the primary row sitting
   slightly heavier so the hierarchy reads. */
.entities-subtabs-primary {
  margin-top: 22px;
}
.entities-subtabs-primary .entities-subtab {
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
}
.entities-subtabs-primary + .entities-subtabs {
  margin-top: 6px;
  border-top: 0;
}

.entities-subtabs {
  display: flex;
  gap: 4px;
  margin-top: 18px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 0;
  flex-wrap: wrap;
}
.entities-subtab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  cursor: pointer;
  font-size: 13px;
  color: var(--ink-2);
  font-family: inherit;
  white-space: nowrap;
  transition: color 120ms, border-color 120ms;
}
.entities-subtab:hover { color: var(--ink); }
.entities-subtab.is-active {
  color: var(--ink);
  border-bottom-color: var(--accent);
  font-weight: 500;
}
.entities-subtab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  padding: 1px 6px;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 500;
}
.entities-subtab.is-active .entities-subtab-count {
  background: var(--accent-tint, color-mix(in oklch, var(--accent) 15%, transparent));
  color: var(--accent);
}


/* Hide the page-level scrollbar — the user finds it visually
   distracting and the content scrolls fine without a visible track. */
html, body {
  scrollbar-width: none;       /* Firefox */
  -ms-overflow-style: none;    /* IE / Edge */
}
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}


/* Slim hero CTA — replaces the old hero tile strip with a single
   contextual call-out that only appears when there's actually work
   to do. Calm by default. */
.entities-discovery-cta {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
}


/* Foreign filings tab · inline discovery section. Sits at the top of
   the Foreign tab when there are unresolved candidates. Mirrors the
   Entity roster discovery queue — triage happens inline, not via
   round-trip to a separate inbox. See ARCHITECTURE.md — Attention &
   discovery for the design rationale. */
.ft-discovery {
  background: var(--paper);
  border: 1px solid color-mix(in oklch, var(--accent) 22%, var(--line));
  border-left: 3px solid var(--accent);
  border-radius: 12px;
  padding: 18px 22px 18px;
}
.ft-discovery-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.ft-discovery-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ft-discovery-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 14px 14px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: background 120ms, border-color 120ms;
}
.ft-discovery-row:hover {
  background: var(--paper);
  border-color: var(--line-2);
}
.ft-discovery-tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  padding: 3px 10px;
  margin-top: 1px;
  border-radius: 999px;
  border: 1px solid var(--accent);
  background: transparent;
  font-size: 10.5px;
  font-weight: 500;
  color: var(--accent);
  text-transform: lowercase;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.ft-discovery-body { flex: 1; min-width: 0; }
.ft-discovery-title {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}
.ft-discovery-meta {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 3px;
}
.ft-discovery-reason {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 5px;
}
.ft-discovery-threshold {
  font-size: 12px;
  color: var(--judgment);
  line-height: 1.45;
  margin-top: 3px;
}
.ft-discovery-actions {
  flex-shrink: 0;
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin-top: 1px;
}
@media (max-width: 720px) {
  .ft-discovery-row { flex-wrap: wrap; }
  .ft-discovery-actions { margin-left: auto; }
}

/* Entities workspace — inline discovery section. Mirrors the
   Foreign filings discovery section pattern. See ARCHITECTURE.md →
   Attention & discovery for the design rationale. */
.ed-section {
  background: var(--paper);
  border: 1px solid color-mix(in oklch, var(--accent) 22%, var(--line));
  border-left: 3px solid var(--accent);
  border-radius: 12px;
  padding: 18px 22px 18px;
}
.ed-section-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.ed-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ed-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 14px 14px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: background 120ms, border-color 120ms;
}
.ed-row:hover {
  background: var(--paper);
  border-color: var(--line-2);
}
.ed-tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 90px;
  padding: 3px 10px;
  margin-top: 1px;
  border-radius: 999px;
  border: 1px solid var(--accent);
  background: transparent;
  font-size: 10.5px;
  font-weight: 500;
  color: var(--accent);
  text-transform: lowercase;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.ed-body { flex: 1; min-width: 0; }
.ed-title {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}
.ed-meta {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 3px;
}
.ed-reason {
  font-size: 12.5px;
  color: var(--ink-2);
  line-height: 1.45;
  margin-top: 5px;
}
.ed-actions {
  flex-shrink: 0;
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin-top: 1px;
}
@media (max-width: 720px) {
  .ed-row { flex-wrap: wrap; }
  .ed-actions { margin-left: auto; }
}

/* Rollforward dashboard · "tracked at $0" band — placeholder
   carryovers shown as a compact strip with a bulk-acknowledge
   button. Same philosophy as the Carryovers workspace footnote;
   here it sits inline so the user sees both active items and
   placeholders in one sweep without separate page navigation. */
.rf-dash-zero {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: var(--paper-2);
  border: 1px dashed var(--line-2);
  border-radius: 10px;
}

/* Carryovers · "tracked at $0" footnote — collapsible band at the
   bottom of the workspace. Surfaces carryover types the schema covers
   but that didn't apply this year. Acknowledge in one bulk action;
   we'll alert if any change in future years. */
.cw-zero {
  background: var(--paper-2);
  border: 1px dashed var(--line-2);
  border-radius: 12px;
  overflow: hidden;
}
.cw-zero-head {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  background: transparent;
  border: 0;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--ink-2);
  transition: background 120ms, color 120ms;
}
.cw-zero-head:hover { background: var(--paper); color: var(--ink); }
.cw-zero-title {
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
}
.cw-zero-sub {
  flex: 1;
  min-width: 0;
  font-size: 12px;
}
.cw-zero-body {
  padding: 4px 22px 20px;
  border-top: 1px solid var(--line-2);
  background: var(--paper);
}
.cw-zero-explain {
  font-size: 13px;
  line-height: 1.55;
  color: var(--ink-2);
  max-width: 72ch;
  margin-top: 14px;
}
.cw-zero-bulk {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}
.cw-zero-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 6px;
}
.cw-zero-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 8px;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--ink-2);
  transition: background 120ms, border-color 120ms, color 120ms;
}
.cw-zero-row:hover { background: var(--paper); border-color: var(--line-2); color: var(--ink); }
.cw-zero-row.is-confirmed {
  background: color-mix(in oklch, var(--good) 5%, var(--paper));
  border-color: color-mix(in oklch, var(--good) 22%, var(--line));
}
.cw-zero-row-label {
  flex: 1;
  min-width: 0;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cw-zero-row-form {
  flex-shrink: 0;
  font-size: 10.5px;
  padding: 1px 6px;
  border-radius: 6px;
  background: color-mix(in oklch, var(--ink) 5%, transparent);
}

/* Carryovers workspace
   Multi-year register of every carryforward — FTC, capital loss,
   QBI, passive losses. Surfaces every state of the lifecycle in
   one place. Promoted from a tab inside Rollforward to its own
   sidebar entry because carryovers are durable, not seasonal.
   ============================================================ */
.cw-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 18px;
  padding: 22px 24px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
}
.cw-summary-cell { min-width: 0; }
.cw-summary-value {
  font-size: 28px;
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--ink);
}
.cw-summary-label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 6px;
}
.cw-filters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.cw-filter {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  cursor: pointer;
  font-family: inherit;
  font-size: 13px;
  color: var(--ink-2);
  transition: background 120ms, border-color 120ms, color 120ms;
}
.cw-filter:hover {
  background: var(--paper-2);
  color: var(--ink);
}
.cw-filter.is-active {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
  font-weight: 500;
}
.cw-filter-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  padding: 1px 6px;
  border-radius: 999px;
  background: color-mix(in oklch, var(--ink) 6%, transparent);
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 500;
}
.cw-filter.is-active .cw-filter-count {
  background: color-mix(in oklch, var(--paper) 18%, transparent);
  color: var(--paper);
}
.cw-group { }
.cw-group-title {
  font-family: "Instrument Serif", serif;
  font-weight: 400;
  font-size: 22px;
  line-height: 1.15;
  letter-spacing: -0.005em;
  margin: 0;
  color: var(--ink);
}
.cw-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  background: var(--paper-2);
  border: 1px dashed var(--line-2);
  border-radius: 12px;
}
.mt-7 { margin-top: 28px; }

/* Rollforward dashboard — thin aggregator
   Two sections (carryovers + open items), no tabs. Each section
   surfaces a filtered view of items whose permanent home is
   elsewhere (carryovers → workspace; open items → resolved inline).
   See ARCHITECTURE.md → "Attention & discovery". */
.rf-dash {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.rf-dash-section {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 22px 24px 18px;
}
.rf-dash-section-done {
  background: color-mix(in oklch, var(--good) 5%, var(--paper));
  border-color: color-mix(in oklch, var(--good) 22%, var(--line));
}
.rf-dash-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.rf-dash-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.rf-dash-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  width: 100%;
  transition: background 120ms, border-color 120ms;
}
.rf-dash-row:hover {
  background: var(--paper);
  border-color: var(--line-2);
}
.rf-dash-tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 88px;
  padding: 3px 10px;
  border-radius: 999px;
  border: 1px solid currentColor;
  background: transparent;
  font-size: 10.5px;
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.rf-dash-tag-material  { color: var(--blocker); }
.rf-dash-tag-carryover { color: var(--accent); }
.rf-dash-row-body { flex: 1; min-width: 0; }
.rf-dash-row-title {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}
.rf-dash-row-meta {
  font-size: 12px;
  color: var(--ink-3);
  margin-top: 2px;
}
.rf-dash-amount {
  flex-shrink: 0;
  font-size: 18px;
  letter-spacing: -0.005em;
}
.rf-dash-cta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 500;
  transition: background 120ms, color 120ms;
}
.rf-dash-row:hover .rf-dash-cta {
  background: var(--ink);
  color: var(--paper);
}

/* Roster-diff rows on the Rollforward Entity Roster tab.
   Intentionally less visual than workspace tiles — this is a manifest. */
.rd-list { display: flex; flex-direction: column; gap: 4px; }
.rd-row {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  transition: border-color 120ms, transform 80ms;
}
.rd-row:hover { border-color: var(--ink-3); transform: translateY(-1px); }
.rd-row-added { border-left: 3px solid var(--good); }
.rd-row-retired {
  border-left: 3px solid var(--ink-3);
  background: var(--paper-2);
  opacity: 0.85;
}
.rd-row-stable {}
.rd-row-glyph {
  width: 30px; height: 30px;
  flex-shrink: 0;
  border-radius: 6px;
  background: var(--paper-2);
  display: grid;
  place-items: center;
  font-family: "Instrument Serif", serif;
  font-size: 15px;
  color: var(--ink-2);
}

.rd-collapsed-head {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 0;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--line);
  cursor: pointer;
  text-align: left;
}


/* Discovery queue — tighter row layout. The old card-row was too chunky. */
.dq-list { display: flex; flex-direction: column; gap: 4px; }
.dq-row {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.dq-row[data-mode="edit"] { background: var(--paper-2); }
.dq-row-main {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
}
.dq-row-glyph {
  width: 28px; height: 28px;
  flex-shrink: 0;
  border-radius: 6px;
  background: var(--paper-2);
  display: grid;
  place-items: center;
  font-family: "Instrument Serif", serif;
  font-size: 14px;
  color: var(--ink-2);
}
.dq-row-name {
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink);
}
.dq-row-reason {
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}
.dq-row-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.dq-row[data-mode="edit"] .dq-edit {
  border-top: 1px solid var(--line);
  margin: 0;
  padding: 14px 16px 16px;
}


/* Roster diff sub-sections — grouped under one heading. */
.rd-diff-sub-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.rd-diff-sub-disabled .rd-diff-sub-head {
  opacity: 0.6;
}
.rd-diff-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: 999px;
  border: 1px solid var(--line);
}
.rd-diff-pill-added    { color: var(--good);     border-color: color-mix(in oklch, var(--good) 35%, var(--line)); background: color-mix(in oklch, var(--good) 6%, transparent); }
.rd-diff-pill-retired  { color: var(--ink-3);    border-color: var(--line); background: var(--paper-2); }
.rd-diff-pill-modified { color: var(--ink-3);    border-color: var(--line); background: var(--paper-2); }

.rd-stable-callout {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 18px;
  background: color-mix(in oklch, var(--good) 5%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--good) 25%, var(--line));
  border-radius: var(--radius);
}


/* Phase 4 — Setup-status callout. */
.setup-status {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
}
.setup-status.is-pending {
  border-left: 3px solid var(--accent);
  background: color-mix(in oklch, var(--accent) 4%, var(--paper));
}
.setup-status.is-complete {
  border-left: 3px solid var(--good);
  background: color-mix(in oklch, var(--good) 4%, var(--paper));
}
.setup-status-head {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 14px 18px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
}
.setup-status-body {
  padding: 0 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px solid var(--line);
  margin-top: 0;
  padding-top: 12px;
}
.setup-doc-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 10px 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.setup-doc-row.is-uploaded {
  background: color-mix(in oklch, var(--good) 4%, var(--paper));
  border-color: color-mix(in oklch, var(--good) 20%, var(--line));
}

/* Documents drawer filter chips. */
.entity-docs-filter {
  display: inline-flex;
  gap: 2px;
  padding: 2px;
  background: var(--paper-2);
  border-radius: 999px;
  border: 1px solid var(--line);
}
.entity-docs-filter-chip {
  padding: 3px 10px;
  background: transparent;
  border: 0;
  border-radius: 999px;
  font-size: 11px;
  color: var(--ink-3);
  cursor: pointer;
  font-family: inherit;
  transition: background 120ms, color 120ms;
}
.entity-docs-filter-chip:hover { color: var(--ink-2); }
.entity-docs-filter-chip.is-active {
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
  font-weight: 500;
}
