/* =====================================================================
   DOMINO — Pipeline (Stage 02, analyst workbench)
   Workflow board · readiness ring/gate · sensitivity grid · risk register ·
   diligence checklist · IC memo. Token-driven so dark mode is inherited.
   ===================================================================== */

/* ---- Strategy Lens (deal drawer) ---- */
.pl-lens { border: 1px solid var(--ac-line); border-radius: var(--r-card); background: linear-gradient(135deg, color-mix(in oklab, var(--ac) 8%, var(--surface)), var(--surface) 70%); overflow: hidden; margin-bottom: 16px; }
.pl-lens__top { display: flex; align-items: center; gap: 10px; padding: 13px 18px 11px; }
.pl-lens__badge { flex: 0 0 auto; }
.pl-lens__q { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600; color: var(--ink-900); letter-spacing: -0.01em; }
.pl-lens__q svg { color: var(--ac-700); }
.pl-lens__strip { display: flex; align-items: stretch; border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); background: var(--surface); }
.pl-lens__head { flex: 0 0 auto; min-width: 168px; padding: 14px 20px; background: var(--ink-800); color: #fff; display: flex; flex-direction: column; justify-content: center; }
.pl-lens__head-l { font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.66); font-weight: 600; }
.pl-lens__head-v { font-size: 30px; font-weight: 600; letter-spacing: -0.025em; margin-top: 5px; font-feature-settings: "tnum" 1; }
.pl-lens__cells { display: grid; grid-template-columns: repeat(5, 1fr); flex: 1; }
.pl-lens__cells .dl-kpi { border-left: 1px solid var(--hairline-soft); }
.pl-lens__cells .dl-kpi:first-child { border-left: 0; }
.pl-lens--good { color: var(--success); }
.pl-lens--bad { color: var(--danger); }
.pl-lens__read { display: flex; align-items: flex-start; gap: 8px; padding: 11px 18px; font-size: 12.5px; line-height: 1.5; color: var(--ink-800); }
.pl-lens__read svg { color: var(--ac-700); flex: 0 0 auto; margin-top: 2px; }
@media (max-width: 1100px) { .pl-lens__cells { grid-template-columns: repeat(3, 1fr); } }


.dl__title-wrap { display: flex; flex-direction: column; gap: 2px; }
.pl-h { font-size: 15px; font-weight: 700; color: var(--ink-900); letter-spacing: -0.01em; }
.pl-sub { font-size: 12px; color: var(--slate-500); }

/* AI execution-mode chip */
.pl-mode { display: inline-flex; align-items: center; gap: 5px; font-size: 9.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 8px; border-radius: var(--radius-pill); margin-left: 8px; vertical-align: middle; }
.pl-mode__dot { width: 5px; height: 5px; border-radius: 50%; }
.pl-mode--always { background: var(--success-bg); color: #2F5A42; }
.pl-mode--always .pl-mode__dot { background: var(--success); }
.pl-mode--trigger { background: var(--ac-soft); color: var(--ac-700); }
.pl-mode--trigger .pl-mode__dot { background: var(--ac); }
.pl-mode--scheduled { background: var(--info-bg); color: var(--info); }
.pl-mode--scheduled .pl-mode__dot { background: var(--info); }
/* in flex section headers the gap already spaces the chip — drop the extra margin */
.dl-sec__h .pl-mode, .pl-risk-head .pl-mode { margin-left: 0; }

/* ---- portfolio metric strip — inside dl-insights alongside the AI summary, matching Deals ---- */
.pl-metrics { grid-template-columns: repeat(5, 1fr); margin-bottom: 0; border-radius: var(--r-card); }

/* ---- workflow board ---- */
.pl-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; padding: 18px var(--gutter) 28px; align-items: start; }
.pl-col { background: var(--neutral-50); border: 1px solid var(--hairline); border-radius: var(--r-card); display: flex; flex-direction: column; min-width: 0; }
.pl-col__h { display: flex; align-items: center; gap: 9px; padding: 13px 14px; border-bottom: 1px solid var(--hairline); }
.pl-col__step { width: 21px; height: 21px; flex: 0 0 auto; border-radius: 50%; background: var(--ink-800); color: var(--ivory); font-size: 11px; font-weight: 700; display: grid; place-items: center; }
.app.theme-dark .pl-col__step { background: var(--chip); color: var(--chip-fg); }
.pl-col__l { font-size: 12.5px; font-weight: 700; color: var(--ink-900); letter-spacing: -0.01em; display: flex; flex-direction: column; line-height: 1.25; }
.pl-col__full { font-size: 10px; font-weight: 500; color: var(--slate-400); text-transform: none; letter-spacing: 0; }
.pl-col__n { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--slate-500); background: var(--neutral-100); border-radius: var(--radius-pill); padding: 1px 9px; }
.pl-col__body { padding: 12px; display: flex; flex-direction: column; gap: 11px; min-height: 70px; }
.pl-col__empty { font-size: 12px; color: var(--slate-300); text-align: center; padding: 16px 0; }

.pl-card { background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 13px; cursor: pointer; transition: box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out); position: relative; }
.pl-card:hover { box-shadow: var(--shadow-md); transform: translateY(-1px); border-color: var(--border-strong); }
.pl-card__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.pl-card__name { font-size: 13.5px; font-weight: 700; color: var(--ink-900); letter-spacing: -0.01em; line-height: 1.3; text-wrap: pretty; }
.pl-card__loc { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--slate-500); margin-top: 4px; }
.pl-card__loc svg { color: var(--slate-400); flex: 0 0 auto; }
.pl-card__returns { display: flex; gap: 6px; margin: 11px 0; }
.pl-card__returns span { flex: 1; background: var(--neutral-50); border: 1px solid var(--hairline-soft); border-radius: 7px; padding: 6px 4px; text-align: center; font-size: 13px; font-weight: 700; color: var(--ink-900); display: flex; flex-direction: column; gap: 2px; font-feature-settings: "tnum" 1; }
.pl-card__returns i { font-size: 8.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); font-style: normal; }
.pl-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pl-ic { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--slate-500); }
.pl-ic.is-set { color: var(--success); }
.pl-ic svg { color: var(--slate-400); }
.pl-ic.is-set svg { color: var(--success); }
.pl-card__ready { display: inline-flex; align-items: center; gap: 5px; margin-top: 10px; font-size: 10.5px; font-weight: 700; letter-spacing: 0.02em; color: var(--success); background: var(--success-bg); border-radius: var(--radius-pill); padding: 3px 9px; }

/* avatars */
.pl-avs { display: inline-flex; }
.pl-av { width: 24px; height: 24px; border-radius: 50%; background: var(--ink-700); color: var(--ivory); font-size: 9.5px; font-weight: 700; display: grid; place-items: center; border: 2px solid var(--surface); margin-left: -7px; }
.pl-av:first-child { margin-left: 0; }
.pl-av--more { background: var(--neutral-100); color: var(--slate-500); }
.app.theme-dark .pl-av { background: var(--chip); color: var(--chip-fg); }

/* readiness ring */
.pl-ring { position: relative; display: inline-grid; place-items: center; flex: 0 0 auto; }
.pl-ring svg { position: absolute; inset: 0; }
.pl-ring b { font-size: 12px; font-weight: 700; font-feature-settings: "tnum" 1; }

/* ---- drawer: readiness pill in header ---- */
.pl-gate-pill { display: flex; flex-direction: column; align-items: center; border: 1.5px solid; border-radius: var(--r-control); padding: 5px 14px; }
.pl-gate-pill__score { font-size: 20px; font-weight: 700; line-height: 1; font-feature-settings: "tnum" 1; }
.pl-gate-pill__l { font-size: 8.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--slate-400); margin-top: 2px; }
/* drawer header right column: readiness above, action buttons in a row below (right-aligned) */
.pl-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.pl-actions .pl-gate-pill { flex-direction: row; align-items: baseline; gap: 6px; padding: 5px 12px; }
.pl-actions .pl-gate-pill__l { margin-top: 0; }
.pl-actions__btns { display: flex; gap: 8px; }

/* sponsor / generic label-value rows in drawer side */
.pl-sponsor-name { font-size: 13.5px; font-weight: 700; color: var(--ink-900); margin-bottom: 12px; letter-spacing: -0.01em; }
.pl-slk { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid var(--hairline-soft); }
.pl-slk:first-of-type { border-top: 0; padding-top: 0; }
.pl-slk__l { font-size: 12px; color: var(--slate-500); flex: 0 0 auto; }
.pl-slk__v { font-size: 12.5px; color: var(--ink-900); font-weight: 600; text-align: right; }

