/* ---------- theme tokens ---------- */
:root {
  --font-anthropic-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-anthropic-serif: Georgia, "Times New Roman", serif;
  --cds-font-size-caption: 12px; --cds-font-size-body: 14px; --cds-font-size-heading: 16px; --cds-font-size-title: 28px;
  --cds-font-weight-medium: 600;
  --cds-gap-xs: 4px; --cds-gap-sm: 8px; --cds-gap-md: 12px; --cds-gap-lg: 20px; --cds-gap-xl: 32px;
  --cds-pad-xs: 4px; --cds-pad-sm: 8px; --cds-pad-md: 14px; --cds-pad-lg: 18px;
  --cds-radius: 8px; --cds-dur-slow: .25s;
  --color-fg: #1f1e1d; --color-fg-muted: #6b6965; --color-bg: #f5f4f0; --color-panel: #ffffff; --color-border-line: #e3e1db;
  --color-ok: #1b7f4c; --color-warn: #a96a12; --color-bad: #c23a2f;
  --cds-chart-muted: #cbc8c0; --cds-chart-grid: #eceae5; --cds-chart-axis: #bab7af; --cds-chart-reference: #9a978f;
  --cds-surface-popover: #ffffff; --cds-border: #e3e1db; --cds-shadow-popover: 0 6px 20px rgba(0, 0, 0, .12); --cds-text-secondary: #6b6965;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root {
    --color-fg: #ecebe7; --color-fg-muted: #a3a09a; --color-bg: #1b1a19; --color-panel: #252422; --color-border-line: #3a3936;
    --color-ok: #5cc28c; --color-warn: #e0a84a; --color-bad: #f07a6e;
    --cds-chart-muted: #56544f; --cds-chart-grid: #33322f; --cds-chart-axis: #5f5d58; --cds-chart-reference: #7d7a74;
    --cds-surface-popover: #2e2d2a; --cds-border: #45433f; --cds-shadow-popover: 0 6px 20px rgba(0, 0, 0, .5); --cds-text-secondary: #a3a09a;
    color-scheme: dark;
  }
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--color-bg); color: var(--color-fg); font-family: var(--font-anthropic-sans); font-size: var(--cds-font-size-body); line-height: 1.45; }

/* ---------- Copley home link ---------- */
.portal-brand { display: inline-flex; flex: none; align-items: center; gap: 6px; max-width: 100%; padding-block: 4px; color: var(--color-fg); font-family: var(--font-anthropic-serif); font-size: 16px; line-height: 1.2; text-decoration: none; border-radius: 4px; }
.portal-brand img { display: block; flex: none; width: 24px; height: auto; mix-blend-mode: multiply; }
.portal-brand span { white-space: nowrap; }
.portal-brand:hover { color: var(--color-warn); }
.portal-brand:focus-visible { outline: 2px solid var(--color-fg); outline-offset: 4px; }
@media (max-width: 480px) {
  .portal-brand { font-size: 14px; }
  .portal-brand img { width: 22px; }
}
@media (prefers-color-scheme: dark) {
  .portal-brand img { filter: invert(1) hue-rotate(180deg); mix-blend-mode: screen; }
}

/* ---------- loading state and page layout ---------- */
.app-empty { max-width: 40rem; margin: 15vh auto; padding: 0 16px; text-align: center; color: var(--color-fg-muted); }
.app-empty h2 { color: var(--color-fg); font-family: var(--font-anthropic-serif); font-weight: 400; font-size: var(--cds-font-size-title); }
#dash-root { max-width: 1400px; margin: 0 auto; padding: 20px 16px 48px; }

