:root{--bg:#f4f3ef;--card:#fff;--chart:#fcfcfb;--ink:#16171a;--ink2:#52514e;--muted:#6b6a66;--line:#e1e0d9;--line2:#eceae4;--soft:#f7f6f2;--soft2:#f3f2ee;--seg:#f1f0eb;--seg-on:#fff;--accent:#1c5cab;--accent-bg:#1c5cab;--accent-line:#9db9e4;--series:#2a78d6;--series-hot:#1c5cab;--sel:#eaf1fb;--sel-strong:#d3e2f6;--hover:var(--hover);--field:#fff;--border-strong:var(--border-strong);--on-ink:#fff;--tip-dim:var(--sheet-line-strong);--good:#006300;--bad:#b42828;--live-ring:#e3f3e3;--warn-bg:#fdf3dc;--warn-line:#efd48c;--warn-ink:#4a3200;--warn-text:#8a5a00;--warn-soft:#fffaf0;--pill-warn-bg:#fdf0d5;--pill-warn-ink:#5c3d00;--bad-bg:#fbe9e9;--bad-line:#e7a9a9;--bad-ink:#6e1717;--bad-soft:#fbefef;--info-bg:#eef4fc;--info-line:#c7d9f3;--info-ink:#173a6b;--pill-info-bg:#e8eefa;--pill-info-ink:#1c4f95;--ok-bg:#e6f2e6;--ok-line:#a9d3a9;--ok-ink:#173f17;--pill-bg:#eceae4;--pill-ink:#3d3c39;--sheet-line:var(--sheet-line);--sheet-line-strong:var(--sheet-line-strong);--sheet-head:#e9eef6;--shadow:rgba(0,0,0,.12);color-scheme:light}
/* Dark theme: follows the system unless the viewer picked Light; or forced with data-theme=dark */
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#131416;--card:#1d1e22;--chart:#212227;--ink:#ececea;--ink2:#b9b8b2;--muted:#9d9c96;--line:#34353b;--line2:#2b2c31;--soft:#25262b;--soft2:#2a2b30;--seg:#2a2b30;--seg-on:#3c3d43;--accent:#86b6ef;--accent-bg:#2f6fc4;--accent-line:#3f5f8c;--series:#4d8edf;--series-hot:#86b6ef;--sel:#1f2c40;--sel-strong:#2a3e5c;--hover:#262a32;--field:#26272c;--border-strong:#4a4b52;--on-ink:#16171a;--tip-dim:#55544f;--good:#6fcf6f;--bad:#f08080;--live-ring:rgba(12,163,12,.28);--warn-bg:#352a12;--warn-line:#6b5420;--warn-ink:#f4dfa6;--warn-text:#f0b84d;--warn-soft:#2a2416;--pill-warn-bg:#3d3014;--pill-warn-ink:#f4dfa6;--bad-bg:#3a1d1d;--bad-line:#7a3434;--bad-ink:#f6c4c4;--bad-soft:#2f1d1d;--info-bg:#1b2738;--info-line:#2f4a70;--info-ink:#c4dafa;--pill-info-bg:#1f2f47;--pill-info-ink:#b6d0f7;--ok-bg:#1a2e1a;--ok-line:#345e34;--ok-ink:#bfe5bf;--pill-bg:#2f3035;--pill-ink:#d4d3cd;--sheet-line:#303136;--sheet-line-strong:#3d3e44;--sheet-head:#22303f;--shadow:rgba(0,0,0,.45);color-scheme:dark}}
:root[data-theme="dark"]{--bg:#131416;--card:#1d1e22;--chart:#212227;--ink:#ececea;--ink2:#b9b8b2;--muted:#9d9c96;--line:#34353b;--line2:#2b2c31;--soft:#25262b;--soft2:#2a2b30;--seg:#2a2b30;--seg-on:#3c3d43;--accent:#86b6ef;--accent-bg:#2f6fc4;--accent-line:#3f5f8c;--series:#4d8edf;--series-hot:#86b6ef;--sel:#1f2c40;--sel-strong:#2a3e5c;--hover:#262a32;--field:#26272c;--border-strong:#4a4b52;--on-ink:#16171a;--tip-dim:#55544f;--good:#6fcf6f;--bad:#f08080;--live-ring:rgba(12,163,12,.28);--warn-bg:#352a12;--warn-line:#6b5420;--warn-ink:#f4dfa6;--warn-text:#f0b84d;--warn-soft:#2a2416;--pill-warn-bg:#3d3014;--pill-warn-ink:#f4dfa6;--bad-bg:#3a1d1d;--bad-line:#7a3434;--bad-ink:#f6c4c4;--bad-soft:#2f1d1d;--info-bg:#1b2738;--info-line:#2f4a70;--info-ink:#c4dafa;--pill-info-bg:#1f2f47;--pill-info-ink:#b6d0f7;--ok-bg:#1a2e1a;--ok-line:#345e34;--ok-ink:#bfe5bf;--pill-bg:#2f3035;--pill-ink:#d4d3cd;--sheet-line:#303136;--sheet-line-strong:#3d3e44;--sheet-head:#22303f;--shadow:rgba(0,0,0,.45);color-scheme:dark}
*{box-sizing:border-box}
input,select,textarea{background-color:var(--field);color:var(--ink)}
[hidden]{display:none !important}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
h1{margin:0;font-size:26px;font-weight:600;letter-spacing:-.015em}
h2{margin:0;font-size:16px;font-weight:600}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.muted{color:var(--ink2)}.small{font-size:12px}.num{text-align:right}
.mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:7px;background:var(--ink);color:var(--on-ink);font-weight:700}
.primary{min-height:44px;padding:0 16px;border:0;border-radius:8px;background:var(--accent-bg);color:#fff;font-weight:600}
.secondary{min-height:40px;padding:0 14px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field);font-weight:500}
.ghost{min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:transparent}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login-card{width:360px;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:12px}
.login-card label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink2)}
.login-card input{min-height:42px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px}
.error{color:var(--bad);min-height:20px;margin:0}
.topbar{background:var(--card);border-bottom:1px solid var(--line)}
.topbar-inner{margin:0 auto;padding:10px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 32px}
.brand{display:flex;align-items:center;gap:10px}.brand div{display:flex;flex-direction:column}.brand small{font-size:12px;color:var(--muted)}
nav{display:flex;gap:4px}
nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:500}
nav a[aria-current=page]{background:var(--ink);color:var(--on-ink)}
.bar-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.page{margin:0 auto;padding:20px 24px 48px;display:flex;flex-direction:column;gap:18px}
.title-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.title-row p{margin:2px 0 0}
.strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;padding:10px 16px;background:var(--card);border:1px solid var(--line);border-radius:10px;font-size:13px;color:var(--ink2)}
.strip .state{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--ink)}
.dot{width:9px;height:9px;border-radius:50%;background:#0ca30c;box-shadow:0 0 0 4px var(--live-ring)}
.strip.delayed{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}.strip.delayed .dot{background:#fab219;box-shadow:none}
.strip.closed{background:var(--soft)}.strip.closed .dot{background:#898781;box-shadow:none}
.strip.failing,.strip.unknown{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-ink)}.strip.failing .dot,.strip.unknown .dot{background:#d03b3b;box-shadow:none}
.notice{padding:12px 16px;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:10px;color:var(--warn-ink)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));gap:12px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}
.kpi .label{font-size:13px;color:var(--ink2);font-weight:500}.kpi .value{font-size:28px;font-weight:600;letter-spacing:-.015em;line-height:1.2}
.kpi .delta{font-size:13px;color:var(--ink2)}.kpi .delta.up{color:var(--good)}.kpi .delta.down{color:var(--bad)}.kpi .sub{font-size:12px;color:var(--muted)}
.row{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px;min-width:0;display:flex;flex-direction:column;gap:10px}
.card.flush{padding:18px 0 0}.pad{padding-left:20px;padding-right:20px}
.grow{flex:999 1 600px}.side{flex:1 1 340px}
.card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px}.card-head p{margin:2px 0 0;font-size:13px}
.legend{display:flex;gap:16px;font-size:12px;color:var(--ink2)}.legend span{display:inline-flex;align-items:center;gap:6px}
.swatch{display:inline-block;width:18px;height:0;border-top:2px solid var(--series)}.swatch.last{border-top:2px dashed #898781}
.pace{position:relative;height:250px;margin:6px 0 0 48px}
.pace .plot,.daily .plot{position:absolute;inset:0 0 28px 0}
.pace svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.axis{position:absolute;font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.tip{position:absolute;top:0;background:var(--ink);color:var(--on-ink);border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.5;pointer-events:none;white-space:nowrap;z-index:2}
.tip span{display:block}.tip .dim{color:var(--tip-dim)}
.footnote{margin:0;font-size:12px;color:var(--muted)}
.feed .item{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;padding:9px 0;border-top:1px solid var(--line2)}
.feed .item>span:nth-child(2){display:flex;flex-direction:column;min-width:0}
.feed .item strong{text-align:right;white-space:nowrap}
.feed .who{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed .what{font-size:12px;color:var(--muted)}.feed .refund{color:var(--bad)}.feed .flag{color:var(--warn-text)}
.seg{display:flex;flex-wrap:wrap;gap:2px;padding:3px;background:var(--seg);border-radius:9px}
.seg button{min-height:34px;padding:0 12px;border:0;border-radius:7px;background:transparent;font-size:13px;font-weight:500}
.seg button[aria-pressed=true]{background:var(--seg-on);box-shadow:0 1px 2px var(--shadow)}
.scroll{overflow-x:auto}
table.vendors{width:100%;min-width:760px;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.vendors th{background:var(--soft);border-top:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink2);text-align:left;padding:8px 12px}
table.vendors td{border-top:1px solid var(--line2);padding:9px 12px}
table.vendors th:first-child,table.vendors td:first-child{padding-left:20px}
table.vendors tbody tr{cursor:pointer}table.vendors tbody tr:hover{background:var(--hover)}table.vendors tbody tr.sel{background:var(--sel)}
table.vendors tfoot td{border-top:1px solid var(--border-strong);background:var(--soft);font-weight:600}
.vname{background:none;border:0;padding:0;font-weight:500;text-align:left}.sel .vname{font-weight:600}.vname.flag{color:var(--warn-text)}
.barcell{display:flex;align-items:center;gap:10px}.barcell b{width:84px;text-align:right}
.bar{flex:1;height:8px;background:var(--line2);border-radius:4px;overflow:hidden;min-width:60px}.bar i{display:block;height:100%;background:var(--series);border-radius:4px}.bar.gray i{background:#898781}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stat{background:var(--soft);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column}.stat span{font-size:12px;color:var(--ink2)}.stat b{font-size:19px;font-weight:600}
.mini{display:flex;align-items:flex-end;gap:6px;height:90px;border-bottom:1px solid var(--border-strong)}.mini div{flex:1;height:100%;display:flex;align-items:flex-end}.mini i{display:block;width:100%;background:var(--series);border-radius:4px 4px 0 0}
.mini-labels{display:flex;gap:6px}.mini-labels span{flex:1;text-align:center;font-size:11px;color:var(--muted)}
.items div{display:grid;grid-template-columns:minmax(0,1fr) 44px 80px;gap:8px;padding:7px 0;border-top:1px solid var(--line2);font-size:13px;font-variant-numeric:tabular-nums}
.items .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:12px}
.inline{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2)}.inline select{min-height:40px;padding:0 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field);min-width:220px;color:var(--ink)}
.daily{position:relative;height:250px;margin-left:52px}
.daily .bars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:2px}
.daily .bars div{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end}.daily .bars i{display:block;width:100%;background:var(--series);border-radius:3px 3px 0 0}.daily .bars i.hot{background:var(--series-hot)}.daily .bars i.empty{background:var(--line2)}
.grid-line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.heat{display:grid;gap:3px}.heat span{font-size:11px;color:var(--muted);text-align:center}.heat .day{text-align:left;font-size:12px;color:var(--ink2);align-self:center}.heat i{display:block;height:28px;border-radius:4px}
.readout{margin:0;font-size:13px;font-weight:500;min-height:20px}
.delta-up{color:var(--good)}.delta-down{color:var(--bad)}
@media (max-width:640px){.topbar-inner,.page{padding-left:16px;padding-right:16px}.pace,.daily{margin-left:40px}.xl-odd{display:none}}
.side>p{margin:0}
/* Navigation badge */
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#fab219;color:#16171a;font-size:12px;font-weight:700}
.icon{width:36px;height:36px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field);font-size:18px;line-height:1}
.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--ink)}
a.secondary{min-height:40px;padding:0 14px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field);font-weight:500}
.link{border:0;background:none;color:var(--accent);font-weight:500;min-height:40px;padding:0 4px}
.notice.info{background:var(--info-bg);border-color:var(--info-line);color:var(--info-ink)}
.notice.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink)}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}

