:root{--bg:#ffffff;--surface:#f5f4f5;--fg:#1d1c1d;--muted:#696969;--border:#ebeaeb;--aubergine:#4a154b;--blue:#1264a3;--paid:#2eb67d;--overdue:#e01e5a;--draft:#ecb22e;--sent:#36c5f0;--font:"Lato",system-ui,-apple-system,"Segoe UI","Helvetica Neue",Arial,sans-serif;--mono:"Monaco",SFMono-Regular,Menlo,Consolas,monospace;--rail:280px;--radius:12px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased}.app{display:grid;grid-template-columns:var(--rail) 1fr;height:100vh}.side{background:var(--blue);color:#ffffffdb;display:flex;flex-direction:column;overflow:hidden}.side-top{padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.14);display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:8px;background:var(--aubergine);color:#fff;display:grid;place-items:center;font-weight:900;font-size:15px;flex:none}.side-top h1{font-size:17px;font-weight:900;color:#fff;margin:0;letter-spacing:-.3px;flex:1}.side-top .chev{color:#fff;opacity:.7;font-size:12px}.ws{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.1)}.ws label{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#fff9;display:block;margin-bottom:6px;font-weight:700}.ws select{width:100%;background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:8px;font-size:14px;font-family:var(--font);cursor:pointer}.ws select option{color:var(--fg)}.sect{padding:14px 8px 4px}.sect h2{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#fff9;margin:0 8px 6px;font-weight:700}.chan{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:1px 6px;border-radius:7px;color:#ffffffdb;cursor:pointer;font-size:15px;border:0;background:none;width:calc(100% - 12px);text-align:left;font-family:var(--font)}.chan:hover{background:#ffffff1a;color:#fff}.chan.on{background:#ffffff2e;color:#fff;font-weight:700}.chan .ic{display:inline-flex;width:17px;height:17px;opacity:.9}.side-foot{margin-top:auto;padding:12px 16px;border-top:1px solid rgba(255,255,255,.12);display:flex;align-items:center;gap:8px;font-size:13px;color:#ffffffdb}.dot{width:9px;height:9px;border-radius:50%;background:var(--paid);box-shadow:0 0 0 2px var(--blue)}.main{display:flex;flex-direction:column;min-width:0;background:var(--bg)}.topbar{height:60px;border-bottom:1px solid var(--border);background:var(--bg);display:flex;align-items:center;gap:12px;justify-content:space-between;padding:0 26px;flex:none}.topbar .title{flex:1}.topbar .title{font-weight:900;font-size:20px;letter-spacing:-.01em}.topbar .title .hash{color:var(--muted);font-weight:400;margin-right:4px}.pill{background:var(--surface);color:var(--blue);border:1px solid var(--border);border-radius:999px;padding:5px 14px;font-size:13px;font-weight:700}.range{padding:5px 10px;font-size:13px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-family:var(--font);color:var(--fg);cursor:pointer}.content{padding:24px;overflow:auto;background:var(--bg)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:16px}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:relative;overflow:hidden}.card .x{position:absolute;top:8px;right:10px;z-index:2;border:0;background:none;color:var(--muted);cursor:pointer;font-size:14px}.card .x:hover{color:var(--fg)}.sectionhead{font-size:15px;font-weight:900;margin:26px 0 12px;color:var(--fg);display:flex;align-items:center;gap:8px}.sectionhead:before{content:"";width:4px;height:16px;background:var(--blue);border-radius:2px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}.kpi{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.kpi .lab{font-size:12.5px;color:var(--muted);font-weight:700;display:flex;align-items:center;gap:7px}.kpi .dotk{width:9px;height:9px;border-radius:3px}.kpi .val{font-size:26px;font-weight:900;letter-spacing:-.02em;margin:9px 0 4px;color:var(--fg);font-family:var(--mono);font-variant-numeric:tabular-nums}.kpi .foot{font-size:11.5px;color:var(--muted)}@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.kpis{grid-template-columns:1fr}}.builder{display:flex;flex-direction:column;gap:14px}.palette{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:12px}.palette .search{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:var(--font);margin-bottom:10px;background:var(--surface)}.cubegroup{border-bottom:1px solid var(--border)}.cubegroup:last-child{border-bottom:0}.cubehead{display:flex;align-items:center;gap:8px;padding:8px 4px;cursor:pointer;font-weight:800;font-size:14px;color:var(--fg);-webkit-user-select:none;user-select:none}.cubehead .count{color:var(--muted);font-weight:400;font-size:12px}.cubehead .car{color:var(--muted);font-size:11px;width:12px}.chips{display:flex;flex-wrap:wrap;gap:6px;padding:2px 4px 12px 22px}.chip{padding:5px 10px;border-radius:7px;font-size:13px;cursor:grab;border:1px solid transparent;white-space:nowrap;font-weight:700}.chip.m{background:color-mix(in srgb,var(--blue) 12%,#fff);color:var(--blue);border-color:color-mix(in srgb,var(--blue) 28%,#fff)}.chip.d{background:color-mix(in srgb,var(--paid) 12%,#fff);color:color-mix(in srgb,var(--paid) 55%,var(--fg));border-color:color-mix(in srgb,var(--paid) 30%,#fff)}.chip.t{background:color-mix(in srgb,var(--draft) 16%,#fff);color:color-mix(in srgb,var(--draft) 60%,var(--fg));border-color:color-mix(in srgb,var(--draft) 36%,#fff)}.chip:active{cursor:grabbing}.brow{display:flex;gap:14px;flex-wrap:wrap}.dz{flex:1;min-width:220px}.dz label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px;font-weight:700}.dzbox{min-height:46px;border:1px dashed var(--border);border-radius:10px;padding:8px;background:var(--surface);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.dzbox.over{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 8%,#fff)}.tag{padding:5px 10px;border-radius:7px;font-size:13px;cursor:pointer;font-weight:700}.controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:4px}.controls select,.controls input{padding:8px 9px;font-size:13px;border:1px solid var(--border);border-radius:8px;font-family:var(--font);background:var(--surface)}.addbtn{padding:9px 16px;font-size:13px;font-weight:700;border-radius:999px;border:0;color:#fff;cursor:pointer}.warn{color:var(--overdue);font-size:13px;margin-top:4px;font-weight:700}.fsl-row{display:flex;gap:14px;flex-wrap:wrap}.fsl-block{flex:1;min-width:180px}.fsl-block>label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.fzone{min-height:46px;border:1px dashed var(--border);border-radius:10px;padding:8px;background:var(--surface);display:flex;flex-direction:column;gap:4px}.fzone.over{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 8%,#fff)}.frow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.fname{font-size:13px;font-weight:700;color:var(--blue)}.frow select,.frow input{padding:4px 7px;font-size:12px;border:1px solid var(--border);border-radius:8px;font-family:var(--font);background:var(--bg)}.fxbtn{border:0;background:none;color:var(--muted);cursor:pointer;font-size:13px;padding:2px 4px;line-height:1}.fxbtn:hover{color:var(--fg)}.sort-row{display:flex;align-items:center;gap:8px}.sort-row select{padding:6px 8px;font-size:13px;border:1px solid var(--border);border-radius:8px;font-family:var(--font);background:var(--surface)}.dirbtn{padding:5px 10px;font-size:12px;font-weight:700;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;font-family:var(--font);color:var(--blue)}.dirbtn:hover{background:color-mix(in srgb,var(--blue) 8%,#fff)}.limInput{padding:6px 8px;font-size:13px;width:110px;border:1px solid var(--border);border-radius:8px;font-family:var(--font);background:var(--surface)}.chart-wrap{position:relative}.csvbtn{position:absolute;top:8px;right:8px;z-index:3;padding:3px 10px;font-size:12px;font-weight:700;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--blue);cursor:pointer;font-family:var(--font)}.csvbtn:hover{background:color-mix(in srgb,var(--blue) 8%,#fff)}.drill-hint{font-size:11px;color:var(--muted);text-align:right;padding:2px 8px 4px;pointer-events:none;font-style:italic}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--fg) 45%,transparent);display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 32px color-mix(in srgb,var(--fg) 18%,transparent);max-width:560px;width:calc(100% - 32px);max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);font-weight:700;font-size:15px;flex:none}.modal-close{border:0;background:none;color:var(--muted);cursor:pointer;font-size:16px;padding:2px 6px;line-height:1;border-radius:6px;font-family:var(--font)}.modal-close:hover{color:var(--fg);background:var(--surface)}.drill-table{border-collapse:collapse;width:100%;font-size:13px}.drill-table th{text-align:left;border-bottom:1px solid var(--border);padding:6px 12px;background:var(--surface);position:sticky;top:0;font-weight:700;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.drill-table td{border-bottom:1px solid var(--border);padding:6px 12px;font-family:var(--mono);font-variant-numeric:tabular-nums}.drill-table tbody tr:last-child td{border-bottom:0}.drill-table tbody tr:hover td{background:var(--surface)}
