*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#080a0d;--bg2:#0e1117;--bg3:#151921;--bg4:#1c2330;
  --border:rgba(255,255,255,0.06);--border2:rgba(255,255,255,0.12);--border3:rgba(255,255,255,0.2);
  --text:#dde2ed;--text2:#7d8899;--text3:#3d4a5c;
  --accent:#00e5a0;--accent2:#3d9eff;--accent3:#ff6b35;
  --danger:#ff4545;--warning:#ffaa00;--success:#00e5a0;--purple:#a78bfa;
  --font:'Syne',sans-serif;--mono:'JetBrains Mono',monospace;
  --r:6px;--rl:10px;
}
body.theme-light{
  --bg:#f4f5f7;--bg2:#ffffff;--bg3:#edf0f4;--bg4:#e2e6ec;
  --border:rgba(0,0,0,0.08);--border2:rgba(0,0,0,0.14);--border3:rgba(0,0,0,0.22);
  --text:#1a1d24;--text2:#5a6175;--text3:#9aa0af;
  --accent:#00966a;--accent2:#1a65c8;--accent3:#d44f10;
  --danger:#c0392b;--warning:#b36a00;--success:#00966a;--purple:#6d40c8;
}
body.theme-slate{
  --bg:#0d1b2a;--bg2:#112236;--bg3:#162d47;--bg4:#1d3a5a;
  --border:rgba(255,255,255,0.07);--border2:rgba(255,255,255,0.13);--border3:rgba(255,255,255,0.22);
  --text:#c8d8e8;--text2:#6a8aaa;--text3:#344f68;
  --accent:#38c9f0;--accent2:#7b9fff;--accent3:#ff8c42;
  --danger:#ff5252;--warning:#ffc947;--success:#38c9f0;--purple:#b39ddb;
}

/* ── THEME SWITCHER ── */
.theme-bar{display:flex;align-items:center;gap:6px;margin-left:6px}
.theme-bar label{font-size:9px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.6px;margin-right:2px}
.theme-btn{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all .15s;flex-shrink:0;outline:none;padding:0}
.theme-btn:hover{transform:scale(1.15)}
.theme-btn.active{border-color:var(--accent)}
.theme-btn-dark{background:radial-gradient(circle at 35% 35%,#1c2330,#080a0d)}
.theme-btn-light{background:radial-gradient(circle at 35% 35%,#ffffff,#d0d5de)}
.theme-btn-slate{background:radial-gradient(circle at 35% 35%,#1d3a5a,#0d1b2a)}
body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;font-size:13px;line-height:1.5;overflow-x:hidden}

/* ── HEADER ── */
.hdr{background:var(--bg2);border-bottom:1px solid var(--border);padding:0 24px;height:52px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:200}
.hdr-brand{display:flex;align-items:center;gap:10px}
.hdr-logo{width:30px;height:30px;background:linear-gradient(135deg,var(--accent),var(--accent2));border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:15px}
.hdr-title{font-size:14px;font-weight:700;letter-spacing:.5px}
.hdr-sub{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:1px}
.hdr-right{display:flex;align-items:center;gap:10px}
.live-pill{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--accent);font-family:var(--mono);background:rgba(0,229,160,.08);border:1px solid rgba(0,229,160,.2);padding:3px 9px;border-radius:100px}
.live-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);animation:blink 2s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}

/* ── LAYOUT ── */
.app{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 52px)}

/* ── SIDEBAR ── */
.sidebar{background:var(--bg2);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;gap:4px}
.sidebar-section{font-size:9px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:1px;padding:8px 8px 4px}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--r);cursor:pointer;color:var(--text2);font-size:12px;font-weight:500;border:none;background:none;width:100%;text-align:left;transition:all .15s}
.nav-item:hover{background:var(--bg3);color:var(--text)}
.nav-item.active{background:rgba(0,229,160,.1);color:var(--accent);border:1px solid rgba(0,229,160,.15)}
.nav-item .icon{font-size:14px;width:18px;text-align:center}
.nav-item .badge-count{margin-left:auto;font-family:var(--mono);font-size:10px;background:var(--bg4);padding:1px 6px;border-radius:100px;color:var(--text2)}
.nav-item.active .badge-count{background:rgba(0,229,160,.15);color:var(--accent)}
.nav-divider{height:1px;background:var(--border);margin:8px 0}