/* Vendor boxes */
.vendors .card-head{align-items:center}
.vendor-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.rail-nav{display:flex;gap:4px}
.rail{--cols:2;display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 20px 18px;scroll-padding:0 20px;overscroll-behavior-x:contain}
.rail:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.vbox{flex:0 0 calc((100% - (var(--cols) - 1) * 14px) / var(--cols));min-width:260px;height:560px;scroll-snap-align:start;display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px 12px;min-width:0}
.vbox:focus{outline:2px solid var(--accent);outline-offset:2px}
.vbox.store{background:var(--chart);border-color:var(--border-strong)}
.vbox.unassigned{background:var(--warn-soft);border-color:var(--warn-line)}
.vb-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.vb-title{display:flex;gap:8px;align-items:flex-start;min-width:0}.vb-title .dot{margin-top:6px}
.vb-head h3{margin:0;font-size:15px;font-weight:600;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.vb-net{font-size:28px;font-weight:600;letter-spacing:-.015em;line-height:1.15;font-variant-numeric:tabular-nums}
.vbox.store .vb-net{font-size:34px}
.vb-delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500}.vb-delta.up{color:var(--good)}.vb-delta.down{color:var(--bad)}
.vb-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:2px 0 0}
.vb-stats div{background:var(--soft);border-radius:8px;padding:6px 8px;min-width:0}
.vb-stats dt{font-size:11px;color:var(--ink2)}.vb-stats dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vb-hours-head{display:flex;justify-content:space-between;gap:6px;font-size:12px;color:var(--ink2)}
.vb-bars{display:flex;align-items:flex-end;gap:3px;height:44px;border-bottom:1px solid var(--border-strong);margin-top:4px}
.vb-bars div{flex:1;height:100%;display:flex;align-items:flex-end}.vb-bars i{display:block;width:100%;border-radius:3px 3px 0 0}
.vb-bar-labels{display:flex;gap:3px}.vb-bar-labels span{flex:1;font-size:10px;color:var(--muted);text-align:left}
.vb-section-label{font-size:12px;font-weight:600;color:var(--ink2);margin-top:2px}
.vb-scroll{flex:1;min-height:0;overflow-y:auto;margin:0;padding:0;list-style:none;border-top:1px solid var(--line2)}
.vb-items li,.share-legend li button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 8px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line2);font-size:13px;font-variant-numeric:tabular-nums}
.vb-items .meta{grid-column:1/-1;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.share-legend{list-style:none;margin:0;padding:0}
.vb-items .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vb-items small{color:var(--muted)}
.vb-items li.refund .n,.vb-items li.refund .num{color:var(--bad)}
.vb-items .empty{display:block;border:0}
.share-bar{display:flex;gap:2px;height:14px;border-radius:4px;overflow:hidden;background:var(--line2)}
.share-bar i{display:block;min-width:3px}
.share-legend li button{width:100%;grid-template-columns:14px minmax(0,1fr) 84px 52px;border:0;border-bottom:1px solid var(--line2);background:none;text-align:left;padding:7px 2px;cursor:pointer}
.share-legend li button:hover{background:var(--hover)}
.share-legend .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vb-foot{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:space-between;font-size:12px;color:var(--ink2);padding-top:6px;border-top:1px solid var(--line2)}
.vb-foot a{font-weight:600;color:var(--accent);text-decoration:none}.vb-foot .flag{color:var(--warn-text);font-weight:600}.vb-foot .refund{color:var(--bad)}
@media (max-width:640px){.vbox{flex-basis:85vw;height:520px}.vbox.store{flex-basis:88vw}.rail{padding-left:16px;padding-right:16px}}

/* End-of-day emails */
.email-summary{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--card);border:1px solid var(--line);border-radius:999px;font-size:13px}
.stack{display:flex;flex-direction:column;gap:18px;min-width:0}
.email-list{padding-bottom:0}.list-head{display:flex;flex-direction:column;gap:10px;padding-bottom:10px}
.draft-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;width:100%;padding:11px 20px;border:0;border-top:1px solid var(--line2);background:var(--card);text-align:left;cursor:pointer}
.draft-row:hover{background:var(--hover)}.draft-row.sel{background:var(--sel)}.draft-row .n{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.draft-row.sel .n{font-weight:600}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill{justify-self:end;display:inline-flex;align-items:center;padding:1px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--pill-bg);color:var(--pill-ink)}
.pill.ok{background:var(--ok-bg);color:var(--ok-ink)}.pill.warn{background:var(--pill-warn-bg);color:var(--pill-warn-ink)}.pill.info{background:var(--pill-info-bg);color:var(--pill-info-ink)}
.title-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.title-line h2{font-size:19px}
.fields{display:grid;gap:10px}
.field{display:grid;grid-template-columns:70px minmax(0,1fr);gap:10px;align-items:start;font-size:13px;color:var(--ink2)}
.field span{padding-top:10px}
.field input,.field textarea{width:100%;min-height:42px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field);color:var(--ink);font:inherit;line-height:1.5}
.field textarea{resize:vertical}
.hint{margin:-6px 0 0 80px}.check{display:flex;align-items:center;gap:8px;margin-left:80px;font-size:13px}.check input{width:18px;height:18px}
.attachment{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.file-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:6px;background:#1d6f42;color:#fff;font-size:10px;font-weight:700}
.grow-text{flex:1 1 220px;display:flex;flex-direction:column;min-width:0}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.actions .spacer{flex:1}
.actions .primary,.actions .secondary{min-height:44px}
.sheet-scroll{overflow:auto;max-height:460px;border-top:1px solid var(--sheet-line-strong)}
.sheet{min-width:max-content;font-size:12.5px;font-variant-numeric:tabular-nums}
.sheet-row{display:grid}.sheet-row span{padding:4px 8px;border-right:1px solid var(--sheet-line);border-bottom:1px solid var(--sheet-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-row .num{text-align:right}
.sheet-row.letters{position:sticky;top:0;z-index:1;background:var(--seg)}.sheet-row.letters span{color:var(--muted);font-size:11px;text-align:center;padding:3px 0;border-color:var(--sheet-line-strong)}
.rownum{background:var(--seg);color:var(--muted);font-size:11px;text-align:center;border-right-color:var(--sheet-line-strong)!important}
.sheet-row.head span:not(.rownum){background:var(--sheet-head);font-weight:600}.sheet-row.bold{font-weight:600}.sheet-row.refund span:not(.rownum){color:var(--bad);background:var(--bad-soft)}
@media (max-width:640px){.field{grid-template-columns:1fr}.field span{padding-top:0}.hint,.check{margin-left:0}}

/* Tax split, clickable boxes and rows */
.vb-tax{font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums;margin-top:-4px}
.vbox.clickable{cursor:pointer;transition:box-shadow .15s,border-color .15s}
.vbox.clickable:hover{border-color:var(--accent-line);box-shadow:0 2px 10px var(--shadow)}
.vb-head .expand{flex:none;width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:var(--field);font-size:15px;color:var(--ink2)}
.vb-head .expand:hover{border-color:var(--accent);color:var(--accent)}
.vb-items li.tap{cursor:pointer;border-radius:6px}.vb-items li.tap:hover,.vb-items li.tap:focus-visible{background:var(--hover)}
.feed .item{width:100%;border:0;border-top:1px solid var(--line2);background:none;text-align:left;cursor:pointer;color:var(--ink)}
.feed .item:hover{background:var(--hover)}

/* Pop-up window */
dialog#modal{width:min(980px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:0;border:0;border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.28);color:var(--ink);background:var(--card)}
dialog#modal::backdrop{background:rgba(22,23,26,.45)}
.modal-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--card);border-bottom:1px solid var(--line)}
.modal-head h2{flex:1;font-size:19px}
.modal-body{padding:16px 20px 22px;display:flex;flex-direction:column;gap:14px;overflow:auto;max-height:calc(100vh - 120px)}
.modal-body p{margin:0}
.modal-sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px}
.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.tax-triple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tax-triple div{background:var(--soft);border-radius:10px;padding:10px 14px;display:flex;flex-direction:column}
.tax-triple span{font-size:12px;color:var(--ink2)}.tax-triple b{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}
.tax-triple .total{background:var(--sel)}
.detail-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:0}
.detail-stats div{border:1px solid var(--line2);border-radius:8px;padding:8px 10px}.detail-stats dt{font-size:11px;color:var(--ink2)}.detail-stats dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.detail-h{margin:4px 0 -4px;font-size:14px;font-weight:600}
.big-bars{display:flex;align-items:flex-end;gap:6px;height:150px;padding-top:18px;border-bottom:1px solid var(--border-strong)}
.big-bars div{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}
.big-bars i{display:block;width:100%;border-radius:4px 4px 0 0}
.big-bars .v{font-size:10px;color:var(--ink2);white-space:nowrap;margin-bottom:2px}
.big-bars .h{position:absolute;bottom:-18px;font-size:10px;color:var(--muted)}
.big-bars + .detail-h{margin-top:16px}
table.detail-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.detail-table th{background:var(--soft);color:var(--ink2);font-size:12px;font-weight:600;text-align:left;padding:7px 10px;border-bottom:1px solid var(--line)}
.detail-table td{padding:7px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
.detail-table .num{text-align:right;white-space:nowrap}
.detail-table tfoot td{font-weight:600;border-top:1px solid var(--border-strong);background:var(--soft)}
.detail-table tr.refund td{color:var(--bad)}
.detail-table.clickable tbody tr{cursor:pointer}.detail-table.clickable tbody tr:hover,.detail-table.clickable tbody tr:focus-visible{background:var(--hover)}
.confirm-list{display:grid;grid-template-columns:100px minmax(0,1fr);gap:6px 12px;margin:0;font-size:14px}.confirm-list dt{color:var(--ink2)}.confirm-list dd{margin:0;word-break:break-word}

/* Recipients and email preview */
.chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:42px;padding:5px 6px;border:1px solid var(--border-strong);border-radius:8px;background:var(--field)}
.chip-email{display:inline-flex;align-items:center;gap:4px;padding:3px 4px 3px 10px;border-radius:999px;background:var(--sel);color:var(--info-ink);font-size:13px}
.chip-email button{width:22px;height:22px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:15px;line-height:1}
.chip-email button:hover{background:var(--sel-strong)}
.chip-add{display:flex;flex:1 1 240px;gap:6px;align-items:center}
.chip-add input{flex:1;min-width:140px;min-height:32px;border:0;outline:0;font:inherit;padding:0 4px}
.chip-add input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:4px}
.small-btn{min-height:32px!important;padding:0 10px!important;font-size:13px}
.error.small{font-size:12px;flex-basis:100%}
.actions .send{min-width:140px}
.mail{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.mail-head{display:grid;grid-template-columns:70px minmax(0,1fr);gap:4px 10px;margin:0;padding:12px 14px;background:var(--soft);border-bottom:1px solid var(--line);font-size:13px}
.mail-head dt{color:var(--ink2)}.mail-head dd{margin:0;word-break:break-word}
.mail-body{margin:0;padding:14px 16px;max-height:520px;overflow:auto;white-space:pre-wrap;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink)}
.mail-attach{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line);font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
@media (max-width:640px){.tax-triple{grid-template-columns:1fr}.tax-triple b{font-size:18px}}

