/* pfs.css : the few rules the PFS pages need on top of ds.css (Statement, Manage, shared lender view).
   Tokens only: no literal colour, size, radius or shadow (npm run lint:theme covers this file).
   Class prefix pfs2- = "PFS page". Layout, controls, tables, sheets and states are ds-* classes. */

.pfs2 { min-width: 0; }
.pfs2-stack > * + * { margin-top: var(--space-6); }
.pfs2-skel-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4) var(--space-5); padding: var(--space-3) 0; margin-bottom: var(--space-4); }
@media (min-width: 768px) { .pfs2-skel-stats { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } }
.pfs2-stat-sub { display: block; margin: var(--space-1) 0 0; font-size: var(--text-xs); font-weight: var(--weight-normal); line-height: var(--leading-snug); color: var(--text-subtle); }
.pfs2-statrow dd { overflow-wrap: anywhere; }

/* Block heading above each table. */
.pfs2-block-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-4); margin-bottom: var(--space-2); }
.pfs2-block-head h2 { margin: 0; font-size: var(--text-lg); font-weight: var(--weight-semi); color: var(--text); }
.pfs2-block-head p { margin: 0; font-size: var(--text-xs); color: var(--text-subtle); }

/* Toolbar over the tables: grouping toggle + expand / collapse. */
.pfs2-tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); margin: var(--space-2) 0 var(--space-4); }
.pfs2-tools-label { font-size: var(--text-sm); color: var(--text-muted); }
.pfs2-tools .ds-seg-item { min-height: var(--control-h); min-width: var(--tap-min); }
.pfs2-tools .ds-btn { min-height: var(--tap-min); }

/* Grouped data table. Groups are tbody blocks so a group can fold; the header row carries the subtotal. */
.pfs2-bs tbody[data-open="false"] > tr:not(.pfs2-ghead) { display: none; }
.pfs2-bs tr.ds-group td { padding-top: var(--space-4); vertical-align: middle; }
.pfs2-bs tr.ds-group td.pfs2-gsum { padding-top: var(--space-4); font-size: var(--text-base); font-weight: var(--weight-semi); letter-spacing: 0; text-transform: none; color: var(--text); }
.pfs2-gtoggle, .pfs2-exp { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--tap-min); padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.pfs2-exp { align-items: flex-start; }
.pfs2-gtoggle:focus-visible, .pfs2-exp:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.pfs2-gtoggle svg, .pfs2-exp svg { flex: none; color: var(--text-subtle); transition: transform var(--dur-fast) var(--ease-out); }
.pfs2-exp svg { margin-top: var(--space-1); }
.pfs2-gtoggle[aria-expanded="true"] svg, .pfs2-exp[aria-expanded="true"] svg { transform: rotate(90deg); }
.pfs2-bs tr.ds-group td span.pfs2-gname { margin: 0; font-size: var(--text-base); font-weight: var(--weight-semi); letter-spacing: 0; text-transform: none; color: var(--text); }
.pfs2-bs tr.ds-group td span.pfs2-gcount { margin-left: var(--space-1); font-size: var(--text-sm); font-weight: var(--weight-normal); color: var(--text-subtle); }
.pfs2-bs .ds-cell-sub { display: block; }
.pfs2-bs tr.pfs2-detail[hidden] { display: none !important; }
.pfs2-detail td { padding: var(--space-3) var(--space-4); background: rgba(var(--ink), 0.03); font-size: var(--text-sm); color: var(--text-muted); }
.pfs2-detail .ds-kvl { max-width: var(--measure); }
.pfs2-basis { cursor: help; }
.pfs2-phone-only { display: none; }
@media (max-width: 767px) {
  .pfs2-phone-only { display: inline; }
  .ds-table-data td.pfs2-phone-only:empty { display: none; }
  .ds-table-data tr.pfs2-detail { padding: var(--space-3); background: rgba(var(--ink), 0.03); }
  .pfs2-detail td { background: transparent; padding: 0; }
  .pfs2-bs tr.ds-group td, .pfs2-bs tr.ds-group td.pfs2-gsum { padding-top: 0; }
  .pfs2-bs tr.ds-group td:first-child { padding-right: 0; }
  .pfs2-bs tr.ds-group td[data-phone="end"] { top: calc(var(--space-5) + var(--space-3)); }
  .pfs2-bs tr.ds-total td:first-child { padding-right: 0; }
}

/* Entity tree. */
.pfs2-tree { list-style: none; margin: 0; padding: 0; font-size: var(--text-sm); }
.pfs2-tree .pfs2-tree { margin-left: var(--space-3); padding-left: var(--space-3); border-left: 1px solid var(--hairline); }
.pfs2-tree li { padding: var(--space-1) 0; }
.pfs2-tree-name { font-weight: var(--weight-semi); color: var(--text); }
.pfs2-tree-type, .pfs2-tree-pct { margin-left: var(--space-2); font-size: var(--text-xs); color: var(--text-subtle); }

