/* Buenisimo POS prototype: shared tokens and components (pos, kds, order, office, tour).
   Rules: no tinted fill with a matching outline; meaning lives in the glyph or
   text colour; a primary action is a solid fill. The parent owns padding and gap.
   Light and dark each from their own token block. html.rm = reduced motion. */
:root{
  --ink:#241a15; --ink-2:#4c3a31; --ink-3:#76635a;
  --paper:#fdf7ee; --paper-2:#f5e9d8; --paper-3:#eddcc6; --card:#fffdfa;
  --paprika:#c2452a; --paprika-dk:#9c3320; --on-paprika:#fffdfa;
  --olive:#5d6b3d; --on-olive:#fffdfa; --warn:#a4561a; --bad:#b3261e; --good:#4f6b2c;
  --rule:rgba(36,26,21,.13); --rule-2:rgba(36,26,21,.07);
  --scrim:rgba(36,26,21,.42);
  --navy:#062a87; --gold:#a47c10; --brand-word:#062a87;
  --pri:var(--paprika); --on-pri:var(--on-paprika); --sel:var(--ink); --on-sel:var(--paper); --head:inherit; --kglyph:var(--paprika); --kicker:var(--ink-3);
  --rail:#241a15; --rail-ink:#fdf7ee; --info:#2f6f9f; --on-warn:#fffdfa; --device:#1f1a17; --device-ink:#f5efe6; --device-key:#3a322d;
  --display:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,monospace;
  --shadow:0 1px 2px rgba(36,26,21,.05),0 14px 34px -14px rgba(36,26,21,.22);
  --shadow-lg:0 30px 80px -20px rgba(36,26,21,.45);
  --spring:cubic-bezier(.34,1.36,.64,1); --ease:cubic-bezier(.23,1,.32,1);
  --t1:120ms; --t2:240ms; --t3:360ms;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark;--ink:#f6ecdf;--ink-2:#d9c8b8;--ink-3:#a8948a;--paper:#1b1411;--paper-2:#2a201b;--paper-3:#362a23;--card:#231a16;
  --paprika:#e0664a;--paprika-dk:#f08a70;--on-paprika:#1b1411;--olive:#a9b886;--on-olive:#1b1411;--warn:#e8a46a;--bad:#ff8a7a;--good:#b5cf8a;
  --rule:rgba(246,236,223,.14);--rule-2:rgba(246,236,223,.07);--scrim:rgba(0,0,0,.6);--rail:#120d0b;--info:#8cc3ec;--on-warn:#1b1411;--gold:#d6aa3e;--brand-word:#ffffff;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 14px 34px -14px rgba(0,0,0,.6);--shadow-lg:0 30px 80px -20px rgba(0,0,0,.8)}}
:root[data-theme="dark"]{
  color-scheme:dark;--ink:#f6ecdf;--ink-2:#d9c8b8;--ink-3:#a8948a;--paper:#1b1411;--paper-2:#2a201b;--paper-3:#362a23;--card:#231a16;
  --paprika:#e0664a;--paprika-dk:#f08a70;--on-paprika:#1b1411;--olive:#a9b886;--on-olive:#1b1411;--warn:#e8a46a;--bad:#ff8a7a;--good:#b5cf8a;
  --rule:rgba(246,236,223,.14);--rule-2:rgba(246,236,223,.07);--scrim:rgba(0,0,0,.6);--rail:#120d0b;--info:#8cc3ec;--on-warn:#1b1411;--gold:#d6aa3e;--brand-word:#ffffff;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 14px 34px -14px rgba(0,0,0,.6);--shadow-lg:0 30px 80px -20px rgba(0,0,0,.8)}
/* POS brand A (founder, 16 Nov 2026): staff screens only (html[data-staff]); order.html keeps paper and paprika.
   Navy rail, white labels, selected = solid gold with navy ink, cool white ground, white cards, navy serif headings,
   navy mono kickers with gold glyphs, gold primary actions with navy text. --paprika is the ACCENT INK here (navy in
   light, gold in dark), --pri/--on-pri the solid primary fill. Gold #a47c10 is a glyph colour only, never text on white. */
html[data-staff]{--ink:#0b1a4a;--ink-2:#26345f;--ink-3:#55607f;--paper:#f3f5f9;--paper-2:#eef1f6;--paper-3:#e2e7f0;--card:#ffffff;--paprika:#062a87;--paprika-dk:#062a87;--on-paprika:#ffffff;--pri:#ddb02e;--on-pri:#062a87;--sel:#ddb02e;--on-sel:#062a87;--head:#062a87;--kglyph:#a47c10;--kicker:#062a87;--olive:#3d6a2e;--on-olive:#ffffff;--warn:#9a4f12;--bad:#b3261e;--good:#2f6b2c;--info:#2f6f9f;--on-warn:#ffffff;--rule:rgba(11,26,74,.14);--rule-2:rgba(11,26,74,.07);--scrim:rgba(6,16,48,.45);--rail:#062a87;--rail-ink:#ffffff;--gold:#a47c10;--brand-word:#062a87;--shadow:0 1px 2px rgba(11,26,74,.05),0 14px 34px -14px rgba(11,26,74,.20);--shadow-lg:0 30px 80px -20px rgba(11,26,74,.40);color-scheme:light}
@media (prefers-color-scheme:dark){html[data-staff]:not([data-theme="light"]){--ink:#f1f4fc;--ink-2:#d0d7ee;--ink-3:#a2acd0;--paper:#0a1129;--paper-2:#1a2550;--paper-3:#22306a;--card:#121b3a;--paprika:#e2b843;--paprika-dk:#e2b843;--on-paprika:#041a5a;--pri:#e2b843;--on-pri:#041a5a;--sel:#e2b843;--on-sel:#041a5a;--head:#ffffff;--kglyph:#e2b843;--kicker:#e2b843;--olive:#9fd38a;--on-olive:#0a1129;--warn:#f0b070;--bad:#ff8a7a;--good:#9fd38a;--info:#8cc3ec;--on-warn:#0a1129;--rule:rgba(255,255,255,.12);--rule-2:rgba(255,255,255,.06);--scrim:rgba(0,0,0,.6);--rail:#041a5a;--rail-ink:#ffffff;--gold:#e2b843;--brand-word:#ffffff;--shadow:0 1px 2px rgba(0,0,0,.3),0 14px 34px -14px rgba(0,0,0,.6);--shadow-lg:0 30px 80px -20px rgba(0,0,0,.8);color-scheme:dark}}
html[data-staff][data-theme="dark"]{--ink:#f1f4fc;--ink-2:#d0d7ee;--ink-3:#a2acd0;--paper:#0a1129;--paper-2:#1a2550;--paper-3:#22306a;--card:#121b3a;--paprika:#e2b843;--paprika-dk:#e2b843;--on-paprika:#041a5a;--pri:#e2b843;--on-pri:#041a5a;--sel:#e2b843;--on-sel:#041a5a;--head:#ffffff;--kglyph:#e2b843;--kicker:#e2b843;--olive:#9fd38a;--on-olive:#0a1129;--warn:#f0b070;--bad:#ff8a7a;--good:#9fd38a;--info:#8cc3ec;--on-warn:#0a1129;--rule:rgba(255,255,255,.12);--rule-2:rgba(255,255,255,.06);--scrim:rgba(0,0,0,.6);--rail:#041a5a;--rail-ink:#ffffff;--gold:#e2b843;--brand-word:#ffffff;--shadow:0 1px 2px rgba(0,0,0,.3),0 14px 34px -14px rgba(0,0,0,.6);--shadow-lg:0 30px 80px -20px rgba(0,0,0,.8);color-scheme:dark}
:where(html[data-staff]) :is(h1,h2,h3){color:var(--head)}
html[data-staff] :is(.kick,.lbl,.osg,.dv-k){font-family:var(--mono);color:var(--kicker)}
html[data-staff] :is(.kick,.lbl,.osg,.dv-k)>.ic{color:var(--kglyph)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html[data-staff],html[data-staff] body{touch-action:manipulation}
body{margin:0;background:var(--paper);color:var(--ink);font:400 15px/1.45 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
input,select,textarea{background:var(--card);border:1px solid var(--rule);border-radius:12px;min-height:44px;padding:0 12px;width:100%}
textarea{padding:10px 12px;resize:none;min-height:72px}
[hidden]{display:none!important}
h1,h2,h3,h4,p{margin:0}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.015em;line-height:1.15}
a{color:var(--paprika-dk)}
:focus-visible{outline:2px solid var(--paprika);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ic{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ic.sm{width:16px;height:16px}.ic.lg{width:26px;height:26px}
.muted{color:var(--ink-3)} .small{font-size:13px}
.row{display:flex;align-items:center;gap:10px;min-width:0}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}
.stack{display:flex;flex-direction:column;gap:12px;min-width:0}

/* top bar */
.kbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:10px;padding:10px 16px;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--rule-2)}
.kbar .brand{display:flex;align-items:center;gap:10px;min-width:0}
.kbar .brand .ic{width:30px;height:30px;color:var(--paprika)}
.kbar .brand .logo{height:24px!important;width:auto!important;max-width:none;flex:none;display:block}
.kbar .brand .logo.dk{display:none}
:root[data-theme="dark"] .kbar .brand .logo.lt{display:none}:root[data-theme="dark"] .kbar .brand .logo.dk{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .kbar .brand .logo.lt{display:none}:root:not([data-theme="light"]) .kbar .brand .logo.dk{display:block}}
.kbar .brand b{font:600 19px/1.05 var(--display);display:block;white-space:nowrap}
.kbar .brand small{display:block;color:var(--ink-3);font-size:12px;white-space:nowrap}
.kbar .sp{flex:1}
.ktools{display:flex;gap:6px;align-items:center}
.ibtn{border:0;background:var(--card);box-shadow:inset 0 0 0 1px var(--rule);min-width:44px;height:44px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 12px;font-weight:600;font-size:13px;color:var(--ink-2);transition:transform var(--t2) var(--spring)}
.ibtn:active{transform:scale(.94)}
.ibtn[aria-pressed="true"]{background:var(--sel);color:var(--on-sel);box-shadow:none}
.ibtn.icon{padding:0;width:44px}
.samplebar{display:flex;align-items:center;gap:8px;padding:7px 16px;font-size:13px;color:var(--ink-2);background:var(--paper-2)}
.samplebar .ic{color:var(--paprika);width:16px;height:16px}
.livedot{display:inline-flex;align-items:center;gap:6px;font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--good)}
.livedot i{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 1.6s ease-in-out infinite}
.livedot.off{color:var(--warn)}.livedot.off i{animation:none}
@keyframes pulse{50%{opacity:.35}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;border:0;font-weight:600;font-size:14.5px;white-space:nowrap;transition:transform var(--t2) var(--spring),opacity var(--t1)}
.btn:active:not(:disabled){transform:scale(.96)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.dark{background:var(--ink);color:var(--paper)}
.btn.pap{background:var(--pri);color:var(--on-pri)}
.btn.olive{background:var(--olive);color:var(--on-olive)}
.btn.plain{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1px var(--rule)}
.btn.ghost{background:transparent;color:var(--ink-2)}
.btn.sm{min-height:36px;padding:0 12px;font-size:13px}
.btn.lg{min-height:56px;font-size:16px;padding:0 22px}
.btn.wide{width:100%}
.seg{display:inline-flex;gap:2px;padding:3px;max-width:100%;overflow-x:auto;scrollbar-width:none;background:var(--paper-2);border-radius:999px}
.seg button{border:0;background:transparent;min-height:38px;padding:0 12px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13.5px;color:var(--ink-2);transition:background var(--t1)}
.seg button[aria-pressed="true"]{background:var(--sel);color:var(--on-sel)}
.seg button .ic{width:17px;height:17px}

.panel{background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:16px;min-width:0;display:flex;flex-direction:column;gap:12px}
.panel>h3,.h3{font-size:17px;display:flex;align-items:center;gap:8px}
.panel>h3 .ic,.h3 .ic{color:var(--paprika)}
.tag{display:inline-flex;align-items:center;gap:5px;font:600 10.5px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.tag .ic{width:13px;height:13px}
/* A control's glyph is always drawn in the control's own text colour, whatever panel it sits in (a paprika glyph on a paprika pill vanished, 26 Oct). */
.btn:not(.plain) .ic.ic,.ibtn[aria-pressed="true"] .ic.ic,.chipb[aria-pressed="true"] .ic.ic{color:currentColor}
.btn .ic.ic:not(.sm):not(.lg){width:20px;height:20px}
.tag.pap{color:var(--paprika)}.tag.warn{color:var(--warn)}.tag.good{color:var(--good)}.tag.bad{color:var(--bad)}
.note{display:flex;gap:10px;align-items:flex-start;background:var(--paper-2);border-radius:14px;padding:12px 14px;font-size:13.5px;color:var(--ink-2)}
.note>.ic{color:var(--paprika);margin-top:1px}
.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}

/* dialogs: grow from the control that opened them */
.kscrim{position:fixed;inset:0;background:var(--scrim);z-index:200;opacity:0;transition:opacity var(--t2) linear}
.kscrim.in{opacity:1}
.kdlg{position:fixed;z-index:201;left:50%;top:50%;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);overflow:auto;background:var(--card);border-radius:24px;box-shadow:var(--shadow-lg);padding:20px;display:flex;flex-direction:column;gap:14px;
  transform:translate(-50%,-50%) translate(var(--dx,0),var(--dy,0)) scale(.6);opacity:0;transition:transform var(--t3) var(--spring),opacity var(--t2) var(--ease)}
.kdlg.in{transform:translate(-50%,-50%);opacity:1}
.kdlg.wide{width:min(860px,calc(100vw - 32px))}
.kdlg header{display:flex;align-items:center;gap:10px}
.kdlg header h2{font-size:21px;flex:1;min-width:0}
.kdlg header .well{width:40px;height:40px;border-radius:12px;background:var(--paper-2);display:grid;place-items:center;color:var(--paprika);flex:none}
.kdlg footer{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:600px){.kdlg{left:0;right:0;top:auto;bottom:0;width:100%;max-height:92vh;max-height:92dvh;border-radius:24px 24px 0 0;transform:translateY(100%);}.kdlg.in{transform:none}}

/* pin pad */
.pin{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pin button{min-height:60px;border:0;border-radius:16px;background:var(--paper-2);font:600 22px/1 var(--sans);display:grid;place-items:center;transition:transform var(--t2) var(--spring)}
.pin button:active{transform:scale(.93)}
.pindots{display:flex;gap:12px;justify-content:center;padding:6px}
.pindots i{width:14px;height:14px;border-radius:50%;background:var(--paper-3);transition:transform var(--t2) var(--spring),background var(--t1)}
.pindots i.on{background:var(--ink);transform:scale(1.15)}
.shake{animation:shake .36s var(--ease) 1}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}

/* toast */
.ktoasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(520px,calc(100vw - 32px))}
.ktoast{background:var(--ink);color:var(--paper);border-radius:16px;padding:12px 16px;display:flex;gap:10px;align-items:center;box-shadow:var(--shadow-lg);font-size:14px;transform:translateY(24px) scale(.96);opacity:0;transition:transform var(--t2) var(--spring),opacity var(--t2)}
.ktoast.in{transform:none;opacity:1}
.ktoast .ic{color:var(--paprika)}
.ktoast small{display:block;opacity:.75;font-size:12.5px}

/* tour */
.tspot{position:fixed;z-index:400;border-radius:16px;pointer-events:none;box-shadow:0 0 0 3px var(--paprika),0 0 0 9999px rgba(20,12,8,.48);transition:all var(--t3) var(--spring)}
.tcard{position:fixed;z-index:401;width:min(380px,calc(100vw - 24px));background:var(--card);color:var(--ink);border-radius:20px;box-shadow:var(--shadow-lg);padding:16px;display:flex;flex-direction:column;gap:10px;transition:left var(--t3) var(--spring),top var(--t3) var(--spring),opacity var(--t2)}
.tcard .tk{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;min-height:36px;display:flex;align-items:center;gap:8px;font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--paprika)}
.tcard.drag{transition:opacity var(--t2);box-shadow:0 24px 60px rgba(0,0,0,.28);transform:scale(1.02)}.tcard.drag .tk{cursor:grabbing}
.tcard h3{font-size:18px}
.tcard p{font-size:14.5px;color:var(--ink-2)}
.tcard .tnav{display:flex;gap:8px;align-items:center}
.tcard .tdots{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.tcard .tdots i{width:7px;height:7px;border-radius:50%;background:var(--paper-3)}
.tcard .tdots i.on{background:var(--pri)}.tcard .tdots i.done{background:var(--ink-3)}
html.rm .tspot,html.rm .tcard{transition:none}
.tour-embed .tcard .tnav{display:none}

/* reduced motion: a real branch */
html.rm *,html.rm *::before,html.rm *::after{animation:none!important;transition:none!important}
/* phone: the screen links take their own row so nothing overlaps the brand */
@media (max-width:600px){.kbar{flex-wrap:wrap;row-gap:8px}.kbar .kscreens{order:3;width:100%;overflow-x:auto;scrollbar-width:none}.kbar .sp{display:none}.kbar .ktools{margin-left:auto}.kbar .ktools .kl,.kbar [data-k=lang] span{display:none}.kbar [data-k=lang]{width:44px;padding:0}}
a.ibtn{text-decoration:none}
@media (max-width:1280px){.kbar .kscreens .kl{display:none}.kbar .kscreens .ibtn{width:44px;padding:0}}
.tour-embed .tcard{display:none!important}
.tour-embed .kbar{display:none}
a.btn{text-decoration:none}
/* UI polish 26 Oct: phone bar keeps the tools on one row with the mark; screen links take the second row, centred */
@media (max-width:420px){.kbar .brand b,.kbar .brand small{display:none}.kbar .brand .logo{height:20px!important}.kbar .ktools{gap:6px}.kbar .kscreens{justify-content:center}}
.tcard .tdots{flex-wrap:nowrap;gap:3px;min-width:0}.tcard .tdots i{width:6px;height:6px;flex:none}
/* Our own select and checkbox (2 Nov): no default-looking controls. Native elements,
   so keyboard and screen readers work as before; drawn in house tokens. */
select{-webkit-appearance:none;appearance:none;min-height:44px;padding:0 40px 0 14px;border:0;border-radius:999px;background-color:var(--paper-2);color:var(--ink);font:600 13.5px/1 var(--sans);cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2376635a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px}
select:focus-visible{outline:2px solid var(--paprika);outline-offset:2px}
input[type=checkbox]{-webkit-appearance:none;appearance:none;flex:none;width:24px!important;height:24px!important;min-height:0;margin:0;padding:0;border:0;border-radius:7px;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--ink-3);display:inline-grid;place-items:center;cursor:pointer;transition:background var(--t1)}
input[type=checkbox]::after{content:"";width:12px;height:7px;border:solid var(--paper);border-width:0 0 2.4px 2.4px;transform:translateY(-2px) rotate(-45deg) scale(0);transition:transform var(--t2) var(--spring)}
input[type=checkbox]:checked{background:var(--ink);box-shadow:none}input[type=checkbox]:checked::after{transform:translateY(-2px) rotate(-45deg) scale(1)}
input[type=checkbox]:focus-visible{outline:2px solid var(--paprika);outline-offset:2px}
html.rm input[type=checkbox],html.rm input[type=checkbox]::after{transition:none}
.pick label{min-height:48px;cursor:pointer}
/* Takeaway per item (F1): a small solid red T, white letter. Solid fill, no outline. */
.tbadge{display:inline-grid;place-items:center;flex:none;width:20px;height:20px;border-radius:6px;background:#c62828;color:#fff;font:800 12.5px/1 var(--sans);font-style:normal;letter-spacing:0;vertical-align:-3px}

/* ---------------- motion pass (3 Nov 2026): press feedback, sliding thumbs. html.rm snaps (rule above). */
:where(.btn,.ibtn,.chipb,.qrow,.orow,.ach,.shp,.seg button,.cats button,.it,.cust,.ln):not(:disabled){transition:transform var(--t2) var(--spring),background var(--t1),box-shadow var(--t2) var(--ease),color var(--t1)}
:where(.btn,.ibtn,.chipb,.qrow,.orow,.ach,.shp,.seg button,.cats button,.cust):active:not(:disabled){transform:scale(.97);transition-duration:80ms}
.btn.pap{box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 8px 18px -10px var(--paprika)}
.btn.pap:active:not(:disabled){box-shadow:0 1px 0 rgba(255,255,255,.1) inset,0 3px 8px -6px var(--paprika)}
.seg.thumbed,.cats.thumbed{position:relative}
.seg>.thumb,.cats>.thumb{position:absolute;left:0;top:0;border-radius:999px;background:var(--ink);pointer-events:none;z-index:0;transition:transform var(--t2) var(--spring),width var(--t2) var(--spring)}
.seg.thumbed>button,.cats.thumbed>button{position:relative;z-index:1}
.kdlg{transition-duration:var(--t2),var(--t2)!important}
/* a large button is never the live guide's full-screen layer (.lg below): keep it in the flow */
.btn.lg{position:relative;inset:auto;z-index:auto;pointer-events:auto}
/* ---------------- motion pass 2 (4 Nov 2026): the controls the first pass missed, page by page. Press 0.97 with a
   spring release; the :is() carries an id so it outranks each page's own transition line. html.rm snaps (rule above). */
html:not(.rm) :is(#_m,a.brand,#areaSeg>button,#mode>button,#stations>button,#hst>button,.gsheet .gib,.gx .gib,.lgc .gib,.gform button,#vseg>button,.hd .lp,.cell .add,.cell .off,.off,#days>button,#slots>button,#rail>button,.seg>button,.mday){transition:transform var(--t2) var(--spring),background-color var(--t1),color var(--t1),box-shadow var(--t2) var(--ease),opacity var(--t1)}
html:not(.rm) :is(#_m,a.brand,#areaSeg>button,#mode>button,#stations>button,#hst>button,.gsheet .gib,.gx .gib,.lgc .gib,.gform button,#vseg>button,.hd .lp,.cell .add,.cell .off,.off,#days>button,#slots>button,#rail>button,.seg>button,.mday):active:not(:disabled){transform:scale(.97);transition-duration:80ms}
/* Hover on desktop: a quiet lift on cards and rows that open something. */
@media (hover:hover){html:not(.rm) :is(#_m,.mday,#days>button,#slots>button):hover:not(:disabled){box-shadow:var(--shadow)}}

/* Skeletons while the server answers (4 Nov 2026): still shapes, no shimmer (no looping motion), no spinners.
   They fade in only if loading takes longer than a moment, so a fast load never flashes them. */
.skel{display:grid;gap:16px;animation:skin var(--t3) var(--ease) .25s 1 both}
.skel i{display:block;background:var(--paper-2);border-radius:14px;min-height:16px}
.skel .sk-row{display:grid;grid-template-columns:200px repeat(7,1fr);gap:8px}.skel .sk-row i{height:56px}
.skel .sk-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.skel .sk-cards i{height:120px;border-radius:20px}
.skel .sk-line{height:20px;width:40%}.skel .sk-line.w2{width:24%}
@keyframes skin{from{opacity:0}to{opacity:1}}
@media (max-width:700px){.skel .sk-row{grid-template-columns:120px repeat(3,1fr)}.skel .sk-row i:nth-child(n+5){display:none}}

/* ---------------- Ask Buenísimo, the staff guide (guide.js, 3 Nov 2026). Tokens only; html.rm snaps. */
.gfab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:70;width:56px;height:56px;border:0;border-radius:50%;background:var(--pri);color:var(--on-pri);display:grid;place-items:center;box-shadow:var(--shadow-lg);transition:transform var(--t2) var(--spring),opacity var(--t2)}
.gfab .ic{width:26px;height:26px}.gfab:active{transform:scale(.92)}.gfab[aria-expanded="true"]{transform:scale(.8);opacity:0;pointer-events:none}
@media (max-width:760px){body[data-page="office"] .gfab{bottom:calc(88px + env(safe-area-inset-bottom))}}
.gsheet{position:fixed;right:16px;bottom:16px;z-index:72;width:min(420px,calc(100vw - 32px));max-height:min(680px,calc(100dvh - 96px));background:var(--card);color:var(--ink);border-radius:24px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;transform-origin:calc(100% - 28px) calc(100% - 28px);transform:scale(.2);opacity:0;visibility:hidden;transition:transform var(--t3) var(--spring),opacity var(--t2),visibility 0s linear var(--t3);-webkit-user-select:none;user-select:none}
.gsheet.in{transform:none;opacity:1;visibility:visible;transition:transform var(--t3) var(--spring),opacity var(--t2),visibility 0s}
@media (max-width:760px){.gsheet{right:8px;left:8px;bottom:8px;width:auto;max-height:calc(100dvh - 80px)}}
html.rm .gsheet,html.rm .gsheet.in,html.rm .gfab{transition:none}
.gsheet header,.gx header{display:flex;align-items:center;gap:10px;padding:14px 14px 10px 16px}
.gsheet .gw,.gx .gw{width:40px;height:40px;border-radius:13px;background:var(--paper-2);color:var(--paprika);display:grid;place-items:center;flex:none}
.gsheet header h2{flex:1;font:600 19px/1.15 var(--display);margin:0}
.gsheet .gib,.gx .gib{width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--ink-2);display:grid;place-items:center;flex:none}
.gsheet .gib:hover,.gx .gib:hover{background:var(--paper-2)}
.gai{display:flex;gap:8px;align-items:flex-start;padding:0 16px 10px;font-size:12.5px;color:var(--ink-3)}.gai .ic{width:16px;height:16px;flex:none;margin-top:1px}
.glog{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 16px 12px;display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--rule)}
.gempty{display:flex;flex-direction:column;gap:10px;padding:12px 0 4px}
.gempty .gh{display:flex;gap:10px;align-items:center;font:600 17px/1.2 var(--display)}.gempty .gh .ic{color:var(--paprika)}.gempty p{margin:0;color:var(--ink-2);font-size:14px}
.gsug{display:flex;flex-direction:column;gap:6px}
.gsug button,.gmsg .gbtn{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 14px;border:0;border-radius:14px;background:var(--paper-2);color:var(--ink);font:600 14px/1.25 var(--sans);text-align:left;text-decoration:none;transition:transform var(--t2) var(--spring)}
.gsug button .ic,.gmsg .gbtn .ic{width:18px;height:18px;color:var(--paprika);flex:none}
.gsug button:active,.gmsg .gbtn:active,.gexcard:active,.gxbtn:active{transform:scale(.97)}
.gsug .gtour{background:var(--ink);color:var(--paper)}.gsug .gtour .ic{color:inherit}
.gmsg{display:flex;flex-direction:column;gap:6px;max-width:92%;animation:gin var(--t3) var(--spring) 1}
@keyframes gin{from{opacity:0;transform:translateY(6px)}}
.gmsg.me{align-self:flex-end;align-items:flex-end}.gmsg .gb{padding:10px 13px;border-radius:16px;background:var(--paper-2);font-size:14.5px;line-height:1.4;-webkit-user-select:text;user-select:text}
.gmsg.me .gb{background:var(--ink);color:var(--paper)}
.gmsg .gk{display:flex;gap:6px;align-items:center;font-size:11.5px;color:var(--ink-3);font-weight:600}.gmsg .gk .ic{width:14px;height:14px}
.gmsg .gbtn{align-self:flex-start}
/* Two meanings on this screen (5 Nov 2026): neutral rows, the meaning in the words and the glyph; the parent owns the gap. */
.gmsg .gchoices{display:flex;flex-direction:column;gap:6px;align-self:stretch}.gmsg .gchoices .gbtn{align-self:stretch}.gmsg .gchoice span{flex:1}.gmsg .gchoice .ic:last-child{color:var(--ink-3);width:16px;height:16px}
.gexcard{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 14px 8px 8px;border:0;border-radius:16px;background:var(--card);box-shadow:var(--shadow);color:var(--ink);text-align:left;align-self:stretch;transition:transform var(--t2) var(--spring)}
.gexcard .gpl{width:40px;height:40px;border-radius:12px;background:var(--pri);color:var(--on-pri);display:grid;place-items:center;flex:none}
.gexcard .gtx{display:flex;flex-direction:column;gap:2px}.gexcard small{font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.gexcard b{font-size:14.5px}
.gxbtn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:0;border-radius:999px;background:var(--paper-2);color:var(--ink);font:600 13.5px/1 var(--sans);flex:none;transition:transform var(--t2) var(--spring)}
.gxbtn .ic{width:18px;height:18px;color:var(--paprika)}
html.rm .gsug button,html.rm .gmsg .gbtn,html.rm .gexcard,html.rm .gxbtn,html.rm .gmsg{transition:none;animation:none}
.gdots{display:inline-flex;gap:4px}.gdots i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);opacity:.5}
.gform{display:flex;gap:8px;padding:10px 12px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--rule)}
.gform input{flex:1;min-width:0;min-height:44px;border:0;border-radius:999px;background:var(--paper-2);color:var(--ink);padding:0 16px;font:400 15px var(--sans);-webkit-user-select:text;user-select:text}
.gform button{width:44px;height:44px;border:0;border-radius:50%;background:var(--pri);color:var(--on-pri);display:grid;place-items:center;flex:none}
.gform button:disabled{opacity:.45}
.gspot{position:fixed;inset:0;z-index:80;cursor:pointer}
.gspot .gcut{position:fixed;border-radius:14px;box-shadow:0 0 0 200vmax rgba(20,14,11,.58);pointer-events:none;transition:left var(--t2) var(--ease),top var(--t2) var(--ease),width var(--t2) var(--ease),height var(--t2) var(--ease)}
.gspot .gring{position:absolute;inset:-4px;border-radius:17px;border:3px solid var(--paprika);animation:gring .5s var(--spring) 1 both}
@keyframes gring{from{opacity:0;transform:scale(1.18)}to{opacity:1;transform:none}}
.gspot .gtip{position:fixed;max-width:min(320px,calc(100vw - 24px));background:var(--ink);color:var(--paper);border-radius:14px;padding:10px 14px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:4px;pointer-events:none;animation:gin var(--t3) var(--spring) 1}
.gspot .gtip b{display:flex;gap:8px;align-items:center;font-size:14.5px}.gspot .gtip b .ic{width:18px;height:18px;color:var(--paprika);flex:none}.gspot .gtip small{opacity:.75;font-size:12px}
.gspot .gtip::before{content:"";position:absolute;left:var(--ax,24px);width:12px;height:12px;background:inherit;transform:rotate(45deg);border-radius:2px}
.gspot .gtip.below::before{top:-5px}.gspot .gtip.above::before{bottom:-5px}
html.rm .gspot .gcut,html.rm .gspot .gring,html.rm .gspot .gtip{transition:none;animation:none}
.gspot{pointer-events:none}
/* the Ask button in the top bar (3 Nov 2026): a neighbour of Tour, never floating over content */
.ibtn.gask .ic{color:var(--paprika)}.ibtn.gask[aria-expanded="true"]{background:var(--ink);color:var(--paper);box-shadow:none}.ibtn.gask[aria-expanded="true"] .ic{color:inherit}
.gsheet{top:76px;bottom:auto}
@media (max-width:760px){.gsheet{top:auto;bottom:8px}}
/* the guides library */
.glib{display:flex;flex-direction:column;gap:10px;padding:8px 0 4px}
.glib .gh{display:flex;gap:10px;align-items:center;font:600 17px/1.2 var(--display)}.glib .gh .ic{color:var(--paprika)}.glib>p{margin:0;color:var(--ink-2);font-size:13.5px}
.gback{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px 0 6px;border:0;background:transparent;color:var(--ink-2);font:600 13.5px/1 var(--sans);border-radius:999px}.gback .ic{width:18px;height:18px}
.gsearch{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;background:var(--paper-2)}.gsearch .ic{width:18px;height:18px;color:var(--ink-3);flex:none}
.gsearch input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font:500 14.5px/1 var(--sans);outline:none;min-height:42px}
.glist{display:flex;flex-direction:column;gap:8px}
.glist h3{display:flex;align-items:center;gap:8px;margin:8px 0 0;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.glist h3 .ic{width:16px;height:16px}
.gguide{display:grid;grid-template-columns:40px minmax(0,1fr);gap:4px 10px;padding:10px;border-radius:16px;background:var(--paper-2)}
.gguide .gwi{width:40px;height:40px;border-radius:12px;background:var(--card);color:var(--paprika);display:grid;place-items:center;grid-row:span 2}
.gguide .gtx{display:flex;flex-direction:column;gap:2px;font-size:14px}.gguide .gtx small{color:var(--ink-3);font-size:12.5px;line-height:1.3}
.gguide .gacts{display:flex;gap:6px;flex-wrap:wrap}
.gguide .gbtn,.gmsg .gbtn.pap{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:0;border-radius:999px;background:var(--card);color:var(--ink);font:600 13.5px/1 var(--sans);transition:transform var(--t2) var(--spring)}
.gguide .gbtn .ic,.gmsg .gbtn .ic{width:18px;height:18px;color:var(--paprika)}
.gguide .gbtn.pap,.gmsg .gbtn.pap{background:var(--pri);color:var(--on-pri)}.gguide .gbtn.pap .ic,.gmsg .gbtn.pap .ic{color:inherit}
.gguide .gbtn:active{transform:scale(.97)}
.gnone{display:flex;gap:8px;align-items:center;color:var(--ink-3);font-size:13.5px;margin:4px 0}
html.rm .gguide .gbtn{transition:none}
/* explainer Layer ("Watch") */
.gxscrim{position:fixed;inset:0;z-index:210;background:var(--scrim,rgba(20,14,11,.5));opacity:0;transition:opacity var(--t2)}.gxscrim.in{opacity:1}
.gx{position:fixed;left:50%;top:50%;z-index:211;width:min(900px,calc(100vw - 24px),calc((100dvh - 250px) * 1.6 + 32px));min-width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;background:var(--card);color:var(--ink);border-radius:26px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(.3);transition:transform var(--t3) var(--spring),opacity var(--t2);outline:none}
.gx.in{opacity:1;transform:translate(-50%,-50%)}
.gx.still{width:min(1000px,calc(100vw - 24px))}
html.rm .gx,html.rm .gxscrim{transition:none}
.gx .gxh{flex:1;display:flex;flex-direction:column;gap:2px}.gx .gxh small{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.gx h2{margin:0;font:600 20px/1.15 var(--display)}
.gxbody{padding:0 16px}
.gxcap{display:flex;gap:12px;align-items:flex-start;padding:12px 18px 4px;min-height:58px}
.gxcap .gxn{flex:none;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--paprika);padding-top:4px;white-space:nowrap}
.gxcap .gxct{font-size:16px;font-weight:600;line-height:1.4}
.gxctl{display:flex;flex-direction:column;gap:10px;padding:8px 16px 16px}
.gxdots{position:relative;display:flex;justify-content:space-between;align-items:center;min-height:44px}
.gxtrack{position:absolute;left:22px;right:22px;top:50%;height:4px;margin-top:-2px;border-radius:2px;background:var(--paper-3)}
.gxtrack i{display:block;height:100%;border-radius:2px;background:var(--pri);width:0;transition:width var(--t3) var(--ease)}
.gxdot{position:relative;width:44px;height:44px;border:0;background:transparent;display:grid;place-items:center;padding:0}
.gxdot span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--paper-3);color:var(--ink-2);font:700 12px/1 var(--sans);transition:background var(--t2),color var(--t2),transform var(--t2) var(--spring)}
.gxdot.on span{background:var(--pri);color:var(--on-pri)}.gxdot[aria-current] span{transform:scale(1.18)}
.gxbtns{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gxbtns .sp{flex:1}
.gxi{width:44px;height:44px;border:0;border-radius:50%;background:var(--paper-2);color:var(--ink);display:grid;place-items:center;transition:transform var(--t2) var(--spring)}
.gxi:active{transform:scale(.92)}.gxi:disabled{opacity:.35}.gxi .ic{width:20px;height:20px}
.gxbtns [data-gxr].end{background:var(--pri);color:var(--on-pri)}
.gx.still .gxdots,.gx.still [data-gxp],.gx.still [data-gxn],.gx.still [data-gxpp]{display:none}
.gxstage{position:relative;aspect-ratio:16/10;border-radius:18px;background:var(--paper);overflow:hidden;box-shadow:inset 0 0 0 1px var(--rule);container-type:inline-size}
.gxb{position:absolute;display:flex;align-items:center;justify-content:center;gap:.6cqw;padding:0 1cqw;border-radius:1.6cqw;font:600 clamp(7px,1.55cqw,13px)/1.15 var(--sans);text-align:center;color:var(--ink);overflow:hidden;transform:rotate(var(--rot,0deg));transition:left .55s var(--spring),top .55s var(--spring),width .45s var(--spring),height .45s var(--spring),transform .45s var(--spring),opacity .3s,background .25s,color .25s}
.gxb .ic{width:clamp(9px,2cqw,18px);height:clamp(9px,2cqw,18px);flex:none}
.gxb .gxt{display:flex;flex-direction:column;gap:.2cqw;min-width:0}.gxb .gxt b{font-weight:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gxb .gxt small{font-size:.82em;font-weight:500;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gxb.al-l{justify-content:flex-start;text-align:left}.gxb.al-l .gxt{align-items:flex-start}
.gxb.al-r{justify-content:space-between}
.gxb.k-bar{background:var(--card);border-radius:0;box-shadow:0 1px 0 var(--rule);justify-content:flex-start;padding-left:2cqw}
.gxb.k-nav{background:transparent;color:var(--ink-2);border-radius:1.6cqw;flex-direction:column;gap:.3cqw;padding:0 .3cqw;font-size:clamp(6px,1.15cqw,10.5px)}.gxb.k-nav .gxt{align-items:center}.gxb.k-nav .gxt b{white-space:normal;text-align:center;line-height:1.05}.gxb.k-nav.on{background:var(--ink);color:var(--paper)}
.gxb.k-rail{background:var(--ink);color:var(--paper);border-radius:0;flex-direction:column}
.gxb.k-ri{flex-direction:column;gap:.3cqw;color:var(--paper);font-size:clamp(6px,1.1cqw,10px);border-radius:1.2cqw}.gxb.k-ri.on{background:var(--pri);color:var(--on-pri)}
.gxb.k-h{background:transparent;justify-content:flex-start;padding:0;font:600 clamp(9px,2.2cqw,20px)/1.1 var(--display)}
.gxb.k-txt{background:transparent;justify-content:flex-start;padding:0;color:var(--ink-2);font-weight:500}
.gxb.k-room{background:var(--card);box-shadow:inset 0 0 0 1px var(--rule);border-radius:2cqw}
.gxb.k-wall{background:var(--paper-3);border-radius:.6cqw;padding:0;font-size:clamp(6px,1.1cqw,10px);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.gxb.k-tbl{background:var(--paper-3);border-radius:2cqw;flex-direction:column;gap:.2cqw;font:600 clamp(9px,2.1cqw,18px)/1 var(--display)}.gxb.k-tbl .gxt{align-items:center}.gxb.k-tbl .gxt small{font-family:var(--sans)}
.gxb.k-tbl.round{border-radius:50%}
.gxb.k-tbl.on{background:var(--ink);color:var(--paper)}.gxb.k-tbl.on .gxt small{color:inherit;opacity:.8}
.gxb.k-tbl.busy{background:var(--olive);color:var(--on-olive)}.gxb.k-tbl.busy .gxt small{color:inherit;opacity:.85}
.gxb.k-group{background:transparent;border:2px dashed var(--olive);border-radius:2.4cqw;align-items:flex-start;justify-content:flex-start;padding:.6cqw 1cqw;color:var(--olive);font-size:clamp(6px,1.2cqw,11px)}
.gxb.k-tile{background:var(--card);box-shadow:var(--shadow);flex-direction:column;gap:.4cqw}.gxb.k-tile .ic{color:var(--paprika)}.gxb.k-tile .gxt{align-items:center}
.gxb.k-tile.on{background:var(--ink);color:var(--paper)}.gxb.k-tile.on .ic{color:inherit}
.gxb.k-btn{background:var(--paper-2)}.gxb.k-btn .ic{color:var(--paprika)}.gxb.k-btn.on{background:var(--ink);color:var(--paper)}.gxb.k-btn.on .ic{color:inherit}
.gxb.k-chip{background:var(--paper-2);border-radius:999px;font-size:clamp(6px,1.3cqw,12px)}.gxb.k-chip .ic{color:var(--paprika)}.gxb.k-chip.on{background:var(--ink);color:var(--paper)}.gxb.k-chip.on .ic{color:inherit}
.gxb.k-pap{background:var(--pri);color:var(--on-pri)}.gxb.k-pap.on{background:var(--olive);color:var(--on-olive)}
.gxb.k-dark{background:var(--ink);color:var(--paper)}.gxb.k-dark .ic{color:inherit}
.gxb.k-panel{background:var(--card);box-shadow:var(--shadow);align-items:flex-start;justify-content:flex-start;padding:1.2cqw 1.4cqw;border-radius:2cqw}.gxb.k-panel .ic{color:var(--paprika)}
.gxb.k-sheet{background:var(--card);box-shadow:var(--shadow-lg);align-items:flex-start;justify-content:flex-start;padding:1.4cqw 1.6cqw;border-radius:2.2cqw;font:600 clamp(8px,1.8cqw,16px)/1.15 var(--display)}.gxb.k-sheet .ic{color:var(--paprika)}
.gxb.k-sheet.hide{transform:scale(.12)}
.gxb.k-line{justify-content:flex-start;background:transparent;border-bottom:1px solid var(--rule);border-radius:0;padding:0 .4cqw}.gxb.k-line .ic{color:var(--paprika)}
.gxb.k-line.hide{transform:translateX(3cqw)}
.gxb.k-tot{justify-content:space-between;background:transparent;border-radius:0;padding:0 .4cqw;font-size:clamp(8px,1.8cqw,16px)}
.gxb.k-tkt{background:var(--card);box-shadow:var(--shadow);flex-direction:column;align-items:stretch;justify-content:flex-start;padding:1cqw;border-radius:1.2cqw;border-top:.8cqw solid var(--paper-3)}.gxb.k-tkt .gxt{align-items:flex-start}
.gxb.k-tkt.on{border-top-color:var(--paprika)}
.gxb.k-alert{background:var(--bad);color:var(--paper);justify-content:flex-start;border-radius:1cqw}.gxb.k-alert .ic{color:inherit}
.gxb.k-toast{background:var(--ink);color:var(--paper);border-radius:999px}.gxb.k-toast .ic{color:var(--paprika)}
.gxb.k-nud{background:var(--pri);color:var(--on-pri);border-radius:50%;padding:0;box-shadow:0 0 0 .4cqw var(--paper)}
.gxb.k-dot{background:var(--paper-3);border-radius:50%;padding:0}.gxb.k-dot.on{background:var(--ink)}
.gxb.k-handle{background:var(--pri);color:var(--on-pri);border-radius:50%;padding:0}
.gxb.k-bubble{background:var(--paper-2);border-radius:1.6cqw;justify-content:flex-start;text-align:left;white-space:normal}
.gxb.k-bubble.me{background:var(--ink);color:var(--paper)}
.gxb.k-ring{background:transparent;box-shadow:0 0 0 .5cqw var(--paprika);border-radius:1.6cqw}
.gxb.hide{opacity:0;transform:scale(.9);pointer-events:none}
.gxb.pop{animation:gxpop .5s var(--spring) 1}
@keyframes gxpop{0%{transform:scale(.2)}100%{transform:rotate(var(--rot,0deg))}}
.gxb.jig{animation:gxjig .22s ease-in-out 6 alternate}
@keyframes gxjig{from{transform:rotate(calc(var(--rot,0deg) - 1.5deg))}to{transform:rotate(calc(var(--rot,0deg) + 1.5deg))}}
.gxstage.snap .gxb,.gxstage.snap .gxspot,.gxstage.snap .gxf{transition:none!important;animation:none!important}
.gxspot{position:absolute;z-index:4;border-radius:2cqw;box-shadow:0 0 0 200cqw color-mix(in srgb,var(--ink) 13%,transparent),0 0 0 .5cqw color-mix(in srgb,var(--paprika) 70%,transparent);opacity:0;pointer-events:none;transition:left .5s var(--ease),top .5s var(--ease),width .5s var(--ease),height .5s var(--ease),opacity .35s}
.gxspot.show{opacity:1}
.gxf{position:absolute;z-index:6;width:5.4cqw;height:5.4cqw;min-width:26px;min-height:26px;margin:-.6cqw 0 0 -1.6cqw;color:var(--ink);opacity:0;transition:left .55s var(--ease),top .55s var(--ease),opacity .25s;pointer-events:none;left:50%;top:115%}
.gxf .ic{width:100%;height:100%;fill:var(--card);filter:drop-shadow(0 2px 3px rgba(0,0,0,.28))}
.gxf i{position:absolute;left:30%;top:12%;width:40%;height:40%;margin:-20% 0 0 -20%;border-radius:50%;border:.4cqw solid var(--paprika);opacity:0}
.gxf.show{opacity:1}
.gxf.tap{animation:gxpress .45s var(--spring) 1}.gxf.tap i{animation:gxripple .6s var(--ease) 1}
.gxf.hold{animation:gxhold .9s var(--ease) 1}.gxf.hold i{animation:gxripple .9s var(--ease) .3s 1}
@keyframes gxpress{40%{transform:scale(.8)}100%{transform:none}}
@keyframes gxhold{20%,80%{transform:scale(.82)}100%{transform:none}}
@keyframes gxripple{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(2.6)}}
.gxf.mark i{opacity:1;transform:scale(1.4)}
.gxstill{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.gxstill li{display:flex;flex-direction:column;gap:6px}.gxstill p{margin:0;display:flex;gap:8px;font-size:13.5px;line-height:1.35}.gxstill p b{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:12px;flex:none}
.gxstill .gxb,.gxstill .gxspot,.gxstill .gxf{transition:none;animation:none}
@media (max-width:560px){.gxstill{grid-template-columns:minmax(0,1fr)}}
html.rm .gxb,html.rm .gxspot,html.rm .gxf,html.rm .gxdot span,html.rm .gxtrack i,html.rm .gxi{transition:none!important;animation:none!important}
/* How it works on the REAL screen (4 Nov 2026, explainer.js): the page itself in a frame at the
   iPad's 1180 x 820, scaled to fit; the hand, ripple and spotlight are drawn over it in the same
   device pixels; a shield keeps the film from being tapped by mistake. */
.gx.real{width:auto;min-width:0;max-width:calc(100vw - 24px)}
.gx.real .gxbody{display:flex;flex-direction:column;align-items:center;gap:8px}
.gxrstage{position:relative;border-radius:18px;overflow:hidden;background:var(--paper);box-shadow:0 0 0 1px var(--rule),var(--shadow);flex:none}
.gxrdev{position:absolute;left:0;top:0;width:1180px;height:820px;transform-origin:0 0}
.gxrdev iframe{position:absolute;inset:0;width:1180px;height:820px;border:0;display:block;background:var(--paper)}
.gxrshield{position:absolute;inset:0;z-index:3}
.gxrspot{position:absolute;z-index:4;left:0;top:0;width:0;height:0;border-radius:18px;pointer-events:none;opacity:0;
  box-shadow:0 0 0 2400px color-mix(in srgb,#140e0b 22%,transparent),0 0 0 4px color-mix(in srgb,var(--paprika) 75%,transparent),0 0 34px 6px color-mix(in srgb,var(--paprika) 30%,transparent);
  transition:left .45s var(--ease),top .45s var(--ease),width .45s var(--ease),height .45s var(--ease),opacity .3s var(--ease)}
.gxrspot.show{opacity:1}
.gxrf{position:absolute;z-index:6;left:0;top:0;width:0;height:0;pointer-events:none;opacity:0;transform:translate(590px,900px);transition:transform .55s var(--spring),opacity .25s var(--ease)}
.gxrf.show{opacity:1}
.gxrh{position:absolute;left:-17px;top:-6px;width:58px;height:58px;display:block;color:var(--ink);transform-origin:30% 12%}
.gxrh .ic{width:100%;height:100%;fill:var(--card);filter:drop-shadow(0 4px 6px rgba(0,0,0,.32))}
.gxrh i{position:absolute;left:30%;top:12%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;border:4px solid var(--paprika);opacity:0}
.gxrh.tap{animation:gxpress .45s var(--spring) 1}.gxrh.tap i{animation:gxripple .6s var(--ease) 1}
.gxrh.hold{animation:gxhold .9s var(--ease) 1}.gxrh.hold i{animation:gxripple .9s var(--ease) .3s 1}
.gxrveil{position:absolute;inset:0;z-index:7;display:flex;align-items:center;justify-content:center;gap:12px;background:color-mix(in srgb,var(--paper) 88%,transparent);color:var(--ink-2);font:600 22px/1.2 var(--sans);opacity:0;pointer-events:none;transition:opacity .2s var(--ease)}
.gxrveil .ic{width:30px;height:30px;color:var(--paprika)}
.gxrveil.show{opacity:1;pointer-events:auto}
.gxrnote{margin:0;display:flex;align-items:center;gap:6px;max-width:300px;font-size:12px;line-height:1.3;color:var(--ink-3)}.gxrnote .ic{flex:none}
@media (max-width:720px){.gx.real .gxrnote{display:none}}
.gx.real .gxcap{min-height:62px;padding-top:10px}.gx.real .gxctl{padding-top:4px}.gxrnote .ic{width:14px;height:14px;color:var(--olive)}
html.rm .gxrspot,html.rm .gxrf,html.rm .gxrh,html.rm .gxrh i,html.rm .gxrveil{transition:none!important;animation:none!important}
/* live guides ("Show me"): four panes around a cut-out, so the control stays usable */
.glive{position:fixed;inset:0;z-index:300;pointer-events:none}
.lgs{position:fixed;background:color-mix(in srgb,#140e0b 52%,transparent);pointer-events:auto;opacity:0;transition:opacity var(--t2)}
.glive.in .lgs{opacity:1}.glive.wait .lgs,.glive.wait .lgr{display:none}
.lgr{position:fixed;border-radius:14px;box-shadow:0 0 0 3px var(--paprika);pointer-events:none;transition:left var(--t2) var(--ease),top var(--t2) var(--ease),width var(--t2) var(--ease),height var(--t2) var(--ease)}
.lgh{position:fixed;left:0;top:0;width:44px;height:44px;margin:-6px 0 0 -14px;color:var(--ink);opacity:0;pointer-events:none;z-index:2}
.lgh .ic{width:100%;height:100%;fill:var(--card);filter:drop-shadow(0 3px 5px rgba(0,0,0,.35))}
.lgc{position:fixed;width:min(380px,calc(100vw - 32px));pointer-events:auto;background:var(--card);color:var(--ink);border-radius:22px;box-shadow:var(--shadow-lg);padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px;outline:none;transform:translateY(8px);opacity:0;transition:transform var(--t3) var(--spring),opacity var(--t2),left var(--t3) var(--spring),top var(--t3) var(--spring)}
.glive.in .lgc{transform:none;opacity:1}
.lgc header{display:flex;align-items:center;gap:10px}
.lgc .gw{width:40px;height:40px;border-radius:13px;background:var(--paper-2);color:var(--paprika);display:grid;place-items:center;flex:none}
.lgc .lgk{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.lgc .lgk small{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.lgc .lgk b{font:600 17px/1.2 var(--display)}
.lgc .gib{width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--ink-2);display:grid;place-items:center;flex:none}
.lgcap{margin:0;font-size:15.5px;font-weight:600;line-height:1.4}
.lgnote{margin:0;display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink-2)}.lgnote:empty{display:none}.lgnote .ic{width:16px;height:16px;flex:none;color:var(--paprika);margin-top:1px}
.lgb{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.lgb .sp{flex:1}
.lgc.done .gw{background:var(--olive);color:var(--on-olive)}
.lgnext{max-width:100%}.lgnext span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.rm .lgs,html.rm .lgr,html.rm .lgc{transition:none}

/* Staff screens floor (10 Nov 2026, review item 10): 14px text and 44px targets on every
   page that sets html[data-staff]. Customer pages are untouched. */
html[data-staff] .small,html[data-staff] .field,html[data-staff] .samplebar,html[data-staff] .kbar .brand small,html[data-staff] .ktoast small,html[data-staff] .note{font-size:14px}
html[data-staff] .ibtn{font-size:14px}
html[data-staff] .tag{font-size:12px}
html[data-staff] .btn.sm{min-height:44px;font-size:14px;padding:0 14px}
html[data-staff] .seg button{min-height:44px;font-size:14px}

/* The order number on the stand or buzzer (14 Nov 2026): solid ink with paper text, never a tint. Not the system #no, not the table. */
.otag{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:10px;background:var(--ink);color:var(--paper);font:800 1.15em/1.1 var(--sans);font-variant-numeric:tabular-nums;vertical-align:middle;white-space:nowrap}
.otag .ic{width:.85em;height:.85em}
.otag.xl{font-size:1.6em;padding:4px 12px;border-radius:12px}

/* Room for the sample "Not connected" banner so it never covers Pay (store.js adds html.nc-pad). */
html.nc-pad body{padding-bottom:84px}
/* POS brand A: Send is the white secondary beside the gold Pay (hairline, navy ink) */
html[data-staff] #aSend.btn.dark{background:var(--card);color:var(--head);box-shadow:inset 0 0 0 1px var(--rule)}
