:root{--control-height:34px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--surface-0:#f4f4f2;--surface-1:#fcfcfb;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#6f6e69;--grid:#e3e2de;--border:#d9d8d3;--series-1:#2a78d6;--series-1-soft:#d6e6f8;--series-2:#eb6834;--series-2-soft:#fbe1d5;--critical:#b42318;--critical-soft:#fde8e6;--positive:#1a7f37;--warning:#9a6700;--accent-text:#1f5fae;--placeholder:#76756f}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--surface-0:#121211;--surface-1:#1a1a19;--text-primary:#f0efec;--text-secondary:#c3c2b7;--text-muted:#9a998f;--grid:#2e2e2c;--border:#3a3a37;--series-1:#3987e5;--series-1-soft:#1d3350;--series-2:#d95926;--series-2-soft:#4a2616;--critical:#f97066;--critical-soft:#3a1714;--positive:#4ac26b;--warning:#d4a72c;--accent-text:#8ab8f0;--placeholder:#807f79}}*{box-sizing:border-box}body{background:var(--surface-0);color:var(--text-primary);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}main{max-width:960px;margin:0 auto;padding:32px 16px 64px}h1{margin:0 0 4px;font-size:1.5rem}.as-of{color:var(--text-secondary);margin:0 0 24px;font-size:.9rem}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:8px;margin-bottom:24px;padding:16px}.chart{width:100%;height:320px}.error{color:var(--critical)}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th,td{border-bottom:1px solid var(--grid);text-align:left;padding:8px 12px}th.num,td.num{text-align:right}thead th{color:var(--text-secondary);font-size:.85rem;font-weight:600}tfoot td{border-bottom:none;border-top:2px solid var(--border);font-weight:700}.topbar{background:var(--surface-1);border-bottom:1px solid var(--border)}.nav{flex-wrap:wrap;align-items:center;gap:4px 24px;max-width:1100px;margin:0 auto;padding:0 16px;display:flex}.brand{padding:12px 0;font-weight:700}.nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav a{color:var(--text-secondary);border-bottom:2px solid #0000;padding:12px 10px;text-decoration:none;display:inline-block;position:relative}.nav a:hover{color:var(--text-primary)}.nav a[aria-current=page]{color:var(--text-primary);border-bottom-color:var(--series-1);font-weight:600}.chart-tooltip{background:var(--surface-1);border:1px solid var(--border);border-radius:8px;min-width:180px;padding:10px 12px;box-shadow:0 4px 16px #00000040}.chart-tooltip-label,.chart-tooltip-caption{color:var(--text-secondary);font-size:.8rem}.chart-tooltip-value{background:var(--surface-0);border:1px solid var(--border);color:var(--text-primary);font-variant-numeric:tabular-nums;border-radius:999px;margin:6px 0 4px;padding:4px 10px;font-size:1.15rem;font-weight:700;display:inline-block}.chart-tooltip-swatch{border-radius:2px;width:10px;height:10px}.chart-tooltip-sources{border-top:1px solid var(--grid);font-variant-numeric:tabular-nums;grid-template-columns:auto auto auto auto;align-items:center;gap:4px 8px;margin:8px 0 0;padding:8px 0 0;font-size:.8rem;list-style:none;display:grid}.chart-tooltip-sources li{display:contents}.chart-tooltip-source{color:var(--text-secondary)}.chart-tooltip-source-revenue{color:var(--text-primary);text-align:right;font-weight:600}.chart-tooltip-source-invoices{color:var(--text-secondary);text-align:right}.chart-legend{height:20px;color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:16px;margin:0 0 8px;padding:0;font-size:.85rem;line-height:20px;list-style:none;display:flex;overflow:hidden}.chart-legend li,.skeleton-legend-item{align-items:center;display:inline-flex}.skeleton-legend-name{width:7em;height:.8rem}.nav-signout{margin-left:auto}.auth-page{max-width:480px}.auth-card h1{margin-top:0}main.wide{max-width:1100px}h2{margin:0 0 12px;font-size:1.1rem}.badge{white-space:nowrap;vertical-align:middle;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge-partial{background:var(--surface-0);color:var(--text-secondary);border:1px dashed var(--text-secondary)}.partial-note{color:var(--text-secondary);margin:8px 0 0;font-size:.85rem}.swatch{vertical-align:-1px;border-radius:2px;width:12px;height:12px;margin-right:6px;display:inline-block}.swatch-partial{background:repeating-linear-gradient(45deg, var(--text-secondary) 0 2px, transparent 2px 5px)}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.filters label{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:.8rem;display:flex}.filters select,.filters input,.filters button{height:var(--control-height);box-sizing:border-box}.filter-actions{flex-wrap:nowrap;gap:12px;display:flex}.filters select,.filters input{font:inherit;color:var(--text-primary);background:var(--surface-0);border:1px solid var(--border);border-radius:6px;min-width:140px;padding:6px 8px;font-size:.9rem}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface-0);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:.9rem}button.link{color:var(--accent-text);font-variant-numeric:tabular-nums;background:0 0;border:none;padding:0;text-decoration:underline}.table-scroll{overflow-x:auto}.table-scroll table{min-width:720px}td.muted,.muted{color:var(--text-muted)}.empty{color:var(--text-secondary);margin:0}.unmapped{color:var(--text-muted);margin-left:4px;font-size:.8rem}.trend{font:inherit;border:1px solid var(--border);white-space:nowrap;cursor:help;background:0 0;border-radius:999px;align-items:center;gap:3px;padding:1px 6px;font-size:.8rem;font-weight:600;line-height:1.4;display:inline-flex}.trend:hover{border-color:currentColor}.trend:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.trend-symbol{font-size:.85em;line-height:1}.trend-growing{color:var(--positive)}.trend-declining,.trend-churned{color:var(--critical)}.trend-new{color:var(--accent-text)}.trend-stable{color:var(--text-secondary)}.trend-wrap{display:inline-block}.trend-tip{z-index:10;background:var(--surface-1);width:max-content;max-width:min(24em,100vw - 16px);color:var(--text-primary);border:1px solid var(--border);white-space:normal;text-align:left;border-radius:6px;padding:6px 10px;font-size:.8rem;font-weight:400;line-height:1.4;display:none;position:fixed;top:0;left:0;box-shadow:0 4px 16px #00000040}.trend-tip[data-open=true]{display:block}.trend-tip:before{content:"";height:8px;position:absolute;left:0;right:0}.trend-tip[data-place=below]:before{bottom:100%}.trend-tip[data-place=above]:before{top:100%}main.wide-table{max-width:1680px}.table-scroll-bar{z-index:4;background:var(--surface-1);flex-direction:column;justify-content:flex-end;gap:2px;height:38px;padding-bottom:4px;display:flex;position:sticky;top:0}.table-scroll-bar[data-overflow=false]{visibility:hidden}.table-scroll-cues{color:var(--text-secondary);justify-content:space-between;font-size:.8rem;font-weight:600;line-height:18px;display:flex}.table-scroll-cue{cursor:pointer;-webkit-user-select:none;user-select:none}.table-scroll-cue[data-visible=false]{visibility:hidden}.table-scroll-mirror{scroll-behavior:auto;height:12px;overflow:auto hidden}.table-scroll-mirror-inner{height:1px}.table-scroll-mirror::-webkit-scrollbar{height:10px}.table-scroll-mirror::-webkit-scrollbar-track{background:var(--surface-0);border:1px solid var(--border);border-radius:5px}.table-scroll-mirror::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:5px}@supports not selector(::-webkit-scrollbar){.table-scroll-mirror{scrollbar-width:thin;scrollbar-color:var(--text-muted) var(--surface-0)}}.table-scroller{scroll-behavior:auto;overscroll-behavior-x:contain;scroll-padding-inline:var(--col-left,0px) var(--col-right,0px);overflow:auto hidden}.table-scroller:focus{outline:none}.table-scroller:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.table-scroller:has(>.customers-table){--col-total:14ch;--col-trend:14ch;scroll-padding-inline:var(--col-left,14em) var(--col-right,calc(var(--col-total) + var(--col-trend)))}.customers-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;font-size:14px}.customers-table th,.customers-table td{padding:6px 8px}.customers-table .month-cell{padding-left:4px;padding-right:4px}.customers-table thead th,.customers-table .num{white-space:nowrap}.customers-table button.link{font-size:inherit;scroll-margin-inline:4px}.customers-table tbody tr:last-child>*{border-bottom:none}.customers-table thead th:first-child,.customers-table tbody th[scope=row],.customers-table tfoot td:first-child{z-index:1;background:var(--surface-1);width:14em;min-width:11em;box-shadow:inset -1px 0 0 var(--border);position:sticky;left:0}.customer-name{display:block}.customer-name .unmapped{white-space:nowrap}.customers-table tr>:nth-last-child(-n+2){z-index:1;background:var(--surface-1);white-space:nowrap;position:sticky}.customers-table tr>:last-child{right:var(--end-offset-0,0px);width:var(--col-trend);min-width:var(--col-trend)}.customers-table tr>:nth-last-child(2){right:var(--end-offset-1,var(--col-trend));width:var(--col-total);min-width:var(--col-total);box-shadow:inset 1px 0 0 var(--border)}.customers-table thead th:first-child,.customers-table thead tr>:nth-last-child(-n+2){z-index:2}.customers-table tbody tr>td.trend-cell.trend-cell-open{z-index:3}.table-scroller[data-overflow=true]{--fixed-shadow:#00000029}.table-scroller[data-overflow=true]>.customers-table thead th:first-child,.table-scroller[data-overflow=true]>.customers-table tbody th[scope=row],.table-scroller[data-overflow=true]>.customers-table tfoot td:first-child{box-shadow:inset -1px 0 0 var(--border), 5px 0 6px -3px var(--fixed-shadow)}.table-scroller[data-overflow=true]>.customers-table tr>:nth-last-child(2){box-shadow:inset 1px 0 0 var(--border), -5px 0 6px -3px var(--fixed-shadow)}@media (prefers-color-scheme:dark){.table-scroller[data-overflow=true]{--fixed-shadow:#0009}}.table-scroller[data-cramped=true]>.customers-table tr>:nth-last-child(2),.table-scroller[data-cramped=true][data-overflow=true]>.customers-table tr>:nth-last-child(2){box-shadow:none;position:static}.table-scroller[data-cramped=true]>.customers-table tr>:last-child{box-shadow:inset 1px 0 0 var(--border)}.table-scroller[data-cramped=true][data-overflow=true]>.customers-table tr>:last-child{box-shadow:inset 1px 0 0 var(--border), -5px 0 6px -3px var(--fixed-shadow)}@media (max-width:640px){.customers-card{padding-left:8px;padding-right:8px}.table-scroller:has(>.customers-table){--col-total:0px;--col-trend:0px}.customers-table thead th:first-child,.customers-table tbody th[scope=row],.customers-table tfoot td:first-child{width:8em;min-width:8em}}.banner{border:1px solid var(--border);border-radius:8px;margin-bottom:24px;padding:12px 16px}.banner-critical{background:var(--critical-soft);border-color:var(--critical);color:var(--text-primary)}.banner-critical strong{color:var(--critical)}.banner ul{margin:4px 0 0;padding-left:20px}.banner-ok{background:var(--surface-1)}.stats{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px;display:grid}.stats .card{margin-bottom:0}.stat-label{color:var(--text-secondary);margin:0;font-size:.8rem}.stat-value{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:1.15rem;font-weight:600}.stat-value.bad{color:var(--critical)}dl.kv{grid-template-columns:auto 1fr;gap:2px 12px;margin:8px 0 0;font-size:.85rem;display:grid}dl.kv dt{color:var(--text-secondary)}dl.kv dd{font-variant-numeric:tabular-nums;margin:0}.drill{margin-top:16px}.drill table{font-size:.85rem}.lines td{color:var(--text-secondary);border-bottom:none;padding-top:2px;padding-bottom:2px;font-size:.8rem}a{color:var(--accent-text)}@keyframes pulse{0%{opacity:1}to{opacity:.95}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.data-region:focus{outline:none}.data-region:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.skeleton{background:var(--placeholder);border-radius:4px;animation:.9s ease-in-out infinite alternate pulse;display:block}.skeleton-chart{border-bottom:1px solid var(--grid);align-items:flex-end;gap:4%;padding:8px 8px 0;display:flex}.skeleton-bar{border-radius:4px 4px 0 0;flex:1}.skeleton-heading{width:30%;height:1.1rem;margin-bottom:12px}.skeleton-line{width:80%;height:.8rem;margin:4px 0}.skeleton-line-short{width:45%}.skeleton-inline{vertical-align:-.05em;width:10em;height:.8em;display:inline-block}.skeleton-note{width:min(36em,100%)}.skeleton-value{width:60%;height:1.15rem;margin-top:8px}.spinner{border:2px solid var(--text-muted);vertical-align:-.1em;border-right-color:#0000;border-radius:50%;width:.9em;height:.9em;animation:.9s ease-in-out infinite alternate pulse;display:inline-block}.busy-mark{vertical-align:-.1em;justify-content:center;align-items:center;width:1em;height:1em;margin-left:6px;display:inline-flex}button:has(>.busy-mark){padding-right:26px;position:relative}button>.busy-mark{margin:-.5em 0 0;position:absolute;top:50%;right:8px}button[aria-busy=true]{cursor:progress}.error-box{border:1px solid var(--critical);background:var(--critical-soft);border-radius:8px;margin-bottom:24px;padding:12px 16px}.error-box p{margin:0 0 8px}.error-box strong{color:var(--critical)}.error-detail{color:var(--text-secondary);font-size:.85rem}.banner button{margin-left:4px}.inline-retry button.link{line-height:inherit;font-size:inherit}.nav a:has([data-pending=true]){color:var(--text-primary);border-bottom:2px dashed var(--series-1)}.nav-pending{width:9px;height:9px;display:flex;position:absolute;top:calc(50% - 4.5px);right:-5px}.nav-pending .spinner{border-width:1.5px;width:9px;height:9px}@media (prefers-reduced-motion:reduce){.skeleton,.spinner{animation:none}}.financial-summary-period{color:var(--text-secondary);margin:0 0 8px;font-size:.85rem}.financial-summary-figures{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 24px;margin:0;display:grid}.financial-summary-figures dt{color:var(--text-secondary);font-size:.8rem}.financial-summary-figures dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:1.15rem;font-weight:600}.financial-summary-figures dd .muted{font-size:.8rem;font-weight:400}.financial-summary .partial-note{margin-bottom:0}dl.kv dd.kv-note{color:var(--text-secondary);grid-column:1/-1;margin:0 0 4px;font-size:.8rem}.recon-previous{border-top:1px solid var(--border);margin-top:12px;padding-top:8px}.stat-value .muted{font-size:.85rem;font-weight:400}.recon-comparison{margin:0 0 24px;font-size:.9rem}.table-scroll.compact table{width:100%;min-width:0}@media (max-width:600px){dl.kv.stack{grid-template-columns:1fr}}
