/* FinLens supplemental styles — layered on enterprise-layout.css (token-driven,
   so everything adapts to dark mode automatically). */

/* Data table */
.data-table { width:100%; border-collapse:separate; border-spacing:0; font-size:var(--font-sm); }
.data-table thead th {
  position:sticky; top:0; z-index:2;
  background:var(--color-bg-subtle); color:var(--color-text-secondary);
  text-align:left; font-weight:700; font-size:var(--font-xs);
  text-transform:uppercase; letter-spacing:.04em;
  padding:.65rem .9rem; border-bottom:1px solid var(--color-border);
}
.data-table tbody td { padding:.5rem .9rem; border-bottom:1px solid var(--color-border); vertical-align:middle; }
.data-table tbody tr:hover { background:var(--color-bg-hover); }
.data-table .amt { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.table-wrap { max-height:68vh; overflow:auto; }
.ledger-cell { max-width:460px; font-weight:600; color:var(--color-text-primary); }

/* Classification <select> tints (reuse the semantic token tints) */
.sec-select { min-width:132px; font-weight:600; }
.sec-194C { background-color:var(--tint-primary-bg)!important; color:var(--tint-primary-fg)!important; }
.sec-194J { background-color:var(--tint-success-bg)!important; color:var(--tint-success-fg)!important; }
.sec-194I { background-color:var(--tint-warning-bg)!important; color:var(--tint-warning-fg)!important; }
.sec-194H { background-color:var(--tint-danger-bg)!important;  color:var(--tint-danger-fg)!important; }
.sec-194A { background-color:var(--tint-indigo-bg)!important;  color:var(--tint-indigo-fg)!important; }
.sec-194Q { background-color:var(--tint-purple-bg)!important;  color:var(--tint-purple-fg)!important; }
.sec-IGNORE { background-color:var(--tint-neutral-bg)!important; color:var(--tint-neutral-fg)!important; }
.sec-AUTO { }

/* value chip shown in the Current column */
.src-badge { display:inline-block; font-size:var(--font-xs); font-weight:700; padding:.12rem .45rem; border-radius:var(--radius-sm); }

/* summary pills row */
.pill-row { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:var(--spacing-md); align-items:center; }
.pill.clickable { cursor:pointer; }
.pill.clickable:hover { filter:brightness(.96); }

/* toast */
#toast { position:fixed; bottom:18px; right:18px; z-index:9999; display:flex; flex-direction:column; gap:8px; }
.toast-item { padding:.55rem .9rem; border-radius:var(--radius-md); box-shadow:var(--shadow-lg); font-size:var(--font-sm); font-weight:600; color:#fff; }
.toast-item.ok { background:var(--color-success); }
.toast-item.err { background:var(--color-danger); }

/* spinner */
.spin { display:inline-block; width:14px; height:14px; border:2px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:tdsspin .7s linear infinite; vertical-align:-2px; }
@keyframes tdsspin { to { transform:rotate(360deg); } }

/* dashboard client cards */
.client-metrics { display:flex; gap:var(--spacing-xl); margin-top:var(--spacing-md); }
.client-metric .n { font-size:1.7rem; font-weight:800; line-height:1; font-variant-numeric:tabular-nums; }
.client-metric .l { font-size:var(--font-xs); color:var(--color-text-muted); text-transform:uppercase; letter-spacing:.04em; margin-top:.15rem; }
.muted { color:var(--color-text-muted); }

/* KPI strip (TDS Report) — one compact bar with dividers, like the RCPL report.
   Values size to content (nowrap) so large currency amounts never overflow. */
.kpi-strip { display:flex; flex-wrap:wrap; align-items:stretch; background:var(--color-bg-card); border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); padding:.35rem .25rem; margin-bottom:var(--spacing-lg); }
.kpi { padding:.55rem 1.4rem; border-right:1px solid var(--color-border); display:flex; flex-direction:column; justify-content:center; }
.kpi:last-child { border-right:none; }
.kpi .v { font-size:1.2rem; font-weight:800; font-variant-numeric:tabular-nums; color:var(--color-text-primary); line-height:1.25; white-space:nowrap; }
.kpi .k { font-size:var(--font-xs); text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-muted); margin-top:.15rem; white-space:nowrap; }
.kpi.warn .v { color:var(--color-warning); }

