/* ═══════════════════════════════════════════════════
   OrbiChain Distri — components.css
   Cards · KPIs · Tables · Charts · MDD · Alerts
   Upload/mapping styles → upload.css (Session 2)
   ═══════════════════════════════════════════════════ */

/* ── CARD ── */
.card{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;margin-bottom:12px}
.card:last-child{margin-bottom:0}
.card-hd{padding:11px 13px;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between}
.card-title{font-size:.76rem;font-weight:700;color:var(--ink)}
.card-sub{font-size:.61rem;color:var(--mu);margin-top:1px}
.card-bd{padding:13px}

/* ── KPI GRID ── */
.kg{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:12px}
.kc{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);padding:13px 13px 11px;position:relative;overflow:hidden;transition:all .2s;cursor:default}
.kc:hover{border-color:var(--bdr2);box-shadow:0 2px 8px rgba(0,0,0,.07);transform:translateY(-1px)}
.kc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;opacity:0;transition:opacity .2s}
.kc:hover::before{opacity:1}
.kc1::before{background:var(--ac)}.kc2::before{background:var(--ok)}
.kc3::before{background:var(--wn)}.kc4::before{background:var(--dg)}
.kc5::before{background:#8b5cf6}
.kc-lbl{font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--mu);margin-bottom:7px}
.kc-val{font-family:'Sora',sans-serif;font-size:1.45rem;font-weight:700;letter-spacing:-.5px;line-height:1;margin-bottom:4px}
.kc-dl{font-size:.62rem;font-weight:600}
@media(max-width:860px){.kg{grid-template-columns:repeat(2,1fr)}}

/* ── PROGRESS BAR ── */
.pgc{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);padding:14px;margin-bottom:12px}
.pgc-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.pgc-ti{font-size:.76rem;font-weight:700;color:var(--ink)}
.pgc-pct{font-family:'Sora',sans-serif;font-size:.88rem;font-weight:700;color:var(--ac)}
.pgtrack{height:5px;background:var(--surf);border-radius:99px;overflow:hidden;margin-bottom:7px}
.pgfill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--ac),#14b8a6);transition:width .8s ease}
.pgmeta{display:flex;justify-content:space-between}
.pm{text-align:center}
.pmv{font-family:'DM Mono',monospace;font-size:.7rem;font-weight:500;color:var(--ink2)}
.pml{font-size:.57rem;color:var(--mu);margin-top:1px}

/* ── TABLE ── */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse}
table th{padding:7px 11px;font-size:.57rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--mu);text-align:left;border-bottom:1px solid var(--bdr);background:var(--surf);white-space:nowrap}
table td{padding:7px 11px;font-size:.73rem;color:var(--ink2);border-bottom:1px solid var(--bdr);white-space:nowrap}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(250,248,245,.8)}
td.b{font-weight:600;color:var(--ink)}
td.td-ok{color:var(--ok);font-weight:600}
td.td-ng{color:var(--dg);font-weight:600}
td.td-wn{color:var(--wn);font-weight:600}
td.td-ac{color:var(--ac);font-weight:700;font-family:'DM Mono',monospace}

