
@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url("/assets/fonts/InterVariable.woff2") format("woff2")}
@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url("/assets/fonts/SoraVariable.woff2") format("woff2")}
h1,h2,h3{font-family:Sora,Inter,system-ui,sans-serif;font-weight:600}

:root{color-scheme:light;--bg:#f4f7ff;--surface:#ffffff;--surface-alt:#eaf0fc;--text:#142341;--muted:#50617f;--accent:#075bc4;--action:#075bc4;--on-action:#ffffff;--border:#7c8fae;--focus:#4c5bff;--selected:#e3eaff;--selected-border:#6676d9;--item-edge:#4c5bff;--info-bg:#e8f3ff;--info-text:#16477b;--warning-bg:#fff3d4;--warning-text:#704400;--warning-border:#c29135;--error-bg:#fff0f0;--error-text:#a12d35;--error-border:#d29b9f;--success:#16704d;--shadow:#173f7c12;--backdrop:#05081699;--brand-start:#075bc4;--brand-end:#6444c9}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--bg:#050816;--surface:#081022;--surface-alt:#14203b;--text:#f7faff;--muted:#aab7d7;--accent:#6cbcff;--action:#008bff;--on-action:#050816;--border:#536a92;--focus:#00e5ff;--selected:#202c59;--selected-border:#8a92ff;--item-edge:#8a5cff;--info-bg:#112c47;--info-text:#b8dfff;--warning-bg:#382c12;--warning-text:#ffda88;--warning-border:#977435;--error-bg:#381b28;--error-text:#ffb3bb;--error-border:#ab6471;--success:#65ddb0;--shadow:#008bff12;--backdrop:#050816bb;--brand-start:#008bff;--brand-end:#8a5cff}}
:root[data-theme="dark"]{color-scheme:dark;--bg:#050816;--surface:#081022;--surface-alt:#14203b;--text:#f7faff;--muted:#aab7d7;--accent:#6cbcff;--action:#008bff;--on-action:#050816;--border:#536a92;--focus:#00e5ff;--selected:#202c59;--selected-border:#8a92ff;--item-edge:#8a5cff;--info-bg:#112c47;--info-text:#b8dfff;--warning-bg:#382c12;--warning-text:#ffda88;--warning-border:#977435;--error-bg:#381b28;--error-text:#ffb3bb;--error-border:#ab6471;--success:#65ddb0;--shadow:#008bff12;--backdrop:#050816bb;--brand-start:#008bff;--brand-end:#8a5cff}
:root{--divider:#dfe5ef;--control:#edf1f7;--control-hover:#e1e8f2;--control-pressed:#d5deec;--elevation:0 2px 4px #14234104,0 10px 30px #14234108;--action-shadow:0 3px 8px #075bc426;--action-hover:#064fae;--action-pressed:#04438f}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--divider:#25314b;--control:#1a2741;--control-hover:#263653;--control-pressed:#314463;--elevation:0 2px 4px #00000018,0 10px 30px #00000024;--action-shadow:0 3px 10px #008bff20;--action-hover:#24a0ff;--action-pressed:#54b5ff}}
:root[data-theme="dark"]{--divider:#25314b;--control:#1a2741;--control-hover:#263653;--control-pressed:#314463;--elevation:0 2px 4px #00000018,0 10px 30px #00000024;--action-shadow:0 3px 10px #008bff20;--action-hover:#24a0ff;--action-pressed:#54b5ff}
.theme-toggle{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:48px;height:48px;min-height:48px;min-width:48px;padding:0;border:1px solid var(--border);border-radius:10px;background:var(--surface-alt);color:var(--text);cursor:pointer;touch-action:manipulation}
.theme-toggle svg{display:block;pointer-events:none}
.theme-toggle .theme-icon-sun,.theme-toggle[aria-pressed="true"] .theme-icon-moon{display:none}
.theme-toggle[aria-pressed="true"] .theme-icon-sun{display:block}
.theme-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.brand-mark,.mark{background:linear-gradient(135deg,var(--brand-start),var(--brand-end));color:var(--on-action)}
input::placeholder{color:var(--muted);opacity:1}
input{accent-color:var(--action)}
button,a,input,select{ -webkit-tap-highlight-color:transparent }
button{transition:background-color 150ms ease,border-color 150ms ease,box-shadow 150ms ease,transform 120ms ease}
button:not(:disabled):active{transform:translateY(1px)}
button:disabled{opacity:1;box-shadow:none}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
@media(prefers-reduced-motion:reduce){button{transition:none}button:not(:disabled):active{transform:none}}

:root{--glass-light:#ffffffb8;--glass-rim:#ffffffed;--glass-edge:#b7c5de;--glass-shadow:#173f7c20;--glass-wash:#ffffffeb;--glass-primary:radial-gradient(ellipse 90% 115% at 50% -35%,#ffffff43 0%,#ffffff20 45%,#ffffff00 75%),linear-gradient(180deg,#1d4b88 0%,#203f7c 67%,#493093 100%);--glass-on-primary:#ffffff;--glass-primary-edge:#456dc2;--glass-primary-shadow:inset 0 1px #ffffffd6,inset 0 -3px #0a174ba6,0 3px 5px #112d6660,0 7px 12px #224d9320;--glass-primary-light:#ffffffd6;--glass-primary-shade:#0a174ba6;--glass-primary-elevation:#254d9a52;--glass-primary-hover:radial-gradient(ellipse 90% 115% at 50% -35%,#ffffff43 0%,#ffffff20 45%,#ffffff00 75%),linear-gradient(180deg,#235393 0%,#284888 67%,#54399f 100%);--glass-primary-active:radial-gradient(ellipse 90% 115% at 50% -35%,#ffffff43 0%,#ffffff20 45%,#ffffff00 75%),linear-gradient(180deg,#163c73 0%,#1a356c 67%,#3a267e 100%);--glass-active-shade:#101c4938;--glass-active-light:#ffffff40;--glass-primary-solid:#174f9f;--glass-shine:#ffffffd9;--glass-secondary:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#ffffff 0%,#eef3fb 64%,#e3ebf8 100%);--glass-secondary-hover:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#ffffff 0%,#f4f7fd 64%,#eaf0fb 100%);--glass-secondary-active:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#dbe5f4 0%,#e5edf9 64%,#d4dff0 100%);--glass-control-rim:#ffffff;--glass-control-depth:#7c95ba70;--glass-control-elevation:#23457526}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--glass-light:#ffffff12;--glass-rim:#ffffff38;--glass-edge:#41516e;--glass-shadow:#00000055;--glass-wash:#081022ef;--glass-shine:#ffffff28;--glass-secondary:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#304460 0%,#233852 64%,#162b45 100%);--glass-secondary-hover:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#384e6d 0%,#2a405d 64%,#1c334f 100%);--glass-secondary-active:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#1b2e49 0%,#1c304a 64%,#11243d 100%);--glass-control-rim:#bbd9ff75;--glass-control-depth:#000000a0;--glass-control-elevation:#00000070}}
:root[data-theme="dark"]{--glass-light:#ffffff12;--glass-rim:#ffffff38;--glass-edge:#41516e;--glass-shadow:#00000055;--glass-wash:#081022ef;--glass-shine:#ffffff28;--glass-secondary:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#304460 0%,#233852 64%,#162b45 100%);--glass-secondary-hover:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#384e6d 0%,#2a405d 64%,#1c334f 100%);--glass-secondary-active:radial-gradient(ellipse 90% 115% at 50% -35%,var(--glass-shine),#ffffff00 75%),linear-gradient(180deg,#1b2e49 0%,#1c304a 64%,#11243d 100%);--glass-control-rim:#bbd9ff75;--glass-control-depth:#000000a0;--glass-control-elevation:#00000070}


:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);--line:var(--border);}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,select,input{font:inherit}button{cursor:pointer;touch-action:manipulation;min-height:48px}button:disabled{cursor:default;opacity:.5}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:3px}h1,h2,h3,p{margin:0}header{padding:18px 28px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px}.brand-mark,.mark{display:grid;place-items:center;background:var(--action);color:var(--on-action);border-radius:13px;width:44px;height:44px;font:28px Georgia,serif;flex-shrink:0}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:10px;color:var(--muted);font-weight:750}header h1{font-size:21px;font-weight:650;line-height:1.3;margin-top:4px;overflow-wrap:anywhere}.header-status{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px}.badge{font-size:12px;color:var(--muted);background:var(--surface-alt);padding:9px 12px;border-radius:8px;overflow-wrap:anywhere}.connection{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:650;padding:9px 12px;border:1px solid var(--line);border-radius:24px;white-space:nowrap}.connection::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--warning-text)}.connection.online::before{background:var(--success)}.connection.offline::before,.connection.session::before{background:var(--error-text)}.connection-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 28px;background:var(--warning-bg);border-bottom:1px solid var(--warning-border);color:var(--warning-text)}.connection-banner strong{font-size:14px}.connection-banner p{font-size:13px;line-height:1.5;margin-top:4px;max-width:760px}.connection-banner button{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text);flex-shrink:0}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 390px;align-items:start;min-height:calc(100dvh - 90px)}.catalog{padding:28px}.catalog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px}.catalog-title{font-size:27px;letter-spacing:-.7px;margin-top:6px;font-weight:650}#view-sale{display:none}.search{display:block;margin-bottom:18px}.search span{display:block;font-size:12px;font-weight:600;margin-bottom:7px;color:var(--muted)}.search input{width:100%;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;color:var(--text);min-height:48px}.search input::placeholder{color:var(--muted)}nav{display:flex;gap:8px;overflow:auto;padding:3px 3px 20px;margin-left:-3px}nav button,.tip{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 16px;white-space:nowrap;color:var(--muted);font-size:14px}nav button.active,.tip.active{background:var(--selected);border-color:var(--selected-border);color:var(--accent);font-weight:700}.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.item{position:relative;display:flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);border-top:4px solid var(--item-edge);background:var(--surface);border-radius:13px;padding:17px;text-align:left;color:var(--text);min-height:144px;box-shadow:0 2px 3px var(--shadow)}.item strong{font-size:16px;font-weight:650;line-height:1.35;overflow-wrap:anywhere;padding-right:18px}.item small{display:block;color:var(--muted);font-size:12px;line-height:1.4;margin-top:7px;overflow-wrap:anywhere}.price{display:block;margin-top:auto;padding-top:20px;font-size:16px;font-weight:750;font-variant-numeric:tabular-nums}.item-count{position:absolute;right:10px;top:10px;background:var(--action);color:var(--on-action);border-radius:50%;min-width:24px;height:24px;display:grid;place-items:center;font-size:11px;font-weight:700;padding:3px}.custom{margin-top:14px;min-height:54px;width:100%;text-align:center;border:1px dashed var(--border);border-radius:12px;color:var(--accent);font-weight:650;background:var(--surface-alt)}.catalog-note{font-size:12px;color:var(--muted);line-height:1.6;margin-top:18px}.cart{padding:24px;background:var(--surface);border-left:1px solid var(--line);min-height:calc(100dvh - 90px);display:flex;flex-direction:column;gap:20px;position:sticky;top:0}.cart-body{display:flex;flex-direction:column;gap:18px}.cart-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.cart h2{font-size:21px;letter-spacing:-.4px}.muted{font-size:12px;color:var(--muted);margin-top:5px}.link{border:0;background:var(--surface-alt);color:var(--muted);border-radius:9px;padding:10px;font-size:12px;font-weight:600;white-space:nowrap}.cart-lines{min-height:128px;max-height:28dvh;overflow:auto}.empty{text-align:center;color:var(--muted);padding:32px 12px;line-height:1.7;font-size:14px;white-space:pre-line}.line{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--surface-alt);font-size:14px;font-weight:600;overflow-wrap:anywhere}.line small{display:block;color:var(--muted);font-weight:400;margin-top:5px;font-size:12px}.quantity{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}.quantity button{width:44px;min-height:44px;border-radius:9px;border:1px solid var(--line);background:var(--surface-alt);color:var(--accent);font-size:20px}.quantity span{min-width:15px;text-align:center}.tips{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-wrap:wrap;gap:6px}.tips h3{flex-basis:100%;margin-bottom:4px}.tips h3,.terminal{font-size:12px;font-weight:650;color:var(--muted)}.tips h3 small{font-weight:400;color:var(--muted);margin-left:5px}.tips>div{display:contents}.tip{padding:8px 10px;font-size:13px}.terminal select{display:block;width:100%;margin-top:9px;border:1px solid var(--line);border-radius:10px;background:var(--surface-alt);padding:13px;color:var(--text);min-height:48px}.totals{margin-top:auto}.totals p{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:13px;color:var(--muted)}.totals strong{font-weight:600;font-variant-numeric:tabular-nums;text-align:right}.totals .grand{font-size:23px;letter-spacing:-.5px;font-weight:600;color:var(--text);border-top:1px solid var(--line);margin-top:12px;padding-top:18px;align-items:center}.totals .grand span{font-size:16px;letter-spacing:0}.totals .total-note{font-size:11px;line-height:1.5;padding-top:7px}.charge,dialog button{background:var(--action);color:var(--on-action);border:0;border-radius:11px;padding:16px;font-weight:700;min-height:52px}.charge{width:100%;font-size:16px;box-shadow:0 3px 8px var(--accent)1a}.secondary{background:var(--surface-alt);color:var(--accent);border:1px solid var(--line);border-radius:10px;padding:12px;font-weight:600;font-size:13px}.payment-actions{display:grid;gap:10px}#message{font-size:13px;line-height:1.6;color:var(--muted);min-height:26px;text-align:center}#message:not(:empty){padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--info-bg)}#message.error,.error{color:var(--error-text)}#message.error{background:var(--error-bg);border-color:var(--error-border)}.login{min-height:100dvh;display:grid;place-items:center;padding:24px;background:var(--surface-alt)}.login-card{width:100%;max-width:420px;text-align:center;background:var(--surface);padding:40px 32px;border:1px solid var(--line);border-radius:22px;box-shadow:0 18px 55px var(--shadow)}.login-card h1{font-size:28px;margin-top:10px;letter-spacing:-.7px}.login-card p{margin-top:18px;color:var(--muted);font-size:14px;line-height:1.6}.login-card button{margin-top:24px}.mark{width:56px;height:56px;margin:0 auto 24px;font-size:32px}dialog{color:var(--text);border:1px solid var(--line);border-radius:18px;padding:26px;width:380px;max-width:calc(100vw - 32px);box-shadow:0 24px 90px var(--shadow)}dialog::backdrop{background:var(--backdrop)}dialog h2{font-size:23px;letter-spacing:-.5px;margin-bottom:18px}dialog label,dialog p{font-size:13px;color:var(--muted);line-height:1.6}dialog input{display:block;width:100%;font-size:30px;font-variant-numeric:tabular-nums;padding:12px;border:1px solid var(--line);border-radius:10px;margin:8px 0 10px}dialog form>div{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.tip.custom-active{background:var(--selected);border-color:var(--selected-border);color:var(--accent)}@media(min-width:681px){#app{height:100dvh;display:flex;flex-direction:column}header,.connection-banner{flex-shrink:0}.workspace{flex:1;min-height:0;overflow:hidden}.catalog{height:100%;overflow:auto}.cart{position:static;height:100%;min-height:0;overflow:hidden;gap:12px}.cart-body{flex:1;min-height:0;overflow:auto;gap:14px}.cart-lines{min-height:64px;flex-shrink:0}.payment-actions{flex-shrink:0;background:var(--surface);padding-top:10px}}@media(hover:hover){button:not(:disabled):hover{filter:brightness(.96)}.item:not(:disabled):hover{border-color:var(--selected-border);box-shadow:0 4px 14px var(--shadow)}}@media(min-width:1600px){.workspace{grid-template-columns:minmax(0,1fr) 440px}.items{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}}@media(max-width:900px){header{padding:16px 20px}.catalog{padding:22px 20px}.workspace{grid-template-columns:minmax(0,1fr) 350px}.cart{padding:22px 20px}.items{grid-template-columns:repeat(2,minmax(0,1fr))}.item{padding:14px}.connection-banner{padding:14px 20px}}@media(max-width:680px){header{padding:14px 16px;align-items:flex-start}.brand{gap:10px}.brand-mark{width:36px;height:36px;font-size:24px}header h1{font-size:17px}.eyebrow{font-size:9px}.header-status{gap:6px;max-width:145px}.badge,.connection{font-size:10px;padding:6px 9px}.workspace{grid-template-columns:1fr}.catalog{padding:22px 16px}.catalog-head{margin-bottom:18px}.catalog-title{font-size:23px}#view-sale{display:block;flex-shrink:0;padding:10px;font-size:12px}.item{min-height:126px}.cart{position:static;min-height:0;border-left:0;border-top:1px solid var(--line);padding:24px 16px;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.cart-lines{max-height:none}.connection-banner{padding:14px 16px;align-items:flex-start;flex-direction:column;gap:10px}.connection-banner button{min-height:44px}.payment-actions{position:sticky;bottom:0;background:var(--surface);padding:10px 0 calc(10px + env(safe-area-inset-bottom))}.catalog-note{margin-top:14px}}
/* Staff sign-in shares the checkout control scale and visible hierarchy. */
.catalog-results{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#scan-item{width:100%;margin-bottom:10px}#scan-message{font-size:13px;color:var(--muted);overflow-wrap:anywhere;margin-bottom:10px}
#cashier-form{margin-top:26px;text-align:left;display:grid;gap:20px}#cashier-form label{display:block;font-size:14px;line-height:1.5;font-weight:650;color:var(--muted)}#cashier-form input,#cashier-form select{display:block;width:100%;min-height:52px;margin-top:8px;padding:13px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-size:16px}#cashier-pin{letter-spacing:.2em}#cashier-form button{margin-top:0}.login-card{max-width:460px}.login-card p{overflow-wrap:anywhere}#pair-register{width:100%}#pair-code:not(:empty){padding:16px;background:var(--info-bg);border:1px solid var(--line);border-radius:12px;white-space:pre-line;text-align:left}.brand,.brand>div,.header-status{min-width:0}.brand{flex:1}.header-status{max-width:52%}.quantity button{width:48px;min-height:48px}.totals p span,.totals p strong{overflow-wrap:anywhere;min-width:0}.terminal select{font-size:16px}#register-label{line-height:1.5}.connection-banner button{min-height:48px}.catalog-head>div{min-width:0}.cart-head>div{min-width:0}@media(max-width:680px){header{flex-wrap:wrap}.brand{flex-basis:100%}.header-status{max-width:100%;width:100%;justify-content:flex-start;gap:8px}.badge,.connection{font-size:12px;padding:8px 10px}.brand-mark{width:44px;height:44px;font-size:28px}.eyebrow{font-size:10px}header h1{font-size:19px}.login{padding:20px}.login-card{padding:32px 24px}.quantity{gap:6px}.connection-banner button{width:100%}.totals .grand{font-size:26px}.items{gap:10px}.payment-actions{position:static}}
.header-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.login-appearance{display:flex;justify-content:flex-end;margin-bottom:20px}.login-appearance .theme-toggle{margin-top:0}.brand-mark,.mark{background:linear-gradient(135deg,var(--brand-start),var(--brand-end));color:var(--on-action)}dialog{background:var(--surface)}dialog input{background:var(--surface);color:var(--text)}summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
/* Keep ordinary sign-in on one screen; recovery messages can grow and scroll. */
.login{padding:16px}.login-card{padding:24px;text-align:left}.login-appearance{align-items:center;justify-content:space-between;gap:12px;margin-bottom:0}.login-card h1{font-size:24px;line-height:1.2;margin:0;letter-spacing:-.4px}.login-appearance .theme-toggle{flex:none;width:48px;height:48px;min-height:48px}.login-card p{margin-top:8px;font-size:13px;line-height:1.4}.login-card p:empty{display:none}#cashier-form{margin-top:16px;gap:12px}#cashier-form input,#cashier-form select{min-width:0;min-height:48px;margin-top:4px;padding:11px 12px}#cashier-form label{min-width:0}@media(max-width:680px){.login-card{padding:18px}}
/* The staff header has only connection and appearance controls; identity stays with staff actions. */
.header-status{width:auto;max-width:none;flex:none;flex-wrap:nowrap;gap:10px}.brand{flex:1;flex-basis:auto}header{flex-wrap:nowrap;align-items:center}.staff-tools{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:20px;min-width:0}.staff-tools .badge{max-width:100%}#connection{font-size:0;gap:0;border:0;padding:0;width:16px;height:24px;background:transparent;flex:none}#connection::before{width:10px;height:10px}.catalog,.cart,.cart-body,.catalog-head,.cart-head,.items,.item,.line,.quantity,.terminal{min-width:0}.terminal select{max-width:100%;min-width:0}.items .price{overflow-wrap:anywhere;max-width:100%}.item-count{width:auto;min-width:24px;border-radius:12px}.item strong{padding-right:30px}.quantity{flex-shrink:0}.quantity button{flex:none}.catalog nav{flex-wrap:wrap;overflow:visible}.catalog nav button{white-space:normal;overflow-wrap:anywhere;max-width:100%}.loading{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px}.loading::before{content:"";width:14px;height:14px;flex:none;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:tax-spin .8s linear infinite}@keyframes tax-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loading::before{animation:none}}
@media(max-width:900px){#app{height:auto;min-height:100dvh}.workspace{grid-template-columns:minmax(0,1fr);overflow:visible;flex:none;min-height:0}.catalog{height:auto;overflow:visible}.cart{height:auto;position:static;overflow:visible;min-height:0;border-left:0;border-top:1px solid var(--line)}.cart-body{overflow:visible}.cart-lines{max-height:none}#view-sale{display:block;flex-shrink:0}.header-status{width:auto;max-width:none;justify-content:flex-end}.brand{flex-basis:auto}header{flex-wrap:nowrap}.payment-actions{position:static}.catalog-head{align-items:flex-start}.catalog-title{font-size:23px}}
@media(max-width:360px){.cart .line{grid-template-columns:minmax(0,1fr)}.quantity{justify-self:end}.catalog-head{flex-wrap:wrap}.brand-mark{width:36px;height:36px}header h1{font-size:17px}.items .price{font-size:15px}}
.customer{width:100%;max-width:800px;margin:0 auto;padding:32px 28px;overflow:auto}.customer-tools{position:sticky;top:0;z-index:1;display:flex;justify-content:flex-end;background:var(--bg);padding:0 0 12px}.customer-intro h2{font-size:30px;margin:8px 0 12px;letter-spacing:-.6px}.customer-intro p{color:var(--muted);line-height:1.6}.customer-lines{margin:24px 0}.customer-lines .line{padding:18px 0;align-items:start}.customer-lines .line>strong{font-variant-numeric:tabular-nums}.customer .tips{padding:20px 0;gap:10px}.customer .tip{min-height:52px;font-size:16px;padding:12px 18px}.customer-totals{border-top:1px solid var(--line);padding-top:16px}.customer-totals p{font-size:16px;padding:7px 0}.customer-totals .grand{font-size:32px}.customer-totals .grand span{font-size:20px}.customer-actions{display:grid;gap:12px;margin-top:24px;padding-bottom:env(safe-area-inset-bottom)}#customer-message{line-height:1.6;color:var(--muted);text-align:center;padding:14px;border-radius:12px;background:var(--info-bg);border:1px solid var(--border)}#customer-message.error{background:var(--error-bg);color:var(--error-text);border-color:var(--error-border)}body.customer-mode .workspace,body.customer-mode #switch-staff,body.customer-mode #register-label,body.customer-mode #queue-status{display:none!important}body.customer-mode #app{height:100dvh;display:flex;flex-direction:column}body.customer-mode header,body.customer-mode .connection-banner{flex-shrink:0}body.customer-mode .customer{flex:1;min-height:0}body.customer-mode #reconnect{display:none}@media(max-width:680px){.customer{padding:24px 20px}.customer-intro h2{font-size:27px}.customer .tips{gap:8px}.customer .tip{flex:1}.customer-lines .line{font-size:16px}.customer-totals .grand{font-size:30px}}
/* Customer checkout keeps payment controls in view; only item rows scroll. */
#customer-return{display:none}body.customer-mode #customer-return{display:block;font-size:12px;padding:8px;min-height:48px;white-space:nowrap}
body.customer-mode header{padding:8px 12px;gap:8px;flex-wrap:nowrap;align-items:center}body.customer-mode .brand{flex:1;flex-basis:auto;min-width:0}body.customer-mode .brand-mark,body.customer-mode .brand .eyebrow{display:none}body.customer-mode header h1{font-size:15px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body.customer-mode .header-status{width:auto;max-width:none;flex:none;flex-wrap:nowrap;gap:6px}
body.customer-mode #connection{font-size:0;gap:0;border:0;padding:0;width:16px;height:24px;background:transparent}body.customer-mode #connection::before{width:10px;height:10px}
body.customer-mode .customer{display:flex;flex-direction:column;gap:8px;padding:8px 12px 12px;overflow:hidden}body.customer-mode .customer-intro{flex:none}body.customer-mode .customer-intro h2{font-size:20px;margin:0;line-height:1.3}body.customer-mode #customer-detail{display:none}
body.customer-mode .customer-lines{flex:1;min-height:0;overflow:auto;margin:0;overscroll-behavior:contain}body.customer-mode .customer-lines .line{padding:10px 0;font-size:14px}body.customer-mode .customer .tips{flex:none;padding:8px 0 0;gap:6px}body.customer-mode .customer .tips h3{margin:0;font-size:12px}body.customer-mode .customer .tip{min-height:44px;padding:6px 10px;font-size:13px;flex:1}
body.customer-mode .customer-totals{flex:none;margin:0;padding-top:4px}body.customer-mode .customer-totals p{font-size:13px;padding:2px 0}body.customer-mode .customer-totals .grand{font-size:24px;margin-top:4px;padding-top:8px}body.customer-mode .customer-totals .grand span{font-size:16px}body.customer-mode .customer-actions{flex:none;gap:6px;margin:0;padding-bottom:env(safe-area-inset-bottom)}body.customer-mode #customer-message{font-size:13px;line-height:1.4;padding:8px}body.customer-mode .connection-banner{padding:8px 12px}body.customer-mode .connection-banner p{font-size:12px;line-height:1.4}


/* Staff sale setup: compact touch targets, visible actions, one category rail. */
.catalog .staff-tools{margin:0 0 8px;gap:8px;flex-wrap:nowrap;justify-content:space-between}
.catalog .staff-tools .badge{min-width:0;flex:1;line-height:1.3}.catalog #switch-staff{flex:none}
.catalog-head{align-items:center;gap:8px;margin-bottom:10px}.catalog-title{font-size:22px;margin:0;letter-spacing:-.4px;margin-right:auto}
#scan-item{width:auto;margin:0;flex:none}#scan-message{margin:0 0 8px}#scan-message:empty{display:none}
.catalog nav{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding:0 0 8px;margin:0;gap:6px}.catalog nav button{white-space:nowrap;flex:none;max-width:100%;padding:8px 12px}
.items{gap:8px}.item{min-height:92px;padding:10px;border:1px solid var(--selected-border);border-top:3px solid var(--item-edge);background:var(--info-bg);border-radius:10px}
.item strong{font-size:14px;line-height:1.2}.item small:empty{display:none}.item small{font-size:12px;margin-top:3px}.items .price{font-size:14px;padding-top:8px}.item-count{top:5px;right:5px;min-width:20px;height:20px;font-size:10px}
#clear:not(:disabled){background:var(--action);color:var(--on-action);border:1px solid var(--action);font-weight:700;opacity:1}
#clear:disabled{background:var(--surface-alt);color:var(--muted);border:1px solid var(--line)}
@media(max-width:680px){
body:not(.customer-mode) header{padding:4px 10px;gap:8px;min-height:52px}body:not(.customer-mode) .brand-mark{width:28px;height:32px;font-size:23px;border-radius:8px}body:not(.customer-mode) .brand{gap:8px}body:not(.customer-mode) .brand .eyebrow{font-size:8px;letter-spacing:.08em}body:not(.customer-mode) header h1{font-size:15px;line-height:1.2;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body:not(.customer-mode) .header-status{gap:6px}body:not(.customer-mode) .theme-toggle{width:44px;height:44px;min-height:44px}
.catalog{padding:6px 10px 12px}.catalog .staff-tools{margin-bottom:4px;gap:6px}.catalog .staff-tools .badge{padding:5px 8px;font-size:12px}.catalog #switch-staff{min-height:44px;padding:6px 8px;font-size:12px}
.catalog-head{flex-wrap:nowrap;gap:6px;margin-bottom:6px;min-height:44px}.catalog-title{font-size:19px;white-space:nowrap}#scan-item,#view-sale{min-height:44px;padding:6px 8px;font-size:12px}
.catalog .search{margin-bottom:6px}.catalog .search span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.catalog .search input{min-height:44px;padding:9px 12px;font-size:14px;border-radius:9px}
.catalog nav{padding-bottom:6px;gap:6px}.catalog nav button{min-height:44px;padding:6px 10px;font-size:12px}
.items{gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.item{min-height:68px;padding:6px 8px;border-top-width:2px}.item strong{padding-right:22px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-width:100%}.item small{display:none}.items .price{font-size:14px;padding-top:4px}.custom{min-height:44px;margin-top:8px}
}

.customer-recovery{display:grid;grid-template-columns:1fr 1fr;gap:6px}.customer-recovery button{min-width:0}
#theme-toggle-login{height:48px;min-height:48px}

.product-tile{position:relative;min-width:0;display:flex}.product-tile .item{width:100%;min-width:0;padding-right:12px}.favorite{position:absolute;right:0;top:0;width:44px;min-height:44px;padding:4px;font-size:23px;background:transparent;border:0;color:var(--muted)}.favorite[aria-pressed="true"]{color:var(--accent)}.product-tile .item-count{top:auto;bottom:5px;right:5px}.product-tile .price{padding-right:24px}.favorite:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
/* Landscape counters keep the catalog, sale and payment controls together. */
.customer-summary{display:contents}
#clear:not(:disabled){background:var(--surface-alt);color:var(--accent);border-color:var(--line)}
body.customer-mode .customer .tip{min-height:48px}
@media(min-width:760px){
body:not(.customer-mode) #app{height:100dvh;min-height:0;display:flex;flex-direction:column}
body:not(.customer-mode) header{padding:10px 20px;min-height:68px}
.workspace{flex:1;min-height:0;overflow:hidden;grid-template-columns:minmax(0,1fr) minmax(330px,36%);align-items:stretch}
.catalog{height:100%;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:16px 20px}
.catalog .staff-tools,.catalog-head,.catalog .search,.catalog nav,.catalog .custom{flex:none}
.catalog .staff-tools{margin-bottom:12px}.catalog-head{margin-bottom:12px}.catalog-title{font-size:24px}
.catalog .search{margin-bottom:12px}.catalog .search input{padding:12px 14px}.catalog nav{padding-bottom:12px}
.items{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;align-content:start;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px;padding:0 3px 6px;margin:0 -3px}
.item{min-height:116px;padding:12px;background:var(--surface);border-color:var(--line);border-top-color:var(--item-edge);box-shadow:0 3px 10px var(--shadow)}
.item strong{font-size:15px;line-height:1.35}.item small{margin-top:6px}.items .price{font-size:16px;padding-top:12px}
.favorite{width:48px;min-height:48px}.catalog nav button{min-height:48px}#view-sale{display:none}
.cart{height:100%;min-height:0;position:static;overflow:hidden;border-top:0;border-left:1px solid var(--line);padding:16px;gap:12px;box-shadow:-8px 0 24px var(--shadow)}
.cart-body{flex:1;min-height:0;overflow:auto;gap:12px}.cart-head{flex:none}.cart h2{font-size:20px}
.cart-lines{flex:1;min-height:80px;max-height:none;overflow:auto;overscroll-behavior:contain}
.cart .line{grid-template-columns:minmax(0,1fr);gap:8px;padding:12px 0}.cart .quantity{justify-self:end}
.cart .totals,.cart .terminal,.cart .tips{flex:none}.cart .totals{margin-top:auto;padding:12px;border-radius:12px;background:var(--surface-alt)}
.cart .totals .grand{margin-top:8px;padding-top:12px;font-size:28px}.cart .totals .grand span{font-size:15px}
.payment-actions{position:static;flex:none;padding:0;gap:8px;background:var(--surface)}#message:empty{display:none}
body.customer-mode .customer{width:100%;max-width:1180px;display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,38%);grid-template-rows:auto minmax(0,1fr);gap:16px;padding:20px;overflow:hidden}
body.customer-mode .customer-intro{grid-column:1/-1;padding:0 4px}
body.customer-mode .customer-intro h2{font-size:26px;letter-spacing:-.6px}
body.customer-mode #customer-detail{display:block;font-size:13px;line-height:1.5;margin-top:6px}
body.customer-mode .customer-lines{grid-column:1;grid-row:2;min-height:0;border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:4px 18px}
body.customer-mode .customer-lines .line{padding:16px 0;font-size:15px;line-height:1.4}
body.customer-mode .customer-summary{grid-column:2;grid-row:2;min-width:0;min-height:0;display:flex;flex-direction:column;gap:12px;background:var(--surface);border:1px solid var(--selected-border);border-radius:16px;padding:16px;overflow:auto}
body.customer-mode .customer .tips{padding:0 0 12px;border-top:0;border-bottom:1px solid var(--line);gap:6px}
body.customer-mode .customer .tips h3{margin-bottom:4px}
body.customer-mode .customer-totals{margin-top:auto;border-top:0;padding:0}
body.customer-mode .customer-totals p{padding:4px 0;font-size:14px}
body.customer-mode .customer-totals .grand{font-size:32px;padding-top:12px;margin-top:8px}
body.customer-mode .customer-actions{gap:8px}body.customer-mode #customer-message{text-align:left;line-height:1.5}
}

/* A quiet product surface keeps the sale and its one commit action legible. */
header{border-color:var(--divider)}
.secondary,.tip,.link,.custom,.quantity button{border:1px solid transparent;background:var(--control);color:var(--text);border-radius:12px;font-weight:600}
.secondary:disabled,.tip:disabled,.link:disabled,.custom:disabled,.quantity button:disabled,.charge:disabled{opacity:1;background:var(--control);color:var(--muted);border-color:transparent;box-shadow:none}
.charge,dialog button:not(.secondary){border-radius:13px;box-shadow:var(--action-shadow);letter-spacing:.02em}
.theme-toggle{border-color:transparent;background:var(--control);border-radius:12px}
.badge{background:transparent;padding-left:0;color:var(--muted)}
.catalog-title{letter-spacing:-.7px}.catalog .search input{border-radius:13px;background:var(--surface)}
.catalog nav{gap:4px;padding:4px;margin-bottom:12px;background:var(--control);border-radius:16px}
.catalog nav button{background:transparent;border:1px solid transparent;border-radius:12px;color:var(--muted);padding-inline:16px;font-weight:550}
.catalog nav button.active{background:var(--surface);color:var(--text);border-color:var(--divider);box-shadow:0 2px 5px var(--shadow);font-weight:650}.tip.active{background:var(--selected);color:var(--accent);border-color:var(--selected-border);font-weight:650}.catalog nav button:focus-visible{outline-offset:-3px}
.item{background:var(--surface);border:1px solid var(--divider);border-top:1px solid var(--divider);border-radius:16px;box-shadow:0 2px 4px var(--shadow);padding:14px;min-height:120px}
.item strong{font-size:15px;line-height:1.4;font-weight:600;letter-spacing:.02em}.item small{color:var(--muted)}
.items .price{font-size:17px;font-weight:650;letter-spacing:0;padding-top:14px}.item-count{top:9px;right:9px;box-shadow:0 2px 4px var(--shadow)}
.item:has(.item-count){border-color:var(--selected-border);background:var(--selected)}
.custom{background:transparent;border:1px solid var(--divider);font-size:14px;margin-top:12px}
.cart{border-color:var(--divider);box-shadow:-4px 0 24px var(--shadow)}
.cart .totals{background:var(--bg);border-radius:14px;padding:14px}.totals .grand,.tips{border-color:var(--divider)}
.line{border-color:var(--divider)}.quantity{gap:6px}.quantity button{background:var(--control);color:var(--text);border-radius:12px}
#clear:not(:disabled){background:transparent;color:var(--muted);border-color:transparent}#clear:disabled{background:transparent;border-color:transparent;color:var(--muted)}
.terminal select{border-radius:12px;background:var(--surface)}
.login-card,dialog{border-color:var(--divider);border-radius:22px;box-shadow:var(--elevation)}
#cashier-form input,#cashier-form select{border-radius:12px}
body.customer-mode .customer-lines,body.customer-mode .customer-summary{border-color:var(--divider);box-shadow:var(--elevation);border-radius:18px}
@media(hover:hover){.secondary:not(:disabled):hover,.tip:not(:disabled):hover,.link:not(:disabled):hover,.custom:not(:disabled):hover,.quantity button:not(:disabled):hover,.theme-toggle:hover{background:var(--control-hover);filter:none}.item:not(:disabled):hover{background:var(--control);border-color:var(--border);box-shadow:var(--elevation)}.charge:not(:disabled):hover,dialog button:not(.secondary):hover{background:var(--action-hover);filter:none}.catalog nav button:not(:disabled):hover{background:var(--control)}.catalog nav button.active:hover{background:var(--selected)}}
.secondary:not(:disabled):active,.tip:not(:disabled):active,.custom:not(:disabled):active,.quantity button:not(:disabled):active{background:var(--control-pressed)}.charge:not(:disabled):active,dialog button:not(.secondary):active{background:var(--action-pressed);box-shadow:none}.item:not(:disabled):active{background:var(--selected);box-shadow:none}
@media(max-width:759px){.item{padding:6px 8px;min-height:68px;border-radius:14px}.item strong{font-size:14px;line-height:1.2}.items .price{font-size:14px;padding-top:4px}.catalog nav{margin-bottom:0}.catalog nav button{padding-inline:12px}.cart{box-shadow:none}.cart .totals{padding:14px}.custom{min-height:48px}}
@media(min-width:760px){.items{gap:12px;padding-top:3px}.catalog{padding:18px 24px}.cart{padding:20px}.cart-head{padding-bottom:6px}.cart .totals .grand{padding-top:12px}.catalog .staff-tools{margin-bottom:14px}}

button:not(.item):not(.favorite):not(.link):not(.tip):not(.quantity button),.intro a{font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:16px;font-weight:600;letter-spacing:.02em;overflow-wrap:anywhere}
button.link,button.tip,nav button,.catalog nav button{font-weight:600;letter-spacing:.02em}
label,.card label,.search span,.terminal{font-size:14px;font-weight:500;letter-spacing:.02em}
input,select,textarea,.catalog .search input{font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:16px;font-weight:400;letter-spacing:.005em}
#staff-pin,#device-code,#cashier-pin{letter-spacing:normal}
.quantity button{font-size:20px}
header{background:linear-gradient(180deg,var(--glass-light),transparent),var(--surface);box-shadow:inset 0 1px var(--glass-rim),0 3px 18px var(--glass-shadow)}
.theme-toggle,button.secondary,button.tip,.quantity button,button.custom,.intro a,button:not(.item):not(.favorite):not(.link):not(.charge):not(.primary):not(dialog button){background-image:var(--glass-secondary);border-color:var(--glass-edge);box-shadow:inset 0 1px var(--glass-control-rim),inset 0 -3px var(--glass-control-depth),0 4px 7px var(--glass-control-elevation)}
.theme-toggle:not(:disabled):hover,button.secondary:not(:disabled):hover,button.tip:not(:disabled):hover,.quantity button:not(:disabled):hover,button.custom:not(:disabled):hover,.intro a:not(:disabled):hover,button:not(.item):not(.favorite):not(.link):not(.charge):not(.primary):not(dialog button):not(:disabled):hover{background-image:var(--glass-secondary-hover)}
.theme-toggle:not(:disabled):active,button.secondary:not(:disabled):active,button.tip:not(:disabled):active,.quantity button:not(:disabled):active,button.custom:not(:disabled):active,.intro a:not(:disabled):active,button:not(.item):not(.favorite):not(.link):not(.charge):not(.primary):not(dialog button):not(:disabled):active{background-image:var(--glass-secondary-active);box-shadow:inset 0 2px 4px var(--glass-control-depth),inset 0 1px var(--glass-control-rim)}
nav{background-image:linear-gradient(180deg,var(--glass-light),transparent);border:1px solid var(--divider);box-shadow:inset 0 1px var(--glass-light),0 2px 8px var(--glass-shadow)}
nav button:not(.active):not(:disabled){background-image:none!important;border-color:transparent!important;box-shadow:none!important}
nav button.active,.tip.active{background-image:var(--glass-secondary);box-shadow:inset 0 1px var(--glass-control-rim),inset 0 -3px var(--glass-control-depth),0 4px 7px var(--glass-control-elevation);border-color:var(--selected-border)}
button.charge:not(:disabled),button.primary:not(:disabled),dialog button:not(.secondary):not(:disabled){background:var(--glass-primary);color:var(--glass-on-primary);border:1px solid var(--glass-primary-edge);box-shadow:var(--glass-primary-shadow)}
button.charge:not(:disabled):hover,button.primary:not(:disabled):hover,dialog button:not(.secondary):not(:disabled):hover{background:var(--glass-primary-hover);color:var(--glass-on-primary)}
button.charge:not(:disabled):active,button.primary:not(:disabled):active,dialog button:not(.secondary):not(:disabled):active{background:var(--glass-primary-active);color:var(--glass-on-primary);box-shadow:inset 0 2px 5px var(--glass-active-shade),inset 0 1px var(--glass-active-light)}
button:disabled{background-image:none!important;box-shadow:none!important}
.payment-actions{background:linear-gradient(180deg,var(--glass-light),transparent),var(--surface);border-radius:16px;box-shadow:inset 0 1px var(--glass-rim)}
@supports(backdrop-filter:blur(12px)){header,nav{background-color:var(--glass-wash);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){header,nav{background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none}button,.intro a{background-image:none!important;box-shadow:none!important}button.charge:not(:disabled),button.primary:not(:disabled),dialog button:not(.secondary):not(:disabled){background:var(--glass-primary-solid)!important;color:var(--glass-on-primary)}}
@media(forced-colors:active){header,nav,.payment-actions{background:Canvas;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}button,.intro a{background:ButtonFace!important;color:ButtonText!important;border:1px solid ButtonText!important;box-shadow:none!important}button:disabled{color:GrayText!important;border-color:GrayText!important}nav button.active,.tip.active{outline:2px solid Highlight;outline-offset:-3px}}