/* Enterprise custom dropdown (ui.js) — trigger matches the RCPL enterprise select. */
.ent-select { position:relative; display:inline-block; min-width:160px; vertical-align:middle; }
.ent-select select { display:none; }
.ent-select-btn { display:flex; align-items:center; gap:.6rem; width:100%; min-height:42px; padding:.55rem .75rem; border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-bg-card); color:var(--color-text-primary); font:inherit; font-size:.9rem; font-weight:500; cursor:pointer; text-align:left; transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast); }
.ent-select-btn:hover { border-color:var(--color-border-strong); }
.ent-select.open .ent-select-btn, .ent-select-btn:focus-visible { outline:none; border-color:var(--color-primary); box-shadow:var(--focus-ring); }
.ent-lbl { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ent-chev { display:inline-flex; color:var(--color-text-muted); transition:transform var(--transition-fast); }
.ent-select.open .ent-chev { transform:rotate(180deg); }
.ent-select-menu { position:absolute; z-index:1000; top:calc(100% + 4px); left:0; min-width:100%; max-height:320px; overflow:auto; background:var(--color-bg-elevated); border:1px solid var(--color-border); border-radius:var(--radius-md); box-shadow:var(--shadow-lg); padding:.3rem; display:none; }
.ent-select.open .ent-select-menu { display:block; }
.ent-select-opt { display:flex; align-items:center; gap:.6rem; padding:.5rem .6rem; border-radius:var(--radius-sm); font-size:var(--font-sm); color:var(--color-text-primary); cursor:pointer; white-space:nowrap; }
.ent-select-opt .ent-opt-t { flex:1; }
.ent-select-opt:hover { background:var(--color-bg-hover); }
.ent-select-opt.sel { background:var(--color-primary-soft); color:var(--color-primary); font-weight:600; }
.ent-select-opt .tick { color:var(--color-primary); opacity:0; }
.ent-select-opt.sel .tick { opacity:1; }

/* Searchable client picker (users.js) — scales to thousands of clients via type-to-filter. */
.cpick { position:relative; max-width:480px; display:flex; flex-direction:column; gap:.45rem; }
.cpick-chips { display:flex; flex-wrap:wrap; gap:.35rem; min-height:1.5rem; align-items:center; }
.cpick-chip { display:inline-flex; align-items:center; gap:.35rem; background:var(--tint-indigo-bg); color:var(--tint-indigo-fg); border-radius:999px; padding:.15rem .25rem .15rem .6rem; font-size:var(--font-xs); font-weight:600; }
.cpick-chip button { border:none; background:none; color:inherit; cursor:pointer; font-size:1rem; line-height:1; padding:0 .15rem; border-radius:999px; }
.cpick-chip button:hover { background:rgba(0,0,0,.12); }
.cpick-search { min-height:42px; padding:.55rem .75rem; border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-bg-card); color:var(--color-text-primary); font:inherit; font-size:.9rem; }
.cpick-search:focus { outline:none; border-color:var(--color-primary); box-shadow:var(--focus-ring); }
.cpick-results { position:absolute; z-index:1000; top:100%; left:0; right:0; max-height:260px; overflow:auto; background:var(--color-bg-elevated); border:1px solid var(--color-border); border-radius:var(--radius-md); box-shadow:var(--shadow-lg); padding:.3rem; margin-top:4px; }
.cpick-opt { display:flex; align-items:center; justify-content:space-between; gap:.6rem; padding:.45rem .6rem; border-radius:var(--radius-sm); font-size:var(--font-sm); color:var(--color-text-primary); cursor:pointer; }
.cpick-opt:hover { background:var(--color-bg-hover); }
.cpick-opt.on { background:var(--color-primary-soft); color:var(--color-primary); font-weight:600; }
.cpick-tick { color:var(--color-primary); }
.cpick-more { padding:.45rem .6rem; font-size:var(--font-xs); color:var(--color-text-muted); }

/* Client Configuration — enrolment token modal */
.cc-modal-back { position:fixed; inset:0; z-index:9998; background:rgba(0,0,0,.45); display:flex; align-items:center; justify-content:center; padding:1rem; }
.cc-modal { background:var(--color-bg-card); border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:1.25rem; max-width:560px; width:100%; }
.cc-token { width:100%; font-family:var(--font-mono,monospace); font-size:var(--font-sm); padding:.6rem; border:1px solid var(--color-border); border-radius:var(--radius-sm); background:var(--color-bg-subtle); color:var(--color-text-primary); resize:none; word-break:break-all; }