/* ── MDD TRACKER ── */
.asm-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:12px}
.asm-c{background:#fff;border:1px solid var(--bdr);border-radius:var(--r);padding:9px 11px;cursor:pointer;transition:all .15s}
.asm-c:hover{border-color:var(--ac)}.asm-c.act{border-color:var(--ac);background:var(--acs)}
.asm-nm{font-size:.72rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}
.asm-ct{font-size:.6rem;color:var(--mu);margin-bottom:5px}
.asm-val{font-family:'Sora',sans-serif;font-size:1.1rem;font-weight:700}
.asm-vl{font-size:.58rem;color:var(--mu);margin-top:1px}
.asm-prog{height:3px;background:var(--surf2);border-radius:99px;overflow:hidden;margin-top:5px}
.asm-pf{height:100%;border-radius:99px;transition:width .6s ease}

.mdd-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:12px}
.mdd-card{border:1.5px solid var(--bdr);border-radius:var(--r);padding:12px;cursor:pointer;transition:all .2s;position:relative;overflow:hidden}
.mdd-card:hover{border-color:var(--ac);box-shadow:0 2px 8px rgba(13,115,119,.12);transform:translateY(-1px)}
.mdd-card.sel{border-color:var(--ac);background:var(--acs)}
.mdd-card::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%}
.mdd-c-ok::before{background:var(--ok)}.mdd-c-wn::before{background:var(--wn)}.mdd-c-dg::before{background:var(--dg)}
.mdd-nm{font-size:.8rem;font-weight:700;color:var(--ink);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdd-code{font-size:.62rem;color:var(--mu);margin-bottom:8px}
.mdd-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:7px}
.mdd-m{background:var(--surf);border-radius:5px;padding:6px;text-align:center}
.mdd-mv{font-family:'Sora',sans-serif;font-size:.92rem;font-weight:700}
.mdd-ml{font-size:.57rem;color:var(--mu);margin-top:1px}
.mdd-foot{display:flex;align-items:center;justify-content:space-between;gap:6px}
.mdd-pt{flex:1}
.mdd-pt-lbl{display:flex;justify-content:space-between;font-size:.59rem;color:var(--mu);margin-bottom:2px}
.mdd-pt-track{height:4px;background:var(--surf2);border-radius:99px;overflow:hidden}
.mdd-pt-fill{height:100%;border-radius:99px;transition:width .6s ease}

.drill-panel{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;margin-bottom:12px}
.dp-hd{padding:12px 14px;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between;background:var(--acs)}
.dp-tabs{display:flex;gap:1px;padding:0 13px;border-bottom:1px solid var(--bdr);background:var(--surf);overflow-x:auto}
.dp-tab{padding:7px 12px;font-size:.69rem;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;color:var(--mu);transition:all .15s;white-space:nowrap}
.dp-tab.act{color:var(--ac);border-bottom-color:var(--ac)}

/* ── REPORT TABS ── */
.rtabs{display:flex;gap:2px;padding:0 13px;border-bottom:1px solid var(--bdr);background:var(--surf)}
.rtab{padding:8px 12px;font-size:.69rem;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;color:var(--mu);transition:all .15s;white-space:nowrap}
.rtab.act{color:var(--ac);border-bottom-color:var(--ac)}

/* ── MINI CHART ── */
.cbars{display:flex;align-items:flex-end;gap:4px;height:60px}
.cbar{flex:1;border-radius:2px 2px 0 0;cursor:pointer;position:relative;transition:opacity .15s}
.cbar:hover{opacity:.8}
.cbar-tt{position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;font-size:.57rem;padding:2px 5px;border-radius:3px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;z-index:10}
.cbar:hover .cbar-tt{opacity:1}
.clbls{display:flex;justify-content:space-between;margin-top:3px;font-size:.57rem;color:var(--mu);font-family:'DM Mono',monospace}