.pl-next { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.pl-next li { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; color: var(--ink-800); line-height: 1.4; }
.pl-next li svg { color: var(--ac-700); flex: 0 0 auto; margin-top: 2px; }
.pl-next em { color: var(--slate-400); font-style: normal; }

/* ---- pro forma + sale comps table ---- */
.pl-pf { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.pl-pf thead th { text-align: left; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); padding: 0 12px 9px; border-bottom: 1px solid var(--hairline); }
.pl-pf thead th.num, .pl-pf td.num { text-align: right; }
.pl-pf td { padding: 9px 12px; border-bottom: 1px solid var(--hairline-soft); color: var(--ink-800); font-feature-settings: "tnum" 1; }
.pl-pf tbody tr:last-child td { border-bottom: 0; }
.pl-pf td:first-child { font-weight: 600; color: var(--ink-900); }
/* total / summation row */
.pl-pf__total td { border-top: 1.5px solid var(--ink-800); border-bottom: 0; font-weight: 700; color: var(--ink-900); padding-top: 11px; }
.pl-pf__total td.num { font-feature-settings: "tnum" 1; }
/* expense-detail section heads, subtotals, revenue row */
.pl-pf__sechead td { font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); background: var(--neutral-50); padding: 11px 12px 7px; }
.pl-pf__sub td { font-weight: 700; color: var(--ink-900); border-top: 1px solid var(--hairline-soft); }
.pl-pf__sub--strong td { border-top: 1.5px solid var(--slate-300); }
.pl-pf__rev td { font-weight: 700; color: var(--ink-900); }
/* ---- Financials: horizontal sticky section sub-nav (full-width body) ---- */
.pl-fin { display: flex; flex-direction: column; gap: var(--drawer-sec-gap); align-items: stretch; }
.pl-fin__subnav { position: sticky; top: 0; z-index: 5; display: flex; gap: 4px; overflow-x: auto; background: color-mix(in srgb, var(--surface) 75%, transparent); backdrop-filter: blur(12px) saturate(1.4); -webkit-backdrop-filter: blur(12px) saturate(1.4); box-shadow: var(--shadow-sm); border: 1px solid var(--hairline); border-radius: var(--r-card); padding: 7px 8px; margin-bottom: 8px; scrollbar-width: none; }
.pl-fin__subnav::-webkit-scrollbar { display: none; }
.pl-fin__nav { display: flex; flex-direction: column; gap: 1px; margin-bottom: 4px; }
.pl-fin__link { text-align: left; font-family: var(--font-sans); font-size: 12.5px; font-weight: 500; color: var(--slate-500); background: none; border: 0; border-left: 2px solid transparent; padding: 7px 11px; cursor: pointer; border-radius: 0 6px 6px 0; transition: color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out); }
.pl-fin__subnav .pl-fin__link { white-space: nowrap; border: 0; border-radius: var(--r-control); padding: 8px 15px; background: transparent; font-size: 10.5px; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: var(--slate-500); }
.pl-fin__link:hover { color: var(--ink-900); background: var(--neutral-50); }
.pl-fin__subnav .pl-fin__link:hover { background: var(--neutral-50); color: var(--ink-900); }
.pl-fin__link.is-active { color: var(--ac-700); font-weight: 700; border-left-color: var(--ac); background: var(--ac-soft); }
.pl-fin__subnav .pl-fin__link.is-active { border: 0; background: var(--ac-soft); color: var(--ac-700); }
.pl-fin__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--drawer-sec-gap); }
.pl-fin__body > .dl-sec { margin-bottom: 0; }
.pl-fin__refs { display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px; }
.pl-fin__refs > .dl-sec { margin-bottom: 0; }
@media (max-width: 720px) { .pl-fin__refs { grid-template-columns: 1fr; } }
/* ---- Deal Overview card (first card on the Overview tab) ---- */
.pl-ov__stage { margin-left: auto; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ac-700); background: var(--ac-soft); padding: 3px 9px; border-radius: var(--radius-pill); }
.pl-ov__facts { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--hairline); border-radius: var(--r-control); overflow: hidden; margin-bottom: 14px; }
.pl-ov__fact { padding: 9px 13px; border-right: 1px solid var(--hairline-soft); min-width: 0; }
.pl-ov__fact:last-child { border-right: 0; }
.pl-ov__fl { display: block; font-size: 9.5px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-400); }
.pl-ov__fv { display: block; font-size: 13px; font-weight: 600; color: var(--ink-900); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pl-ov__thesis { font-size: 13.5px; line-height: 1.62; color: var(--ink-800); cursor: text; border-radius: 6px; padding: 3px 5px; margin: -3px -5px; text-wrap: pretty; }
.pl-ov__thesis:hover { background: var(--neutral-50); }
.pl-ov__hl { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--hairline-soft); }
.pl-ov__hl-h { font-size: 10px; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: var(--slate-400); margin-bottom: 9px; }
.pl-ov__hl-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pl-ov__hl-list li { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; color: var(--ink-800); line-height: 1.5; }
.pl-ov__hl-list svg { color: var(--success); flex: 0 0 auto; margin-top: 2px; }
.pl-ov__hl-list--watch svg { color: var(--warning); }
.pl-ov__hl-list--opp svg { color: var(--info); }
.pl-hl-thesis { font-size: 13.5px; line-height: 1.62; color: var(--ink-800); margin: 0 0 2px; text-wrap: pretty; }
/* financials drill-down — collapsible income statement */
.pl-fd__row--exp { cursor: pointer; }
.pl-fd__row--exp:hover { background: var(--neutral-50); }
.pl-fd__lbl { display: inline-flex; align-items: center; gap: 7px; }
.pl-fd__cv { color: var(--slate-400); transition: transform var(--duration-fast) var(--ease-out); flex: 0 0 auto; }
.pl-fd__cv.is-open { transform: rotate(90deg); }
.pl-fd__dot { width: 4px; height: 4px; border-radius: 50%; background: var(--slate-300); display: inline-block; flex: 0 0 auto; }
.pl-fd__row--cat td, .pl-fd__row--rev td { font-weight: 600; color: var(--ink-900); }
.pl-fd__row--subtotal td { font-weight: 700; color: var(--ink-900); background: var(--neutral-50); }
.pl-fd__row--total td { font-weight: 800; color: var(--ink-900); border-top: 1.5px solid var(--neutral-200); }
.pl-fd__row--line td { color: var(--slate-600); }
.pl-fd__row td { transition: opacity var(--duration-base) var(--ease-out); }
.pl-fd__row--dim td { opacity: 0.34; }
.pl-fd:hover .pl-fd__row--dim td { opacity: 0.55; }

/* ---- Approvals (IC Memo side) ---- */
.appr-badge { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--ac-700); background: var(--ac-soft); padding: 3px 9px; border-radius: var(--radius-pill); }
.appr-tally { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; color: var(--warning); background: var(--warning-bg); border-radius: var(--r-control); padding: 7px 11px; margin-bottom: 12px; }
.appr-tally.is-cleared { color: var(--success); background: var(--success-bg); }
.appr-list { display: flex; flex-direction: column; gap: 4px; }
.appr-row { display: flex; align-items: flex-start; gap: 10px; padding: 9px 4px; border-bottom: 1px solid var(--hairline); }
.appr-row:last-child { border-bottom: 0; }
.appr-row__av { width: 30px; height: 30px; border-radius: 50%; background: var(--ink-700); color: #fff; font-size: 10.5px; font-weight: 700; display: grid; place-items: center; flex: 0 0 auto; }
.appr-row__main { flex: 1; min-width: 0; }
.appr-row__n { font-size: 12.5px; font-weight: 600; color: var(--ink-900); display: flex; align-items: center; gap: 6px; }
.appr-row__bk { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--slate-400); background: var(--neutral-100); padding: 1px 5px; border-radius: var(--radius-pill); }
.appr-row__r { font-size: 11px; color: var(--slate-500); margin-top: 1px; }
.appr-row__note { font-size: 11px; color: var(--slate-600); margin-top: 4px; display: flex; align-items: center; gap: 5px; font-style: italic; }
.appr-row__right { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; flex: 0 0 auto; }
.appr-row__acts { display: flex; gap: 4px; }
.appr-mini { width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--neutral-200); background: var(--surface); display: grid; place-items: center; cursor: pointer; color: var(--slate-500); }
.appr-mini--ok:hover { background: var(--success-bg); color: var(--success); border-color: var(--success); }
.appr-mini--no:hover { background: var(--danger-bg); color: var(--danger); border-color: var(--danger); }
.appr-notebox { display: flex; gap: 6px; margin-top: 10px; }
.appr-notebox input { flex: 1; border: 1px solid var(--neutral-200); border-radius: var(--r-control); padding: 7px 10px; font-size: 12px; font-family: var(--font-sans); color: var(--ink-900); outline: none; }
.appr-notebox input:focus { border-color: var(--ac); }

/* clickable KPI (Total Loan Amount → tranche breakdown) */
.dl-kpi--btn { cursor: pointer; border-radius: var(--r-control); transition: background var(--duration-fast) var(--ease-out); }
.dl-kpi--btn:hover { background: var(--ac-soft); }
.dl-kpi--btn .dl-kpi__l { display: inline-flex; align-items: center; gap: 3px; color: var(--ac-700); }
.dl-kpi--btn .dl-kpi__l svg { opacity: 0.7; }

/* credit stack / tranche breakdown */
.cstk-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 14px; }
.cstk-kpi { border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 11px 13px; background: var(--neutral-50); }
.cstk-kpi__l { font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-400); }
.cstk-kpi__v { font-size: 19px; font-weight: 700; color: var(--ink-900); margin-top: 3px; font-variant-numeric: tabular-nums; }
.cstk-kpi__s { font-size: 10.5px; color: var(--slate-400); margin-top: 1px; }
.cstk-bar { display: flex; gap: 2px; height: 12px; border-radius: var(--radius-pill); overflow: hidden; margin-bottom: 14px; }
.cstk-bar__seg { background: var(--slate-400); transition: filter var(--duration-fast) var(--ease-out); }
.cstk-bar__seg.is-dw { background: var(--ac); }
.cstk-bar__seg.is-eq { background: var(--ink-600); }
.cstk-bar__seg:hover { filter: brightness(1.12); }
.cstk-table td, .cstk-table th { vertical-align: middle; }
.cstk-row--eq td { background: var(--neutral-50); }
.cstk-name { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--ink-900); }
.cstk-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--neutral-300); flex: 0 0 auto; }
.cstk-note { font-size: 11.5px; color: var(--slate-500); }
.cstk-holder { font-size: 12px; }
.cstk-editable { cursor: text; border-radius: 4px; padding: 1px 3px; transition: background var(--duration-fast) var(--ease-out); }
.cstk-editable:hover { background: var(--ac-soft); box-shadow: inset 0 0 0 1px var(--ac-line, var(--neutral-200)); }
/* portfolio roll-up (Overview, portfolios only) */
.pl-roll__bar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.pl-roll__chip { font-family: var(--font-sans); font-size: 11.5px; font-weight: 600; color: var(--slate-600); background: var(--surface); border: 1px solid var(--neutral-200); border-radius: var(--radius-pill); padding: 5px 12px; cursor: pointer; white-space: nowrap; transition: all var(--duration-fast) var(--ease-out); }
.pl-roll__chip:hover { border-color: var(--ac); color: var(--ink-900); }
.pl-roll__chip.is-active { background: var(--ac-soft); border-color: var(--ac); color: var(--ac-700); }
.pl-roll__row { cursor: pointer; }
.pl-roll__row:hover td { background: var(--neutral-50); }
.pl-roll__row.is-active td { background: var(--ac-soft); }
.pl-roll__sub { font-size: 11px; color: var(--slate-400); margin-top: 1px; }
.cstk-in { font-family: var(--font-sans); border: 1px solid var(--neutral-200); background: var(--surface); border-radius: 6px; padding: 3px 6px; font-size: 12.5px; color: var(--ink-900); outline: none; }
.cstk-in:focus { border-color: var(--ac); }
.cstk-in--name { font-weight: 600; width: 130px; }
.cstk-in--note { width: 100%; font-size: 11.5px; }
.cstk-amtbox { display: inline-flex; align-items: center; gap: 1px; font-size: 11px; color: var(--slate-400); }
.cstk-in--amt { width: 50px; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; padding: 3px 3px; }
.cstk-del { width: 22px; height: 22px; border: 0; background: transparent; border-radius: 6px; display: grid; place-items: center; cursor: pointer; color: var(--slate-300); }
.cstk-del:hover { background: var(--danger-bg); color: var(--danger); }
.cstk-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; flex-wrap: wrap; gap: 10px; }
.cstk-legend { display: flex; gap: 14px; font-size: 11px; color: var(--slate-500); }
.cstk-legend span { display: inline-flex; align-items: center; gap: 5px; }
.cstk-legend i { width: 9px; height: 9px; border-radius: 2px; display: inline-block; }
.cstk-memo { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 9px 12px; background: var(--neutral-50); border: 1px dashed var(--neutral-200); border-radius: var(--r-control); font-size: 12px; color: var(--slate-600); }
.cstk-memo b { color: var(--ink-800); }
.cstk-memo em { color: var(--slate-400); font-style: italic; }
@media (max-width: 720px) { .cstk-kpis { grid-template-columns: 1fr; } }

