:root{--bg:#f4f6f8;--surface:#fff;--ink:#14213d;--muted:#5f6b7a;--line:#e3e7ec;--navy:#14213d;--teal:#0f7c8c;--teal-soft:#e2f3f5;--green:#1f8a4c;--green-soft:#e4f4ea;--amber:#b7791f;--amber-soft:#fbf1dd;--red:#b42318;--red-soft:#fbe6e4;--violet:#5b4bc4;--violet-soft:#ebe8fa;--blue:#1d5fbf;--blue-soft:#e3edfb;--teal-strong:#0b6977;--gray-soft:#eef1f4;--hover:#f6f8fa;--line-strong:#cbd3dc;--focus:0 0 0 3px #0f7c8c40;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font:14px / 1.45 var(--sans);margin:0}a{color:inherit;text-decoration:none}.app{grid-template-columns:224px 1fr;min-height:100vh;display:grid}.side{background:var(--navy);color:#c9d2e3;height:100vh;padding:20px 14px;position:sticky;top:0}.brand{color:#fff;align-items:center;gap:10px;padding:4px 8px 18px;font-size:15px;font-weight:700;display:flex}.brand .dot{background:linear-gradient(135deg,#0f7c8c,#58c2d0);border-radius:7px;width:26px;height:26px}.brand small{color:#8c9ab5;font-size:11px;font-weight:500;display:block}.nav a{border-radius:8px;align-items:center;gap:10px;margin-bottom:2px;padding:9px 10px;font-size:13.5px;display:flex}.nav a:hover{color:#fff;background:#ffffff0f}.nav a.active{color:#fff;background:#ffffff1f;font-weight:600}.nav .ic{text-align:center;opacity:.85;width:18px}.nav .sec{letter-spacing:.08em;text-transform:uppercase;color:#7b8aa8;padding:16px 10px 6px;font-size:10.5px}.side .foot{color:#7b8aa8;font-size:11px;line-height:1.5;position:absolute;bottom:18px;left:14px;right:14px}.pill{white-space:nowrap;border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:600;line-height:1.7;display:inline-flex}.pill.ok{background:var(--green-soft);color:var(--green)}.pill.warn{background:var(--amber-soft);color:var(--amber)}.pill.bad{background:var(--red-soft);color:var(--red)}.pill.info{background:var(--teal-soft);color:var(--teal)}.pill.vio{background:var(--violet-soft);color:var(--violet)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.gray{background:var(--gray-soft);color:var(--muted)}.main{min-width:0;padding:0 28px 40px}.top{border-bottom:1px solid var(--line);background:var(--bg);z-index:5;justify-content:space-between;align-items:center;margin-bottom:20px;padding:18px 0 14px;display:flex;position:sticky;top:0}.top h1{margin:0;font-size:19px;font-weight:700}.top .sub{color:var(--muted);margin-top:2px;font-size:12.5px}.top .actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);height:34px;color:var(--ink);font:600 13px / 1 var(--sans);white-space:nowrap;cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 14px;transition:background-color .12s,border-color .12s,box-shadow .12s;display:inline-flex;box-shadow:0 1px #14213d0a}.btn:hover:not(:disabled){background:var(--hover);border-color:var(--line-strong)}.btn:focus-visible{box-shadow:var(--focus);outline:none}.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.primary:hover:not(:disabled){background:var(--teal-strong);border-color:var(--teal-strong)}.btn.ghost{box-shadow:none;background:0 0}.btn.ghost:hover:not(:disabled){background:#fff}.btn.sm{border-radius:7px;height:28px;padding:0 10px;font-size:12px}.side .source{gap:8px;padding:9px 10px;font-size:13px}.side .pill{padding:0 7px;font-size:10.5px}.side .btn.ghost{color:#c9d2e3;border-color:#ffffff2e}.side .btn.ghost:hover{background:#ffffff14;border-color:#ffffff4d}.grid{gap:16px;display:grid}.g6{grid-template-columns:repeat(6,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.g-2-1{grid-template-columns:2fr 1fr}.g-1-2{grid-template-columns:1fr 2fr}.g-3-2{grid-template-columns:3fr 2fr}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.card h3{justify-content:space-between;align-items:center;margin:0 0 12px;font-size:13px;font-weight:700;display:flex}.card h3 .src{color:var(--muted);font-size:11px;font-weight:500}.kpi .label{color:var(--muted);margin-bottom:6px;font-size:12px}.kpi .val{font:600 22px / 1.1 var(--mono);letter-spacing:-.01em}.kpi .delta{color:var(--muted);margin-top:6px;font-size:11.5px}.kpi .delta.up{color:var(--green)}.kpi .delta.down{color:var(--red)}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-size:11px;font-weight:600}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.neg{color:var(--red)}.pos{color:var(--green)}.muted{color:var(--muted)}.bar{background:#eef1f4;border-radius:4px;height:8px;overflow:hidden}.bar i{background:var(--teal);border-radius:4px;height:100%;display:block}.bar i.warn{background:var(--amber)}.bar i.bad{background:var(--red)}.bar i.vio{background:var(--violet)}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.stack>*+*{margin-top:10px}.chip{--chip:var(--teal);--chip-soft:var(--teal-soft);border:1px solid var(--line);height:30px;color:var(--muted);font:600 12.5px / 1 var(--sans);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:0 12px;transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}.chip:hover{border-color:var(--line-strong);background:var(--hover);color:var(--ink)}.chip:focus-visible{box-shadow:var(--focus);outline:none}.chip.on{border-color:var(--chip);background:var(--chip-soft);color:var(--chip)}.chip.on:hover{background:var(--chip-soft);filter:brightness(.97)}.chip.red,.chip.amber,.chip.blue,.chip.vio,.chip.teal,.chip.gray{padding-left:10px}.chip.red:before,.chip.amber:before,.chip.blue:before,.chip.vio:before,.chip.teal:before,.chip.gray:before{content:"";background:var(--chip);border-radius:50%;width:7px;height:7px}.chip.red{--chip:var(--red);--chip-soft:var(--red-soft)}.chip.amber{--chip:var(--amber);--chip-soft:var(--amber-soft)}.chip.blue{--chip:var(--blue);--chip-soft:var(--blue-soft)}.chip.vio{--chip:var(--violet);--chip-soft:var(--violet-soft)}.chip.teal{--chip:var(--teal);--chip-soft:var(--teal-soft)}.chip.gray{--chip:#7a8696;--chip-soft:var(--gray-soft)}.chip.gray.on{color:var(--ink)}.filters{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.filters .filter-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.filters .group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filters .group+.group{border-left:1px solid var(--line);margin-left:6px;padding-left:12px}.filters .label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-right:2px;font-size:11px;font-weight:700}.input{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:8px;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .12s,box-shadow .12s}input.input,select.input{height:34px;padding-top:0;padding-bottom:0}.input:hover{border-color:var(--line-strong)}.input:focus{border-color:var(--teal);box-shadow:var(--focus);outline:none}.input.wide{min-width:260px}textarea.input{resize:vertical;width:100%;min-height:72px}.spark{align-items:flex-end;gap:3px;height:48px;display:flex}.spark i{background:var(--teal);opacity:.85;border-radius:2px 2px 0 0;flex:1}.spark i.lo{background:#c9d2e3}.spark i.red{background:var(--red)}.legend{color:var(--muted);gap:14px;margin-top:8px;font-size:11.5px;display:flex}.legend b{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:5px;display:inline-block}.note{background:#fffbea;border:1px solid #f1e3a3;border-radius:8px;padding:8px 10px;font-size:12.5px}.callout{background:var(--teal-soft);border:1px solid #bfe2e7;border-radius:10px;padding:12px 14px;font-size:12.5px}.callout.warn{background:var(--amber-soft);border-color:#eed4a2}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;position:sticky;top:76px}.panel h4{margin:0 0 4px;font-size:14px}.kv{grid-template-columns:120px 1fr;gap:6px 10px;font-size:12.5px;display:grid}.kv dt{color:var(--muted)}.kv dd{font-family:var(--mono);margin:0}.tl{margin:0;padding:0;list-style:none}.tl li{border-bottom:1px solid var(--line);grid-template-columns:84px 1fr auto;align-items:center;gap:10px;padding:8px 0;display:grid}.tl li:last-child{border-bottom:0}.tl .d{font-family:var(--mono);color:var(--muted);font-size:12px}.tl .a{font-family:var(--mono);font-weight:600}.mask{font-family:var(--mono);letter-spacing:.08em}.split{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;display:grid}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:14px;display:flex}.tabs a{color:var(--muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-size:13px;font-weight:600}.tabs a.active{color:var(--teal);border-color:var(--teal)}.big{font:600 28px / 1 var(--mono)}@media (max-width:1100px){.g6{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(2,1fr)}.g-2-1,.g-1-2,.g-3-2,.g3{grid-template-columns:1fr}.panel{position:static}}@media (max-width:760px){.app{grid-template-columns:1fr}.side{height:auto;position:static}.side .foot{margin-top:16px;position:static}.main{padding:0 16px 32px}.g6,.g2{grid-template-columns:1fr 1fr}}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.red{background:var(--red-soft);color:var(--red)}.btn:disabled{opacity:.55;cursor:not-allowed}.empty{color:var(--muted);text-align:center;padding:18px 0;font-size:13px}.disclaimer{color:var(--amber);font-size:12px;font-weight:600}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login .card{width:100%;max-width:360px}.login form{gap:12px;display:grid}.login .err{color:var(--red);font-size:12.5px}.card.flush{padding:0;overflow-x:auto}.nowrap{white-space:nowrap}.panel-sec{margin:14px 0 6px;font-size:12.5px;font-weight:700}tr.selected td{background:var(--teal-soft)}.mono{font-family:var(--mono)}button.chip:disabled{opacity:.6;cursor:progress}.donut{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.donut svg a circle{transition:stroke-width .12s}.donut svg a:hover circle{stroke-width:28px}.donut-total{font:700 17px var(--mono);fill:var(--ink)}.donut-cap{font:10px var(--sans);fill:var(--muted)}.legend-list{flex:1;min-width:220px;margin:0;padding:0;font-size:13px;list-style:none}.legend-list li{grid-template-columns:1fr auto 40px;align-items:center;gap:8px;padding:3px 0;display:grid}.legend-list li a{align-items:center;gap:8px;display:flex}.legend-list li a:hover{color:var(--teal)}.legend-list .mono{text-align:right}.pace{background:var(--gray-soft);border-radius:5px;height:10px;position:relative}.pace i{border-radius:5px;position:absolute;inset:0 auto 0 0}.pace b{background:var(--ink);width:2px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.pace.hot{box-shadow:0 0 0 2px var(--amber-soft)}table.pace-table td{padding-top:6px;padding-bottom:6px}.mini-spark{vertical-align:middle;align-items:flex-end;gap:2px;width:64px;height:22px;display:inline-flex}.mini-spark i{border-radius:1px;flex:1}.heat{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.heat-h{text-align:center;color:var(--muted);font-size:10.5px}.heat-c{background:#f1f4f7;border-radius:6px;height:44px;font-size:10.5px;position:relative}.heat-c small{color:inherit;opacity:.75;position:absolute;top:3px;left:5px}.heat-c em{font:600 10px var(--mono);font-style:normal;position:absolute;bottom:3px;right:5px}.heat-c.future{border:1px dashed var(--line);background:0 0}.heat-c.today{outline:2px solid var(--ink);outline-offset:-2px}.vbars{align-items:flex-end;gap:6px;height:140px;display:flex}.vbars>div{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:3px;height:100%;display:flex}.vbars i{border-radius:3px 3px 0 0;width:100%}.vbars small{color:var(--muted);font-size:10px}.vbars span{color:var(--muted);font-size:10.5px}.stack-trend{align-items:flex-end;gap:10px;height:260px;display:flex}.stack-trend>div{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:3px;height:100%;font-size:11px;display:flex}.stack-trend .col{border-radius:4px;flex-direction:column;width:100%;min-height:2px;display:flex;overflow:hidden}.stack-trend .col i{min-height:1px;display:block}.spend-tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:14px;display:flex;overflow-x:auto}nav.spend-tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:9px 11px;font-size:13px;font-weight:600;display:inline-flex}nav.spend-tabs a:hover{color:var(--ink)}nav.spend-tabs a.active{color:var(--ink);border-color:var(--teal)}nav.spend-tabs a small{font:500 11px var(--mono);color:var(--muted)}.seg{border:1px solid var(--line);background:#fff;border-radius:8px;display:inline-flex;overflow:hidden}span.seg a{height:32px;color:var(--muted);align-items:center;padding:0 12px;font-size:12.5px;font-weight:600;display:inline-flex}span.seg a.on{background:var(--teal-soft);color:var(--teal)}.split-bar{background:var(--gray-soft);border-radius:6px;height:12px;margin:6px 0 12px;display:flex;overflow:hidden}.app:has(.insp){grid-template-columns:60px 1fr}.app:has(.insp) .side{padding:20px 8px}.app:has(.insp) .brand{justify-content:center;padding:4px 0 18px}.app:has(.insp) .brand>span:last-child{display:none}.app:has(.insp) .nav .lbl{display:none}.app:has(.insp) .nav .sec{display:none}.app:has(.insp) .side .source{display:none}.app:has(.insp) .side .foot{display:none}.app:has(.insp) .nav a{justify-content:center;padding:10px 0}.insp{grid-template-columns:0 1fr;margin-left:-28px;transition:grid-template-columns .22s;display:grid}.insp.open{grid-template-columns:340px 1fr}.insp-panel{background:var(--surface);border-right:1px solid var(--line);height:100vh;position:sticky;top:0;overflow:hidden}.insp-panel-inner{flex-direction:column;width:340px;height:100%;display:flex}.insp-main{min-width:0;max-width:1120px;padding-left:28px}.drawer-head{justify-content:space-between;align-items:center;padding:14px 16px 8px;display:flex}.drawer-search{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:0 16px 10px;display:flex}.drawer-search .input{flex:1}.drawer-body{padding:10px 16px 24px;font-size:13px;overflow-y:auto}.drawer-sec{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px;font-size:11px;font-weight:700}.drawer-links{flex-wrap:wrap;gap:6px;display:flex}.drawer-filters{grid-template-columns:1fr 1fr;gap:8px;display:grid}.drawer-filters .input{width:100%}.drawer-filters .full{grid-column:1/-1}aside.insp-panel .tree-folder{margin:2px 0}aside.insp-panel .tree-top,aside.insp-panel .tree-sub{border-radius:7px;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;padding:6px 8px;display:grid}aside.insp-panel .tree-top{font-weight:600}aside.insp-panel .tree-sub{color:var(--ink);grid-template-columns:1fr auto;padding-left:28px}aside.insp-panel .tree-top:hover,aside.insp-panel .tree-sub:hover{background:var(--hover)}aside.insp-panel .tree-top.active,aside.insp-panel .tree-sub.active{background:var(--teal-soft);color:var(--teal)}aside.insp-panel .tree-folder .mono,aside.insp-panel .tree-sub .mono{color:var(--muted);font-size:12px}aside.insp-panel .tree-sub[data-empty="1"],aside.insp-panel .tree-folder[data-empty="1"] .tree-top{opacity:.6}aside.insp-panel .tree-folder[hidden],aside.insp-panel .tree-sub[hidden]{display:none}.work-groups details{border-bottom:1px solid var(--line)}.work-groups summary{cursor:pointer;grid-template-columns:1fr auto 80px;align-items:center;gap:10px;padding:9px 4px 9px 18px;font-size:13px;list-style:none;display:grid;position:relative}.work-groups summary::-webkit-details-marker{display:none}.work-groups summary:before{content:"▸";color:var(--muted);transition:transform .12s;position:absolute;left:4px}.work-groups summary:hover{background:var(--hover)}.work-groups .work-client{font-weight:600}.work-groups summary .muted{font-size:12px}.work-amt{font-family:var(--mono);text-align:right}.work-groups details table{width:calc(100% - 18px);margin:0 0 8px 18px}.work-groups details[open] summary:before{transform:rotate(90deg)}.work-total{grid-template-columns:1fr 80px;padding:10px 4px 0 18px;font-weight:700;display:grid}.work-groups .show-more{margin:8px 0 0 18px}