/* ── PRICE BAND BARS ── */
.pbbars{padding:11px 13px;display:flex;flex-direction:column;gap:6px}
.pbrow{display:flex;align-items:center;gap:7px}
.pblbl{font-size:.63rem;color:var(--ink2);font-weight:500;width:86px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbtrack{flex:1;height:14px;background:var(--surf);border-radius:3px;overflow:hidden}
.pbfill{height:100%;border-radius:3px;transition:width .6s ease}
.pbval{font-family:'DM Mono',monospace;font-size:.63rem;color:var(--ink2);min-width:22px;text-align:right}

/* ── REPORTS DRILL-DOWN LINKS ── */
.rdrill-lnk{cursor:pointer;border-bottom:1px dashed transparent;transition:color .12s,border-color .12s}
.rdrill-lnk:hover{color:var(--ac);border-bottom-color:var(--ac)}

/* ── FAMILY GRID ── */
.famg{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:11px}
.famc{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:9px;text-align:center}
.famnm{font-size:.67rem;font-weight:600;color:var(--ink);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.famv{font-family:'Sora',sans-serif;font-size:1rem;font-weight:700;color:var(--ac)}
.faml{font-size:.57rem;color:var(--mu);margin-top:1px}

/* ── WOD GRID ── */
.wodg{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:11px}
.wodi{text-align:center;padding:8px 5px;border-radius:var(--r);background:var(--surf);border:1px solid var(--bdr)}
.wodv{font-family:'Sora',sans-serif;font-size:1.1rem;font-weight:700}
.wodl{font-size:.57rem;color:var(--mu);margin-top:2px;font-weight:500}

/* ── ALERTS FEED ── */
.afeed{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden}
.aitem{display:flex;align-items:flex-start;gap:7px;padding:9px 11px;border-bottom:1px solid var(--bdr);transition:background .15s}
.aitem:last-child{border-bottom:none}
.aitem:hover{background:var(--surf);cursor:pointer}
.adot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:4px}
.adot-r{background:var(--dg)}.adot-y{background:var(--wn)}
.adot-g{background:var(--ok)}.adot-b{background:var(--ac)}
.atxt{font-size:.7rem;font-weight:500;color:var(--ink2);line-height:1.4}
.atxt strong{color:var(--ink);font-weight:700}
.atm{font-size:.58rem;color:var(--mu);margin-top:2px;font-family:'DM Mono',monospace}

/* ── MAPPING SOURCE TABS ── */
.mtabs{display:flex;background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:3px;gap:2px;margin-bottom:12px}
.mtab{padding:5px 13px;border-radius:5px;font-size:.7rem;font-weight:600;cursor:pointer;transition:all .15s;color:var(--mu);border:none;background:none}
.mtab.act{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}

/* ── SUCCESS / ERROR PANELS ── */
.success-panel{background:rgba(42,125,79,.05);border:1px solid rgba(42,125,79,.2);border-radius:var(--rl);padding:16px;margin-bottom:12px}
.error-panel{background:rgba(192,57,43,.05);border:1px solid rgba(192,57,43,.2);border-radius:var(--rl);padding:16px;margin-bottom:12px}

/* ── SETTINGS PAGE ── */
.sett-tabs{display:flex;background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:3px;gap:2px;margin-bottom:14px}
.sett-tab{padding:6px 14px;border-radius:5px;font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s;color:var(--mu);border:none;background:none;white-space:nowrap}
.sett-tab.act{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.09)}
.sett-tab:hover:not(.act){color:var(--ink)}
.sett-panel{display:none}
.sett-panel.active{display:block}
.sett-label{font-size:.63rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--mu);margin-bottom:5px}