.db-status{margin-top:auto;background:var(--bg3);border-radius:var(--r);padding:10px;border:1px solid var(--border)}
.db-status-title{font-size:9px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.8px;margin-bottom:8px}
.db-row{display:flex;justify-content:space-between;font-size:11px;color:var(--text2);margin-bottom:4px}
.db-row .val{font-family:var(--mono);color:var(--text)}
.btn-clear{width:100%;margin-top:8px;font-size:11px;padding:5px;border-radius:var(--r);border:1px solid rgba(255,69,69,.3);background:rgba(255,69,69,.07);color:var(--danger);cursor:pointer;font-family:var(--font);transition:all .15s}
.btn-clear:hover{background:rgba(255,69,69,.15)}

/* ── MAIN ── */
.main{overflow-y:auto;padding:20px 24px}

/* ── VIEWS ── */
.view{display:none}
.view.active{display:block}

/* ── UPLOAD ── */
.upload-zone{border:1.5px dashed var(--border2);border-radius:var(--rl);padding:32px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg2);margin-bottom:16px}
.upload-zone:hover,.upload-zone.drag{border-color:var(--accent);background:rgba(0,229,160,.04)}
.upload-zone.done{border-color:rgba(0,229,160,.4);border-style:solid;background:rgba(0,229,160,.04)}
#file-input{display:none}
.upload-icon{font-size:32px;margin-bottom:10px}
.upload-title{font-size:16px;font-weight:600;margin-bottom:4px}
.upload-sub{font-size:11px;color:var(--text3);margin-bottom:14px}

.mapper{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--rl);padding:16px 18px;margin-bottom:16px;display:none}
.mapper h3{font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:12px}
.mapper-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.mf label{font-size:10px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:3px}
.mf select{width:100%;background:var(--bg3);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 9px;border-radius:var(--r);outline:none;font-family:var(--font)}
.mf select:focus{border-color:var(--accent)}
.raw-prev{background:var(--bg3);border-radius:var(--r);padding:8px 10px;font-family:var(--mono);font-size:10px;color:var(--text3);overflow-x:auto;max-height:90px;white-space:pre;margin-top:10px}

.batch-list{display:flex;flex-direction:column;gap:8px}
.batch-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;display:flex;align-items:center;gap:12px}
.batch-item .bi-icon{font-size:18px}
.batch-item .bi-info{flex:1}
.batch-item .bi-name{font-weight:600;font-size:12px}
.batch-item .bi-meta{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:2px}
.batch-item .bi-remove{background:none;border:none;color:var(--text3);cursor:pointer;font-size:14px;padding:4px;border-radius:var(--r);transition:color .15s}
.batch-item .bi-remove:hover{color:var(--danger)}

/* ── METRICS ── */
.metrics-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:20px}
.metric{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);padding:14px 14px 12px}
.metric-label{font-size:9px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px}
.metric-value{font-size:22px;font-weight:700;font-family:var(--mono);color:var(--text)}
.metric-value.d{color:var(--danger)}
.metric-value.w{color:var(--warning)}
.metric-value.s{color:var(--success)}
.metric-value.p{color:var(--purple)}
.metric-sub{font-size:10px;color:var(--text3);margin-top:2px}

/* ── SCENARIO TABS ── */
.scenario-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.s-tab{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:100px;border:1px solid var(--border2);background:var(--bg2);color:var(--text2);cursor:pointer;font-size:11px;font-weight:500;transition:all .15s;white-space:nowrap}
.s-tab:hover{border-color:var(--border3);color:var(--text)}
.s-tab.active{border-color:var(--accent);background:rgba(0,229,160,.1);color:var(--accent)}
.s-tab.active.danger{border-color:var(--danger);background:rgba(255,69,69,.1);color:var(--danger)}
.s-tab.active.warning{border-color:var(--warning);background:rgba(255,170,0,.1);color:var(--warning)}
.s-tab.active.purple{border-color:var(--purple);background:rgba(167,139,250,.1);color:var(--purple)}
.s-tab.active.accent2{border-color:var(--accent2);background:rgba(61,158,255,.1);color:var(--accent2)}
.s-tab .s-count{font-family:var(--mono);font-size:10px;background:var(--bg4);padding:1px 6px;border-radius:100px}