/* Side panel: sticky beside the tables from 1024 (net worth, entities and basis stay in view while the lists scroll). */
@media (min-width: 1024px) {
  .pfs2-side { align-self: start; position: sticky; top: calc(var(--nav-height) + var(--space-4)); max-height: calc(100vh - var(--nav-height) - var(--space-6)); overflow-y: auto; }
}
/* Side panel sections hold small forms: the scenario select. */
.pfs2-side .ds-select { width: 100%; }
.pfs2-side .ds-kvl dd { font-variant-numeric: tabular-nums; }
.pfs2-side .ds-kvl dd.is-total { font-weight: var(--weight-semi); }

/* Lender view: a statement, not an app. */
.pfs2-doc-head { margin-bottom: var(--space-4); }
.pfs2-doc-note { max-width: var(--measure); font-size: var(--text-sm); line-height: var(--leading-normal); color: var(--text-muted); }
.pfs2-doc-foot { margin-top: var(--space-6); padding-top: var(--space-4); border-top: 1px solid var(--hairline); font-size: var(--text-xs); color: var(--text-subtle); }
.pfs2-lender-bar { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-4); }
.pfs2-lender-bar .ds-btn { min-height: var(--tap-min); }
.pfs2-expired { max-width: var(--frame-read); margin: var(--space-7) auto; }

/* Print: the statement only. No shell, no controls; every group open; plain ink on paper. */
@media print {
  .ds-shell-head, .ds-tabbar, .ds-chat, .ds-chat-scrim, .ds-skip, .ds-head-actions, .pfs2-noprint, .pfs2-tools, .pfs2-hide-print { display: none !important; }
  body { background: transparent; padding: 0; }
  .ds-frame { max-width: none; padding: 0; }
  .pfs2-bs tbody[data-open="false"] > tr:not(.pfs2-ghead):not(.pfs2-detail) { display: table-row !important; }
  .pfs2-bs tr.pfs2-detail { display: none !important; }
  .ds-record { display: block; }
  .ds-table-data th { position: static; }
  .pfs2-bs tbody, .pfs2-bs tr { break-inside: avoid; }
  .pfs2-block-head { break-after: avoid; }
  .pfs2-gtoggle svg { display: none; }
}