/* Admin banner */
.admin-banner{background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);padding:14px 16px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.admin-conn-status{display:flex;align-items:center;gap:7px;font-size:.72rem;font-weight:600;color:var(--mu)}
.conn-dot{width:9px;height:9px;border-radius:50%;background:#e5e7eb;flex-shrink:0;transition:background .3s}
.conn-dot.pulse{animation:connPulse 2s infinite}
@keyframes connPulse{0%,100%{opacity:1}50%{opacity:.5}}
.admin-input:focus{border-color:var(--ac);outline:none;box-shadow:0 0 0 2px rgba(13,115,119,.08)}

/* ── UPLOAD WIZARD ── */
.wiz-source-card:hover{border-color:var(--ac)!important;background:var(--acs)!important;transform:translateY(-2px);box-shadow:0 4px 12px rgba(13,115,119,.1);}
.wiz-mode-card:hover,.wiz-type-card:hover,.wiz-ft-card:hover{border-color:var(--ac)!important;background:var(--acs)!important;}
.wiz-progress{margin-bottom:4px;}

/* ── COLUMN MAPPER (Step 4) ── */
.col-map-hd{display:grid;grid-template-columns:34px 1fr 1.4fr 1fr;gap:10px;padding:7px 13px;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--mu);background:var(--surf);border-bottom:1px solid var(--bdr)}
.col-map-row{display:grid;grid-template-columns:34px 1fr 1.4fr 1fr;gap:10px;align-items:center;padding:7px 13px;border-bottom:1px solid var(--bdr);transition:background .15s}
.col-map-row:last-child{border-bottom:none}
.col-map-row:hover{background:rgba(13,115,119,.03)}
.csel{padding:5px 8px;border:1px solid var(--bdr2);border-radius:6px;font-size:.71rem;font-family:'DM Sans',sans-serif;background:#fff;color:var(--ink2);transition:border-color .15s,box-shadow .15s;cursor:pointer}
.csel:hover{border-color:var(--ac)}
.csel.mp{border-color:var(--ok);background:rgba(42,125,79,.05)}

/* Stock pages: themed filter bar + always-open stock-type (segment) groups */
.stock-fbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 13px;border-bottom:1px solid var(--bdr)}
.stock-cat-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.stock-fbar select,.stock-fbar input{padding:6px 10px;border:1px solid var(--bdr2);border-radius:6px;font-size:.72rem;font-family:'DM Sans',sans-serif;background:#fff;color:var(--ink2);transition:border-color .15s,box-shadow .15s}
.stock-fbar select{cursor:pointer}
.stock-fbar select:hover,.stock-fbar input:hover{border-color:var(--ac)}
.stock-fbar select:focus,.stock-fbar input:focus{border-color:var(--ac);box-shadow:0 0 0 3px rgba(13,115,119,.1);outline:none}
.stock-fbar input{min-width:180px}
.stock-cat-hd{display:flex;justify-content:space-between;align-items:center;padding:9px 13px;background:var(--surf);border-top:1px solid var(--bdr);border-bottom:1px solid var(--bdr)}
.stock-cat-name{font-size:.76rem;font-weight:700;color:var(--ac)}
.stock-cat-stats{font-size:.68rem;color:var(--mu)}

/* Filter chip row */
.filter-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:99px;border:1.5px solid var(--bdr2);background:#fff;font-size:.71rem;font-weight:600;color:var(--ink2);cursor:pointer;transition:all .18s cubic-bezier(.22,.9,.32,1)}
.filter-chip:hover{border-color:var(--ac);color:var(--ac);transform:translateY(-1px);box-shadow:0 2px 8px rgba(13,115,119,.12)}
.filter-chip.on{background:linear-gradient(135deg,var(--ac),#14a8ac);border-color:var(--ac);color:#fff;box-shadow:0 2px 8px rgba(13,115,119,.2)}
.filter-chip .fc-count{background:rgba(255,255,255,.25);border-radius:99px;padding:0 6px;font-size:.6rem;font-weight:700}
.filter-chip.on .fc-count{background:rgba(255,255,255,.3)}
.filter-chip:not(.on) .fc-dot{width:6px;height:6px;border-radius:50%;background:var(--bdr2)}

/* Filter panel (Power Query) */
.fp-wrap{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--rl);padding:14px;overflow:hidden;animation:fpSlide .22s cubic-bezier(.22,.9,.32,1)}
@keyframes fpSlide{from{opacity:0;max-height:0;transform:translateY(-6px)}to{opacity:1;max-height:600px;transform:translateY(0)}}
.fp-search{width:100%;padding:7px 10px 7px 30px;border:1px solid var(--bdr2);border-radius:8px;font-size:.72rem;font-family:'DM Sans',sans-serif;background:#fff url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%238a8a9a" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>') no-repeat 9px center/13px;transition:border-color .15s,box-shadow .15s}
.fp-search:focus{border-color:var(--ac)}
.fp-list{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;margin-top:9px;border:1px solid var(--bdr);border-radius:8px;background:#fff}
.fp-item{display:flex;align-items:center;gap:8px;padding:6px 9px;cursor:pointer;font-size:.72rem;color:var(--ink2);transition:background .12s;border-radius:5px}
.fp-item:hover{background:var(--acs)}
.fp-item input{accent-color:var(--ac);width:14px;height:14px;cursor:pointer}
.fp-item.checked{color:var(--ink);font-weight:600}
.fp-selall{margin-top:9px;font-weight:700;border-bottom:1px solid var(--bdr);border-radius:0;padding-bottom:8px}
.fp-empty{padding:16px;text-align:center;font-size:.71rem;color:var(--mu)}

/* ── HEADER-ROW PICKER (Configure panel, Step 3) ── */
.sheet-item{display:flex;padding:9px 11px;border:1.5px solid var(--bdr2);border-radius:8px;background:#fff;transition:all .15s cubic-bezier(.22,.9,.32,1)}
.sheet-item:hover{border-color:var(--ac);background:var(--acs);transform:translateX(2px)}
.sheet-item.sel{border-color:var(--ac);background:var(--acs);box-shadow:0 2px 8px rgba(13,115,119,.12)}
.sheet-chk{width:16px;height:16px;border-radius:50%;border:2px solid var(--bdr2);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;transition:all .15s}
.sheet-item.sel .sheet-chk{background:var(--ac);border-color:var(--ac)}

.dotc{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}
.codechip{font-family:'DM Mono',monospace;font-size:.72rem;background:var(--surf);padding:2px 6px;border-radius:3px}

/* ── EXCEL-STYLE DATA GRID (Uploaded Data manager) ── */
.dm-grid thead th{position:sticky;top:0;background:var(--surf);z-index:2}
.dm-th{cursor:pointer;user-select:none;white-space:nowrap}
.dm-th:hover{background:var(--acs)}
.dm-th-lbl{display:inline-block}
.dm-filt-btn{border:none;background:none;color:var(--mu);cursor:pointer;font-size:.7rem;padding:0 2px;margin-left:2px;border-radius:3px}
.dm-filt-btn:hover{color:var(--ac);background:var(--acs2)}
.dm-filt-btn.on{color:var(--ac);font-weight:700}
.dm-grid tbody tr.dm-row-sel td{background:var(--acs)}
.dm-grid td input[type=checkbox],.dm-grid th input[type=checkbox]{accent-color:var(--ac);cursor:pointer}
.dm-grid tbody tr:nth-child(even) td{background:rgba(0,0,0,.012)}
.dm-grid tbody tr.dm-row-sel:nth-child(even) td{background:var(--acs)}

/* ── RIVAL MODE (Phase 8 — full-screen "app inside the app", deliberately
   NOT the normal light OrbiChain chrome, so it reads as a distinct tool) ── */
.rival-overlay{position:fixed;inset:0;background:#0e1116;z-index:9200;display:flex;flex-direction:column;animation:viewIn .2s ease;color:#e8ecf1}
.rival-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 18px;background:linear-gradient(135deg,#1a1f29,#241417);border-bottom:2px solid #c0392b;flex-shrink:0;flex-wrap:wrap}
.rival-brand{font-family:'Sora',sans-serif;font-size:.92rem;font-weight:800;letter-spacing:.03em;color:#fff;display:flex;align-items:center;gap:8px}
.rival-brand .rival-sub{font-family:'DM Sans',sans-serif;font-size:.65rem;font-weight:500;color:#9aa4b2;letter-spacing:0}
.rival-tabs{display:flex;gap:4px;flex-wrap:wrap}
.rival-tab{background:transparent;border:1px solid rgba(255,255,255,.12);color:#b8c0cc;font-size:.7rem;font-weight:600;padding:7px 13px;border-radius:99px;cursor:pointer;transition:all .15s}
.rival-tab:hover{border-color:#c0392b;color:#fff}
.rival-tab.act{background:#c0392b;border-color:#c0392b;color:#fff}
.rival-close{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);color:#e8ecf1;font-size:.72rem;font-weight:600;padding:7px 14px;border-radius:var(--r);cursor:pointer}
.rival-close:hover{background:rgba(192,57,43,.25);border-color:#c0392b}
.rival-body{flex:1;overflow-y:auto;padding:16px 20px;background:#f4f5f7}
.rival-body .ph,.rival-body .card{background:#fff}

/* ── EXCEL VIEW (full-screen spreadsheet overlay) ── */
/* left:var(--sw) (not inset:0) keeps the sidebar outside the overlay, so
   sidebar nav always stays clickable even while a detail overlay is open —
   otherwise a stuck/forgotten overlay silently eats every sidebar click. */
.xv-overlay{position:fixed;top:0;right:0;bottom:0;left:var(--sw);background:var(--base);z-index:900;display:flex;flex-direction:column;animation:viewIn .18s ease}
.xv-bar{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;border-bottom:1px solid var(--bdr);background:#fff;flex-shrink:0}
.xv-title{font-family:'Sora',sans-serif;font-size:.86rem;font-weight:700;color:var(--ink)}
.xv-sub{font-family:'DM Sans',sans-serif;font-size:.68rem;font-weight:400;color:var(--mu)}
.xv-tools{display:flex;gap:6px}
.xv-body{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:10px 14px}
.xv-scroll{flex:1;overflow:auto;position:relative;border:1px solid var(--bdr);border-radius:var(--r);background:#fff}
.xv-grid{width:100%;border-collapse:collapse;font-size:.71rem;table-layout:fixed}
.xv-grid th,.xv-grid td{border:1px solid var(--bdr);padding:0 8px;height:27px;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xv-grid thead th{position:sticky;top:0;z-index:2;background:var(--surf)}
.xv-grid thead tr:first-child th{top:0}
.xv-grid thead tr:last-child th{top:27px}
.xv-letters th{background:var(--surf2);color:var(--mu);font-size:.6rem;font-weight:700;text-align:center}
.xv-corner{cursor:pointer;user-select:none}
.xv-corner:hover{background:var(--acs2)}
.xv-rownum{background:var(--surf2);color:var(--mu);text-align:center;font-family:'DM Mono',monospace;font-size:.62rem;width:36px}
.xv-th{cursor:pointer;user-select:none;background:var(--surf)}
.xv-th:hover{background:var(--acs)}
.xv-colhdr{cursor:pointer;user-select:none}
.xv-colhdr:hover{background:var(--acs2)}
.xv-rownum[data-rn]{cursor:pointer;user-select:none}
.xv-rownum[data-rn]:hover{background:var(--acs2)}
.xv-cell{cursor:cell}
.xv-cell:hover{outline:1.5px solid var(--ac);outline-offset:-1px;background:var(--acs)}
.xv-col-selected{background:var(--acs2)!important}
.xv-row-selected td{background:var(--acs)!important}
.xv-row-selected .xv-rownum{background:var(--ac)!important;color:#fff!important;font-weight:700}
.xv-cell-active{outline:2px solid var(--ac)!important;outline-offset:-2px;background:#fff!important;box-shadow:0 0 0 1px var(--ac)}
.xv-inp{width:100%;border:1.5px solid var(--ac);border-radius:3px;padding:2px 4px;font-size:.71rem;font-family:'DM Sans',sans-serif;background:#fff}
.xv-footer{display:flex;align-items:center;gap:10px;padding:8px 2px;font-size:.68rem;color:var(--ink2);flex-shrink:0;font-family:'DM Mono',monospace}
.xv-footer b{color:var(--ac);font-family:'DM Sans',sans-serif;margin-right:3px}
.xv-stat-sep{color:var(--bdr2)}

/* Pivot table config bar */
.xv-pivot-cfg{display:flex;gap:14px;flex-wrap:wrap;align-items:center;padding:10px 0;border-bottom:1px solid var(--bdr);margin-bottom:10px;flex-shrink:0}
.xv-pivot-cfg label{display:flex;flex-direction:column;gap:3px;font-size:.63rem;font-weight:700;color:var(--mu);text-transform:uppercase;letter-spacing:.4px}
.xv-pivot-cfg select{padding:4px 7px;border:1px solid var(--bdr2);border-radius:6px;font-size:.72rem;font-family:'DM Sans',sans-serif;background:#fff;min-width:130px}