/* market activity — Driftwood deals in this market */
.ma-tally { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 14px; }
.ma-tally__c { border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 9px 11px; text-align: center; background: var(--neutral-50); }
.ma-tally__c.is-zero { opacity: 0.5; }
.ma-tally__n { font-size: 20px; font-weight: 700; color: var(--ink-900); font-variant-numeric: tabular-nums; }
.ma-tally__l { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--slate-400); margin-top: 2px; }
.ma-list { display: flex; flex-direction: column; gap: 4px; }
.ma-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--hairline); border-radius: var(--r-control); background: var(--surface); }
.ma-row:hover { background: var(--neutral-50); }
.ma-st { flex: 0 0 auto; font-size: 9.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 3px 8px; border-radius: var(--radius-pill); min-width: 76px; text-align: center; }
.ma-st--active { background: var(--info-bg); color: var(--info); }
.ma-st--closing { background: var(--ac-soft); color: var(--ac-700); }
.ma-st--owned { background: color-mix(in srgb, var(--ink-700) 12%, transparent); color: var(--ink-700); }
.ma-st--realized { background: var(--success-bg); color: var(--success); }
.ma-st--passed { background: var(--neutral-100); color: var(--slate-400); }
.ma-row__main { flex: 1; min-width: 0; }
.ma-row__n { font-size: 13px; font-weight: 600; color: var(--ink-900); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ma-row__m { font-size: 11.5px; color: var(--slate-500); margin-top: 1px; }
.ma-row__r { flex: 0 0 auto; text-align: right; font-size: 13px; font-weight: 600; color: var(--ink-800); font-variant-numeric: tabular-nums; }
.ma-row__cap { display: block; font-size: 10.5px; font-weight: 500; color: var(--slate-400); margin-top: 1px; }
.ma-foot { display: flex; align-items: center; gap: 7px; margin-top: 12px; font-size: 11.5px; color: var(--slate-500); }
.ma-foot svg { color: var(--ac-700); flex: 0 0 auto; }
@media (max-width: 600px) { .ma-tally { grid-template-columns: repeat(2, 1fr); } }

/* drawer header: breadcrumb removed — float the close button to reclaim the row */
.drawer__head { position: relative; }
.drawer__close--float { position: absolute; top: 14px; right: 16px; margin-left: 0; z-index: 3; }
/* header control row: stage · versions · scope — anchored bottom-right, below the X, aligned to the address line */
.pl-ctrlrow--head { position: absolute; right: 20px; bottom: 16px; display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-wrap: wrap; max-width: 56%; z-index: 2; }
/* footer status-bar: stage · versions · property scope moved here from the header */
.drawer__footbar { flex: 0 0 auto; background: var(--surface); border-top: 1px solid var(--hairline); }
.drawer__footctrl { display: flex; align-items: center; gap: 10px; padding: 9px 20px; flex-wrap: wrap; }
.drawer__footbar .prov-key--foot { border-top: 1px solid var(--hairline); margin: 0; }
/* keep the inline control row (stage · versions · property scope) clear of the floating close button */
.drawer--vertical .pl-ctrlrow--inline { padding-right: 30px; }

/* ---- Development Budget ---- */
.bud-bars { display: grid; grid-template-columns: repeat(12, 1fr); gap: 6px; align-items: end; height: 140px; padding: 8px 0 0; }
.bud-bar { display: flex; flex-direction: column; align-items: center; gap: 6px; height: 100%; justify-content: flex-end; }
.bud-bar__track { width: 100%; height: 100%; display: flex; align-items: flex-end; }
.bud-bar__fill { width: 100%; background: var(--ac); border-radius: 3px 3px 0 0; min-height: 3px; transition: height var(--duration-base) var(--ease-out); }
.bud-bar:hover .bud-bar__fill { background: var(--ac-700); }
.bud-bar__m { font-size: 10px; color: var(--slate-400); }
.bud-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--hairline); font-size: 12.5px; color: var(--slate-600); }
.bud-foot b { color: var(--ink-900); }
.bud-foot__note { font-size: 11px; color: var(--slate-400); }
.bud-cont__bar { height: 12px; border-radius: var(--radius-pill); background: var(--success-bg); overflow: hidden; }
.bud-cont__used { height: 100%; background: var(--warning); border-radius: var(--radius-pill); }
.bud-cont__legend { display: flex; gap: 22px; margin-top: 10px; font-size: 12.5px; color: var(--slate-600); }
.bud-cont__legend b { color: var(--ink-900); }
.bud-vers { display: flex; flex-direction: column; gap: 8px; }
.bud-ver { display: flex; gap: 12px; padding: 11px 13px; border: 1px solid var(--hairline); border-radius: var(--r-control); background: var(--surface); }
.bud-ver__tag { flex: 0 0 auto; align-self: flex-start; font-size: 11px; font-weight: 700; color: var(--ac-700); background: var(--ac-soft); border-radius: var(--radius-pill); padding: 2px 9px; }
.bud-ver__top { font-size: 12.5px; color: var(--ink-800); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bud-ver__top b { color: var(--ink-900); }
.bud-ver__items { font-size: 10.5px; font-weight: 600; color: var(--slate-500); background: var(--neutral-100); border-radius: var(--radius-pill); padding: 1px 8px; }
.bud-ver__why { font-size: 12px; color: var(--slate-600); margin-top: 3px; line-height: 1.5; }

/* ---- Development Milestones ---- */
.ms-prog { display: flex; align-items: center; gap: 12px; }
.ms-prog__bar { flex: 1; height: 8px; border-radius: var(--radius-pill); background: var(--neutral-100); overflow: hidden; }
.ms-prog__fill { height: 100%; background: var(--success); border-radius: var(--radius-pill); transition: width var(--duration-base) var(--ease-out); }
.ms-prog__pct { font-size: 13px; font-weight: 700; color: var(--ink-900); }
.ms-track { display: flex; flex-direction: column; gap: 4px; position: relative; }
.ms-phase { padding: 4px 0 14px 0; position: relative; }
.ms-phase__h { display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 700; color: var(--ink-900); margin-bottom: 8px; }
.ms-phase__items { display: flex; flex-direction: column; gap: 2px; padding-left: 31px; }
.ms-item { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: var(--r-control); }
.ms-item:hover { background: var(--neutral-50); }
.ms-item__l { flex: 1; font-size: 12.5px; color: var(--ink-800); }
.ms-item--done .ms-item__l { color: var(--slate-500); }
.ms-item__when { font-size: 11px; color: var(--slate-400); font-variant-numeric: tabular-nums; }
.ms-dot { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto; color: #fff; }
.ms-item .ms-dot { width: 18px; height: 18px; }
.ms-dot--done { background: var(--success); }
.ms-dot--active { background: var(--warning); }
.ms-dot--todo { background: transparent; border: 1.5px dashed var(--neutral-300); }
@media (max-width: 720px) { .pl-ov__facts { grid-template-columns: repeat(2, 1fr); } }

/* ---- sensitivity grid ---- */
.pl-sens__t { width: 100%; border-collapse: separate; border-spacing: 3px; font-size: 12.5px; }
.pl-sens__t th { font-size: 10.5px; font-weight: 700; color: var(--slate-500); padding: 4px 8px; text-align: left; }
.pl-sens__t th.num { text-align: center; }
.pl-sens__t td:first-child { font-weight: 700; color: var(--ink-900); padding: 8px; font-feature-settings: "tnum" 1; }
.pl-sens__c { text-align: center; padding: 9px 8px; border-radius: 6px; font-weight: 700; font-feature-settings: "tnum" 1; }
.pl-sens__c.is-good { background: var(--success-bg); color: #2F5A42; }
.pl-sens__c.is-mid { background: var(--warning-bg); color: #8B5A1E; }
.pl-sens__c.is-bad { background: var(--danger-bg); color: var(--danger); }
.pl-sens__c.is-base { outline: 2px solid var(--ink-800); outline-offset: -2px; }
.app.theme-dark .pl-sens__c.is-base { outline-color: var(--ivory); }
.pl-sens__note { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--slate-500); margin-top: 12px; }
.pl-sens__note svg { color: var(--warning); }

/* ---- comp stats ---- */
.pl-comp-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 16px; }
.pl-cstat { background: var(--neutral-50); border: 1px solid var(--hairline-soft); border-radius: var(--r-control); padding: 12px 14px; }
.pl-cstat__l { font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); }
.pl-cstat__v { font-size: 20px; font-weight: 700; color: var(--ink-900); margin-top: 6px; letter-spacing: -0.02em; font-feature-settings: "tnum" 1; }
.pl-cstat__s { font-size: 10.5px; color: var(--slate-400); margin-top: 2px; }
.pl-index-bar__track { position: relative; height: 9px; border-radius: 5px; background: var(--neutral-100); overflow: visible; }
.pl-index-bar__track i { display: block; height: 100%; border-radius: 5px; background: var(--ac); }
.pl-index-bar__mark { position: absolute; top: -3px; width: 2px; height: 15px; background: var(--ink-700); border-radius: 1px; }
.app.theme-dark .pl-index-bar__mark { background: var(--ivory); }
.pl-index-bar__cap { font-size: 11.5px; color: var(--slate-500); margin-top: 9px; }

/* ---- risk register ---- */
.pl-risk-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.pl-risk-head__meta { font-size: 12px; color: var(--slate-500); font-weight: 500; }
.pl-risks { display: flex; flex-direction: column; gap: 10px; }
.pl-risk { display: flex; align-items: center; gap: 14px; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-card); padding: 14px 16px; }
.pl-risk.is-signed { opacity: 0.75; }
.pl-risk__body { flex: 1; min-width: 0; }
.pl-risk__head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 5px; }
.pl-risk__sev { align-self: center; flex: 0 0 auto; }
.pl-risk__t { font-size: 13.5px; font-weight: 600; color: var(--ink-900); }
.pl-risk__n { font-size: 12.5px; color: var(--slate-600); line-height: 1.5; }
.pl-risk__sign { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-family: var(--font-sans); font-size: 12px; font-weight: 600; cursor: pointer; padding: 7px 12px; border-radius: var(--r-control); border: 1px solid var(--hairline); background: var(--surface); color: var(--slate-600); transition: all var(--duration-fast) var(--ease-out); }
.pl-risk__sign:hover { border-color: var(--border-strong); color: var(--ink-800); }
.pl-risk__sign.is-on { background: var(--success-bg); border-color: transparent; color: #2F5A42; }

/* ---- risk mitigant line ---- */
.dl-mitigant { display: flex; align-items: flex-start; gap: 6px; margin-top: 7px; font-size: 12px; color: var(--slate-600); line-height: 1.5; padding-top: 7px; border-top: 1px dashed var(--hairline); }
.dl-mitigant svg { color: var(--success); flex: 0 0 auto; margin-top: 2px; }
.dl-mitigant b { color: var(--ink-800); font-weight: 700; letter-spacing: 0.02em; }
.pl-risk { align-items: flex-start; }

/* ---- SWOT grid ---- */
.dl-swot { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.dl-swot__q { background: color-mix(in oklab, var(--swot-tone, var(--ink-700)) 7%, var(--surface)); border: none; border-radius: var(--r-card); padding: 14px 16px 16px; }
.pl-pf--ttm { margin: 14px 0 12px; }
.pl-snapshot { border: 1px solid var(--hairline); border-radius: var(--r-card); overflow: hidden; }
.pl-snap-stats { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--hairline); border-radius: var(--r-card); overflow: hidden; }
.pl-snap-stat { padding: 10px 14px; border-right: 1px solid var(--hairline-soft); }
.pl-snap-stat:last-child { border-right: none; }
.pl-snap-stat__l { font-size: 10px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-500); }
.pl-snap-stat__v { font-size: 19px; font-weight: 700; color: var(--ink-900); margin-top: 4px; }
.pl-snap-kv.kv-grid { grid-template-columns: repeat(3, 1fr); gap: 0; border: 1px solid var(--hairline); border-radius: var(--r-card); overflow: hidden; }
.pl-snap-kv .kv { padding: 9px 13px; border-right: 1px solid var(--hairline-soft); border-bottom: 1px solid var(--hairline-soft); margin: 0; }
.pl-snap-kv .kv:nth-child(3n) { border-right: none; }
.pl-snap-kv .kv .kv__l { font-size: 9.5px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-500); }
.pl-snap-kv .kv .kv__v { font-size: 14px; font-weight: 600; color: var(--ink-900); margin-top: 3px; }
.pl-amen { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.pl-amen__chip { font-size: 11.5px; font-weight: 500; color: var(--slate-600); background: var(--neutral-50); border: 1px solid var(--hairline); border-radius: var(--radius-pill); padding: 4px 11px; }
.pl-fac { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; }
.pl-fac__h { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; letter-spacing: 0.02em; color: var(--ink-800); margin-bottom: 9px; }
.pl-fac__h svg { color: var(--ac-700); flex: 0 0 auto; }
.pl-fac__n { margin-left: auto; font-size: 10.5px; font-weight: 600; color: var(--slate-400); }
.pl-fac__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.pl-fac__list li { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: var(--ink-800); line-height: 1.4; }
.pl-fac__dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold-500); flex: 0 0 auto; }
.pl-fac__vname { flex: 1; }
.pl-fac__vsf { font-feature-settings: "tnum" 1; color: var(--slate-500); font-size: 11.5px; flex: 0 0 auto; }
@media (max-width: 720px) { .pl-fac { grid-template-columns: 1fr; } }
.pl-fit__total { margin-left: auto; font-size: 15px; font-weight: 700; font-feature-settings: "tnum" 1; }
.pl-fitbars { display: flex; flex-direction: column; gap: 15px; padding: 4px 2px 2px; }
.pl-fitbar { display: grid; grid-template-columns: 180px 1fr 34px; align-items: center; gap: 16px; }
.pl-fitbar__dim { font-size: 13.5px; font-weight: 600; color: var(--ink-900); }
.pl-fitbar__note { font-size: 11.5px; color: var(--slate-400); margin-top: 2px; }
.pl-fitbar__track { height: 7px; border-radius: 4px; background: var(--neutral-100); overflow: hidden; }
.pl-fitbar__track i { display: block; height: 100%; border-radius: 4px; }
.pl-fitbar__v { font-size: 15px; font-weight: 700; color: var(--ink-900); text-align: right; font-feature-settings: "tnum" 1; }
.pl-su { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: stretch; }
.pl-su__col { border: 1px solid var(--hairline); border-radius: var(--r-card); overflow: hidden; display: flex; flex-direction: column; }
.pl-su__h { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-600); background: var(--neutral-50); padding: 9px 14px; border-bottom: 1px solid var(--hairline); }
.pl-su__h--uses svg { color: var(--danger); }
.pl-su__h--sources svg { color: var(--success); }
.pl-su__addtop { margin-left: auto; width: 22px; height: 22px; display: inline-grid; place-items: center; border: 1px solid var(--hairline); background: var(--surface); color: var(--slate-500); border-radius: 6px; cursor: pointer; padding: 0; }
.pl-su__addtop:hover { background: var(--ac-soft); border-color: var(--ac-line); color: var(--ac-700); }
.pl-su__addtop svg { color: inherit; }
/* standardized performance summary — broken into aligned cards (Performance/Revenue/GOP/NOI) */
.pl-perf-wrap { overflow-x: auto; }
.pl-perf-stack { display: flex; flex-direction: column; gap: 14px; }
.pl-perf { width: max-content; min-width: 100%; border-collapse: collapse; font-size: 12px; font-feature-settings: "tnum" 1; }
.pl-perf--fixed { table-layout: fixed; width: 100%; }
.pl-perf__grp th, .pl-perf__yr th { font-weight: 700; color: var(--ink-900); text-align: right; padding: 2px 10px; white-space: nowrap; }
/* group caption row (Actuals / Forecast / Projections) — uppercase, centered over its span */
.pl-perf__grp th { font-size: 9.5px; color: var(--slate-400); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; text-align: center; border-bottom: 1px solid var(--hairline-soft); padding-bottom: 5px; }
.pl-perf__grp th.pl-perf__l, .pl-perf__yr th.pl-perf__l { border-bottom: 0; }
.pl-perf__yr th { font-size: 12.5px; border-bottom: 1.5px solid var(--ink-800); padding-bottom: 6px; }
.pl-perf__subh { display: block; font-size: 9px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-400); margin-top: 2px; }
.pl-perf__l { text-align: left; color: var(--ink-800); white-space: nowrap; padding: 5px 12px 5px 14px; position: sticky; left: 0; background: var(--surface); z-index: 1; }
.pl-perf__c { text-align: right; padding: 6px 10px; color: var(--ink-800); white-space: nowrap; }
.pl-perf__c--div { border-left: 1px solid var(--hairline); }
.pl-perf__grp th.pl-perf__c--div, .pl-perf__yr th.pl-perf__c--div { border-left: 1px solid var(--hairline); }
.pl-perf__row--strong .pl-perf__l, .pl-perf__row--strong .pl-perf__c { font-weight: 700; color: var(--ink-900); border-top: 1px solid var(--hairline); }
.pl-perf__row--sub .pl-perf__l, .pl-perf__row--sub .pl-perf__c { color: var(--slate-500); font-size: 11.5px; }
/* header table sits in a wrapper with the same 1px border-box as cards, so columns align exactly */
.pl-perf-headwrap { border: 1px solid transparent; border-radius: var(--r-card); }
.pl-perf--head { margin-bottom: -4px; }
.pl-perf--head .pl-perf__l { background: var(--surface); }
/* the four metric cards */
.pl-perf-card { border: 1px solid var(--hairline); border-radius: var(--r-card); background: var(--surface); box-shadow: var(--shadow-xs); overflow: hidden; }
.pl-perf-card__h { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-600); background: var(--neutral-50); padding: 9px 14px; border-bottom: 1px solid var(--hairline-soft); }
.pl-perf-card__h span { position: sticky; left: 14px; }
.pl-perf-card .pl-perf__l { background: var(--surface); }
.pl-perf-card tbody tr:first-child .pl-perf__l, .pl-perf-card tbody tr:first-child .pl-perf__c { border-top: 0; }
.pl-perf-card tbody tr:hover td { background: var(--neutral-50); }
.pl-perf-card tbody tr:hover .pl-perf__l { background: var(--neutral-50); }
.pl-perf__gap td { height: 10px; }
/* labeled section bands — Performance / Revenue / GOP / NOI as distinct blocks */
.pl-perf__sec td { padding: 17px 0 6px; }
.pl-perf tbody tr.pl-perf__sec:first-child td { padding-top: 2px; }
.pl-perf__sec-l { text-align: left; font-size: 10.5px; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: var(--slate-500); border-bottom: 1px solid var(--hairline); }
.pl-perf__sec + .pl-perf__row--strong .pl-perf__l, .pl-perf__sec + .pl-perf__row--strong .pl-perf__c { border-top: 0; }
/* snapshot semantic groups with dividers */
/* snapshot semantic groups — two columns, each group its own card */
.pl-snapgrps { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pl-snapgrp { background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 13px 15px; }
.pl-snapgrp__h { font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--slate-400); margin-bottom: 6px; display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 18px; }
/* stacked Label: Value rows */
.pl-snaptbl { display: flex; flex-direction: column; }
.pl-snaprow { display: flex; align-items: center; gap: 12px; padding: 6px 0; border-top: 1px solid var(--hairline-soft); position: relative; }
.pl-snaptbl .pl-snaprow:first-child { border-top: 0; }
.pl-snaprow__l { flex: 0 0 46%; font-size: 12.5px; color: var(--slate-500); }
.pl-snaprow .kv__v, .pl-snaprow .kv__v--edit { flex: 1; margin-top: 0; text-align: right; font-size: 13px; }
.pl-snaprow .kv__input { flex: 1; text-align: right; }
/* per-row delete affordance — reveals on row hover */
.pl-snaprow__del { flex: 0 0 auto; width: 18px; height: 18px; margin-left: -6px; align-self: center; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; background: none; border-radius: 5px; color: var(--slate-400); cursor: pointer; opacity: 0; transition: opacity var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out); }
.pl-snaprow__del svg { display: block; }
.pl-snaprow:hover .pl-snaprow__del { opacity: 1; }
.pl-snaprow__del:hover { background: var(--neutral-100); color: var(--danger, #C2453C); }
/* "add field" icon trigger in the box header */
.pl-snapadd { position: relative; display: inline-flex; }
.pl-snapadd__icon { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; padding: 0; border-radius: 6px; border: 0; background: none; color: var(--slate-400); cursor: pointer; transition: color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out); }
.pl-snapadd__icon svg { display: block; }
.pl-snapgrp:hover .pl-snapadd__icon { color: var(--slate-500); }
.pl-snapadd__icon:hover { background: var(--neutral-100); color: var(--ac-700, var(--ink-900)); }
.pl-snapadd__pop { position: absolute; right: 0; left: auto; top: calc(100% + 5px); z-index: 30; width: 240px; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-control); box-shadow: var(--shadow-lg, var(--shadow-xl)); overflow: hidden; }
.pl-snapadd__search { display: flex; align-items: center; gap: 7px; padding: 9px 11px; border-bottom: 1px solid var(--hairline-soft); }
.pl-snapadd__search svg { color: var(--slate-400); flex: 0 0 auto; }
.pl-snapadd__search input { flex: 1; min-width: 0; border: 0; outline: none; background: none; font-size: 12.5px; color: var(--ink-900); font-family: inherit; letter-spacing: 0; text-transform: none; font-weight: 500; }
.pl-snapadd__list { max-height: 220px; overflow-y: auto; padding: 4px; }
.pl-snapadd__opt { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; text-align: left; padding: 7px 9px; border: 0; background: none; border-radius: 6px; font-size: 12.5px; color: var(--ink-800); cursor: pointer; letter-spacing: 0; text-transform: none; font-weight: 500; }
.pl-snapadd__opt:hover { background: var(--neutral-50); }
.pl-snapadd__hint { font-size: 10px; color: var(--slate-400); font-weight: 500; letter-spacing: 0; }
.pl-snapadd__empty { padding: 12px; text-align: center; font-size: 12px; color: var(--slate-400); letter-spacing: 0; text-transform: none; font-weight: 500; }
.pl-su__col table { width: 100%; }
.pl-su__main { display: flex; flex-direction: column; flex: 1 0 auto; }
.pl-su__tbl, .pl-su__foot { table-layout: fixed; }
.pl-su__col th, .pl-su__col td { padding: 9px 16px; }
.pl-su__col th.num, .pl-su__col td.num { padding: 9px 16px 9px 12px; }
.pl-su__col td:first-child { overflow: hidden; text-overflow: ellipsis; }
.pl-su__foot td:first-child { white-space: nowrap; overflow: visible; }
/* add-row affordance sits directly under the line items; total is pinned to the bottom so both columns' totals align */
.pl-su__add { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; margin: 2px 0 8px 16px; padding: 5px 9px; font-size: 11.5px; font-weight: 600; color: var(--slate-500); background: none; border: 0; border-radius: 6px; cursor: pointer; font-family: var(--font-sans); }
.pl-su__add:hover { background: var(--neutral-50); color: var(--ink-800); }
.pl-su__add svg { color: var(--slate-400); }
.pl-su__foot { margin-top: auto; border-top: 1px solid var(--neutral-200); }
.pl-su__foot td { padding-top: 11px; padding-bottom: 11px; }
.pl-su-crow td { vertical-align: middle; }
/* uniform editable rows: click label or amount to edit, hover to reveal remove */
.pl-su-row td { vertical-align: middle; }
.pl-su-lbl { cursor: text; border-radius: 5px; padding: 2px 5px; margin: -2px -5px; display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; transition: background var(--duration-fast) var(--ease-out); }
.pl-su-lbl:hover { background: var(--ac-soft); box-shadow: 0 0 0 3px var(--ac-soft); }
.pl-su-ph { color: var(--slate-300); font-weight: 400; }
.pl-su-amt { display: inline-flex; flex-direction: column; align-items: flex-end; cursor: text; border-radius: 5px; padding: 2px 6px; margin: -2px -6px; transition: background var(--duration-fast) var(--ease-out); }
.pl-su-amt:hover { background: var(--ac-soft); box-shadow: 0 0 0 3px var(--ac-soft); }
.pl-su-amt__v { display: inline-flex; align-items: center; gap: 5px; font-feature-settings: "tnum" 1; }
.pl-su-amt__v svg { color: var(--slate-300); opacity: 0; transition: opacity var(--duration-fast) var(--ease-out); }
.pl-su-amt:hover .pl-su-amt__v svg { opacity: 1; }
.pl-su-rm { margin-left: 7px; width: 18px; height: 18px; border: 0; background: none; color: var(--slate-300); cursor: pointer; border-radius: 5px; vertical-align: -3px; opacity: 0; transition: opacity var(--duration-fast) var(--ease-out); }
.pl-su-row:hover .pl-su-rm, .pl-su-crow:hover .pl-su-rm { opacity: 1; }
.pl-su-rm:hover { color: var(--danger); background: var(--danger-bg); }
.pl-su-inp { width: 100%; font-family: var(--font-sans); font-size: 12.5px; color: var(--ink-900); background: var(--neutral-50); border: 1px solid var(--hairline); border-radius: 6px; padding: 5px 8px; outline: none; }
.pl-su-inp:focus { border-color: var(--ac); box-shadow: 0 0 0 3px var(--ac-soft); background: var(--surface); }
.pl-su-inp--num { text-align: right; font-feature-settings: "tnum" 1; }
/* unassigned-balance flag on the short side */
.pl-su-unassigned { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 2px 14px 12px; padding: 7px 11px; border-radius: 8px; background: color-mix(in oklab, var(--warning) 10%, var(--surface)); border: 1px dashed color-mix(in oklab, var(--warning) 42%, transparent); }
.pl-su-unassigned__l { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--warning); }
.pl-su-unassigned__l svg { color: var(--gold-600); }
.pl-su-unassigned__v { font-size: 13px; font-weight: 700; color: var(--warning); font-feature-settings: "tnum" 1; }
.pl-su-pct { font-feature-settings: "tnum" 1; }
/* reconciliation flag */
.pl-su-bal { display: flex; align-items: center; gap: 9px; margin-top: 12px; padding: 10px 14px; border-radius: var(--r-card); font-size: 12.5px; line-height: 1.45; }
.pl-su-bal svg { flex: 0 0 auto; }
.pl-su-bal b { font-weight: 700; }
.pl-su-bal.is-ok { background: color-mix(in oklab, var(--success) 8%, var(--surface)); border: 1px solid color-mix(in oklab, var(--success) 26%, var(--surface)); color: var(--ink-800); }
.pl-su-bal.is-ok svg { color: var(--success); }
.pl-su-bal.is-off { background: color-mix(in oklab, var(--warning) 9%, var(--surface)); border: 1px solid color-mix(in oklab, var(--warning) 32%, var(--surface)); color: var(--ink-800); }
.pl-su-bal.is-off svg { color: var(--gold-600); }
.pl-su-bal.is-off b { color: var(--warning); }
@media (max-width: 720px) { .pl-su { grid-template-columns: 1fr; } }
/* Domino-notes fold toggle */
.pl-domino-sec { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.pl-domino-sec__l { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--slate-400); }
.pl-domino-sec__l svg { color: var(--ac-700); }
.pl-domino-sec__btn { margin-left: auto; font-family: var(--font-sans); font-size: 11px; font-weight: 600; color: var(--slate-500); background: none; border: 1px solid var(--hairline); border-radius: 6px; padding: 2px 9px; cursor: pointer; }
.pl-domino-sec__btn:hover { background: var(--neutral-50); color: var(--ink-800); }
.pl-notice { border-radius: 8px; margin-bottom: var(--drawer-sec-gap); font-size: 12.5px; overflow: hidden; }
.pl-notice--warn { border: 1px solid color-mix(in oklab, var(--warning) 32%, transparent); background: color-mix(in oklab, var(--warning) 7%, var(--surface)); }
.pl-notice--tip { display: flex; align-items: flex-start; gap: 8px; padding: 9px 13px; border: 1px solid var(--ac-line); background: var(--ac-soft); color: var(--ink-800); }
.pl-notice--tip svg { color: var(--ac-700); flex: 0 0 auto; margin-top: 1px; }
.pl-notice__row { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: 0; padding: 9px 13px; font-family: var(--font-sans); font-size: 12.5px; color: var(--ink-800); cursor: pointer; text-align: left; }
.pl-notice__row svg { flex: 0 0 auto; color: var(--gold-600); }
.pl-notice__row:hover { background: color-mix(in oklab, var(--warning) 5%, transparent); }
.pl-notice__chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 13px 11px; }
.pl-notice__chip { font-size: 11.5px; background: var(--surface); border: 1px solid color-mix(in oklab, var(--warning) 35%, transparent); border-radius: 6px; padding: 3px 9px; color: var(--ink-800); }
.pl-notice__chip em { font-style: normal; color: var(--slate-500); }

