@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700&display=swap');
:root{--bg:#070c10;--panel:#0d1419;--panel2:#111b22;--field-bg:#10181e;--field-bg2:#0f171d;--control-bg:#111a20;--surface-deep:#080d11;--chip-bg:#1b2328;--chip-text:#b8c0c4;--gold:#d6a657;--gold2:#f0c97e;--teal:#58d8b4;--text:#f3f2ed;--muted:#8e9aa3;--line:rgba(255,255,255,.09);--danger:#f0a05d;--radius:22px;--status-new:var(--gold2);--status-ok:#64d18a;--status-attention:#f0b45f;--status-issue:#ef6f6f;--status-cooking:#ef8a55;--status-neutral:var(--muted);--status-cancelled:#d06a6a}
:root[data-theme="light"]{--bg:#f6f1e7;--panel:#fffdf7;--panel2:#f1e9d8;--field-bg:#efe6d3;--field-bg2:#f1e9d9;--control-bg:#f0e8d7;--surface-deep:#e9dfc9;--chip-bg:#e7ded0;--chip-text:#54503f;--gold:#c9973f;--gold2:#8a642a;--teal:#1f8f6e;--text:#231f19;--muted:#6f6a5e;--line:rgba(90,74,46,.16);--danger:#a85220;--status-new:var(--gold2);--status-ok:#2f8f57;--status-attention:#a06a1a;--status-issue:#c23f3f;--status-cooking:#b85f2e;--status-neutral:var(--muted);--status-cancelled:#a94747}*{box-sizing:border-box}html{scroll-behavior:smooth;color-scheme:dark}body{margin:0;font-family:'DM Sans',sans-serif}
/* Defensive baseline: every <a> in this app is deliberately styled by a
   more specific rule below (nav links, buttons-as-links, filter pills,
   etc.) - but a browser's own UA stylesheet gives an unstyled link a
   default blue (and a visited one purple/light-blue in dark mode) at a
   specificity that can win if a page-specific rule is ever late to
   apply (a slow stylesheet load, an aggressively cached older CSS
   file) or simply missing for a control added later. This lowest-
   specificity fallback (a bare element selector, always loses to any
   class-based rule already in this file) guarantees no link can ever
   render in an accidental off-theme colour - it inherits its
   surrounding text colour instead, exactly like plain text would. */
a,a:visited{color:inherit}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold2);outline-offset:2px}.g-body,.admin-dark{background:var(--bg);color:var(--text);min-height:100vh}.g-body{background:radial-gradient(circle at 90% 10%,rgba(46,145,147,.14),transparent 26%),radial-gradient(circle at 0 20%,rgba(214,166,87,.1),transparent 25%),var(--bg)}.ambient{position:fixed;pointer-events:none;filter:blur(90px);opacity:.22;z-index:-1}.a1{width:260px;height:260px;background:#1ebea0;top:20%;right:-140px}.a2{width:240px;height:240px;background:#bd7a2d;top:50%;left:-160px}.g-hero{max-width:760px;margin:auto;padding:26px 18px 28px}.topbar{display:flex;justify-content:space-between;align-items:center}.g-logo{font-family:'Manrope',sans-serif;letter-spacing:.28em;font-weight:600;color:#f4d08d;font-size:18px}.g-logo span{font-size:22px;margin-right:8px}.icon-btn,.modal-close{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);width:40px;height:40px;border-radius:50%;font-size:18px}.welcome{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;padding:54px 0 24px}.kicker,.section-title small,.modal-head small,.admin-header small,.qr-card small,.stats small,.admin-section-title small{font-size:10px;letter-spacing:.18em;color:var(--gold2);font-weight:700}.welcome h1{font:600 clamp(34px,9vw,58px)/1.02 'Manrope',sans-serif;margin:7px 0 10px}.welcome p{color:var(--muted);line-height:1.6;max-width:470px;margin:0}.table-orb{width:92px;height:92px;border-radius:50%;border:1px solid rgba(214,166,87,.5);box-shadow:0 0 40px rgba(214,166,87,.08),inset 0 0 30px rgba(214,166,87,.04);display:grid;place-items:center;align-content:center}.table-orb small{font-size:9px;color:var(--muted);letter-spacing:.18em}.table-orb strong{font-size:31px;color:var(--gold2)}.hero-actions{display:flex;gap:10px}.primary,.ghost{border-radius:14px;padding:14px 19px;border:1px solid rgba(214,166,87,.45);font-weight:700;text-decoration:none;text-align:center;cursor:pointer}.primary{color:#0c1012;background:linear-gradient(135deg,#f0c97e,#ad762c);box-shadow:0 10px 28px rgba(214,166,87,.14)}.ghost{color:var(--text);background:rgba(255,255,255,.03)}.wide{width:100%;border:0;margin-top:14px}
.wide:not([hidden]){display:block}.g-nav{position:sticky;top:0;z-index:10;background:rgba(7,12,16,.86);backdrop-filter:blur(18px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.nav-scroll{max-width:760px;margin:auto;display:flex;gap:8px;overflow:auto;padding:12px 18px;scrollbar-width:none}.nav-scroll a{color:var(--muted);text-decoration:none;white-space:nowrap;border:1px solid transparent;border-radius:999px;padding:8px 13px;font-size:13px}.nav-scroll a.active{color:#101316;background:var(--gold2)}.g-shell{max-width:760px;margin:auto;padding:18px}.trust-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 30px}.trust-row>div{display:flex;gap:11px;align-items:center;padding:13px;border:1px solid var(--line);background:rgba(255,255,255,.025);border-radius:16px;color:var(--gold2)}.trust-row b,.trust-row small{display:block}.trust-row b{font-size:12px;color:var(--text)}.trust-row small{font-size:10px;color:var(--muted);margin-top:2px}.section-title{display:flex;justify-content:space-between;align-items:end;margin:0 0 15px}.section-title h2{font:600 27px 'Manrope',sans-serif;margin:3px 0 0}.section-title>span{color:var(--gold2)}.feature-section,.menu-section{scroll-margin-top:66px;margin:30px 0 38px}.feature-scroll{display:flex;gap:13px;overflow:auto;scroll-snap-type:x mandatory;padding-bottom:4px}.feature-card{min-width:78%;scroll-snap-align:start;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:linear-gradient(180deg,var(--control-bg),#0b1116);cursor:pointer}.feature-card img{width:100%;height:210px;object-fit:cover;display:block}.feature-copy{display:flex;justify-content:space-between;gap:12px;padding:16px}.feature-copy h3,.dish-card h3{margin:0;font-size:18px}.feature-copy p,.dish-card p{color:var(--muted);font-size:12px;line-height:1.45;margin:5px 0 0}.feature-copy strong,.dish-top>strong{color:var(--gold2);white-space:nowrap}.dish-grid{display:grid;gap:12px}.dish-card{display:grid;grid-template-columns:130px 1fr;min-height:145px;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.015));position:relative;cursor:pointer}.dish-card>img{width:130px;height:130px;object-fit:cover;display:block}.dish-body{padding:15px 15px 14px}.dish-top{display:flex;gap:12px;justify-content:space-between}.dish-top p{max-width:350px}.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tag{font-size:9px;border-radius:999px;padding:5px 7px;border:1px solid var(--line)}.tag.safe{color:#8fe5bd;background:rgba(52,180,123,.09)}.tag.warn{color:#f4bd79;background:rgba(223,151,71,.08)}.add{position:absolute;right:12px;bottom:11px;width:34px;height:34px;border-radius:50%;border:1px solid rgba(214,166,87,.35);background:#10171c;color:var(--gold2);font-size:22px}.bottom-space{height:80px}.basket-bar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:20;width:min(calc(100% - 28px),720px);display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:10px;background:linear-gradient(135deg,#d7a854,#a76b27);border:0;color:#101316;border-radius:17px;padding:13px 15px;font-weight:700;box-shadow:0 18px 50px rgba(0,0,0,.45)}.basket-bar>span{width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.16);display:grid;place-items:center}.hidden{display:none!important}.modal-card{width:100%;max-width:760px;margin:0 auto;background:#0b1217;border:1px solid var(--line);border-radius:28px 28px 0 0;max-height:94vh;overflow:auto;position:relative}.dish-modal>img{width:100%;height:260px;object-fit:cover}.modal-close{position:absolute;top:14px;right:14px;z-index:2;background:rgba(0,0,0,.55);font-size:25px}.modal-close.static{position:static;background:rgba(255,255,255,.04)}.modal-content,.basket-sheet,.help-sheet{padding:18px}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:12px}.modal-head h2{font:600 28px 'Manrope';margin:4px 0}.modal-head>strong{color:var(--gold2);font-size:20px}.modal-content>p{color:var(--muted);line-height:1.55}.allergen-box{padding:14px;border:1px solid rgba(214,166,87,.18);background:rgba(214,166,87,.055);border-radius:15px;margin:16px 0}.allergen-box b{font-size:13px}.allergen-box p{margin:7px 0;color:#f0bd79}.allergen-box small{color:var(--muted);line-height:1.4}.field{margin:16px 0}
.field:not([hidden]){display:block}.field>span{display:block;font-size:12px;font-weight:700;margin-bottom:8px}.field textarea{width:100%;min-height:78px;margin-top:8px;background:var(--field-bg2);border:1px solid var(--line);border-radius:13px;padding:12px;color:var(--text);resize:vertical}.field input:not([type="checkbox"]):not([type="radio"]),.field select{width:100%;min-height:44px;background:var(--field-bg2);border:1px solid var(--line);border-radius:13px;padding:0 12px;color:var(--text);font:inherit;font-size:14px}.qty-row{display:flex;justify-content:center;align-items:center;gap:18px}.qty-row button,.mini-step button{border:1px solid var(--line);background:var(--control-bg);color:var(--text);border-radius:50%;width:34px;height:34px;font-size:18px}.lock{overflow:hidden}.sheet-handle{width:44px;height:4px;border-radius:4px;background:#39434a;margin:-6px auto 17px}.basket-line{display:grid;grid-template-columns:52px 1fr auto auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.basket-line img{width:52px;height:52px;border-radius:11px;object-fit:cover}.basket-line small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.basket-line>strong{color:var(--gold2);font-size:12px}.mini-step{display:flex;align-items:center;gap:6px}.tip-box{padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.tip-box>div:first-child{display:flex;justify-content:space-between}.tip-box small{color:var(--muted)}.tip-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:11px}.tip-grid button{padding:10px 5px;border:1px solid var(--line);border-radius:10px;background:var(--field-bg2);color:var(--text)}.tip-grid button.selected{border-color:var(--gold);color:var(--gold2);background:rgba(214,166,87,.08)}.totals{padding:13px 0}.totals>div{display:flex;justify-content:space-between;padding:5px 0;color:var(--muted)}.totals b{color:var(--text)}.totals .grand{font-size:19px;color:var(--text);padding-top:11px}.totals .grand b{color:var(--gold2)}.pay-stack{display:grid;gap:8px}.pay-stack button,.help-sheet>button{background:var(--control-bg);color:var(--text);border:1px solid var(--line);border-radius:13px;padding:14px;text-align:left;font-weight:700}.pay-stack button{display:flex;justify-content:space-between}.pay-stack small{color:var(--muted);font-weight:400}.demo-note{text-align:center;color:var(--muted);font-size:10px}.help-sheet>button{width:100%;display:flex;gap:12px;align-items:center;margin-top:9px;font-size:18px}.help-sheet span b,.help-sheet span small{display:block}.help-sheet span b{font-size:13px}.help-sheet span small{color:var(--muted);font-size:10px;margin-top:2px}.track-wrap{max-width:560px;margin:auto;padding:28px 18px 60px;text-align:center}.center{text-align:center;margin-bottom:42px}.success-ring{width:82px;height:82px;border-radius:50%;border:1px solid rgba(88,216,180,.5);display:grid;place-items:center;margin:0 auto 22px;color:var(--teal);font-size:38px;box-shadow:0 0 34px rgba(88,216,180,.1)}.track-wrap>h1{font:600 40px 'Manrope';margin:6px 0}.track-wrap>p{color:var(--muted)}.track-card,.receipt-card.dark{margin:25px 0;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px}.track-head{display:flex;justify-content:space-between;color:var(--gold2);font-size:12px}.timeline{margin-top:18px}.step{display:flex;gap:12px;min-height:62px;position:relative;color:#5f6a70}.step:before{content:"";position:absolute;left:6px;top:13px;bottom:-10px;border-left:1px solid #2a343a}.step:last-child:before{display:none}.step i{width:13px;height:13px;border-radius:50%;border:2px solid #3a454b;background:var(--panel);z-index:1}.step.on{color:var(--text)}.step.on i{background:var(--gold2);border-color:var(--gold2);box-shadow:0 0 15px rgba(214,166,87,.25)}.step b,.step small{display:block}.step small{color:var(--muted);margin-top:2px}.receipt-card.dark>div{display:flex;justify-content:space-between;padding:7px 0}.receipt-card.dark hr{border:0;border-top:1px solid var(--line)}.receipt-card.dark .grand{font-size:18px;color:var(--gold2)}.post-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.post-actions button,.post-actions a{background:var(--control-bg);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:12px;text-decoration:none;font-weight:700}.post-actions a{grid-column:1/-1}.admin-shell{max-width:1220px;margin:auto;padding:34px 24px 70px}.admin-header{display:flex;justify-content:space-between;align-items:end;gap:20px;padding-bottom:26px}.admin-header.compact{align-items:center}.admin-header h1{font:600 clamp(34px,6vw,58px) 'Manrope';margin:8px 0 4px}.admin-header p{color:var(--muted)}.admin-header nav{display:flex;gap:8px}.admin-header nav a,.qr-card a{color:var(--text);text-decoration:none;border:1px solid var(--line);padding:10px 13px;border-radius:11px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0 36px}.stats>div{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px}.stats b{display:block;font-size:24px;margin-top:5px}.stats em{color:var(--teal);font-style:normal;font-size:10px}.stats .dot{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--teal);top:18px;right:18px;box-shadow:0 0 12px var(--teal)}.stats.large b{font-size:34px;color:var(--gold2)}.admin-section-title{display:flex;justify-content:space-between;align-items:end;margin:20px 0 13px}.admin-section-title h2{font:600 27px 'Manrope';margin:4px 0}.admin-section-title>span{color:var(--gold2);font-size:12px}.qr-grid,.order-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.qr-card,.order-card,.analytics-card,.request-panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px}.qr-card-top,.order-head,.order-foot{display:flex;justify-content:space-between;align-items:start}.qr-card-top h3,.order-head h2{font:600 32px 'Manrope';margin:2px 0}.qr-card-top>span{font-size:10px;color:var(--teal);border:1px solid rgba(88,216,180,.2);padding:5px 8px;border-radius:999px}.qr-frame{background:#f5f3eb;border-radius:15px;padding:12px;text-align:center;margin:12px 0}.qr-frame img{width:170px;max-width:100%;mix-blend-mode:multiply}.qr-card>a{display:block;text-align:center}.order-lines{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 0;margin:8px 0 12px}.order-lines>div{display:flex;justify-content:space-between;gap:10px;padding:6px 0}.order-lines small{display:block;color:var(--muted);font-size:10px}.status-chip{font-size:9px;padding:5px 7px;border-radius:999px;background:var(--chip-bg);color:var(--chip-text)}.status-new{color:#f0ca7c}.status-preparing,.status-cooking{color:#f0a05d}.status-ready{color:#67deb6}.order-foot select{background:var(--control-bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px}.print-panel{margin-top:20px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:15px}.print-panel summary{cursor:pointer;font-weight:700}.print-panel summary span{float:right;color:var(--muted);font-weight:400}.print-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.print-card{background:var(--surface-deep);border:1px solid var(--line);border-radius:12px;padding:12px}.print-card>div{display:flex;justify-content:space-between;color:var(--gold2)}.print-card span{color:var(--muted);font-size:10px}.print-card pre{white-space:pre-wrap;color:#bcc6cb;font-size:11px}.request-grid{display:grid;gap:8px}.request-grid article{display:grid;grid-template-columns:50px 1fr auto;align-items:center;gap:10px;padding:10px;background:var(--field-bg);border:1px solid var(--line);border-radius:12px}.request-grid article>b{font-size:20px;color:var(--gold2)}.request-grid small{display:block;color:var(--muted)}.request-grid button{background:transparent;color:var(--teal);border:1px solid rgba(88,216,180,.25);border-radius:8px;padding:8px}.request-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.request-grid button.quick-print-btn{color:var(--gold2);border-color:rgba(214,166,87,.32)}.analytics-card table{width:100%;border-collapse:collapse}.analytics-card th,.analytics-card td{text-align:left;padding:12px;border-bottom:1px solid var(--line)}.analytics-card th{font-size:10px;color:var(--muted);letter-spacing:.12em}.analytics-card td:last-child{color:var(--gold2)}
@media(max-width:780px){.admin-header{align-items:start;flex-direction:column}.qr-grid,.order-grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.print-grid{grid-template-columns:1fr}.welcome{padding-top:40px}.feature-card{min-width:84%}}@media(max-width:520px){.welcome{grid-template-columns:1fr auto}.table-orb{width:76px;height:76px}.table-orb strong{font-size:25px}.trust-row{grid-template-columns:1fr}.dish-card{grid-template-columns:105px 1fr}.dish-card>img{width:105px;height:105px}.dish-body{padding:12px}.dish-top{display:block}.dish-top>strong{display:block;margin-top:7px}.dish-card p{font-size:11px}.tag.warn{max-width:165px}.feature-card{min-width:90%}.feature-card img{height:190px}.tip-grid{grid-template-columns:1fr 1fr}.basket-line{grid-template-columns:44px 1fr auto}.basket-line>strong{grid-column:2/4;text-align:right}.basket-line img{width:44px;height:44px}.post-actions{grid-template-columns:1fr}.post-actions a{grid-column:auto}}
.logo-link{text-decoration:none}.add{min-width:42px;width:auto!important;padding:0 11px!important;transition:.2s}.add.has-items{background:var(--gold)!important;color:#071014!important;border-color:var(--gold)!important;font-size:11px;font-weight:800}.add.pulse{transform:scale(1.12);box-shadow:0 0 22px rgba(214,166,87,.45)}.custom-tip{display:flex;justify-content:space-between;align-items:center;margin-top:10px;color:var(--muted);font-size:12px}.custom-tip>div{display:flex;align-items:center;background:var(--field-bg2);border:1px solid var(--line);border-radius:10px;padding:0 9px}.custom-tip input{width:75px;background:transparent;border:0;color:var(--text);padding:10px 5px;outline:0}.control-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.control-card{display:block;background:linear-gradient(145deg,var(--panel),#101a20);border:1px solid var(--line);border-radius:22px;padding:22px;color:var(--text);text-decoration:none;min-height:190px;transition:.2s}.control-card:hover{border-color:rgba(214,166,87,.35);transform:translateY(-2px)}.control-card>span{font-size:28px;color:var(--gold2)}.control-card h2,.control-card h3{font-family:'Manrope';margin:9px 0}.control-card p{color:var(--muted);line-height:1.5}.control-card>b{color:var(--gold2)}.hero-control{grid-row:span 2;background:radial-gradient(circle at 80% 10%,rgba(214,166,87,.12),transparent 35%),var(--panel);min-height:393px;display:flex;flex-direction:column;justify-content:flex-end}.hero-control h2{font-size:38px}.studio-add{background:var(--gold);color:#071014;border:0;border-radius:var(--control-radius);padding:10px 14px;font-weight:800;min-height:var(--control-height);font-size:13px;line-height:1.4;display:inline-flex;align-items:center}.studio-quicknav{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 18px;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.studio-quicknav-label{color:var(--gold2);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.studio-quicknav select{background:var(--control-bg);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 10px;min-height:var(--control-height);font:inherit}.studio-quicknav button{background:transparent;border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 12px;min-height:var(--control-height);font-weight:700;cursor:pointer}.studio-quicknav button:hover{border-color:rgba(214,166,87,.35);color:var(--gold2)}.studio-quicknav .studio-add{margin-left:auto}.category-management-summary{cursor:pointer}.category-management-summary small{color:var(--gold2);letter-spacing:.12em}.category-management-summary h2{margin:4px 0;font-family:'Manrope';display:inline}.category-management-summary p{margin:4px 0 0;color:var(--muted);font-size:12px}.studio-toolbar{display:flex;justify-content:space-between;align-items:center;margin:10px 0 20px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:16px}.studio-toolbar span{color:var(--muted);margin-left:10px;font-size:12px}.studio-toolbar input{background:var(--control-bg);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px 12px;width:240px}.studio-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.studio-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;overflow:hidden}.studio-image{height:180px;position:relative}.studio-image img{width:100%;height:100%;object-fit:cover}.route{position:absolute;top:12px;right:12px;background:rgba(7,12,16,.88);border:1px solid var(--line);border-radius:999px;padding:6px 9px;font-size:9px;color:var(--gold2)}.studio-form{padding:16px}.studio-form label{display:block;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.04em}.studio-form input:not([type="checkbox"]):not([type="radio"]),.studio-form textarea,.studio-form select{display:block;width:100%;margin-top:6px;margin-bottom:12px;background:var(--field-bg);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:10px;font-family:inherit}
.studio-form label:has(>input[type="checkbox"]),.studio-form label:has(>input[type="radio"]){display:flex;align-items:center;gap:8px;color:var(--text);font-size:13px;font-weight:400;letter-spacing:normal}
.studio-form input[type="checkbox"],.studio-form input[type="radio"]{width:auto;flex-shrink:0;margin:0}.studio-form textarea{min-height:70px;resize:vertical}.studio-row{display:grid;grid-template-columns:2fr 1fr;gap:10px}.toggle-stack{padding-top:19px}.toggle-stack label{font-size:12px;color:var(--text);margin-bottom:10px}.toggle-stack input{width:auto;display:inline;margin:0 7px 0 0}.studio-save{width:100%;background:var(--gold);border:0;color:#071014;border-radius:10px;padding:11px;font-weight:800}.save-state{display:block;min-height:16px;margin-top:7px;text-align:center}.save-state.ok{color:var(--teal)}.save-state.bad{color:var(--danger)}.dirty-indicator{text-align:center;color:var(--gold2);font-weight:700;margin-top:4px}
.bulk-select-checkbox{display:inline-flex!important;align-items:center;margin-right:auto}
.bulk-select-checkbox input{width:18px;height:18px}
.bulk-action-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px;padding:12px 16px;background:var(--panel);border:1px solid var(--gold);border-radius:14px}
.bulk-action-bar #bulkSelectedCount{font-weight:700;color:var(--gold2);margin-right:auto}
.bulk-action-bar button{background:var(--control-bg);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:8px 12px;font-weight:700;font-size:13px}
.bulk-action-bar .save-state{flex-basis:100%;margin:0}
.dietary-notice{max-width:760px;margin:10px auto;padding:0 18px;text-align:center;color:var(--muted);font-size:11px;line-height:1.5}
.image-disclaimer{max-width:760px;margin:22px auto 0;padding:0 18px;text-align:center;color:var(--muted);font-size:11px;line-height:1.5}.image-disclaimer-dish{margin:14px 0 0;padding:0}
.rvc-select-wrap{margin-bottom:12px}.rvc-select-label{display:block;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.04em;margin-bottom:6px}.rvc-checkbox-list{display:flex;flex-wrap:wrap;gap:6px 16px}
.modifier-group-summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;list-style:none}.modifier-group-summary::-webkit-details-marker{display:none}.modifier-group-summary b{font-size:14px}.modifier-group-summary small{color:var(--muted);font-size:11px;display:block;margin-top:2px}.modifier-group-details>.studio-form{padding-top:0}.modifier-group-details[open] .modifier-group-summary{border-bottom:1px solid var(--line)}
.dirty-indicator:not([hidden]){display:block}
@media(max-width:780px){.control-grid,.studio-grid{grid-template-columns:1fr}.hero-control{grid-row:auto;min-height:260px}.studio-toolbar{align-items:stretch;flex-direction:column;gap:10px}.studio-toolbar input{width:100%}}
.manager-link{border-color:rgba(214,166,87,.36)!important;color:var(--gold2)!important}.availability-panel{margin-top:28px;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px}.availability-panel .admin-section-title{margin-top:0}.availability-panel .admin-section-title p{margin:5px 0 0;color:var(--muted);font-size:12px}.availability-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.availability-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--field-bg);border:1px solid var(--line);border-radius:13px;padding:12px;transition:.2s}.availability-row small,.availability-row b{display:block}.availability-row small{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.availability-row b{margin-top:3px}.availability-row.is-out{opacity:.62}.availability-row.is-out b{text-decoration:line-through}.availability-toggle{min-width:116px;background:transparent;color:var(--gold2);border:1px solid rgba(214,166,87,.3);border-radius:9px;padding:9px 10px;font-weight:700}.availability-row.is-out .availability-toggle{color:var(--teal);border-color:rgba(88,216,180,.3)}.inline-lock{display:inline}.inline-lock button{background:transparent;color:var(--gold2);border:1px solid rgba(214,166,87,.35);padding:10px 13px;border-radius:11px;cursor:pointer}.lock-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.lock-card{width:min(440px,100%);background:radial-gradient(circle at 85% 5%,rgba(214,166,87,.12),transparent 34%),var(--panel);border:1px solid var(--line);border-radius:26px;padding:30px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.lock-card>small{display:block;margin-top:32px;color:var(--gold2);letter-spacing:.14em}.lock-card h1{font:600 42px 'Manrope';margin:8px 0}.lock-card p{color:var(--muted);line-height:1.55}.lock-card form{margin-top:24px}.lock-card label{color:var(--muted);font-size:11px;font-weight:700}.lock-card input{display:block;width:100%;margin:7px 0 12px;background:var(--field-bg);border:1px solid var(--line);border-radius:12px;color:var(--text);padding:14px;font-size:18px;letter-spacing:.18em;outline:0}.lock-card input:focus{border-color:rgba(214,166,87,.55)}.lock-card form button{width:100%;background:var(--gold);color:#071014;border:0;border-radius:11px;padding:13px;font-weight:800;cursor:pointer}.lock-error{color:var(--danger);font-size:12px;margin:0 0 12px}.lock-back{display:block;text-align:center;margin-top:15px;color:var(--muted);text-decoration:none;font-size:12px}.lock-choice{display:block;text-align:center;text-decoration:none;border-radius:11px;padding:13px;font-weight:800;margin-top:24px}.lock-choice.primary{background:var(--gold);color:#071014;border:1px solid transparent}.lock-choice.secondary{margin-top:12px;border:1px solid var(--line);color:var(--text)}.prototype-note{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin-top:24px;padding:13px;background:#091015;border:1px solid var(--line);border-radius:12px}.prototype-note b{font-size:11px}.prototype-note span{color:var(--gold2);font-weight:800;letter-spacing:.12em}.prototype-note small{grid-column:1/-1;color:var(--muted);line-height:1.4}@media(max-width:780px){.availability-grid{grid-template-columns:1fr}.admin-header nav{flex-wrap:wrap}}

/* Gustara V3 additions */
.inline-qty{display:inline-grid;grid-template-columns:38px 38px 38px;align-items:center;border:1px solid rgba(214,166,87,.35);background:#0b1217;border-radius:13px;overflow:hidden;min-height:38px}.inline-qty button{height:38px;border:0;background:transparent;color:var(--gold2);font-size:20px;cursor:pointer}.inline-qty button:disabled{opacity:.25;cursor:default}.inline-qty b{text-align:center;font-size:13px;color:var(--text)}.inline-qty.zero .qty-value{color:var(--muted)}.inline-qty.compact{grid-template-columns:32px 32px 32px;min-height:32px}.inline-qty.compact button{height:32px;font-size:17px}.dish-order-row{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:12px;min-height:40px}.line-value{margin-right:auto;color:var(--gold2);font-size:10px}.feature-price{display:flex;align-items:center;gap:12px}.feature-price>strong{white-space:nowrap}.order-error{color:var(--danger);font-size:12px;text-align:center;min-height:18px}.help-state{color:var(--teal);font-size:12px;text-align:center}.order-area{display:block;color:var(--muted);font-size:9px;margin-top:2px;text-transform:uppercase;letter-spacing:.08em}

.new-dish-panel{margin:8px 0 18px;border:1px solid rgba(214,166,87,.35);background:radial-gradient(circle at 90% 0,rgba(214,166,87,.11),transparent 30%),var(--panel);border-radius:22px;padding:18px}.new-dish-panel.hidden{display:none}.new-dish-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:14px}.new-dish-head small,.studio-category-head small{color:var(--gold2);letter-spacing:.12em}.new-dish-head h2,.studio-category-head h2{margin:4px 0;font-family:'Manrope'}.new-dish-head p{margin:0;color:var(--muted);font-size:12px}.new-dish-head>button{background:transparent;border:1px solid var(--line);color:var(--muted);border-radius:10px;width:38px;height:38px;font-size:20px}.new-dish-layout{display:grid;grid-template-columns:minmax(230px,.75fr) 1.5fr;gap:16px}.new-dish-layout .studio-image{height:auto;min-height:330px;border-radius:16px;overflow:hidden}.upload-zone{position:relative;background:var(--surface-deep)}.upload-zone .image-preview{width:100%;height:100%;object-fit:cover;display:block}.upload-zone:not(.has-image) .image-preview{display:none}.upload-placeholder,.upload-overlay{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:5px;color:var(--muted);padding:20px}.upload-placeholder b,.upload-overlay b{color:var(--text)}.upload-overlay{opacity:0;background:rgba(5,10,13,.75);transition:.2s}.upload-zone.has-image:hover .upload-overlay,.upload-zone.dragging .upload-overlay{opacity:1}.upload-zone.dragging{outline:2px dashed var(--gold2);outline-offset:-7px}.upload-zone.uploading{opacity:.65}.file-input{display:none!important}.choose-image{position:absolute;left:12px;bottom:12px;z-index:3;background:rgba(7,12,16,.9);border:1px solid rgba(214,166,87,.35);color:var(--gold2);border-radius:10px;padding:9px 11px;font-weight:700;cursor:pointer}.advanced-url{margin:-2px 0 12px}.advanced-url summary{cursor:pointer;color:var(--muted);font-size:10px}.advanced-url input{margin-bottom:0!important}.category-filter{display:flex;gap:8px;overflow-x:auto;padding:0 0 16px;scrollbar-width:thin}.category-filter button{white-space:nowrap;background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:9px 13px;cursor:pointer}.category-filter button.active{background:var(--gold);border-color:var(--gold);color:#071014;font-weight:800}.studio-category{margin-bottom:28px}.studio-category-head{display:flex;align-items:end;justify-content:space-between;margin:7px 0 12px}.studio-category-head span{color:var(--muted);font-size:11px}.studio-card .studio-image{height:200px}.studio-card .upload-overlay{pointer-events:none}.studio-card .choose-image{pointer-events:auto}.studio-form select{appearance:auto}.studio-form input[type=number]{font-variant-numeric:tabular-nums}

.routing-note{display:grid;grid-template-columns:auto 1fr;gap:10px 15px;margin:10px 0 20px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:15px}.routing-note b{color:var(--gold2)}.routing-note span{color:var(--muted);font-size:12px;line-height:1.5}.area-creator{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:10px 0 18px;padding:18px;background:var(--panel);border:1px solid rgba(214,166,87,.3);border-radius:18px}.area-creator.hidden{display:none}.area-creator small{color:var(--gold2);letter-spacing:.1em}.area-creator h2{margin:5px 0 0}.area-create-row{display:flex;gap:8px}.area-create-row input,.area-card input{background:var(--field-bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:10px}.area-create-row button,.area-card button{background:transparent;border:1px solid rgba(214,166,87,.32);color:var(--gold2);border-radius:9px;padding:10px 12px;font-weight:700;cursor:pointer}.area-stack{display:grid;gap:18px}.area-card{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:17px}.area-card-head{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding-bottom:15px;border-bottom:1px solid var(--line)}.area-card-head small{display:block;color:var(--gold2);letter-spacing:.1em}.area-card-head .area-name{display:block;margin:5px 0;width:min(360px,100%);font-size:20px;font-weight:800}.area-card-head span{color:var(--muted);font-size:11px}.area-active{font-size:12px;color:var(--text);margin-right:6px}.table-active input{margin-right:6px}.route-rule-grid{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:10px;align-items:end;padding:15px 0;border-bottom:1px solid var(--line)}.route-rule-grid label span{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.route-rule-grid input{width:100%}.table-builder{display:grid;grid-template-columns:1fr 100px 90px 90px auto;align-items:end;gap:9px;padding:15px 0}.table-builder b,.table-builder small{display:block}.table-builder small{color:var(--muted);font-size:10px;margin-top:3px}.table-builder label{font-size:10px;color:var(--muted)}.table-builder input{display:block;width:100%;margin-top:5px}.table-admin-grid{display:grid;gap:7px}.table-admin-row{display:grid;grid-template-columns:100px 120px 1fr auto auto 45px;gap:8px;align-items:end;padding:10px;background:var(--field-bg);border:1px solid var(--line);border-radius:12px}.table-code-box b,.table-code-box a{display:block}.table-code-box b{color:var(--gold2);font-size:18px}.table-code-box a,.qr-mini{color:var(--muted);font-size:9px;text-decoration:none}.table-admin-row label{font-size:9px;color:var(--muted)}.table-admin-row label input{display:block;width:100%;margin-top:4px;padding:8px}.qr-mini{padding:10px 0;text-align:center;border:1px solid var(--line);border-radius:8px}.area-state{display:block;min-height:16px;margin-top:10px}.area-state.ok{color:var(--teal)}.area-state.bad{color:var(--danger)}.area-home-title{margin-top:28px}.qr-card.is-inactive{opacity:.48;filter:saturate(.5)}.qr-card-top p{margin:2px 0 0;color:var(--muted);font-size:10px}.inactive-table{width:min(600px,calc(100% - 36px));margin:80px auto;padding:30px;background:var(--panel);border:1px solid var(--line);border-radius:24px;text-align:center}.inactive-table>small{display:block;margin-top:30px;color:var(--gold2);letter-spacing:.1em}.inactive-table h1{font-family:'Manrope';font-size:34px}.inactive-table p{color:var(--muted);line-height:1.6}.request-grid article{grid-template-columns:80px 1fr auto}

@media(max-width:900px){.new-dish-layout{grid-template-columns:1fr}.new-dish-layout .studio-image{min-height:240px}.route-rule-grid{grid-template-columns:1fr 1fr}.route-save{grid-column:1/-1}.table-builder{grid-template-columns:1fr 1fr 1fr}.table-builder>div{grid-column:1/-1}.table-builder button{grid-column:1/-1}.table-admin-row{grid-template-columns:80px 1fr 1fr}.table-admin-row .table-active,.table-admin-row button,.table-admin-row .qr-mini{align-self:center}.table-admin-row .qr-mini{padding:10px}.area-card-head{grid-template-columns:1fr auto}.area-card-head>button{grid-column:1/-1}}
@media(max-width:560px){.dish-order-row{align-items:flex-end}.inline-qty{grid-template-columns:36px 36px 36px}.feature-price{align-items:flex-end;flex-direction:column}.new-dish-panel{padding:12px}.studio-row{grid-template-columns:1fr}.area-creator{align-items:stretch;flex-direction:column}.area-create-row{width:100%}.area-create-row input{min-width:0;flex:1}.routing-note{grid-template-columns:1fr}.route-rule-grid{grid-template-columns:1fr}.table-builder{grid-template-columns:1fr 1fr}.table-builder>div,.table-builder button{grid-column:1/-1}.table-admin-row{grid-template-columns:1fr 1fr}.table-code-box{grid-column:1/-1}.table-admin-row label:nth-of-type(2){grid-column:1/-1}.area-card-head{grid-template-columns:1fr}.area-card-head>button{grid-column:auto}.request-grid article{grid-template-columns:70px 1fr auto}}
.table-routing-builder{display:grid;grid-template-columns:1.4fr repeat(2,minmax(140px,.7fr));gap:12px;align-items:end;margin:14px 0;padding:16px;border:1px solid rgba(214,166,87,.22);background:rgba(214,166,87,.035);border-radius:16px}.table-routing-copy{grid-column:1/-1}.table-routing-copy b,.table-routing-copy small{display:block}.table-routing-copy b{color:var(--gold2)}.table-routing-copy small{color:var(--muted);margin-top:4px;line-height:1.5}.table-routing-builder label{color:var(--muted);font-size:10px;font-weight:700}.table-routing-builder input,.table-routing-builder select{display:block;width:100%;margin-top:6px;background:var(--field-bg);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:10px;font-family:inherit}.table-routing-actions{display:flex;gap:8px;align-items:center}.table-routing-actions button{border:0;border-radius:10px;padding:11px 13px;font-weight:800;background:var(--gold);color:#071014}.table-routing-actions .ghost-action{background:var(--field-bg);color:var(--text);border:1px solid var(--line)}@media(max-width:760px){.table-routing-builder{grid-template-columns:1fr}.table-routing-copy{grid-column:auto}.table-routing-actions{flex-wrap:wrap}}

/* Gustara V4 / Step 3 additions */
.service-filter-bar{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;margin:14px 0}.service-filter-bar input,.service-filter-bar select,.guest-table-mode select{min-height:44px;border:1px solid rgba(255,255,255,.12);background:#151719;color:#f5f3ee;border-radius:10px;padding:0 12px}.move-table-btn{min-height:40px;border-radius:9px;border:1px solid rgba(255,255,255,.15);background:transparent;color:inherit;padding:0 12px}.table-select-shell{max-width:760px;margin:0 auto;padding:34px 18px 60px}.table-select-shell h1{font-size:clamp(2rem,8vw,4rem);margin:.2em 0}.table-picker>button{width:100%;min-height:52px;margin-top:18px;border:0;border-radius:12px;font-weight:800;color:#0c1012;background:linear-gradient(135deg,#f0c97e,#ad762c);cursor:pointer;font:inherit;font-size:15px}.table-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:24px}.table-choice-grid label input{position:absolute;opacity:0}.table-choice-grid label span{display:flex;flex-direction:column;gap:4px;border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:16px;min-height:72px}.table-choice-grid label input:checked+span{outline:2px solid currentColor}.guest-table-mode{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0 18px}.route-preview{border:1px solid rgba(255,255,255,.10);border-radius:10px;padding:12px;margin:8px 0}.route-preview p{margin:5px 0 10px;font-size:.84rem;opacity:.72}.route-preview-list{display:flex;gap:8px;flex-wrap:wrap}.route-preview-list span{font-size:.76rem;padding:7px 9px;border-radius:999px;background:rgba(255,255,255,.06)}@media(max-width:700px){.service-filter-bar{grid-template-columns:1fr}.guest-table-mode{align-items:stretch;flex-direction:column}}

/* Gustara V4.4 Property Setup polish */
.area-card input,.area-card select,.area-create-row input{box-sizing:border-box;min-width:0;max-width:100%;}
.area-card select{background:var(--field-bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:10px;width:100%;margin-top:5px;}
.optional-area-builder{grid-template-columns:minmax(220px,1fr) minmax(180px,320px) auto;}
.service-point-builder{grid-template-columns:minmax(220px,1fr) 120px minmax(150px,220px) 90px 90px auto;}
.table-admin-row{grid-template-columns:100px 110px minmax(160px,1fr) minmax(160px,1fr) 52px;}
.table-admin-row input:disabled{opacity:.82;color:var(--text);-webkit-text-fill-color:var(--text);}
@media(max-width:900px){.optional-area-builder,.service-point-builder{grid-template-columns:1fr 1fr 1fr}.optional-area-builder>div,.service-point-builder>div{grid-column:1/-1}.optional-area-builder button,.service-point-builder button{grid-column:1/-1}.table-admin-row{grid-template-columns:90px 100px 1fr}.table-admin-row label:nth-of-type(3){grid-column:1/-1}}
@media(max-width:560px){.optional-area-builder,.service-point-builder{grid-template-columns:1fr 1fr}.optional-area-builder>div,.service-point-builder>div,.optional-area-builder button,.service-point-builder button{grid-column:1/-1}.table-admin-row{grid-template-columns:1fr 1fr}.table-admin-row label:nth-of-type(2),.table-admin-row label:nth-of-type(3){grid-column:1/-1}}

/* Gustara V4.5 Property Setup rebuild */
.property-create-card{display:grid;grid-template-columns:minmax(220px,1fr) minmax(320px,520px);align-items:end}.property-create-card>small{grid-column:1/-1;margin-top:8px}.property-rc-card{overflow:hidden}.property-rc-head{display:grid;grid-template-columns:minmax(260px,1fr) auto auto auto;gap:14px;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line)}.property-rc-title>small{display:block;color:var(--gold2);letter-spacing:.1em}.property-rc-title>.rc-name{display:block;width:min(460px,100%);font-size:20px;font-weight:800;margin:6px 0 8px}.rc-meta{display:flex;flex-wrap:wrap;gap:7px}.rc-meta span{display:inline-flex;gap:5px;align-items:center;padding:5px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:10px}.rc-meta b{color:var(--text)}.property-builder{display:grid;align-items:end;gap:10px;padding:16px 0;border-bottom:1px solid var(--line)}.property-builder-copy b,.property-builder-copy small{display:block}.property-builder-copy small{color:var(--muted);font-size:10px;margin-top:4px;line-height:1.4}.property-builder label{min-width:0}.property-builder label>span{display:block;margin-bottom:5px;color:var(--muted);font-size:10px}.property-builder input,.property-builder select{display:block;width:100%;height:42px;box-sizing:border-box;margin:0;background:var(--field-bg);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:0 10px;font:inherit}.property-builder button{height:42px}.optional-area-builder-v45{grid-template-columns:minmax(260px,1fr) minmax(180px,320px) auto}.service-point-builder-v45{grid-template-columns:minmax(240px,1.35fr) 120px minmax(155px,.8fr) 84px 84px auto}.compact-note{margin:14px 0}.service-point-list{display:grid;gap:8px;margin-top:14px}.service-point-row{display:grid;grid-template-columns:90px 100px minmax(150px,1fr) minmax(140px,1fr) 48px auto auto;gap:9px;align-items:center;padding:10px 11px;background:var(--field-bg);border:1px solid var(--line);border-radius:12px}.service-point-code b,.service-point-code a{display:block}.service-point-code b{color:var(--gold2);font-size:19px}.service-point-code a{color:var(--muted);font-size:9px;text-decoration:none;margin-top:2px}.service-point-value{min-width:0;padding:3px 0}.service-point-value small{display:block;color:var(--muted);font-size:8px;letter-spacing:.08em;margin-bottom:3px}.service-point-value span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);font-size:12px}.danger-ghost{border:1px solid rgba(255,115,115,.35)!important;color:#ff9d9d!important;background:transparent!important}.empty-service-points{padding:17px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:12px;text-align:center}.rc-state{display:block;min-height:18px;margin-top:9px;color:var(--teal)}
@media(max-width:980px){.property-create-card{grid-template-columns:1fr}.property-rc-head{grid-template-columns:1fr auto}.property-rc-head>button{grid-column:1/-1}.optional-area-builder-v45{grid-template-columns:1fr 1fr}.service-point-builder-v45{grid-template-columns:1fr 1fr 1fr}.property-builder-copy{grid-column:1/-1}.property-builder>button{grid-column:1/-1}.service-point-row{grid-template-columns:80px 90px 1fr 1fr}.service-point-row>.qr-mini,.service-point-row>.danger-ghost{width:100%}}
@media(max-width:620px){.area-create-row{flex-direction:column}.property-rc-head{grid-template-columns:1fr}.property-rc-head>button{grid-column:auto}.optional-area-builder-v45,.service-point-builder-v45{grid-template-columns:1fr 1fr}.property-builder-copy,.property-builder>button{grid-column:1/-1}.service-point-row{grid-template-columns:1fr 1fr}.service-point-code{grid-column:1/-1}.service-point-value:nth-of-type(3),.service-point-value:nth-of-type(4){grid-column:1/-1}}

/* Gustara V4.6 Back of House and printer routing */
.staff-topbar{display:grid;grid-template-columns:minmax(240px,.7fr) minmax(360px,1.3fr);gap:18px;align-items:stretch;margin:0 0 24px}
.revenue-filter,.system-status,.printer-create-card,.printer-row,.routing-builder{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);border-radius:20px;padding:18px}
.revenue-filter label{display:grid;gap:8px}.revenue-filter span,.printer-create-grid span,.printer-row label span,.routing-rule-create span,.routing-scope label>span{font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7;display:block}
.revenue-filter select{min-height:48px}
.system-status{display:flex;gap:14px;align-items:center}.system-status small{display:block;letter-spacing:.08em;opacity:.65}.system-status b{display:block;font-size:20px;margin:2px 0}.system-status p{margin:0;opacity:.75}.system-dot{width:14px;height:14px;border-radius:50%;background:var(--status-ok);box-shadow:0 0 0 6px rgba(100,209,138,.12);flex:0 0 auto}.system-status-attention .system-dot{background:var(--status-attention);box-shadow:0 0 0 6px rgba(240,180,95,.12)}.system-status-issue .system-dot{background:var(--status-issue);box-shadow:0 0 0 6px rgba(239,111,111,.12)}
.staff-empty{padding:22px;border:1px dashed rgba(255,255,255,.12);border-radius:16px;opacity:.7}
.printer-create-card{margin-bottom:26px}.printer-create-card h2{margin:.2rem 0}.printer-create-card p{opacity:.72;max-width:760px}.printer-create-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;align-items:end}.printer-create-grid label,.printer-row label,.routing-rule-create label,.routing-scope label{display:grid;gap:7px}.printer-create-grid button,.printer-row button,.routing-rule-create button{min-height:46px}
.routing-scope select{min-height:44px;padding:0 12px;background:var(--field-bg);color:var(--text);border:1px solid var(--line);border-radius:var(--control-radius);font:inherit;font-size:14px}
.printer-list{margin:26px 0}.printer-row{display:grid;grid-template-columns:1.1fr 1fr .4fr auto auto;gap:12px;align-items:end;margin-bottom:12px}.printer-active{display:flex!important;align-items:center;gap:8px;min-height:46px}.printer-state{grid-column:1/-1;min-height:16px}
.routing-builder{margin-top:28px}.routing-rule-create{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:12px;align-items:end;margin:18px 0}.routing-rule-list{display:grid;gap:10px;margin-top:16px}.routing-rule-list article{display:grid;grid-template-columns:1.15fr 1fr 1fr auto 1.15fr auto;gap:14px;align-items:center;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}.routing-rule-list small{display:block;opacity:.58;font-size:10px;letter-spacing:.07em}.routing-rule-list b{font-size:14px}.route-arrow{font-size:22px;opacity:.6}
@media(max-width:980px){.staff-topbar{grid-template-columns:1fr}.printer-create-grid,.printer-row,.routing-rule-create,.routing-rule-list article{grid-template-columns:1fr 1fr}.route-arrow{display:none}}
@media(max-width:620px){.printer-create-grid,.printer-row,.routing-rule-create,.routing-rule-list article{grid-template-columns:1fr}.printer-state{grid-column:auto}}

/* Gustara V4.8 Step 3 completion candidate */
.service-layout-grid{display:grid;gap:16px;margin-top:18px}.service-drop-zone{border:1px dashed rgba(255,255,255,.2);border-radius:16px;padding:14px;min-height:90px;background:rgba(255,255,255,.025)}.area-zone{border-style:solid}.drop-zone-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:10px}.drop-zone-head input.area-name{font-size:1.05rem;font-weight:700}.area-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.draggable-point{cursor:grab}.draggable-point:active{cursor:grabbing}.inactive-point{opacity:.52}.service-active{white-space:nowrap}.system-status summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:12px}.system-status summary::-webkit-details-marker{display:none}.system-status summary em{font-size:.72rem;opacity:.65;font-style:normal}.system-detail{margin-top:12px;padding-top:10px;border-top:1px solid rgba(255,255,255,.1)}.system-detail>div{display:flex;justify-content:space-between;gap:16px;padding:7px 0;flex-wrap:wrap}.system-detail>div>b,.system-detail>div>span{min-width:0;overflow-wrap:break-word}.system-detail>div>span{text-align:right}.order-status-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.order-status-filters a{padding:8px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.12);text-decoration:none}.order-status-filters a.active{background:rgba(255,255,255,.12);font-weight:700}.status-border-new{border-top:3px solid var(--status-new)}.status-border-preparing{border-top:3px solid var(--status-attention)}.status-border-cooking{border-top:3px solid var(--status-cooking)}.status-border-ready{border-top:3px solid var(--status-ok)}.status-border-completed{border-top:3px solid var(--status-neutral)}.status-border-cancelled{border-top:3px solid var(--status-cancelled)}.routing-scope{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;align-items:end}.bulk-routing-line{display:grid;grid-template-columns:1fr minmax(200px,.35fr) auto;gap:14px;align-items:center;padding:14px;margin:12px 0;border:1px solid rgba(255,255,255,.1);border-radius:14px}.category-ticks{display:flex;gap:8px 14px;flex-wrap:wrap}.category-ticks label{display:flex;align-items:center;gap:5px}.routing-test-card{margin-top:20px}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:18px 0}.metric-grid article{padding:18px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(255,255,255,.03)}.metric-grid article b{display:block;font-size:1.6rem;margin-top:6px}@media(max-width:800px){.bulk-routing-line{grid-template-columns:1fr}.drop-zone-head{align-items:flex-start;flex-direction:column}}

/* Gustara V4.9 printer health */
.printer-row{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.printer-health{grid-column:span 2;display:flex;gap:11px;align-items:center;padding:10px 12px;border:1px solid rgba(255,255,255,.1);border-radius:13px;background:rgba(255,255,255,.025);min-height:62px}.printer-health-dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;background:var(--status-neutral);box-shadow:0 0 0 5px rgba(140,150,168,.1)}.printer-health small,.printer-health b,.printer-health em,.printer-health span{display:block}.printer-health b{font-size:14px}.printer-health em,.printer-health-meta{font-size:10px;opacity:.7;font-style:normal;margin-top:2px}.health-online .printer-health-dot{background:var(--status-ok);box-shadow:0 0 0 5px rgba(100,209,138,.12)}.health-attention .printer-health-dot{background:var(--status-attention);box-shadow:0 0 0 5px rgba(240,180,95,.12)}.health-offline .printer-health-dot{background:var(--status-issue);box-shadow:0 0 0 5px rgba(239,111,111,.12)}.health-disabled .printer-health-dot{background:var(--status-neutral)}@media(max-width:1100px){.printer-row{grid-template-columns:1fr 1fr}.printer-health{grid-column:1/-1}}@media(max-width:620px){.printer-row{grid-template-columns:1fr}.printer-health{grid-column:auto}}

/* Gustara V5.1 checkout, consent, archive and live-order additions */
.checkout-contact,.settings-card{border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:16px;margin:16px 0;background:rgba(255,255,255,.04)}
.marketing-consent,.setting-toggle{display:flex;gap:10px;align-items:flex-start;margin:14px 0}.marketing-consent input,.setting-toggle input{margin-top:4px}.marketing-consent span{display:flex;flex-direction:column;gap:4px}.privacy-note{opacity:.7}.archive-toggle{display:flex;justify-content:flex-end;margin:12px 0}.archived-rc{opacity:.72;border-style:dashed}.order-received{display:block;margin-top:4px;opacity:.8}.settings-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.settings-stats>div{padding:14px;border-radius:14px;background:rgba(255,255,255,.05);display:flex;flex-direction:column}.settings-stats b{font-size:1.5rem}

/* Gustara V5.2 management navigation, receipt history and unified checkout */
.manage-module-nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;margin:-24px -24px 24px;padding:12px 24px;background:rgba(7,12,16,.96);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.manage-module-nav a{color:var(--muted);text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap}.manage-module-nav a:hover{color:var(--gold2)}.manage-brand{color:var(--gold2)!important;font-size:13px!important}.manage-primary{display:flex;gap:6px;flex:1;overflow:hidden}.manage-primary a{padding:9px 10px;border-radius:9px}.manage-primary a:hover{background:var(--control-bg)}.manage-more{position:relative}.manage-more summary{list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:9px 11px;color:var(--gold2);font-weight:800;font-size:12px}.manage-more summary::-webkit-details-marker{display:none}.manage-more>div{position:absolute;right:0;top:44px;width:270px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:0 20px 50px rgba(0,0,0,.4)}.manage-more>div a{display:block;padding:10px;border-radius:8px}.manage-more>div a:hover{background:var(--control-bg)}.manage-more form{border-top:1px solid var(--line);margin-top:5px;padding-top:7px}.manage-more button{width:100%;background:transparent;border:0;color:var(--gold2);text-align:left;padding:10px;cursor:pointer}.quick-control-grid .hero-control{grid-row:auto;min-height:190px}.management-attention{margin-top:18px;border:1px solid rgba(240,160,93,.25);background:#11181c;border-radius:16px;padding:16px}.management-attention>small{color:var(--gold2);font-weight:800;letter-spacing:.12em}.management-attention p{margin:8px 0;color:var(--text)}
.settings-card select,.history-search input,.history-search select{width:100%;min-height:44px;background:var(--field-bg);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:0 11px;font:inherit;font-size:14px}.history-search{display:grid;grid-template-columns:1fr auto auto;gap:9px;margin:0 0 18px}.history-search button,.history-search a,.history-list button,.receipt-history-grid button,.receipt-print-btn{background:transparent;color:var(--gold2);border:1px solid rgba(214,166,87,.32);border-radius:9px;padding:9px 11px;text-decoration:none;cursor:pointer;font-weight:700}.history-list{display:grid;gap:9px}.history-list article{display:grid;grid-template-columns:1fr .8fr 1.3fr;gap:15px;align-items:center;padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.payments-history-list article{grid-template-columns:1.2fr 1fr .8fr .9fr 1fr}.history-list article>div{min-width:0}.history-list small,.history-list span{display:block;color:var(--muted);font-size:10px}.history-list b{display:block;margin:3px 0;overflow-wrap:anywhere}.history-list button{margin-top:7px}.recent-receipts{margin-top:28px}.receipt-history-grid{display:grid;gap:8px}.receipt-history-grid article{display:grid;grid-template-columns:1fr .8fr auto;align-items:center;gap:10px;background:var(--field-bg);border:1px solid var(--line);border-radius:12px;padding:11px}.receipt-history-grid small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.payment-method-chips{display:flex;flex-wrap:wrap;gap:8px;margin:13px 0}.payment-method-chips span{border:1px solid var(--line);border-radius:999px;padding:7px 10px;color:var(--text);font-size:11px}.payment-attempt{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.mock-payment{margin-top:20px;padding:14px;border-radius:13px;background:#091015;border:1px solid var(--line)}.mock-payment>small{color:var(--gold2);font-weight:800;letter-spacing:.12em}.retry-panel{margin-top:16px;border:1px solid rgba(240,160,93,.28);border-radius:14px;padding:15px}.retry-panel button{width:100%;background:var(--gold);border:0;border-radius:10px;padding:12px;font-weight:800;color:#071014}.unified-pay{min-height:60px}.unified-pay small{display:block;opacity:.75;margin-top:3px}
@media(max-width:900px){.manage-primary a:nth-last-child(-n+2){display:none}.history-list article{grid-template-columns:1fr 1fr}.history-list article>div:last-child{grid-column:1/-1}}
@media(max-width:650px){.manage-module-nav{margin:-16px -16px 18px;padding:10px 16px}.manage-primary{display:none}.manage-more{margin-left:auto}.manage-more summary span{display:none}.history-search{grid-template-columns:1fr auto}.history-search a{grid-column:1/-1;text-align:center}.history-list article,.receipt-history-grid article{grid-template-columns:1fr}.history-list article>div:last-child{grid-column:auto}.receipt-history-grid button{width:100%}}

/* Gustara Beta: employee access */
/* auto-fit rather than a fixed column count: the row's child count varies
   (the verified/unverified badge only renders when the employee has an
   email), so a fixed grid-template-columns list silently overflows onto
   its own wrapped row whenever that optional child is present - caught by
   browser inspection, not by any template-rendering test. */
.employee-row{grid-template-columns:repeat(auto-fit,minmax(95px,1fr));align-items:center}
/* .printer-create-grid's own fixed 4-column layout suits printers.html's
   4-field form; the employee-add form has more fields, so it gets its own
   auto-fit override rather than forcing every user of the shared class
   onto one column count (the same overflow class of bug as above). */
.employee-create-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.employee-create-grid input[id="employeePin"]{letter-spacing:.08em}
.employee-row>div small,.employee-row>div b{display:block}
.employee-row small.printer-health-meta{grid-column:1/-1;font-size:12px;opacity:1;margin-top:0}
.employee-row>div small{color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.employee-row>div b{font-size:16px;margin-top:2px}
.employee-row .employee-name,.employee-row .employee-email{background:var(--field-bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 10px;min-width:0}
.employee-row a{color:var(--gold2)}
.employee-row .printer-state{grid-column:1/-1}
@media(max-width:900px){.employee-row{grid-template-columns:1fr 1fr}.employee-row .printer-state{grid-column:1/-1}}
.report-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;align-items:end;margin:0 0 22px}
.report-filters label small{text-transform:none;letter-spacing:0;font-size:9px}
.report-filters label{display:grid;gap:6px}
.report-actions{display:flex;gap:6px;align-items:center;color:var(--gold2);font-size:12px}
.report-actions a{color:var(--gold2);text-decoration:none}
.report-actions a:hover{text-decoration:underline}
.refund-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr)) auto;gap:10px;align-items:end;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.report-filters span{color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.report-filters input,.report-filters select{min-height:42px;background:var(--field-bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:0 10px;font:inherit}
.report-filters button{min-height:42px;background:var(--gold);border:0;color:#071014;border-radius:9px;padding:0 16px;font-weight:800;cursor:pointer}
.report-filters a{align-self:center;color:var(--muted);font-size:12px}
@media(max-width:980px){.report-filters{grid-template-columns:1fr 1fr}}
.settings-card>summary{cursor:pointer;list-style:none}.settings-card>summary::-webkit-details-marker{display:none}.settings-card>summary::before{content:'▸ ';color:var(--gold2)}.settings-card[open]>summary::before{content:'▾ '}

/* Gustara Beta: trial-readiness pass */
.pay-stack .unified-pay{flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center;min-height:66px;background:linear-gradient(135deg,#f0c97e,#ad762c);color:#0c1012;border:0;box-shadow:0 12px 30px rgba(214,166,87,.22)}
.pay-stack .unified-pay #payButtonLabel{font-size:17px;letter-spacing:.01em}
.pay-stack .unified-pay small{color:rgba(12,16,18,.68);font-weight:600}
.pay-stack .unified-pay:disabled{opacity:.6}
.pagination-summary{color:var(--muted);font-size:12px;margin:-10px 0 12px}
.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px}
.pagination a{color:var(--text);text-decoration:none;border:1px solid var(--line);padding:9px 15px;border-radius:10px;font-size:13px}
.pagination a.disabled{opacity:.35;pointer-events:none}
.pagination span{color:var(--muted);font-size:12px}
.order-export-bar{display:flex;gap:10px;margin:0 0 22px;flex-wrap:wrap}
.order-export-bar a.order-export-btn{background:var(--gold);color:#071014;border:0;border-radius:9px;padding:12px 18px;font-weight:800;font-size:13px;text-decoration:none;display:inline-block}
.order-export-bar a.order-export-btn:hover{opacity:.9}
.qr-card-actions{display:flex;gap:8px;margin-top:8px}
.qr-card-actions a,.qr-card-actions button{flex:1;text-align:center;color:var(--text);text-decoration:none;border:1px solid var(--line);padding:9px 8px;border-radius:11px;background:transparent;font-size:12px;cursor:pointer;font-family:inherit}
.connectivity-banner{position:fixed;top:0;left:0;right:0;z-index:60;background:#1a1408;border-bottom:1px solid rgba(214,166,87,.35);color:var(--gold2);text-align:center;font-size:12px;font-weight:700;padding:10px 16px;transform:translateY(-100%);transition:transform .25s}
.connectivity-banner.show{transform:translateY(0)}
.modifier-group{margin:16px 0;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--field-bg2)}
.modifier-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.modifier-group-head b{font-size:13px}
.required-tag{color:var(--gold2);font-weight:700;text-transform:uppercase;font-size:10px;letter-spacing:.04em}
.optional-tag{color:var(--muted);text-transform:uppercase;font-size:10px;letter-spacing:.04em}
.modifier-options{display:flex;flex-direction:column;gap:8px}
.modifier-option{display:flex;align-items:center;gap:10px;font-size:13px;cursor:pointer;border:1px solid transparent;border-radius:10px;padding:6px 8px;margin:0 -8px}
.modifier-option.is-checked{border-color:var(--gold);background:rgba(214,166,87,.1)}
.modifier-option input{accent-color:var(--gold);width:16px;height:16px;flex-shrink:0}
.modifier-option span{flex:1}
.modifier-group-preparation{border-color:var(--gold)}
.modifier-group-hint{font-size:12px;color:var(--muted);margin:-4px 0 8px}
.modifier-group-preparation .modifier-group-head b::before{content:"🔥 "}
.basket-line-mods{display:flex;flex-direction:column;gap:2px;margin-top:2px}
.basket-line-mods small{color:var(--muted);font-size:11px}
.basket-line-mods small.mod-preparation{color:var(--gold2);font-weight:600}
.venue-context{margin-top:2px}
.venue-tagline{margin-top:4px;opacity:.85}
.basket-subhead{color:var(--muted);font-size:13px;margin:4px 0 0}
.basket-line-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.basket-line-actions{display:flex;gap:6px;flex-shrink:0}
.basket-edit-btn{flex-shrink:0;background:transparent;border:1px solid var(--line);color:var(--gold2);border-radius:999px;padding:4px 11px;font-size:11px;font-weight:700;cursor:pointer}
.basket-upsell{margin:18px 0;padding:14px;border-radius:15px;border:1px solid var(--line);background:var(--field-bg2)}
.upsell-title{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold2);margin-bottom:10px}
.upsell-list{display:flex;gap:10px;overflow-x:auto;padding-bottom:2px}
.upsell-card{position:relative;flex:0 0 132px;border:1px solid var(--line);border-radius:13px;background:var(--control-bg);padding:10px;display:flex;flex-direction:column;gap:6px}
.upsell-card img{width:100%;height:70px;object-fit:cover;border-radius:9px}
.upsell-dismiss{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;border:0;background:rgba(7,10,14,.65);color:var(--text);font-size:13px;line-height:20px;text-align:center;cursor:pointer;padding:0}
.upsell-info b{display:block;font-size:12px;line-height:1.3}
.upsell-info small{color:var(--muted);font-size:11px}
.upsell-add{background:var(--gold);color:#071014;border:0;border-radius:9px;padding:7px;font-size:11px;font-weight:800;cursor:pointer}
.payment-summary>div{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:6px 0;color:var(--muted)}
.payment-summary b{color:var(--text);text-align:right;overflow-wrap:anywhere;max-width:60%}
.payment-summary .grand{border-top:1px solid var(--line);margin-top:4px;padding-top:12px;font-size:19px;color:var(--text)}
.payment-summary .grand b{color:var(--gold2)}
.ghost.selected{border-color:var(--gold);color:var(--gold2);background:rgba(214,166,87,.12)}
.call-staff-state{text-align:center;font-size:12px;color:var(--teal);margin:8px 0 0}
.call-staff-state.is-error{color:var(--danger)}
#helpCallStaffBtn.selected{opacity:.7;cursor:default}

/* Batch 3: accessible dialogs. Every overlay in the app now uses a real
   <dialog> element instead of a plain <div class="modal"> toggled by
   opacity/pointer-events - a closed <dialog> is display:none by the
   browser's own UA stylesheet (genuinely hidden/inert, not just
   invisible), and showModal()/close() give native focus-trap, top-layer
   stacking and Escape-to-close for free. This rule only ever paints once
   a dialog has its `open` attribute (the only time a <dialog> renders a
   box at all), so it safely replaces the old .modal/.modal.open pair. */
dialog.modal{position:fixed;inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;padding:0;border:0;background:transparent;color:inherit}
dialog.modal[open]{z-index:40;display:flex;align-items:end}
dialog.modal::backdrop{background:rgba(0,0,0,.7)}
@supports (backdrop-filter:blur(1px)){dialog.modal::backdrop{backdrop-filter:blur(12px)}}
.modal-card:focus{outline:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[role="status"],[role="alert"]{display:block}

/* Batch 3: touch-target and cascade fixes named by the accessibility
   audit - .mini-step button was being shrunk to 26px by a later,
   same-specificity rule; .basket-edit-btn had no explicit height at all. */
.mini-step button{width:36px;height:36px;font-size:16px}
.basket-edit-btn{min-height:36px;display:inline-flex;align-items:center}
.inline-qty.compact{grid-template-columns:36px 36px 36px;min-height:36px}
.inline-qty.compact button{height:36px}
.dish-card:focus-visible,.feature-card:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:20px}
.order-actions{display:flex;gap:8px;flex-wrap:wrap}
.primary-action,.more-actions-btn{min-height:40px;border-radius:9px;padding:0 14px;font-weight:700;cursor:pointer;border:1px solid var(--line);background:var(--control-bg);color:var(--text)}
.primary-action{background:var(--gold);color:#071014;border-color:var(--gold)}

/* Batch 3: mobile safe areas (notch / home indicator / rounded corners) -
   only ever adds extra inset on devices that report one; env() resolves
   to 0 everywhere else, so this is a no-op on non-notched devices. */
.basket-bar{bottom:calc(16px + env(safe-area-inset-bottom))}
.modal-content,.basket-sheet,.help-sheet,.action-sheet{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
.connectivity-banner{padding-top:calc(10px + env(safe-area-inset-top))}
.g-hero,.g-shell,.admin-shell{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}

/* Batch 3: respect prefers-reduced-motion - disables the global smooth
   anchor-scroll and every decorative transition/animation in the app
   (modal open, quick-add pulse, card hover-lift, offline-banner slide)
   for users who have asked their OS not to animate things. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* Batch 3: text-legibility floor - raises the smallest, most operationally
   relevant text (order status, allergen/dietary safety tags, the table
   orb caption) off the sub-10px floor the audit found. Deliberately not a
   blanket resize of every 10-11px "kicker" micro-label in the app - see
   CLAUDE.md/the Batch 3 report for that scoping decision. */
.status-chip{font-size:11px}
.tag{font-size:11px}
.table-orb small{font-size:10px}
.service-point-value small{font-size:10px}

/* Batch 3: staff busy-service layout - a real two-column step between
   the existing 3-column desktop grid and the 1-column phone collapse,
   plus letting an order-card's footer wrap instead of overflowing. */
.order-foot{flex-wrap:wrap;gap:8px}
@media(max-width:1100px) and (min-width:781px){.order-grid{grid-template-columns:repeat(2,1fr)}}

/* Batch 3: wide report/history tables scroll horizontally in their own
   container instead of overflowing the page. */
.table-scroll{overflow-x:auto}
.table-scroll table{min-width:640px}

/* Batch 3: a fixed-width inline grid-template-columns (management
   filter rows authored before the shared .report-filters breakpoint
   existed) always wins over that breakpoint regardless of viewport
   width. .report-filters-fixed keeps the same visual column intent on
   desktop but collapses like every other .report-filters row below
   980px, and stacks fully below 560px. */
.report-filters.report-filters-fixed{grid-template-columns:var(--rf-cols,repeat(auto-fit,minmax(140px,1fr)))}
@media(max-width:980px){.report-filters.report-filters-fixed{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.report-filters.report-filters-fixed{grid-template-columns:1fr}}
.settings-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:560px){.settings-stats{grid-template-columns:1fr}}

/* Batch 3: a small transient toast for Staff-surface actions that used to
   be a browser alert() (receipt printing, order-status advance) - fixed
   bottom, off-screen until .show, ARIA role="alert" on the element
   itself (not toggled) so its text is announced the moment it changes. */
.staff-toast{position:fixed;left:50%;bottom:16px;transform:translate(-50%,140%);z-index:70;max-width:min(420px,calc(100% - 32px));background:#171008;border:1px solid rgba(214,166,87,.4);color:var(--text);border-radius:13px;padding:12px 16px;font-size:13px;font-weight:700;box-shadow:0 18px 40px rgba(0,0,0,.4);transition:transform .2s}
.staff-toast.show{transform:translate(-50%,0)}
.staff-toast.is-error{border-color:rgba(240,111,111,.5);color:#ffb4b4}

/* Batch 3: one-time credential reveal dialog (employee PIN create/reset). */
.credential-dialog .modal-card{max-width:420px;border-radius:22px;margin:auto}
.credential-value{display:flex;align-items:center;gap:10px;background:var(--field-bg2);border:1px solid rgba(214,166,87,.4);border-radius:13px;padding:14px 16px;margin:14px 0}
.credential-value b{font-size:26px;letter-spacing:.12em;color:var(--gold2);flex:1}
.credential-copy-btn{background:transparent;border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 12px;font-weight:700;cursor:pointer}
.credential-warning{color:var(--danger);font-size:13px;line-height:1.5}
.credential-ack{display:flex;gap:8px;align-items:flex-start;margin:14px 0;font-size:13px}

/* Batch 3: typed-confirmation guard for genuinely permanent purges. */
.typed-confirm input{width:100%;margin-top:8px}

/* Batch 3: aria-current styling for the management nav, and de-emphasised
   duplicate entries inside "More" that already appear in the primary bar. */
.manage-primary a[aria-current="page"],.manage-more a[aria-current="page"]{color:var(--gold2);background:rgba(214,166,87,.12)}
.duplicate-link{color:var(--muted)}
.manage-more-heading{display:block;margin:8px 10px 2px;padding-top:8px;border-top:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}

/* Batch 3: printer configuration UX grouping. */
.printer-section-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.printer-section-tabs button{background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:9px 14px;cursor:pointer;font-weight:700;font-size:12px}
.printer-section-tabs button.active{background:var(--gold);border-color:var(--gold);color:#071014}
.printer-field-group{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:12px}
.printer-field-group>small{display:block;color:var(--gold2);letter-spacing:.1em;margin-bottom:8px}
.printer-row label>span,.printer-create-grid label>span{display:block;color:var(--muted);font-size:10px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}
.routing-preview{border:1px solid rgba(214,166,87,.3);background:rgba(214,166,87,.05);border-radius:14px;padding:14px;margin:14px 0}
.routing-preview h4{margin:0 0 8px}
.routing-preview-list{display:grid;gap:6px;font-size:13px}
.routing-preview-list .added{color:var(--teal)}
.routing-preview-list .removed{color:var(--danger);text-decoration:line-through}
.routing-preview-unrouted{color:var(--danger);font-weight:700;margin-top:8px}

/* Batch 4: dynamic menu categories - Category Management panel (Menu
   Studio) and drag-handle/reorder affordances shared by category and
   item reordering. A drag handle is the ONLY draggable element (never
   the whole card/row) so dragging never interferes with text selection,
   form inputs, checkboxes or buttons elsewhere in the same card - the
   accessible Move Up/Down buttons remain a first-class, always-present
   alternative, never a fallback-only afterthought. */
.category-manage-list{display:grid;gap:10px;margin-top:14px}
.category-manage-row{display:grid;grid-template-columns:auto 1.4fr 1.2fr auto auto auto auto auto;gap:12px;align-items:end;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}
.category-manage-row .save-state{grid-column:1/-1}
.category-manage-row.dragging{opacity:.4}
.category-manage-row label{display:grid;gap:6px}
.category-manage-row label>span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.category-manage-row .cat-name{background:var(--field-bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 10px}
.category-item-count{font-size:12px;color:var(--muted);white-space:nowrap;align-self:center}
.category-order-controls{display:flex;gap:4px}
.drag-handle{cursor:grab;font-size:18px;line-height:1;padding:6px;user-select:none;color:var(--muted);align-self:center}
.drag-handle:active{cursor:grabbing}
@media(max-width:900px){.category-manage-row{grid-template-columns:1fr 1fr}}
.card-order-controls{display:flex;align-items:center;gap:4px;padding:6px 8px;background:rgba(255,255,255,.03);border-bottom:1px solid var(--line)}
.studio-card.dragging{opacity:.4}

/* Presentation rhythm: retain the existing palette and component identities.
   These shared dimensions replace accidental differences, not interaction rules. */
:root{
  --page-gutter:18px;
  --space-field:8px;
  --space-card:16px;
  --space-section:32px;
  --control-height:44px;
  --control-radius:10px;
  --focus-color:var(--gold2);
}
button,input,select,textarea{font-family:inherit}
input,select,textarea{min-width:0}
input[type="checkbox"],input[type="radio"]{accent-color:var(--gold)}
.admin-dark select,.admin-dark input[type="date"]{color-scheme:dark}
.admin-header>div,.admin-section-title>div,.studio-row>*,.report-filters>*,
.category-manage-row>*,.printer-create-grid>*,.printer-row>*,.settings-grid>*{min-width:0}
.admin-header h1,.admin-section-title h2,.section-title h2,.modal-head h2,
.welcome h1,.dish-card h3,.feature-copy h3{overflow-wrap:anywhere}
.admin-header small{display:block;margin-top:var(--space-field);line-height:1.5}
.admin-header p,.admin-section-title p{line-height:1.55}
.admin-section-title{gap:var(--space-card);flex-wrap:wrap}
.admin-section-title h2,.section-title h2{line-height:1.2}
.admin-header nav,.report-actions,.order-foot{gap:var(--space-field);flex-wrap:wrap}
.manage-module-nav{
  margin-left:calc(-1 * var(--page-gutter));
  margin-right:calc(-1 * var(--page-gutter));
  padding-left:var(--page-gutter);
  padding-right:var(--page-gutter);
  gap:12px;
}
.manage-primary{min-width:0}
.manage-more{flex-shrink:0}
.manage-more>div{max-width:calc(100vw - 2 * var(--page-gutter))}
.manage-primary a,.manage-more summary{min-height:var(--control-height);display:flex;align-items:center}
.staff-primary{display:flex;gap:6px;flex-wrap:wrap}
.staff-primary a{color:var(--muted);text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap;padding:9px 10px;border-radius:9px;min-height:var(--control-height);display:flex;align-items:center}
.staff-primary a:hover{background:var(--control-bg);color:var(--gold2)}
.staff-account{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0;padding-left:14px;border-left:1px solid var(--line)}
.staff-account .manager-link{border:1px solid rgba(214,166,87,.36);border-radius:9px;padding:7px 10px;font-size:11px;font-weight:700;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;text-decoration:none}
.staff-account .inline-lock button{font-size:11px;padding:7px 10px;border-radius:9px;min-height:auto}
@media(max-width:780px){.staff-module-nav{flex-wrap:wrap;row-gap:10px}.staff-account{flex-basis:100%;justify-content:flex-end;margin-left:0;padding-left:0;border-left:0}}
@media(max-width:480px){.staff-account{justify-content:flex-start;flex-wrap:wrap;row-gap:8px}}
.primary,.ghost,.ghost-action,.danger-ghost,.studio-save,.report-filters button,
.printer-section-tabs button,.basket-edit-btn,.upsell-add{
  min-height:var(--control-height);
  font-family:inherit;
  line-height:1.3;
}
.ghost-action,.danger-ghost,.studio-save{border-radius:var(--control-radius)}
.ghost-action{background:transparent;border:1px solid var(--line);color:var(--gold2);padding:10px 12px;cursor:pointer}
.ghost-action:disabled{opacity:.4;cursor:default}
.new-dish-head{gap:16px;flex-wrap:wrap}
.new-dish-head>div{flex:1 1 260px;min-width:0}
.new-dish-head h2{overflow-wrap:anywhere;line-height:1.25}
.new-dish-head .panel-action{width:auto;height:auto;min-height:44px;padding:10px 14px;flex-shrink:0;font-size:13px;line-height:1.4;border-radius:10px}
.icon-btn,.modal-close,.qty-row button,.mini-step button,.category-order-controls button{
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
}
.icon-btn,.modal-close{width:44px;height:44px;padding:0}
.category-order-controls button{min-width:44px;padding:8px}
.drag-handle{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:44px}
.report-filters input,.report-filters select,.category-manage-row .cat-name,
.category-manage-row .cat-type{
  width:100%;min-height:var(--control-height);border:1px solid var(--line);
  background:var(--field-bg);color:var(--text);border-radius:var(--control-radius);
  padding:10px 12px;font:inherit;font-size:14px;line-height:1.4;
}
.report-filters{gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}
.report-filters label{gap:var(--space-field)}
.report-filters label>span,.category-manage-row label>span{line-height:1.4}
.report-actions a{min-height:44px;display:inline-flex;align-items:center}
.order-status-filters a{color:var(--muted);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.order-status-filters a.active{color:var(--gold2)}
.table-scroll{max-width:100%;overscroll-behavior-x:contain}
.table-scroll th,.table-scroll td{vertical-align:top;line-height:1.5}
.stats b,.payment-summary b,.basket-total,.dish-top>strong,.feature-copy strong{font-variant-numeric:tabular-nums}
.stats>div{min-width:0;display:flex;flex-direction:column;gap:8px}
.stats small{line-height:1.5}
.stats b{margin:0}
.stats em{line-height:1.45}
.category-manage-row{
  grid-template-columns:32px minmax(120px,1.4fr) minmax(140px,1.2fr) auto auto auto auto auto;
  gap:12px;padding:var(--space-card);align-items:end;
}
.category-manage-row .printer-active{display:flex;align-items:center;gap:8px;min-height:44px;align-self:end}
.category-manage-row .category-item-count{align-self:end;min-height:44px;display:flex;align-items:center}
.category-manage-row .save-state:empty{display:none}
.category-manage-row .studio-save{width:auto}
.studio-form input:not([type="checkbox"]):not([type="radio"]),.studio-form select{min-height:44px}
.studio-form label{line-height:1.4}
.card-order-controls{gap:8px;padding:8px 12px}
.studio-category-head{gap:12px;flex-wrap:wrap}
.feature-copy>div,.dish-top>div,.modal-head>div,.basket-line>div{min-width:0}
.feature-copy h3,.dish-card h3{line-height:1.3}
.feature-copy p,.dish-card p{line-height:1.55}
.feature-scroll,.upsell-list{overscroll-behavior-x:contain;scroll-padding-inline:4px}
.feature-card{flex:0 0 78%;min-width:0}
.feature-card .feature-copy{gap:12px}
.section-tabs{display:flex;gap:8px;padding:10px 18px 0;max-width:760px;margin:auto}
.section-tabs [role="tab"]{flex:1;background:var(--control-bg);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:9px 0;font-weight:700;font-size:13px}
.section-tabs [role="tab"][aria-selected="true"]{background:var(--gold);color:#101316;border-color:var(--gold)}
.nav-scroll{scroll-padding-inline:var(--page-gutter)}
.nav-scroll a:not([hidden]){min-height:44px;display:inline-flex;align-items:center}
.g-nav .nav-scroll::-webkit-scrollbar{display:none}
.modal-head{gap:16px;align-items:flex-start}
.modal-head>strong{white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums;line-height:1.4}
.modal-content,.basket-sheet,.help-sheet,.action-sheet{padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
.field textarea{font:inherit;font-size:14px;line-height:1.5}
.modifier-group-head{gap:12px;align-items:baseline}
.modifier-group-head b,.modifier-option span{overflow-wrap:anywhere;min-width:0}
.required-tag,.optional-tag{flex-shrink:0}
.modifier-option{min-height:44px;line-height:1.5}
.basket-line-top{flex-wrap:wrap;row-gap:8px}
.basket-line-top>b{overflow-wrap:anywhere;min-width:0}
.basket-edit-btn{padding:8px 12px;min-height:36px}
.basket-line small{line-height:1.5;overflow-wrap:anywhere}
.upsell-card{flex-basis:156px;padding:12px;gap:8px}
.upsell-info{flex:1;min-width:0}
.upsell-info b{overflow-wrap:anywhere;line-height:1.4}
.upsell-info small{display:block;margin-top:4px;font-variant-numeric:tabular-nums}
.upsell-add{margin-top:auto;font-size:12px;padding:10px}
.upsell-dismiss{width:32px;height:32px;line-height:32px;font-size:18px}
.payment-summary>div{gap:16px;padding-block:8px;line-height:1.5}
.payment-summary>div>span{min-width:0;overflow-wrap:anywhere}
.staff-empty{line-height:1.6;padding:24px 16px}
.revenue-filter select,.action-sheet input:not([type="checkbox"]):not([type="radio"]),.action-sheet select{
  width:100%;min-height:44px;padding:10px 12px;background:var(--field-bg);color:var(--text);
  border:1px solid var(--line);border-radius:var(--control-radius);font:inherit;
}
.action-sheet{max-width:560px}
.import-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.import-summary-grid>div{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px;text-align:center}.import-summary-grid b{display:block;font-size:24px;color:var(--gold2)}.import-summary-grid span{color:var(--muted);font-size:11px}.import-summary-grid .import-summary-bad b{color:var(--danger)}.import-mode-label,.import-affected{color:var(--muted);font-size:12px;margin:4px 0}.import-rows-wrap{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:14px;margin-top:12px}.import-rows-table{width:100%;border-collapse:collapse;font-size:12px}.import-rows-table th,.import-rows-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.import-rows-table td:last-child{white-space:normal;color:var(--muted)}.import-rows-table th{position:sticky;top:0;background:var(--panel);color:var(--muted);font-size:10px;letter-spacing:.08em}.import-row-bad{background:rgba(230,95,90,.06)}
@media(max-width:600px){.import-summary-grid{grid-template-columns:repeat(2,1fr)}}
/* Menu Studio "Bulk photos" dialog */
.bulk-photo-pick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0 6px}
@media(max-width:600px){.bulk-photo-pick{grid-template-columns:1fr}}
.bulk-photo-replace{display:flex;gap:10px;align-items:flex-start;margin:12px 0;font-size:13px;line-height:1.4;cursor:pointer}
.bulk-photo-replace input{margin-top:3px;flex:none}
.bulk-photo-replace small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
#bulkPhotosRows td{white-space:normal;vertical-align:top;color:var(--text)}
#bulkPhotosRows td:last-child{color:inherit}
.bulk-photo-file{word-break:break-all;min-width:120px}
.bulk-photo-chip{display:inline-flex;align-items:center;gap:6px;margin:0 6px 6px 0;padding:4px 6px 4px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;font-size:12px}
.bulk-photo-chip small{color:var(--muted);font-size:10px}
.bulk-photo-chip button{min-width:22px;min-height:22px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:14px;line-height:1;cursor:pointer}
.bulk-photo-chip button:hover{color:var(--danger)}
.bulk-photo-hint,.bulk-photo-note{color:var(--muted);font-size:11px;margin:4px 0}
.bulk-photo-note:empty{display:none}
.bulk-photo-note{color:var(--danger)}
.link-btn{padding:0;border:0;background:none;color:var(--gold2);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}
.bulk-photo-picker{margin-top:6px}
.bulk-photo-picker[hidden]{display:none}
.bulk-photo-picker-list{display:grid;gap:4px;margin-top:6px;max-height:190px;overflow:auto}
.bulk-photo-picker-list button{text-align:left;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);font-size:12px;cursor:pointer}
.bulk-photo-picker-list button small{color:var(--muted);margin-left:6px}
.action-list{display:grid;gap:8px;margin-top:20px}
.action-list button{width:100%;min-height:52px;padding:12px 16px;text-align:left;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--text);font-size:14px;line-height:1.4;cursor:pointer}
.action-list button small{display:block;color:var(--muted);font-size:11px;margin-top:4px}
.action-list button.danger-ghost{color:var(--danger);border-color:rgba(240,160,93,.35);background:transparent}
.action-list button:hover{border-color:var(--gold)}
/* Label wrappers added for accessibility must not lose the original
   direct-child input styling in employee and printer forms. */
.printer-create-grid input:not([type="checkbox"]):not([type="radio"]),
.printer-create-grid select,.printer-row input:not([type="checkbox"]):not([type="radio"]),
.printer-row select{
  width:100%;min-height:44px;padding:10px 12px;background:var(--field-bg);color:var(--text);
  border:1px solid var(--line);border-radius:var(--control-radius);font:inherit;font-size:14px;
}
.printer-create-grid>button,.printer-row>button:not(.danger-ghost):not(.ghost-action){
  min-height:44px;border:1px solid transparent;border-radius:var(--control-radius);
  background:var(--gold);color:#071014;padding:10px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;
}
.printer-create-grid label,.printer-row label{min-width:0;line-height:1.4}
.docket-line-row select,.docket-line-row input:not([type="checkbox"]){min-height:36px;padding:0 10px;background:var(--field-bg);color:var(--text);border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px}
.docket-line-row select{min-width:100px}
.docket-line-row label{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:12px;white-space:nowrap;min-height:36px}
.docket-line-row input[type="checkbox"]{accent-color:var(--gold)}
.employee-row>div b{overflow-wrap:anywhere;line-height:1.35}
.printer-row .printer-active,.printer-create-grid .printer-active{min-height:44px;display:flex;align-items:center;gap:8px}
@media(max-width:1200px){
  .category-manage-row{grid-template-columns:32px minmax(0,1fr) minmax(0,1fr) auto}
  .category-manage-row>label:nth-child(2){grid-column:2/4}
  .category-manage-row>label:nth-child(3){grid-column:2/4}
  .category-manage-row>.category-item-count{grid-column:4;grid-row:1}
  .category-manage-row>.printer-active{grid-column:4;grid-row:2}
  .category-manage-row>.category-order-controls{grid-column:2}
  .category-manage-row>.studio-save{grid-column:3}
  .category-manage-row>.danger-ghost{grid-column:4}
}
@media(max-width:780px){
  .admin-header.compact{align-items:stretch}
  .admin-header>button{align-self:flex-start}
}
@media(max-width:650px){
  .report-filters,.report-filters.report-filters-fixed{grid-template-columns:minmax(0,1fr)}
  .category-manage-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
  .category-manage-row>.drag-handle{grid-column:1;grid-row:1;justify-self:start}
  .category-manage-row>label:nth-child(2),.category-manage-row>label:nth-child(3){grid-column:1/-1}
  .category-manage-row>.category-item-count{grid-column:2;grid-row:1;justify-self:end}
  .category-manage-row>.printer-active{grid-column:1;grid-row:auto}
  .category-manage-row>.category-order-controls{grid-column:2;justify-self:end}
  .category-manage-row>.studio-save{grid-column:1}
  .category-manage-row>.danger-ghost{grid-column:2}
  .category-manage-row>.studio-save,.category-manage-row>.danger-ghost{width:100%}
  .feature-card{flex-basis:90%}
  .admin-header nav{width:100%}
  .history-search{grid-template-columns:minmax(0,1fr) auto}
}
@media(max-width:390px){
  .welcome{gap:12px}
  .table-orb{width:68px;height:68px}
  .table-orb strong{font-size:23px}
  .modal-head{gap:12px;flex-wrap:wrap}
  .modal-head .modal-close{margin-left:auto}
  .credential-value{flex-wrap:wrap}
  .credential-value b{overflow-wrap:anywhere;min-width:0}
}

/* Batch 5, Section 22-28: light-theme component overrides. Appended at
   the very end of the file so equal-specificity ties with the base dark
   rules above always resolve in favour of these - deliberately additive
   (Section 23: "introduce theme overrides", never rewrite the proven
   dark rules themselves). Each override targets the exact selector(s)
   whose ORIGINAL colour value was a literal (white-based rgba(), or a
   one-off dark hex) rather than a token, so it never picked up the
   :root[data-theme="light"] token redefinitions above on its own. */
:root[data-theme="light"]{color-scheme:light}
[data-theme="light"] .admin-dark select,[data-theme="light"] .admin-dark input[type="date"]{color-scheme:light}
[data-theme="light"] .modal-card{background:var(--panel)}
[data-theme="light"] .inline-qty{background:var(--field-bg)}
[data-theme="light"] .prototype-note,[data-theme="light"] .mock-payment{background:var(--field-bg2)}
[data-theme="light"] .feature-card{background:linear-gradient(180deg,var(--control-bg),var(--panel2))}
[data-theme="light"] .control-card{background:linear-gradient(145deg,var(--panel),var(--panel2))}
[data-theme="light"] .service-filter-bar input,[data-theme="light"] .service-filter-bar select,[data-theme="light"] .guest-table-mode select{border-color:var(--line);background:var(--field-bg);color:var(--text)}
[data-theme="light"] .staff-toast{background:var(--panel)}
[data-theme="light"] .connectivity-banner{background:#f2e3bd}
[data-theme="light"] .management-attention{background:#fbeee1}
[data-theme="light"] .add{background:var(--control-bg)}
[data-theme="light"] .tag.safe{color:#1f7a4d;background:rgba(31,122,77,.1)}
[data-theme="light"] .tag.warn{color:#8a5a1c;background:rgba(138,90,28,.1)}
[data-theme="light"] .danger-ghost{border-color:rgba(168,82,32,.4)!important;color:#a85220!important;background:transparent!important}
[data-theme="light"] .staff-empty{border-color:var(--line)}
[data-theme="light"] .system-detail,[data-theme="light"] .bulk-routing-line,[data-theme="light"] .metric-grid article,[data-theme="light"] .printer-health,[data-theme="light"] .route-preview,[data-theme="light"] .order-status-filters a,[data-theme="light"] .table-choice-grid label span,[data-theme="light"] .move-table-btn,[data-theme="light"] .service-drop-zone,[data-theme="light"] .checkout-contact,[data-theme="light"] .settings-card{border-color:var(--line)}
[data-theme="light"] .metric-grid article,[data-theme="light"] .printer-health,[data-theme="light"] .service-drop-zone{background:rgba(35,28,15,.035)}
[data-theme="light"] .order-status-filters a.active{background:rgba(35,28,15,.08)}
[data-theme="light"] .checkout-contact,[data-theme="light"] .settings-card{background:rgba(35,28,15,.025)}
.theme-toggle{list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:transparent;color:var(--gold2);font-weight:800;font-size:12px;min-height:var(--control-height);display:inline-flex;align-items:center;flex-shrink:0}
.theme-toggle:hover{border-color:rgba(214,166,87,.35)}
.theme-toggle:focus-visible{outline:2px solid var(--gold2);outline-offset:2px}
.topbar-actions{display:flex;align-items:center;gap:8px}
[data-theme="light"] .icon-btn,[data-theme="light"] .modal-close{background:rgba(35,28,15,.05)}
[data-theme="light"] .manage-module-nav{background:rgba(246,241,231,.94)}
[data-theme="light"] .g-nav{background:rgba(246,241,231,.88)}
[data-theme="light"] .g-logo{color:var(--gold2)}
/* Batch 5 RC fix: .route and .upload-overlay/.upload-placeholder always
   sit on a deliberately dark, theme-INDEPENDENT scrim (for legibility
   over an arbitrary dish photo, regardless of which page theme is
   active) - the light theme's darkened --gold2/--text/--muted (correct
   for normal page text) broke contrast against that permanently-dark
   background. Restored to the original dark-theme-appropriate values
   for these two specific always-dark-backdrop contexts only. */
[data-theme="light"] .route{color:#f0c97e}
[data-theme="light"] .upload-placeholder,[data-theme="light"] .upload-overlay{color:#8e9aa3}
[data-theme="light"] .upload-placeholder b,[data-theme="light"] .upload-overlay b{color:#f3f2ed}

/* Launch operational-workflow batch: Streamlined Live Service. Reuses
   every existing token/class (--status-attention, .order-card, .tag,
   .request-panel) rather than inventing a parallel design language -
   only the Guest-Requests prominence accent and the compact Recent
   Orders row/expand treatment are genuinely new. */
.request-panel-prominent{border-color:var(--status-attention);box-shadow:0 0 0 1px var(--status-attention)}
.order-grid-compact{grid-template-columns:1fr}
.order-card-compact{padding:12px 16px}
.order-compact-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.order-compact-row .order-received{color:var(--muted);font-size:11px;min-width:100px}
.order-compact-table{font-size:16px}
.order-compact-ref{color:var(--gold2);font-size:12px}
.order-compact-total{margin-left:auto;font-size:15px}
.order-compact-toggle{background:var(--control-bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-weight:700}
.order-compact-detail{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.order-compact-detail .order-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
.order-compact-detail .order-foot a{color:var(--teal);font-size:12px;text-decoration:none}
@media(max-width:780px){.order-compact-row{gap:8px}.order-compact-total{margin-left:0}}

/* Highlighted ("push this one") options, the one-tap basket upgrade and the
   checkout upsell reason labels. Presentation only - see migration 068. */
.modifier-option-highlight{border-color:var(--gold);background:rgba(214,166,87,.12);box-shadow:0 0 0 1px rgba(214,166,87,.35)}
.modifier-option-highlight span{font-weight:700}
.modifier-badge{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;background:var(--gold);color:#071014;border-radius:999px;padding:3px 8px;white-space:nowrap;flex:none}
.tag.upsell-tag{color:var(--gold2);background:rgba(214,166,87,.12);border:1px solid rgba(214,166,87,.4);font-weight:700}
[data-theme="light"] .tag.upsell-tag{color:#8a5a1c;background:rgba(138,90,28,.1);border-color:rgba(138,90,28,.35)}
.basket-upgrade{display:inline-flex;align-items:center;gap:6px;margin-top:6px;min-height:36px;padding:6px 12px;border:1px dashed var(--gold);border-radius:999px;background:rgba(214,166,87,.1);color:var(--text);font:inherit;font-size:12px;font-weight:700;cursor:pointer;text-align:left}
.basket-upgrade b{color:var(--gold2)}
.basket-upgrade small{color:var(--muted);font-weight:500}
[data-theme="light"] .basket-upgrade b{color:#8a5a1c}
.upsell-reason{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold2);margin-bottom:3px;font-weight:700}
[data-theme="light"] .upsell-reason{color:#8a5a1c}
.mg-opt-highlight-wrap{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}

/* Dietary information is plain words (no badges): a quiet line on each dish card and a "Dietary: ..." line in the dish sheet's information box. */
.diet-text{font-size:11px;color:var(--muted);letter-spacing:.01em}
.allergen-box p.dietary-words{margin:6px 0 2px;font-size:13px;font-weight:600;color:var(--text)}

/* Receipt Reprints: expandable order detail */
.receipt-row-actions{display:flex;gap:8px;align-items:center}
.receipt-history-grid .receipt-row-detail{grid-column:1/-1;margin:2px 0 0}
.receipt-history-grid .receipt-row-detail[hidden]{display:none}
@media(max-width:650px){.receipt-row-actions{flex-direction:column;align-items:stretch}}

/* A tapped category pill lands with its heading clear of the sticky nav; the pill for the section in view is highlighted (scroll-spy). */
.menu-section,.feature-section{scroll-margin-top:calc(var(--nav-h,117px) + 12px)}
.nav-scroll a{transition:background .15s,color .15s}

/* Staff: new guest-request alerts toggle (chime / flashing tab / pop-up) */
.alerts-btn{margin-left:10px;padding:5px 12px;border-radius:999px;border:1px solid var(--line,#d9d4c7);background:transparent;color:inherit;font:inherit;font-size:.82rem;cursor:pointer}
.alerts-btn.is-on{background:#1f6b3a;border-color:#1f6b3a;color:#fff}
@media(max-width:650px){.alerts-btn{margin:6px 0 0}}

/* Optional online processing fee (migration 070): the disclaimer under the guest's totals */
.processing-fee-note{margin:8px 0 0;font-size:.82rem;line-height:1.4;opacity:.85}

/* Detailed Shift Report (Staff > Shift Reports): takings breakdown, category/product tree, print view */
.table-scroll table.shift-table{min-width:0;width:100%}.shift-table th,.shift-table td{padding:9px 8px}.shift-table td:first-child,.shift-table th:first-child{white-space:normal}
@media(max-width:430px){.shift-table{font-size:.9rem}.shift-table th.shift-share,.shift-table td.shift-share{display:none}.shift-cat{margin-left:6px}}.table-scroll table.shift-table.shift-wide{min-width:560px}
.shift-table th.num,.shift-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.shift-table small{opacity:.65;font-weight:400}
.shift-table tr.shift-subtotal td{border-top:1px solid var(--line,rgba(255,255,255,.18));font-weight:700}
.shift-table tr.shift-total td{border-top:2px solid var(--line,rgba(255,255,255,.28));font-weight:800;font-size:1.05em}
.shift-splits{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px}
.shift-note{margin:10px 2px;font-size:.85rem;line-height:1.45;opacity:.85}
.shift-group>summary{font-size:1.02rem}
.shift-cat{margin:8px 0 0 14px}.shift-cat>summary{cursor:pointer;padding:4px 0}.shift-cat-total{float:right;opacity:.8;font-variant-numeric:tabular-nums}
.shift-print-scope{margin:0 0 10px;font-size:.9rem;opacity:.85}.shift-exports{margin:12px 0 0;font-size:.9rem}
@media print{
  .no-print,.manage-module-nav,.report-filters,.connectivity-banner,.alerts-btn{display:none!important}
  body,body.admin-dark,.admin-shell{background:#fff!important;color:#000!important}
  .analytics-card,.metric-grid article,.settings-card,.stats>div{background:#fff!important;border:1px solid #999!important;color:#000!important;box-shadow:none!important}
  th,td,h1,h2,p,small,b,summary,span{color:#000!important}
  a,.g-logo,.g-logo span{color:#000!important}
  .analytics-card th,.analytics-card td,.shift-table th,.shift-table td{border-color:#999!important}
  .shift-table tr.shift-subtotal td{border-top:1px solid #000!important}.shift-table tr.shift-total td{border-top:2px solid #000!important}
  .shift-group,.shift-cat,.shift-table tr{break-inside:avoid}
}

/* Order Investigation: the exact docket text Gustara sent to a printer */
.docket-details{margin-top:6px}.docket-details>summary{cursor:pointer;font-size:.85rem;opacity:.85}
.docket-preview{white-space:pre-wrap;word-break:break-word;font:0.82rem/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;margin:8px 0 0;padding:10px 12px;border:1px solid var(--line,rgba(255,255,255,.14));border-radius:10px;background:rgba(255,255,255,.04);max-height:340px;overflow:auto}

/* Per-dish stock count: guest "Only N left" chip + Staff availability count box */
.tag.stock-low{background:rgba(214,120,40,.16);border-color:rgba(214,120,40,.55);color:#e0a15a;font-weight:700}
[data-theme="light"] .tag.stock-low{background:rgba(190,95,15,.12);border-color:rgba(190,95,15,.5);color:#9a4d0a}
.stock-status{display:block;font-size:.82rem;margin-top:2px}
.stock-controls{display:flex;gap:6px;align-items:center}
.stock-input{width:120px;min-height:38px;padding:0 8px;border-radius:9px;border:1px solid rgba(255,255,255,.42);background:var(--field-bg,transparent);color:inherit;font:inherit}
[data-theme="light"] .stock-input{border-color:rgba(90,74,46,.6)}
.stock-input:focus{outline:2px solid var(--gold2,#d6a657);outline-offset:1px}
.stock-note{margin:6px 0 0;font-weight:700;color:#e0a15a}
[data-theme="light"] .stock-note{color:#9a4d0a}
.availability-row.is-out{opacity:.82}.availability-row.is-out b{opacity:.75}
.qty-plus:disabled{opacity:.35;cursor:not-allowed}
.availability-toggle:disabled{cursor:not-allowed;border-style:dashed;opacity:.85}
.stock-set{min-height:38px;padding:0 12px;border-radius:9px;border:1px solid var(--line,rgba(255,255,255,.22));background:transparent;color:inherit;font:inherit;font-weight:700;cursor:pointer}
.availability-row{flex-wrap:wrap;gap:8px}
.stock-cap-note{display:block;color:#e0a15a;font-weight:700}
[data-theme="light"] .stock-cap-note{color:#9a4d0a}
.needs-attention{outline:2px solid var(--gold2,#d6a657);outline-offset:3px;border-radius:6px}
.g-logo .g-mark{width:24px;height:24px;vertical-align:-6px;margin-right:8px;border-radius:6px}.manage-brand .g-mark-sm{width:18px;height:18px;vertical-align:-4px;margin-right:4px;border-radius:5px}

/* ===== Guest allergen declaration (migration 075) =====
   The full-screen "does anyone at your table have a food allergy?" gate on the guest menu, the one-line summary under the header and in
   the basket, and the solid red ALLERGENS badge on the Staff board / Order Investigation. Colours come from the existing tokens; the badge is
   a solid fill with its own foreground (--allergen-bg / --allergen-fg) so it reads from across a kitchen in both themes. Selected chips and
   the badge never rely on colour alone (tick mark, thicker border, icon and the word ALLERGENS). */
:root{--allergen-bg:#ef6f6f;--allergen-fg:#1b0707}
:root[data-theme="light"]{--allergen-bg:#c23f3f;--allergen-fg:#ffffff}
dialog.allergen-gate[open]{align-items:stretch;justify-content:center;z-index:60}
.allergen-gate .allergen-card{max-width:560px;height:100%;max-height:none;margin:0 auto;border:0;border-radius:0;background:var(--panel);display:flex;flex-direction:column;overflow:auto;overscroll-behavior:contain}
.allergen-step{display:flex;flex-direction:column;flex:1 1 auto;padding:28px 20px 0}
.allergen-step[hidden],.allergen-keep[hidden]{display:none!important}
.allergen-step h2{font:600 clamp(26px,7vw,34px)/1.12 'Manrope',sans-serif;margin:6px 0 10px}
.allergen-step h2:focus{outline:none}
.allergen-kicker{font-size:10px;letter-spacing:.18em;color:var(--gold2);font-weight:700}
.allergen-question{color:var(--text);font-size:17px;line-height:1.5;margin:0 0 4px}
.allergen-choices{display:grid;gap:12px;margin:24px 0 16px}
.allergen-choice{min-height:68px;padding:16px 18px;border-radius:16px;border:2px solid var(--gold);background:var(--control-bg);color:var(--text);font:700 19px 'Manrope',sans-serif;text-align:center;cursor:pointer}
@media (hover:hover){.allergen-choice:hover{background:rgba(214,166,87,.12)}}
.allergen-fine{color:var(--muted);font-size:13px;line-height:1.55;margin:4px 0 16px}
.allergen-purpose{color:var(--text);font-size:14px;margin:6px 0 4px}
.allergen-keep{align-self:flex-start;min-height:44px;padding:0 4px;background:none;border:0;color:var(--gold2);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
.allergen-back{align-self:flex-start;min-height:44px;margin:-8px 0 4px -6px;padding:0 8px;background:none;border:0;color:var(--gold2);font:inherit;font-weight:700;font-size:15px;cursor:pointer}
.allergen-chips{display:grid;grid-template-columns:1fr;gap:8px;margin:14px 0 6px}
.allergen-chip{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;border-radius:14px;border:2px solid var(--line);background:var(--field-bg2);color:var(--text);font:600 15px/1.35 'DM Sans',sans-serif;text-align:left;cursor:pointer}
@media (hover:hover){.allergen-chip:hover{border-color:rgba(214,166,87,.5)}}
.allergen-chip[aria-pressed="true"]{border-color:var(--gold);background:rgba(214,166,87,.14)}
.allergen-tick{flex:none;width:28px;height:28px;border-radius:8px;border:2px solid var(--muted);display:grid;place-items:center;font-size:17px;font-weight:800;line-height:1;color:#071014}
.allergen-chip[aria-pressed="true"] .allergen-tick{background:var(--gold);border-color:var(--gold)}
.allergen-chip[aria-pressed="true"] .allergen-tick::after{content:'\2713'}
.allergen-chip-name{min-width:0;overflow-wrap:anywhere}
.allergen-other{margin:18px 0 6px}
.allergen-other b{display:block;font-size:16px;margin-bottom:4px}
.allergen-other label{display:block;color:var(--muted);font-size:13px;font-weight:600}
.allergen-other textarea{width:100%;min-height:76px;margin-top:8px;background:var(--field-bg2);border:2px solid var(--line);border-radius:13px;padding:12px;color:var(--text);font:inherit;font-size:16px;line-height:1.45;resize:vertical}
.allergen-other textarea:focus{border-color:var(--gold)}
.allergen-foot{position:sticky;bottom:0;margin:auto -20px 0;padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:4px}
.allergen-hint{margin:0;min-height:18px;color:var(--muted);font-size:13px}
.allergen-continue{min-height:56px;font-size:17px;background:var(--gold);color:#071014;border-color:var(--gold)}
.allergen-continue:disabled{opacity:.45;cursor:not-allowed}
@media (min-width:720px){dialog.allergen-gate[open]{align-items:center}.allergen-gate .allergen-card{height:auto;max-height:92vh;border:1px solid var(--line);border-radius:28px}.allergen-chips{grid-template-columns:1fr 1fr}}
.allergen-line{display:block;margin:14px 0 0;padding:2px 6px 2px 14px;width:fit-content;max-width:100%;border:1px solid var(--line);border-radius:18px;background:var(--field-bg2);color:var(--text);font-size:13px;line-height:1.35}
.allergen-line[hidden]{display:none!important}
.allergen-line.is-declared .allergen-line-text{font-weight:700}
.allergen-line-text{display:inline;overflow-wrap:anywhere}
.allergen-change{display:inline-block;vertical-align:middle;min-height:44px;margin-left:4px;padding:0 8px 0 12px;background:none;border:0;border-left:1px solid var(--line);border-radius:0;color:var(--gold2);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
.allergen-line-basket{margin:14px 0 4px}
.allergen-badge{display:flex;align-items:center;gap:12px;margin:10px 0;padding:12px 14px;border-radius:12px;background:var(--allergen-bg);color:var(--allergen-fg);font-weight:800;font-size:20px;line-height:1.3;overflow-wrap:anywhere}
.allergen-badge-icon{flex:none;font-size:26px;line-height:1}
.allergen-badge-text{min-width:0}
.allergen-badge-text small{display:block;margin-top:4px;font-size:12px;font-weight:600;opacity:.92}
.allergen-badge-block{margin:16px 0}
@media (min-width:720px){.allergen-badge{font-size:22px;padding:14px 18px}.allergen-badge-icon{font-size:32px}}
.order-card.has-allergens{box-shadow:0 0 0 3px var(--allergen-bg)}
.allergen-status-card{padding:12px 16px}
.allergen-status-card small{font-size:10px;letter-spacing:.18em;color:var(--gold2);font-weight:700}
.allergen-status-card p{margin:4px 0 0}
/* Short viewports (a phone held sideways): the sticky Continue footer used to take about a third of the card, leaving one row of chips. The hint and the button now share one row, and chips go two per row. */
@media (max-height:480px){.allergen-step{padding-top:16px}.allergen-foot{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 14px;padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.allergen-hint{flex:1 1 180px;min-height:0}.allergen-continue{min-height:48px;flex:0 1 280px}.allergen-foot .allergen-keep{flex:0 0 auto}}
@media (max-height:480px) and (min-width:600px){.allergen-chips{grid-template-columns:1fr 1fr}}
/* Payment page of an order the guest replaced with a newer one (review R4S-5 / R4-1), and the "what you told us" echo on the payment/success pages (R4-5b). */
.order-replaced-note{margin:0 0 20px;padding:14px 16px;border:2px solid var(--allergen-bg);border-radius:14px;background:var(--field-bg2);text-align:left;color:var(--text)}
.order-replaced-note b{display:block;margin-bottom:6px;font-size:16px;line-height:1.35}
.order-replaced-note p{margin:0;font-size:14px;line-height:1.5}
.allergen-echo,.track-wrap>p.allergen-echo{margin:14px 0;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--field-bg2);text-align:left;color:var(--text);font-size:14px;line-height:1.55;overflow-wrap:anywhere}
.allergen-echo b{font-weight:800}

/* Printer failover v1: Printer Setup monitoring controls + live status chip, and the "printed at <backup>" badge on order cards.
   (The red printer-problem alarm banner carries its own styles inside templates/_printer_alarm.html so it also works on the lock screens.) */
.printer-failover{grid-column:1/-1;display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.025)}
.printer-failover-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.printer-failover-head>small{font-size:11px;letter-spacing:.08em;opacity:.7}
.printer-failover-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;align-items:end}
.printer-failover p{margin:0}
.printer-failover-hint{margin:0;font-size:13px;line-height:1.5;opacity:.9}
/* The cover-open caveat is a limit of the equipment, not small print: full contrast, set apart, on every printer's row. */
.printer-failover-note{font-size:13px;line-height:1.5;padding:8px 12px;border-left:3px solid var(--status-attention);background:rgba(240,180,95,.07);border-radius:6px}
[data-theme="light"] .printer-failover-note{background:rgba(160,106,26,.08)}
/* Allowed-but-will-not-behave-as-the-words-suggest warnings (shared printer, unmonitored backup, odd delay) and the live "protection is not in force" lines. */
.printer-failover-warn{display:grid;gap:6px;padding:10px 12px;border-radius:10px;border:1px solid rgba(240,180,95,.55);background:rgba(240,180,95,.1);font-size:13px;font-weight:600;line-height:1.45}
.printer-failover-warn[hidden],.device-protection[hidden],.device-backup-state[hidden]{display:none}
.device-protection{font-size:13px;font-weight:700;line-height:1.45;padding:9px 12px;border-radius:10px;border:1px solid rgba(240,180,95,.55);background:rgba(240,180,95,.1)}
.device-protection.is-bad{border-color:#b3261e;background:rgba(179,38,30,.16);color:#ff9d95}
[data-theme="light"] .device-protection.is-bad{background:rgba(179,38,30,.1);color:#8f1a14}
.device-backup-state{font-size:13px;line-height:1.45}
.device-backup-state.is-bad{color:#ff9d95;font-weight:700}
[data-theme="light"] .device-backup-state.is-bad{color:#8f1a14}
.printer-save-warnings{grid-column:1/-1;display:grid;gap:6px}
.printer-save-warnings:not(:empty){padding:10px 12px;border-radius:10px;border:1px solid rgba(240,180,95,.55);background:rgba(240,180,95,.1);font-size:13px;font-weight:600}
.printer-save-warnings p{margin:0}
.device-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:800;letter-spacing:.03em;color:var(--muted)}
.device-chip::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--status-neutral);flex:0 0 auto}
.device-chip-ok{color:var(--status-ok);border-color:rgba(100,209,138,.5);background:rgba(100,209,138,.1)}.device-chip-ok::before{background:var(--status-ok)}
.device-chip-bad{color:#fff;background:#b3261e;border-color:#b3261e}.device-chip-bad::before{background:#fff}
.device-chip-unknown{color:var(--status-attention);border-color:rgba(240,180,95,.5);background:rgba(240,180,95,.1)}.device-chip-unknown::before{background:var(--status-attention)}
.device-checked{font-size:12px;font-style:normal;opacity:.8}
.reroute-badge{display:inline-block;margin-top:4px;padding:3px 9px;border-radius:999px;border:1px solid rgba(214,120,40,.55);background:rgba(214,120,40,.14);color:#e0a15a;font-size:11px;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
[data-theme="light"] .reroute-badge{background:rgba(190,95,15,.12);border-color:rgba(190,95,15,.5);color:#9a4d0a}
.reroute-badge[data-status="PRINT_FAILED"]{background:rgba(179,38,30,.16);border-color:rgba(179,38,30,.6);color:#ff9d95}
[data-theme="light"] .reroute-badge[data-status="PRINT_FAILED"]{background:rgba(179,38,30,.1);color:#8f1a14}
.reroute-badge[data-returned="1"]{background:rgba(179,38,30,.16);border-color:rgba(179,38,30,.6);color:#ff9d95}
[data-theme="light"] .reroute-badge[data-returned="1"]{background:rgba(179,38,30,.1);color:#8f1a14}
.reroute-badge[data-status="PARKED"],.print-waiting-badge[data-kind="parked"]{background:rgba(160,160,160,.14);border-color:rgba(160,160,160,.5);color:var(--muted)}
.print-waiting-badge{display:inline-block;margin-top:4px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.print-waiting-badge[data-kind="held"]{background:rgba(179,38,30,.16);border:1px solid rgba(179,38,30,.6);color:#ff9d95}
[data-theme="light"] .print-waiting-badge[data-kind="held"]{background:rgba(179,38,30,.1);color:#8f1a14}
.system-parked{color:var(--muted)}
