:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5f7;--surface:#fff;--surface-2:#f7f7f5;--border:#e5e7eb;--hairline:#0b0b0b1a;--text:#0b0b0b;--text-2:#52514e;--text-3:#75746e;--link:#1c5cab;--header:#27a745;--brand-strong:#1e7e34;--grid:#ececea;--baseline:#c3c2b7;--series-1:#2a78d6;--series-2:#eb6834;--on-time:#c3c2b7;--late-1:#f28881;--late-2:#e45d58;--late-3:#c8393a;--late-4:#a12628;--cat-reactive:#4a3aa7;--cat-pm:#1baf7a;--cat-install:#eda100;--cat-other:#e87ba4;--cat-none:#898781;--good-ink:#006300;--bad-ink:#b42323;--flag-bg:#fff1e6;--flag-ink:#9a3412;--notice-bg:#fffbeb;--notice-ink:#7c5800;--error-bg:#fef2f2;--error-ink:#991b1b;--tooltip-bg:#0b0b0b;--tooltip-ink:#fff;--shadow:0 1px 2px #0b0b0b0a, 0 1px 1px #0b0b0b08}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#111110;--surface:#1a1a19;--surface-2:#222220;--border:#2f2f2c;--hairline:#ffffff1a;--text:#fff;--text-2:#c3c2b7;--text-3:#9c9b93;--link:#86b6ef;--header:#1e7e34;--brand-strong:#1e7e34;--grid:#2a2a27;--baseline:#383835;--series-1:#3987e5;--series-2:#d95926;--on-time:#52514e;--late-1:#9a3130;--late-2:#c43f3e;--late-3:#e0615c;--late-4:#f28881;--cat-reactive:#9085e9;--cat-pm:#199e70;--cat-install:#c98500;--cat-other:#d55181;--cat-none:#7a7974;--good-ink:#0ca30c;--bad-ink:#f28881;--flag-bg:#3a2310;--flag-ink:#fdba74;--notice-bg:#3a2e10;--notice-ink:#fcd34d;--error-bg:#3a1717;--error-ink:#fca5a5;--tooltip-bg:#f7f7f5;--tooltip-ink:#0b0b0b;--shadow:none}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.45;overflow-x:clip}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--text-3)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.header{background:var(--header);color:#fff;align-items:center;gap:14px;padding:12px max(16px,50% - 584px);display:flex}.header img{height:28px;display:block}.header .title{letter-spacing:.01em;border-left:1px solid #ffffff59;padding-left:14px;font-size:19px;font-weight:700}.wrap{max-width:1200px;margin:0 auto;padding:16px 16px 48px}.toolbar{color:var(--text-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin:4px 0 16px;font-size:13px;display:flex}.toolbar .group{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.6;cursor:progress}.btn.primary{background:var(--brand-strong);border-color:var(--brand-strong);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.linkbtn{appearance:none;color:var(--text-2);font:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.banner{border-radius:10px;margin-bottom:16px;padding:10px 14px;font-size:13px}.banner.notice{background:var(--notice-bg);color:var(--notice-ink)}.banner.error{background:var(--error-bg);color:var(--error-ink)}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;min-width:0;padding:18px 20px}.card h2{margin:0;font-size:14px;font-weight:650}.card .sub{color:var(--text-3);margin:2px 0 0;font-size:12.5px}.card-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.card-head a{white-space:nowrap;font-size:12.5px}.grid{gap:16px;margin-bottom:16px;display:grid}.grid.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.charts{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.chart-stack{flex-direction:column;gap:16px;min-width:0;display:flex}.chart-stack>.card{flex:1 1 0}.daily-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin-bottom:8px;display:flex}.daily-head h2{margin:0}.daily-body{flex-direction:column;flex:auto;min-height:0;display:flex}.chart-skel{flex:auto;min-height:220px}.grid.lists{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:980px){.grid.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.charts,.grid.lists{grid-template-columns:minmax(0,1fr)}}@media (max-width:520px){.grid.kpis{grid-template-columns:minmax(0,1fr)}.card{padding:16px}}.hero{margin-bottom:16px}.hero-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px 32px;margin-bottom:18px;display:flex}.hero .label{color:var(--text-2);font-size:13px;font-weight:600}.hero .value{letter-spacing:-.02em;margin:4px 0 6px;font-size:52px;font-weight:650;line-height:1.05}.hero .context{color:var(--text-2);font-size:14px}.hero .context strong{color:var(--text)}.hero-facts{flex-wrap:wrap;gap:12px 28px;display:flex}.fact .fact-value{font-size:20px;font-weight:650}.fact .fact-label{color:var(--text-3);font-size:12.5px}.stack{gap:2px;width:100%;height:22px;display:flex}.seg{cursor:default;min-width:3px;height:100%;position:relative}.seg:first-child{border-radius:4px 0 0 4px}.seg:last-child{border-radius:0 4px 4px 0}.seg:only-child{border-radius:4px}.seg:hover,.seg:focus-visible{filter:brightness(1.08)saturate(1.1)}.swatch{border-radius:2px;flex:none;width:10px;height:10px;display:inline-block}.fill-on-time{background:var(--on-time)}.fill-late-1{background:var(--late-1)}.fill-late-2{background:var(--late-2)}.fill-late-3{background:var(--late-3)}.fill-late-4{background:var(--late-4)}.fill-series-1{background:var(--series-1)}.fill-series-2{background:var(--series-2)}.fill-cat-reactive{background:var(--cat-reactive)}.fill-cat-pm{background:var(--cat-pm)}.fill-cat-install{background:var(--cat-install)}.fill-cat-other{background:var(--cat-other)}.fill-cat-none{background:var(--cat-none)}.line-key{background:var(--series-2);border-radius:1px;width:14px;height:2px;display:inline-block}.legend{color:var(--text-2);flex-wrap:wrap;gap:8px 22px;margin-top:12px;font-size:12.5px;display:flex}.legend .item{align-items:center;gap:7px;display:flex}.legend .amt{color:var(--text);font-weight:600}.tip{background:var(--tooltip-bg);color:var(--tooltip-ink);white-space:nowrap;pointer-events:none;opacity:0;z-index:5;border-radius:8px;padding:7px 10px;font-size:12px;line-height:1.35;transition:opacity .12s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.tip strong{font-size:13px;display:block}.tip .row{align-items:center;gap:6px;display:flex}.tip .key{border-radius:1px;width:12px;height:2px}:hover>.tip,:focus-visible>.tip{opacity:1}.kpi .label{color:var(--text-2);font-size:13px;font-weight:600}.kpi .value{letter-spacing:-.01em;margin:6px 0 4px;font-size:30px;font-weight:650}.kpi .detail{color:var(--text-3);font-size:12.5px}.kpi .detail+.detail{margin-top:2px}.cmp{gap:3px;margin:8px 0 6px;font-size:12.5px;display:grid}.cmp-row{grid-template-columns:minmax(0,1fr) auto 62px;align-items:baseline;gap:8px;display:grid}.cmp-label{color:var(--text-2);white-space:nowrap}.cmp-amt{color:var(--text-3);text-align:right}.cmp .delta{text-align:right;white-space:nowrap}.delta{font-weight:600}.delta.good{color:var(--good-ink)}.delta.bad{color:var(--bad-ink)}.delta.flat{color:var(--text-2)}.chart-card{flex-direction:column;display:flex}.cols{flex:auto;min-height:150px;margin:16px 0 0 44px;position:relative}.cols .gridline{background:var(--grid);height:1px;position:absolute;left:0;right:0}.cols .gridline.base{background:var(--baseline)}.cols .tick{color:var(--text-3);white-space:nowrap;font-size:11px;position:absolute;right:calc(100% + 8px);transform:translateY(-50%)}.cols .weeks{display:flex;position:absolute;inset:0}.week{outline-offset:-2px;border-radius:6px;flex:1;justify-content:center;align-items:flex-end;gap:2px;display:flex;position:relative}.week:hover,.week:focus-visible{background:var(--surface-2)}.week .bar{border-radius:4px 4px 0 0;width:min(18px,36%);min-height:1px}.week.partial .bar{opacity:.55}.week .tip{top:4px;bottom:auto}.xlabels{margin:6px 0 0 44px;display:flex}.xlabels span{text-align:center;color:var(--text-3);white-space:nowrap;flex:1;font-size:11px}@media (max-width:520px){.xlabels.alternate span:nth-child(2n){visibility:hidden}}.section-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;margin:8px 0 10px;display:flex}.section-bar h2{margin:0;font-size:15px;font-weight:650}.range{flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:12.5px;display:flex}.presets,.custom{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-2);font:inherit;cursor:pointer;border-radius:999px;padding:4px 11px;font-weight:600}.chip:hover{background:var(--surface-2);color:var(--text)}.chip.on{background:var(--text);border-color:var(--text);color:var(--surface)}.range-select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:4px 26px 4px 10px;font-weight:600}.custom input[type=date]{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:3px 6px}.daily .total{color:var(--text)}.daily .cols{min-height:170px}.skel-card{background:linear-gradient(90deg, var(--surface), var(--surface-2), var(--surface));background-size:200% 100%;height:330px;animation:1.4s ease-in-out infinite shimmer}.cols .days{display:flex;position:absolute;inset:0}.day{outline-offset:-2px;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.bar-slot{justify-content:center;align-items:flex-end;display:flex}.daily-cols,.xlabels.daily-x{margin-right:40px}.cols .tick.right{left:calc(100% + 8px);right:auto}.count-line{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.count-line polyline{stroke:var(--series-2);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.count-dot{background:var(--series-2);width:8px;height:8px;box-shadow:0 0 0 2px var(--surface);pointer-events:none;z-index:3;border-radius:50%;position:absolute;transform:translate(-50%,50%)}.day:hover,.day:focus-visible{background:var(--surface-2)}.day .bar{border-radius:4px 4px 0 0;width:min(14px,70%);min-height:1px}.day.partial .bar{opacity:.55}.day .tip{top:4px;bottom:auto}details.numbers{margin-top:14px;font-size:12.5px}details.numbers summary{cursor:pointer;color:var(--text-2)}table.data{border-collapse:collapse;width:100%;margin-top:8px}table.data th,table.data td{text-align:right;border-bottom:1px solid var(--grid);padding:5px 6px}table.data th:first-child,table.data td:first-child{text-align:left}table.data th{color:var(--text-3);font-weight:600}.custs{gap:10px;display:grid}.cust{color:inherit;border-radius:6px;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:4px 12px;display:grid}.cust:hover{text-decoration:none}.cust:hover .cust-name{text-decoration:underline}.cust-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.cust-amt{text-align:right;font-weight:600}.cust .stack{grid-column:1/-1;height:10px}.cust .note{color:var(--text-3);grid-column:1/-1;margin-top:-2px;font-size:12px}.rest{border-top:1px solid var(--grid);color:var(--text-2);justify-content:space-between;gap:12px;margin-top:2px;padding-top:10px;font-size:12.5px;display:flex}.legend.tight{gap:6px 16px;margin-top:8px}.bar-block{margin-top:12px}.bar-title{color:var(--text-2);margin-bottom:6px;font-size:12px;font-weight:600}.cust .pair{grid-column:1/-1;gap:3px;display:grid}.cust .pair .stack{height:8px}.table-scroll{overflow-x:auto}.tabs{border-bottom:1px solid var(--grid);flex-wrap:wrap;gap:4px;margin:-4px 0 14px;display:flex}.tab{appearance:none;font:inherit;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 10px 8px;font-size:14px;font-weight:650}.tab:hover{color:var(--text)}.tab.on{color:var(--text);border-bottom-color:var(--header)}.panel-sub{margin:0 0 12px}.panel-h{color:var(--text-2);margin:18px 0 10px;font-size:13px;font-weight:650}.ytd-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;margin-bottom:12px;display:flex}.ytd-head .label{color:var(--text-2);font-size:13px;font-weight:600}.ytd-value{letter-spacing:-.01em;margin:2px 0;font-size:28px;font-weight:650}.ytd-refresh{flex-direction:column;align-items:flex-end;gap:6px;font-size:12px;display:flex}.rows{margin:0;padding:0;list-style:none}.rows li+li{border-top:1px solid var(--grid)}.rows a{color:inherit;border-radius:6px;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;margin:0 -6px;padding:9px 6px;display:grid}.rows a:hover{background:var(--surface-2);text-decoration:none}.rows .primary{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.rows .amount{text-align:right;font-weight:600}.rows .secondary{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.rows .right2{color:var(--text-3);text-align:right;white-space:nowrap;font-size:12px}.flag{background:var(--flag-bg);color:var(--flag-ink);vertical-align:1px;border-radius:999px;align-items:center;gap:4px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:650;display:inline-flex}.late{color:var(--bad-ink);font-weight:600}.empty{color:var(--text-3);padding:10px 0;font-size:13px}.skel{background:linear-gradient(90deg, var(--surface-2), var(--border), var(--surface-2));background-size:200% 100%;border-radius:8px;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skel,.skel-card,.spin{animation:none}}.loading-note{color:var(--text-3);margin:4px 0 16px;font-size:13px}.login{place-items:center;min-height:calc(100vh - 52px);padding:24px 16px;display:grid}.login .card{text-align:center;width:100%;max-width:380px;padding:28px 24px}.login h1{margin:0 0 4px;font-size:20px}.login p{margin:0 0 20px}.login .btn{justify-content:center;width:100%;padding:10px 14px;font-size:14px}.login .err{color:var(--error-ink);background:var(--error-bg);border-radius:8px;margin-top:14px;padding:8px 10px;font-size:13px}