/* Vendor row: as many boxes as the window fits, up to 6 (store box included) */
@media (min-width:900px){.rail{--cols:3}}
@media (min-width:1200px){.rail{--cols:4}}
@media (min-width:1500px){.rail{--cols:5}}
@media (min-width:1800px){.rail{--cols:6}}
html.modal-open,html.modal-open body{overflow:hidden}
dialog#modal{overscroll-behavior:contain}
.modal-body{overscroll-behavior:contain}
.modal-body>*{flex-shrink:0}
.page{padding-left:32px;padding-right:32px}
@media (max-width:640px){.page{padding-left:16px;padding-right:16px}}
.sheet-row.group span:not(.rownum){background:var(--soft2);font-weight:600}

/* Fixed CC chip */
.chip-email.locked{background:var(--soft);color:var(--ink2);padding-right:10px}
.chip-email.locked small{margin-left:6px;font-size:11px;color:var(--muted)}

/* Breathing room: generous page gutters and card padding (content never hugs a border) */
.topbar-inner{padding:12px 48px}
.page{padding:32px 48px 72px;gap:28px}
.row,.stack{gap:28px}
.kpis{gap:18px;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}.kpi{padding:24px 28px;gap:6px}
.card{padding:28px 32px;gap:16px}
.card.flush{padding:28px 0 0}.pad{padding-left:32px;padding-right:32px}
.strip{padding:14px 24px}.notice{padding:16px 24px}
.rail{gap:18px;padding:8px 32px 32px;scroll-padding:0 32px}
.vbox{flex-basis:calc((100% - (var(--cols) - 1) * 18px) / var(--cols));padding:24px 24px 18px;gap:10px}
.vb-stats{gap:8px}.vb-stats div{padding:8px 10px}
.vb-items li,.share-legend li button{padding-top:8px;padding-bottom:8px}
.list-head{padding-bottom:16px}
.draft-row{padding:16px 32px;gap:4px 12px}
.fields{gap:16px}
.attachment{padding:16px 18px}
.modal-head{padding:18px 32px}.modal-body{padding:24px 32px 32px;gap:18px}
.tax-triple>div{padding:16px 18px}
@media (max-width:900px){.topbar-inner,.page{padding-left:28px;padding-right:28px}}
@media (max-width:640px){
  .topbar-inner,.page{padding-left:16px;padding-right:16px}.page{gap:20px}
  .card{padding:20px}.pad{padding-left:20px;padding-right:20px}
  .kpi{padding:18px 20px}.rail{padding-left:20px;padding-right:20px}.draft-row{padding:14px 20px}
  .vbox{flex-basis:85vw}.vbox.store{flex-basis:88vw}
  .modal-head{padding:14px 20px}.modal-body{padding:18px 20px 24px}
}

