:root{--bg:#f6f7f9;--surface:#ffffff;--text:#1a1d21;--muted:#5f6670;--border:#dde1e6;--accent:#d9480f;--accent-text:#ffffff;--danger:#c92a2a;--ok:#2b8a3e}@media (prefers-color-scheme:dark){:root{--bg:#121417;--surface:#1c1f24;--text:#e9ecef;--muted:#9aa1a9;--border:#2f343b;--accent:#ff7a3d;--accent-text:#121417;--danger:#ff6b6b;--ok:#69db7c}}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent)}header.top{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}header.top strong{font-size:18px}main{max-width:1000px;margin:0 auto;padding:24px 16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:20px}h1{font-size:24px;margin:0 0 16px}h2{font-size:18px;margin:0 0 12px}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);font-weight:500;font-size:13px}form.inline{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}form.stack{display:grid;grid-gap:12px;gap:12px;max-width:360px}label{display:grid;grid-gap:4px;gap:4px;font-size:13px;color:var(--muted)}input,select,textarea{padding:8px 10px;border:1px solid var(--border);background:var(--bg);color:var(--text);min-width:160px}button,input,select,textarea{font:inherit;border-radius:6px}button{padding:8px 14px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);cursor:pointer}button.secondary{background:transparent;color:var(--text);border-color:var(--border)}button.danger{background:transparent;color:var(--danger);border-color:var(--danger)}button:disabled{opacity:.6;cursor:default}.error{color:var(--danger);font-size:14px;margin:8px 0 0}.muted{color:var(--muted);font-size:13px}.code{font-family:ui-monospace,monospace;font-size:18px;letter-spacing:2px;font-weight:600}.badge{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.badge.ok{color:var(--ok);border-color:var(--ok)}.refund{color:var(--danger)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px}.row-actions{display:flex;gap:6px}h3{font-size:15px;margin:16px 0 8px}nav.tabs{display:flex;gap:4px;margin:0 0 20px;border-bottom:1px solid var(--border);overflow-x:auto}nav.tabs a{white-space:nowrap;padding:8px 14px;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}nav.tabs a.active{color:var(--text);border-bottom-color:var(--accent);font-weight:500}.category-heading{display:flex;align-items:center;gap:8px}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--border)}input.narrow{min-width:0;width:90px}input.swatch-input{min-width:0;width:48px;height:38px;padding:2px}.list-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}.list-row form{margin:0}.back{margin:0 0 8px}label.check{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:15px;color:var(--text)}label.check input{min-width:0}label.check.indent{padding-left:24px;font-size:14px}fieldset{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:0;display:grid;grid-gap:8px;gap:8px}legend{font-size:13px;color:var(--muted);padding:0 4px}.sentence{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end}.tick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:8px 16px;gap:8px 16px;max-height:320px;overflow-y:auto}.deal-row{align-items:flex-start}.deal-text{flex:1 1;min-width:240px;display:grid;grid-gap:2px;gap:2px}.meal-grid{max-height:420px;overflow:auto;border:1px solid var(--border);border-radius:8px}.meal-grid table{min-width:640px}.meal-grid thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:1}.meal-grid thead input{width:100%;min-width:120px}.meal-grid tr.group th{text-align:left;font-size:13px;color:var(--muted);padding-top:12px}.meal-grid td,.meal-grid th{padding:4px 8px;vertical-align:middle}.meal-grid input.narrow{width:64px}.meal-grid tbody td:first-child{position:-webkit-sticky;position:sticky;left:0;background:var(--surface)}.sentence>span{align-self:center}details>summary{cursor:pointer;color:var(--accent);font-size:14px;margin-top:6px}form.stack{max-width:none}.photo-row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.photo-row>div{flex:1 1;min-width:240px;display:grid;grid-gap:8px;gap:8px}.product-photo{width:160px;height:160px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.product-photo.empty{display:grid;place-items:center;color:var(--muted);font-size:13px;background:var(--bg)}.receipt-logo{width:240px;max-height:120px;object-fit:contain;padding:8px;background:#fff;border-radius:8px;border:1px solid var(--border)}.receipt-logo.empty{height:80px;display:grid;place-items:center;color:var(--muted);font-size:13px;background:var(--bg)}.name-with-thumb{display:inline-flex;align-items:center;gap:10px}.thumb{width:36px;height:36px;object-fit:cover;border-radius:6px;border:1px solid var(--border);display:inline-block}.thumb.empty{background:var(--bg)}input[type=file]{min-width:0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:grid;grid-gap:4px;gap:4px}.stat strong{font-size:22px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));grid-gap:0 20px;gap:0 20px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.num,th.num{text-align:right}.bar-cell{width:35%}.bar{display:block;height:10px;border-radius:3px;background:var(--accent);opacity:.75}h2.spaced{margin-top:20px}.quick-links{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 4px}.quick-links a.active{font-weight:600;text-decoration:none;color:var(--text)}.variance-short{color:var(--danger)}.variance-over{color:var(--ok)}.table-scroll{overflow-x:auto}.title-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.gst-table td:first-child{color:var(--muted);width:48px}aside.side-nav{position:fixed;top:0;bottom:0;left:0;width:220px;overflow-y:auto;z-index:2;display:flex;flex-direction:column;gap:16px;padding:16px 12px;background:var(--surface);border-right:1px solid var(--border)}body:has(aside.side-nav){padding-left:220px}.side-back{font-size:13px;padding:0 8px}.side-business{padding:0 8px}.side-business,aside.side-nav nav{display:grid;grid-gap:2px;gap:2px}aside.side-nav nav a{padding:9px 12px;border-radius:6px;text-decoration:none;color:var(--text);font-size:15px}aside.side-nav nav a:hover{background:var(--bg)}aside.side-nav nav a.active{background:var(--accent);color:var(--accent-text);font-weight:500}@media (max-width:760px){body:has(aside.side-nav){padding-left:0}aside.side-nav{position:static;width:auto;gap:8px;padding:12px 16px;margin:-24px -16px 16px;border-right:none;border-bottom:1px solid var(--border)}aside.side-nav nav{display:flex;gap:4px;overflow-x:auto}aside.side-nav nav a{white-space:nowrap;padding:6px 12px;font-size:14px}}.banner-preview{display:block;width:100%;max-width:640px;aspect-ratio:3/1;object-fit:cover;margin-bottom:12px;border-radius:8px;border:1px solid var(--border)}.banner-preview.empty{display:grid;place-items:center;color:var(--muted);font-size:13px;background:var(--bg)}.form-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.poster{max-width:560px;margin:0 auto;padding:40px 32px;text-align:center;background:#fff;color:#000;border:1px solid var(--border);border-radius:10px}.poster h2{font-size:32px;margin:0}.poster-logo{max-width:220px;max-height:110px;object-fit:contain;margin-bottom:12px}.poster-store{font-size:18px;margin:4px 0 24px}.poster-call{font-size:26px;font-weight:700;margin:0 0 16px}.poster-qr svg{width:300px;height:300px}.poster-steps{font-size:16px;margin:16px 0 8px}.poster-url{font-size:15px;font-family:ui-monospace,monospace}@media print{:root{--bg:#fff;--surface:#fff;--text:#000;--muted:#444;--border:#bbb;--accent:#555}.back,.no-print,.quick-links,aside.side-nav,header.top,nav.tabs{display:none!important}main{max-width:none;padding:0}body:has(aside.side-nav){padding-left:0}.card,.stat{border-color:var(--border);page-break-inside:avoid;break-inside:avoid;padding:12px;margin-bottom:12px}.bar{print-color-adjust:exact;-webkit-print-color-adjust:exact}.poster{border:none;max-width:none;padding-top:24mm}.poster-qr svg{width:110mm;height:110mm}a{color:inherit;text-decoration:none}}.cdu-preview{width:240px;min-height:150px;padding:16px;border-radius:8px;border:1px solid var(--border);display:flex;flex-direction:column;gap:6px;background:var(--surface);color:var(--text)}.slides{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:12px;gap:12px;margin-bottom:12px}.slide{margin:0;display:grid;grid-gap:6px;gap:6px}.slide img,.slide video{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.floor-editor{display:grid;grid-gap:16px;gap:16px}.floor{position:relative;width:100%;border:1px solid var(--border);border-radius:8px;touch-action:none;background-color:var(--bg);background-image:linear-gradient(to right,var(--border) 1px,transparent 1px),linear-gradient(to bottom,var(--border) 1px,transparent 1px)}.floor-table{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;min-width:0;border-radius:6px;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;background:var(--surface);color:var(--text);border:2px solid var(--accent);font-size:13px;line-height:1.1}.floor-table:active{cursor:-webkit-grabbing;cursor:grabbing}.floor-table.round{border-radius:50%}.floor-table.selected{background:var(--accent);color:var(--accent-text)}.floor-table span{font-size:11px;opacity:.75}.floor-panel{display:grid;grid-gap:8px;gap:8px}.input-prefix{display:inline-flex;align-items:center;gap:4px}table.hours input[type=time]{min-width:0}