/* Segmented filter + active pill (Ledger Mapping) */
.seg { display:inline-flex; border:1px solid var(--color-border); border-radius:var(--radius-sm); overflow:hidden; background:var(--color-bg-card); }
.seg-btn { padding:.5rem .95rem; min-height:40px; border:none; background:transparent; color:var(--color-text-secondary); font-size:var(--font-sm); font-weight:600; cursor:pointer; border-right:1px solid var(--color-border); }
.seg-btn:last-child { border-right:none; }
.seg-btn:hover { background:var(--color-bg-hover); color:var(--color-text-primary); }
.seg-btn.active { background:var(--color-primary); color:#fff; }
.pill.on { box-shadow:0 0 0 2px var(--color-primary); }

/* Forms (Lower Deduction / masters) */
.form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:var(--spacing-md); align-items:end; }
.form-grid label { display:block; font-size:var(--font-xs); font-weight:700; color:var(--color-text-secondary); margin-bottom:.3rem; text-transform:uppercase; letter-spacing:.03em; }
.form-grid input[type=text], .form-grid input:not([type]), .form-grid input[type=number], .form-grid input[type=date], .form-grid input[type=file] { width:100%; min-height:42px; }
.form-grid .ent-select { width:100%; }
.form-grid .form-actions { grid-column:1/-1; display:flex; justify-content:flex-end; }

/* Key-value detail grid (Client Master) */
.kv-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:var(--spacing-md); }
.kv-grid .k { font-size:var(--font-xs); text-transform:uppercase; letter-spacing:.03em; color:var(--color-text-muted); margin-bottom:.15rem; }
.kv-grid .v { font-size:var(--font-sm); color:var(--color-text-primary); }
code { background:var(--color-bg-subtle); border:1px solid var(--color-border); border-radius:4px; padding:.05rem .35rem; font-size:.82rem; }

/* Login */
.login-body { min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--color-bg-page); padding:1rem; }
.login-card { width:100%; max-width:380px; background:var(--color-bg-card); border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:2rem; }
.login-brand { display:flex; align-items:center; gap:.75rem; margin-bottom:1.5rem; }
.login-title { font-size:1.2rem; font-weight:800; color:var(--color-text-primary); }
.login-card form { display:flex; flex-direction:column; gap:.3rem; }
.login-card label { font-size:var(--font-xs); font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--color-text-secondary); margin-top:.5rem; }
.login-card input { min-height:42px; width:100%; }
.login-err { color:var(--color-danger); font-size:var(--font-sm); margin-top:.5rem; min-height:1.2em; }
.login-foot { text-align:center; margin-top:1.5rem; font-size:var(--font-xs); }

/* Checkbox rows (user/CA client access) */
.chk-row { display:flex; flex-wrap:wrap; gap:.75rem; padding:.3rem 0; }
label.inline { display:inline-flex; align-items:center; gap:.4rem; font-weight:500; text-transform:none; letter-spacing:0; font-size:var(--font-sm); color:var(--color-text-primary); margin:0; }

/* Tabs */
.tabs { display:flex; gap:.25rem; border-bottom:1px solid var(--color-border); margin-bottom:var(--spacing-md); flex-wrap:nowrap; overflow-x:auto; }
.tab { padding:.6rem 1rem; font-size:var(--font-sm); font-weight:600; color:var(--color-text-secondary); cursor:pointer; border:none; background:none; border-bottom:2px solid transparent; white-space:nowrap; }
.tab:hover { color:var(--color-text-primary); }
.tab.active { color:var(--color-primary); border-bottom-color:var(--color-primary); }

/* Monthly Summary — grouped section header (name spans Base + TDS) */
.data-table.monthly thead th { white-space:nowrap; text-align:center; }
.data-table.monthly thead tr:first-child th { top:0; }
.data-table.monthly thead tr:nth-child(2) th { top:33px; z-index:3; }
.data-table.monthly thead .sec-group { background:var(--color-bg-subtle); border-left:2px solid var(--color-border-strong); font-size:var(--font-xs); font-weight:700; }
.data-table.monthly thead .sec-start, .data-table.monthly tbody .sec-start { border-left:2px solid var(--color-border-strong); }
.data-table.monthly .col-month { position:sticky; left:0; background:var(--color-bg-card); z-index:2; text-align:left; font-weight:600; min-width:84px; }
.data-table.monthly thead .col-month { background:var(--color-bg-subtle); z-index:4; }
.data-table.monthly tbody tr:hover .col-month { background:var(--color-bg-hover); }
.data-table.monthly .total-row td { background:var(--color-bg-subtle); border-top:2px solid var(--color-border-strong); }
.data-table.monthly .total-row .col-month { background:var(--color-bg-subtle); }
