:root{
  --navy:#0b2341;
  --blue:#0f5fa8;
  --blue-2:#1d78c8;
  --blue-3:#eaf4ff;
  --cyan:#15a7d8;
  --yellow:#f6c945;
  --ink:#10233a;
  --muted:#64748b;
  --line:#dbe7f2;
  --surface:#ffffff;
  --page:#f4f8fc;
  --success:#16a085;
  --danger:#d9534f;
  --shadow:0 10px 28px rgba(17,56,94,.09);
}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0;background:var(--page);color:var(--ink);font-family:Inter,Segoe UI,Arial,sans-serif}
body{overflow-x:hidden}
button,input,select{font:inherit}
a{text-decoration:none}
.app-shell{display:flex;min-height:100vh}
.sidebar{width:246px;background:linear-gradient(180deg,#071b32 0%,#0b3158 100%);color:#fff;position:fixed;inset:0 auto 0 0;z-index:1040;display:flex;flex-direction:column;box-shadow:10px 0 30px rgba(7,27,50,.12);transition:.25s ease}
.brand-block{padding:22px 20px 18px;border-bottom:1px solid rgba(255,255,255,.1)}
.brand{font-weight:800;letter-spacing:-.6px;font-size:25px;color:white}.brand .brand-i{color:var(--yellow)}
.brand-sub{font-size:11px;color:#bad5ef;margin-top:5px;letter-spacing:.6px;text-transform:uppercase}
.nav-menu{padding:16px 10px;display:grid;gap:7px}
.nav-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;color:#d5e8f8;font-weight:600;font-size:14px;transition:.2s ease}
.nav-item:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateX(2px)}
.nav-item.active{background:linear-gradient(90deg,#1977c8,#0e5d9d);box-shadow:0 8px 20px rgba(0,0,0,.15);color:#fff}
.nav-icon{width:25px;height:25px;border-radius:8px;background:rgba(255,255,255,.1);display:grid;place-items:center;font-size:13px}
.sidebar-footer{margin-top:auto;padding:18px 18px 22px;color:#a9c7df;font-size:11px;line-height:1.55}
.main{margin-left:246px;min-width:0;width:calc(100% - 246px);transition:.25s ease}
.topbar{position:sticky;top:0;z-index:1025;background:rgba(244,248,252,.9);backdrop-filter:blur(14px);border-bottom:1px solid rgba(219,231,242,.85);padding:14px 22px;display:flex;align-items:center;gap:14px;justify-content:space-between}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}
.mobile-menu-btn{display:none;border:0;background:#fff;border-radius:10px;width:40px;height:40px;box-shadow:var(--shadow);font-size:20px;color:var(--navy)}
.page-title{font-size:21px;font-weight:800;margin:0;line-height:1.2}.page-caption{font-size:12px;color:var(--muted);margin-top:3px}
.topbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.product-lockup{padding:8px 12px;border-radius:12px;background:#fff;border:1px solid var(--line);box-shadow:0 4px 14px rgba(17,56,94,.06);font-size:18px;font-weight:800;white-space:nowrap;color:var(--navy)}
.product-lockup .brand-i{color:var(--yellow)}
.content{padding:18px 22px 34px;max-width:1800px;margin:0 auto}
.hero-strip{background:linear-gradient(110deg,#0e4e86,#1682c8 70%,#13a7c6);border-radius:20px;padding:18px 20px;color:white;display:flex;justify-content:space-between;gap:20px;align-items:center;box-shadow:0 16px 35px rgba(10,91,153,.18);margin-bottom:16px;position:relative;overflow:hidden}
.hero-strip:after{content:"";position:absolute;width:280px;height:280px;border:50px solid rgba(255,255,255,.08);border-radius:50%;right:-100px;top:-110px}.hero-strip>*{position:relative;z-index:1}
.hero-title{font-size:18px;font-weight:800}.hero-copy{font-size:12px;color:#d9efff;margin-top:5px;max-width:760px}.hero-badge{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);padding:9px 12px;border-radius:12px;font-size:12px;white-space:nowrap}
.action-bar{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px}.btnx{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 12px;font-weight:700;font-size:12px;display:inline-flex;gap:7px;align-items:center;cursor:pointer;transition:.18s ease}.btnx:hover{border-color:#9bc5eb;box-shadow:0 5px 16px rgba(16,77,129,.1);transform:translateY(-1px)}.btnx.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btnx.ghost-blue{color:var(--blue)}.btnx.danger{color:#b74343}.btnx.small{padding:6px 8px;font-size:11px;border-radius:8px}
.file-input{display:none}
.filter-panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-bottom:16px;overflow:hidden}
.filter-head{padding:12px 14px;display:flex;justify-content:space-between;gap:12px;align-items:center;cursor:pointer;background:linear-gradient(180deg,#fff,#fbfdff)}
.filter-title{font-size:13px;font-weight:800;display:flex;gap:8px;align-items:center}.filter-summary{color:var(--muted);font-size:11px}.filter-body{padding:0 14px 14px;display:block}.filter-panel.collapsed .filter-body{display:none}.filter-panel.collapsed .collapse-arrow{transform:rotate(-90deg)}.collapse-arrow{transition:.2s}
.filters-grid{display:grid;grid-template-columns:repeat(5,minmax(135px,1fr));gap:10px}.filter-group label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#60758a;margin:0 0 5px;display:block}.filter-control{width:100%;border:1px solid #d4e1ec;border-radius:9px;background:#fbfdff;padding:8px 9px;outline:none;color:var(--ink);font-size:12px;min-height:35px}.filter-control:focus{border-color:#6fb1e8;box-shadow:0 0 0 3px rgba(56,145,214,.12)}select.filter-control[multiple]{height:92px;padding:4px}.date-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}.filter-actions{display:flex;gap:8px;align-items:flex-end}
.active-filters{margin-top:10px;display:flex;gap:6px;flex-wrap:wrap}.chip{font-size:10px;border-radius:99px;padding:5px 8px;background:#eaf4ff;color:#155c95;border:1px solid #c7e2f8}
.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-bottom:16px}.kpi-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:108px}.kpi-card:after{content:"";position:absolute;width:72px;height:72px;background:linear-gradient(135deg,rgba(40,139,211,.12),rgba(23,173,188,.04));border-radius:50%;right:-18px;top:-15px}.kpi-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.kpi-label{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.45px}.kpi-icon{width:30px;height:30px;border-radius:9px;background:#eaf4ff;color:var(--blue);display:grid;place-items:center;font-weight:900}.kpi-value{font-size:22px;font-weight:900;color:#0c355c;margin-top:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-foot{font-size:10px;color:#789;display:flex;gap:5px;align-items:center;margin-top:5px}.positive{color:#0f916d}.negative{color:#c64b4b}
.dashboard-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.chart-card{grid-column:span 6;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);min-width:0;overflow:hidden}.chart-card.wide{grid-column:span 8}.chart-card.narrow{grid-column:span 4}.chart-card.full{grid-column:1/-1}.chart-head{padding:12px 13px;border-bottom:1px solid #edf3f8;display:flex;justify-content:space-between;align-items:center;gap:10px}.chart-title-wrap{min-width:0}.chart-title{font-size:13px;font-weight:800;margin:0;color:#173d61}.chart-subtitle{font-size:10px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-actions{display:flex;gap:5px;flex-shrink:0}.icon-btn{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;cursor:pointer;color:#557087;font-size:12px}.icon-btn:hover{background:#eef7ff;color:var(--blue)}
.chart-body{padding:12px;position:relative;height:330px}.chart-body.tall{height:410px}.chart-canvas{width:100%!important;height:100%!important}.chart-table-wrap{height:100%;overflow:auto;display:none}.chart-card.show-table .chart-canvas{display:none!important}.chart-card.show-table .chart-table-wrap{display:block}.mini-table{width:100%;border-collapse:collapse;font-size:11px}.mini-table th{position:sticky;top:0;background:#f0f6fb;color:#3e5c75;text-align:left;padding:8px;border-bottom:1px solid #d9e7f2}.mini-table td{padding:7px 8px;border-bottom:1px solid #edf3f8;color:#34495e}.mini-table td.num{text-align:right;font-variant-numeric:tabular-nums}.mini-table tbody tr:hover{background:#f8fbfe}
.map-wrap{height:100%;position:relative}.map{height:100%;width:100%;border-radius:10px;background:#edf5fb}.map-breadcrumb{position:absolute;z-index:500;left:10px;top:10px;background:rgba(255,255,255,.95);border:1px solid #d4e1ec;border-radius:9px;padding:7px 9px;font-size:10px;box-shadow:0 5px 14px rgba(0,0,0,.08)}
.data-section{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.data-head{padding:12px 13px;border-bottom:1px solid #edf3f8;display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap}.table-toolbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.table-search{border:1px solid #d4e1ec;border-radius:9px;padding:8px 10px;min-width:230px;font-size:12px}.table-wrap{overflow:auto;max-height:520px}.data-table{border-collapse:collapse;width:100%;font-size:11px;min-width:1100px}.data-table th{position:sticky;top:0;z-index:2;background:#eaf3fb;color:#2d506f;padding:9px;border-right:1px solid #d7e6f1;border-bottom:1px solid #cfdeea;text-align:left;cursor:pointer;white-space:nowrap}.data-table td{padding:8px 9px;border-bottom:1px solid #edf2f6;white-space:nowrap}.data-table tr:hover td{background:#f8fbfd}.pager{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;border-top:1px solid #edf3f8;font-size:11px;color:var(--muted)}
.toastx{position:fixed;right:20px;bottom:20px;z-index:2000;background:#0d3152;color:#fff;border-radius:11px;padding:11px 14px;box-shadow:0 12px 30px rgba(0,0,0,.2);font-size:12px;opacity:0;pointer-events:none;transform:translateY(8px);transition:.2s}.toastx.show{opacity:1;transform:translateY(0)}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(7,27,50,.45);z-index:1035}
.loading-mask{position:fixed;inset:0;background:rgba(244,248,252,.8);z-index:3000;display:none;place-items:center}.spinner{width:42px;height:42px;border:4px solid #d5e8f6;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.fullscreen-card{background:#fff!important;border-radius:0!important}.fullscreen-card .chart-body{height:calc(100vh - 58px)!important}
@media(max-width:1280px){.filters-grid{grid-template-columns:repeat(4,minmax(130px,1fr))}.kpi-grid{grid-template-columns:repeat(3,1fr)}.chart-card.wide,.chart-card.narrow{grid-column:span 6}}
@media(max-width:980px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-overlay.show{display:block}.main{margin-left:0;width:100%}.mobile-menu-btn{display:grid;place-items:center}.filters-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.topbar{padding:12px 14px}.content{padding:14px}.hero-strip{align-items:flex-start}.chart-card,.chart-card.wide,.chart-card.narrow{grid-column:span 12}.chart-body{height:310px}}
@media(max-width:680px){.filters-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar-right .product-lockup{font-size:15px}.page-title{font-size:17px}.page-caption{display:none}.hero-strip{display:block}.hero-badge{display:inline-block;margin-top:10px}.chart-head{align-items:flex-start}.chart-actions{flex-wrap:wrap;justify-content:flex-end}.chart-body{height:285px}.date-pair{grid-template-columns:1fr}.table-search{min-width:180px;flex:1}.action-bar .btnx{flex:1;justify-content:center;min-width:145px}}
@media(max-width:430px){.filters-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr 1fr;gap:8px}.kpi-card{padding:11px;min-height:98px}.kpi-value{font-size:18px}.product-lockup{padding:7px 9px}.content{padding:10px}.hero-strip{border-radius:15px;padding:15px}.chart-card{border-radius:13px}.chart-body{height:260px}}
