:root{--bg:#f4f5f0;--card:#fff;--ink:#071a24;--muted:#66777d;--kr:#315bff;--ink2:#071a24;--border:#d9e0dc;--lime:#c9ff18;--positive:#c9ff18;--normal:#d9e0dc;--negative:#315bff;--shadow:0 8px 28px rgba(7,26,36,.08);}
*{box-sizing:border-box}
body{font-family:Bahnschrift,"Arial Narrow","Segoe UI",sans-serif;background:radial-gradient(circle at 12% 4%,rgba(49,91,255,.09),transparent 28%),linear-gradient(135deg,rgba(201,255,24,.045),transparent 35%),var(--bg);color:var(--ink)}
.brand img{width:118px;height:auto;display:block}
.topbar,.hdr{backdrop-filter:saturate(120%) blur(8px)}
.hdr{position:relative;z-index:2}
.tabs button.active{box-shadow:inset 0 -3px 0 var(--kr)}
.rbtn{letter-spacing:.02em}
.kpi,.panel,.vpanel{border-color:var(--border)}
body{margin:0;font-family:'Segoe UI',Roboto,system-ui,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:14px}
.hdr{display:flex;align-items:stretch;background:#fff;border-bottom:3px solid var(--kr)}
.brand{display:flex;align-items:center;padding:6px 20px 6px 22px;border-right:1px solid var(--border);flex:0 0 auto}
.brand img{height:72px;display:block}
.hcol{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}
.hrow{display:flex;align-items:center;gap:8px;padding:0 22px}
.tabrow{border-bottom:1px solid var(--border);min-height:46px}
.tabrow .tabs{flex:1 1 auto;min-width:0}
.tabrow .hright{flex:0 0 auto}
.slicrow{align-items:flex-end;gap:14px;padding-top:8px;padding-bottom:10px;flex-wrap:wrap}
.slicebar{position:relative;z-index:1;display:flex;align-items:center;gap:10px;padding:9px 22px;background:#fafafa;border-bottom:1px solid var(--border)}
.slabel{font-size:12px;color:var(--muted);font-weight:700}
.nomwrap{position:relative;display:flex;align-items:center;gap:6px}
.nombtn{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:7px 13px;cursor:pointer;font-size:13px;font-weight:600;color:var(--ink2)}
.nombtn.act{border-color:var(--kr);color:var(--kr)}
.nombtn .plus{font-weight:800;font-size:15px;line-height:1}
.nombtn .dot{width:8px;height:8px;border-radius:50%;background:var(--kr);display:inline-block}
.nombtn .cnt{font-size:11px;background:var(--kr);color:#fff;border-radius:10px;padding:1px 7px;min-width:18px;text-align:center}
.eraser{background:#fff;border:1px solid var(--kr);color:var(--kr);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:15px;display:inline-flex;align-items:center;justify-content:center}
.eraser:hover{background:var(--kr);color:#fff}
.nompanel{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px rgba(16,24,40,.18);padding:14px;z-index:30;min-width:820px;max-width:94vw}
.nomcols{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
@media(max-width:1100px){.nomcols{grid-template-columns:repeat(2,1fr)}.nompanel{min-width:420px}}
.nomh{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:700;color:var(--ink2);border-bottom:2px solid var(--kr);padding-bottom:5px;margin-bottom:7px;gap:6px}
.nomh a{color:var(--kr);cursor:pointer;font-weight:600;font-size:11px}
.nomlist{max-height:250px;overflow:auto;display:flex;flex-direction:column;gap:2px}
.admindef{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:11px;color:var(--muted);flex-wrap:wrap}
.admindef .adlbl{font-weight:700}
.admindef button{font-size:11px;padding:3px 9px;border:1px solid var(--kr);background:#fff;color:var(--kr);border-radius:6px;cursor:pointer}
.admindef button:hover{background:var(--kr);color:#fff}
.admindef .adhint{color:#9aa0a6}
.nomsearch{width:100%;box-sizing:border-box;margin-bottom:6px;padding:3px 7px;font-size:11px;border:1px solid var(--border);border-radius:5px;outline:none;color:var(--ink)}
.nomsearch:focus{border-color:var(--kr)}
.chk{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:#071A24;cursor:pointer;line-height:1.25;padding:3px;border-radius:5px}
.chk:hover{background:#fef2f2}
.chk input{accent-color:var(--kr);margin-top:1px;flex:0 0 auto;width:15px;height:15px}
.nomfoot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.nomfoot .done{background:var(--kr);color:#fff;border:none;border-radius:8px;padding:7px 18px;cursor:pointer;font-weight:600;font-size:13px}
.tabs{display:flex;gap:2px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}
.tabs button{background:none;border:none;color:#555;padding:12px 15px;cursor:pointer;font-size:14px;border-bottom:3px solid transparent;flex:0 0 auto;white-space:nowrap}
.tabs button.active{color:var(--kr);border-bottom-color:var(--kr);font-weight:700}
.sub{margin-left:auto;font-size:12px;color:var(--muted);padding-left:16px}
.slicer{display:flex;flex-direction:column;gap:3px}
.slicer label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.slicer select,.slicer input{padding:6px 10px;border:1px solid var(--border);border-radius:7px;background:#fff;font-size:13px}
.slicer select{min-width:150px}
.dates{display:flex;align-items:flex-end;gap:6px}
.reset{color:var(--kr);background:none;border:none;cursor:pointer;font-size:12px;padding-bottom:7px}
.topbar{position:sticky;top:0;z-index:30;background:#fff;box-shadow:0 3px 8px rgba(16,24,40,.06)}
.dashboard-actions{display:flex;align-items:center;gap:6px;margin-left:auto;flex:0 0 auto}
.slicebar>.dashboard-actions{margin-left:auto}
.focus-toolbar,.topbar-collapse{height:29px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--muted);font:600 11px/1 'Segoe UI',Roboto,system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.focus-toolbar{padding:0 10px}.topbar-collapse{display:inline-flex;align-items:center;gap:5px;width:auto;padding:0 7px;font-size:13px}
.collapse-label{font-size:10px;font-weight:500;color:currentColor}.collapse-arrow{font-size:16px;line-height:1}
.focus-toolbar:hover,.topbar-collapse:hover{border-color:var(--kr);color:var(--kr)}
.focus-toolbar.on{background:var(--kr);border-color:var(--kr);color:#fff}
.quickbtns{display:flex;gap:4px;flex-wrap:wrap}
.quickbtns button{background:#fff;border:1px solid var(--border);border-radius:7px;padding:6px 9px;cursor:pointer;font-size:12px;color:var(--muted)}
.quickbtns button:hover{border-color:var(--kr);color:var(--kr)}
.quickbtns button.on{background:var(--lime);color:var(--ink);border-color:var(--lime);font-weight:600}
.vatsw{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.vatsw button{background:#fff;border:none;padding:7px 12px;cursor:pointer;font-size:13px;color:var(--muted);font-weight:600}
.vatsw button.on{background:var(--lime);color:var(--ink)}
.dfield{position:relative}
.dbtn{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:7px;padding:6px 10px;font-size:13px;cursor:pointer;min-width:118px;color:var(--ink2);font-variant-numeric:tabular-nums}
.dbtn .dcal{color:var(--kr);font-size:14px}
.dpop{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px rgba(16,24,40,.18);padding:12px;z-index:40;width:252px}
.dhead{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:13px;margin-bottom:8px;color:var(--ink2)}
.dhead button{background:#f3f4f6;border:none;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:16px;color:var(--kr);line-height:1}
.dgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dwd{margin-bottom:4px}
.dw{font-size:10px;color:var(--muted);text-align:center;font-weight:600;padding:2px 0}
.dday{background:none;border:none;border-radius:6px;height:30px;cursor:pointer;font-size:12px;color:var(--ink)}
.dday:hover{background:#fde8e8}
.dday.sel{background:var(--kr);color:#fff;font-weight:700}
.dday.dis{color:#d1d5db;cursor:default}.dday.dis:hover{background:none}
.chip{display:inline-flex;align-items:center;gap:8px;background:rgba(201,255,24,.36);color:var(--ink);border:1px solid #a6d600;border-radius:20px;padding:5px 12px;font-size:13px;font-weight:600}
.chip b{font-weight:700}
.chip .x{cursor:pointer;background:var(--ink);color:var(--lime);border-radius:50%;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;line-height:1}
.xfbar{padding:10px 22px 0}
.wrap{padding:12px 22px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px;margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--border);border-top:3px solid var(--kr);border-radius:10px;padding:11px 14px;box-shadow:var(--shadow)}
.kpi .val{font-size:26px;font-weight:800;line-height:1;color:#111}
.kpi .lab{font-size:12px;color:var(--muted);margin-top:6px}
.kpi .unit{font-size:13px;color:var(--muted);font-weight:600}
.kpi .delta{display:inline-block;font-size:12px;font-weight:700;margin-top:5px;padding:3px 7px;border-radius:6px}.kpi .delta.up{background:var(--positive);color:#071A24}.kpi .delta.down{background:var(--negative);color:#fff}
.kpi .dax{font-family:ui-monospace,Consolas,monospace;font-size:10px;color:#9aa0a6;margin-top:4px}
.sech{font-size:13px;font-weight:700;color:var(--kr);text-transform:uppercase;letter-spacing:.5px;margin:6px 0 10px;border-left:3px solid var(--kr);padding-left:8px}
.grid{display:grid;gap:12px;align-items:start}.g2{grid-template-columns:2fr 1fr}.g2b{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr 1fr}
@media(max-width:1000px){.g2,.g2b,.g3{grid-template-columns:1fr}}
.stats-trend-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1000px){.stats-trend-grid{grid-template-columns:minmax(0,1fr)}}
.orders-days-bars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
@media(max-width:1100px){.orders-days-bars{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.orders-days-bars{grid-template-columns:minmax(0,1fr)}}
.burger{display:none;background:none;border:1px solid var(--border);border-radius:8px;width:42px;height:36px;font-size:19px;color:var(--kr);cursor:pointer;align-items:center;justify-content:center}
@media(max-width:760px){
.hdr{flex-wrap:wrap}
.brand{flex:1 1 100%;justify-content:space-between;border-right:none;padding:6px 12px}
.brand img{height:42px}
.burger{display:inline-flex}
.hcol{flex:1 1 100%;display:none;border-top:1px solid var(--border)}
.hcol.mopen{display:flex}
.hrow{padding:8px 12px}
.tabrow{min-height:0;flex-direction:column;align-items:stretch}
.tabrow .hright{margin-left:0;justify-content:space-between;padding:8px 0 2px;flex-wrap:wrap}
.tabs{flex-direction:column;gap:0;width:100%}
.tabs button{width:100%;text-align:left;padding:12px 8px;border-bottom:1px solid var(--border);border-left:3px solid transparent}
.tabs button.active{border-bottom-color:var(--border);border-left-color:var(--kr)}
.slicrow{flex-direction:column;align-items:stretch;gap:12px;padding-bottom:12px}
.slicer select{min-width:0;width:100%}
.slicebar{flex-wrap:wrap;gap:8px;padding:9px 12px}
.nompanel{min-width:0;width:94vw}
.wrap{padding:10px 12px}
.kpis{grid-template-columns:1fr 1fr;gap:8px}
.kpi{padding:9px 11px}.kpi .val{font-size:20px}
.panel{overflow-x:auto}
.hierscroll,.pivot{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.matrix{width:max-content;min-width:0}
table.matrix th,table.matrix td{padding:6px 8px}
}
.panel{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 14px;box-shadow:var(--shadow);margin-bottom:12px}
.panel h3{margin:0 0 8px;font-size:13px;font-weight:700}
.panel .hint{font-size:11px;color:var(--muted);font-weight:400}
.visual-frame{position:relative;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);margin:0 0 12px;min-width:0;transition:border-color .16s ease,box-shadow .16s ease,opacity .16s ease}
.visual-header{display:flex;align-items:center;gap:6px;min-height:32px;padding:4px 7px 4px 10px;border-left:3px solid var(--kr);border-bottom:1px solid var(--border);border-radius:10px 10px 0 0}
.visual-title{flex:1 1 auto;min-width:120px;font-size:12px;font-weight:700;color:var(--kr);text-transform:uppercase;letter-spacing:.25px;line-height:1.2}
.visual-title .hint,.focus-modal-title .hint{font-size:11px;color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}
.visual-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;min-width:0;max-width:70%;overflow-x:auto;scrollbar-width:thin;flex:0 1 auto}
.visual-collapse{display:inline-flex;align-items:center;gap:4px;width:auto;height:23px;padding:0 5px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);line-height:1;cursor:pointer}
.visual-collapse:hover{border-color:var(--border);color:var(--kr);background:#fff7f7}
.visual-focus-select{display:inline-grid;place-items:center;width:27px;height:27px;padding:0;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--kr);font-size:15px;font-weight:800;line-height:1;cursor:pointer}
.visual-focus-select:hover,.visual-focus-select[aria-pressed="true"]{border-color:var(--kr);background:var(--kr);color:#fff}
.visual-content{padding:6px 10px 9px;min-width:0}
.visual-content>.panel{border:0;border-radius:0;box-shadow:none;margin:0;padding:0;background:transparent}
.visual-frame.is-collapsed .visual-header{border-bottom:0;border-radius:10px}
.visual-frame.focus-selected{border-color:var(--kr);box-shadow:0 0 0 2px rgba(49,91,255,.16),var(--shadow)}
.focus-selecting .visual-frame{cursor:pointer}
.focus-selecting .wrap .visual-frame:not(.focus-selected){opacity:.58}
.focus-order{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--kr);color:#fff;font-size:10px;font-weight:800}
.visual-inline-actions{display:flex;justify-content:flex-end;margin:0}
.focus-modal-backdrop{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:26px;background:rgba(25,25,32,.62);backdrop-filter:blur(2px)}
.focus-modal{position:relative;width:min(1600px,97vw);max-height:96vh;overflow:auto;border-radius:13px;background:var(--bg);box-shadow:0 24px 70px rgba(0,0,0,.35);padding:44px 12px 12px}
.focus-close{position:sticky;z-index:2;top:0;float:right;display:grid;place-items:center;width:32px;height:32px;margin:-37px 0 5px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);font-size:24px;line-height:1;cursor:pointer}
.focus-close:hover{border-color:var(--kr);color:var(--kr)}
.focus-filter-summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 38px 10px 0;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);font-size:10px;clear:both}
.focus-filter-summary>b{color:var(--ink);font-size:11px}.focus-filter-chip{display:inline-flex;gap:4px;max-width:360px;padding:3px 7px;border:1px solid #f2c4c6;border-radius:12px;background:#fff5f5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.focus-filter-chip b{color:#a30f14}
.focus-modal-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:20px;grid-auto-flow:row dense;gap:10px;clear:both}
.focus-modal-grid[data-count="1"]{display:flex;align-items:flex-start;justify-content:center}
.focus-modal-grid[data-count="1"]>.focus-modal-visual{width:100%;max-width:100%;max-height:calc(96vh - 150px);aspect-ratio:var(--focus-source-aspect,2);flex:0 1 auto}
.focus-modal-visual{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;padding:0;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:var(--shadow);overflow:hidden}
.focus-modal-header{display:flex;align-items:center;gap:6px;min-height:31px;padding:4px 7px;border-bottom:1px solid var(--border);cursor:grab;user-select:none}.focus-modal-header:active{cursor:grabbing}
.focus-drag-handle{color:#a6a1aa;font-size:14px;letter-spacing:-3px;cursor:grab}
.focus-modal-title{flex:1;min-width:80px;margin:0;padding-left:6px;border-left:3px solid var(--kr);color:var(--kr);font-size:11px;font-weight:700;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.focus-modal-content{flex:1;min-width:0;min-height:0;overflow:auto;padding:6px 8px}
.focus-modal-content>.panel{height:100%;min-height:0}.focus-modal-content .time-chart,.focus-modal-content .numeric-chart{display:flex;flex-direction:column;height:100%;min-height:0}.focus-modal-content .chart-canvas.focus-fill{flex:1;min-height:0}
.focus-resize-handle{position:absolute;right:1px;bottom:1px;z-index:3;width:24px;height:24px;padding:0;border:0;background:linear-gradient(135deg,transparent 48%,#a6a1aa 49%,#a6a1aa 55%,transparent 56%,transparent 66%,#a6a1aa 67%,#a6a1aa 73%,transparent 74%);color:transparent;cursor:nwse-resize}
.focus-modal-error{padding:18px;color:#a30f14;background:#fff;border:1px solid #f1c6c8;border-radius:9px}
.focus-toolbar:focus-visible,.topbar-collapse:focus-visible,.visual-collapse:focus-visible,.visual-focus-select:focus-visible,.focus-close:focus-visible,.grain-switch button:focus-visible,.values-toggle:focus-visible,.scale-toggle:focus-visible{outline:3px solid rgba(49,91,255,.24);outline-offset:2px}
table.matrix{width:max-content;min-width:0;max-width:none;border-collapse:collapse;font-size:13px}
table.matrix th,table.matrix td{padding:7px 10px;text-align:right;border-bottom:1px solid var(--border)}
table.matrix th:first-child,table.matrix td:first-child{text-align:left}
table.matrix thead th{position:relative;color:var(--muted);font-weight:600;font-size:12px;border-bottom:2px solid var(--border);white-space:nowrap}
.table-shell{position:relative;max-width:100%;min-width:0}.table-shell table.matrix td{overflow:hidden;text-overflow:ellipsis}.table-export{height:23px;padding:0 7px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--muted);font-size:9px;font-weight:700;cursor:pointer}.table-export:hover{border-color:var(--kr);color:var(--kr)}
.column-resizer-cue table.matrix thead th:not([colspan])::after,.column-resizer-cue table.matrix thead th[colspan="1"]::after{content:"";position:absolute;z-index:3;top:0;right:-4px;width:9px;height:100%;cursor:col-resize}
table.matrix th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
table.matrix th.sortable:hover{color:var(--kr)}
table.matrix tbody tr.pickable{cursor:pointer}
table.matrix tbody tr.pickable:hover td{background:#fff3f3}
table.matrix tbody tr.selected td{background:#ffe3e4;color:#b41419}
.tgl{cursor:pointer;color:var(--kr);font-weight:800;margin-right:5px;display:inline-block;width:10px;user-select:none}
.tgl.ph{color:transparent;cursor:default}
table.matrix.hier td:first-child{white-space:nowrap}
table.matrix tbody tr:hover{background:#fef2f2}
table.matrix tfoot td{font-weight:700;border-top:2px solid var(--border);border-bottom:none}
.pct{display:inline-block;padding:2px 7px;border-radius:6px;font-size:12px;font-weight:600}
.srokwrap{max-height:230px;overflow:auto}
table.srok{font-size:12px}
table.srok thead th{position:sticky;top:0;background:#fff;z-index:2}
table.srok tfoot td{position:sticky;bottom:0;background:#fff}
.pickrow{cursor:pointer}.pickrow:hover{background:#fef2f2}.pickrow.sel{background:#fde8e8;font-weight:600}
.slicebar{flex-wrap:wrap}
.fltchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fchip{display:inline-flex;align-items:center;gap:5px;background:#fdecec;border:1px solid #f3b4b4;color:#7a1212;border-radius:14px;padding:3px 9px;font-size:12px}
.fchip b{font-weight:600}
.fchip .fx{cursor:pointer;color:#315BFF;font-weight:700}
.clrx{cursor:pointer;color:#315BFF;font-size:12px;text-decoration:underline}
.ctrlhint{margin-left:auto;color:#9ca3af;font-size:11px}
.fieldwell{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-bottom:8px}
.fwlab{font-size:12px;color:var(--muted);font-weight:700;margin-right:2px}
.fwchip{background:#fff;border:1px solid var(--border);border-radius:13px;padding:3px 10px;cursor:pointer;font-size:12px;color:#071A24}
.fwchip:hover{border-color:var(--kr);color:var(--kr)}
.fwchip.on{background:var(--kr);color:#fff;border-color:var(--kr)}
.hierscroll{max-height:520px;overflow:auto}
.hiertools{display:flex;gap:12px;margin:2px 0 7px;font-size:12px;align-items:center}
.hiertools a{color:var(--kr);cursor:pointer;text-decoration:underline}
.hiertools a:hover{opacity:.8}
.dbarw{position:relative;display:block;min-width:96px;text-align:right}
.dbar{position:absolute;left:0;top:2px;bottom:2px;opacity:.32;border-radius:2px}
.dbarv{position:relative}
.mapfilters{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.mapfilters .slicer label{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}
.mapfilters select{min-width:200px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:13px;color:var(--ink)}
.rumap{width:100%;height:auto;display:block;background:#fff;border-radius:8px}
.rumap .land{fill:#EDECF0;stroke:#CFCCD6;stroke-width:.6}
.rumap .bub{fill:rgba(49,91,255,.5);stroke:#315BFF;stroke-width:1;cursor:pointer}
.rumap .bub:hover{fill:rgba(49,91,255,.82)}
.rumap .bub.sel{fill:rgba(49,91,255,.92);stroke:#071A24;stroke-width:2}
.leafmap{height:460px;border-radius:8px;overflow:hidden;position:relative;z-index:0}
.leaflet-container{font:inherit}
.delta.flat{background:var(--normal);color:#46555b}
.hright{display:flex;align-items:center;gap:8px;margin-left:auto}
.rbtn{background:var(--kr);color:#fff;border:none;border-radius:8px;padding:7px 15px;cursor:pointer;font-size:13px;font-weight:600;white-space:nowrap}
.rbtn:hover{filter:brightness(.93)}.rbtn:disabled{opacity:.6;cursor:default}
.rtime{font-size:11px;color:var(--muted)}
.domain-state{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--muted)}
.domain-state.error{color:var(--kr)}
.pending-page{min-height:260px}.pending-page h2{margin:0 0 8px}.pending-page p{color:var(--muted)}
.table-scroll{overflow:auto;max-width:100%}
.source-warning{margin:0 0 12px;padding:9px 12px;border:1px solid #f3c46b;border-radius:8px;background:#fff8e8;color:#7a5200;font-size:12px}
.source-note{margin:0 0 10px;color:var(--muted);font-size:12px;text-align:right}
.logout{color:var(--kr);cursor:pointer;text-decoration:underline}
.geocols4{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;min-width:560px}
.n1cols4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;min-width:760px}
@media(max-width:1100px){.n1cols4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1100px){.geocols4{grid-template-columns:repeat(2,1fr)}}
.nomempty{color:#c7c7c7;font-size:12px;padding:4px 2px}
.pct.ok{background:var(--positive);color:#071A24}.pct.warn{background:var(--normal);color:#46555b}.pct.low{background:var(--negative);color:#fff}
.abc{display:inline-block;width:22px;text-align:center;border-radius:5px;font-weight:700;font-size:12px}
.abc.A{background:var(--lime);color:var(--ink)}.abc.B{background:var(--normal);color:#46555b}.abc.C{background:var(--negative);color:#fff}
.chart-controls{display:flex;justify-content:flex-end;align-items:center;gap:4px;margin:0;min-height:0}
.grain-switch{display:inline-flex;border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#fff}
.grain-switch button,.values-toggle,.scale-toggle{min-height:23px;border:0;background:#fff;color:var(--muted);font-size:9px;line-height:17px;padding:2px 6px;cursor:pointer;white-space:nowrap}
.grain-switch button+button{border-left:1px solid var(--border)}
.grain-switch button.on,.values-toggle.on{background:var(--kr);color:#fff}
.values-toggle,.scale-toggle{border:1px solid var(--border);border-radius:7px}
.scale-toggle{min-width:44px;font-weight:600}
.scale-toggle:hover,.values-toggle:hover{border-color:var(--kr);color:var(--kr)}
.field-selector{display:flex;gap:7px;align-items:flex-start;margin:0 0 9px;min-width:0}
.field-options{display:flex;flex-wrap:wrap;gap:5px;min-width:0}
.field-options button{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--border);border-radius:7px;color:var(--ink);font-size:11px;padding:4px 8px;cursor:pointer}
.field-options button:hover{border-color:var(--kr);color:var(--kr)}
.field-options button.on{background:var(--lime);border-color:#a6d600;color:var(--ink)}
.field-options button.unavailable{opacity:.52;cursor:not-allowed;border-style:dashed;color:var(--muted)}
.field-options button b{display:inline-grid;place-items:center;min-width:15px;height:15px;border-radius:50%;background:var(--kr);color:#fff;font-size:9px}
.field-options button.on b{background:var(--ink);color:var(--lime)}
.field-hint{margin-left:auto;color:var(--muted);font-size:10px;white-space:nowrap;padding-top:4px}
.hierarchy-matrix .tree-label{display:inline-flex;align-items:center;white-space:nowrap}
.tree-toggle{display:inline-grid;place-items:center;width:17px;height:17px;margin-right:5px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--kr);font-weight:800;cursor:pointer;padding:0}
.tree-spacer{display:inline-block;width:22px}
.hierarchy-matrix tfoot th{font-weight:800;border-top:2px solid var(--border);padding:8px 10px;text-align:right}
.hierarchy-matrix tfoot th:first-child{text-align:left}
.page-switch{display:flex;justify-content:center;margin:0 0 10px}
.page-switch button{min-width:170px;padding:8px 18px;border:1px solid var(--border);background:#fff;color:var(--ink);font-weight:600;cursor:pointer}
.page-switch button:first-child{border-radius:8px 0 0 8px}.page-switch button:last-child{border-radius:0 8px 8px 0}
.page-switch button.on{background:#071A24;color:#fff;border-color:#071A24}
@media(max-width:760px){.chart-controls{justify-content:flex-start;overflow-x:auto}.grain-switch button,.values-toggle,.scale-toggle{padding:1px 5px}.visual-header{align-items:flex-start;flex-wrap:wrap}.visual-title{min-width:50%;padding-top:4px}.visual-header-actions{order:3;max-width:100%;flex:1 1 100%;justify-content:flex-start}.field-selector{display:block}.fwlab{display:block;margin-bottom:5px}.field-hint{display:block;margin-top:5px}.field-options{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}.focus-modal-backdrop{padding:8px}.focus-modal{width:100%;max-height:98vh;padding:43px 8px 8px}.focus-modal-grid{grid-template-columns:1fr;grid-auto-rows:auto}.focus-modal-visual{grid-column:1/-1!important;grid-row:auto!important;min-height:300px}.dashboard-actions{margin-left:auto}.compact-filter-actions{padding:5px 10px}}
.stats-order-sale-stack{display:flex;flex-direction:column;gap:0;min-width:0}
@media (prefers-reduced-motion:reduce){.visual-frame{transition:none}}
/* Unified selection language: lime for interactive highlight, dark text for contrast. */
.chk:hover,.dday:hover:not(.dis),.visual-collapse:hover,table.matrix tbody tr.pickable:hover td,table.matrix tbody tr:hover,.pickrow:hover{background:rgba(201,255,24,.34)}
.dday.sel{background:var(--lime);color:var(--ink);font-weight:700}
.visual-focus-select:hover,.visual-focus-select[aria-pressed="true"]{border-color:#a6d600;background:var(--lime);color:var(--ink)}
.visual-frame.focus-selected{border-color:#a6d600;box-shadow:0 0 0 2px rgba(201,255,24,.55),var(--shadow)}
.focus-filter-chip{border-color:#a6d600;background:rgba(201,255,24,.30)}
.focus-filter-chip b{color:var(--ink)}
table.matrix tbody tr.selected td,.pickrow.sel{background:var(--lime);color:var(--ink);font-weight:600}
.fchip{background:rgba(201,255,24,.36);border-color:#a6d600;color:var(--ink)}
.fchip .fx{color:var(--ink)}
.rumap .bub:hover{fill:rgba(201,255,24,.82)}
.rumap .bub.sel{fill:var(--lime);stroke:var(--ink);stroke-width:2}
.foot{color:var(--muted);font-size:12px;text-align:center;padding:18px}
.brand{position:relative;flex:0 0 161px;width:161px;height:120px;align-self:flex-start;padding:0;overflow:hidden;background:var(--kr)}
.brand img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top}
@media(max-width:900px){.brand{flex:1 1 100%;width:100%;height:72px;min-height:72px;padding:0 12px;background:var(--kr)}.brand img{width:161px;height:72px;object-fit:cover;object-position:center top}.brand .burger{position:relative;z-index:1;margin-left:auto}}
.dax{font-family:ui-monospace,Consolas,monospace;font-size:11px;color:var(--muted)}
canvas{max-width:100%}