/* When sales happen: larger heatmap with a color key */
.heat-card{flex:1 1 560px}
.heat{gap:4px}.heat span{font-size:12px}.heat .day{font-size:13px}.heat i{height:40px;border-radius:5px}
.heat i:hover{outline:2px solid var(--ink);outline-offset:1px}
.heat-key{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px 14px;margin-top:6px;padding-top:14px;border-top:1px solid var(--line2);font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.heat-key span{display:flex;align-items:center;gap:8px;white-space:nowrap}
.heat-key i{flex:none;width:18px;height:18px;border-radius:4px}

/* Daily bars: at most 56px wide, centred in their day, so a few days don't make slabs */
.daily .bars div{justify-content:center}
.daily .bars i{width:min(100%,56px);border-radius:4px 4px 0 0}

/* Today / Yesterday switch beside the export button */
.title-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px}

/* Inputs that relied on browser defaults */
.chip-add input{background:transparent}
.inline input{min-height:40px;padding:0 10px;border:1px solid var(--border-strong);border-radius:8px}

/* Display controls: theme switch (top bar) and chart colors (Trends) */
.theme-seg button{min-height:30px;padding:0 10px;font-size:12px}
.chart-colors{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2)}
.chart-colors button{width:28px;height:28px;padding:0;border:2px solid transparent;border-radius:50%;background:none;display:inline-flex;align-items:center;justify-content:center}
.chart-colors button i{display:block;width:20px;height:20px;border-radius:50%}
.chart-colors button[aria-pressed=true]{border-color:var(--ink)}
.heat i.empty,.heat-key i.empty{background:transparent;border:1px dashed var(--border-strong)}
.toolbar .chart-colors{margin-left:auto}