/* ── CONTROLS ── */
.controls{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
.controls input,.controls select{background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 10px;border-radius:var(--r);outline:none;font-family:var(--font)}
.controls input{flex:1;min-width:160px}
.controls input::placeholder{color:var(--text3)}
.controls select:focus,.controls input:focus{border-color:var(--accent)}

/* ── BUTTONS ── */
.btn{background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 13px;border-radius:var(--r);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .15s;white-space:nowrap;font-family:var(--font);font-weight:500}
.btn:hover{background:var(--bg3);border-color:var(--border3)}
.btn.primary{background:rgba(0,229,160,.1);border-color:rgba(0,229,160,.35);color:var(--accent)}
.btn.primary:hover{background:rgba(0,229,160,.18)}
.btn.danger{background:rgba(255,69,69,.1);border-color:rgba(255,69,69,.3);color:var(--danger)}
.btn.sm{padding:4px 10px;font-size:11px}

/* ── TABLE ── */
.panel{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;margin-bottom:16px}
table{width:100%;border-collapse:collapse}
thead th{text-align:left;padding:10px 12px;color:var(--text3);font-weight:600;font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.7px;border-bottom:1px solid var(--border);background:var(--bg3);white-space:nowrap}
thead th.sortable{cursor:pointer}
thead th.sortable:hover{color:var(--text2)}
tbody tr{border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}
tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:var(--bg3)}
tbody tr.sel{background:rgba(61,158,255,.06);border-left:2px solid var(--accent2)}
tbody td{padding:9px 12px;vertical-align:middle}
.mno{font-family:var(--mono);font-size:11px}
.amt{font-family:var(--mono);font-weight:600}
.empty{text-align:center;padding:40px;color:var(--text3);font-size:12px}

