/* =====================================================================
   KOV DESIGN SYSTEM — single source of truth (Navy + Gold, light theme)
   ---------------------------------------------------------------------
   Loaded AFTER style.css, so tokens here are canonical.
   Markup contracts:
     Hero:       .kov-hero > .kov-hero-orb* + .kov-hero-inner
                   (.kov-hero-eyebrow/.kov-hero-title/.kov-hero-sub + .kov-hero-actions)
                 .kov-hero-strip > .kov-hero-cell (.hc-k/.hc-v/.hc-s)
     KPI cards:  .kpi3d-grid > (a|div).kpi3d.tilt3d.c1..c6
                   > .d-ic .d-k .d-v[data-count] .d-s
     Panels:     .kov-panel > .kov-panel-head(.kov-panel-title) / .kov-panel-body / .kov-panel-foot
     Tables:     .kov-table-wrap > table.kov-table  (.kt-name/.kt-no, .amt-good/.warn/.bad)
     Badges:     .kov-badge.(ok|warn|bad|info|gold|neutral)
     Buttons:    .kov-btn / .kov-btn-gold / .kov-btn-ghost / .kov-btn-sm
     Status:     .kov-status > .kov-st > .st-ic(.ok|.warn|.bad|.info) + text
     Snapshot:   .kov-snap-grid > .kov-snap (.sn-k/.sn-v/.sn-ic)
     Empty:      .kov-empty (> i + text)
     Alerts:     .kov-alert.(danger|warn|info|ok)
     Progress:   .kov-prog > .kov-prog-fill[.g-green|.g-gold|.g-red|.g-blue]
     Section:    .kov-chip
   Motion is wired globally in app.js via .tilt3d, .d-v[data-count], .reveal,
   .kov-ring, .kov-gauge. All motion collapses under prefers-reduced-motion.
   ===================================================================== */

:root{
  /* Canvas & surfaces */
  --kov-canvas:#eef1f7;
  --kov-surface:#ffffff;
  --kov-surface-2:#f7f9fc;
  --kov-border:#e3e8f0;
  --kov-border-2:#eef2f7;

  /* Navy scale */
  --kov-navy-900:#040d1a;
  --kov-navy-800:#071428;
  --kov-navy-700:#0b1e3a;
  --kov-navy-600:#112645;
  --kov-navy-500:#1e3a5f;

  /* Gold (KOV brand accent) */
  --kov-gold:#d0a245;
  --kov-gold-2:#b68931;
  --kov-gold-soft:#fef6e3;
  --kov-gold-ink:#7c5a14;

  /* Ink / text */
  --kov-ink:#0f172a;
  --kov-ink-2:#475569;
  --kov-muted:#64748b;
  --kov-faint:#94a3b8;

  /* Semantic */
  --kov-green:#059669;   --kov-green-2:#0f766e; --kov-green-soft:#d1fae5; --kov-green-ink:#065f46;
  --kov-amber:#d97706;   --kov-amber-2:#b45309; --kov-amber-soft:#fef3c7; --kov-amber-ink:#92400e;
  --kov-red:#dc2626;     --kov-red-2:#b91c1c;   --kov-red-soft:#fee2e2;   --kov-red-ink:#991b1b;
  --kov-blue:#2563eb;    --kov-blue-2:#1d4ed8;  --kov-blue-soft:#dbeafe;  --kov-blue-ink:#1e40af;
  --kov-teal:#0d9488;    --kov-teal-2:#0f766e;
  --kov-violet:#8b5cf6;  --kov-violet-2:#6d28d9;

  /* Elevation */
  --kov-e1:0 4px 16px rgba(4,20,40,.06);
  --kov-e2:0 10px 26px rgba(15,23,42,.08);
  --kov-e3:0 18px 40px rgba(15,23,42,.13);
  --kov-e4:0 30px 56px rgba(15,23,42,.22);

  /* Radius */
  --kov-r-sm:10px; --kov-r-md:14px; --kov-r-lg:18px; --kov-r-xl:22px;
}

@keyframes dashRise { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:none; } }
@keyframes dashFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-5px); } }

/* =====================================================================
   GRID HELPERS
   ===================================================================== */
.kov-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-bottom:1rem; }
.kov-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:1rem; margin-bottom:1rem; }
.kov-grid-2a { display:grid; grid-template-columns:2fr 1fr; gap:1rem; margin-bottom:1rem; }
@media (max-width:1100px){ .kov-grid-3 { grid-template-columns:1fr 1fr; } .kov-grid-2a { grid-template-columns:1fr; } }
@media (max-width:780px){ .kov-grid-2, .kov-grid-3 { grid-template-columns:1fr; } }

/* =====================================================================
   HERO — dominant navy header (generalises the old .exec-hero)
   ===================================================================== */
.kov-hero{ position:relative; overflow:hidden; color:#fff; margin-bottom:1.15rem;
  border-radius:var(--kov-r-xl); padding:1.7rem 1.85rem;
  background:linear-gradient(135deg,var(--kov-navy-900) 0%,var(--kov-navy-800) 32%,var(--kov-navy-700) 68%,var(--kov-navy-600) 100%);
  box-shadow:var(--kov-e3), inset 0 1px 0 rgba(255,255,255,.06); }