/* ---- revive modal ---- */
.pl-revive { background: var(--surface); border-radius: var(--r-card); box-shadow: var(--shadow-xl); width: 520px; max-width: 92vw; overflow: hidden; }
.pl-revive__h { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px; border-bottom: 1px solid var(--hairline); }
.pl-revive__context { display: flex; align-items: center; gap: 8px; padding: 10px 20px; background: var(--warning-bg); font-size: 12.5px; color: var(--ink-800); border-bottom: 1px solid color-mix(in oklab, var(--warning) 25%, transparent); }
.pl-revive__context svg { color: var(--gold-600); flex: 0 0 auto; }
.pl-revive__context em { font-style: normal; color: var(--slate-600); }
.pl-revive__body { padding: 18px 20px; }
.pl-revive__foot { display: flex; gap: 8px; justify-content: flex-end; padding: 14px 20px; border-top: 1px solid var(--hairline); }


.pl-brief { }
.pl-brief__h { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--slate-400); margin-bottom: 10px; }
.pl-brief__h svg { color: var(--ink-700); }
.pl-brief__text { margin: 0; font-size: 13.5px; line-height: 1.65; color: var(--ink-800); cursor: text; border-radius: 6px; padding: 4px 6px; margin: -4px -6px; transition: background var(--duration-fast) var(--ease-out); }
.pl-brief__text:hover { background: var(--neutral-50); }
.pl-brief__edit { width: 100%; font-family: var(--font-sans); font-size: 13.5px; line-height: 1.65; color: var(--ink-800); border: 1px solid var(--ac); border-radius: 7px; padding: 8px 10px; resize: vertical; outline: none; box-shadow: 0 0 0 3px var(--ac-soft); background: var(--surface); }