/* ── BADGES ── */
.badge{display:inline-flex;align-items:center;font-size:10px;font-weight:600;font-family:var(--mono);padding:2px 8px;border-radius:100px;white-space:nowrap}
.badge.high{background:rgba(255,69,69,.15);color:#ff7070;border:1px solid rgba(255,69,69,.25)}
.badge.medium{background:rgba(255,170,0,.15);color:var(--warning);border:1px solid rgba(255,170,0,.25)}
.badge.low{background:rgba(61,158,255,.12);color:#6cb6ff;border:1px solid rgba(61,158,255,.2)}
.badge.clear{background:rgba(0,229,160,.1);color:var(--accent);border:1px solid rgba(0,229,160,.2)}
.badge.failed{background:rgba(125,125,125,.15);color:#9aa0b0;border:1px solid rgba(125,125,125,.25)}
.badge.outlier{background:rgba(167,139,250,.15);color:var(--purple);border:1px solid rgba(167,139,250,.25)}
.fc-failed{background:rgba(125,125,135,.1);color:#9aa0b0;border:1px solid rgba(125,125,135,.2)}

.flag-chip{display:inline-flex;align-items:center;gap:3px;font-size:9px;font-family:var(--mono);padding:2px 7px;border-radius:4px;margin-right:3px;margin-bottom:2px;white-space:nowrap}
.fc-amount{background:rgba(255,107,53,.1);color:var(--accent3);border:1px solid rgba(255,107,53,.25)}
.fc-velocity{background:rgba(255,69,69,.1);color:var(--danger);border:1px solid rgba(255,69,69,.2)}
.fc-time{background:rgba(61,158,255,.1);color:var(--accent2);border:1px solid rgba(61,158,255,.2)}
.fc-location{background:rgba(255,170,0,.1);color:var(--warning);border:1px solid rgba(255,170,0,.2)}
.fc-card{background:rgba(167,139,250,.1);color:var(--purple);border:1px solid rgba(167,139,250,.2)}
.fc-outlier{background:rgba(167,139,250,.15);color:var(--purple);border:1px solid rgba(167,139,250,.3)}

/* ── ADVANCED FILTER PANEL ── */
.adv-filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.adv-filter-toggle{display:flex;align-items:center;gap:5px;font-size:11px;font-family:var(--mono);padding:5px 11px;border-radius:var(--r);border:1px solid var(--border2);background:var(--bg2);color:var(--text2);cursor:pointer;transition:all .15s;white-space:nowrap}
.adv-filter-toggle:hover{border-color:var(--border3);color:var(--text)}
.adv-filter-toggle.active{border-color:var(--accent2);color:var(--accent2);background:rgba(61,158,255,.08)}
.active-chips{display:flex;flex-wrap:wrap;gap:5px}
.filter-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-family:var(--mono);padding:3px 9px;border-radius:100px;background:rgba(61,158,255,.1);border:1px solid rgba(61,158,255,.25);color:var(--accent2)}
.filter-chip button{background:none;border:none;color:var(--accent2);cursor:pointer;font-size:12px;line-height:1;padding:0;opacity:.7}
.filter-chip button:hover{opacity:1}

.adv-panel{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--rl);padding:16px 18px;margin-bottom:12px;display:none}
.adv-panel.open{display:block}
.adv-panel-title{font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:14px}
.adv-rows{display:flex;flex-direction:column;gap:8px}
.adv-row{display:grid;grid-template-columns:130px 140px 1fr auto;gap:8px;align-items:center}
.adv-row select,.adv-row input{background:var(--bg3);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 9px;border-radius:var(--r);outline:none;font-family:var(--font);width:100%}
.adv-row select:focus,.adv-row input:focus{border-color:var(--accent2)}
.adv-row input::placeholder{color:var(--text3)}
.adv-remove{background:none;border:1px solid var(--border);color:var(--text3);border-radius:var(--r);padding:5px 8px;cursor:pointer;font-size:12px;transition:all .15s;white-space:nowrap}
.adv-remove:hover{border-color:var(--danger);color:var(--danger)}
.adv-actions{display:flex;gap:8px;margin-top:12px;align-items:center}
.adv-result-count{font-size:11px;font-family:var(--mono);color:var(--text3);margin-left:auto}
tr.expanded-row td{padding:0!important;border-bottom:2px solid var(--accent2)!important}
.inline-detail{background:var(--bg3);border-top:1px solid var(--border2);animation:slideDown .18s ease}
@keyframes slideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.inline-detail-inner{padding:16px 18px}

/* ── DETAIL PANEL (inline) ── */
.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.df .k{font-size:9px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:3px}
.df .v{font-size:12px;color:var(--text);font-weight:600}
.sec-label{font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:8px;margin-top:14px}
.flags-row{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}
.fpill{font-size:11px;font-family:var(--mono);padding:3px 10px;border-radius:100px;border:1px solid var(--border2);color:var(--text3)}
.fpill.on{border-color:rgba(255,170,0,.4);color:var(--warning);background:rgba(255,170,0,.08)}
.fpill.outlier-on{border-color:rgba(167,139,250,.4);color:var(--purple);background:rgba(167,139,250,.08)}

/* ── DRILL-DOWN PANEL ── */
.drilldown{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r);margin-top:12px;overflow:hidden}
.drilldown-hdr{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg3);border-bottom:1px solid var(--border);cursor:pointer}
.drilldown-hdr-left{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600}
.drilldown-hdr-right{font-size:10px;color:var(--text3);font-family:var(--mono)}
.drilldown-body{display:none;max-height:320px;overflow-y:auto}
.drilldown-body.open{display:block}
.drilldown table{font-size:11px}
.drilldown thead th{font-size:9px;padding:8px 10px;background:var(--bg4)}
.drilldown tbody td{padding:7px 10px}
.drilldown tbody tr.this-txn{background:rgba(255,170,0,.07);border-left:2px solid var(--warning)}
.drilldown tbody tr.this-txn td{color:var(--warning)}

