@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(fonts/ibm-plex-sans-400.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(fonts/ibm-plex-sans-500.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(fonts/ibm-plex-sans-600.ttf) format('truetype');
}
:root{--ground:#edf2ef;--surface:#fff;--raised:#f5f7f5;--active:#e2e9e4;--border:#e2e7e3;--rule:#edf0ed;--control:#819488;--ink:#182a23;--muted:#56685d;--accent:#176b57;--red:#9f292e;--red-bg:#fff1ef;--amber:#805016;--amber-bg:#fff7e7;--radius:12px;--ease:cubic-bezier(.23,1,.32,1);font-family:"IBM Plex Sans","Segoe UI",Arial,sans-serif;font-size:14px;color:var(--ink);background:var(--ground);font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none;text-underline-offset:3px}a:hover{text-decoration:underline}a,button,input,select,textarea{touch-action:manipulation}::selection{background:#cce8d9;color:var(--ink)}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}input,textarea{caret-color:var(--accent)}h1,h2,p{margin:0}h1{font-size:26px;font-weight:600;line-height:1.25;letter-spacing:-.025em}h2{font-size:16px;font-weight:600;line-height:1.4}p{line-height:1.6}h2+p,h1+p{margin-top:5px}.small,small{font-size:12px;line-height:1.5}.muted{color:var(--muted)}.number{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;z-index:10;top:10px;left:10px;padding:12px;background:var(--surface)}.sidebar{position:fixed;inset:0 auto 0 0;width:228px;padding:24px 18px;display:flex;flex-direction:column;gap:28px}.brand{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:650;color:var(--ink);letter-spacing:-.025em}.brand svg{color:var(--accent);flex:none}.brand:hover{text-decoration:none}.workspace{display:grid;gap:5px;padding:0 8px}.workspace strong{font-size:16px;font-weight:600}.switch-form{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}.switch-form select{width:100%;height:35px;background:transparent}.switch-form .button{min-height:30px;padding:4px 9px;font-size:12px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{color:var(--muted);padding:10px 12px;border-radius:6px;font-weight:500;min-height:40px}.sidebar nav a:hover{background:var(--active);text-decoration:none;color:var(--ink)}.sidebar nav a[aria-current]{color:var(--ink);background:var(--active);font-weight:600}.sidebar-bottom{margin-top:auto;display:grid;gap:12px;padding:0 8px}.sidebar-bottom>a{font-size:12px}.app-body{margin-left:228px}.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 30px;font-size:12px}.topbar>span:first-child{font-weight:600}.sheet{min-height:calc(100vh - 64px);margin:0 8px 8px 0;padding:32px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.title-row{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.title-row p{font-size:13px}.inline-form{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.inline-form label{font-size:12px;color:var(--muted);margin:0}.inline-form input{width:auto;max-width:170px}.inline-form .errorlist{width:100%;margin:0;text-align:right}.button,button{font:inherit}.button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border:1px solid var(--control);border-radius:6px;padding:8px 13px;background:var(--surface);color:var(--ink);font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color 150ms var(--ease),border-color 150ms var(--ease)}.button:hover{background:var(--raised);text-decoration:none;border-color:var(--muted)}.button:active{background:var(--active)}.button.primary{background:var(--ink);color:white;border-color:var(--ink)}.button.primary:hover{background:#304b3d}.button:disabled{opacity:.6;cursor:wait}.button.subtle{background:transparent}.text-button{background:none;border:0;padding:0;color:var(--accent);font:inherit;cursor:pointer;text-align:left;min-height:24px}.text-button:hover{text-decoration:underline}.danger{color:var(--red)}label{display:block;font-weight:500;margin:0 0 7px}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--control);border-radius:6px;background:var(--surface);padding:9px 11px;min-height:40px;max-width:100%;width:100%}input[type=checkbox]{width:18px;min-height:18px}textarea{resize:vertical}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.notice{padding:14px 16px;border:1px solid var(--border);border-radius:8px;line-height:1.5;margin-bottom:16px}.notice.error{background:var(--red-bg);color:var(--red);border-color:#efccc6}.notice.success{background:#edf7f0;color:#22563a;border-color:#cce4d4}.notice.warning{background:var(--amber-bg);color:var(--amber);border-color:#e8d7b5}.alert-panel{padding:20px 22px;background:var(--red-bg);border:1px solid #efccc6;border-radius:var(--radius);margin-bottom:24px;color:var(--red)}.alert-panel .section-heading{margin-bottom:10px}.alert-panel p{font-size:13px}.alert-panel ul{padding:0;margin:0;list-style:none}.alert-panel li{display:flex;gap:16px;padding:9px 0;border-top:1px solid #f0d9d4;font-size:13px;line-height:1.5}.alert-panel li a{min-width:140px;color:var(--red);font-weight:600}.alert-panel>a{display:inline-block;color:var(--red);margin-top:10px}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--border);padding-bottom:26px;margin-bottom:24px;gap:24px}.metrics>div{display:grid;gap:7px}.metrics strong{font-size:30px;font-weight:500;letter-spacing:-.025em;font-variant-numeric:tabular-nums}.metrics strong small{font-size:15px;color:var(--muted);font-weight:400}.metrics>div>span:first-child{font-size:13px}.overview-grid{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(240px,1fr);gap:20px;align-items:start}.panel{min-width:0;padding:20px;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;background:var(--surface)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.section-heading>a{white-space:nowrap;font-size:12px}.legend{display:flex;gap:10px;font-size:11px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;display:inline-block}.actual-key{background:var(--accent)}.expected-key{background:#819488}.chart-max{margin-bottom:6px}.bar-chart{height:160px;display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:7px;border-bottom:1px solid var(--border)}.chart-day{display:flex;flex-direction:column;position:relative;min-width:0}.bar-pair{height:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px}.bar{display:block;max-width:13px;width:40%;min-height:0}.bar.actual{background:var(--accent)}.bar.actual.partial{opacity:.72}.bar.expected{background:#819488}.tick{position:absolute;top:calc(100% + 8px);left:0;right:0;text-align:center;font-size:10px;color:var(--muted)}.chart-caption{margin-top:32px}.chart-data{margin-top:10px}.chart-data summary{font-size:12px}.activity-row{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--ink);border-bottom:1px solid var(--rule);padding:13px 0;font-size:13px}.activity-row:last-child{border-bottom:0;padding-bottom:0}.activity-row small{display:block;color:var(--muted);margin-top:3px}.activity .panel p{font-size:13px}.activity .panel> a:last-child:not(.activity-row){display:inline-block;margin-top:10px;font-size:13px}.status{display:inline-flex;align-items:center;border-radius:4px;padding:4px 7px;background:var(--raised);color:var(--muted);font-size:11px;line-height:1.3;font-weight:600;white-space:nowrap}.status.valid,.status.sent,.status.issued{background:#eaf5ee;color:#23583b}.status.invalid,.status.failed{background:#ffe2dd;color:#94272b}.status.warning,.status.draft{background:var(--amber-bg);color:var(--amber)}.table-wrap{max-width:100%;overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:14px 10px;border-bottom:1px solid var(--rule);vertical-align:top;text-align:left;line-height:1.5}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}thead th{font-size:11px;font-weight:500;color:var(--muted);white-space:nowrap;border-bottom:1px solid var(--border)}tbody th{font-weight:500}tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}td small,th small{display:block;color:var(--muted);font-weight:400;margin-top:3px;font-size:11px}.empty{padding:32px 8px!important;color:var(--muted);text-align:center;line-height:1.7}.toolbar{padding:20px 0;display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:24px}.toolbar p{max-width:55ch}.back-link{display:inline-block;margin-bottom:16px;font-size:12px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--border);margin-bottom:20px}.tabs a{padding:12px 0;color:var(--muted)}.tabs a[aria-current]{color:var(--ink);border-bottom:2px solid var(--accent);font-weight:600}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-top:18px;font-size:12px}.page-footer{margin-top:28px;padding-top:20px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted)}.form-panel{max-width:660px}.form-panel h2{margin-bottom:8px}.form-panel form>p{margin:18px 0}.form-panel form .helptext{display:block;margin-top:7px;color:var(--muted);font-size:12px}.form-panel ul{padding-left:18px;font-size:12px;line-height:1.7;color:var(--muted)}.form-panel form .button{margin-top:8px}.errorlist{list-style:none;padding:0!important;color:var(--red)!important;font-size:12px;margin:7px 0}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.report-preview{display:block;border:0;width:100%;height:700px;background:white;margin-top:18px}.report-text{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:13px;line-height:1.6}details summary{cursor:pointer;color:var(--accent);padding:10px 0}details[open] summary{margin-bottom:8px}.invoice-paper{padding:32px;max-width:920px}.invoice-header{display:flex;justify-content:space-between;gap:28px;margin-bottom:34px}.invoice-header>div:last-child{text-align:right}.invoice-header h2{font-size:22px}.invoice-total{display:block;font-size:32px;font-weight:500;margin:7px 0}.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:28px}dt{color:var(--muted);font-size:12px}dd{margin:6px 0 0;font-size:14px}.invoice-totals{margin:24px 0 28px auto;max-width:300px}.invoice-totals div{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.invoice-totals dd{margin:0;font-variant-numeric:tabular-nums}.invoice-totals div:last-child{border-top:1px solid var(--border);padding-top:14px;font-weight:600}.login-body{min-height:100vh}.login-layout{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-intro{padding:54px 64px;display:flex;flex-direction:column;justify-content:space-between;background:var(--ground);gap:50px}.login-intro h1{font-size:clamp(34px,4vw,58px);font-weight:500;line-height:1.14;letter-spacing:-.035em}.login-intro p{max-width:32ch;margin-top:25px;color:var(--muted)}.login-intro>.small{margin:0}.login-form-wrap{background:var(--surface);display:flex;align-items:center;justify-content:center;padding:56px 32px}.login-form{width:100%;max-width:350px}.login-form h2{font-size:24px;letter-spacing:-.02em}.login-form>p{margin:12px 0 28px;font-size:13px}.login-form form>p{margin:20px 0}.login-submit{width:100%;margin:6px 0}.login-form input{height:44px}.ip-login-form{position:fixed;top:0;left:0;z-index:20}.ip-login-button{width:32px;height:32px;opacity:0;overflow:hidden;border:0;padding:0;background:var(--ink);color:#fff;cursor:pointer}.ip-login-button:focus-visible{width:auto;height:auto;opacity:1;padding:12px;outline-offset:0}
/* 228px navigation + remaining canvas; columns divide available width with one 20px gutter. */
@media(min-width:1600px){.sheet{padding:40px;max-width:1600px}.overview-grid{grid-template-columns:minmax(0,2.4fr) minmax(280px,1fr)}.bar-chart{height:185px}}
@media(max-width:1100px){.sidebar{width:200px;padding:22px 12px}.app-body{margin-left:200px}.sheet{padding:24px}.overview-grid{grid-template-columns:1fr}.activity{display:grid;grid-template-columns:1fr 1fr;gap:20px}.title-row{align-items:flex-start}.toolbar{align-items:flex-start;flex-direction:column}.toolbar .inline-form{justify-content:flex-start}.login-intro{padding:40px}.section-heading{align-items:flex-start}}
@media(max-width:760px){.sidebar{position:static;width:auto;padding:18px 18px 12px;gap:16px}.sidebar .brand{font-size:18px}.workspace{padding:0}.workspace>.small{display:none}.workspace strong{font-size:14px}.workspace .switch-form{margin:0;flex-wrap:nowrap}.workspace .switch-form select{width:auto;flex:1}.sidebar nav{display:flex;overflow-x:auto;gap:4px;padding-bottom:4px}.sidebar nav a{flex:none;padding:9px 10px;font-size:13px;white-space:nowrap}.sidebar-bottom{display:flex;align-items:center;justify-content:space-between;margin:0;padding:0;gap:8px}.sidebar-bottom>.small{max-width:45%;font-size:11px}.sidebar-bottom a,.sidebar-bottom button{font-size:11px}.app-body{margin-left:0}.topbar{display:none}.sheet{margin:0 8px 8px;padding:22px 16px;border-radius:12px}.title-row{flex-direction:column;gap:16px;margin-bottom:23px}h1{font-size:23px}.title-row .inline-form{justify-content:flex-start;width:100%}.inline-form label{display:none}.inline-form input{min-width:130px;flex:1}.metrics{gap:16px;grid-template-columns:1fr 1fr;padding-bottom:20px}.metrics>div:last-child{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:16px}.metrics>div:last-child strong{font-size:24px}.metrics strong{font-size:25px}.metrics>div>span:first-child{font-size:12px}.panel{padding:16px}.activity{grid-template-columns:1fr}.activity .panel{margin:0}.activity{margin-bottom:20px}.alert-panel{padding:16px}.alert-panel .section-heading{flex-direction:column;gap:8px}.alert-panel li{display:block}.alert-panel li a{display:block;margin-bottom:4px}.bar-chart{gap:4px;height:150px}.legend{gap:7px;font-size:10px}.trend-panel .section-heading{flex-direction:column;gap:8px}.page-footer{flex-direction:column;gap:6px}.two-columns{grid-template-columns:1fr;gap:0}.invoice-paper{padding:18px}.invoice-header{flex-direction:column;gap:20px}.invoice-header>div:last-child{text-align:left}.facts{grid-template-columns:1fr 1fr;gap:18px}.invoice-total{font-size:28px}.login-layout{display:block}.login-intro{padding:30px 26px;gap:26px}.login-intro h1{font-size:32px}.login-intro h1 br{display:none}.login-intro h1{max-width:12ch}.login-intro>p.small{display:none}.login-intro p{margin-top:14px;max-width:40ch;font-size:13px}.login-form-wrap{padding:34px 26px 50px}.login-form{max-width:none}.login-form h2{font-size:22px}.report-preview{height:600px}.toolbar{gap:16px}.toolbar .inline-form{width:100%}.toolbar .inline-form .button{flex:1}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}@media print{.sidebar,.topbar,.page-footer,.actions,.back-link,.notice,form{display:none!important}.app-body{margin:0}.sheet,.panel{border:0;margin:0;padding:0}.invoice-paper{max-width:none}}
@media(max-width:760px){.table-wrap table{min-width:600px}.table-wrap tbody th:first-child{min-width:150px}.table-wrap{overscroll-behavior-x:contain}}
:root{font-variant-numeric:tabular-nums}
.error-page{max-width:620px;margin:12vh auto;padding:32px}.error-page .brand{margin-bottom:48px}.error-page h1{margin-bottom:16px}.error-page .actions{margin-top:24px}
.tariff-editor{margin:0 0 18px}.tariff-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;max-width:850px}.tariff-form .tariff-confirm,.tariff-form>.errorlist{grid-column:1/-1}.tariff-form .tariff-confirm{display:flex;flex-direction:row-reverse;justify-content:flex-end;align-items:flex-start;gap:10px}.tariff-confirm label{font-size:13px;font-weight:400;line-height:1.5}.tariff-form .helptext{display:block;margin-top:7px}.tariff-form>.button{justify-self:start}.tariff-confirm input{flex:none;margin-top:2px}input:disabled{background:var(--raised);color:var(--muted)}@media(max-width:760px){.tariff-form{grid-template-columns:1fr}.tariff-form>.button{width:100%}}
@media(max-width:760px){.table-wrap table:has(.empty){min-width:0}.table-wrap table:has(.empty) thead{display:none}}
.email-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.email-panel>.muted{font-size:13px;max-width:70ch}.email-panel .section-heading{align-items:flex-start;flex-wrap:wrap}.recipient-list{padding:0;margin:20px 0;list-style:none}.recipient-list li{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0;border-bottom:1px solid var(--rule);font-size:13px;line-height:1.5}.recipient-list li>span{overflow-wrap:anywhere;min-width:0}.recipient-list form{flex:none}.email-add-form{max-width:540px}.email-add-form label,.customer-email-form label{font-size:13px}.email-add-form .helptext,.customer-email-form .helptext{display:block;margin-top:7px;font-size:12px;color:var(--muted)}.email-add-form>.button{margin-top:12px}.email-footnote{margin-top:18px;max-width:70ch}.customer-email-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin:24px 0}.customer-email-form>.button{grid-column:1/-1;justify-self:start}.customer-email-form>.errorlist{grid-column:1/-1}.billing-contact-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px}.billing-contact-panel>div>p{font-size:13px;margin-top:8px;max-width:50ch}.email-address{overflow-wrap:anywhere}@media(max-width:1100px){.email-grid{grid-template-columns:1fr;gap:0}}@media(max-width:760px){.billing-contact-panel,.customer-email-form{grid-template-columns:1fr}.email-panel .status{white-space:normal}.email-panel{padding:16px}.recipient-list li{align-items:flex-start}.billing-contact-panel{gap:20px}.email-add-form>.button{width:100%}}