.pl-upload { border: 1.5px dashed var(--hairline); border-radius: var(--r-card); margin-bottom: var(--drawer-sec-gap); transition: border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out); }
.pl-upload.is-dragover { border-color: var(--ac); background: var(--ac-soft); }
.pl-upload.is-analyzing { border-style: solid; border-color: var(--ac-line); background: var(--ac-soft); }
.pl-upload__row { display: flex; align-items: center; gap: 10px; padding: 12px 16px; font-size: 12.5px; color: var(--slate-600); }
.pl-upload__row svg { flex: 0 0 auto; color: var(--ac-700); }
.pl-upload__row span { flex: 1; }
.pl-upload__spin { width: 14px; height: 14px; flex: 0 0 auto; border: 2px solid var(--ac-line); border-top-color: var(--ac); border-radius: 50%; animation: pl-spin 0.7s linear infinite; }
@keyframes pl-spin { to { transform: rotate(360deg); } }


.pl-dr { border-radius: var(--r-card); padding: 13px 15px; margin-bottom: 14px; border: 1px solid var(--hairline); }
.pl-dr--warn { background: color-mix(in oklab, var(--warning) 8%, var(--surface)); border-color: color-mix(in oklab, var(--warning) 30%, var(--surface)); }
.pl-dr--ok { background: color-mix(in oklab, var(--success) 7%, var(--surface)); border-color: color-mix(in oklab, var(--success) 26%, var(--surface)); }
.pl-dr__h { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--ink-900); }
.pl-dr--warn .pl-dr__h svg { color: var(--gold-600); }
.pl-dr--ok .pl-dr__h svg { color: var(--success); }
.pl-dr__chips { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 11px; }
.pl-dr__chip { display: inline-flex; flex-direction: column; gap: 1px; background: var(--surface); border: 1px solid var(--hairline); border-radius: 8px; padding: 6px 11px; font-size: 12px; font-weight: 600; color: var(--ink-800); }
.pl-dr__chip em { font-style: normal; font-size: 10px; font-weight: 500; color: var(--slate-400); letter-spacing: 0.03em; text-transform: uppercase; }
.pl-ttm3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.pl-ttm3__card { border: 1px solid var(--hairline); border-radius: var(--r-card); padding: 12px 14px; background: var(--surface); }
.pl-ttm3__h { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-500); margin-bottom: 8px; }
.pl-ttm3__row { display: flex; align-items: baseline; justify-content: space-between; padding: 5px 0; font-size: 12.5px; color: var(--slate-600); }
.pl-ttm3__row b { font-size: 14px; font-weight: 700; color: var(--ink-900); font-feature-settings: "tnum" 1; }
.pl-ttm3__row--idx { border-top: 1px solid var(--hairline-soft); margin-top: 4px; padding-top: 8px; }
.pl-ttmchart { margin-top: 14px; border: 1px solid var(--hairline); border-radius: var(--r-card); padding: 14px; }
.pl-ttmchart__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.pl-ttmchart__ctrls { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.pl-ttmgrp { text-align: center !important; border-bottom: 1px solid var(--hairline); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-500); }
.pl-ttmbuckets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
/* period column outside the cards + 3 metric cards */
.pl-ttm2 { display: grid; grid-template-columns: 96px repeat(3, 1fr); gap: 0 14px; align-items: start; justify-content: stretch; }
/* three metric cards: boxed, equal width, fill the row */
.pl-ttm2 .pl-ttmbucket { border: 1px solid var(--hairline); border-radius: var(--r-card); overflow: hidden; background: var(--surface); box-shadow: var(--shadow-xs); }
.pl-ttm2 .pl-ttmbucket__h { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-600); background: var(--neutral-50); padding: 10px 16px; border-bottom: 1px solid var(--hairline); }
.pl-ttm2 .pl-ttmbucket .pl-pf { table-layout: fixed; }
.pl-ttm2 .pl-ttmbucket th, .pl-ttm2 .pl-ttmbucket td { padding: 8px 16px; }
.pl-ttm2 .pl-ttmbucket th.num, .pl-ttm2 .pl-ttmbucket td.num { padding: 8px 16px; }
/* period column — bare labels, transparent box so it lines up but shows no border */
.pl-ttm2 .pl-ttmbucket--per { border-color: transparent; background: transparent; box-shadow: none; }
.pl-ttmbucket--per .pl-ttmbucket__h { background: transparent; border-bottom-color: transparent; }
.pl-ttmbucket--per .pl-pf th, .pl-ttmbucket--per .pl-pf td { padding-left: 0; padding-right: 10px; text-align: left; color: var(--slate-500); font-weight: 500; white-space: nowrap; }
.pl-ttmbucket--per .pl-pf td { color: var(--ink-800); }
.pl-ttmbucket--per .pl-pf-avg td { font-weight: 700; color: var(--ink-900); }
/* dashed divider line at the forecast / actuals boundary (TTM row) */
.pl-pf-divider td { border-top: 1px dashed var(--slate-300); }
.pl-ttmbucket table { width: 100%; }
@media (max-width: 720px) { .pl-ttmbuckets { grid-template-columns: 1fr; } }
/* projection rows inside the TTM buckets (no italics) */
.pl-pf-proj td { color: var(--slate-500); }
.pl-pf-proj td:first-child { color: var(--slate-500); font-weight: 500; }
.pl-pf--ttm .pl-ttmgrp + .pl-ttmgrp { border-left: 1px solid var(--hairline); }
.pl-ttmsep { border-left: 1px solid var(--hairline) !important; }
.pl-pf--ttm td.pl-ttmsep { border-left: 1px solid var(--hairline-soft) !important; }
.pl-ttmchart__leg { display: flex; gap: 16px; font-size: 11.5px; color: var(--slate-500); }
.pl-ttmchart__leg span { display: inline-flex; align-items: center; gap: 6px; }
.pl-leg { width: 14px; height: 0; border-top: 2.5px solid var(--ac); display: inline-block; }
.pl-leg--comp { border-top: 2px dashed var(--slate-400); }
.pl-ttmchart__svg { width: 100%; height: auto; display: block; }
.seg--sm .seg__btn { padding: 4px 11px; font-size: 11.5px; }
.kv__v--edit { cursor: pointer; border-bottom: 1px dashed transparent; }
.kv__v--edit:hover { border-bottom-color: var(--slate-300); }
.kv__v svg { color: var(--slate-300); vertical-align: -1px; }
/* ---- field provenance: subtle source treatment (no icons) ---- */
.prov { position: relative; border-bottom: 1.5px dotted transparent; padding-bottom: 1px; cursor: default; border-radius: 2px; outline: none; }
.prov--ai { border-bottom-color: color-mix(in oklab, var(--ac) 70%, transparent); }
.prov--model, .prov--system { border-bottom-color: var(--slate-300); }
.prov--doc { border-bottom-color: color-mix(in oklab, var(--info) 60%, transparent); }
.prov--manual { border-bottom-color: transparent; }
/* custom tooltip — replaces the native title popup */
.prov-tip { position: absolute; top: calc(100% + 8px); left: 0; z-index: 60; width: max-content; max-width: 256px; display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; background: var(--ink-900); border-radius: 9px; box-shadow: var(--shadow-lg); opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out); pointer-events: none; text-align: left; font-weight: 400; letter-spacing: 0; text-transform: none; font-style: normal; }
.prov:hover .prov-tip, .prov:focus .prov-tip { opacity: 1; visibility: visible; transform: none; }
.prov-tip::before { content: ""; position: absolute; bottom: 100%; left: 15px; border: 6px solid transparent; border-bottom-color: var(--ink-900); }
.prov-tip__h { display: flex; align-items: center; gap: 6px; font-size: 9.5px; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; color: rgba(255,255,255,0.66); }
.prov-tip__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--slate-300); flex: 0 0 auto; }
.prov--ai .prov-tip__dot { background: var(--ac); }
.prov--doc .prov-tip__dot { background: var(--info); }
.prov-tip__note { font-size: 12px; color: #fff; line-height: 1.45; }
.prov-tip__d { font-size: 11px; color: rgba(255,255,255,0.62); line-height: 1.4; }
/* provenance legend strip under the KPI band */
.prov-key { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 7px 28px; border-bottom: 1px solid var(--hairline); background: var(--surface); font-size: 11px; }
.prov-key__l { font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; font-size: 9px; color: var(--slate-400); }
.prov-key .prov { font-weight: 600; color: var(--slate-600); cursor: default; }
.prov-key__m { color: var(--slate-400); margin-left: auto; }
.prov-key--foot { flex: 0 0 auto; border-bottom: none; border-top: 1px solid var(--hairline); padding-top: 9px; padding-bottom: 9px; }
.pl-addr-row { padding: 2px 0 12px; border-bottom: 1px solid var(--hairline-soft); margin-bottom: 12px; }
.pl-addr-row .kv__l { margin-bottom: 4px; }
/* editable address now lives in the drawer header sub-line */
.pl-addr-inline { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; border-radius: 5px; padding: 1px 5px; margin: -1px -5px; transition: background var(--duration-fast) var(--ease-out); }
.pl-addr-inline:hover { background: var(--ac-soft); color: var(--ink-800); }
.pl-addr-inline svg { color: var(--slate-400); }
.pl-addr-inline:hover svg { color: var(--ac-700); }
.pl-addr-edit { display: inline-flex; align-items: center; gap: 8px; }
.pl-addr-edit__f { display: inline-block; min-width: 300px; }
.pl-addr-val { font-size: 14px; font-weight: 600; color: var(--ink-900); cursor: pointer; display: inline-flex; align-items: center; gap: 7px; }
.pl-addr-val svg { color: var(--slate-400); }
.pl-addr-val:hover svg { color: var(--ac); }
.pl-addr-sub { font-size: 12px; color: var(--slate-400); margin-top: 3px; }
.pl-amen-block { margin-top: 14px; }
.pl-amen-block__h { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--slate-500); margin-bottom: 8px; }
.pl-askbtn { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--ac-700); background: var(--ac-soft); border: 1px solid var(--ac-line); border-radius: var(--radius-pill); padding: 6px 13px; cursor: pointer; transition: background var(--duration-fast) var(--ease-out); }
.pl-askbtn:hover { background: color-mix(in oklab, var(--ac) 16%, var(--surface)); }
.pl-chattab { height: 100%; display: flex; justify-content: center; }
.pl-chatcard { width: 100%; max-width: 720px; display: flex; flex-direction: column; min-height: 0; height: 100%; margin: 0; }
.pl-chattab__log { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 16px; padding: 6px 4px 6px 0; scrollbar-width: thin; }
.pl-chat__hi { font-size: 13.5px; line-height: 1.65; color: var(--slate-500); max-width: 56ch; background: var(--neutral-50); border: 1px solid var(--hairline); border-radius: var(--r-card); padding: 14px 16px; }
.pl-chat__q { align-self: flex-end; max-width: 80%; background: var(--primary); color: var(--primary-fg); font-size: 13.5px; line-height: 1.5; font-weight: 500; padding: 10px 15px; border-radius: 14px; border-bottom-right-radius: 5px; box-shadow: var(--shadow-xs); }
.pl-chat__a { display: flex; gap: 11px; align-items: flex-start; max-width: 92%; }
.pl-chat__av { width: 28px; height: 28px; flex: 0 0 auto; border-radius: 50%; background: var(--ac-soft); color: var(--ac-700); display: grid; place-items: center; margin-top: 2px; }
.pl-chat__abody { background: var(--surface); border: 1px solid var(--hairline); border-radius: 14px; border-top-left-radius: 5px; padding: 13px 16px; font-size: 14px; line-height: 1.62; color: var(--ink-900); box-shadow: var(--shadow-xs); }
.pl-chat__abody--typing { color: var(--slate-400); }
.pl-chat__sugs { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; }
.pl-chat__sug { text-align: left; font-size: 12.5px; font-weight: 500; color: var(--ink-800); background: var(--neutral-50); border: 1px solid var(--border); border-radius: 12px; padding: 9px 14px; cursor: pointer; transition: all var(--duration-fast) var(--ease-out); }
.pl-chat__sug:hover { background: var(--ac-soft); border-color: var(--ac-line); color: var(--ac-700); }
.pl-chat__inputwrap { position: relative; margin-top: 16px; flex: 0 0 auto; }
.pl-chat__inputwrap input { width: 100%; border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 13px 52px 13px 18px; font-size: 14px; font-family: inherit; background: var(--surface); color: var(--ink-900); }
.pl-chat__inputwrap input:focus { outline: none; border-color: var(--ac); box-shadow: 0 0 0 3px var(--ac-soft); }
.pl-chat__send { position: absolute; right: 7px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border: none; border-radius: 50%; background: var(--ac); color: #fff; display: grid; place-items: center; cursor: pointer; transition: filter var(--duration-fast) var(--ease-out); }
.pl-chat__send:hover:not(:disabled) { filter: brightness(0.92); }
.pl-chat__send:disabled { background: var(--neutral-200); color: var(--slate-400); cursor: default; }
.pl-chat__t { font-size: 13.5px; font-weight: 700; color: var(--ink-900); }
.pl-chat__sub { font-size: 11.5px; color: var(--slate-400); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-chat__sugs { display: flex; flex-direction: column; gap: 7px; align-items: flex-start; }
.pl-chat__sugs--row { flex-direction: row; flex-wrap: wrap; margin-top: 10px; }
.pl-chat__sug { text-align: left; font-size: 12px; font-weight: 500; color: var(--ink-800); background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius-pill); padding: 6px 12px; cursor: pointer; }
.pl-chat__sug:hover { background: var(--ac-soft); border-color: var(--ac-line); color: var(--ac-700); }
.pl-chat__msg { display: flex; gap: 8px; align-items: flex-start; }
.pl-chat__msg--user { justify-content: flex-end; }
.pl-chat__av { width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; background: var(--ac-soft); color: var(--ac-700); display: grid; place-items: center; margin-top: 2px; }
.pl-chat__bubble { font-size: 13px; line-height: 1.55; padding: 9px 13px; border-radius: 12px; max-width: 82%; white-space: pre-wrap; }
.pl-chat__msg--ai .pl-chat__bubble { background: var(--surface); color: var(--ink-900); border: 1px solid var(--hairline); border-bottom-left-radius: 4px; }
.pl-chat__msg--user .pl-chat__bubble { background: var(--ink-800); color: #fff; border-bottom-right-radius: 4px; }
.pl-chat__bubble--typing { color: var(--slate-400); }
.pl-chat__input { flex: 0 0 auto; display: flex; gap: 8px; }
.pl-chat__input input { flex: 1; min-width: 0; border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 9px 14px; font-size: 13px; font-family: inherit; background: var(--surface); color: var(--ink-900); }
.pl-chat__input input:focus { outline: none; border-color: var(--ac); }
.pl-mit-list { margin: 6px 0 0; padding-left: 0; list-style: none; display: flex; flex-direction: column; gap: 5px; }
.pl-mit-list li { position: relative; padding-left: 16px; font-size: 12.5px; color: var(--slate-600); line-height: 1.45; }
.pl-mit-list li::before { content: ''; position: absolute; left: 4px; top: 7px; width: 4px; height: 4px; border-radius: 50%; background: var(--success); }
.pl-snap-row { display: grid; grid-template-columns: 150px 1fr; gap: 14px; padding: 9px 14px; border-bottom: 1px solid var(--hairline-soft); align-items: baseline; }
.pl-snap-row:last-child { border-bottom: none; }
.pl-snap-row:nth-child(odd) { background: var(--neutral-50); }
.pl-snap-l { font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--slate-500); }
.pl-snap-v { font-size: 13px; color: var(--ink-900); line-height: 1.45; }
.pl-pf--ttm th, .pl-pf--ttm td { padding: 10px 14px; white-space: nowrap; text-align: right; }
.pl-pf--ttm thead tr:first-child th { padding-top: 12px; }
.pl-pf--ttm tbody tr:first-child td { padding-top: 12px; }
.pl-pf--ttm tbody tr:last-child td { padding-bottom: 12px; }
.pl-pf--ttm th:first-child, .pl-pf--ttm td:first-child { text-align: left; font-weight: 600; }
.pl-pf--ttm thead tr:first-child th { border-bottom: 1px solid var(--hairline); }
.pl-pf--ttm th:nth-child(2), .pl-pf--ttm td:nth-child(2), .pl-pf--ttm th:nth-child(5), .pl-pf--ttm td:nth-child(5), .pl-pf--ttm th:nth-child(8), .pl-pf--ttm td:nth-child(8) { border-left: 1px solid var(--hairline-soft); }
.pl-pf--ttm tbody tr:hover td { background: var(--neutral-50); }
.dl-swot__h { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 700; color: var(--ink-900); letter-spacing: 0.01em; margin-bottom: 9px; }
.dl-swot__h svg { color: var(--swot-tone, var(--ink-700)); }
.dl-swot__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.dl-swot__list li { position: relative; padding-left: 14px; font-size: 12.5px; color: var(--slate-600); line-height: 1.45; }
.dl-swot__list li::before { content: ''; position: absolute; left: 0; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: var(--swot-tone, var(--ink-700)); }

/* ---- diligence checklist ---- */
.pl-checklist { display: flex; flex-direction: column; gap: 7px; }
.pl-check { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; font-family: var(--font-sans); cursor: pointer; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 12px 14px; transition: all var(--duration-fast) var(--ease-out); }
.pl-check:hover { border-color: var(--border-strong); }
.pl-check__box { width: 20px; height: 20px; flex: 0 0 auto; border-radius: 50%; border: 1.5px solid var(--slate-300); display: grid; place-items: center; color: #fff; }
.pl-check.is-done .pl-check__box { background: var(--success); border-color: var(--success); }
.pl-check__t { flex: 1; font-size: 13px; color: var(--ink-800); font-weight: 500; }
.pl-check.is-done .pl-check__t { color: var(--slate-500); }
.pl-check__crit { font-size: 9.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--danger); background: var(--danger-bg); border-radius: var(--radius-pill); padding: 2px 8px; }

/* open items */
.pl-items { display: flex; flex-direction: column; }
.pl-item { display: grid; grid-template-columns: 22px 1fr auto auto; gap: 12px; align-items: center; padding: 10px 0; border-top: 1px solid var(--hairline-soft); }
.pl-item:first-child { border-top: 0; }
.pl-item__box { width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid var(--slate-300); background: var(--surface); cursor: pointer; display: grid; place-items: center; color: #fff; padding: 0; }
.pl-item.is-done .pl-item__box { background: var(--success); border-color: var(--success); }
.pl-item__t { font-size: 12.5px; color: var(--ink-800); font-weight: 500; }
.pl-item.is-done .pl-item__t { color: var(--slate-400); text-decoration: line-through; }
.pl-item__owner { font-size: 11.5px; color: var(--slate-500); }
.pl-item__due { font-size: 11.5px; font-weight: 600; color: var(--slate-500); min-width: 64px; text-align: right; }
.pl-item.is-overdue .pl-item__due { color: var(--danger); }

/* ---- the gate (side panel) ---- */
.pl-gate__score { font-size: 38px; font-weight: 700; letter-spacing: -0.03em; line-height: 1; margin-bottom: 16px; font-feature-settings: "tnum" 1; }
.pl-gate__score i { font-size: 15px; font-weight: 500; color: var(--slate-400); font-style: normal; margin-left: 4px; }
.pl-gate__rows { display: flex; flex-direction: column; gap: 13px; margin-bottom: 16px; }
.pl-gate__row { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; align-items: center; font-size: 12px; color: var(--slate-600); }
.pl-gate__row b { color: var(--ink-900); font-weight: 700; font-feature-settings: "tnum" 1; }
.pl-bar { grid-column: 1 / -1; height: 6px; border-radius: 4px; background: var(--neutral-100); overflow: hidden; }
.pl-bar i { display: block; height: 100%; border-radius: 4px; }
.pl-gate__verdict { display: flex; align-items: flex-start; gap: 8px; font-size: 12px; font-weight: 600; line-height: 1.45; color: var(--warning); background: var(--warning-bg); border-radius: var(--r-control); padding: 10px 12px; margin-bottom: 14px; }
.pl-gate__verdict svg { flex: 0 0 auto; margin-top: 1px; }
.pl-gate__verdict.is-ready { color: #2F5A42; background: var(--success-bg); }

/* ---- IC memo ---- */
.pl-memo { display: flex; flex-direction: column; }
.pl-memo__row { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid var(--hairline-soft); }
.pl-memo__row:first-child { border-top: 0; }
.pl-memo__ic { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 8px; background: var(--neutral-100); border: 1px solid var(--hairline); color: var(--slate-500); display: grid; place-items: center; }
.pl-memo__body { flex: 1; min-width: 0; }
.pl-memo__n { font-size: 13px; font-weight: 600; color: var(--ink-900); }
.pl-memo__m { font-size: 11.5px; color: var(--slate-500); margin-top: 2px; }

/* tag--warn alias (deals.css uses op-verdict--warn; tag uses --warn already in today.css) */

/* ---- list (table) view cells ---- */
.pl-table td { vertical-align: middle; }
.pl-tready { display: inline-flex; vertical-align: middle; margin-left: 6px; color: var(--success); }
.pl-tflag { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; font-family: var(--font-mono); font-size: 9.5px; font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase; padding: 2px 8px; border-radius: var(--radius-pill); vertical-align: middle; }
.pl-tflag--pass { color: var(--danger); background: var(--danger-bg); }
.pl-tflag--ic { color: var(--success); background: var(--success-bg); }
.pl-boe-badge { display: inline-flex; align-items: center; margin-left: 8px; font-family: var(--font-mono); font-size: 9.5px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--radius-pill); background: var(--warning-bg); color: var(--warning); border: 1px solid color-mix(in oklab, var(--warning) 32%, transparent); vertical-align: middle; }
.pl-table tr.is-passed { opacity: 0.6; }
.pl-stagecell { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink-800); }
.pl-stagecell__n { width: 19px; height: 19px; flex: 0 0 auto; border-radius: 50%; background: var(--neutral-100); border: 1px solid var(--hairline); color: var(--slate-600); font-size: 10.5px; font-weight: 700; display: grid; place-items: center; }
.pl-rcell { display: inline-flex; align-items: center; gap: 9px; }
.pl-rcell__bar { width: 52px; height: 5px; border-radius: 3px; background: var(--neutral-100); overflow: hidden; }
.pl-rcell__bar i { display: block; height: 100%; border-radius: 3px; }
.pl-rcell b { font-size: 12.5px; font-weight: 700; font-feature-settings: "tnum" 1; min-width: 18px; }
.pl-card__ready--pass { color: var(--danger); background: var(--danger-bg); }

/* ---- key players ---- */
.pl-player__head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.pl-player__av { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 9px; background: var(--ink-700); color: var(--ivory); font-size: 14px; font-weight: 700; display: grid; place-items: center; }
.app.theme-dark .pl-player__av { background: var(--chip); color: var(--chip-fg); }
.pl-player__n { font-size: 15px; font-weight: 700; color: var(--ink-900); letter-spacing: -0.01em; display: flex; align-items: center; gap: 8px; }
.pl-player__int { font-size: 9.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--slate-500); background: var(--neutral-100); border: 1px solid var(--hairline); border-radius: var(--radius-pill); padding: 1px 8px; }
.pl-player__role { font-size: 12px; color: var(--slate-500); margin-top: 2px; }
.pl-enrich { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 600; color: var(--ac-700); background: var(--ac-soft); border: 1px solid var(--ac-line); border-radius: var(--radius-pill); padding: 3px 9px; }
.pl-player__ov { font-size: 13px; color: var(--ink-800); line-height: 1.55; margin-bottom: 14px; }
.pl-player__meta { display: flex; flex-wrap: wrap; gap: 8px 18px; padding-bottom: 14px; border-bottom: 1px solid var(--hairline-soft); margin-bottom: 4px; }
.pl-pm { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--slate-600); }
.pl-pm svg { color: var(--slate-400); }
.pl-pm a { color: var(--ac-700); text-decoration: none; }
.pl-pm a:hover { text-decoration: underline; }
.pl-subhead { font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); margin: 16px 0 8px; display: flex; align-items: center; gap: 8px; }
.pl-subhead span { color: var(--slate-300); }
.pl-contact { display: flex; align-items: center; gap: 11px; padding: 9px 0; border-top: 1px solid var(--hairline-soft); }
.pl-contact:first-of-type { border-top: 0; }
.pl-contact__av { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 50%; background: var(--ink-700); color: var(--ivory); font-size: 10.5px; font-weight: 700; display: grid; place-items: center; }
.app.theme-dark .pl-contact__av { background: var(--chip); color: var(--chip-fg); }
.pl-contact__main { min-width: 0; flex: 0 0 auto; width: 190px; }
.pl-contact__n { font-size: 13px; font-weight: 600; color: var(--ink-900); }
.pl-contact__t { font-size: 11.5px; color: var(--slate-500); margin-top: 1px; }
.pl-contact__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pl-contact__info a { font-size: 12px; color: var(--ac-700); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-contact__info span { font-size: 11px; color: var(--slate-400); }
.pl-incrm { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--success); }
.pl-prior { display: flex; align-items: center; gap: 11px; padding: 8px 0; border-top: 1px solid var(--hairline-soft); }
.pl-prior:first-of-type { border-top: 0; }
.pl-prior__ic { width: 26px; height: 26px; flex: 0 0 auto; border-radius: 7px; background: var(--neutral-100); border: 1px solid var(--hairline); color: var(--slate-500); display: grid; place-items: center; }
.pl-prior__n { flex: 1; font-size: 12.5px; font-weight: 600; color: var(--ink-900); }
.pl-prior__m { font-size: 11.5px; color: var(--slate-400); }
.pl-conn { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--hairline-soft); }
.pl-conn:first-of-type { border-top: 0; }
.pl-conn__ic { width: 26px; height: 26px; flex: 0 0 auto; border-radius: 7px; background: var(--neutral-100); border: 1px solid var(--hairline); color: var(--slate-500); display: grid; place-items: center; }
.pl-conn__n { font-size: 12.5px; font-weight: 600; color: var(--ink-900); }
.pl-conn__m { font-size: 11px; color: var(--slate-400); margin-top: 1px; }