/* ---- Manage ------------------------------------------------------------------------------------------------------ */
.pfs2-tabs { margin-top: var(--space-4); }
.pfs2-tabs .ds-tab { min-height: var(--tap-min); }
.pfs2-block-row { justify-content: space-between; align-items: flex-end; }
.pfs2-block-row h2 { display: flex; align-items: baseline; gap: var(--space-2); }
.pfs2-block-row p { margin-top: var(--space-1); max-width: var(--measure); }
.pfs2-block-act { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.pfs2-count { font-size: var(--text-sm); font-weight: var(--weight-normal); color: var(--text-subtle); font-variant-numeric: tabular-nums; }
.pfs2-sec { margin-top: var(--space-6); }
.pfs2-back { margin-bottom: var(--space-2); margin-left: calc(var(--space-2) * -1); }
.pfs2-add { margin-top: var(--space-3); }
.pfs2-add .ds-btn { min-height: var(--tap-min); }

/* Inline-edit grid: Name pinned as the first column, an edge fade shows there is more to the right. */
.pfs2-grid { font-size: var(--text-sm); }
.pfs2-grid th { position: sticky; top: 0; z-index: var(--z-base); background: var(--bg-sunken); font-size: var(--text-sm); font-weight: var(--weight-semi); letter-spacing: 0; text-transform: none; color: var(--text-muted); white-space: normal; vertical-align: bottom; padding-inline: var(--space-1); }
.pfs2-grid td { padding: var(--space-1); vertical-align: middle; white-space: nowrap; }
.pfs2-grid td:first-child, .pfs2-grid th:first-child { padding-left: var(--space-2); }
.pfs2-grid td:first-child { position: sticky; left: 0; z-index: calc(var(--z-base) + 1); background: var(--bg); }
.pfs2-grid th:first-child { left: 0; z-index: calc(var(--z-base) + 2); }
/* Actions stays in view whatever the width: pinned to the right edge of the scroller (opaque, above the cells under it). */
.pfs2-grid td.pfs2-acts-desk { position: sticky; right: 0; z-index: calc(var(--z-base) + 1); background: var(--bg); border-left: 1px solid var(--hairline); }
.pfs2-grid th.pfs2-acts-desk { position: sticky; right: 0; z-index: calc(var(--z-base) + 2); border-left: 1px solid var(--hairline); }
.pfs2-grid .ds-inline { display: flex; }
.pfs2-grid .ds-inline-input { min-height: calc(var(--control-h-sm) - 2px); width: 100%; min-width: 0; text-overflow: ellipsis; }
.pfs2-grid select.ds-select-quiet { max-width: 100%; min-height: var(--control-h-sm); }
.pfs2-grid .ds-error { margin: 0; white-space: normal; }
.pfs2-grid .pfs2-w-name { min-width: 11rem; max-width: 16rem; } .pfs2-grid .pfs2-w-ref { min-width: 9rem; max-width: 14rem; } .pfs2-grid .pfs2-w-num { min-width: 7rem; }
.pfs2-grid .pfs2-w-rate { min-width: 5.5rem; width: 5.5rem; } .pfs2-grid .pfs2-w-date { min-width: 8.5rem; } .pfs2-grid .pfs2-w-note { min-width: 18rem; } .pfs2-grid .pfs2-w-act { min-width: 10rem; }
.pfs2-grid th.ds-num { text-align: right; }
.pfs2-scroll.has-more { -webkit-mask-image: linear-gradient(to right, rgba(var(--ink), 1) calc(100% - 40px), transparent); mask-image: linear-gradient(to right, rgba(var(--ink), 1) calc(100% - 40px), transparent); }
@media (min-width: 768px) { .pfs2-scroll { max-height: 70vh; } }
@media (max-width: 767px) {
  .pfs2-grid .pfs2-w-name { min-width: 10rem; }
  .pfs2-grid .ds-inline { min-height: var(--tap-min); }
  .pfs2-grid .ds-inline-input { min-height: var(--tap-min); }
  .pfs2-grid select.ds-select-quiet { min-height: var(--tap-min); }
  .pfs2-grid .ds-btn-sm, .pfs2-links .ds-btn-sm, .pfs2-docs .ds-btn-sm { min-height: var(--tap-min); }
  #pm-sheet .ds-iconbtn { min-width: var(--tap-min); min-height: var(--tap-min); }
}
@media (hover: hover) and (pointer: fine) {
  .pfs2-grid .ds-row-act, .pfs2-links .ds-row-act { opacity: 0; transition: opacity var(--dur-fast) var(--ease-out); }
  .pfs2-grid tr:hover .ds-row-act, .pfs2-grid tr:focus-within .ds-row-act, .pfs2-links tr:hover .ds-row-act, .pfs2-links tr:focus-within .ds-row-act { opacity: 1; }
}
.pfs2-acts { display: flex; align-items: center; gap: var(--space-1); }
.pfs2-grid td.pfs2-acts-desk { display: table-cell; }
.pfs2-acts-phone { display: none; }
@media (max-width: 767px) {
  .pfs2-grid .pfs2-acts-desk { display: none; }
  .pfs2-grid td .pfs2-acts-phone { display: flex; flex-wrap: wrap; margin-top: var(--space-1); }
}
.pfs2-grid .pfs2-acts .ds-btn + .ds-btn { margin-left: var(--space-1); }
.pfs2-grid tr.is-confirming td { background: var(--bg-sunken); }   /* opaque: the pinned cells must not show what scrolls under them */
.pfs2-confirm-row td { padding: 0; background: var(--bg-sunken); }
.pfs2-confirm-li { padding: var(--space-1) var(--space-2); background: var(--bg-sunken); }
.pfs2-confirm-row .pfs2-confirm { position: sticky; left: 0; z-index: calc(var(--z-base) + 3); padding: var(--space-1) var(--space-2); box-sizing: border-box; background: var(--bg-sunken); }
.pfs2-confirm { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); font-size: var(--text-sm); color: var(--text); white-space: normal; max-width: 100%; }
.pfs2-confirm-btns { display: inline-flex; gap: var(--space-2); }
.pfs2-grid input[type="checkbox"] { width: 20px; height: 20px; accent-color: var(--accent); }

/* Share links + documents */
.pfs2-links .pfs2-acts { justify-content: flex-end; }
.pfs2-url { margin-top: var(--space-2); font-family: var(--font-mono); font-size: var(--text-sm); }
.pfs2-docs { list-style: none; margin: var(--space-3) 0 0; padding: 0; }
.pfs2-docs li { padding: var(--space-2) 0; border-bottom: 1px solid var(--hairline); }
.pfs2-docs .ds-cell-sub { display: block; }
.pfs2-upload { padding: var(--space-4); border: 1px dashed var(--border-strong); border-radius: var(--radius-md); }
.pfs2-upload.is-over { border-color: var(--accent); background: rgba(var(--ink), 0.03); }
.pfs2-upload-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-3); align-items: end; }
@media (min-width: 768px) { .pfs2-upload-row { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) auto; } }
.pfs2-upload .ds-hint { margin: var(--space-2) 0 0; }
.pfs2-bad { color: var(--danger); }

/* Keep the type scale at 7 sizes per page: total rows use the body size (weight carries the emphasis). */
.pfs2 .ds-table-data tr.ds-total .ds-num { font-size: var(--text-base); }