.kov-hero.violet{ background:linear-gradient(135deg,#1b1340 0%,#2a1a5e 45%,#3a2470 100%); }
.kov-hero.teal{ background:linear-gradient(135deg,#04201d 0%,#06302b 45%,#0b463f 100%); }
.kov-hero-orb{ position:absolute; border-radius:50%; pointer-events:none; }
.kov-hero-orb.o1{ width:380px; height:380px; top:-130px; right:-80px; background:radial-gradient(circle,rgba(13,148,136,.22) 0%,transparent 68%); }
.kov-hero-orb.o2{ width:240px; height:240px; bottom:-60px; left:80px; background:radial-gradient(circle,rgba(208,162,69,.18) 0%,transparent 70%); }
.kov-hero-orb.o3{ width:160px; height:160px; top:30px; right:200px; background:radial-gradient(circle,rgba(37,99,235,.18) 0%,transparent 68%); }
.kov-hero-mark{ position:absolute; right:-18px; bottom:-14px; width:240px; height:120px; object-fit:contain;
  opacity:.08; filter:grayscale(1) brightness(1.4); pointer-events:none; z-index:1; }
.kov-hero-inner{ position:relative; z-index:2; }
.kov-hero-eyebrow{ font-size:10px; text-transform:uppercase; letter-spacing:1.8px; font-weight:800;
  color:rgba(94,234,212,.8); margin-bottom:5px; display:inline-flex; align-items:center; gap:.4rem; }
.kov-hero-title{ font-family:"Space Grotesk","Manrope",sans-serif; font-size:clamp(20px,3vw,30px); font-weight:900;
  letter-spacing:-.5px; color:#fff; margin:0 0 5px; line-height:1.05; }
.kov-hero-sub{ font-size:12.5px; color:rgba(255,255,255,.6); font-weight:600; display:flex; flex-wrap:wrap; gap:.35rem .75rem; align-items:center; }
.kov-hero-actions{ display:flex; gap:.55rem; flex-wrap:wrap; }

.kov-hero.compact{ padding:1.1rem 1.3rem; }
.kov-hero.compact .kov-hero-title{ font-size:clamp(1.3rem,2.2vw,1.7rem); }
.kov-hero-actions .btn{ border-radius:11px; font-weight:700; }

/* Hero KPI strip (replaces .hero-strip) */
.kov-hero-strip{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:1.5rem; border-top:1px solid rgba(255,255,255,.1); }
.kov-hero-cell{ padding:1.1rem 1.25rem; border-right:1px solid rgba(255,255,255,.1); position:relative; transition:background .15s; }
.kov-hero-cell:last-child{ border-right:none; }
.kov-hero-cell:hover{ background:rgba(255,255,255,.04); }
.kov-hero-cell .hc-k{ font-size:9.5px; text-transform:uppercase; letter-spacing:1.3px; font-weight:800; color:rgba(94,234,212,.75); margin-bottom:5px; display:inline-flex; align-items:center; gap:.35rem; }
.kov-hero-cell .hc-v{ font-size:clamp(18px,2.5vw,26px); font-weight:900; color:#fff; font-variant-numeric:tabular-nums; line-height:1; }
.kov-hero-cell .hc-s{ font-size:10.5px; color:rgba(255,255,255,.5); margin-top:4px; }
.kov-hero-cell.warn .hc-v{ color:#fbbf24; } .kov-hero-cell.bad .hc-v{ color:#f87171; } .kov-hero-cell.green .hc-v{ color:#34d399; } .kov-hero-cell.gold .hc-v{ color:var(--kov-gold); }
@media (max-width:780px){ .kov-hero-strip{ grid-template-columns:1fr 1fr; } .kov-hero{ padding:1.35rem 1.2rem; } }
@media (max-width:480px){ .kov-hero-strip{ grid-template-columns:1fr; } }

/* =====================================================================
   3D KPI CARDS (jewel gradients) — retheme to navy+gold family
   ===================================================================== */
.kpi3d-grid, .dash-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(225px,1fr)); gap:1rem; margin-bottom:1.1rem; perspective:1200px; }
.kpi3d, .dash3d { position:relative; border-radius:var(--kov-r-xl); padding:1.35rem 1.45rem; color:#fff; overflow:hidden;
  transform-style:preserve-3d; transition:transform .3s cubic-bezier(.2,.7,.3,1), box-shadow .3s;
  box-shadow:var(--kov-e3), inset 0 1px 0 rgba(255,255,255,.22);
  will-change:transform; animation:dashRise .6s both; text-decoration:none; display:block; }
.kpi3d:nth-child(2),.dash3d:nth-child(2){animation-delay:.07s}
.kpi3d:nth-child(3),.dash3d:nth-child(3){animation-delay:.14s}
.kpi3d:nth-child(4),.dash3d:nth-child(4){animation-delay:.21s}
.kpi3d:nth-child(5){animation-delay:.28s} .kpi3d:nth-child(6){animation-delay:.35s}
.kpi3d::before, .dash3d::before { content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(circle at 78% -10%, rgba(255,255,255,.30), transparent 55%); }
.kpi3d::after, .dash3d::after { content:""; position:absolute; width:140px; height:140px; right:-34px; top:-40px;
  border-radius:50%; background:rgba(255,255,255,.12); pointer-events:none; }
.kpi3d:hover, .dash3d:hover { box-shadow:var(--kov-e4), inset 0 1px 0 rgba(255,255,255,.30); }
.kpi3d > *, .dash3d > * { position:relative; }
.kpi3d .d-ic, .dash3d .d-ic { font-size:1.85rem; opacity:.96; transform:translateZ(45px); filter:drop-shadow(0 8px 12px rgba(0,0,0,.28)); }
.kpi3d .d-k, .dash3d .d-k { font-size:.71rem; text-transform:uppercase; letter-spacing:.06em; font-weight:800; opacity:.92; margin-top:.55rem; transform:translateZ(28px); }
.kpi3d .d-v, .dash3d .d-v { font-size:1.6rem; font-weight:900; margin-top:.12rem; line-height:1.1; transform:translateZ(38px); text-shadow:0 2px 10px rgba(0,0,0,.22); font-variant-numeric:tabular-nums; }
.kpi3d .d-s, .dash3d .d-s { font-size:.74rem; opacity:.9; margin-top:.3rem; transform:translateZ(16px); }
.kpi3d.c1, .dash3d.c1 { background:linear-gradient(135deg,#2563eb 0%,#0b2a6b 100%); }
.kpi3d.c2, .dash3d.c2 { background:linear-gradient(135deg,#10b981 0%,#0f766e 100%); }
.kpi3d.c2.neg, .dash3d.c2.neg { background:linear-gradient(135deg,#f43f5e 0%,#9f1239 100%); }
.kpi3d.c3, .dash3d.c3 { background:linear-gradient(135deg,#e0b65a 0%,#9a6b1f 100%); }
.kpi3d.c4, .dash3d.c4 { background:linear-gradient(135deg,#8b5cf6 0%,#6d28d9 100%); }
.kpi3d.c5 { background:linear-gradient(135deg,#1e3a5f 0%,#071428 100%); }
.kpi3d.c6 { background:linear-gradient(135deg,#0f172a 0%,#334155 100%); }

/* =====================================================================
   STATUS RIBBON
   ===================================================================== */
.kov-status, .dash-status { display:grid; grid-template-columns:repeat(auto-fit,minmax(205px,1fr)); gap:.85rem; margin-bottom:1.15rem; }
.kov-st, .dash-st { background:var(--kov-surface); border:1px solid var(--kov-border); border-radius:var(--kov-r-md); padding:.85rem 1rem; display:flex; gap:.8rem; align-items:center;
  box-shadow:var(--kov-e1); transition:transform .22s, box-shadow .22s; animation:dashRise .6s both; }
.kov-st:hover, .dash-st:hover { transform:translateY(-5px); box-shadow:var(--kov-e2); }
.kov-st .st-ic, .dash-st .st-ic { width:42px; height:42px; border-radius:13px; display:flex; align-items:center; justify-content:center; font-size:1.25rem; color:#fff; flex-shrink:0; box-shadow:0 6px 14px rgba(15,23,42,.18); }
.st-ic.ok { background:linear-gradient(135deg,#22c55e,#15803d); } .st-ic.warn { background:linear-gradient(135deg,#f59e0b,#b45309); }
.st-ic.bad { background:linear-gradient(135deg,#ef4444,#b91c1c); } .st-ic.info { background:linear-gradient(135deg,#2563eb,#1d4ed8); }
.st-ic.gold { background:linear-gradient(135deg,var(--kov-gold),var(--kov-gold-2)); }
.kov-st .st-k, .dash-st .st-k { font-size:.69rem; text-transform:uppercase; letter-spacing:.04em; color:var(--kov-faint); font-weight:800; }
.kov-st .st-v, .dash-st .st-v { font-size:1.02rem; font-weight:800; color:var(--kov-ink); }
.kov-st .st-s, .dash-st .st-s { font-size:.72rem; color:var(--kov-muted); }

/* =====================================================================
   PANELS / CARDS (canonical — replaces .gc and admin .card usage)
   ===================================================================== */
.kov-panel, .dash-panel { background:var(--kov-surface); border:1px solid var(--kov-border); border-radius:var(--kov-r-lg); box-shadow:var(--kov-e2);
  transition:transform .25s, box-shadow .25s; animation:dashRise .6s both; overflow:hidden; }
.kov-panel:hover, .dash-panel:hover { transform:translateY(-4px); box-shadow:var(--kov-e3); }
.kov-panel.flat:hover { transform:none; }
.kov-panel-head, .dash-panel-head { display:flex; align-items:center; justify-content:space-between; gap:.6rem; padding:.9rem 1.1rem; border-bottom:1px solid var(--kov-border-2); }
.kov-panel-title, .dash-panel-title { font-weight:800; font-size:.92rem; color:var(--kov-ink); display:flex; align-items:center; gap:.45rem; }
.kov-panel-title i { color:var(--kov-teal); font-size:1.05rem; }
.kov-panel-body, .dash-panel-body { padding:1.1rem; }
.kov-panel-foot { padding:.7rem 1.1rem; border-top:1px solid var(--kov-border-2); background:var(--kov-surface-2); }

/* =====================================================================
   TABLES (canonical — replaces per-page .xt)
   ===================================================================== */
.kov-table-wrap { width:100%; overflow-x:auto; }
.kov-table { width:100%; border-collapse:collapse; }
.kov-table thead th { background:#f3f6fb; color:#3f5777; font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; font-weight:800;
  padding:.65rem .9rem; border-bottom:1px solid var(--kov-border); white-space:nowrap; }
.kov-table tbody td { padding:.7rem .9rem; border-bottom:1px solid var(--kov-border-2); font-size:.82rem; vertical-align:middle; color:var(--kov-ink-2); }
.kov-table tbody tr:last-child td { border-bottom:none; }
.kov-table tbody tr:hover { background:#f5f9ff; }
.kov-table .kt-name { font-weight:700; color:var(--kov-ink); }
.kov-table .kt-no { font-size:.72rem; color:var(--kov-muted); font-weight:600; }
.kov-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.amt-good { color:var(--kov-green); font-weight:800; font-variant-numeric:tabular-nums; }
.amt-warn { color:var(--kov-amber); font-weight:800; font-variant-numeric:tabular-nums; }
.amt-bad  { color:var(--kov-red);   font-weight:800; font-variant-numeric:tabular-nums; }
/* clickable rows */
.dash-list-row, .kov-row-link { transition:background .12s; cursor:pointer; }
.dash-list-row:hover td, .kov-row-link:hover td { background:#eef5ff; }
.dash-list-row:focus-visible, .kov-row-link:focus-visible { outline:2px solid var(--kov-blue); outline-offset:-2px; background:#eef5ff; }

/* inline button spinner (submit feedback) */
.kov-spin { display:inline-block; width:.85em; height:.85em; vertical-align:-.12em;
  border:2px solid currentColor; border-right-color:transparent; border-radius:50%;
  animation:kovSpin .6s linear infinite; }
@keyframes kovSpin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .kov-spin { animation-duration:1.4s; } }

/* tap-in signifier for linked KPI cards — visible on touch where hover-tilt is absent */
.dash3d { position:relative; }
.dash3d::after { content:"\2197"; position:absolute; top:.7rem; right:.85rem;
  font-size:.9rem; line-height:1; opacity:.35; transition:opacity .15s, transform .15s; }
.dash3d:hover::after, .dash3d:focus-visible::after { opacity:.85; transform:translate(2px,-2px); }
@media (hover: hover){ .dash3d::after { opacity:.18; } }

/* =====================================================================
   BADGES (canonical status chips)
   ===================================================================== */
.kov-badge { display:inline-flex; align-items:center; gap:.25rem; font-size:.66rem; font-weight:800; text-transform:uppercase; letter-spacing:.4px;
  padding:.18rem .5rem; border-radius:999px; border:1px solid transparent; white-space:nowrap; line-height:1.4; }
.kov-badge.ok      { background:var(--kov-green-soft); color:var(--kov-green-ink); border-color:#a7f3d0; }
.kov-badge.warn    { background:var(--kov-amber-soft); color:var(--kov-amber-ink); border-color:#fde68a; }
.kov-badge.bad     { background:var(--kov-red-soft);   color:var(--kov-red-ink);   border-color:#fecaca; }
.kov-badge.info    { background:var(--kov-blue-soft);  color:var(--kov-blue-ink);  border-color:#bfdbfe; }
.kov-badge.gold    { background:var(--kov-gold-soft);  color:var(--kov-gold-ink);  border-color:#f3dca0; }
.kov-badge.neutral { background:#eef2f7; color:var(--kov-muted); border-color:#e2e8f0; }
/* solid count pill (for header counts) */
.kov-count { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; padding:0 7px; border-radius:999px;
  font-size:.68rem; font-weight:800; color:#fff; background:var(--kov-navy-500); }
.kov-count.warn{ background:var(--kov-amber); } .kov-count.bad{ background:var(--kov-red); } .kov-count.ok{ background:var(--kov-green); } .kov-count.gold{ background:var(--kov-gold-2); }

/* =====================================================================
   BUTTONS (kov system — pairs with Bootstrap .btn for sizing)
   ===================================================================== */
.kov-btn, .kov-btn-gold, .kov-btn-ghost { display:inline-flex; align-items:center; gap:.4rem; padding:.55rem 1rem; border-radius:var(--kov-r-sm);
  font-size:.8rem; font-weight:800; text-decoration:none; cursor:pointer; border:1px solid transparent; line-height:1.2;
  transition:transform .15s, box-shadow .15s, filter .15s; }
.kov-btn { background:linear-gradient(135deg,var(--kov-navy-500),var(--kov-navy-700)); color:#fff; box-shadow:0 6px 16px rgba(11,30,58,.32); }
.kov-btn:hover { color:#fff; transform:translateY(-1px); box-shadow:0 12px 24px rgba(11,30,58,.4); }
.kov-btn-gold { background:linear-gradient(135deg,var(--kov-gold),var(--kov-gold-2)); color:#3a2a08; box-shadow:0 6px 16px rgba(208,162,69,.4); }
.kov-btn-gold:hover { color:#3a2a08; transform:translateY(-1px); box-shadow:0 12px 24px rgba(208,162,69,.5); }
.kov-btn-ghost { background:rgba(255,255,255,.08); color:#fff; border-color:rgba(255,255,255,.25); }
.kov-btn-ghost:hover { color:#fff; background:rgba(255,255,255,.16); transform:translateY(-1px); }
.kov-btn-sm { padding:.4rem .7rem; font-size:.74rem; }
.kov-btn:active, .kov-btn-gold:active, .kov-btn-ghost:active { transform:translateY(0); }

/* =====================================================================
   ALERT BANNERS (replaces .exec-alert / .def-banner)
   ===================================================================== */
.kov-alerts { display:flex; gap:.65rem; flex-wrap:wrap; margin-bottom:1rem; }
.kov-alert { display:inline-flex; align-items:center; gap:.65rem; flex:1; min-width:230px; border-radius:var(--kov-r-md);
  padding:.7rem 1rem; font-weight:700; font-size:.8rem; text-decoration:none; transition:filter .15s; }
.kov-alert i { font-size:1.15rem; flex-shrink:0; }
.kov-alert .big { font-size:1.4rem; font-weight:900; line-height:1; }
.kov-alert:hover { filter:brightness(1.1); }
.kov-alert.danger { background:linear-gradient(135deg,#450a0a,#7f1d1d); color:#fecaca; border:1px solid #991b1b; }
.kov-alert.warn   { background:linear-gradient(135deg,#3d2500,#78350f); color:#fde68a; border:1px solid #92400e; }
.kov-alert.info   { background:linear-gradient(135deg,#0b2a4a,#0b1e3a); color:#bfdbfe; border:1px solid #1e40af; }
.kov-alert.ok     { background:linear-gradient(135deg,#052e16,#14532d); color:#bbf7d0; border:1px solid #15803d; }
.kov-alert.danger:hover, .kov-alert.warn:hover, .kov-alert.info:hover, .kov-alert.ok:hover { color:inherit; }

/* =====================================================================
   PROGRESS BAR
   ===================================================================== */
.kov-prog { height:8px; border-radius:999px; background:var(--kov-border); overflow:hidden; }
.kov-prog-fill { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,var(--kov-blue),var(--kov-teal)); transition:width .9s cubic-bezier(.2,.7,.3,1); }
.kov-prog-fill.g-green { background:linear-gradient(90deg,#22c55e,#15803d); }
.kov-prog-fill.g-gold  { background:linear-gradient(90deg,var(--kov-gold),var(--kov-gold-2)); }
.kov-prog-fill.g-red   { background:linear-gradient(90deg,#ef4444,#b91c1c); }
.kov-prog-fill.g-blue  { background:linear-gradient(90deg,#3b82f6,#1d4ed8); }

/* =====================================================================
   TABS — global retheme of Bootstrap .nav-tabs into navy/gold pills.
   Removes the need for per-page tab styling across list pages.
   ===================================================================== */
.nav-tabs{ border-bottom:0 !important; gap:.35rem; flex-wrap:wrap; }
.nav-tabs .nav-link{ border:1px solid var(--kov-border) !important; border-radius:11px !important;
  color:var(--kov-navy-700) !important;       /* deep navy text — high contrast on white */
  font-weight:800 !important; font-size:.86rem;
  background:#ffffff !important; padding:.5rem 1rem;
  display:inline-flex; align-items:center; gap:.4rem;
  text-decoration:none;
  box-shadow:0 2px 6px rgba(15,23,42,.07);
  transition:transform .16s ease, background-color .16s ease, color .16s ease, box-shadow .16s ease, border-color .16s ease; }
.nav-tabs .nav-link i{ color:var(--kov-navy-500); }
.nav-tabs .nav-link:hover,
.nav-tabs .nav-link:focus{ transform:translateY(-1px);
  background:var(--kov-surface-2) !important;
  color:var(--kov-navy-900) !important;
  border-color:var(--kov-navy-500) !important;
  box-shadow:0 6px 14px rgba(15,23,42,.14); }
.nav-tabs .nav-link.active,
.nav-tabs .nav-link.active:hover,
.nav-tabs .nav-link.active:focus{
  color:#ffffff !important;                    /* keep white text on navy pill */
  background:linear-gradient(135deg,var(--kov-navy-500),var(--kov-navy-700)) !important;
  border-color:var(--kov-navy-700) !important;
  box-shadow:0 10px 22px rgba(11,30,58,.34); }
.nav-tabs .nav-link.active i{ color:var(--kov-gold); }

/* =====================================================================
   SECTION CHIP + EMPTY STATE
   ===================================================================== */
.kov-chip { display:inline-flex; align-items:center; gap:.4rem; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:1.2px;
  color:var(--kov-gold-ink); background:var(--kov-gold-soft); border:1px solid #f3dca0; border-radius:999px; padding:.25rem .75rem; margin-bottom:.6rem; }
.kov-chip.teal  { color:var(--kov-teal-2); background:#ecfdf5; border-color:#a7f3d0; }
.kov-chip.navy  { color:#fff; background:var(--kov-navy-500); border-color:var(--kov-navy-600); }
.kov-empty { padding:1.6rem 1rem; text-align:center; color:var(--kov-faint); font-size:.86rem; }
.kov-empty i { font-size:1.7rem; display:block; margin-bottom:.35rem; opacity:.45; }
.kov-empty.ok i { color:var(--kov-green); opacity:.6; }

/* =====================================================================
   CHARTS row + legend
   ===================================================================== */
.dash-charts { display:grid; grid-template-columns:1fr 1.25fr; gap:1.1rem; margin-bottom:1.1rem; }
@media (max-width: 900px){ .dash-charts { grid-template-columns:1fr; } }
.dash-legend { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.5rem .8rem; }
.dash-legend .lg { display:flex; align-items:center; gap:.4rem; font-size:.78rem; }
.dash-legend .lg .dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.dash-legend .lg .lv { margin-left:auto; font-weight:800; color:var(--kov-ink); font-variant-numeric:tabular-nums; }

/* ============== "Where You Stand" — pie + aligned legend rows ============== */
.ws-grid { display:grid; grid-template-columns:minmax(190px,210px) 1fr; align-items:center; gap:1.1rem; }
@media (max-width: 540px){ .ws-grid { grid-template-columns:1fr; justify-items:center; } }
.ws-chart { position:relative; width:210px; height:210px; flex-shrink:0; }
.ws-chart .ws-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; pointer-events:none; text-align:center; }
.ws-chart .ws-center-k { font-size:.6rem; text-transform:uppercase; letter-spacing:.05em; color:#94a3b8; font-weight:800; }
.ws-chart .ws-center-v { font-size:1rem; font-weight:900; color:var(--kov-ink); margin-top:.1rem; line-height:1.1; }
.ws-chart .ws-center-s { font-size:.62rem; color:#64748b; font-weight:700; margin-top:.15rem; }
.ws-rows { display:grid; gap:.4rem; min-width:0; }
.ws-row { display:grid; grid-template-columns:14px minmax(0,1fr) auto; align-items:center; gap:.55rem;
  padding:.42rem .55rem; border:1px solid var(--kov-border); border-radius:10px; background:#fff;
  font-size:.8rem; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background-color .16s ease; cursor:default; }
.ws-row:hover { transform:translateX(2px); border-color:var(--kov-navy-500); background:#fbfdff; box-shadow:0 6px 14px rgba(15,23,42,.08); }
.ws-row .ws-dot { width:14px; height:14px; border-radius:4px; display:inline-block; box-shadow:inset 0 -2px 0 rgba(0,0,0,.18), 0 1px 0 rgba(255,255,255,.6); }
.ws-row .ws-k { font-weight:700; color:var(--kov-ink); display:flex; flex-direction:column; min-width:0; }
.ws-row .ws-k .ws-sub { font-weight:600; color:#64748b; font-size:.66rem; letter-spacing:.01em; }
.ws-row .ws-v { font-weight:900; color:var(--kov-ink); font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.ws-row .ws-v .ws-pct { display:block; font-size:.62rem; color:#94a3b8; font-weight:800; letter-spacing:.04em; }
.ws-row.is-zero { opacity:.55; }
.ws-row.is-active { background:linear-gradient(90deg,#fff7e6 0%,#ffffff 80%); border-color:#d0a245; box-shadow:0 8px 18px rgba(208,162,69,.25); }
.ws-row.is-active .ws-dot { box-shadow:0 0 0 3px rgba(208,162,69,.4), inset 0 -2px 0 rgba(0,0,0,.18); }
@media (prefers-reduced-motion: reduce) { .ws-row { transition:none; } .ws-row:hover { transform:none; } }

/* ============== Stake trend "scroll" (Units tab) ============== */
/* A horizontally-scrollable navy 3D ribbon of yearly stake pillars.
   Past years and YTD render in gold/teal; forecast years use a hatched
   pattern so the projection is obviously a projection. */
.stake-scroll-wrap { position:relative; border-radius:18px;
  background:linear-gradient(180deg,#0a1735 0%,#0e2147 55%,#0a1735 100%);
  border:1px solid #1d325e; box-shadow:0 22px 44px rgba(11,30,58,.42), inset 0 1px 0 rgba(255,255,255,.06);
  padding:1.1rem 1.15rem 1rem; overflow:hidden; color:#e2e8f0; }
.stake-scroll-wrap::before, .stake-scroll-wrap::after { content:""; position:absolute; top:0; bottom:0; width:42px; pointer-events:none; z-index:2; }
.stake-scroll-wrap::before { left:0; background:linear-gradient(90deg,#0a1735 0%,rgba(10,23,53,0) 100%); border-top-left-radius:18px; border-bottom-left-radius:18px; }
.stake-scroll-wrap::after { right:0; background:linear-gradient(270deg,#0a1735 0%,rgba(10,23,53,0) 100%); border-top-right-radius:18px; border-bottom-right-radius:18px; }
.stake-scroll-head { display:flex; justify-content:space-between; align-items:center; gap:.8rem; flex-wrap:wrap; margin-bottom:.7rem; position:relative; z-index:3; }
.stake-scroll-head .h-k { font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; color:#9bb6e2; font-weight:800; display:flex; align-items:center; gap:.4rem; }
.stake-scroll-head .h-k i { color:var(--kov-gold); }
.stake-scroll-head .h-meta { display:flex; gap:.4rem; flex-wrap:wrap; font-size:.7rem; }
.stake-scroll-head .h-meta span { background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); padding:.18rem .58rem; border-radius:999px; color:#dbe5f6; font-weight:700; display:inline-flex; align-items:center; gap:.32rem; }
.stake-scroll-head .h-meta i { color:var(--kov-gold); }
.stake-scroll { display:flex; gap:.85rem; align-items:flex-end; overflow-x:auto; scroll-snap-type:x mandatory;
  padding:1.1rem 1.05rem 1.6rem; min-height:240px; position:relative; z-index:1;
  scrollbar-color:#d0a245 #0a1735; scrollbar-width:thin;
  perspective:900px;
}
.stake-scroll::-webkit-scrollbar { height:8px; }
.stake-scroll::-webkit-scrollbar-thumb { background:linear-gradient(90deg,#d0a245,#b68931); border-radius:999px; }
.stake-scroll::-webkit-scrollbar-track { background:rgba(255,255,255,.04); border-radius:999px; }
.stake-col { scroll-snap-align:start; flex:0 0 86px; display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
  min-height:200px; padding-top:6px; position:relative; transform-style:preserve-3d; transition:transform .25s ease; }
.stake-col:hover { transform:translateY(-3px) rotateX(2deg); }
.stake-col .sc-amt { font-size:.7rem; font-weight:800; color:#fff; line-height:1; margin-bottom:.4rem;
  font-variant-numeric:tabular-nums; text-shadow:0 1px 2px rgba(0,0,0,.5); white-space:nowrap; }
.stake-col .sc-amt .sc-amt-sub { display:block; font-size:.56rem; color:#9bb6e2; font-weight:700; margin-top:.12rem; }
.stake-col .sc-bar { width:60px; min-height:14px; border-radius:8px 8px 4px 4px; position:relative;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.45), inset 0 -10px 18px rgba(0,0,0,.35), 0 14px 22px rgba(0,0,0,.45);
  transform:translateZ(20px); transition:height .9s cubic-bezier(.2,.8,.2,1); }
.stake-col.is-actual .sc-bar { background:linear-gradient(180deg,#5eead4 0%,#0d9488 60%,#0f766e 100%); }
.stake-col.is-ytd .sc-bar { background:linear-gradient(180deg,#fde68a 0%,#d0a245 55%,#92400e 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.55), inset 0 -10px 18px rgba(146,64,14,.5), 0 16px 26px rgba(208,162,69,.45);
  animation:stakeYtdGlow 2.4s ease-in-out infinite; }
.stake-col.is-forecast .sc-bar { background:repeating-linear-gradient(45deg,#1e3a5f 0 9px,#2a4a78 9px 18px);
  border:1px dashed rgba(214,162,69,.55); opacity:.92; }
@keyframes stakeYtdGlow { 0%,100% { box-shadow:inset 0 2px 0 rgba(255,255,255,.55), inset 0 -10px 18px rgba(146,64,14,.5), 0 14px 22px rgba(208,162,69,.4); }
  50% { box-shadow:inset 0 2px 0 rgba(255,255,255,.6), inset 0 -10px 18px rgba(146,64,14,.55), 0 22px 32px rgba(208,162,69,.6); } }
.stake-col .sc-year { font-size:.7rem; font-weight:800; color:#dbe5f6; letter-spacing:.04em; margin-top:.55rem; }
.stake-col .sc-tag { font-size:.55rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; margin-top:.15rem;
  padding:.08rem .42rem; border-radius:999px; }
.stake-col.is-actual .sc-tag { background:rgba(13,148,136,.18); color:#5eead4; }
.stake-col.is-ytd .sc-tag { background:rgba(208,162,69,.22); color:#fde68a; }
.stake-col.is-forecast .sc-tag { background:rgba(255,255,255,.06); color:#9bb6e2; border:1px dashed rgba(155,182,226,.4); }
.stake-col .sc-baseline { width:74px; height:6px; margin-top:.35rem; border-radius:4px;
  background:linear-gradient(90deg,rgba(255,255,255,.18),rgba(255,255,255,.04));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18); }
@media (prefers-reduced-motion: reduce) { .stake-col, .stake-col .sc-bar { transition:none; animation:none; } }
.stake-legend { display:flex; gap:.6rem; flex-wrap:wrap; margin-top:.55rem; font-size:.72rem; color:#dbe5f6; }
.stake-legend .lg { display:inline-flex; align-items:center; gap:.35rem; padding:.18rem .58rem; border-radius:999px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); }
.stake-legend .lg .dot { width:10px; height:10px; border-radius:3px; }
.stake-legend .lg .dot.actual { background:linear-gradient(180deg,#5eead4,#0d9488); }
.stake-legend .lg .dot.ytd { background:linear-gradient(180deg,#fde68a,#d0a245); }
.stake-legend .lg .dot.forecast { background:repeating-linear-gradient(45deg,#1e3a5f 0 4px,#2a4a78 4px 8px); border:1px dashed rgba(214,162,69,.55); }

/* =====================================================================
   BANK-STANDARD MEMBER STATEMENT — scoped to .bnk-stmt
   ---------------------------------------------------------------------
   Style conventions adapted from commercial bank statements:
     • Two-panel letterhead (logo + club identity / account-holder block)
     • Account summary box (Opening · Credits · Debits · Closing balance)
     • Transaction ledger (Date · Ref · Description · Debit · Credit · Balance)
     • Sectioned ledgers per asset/liability class
     • Closing affirmation + signature block + audit footer
     • Tight print A4 layout with @page rules + repeating thead on multi-page
   Same component used across the member portal, the admin viewer, and the
   printable version, so the figures, layout and language are uniform.
   ===================================================================== */

.bnk-stmt { --bnk-ink:#0b1e3a; --bnk-ink-2:#1e3a5f; --bnk-muted:#6b7280; --bnk-line:#d6dee9; --bnk-line-2:#eef2f7;
  --bnk-paper:#fbfcfe; --bnk-credit:#0f5132; --bnk-debit:#991b1b; --bnk-gold:#d0a245;
  font-family:'IBM Plex Sans','Manrope', system-ui, -apple-system, "Segoe UI", sans-serif;
  color:var(--bnk-ink); background:var(--bnk-paper);
  max-width:880px; margin:0 auto; padding:0; }
.bnk-stmt .tabnum { font-variant-numeric:tabular-nums; }

/* ── Letterhead — premium navy bar with KOV mark + member block ── */
.bnk-stmt .bnk-head { display:grid; grid-template-columns:1.1fr 1fr; gap:0; border:1px solid var(--bnk-line);
  border-bottom:none; border-radius:14px 14px 0 0; overflow:hidden; }
.bnk-stmt .bnk-head-club { background:linear-gradient(135deg,#040d1a 0%,#0b1e3a 50%,#0e2147 100%); color:#fff;
  padding:1.3rem 1.45rem; position:relative; overflow:hidden; }
.bnk-stmt .bnk-head-club::after { content:""; position:absolute; right:-40px; top:-40px; width:180px; height:180px; border-radius:50%;
  background:radial-gradient(circle,rgba(208,162,69,.18) 0%,rgba(208,162,69,0) 70%); pointer-events:none; }
.bnk-stmt .bnk-head-mark { display:flex; align-items:center; gap:.65rem; margin-bottom:.45rem; }
.bnk-stmt .bnk-head-mark img { width:42px; height:42px; flex:0 0 42px; filter:drop-shadow(0 4px 8px rgba(0,0,0,.4)); }
.bnk-stmt .bnk-head-mark .bnk-club-name { font-size:1.1rem; font-weight:800; letter-spacing:.02em; line-height:1.1; }
.bnk-stmt .bnk-head-mark .bnk-club-sub { font-size:.65rem; color:#bcc9e3; letter-spacing:.1em; text-transform:uppercase; font-weight:700; margin-top:.1rem; }
.bnk-stmt .bnk-club-meta { font-size:.7rem; color:#cfd9ee; line-height:1.55; }
.bnk-stmt .bnk-club-meta div { display:flex; gap:.4rem; }
.bnk-stmt .bnk-club-meta div strong { color:#fff; font-weight:700; min-width:78px; }
.bnk-stmt .bnk-head-acct { background:#ffffff; padding:1.3rem 1.45rem; border-left:1px solid var(--bnk-line); position:relative; }
.bnk-stmt .bnk-head-acct::before { content:"MEMBER FINANCIAL STATEMENT"; position:absolute; top:.7rem; right:1.05rem;
  font-size:.58rem; letter-spacing:.14em; color:var(--bnk-gold); font-weight:800; }
.bnk-stmt .bnk-head-acct .ha-k { font-size:.62rem; text-transform:uppercase; letter-spacing:.08em; color:var(--bnk-muted); font-weight:800; }
.bnk-stmt .bnk-head-acct h2 { font-size:1.25rem; font-weight:800; margin:.2rem 0 .35rem; color:var(--bnk-ink); line-height:1.15; }
.bnk-stmt .bnk-head-acct .ha-row { display:flex; justify-content:space-between; gap:1rem; padding:.22rem 0; border-top:1px dashed var(--bnk-line-2); font-size:.78rem; }
.bnk-stmt .bnk-head-acct .ha-row:first-of-type { border-top:1.5px solid var(--bnk-ink); margin-top:.55rem; padding-top:.4rem; }
.bnk-stmt .bnk-head-acct .ha-row .k { color:var(--bnk-muted); font-weight:700; }
.bnk-stmt .bnk-head-acct .ha-row .v { color:var(--bnk-ink); font-weight:800; font-variant-numeric:tabular-nums; }
.bnk-stmt .bnk-head-acct .ha-status { display:inline-flex; align-items:center; gap:.3rem; padding:.12rem .55rem;
  border-radius:999px; font-size:.65rem; font-weight:800; background:#dcfce7; color:#15803d; border:1px solid #86efac; }
.bnk-stmt .bnk-head-acct .ha-status.warn { background:#fef3c7; color:#92400e; border-color:#fde68a; }

/* ── Account Summary box ── */
.bnk-stmt .bnk-summary { background:#ffffff; border:1px solid var(--bnk-line); border-top:none; padding:1rem 1.35rem 1.1rem; }
.bnk-stmt .bnk-summary-title { font-size:.66rem; text-transform:uppercase; letter-spacing:.1em; color:var(--bnk-muted);
  font-weight:800; margin-bottom:.55rem; display:flex; align-items:center; gap:.4rem; }
.bnk-stmt .bnk-summary-title i { color:var(--bnk-gold); }
.bnk-stmt .bnk-summary-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; margin-bottom:.6rem; }
@media (max-width: 700px){ .bnk-stmt .bnk-summary-grid { grid-template-columns:repeat(2,1fr); } }
.bnk-stmt .bnk-summary-cell { background:#fbfcfe; border:1px solid var(--bnk-line); border-radius:10px; padding:.55rem .7rem; }
.bnk-stmt .bnk-summary-cell .k { font-size:.62rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--bnk-muted); display:flex; align-items:center; gap:.3rem; }
.bnk-stmt .bnk-summary-cell .v { font-size:.95rem; font-weight:800; color:var(--bnk-ink); font-variant-numeric:tabular-nums; margin-top:.18rem; }
.bnk-stmt .bnk-summary-cell.credit .v { color:var(--bnk-credit); }
.bnk-stmt .bnk-summary-cell.debit .v { color:var(--bnk-debit); }
.bnk-stmt .bnk-summary-cell.net { background:linear-gradient(135deg,#0b1e3a,#040d1a); color:#fff; border-color:#0b1e3a; }
.bnk-stmt .bnk-summary-cell.net .k { color:#bcc9e3; }
.bnk-stmt .bnk-summary-cell.net .v { color:#fff; font-size:1rem; }
.bnk-stmt .bnk-summary-cell.net.neg { background:linear-gradient(135deg,#7f1d1d,#450a0a); border-color:#7f1d1d; }
.bnk-stmt .bnk-summary-closing { background:linear-gradient(180deg,#0b1e3a,#040d1a); color:#fff; border-radius:10px;
  padding:.65rem 1rem; display:flex; justify-content:space-between; align-items:center; gap:1rem; }
.bnk-stmt .bnk-summary-closing .k { font-size:.7rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#bcc9e3; }
.bnk-stmt .bnk-summary-closing .v { font-size:1.2rem; font-weight:900; font-variant-numeric:tabular-nums; color:#fff; }
.bnk-stmt .bnk-summary-closing.neg { background:linear-gradient(180deg,#7f1d1d,#450a0a); }

/* ── Ledger sections (Savings, Loans, Fines, Fees) ── */
.bnk-stmt .bnk-ledger { background:#fff; border:1px solid var(--bnk-line); border-top:none; }
.bnk-stmt .bnk-ledger:last-of-type { border-radius:0 0 14px 14px; }
.bnk-stmt .bnk-ledger-head { display:flex; justify-content:space-between; align-items:center; gap:.8rem; padding:.65rem 1.1rem;
  background:linear-gradient(180deg,#0b1e3a 0%,#040d1a 100%); color:#fff; border-top:1px solid var(--bnk-line); }
.bnk-stmt .bnk-ledger-head .lh-title { font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; display:flex; align-items:center; gap:.45rem; }
.bnk-stmt .bnk-ledger-head .lh-title i { color:var(--bnk-gold); font-size:.9rem; }
.bnk-stmt .bnk-ledger-head .lh-sub { font-size:.7rem; color:#bcc9e3; font-weight:700; }
.bnk-stmt .bnk-ledger-meta { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:.5rem 1.1rem;
  padding:.55rem 1.1rem; background:var(--bnk-paper); border-bottom:1px solid var(--bnk-line-2); font-size:.74rem; }
.bnk-stmt .bnk-ledger-meta dt { font-size:.6rem; text-transform:uppercase; letter-spacing:.06em; color:var(--bnk-muted); font-weight:800; margin:0; }
.bnk-stmt .bnk-ledger-meta dd { margin:.1rem 0 0; font-weight:800; color:var(--bnk-ink); font-variant-numeric:tabular-nums; font-size:.85rem; }

/* Transaction tables */
.bnk-stmt .bnk-tx { width:100%; border-collapse:collapse; font-size:.78rem; }
.bnk-stmt .bnk-tx thead th { background:#f1f5f9; color:#334155; font-size:.62rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  padding:.4rem .85rem; border-bottom:1.5px solid var(--bnk-line); text-align:left; white-space:nowrap; position:sticky; top:0; }
.bnk-stmt .bnk-tx thead th.num { text-align:right; }
.bnk-stmt .bnk-tx tbody td { padding:.42rem .85rem; border-bottom:1px solid var(--bnk-line-2); color:var(--bnk-ink); vertical-align:middle; }
.bnk-stmt .bnk-tx tbody td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.bnk-stmt .bnk-tx tbody tr.is-opening td { background:#f8fafc; font-style:italic; color:var(--bnk-muted); font-weight:700; }
.bnk-stmt .bnk-tx tbody tr.is-missed td { background:#fef2f2; }
.bnk-stmt .bnk-tx tbody tr.is-pending td { background:#fef9c3; }
.bnk-stmt .bnk-tx tbody tr.is-cleared td { background:#f0fdf4; }
.bnk-stmt .bnk-tx .desc { color:var(--bnk-ink); }
.bnk-stmt .bnk-tx .desc .sub { display:block; font-size:.66rem; color:var(--bnk-muted); font-weight:600; margin-top:.1rem; }
.bnk-stmt .bnk-tx .credit { color:var(--bnk-credit); font-weight:700; }
.bnk-stmt .bnk-tx .debit { color:var(--bnk-debit); font-weight:700; }
.bnk-stmt .bnk-tx tfoot td { background:#eaf0f8; font-weight:800; padding:.5rem .85rem; font-size:.78rem; border-top:1.5px solid var(--bnk-line); }
.bnk-stmt .bnk-tx .ref { font-family:'JetBrains Mono','Cascadia Mono',Consolas,monospace; font-size:.7rem; color:var(--bnk-muted); }
.bnk-stmt .bnk-tx .pill { display:inline-flex; align-items:center; padding:.05rem .42rem; border-radius:999px; font-size:.62rem; font-weight:800; }
.bnk-stmt .bnk-tx .pill.ok { background:#dcfce7; color:#15803d; border:1px solid #86efac; }
.bnk-stmt .bnk-tx .pill.miss { background:#fee2e2; color:#991b1b; border:1px solid #fecaca; }
.bnk-stmt .bnk-tx .pill.pend { background:#fef3c7; color:#92400e; border:1px solid #fde68a; }
.bnk-stmt .bnk-tx .pill.cool { background:#dbeafe; color:#1e40af; border:1px solid #bfdbfe; }
.bnk-stmt .bnk-tx .pill.cleared { background:#ede9fe; color:#5b21b6; border:1px solid #c4b5fd; }

/* Loan sub-card (each loan = own mini-statement) */
.bnk-stmt .bnk-loan-card { border:1px solid var(--bnk-line-2); border-radius:10px; margin:.7rem 1.1rem; overflow:hidden; }
.bnk-stmt .bnk-loan-card .blc-head { display:flex; justify-content:space-between; align-items:center; gap:.7rem;
  padding:.55rem .85rem; background:#fbfcfe; border-bottom:1px solid var(--bnk-line-2); }
.bnk-stmt .bnk-loan-card .blc-head .blc-no { font-weight:800; color:var(--bnk-ink); font-size:.85rem; }
.bnk-stmt .bnk-loan-card .blc-head .blc-no .ref { font-family:'JetBrains Mono','Cascadia Mono',Consolas,monospace; color:var(--bnk-muted); font-weight:700; font-size:.7rem; margin-left:.35rem; }
.bnk-stmt .bnk-loan-card .blc-meta { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:.35rem .85rem;
  padding:.55rem .85rem; background:#ffffff; border-bottom:1px solid var(--bnk-line-2); font-size:.74rem; }
.bnk-stmt .bnk-loan-card .blc-meta dt { font-size:.6rem; text-transform:uppercase; letter-spacing:.06em; color:var(--bnk-muted); font-weight:800; margin:0; }
.bnk-stmt .bnk-loan-card .blc-meta dd { margin:.1rem 0 0; font-weight:800; color:var(--bnk-ink); font-variant-numeric:tabular-nums; }

/* Closing affirmation + signatures + footer */
.bnk-stmt .bnk-affirm { background:#fff; border:1px solid var(--bnk-line); border-top:none; padding:.85rem 1.35rem;
  display:flex; gap:.7rem; align-items:flex-start; font-size:.76rem; color:#334155; line-height:1.55; }
.bnk-stmt .bnk-affirm i { color:var(--bnk-gold); font-size:1.1rem; }
.bnk-stmt .bnk-affirm strong { color:var(--bnk-ink); }
.bnk-stmt .bnk-signatures { display:grid; grid-template-columns:repeat(3,1fr); gap:1.1rem; padding:1.4rem 1.35rem 1rem;
  background:#fff; border:1px solid var(--bnk-line); border-top:none; }
@media (max-width: 600px){ .bnk-stmt .bnk-signatures { grid-template-columns:1fr; } }
.bnk-stmt .bnk-sig { text-align:center; }
.bnk-stmt .bnk-sig .sig-line { border-bottom:1.5px solid var(--bnk-ink-2); height:42px; margin:0 auto .25rem; max-width:200px; }
.bnk-stmt .bnk-sig .sig-k { font-size:.6rem; text-transform:uppercase; letter-spacing:.08em; color:var(--bnk-muted); font-weight:800; }
.bnk-stmt .bnk-sig .sig-name { font-size:.78rem; color:var(--bnk-ink); font-weight:700; margin-top:.18rem; }
.bnk-stmt .bnk-sig .sig-date { font-size:.66rem; color:var(--bnk-muted); margin-top:.15rem; font-weight:600; }
.bnk-stmt .bnk-foot { background:#0b1e3a; color:#bcc9e3; padding:.65rem 1.35rem; font-size:.66rem; text-align:center; letter-spacing:.02em;
  border:1px solid var(--bnk-line); border-top:none; border-radius:0 0 14px 14px; line-height:1.6; }
.bnk-stmt .bnk-foot strong { color:#fff; }
.bnk-stmt .bnk-foot .end-mark { display:block; margin-top:.15rem; color:var(--bnk-gold); font-weight:800; letter-spacing:.12em; font-size:.6rem; }

/* Mini chips for status counts on header strip */
.bnk-stmt .bnk-mini-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.4rem; padding:.55rem 1.35rem; background:#fff; border:1px solid var(--bnk-line); border-top:none; }
@media (max-width: 700px){ .bnk-stmt .bnk-mini-grid { grid-template-columns:repeat(2,1fr); } }
.bnk-stmt .bnk-mini { background:#fbfcfe; border:1px solid var(--bnk-line-2); border-radius:8px; padding:.4rem .55rem; }
.bnk-stmt .bnk-mini .k { font-size:.58rem; text-transform:uppercase; letter-spacing:.06em; color:var(--bnk-muted); font-weight:800; }
.bnk-stmt .bnk-mini .v { font-size:.78rem; font-weight:800; color:var(--bnk-ink); margin-top:.1rem; font-variant-numeric:tabular-nums; }

/* Print A4 — repeating thead, no shell furniture, single statement per page */
@media print {
  body, html { margin:0; padding:0; background:#fff !important; }
  .member-quick-rail, .app-sidebar, .app-topbar, .app-footer, .no-print { display:none !important; }
  .app-content, .app-main, .app-shell, .app-body { all:unset; }
  .app-main { padding:0 !important; }
  .bnk-stmt { max-width:100%; padding:0; background:#fff !important; }
  .bnk-stmt .bnk-head, .bnk-stmt .bnk-summary, .bnk-stmt .bnk-ledger,
  .bnk-stmt .bnk-affirm, .bnk-stmt .bnk-signatures, .bnk-stmt .bnk-foot,
  .bnk-stmt .bnk-mini-grid { border-radius:0; }
  .bnk-stmt .bnk-head-club { background:#0b1e3a !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .bnk-stmt .bnk-ledger-head { background:#0b1e3a !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; padding:4pt 9pt; }
  .bnk-stmt .bnk-summary-cell.net { background:#0b1e3a !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .bnk-stmt .bnk-summary-closing { background:#0b1e3a !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .bnk-stmt .bnk-foot { background:#0b1e3a !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .bnk-stmt .bnk-tx thead th { background:#f1f5f9 !important; -webkit-print-color-adjust:exact; print-color-adjust:exact;
    padding:3pt 7pt; font-size:7.5pt; }
  .bnk-stmt .bnk-tx tbody td { padding:3pt 7pt; font-size:8.5pt; }
  .bnk-stmt .bnk-tx tfoot td { padding:3.5pt 7pt; font-size:8.5pt; }
  .bnk-stmt .bnk-tx thead { display:table-header-group; }  /* repeat header across pages */
  .bnk-stmt .bnk-ledger, .bnk-stmt .bnk-loan-card { page-break-inside:avoid; }
  .bnk-stmt .bnk-signatures { page-break-inside:avoid; }
  a { text-decoration:none !important; color:inherit !important; }
  @page { margin:12mm 10mm; size:A4 portrait; }
}

@media (max-width:760px) { .bnk-stmt .bnk-head { grid-template-columns:1fr; } .bnk-stmt .bnk-head-acct { border-left:none; border-top:1px solid var(--bnk-line); } }

/* =====================================================================
   ADMIN DASHBOARD — Executive Command Centre
   "True reflection of the club + insights for the members"
   Components below are scoped under .exec-dash so they cannot leak.
   ===================================================================== */
.exec-dash { --c-savings:#0d9488; --c-loans:#2563eb; --c-fees:#d0a245; --c-fines:#b91c1c; }

/* ── Club Health Pulse — three rings + a composite score ──────────────── */
.exec-dash .ch-pulse { display:grid; grid-template-columns:1.2fr 2fr; gap:1.1rem; margin-bottom:1.1rem; }
@media (max-width: 991px){ .exec-dash .ch-pulse { grid-template-columns:1fr; } }
.exec-dash .ch-composite { background:linear-gradient(160deg,#040d1a 0%,#0b1e3a 60%,#040d1a 100%); color:#e2e8f0;
  border-radius:18px; border:1px solid #1d325e; padding:1.1rem 1.2rem; position:relative; overflow:hidden;
  box-shadow:0 22px 44px rgba(11,30,58,.42), inset 0 1px 0 rgba(255,255,255,.07); }
.exec-dash .ch-composite::before { content:""; position:absolute; right:-60px; top:-60px; width:240px; height:240px; border-radius:50%;
  background:radial-gradient(circle,rgba(208,162,69,.18) 0%,rgba(208,162,69,0) 70%); pointer-events:none; }
.exec-dash .ch-composite-inner { display:grid; grid-template-columns:auto 1fr; gap:1.1rem; align-items:center; position:relative; z-index:1; }
.exec-dash .ch-big { position:relative; width:148px; height:148px; flex-shrink:0; }
.exec-dash .ch-big svg { width:100%; height:100%; transform:rotate(-90deg); }
.exec-dash .ch-big circle.bg { fill:none; stroke:rgba(255,255,255,.08); stroke-width:14; }
.exec-dash .ch-big circle.fg { fill:none; stroke-width:14; stroke-linecap:round; transition:stroke-dashoffset 1.2s cubic-bezier(.2,.8,.2,1); }
.exec-dash .ch-big .lbl { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }
.exec-dash .ch-big .lbl-v { font-size:2.1rem; font-weight:900; color:#fff; line-height:1; letter-spacing:-.02em; }
.exec-dash .ch-big .lbl-k { font-size:.6rem; text-transform:uppercase; letter-spacing:.08em; color:#9bb6e2; font-weight:800; margin-top:.18rem; }
.exec-dash .ch-info .ch-title { font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; color:var(--kov-gold); font-weight:800; }
.exec-dash .ch-info h3 { font-size:1.05rem; font-weight:800; color:#fff; margin:.18rem 0 .4rem; }
.exec-dash .ch-info p { font-size:.78rem; color:#bcc9e3; line-height:1.55; margin:0 0 .65rem; }
.exec-dash .ch-info .ch-pulse-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#22c55e;
  margin-right:.4rem; vertical-align:middle; box-shadow:0 0 0 0 rgba(34,197,94,.7); animation:chPulseDot 1.8s ease-in-out infinite; }
@keyframes chPulseDot { 0% { box-shadow:0 0 0 0 rgba(34,197,94,.7); } 70% { box-shadow:0 0 0 10px rgba(34,197,94,0); } 100% { box-shadow:0 0 0 0 rgba(34,197,94,0); } }
.exec-dash .ch-rings { display:grid; grid-template-columns:repeat(3,1fr); gap:.85rem; }
@media (max-width: 600px){ .exec-dash .ch-rings { grid-template-columns:1fr; } }
.exec-dash .ch-ring { background:#ffffff; border:1px solid var(--kov-border); border-radius:14px; padding:.95rem 1rem;
  box-shadow:var(--kov-e1); display:grid; grid-template-columns:auto 1fr; gap:.85rem; align-items:center;
  transition:transform .22s, box-shadow .22s, border-color .22s; }
.exec-dash .ch-ring:hover { transform:translateY(-3px); box-shadow:0 16px 30px rgba(15,23,42,.12); border-color:var(--kov-navy-500); }
.exec-dash .ch-ring-svg { position:relative; width:74px; height:74px; flex-shrink:0; }
.exec-dash .ch-ring-svg svg { width:100%; height:100%; transform:rotate(-90deg); }
.exec-dash .ch-ring-svg circle.bg { fill:none; stroke:#e3e8f0; stroke-width:9; }
.exec-dash .ch-ring-svg circle.fg { fill:none; stroke-width:9; stroke-linecap:round; transition:stroke-dashoffset 1s cubic-bezier(.2,.8,.2,1); }
.exec-dash .ch-ring-svg .pct { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:.92rem; font-weight:900; color:var(--kov-ink); }
.exec-dash .ch-ring-meta .k { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--kov-muted); font-weight:800; }
.exec-dash .ch-ring-meta .v { font-size:.88rem; font-weight:800; color:var(--kov-ink); margin-top:.12rem; }
.exec-dash .ch-ring-meta .s { font-size:.7rem; color:var(--kov-muted); margin-top:.18rem; font-weight:600; }
.exec-dash .ch-ring.is-savings circle.fg { stroke:var(--c-savings); }
.exec-dash .ch-ring.is-loans   circle.fg { stroke:var(--c-loans); }
.exec-dash .ch-ring.is-fees    circle.fg { stroke:var(--c-fees); }
@media (prefers-reduced-motion: reduce){ .exec-dash .ch-big circle.fg, .exec-dash .ch-ring-svg circle.fg, .exec-dash .ch-info .ch-pulse-dot { animation:none !important; transition:none; } }

/* ── Action Queue — one panel, tabs for Savings / Fines / Loans ──────── */
.exec-dash .aq-panel { background:var(--kov-surface); border:1px solid var(--kov-border); border-radius:18px;
  box-shadow:0 14px 32px rgba(15,23,42,.06); margin-bottom:1.1rem; overflow:hidden; }
.exec-dash .aq-head { display:flex; align-items:center; justify-content:space-between; gap:.8rem;
  padding:.95rem 1.1rem; border-bottom:1px solid var(--kov-border-2); flex-wrap:wrap; background:linear-gradient(180deg,#fbfdff 0%,#ffffff 100%); }
.exec-dash .aq-title { font-weight:800; font-size:.95rem; color:var(--kov-ink); display:flex; align-items:center; gap:.5rem; letter-spacing:-.01em; }
.exec-dash .aq-title i { color:var(--kov-gold); }
.exec-dash .aq-tabs { display:flex; gap:.35rem; flex-wrap:wrap; }
.exec-dash .aq-tab { display:inline-flex; align-items:center; gap:.4rem; padding:.45rem .8rem; border-radius:11px;
  border:1px solid var(--kov-border); background:#fff; color:var(--kov-navy-700); font-size:.78rem; font-weight:800;
  cursor:pointer; transition:transform .16s, background-color .16s, color .16s, box-shadow .16s, border-color .16s;
  text-decoration:none; }
.exec-dash .aq-tab:hover { transform:translateY(-1px); background:var(--kov-surface-2); color:var(--kov-navy-900); border-color:var(--kov-navy-500); box-shadow:0 6px 14px rgba(15,23,42,.14); }
.exec-dash .aq-tab.active { background:linear-gradient(135deg,var(--kov-navy-500),var(--kov-navy-700)); color:#fff; border-color:var(--kov-navy-700);
  box-shadow:0 10px 22px rgba(11,30,58,.34); }
.exec-dash .aq-tab .aq-count { background:rgba(255,255,255,.18); color:inherit; padding:.05rem .4rem; border-radius:999px; font-size:.66rem; font-weight:800; }
.exec-dash .aq-tab.active .aq-count { background:rgba(255,255,255,.25); color:#fff; }
.exec-dash .aq-tab.is-clean { background:#dcfce7; color:#0f5132; border-color:#86efac; }
.exec-dash .aq-tab.is-clean.active { background:#bbf7d0; }
.exec-dash .aq-body { padding:0; max-height:480px; overflow-y:auto; }
.exec-dash .aq-pane { display:none; }
.exec-dash .aq-pane.active { display:block; }
.exec-dash .aq-row { display:grid; grid-template-columns:1fr auto auto; gap:.75rem; align-items:center;
  padding:.7rem 1.1rem; border-bottom:1px solid var(--kov-border-2); transition:background-color .16s; }
.exec-dash .aq-row:hover { background:#fbfdff; }
.exec-dash .aq-row:last-child { border-bottom:none; }
.exec-dash .aq-row .aq-who { min-width:0; }
.exec-dash .aq-row .aq-name { font-weight:700; color:var(--kov-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:.86rem; }
.exec-dash .aq-row .aq-meta { font-size:.7rem; color:var(--kov-muted); margin-top:.15rem; display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; }
.exec-dash .aq-row .aq-meta .pill { background:#fff7e6; color:#92400e; border:1px solid #fde68a; padding:.06rem .42rem; border-radius:999px; font-weight:700; font-size:.66rem; }
.exec-dash .aq-row .aq-meta .pill.bad { background:#fee2e2; color:#991b1b; border-color:#fecaca; }
.exec-dash .aq-row .aq-meta .pill.cool { background:#dbeafe; color:#1e40af; border-color:#bfdbfe; }
.exec-dash .aq-row .aq-amount { font-weight:900; color:var(--kov-red); font-variant-numeric:tabular-nums; white-space:nowrap; text-align:right; font-size:.92rem; }
.exec-dash .aq-row .aq-amount .ax-sub { display:block; font-size:.62rem; color:var(--kov-muted); font-weight:700; margin-top:.1rem; }
.exec-dash .aq-notice-btn { display:inline-flex; align-items:center; gap:.4rem; padding:.45rem .75rem; border-radius:10px;
  background:linear-gradient(135deg,#fde68a 0%,#d0a245 60%,#b68931 100%); color:#3b2710; border:1px solid #b68931; font-weight:800; font-size:.76rem;
  box-shadow:0 6px 14px rgba(208,162,69,.45), inset 0 1px 0 rgba(255,255,255,.55); cursor:pointer;
  transition:transform .16s ease, box-shadow .16s ease; }
.exec-dash .aq-notice-btn:hover { transform:translateY(-1px); box-shadow:0 10px 22px rgba(208,162,69,.55), inset 0 1px 0 rgba(255,255,255,.6); }
.exec-dash .aq-notice-btn:disabled { opacity:.55; cursor:wait; transform:none; box-shadow:none; }
.exec-dash .aq-clean { padding:1.6rem 1.2rem; text-align:center; color:#0f5132; }
.exec-dash .aq-clean i { font-size:2.2rem; color:#16a34a; display:block; margin-bottom:.5rem; }
.exec-dash .aq-clean strong { font-size:.95rem; font-weight:800; color:var(--kov-ink); }
.exec-dash .aq-clean span { display:block; font-size:.78rem; color:var(--kov-muted); margin-top:.2rem; }

/* ── Top Savers leaderboard ─────────────────────────────────────────── */
.exec-dash .ts-row { display:grid; grid-template-columns:30px 1fr auto; gap:.75rem; align-items:center;
  padding:.55rem .9rem; border-bottom:1px solid var(--kov-border-2); }
.exec-dash .ts-row:last-child { border-bottom:none; }
.exec-dash .ts-rank { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:8px;
  background:var(--kov-surface-2); color:var(--kov-navy-700); font-weight:900; font-size:.78rem; }
.exec-dash .ts-row.is-top .ts-rank { background:linear-gradient(135deg,#fde68a,#d0a245); color:#3b2710; box-shadow:0 4px 10px rgba(208,162,69,.4); }
.exec-dash .ts-mid .ts-name { font-weight:700; color:var(--kov-ink); font-size:.84rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.exec-dash .ts-mid .ts-no { font-size:.66rem; color:var(--kov-muted); font-weight:700; letter-spacing:.02em; }
.exec-dash .ts-mid .ts-bar { height:6px; background:var(--kov-surface-2); border-radius:999px; margin-top:.4rem; overflow:hidden; }
.exec-dash .ts-mid .ts-bar span { display:block; height:100%; background:linear-gradient(90deg,#0d9488,#5eead4); border-radius:999px; transition:width 1.2s cubic-bezier(.2,.8,.2,1); }
.exec-dash .ts-row.is-top .ts-mid .ts-bar span { background:linear-gradient(90deg,#d0a245,#fde68a); }
.exec-dash .ts-amount { font-weight:900; color:var(--kov-ink); font-variant-numeric:tabular-nums; font-size:.85rem; white-space:nowrap; }
.exec-dash .ts-crown { color:#d0a245; margin-left:.15rem; vertical-align:middle; }

/* ── Insight ticker (calm one-liners) ───────────────────────────────── */
.exec-dash .insight-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:.7rem; padding:.85rem 1.1rem; }
.exec-dash .insight-card { display:flex; gap:.7rem; padding:.7rem .85rem; border:1px solid var(--kov-border); border-radius:12px;
  background:linear-gradient(180deg,#fbfdff 0%,#ffffff 100%); transition:transform .16s, box-shadow .16s; }
.exec-dash .insight-card:hover { transform:translateY(-2px); box-shadow:0 8px 18px rgba(15,23,42,.08); }
.exec-dash .insight-card .ic-ic { width:36px; height:36px; border-radius:10px; display:inline-flex; align-items:center; justify-content:center;
  background:rgba(208,162,69,.14); color:#92400e; font-size:1rem; flex-shrink:0; }
.exec-dash .insight-card .ic-k { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--kov-muted); font-weight:800; }
.exec-dash .insight-card .ic-v { font-size:.95rem; font-weight:800; color:var(--kov-ink); margin-top:.1rem; line-height:1.15; }
.exec-dash .insight-card .ic-s { font-size:.7rem; color:var(--kov-muted); margin-top:.2rem; font-weight:600; }

/* ── Notice Modal (sent inbox + open WhatsApp) ───────────────────────── */
.nm-backdrop { position:fixed; inset:0; background:rgba(11,30,58,.55); backdrop-filter:blur(4px); z-index:10000;
  display:none; align-items:center; justify-content:center; padding:1rem; animation:nmFadeIn .18s ease-out both; }
.nm-backdrop.open { display:flex; }
@keyframes nmFadeIn { from { opacity:0; } to { opacity:1; } }
.nm-card { width:100%; max-width:560px; background:#fff; border-radius:18px; overflow:hidden; box-shadow:0 30px 60px rgba(0,0,0,.4);
  animation:nmRise .22s cubic-bezier(.2,.8,.2,1) both; }
@keyframes nmRise { from { transform:translateY(20px) scale(.98); opacity:0; } to { transform:translateY(0) scale(1); opacity:1; } }
.nm-head { background:linear-gradient(135deg,#0b1e3a 0%,#040d1a 100%); color:#fff; padding:1rem 1.2rem; display:flex; align-items:center; gap:.6rem; }
.nm-head i { color:var(--kov-gold); font-size:1.2rem; }
.nm-head .nm-h-title { font-weight:800; font-size:.95rem; flex:1; min-width:0; }
.nm-head .nm-h-sub { font-size:.7rem; color:#bcc9e3; margin-top:.1rem; font-weight:600; }
.nm-head .nm-close { background:transparent; border:none; color:#fff; font-size:1.4rem; cursor:pointer; line-height:1; padding:.2rem .4rem; }
.nm-body { padding:1.1rem 1.2rem; }
.nm-status { display:flex; align-items:center; gap:.45rem; padding:.55rem .75rem; border-radius:10px; background:#dcfce7;
  color:#0f5132; font-weight:800; font-size:.78rem; margin-bottom:.85rem; border:1px solid #86efac; }
.nm-status i { color:#16a34a; }
.nm-status.is-error { background:#fee2e2; color:#991b1b; border-color:#fecaca; }
.nm-status.is-error i { color:#dc2626; }
.nm-label { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--kov-muted); font-weight:800; margin-bottom:.3rem; }
.nm-text { background:#f7f9fc; border:1px solid var(--kov-border); border-radius:12px; padding:.85rem 1rem;
  font-size:.84rem; color:var(--kov-ink); white-space:pre-wrap; line-height:1.55; max-height:280px; overflow-y:auto;
  font-family:inherit; }
.nm-foot { display:flex; gap:.55rem; padding:.95rem 1.2rem; border-top:1px solid var(--kov-border-2); background:#fbfdff;
  flex-wrap:wrap; justify-content:flex-end; }
.nm-foot .nm-btn { display:inline-flex; align-items:center; gap:.4rem; padding:.55rem 1rem; border-radius:11px; border:1px solid transparent;
  font-weight:800; font-size:.82rem; text-decoration:none; cursor:pointer; transition:transform .16s, box-shadow .16s; }
.nm-foot .nm-btn:hover { transform:translateY(-1px); box-shadow:0 8px 18px rgba(15,23,42,.12); }
.nm-foot .nm-btn.ghost { background:#fff; border-color:var(--kov-border); color:var(--kov-ink); }
.nm-foot .nm-btn.wa { background:#25d366; color:#fff; }
.nm-foot .nm-btn.wa.disabled { background:#cbd5e1; pointer-events:none; }
.nm-foot .nm-btn.copy { background:var(--kov-navy-500); color:#fff; }
@media (prefers-reduced-motion: reduce){ .nm-backdrop, .nm-card { animation:none; } }

/* =====================================================================
   DARK SNAPSHOT CARDS
   ===================================================================== */
.kov-snap-grid, .dash-snapshot { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:.85rem; margin-bottom:1.1rem; }
.kov-snap, .dash-snap { background:linear-gradient(160deg,var(--kov-navy-800),var(--kov-navy-500)); color:#e2e8f0; border-radius:var(--kov-r-md); padding:.95rem 1.05rem;
  box-shadow:var(--kov-e2); transition:transform .22s; animation:dashRise .6s both; }
.kov-snap:hover, .dash-snap:hover { transform:translateY(-4px); }
.kov-snap .sn-k, .dash-snap .sn-k { font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:#94a3b8; font-weight:800; }
.kov-snap .sn-v, .dash-snap .sn-v { font-size:1.15rem; font-weight:800; margin-top:.15rem; color:#fff; font-variant-numeric:tabular-nums; }
.kov-snap .sn-ic, .dash-snap .sn-ic { float:right; font-size:1.2rem; color:var(--kov-gold); opacity:.9; }

/* ---- Member portal hero avatar ---- */
.mp-hero-avatar { width:64px; height:64px; border-radius:16px; object-fit:cover;
  border:2.5px solid rgba(255,255,255,.45); box-shadow:0 8px 20px rgba(0,0,0,.28); flex-shrink:0; }
.mp-hero-avatar-fb { display:inline-flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.18); color:#fff; font-weight:800; font-size:1.6rem; }

@media (prefers-reduced-motion: reduce) {
  .kpi3d, .dash3d, .kov-st, .dash-st, .kov-panel, .dash-panel, .kov-snap, .dash-snap { animation:none !important; }
}

/* ===========================================================================
   GRAPHICAL PRIMITIVES — animated rings, gauges, spotlights, scroll reveals.
   Motion is triggered by app.js (adds .in / .animate when in view).
   =========================================================================== */
.reveal { opacity:0; transform:translateY(20px); transition:opacity .55s ease-out, transform .55s cubic-bezier(.2,.7,.3,1); }
.reveal.in { opacity:1; transform:none; }
.reveal.d1 { transition-delay:.06s; } .reveal.d2 { transition-delay:.12s; }
.reveal.d3 { transition-delay:.18s; } .reveal.d4 { transition-delay:.24s; }

.kov-ring { position:relative; width:var(--ring-size,150px); height:var(--ring-size,150px); flex:0 0 auto; }
.kov-ring svg { width:100%; height:100%; transform:rotate(-90deg); display:block; }
.kov-ring .kr-track { fill:none; stroke:var(--kov-border); stroke-width:13; }
.kov-ring .kr-fill { fill:none; stroke:var(--ring-color,var(--kov-teal)); stroke-width:13; stroke-linecap:round;
  stroke-dasharray:var(--circ); stroke-dashoffset:var(--circ);
  transition:stroke-dashoffset 1.1s cubic-bezier(.2,.7,.3,1); filter:drop-shadow(0 3px 6px rgba(13,148,136,.28)); }
.kov-ring.animate .kr-fill { stroke-dashoffset:calc(var(--circ) - (var(--circ) * var(--pct) / 100)); }
.kov-ring .kr-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 8px; }
.kov-ring .kr-v { font-size:1.95rem; font-weight:900; color:var(--kov-ink); line-height:1; font-variant-numeric:tabular-nums; }
.kov-ring .kr-k { font-size:.62rem; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:var(--kov-muted); margin-top:.22rem; }

.kov-gauge { margin:.15rem 0; }
.kov-gauge + .kov-gauge { margin-top:.85rem; }
.kov-gauge-top { display:flex; align-items:baseline; justify-content:space-between; gap:.6rem; margin-bottom:.35rem; }
.kov-gauge-k { font-size:.74rem; font-weight:800; color:var(--kov-ink-2); display:inline-flex; align-items:center; gap:.3rem; }
.kov-gauge-v { font-size:.82rem; font-weight:900; color:var(--kov-ink); font-variant-numeric:tabular-nums; }
.kov-gauge-track { height:10px; border-radius:999px; background:var(--kov-border); overflow:hidden; }
.kov-gauge-fill { display:block; height:100%; width:0; border-radius:999px; background:linear-gradient(90deg,var(--kov-blue),var(--kov-teal)); transition:width 1.1s cubic-bezier(.2,.7,.3,1); }
.kov-gauge-fill.g-green { background:linear-gradient(90deg,#22c55e,#15803d); }
.kov-gauge-fill.g-gold  { background:linear-gradient(90deg,var(--kov-gold),var(--kov-gold-2)); }
.kov-gauge-fill.g-red   { background:linear-gradient(90deg,#ef4444,#b91c1c); }
.kov-gauge-fill.g-violet{ background:linear-gradient(90deg,#8b5cf6,#6d28d9); }
.kov-gauge-fill.g-blue  { background:linear-gradient(90deg,#3b82f6,#1d4ed8); }
.kov-gauge-sub { font-size:.72rem; color:var(--kov-muted); margin-top:.35rem; line-height:1.4; }

.kov-spotlight { display:grid; grid-template-columns:auto 1fr; gap:1.5rem; align-items:center;
  background:radial-gradient(circle at 88% -20%, rgba(13,148,136,.10), transparent 46%), linear-gradient(135deg,#f8fbff,#eef5ff);
  border:1px solid #dbe5ef; border-radius:var(--kov-r-lg); padding:1.35rem 1.45rem; margin-bottom:1rem; box-shadow:var(--kov-e1); }
.kov-spotlight.violet { background:radial-gradient(circle at 88% -20%, rgba(139,92,246,.12), transparent 46%), linear-gradient(135deg,#fbfaff,#f3efff); }
.kov-spotlight.gold { background:radial-gradient(circle at 88% -20%, rgba(208,162,69,.16), transparent 46%), linear-gradient(135deg,#fffdf6,#fdf6e6); }
.kov-spotlight-metrics { display:flex; flex-direction:column; gap:.9rem; min-width:0; }
.kov-spotlight-lead { font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--kov-muted); }
.kov-spotlight-h { font-size:1.5rem; font-weight:900; color:var(--kov-ink); line-height:1.05; margin:.1rem 0 .15rem; font-variant-numeric:tabular-nums; }
.kov-spotlight-sub { font-size:.8rem; color:var(--kov-muted); line-height:1.45; }
@media (max-width:640px){ .kov-spotlight { grid-template-columns:1fr; justify-items:center; text-align:center; } }

.acct-finpos { display:grid; grid-template-columns:230px 1fr; gap:1.5rem; align-items:center; }
@media (max-width:640px){ .acct-finpos { grid-template-columns:1fr; } }
.acct-finpos-chart { position:relative; width:100%; max-width:230px; margin:0 auto; }
.acct-finpos-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; pointer-events:none; }
.acct-finpos-center .afc-k { font-size:.6rem; text-transform:uppercase; letter-spacing:.05em; color:var(--kov-faint); font-weight:800; }
.acct-finpos-center .afc-v { font-size:.95rem; font-weight:900; color:var(--kov-ink); font-variant-numeric:tabular-nums; }
.acct-finpos-meta { display:flex; flex-direction:column; gap:.95rem; min-width:0; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity:1 !important; transform:none !important; transition:none !important; }
  .kov-ring .kr-fill { transition:none !important; }
  .kov-gauge-fill { transition:none !important; }
}

/* ===========================================================================
   PERSONAL ACTION CENTER
   =========================================================================== */
.action-center { background:var(--kov-surface); border:1px solid var(--kov-border); border-radius:var(--kov-r-lg);
  box-shadow:var(--kov-e2); overflow:hidden; margin-bottom:1.15rem; animation:dashRise .6s both; }
.ac-bar { display:flex; align-items:center; justify-content:space-between; gap:1.4rem; flex-wrap:wrap;
  padding:1.05rem 1.25rem; border-bottom:1px solid var(--kov-border-2); background:linear-gradient(135deg,#f8fbff,#f4f8fd); }
.action-center.is-clear .ac-bar { background:linear-gradient(135deg,#f0fdf4,#f6fffb); }
.ac-verdict { display:flex; align-items:center; gap:.85rem; min-width:0; }
.ac-verdict-ic { width:48px; height:48px; border-radius:15px; display:flex; align-items:center; justify-content:center;
  font-size:1.5rem; color:#fff; flex-shrink:0; box-shadow:0 8px 18px rgba(15,23,42,.2); background:linear-gradient(135deg,#f59e0b,#b45309); }
.action-center.is-clear .ac-verdict-ic { background:linear-gradient(135deg,#22c55e,#15803d); }
.ac-verdict-k { font-size:.68rem; text-transform:uppercase; letter-spacing:.06em; color:var(--kov-faint); font-weight:800; }
.ac-verdict-v { font-size:1.05rem; font-weight:800; color:var(--kov-ink); line-height:1.2; }
.ac-progress { flex:1 1 240px; max-width:380px; min-width:220px; }
.ac-progress-top { display:flex; align-items:baseline; justify-content:space-between; gap:.6rem; margin-bottom:.4rem; }
.ac-progress-k { font-size:.74rem; font-weight:800; color:var(--kov-ink-2); display:inline-flex; align-items:center; gap:.3rem; }
.ac-progress-k i { color:var(--kov-teal); }
.ac-progress-v { font-size:.82rem; font-weight:900; color:var(--kov-ink); font-variant-numeric:tabular-nums; }
.ac-progress-of { font-weight:700; color:var(--kov-faint); }
.ac-progress-track { height:9px; border-radius:999px; background:var(--kov-border); overflow:hidden; }
.ac-progress-fill { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,var(--kov-blue),var(--kov-teal)); transition:width .9s cubic-bezier(.2,.7,.3,1); }
.ac-progress-fill.full { background:linear-gradient(90deg,#22c55e,#15803d); }
.ac-items { display:flex; flex-direction:column; }
.ac-item { display:flex; align-items:center; gap:.8rem; padding:.85rem 1.1rem; text-decoration:none;
  border-bottom:1px solid var(--kov-border-2); border-left:4px solid transparent; transition:background .14s; }
.ac-item:last-child { border-bottom:none; }
.ac-item:hover { background:var(--kov-surface-2); }
.ac-item:focus-visible { outline:2px solid var(--kov-blue); outline-offset:-2px; background:#eef5ff; }
.ac-item.sev-critical { border-left-color:#dc2626; }
.ac-item.sev-warning { border-left-color:#d97706; }
.ac-item-ic { width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center;
  font-size:1.15rem; color:#fff; flex-shrink:0; box-shadow:0 4px 10px rgba(15,23,42,.16); }
.ac-item.sev-critical .ac-item-ic { background:linear-gradient(135deg,#ef4444,#b91c1c); }
.ac-item.sev-warning .ac-item-ic { background:linear-gradient(135deg,#f59e0b,#b45309); }
.ac-item-body { min-width:0; flex:1; display:flex; flex-direction:column; gap:.1rem; }
.ac-item-title { font-weight:800; font-size:.86rem; color:var(--kov-ink); }
.ac-item-detail { font-size:.74rem; color:var(--kov-muted); line-height:1.3; }
.ac-item-amt { font-weight:900; font-size:.9rem; color:var(--kov-ink); font-variant-numeric:tabular-nums; white-space:nowrap; }
.ac-item-arrow { color:#cbd5e1; flex-shrink:0; font-size:1.05rem; }
.ac-item:hover .ac-item-arrow { color:var(--kov-blue); }
.ac-clear { display:flex; align-items:center; gap:.9rem; padding:1.1rem 1.25rem; }
.ac-clear i { font-size:1.8rem; color:#22c55e; flex-shrink:0; }
.ac-clear-t { font-weight:800; color:var(--kov-ink); font-size:.92rem; }
.ac-clear-s { font-size:.78rem; color:var(--kov-muted); }
@media (max-width:600px){ .ac-bar { gap:.9rem; } .ac-progress { flex-basis:100%; max-width:none; } .ac-item-detail { display:none; } }
@media (prefers-reduced-motion: reduce){ .action-center { animation:none !important; } .ac-progress-fill { transition:none !important; } }

/* ---- Notifications: clickable rows with detail (both portals) ---- */
.notif-link { display:flex; gap:.7rem; align-items:flex-start; padding:.7rem .95rem; text-decoration:none;
  border-bottom:1px solid var(--kov-border-2); transition:background .14s; }
.notif-link:last-child { border-bottom:none; }
.notif-link:hover { background:#eef5ff; }
.notif-link .n-ic { width:38px; height:38px; border-radius:11px; flex-shrink:0; display:flex; align-items:center;
  justify-content:center; color:#fff; font-size:1.1rem; background:linear-gradient(135deg,#2563eb,#1d4ed8); box-shadow:0 4px 10px rgba(15,23,42,.18); }
.notif-link .n-ic.ok { background:linear-gradient(135deg,#22c55e,#15803d); }
.notif-link .n-ic.warn { background:linear-gradient(135deg,#f59e0b,#b45309); }
.notif-link .n-ic.bad { background:linear-gradient(135deg,#ef4444,#b91c1c); }
.notif-link .n-body { min-width:0; flex:1; }
.notif-link .n-t { font-weight:800; font-size:.85rem; color:var(--kov-ink); display:flex; align-items:center; gap:.4rem; }
.notif-link .n-t .n-dot { width:7px; height:7px; border-radius:50%; background:var(--kov-blue); flex-shrink:0; box-shadow:0 0 0 3px rgba(37,99,235,.15); }
.notif-link .n-m { font-size:.78rem; color:var(--kov-muted); margin-top:.12rem; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.notif-link .n-time { font-size:.68rem; color:var(--kov-faint); font-weight:700; margin-top:.25rem; }
.notif-link .n-arrow { align-self:center; color:#cbd5e1; font-size:1.05rem; flex-shrink:0; }
.notif-link:hover .n-arrow { color:var(--kov-blue); }
.notif-empty { padding:1.6rem 1rem; text-align:center; color:var(--kov-faint); font-size:.85rem; }

/* ---- 3D crafted sidebar module icons (admin + member) ---- */
.app-nav .nav-link i { background:linear-gradient(145deg, rgba(255,255,255,.20), rgba(255,255,255,.04)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24), 0 3px 7px rgba(0,0,0,.24);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease; }
.app-nav .nav-link:hover i { transform:translateY(-1px) scale(1.08); box-shadow:inset 0 1px 0 rgba(255,255,255,.32), 0 7px 13px rgba(0,0,0,.32); }
.app-nav .nav-link.active i { background:linear-gradient(145deg,#e8be63,#b68931) !important; color:#1f2d38 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5), 0 6px 14px rgba(208,162,69,.5); }

/* ===========================================================================
   PINNED NOTICES
   =========================================================================== */
.pinned-notices{margin:0 0 1.4rem;}
.pinned-notices-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 .6rem;}
.pinned-notices-title{font-weight:800;letter-spacing:.2px;color:var(--kov-ink);display:inline-flex;align-items:center;gap:.45rem;font-size:.98rem;}
.pinned-notices-title .ph-fill{color:#dc2626;}
.pinned-notices-all{font-size:.82rem;font-weight:700;text-decoration:none;color:var(--kov-ink-2);display:inline-flex;align-items:center;gap:.25rem;}
.pinned-notices-all:hover{color:var(--kov-ink);}
.pinned-notices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.8rem;}
.pinned-card{position:relative;display:flex;gap:.8rem;padding:.85rem .95rem;border-radius:var(--kov-r-md);background:var(--kov-surface);
  border:1px solid var(--kov-border);border-left:5px solid #94a3b8;box-shadow:0 10px 26px -18px rgba(15,23,42,.4);
  transition:transform .18s ease, box-shadow .18s ease;}
.pinned-card:hover{transform:translateY(-2px);box-shadow:0 18px 34px -20px rgba(15,23,42,.5);}
.pinned-card-ic{font-size:1.5rem;line-height:1;margin-top:.15rem;color:var(--kov-ink-2);flex:0 0 auto;}
.pinned-card-body{flex:1 1 auto;min-width:0;}
.pinned-card-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.2rem;}
.pinned-card-title{font-weight:800;color:var(--kov-ink);font-size:.92rem;}
.pinned-card-tag{font-size:.64rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;
  padding:.12rem .45rem;border-radius:999px;background:#f1f5f9;color:var(--kov-muted);white-space:nowrap;}
.pinned-card-msg{font-size:.83rem;color:var(--kov-ink-2);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.pinned-card-actions{display:flex;align-items:center;gap:.6rem;margin-top:.55rem;}
.pinned-card-btn{font-size:.78rem;font-weight:700;text-decoration:none;color:var(--kov-blue-2);display:inline-flex;align-items:center;gap:.25rem;}
.pinned-card-btn:hover{text-decoration:underline;}
.pinned-card-dismiss{font-size:.76rem;font-weight:700;background:none;border:none;color:var(--kov-faint);cursor:pointer;padding:0;display:inline-flex;align-items:center;gap:.2rem;}
.pinned-card-dismiss:hover{color:var(--kov-ink-2);}
.pinned-card.sev-critical{border-left-color:#dc2626;background:linear-gradient(180deg,#fef2f2 0%,#fff 38%);}
.pinned-card.sev-critical .pinned-card-ic{color:#dc2626;}
.pinned-card.sev-warning{border-left-color:#d97706;background:linear-gradient(180deg,#fffbeb 0%,#fff 38%);}
.pinned-card.sev-warning .pinned-card-ic{color:#d97706;}
.pinned-card.sev-success{border-left-color:#16a34a;background:linear-gradient(180deg,#f0fdf4 0%,#fff 38%);}
.pinned-card.sev-success .pinned-card-ic{color:#16a34a;}
.pinned-card.sev-info{border-left-color:#2563eb;background:linear-gradient(180deg,#eff6ff 0%,#fff 38%);}
.pinned-card.sev-info .pinned-card-ic{color:#2563eb;}

/* ===========================================================================
   NOTIFICATION BELL — glowing top-right indicator
   =========================================================================== */
.notif-bell-wrap{position:relative;display:inline-flex;}
.notif-bell{position:relative;width:44px;height:44px;border-radius:14px;border:1px solid #d8cdbb;
  background:linear-gradient(145deg,#ffffff 0%,#ece3d4 100%);
  color:#3b4a59;font-size:1.32rem;display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 0 -2px 4px rgba(150,120,78,.14), 0 6px 14px rgba(15,23,42,.16);
  transition:transform .15s ease, box-shadow .15s ease, color .15s ease;}
.notif-bell i{filter:drop-shadow(0 2px 2px rgba(15,23,42,.28));}
.notif-bell:hover{transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 0 -2px 4px rgba(150,120,78,.14), 0 12px 22px -8px rgba(15,23,42,.42);color:#0f172a;}
.notif-bell:active{transform:translateY(0);box-shadow:inset 0 2px 5px rgba(150,120,78,.28), 0 3px 8px rgba(15,23,42,.18);}
.notif-bell.has-unread{color:#dc2626;border-color:#fecaca;animation:bellGlow 2s ease-in-out infinite;}
.notif-bell.has-unread i{animation:bellSwing 2.6s ease-in-out infinite;transform-origin:top center;}
.notif-bell-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;
  background:#dc2626;color:#fff;font-size:.66rem;font-weight:800;line-height:18px;text-align:center;box-shadow:0 0 0 2px #fff;animation:badgePulse 1.8s ease-in-out infinite;}
@keyframes bellGlow{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.0);}50%{box-shadow:0 0 14px 2px rgba(220,38,38,.45);}}
@keyframes badgePulse{0%,100%{transform:scale(1);}50%{transform:scale(1.12);}}
@keyframes bellSwing{0%,88%,100%{transform:rotate(0);}90%{transform:rotate(12deg);}94%{transform:rotate(-10deg);}97%{transform:rotate(6deg);}}
@media (prefers-reduced-motion: reduce){ .notif-bell.has-unread,.notif-bell.has-unread i,.notif-bell-badge{animation:none;} }
.notif-bell-panel{position:absolute;top:calc(100% + 10px);right:0;width:340px;max-width:88vw;background:#fff;
  border:1px solid var(--kov-border);border-radius:var(--kov-r-md);box-shadow:0 24px 50px -20px rgba(15,23,42,.45);
  opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .16s ease, transform .16s ease;z-index:1080;overflow:hidden;}
.notif-bell-panel.open{opacity:1;visibility:visible;transform:translateY(0);}
.notif-bell-head{display:flex;align-items:center;justify-content:space-between;padding:.7rem .9rem;border-bottom:1px solid var(--kov-border-2);font-weight:800;color:var(--kov-ink);font-size:.9rem;}
.notif-bell-head .ph{color:#dc2626;}
.notif-bell-count{font-size:.72rem;font-weight:700;color:var(--kov-muted);}
.notif-bell-body{max-height:340px;overflow-y:auto;}
.notif-bell-item{display:flex;gap:.5rem;align-items:flex-start;padding:.6rem .9rem;border-bottom:1px solid var(--kov-border-2);
  text-decoration:none;color:inherit;border-left:4px solid #94a3b8;transition:background .12s ease;}
.notif-bell-item:last-child{border-bottom:none;}
.notif-bell-item:hover{background:var(--kov-surface-2);}
.notif-bell-item.sev-critical{border-left-color:#dc2626;}
.notif-bell-item.sev-warning{border-left-color:#d97706;}
.notif-bell-item.sev-success{border-left-color:#16a34a;}
.notif-bell-item.sev-info{border-left-color:#2563eb;}
.notif-bell-pin{color:#dc2626;font-size:.78rem;margin-top:.2rem;flex:0 0 auto;}
.notif-bell-item-main{min-width:0;flex:1 1 auto;display:flex;flex-direction:column;gap:.1rem;}
.notif-bell-item-title{font-weight:700;font-size:.84rem;color:var(--kov-ink);}
.notif-bell-item-msg{font-size:.76rem;color:var(--kov-muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.notif-bell-empty{padding:1.4rem .9rem;text-align:center;color:var(--kov-faint);font-size:.84rem;}
.notif-bell-empty .ph{color:#16a34a;}
.notif-bell-foot{display:block;text-align:center;padding:.6rem;font-size:.8rem;font-weight:700;color:var(--kov-blue-2);
  text-decoration:none;border-top:1px solid var(--kov-border-2);background:var(--kov-surface-2);}
.notif-bell-foot:hover{background:var(--kov-border-2);}