/* ---- handoff modal ---- */
.pl-modal-overlay { position: fixed; inset: 0; z-index: 1400; background: rgba(6, 26, 46, 0.6); backdrop-filter: blur(3px); display: grid; place-items: center; padding: 24px; animation: ov-in var(--duration-base) var(--ease-out); }
.pl-modal { width: 560px; max-width: 96vw; max-height: 90vh; background: var(--surface); border-radius: var(--r-card); box-shadow: var(--shadow-xl); display: flex; flex-direction: column; overflow: hidden; }
.pl-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--hairline); }
.pl-modal__eyebrow { font-size: 10.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ac-700); }
.pl-modal__t { font-size: 17px; font-weight: 700; color: var(--ink-900); letter-spacing: -0.01em; margin-top: 4px; }
.pl-modal__body { padding: 18px 22px; overflow-y: auto; display: flex; flex-direction: column; gap: 16px; }
.pl-field__l { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 600; color: var(--ink-800); margin-bottom: 7px; }
.pl-enrich-btn { display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-sans); font-size: 11.5px; font-weight: 600; color: var(--ac-700); background: var(--ac-soft); border: 1px solid var(--ac-line); border-radius: var(--radius-pill); padding: 3px 10px; cursor: pointer; }
.pl-enrich-btn:hover { background: color-mix(in oklab, var(--ac) 18%, var(--surface)); }
.pl-textarea, .pl-input { width: 100%; font-family: var(--font-sans); font-size: 13px; color: var(--ink-900); background: var(--canvas); border: 1px solid var(--hairline); border-radius: var(--r-control); padding: 10px 12px; resize: vertical; line-height: 1.5; }
.pl-textarea:focus, .pl-input:focus { outline: none; border-color: var(--ac); box-shadow: 0 0 0 3px var(--ac-soft); }
.pl-input { resize: none; }
.pl-enrich-note { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--ac-700); margin-top: 7px; }
.pl-assign-toggle { display: flex; align-items: center; gap: 9px; font-size: 13px; font-weight: 600; color: var(--ink-800); cursor: pointer; padding-top: 2px; }
.pl-assign-toggle input { width: 16px; height: 16px; accent-color: var(--ac); }
.pl-assign { display: flex; flex-direction: column; gap: 13px; padding: 14px; background: var(--neutral-50); border: 1px solid var(--hairline); border-radius: var(--r-control); }
.pl-assign__row { display: flex; gap: 12px; }
.pl-ai-note { display: flex; align-items: flex-start; gap: 7px; font-size: 11.5px; color: var(--slate-600); line-height: 1.45; }
.pl-ai-note svg { color: var(--ac-700); flex: 0 0 auto; margin-top: 1px; }
.pl-ai-note b { color: var(--ink-900); font-weight: 600; }
.pl-opt { color: var(--slate-300); font-weight: 400; }

