:root{--bg:#fcfcfb;--ink:#0b0b0b;--ink-soft:#52514e;--ink-faint:#898781;--line:#0b0b0b1f;--line-strong:#0b0b0b66;--field:#fff;--card:#f3f2ee;--food:#2a78d6;--drink:#1baf7a;--disc:#eda100;--flash:#2a78d647}@media (prefers-color-scheme:dark){:root{--bg:#1a1a19;--ink:#f0efec;--ink-soft:#c3c2b7;--ink-faint:#898781;--line:#ffffff1f;--line-strong:#fff6;--field:#262624;--card:#262624;--food:#3987e5;--drink:#199e70;--disc:#c98500;--flash:#3987e566}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;padding:16px;font:14px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}h1{margin:0;font-size:20px;font-weight:600}input,select,button{font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--line-strong);border-radius:6px;padding:6px 10px}button{cursor:pointer}label{color:var(--ink-soft);flex-direction:column;gap:4px;font-size:12px;display:flex}.controls{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.stepper{align-items:center;gap:2px;display:flex}.step{width:30px;height:34px;color:var(--ink);border-radius:6px;justify-content:center;align-items:center;font-size:22px;line-height:1;text-decoration:none;transition:background-color .5s ease-out;display:flex}.step:active{background-color:var(--flash);transition:none}.step[aria-disabled=true]{color:var(--line-strong)}.legend{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.swatch{border-radius:2px;width:10px;height:10px}.swatch.below{background:#e3494880}.swatch.above{background:#2a78d680;margin-left:8px}.legend .low-sample{margin-left:8px}.low-sample{color:var(--ink-faint)}.table-scroll{overflow-x:auto}.heatmap{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;font-size:12px}.heatmap th,.heatmap td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--line);padding:5px 7px}.heatmap thead th{color:var(--ink-soft);vertical-align:bottom;font-weight:600}.heatmap th.vertical{writing-mode:vertical-rl;text-align:left;border-bottom:none;border-top:1px solid var(--line);padding:8px 4px;transform:rotate(180deg)}.heatmap th:first-child{z-index:1;background:var(--bg);text-align:left;color:var(--ink);font-weight:400;position:sticky;left:0}.heatmap .group-start{border-left:1px solid var(--line-strong)}.heatmap tr.restaurant th,.heatmap tr.restaurant td{border-bottom:1px solid var(--line-strong);font-weight:600}.login{max-width:320px;margin:15vh auto 0}.login form{flex-direction:column;gap:12px;margin-top:16px;display:flex}.error{color:#d03b3b;margin:0}.nav{border-bottom:1px solid var(--line);align-items:center;gap:16px;margin-bottom:16px;padding-bottom:10px;display:flex}.nav nav{flex:1;justify-content:space-around;display:flex}.nav a{color:var(--ink-faint);border-bottom:2px solid #0000;border-radius:8px;padding:6px 18px;display:flex}.nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink);border-radius:8px 8px 0 0}.nav-icon{display:flex}.nav-icon.is-pending{color:var(--food);animation:.9s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}button.small{padding:3px 8px;font-size:12px}button,.nav a,.day summary{transition:background-color .5s ease-out,color .5s ease-out}button:active,.nav a:active,.day summary:active{background-color:var(--flash);transition:none}.empty{color:var(--ink-faint);margin:0}h2{margin:0 0 8px;font-size:13px;font-weight:600}h2.section{margin:24px 0 12px;font-size:16px}h3{color:var(--ink-soft);margin:0 0 6px;font-size:12px;font-weight:600}.swatch.food{background:var(--food)}.swatch.drink{background:var(--drink);margin-left:8px}.swatch.disc{background:var(--disc);margin-left:8px}.legend span:last-child{margin-left:8px}.hero{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.metric{background:var(--card);border-radius:8px;padding:12px 14px}.metric-label{color:var(--ink-soft);font-size:12px}.metric-label span{color:var(--ink-faint)}.metric-value{font-variant-numeric:tabular-nums;font-size:26px;font-weight:600}.metric-extra{color:var(--ink-soft);font-size:12px}.split{gap:2px;margin:12px 0 20px;display:flex}.seg{color:#fff;white-space:nowrap;font-size:12px;overflow:hidden}.split .seg{flex-basis:0;padding:6px 10px}.seg.food{background:var(--food);border-radius:4px 0 0 4px}.seg.drink{background:var(--drink)}.split .seg.drink{border-radius:0 4px 4px 0}.seg.disc{background:var(--disc);border-radius:0 4px 4px 0}.boxes{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;gap:12px;display:grid}.box{border:1px solid var(--line);border-radius:8px;padding:12px 14px}.lines{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}.lines th{text-align:left;padding:3px 12px 3px 0;font-weight:400}.discounts .lines th{text-transform:capitalize}.lines td{text-align:right;white-space:nowrap;width:1%;padding:3px 0 3px 12px}.lines tfoot th,.lines tfoot td{border-top:1px solid var(--line);padding-top:6px;font-weight:600}.day{border-bottom:1px solid var(--line)}.day summary{cursor:pointer;font-variant-numeric:tabular-nums;grid-template-columns:90px 80px minmax(80px,1fr) 64px 96px;align-items:center;gap:10px;padding:8px 0;display:grid}.day-covers,.day-sph{color:var(--ink-soft)}.day-sph,.day-total{text-align:right}.day-total{font-weight:600}.track{gap:2px;height:20px;display:flex}.track .seg{text-align:center;font-size:11px;line-height:20px}.day-detail{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;padding:4px 0 16px;display:grid}.hours{align-items:flex-end;gap:3px;height:90px;display:flex}.hour{height:100%;color:var(--ink-faint);flex-direction:column;flex:1;justify-content:flex-end;align-items:center;font-size:10px;display:flex}.hour-bar{background:var(--food);border-radius:2px 2px 0 0;width:100%}@media (max-width:560px){.day summary{grid-template-columns:100px 1fr 100px}.day summary .track{grid-area:2/1/auto/-1}.day-sph{display:none}}button.sort{all:unset;cursor:pointer;white-space:nowrap;border-radius:4px;padding:2px 4px;font-weight:600;transition:background-color .5s ease-out}button.sort:hover{color:var(--ink)}button.sort:active{background-color:var(--flash);transition:none}button.sort:focus-visible{outline:2px solid var(--food)}.sort-arrow{width:.9em;font-size:9px;display:inline-block}button.hide{all:unset;cursor:pointer;text-align:center;width:16px;color:var(--ink-faint);border-radius:4px;margin-right:4px}button.hide:hover{color:var(--ink)}button.hide:active{background-color:var(--flash)}.hidden-names{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;font-size:12px;display:flex}
