/* ============================================================================
 * RecoGood — Claude Design canonical foundation (Apple direction)
 * ----------------------------------------------------------------------------
 * Source of truth: design_handoff_recogood_reskin/specs/01_foundations.md
 *   ("Final Front-End Design (2).zip", founder-LOCKED Apple/blue direction).
 * Component rules lifted verbatim from RecoGood App.dc.html (visual reference).
 * Type loaded via Google Fonts (self-host .woff2 in prod): Geist + Geist Mono.
 *   (Geist 400/500/600/700 + Geist Mono 400/500 already self-hosted at
 *    static/velzon/fonts/recogood/ — wire @font-face there in the port.)
 * Theme: light = :root; dark (first-class) = [data-theme="dark"]; persist in
 *   localStorage['rg-theme']; topbar moon/sun flips data-theme on <html>.
 * This is a foundation artifact — NOT yet wired into base.html. Re-theme the
 * existing Django templates onto these tokens (preserve every route/column/copy).
 * ==========================================================================*/

/* ---- Light (default) ---- */
:root{--canvas:#FFFFFF;--card:#FFFFFF;--inset:#F5F5F7;--hover:#F3F3F5;--border:#E6E6E9;--border2:#D8D8DD;--text:#1D1D1F;--text2:#6E6E73;--text3:#86868B;--muted:#A1A1A6;--accent:#0071E3;--accent-h:#0060C4;--accent-soft:#E8F1FD;--accent-text:#0064C8;--on-accent:#FFFFFF;--sidebar:#FBFBFD;--side-text:#5E5E63;--side-active:#1D1D1F;--recovery:#248A3D;--rec-bg:#E8F4EC;--warn:#9A6300;--warn-bg:#F6EEDD;--risk:#C8102E;--risk-bg:#F7E5E8;--grid:#E8E8EB;--radius:14px;--radius-sm:11px;--btn-radius:980px;--shadow:0 1px 3px rgba(0,0,0,.05);--shadow-pop:0 8px 30px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.08);--fui:"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}

/* ---- Dark (first-class) ---- */
[data-theme="dark"] {
  --canvas:#000000;  --card:#1C1C1E;  --inset:#2C2C2E;  --hover:#2C2C2E;
  --border:#2E2E32;  --border2:#3A3A3E;
  --text:#F5F5F7;    --text2:#A1A1A6;  --text3:#86868B;  --muted:#6E6E73;
  --accent:#0A84FF;  --accent-h:#3D9BFF; --accent-soft:#16263C; --accent-text:#5AB0FF; --on-accent:#FFFFFF;
  /* #141 #4a — lightened from #161618 (too near-black) so the nav/sidebar/topbar chrome reads as a
     distinct dark surface above the pure-black --canvas, not a black-on-black blob. */
  --sidebar:#202023; --side-text:#A1A1A6; --side-active:#FFFFFF;
  --recovery:#30D158; --rec-bg:#102A18;
  --warn:#FFD426;     --warn-bg:#2A2410;
  --risk:#FF453A;     --risk-bg:#2A1414;
  --grid:#2C2C2E;
  --shadow:0 1px 3px rgba(0,0,0,.4);
  --shadow-pop:0 16px 48px rgba(0,0,0,.55),0 1px 3px rgba(0,0,0,.5);
}

/* ============================================================================
 * Component rules — verbatim from RecoGood App.dc.html (scoped to .rgw app root)
 * ==========================================================================*/
*{box-sizing:border-box}
html,body{margin:0}
.rgw [data-lucide]{flex:0 0 auto}
.rgw svg.lucide{display:block}
/* nav: NO transition on sticky sidebar items (compositor stale-paint) — brightness hover only */
.rgw .navlink:hover{filter:brightness(0.97)}
.rgw .navlink[data-active="1"]{background:var(--accent-soft) !important;color:var(--side-active) !important;font-weight:600 !important;border-left-color:var(--accent) !important;padding-left:9px !important}
.rgw .row-hover{cursor:pointer;transition:background .1s ease}
.rgw .row-hover:hover{background:var(--inset) !important}
.rgw .lnk:hover{color:var(--accent-h) !important}
.rgw .ibtn{transition:background .12s ease,color .12s ease}
.rgw .ibtn:hover{background:var(--hover) !important;color:var(--text) !important}
.rgw .pbtn{transition:background .12s ease}
.rgw .pbtn:hover{background:var(--accent-h) !important}
.rgw .chip{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid transparent;white-space:nowrap;font-family:var(--fui)}
/* status vocab: recovery tone = settled/approved/ready/recovered; neutral = unsettled/drafted/open;
   warn = pending/review/in-review; risk = refunded/loss/failed/error. RESERVED tones, never decorative.
   FE3 .rg-chip ok/neutral/warn/risk translate to these data-st values (see static/design/CLASS_MAP.md). */
.rgw .chip[data-st="settled"],.rgw .chip[data-st="approved"],.rgw .chip[data-st="ready"],.rgw .chip[data-st="recovered"]{background:var(--rec-bg);color:var(--recovery);border-color:color-mix(in srgb,var(--recovery) 34%,transparent)}
.rgw .chip[data-st="unsettled"],.rgw .chip[data-st="drafted"],.rgw .chip[data-st="open"]{background:var(--inset);color:var(--text2);border-color:var(--border2)}
.rgw .chip[data-st="pending"],.rgw .chip[data-st="review"],.rgw .chip[data-st="in-review"]{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 34%,transparent)}
.rgw .chip[data-st="refunded"],.rgw .chip[data-st="loss"],.rgw .chip[data-st="failed"],.rgw .chip[data-st="error"]{background:var(--risk-bg);color:var(--risk);border-color:color-mix(in srgb,var(--risk) 34%,transparent)}
.rgw .chip[data-grade="claim"]{background:var(--rec-bg);color:var(--recovery);border-color:color-mix(in srgb,var(--recovery) 40%,transparent)}
.rgw .chip[data-grade="advisory"]{background:var(--inset);color:var(--text2);border-color:var(--border2)}
.rgw .mt[data-match="matched"]{color:var(--recovery)}
.rgw .mt[data-match="partial"]{color:var(--warn)}
.rgw .mt[data-match="none"]{color:var(--risk)}
.rgw ::-webkit-scrollbar{width:10px;height:10px}
.rgw ::-webkit-scrollbar-thumb{background:var(--border2);border-radius:6px}
.rgw ::-webkit-scrollbar-track{background:transparent}
@keyframes rgIn{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:translateX(0)}}
@keyframes rgFade{from{opacity:0}to{opacity:1}}
.btn-primary,.btn.btn-primary{--bs-btn-bg:var(--pri-bg);--bs-btn-border-color:var(--pri-bg);--bs-btn-color:var(--pri-ink);--bs-btn-hover-bg:var(--pri-h);--bs-btn-hover-border-color:var(--pri-h);--bs-btn-hover-color:var(--pri-ink);--bs-btn-active-bg:var(--pri-h);--bs-btn-active-border-color:var(--pri-h);--bs-btn-disabled-bg:var(--pri-bg);--bs-btn-disabled-border-color:var(--pri-bg);background:var(--pri-bg);border-color:var(--pri-bg);color:var(--pri-ink);border-radius:var(--r-ctl)}
.btn-outline-primary{--bs-btn-color:var(--accent-ink);--bs-btn-border-color:var(--accent);--bs-btn-hover-bg:var(--accent-soft);--bs-btn-hover-color:var(--accent-ink);--bs-btn-hover-border-color:var(--accent)}
:root{--bs-primary:#4263EB;--bs-primary-rgb:66,99,235;--bs-link-color:var(--accent-ink,#3B50C9);--bs-link-hover-color:var(--accent,#4263EB)}
.text-primary{color:var(--accent-ink)!important}
.bg-primary{background-color:var(--accent)!important}