/* ── MERCHANT PROFILE BOX ── */
.merchant-profile{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:14px;margin-bottom:10px}
.mp-title{font-size:10px;font-family:var(--mono);color:var(--text3);text-transform:uppercase;letter-spacing:.7px;margin-bottom:10px}
.mp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mp-stat .label{font-size:9px;color:var(--text3);margin-bottom:2px;font-family:var(--mono)}
.mp-stat .val{font-size:13px;font-weight:600;font-family:var(--mono);color:var(--text)}
.mp-bar{height:4px;border-radius:2px;background:var(--bg4);margin-top:6px;overflow:hidden}
.mp-fill{height:100%;border-radius:2px;background:var(--accent);transition:width .4s}
.outlier-alert{background:rgba(167,139,250,.08);border:1px solid rgba(167,139,250,.25);border-radius:var(--r);padding:10px 12px;margin-bottom:12px;font-size:12px;color:var(--purple);display:none}
.outlier-alert.show{display:block}

/* AI box */
.ai-box{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r);padding:12px;font-size:12px;line-height:1.7;color:var(--text);min-height:70px}
.ai-dim{color:var(--text3);font-style:italic}
.spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
.detail-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}

/* ── MERCHANT INTEL VIEW ── */
.merchant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.merchant-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);padding:16px;cursor:pointer;transition:border-color .15s}
.merchant-card:hover{border-color:var(--border3)}
.mc-name{font-size:13px;font-weight:600;margin-bottom:8px}
.mc-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:10px}
.mc-stat .l{font-size:9px;color:var(--text3);font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px}
.mc-stat .v{font-size:14px;font-weight:700;font-family:var(--mono);color:var(--text)}
.mc-hours{height:28px;display:flex;align-items:flex-end;gap:1px}
.mc-hour-bar{flex:1;border-radius:2px 2px 0 0;background:var(--bg4);transition:height .3s}
.mc-flags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}

/* ── NOTICE ── */
.notice{border-radius:var(--r);padding:10px 14px;margin-bottom:14px;font-size:12px;display:flex;gap:9px;align-items:flex-start}
.notice.info{background:rgba(61,158,255,.07);border:1px solid rgba(61,158,255,.18);color:var(--text2)}
.notice.ok{background:rgba(0,229,160,.07);border:1px solid rgba(0,229,160,.2);color:var(--text2)}
.notice.warn{background:rgba(255,170,0,.07);border:1px solid rgba(255,170,0,.2);color:var(--text2)}
.notice a{color:var(--accent2);text-decoration:none}
.api-row{display:flex;gap:8px;margin-top:8px}
.api-inp{flex:1;background:var(--bg);border:1px solid var(--border2);color:var(--text);font-family:var(--mono);font-size:11px;padding:6px 10px;border-radius:var(--r);outline:none}
.api-inp:focus{border-color:var(--accent2)}