/* searchable assignee picker */
.pl-pick { position: relative; }
.pl-pick__btn { display: flex; align-items: center; gap: 9px; width: 100%; text-align: left; cursor: pointer; }
.pl-pick__av { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 50%; background: var(--ink-700); color: var(--ivory); font-size: 9px; font-weight: 700; display: grid; place-items: center; letter-spacing: 0; }
.app.theme-dark .pl-pick__av { background: var(--chip); color: var(--chip-fg); }
.pl-pick__gic { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 6px; background: var(--ac-soft); color: var(--ac-700); display: grid; place-items: center; }
.pl-pick__name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-pick__cv { color: var(--slate-400); flex: 0 0 auto; }
.pl-pick__panel { position: absolute; top: calc(100% + 5px); left: 0; right: 0; z-index: 10; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--r-control); box-shadow: var(--shadow-lg); overflow: hidden; }
.pl-pick__search { display: flex; align-items: center; gap: 8px; padding: 9px 11px; border-bottom: 1px solid var(--hairline-soft); color: var(--slate-400); }
.pl-pick__search input { flex: 1; min-width: 0; border: 0; background: transparent; outline: none; font-family: var(--font-sans); font-size: 13px; color: var(--ink-900); }
.pl-pick__list { max-height: 224px; overflow-y: auto; padding: 5px; scrollbar-width: thin; }
.pl-pick__opt { display: flex; align-items: center; gap: 9px; width: 100%; text-align: left; padding: 7px 8px; border: 0; background: transparent; border-radius: 7px; cursor: pointer; font-family: var(--font-sans); font-size: 13px; color: var(--ink-800); }
.pl-pick__opt:hover { background: var(--neutral-50); }
.pl-pick__opt.is-on { background: var(--ac-soft); color: var(--ac-700); }
.pl-pick__opt .pl-pick__name { flex: 1; }
.pl-pick__ck { margin-left: auto; color: var(--ac-700); flex: 0 0 auto; }
.pl-pick__label { font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate-400); padding: 9px 8px 4px; }
.pl-pick__empty { padding: 16px; text-align: center; font-size: 12.5px; color: var(--slate-400); }
.pl-modal__foot { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 22px; border-top: 1px solid var(--hairline); background: var(--neutral-50); }

