:root{--bg:#f6f2eb;--paper:#fffdfa;--ink:#282128;--sub:#665e65;--line:#e2d9d1;--brand:#901537;--accent:#70213b;--tint:#f6e4e7;--good:#216b54;--shade:#efe8de;font-family:system-ui,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);color-scheme:light}body.dark{--bg:#111722;--paper:#1b2533;--ink:#f4f1f4;--sub:#b9c1d0;--line:#344151;--brand:#a9284e;--accent:#ffb3ca;--tint:#382836;--good:#7ddcb8;--shade:#263545;color-scheme:dark}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);min-height:100dvh}button,input,select,textarea{font:inherit;color:inherit}button,a.button{cursor:pointer;border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink);padding:10px 14px;min-height:44px;text-decoration:none;line-height:1.3;font-size:14px;font-weight:650}button:hover,a.button:hover{border-color:var(--accent)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ce9143;outline-offset:2px}.primary,button.primary{background:var(--brand);border-color:var(--brand);color:white}.tint,.active,button.active{background:var(--tint);border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.52;cursor:wait}header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px clamp(16px,3vw,45px);background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{font-weight:900;letter-spacing:.24em;font-size:25px;color:var(--accent)}.brand small{display:block;letter-spacing:.08em;font-size:9px;text-transform:uppercase}.actions,.tabs,.chips{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.tabs{padding:12px clamp(16px,3vw,45px);border-bottom:1px solid var(--line);background:var(--paper)}main{max-width:1500px;margin:auto;padding:clamp(15px,2.5vw,38px)}h1,h2,h3,p{margin:0 0 .6em;overflow-wrap:anywhere}h1{font-size:clamp(24px,3vw,36px);letter-spacing:-.04em}h2{font-size:21px}h3{font-size:16px}p,.sub,small{color:var(--sub);line-height:1.5}.eyebrow{color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.panel,.card{padding:19px;background:var(--paper);border:1px solid var(--line);border-radius:17px;margin-bottom:16px;min-width:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(175px,100%),1fr));gap:12px}.tableBtn{text-align:left;display:grid;gap:7px;min-height:114px;padding:17px}.tableBtn.busy{background:var(--tint);border-color:var(--accent)}.tableBtn strong{font-size:20px}.cash{display:grid;grid-template-columns:minmax(140px,.57fr) minmax(250px,1.8fr) minmax(285px,1fr);gap:15px;align-items:start}.cash>*{min-width:0}.rail{display:grid;gap:8px}.rail button{text-align:left}.productGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(132px,100%),1fr));gap:10px}.tile{display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:6px;min-width:0;padding:9px}.tile strong,.row strong,.ticket strong,.stat strong{overflow-wrap:anywhere}.art{display:grid;place-items:center;background:linear-gradient(135deg,var(--shade),var(--tint));color:var(--accent);border-radius:9px;width:100%;aspect-ratio:1.8;overflow:hidden}.art img{width:100%;height:100%;object-fit:cover}.art svg{width:34%;height:60%;stroke:currentColor;stroke-width:1.5;fill:none}.price{font-weight:750;color:var(--good)}.row,.line,.section{display:flex;justify-content:space-between;align-items:center;gap:12px;min-width:0}.row,.line{border-bottom:1px solid var(--line);padding:12px 0}.row:last-child,.line:last-child{border-bottom:0}.row>div,.line>div{min-width:0;overflow-wrap:anywhere}.row small,.line small{display:block}.row button,.line button{flex:none}.section{margin-bottom:18px;flex-wrap:wrap}.section h1,.section h2{margin:0}.ticket{position:sticky;top:10px;padding:18px}.total{font-size:26px;font-weight:750;color:var(--accent)}label{display:grid;gap:6px;font-weight:650;margin:13px 0}label.check{display:flex;align-items:center;gap:8px;font-weight:500}label.check input{width:20px;height:20px}input,select,textarea{width:100%;min-width:0;border:1px solid var(--line);padding:11px 12px;border-radius:9px;background:var(--paper);min-height:44px}textarea{min-height:85px}input[type=checkbox]{min-height:0;accent-color:var(--brand)}.smallnum{width:74px}.spacer{height:12px}.block{display:block;width:100%;margin-top:12px}.auth{max-width:450px;margin:5vh auto}.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.badge{display:inline-block;font-size:12px;font-weight:700;padding:4px 9px;border-radius:999px;background:var(--shade);color:var(--sub)}.alert{background:var(--tint);border:1px solid var(--accent);padding:14px;border-radius:12px;margin:12px 0;color:var(--accent)}dialog{width:min(510px,calc(100% - 24px));max-height:88dvh;padding:23px;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:18px}dialog::backdrop{background:#10101899}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:13px 19px;background:#352d34;color:white;border-radius:12px;z-index:99;max-width:90vw}#toast[hidden]{display:none}.phone{max-width:680px;margin:0 auto}.phone header{background:#911233;color:white}.phone .brand,.phone .brand small{color:white}.phone main{padding:17px 15px 100px}.phone nav{position:fixed;bottom:0;width:100%;max-width:680px;display:flex;background:var(--paper);padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:3;border-top:1px solid var(--line)}.phone nav button{flex:1;min-width:0;padding:8px 3px;border:0;font-size:13px}.hero{background:#8b1537;color:#fff9f3;border-radius:20px;padding:24px;margin-bottom:18px}.hero p,.hero small{color:#f3dce3}.hero h1{font:600 32px Georgia,serif}.stars{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0}.star{border-radius:50%;width:28px;height:28px;display:grid;place-items:center;border:1px solid #e2a3b6}.star.on{background:#ffe3a7;color:#7e4933}.cover{width:100%;max-height:280px;object-fit:cover;border-radius:12px}.qr{margin:12px auto;width:min(260px,90%,43dvh);background:white;padding:10px}.qr svg{display:block;width:100%;height:auto}.center{text-align:center}.printhead{display:none}.paypick{display:grid;grid-template-columns:20px minmax(0,1fr) 72px;align-items:center;gap:9px;border-bottom:1px solid var(--line);padding:10px 0}.paypick input[type=checkbox]{width:18px}.paypick strong{overflow-wrap:anywhere}.hint{font-size:13px}.folio{min-height:80px;padding:14px;background:var(--shade);border-radius:9px}details{margin:14px 0}summary{cursor:pointer;padding:10px 0}.stat{padding:15px;background:var(--paper);border:1px solid var(--line);border-radius:14px}.stat strong{display:block;font-size:24px}.tabs::-webkit-scrollbar{height:0}a{color:var(--accent)}.error{color:var(--accent);white-space:pre-wrap}.callBanner{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.callBanner button{margin-left:auto}
@media(max-width:900px){.cash{grid-template-columns:minmax(0,1fr) minmax(255px,.8fr)}.cash .railcol{grid-column:1/-1}.rail{display:flex;flex-wrap:wrap}.rail button{min-width:85px}.ticket{position:static}.tabs{gap:5px}.tabs button{padding:9px 10px}}
@media(max-width:620px){.cash,.split{grid-template-columns:minmax(0,1fr)}.cash .railcol{grid-column:auto}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel,.card{padding:15px}header{gap:10px}.brand{font-size:20px}.actions{gap:6px}.productGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.row{flex-wrap:wrap}.section{align-items:flex-start}.phone .row{flex-wrap:nowrap}.tableBtn{min-height:96px}.tabs button{font-size:12px}.cash .ticket{order:-1}.cash .railcol{order:-2}}
@media print{header,nav,.tabs,#app,#toast,dialog .actions,dialog .noprint{display:none!important}body{background:white!important;color:black!important}dialog[open]{position:static;display:block;border:0;width:100%;max-height:none;color:black;background:white;margin:0}.printhead{display:block}.qr{width:65mm}.panel{break-inside:avoid}}


/* Cashier navigation has three distinct states, with a count and text as well as color. */
[hidden]{display:none!important}h1,h2,h3,legend{text-transform:capitalize}.ico{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.tabs button,.tabs a{display:inline-flex;align-items:center;justify-content:center;gap:8px}.tabs .navtables{background:#184c91;color:white;border-color:#184c91;font-weight:750;min-width:145px}.tabs .navcalls{background:#eeeafa;color:#51327d;border-color:#c6b7df}.tabs .navcalls.ringing{background:#ffcd61;border-color:#ad620b;color:#482b04}.bubble{min-width:23px;height:23px;display:inline-grid;place-items:center;border-radius:20px;background:#ffffff99;color:inherit;font-variant-numeric:tabular-nums}.ringing .bubble{background:#6d3900;color:#fff}.navsound{font-size:12px;padding:8px 10px}.dark .tabs .navtables{background:#326bb9;border-color:#5788ca}.dark .tabs .navcalls:not(.ringing){background:#352c49;color:#eee4ff;border-color:#665780}.tilefoot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:auto}.adddot{background:#136d53;color:white;border-radius:50%;width:24px;height:24px;display:inline-grid;place-items:center;font-size:20px}.editqty{min-height:30px;font-size:11px;padding:4px 8px;margin-top:5px}.shortcode{display:block;letter-spacing:.22em;font-size:30px;font-variant-numeric:tabular-nums}.miniQR .qr{width:min(170px,52vw,34dvh)}.phone nav .scanbtn{border-radius:14px;background:var(--brand);color:white;align-self:center;font-weight:750}.phone nav .scanbtn:before{content:"";display:block;width:16px;height:16px;margin:0 auto 3px;background:repeating-conic-gradient(white 0 25%,transparent 0 50%) 0 0/7px 7px;border:2px solid white}.tabs{position:sticky;top:0;z-index:2}.ticket{top:82px}.eyebrow{text-transform:capitalize}@media(max-width:620px){.tabs{position:static}.tabs .navtables{min-width:0}.tabs .navsound{font-size:11px}.ticket{position:static}.tabs{gap:6px}.tabs button{min-height:44px}}

.tableidentity{flex:1;min-width:0}.tablelink{display:block;width:fit-content;max-width:100%;padding:5px 0;color:var(--accent);font-size:13px;line-height:1.55;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.tablelink:focus-visible{outline:3px solid #ae843a}.center .tablelink{margin:2px auto}.copyqr{margin-top:7px}.tablerow .actions{flex-wrap:wrap}@media(max-width:620px){.tablerow{display:grid;gap:6px}.tablerow .actions{display:flex;justify-content:flex-start}}@media print{.tablelink{font-size:11px;color:#111;margin:0 auto}.noprint{display:none!important}}

.navsound .level,#volumeLabel{font-variant-numeric:tabular-nums}.navsound .level{background:var(--shade);padding:3px 7px;border-radius:8px}label[for=callVolume],.volume-scale{display:flex;justify-content:space-between;align-items:center;gap:12px}#volumeLabel{font-size:20px;color:var(--accent)}#callVolume{accent-color:var(--brand);padding:0;cursor:pointer}.volume-scale{margin:-3px 0 15px}#volumeResult:empty{display:none}

.ticket > .actions {
 margin-block-start:12px;
 gap:12px;
}

.report-rewards {
 display:grid;
 grid-template-columns:repeat(3,minmax(0,1fr));
 gap:12px;
 margin:16px 0 24px;
}
.report-rewards > div {
 min-width:0;
 padding:15px 18px;
 color:var(--metric-ink);
 background:var(--metric-bg);
 border:1px solid var(--metric-edge);
 border-inline-start:4px solid var(--metric-accent);
 border-radius:14px;
}
.reward-discount {--metric-bg:#fbecf0;--metric-ink:#781b3d;--metric-edge:#e9c5d0;--metric-accent:#ae4167}
.reward-stars {--metric-bg:#fcf3df;--metric-ink:#69450c;--metric-edge:#e8d3a7;--metric-accent:#ac7921}
.reward-members {--metric-bg:#eaf5f1;--metric-ink:#17513f;--metric-edge:#b8d9cb;--metric-accent:#35795f}
.dark .reward-members {--metric-bg:#20352e;--metric-ink:#bcead6;--metric-edge:#3e6455;--metric-accent:#79caa7}
.dark .reward-discount {--metric-bg:#352532;--metric-ink:#ffd1e0;--metric-edge:#664154;--metric-accent:#ed91b1}
.dark .reward-stars {--metric-bg:#342d21;--metric-ink:#ffe2a3;--metric-edge:#615034;--metric-accent:#e5b65e}
.report-rewards dt {display:flex;align-items:center;gap:8px;font-size:.94rem;font-weight:650}
.report-rewards dd {
 margin:6px 0 0;
 font-size:clamp(1.65rem,2.6vw,2.15rem);
 line-height:1.15;
 font-weight:750;
 font-variant-numeric:tabular-nums;
 overflow-wrap:anywhere;
}
.report-rewards dd span {font-size:.94rem;font-weight:550}
@media(max-width:520px){
 .report-rewards {grid-template-columns:minmax(0,1fr);gap:8px}
 .report-rewards > div {display:flex;align-items:center;justify-content:space-between;gap:6px 12px;flex-wrap:wrap;padding:12px 14px}
 .report-rewards dd {margin:0}
}

button.danger-outline {color:#93243d;border-color:#cf929d}
button.danger-outline:hover {background:#f8e7eb;border-color:#a53b52}
.dark button.danger-outline {color:#ffb4c1;border-color:#905566}
.dark button.danger-outline:hover {background:#412c38;border-color:#ec96aa}

.menu-categories {display:grid;gap:9px;margin-top:14px}
.menu-category {min-width:0;margin:0;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.menu-category > summary {
 display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 15px;
 border-radius:11px;cursor:pointer;list-style:none;
}
.menu-category > summary::-webkit-details-marker {display:none}
.menu-category > summary::after {
 content:"";flex:none;width:8px;height:8px;margin:0 3px;
 border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);
}
.menu-category[open] > summary {color:var(--accent);background:var(--tint);border-radius:11px 11px 0 0}
.menu-category[open] > summary::after {transform:rotate(225deg)}
.menu-category > summary:hover {background:var(--tint)}
.menu-category > summary:focus-visible {outline:3px solid #ce9143;outline-offset:2px}
.category-title {flex:1;min-width:0;font-size:1.04rem;font-weight:700;overflow-wrap:anywhere}
.category-count {flex:none;color:var(--sub);background:var(--shade);border-radius:20px;padding:3px 10px;font-size:.8rem;font-variant-numeric:tabular-nums}
.category-products {padding:0 15px 13px}
.category-products p {margin:13px 0 0}
.category-add {margin-top:10px;color:var(--accent)}
.qr-categories-heading,.qr-group-heading {display:flex;align-items:center;justify-content:space-between;gap:10px}
.qr-categories-heading h2 {margin:0;font-size:1.04rem}
.qr-categories .qr-browse {
 display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 2px 0 9px;
 border:0;background:transparent;color:var(--accent);font-weight:700;font-size:.84rem
}
.qr-browse svg {width:16px;height:16px;flex:none}
.qr-category-track {
 position:relative;display:flex;gap:7px;overflow-x:auto;overscroll-behavior-x:contain;
 scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:2px 0 6px;
 user-select:none;-webkit-user-select:none
}
@media(any-hover:hover) and (any-pointer:fine){
 .qr-category-track,.qr-category-track .qr-chip {cursor:grab}
 .qr-category-track.dragging,.qr-category-track.dragging .qr-chip {cursor:grabbing}
}
.qr-category-track .qr-chip {flex:none;min-height:44px;padding:8px 15px;border-radius:999px}
.qr-chip[aria-pressed="true"] {color:white;background:var(--brand);border-color:var(--brand)}
.qr-category-track .qr-chip:focus-visible {outline-offset:-3px}
.qr-product-group + .qr-product-group {margin-top:28px}
.qr-group-heading {margin:3px 0 12px}
.qr-group-heading h2 {margin:0;font:600 1.3rem/1.25 Georgia,serif;text-transform:none}
.qr-group-heading::before {content:"";order:1;flex:1;min-width:8px;border-top:1px solid var(--line)}
.qr-group-heading span {order:2;flex:none;font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--sub)}
.qr-choice-list {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.qr-choice-list .qr-choice {
 display:grid;align-content:center;gap:3px;min-width:0;min-height:58px;padding:9px 12px;
 text-align:start;overflow-wrap:anywhere
}
.qr-choice small {font-size:.76rem;font-weight:500;color:var(--sub)}
.qr-choice[aria-pressed="true"] {border-color:var(--accent);background:var(--tint);color:var(--accent);box-shadow:inset 3px 0 var(--accent)}
@media(max-width:600px){
 dialog:has(.qr-choice-list) {
  inset:auto 0 0;width:100%;max-width:100%;margin:0;max-height:84dvh;border-radius:21px 21px 0 0;
  padding:16px 16px max(18px,env(safe-area-inset-bottom));overscroll-behavior:contain
 }
}
@media(max-width:520px){
 .category-products .row {align-items:flex-start;flex-direction:column;gap:7px}
 .category-products {padding-inline:12px}
 .menu-category > summary {padding-inline:12px}
}

/* Payment dialog: hardware reader and manual loyalty entry share the same code. */
.loyalty-reader{margin:14px 0}
.loyalty-reader label{display:block;margin:0 0 6px}
.loyalty-reader label small{font-weight:500}
.reader-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:8px}
.reader-controls input{font-variant-numeric:tabular-nums}
.reader-arm{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--tint);color:var(--accent);border-color:var(--accent);white-space:nowrap}
.reader-arm svg{width:20px;height:20px;flex:none}
#reader-note{display:block;margin-top:6px;line-height:1.4;color:var(--sub)}
#reader-note[data-state=complete]{color:var(--good);font-weight:650}
#reader-note[data-state=invalid]{color:var(--accent)}

#member-directory>label{margin-bottom:5px}
#member-search{max-width:38rem}
.member-list-heading,.directory-paging,.directory-actions,.directory-card-summary,.directory-balance b{display:flex;align-items:center;gap:8px}
.member-list-heading,.directory-paging{justify-content:space-between;margin:14px 0;color:var(--sub);font-size:.9rem}
.directory-paging[hidden]{display:none}
.directory-paging button:disabled{cursor:default}
.directory-member{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,auto) auto;gap:18px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}
.directory-identity,.directory-balance{display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}
.directory-balance b,.directory-card-summary{color:var(--accent)}
.directory-card-summary{padding:12px;background:var(--tint);border-radius:10px}
#directory-projection{color:var(--accent);font-weight:650}
@media(max-width:700px){.directory-member{grid-template-columns:minmax(0,1fr) auto;gap:7px 12px}.directory-actions{grid-column:1/-1;flex-wrap:wrap}.directory-actions button{flex:1}.directory-balance{justify-self:end}}

#member-google-login{display:grid;justify-content:center;margin:16px 0;color:var(--sub)}
.google-signin{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:10px 18px;border:1px solid #747775;border-radius:6px;background:#fff;color:#1f1f1f;font:500 14px system-ui;text-decoration:none}
.google-settings{border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.google-settings small{display:block;color:var(--sub)}.google-saved{display:block;margin-top:6px;color:var(--good)}

.otp-setup .qr{max-width:180px;margin:12px auto}.otp-setup code{overflow-wrap:anywhere}.otp-codes{white-space:pre-wrap;overflow-wrap:anywhere;font-size:1rem;line-height:1.9}