/* ── DETECTION RULES VIEW ── */
.rules-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);margin-bottom:14px;overflow:hidden}
.rules-card-title{padding:13px 18px;background:var(--bg3);border-bottom:1px solid var(--border);font-size:12px;font-weight:600;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.rules-body{padding:16px 18px;font-size:13px;color:var(--text2);line-height:1.75}
.rules-body p{margin-bottom:10px}
.rules-body p:last-child{margin-bottom:0}
.rules-body strong{color:var(--text)}
.rules-body em{color:var(--accent2)}
.rules-section-heading{font-size:10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin:14px 0 6px}
.rules-list{margin:0 0 10px 18px;display:flex;flex-direction:column;gap:5px}
.rules-list li{line-height:1.6}
.rules-example{background:var(--bg3);border-left:3px solid var(--accent2);border-radius:0 var(--r) var(--r) 0;padding:12px 14px;margin:12px 0;font-size:12px;line-height:1.7}
.rules-ex-label{font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--accent2);margin-bottom:5px}
.rules-note{background:rgba(255,170,0,.07);border:1px solid rgba(255,170,0,.2);border-radius:var(--r);padding:10px 13px;font-size:11px;color:var(--text2);line-height:1.6;margin-top:10px}
.rules-level-grid{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.rules-level-row{display:flex;align-items:flex-start;gap:12px;font-size:12px;line-height:1.6}
.rules-level-row em{color:var(--accent2);font-style:normal}

/* ── PERFORMANCE MODULE STYLES ── */
.perf-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.perf-toolbar-left{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.perf-toolbar-right{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.perf-search-inp{background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 10px;border-radius:var(--r);outline:none;font-family:var(--font);min-width:180px}
.perf-search-inp:focus{border-color:var(--accent)}
.perf-toolbar-left select{background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:12px;padding:6px 10px;border-radius:var(--r);outline:none;font-family:var(--font)}
.perf-toolbar-left select:focus{border-color:var(--accent)}
.month-toggle{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-family:var(--mono);padding:4px 10px;border-radius:100px;border:1px solid var(--border2);background:var(--bg2);color:var(--text3);cursor:pointer;transition:all .15s;white-space:nowrap;user-select:none}
.month-toggle:hover{border-color:var(--border3);color:var(--text)}
.month-toggle.on{border-color:rgba(0,229,160,.4);background:rgba(0,229,160,.1);color:var(--accent)}
.perf-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px}
.perf-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.pchart-box{position:relative;width:100%;height:240px}
.pchart-box-sm{position:relative;width:100%;height:190px}
.pcard{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);padding:16px 18px;margin-bottom:14px}
.pcard-title{font-size:10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:12px}

/* merchant list table */
.ptable{width:100%;border-collapse:collapse;font-size:12px}
.ptable th{text-align:left;padding:9px 12px;color:var(--text3);font-weight:600;font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.7px;border-bottom:1px solid var(--border);background:var(--bg3);white-space:nowrap}
.ptable th.r{text-align:right}
.ptable td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.ptable td.r{text-align:right;font-family:var(--mono);font-size:11px}
.ptable tr:last-child td{border-bottom:none}
.ptable tbody tr:hover td{background:var(--bg3);cursor:pointer}
.ptable tbody tr.selected-merch td{background:rgba(61,158,255,.06);border-left:2px solid var(--accent2)}

/* badges */
.pbadge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-family:var(--mono);padding:2px 8px;border-radius:100px;white-space:nowrap}
.pbadge-up{background:rgba(0,229,160,.12);color:var(--accent);border:1px solid rgba(0,229,160,.25)}
.pbadge-dn{background:rgba(255,69,69,.12);color:var(--danger);border:1px solid rgba(255,69,69,.25)}
.pbadge-flat{background:var(--bg4);color:var(--text3);border:1px solid var(--border2)}
.pbadge-gold{background:rgba(255,170,0,.12);color:var(--warning);border:1px solid rgba(255,170,0,.25)}
.pbadge-blue{background:rgba(61,158,255,.12);color:var(--accent2);border:1px solid rgba(61,158,255,.25)}

/* progress bars */
.prog-row{margin-bottom:12px}
.prog-lbl{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:4px}
.prog-bar{height:4px;border-radius:2px;background:var(--bg4);overflow:hidden}
.prog-fill{height:100%;border-radius:2px;transition:width .5s}

/* rank items */
.rank-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.rank-item:last-child{border-bottom:none}
.rank-item:hover{cursor:pointer}
.rank-item:hover .rank-name{color:var(--accent)}

/* legend */
.pleg{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px}
.pleg-item{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text3);font-family:var(--mono)}
.pleg-dot{width:9px;height:9px;border-radius:2px;flex-shrink:0}

/* inline trend sparkline text */
.spark-arrows{font-size:12px;letter-spacing:2px;font-family:var(--mono)}

@media(max-width:900px){
  .perf-metrics{grid-template-columns:repeat(2,1fr)}
  .perf-grid-2{grid-template-columns:1fr}
  .app{grid-template-columns:1fr}
  .sidebar{display:none}
  .metrics-grid{grid-template-columns:repeat(3,1fr)}
  .detail-grid{grid-template-columns:repeat(2,1fr)}
}