/* ---- real headshots in avatar slots (name-matched via faceUrl) ---- */
.pl-av, .pl-contact__av, .pl-player__av, .dl-link-row__av, .dl-act-av,
.mtg-person__av, .mtg-conv__av, .topacct__av, .identity__avatar { overflow: hidden; }
.av-face { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; display: block; border-radius: inherit; }
/* people avatars are circles (design system); company logos (.is-co / firm cards) stay square */
.dl-link-row__av:not(.is-co), .dl-act-av, .topacct__av, .mtg-person__av, .pl-contact__av { border-radius: 50%; }

/* ---- responsive ---- */
@media (max-width: 1200px) {
  .pl-board { grid-template-columns: repeat(2, 1fr); }
  .pl-metrics { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 760px) {
  .pl-board { grid-template-columns: 1fr; }
}

/* ---- pipeline media tab ---- */
.pl-media-drop { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 36px 24px; border: 1.5px dashed var(--neutral-200); border-radius: var(--r-card); background: var(--neutral-50); text-align: center; transition: all var(--duration-fast) var(--ease-out); }
.pl-media-drop.is-drag { border-color: var(--ac); background: var(--ac-soft); }
.pl-media-drop__t { font-size: 14px; font-weight: 600; color: var(--ink-900); margin-top: 4px; }
.pl-media-drop__s { font-size: 12px; color: var(--slate-400); }
.pl-media-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.pl-media-card { position: relative; border-radius: var(--r-card); overflow: hidden; border: 1px solid var(--hairline); background: var(--neutral-100); }
.pl-media-card__img { width: 100%; height: 140px; object-fit: cover; display: block; }
.pl-media-card__name { font-size: 11px; color: var(--slate-500); padding: 6px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-media-card__x { position: absolute; top: 6px; right: 6px; width: 22px; height: 22px; border-radius: 50%; background: rgba(6,26,46,0.6); border: 0; color: #fff; display: grid; place-items: center; cursor: pointer; opacity: 0; transition: opacity var(--duration-fast) var(--ease-out); }
.pl-media-card:hover .pl-media-card__x { opacity: 1; }