/* Account menu: theme, chart color and sign out live behind the account button */
:root{--bar-weekend:#1c5cab;--bar-weekday:#86b6ef;--avg:#d9601f}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--avg:#f0915e}}
:root[data-theme="dark"]{--avg:#f0915e}
.account{position:relative}
.account-button{width:40px;height:40px;border-radius:50%;border:1px solid var(--border-strong);background:var(--soft);font-size:13px;font-weight:600}
.account-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:260px;padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px var(--shadow)}
.menu-label{margin:4px 0 0;font-size:12px;font-weight:600;color:var(--ink2)}
.account-menu .ghost{margin-top:6px;min-height:40px}
.nav-icon,.nav-short,.sync-pill{display:none}
.sync-pill{align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--ok-bg);color:var(--ok-ink);font-size:12px;font-weight:500;white-space:nowrap}
.sync-pill .dot{width:7px;height:7px;box-shadow:none}
.sync-pill.delayed{background:var(--warn-bg);color:var(--warn-ink)}.sync-pill.delayed .dot{background:#fab219}
.sync-pill.closed{background:var(--pill-bg);color:var(--pill-ink)}.sync-pill.closed .dot{background:#898781}
.sync-pill.failing,.sync-pill.unknown{background:var(--bad-bg);color:var(--bad-ink)}.sync-pill.failing .dot,.sync-pill.unknown .dot{background:#d03b3b}

/* Trends */
.eyebrow{margin:0 0 4px;font-size:13px}
.with-icon{display:inline-flex;align-items:center;gap:8px}
.with-icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.check-inline{display:flex;align-items:center;gap:8px;min-height:40px;font-size:13px}
.check-inline input{width:18px;height:18px;accent-color:var(--accent-bg)}
.legend .key{display:inline-block;width:10px;height:10px;border-radius:2px}.key.weekend{background:var(--bar-weekend)}.key.weekday{background:var(--bar-weekday)}
.swatch.avg{border-top:2px solid var(--avg)}
.daily .bars button{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end;justify-content:center;padding:0;border:0;border-radius:4px 4px 0 0;background:transparent}
.daily .bars button.sel{background:var(--seg)}
.daily .bars i{display:block;width:min(100%,56px);background:var(--bar-weekday);border-radius:4px 4px 0 0}
.daily .bars i.weekend{background:var(--bar-weekend)}.daily .bars i.empty{background:var(--line2)}
.avg-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.avg-line path{fill:none;stroke:var(--avg);stroke-width:2.5;stroke-linejoin:round}
.vcell{display:flex;flex-direction:column;gap:6px;min-width:180px}
.vline{display:flex;align-items:center;gap:10px}
.sq{display:inline-block;flex:none;width:10px;height:10px;border-radius:3px}
.bar.thin{flex:none;width:100%;min-width:0;height:6px}
.spark{display:block}.spark path{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
table.board td{vertical-align:middle}
.readout-box{margin:0;padding:10px 12px;border-radius:10px;background:var(--info-bg);color:var(--info-ink);font-size:13px}
.heat button{display:block;min-width:0;height:40px;padding:0;border:0;border-radius:5px}
.heat button.empty{background:transparent;border:1px dashed var(--border-strong)}
.heat button.sel,.heat button:hover{outline:2px solid var(--ink);outline-offset:1px}

/* Sign-in: a short pitch beside the form */
.login{flex-wrap:wrap;align-items:stretch;padding:0}
.login-intro{flex:1 1 420px;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:clamp(24px,5vw,64px);background:var(--soft);border-right:1px solid var(--line2)}
.login-intro .brand{gap:12px;font-size:16px}
.login-pitch{display:flex;flex-direction:column;gap:20px;max-width:440px}
.login-pitch h1{font-size:40px;font-weight:650;letter-spacing:-.025em;line-height:1.1}
.ticks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;color:var(--ink2)}
.ticks li{display:flex;gap:10px;align-items:flex-start}
.ticks svg{flex:none;width:18px;height:18px;margin-top:2px;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.login-side{flex:1 1 420px;display:flex;align-items:center;justify-content:center;padding:clamp(24px,5vw,64px)}
.login-card{width:100%;max-width:380px;background:transparent;border:0;border-radius:0;padding:0;gap:16px}
.login-card h2{font-size:24px;font-weight:650;letter-spacing:-.015em}
.login-card h2+p{margin:4px 0 0}
.login-card label{gap:6px}
.login-card input{min-height:48px;padding:0 14px;border-radius:10px;font-size:15px}
.pw-field{display:flex;flex-direction:column;gap:6px}
.pw-field>label{font-size:13px;color:var(--ink2)}
.pw{display:flex;align-items:center;border:1px solid var(--border-strong);border-radius:10px;background:var(--field)}
.pw input{flex:1;min-width:0;min-height:46px;border:0}
.pw:has(input[aria-invalid=true]){border-color:var(--bad)}
.pw button{flex:none;width:44px;height:44px;border:0;background:transparent;color:var(--ink2);display:flex;align-items:center;justify-content:center}
.pw button[aria-pressed=true]{color:var(--accent)}
.pw svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.login-card .remember{flex-direction:row;align-items:center;gap:10px;min-height:44px;font-size:14px}
.login-card .remember input{width:18px;height:18px;min-height:0;padding:0;accent-color:var(--accent-bg)}
.login-card .primary{min-height:48px;font-size:15px}
.login-card .error:empty{min-height:0}
@media (max-width:640px){.login-intro{border-right:0;border-bottom:1px solid var(--line2);gap:20px}.login-pitch h1{font-size:26px}.ticks{display:none}}

/* Phones: bottom tabs, a status pill in the top bar and a one-column Today */
.m-today{display:none}
@media (max-width:640px){
  .desk-only{display:none !important}
  body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  .topbar-inner{padding:10px 16px;gap:10px}
  .brand small,#today-date{display:none}
  .sync-pill{display:inline-flex}
  nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;padding:6px 8px calc(8px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}
  nav a{position:relative;flex-direction:column;justify-content:center;gap:2px;min-height:52px;padding:0;font-size:12px;color:var(--ink2)}
  nav a[aria-current=page]{background:none;color:var(--accent);font-weight:600}
  .nav-icon{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .nav-long{display:none}.nav-short{display:inline}
  nav .badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;font-size:11px}
  .page{padding-top:16px}
  .m-today{display:flex;flex-direction:column;gap:14px}
}
.m-title{display:flex;align-items:center;justify-content:space-between;gap:8px}
.m-title h1{font-size:24px;font-weight:650}.m-title p{margin:0}
.m-days{display:flex;border:1px solid var(--border-strong);border-radius:10px;background:var(--card);overflow:hidden}
.m-days button{width:44px;height:44px;border:0;background:transparent;display:flex;align-items:center;justify-content:center}
.m-days button+button{border-left:1px solid var(--line)}
.m-days button:disabled{color:var(--muted);opacity:.5;cursor:default}
.m-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:8px}
.m-card.flush{padding:0;gap:0;overflow:hidden}
.m-hero h2{font-size:13px;font-weight:500;color:var(--ink2)}.m-hero p{margin:0}
.m-net{font-size:40px;font-weight:650;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.m-delta{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--ok-bg);color:var(--good)}
.m-delta.down{background:var(--bad-bg);color:var(--bad)}
.m-pace{display:block;width:100%;height:auto;margin-top:4px;overflow:visible}
.m-pace .base{stroke:var(--border-strong)}
.m-pace .last{fill:none;stroke:#898781;stroke-width:2;stroke-dasharray:5 4}
.m-pace .area{fill:var(--series);fill-opacity:.1}
.m-pace .now{fill:none;stroke:var(--series);stroke-width:2.5;stroke-linejoin:round}
.m-pace .now-dot{fill:var(--series);stroke:var(--card);stroke-width:2}
.m-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.m-stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;min-width:0}
.m-stat span{font-size:11px;color:var(--ink2)}
.m-stat strong{font-size:18px;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-alert{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 14px;border:1px solid var(--warn-line);border-radius:12px;background:var(--warn-bg);color:var(--warn-ink);text-align:left;font-size:13px}
.m-alert span{flex:1}
.m-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:14px 16px 8px}
.m-list{list-style:none;margin:0;padding:0}.m-list li{border-top:1px solid var(--line2)}
.m-vendor{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;min-height:56px;padding:10px 16px;border:0;background:none;text-align:left;font-variant-numeric:tabular-nums}
.m-vname{display:flex;align-items:center;gap:8px;min-width:0}
.m-vname strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.m-vendor .bar.thin{height:5px}
.m-change{font-size:12px;font-weight:600;text-align:right}.m-change.up{color:var(--good)}.m-change.down{color:var(--bad)}
.m-sale{width:100%;display:grid;grid-template-columns:60px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border:0;background:none;text-align:left;font-variant-numeric:tabular-nums}
.m-sale.refund{color:var(--bad)}
.m-vendor:hover,.m-sale:hover{background:var(--hover)}
.m-empty{margin:0;padding:12px 16px 16px}