/* ---------- dashboard ---------- */
.fd { font-family: var(--font-anthropic-sans); display: grid; gap: var(--cds-gap-lg); }
.fd-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cds-gap-sm); }
.fd-heading-copy { display: flex; flex: 1 1 420px; align-items: center; gap: var(--cds-gap-md); min-width: 0; }
.fd-heading-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cds-gap-sm); }
.fd-heading-actions form { margin: 0; }
#dash-root:not(.fd-show-notes) :is(p.fd-sub, .fd-hint, #notes, .fd-pie-note, .fd-tip-note) { display: none; }
.fd-title { flex: 1; min-width: 0; overflow-wrap: anywhere; font-family: var(--font-anthropic-serif); font-weight: 400; font-size: clamp(20px, 3vw, var(--cds-font-size-title)); margin: 0; }
.fd-controls { display: flex; flex-wrap: wrap; gap: var(--cds-gap-sm) var(--cds-gap-md); align-items: end; margin-top: var(--cds-gap-md); }
.fd-controls label { display: grid; gap: 2px; font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fd-controls select { font: inherit; font-size: var(--cds-font-size-body); color: var(--color-fg); background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: 4px 8px; min-height: 32px; }
.fd-seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); overflow: hidden; }
.fd-seg button { font: inherit; font-size: var(--cds-font-size-caption); background: var(--color-panel); color: var(--color-fg-muted); border: 0; border-right: 1px solid var(--color-border-line); padding: 6px 10px; cursor: pointer; min-height: 32px; }
.fd-seg button:last-child { border-right: 0; }
.fd-seg button[aria-pressed="true"] { background: var(--color-fg); color: var(--color-bg); }
.fd-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10.5rem), 1fr)); gap: var(--cds-gap-md); }
.fd-tile { background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-md); display: grid; gap: 4px; align-content: start; }
.fd-tile.fd-dd { cursor: zoom-in; }
.fd-tl { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fd-tv { font-family: var(--font-anthropic-serif); font-weight: 400; font-size: var(--cds-font-size-title); font-variant-numeric: tabular-nums; line-height: 1.15; min-height: 1.15em; }
.fd-td, .fd-km { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); display: grid; gap: 2px; font-variant-numeric: tabular-nums; min-height: 1.3em; }
.fd-good { color: var(--color-ok); }
.fd-bad { color: var(--color-bad); }
.fd-flat { color: var(--color-fg-muted); }
.fd-hint { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin: 0; }
.fd-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: var(--cds-gap-md); }
.fd-card { background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-lg); min-width: 0; display: grid; gap: var(--cds-gap-sm); align-content: start; }
.fd-card h2 { font-size: var(--cds-font-size-heading); font-weight: var(--cds-font-weight-medium); margin: 0; }
.fd-sub { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin: 0; }
.fd-cardhead { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--cds-gap-sm); align-items: start; }
.fd-legend { display: flex; flex-wrap: wrap; gap: var(--cds-gap-md); font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fd-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 6px; vertical-align: -1px; }
.fd-sw-base { background: var(--cds-chart-muted); }
.fd-chart { position: relative; min-height: 240px; }
.fd-chart svg { display: block; overflow: visible; }
.fd-chart text { fill: var(--color-fg-muted); font-size: var(--cds-font-size-caption); font-family: var(--font-anthropic-sans); }
.fd-chart text.fd-sel { fill: var(--color-fg); font-weight: 600; }
.fd-chart text.fd-vl { fill: var(--color-fg); font-variant-numeric: tabular-nums; }
.fd-chart text.fd-rl { fill: var(--color-fg); }
.fd-bridge { min-height: 300px; }
.fd-collapse { align-self: start; }
.fd-collapse summary { display: flex; align-items: center; justify-content: space-between; gap: var(--cds-gap-sm); cursor: pointer; list-style: none; }
.fd-collapse summary::-webkit-details-marker { display: none; }
.fd-collapse summary h2::before { content: '▸'; display: inline-block; width: 1.1em; color: var(--color-fg-muted); transition: transform var(--cds-dur-slow); }
.fd-collapse[open] summary h2::before { transform: rotate(90deg); }
.fd-collapse[open] summary .fd-sub { visibility: hidden; }
.fd-tip { position: absolute; pointer-events: none; background: var(--cds-surface-popover); border: 1px solid var(--cds-border); border-radius: var(--cds-radius); box-shadow: var(--cds-shadow-popover); padding: var(--cds-pad-xs) var(--cds-pad-sm); font-size: var(--cds-font-size-caption); white-space: nowrap; z-index: 2; display: none; font-variant-numeric: tabular-nums; }
.fd-tip .fd-th { color: var(--cds-text-secondary); margin-bottom: 2px; }
.fd-tip i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; }
.fd-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: var(--cds-font-size-caption); min-height: 28px; }
.fd-crumbs button { font: inherit; background: none; border: 0; padding: 4px 2px; color: var(--color-fg-muted); text-decoration: underline; cursor: pointer; }
.fd-crumbs span { color: var(--color-fg); font-weight: 600; }
.fd-crumbs em { color: var(--color-fg-muted); font-style: normal; }
.fd-back { font: inherit; font-size: var(--cds-font-size-caption); background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: 4px 10px; cursor: pointer; color: var(--color-fg); }
.fd-back[hidden] { display: none; }
.fd-drill { min-height: 260px; }
.fd-list { display: grid; }
.fd-row { display: grid; grid-template-columns: minmax(7rem, 1.3fr) minmax(4rem, 2fr) minmax(4.5rem, auto) minmax(4.5rem, auto); gap: var(--cds-gap-sm); align-items: center; padding: 6px 4px; border-bottom: 1px solid var(--color-border-line); font-size: var(--cds-font-size-caption); cursor: zoom-in; user-select: none; border-radius: 2px; }
.fd-row:hover, .fd-row:focus-visible { background: color-mix(in srgb, var(--color-fg) 5%, transparent); outline: none; }
.fd-row.fd-sec { cursor: zoom-in; font-weight: 600; border-bottom-color: var(--color-fg-muted); margin-top: var(--cds-gap-sm); }
.fd-row.fd-head { cursor: default; color: var(--color-fg-muted); font-weight: 400; padding-top: 0; }
.fd-row.fd-head:hover { background: none; }
.fd-rn { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-rn small { color: var(--color-fg-muted); margin-left: 4px; }
.fd-rb { display: grid; gap: 2px; }
.fd-bar { height: 10px; border-radius: 2px; min-width: 1px; }
.fd-bar.fd-b2 { height: 4px; background: var(--cds-chart-muted); }
.fd-rv, .fd-rc { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.fd-acct-head { display: flex; flex-wrap: wrap; gap: var(--cds-gap-md); font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin-bottom: var(--cds-gap-sm); }
.fd-acct-head b { color: var(--color-fg); font-weight: 600; font-variant-numeric: tabular-nums; }
.fd-tablewrap { overflow-x: auto; }
.fd-table { width: 100%; border-collapse: collapse; font-size: var(--cds-font-size-caption); font-variant-numeric: tabular-nums; }
.fd-table th { text-align: right; font-weight: 500; color: var(--color-fg-muted); padding: 6px 8px; border-bottom: 1px solid var(--color-border-line); white-space: nowrap; vertical-align: bottom; }
.fd-table th:first-child, .fd-table td:first-child { text-align: left; }
.fd-table td { text-align: right; padding: 6px 8px; border-bottom: 1px solid var(--color-border-line); white-space: nowrap; }
.fd-table tr.fd-strong td { font-weight: 600; }
.fd-table tr.fd-pct td { color: var(--color-fg-muted); }
.fd-table tr.fd-dd { cursor: zoom-in; }
.fd-table tr.fd-dd:hover td { background: color-mix(in srgb, var(--color-fg) 5%, transparent); }
.fd-numbers { margin-top: var(--cds-gap-md); border-top: 1px solid var(--color-border-line); padding-top: var(--cds-gap-md); display: grid; gap: var(--cds-gap-sm); }
.fd-glance-wrap { overflow-x: auto; }
.fd-glance-in { min-width: 34rem; }
.fd-gl-row { display: grid; grid-template-columns: minmax(8rem, 1.1fr) minmax(5rem, 0.7fr) minmax(5rem, 1fr) minmax(14rem, 2.6fr); gap: var(--cds-gap-md); align-items: center; padding: 8px 4px; border-bottom: 1px solid var(--color-border-line); font-size: var(--cds-font-size-body); border-radius: 2px; }
.fd-gl-head { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); align-items: end; padding-top: 0; }
.fd-gl-head .fd-gl-cell { display: block; text-align: center; }
.fd-gl-row.fd-strong .fd-gl-name, .fd-gl-row.fd-strong .fd-gl-val { font-weight: 600; }
.fd-gl-row.fd-pct { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); padding-top: 4px; padding-bottom: 4px; }
.fd-gl-row.fd-dd { cursor: zoom-in; }
.fd-gl-row.fd-dd:hover { background: color-mix(in srgb, var(--color-fg) 5%, transparent); }
.fd-gl-val { text-align: right; font-variant-numeric: tabular-nums; }
.fd-gl-spark svg { display: block; overflow: visible; }
.fd-gl-cell { display: grid; grid-template-columns: 1fr 9.5rem; gap: 6px; align-items: center; }
.fd-gl-track { position: relative; height: 14px; background: linear-gradient(var(--cds-chart-axis), var(--cds-chart-axis)) center / 1px 100% no-repeat; }
.fd-gl-bar { position: absolute; top: 2px; bottom: 2px; border-radius: 2px; background: currentColor; }
.fd-gl-pct { text-align: right; font-variant-numeric: tabular-nums; font-size: var(--cds-font-size-caption); white-space: nowrap; }
.fd-pie { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: var(--cds-gap-lg); align-items: center; position: relative; min-height: 260px; }
.fd-pie-svg { width: 100%; max-width: 280px; margin-inline: auto; }
.fd-pie-svg svg { display: block; }
.fd-pie-svg path { cursor: default; transition: opacity var(--cds-dur-slow); }
.fd-pie-svg path.fd-can { cursor: zoom-in; }
.fd-pie-svg text { font-family: var(--font-anthropic-sans); fill: var(--color-fg-muted); font-size: var(--cds-font-size-caption); }
.fd-pie-svg text.fd-pie-total { font-family: var(--font-anthropic-serif); fill: var(--color-fg); font-size: var(--cds-font-size-heading); }
.fd-pie-legend { display: grid; font-size: var(--cds-font-size-caption); }
.fd-pie-row { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto 3.5rem; gap: var(--cds-gap-sm); align-items: center; padding: 6px 4px; border-bottom: 1px solid var(--color-border-line); border-radius: 2px; font-variant-numeric: tabular-nums; }
.fd-pie-row.fd-can { cursor: zoom-in; }
.fd-pie-row:hover, .fd-pie-row:focus-visible { background: color-mix(in srgb, var(--color-fg) 5%, transparent); outline: none; }
.fd-pie-row i { width: 10px; height: 10px; border-radius: 2px; }
.fd-pie-row span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-pie-row span:nth-child(n+3) { text-align: right; }
.fd-pie-note { grid-column: 1 / -1; margin-top: var(--cds-gap-xs); }
.fd-pie-sum { font-weight: 600; border-top: 1px solid var(--color-fg-muted); }
.fd-minis { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: var(--cds-gap-md); }
.fd-mini { display: grid; gap: 2px; }
.fd-mini .fd-chart { min-height: 120px; }
.fd-mv { font-family: var(--font-anthropic-serif); font-size: var(--cds-font-size-heading); font-variant-numeric: tabular-nums; }
.fd-mc { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fd-notes { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin: 0; padding-left: 1.1rem; display: grid; gap: 4px; }
.fd-fail { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: inherit; color: var(--color-fg-muted); font-size: var(--cds-font-size-caption); }
.fd-fail i { width: .375rem; height: .375rem; border-radius: 50%; background: var(--color-bad); }
.fd-empty { color: var(--color-fg-muted); font-size: var(--cds-font-size-caption); margin: 0; }