/* ── PRINT / PDF STYLES ── */
#print-header{display:none}
#fraud-print-header{display:none}
@media print{
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  body{background:#fff!important;color:#111!important;font-family:Arial,sans-serif!important;font-size:11px}
  .sidebar,header,.perf-toolbar,#perf-top-bot-wrap,#perf-summary-metrics,
  .btn,button:not(.pbadge),select,input,textarea,
  #detail-month-toggles-wrap,.perf-grid-2 canvas,
  #email-modal-bg,#fraud-email-modal-bg,.adv-filter-bar,.controls,.scenario-tabs,
  .high-amount-bar,#fraud-export-count,
  [id^="perf-vol"],[id^="high-amount"]{display:none!important}
  .app{display:block!important;padding:0}
  .main{padding:16px!important;max-width:100%!important}
  .view{display:block!important;padding:0!important}
  .view:not(.active){display:none!important}
  #print-header{display:block!important;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid #333}
  #fraud-print-header{display:block!important;margin-bottom:14px;padding-bottom:10px;border-bottom:2px solid #333}
  .pcard{background:#fff!important;border:1px solid #bbb!important;border-radius:4px;page-break-inside:avoid;margin-bottom:10px}
  .pcard-title{color:#444!important;border-bottom:1px solid #ddd;padding-bottom:6px;margin-bottom:8px}
  .ptable th,.panel table th{background:#f5f5f5!important;color:#333!important;border-bottom:1px solid #ccc!important;font-size:9px}
  .ptable td,.panel table td{color:#111!important;border-bottom:1px solid #eee!important;font-size:10px}
  .ptable tr:hover td,.panel table tr:hover td{background:none!important}
  .pbadge{border:1px solid #ccc!important;font-size:9px}
  .pbadge-up{background:#e8f5e9!important;color:#1b5e20!important;border-color:#a5d6a7!important}
  .pbadge-dn{background:#ffebee!important;color:#b71c1c!important;border-color:#ef9a9a!important}
  .pbadge-flat{background:#f5f5f5!important;color:#555!important}
  .pbadge-gold{background:#fffde7!important;color:#795548!important}
  .spark-arrows span{color:#333!important}
  .perf-metrics{display:grid!important;grid-template-columns:repeat(5,1fr)!important}
  .metric{background:#f9f9f9!important;border:1px solid #ddd!important}
  .metric-value{color:#111!important}
  .metric-label{color:#666!important}
  .badge.high{background:#fce8e8!important;color:#922b21!important}
  .badge.medium{background:#fff3e0!important;color:#7d4000!important}
  .badge.low{background:#e8f5e9!important;color:#1b5e20!important}
  .badge.clear{background:#f0f0f0!important;color:#444!important}
  .badge.failed{background:#eeeeee!important;color:#555!important}
  .badge.outlier{background:#f3e5f5!important;color:#6a1b9a!important}
  .flag-chip{background:#f5f5f5!important;color:#333!important;border:1px solid #ccc!important}
  .panel{border:1px solid #ccc!important;border-radius:4px;page-break-inside:auto}
  .panel table{width:100%}
  .inline-detail{display:none!important}
}


/* ─────────────────────────────────────────────
   Production polish / Hostinger deployment build
   ───────────────────────────────────────────── */
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 15% 10%, rgba(0,229,160,.08), transparent 24rem),
    radial-gradient(circle at 90% 0%, rgba(61,158,255,.08), transparent 24rem);
  z-index:-1;
}
.hdr{backdrop-filter:blur(14px);box-shadow:0 12px 32px rgba(0,0,0,.18)}
.hdr-logo{box-shadow:0 0 32px rgba(0,229,160,.18)}
.sidebar{box-shadow:12px 0 30px rgba(0,0,0,.10)}
.metric,.panel,.pcard,.rules-card,.merchant-card,.upload-zone,.mapper,.notice,.db-status{box-shadow:0 16px 40px rgba(0,0,0,.12)}
.metric-value{letter-spacing:-.04em}
.nav-item,.btn,.s-tab,.metric,.panel,.merchant-card,.pcard{will-change:transform}
.nav-item:hover,.btn:hover,.s-tab:hover,.merchant-card:hover{transform:translateY(-1px)}
.brand-lockup{display:flex;align-items:center;gap:10px}
.deployment-badge{font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.7px;color:var(--text3);border:1px solid var(--border2);border-radius:999px;padding:3px 8px;background:var(--bg3)}
@media(max-width:720px){
  .hdr{height:auto;min-height:58px;padding:10px 14px;align-items:flex-start;gap:8px;flex-wrap:wrap}
  .hdr-right{width:100%;justify-content:space-between;flex-wrap:wrap}
  .main{padding:14px}
  .metrics-grid{grid-template-columns:1fr 1fr}
  .perf-metrics{grid-template-columns:1fr 1fr}
  .adv-row{grid-template-columns:1fr}
  .mp-grid,.detail-grid{grid-template-columns:1fr}
}
