/* ════════════════════════════════════════════
   QueZap Mobile App
   Logo: Gradient bolt | Color: #f26100
   ════════════════════════════════════════════ */
:root{
  --ff:'Urbanist',system-ui,-apple-system,sans-serif;
  --ff-display:'Urbanist',system-ui,-apple-system,sans-serif;
  --white:#fff;--bg:#ffffff;--surface:#fff;
  --border:#ededea;--border2:#d9d6d0;
  /* QueZap orange — softer, warmer, less AI-ish.
     Matches the logo bolt (#f26100 range) with a touch more warmth. */
  --primary:#f26100;--primary2:#ff7a2e;--primary-light:#fff2ea;--primary-dark:#d84f00;
  --primary-tint:#fff8f3;
  --green:#0f8a4f;--green2:#12a35e;--green-light:#edf8f1;--green-tint:#f4faf6;
  --red:#d42b2b;--red-light:#fef1f1;
  --gold:#d4930d;--gold-light:#fdf6e3;
  --blue:#3168b3;--blue-light:#eaf0fb;--blue-tint:#f4f7fc;
  --text:#1a1a1a;--text2:#3a3a3a;--muted:#6b6b6b;--muted2:#9a9a9a;--muted3:#c5c5c5;
  --shadow-xs:0 1px 2px rgba(0,0,0,.04);
  --shadow-sm:0 2px 6px rgba(0,0,0,.05);
  --shadow:0 4px 14px rgba(0,0,0,.06);
  --shadow-md:0 8px 22px rgba(0,0,0,.08);
  --shadow-lg:0 14px 40px rgba(0,0,0,.12);
  --nav-h:56px;--btm-h:58px;
  --r:16px;--rs:12px;--rxs:8px;--rr:50px;
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --ease-quick:cubic-bezier(.4,0,.2,1);
  --ease-in:cubic-bezier(.4,0,1,1);
  --dur-xs:120ms;--dur-sm:180ms;--dur-md:280ms;--dur-lg:420ms;
}
/* Dark theme overrides — activated by data-theme="dark" on <html>
   Using SOFTER, LIGHTER dark colors (not pure black) for better readability */
html[data-theme="dark"]{
  --bg:#18181b;--surface:#232326;
  --border:#2e2e33;--border2:#3a3a40;
  --primary-light:#2b1708;--primary-tint:#1e1006;
  --green-light:#0d2116;--green-tint:#0b1a11;
  --red-light:#2a0f0f;--gold-light:#241b08;--blue-light:#0f1826;--blue-tint:#0c1320;
  --text:#f4f4f5;--text2:#d4d4d8;--muted:#a1a1aa;--muted2:#71717a;--muted3:#52525b;
  --shadow-xs:0 1px 2px rgba(0,0,0,.3);
  --shadow-sm:0 2px 6px rgba(0,0,0,.4);
  --shadow:0 4px 14px rgba(0,0,0,.45);
  --shadow-md:0 8px 22px rgba(0,0,0,.5);
  --shadow-lg:0 14px 40px rgba(0,0,0,.6);
}
html[data-theme="dark"] body{background:var(--bg);color:var(--text)}
html[data-theme="dark"] #nav{background:rgba(35,35,38,.92);border-bottom:1px solid var(--border)}
html[data-theme="dark"] .card,html[data-theme="dark"] .settings-card,html[data-theme="dark"] .wallet-tier-card,html[data-theme="dark"] .wallet-how,html[data-theme="dark"] .wallet-trans,html[data-theme="dark"] .wallet-action,html[data-theme="dark"] .addmoney-chip,html[data-theme="dark"] .auth-card,html[data-theme="dark"] .edit-modal,html[data-theme="dark"] .fav-row,html[data-theme="dark"] .cart-box{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .btm-tab{background:rgba(35,35,38,.96);border-top-color:var(--border)}
html[data-theme="dark"] .hero-search-box,html[data-theme="dark"] .input-field,html[data-theme="dark"] .inp,html[data-theme="dark"] input,html[data-theme="dark"] textarea,html[data-theme="dark"] select{background:#2a2a2e;border-color:var(--border2);color:var(--text)}
html[data-theme="dark"] .skel,html[data-theme="dark"] .skel-img,html[data-theme="dark"] .skel-line{background:linear-gradient(90deg,#28282c 0%,#34343a 40%,#28282c 80%);background-size:200% 100%}
html[data-theme="dark"] .setting-row[role="button"]:hover{background:rgba(255,255,255,.04)}
html[data-theme="dark"] .setting-row[role="button"]:active{background:rgba(255,255,255,.08)}
html[data-theme="dark"] .auth-tab-row,html[data-theme="dark"] .qz-seg{background:#2a2a2e}
html[data-theme="dark"] .qz-seg-btn.active,html[data-theme="dark"] .auth-tab.active{background:#38383e}
html[data-theme="dark"] .rest-card,html[data-theme="dark"] .recent-card{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .rest-footer{background:#1c1c1f}
html[data-theme="dark"] .promo-input,html[data-theme="dark"] .slot-btn{background:#2a2a2e;border-color:var(--border2);color:var(--text)}
html[data-theme="dark"] .qz-switch .qz-slider{background:#44444a}
html[data-theme="dark"] .divider{background:var(--bg)}
html[data-theme="dark"] .thin-divider{background:var(--border)}
html[data-theme="dark"] .settings-group-title{color:#a1a1aa}
html[data-theme="dark"] .setting-sub,html[data-theme="dark"] .muted{color:#a1a1aa}
html[data-theme="dark"] .page-back{background:var(--surface);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .page-back:hover{background:var(--primary-light);color:var(--primary)}
html[data-theme="dark"] .hero-loc-chip{background:var(--primary-light);border-color:rgba(242,97,0,.3);color:var(--primary)}
html[data-theme="dark"] .toast-item{background:#2e2e33;color:var(--text);border:1px solid var(--border)}
html[data-theme="dark"] .wallet-empty{color:var(--muted)}
html[data-theme="dark"] .btn-outline{background:transparent;color:var(--text);border-color:var(--border2)}
html[data-theme="dark"] .btn-outline:hover{background:var(--primary-light)}
html[data-theme="dark"] .nav-loc-text{color:var(--text)}
html[data-theme="dark"] .addmoney-chip{background:#2a2a2e;border-color:var(--border2);color:var(--text)}
html[data-theme="dark"] .lang-option{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .lang-option:hover,html[data-theme="dark"] .lang-option.selected{background:var(--primary-light)}
/* CART OVERLAY FIX: ensure cart panel has solid background and proper z-index */
.cart-panel{z-index:5}
.cart-panel .cart-box{background:#fff;box-shadow:0 4px 20px rgba(0,0,0,.08)}
html[data-theme="dark"] .cart-panel .cart-box{background:var(--surface);box-shadow:0 4px 20px rgba(0,0,0,.4)}
.rest-detail-layout{position:relative}
.rest-detail-layout>#menuContent{min-width:0;overflow:hidden}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}
body{background:var(--bg);color:var(--text);font-family:var(--ff);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden;padding-bottom:calc(var(--btm-h) + var(--safe-bottom));min-height:100vh;font-weight:400;letter-spacing:-.005em;line-height:1.5;overscroll-behavior-y:contain}
a{text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}
button{cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;border:none;background:none;touch-action:manipulation}
input,select,textarea{font-family:inherit;-webkit-appearance:none;outline:none;font-size:16px}
img{max-width:100%;display:block}
::-webkit-scrollbar{width:0;height:0}
::selection{background:rgba(242,97,0,.12)}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes pulseDot{0%,100%{box-shadow:0 0 0 0 rgba(242,97,0,.15)}50%{box-shadow:0 0 0 8px transparent}}
@keyframes statusFlash{0%{background:var(--primary-light)}100%{background:transparent}}
@keyframes livePulse{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes addBounce{0%{transform:translateX(-50%) scale(1)}40%{transform:translateX(-50%) scale(.88)}100%{transform:translateX(-50%) scale(1)}}
@keyframes pagePush{from{opacity:0;transform:translate3d(24px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pagePop{from{opacity:0;transform:translate3d(-24px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes sheetUp{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}
@keyframes skeletonPulse{0%,100%{opacity:1}50%{opacity:.55}}
.menu-row-add:active{animation:addBounce .32s ease-out}
.fade-up{opacity:0;transform:translateY(14px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out)}.fade-up.visible{opacity:1;transform:translateY(0)}

/* ═══ CORE ═══ */
.spinner{width:22px;height:22px;border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .55s linear infinite;display:inline-block}
.loading-center{display:flex;justify-content:center;padding:3rem;width:100%}
.skel{background:linear-gradient(90deg,#eeeeee 0%,#f6f6f6 50%,#eeeeee 100%);background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:8px}
.card{background:var(--surface);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-xs)}
.card:active{transform:scale(.985);transition:transform .1s}
.divider{height:8px;background:var(--bg)}
.thin-divider{height:1px;background:var(--border);margin:0 4vw}
.page{display:none}
.page.active{display:block;animation:pagePush .28s var(--ease-out)}
.page.active.pop{animation:pagePop .28s var(--ease-out)}

/* ═══ BOTTOM SHEET — drag-to-dismiss ═══ */
.qz-sheet-handle{width:38px;height:4px;background:#d8d5ce;border-radius:100px;margin:.55rem auto .25rem;flex-shrink:0;cursor:grab;touch-action:none}
.qz-sheet-handle:active{cursor:grabbing;background:#b0aca4}

/* ═══ TACTILE BUTTONS — press-state elevation drop ═══ */
.btn-primary,.btn-green,.btn-danger{will-change:transform,box-shadow}
.btn-primary:active{transform:translateY(1px);box-shadow:0 1px 4px rgba(242,97,0,.2)!important}
.btn-green:active{transform:translateY(1px);box-shadow:0 1px 4px rgba(15,138,79,.2)!important}
.btn-danger:active{transform:translateY(1px);box-shadow:0 1px 4px rgba(212,43,43,.2)!important}

/* ═══ iOS-STYLE SEGMENTED CONTROL (reusable) ═══ */
.qz-seg{display:inline-flex;background:#efede8;border-radius:10px;padding:3px;gap:2px}
.qz-seg-btn{border:none;background:none;padding:.4rem .9rem;font-size:.8rem;font-weight:700;color:var(--muted);border-radius:8px;cursor:pointer;font-family:var(--ff);transition:.18s var(--ease-out);white-space:nowrap}
.qz-seg-btn.active{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.1),0 0 0 .5px rgba(0,0,0,.04)}

/* ═══ OTP 6-BOX INPUT (native-app style) ═══ */
.otp-boxes{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.25rem;max-width:320px;margin-left:auto;margin-right:auto}
.otp-box{width:46px;height:56px;text-align:center;font-size:1.5rem;font-weight:800;font-family:var(--ff-display);color:var(--text);background:#fff;border:1.5px solid var(--border2);border-radius:12px;transition:border-color .18s,box-shadow .18s,transform .12s;outline:none;-webkit-appearance:none;padding:0;caret-color:var(--primary)}
.otp-box:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(242,97,0,.14);transform:translateY(-1px)}
.otp-box.filled{border-color:var(--primary);background:var(--primary-tint);color:var(--primary)}
.otp-box.invalid{border-color:var(--red);animation:shake .35s var(--ease-quick);background:var(--red-light)}
@media(max-width:380px){.otp-box{width:42px;height:52px;font-size:1.35rem}.otp-boxes{gap:.35rem}}

/* ═══ HOME HERO — NATIVE APP STYLE ═══ */
.hero-head{padding:1.1rem 4.5vw .3rem}
.hero-greeting-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}
.hero-greet-text{flex:1;min-width:0}
.hero-greeting{font-family:var(--ff-display);font-weight:900;font-size:1.55rem;line-height:1.15;letter-spacing:-.03em;color:var(--text);min-height:1.8rem}
.hero-sub{font-size:.85rem;color:var(--muted);font-weight:500;margin-top:3px;line-height:1.4}
.hero-loc-chip{display:inline-flex;align-items:center;gap:.3rem;background:var(--primary-tint);border:1.5px solid rgba(242,97,0,.18);border-radius:100px;padding:.38rem .75rem .38rem .65rem;font-size:.78rem;font-weight:800;color:var(--primary);cursor:pointer;font-family:var(--ff);transition:.15s;flex-shrink:0;max-width:120px;white-space:nowrap;overflow:hidden}
.hero-loc-chip span{overflow:hidden;text-overflow:ellipsis}
.hero-loc-chip:active{transform:scale(.95);background:var(--primary-light)}
.hero-live-pill{display:inline-flex;align-items:center;gap:.35rem;margin-top:.65rem;background:var(--green-light);color:var(--green);border-radius:100px;padding:.2rem .65rem;font-size:.7rem;font-weight:800;letter-spacing:-.005em}
.hero-live-pill .hlp-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 1.8s infinite}

.hero-search-wrap{padding:.75rem 4.5vw .85rem}
.hero-search-box{display:flex;align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:0 .95rem;gap:.55rem;transition:border .15s,box-shadow .18s,transform .1s;box-shadow:var(--shadow-xs)}
.hero-search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(242,97,0,.12)}
.hero-search-box:active{transform:scale(.99)}
.hero-search-input{flex:1;border:none;outline:none;padding:.85rem 0;font-size:.9rem;font-family:var(--ff);background:transparent;font-weight:500;color:var(--text);min-width:0}
.hero-search-input::placeholder{color:var(--muted2);font-weight:500}

.home-section-title{font-family:var(--ff-display);font-weight:800;font-size:.92rem;margin-bottom:.6rem;letter-spacing:-.02em;color:var(--text)}

/* ═══ SKELETON SHIMMER — improved rhythm ═══ */
.skel-card{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;position:relative}
.skel-img{aspect-ratio:16/10;background:linear-gradient(90deg,#f2f2f2 0%,#e8e8e8 40%,#f2f2f2 80%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}
.skel-body{padding:.9rem}
.skel-line{height:12px;border-radius:6px;background:linear-gradient(90deg,#f2f2f2 0%,#e8e8e8 40%,#f2f2f2 80%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;margin-bottom:.55rem}
.skel-line.w-80{width:80%}
.skel-line.w-60{width:60%}
.skel-line.w-40{width:40%}

/* ═══ AUTH PAGE — mobile native polish ═══ */
.auth-card{background:#fff;border-radius:20px;padding:1.5rem 1.25rem;max-width:420px;margin:0 auto;box-shadow:var(--shadow-sm)}
.auth-hero{text-align:center;margin-bottom:1.25rem}
.auth-hero-bolt{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--primary2) 100%);display:inline-flex;align-items:center;justify-content:center;color:#fff;margin-bottom:.65rem;box-shadow:0 8px 20px rgba(242,97,0,.3)}
.auth-hero-title{font-family:var(--ff-display);font-weight:900;font-size:1.5rem;letter-spacing:-.02em;color:var(--text);line-height:1.2}
.auth-hero-sub{font-size:.88rem;color:var(--muted);font-weight:500;margin-top:.2rem;line-height:1.5}
.auth-tab-row{display:flex;gap:0;background:#f3f2ed;border-radius:12px;padding:4px;margin-bottom:1.25rem}
.auth-tab{flex:1;border:none;background:none;padding:.55rem;font-size:.88rem;font-weight:800;color:var(--muted);border-radius:8px;cursor:pointer;font-family:var(--ff);transition:.2s}
.auth-tab.active{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.08),0 0 0 .5px rgba(0,0,0,.04)}

/* ═══ TRACK PAGE — native-app rhythm ═══ */
.track-wrap{padding:calc(var(--nav-h) + var(--safe-top) + .75rem) 4vw 2rem;max-width:620px;margin:0 auto}
.track-header-card{background:linear-gradient(135deg,var(--primary) 0%,var(--primary2) 100%);border-radius:20px;padding:1.35rem 1.25rem;color:#fff;margin-bottom:1rem;position:relative;overflow:hidden;box-shadow:0 10px 28px rgba(242,97,0,.25)}
.track-header-card::before{content:"";position:absolute;top:-30px;right:-30px;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.1);pointer-events:none}
.track-header-card.status-ready{background:linear-gradient(135deg,var(--green) 0%,var(--green2) 100%);box-shadow:0 10px 28px rgba(15,138,79,.28)}
.track-header-card.status-completed{background:linear-gradient(135deg,#4b5563 0%,#1f2937 100%);box-shadow:0 10px 28px rgba(0,0,0,.2)}
.track-status-lbl{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;opacity:.88;margin-bottom:.3rem;position:relative;z-index:1}
.track-status-title{font-family:var(--ff-display);font-weight:900;font-size:1.5rem;letter-spacing:-.02em;line-height:1.15;position:relative;z-index:1}
.track-status-sub{font-size:.82rem;font-weight:500;opacity:.92;margin-top:.3rem;position:relative;z-index:1}

/* ═══ BOTTOM-SHEET CART (mobile restaurant page) ═══ */
.cart-fab-open{display:none}
@media(max-width:900px){
  .cart-panel{display:none}
  /* Mobile: hide sidebar cart — user goes via float-cart → cart page */
}
.container{max-width:1100px;margin:0 auto;padding:0 4vw}
.section{padding:1rem 4vw}
.section-heading{font-family:var(--ff-display);font-weight:800;font-size:1rem;color:var(--text);letter-spacing:-.01em}
.section-sub{color:var(--muted);font-size:.78rem;font-weight:600}
.scroll-row{display:flex;gap:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.25rem;scrollbar-width:none}
.scroll-row::-webkit-scrollbar{display:none}
.tag-badge{display:inline-block;font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--primary);background:var(--primary-light);padding:3px 8px;border-radius:4px;margin-bottom:.4rem}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:2px;font-size:.6rem;font-weight:800;padding:2px 6px;border-radius:4px}
.badge-green{background:var(--green);color:#fff}
.badge-orange{background:var(--primary-light);color:var(--primary)}
.badge-red{background:var(--red-light);color:var(--red)}
.badge-gray{background:#f0f0f0;color:var(--muted)}
.badge-active{background:var(--green-light);color:var(--green)}
.badge-inactive{background:var(--red-light);color:var(--red)}

/* Buttons — polished with proper spacing, hover shadow, focus ring */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font-weight:800;border-radius:10px;padding:.65rem 1.25rem;font-size:.85rem;transition:transform .12s,box-shadow .2s,background .15s,border-color .15s;font-family:var(--ff);letter-spacing:-.005em;white-space:nowrap;line-height:1.2}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(242,97,0,.22)}
.btn-primary:hover{background:var(--primary-dark);box-shadow:0 4px 14px rgba(242,97,0,.32)}
.btn-green{background:var(--green);color:#fff;box-shadow:0 2px 8px rgba(15,138,79,.22)}
.btn-green:hover{background:var(--green2);box-shadow:0 4px 14px rgba(15,138,79,.32)}
.btn-outline{background:transparent;border:1.5px solid var(--border2);color:var(--text2)}
.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-tint)}
.btn-ghost{background:transparent;color:var(--text2)}
.btn-ghost:hover{background:var(--bg);color:var(--text)}
.btn-danger{background:var(--red);color:#fff;box-shadow:0 2px 8px rgba(212,43,43,.22)}
.btn-block{width:100%}
.btn-sm{padding:.38rem .75rem;font-size:.78rem;border-radius:8px}
.btn-lg{padding:.75rem 1.5rem;font-size:.92rem;border-radius:12px}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(242,97,0,.22)}

/* Inputs */
.input-group{margin-bottom:.85rem}
.input-label{display:block;font-size:.68rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}
.input-field,.inp{width:100%;border:1.5px solid var(--border2);border-radius:10px;padding:.7rem .95rem;font-size:.9rem;font-weight:500;color:var(--text);background:#fff;transition:border-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.input-field:focus,.inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(242,97,0,.12)}
.input-field::placeholder,.inp::placeholder{color:var(--muted2);font-weight:500}
.input-field.invalid,.inp.invalid{border-color:var(--red);animation:shake .35s var(--ease-quick);box-shadow:0 0 0 3px rgba(212,43,43,.14)}

/* Empty state */
.empty-state{text-align:center;padding:3rem 1rem}
.empty-icon{font-size:2.5rem;margin-bottom:.5rem}
.empty-title{font-family:var(--ff-display);font-weight:800;font-size:1rem;margin-bottom:.25rem;color:var(--text)}
.empty-sub{font-size:.85rem;color:var(--muted);max-width:260px;margin:0 auto;line-height:1.5}

/* Veg dots */
.veg-dot{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:3px;border:1.5px solid;flex-shrink:0}
.veg-dot.veg{border-color:var(--green)}
.veg-dot.non-veg{border-color:var(--red)}
.veg-dot::after{content:'';width:7px;height:7px;border-radius:50%}
.veg-dot.veg::after{background:var(--green)}
.veg-dot.non-veg::after{background:var(--red)}

/* Health badges — refined "Health+" look */
.health-tag{display:inline-flex;align-items:center;gap:2px;font-size:.63rem;font-weight:800;padding:2px 7px;border-radius:4px;line-height:1.4;letter-spacing:.01em}
.health-tag-healthy{background:#dcfce7;color:#15803d;border:1px solid rgba(21,128,61,.12)}
.health-tag-protein{background:#dbeafe;color:#1d4ed8;border:1px solid rgba(29,78,216,.12)}
.health-tag-lowcal{background:#fef3c7;color:#b45309;border:1px solid rgba(180,83,9,.12)}
.health-tag-vegan{background:#ecfdf5;color:#047857;border:1px solid rgba(4,120,87,.12)}
.health-tag-gf{background:#fdf2f8;color:#be185d;border:1px solid rgba(190,24,93,.12)}
.health-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cal-label{font-size:.6rem;color:var(--muted);font-weight:700}

/* Healthy Mode toggle */
.healthy-toggle{display:flex;align-items:center;gap:4px;padding:.25rem .5rem;border-radius:6px;border:1.5px solid #bbf7d0;background:#f0fdf4;font-size:.68rem;font-weight:800;color:#059669;cursor:pointer;transition:.15s;white-space:nowrap}
.healthy-toggle.active{background:#059669;color:#fff;border-color:#059669}
.healthy-toggle:active{transform:scale(.95)}

/* Misc shared */
.fav-btn{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:.1rem}
.fav-btn.active{color:var(--red)}
.share-btn{background:#f8f8f8;border:1px solid var(--border);border-radius:var(--rxs);padding:.3rem .6rem;font-size:.72rem;font-weight:700;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:.2rem}
.dish-search-results{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:0 0 12px 12px;box-shadow:var(--shadow-md);max-height:260px;overflow-y:auto;z-index:10;display:none}
.dish-search-results.show{display:block}
.dish-search-item{padding:.5rem .8rem;border-bottom:1px solid #f8f8f8;cursor:pointer;display:flex;align-items:center;justify-content:space-between}
.dish-search-item:hover{background:var(--primary-light)}
.recently-ordered{display:flex;gap:.5rem;overflow-x:auto;padding:.25rem 0;scrollbar-width:none}
.recently-ordered::-webkit-scrollbar{display:none}
.recent-card{flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:var(--rs);padding:.65rem;width:150px;cursor:pointer}
.recent-card:active{transform:scale(.97);transition:.1s}
.complaint-form{background:var(--bg);border-radius:var(--r);padding:1rem;margin-top:.6rem}
.complaint-form .inp{margin-bottom:.5rem}
.support-layout{display:grid;grid-template-columns:1fr;gap:1rem}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2000;display:none;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .2s var(--ease-out)}
.modal-overlay.open{display:flex;opacity:1}
.modal-overlay.closing{opacity:0}
.modal-box{background:#fff;border-radius:18px 18px 0 0;padding:1.25rem;width:100%;max-width:480px;max-height:85vh;overflow-y:auto;position:relative;animation:iosSheetUp .36s var(--ease-spring);transform-origin:bottom}
.modal-overlay.closing .modal-box{animation:iosSheetDown .22s var(--ease-quick) forwards}
.modal-close{position:absolute;top:.75rem;right:.75rem;background:#f0f0f0;border:none;color:var(--muted);width:28px;height:28px;border-radius:50%;font-size:.85rem;display:flex;align-items:center;justify-content:center;cursor:pointer}
.pulse-dot{width:6px;height:6px;border-radius:50%;background:currentColor;animation:blink 1.5s infinite;display:inline-block}

/* ═══ NAV — Compact App-Style ═══ */
#nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:calc(var(--nav-h) + var(--safe-top));padding-top:var(--safe-top);display:flex;align-items:center;padding-left:4vw;padding-right:4vw;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.04);transition:box-shadow .25s var(--ease-out);backdrop-filter:saturate(180%) blur(10px);-webkit-backdrop-filter:saturate(180%) blur(10px);background:rgba(255,255,255,.92)}
#nav.scrolled{box-shadow:0 2px 14px rgba(0,0,0,.08);background:rgba(255,255,255,.96)}
.nav-logo{display:flex;align-items:center;gap:7px;flex-shrink:0;text-decoration:none}
.nav-logo svg{flex-shrink:0}
.nav-logo-text{font-family:var(--ff-display);font-size:1.1rem;font-weight:900;color:var(--text)}
.nav-logo-text span{color:var(--primary)}
.nav-loc{display:flex;align-items:center;gap:4px;margin-left:14px;background:none;border:none;cursor:pointer;max-width:180px;padding:4px 0;flex:1;min-width:0}
.nav-loc-icon{color:var(--primary);font-size:.95rem;flex-shrink:0}
.nav-loc-text{font-size:.78rem;font-weight:800;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px dotted var(--muted2)}
.nav-loc-arrow{color:var(--primary);font-size:.55rem;flex-shrink:0}
.nav-links{display:none;list-style:none;gap:1.5rem;margin-left:1.5rem}
.nav-links a{color:var(--muted);font-size:.78rem;font-weight:700}
.nav-right{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}
.nav-cart-btn{display:none;position:relative;background:none;border:none;font-size:1.15rem;padding:4px;cursor:pointer}
.cart-badge{position:absolute;top:-4px;right:-6px;background:var(--primary);color:#fff;font-size:.5rem;font-weight:800;min-width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #fff;transition:transform .2s var(--ease-spring)}
.cart-badge.pop{animation:badgePop .45s var(--ease-spring)}
.nav-user{cursor:pointer;padding:2px;display:flex;align-items:center}
.nav-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary2));display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:800}
.btn-nav{border-radius:var(--rxs);font-size:.74rem;font-weight:800;padding:.32rem .7rem;border:none}
.btn-nav-primary{background:var(--primary);color:#fff}
.btn-nav-outline{display:none}
.hamburger{display:none;flex-direction:column;gap:4px;background:none;border:none;padding:4px;cursor:pointer}
.hamburger span{width:18px;height:2px;background:var(--text);border-radius:2px;display:block}
.mobile-menu{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1500}
.mobile-panel{position:fixed;right:0;top:0;bottom:0;width:260px;background:#fff;padding:4rem 1.5rem 2rem;box-shadow:var(--shadow-lg)}
.mobile-panel .nav-links{display:flex;flex-direction:column;gap:0;list-style:none;margin:0}
.mobile-panel .nav-links li a{display:block;padding:.75rem 0;font-size:.95rem;font-weight:700;color:var(--text);border-bottom:1px solid var(--border)}

/* Loader — belt-and-braces: always hidden when not .loading */
#qz-loader{position:fixed;top:0;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--primary),var(--primary2));z-index:9998;transition:width .3s var(--ease-out),opacity .25s;opacity:0;pointer-events:none;will-change:width,opacity}
#qz-loader.loading{opacity:1}
#qz-loader.done{opacity:0;width:100%!important}
#qz-loader:not(.loading){opacity:0!important}

/* Health+ pill — filter bar + category chip */
.filter-btn-health{background:#f0fdf4!important;border-color:#bbf7d0!important;color:#059669!important;font-weight:800}
.filter-btn-health.active{background:#059669!important;color:#fff!important;border-color:#059669!important;box-shadow:0 3px 12px rgba(5,150,105,.28)}
.filter-btn-veg.active{background:var(--green)!important;color:#fff!important;border-color:var(--green)!important}
.filter-btn-nonveg.active{background:var(--red)!important;color:#fff!important;border-color:var(--red)!important}
.filter-btn-veg .veg-dot,.filter-btn-nonveg .veg-dot{margin-right:.25rem;vertical-align:middle}
.filter-btn-veg.active .veg-dot,.filter-btn-nonveg.active .veg-dot{border-color:#fff!important}
.filter-btn-veg.active .veg-dot::after,.filter-btn-nonveg.active .veg-dot::after{background:#fff!important}

/* Cat-chip health variant — subtle hover bump */
.cat-chip-health{font-weight:800}
.cat-chip-health:hover{background:#dcfce7!important;transform:translateY(-1px)}

/* Health header icon — subtle breathing */
.health-header-icon{display:inline-flex;width:60px;height:60px;align-items:center;justify-content:center;border-radius:50%;background:var(--green-light);margin-bottom:.4rem;animation:healthBreathe 4s ease-in-out infinite}
@keyframes healthBreathe{0%,100%{transform:scale(1);box-shadow:0 4px 14px rgba(15,138,79,.12)}50%{transform:scale(1.05);box-shadow:0 6px 22px rgba(15,138,79,.22)}}

/* Campus-card hover (For Cafes) */
.biz-campus-card{transition:transform .25s var(--ease-out),box-shadow .25s}
.biz-campus-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(49,104,179,.12)}
.biz-campus-check:hover{border-color:var(--blue)!important;background:#f8fbff!important}
.biz-campus-check input:checked ~ span{color:var(--blue);font-weight:800}

/* Biz feature-card icon containers */
.biz-feat-icon{display:inline-flex;width:48px;height:48px;align-items:center;justify-content:center;border-radius:14px;background:var(--primary-light);color:var(--primary)}

/* Feature card typography — clear hierarchy (bold title, light description) */
.feature-title{font-family:var(--ff-display);font-weight:800;font-size:1.05rem;letter-spacing:-.02em;color:var(--text);line-height:1.3}
.feature-desc{font-size:.88rem;font-weight:400;color:var(--muted);line-height:1.6}

/* Biz feature card wrapper — softer shadow, hover lift */
.biz-feat-card{background:#fff;border:1px solid var(--border);border-radius:16px;transition:transform .22s var(--ease-out),box-shadow .22s,border-color .22s;box-shadow:var(--shadow-xs)}
.biz-feat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:rgba(242,97,0,.15)}

/* Biz feature grid — cleaner layout, never odd orphans */
.biz-feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}
@media(min-width:1024px){.biz-feat-grid{grid-template-columns:repeat(4,1fr)}}

/* Active-order bottom banner icon */
.active-order-icon{transition:background .3s var(--ease-out)}
.active-order-icon[data-status="pending"]{background:var(--gold)!important}
.active-order-icon[data-status="confirmed"]{background:var(--blue)!important}
.active-order-icon[data-status="preparing"]{background:var(--primary)!important}
.active-order-icon[data-status="ready"]{background:var(--green)!important;animation:pulseSoft 1.5s ease-in-out infinite}
.active-order-icon[data-status="completed"]{background:var(--green)!important}

/* Campus-toggle in nav */
.campus-toggle{transition:background .28s var(--ease-out),color .28s,border-color .28s}
.campus-toggle.active{background:var(--primary-light)!important;color:var(--primary)!important;border-color:rgba(242,97,0,.3)!important}

/* Healthy toggle — support the new SVG icon */
.healthy-toggle .hm-icon{display:inline-flex;width:14px;height:14px;align-items:center;justify-content:center;transition:transform .4s var(--ease-spring)}
.healthy-toggle.active .hm-icon{transform:rotate(360deg) scale(1.1)}

/* Mobile cart-btn tweak so SVG fits */
.nav-cart-btn{display:none;position:relative;background:none;border:none;padding:4px;cursor:pointer;color:var(--text);line-height:0}
.nav-cart-btn svg{display:block}

/* ═══ RESTAURANT CARDS ═══ */
.rest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}
.rest-card{cursor:pointer;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-xs);transition:transform .3s var(--ease-out),box-shadow .3s var(--ease-out);animation:cardIn .4s var(--ease-out) both;animation-delay:calc(var(--i,0) * 40ms)}
.rest-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.rest-card:active{transform:scale(.97);transition:transform .12s var(--ease-quick)}
.rest-img-wrap{position:relative;height:175px;overflow:hidden;background:#f5f3ef}
.rest-img-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease-out)}
.rest-card:hover .rest-img-wrap img{transform:scale(1.05)}
.rest-emoji-bg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3.5rem;background:linear-gradient(135deg,#fff4e6,#ffe4cc)}
.rest-featured-badge{position:absolute;top:10px;left:10px;font-size:.58rem;font-weight:900;background:rgba(0,0,0,.72);backdrop-filter:blur(8px);color:#fff;padding:4px 9px;border-radius:5px;letter-spacing:.04em;text-transform:uppercase}
.rest-closed-overlay{position:absolute;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:.85rem;backdrop-filter:blur(2px)}
.rest-offer-tag{position:absolute;bottom:0;left:0;right:0;padding:10px 12px;background:linear-gradient(transparent,rgba(0,0,0,.75));color:#fff}
.rest-offer-text{font-weight:900;font-size:.88rem;text-transform:uppercase;letter-spacing:.03em}
.rest-body{padding:.7rem .85rem .4rem}
.rest-name{font-weight:800;font-size:.95rem;margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);letter-spacing:-.01em}
.rest-meta{display:flex;align-items:center;gap:.3rem;font-size:.72rem;color:var(--muted);font-weight:600;flex-wrap:wrap}
.rest-rating{display:inline-flex;align-items:center;gap:2px;background:var(--green);color:#fff;font-weight:800;font-size:.64rem;padding:1px 6px;border-radius:4px}
.rest-dot{width:3px;height:3px;border-radius:50%;background:var(--muted2);flex-shrink:0}
.rest-footer{padding:.25rem .85rem .65rem;display:flex;align-items:center;justify-content:space-between}
.rest-order-btn{background:var(--primary);color:#fff;border:none;border-radius:var(--rxs);padding:.32rem .75rem;font-size:.72rem;font-weight:800;font-family:var(--ff);cursor:pointer;transition:.1s}
.rest-order-btn:hover{background:var(--primary-dark)}
.rest-order-btn:active{transform:scale(.94)}
.rest-slots-ok{color:var(--green)}
.rest-slots-low{color:var(--gold)}
.rest-slots-full{color:var(--red)}

/* ═══ FILTER BAR ═══ */
.filter-bar{display:flex;gap:.35rem;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.4rem 0;scrollbar-width:none}
.filter-bar::-webkit-scrollbar{display:none}
.filter-btn{background:#fff;border:1px solid var(--border2);border-radius:var(--rr);padding:.32rem .7rem;font-size:.72rem;font-weight:700;color:var(--text2);white-space:nowrap;flex-shrink:0;font-family:var(--ff);transition:.1s;cursor:pointer}
.filter-btn.active{background:var(--text);color:#fff;border-color:var(--text)}
.filter-btn:active{transform:scale(.95)}
.search-wrap{position:relative;display:flex;align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--rs);padding:0 .6rem;flex-shrink:0;min-width:150px}
.s-icon{font-size:.8rem;margin-right:.3rem;color:var(--muted2)}
.search-wrap .input-field{border:none;background:transparent;padding:.4rem 0;font-size:.78rem}

/* ═══ RESTAURANT DETAIL ═══ */
.rest-detail-hero{height:220px;background:linear-gradient(135deg,#fff4e6 0%,#ffe4cc 45%,#ffd4b0 100%);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;margin-top:var(--nav-h);border-bottom:1px solid var(--border)}
.rest-detail-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 50%,rgba(242,97,0,.08),transparent 50%),radial-gradient(circle at 80% 80%,rgba(244,147,13,.08),transparent 50%)}
.rest-detail-hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:40px;background:linear-gradient(to bottom,transparent,var(--bg))}
.rest-detail-layout{display:grid;grid-template-columns:1fr 320px;gap:1.5rem;max-width:1100px;margin:0 auto;padding:0 4vw 2rem}
.rest-detail-info{max-width:1100px;margin:0 auto;padding:1.25rem 4vw .75rem}
.menu-section-title{font-family:var(--ff-display);font-weight:900;font-size:1rem;margin-bottom:.75rem;padding-bottom:.4rem;border-bottom:2px solid var(--border);letter-spacing:-.02em}
.rest-detail-overlay{position:absolute;inset:0;background:linear-gradient(transparent 60%,rgba(0,0,0,.04))}
.rest-detail-name{font-family:var(--ff-display);font-weight:900;font-size:1.5rem;letter-spacing:-.03em;line-height:1.15}
.rd-name{font-family:var(--ff-display);font-weight:900;font-size:1.5rem;letter-spacing:-.03em;line-height:1.15}
.rdm-wrap{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}
.rdm-item{font-size:.78rem;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:.25rem}

/* Menu Accordion */
.menu-cat-section{border-bottom:8px solid var(--bg);overflow:hidden}
.menu-cat-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 4vw;cursor:pointer;user-select:none;transition:background .1s}
.menu-cat-header:active{background:var(--primary-light)}
.menu-cat-header h3{font-family:var(--ff-display);font-size:1rem;font-weight:900;margin:0;display:flex;align-items:center;gap:.4rem;letter-spacing:-.02em}
.menu-cat-count{font-size:.74rem;color:var(--muted);font-weight:700}
.menu-cat-arrow{font-size:.85rem;transition:transform .2s;color:var(--muted)}
.menu-cat-header.open .menu-cat-arrow{transform:rotate(180deg)}
.menu-cat-items{padding:0 4vw .5rem;display:none}
.menu-cat-header.open+.menu-cat-items{display:block}
.menu-row{display:flex;gap:.75rem;padding:.75rem 0;border-bottom:1px solid #f5f5f5;align-items:flex-start}
.menu-row:last-child{border-bottom:none}
.menu-row-info{flex:1;min-width:0}
.menu-row-name{font-weight:800;font-size:.82rem;color:var(--text);margin-bottom:2px;display:flex;align-items:center;gap:.3rem}
.menu-row-price{font-weight:700;font-size:.82rem;color:var(--text2);margin-bottom:3px}
.menu-row-desc{font-size:.7rem;color:var(--muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.menu-row-img{width:118px;height:96px;border-radius:var(--rs);overflow:hidden;flex-shrink:0;position:relative;background:var(--bg)}
.menu-row-img img{width:100%;height:100%;object-fit:cover}
.menu-row-add{position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);background:#fff;border:1.5px solid var(--green);color:var(--green);font-size:.7rem;font-weight:900;padding:.25rem 1.1rem;border-radius:var(--rxs);cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.06);text-transform:uppercase;letter-spacing:.03em;font-family:var(--ff);min-width:80px;text-align:center}
.menu-row-add:active{transform:translateX(-50%) scale(.93)}
.menu-row-qty{position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);display:flex;background:#fff;border:1.5px solid var(--green);border-radius:var(--rxs);overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.menu-row-qty button{background:var(--green);color:#fff;border:none;width:28px;height:28px;font-size:.9rem;font-weight:800;cursor:pointer}
.menu-row-qty span{padding:0 .6rem;font-weight:800;font-size:.8rem;color:var(--green);display:flex;align-items:center}
.add-btn{background:var(--green);color:#fff;border:none;border-radius:var(--rxs);padding:.3rem .8rem;font-size:.75rem;font-weight:800;cursor:pointer;font-family:var(--ff)}
.add-btn:active{transform:scale(.93)}
.qty-ctrl{display:flex;align-items:center;border:1.5px solid var(--green);border-radius:var(--rxs);overflow:hidden}
.qty-btn{background:var(--green);color:#fff;border:none;width:26px;height:26px;font-size:.85rem;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center}
.qty-num{padding:0 .5rem;font-weight:800;font-size:.8rem;color:var(--green)}
.cart-panel{position:sticky;top:calc(var(--nav-h)+.75rem);height:fit-content}

/* ═══ CART ═══ */
.cart-box{background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.cart-header{display:flex;align-items:center;justify-content:space-between;padding:.7rem 1rem;border-bottom:1px solid var(--border)}
.cart-title{font-weight:800;font-size:.88rem}
.cart-items{padding:.4rem 1rem}
.cart-item{display:flex;align-items:center;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid #f8f8f8}
.ci-name{font-weight:700;font-size:.8rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ci-price{font-weight:800;font-size:.8rem}
.cart-promo{padding:.5rem 1rem;border-top:1px solid var(--border)}
.promo-row{display:flex;gap:.35rem}
.promo-input{flex:1;border:1px solid var(--border2);border-radius:var(--rxs);padding:.32rem .6rem;font-size:.78rem;font-weight:600}
.promo-apply-btn{background:var(--primary);color:#fff;border:none;border-radius:var(--rxs);padding:.32rem .65rem;font-size:.75rem;font-weight:800}
.cart-bill{padding:.4rem 1rem}
.bill-row{display:flex;justify-content:space-between;font-size:.8rem;padding:.18rem 0;font-weight:600}
.bill-row.bill-total{font-weight:900;font-size:.9rem;border-top:1.5px solid var(--border);padding-top:.4rem;margin-top:.2rem}
.bill-discount{color:var(--green)}
.cart-slot{padding:.4rem 1rem;border-top:1px solid var(--border)}
.slot-lbl{font-size:.65rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}
.slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.25rem}
.slot-btn{background:#fff;border:1px solid var(--border2);border-radius:var(--rxs);padding:.32rem;font-size:.72rem;font-weight:700;cursor:pointer;text-align:center}
.slot-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.cart-footer{padding:.65rem 1rem}
.cart-empty-box{text-align:center;padding:2rem 1rem;color:var(--muted)}

/* ═══ TRACKING ═══ */
.track-timeline{position:relative;padding-left:2.5rem}
.track-timeline::before{content:'';position:absolute;left:.75rem;top:.5rem;bottom:.5rem;width:3px;background:#f0f0f0;border-radius:3px}
.track-progress-line{position:absolute;left:.75rem;top:.5rem;width:3px;background:linear-gradient(180deg,var(--green),var(--primary),var(--green));background-size:100% 200%;border-radius:3px;transition:height .8s var(--ease-quick);z-index:1;animation:flowLine 2.2s linear infinite}
.track-step{position:relative;margin-bottom:1.5rem;padding-left:.85rem;opacity:.3;transform:translateX(6px);transition:all .4s}
.track-step.done,.track-step.active{opacity:1;transform:translateX(0)}
.track-dot{position:absolute;left:-1.75rem;top:.1rem;width:18px;height:18px;border-radius:50%;background:#e8e8e8;border:3px solid #fff;z-index:2;transition:all .3s}
.track-step.done .track-dot{background:var(--green);box-shadow:0 0 0 3px rgba(27,166,114,.12)}
.track-step.done .track-dot::after{content:'✓';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.5rem;font-weight:900}
.track-step.active .track-dot{background:var(--primary);box-shadow:0 0 0 5px rgba(242,97,0,.1);animation:pulseDot 2s infinite;transform:scale(1.1);position:absolute}
.track-step.active .track-dot::before{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--primary);opacity:0;animation:expandRing 1.8s var(--ease-out) infinite}
.track-lbl{font-weight:800;font-size:.85rem}
.track-step.done .track-lbl{color:var(--green)}
.track-step.active .track-lbl{color:var(--primary)}
.track-time{font-size:.7rem;color:var(--muted);margin-top:.1rem}
.track-step.active .track-time{color:var(--primary);font-weight:700}
.track-flash{animation:statusFlash 1.5s ease}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block;animation:livePulse 2s infinite}

/* Category chips — text-based, NOT emoji circles */
.cat-chip{display:inline-block;padding:.42rem .85rem;border-radius:var(--rr);font-size:.78rem;font-weight:700;color:var(--text2);background:var(--surface);border:1.5px solid var(--border);white-space:nowrap;cursor:pointer;font-family:var(--ff);transition:.12s;flex-shrink:0}
.cat-chip:active{transform:scale(.95);background:var(--primary-light)}

/* iOS-style toggle switch for settings */
.qz-switch{position:relative;display:inline-block;width:44px;height:26px;flex-shrink:0}
.qz-switch input{opacity:0;width:0;height:0}
.qz-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#d1d5db;border-radius:26px;transition:.2s}
.qz-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.qz-switch input:checked + .qz-slider{background:var(--primary)}
.qz-switch input:checked + .qz-slider:before{transform:translateX(18px)}

/* ═══ PROFILE ═══ */
.profile-layout{display:grid;grid-template-columns:1fr;max-width:600px;margin:0 auto;gap:1rem;width:100%}
.profile-sidebar{display:flex;flex-direction:column;gap:.85rem;width:100%;min-width:0}
.profile-sidebar::-webkit-scrollbar{display:none}
.pnav-item{display:flex;align-items:center;gap:.75rem;padding:.8rem 1rem;border-radius:12px;font-weight:700;font-size:.92rem;color:var(--text2);cursor:pointer;border:none;background:none;white-space:nowrap;width:100%;text-align:left;transition:.15s var(--ease-out);letter-spacing:-.005em;font-family:var(--ff)}
.pnav-item svg{flex-shrink:0;color:var(--muted2);transition:color .15s}
.pnav-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.pnav-item.active,.pnav-item:hover{background:var(--primary-light);color:var(--primary)}
.pnav-item.active svg,.pnav-item:hover svg{color:var(--primary)}
.pnav-item:active{transform:scale(.985);background:rgba(242,97,0,.16)}
.pnav-item.pnav-danger{color:var(--red)}
.pnav-item.pnav-danger svg{color:var(--red)}
.pnav-item.pnav-danger:hover{background:#fee2e2;color:var(--red)}
.profile-avatar-big{width:68px;height:68px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary2));display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.7rem;font-weight:800;margin:0 auto .65rem}
.tier-card{background:linear-gradient(135deg,var(--primary),var(--primary2));border-radius:var(--r);padding:1.1rem;color:#fff;margin-top:.65rem}
.tier-name-lbl{font-family:var(--ff-display);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;opacity:.9}
.tier-points-big{font-size:1.8rem;font-weight:900;font-family:var(--ff-display);line-height:1;margin:.15rem 0}
.tier-sub-lbl{font-size:.68rem;opacity:.85;margin-top:.1rem}
.tier-bar{background:rgba(255,255,255,.25);border-radius:4px;height:5px;margin-top:.6rem;overflow:hidden}
.tier-bar-fill{height:100%;background:#fff;border-radius:4px;transition:width .5s}
#profileContent{width:100%;min-width:0}

/* ═══ BOTTOM TAB BAR ═══ */
.btm-tab{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1200;background:rgba(255,255,255,.96);border-top:1px solid rgba(0,0,0,.06);height:calc(var(--btm-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);box-shadow:0 -1px 10px rgba(0,0,0,.04);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px)}
.btm-tab-inner{display:flex;justify-content:space-around;align-items:center;height:var(--btm-h);max-width:520px;margin:0 auto;position:relative}
.btm-tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 8px;cursor:pointer;border:none;background:none;color:var(--muted2);font-size:.66rem;font-weight:700;font-family:var(--ff);flex:1;position:relative;transition:color .2s var(--ease-out);letter-spacing:-.005em;min-height:48px}
.btm-tab-item.active{color:var(--primary)}
.btm-tab-item:active .btm-icon{transform:scale(.82)}
.btm-tab-item .btm-icon{font-size:1.3rem;line-height:1;transition:transform .28s var(--ease-spring);display:inline-flex;align-items:center;justify-content:center;height:22px}
.btm-tab-item.active .btm-icon{animation:tabBounce .4s var(--ease-spring)}
.btm-tab-badge{position:absolute;top:4px;right:calc(50% - 18px);background:var(--primary);color:#fff;font-size:.56rem;font-weight:800;min-width:17px;height:17px;border-radius:100px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff;transition:transform .2s var(--ease-spring);box-shadow:0 2px 6px rgba(242,97,0,.3)}
.btm-tab-badge.pop{animation:badgePop .45s var(--ease-spring)}
.btm-tab-underline{position:absolute;top:0;height:3px;background:var(--primary);border-radius:0 0 3px 3px;transition:left .28s var(--ease-out),width .28s var(--ease-out);pointer-events:none;opacity:0;box-shadow:0 2px 6px rgba(242,97,0,.3)}
.btm-tab-underline.ready{opacity:1}

/* Floating Cart */
.float-cart{display:none;position:fixed;bottom:calc(var(--btm-h) + 8px + var(--safe-bottom));left:3vw;right:3vw;z-index:1100;background:linear-gradient(135deg,var(--green) 0%,var(--green2) 100%);color:#fff;border-radius:14px;padding:.75rem 1rem;box-shadow:0 10px 28px rgba(15,138,79,.32);cursor:pointer;animation:slideUp .26s var(--ease-out);transition:transform .15s,box-shadow .2s}
.float-cart:active{transform:scale(.98);box-shadow:0 4px 14px rgba(15,138,79,.26)}
.float-cart-inner{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.float-cart-left{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:.86rem;flex:1;min-width:0}
.float-cart-left::before{content:"";display:inline-block;width:32px;height:32px;border-radius:10px;background:rgba(255,255,255,.22);flex-shrink:0;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6"/></svg>');background-repeat:no-repeat;background-position:center}
.float-cart-right{display:flex;align-items:center;gap:.35rem;font-weight:900;font-size:.95rem;background:rgba(255,255,255,.22);padding:.3rem .75rem;border-radius:100px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.float-cart-right::after{content:"›";font-size:1.1rem;font-weight:800;opacity:.9;margin-left:.15rem}

/* Toast */
#toast{position:fixed;bottom:5rem;right:.75rem;z-index:9999;display:flex;flex-direction:column;gap:.35rem;max-width:300px}
#back-to-top{position:fixed;bottom:4.5rem;left:.75rem;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:50%;width:36px;height:36px;font-size:1rem;cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:var(--shadow);z-index:500}
#back-to-top.show{display:flex}

/* ═══ DESKTOP ═══ */
@media(min-width:769px){
  body{padding-bottom:0}
  .nav-links{display:flex}
  .nav-cart-btn{display:flex}
  .nav-loc{margin-left:1.5rem}
  .rest-detail-layout{grid-template-columns:1fr 320px}
  .profile-layout{grid-template-columns:200px 1fr;max-width:800px}
  .profile-sidebar{flex-direction:column;position:sticky;top:calc(var(--nav-h)+.75rem)}
  .support-layout{grid-template-columns:1fr 1fr}
  .modal-overlay{align-items:center}
  .modal-box{border-radius:18px;max-width:440px}
  .rest-detail-hero{height:240px}
  #toast{bottom:2rem;right:1.5rem}
  #back-to-top{bottom:1.5rem}
  .menu-cat-header{padding:.85rem 0}
  .menu-cat-items{padding:0 0 .5rem}
}
/* ═══ MOBILE ═══ */
@media(max-width:768px){
  body{padding-bottom:var(--btm-h)}
  .btm-tab{display:block}
  .float-cart{display:flex}
  #campusToggle{display:none!important}
  .rest-grid{grid-template-columns:1fr 1fr;gap:.5rem}
  .rest-img-wrap{height:130px}
  .rest-body{padding:.5rem .55rem .25rem}
  .rest-name{font-size:.8rem}
  .rest-meta{font-size:.65rem}
  .rest-footer{padding:.2rem .55rem .45rem}
  .rest-order-btn{font-size:.65rem;padding:.22rem .5rem}
  .rest-detail-layout{grid-template-columns:1fr;padding:0 0 2rem}
  .rest-detail-hero{height:160px;font-size:3.5rem;margin-top:var(--nav-h)}
  .cart-panel{position:static;margin-top:.75rem}
  .menu-row-img{width:100px;height:80px;border-radius:8px}
  .menu-row-add{font-size:.65rem;padding:.22rem .9rem;min-width:72px}
  .slot-grid{grid-template-columns:repeat(3,1fr)}
}

/* ═══ DESKTOP — normal website (no centered frame) ═══ */
@media(min-width:1024px){
  body{padding-bottom:0;background:var(--bg)}
  .btm-tab{display:none!important}
  .float-cart{display:none!important}
  .nav-links{display:flex}
  .nav-cart-btn{display:flex}
  /* Default container width */
  .page-wrap,.container{max-width:1100px}
  /* Nav inner row */
  nav > div[style*="max-width:600px"]{max-width:1100px!important}
  /* Restaurant grids: 1100px (home, restaurants, healthy) */
  #page-home > div[style*="max-width:600px"],
  #page-home .home-wrap,
  #page-restaurants > div,
  #page-healthy > div[style*="max-width:600px"],
  #page-healthy .healthy-wrap{max-width:1100px!important}
  /* Restaurant detail: 1100px, menu+cart side-by-side */
  #page-restaurant > div[style*="max-width:1180px"]{max-width:1100px!important}
  .rest-detail-layout{grid-template-columns:1fr 320px;max-width:1100px}
  .rest-detail-info{max-width:1100px}
  /* 3-col restaurant grid */
  .rest-grid{grid-template-columns:repeat(3,1fr);gap:1.25rem}
  .rest-img-wrap{height:170px}
  /* Form/text pages: 1000px centered */
  #page-cart .page-wrap,
  #page-cart > div[style*="max-width:800px"],
  #page-profile > div[style*="max-width:600px"],
  #page-profile .page-wrap,
  #page-wallet.page-wrap,
  #page-wallet .wallet-wrap,
  #page-wallet[style*="max-width:600px"],
  #page-business > div[style*="max-width:1000px"],
  #page-business .page-wrap,
  #page-about > div[style*="max-width:900px"],
  #page-about .page-wrap,
  #page-support > div[style*="max-width:900px"],
  #page-support .page-wrap,
  #page-track .page-wrap,
  #page-track .track-wrap{max-width:1000px!important}
}
/* ═══ REUSABLE SUB-PAGE HEADER (back button + title) ═══ */
.page-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:.25rem 0}
.page-back{width:40px;height:40px;border-radius:12px;background:#fff;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;color:var(--text);cursor:pointer;flex-shrink:0;transition:.18s var(--ease-out);box-shadow:var(--shadow-xs)}
.page-back:hover{background:var(--primary-light);color:var(--primary);border-color:rgba(242,97,0,.25);transform:translateX(-2px)}
.page-back:active{transform:translateX(-2px) scale(.94)}
.page-back:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(242,97,0,.22)}
.page-header-title{font-family:var(--ff-display);font-weight:900;font-size:1.5rem;letter-spacing:-.03em;color:var(--text);line-height:1.1}
.page-header-action{margin-left:auto;display:inline-flex;align-items:center;gap:.4rem}
@media(max-width:640px){.page-header-title{font-size:1.35rem}}

/* ═══ WALLET PAGE — ENHANCED ═══ */
.wallet-title{display:none}

.wallet-hero{position:relative;background:linear-gradient(135deg,var(--primary) 0%,#ff7a2e 45%,#ff944d 100%);border-radius:20px;padding:1.75rem 1.5rem;color:#fff;margin-bottom:1rem;overflow:hidden;box-shadow:0 12px 32px rgba(242,97,0,.26)}
.wh-decor{position:absolute;border-radius:50%;pointer-events:none}
.wh-decor-1{top:-50px;right:-50px;width:180px;height:180px;background:rgba(255,255,255,.12)}
.wh-decor-2{bottom:-60px;right:30px;width:120px;height:120px;background:rgba(255,255,255,.08)}
.wh-decor::before{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.25),transparent 60%)}
.wh-content{position:relative;z-index:1}
.wh-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;opacity:.9;margin-bottom:.4rem}
.wh-balance{font-size:2.85rem;font-weight:900;font-family:var(--ff-display);letter-spacing:-.04em;line-height:1;margin-bottom:.85rem}
.wh-points{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;font-weight:700;background:rgba(255,255,255,.2);padding:.4rem .85rem;border-radius:100px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.22)}

.wallet-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.65rem;margin-bottom:1.25rem}
.wallet-action{background:#fff;border:1px solid var(--border);border-radius:14px;padding:.95rem .5rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.5rem;transition:.2s;font-family:var(--ff);box-shadow:0 1px 3px rgba(0,0,0,.04)}
.wallet-action:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08);border-color:rgba(0,0,0,.08)}
.wallet-action:active{transform:translateY(0)}
.wa-ic{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.wa-lbl{font-weight:800;font-size:.8rem;color:var(--text)}

.wallet-tier-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:1.25rem 1.35rem;margin-bottom:1rem;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.wtc-hdr{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}
.wtc-label{font-size:.72rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.25rem}
.wtc-tier{font-family:var(--ff-display);font-weight:900;font-size:1.35rem;letter-spacing:-.02em;color:var(--text)}
.wtc-ic{width:52px;height:52px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#fef3c7,#fbbf24);color:#92400e;flex-shrink:0}
.wtc-ic.tier-silver{background:linear-gradient(135deg,#f1f5f9,#94a3b8);color:#475569}
.wtc-ic.tier-gold{background:linear-gradient(135deg,#fef3c7,#f59e0b);color:#78350f}
.wtc-ic.tier-platinum{background:linear-gradient(135deg,#ddd6fe,#a78bfa);color:#5b21b6}
.wtc-progress-bar{background:#f3f4f6;border-radius:100px;height:8px;overflow:hidden;margin-bottom:.5rem}
.wtc-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary2));border-radius:100px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.wtc-progress-text{font-size:.78rem;font-weight:700;color:var(--muted)}

.wallet-how{background:#fff;border:1px solid var(--border);border-radius:14px;padding:1.25rem 1.35rem;margin-bottom:1rem;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.wallet-how-title{font-weight:800;font-size:.95rem;margin-bottom:.85rem;color:var(--text)}
.wh-row{display:flex;gap:.85rem;margin-bottom:.85rem;align-items:flex-start}
.wh-row:last-child{margin-bottom:0}
.wh-num{flex-shrink:0;width:32px;height:32px;border-radius:10px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:.95rem}
.wh-info{flex:1}
.wh-head{font-weight:700;font-size:.88rem;color:var(--text)}
.wh-sub{font-size:.78rem;color:var(--muted);margin-top:1px;line-height:1.4}

.wallet-trans{background:#fff;border:1px solid var(--border);border-radius:14px;padding:1.25rem 1.35rem;margin-bottom:1rem;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.wallet-trans-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:.85rem}
.wallet-trans-title{font-weight:800;font-size:.95rem;color:var(--text)}
.wallet-trans-link{font-size:.8rem;color:var(--primary);font-weight:700;cursor:pointer;text-decoration:none}
.wallet-empty{font-size:.85rem;color:var(--muted);text-align:center;padding:1rem 0}

/* Wallet transaction rows */
.wt-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.8rem 0;border-bottom:1px solid var(--border)}
.wt-row:last-child{border-bottom:none}
.wt-left{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}
.wt-ic{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.wt-info{flex:1;min-width:0}
.wt-title{font-size:.88rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.005em}
.wt-date{font-size:.72rem;color:var(--muted);margin-top:1px;font-weight:500}
.wt-amount{font-family:var(--ff-display);font-weight:900;font-size:.95rem;white-space:nowrap;letter-spacing:-.02em}

.wallet-footer{text-align:center;margin-top:1rem;font-size:.72rem;color:var(--muted2);font-weight:600;letter-spacing:.02em}

/* ═══ ADD MONEY MODAL ═══ */
.addmoney-hero{background:linear-gradient(135deg,var(--primary) 0%,#ff7a2e 100%);border-radius:18px;padding:1.5rem 1.25rem 1.25rem;color:#fff;margin-bottom:1.25rem;text-align:center;position:relative;overflow:hidden;box-shadow:0 8px 24px rgba(242,97,0,.2)}
.addmoney-hero::before{content:"";position:absolute;top:-40px;right:-40px;width:130px;height:130px;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.addmoney-hero::after{content:"";position:absolute;bottom:-60px;left:-20px;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.08);pointer-events:none}
.addmoney-hero-label{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.88;margin-bottom:.3rem;position:relative;z-index:1}
.addmoney-input-wrap{display:flex;align-items:center;justify-content:center;gap:.1rem;position:relative;z-index:1;margin-bottom:.3rem}
.addmoney-rupee{font-family:var(--ff-display);font-weight:900;font-size:2.75rem;letter-spacing:-.04em;line-height:1;color:#fff;opacity:.95}
.addmoney-input{background:transparent;border:none;outline:none;font-family:var(--ff-display);font-weight:900;font-size:3.5rem;letter-spacing:-.04em;line-height:1;color:#fff;width:auto;min-width:60px;max-width:240px;text-align:left;padding:0;-webkit-appearance:none;caret-color:#fff;font-variant-numeric:tabular-nums}
.addmoney-input::placeholder{color:rgba(255,255,255,.55)}
.addmoney-input:focus{outline:none}
.addmoney-hint{font-size:.78rem;font-weight:600;opacity:.95;position:relative;z-index:1;min-height:1.2rem;transition:color .2s}

.addmoney-section-title{font-size:.76rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.6rem}
.addmoney-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin-bottom:1.25rem}
.addmoney-chip{background:#fff;border:1.5px solid var(--border);border-radius:12px;padding:.7rem .5rem;font-family:var(--ff-display);font-weight:800;font-size:.95rem;color:var(--text);cursor:pointer;transition:.18s var(--ease-out);letter-spacing:-.02em}
.addmoney-chip:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.addmoney-chip:active{transform:scale(.96)}
.addmoney-chip.active{border-color:var(--primary);color:var(--primary);background:var(--primary-light);box-shadow:0 2px 8px rgba(242,97,0,.18)}

.addmoney-info{background:#fafaf7;border:1px solid var(--border);border-radius:12px;padding:.9rem 1rem;margin-bottom:1.25rem}
.addmoney-info-row{display:flex;align-items:center;gap:.6rem;font-size:.82rem;font-weight:600;color:var(--muted);padding:.25rem 0}
.addmoney-info-row svg{flex-shrink:0;color:var(--primary)}
.addmoney-info-row span{flex:1;line-height:1.4}

.addmoney-submit{margin-top:.5rem;font-size:.95rem;padding:.85rem 1rem}
.addmoney-submit:disabled{background:#d1d5db!important;color:#fff!important;box-shadow:none!important;cursor:not-allowed}

@media(max-width:420px){
  .wallet-actions{grid-template-columns:1fr 1fr 1fr;gap:.5rem}
  .wa-lbl{font-size:.72rem}
  .wh-balance{font-size:2.3rem}
}

/* ═══ HEALTH+ FILTER BANNER (restaurant page) ═══ */
.health-filter-banner{display:flex;align-items:center;gap:.75rem;background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border:1.5px solid #86efac;border-radius:12px;padding:.75rem 1rem;margin-bottom:1.25rem;animation:slideUp .35s var(--ease-out)}
.health-filter-banner .hfb-icon{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:10px;background:#059669;color:#fff;flex-shrink:0}
.health-filter-banner .hfb-text{flex:1;font-size:.85rem;color:#065f46;font-weight:600;line-height:1.4}
.health-filter-banner .hfb-text strong{font-weight:800;color:#047857}
.health-filter-banner .hfb-clear{background:#fff;border:1.5px solid #86efac;border-radius:100px;padding:.35rem .85rem;font-size:.75rem;font-weight:800;color:#047857;cursor:pointer;font-family:var(--ff);white-space:nowrap;transition:.15s}
.health-filter-banner .hfb-clear:hover{background:#dcfce7}

/* Menu empty state when Health+ has no matches */
.menu-empty-health{text-align:center;padding:3rem 1.25rem;background:#f0fdf4;border:1.5px dashed #86efac;border-radius:14px;margin:1rem 0}
.menu-empty-health .me-icon{width:72px;height:72px;border-radius:50%;background:#dcfce7;display:inline-flex;align-items:center;justify-content:center;margin-bottom:1rem}
.menu-empty-health .me-title{font-weight:800;color:#065f46;font-size:1rem;margin-bottom:.35rem;font-family:var(--ff-display)}
.menu-empty-health .me-sub{font-size:.85rem;color:#059669;max-width:320px;margin:0 auto;line-height:1.55}

/* Low Sugar + Fresh Juice tag variants */
.health-tag-lowsugar{background:#fdf2f8;color:#be185d;border:1px solid rgba(190,24,93,.2)}
.health-tag-juice{background:#fef3c7;color:#b45309;border:1px solid rgba(180,83,9,.2)}

/* ═══ SETTINGS — REDESIGN ═══ */
.settings-hdr{font-family:var(--ff-display);font-weight:900;font-size:1.65rem;letter-spacing:-.03em;margin:0 0 1.5rem;color:var(--text)}
/* Settings groups fade+slide in on load for premium feel */
.settings-group{margin-bottom:1.5rem;animation:settingsSlide .5s var(--ease-out) both}
.settings-group:nth-child(1){animation-delay:.04s}
.settings-group:nth-child(2){animation-delay:.09s}
.settings-group:nth-child(3){animation-delay:.14s}
.settings-group:nth-child(4){animation-delay:.19s}
.settings-group:nth-child(5){animation-delay:.24s}
.settings-group:nth-child(6){animation-delay:.29s}
.settings-group:nth-child(7){animation-delay:.34s}
@keyframes settingsSlide{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}}
.settings-group-title{font-size:.72rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .5rem .35rem}
.settings-card{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.04)}

.setting-row{display:flex;align-items:center;gap:.85rem;padding:.85rem 1rem;border-bottom:1px solid var(--border);cursor:default;transition:background .15s;outline:none;min-height:64px}
.setting-row:last-child{border-bottom:none}
.setting-row[role="button"]{cursor:pointer}
.setting-row[role="button"]:hover{background:#fafafa}
.setting-row[role="button"]:active{background:#f0f0f0}
.setting-row[role="button"]:focus-visible{background:#fafafa;box-shadow:inset 3px 0 0 var(--primary)}
.setting-row.danger .setting-lbl{color:var(--red)}

.setting-ic{flex-shrink:0;width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary)}
.setting-body{flex:1;min-width:0}
.setting-lbl{font-weight:700;font-size:.92rem;color:var(--text);letter-spacing:-.01em;line-height:1.3}
.setting-sub{font-size:.76rem;color:var(--muted);margin-top:2px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.setting-right{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0}
.setting-chev{opacity:.6}

.setting-pill{font-size:.68rem;font-weight:800;padding:3px 9px;border-radius:100px;letter-spacing:.02em}
.pill-green{background:#dcfce7;color:#15803d}
.pill-grey{background:#f3f4f6;color:#6b7280}

.settings-version{text-align:center;color:var(--muted2);font-size:.74rem;font-weight:600;padding:.5rem 0 1.5rem;letter-spacing:.02em}

/* Toggle switch (polished) */
.qz-switch{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0}
.qz-switch input{opacity:0;width:0;height:0}
.qz-slider{position:absolute;cursor:pointer;inset:0;background:#e5e7eb;transition:.25s;border-radius:100px}
.qz-slider::before{position:absolute;content:"";height:18px;width:18px;left:3px;top:3px;background:#fff;transition:.25s cubic-bezier(.3,1.3,.5,1);border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.15)}
.qz-switch input:checked + .qz-slider{background:var(--primary)}
.qz-switch input:checked + .qz-slider::before{transform:translateX(18px)}
.qz-switch input:focus-visible + .qz-slider{box-shadow:0 0 0 3px rgba(242,97,0,.25)}

/* ═══ EDIT MODAL (bottom sheet on mobile, centered on desktop) ═══ */
.edit-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:3100;display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .25s}
.edit-modal-overlay.shown{opacity:1}
.edit-modal{background:#fff;width:100%;max-width:520px;max-height:90vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;overflow:hidden;transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1);box-shadow:0 -10px 40px rgba(0,0,0,.18)}
.edit-modal-overlay.shown .edit-modal{transform:translateY(0)}
.edit-modal-hdr{display:flex;align-items:center;gap:.5rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}
.edit-modal-back{background:transparent;border:none;padding:.35rem;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center;border-radius:8px;transition:.15s}
.edit-modal-back:hover{background:#f3f4f6}
.edit-modal-title{font-family:var(--ff-display);font-weight:800;font-size:1.1rem;letter-spacing:-.02em;flex:1}
.edit-modal-body{padding:1.25rem;overflow-y:auto;flex:1}
@media(min-width:640px){
  .edit-modal-overlay{align-items:center;padding:1rem}
  .edit-modal{border-radius:18px;max-height:85vh;transform:translateY(40px) scale(.96)}
  .edit-modal-overlay.shown .edit-modal{transform:translateY(0) scale(1)}
}

/* Language picker options */
.lang-option{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1rem;border-radius:12px;cursor:pointer;transition:.15s;font-size:.95rem;font-weight:600;margin-bottom:.35rem;border:1.5px solid var(--border)}
.lang-option:hover{background:var(--primary-light);border-color:rgba(242,97,0,.3)}
.lang-option.selected{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:800}
.lang-option.disabled{opacity:.55;cursor:not-allowed}

/* Favorites list (inside edit-modal) */
.fav-row{display:flex;align-items:center;gap:.85rem;padding:.9rem 1rem;border:1.5px solid var(--border);border-radius:12px;cursor:pointer;transition:.15s;margin-bottom:.5rem;background:#fff}
.fav-row:hover{background:var(--primary-light);border-color:rgba(242,97,0,.3);transform:translateX(2px)}
.fav-body{flex:1;min-width:0}
.fav-name{font-weight:800;font-size:.95rem;color:var(--text);letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fav-sub{font-size:.76rem;color:var(--muted);margin-top:2px}
.fav-remove{background:#fff;border:1.5px solid var(--border);border-radius:8px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;flex-shrink:0;transition:.15s}
.fav-remove:hover{background:#fee2e2;color:#dc2626;border-color:#fca5a5}
.fav-empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}
.fav-empty-title{font-family:var(--ff-display);font-weight:800;font-size:1.05rem;color:var(--text);margin-top:1rem;letter-spacing:-.02em}
.fav-empty-sub{font-size:.85rem;font-weight:500;margin-top:.35rem;max-width:240px;margin-left:auto;margin-right:auto;line-height:1.5}

/* Explicit heading weights (body is now 400 default) */
h1,h2,h3,h4,h5,h6{font-weight:800;letter-spacing:-.02em}
.btn,button.btn-primary,button.btn-outline,button.btn-ghost{font-weight:700}
strong,b{font-weight:700}

/* ═══ ORDER SUCCESS PAGE ═══ */
#page-order-success{min-height:100vh}
.success-wrap{max-width:640px;margin:0 auto;padding:calc(var(--nav-h) + 3rem) 1rem 3rem;text-align:center}

/* Animated checkmark circle */
.success-check{width:88px;height:88px;border-radius:50%;background:linear-gradient(135deg,var(--green),var(--green2));display:inline-flex;align-items:center;justify-content:center;margin:0 auto 1.25rem;box-shadow:0 10px 32px rgba(15,138,79,.35);animation:successPop .55s cubic-bezier(.34,1.56,.64,1) both}
.success-check svg{width:46px;height:46px;animation:checkDraw .45s .2s cubic-bezier(.65,0,.45,1) both}
@keyframes successPop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes checkDraw{0%{stroke-dasharray:24;stroke-dashoffset:24;opacity:0}40%{opacity:1}100%{stroke-dasharray:24;stroke-dashoffset:0;opacity:1}}

.success-title{font-family:var(--ff-display);font-weight:900;font-size:2rem;letter-spacing:-.03em;margin:0 0 .35rem;text-align:center;color:var(--text)}
.success-sub{color:var(--muted);font-size:.92rem;font-weight:600;margin:0 0 1.75rem;text-align:center;letter-spacing:.02em}

/* Details card */
.success-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:1.25rem 1.5rem;box-shadow:0 4px 18px rgba(0,0,0,.04);text-align:left;max-width:100%;margin:0 auto}
.success-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border);font-size:.9rem}
.success-row:last-of-type{border-bottom:none}
.success-row .sr-label{color:var(--muted);font-weight:600;font-size:.85rem;flex-shrink:0}
.success-row .sr-value{font-weight:800;color:var(--text);text-align:right;min-width:0;word-break:break-word}
.success-row .sr-value-big{font-weight:900;color:var(--primary);font-size:1.15rem}
.success-row .sr-type-icon{display:inline-flex;vertical-align:middle;margin-right:.35rem;color:var(--primary)}
.success-points{background:var(--primary-light);border:1px solid rgba(242,97,0,.15);border-radius:12px;padding:.7rem 1rem;font-size:.86rem;font-weight:700;color:var(--primary);text-align:center;margin-top:.85rem;display:flex;align-items:center;justify-content:center;gap:.4rem}
.success-points svg{flex-shrink:0}

.success-actions{display:flex;gap:.75rem;margin-top:1.75rem;justify-content:center;flex-wrap:wrap}
.success-actions .btn{min-width:140px}

  /* Mobile */
@media(max-width:640px){
  .success-wrap{padding:calc(var(--nav-h) + 1.5rem) .9rem 2rem}
  .success-title{font-size:1.65rem}
  .success-check{width:72px;height:72px}
  .success-check svg{width:38px;height:38px}
  .success-card{padding:1rem 1.1rem;border-radius:14px}
  .success-row{font-size:.85rem;padding:.65rem 0}
  .success-row .sr-label{font-size:.8rem}
  .success-actions .btn{flex:1;min-width:0}
}
@media(min-width:1024px){
  /* Let about-page narrow inner text wrappers breathe */
  #page-about p[style*="max-width:540px"],
  #page-about p[style*="max-width:560px"]{max-width:640px!important}
  /* Auth: keep card 440px on wider background */
  #page-auth > div[style*="max-width:600px"]{max-width:1000px!important}
  #page-auth > div[style*="max-width:600px"] > div[style*="max-width:400px"]{max-width:440px!important}
  /* Legal pages: 900px centered */
  #page-privacy .page-wrap,#page-privacy > div,
  #page-terms .page-wrap,#page-terms > div,
  #page-refund .page-wrap,#page-refund > div{max-width:900px!important;margin-left:auto!important;margin-right:auto!important}
  /* Modals */
  .modal-overlay{align-items:center}
  .modal-box{max-width:480px;border-radius:18px}
}
@media(max-width:420px){
  .rest-grid{grid-template-columns:1fr;gap:.5rem}
  .rest-img-wrap{height:160px}
  .rest-name{font-size:.85rem}
  .slot-grid{grid-template-columns:repeat(2,1fr)}
}

/* ═══════════════════════════════════════════════════
   PHASE C — PREMIUM ANIMATIONS & MICRO-INTERACTIONS
   Premium polish, GPU-only, 60fps target
   ═══════════════════════════════════════════════════ */

/* Easing + duration tokens */
:root{
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --ease-quick:cubic-bezier(.4,0,.2,1);
  --ease-smooth:cubic-bezier(.25,.8,.25,1);
  --dur-fast:150ms;
  --dur-base:250ms;
  --dur-slow:400ms;
}

/* Keyframes (GPU-only: transform + opacity) */
@keyframes pageSlideIn{from{opacity:0;transform:translate3d(22px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pageSlideOut{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(22px,0,0)}}
@keyframes staggerUp{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes badgePulse{0%,100%{box-shadow:0 0 0 0 rgba(242,97,0,.35)}50%{box-shadow:0 0 0 6px rgba(242,97,0,0)}}
@keyframes heartBurst{0%{transform:scale(1)}40%{transform:scale(1.45)}70%{transform:scale(.92)}100%{transform:scale(1)}}
@keyframes heartParticles{0%{opacity:1;transform:scale(.3)}100%{opacity:0;transform:scale(1.9)}}
@keyframes badgePop{0%{transform:scale(1)}45%{transform:scale(1.42)}100%{transform:scale(1)}}
@keyframes qtyFlipUp{0%{transform:translate3d(0,12px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}
@keyframes dotSpin{from{transform:rotate(-180deg) scale(.4);opacity:0}to{transform:rotate(0) scale(1);opacity:1}}
@keyframes cartSlideIn{0%{opacity:0;transform:translate3d(0,22px,0)}65%{opacity:1;transform:translate3d(0,-4px,0)}100%{transform:translate3d(0,0,0)}}
@keyframes floatSoft{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-6px,0)}}
@keyframes pulseSoft{0%,100%{transform:scale(1);box-shadow:0 4px 16px rgba(15,138,79,.3)}50%{transform:scale(1.015);box-shadow:0 6px 22px rgba(15,138,79,.48)}}
@keyframes expandRing{0%{transform:scale(.85);opacity:.75}100%{transform:scale(2.3);opacity:0}}
@keyframes progressShine{0%{background-position:0 0}100%{background-position:0 -40px}}
@keyframes tabBounce{0%,100%{transform:translate3d(0,0,0) scale(1)}30%{transform:translate3d(0,-3px,0) scale(1.15)}60%{transform:translate3d(0,0,0) scale(.95)}}
@keyframes iosSheetUp{0%{transform:translate3d(0,100%,0)}100%{transform:translate3d(0,0,0)}}
@keyframes iosSheetDown{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,100%,0)}}
@keyframes backdropIn{from{opacity:0}to{opacity:1}}
@keyframes shakeX{0%,100%{transform:translate3d(0,0,0)}20%,60%{transform:translate3d(-6px,0,0)}40%,80%{transform:translate3d(6px,0,0)}}
@keyframes drawStroke{to{stroke-dashoffset:0}}
@keyframes toastIn{0%{opacity:0;transform:translate3d(0,20px,0) scale(.92)}60%{opacity:1;transform:translate3d(0,-4px,0) scale(1.02)}100%{transform:translate3d(0,0,0) scale(1)}}
@keyframes toastInDesktop{0%{opacity:0;transform:translate3d(40px,0,0)}100%{opacity:1;transform:translate3d(0,0,0)}}
@keyframes toastOut{to{opacity:0;transform:translate3d(0,-10px,0) scale(.95)}}
@keyframes btnPulseGreen{0%,100%{box-shadow:0 4px 16px rgba(15,138,79,.3)}50%{box-shadow:0 6px 22px rgba(15,138,79,.5)}}
@keyframes emptyFloat{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-5px,0)}}

/* Page transitions — overrides earlier line */
.page.active{animation:pageSlideIn .34s var(--ease-out) both}
.page.exiting{animation:pageSlideOut .22s var(--ease-quick) both;pointer-events:none}

/* Staggered reveals (cards set style="--i:N") */
.stagger-item{opacity:0;animation:staggerUp .42s var(--ease-out) both;animation-delay:calc(var(--i,0) * 40ms);will-change:transform,opacity}

/* Restaurant cards — enhanced */
.rest-card{will-change:auto}
.rest-card:hover{transform:translate3d(0,-4px,0);box-shadow:var(--shadow-md)}
.rest-card:hover .rest-img-wrap img{transform:scale(1.05)}
.rest-card:active{transform:scale(.97)!important;transition:transform .1s var(--ease-quick)}
.rest-featured-badge{animation:badgePulse 2.4s var(--ease-smooth) infinite}

/* Content-shaped skeletons */
.skel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}
@media(max-width:768px){.skel-grid{grid-template-columns:1fr 1fr;gap:.5rem}}
@media(min-width:1024px){.skel-grid{grid-template-columns:repeat(3,1fr);gap:1.25rem}}
.skel-card{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-xs)}
.skel-card .skel-img{height:175px;background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}
.skel-card .skel-body{padding:.7rem .85rem .75rem}
.skel-line{height:12px;background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:6px;margin-bottom:.45rem}
.skel-line.w80{width:80%}.skel-line.w60{width:60%}.skel-line.w40{width:40%}.skel-line.w30{width:30%}.skel-line.w70{width:70%}.skel-line.w50{width:50%}
.skel-row{display:flex;gap:.75rem;padding:.85rem 0;border-bottom:1px solid #f5f5f5;align-items:flex-start}
.skel-row .skel-info{flex:1}
.skel-row .skel-thumb{width:118px;height:96px;border-radius:var(--rs);background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;flex-shrink:0}
@media(max-width:768px){.skel-card .skel-img{height:130px}.skel-row .skel-thumb{width:100px;height:80px}}
.skel-hero{height:220px;background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;margin-top:var(--nav-h)}
@media(max-width:768px){.skel-hero{height:160px}}
.skel-profile{display:flex;flex-direction:column;align-items:center;padding:1.5rem}
.skel-profile .skel-avatar{width:68px;height:68px;border-radius:50%;background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;margin-bottom:.85rem}
.skel-profile .skel-card-full{width:100%;height:110px;background:linear-gradient(90deg,#f0f0f0 0%,#f8f8f8 50%,#f0f0f0 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--r);margin-top:.5rem}

/* Favourite heart burst */
.fav-btn{position:relative}
.fav-btn.bursting{animation:heartBurst .5s var(--ease-spring)}
.fav-btn.bursting::before{content:'';position:absolute;inset:-8px;border-radius:50%;background:radial-gradient(circle,rgba(212,43,43,.4) 0%,transparent 65%);animation:heartParticles .55s ease-out;pointer-events:none;z-index:-1}

/* Cart badge pop */
.cart-badge.pop,.btm-tab-badge.pop{animation:badgePop .42s var(--ease-spring)}

/* Quantity flip */
.qty-flip{display:inline-block;animation:qtyFlipUp .22s var(--ease-out)}

/* Veg dot rotate-in */
.veg-dot.rotated{animation:dotSpin .35s var(--ease-out)}

/* Menu row add morph transitions */
.menu-row-add-wrap{transition:opacity .18s var(--ease-out)}
.menu-row-add,.menu-row-qty{transition:transform .22s var(--ease-spring)}
.menu-row-add:active{transform:translateX(-50%) scale(.9)!important}

/* Phase E: Clearer ADD / qty buttons — bigger, more contrast */
.menu-row-add{font-size:.82rem!important;padding:.45rem 1.3rem!important;min-width:92px!important;border-width:2px!important;font-weight:900!important;letter-spacing:.04em!important;box-shadow:0 3px 10px rgba(15,138,79,.18)!important}
.menu-row-add:hover{background:var(--green)!important;color:#fff!important;transform:translateX(-50%) translateY(-1px)!important;box-shadow:0 4px 14px rgba(15,138,79,.32)!important}
.menu-row-qty{border-width:2px!important;box-shadow:0 3px 10px rgba(15,138,79,.18)!important}
.menu-row-qty button{width:34px!important;height:34px!important;font-size:1.05rem!important}
.menu-row-qty span{padding:0 .85rem!important;font-size:.92rem!important;min-width:24px!important;text-align:center}

/* Phase E: Active category tab — stronger shadow + lifted */
.menu-cats-bar .cat-btn.active{transform:translateY(-1px) scale(1.05)!important;box-shadow:0 6px 18px rgba(242,97,0,.38)!important;font-weight:900!important}

/* Cart item slide-in + swipe */
.cart-item{animation:cartSlideIn .4s var(--ease-spring);will-change:transform}
.cart-item.swiping{transition:none}
.cart-item.swipe-snap{transition:transform .25s var(--ease-out)}
.cart-item.swipe-committed{transition:transform .28s var(--ease-quick),opacity .28s,max-height .28s,padding .28s,margin .28s;transform:translateX(110%);opacity:0;max-height:0;padding-top:0;padding-bottom:0;border:0!important;overflow:hidden}

/* Empty cart illustration */
.cart-empty-illus{display:inline-block;animation:emptyFloat 3s ease-in-out infinite;color:var(--muted2);margin-bottom:.75rem}

/* Checkout pulse */
.btn-checkout-pulse,.cart-checkout-btn.has-items{animation:btnPulseGreen 3s ease-in-out infinite;animation-delay:1.5s}

/* Tracking — gradient fill + active ring */
.track-progress-line{background:linear-gradient(180deg,var(--green) 0%,var(--primary) 50%,var(--green) 100%);background-size:100% 40px;animation:progressShine 2.5s linear infinite}
.track-step.active .track-dot{position:relative}
.track-step.active .track-dot::before{content:'';position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--primary);animation:expandRing 1.8s ease-out infinite;pointer-events:none}

/* Bottom tab bounce + active underline */
.btm-tab-item.active .btm-icon{animation:tabBounce .4s var(--ease-spring)}
.btm-tab-inner{position:relative}
.btm-tab-underline{position:absolute;top:0;height:2px;background:var(--primary);border-radius:0 0 2px 2px;transition:left .28s var(--ease-out),width .28s var(--ease-out);pointer-events:none;opacity:0}
.btm-tab-underline.ready{opacity:1}

/* Healthy toggle icon rotate + smooth color */
.healthy-toggle{transition:background .28s var(--ease-out),color .28s var(--ease-out),border-color .28s var(--ease-out)}
.healthy-toggle .hm-icon{display:inline-block;transition:transform .4s var(--ease-spring)}
.healthy-toggle.active .hm-icon{transform:rotate(360deg)}

/* Modal — iOS bottom sheet + drag */
.modal-overlay{animation:backdropIn .22s ease-out}
.modal-box{animation:iosSheetUp .36s var(--ease-out);will-change:transform}
.modal-overlay.closing{animation:backdropIn .22s ease-out reverse forwards;pointer-events:none}
.modal-overlay.closing .modal-box{animation:iosSheetDown .26s var(--ease-quick) forwards}
.modal-box.dragging{transition:none}
.modal-box.snap-back{transition:transform .3s var(--ease-spring)}
.modal-drag-handle{display:block;width:36px;height:4px;background:#d5d1ca;border-radius:3px;margin:-.4rem auto .75rem;cursor:grab}
@media(min-width:769px){.modal-drag-handle{display:none}.modal-box{animation:staggerUp .3s var(--ease-out)}}

/* Input focus glow + invalid */
.input-field,.inp{transition:border .18s var(--ease-out),box-shadow .18s var(--ease-out)}
.input-field:focus,.inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(242,97,0,.13)}
.inp.invalid,.input-field.invalid{animation:shakeX .35s var(--ease-quick);border-color:var(--red)!important;box-shadow:0 0 0 3px rgba(212,43,43,.15)}

/* Button loading state */
.btn.loading{position:relative;color:transparent!important;pointer-events:none}
.btn.loading::after{content:'';position:absolute;width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite;left:calc(50% - 8px);top:calc(50% - 8px);color:#fff}

/* SVG check draw */
.check-draw-circle{stroke-dasharray:150;stroke-dashoffset:150;animation:drawStroke .55s var(--ease-out) forwards}
.check-draw-tick{stroke-dasharray:30;stroke-dashoffset:30;animation:drawStroke .3s var(--ease-out) .45s forwards}

/* Toast styling (original JS renders .toast-item — now with TYPE class too) */
#toast{pointer-events:none}
.toast-item{pointer-events:auto;background:#222;color:#fff;padding:.7rem .95rem;border-radius:10px;font-size:.82rem;font-weight:700;display:flex;align-items:center;gap:.5rem;box-shadow:0 8px 24px rgba(0,0,0,.18);max-width:320px;animation:toastIn .42s var(--ease-spring);will-change:transform,opacity;touch-action:pan-y;cursor:pointer}
.toast-item.success{background:var(--green)}
.toast-item.error{background:var(--red)}
.toast-item.warning{background:var(--gold)}
.toast-item.info{background:#2a2a2a}
.toast-item.hide{animation:toastOut .25s var(--ease-quick) forwards}
.toast-item.swiping{transition:none}
.toast-item.swipe-snap{transition:transform .22s var(--ease-out)}
@media(min-width:769px){
  #toast{top:calc(var(--nav-h) + .75rem)!important;right:1.5rem!important;bottom:auto!important;flex-direction:column-reverse!important}
  .toast-item{animation:toastInDesktop .3s var(--ease-out)}
}

/* Nav shrink on scroll */
#nav{transition:height .2s var(--ease-out),box-shadow .2s var(--ease-out)}
#nav.scrolled{height:54px;box-shadow:0 2px 10px rgba(0,0,0,.07)}

/* Back-to-top scale-in */
#back-to-top{display:flex!important;opacity:0;transform:scale(.7);transition:opacity .22s var(--ease-out),transform .22s var(--ease-spring);pointer-events:none}
#back-to-top.show{opacity:1;transform:scale(1);pointer-events:auto}
#back-to-top:hover{transform:scale(1.08)}
#back-to-top:active{transform:scale(.92)}

/* Parallax hero */
.rest-detail-hero{will-change:transform}
.rest-detail-hero.parallaxing > *:not(::before):not(::after){position:relative}

/* Pull-to-refresh indicator */
#ptr-indicator{position:fixed;top:calc(var(--nav-h) + 6px);left:50%;width:38px;height:38px;background:#fff;border-radius:50%;box-shadow:0 4px 14px rgba(0,0,0,.14);display:flex;align-items:center;justify-content:center;z-index:1050;opacity:0;pointer-events:none;will-change:transform,opacity;transform:translate3d(-50%,-60px,0) scale(.6)}
#ptr-indicator.pulling{opacity:1}
#ptr-indicator.refreshing{opacity:1;transform:translate3d(-50%,10px,0) scale(1);transition:transform .3s var(--ease-spring)}
#ptr-indicator.refreshing .ptr-spinner{animation:spin .7s linear infinite}
.ptr-spinner{width:18px;height:18px;border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;transition:transform .15s}

/* Float cart pulse when items present */
.float-cart{animation:cartSlideIn .4s var(--ease-spring)}

/* Featured card gold glow */
.rest-card.featured-glow{box-shadow:0 1px 3px rgba(0,0,0,.06),0 0 0 1px rgba(212,147,13,.18)}

/* Reduced motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  #ptr-indicator,.cart-empty-illus,.rest-featured-badge,.track-progress-line,.live-dot,.pulse-dot,.cart-checkout-btn.has-items,.btn-checkout-pulse{animation:none!important}
  .stagger-item{opacity:1!important}
}

/* ═══════════════════════════════════════════════════
   PHASE C2 — BUG FIXES + 10× UI
   Fixes missing CSS classes from restaurant page,
   adds scroll-morph header, ripples, confetti,
   dramatic animations, animated empty states.
   ═══════════════════════════════════════════════════ */

/* ─── CRITICAL BUG FIXES ─── */

/* Missing: .menu-cats-bar (was causing "snacks" orphan text) */
.menu-cats-bar{position:sticky;top:var(--nav-h);z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);max-width:1100px;margin:0 auto;padding:.7rem 4vw;display:flex;gap:.4rem;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--border);scroll-behavior:smooth}
.menu-cats-bar::-webkit-scrollbar{display:none}
.menu-cats-bar:empty{display:none}

/* Missing: .cat-btn (category chips — was rendering as plain unstyled button) */
.cat-btn{flex-shrink:0;background:#fff;border:1.5px solid var(--border2);border-radius:100px;padding:.5rem 1.05rem;font-size:.78rem;font-weight:800;font-family:var(--ff);color:var(--text2);cursor:pointer;white-space:nowrap;transition:transform .28s var(--ease-spring),background .22s,color .22s,border-color .22s,box-shadow .22s;letter-spacing:-.01em;text-transform:capitalize;position:relative}
.cat-btn:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.cat-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 4px 14px rgba(242,97,0,.28);transform:translateY(-1px) scale(1.04)}
.cat-btn:active{transform:scale(.93)}

/* Missing: .rest-detail-meta (was causing meta items to stack vertically) */
.rest-detail-meta{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin-top:.65rem;align-items:center}
.rdm-item{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;color:var(--muted);font-weight:600}
.rdm-item strong{color:var(--text);font-weight:800}
.rdm-item svg{flex-shrink:0;opacity:.75}
.rdm-item::before{content:'';display:none}

/* Missing: .card-hover helper */
.card-hover{cursor:pointer;transition:transform .28s var(--ease-out),box-shadow .28s}

/* ─── DRAMATIC UPGRADES ─── */

/* Bigger stagger: 40ms → 90ms + scale entry */
@keyframes staggerPop{from{opacity:0;transform:translate3d(0,22px,0) scale(.94)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
.stagger-item{animation:staggerPop .55s var(--ease-spring) both!important;animation-delay:calc(var(--i,0) * 90ms)!important}

/* Bigger card hover — lift 8px + image zoom 1.15x */
.rest-card{transition:transform .38s var(--ease-spring),box-shadow .38s var(--ease-out)!important}
.rest-card:hover{transform:translate3d(0,-8px,0)!important;box-shadow:0 18px 40px rgba(0,0,0,.12)!important}
.rest-card:hover .rest-img-wrap img{transform:scale(1.15)!important;transition:transform .55s var(--ease-out)!important}
.rest-card:active{transform:scale(.96)!important}

/* Big, dramatic tap feedback */
.rest-order-btn:active,.btn:active,.btn-primary:active,.btn-green:active{transform:scale(.9)!important}
.menu-row-add:active{transform:translateX(-50%) scale(.85)!important;box-shadow:0 2px 12px rgba(15,138,79,.4)!important}
.add-btn:active{transform:scale(.85)!important}

/* Restaurant detail page — REWORKED HERO */
#page-restaurant .rest-detail-hero{height:160px!important;background:linear-gradient(135deg,#fff4e6 0%,#ffe4cc 50%,#ffcda0 100%);position:relative}
@media(max-width:768px){#page-restaurant .rest-detail-hero{height:120px!important}}
#page-restaurant .rest-detail-hero::before{content:'';position:absolute;inset:0;background:
  radial-gradient(circle at 20% 30%,rgba(242,97,0,.14),transparent 45%),
  radial-gradient(circle at 80% 70%,rgba(244,147,13,.18),transparent 45%),
  radial-gradient(circle at 50% 110%,rgba(15,138,79,.12),transparent 50%);
  animation:heroBreathing 7s ease-in-out infinite
}
@keyframes heroBreathing{0%,100%{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}
#page-restaurant .rest-detail-hero #rdHero > div{font-size:3.5rem!important;filter:drop-shadow(0 6px 14px rgba(0,0,0,.1));animation:heroFloat 4s ease-in-out infinite}
@keyframes heroFloat{0%,100%{transform:translate3d(0,0,0) rotate(-2deg)}50%{transform:translate3d(0,-8px,0) rotate(2deg)}}

/* Restaurant info — bigger, cleaner */
.rest-detail-name,.rd-name{font-size:1.85rem!important;letter-spacing:-.03em!important;line-height:1.1!important}
@media(min-width:1024px){.rest-detail-name,.rd-name{font-size:2.2rem!important}}
.rest-detail-info{padding:1.5rem 4vw 1rem!important}

/* Scroll-morph sticky header */
#rest-sticky-header{position:fixed;top:var(--nav-h);left:0;right:0;z-index:90;background:rgba(255,255,255,.97);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);padding:.55rem 4vw;display:flex;align-items:center;gap:.75rem;transform:translateY(-100%);transition:transform .32s var(--ease-out);pointer-events:none;opacity:0}
#rest-sticky-header.visible{transform:translateY(0);opacity:1;pointer-events:auto}
#rest-sticky-header .rsh-avatar{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#fff4e6,#ffcda0);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
#rest-sticky-header .rsh-info{flex:1;min-width:0}
#rest-sticky-header .rsh-name{font-family:var(--ff-display);font-weight:900;font-size:.98rem;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
#rest-sticky-header .rsh-sub{font-size:.72rem;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rest-sticky-header .rsh-back{width:32px;height:32px;border-radius:50%;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}

/* RIPPLE effect on buttons */
.ripple-host{position:relative;overflow:hidden;isolation:isolate}
.ripple-ink{position:absolute;border-radius:50%;transform:scale(0);pointer-events:none;background:currentColor;opacity:.28;mix-blend-mode:multiply;animation:rippleOut .65s var(--ease-out)}
@keyframes rippleOut{to{transform:scale(3);opacity:0}}
.btn-primary .ripple-ink,.btn-green .ripple-ink,.menu-row-add .ripple-ink,.add-btn .ripple-ink,.rest-order-btn .ripple-ink{background:#fff;mix-blend-mode:normal;opacity:.45}

/* CONFETTI (order success) */
#qz-confetti{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden;display:none}
#qz-confetti.firing{display:block}
.confetti-p{position:absolute;top:-20px;width:10px;height:14px;border-radius:2px;will-change:transform,opacity;animation:confettiFall linear forwards}
@keyframes confettiFall{0%{transform:translate3d(0,0,0) rotate(0);opacity:1}80%{opacity:1}100%{transform:translate3d(var(--dx,0),110vh,0) rotate(var(--rot,720deg));opacity:0}}

/* ANIMATED EMPTY STATES */
.empty-illus{display:block;margin:0 auto .85rem;width:120px;height:120px}
.empty-illus .ei-float{animation:emptyFloat 3.2s ease-in-out infinite;transform-origin:center}
.empty-illus .ei-steam{animation:steamRise 2.4s ease-in-out infinite;transform-origin:center bottom}
.empty-illus .ei-steam-2{animation:steamRise 2.4s ease-in-out infinite .8s;transform-origin:center bottom}
.empty-illus .ei-steam-3{animation:steamRise 2.4s ease-in-out infinite 1.6s;transform-origin:center bottom}
.empty-illus .ei-wheel{animation:cartWheel 1.8s linear infinite;transform-origin:center;transform-box:fill-box}
.empty-illus .ei-bounce{animation:cartBounce 1.4s ease-in-out infinite}
@keyframes steamRise{0%{opacity:0;transform:translate3d(0,0,0) scale(.5)}30%{opacity:.6}100%{opacity:0;transform:translate3d(0,-28px,0) scale(1.2)}}
@keyframes cartWheel{to{transform:rotate(360deg)}}
@keyframes cartBounce{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-4px,0)}}

/* Menu coming soon / empty cart containers */
.empty-state,.cart-empty-box{padding:2.5rem 1rem!important}
.empty-title{font-family:var(--ff-display);font-weight:900!important;font-size:1.15rem!important;margin-bottom:.3rem!important;letter-spacing:-.02em}
.empty-sub{font-size:.88rem!important;line-height:1.5!important;max-width:280px!important;margin:0 auto!important}

/* Menu content wrap — better spacing */
#menuContent{padding-top:.75rem}

/* Better search bar on restaurant page */
#page-restaurant #menuSearch:focus + *{border-color:var(--primary)}
#page-restaurant .menu-search-wrap:focus-within{border-color:var(--primary)!important;box-shadow:0 0 0 3px rgba(242,97,0,.12)}

/* Cart sidebar — sticky with style */
.cart-box{border-radius:16px!important;box-shadow:0 6px 28px rgba(0,0,0,.08)!important;border:1px solid var(--border)!important}
.cart-header{background:linear-gradient(135deg,#fff4e6,#ffe4cc)!important;border-bottom:1px solid rgba(242,97,0,.12)!important}
.cart-title{color:var(--text)!important;font-size:.95rem!important;letter-spacing:-.01em;display:flex;align-items:center;gap:.5rem}
.cart-empty-box{text-align:center}

/* Rating/reviews — hide zero-state cleanly */
.rdm-item.rdm-new-badge{background:var(--primary-light);color:var(--primary);font-weight:800;padding:.25rem .65rem;border-radius:100px;font-size:.72rem;letter-spacing:.02em}

/* Favourite heart — bigger and prettier */
.fav-btn{font-size:1.35rem!important;padding:.2rem .3rem!important;transition:transform .3s var(--ease-spring)}
.fav-btn:hover{transform:scale(1.15)}
.fav-btn.active{color:#e8102e!important;filter:drop-shadow(0 2px 6px rgba(232,16,46,.3))}

/* Share button — cleaner */
.share-btn{border-radius:100px!important;padding:.4rem .85rem!important;transition:all .2s}
.share-btn:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}

/* Open Now badge upgrade */
.badge-green{box-shadow:0 2px 8px rgba(15,138,79,.25)}

/* Main header shrink (desktop too) */
@media(min-width:769px){#nav.scrolled{height:50px!important}}

/* Menu item row bigger hover states */
.menu-row{transition:background .2s var(--ease-out);border-radius:10px;padding:.85rem .5rem!important;margin:0 -.5rem}
.menu-row:hover{background:var(--bg)}

/* Menu item images get a nicer frame */
.menu-row-img{border-radius:14px!important;box-shadow:0 2px 10px rgba(0,0,0,.08);transition:transform .3s var(--ease-spring);overflow:visible!important}
.menu-row-img>img{width:100%;height:100%;object-fit:cover;border-radius:14px}
.menu-row:hover .menu-row-img{transform:scale(1.03)}

/* ADD/quantity button — bigger, clearer, solid fill so user can see it */
.menu-row-add{position:absolute;bottom:-12px;left:50%;transform:translateX(-50%);background:var(--green);border:none;color:#fff;font-size:.72rem;font-weight:900;padding:.38rem 1.2rem;border-radius:var(--rxs);cursor:pointer;box-shadow:0 4px 14px rgba(15,138,79,.35);text-transform:uppercase;letter-spacing:.05em;font-family:var(--ff);min-width:88px;text-align:center;white-space:nowrap;z-index:2}
.menu-row-add:hover{background:var(--green2);box-shadow:0 6px 18px rgba(15,138,79,.45);transform:translateX(-50%) translateY(-1px)}
.menu-row-add:active{transform:translateX(-50%) scale(.92)!important;box-shadow:0 2px 8px rgba(15,138,79,.4)!important}
.menu-row-qty{position:absolute;bottom:-12px;left:50%;transform:translateX(-50%);display:flex;background:#fff;border:1.5px solid var(--green);border-radius:var(--rxs);overflow:hidden;box-shadow:0 4px 14px rgba(15,138,79,.2);z-index:2;min-width:88px}
.menu-row-qty button{background:var(--green);color:#fff;border:none;width:30px;height:30px;font-size:1rem;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
.menu-row-qty button:hover{background:var(--green2)}
.menu-row-qty button:active{transform:scale(.88)}
.menu-row-qty span{padding:0 .7rem;font-weight:900;font-size:.88rem;color:var(--green);display:flex;align-items:center;min-width:28px;justify-content:center}

/* Menu row needs a bit more bottom padding so the hanging button doesn't overlap next row */
.menu-row{padding-bottom:1.1rem!important}

/* Active category chip — bigger, bolder state for clarity */
.cat-btn.active{background:var(--primary)!important;color:#fff!important;border-color:var(--primary)!important;box-shadow:0 4px 14px rgba(242,97,0,.3)!important;transform:translateY(-1px) scale(1.04)!important}

/* Empty-state for pickup slots */
.slot-empty{padding:.85rem 1rem;background:var(--primary-light);border:1px dashed rgba(242,97,0,.3);border-radius:10px;font-size:.78rem;line-height:1.5;color:var(--text2);font-weight:600;text-align:center}
.slot-empty::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--primary);margin-right:.4rem;vertical-align:middle;animation:blink 1.5s infinite}

/* Reduced motion guards for new animations */
@media(prefers-reduced-motion:reduce){
  .empty-illus *,#page-restaurant .rest-detail-hero::before,#page-restaurant .rest-detail-hero #rdHero > div,.confetti-p{animation:none!important}
}

/* PAYMENT METHOD PICKER in cart */
.pay-method-section{padding:.75rem 1rem;border-bottom:1px solid var(--border)}
.pay-method-title{font-size:.72rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}
.pay-method-list{display:flex;flex-direction:column;gap:.4rem}
.pay-method-row{display:flex;align-items:center;gap:.65rem;padding:.7rem .85rem;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;cursor:pointer;transition:.15s;font-family:var(--ff)}
.pay-method-row:hover{border-color:var(--primary);background:var(--primary-tint)}
.pay-method-row.selected{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 0 3px rgba(242,97,0,.08)}
.pay-method-ic{width:36px;height:36px;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--primary)}
.pay-method-row.selected .pay-method-ic{background:var(--primary);color:#fff}
.pay-method-body{flex:1;min-width:0}
.pay-method-label{font-weight:800;font-size:.88rem;color:var(--text)}
.pay-method-sub{font-size:.74rem;color:var(--muted);font-weight:600;margin-top:1px}
.pay-method-check{width:22px;height:22px;border-radius:50%;border:2px solid var(--border2);flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pay-method-row.selected .pay-method-check{border-color:var(--primary);background:var(--primary);color:#fff}
.pay-method-row.disabled{opacity:.5;cursor:not-allowed}
.pay-method-row.disabled:hover{border-color:var(--border);background:var(--surface)}
html[data-theme="dark"] .pay-method-row{background:#2a2a2e;border-color:var(--border2)}
html[data-theme="dark"] .pay-method-ic{background:#232326;color:var(--primary)}

/* No-image fallback for menu items — inherits size from .menu-row-img (118×96 desktop, 100×80 mobile) */
.menu-row-noimg{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#fff3ea 0%,#ffe4cc 100%);color:var(--primary)}
.menu-row-noimg::before{content:'🍽️';font-size:2.2rem;opacity:.45;pointer-events:none}
html[data-theme="dark"] .menu-row-noimg{background:linear-gradient(135deg,#2a1f18 0%,#241b12 100%)}

/* ════════════════════════════════════════════════════════════
   SETTINGS v=23 — CLEAN APP-STYLE
   White background, minimal orange, subtle dividers
   ════════════════════════════════════════════════════════════ */

/* Clean app-style user header in Settings — no gradient, no orange */
.app-user-header{display:flex;align-items:center;gap:.9rem;padding:1rem 1.1rem;background:#fff;border:1px solid #ececec;border-radius:14px;margin-bottom:1.25rem;transition:border-color .15s}
.app-user-header:hover{border-color:#d9d9d9}
.auh-avatar{width:52px;height:52px;border-radius:50%;background:#f5f5f5;color:#333;display:flex;align-items:center;justify-content:center;font-family:var(--ff-display);font-weight:800;font-size:1.35rem;flex-shrink:0}
.auh-info{flex:1;min-width:0}
.auh-name{font-family:var(--ff-display);font-weight:800;font-size:1.05rem;color:#1a1a1a;line-height:1.2;margin-bottom:2px}
.auh-email{font-size:.78rem;color:#757575;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auh-edit{background:transparent;border:1px solid #e4e4e4;border-radius:100px;padding:.35rem 1rem;font-size:.78rem;font-weight:700;color:#444;cursor:pointer;font-family:var(--ff);transition:all .15s;flex-shrink:0}
.auh-edit:hover{border-color:#1a1a1a;color:#1a1a1a}

/* Clean app-style settings groups */
.settings-hdr{font-family:var(--ff-display);font-weight:800;font-size:1.5rem;margin-bottom:1rem;color:#1a1a1a;letter-spacing:-.01em}
.settings-group{margin-bottom:1.5rem}
.settings-group-title{font-family:var(--ff);font-weight:700;font-size:.74rem;color:#8a8a8a;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.55rem;padding-left:.15rem}
.settings-card{background:#fff;border:1px solid #ececec;border-radius:14px;overflow:hidden}

/* Clean rows — neutral hover, no orange gradient */
.setting-row{display:flex;align-items:center;gap:.85rem;padding:.95rem 1.05rem;border-bottom:1px solid #f2f2f2;transition:background .12s}
.setting-row:last-child{border-bottom:none}
.setting-row[role="button"]{cursor:pointer}
.setting-row[role="button"]:hover{background:#fafafa}
.setting-row[role="button"]:active{background:#f2f2f2}
.setting-ic{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.setting-body{flex:1;min-width:0}
.setting-lbl{font-family:var(--ff);font-weight:700;font-size:.92rem;color:#1a1a1a;line-height:1.25;margin-bottom:1px}
.setting-sub{font-size:.74rem;color:#8a8a8a;font-weight:500;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.setting-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.setting-chev{color:#bbb;transition:transform .15s}
.setting-row[role="button"]:hover .setting-chev{transform:translateX(2px);color:#888}
.setting-row.danger .setting-lbl{color:#dc2626}
.settings-version{text-align:center;font-size:.72rem;color:#999;margin-top:1.5rem;padding:1rem 0;font-weight:500}
.setting-pill{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:100px;font-size:.64rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase}
.pill-green{background:#e7f5ec;color:#0f8a4f}
.pill-grey{background:#f2f2f2;color:#888}

/* Dark mode for clean app-style */
html[data-theme="dark"] .app-user-header{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .app-user-header:hover{border-color:var(--border2)}
html[data-theme="dark"] .auh-avatar{background:#2e2e33;color:#f4f4f5}
html[data-theme="dark"] .auh-name{color:var(--text)}
html[data-theme="dark"] .auh-email{color:var(--muted)}
html[data-theme="dark"] .auh-edit{border-color:var(--border2);color:var(--text)}
html[data-theme="dark"] .auh-edit:hover{border-color:var(--text);color:var(--text)}
html[data-theme="dark"] .settings-hdr{color:var(--text)}
html[data-theme="dark"] .settings-group-title{color:var(--muted)}
html[data-theme="dark"] .settings-card{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .setting-row{border-bottom-color:var(--border)}
html[data-theme="dark"] .setting-row[role="button"]:hover{background:rgba(255,255,255,.04)}
html[data-theme="dark"] .setting-row[role="button"]:active{background:rgba(255,255,255,.08)}
html[data-theme="dark"] .setting-lbl{color:var(--text)}
html[data-theme="dark"] .setting-sub{color:var(--muted)}
html[data-theme="dark"] .settings-version{color:var(--muted)}
html[data-theme="dark"] .pill-green{background:rgba(15,138,79,.15);color:#4ade80}
html[data-theme="dark"] .pill-grey{background:#2a2a2e;color:var(--muted)}

/* Mobile tweaks — app-feel spacing */
@media (max-width:640px){
  .app-user-header{padding:.85rem .95rem;border-radius:12px}
  .auh-avatar{width:46px;height:46px;font-size:1.2rem}
  .auh-name{font-size:.98rem}
  .auh-email{font-size:.74rem}
  .auh-edit{padding:.3rem .8rem;font-size:.72rem}
  .settings-hdr{font-size:1.3rem;margin-bottom:.75rem}
  .settings-group{margin-bottom:1.2rem}
  .setting-row{padding:.85rem .9rem;gap:.75rem}
  .setting-ic{width:34px;height:34px;border-radius:9px}
  .setting-lbl{font-size:.88rem}
  .setting-sub{font-size:.7rem}
}

/* ════════════════════════════════════════════════════════════
   v=26 — UI POLISH + MICRO-ANIMATIONS
   ════════════════════════════════════════════════════════════ */

/* ─── Page transitions ─── */
.page.page-enter{animation:qzPageIn .35s cubic-bezier(.2,.8,.2,1) both}
@keyframes qzPageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ─── Button press micro-animation (universal, all buttons) ─── */
.btn,.menu-row-add,.add-btn,.qty-btn,.rest-order-btn,.auh-edit,.wallet-action,.pnav-item,.cat-chip,.cat-btn{transition:transform .12s cubic-bezier(.2,.8,.2,1.2),background .15s,border-color .15s,box-shadow .15s,color .15s}
.btn:active,.menu-row-add:active,.add-btn:active,.qty-btn:active,.rest-order-btn:active,.auh-edit:active,.wallet-action:active,.cat-chip:active,.cat-btn:active{transform:scale(.94)}

/* ─── Restaurant card upgrades ─── */
.rest-card{animation:qzCardIn .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 60ms);position:relative}
@keyframes qzCardIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.rest-card:hover{transform:translateY(-6px);box-shadow:0 14px 32px rgba(0,0,0,.09),0 4px 12px rgba(0,0,0,.05)}
.rest-card:hover .rest-img-wrap img,.rest-card:hover .rest-emoji-bg{transform:scale(1.08);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.rest-img-wrap img,.rest-emoji-bg{transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.rest-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 2px transparent;transition:box-shadow .2s}
.rest-card:focus-visible::after{box-shadow:0 0 0 2px var(--primary)}

/* Rating chip upgrade */
.rest-rating{background:var(--green);color:#fff;padding:2px 8px;border-radius:6px;font-weight:800;font-size:.74rem;display:inline-flex;align-items:center;gap:.2rem;box-shadow:0 1px 3px rgba(15,138,79,.3)}

/* Featured badge pulse */
.rest-featured-badge{animation:qzFeaturedPulse 2.4s ease-in-out infinite}
@keyframes qzFeaturedPulse{0%,100%{box-shadow:0 2px 8px rgba(242,97,0,.3)}50%{box-shadow:0 2px 14px rgba(242,97,0,.5)}}

/* ─── Home hero polish ─── */
.hero-greeting{background:linear-gradient(135deg,var(--text) 0%,var(--primary) 140%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:qzHeroIn .6s cubic-bezier(.2,.8,.2,1) both}
.hero-sub{animation:qzHeroIn .6s .1s cubic-bezier(.2,.8,.2,1) both;opacity:0;animation-fill-mode:forwards}
@keyframes qzHeroIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.hero-loc-chip{transition:all .2s cubic-bezier(.2,.8,.2,1)}
.hero-loc-chip:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.hero-search-box{transition:border-color .2s,box-shadow .2s,transform .15s}
.hero-search-box:focus-within{border-color:var(--primary);box-shadow:0 4px 14px rgba(242,97,0,.12),0 0 0 3px rgba(242,97,0,.08);transform:translateY(-1px)}
.cat-chip{transition:all .2s cubic-bezier(.2,.8,.2,1.2)}
.cat-chip:hover{transform:translateY(-2px);box-shadow:0 3px 10px rgba(0,0,0,.08)}
.home-veg-row{animation:qzHeroIn .5s .15s both;opacity:0;animation-fill-mode:forwards}

/* Home "Explore" section title */
.home-section-title{font-family:var(--ff-display);font-weight:800;font-size:.92rem;margin-bottom:.55rem;letter-spacing:-.01em}

/* ─── Menu row upgrades ─── */
.menu-row{animation:qzMenuRowIn .35s ease-out both;animation-delay:calc(var(--mi,0) * 30ms)}
@keyframes qzMenuRowIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
.menu-row-add{transition:all .18s cubic-bezier(.2,.8,.2,1.2);box-shadow:0 2px 6px rgba(242,97,0,.2)}
.menu-row-add:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(242,97,0,.35)}
.menu-row-qty button,.qty-btn{transition:background .15s,transform .12s}
.menu-row-qty button:active,.qty-btn:active{transform:scale(.88)}

/* Item added pulse */
.menu-row.just-added{animation:qzJustAdded .5s ease-out}
@keyframes qzJustAdded{0%{background:rgba(15,138,79,.12)}100%{background:transparent}}

/* ─── Cart badge bounce ─── */
#cartBadge,#btmCartBadge{transition:transform .2s cubic-bezier(.2,.8,.2,1.4)}
#cartBadge.pop,#btmCartBadge.pop{animation:qzCartBounce .45s cubic-bezier(.2,.8,.2,1.4)}
@keyframes qzCartBounce{0%{transform:scale(1)}30%{transform:scale(1.35)}60%{transform:scale(.9)}100%{transform:scale(1)}}

/* ─── Float cart entrance ─── */
#floatCart{animation:qzFloatCartIn .35s cubic-bezier(.2,.8,.2,1.2) both}
@keyframes qzFloatCartIn{from{opacity:0;transform:translate3d(-50%,20px,0)}to{opacity:1;transform:translate3d(-50%,0,0)}}

/* ─── Profile / Settings polish ─── */
.app-user-header{animation:qzHeroIn .4s cubic-bezier(.2,.8,.2,1) both}
.settings-group{animation:qzHeroIn .4s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--sg,0) * 50ms)}
.setting-row{transition:all .15s cubic-bezier(.2,.8,.2,1)}
.setting-row[role="button"]:active .setting-ic{transform:scale(.9)}
.setting-ic{transition:transform .15s cubic-bezier(.2,.8,.2,1.3)}

/* Profile avatar breathing on hover */
.profile-avatar-big{transition:transform .3s cubic-bezier(.2,.8,.2,1.1)}
.card:hover .profile-avatar-big{transform:scale(1.05)}

/* Pnav items */
.pnav-item{position:relative;overflow:hidden}
.pnav-item::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:0;background:var(--primary);border-radius:0 3px 3px 0;transition:height .2s cubic-bezier(.2,.8,.2,1)}
.pnav-item.active::before,.pnav-item:hover::before{height:60%}

/* ─── Toast upgrades ─── */
.toast-item{animation:qzToastIn .35s cubic-bezier(.2,.8,.2,1.2) both}
@keyframes qzToastIn{from{opacity:0;transform:translateX(-50%) translateY(100%) scale(.9)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}

/* ─── Skeleton shimmer improvement ─── */
.skel-card,.skel,.skel-img,.skel-line{background:linear-gradient(90deg,#f2f2f2 0%,#fafafa 40%,#f2f2f2 80%);background-size:200% 100%;animation:qzShimmer 1.4s infinite linear}
@keyframes qzShimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}

/* ─── Location picker, modals ─── */
#locationModal .modal-content,#deliveryAddrModal > div,#editProfileModal,.edit-modal{animation:qzModalIn .3s cubic-bezier(.2,.8,.2,1.05) both}
@keyframes qzModalIn{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

/* ─── Bottom-nav active indicator ─── */
.btm-tab-item{position:relative;transition:color .2s}
.btm-tab-item::before{content:"";position:absolute;top:-1px;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--primary);border-radius:0 0 3px 3px;transition:width .25s cubic-bezier(.2,.8,.2,1)}
.btm-tab-item.active::before{width:28px}
.btm-tab-item.active svg{animation:qzNavPop .35s cubic-bezier(.2,.8,.2,1.3)}
@keyframes qzNavPop{0%{transform:scale(1)}50%{transform:scale(1.25)}100%{transform:scale(1)}}

/* ─── Dark mode for new polish ─── */
html[data-theme="dark"] .skel-card,html[data-theme="dark"] .skel,html[data-theme="dark"] .skel-img,html[data-theme="dark"] .skel-line{background:linear-gradient(90deg,#28282c 0%,#34343a 40%,#28282c 80%);background-size:200% 100%}
html[data-theme="dark"] .rest-rating{background:#16a34a}
html[data-theme="dark"] .hero-greeting{background:linear-gradient(135deg,#fff 0%,#ff9a5a 140%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

/* ─── Reduced motion accessibility ─── */
@media (prefers-reduced-motion:reduce){.rest-card,.menu-row,.app-user-header,.settings-group,.home-veg-row,.hero-greeting,.hero-sub,.toast-item,.btm-tab-item.active svg,.rest-featured-badge{animation:none!important;transition:none!important}}

/* ─── Mobile tweaks for animations ─── */
@media (max-width:640px){
  .rest-card:hover{transform:none}
  .rest-card:active{transform:scale(.98)}
  .cat-chip:hover{transform:none}
}

/* ════════════════════════════════════════════════════════════
   v=27 — Compact Veg Toggle in Nav (top-right, professional)
   ════════════════════════════════════════════════════════════ */

.veg-toggle{display:flex;align-items:center;gap:.35rem;padding:.36rem .6rem;border-radius:8px;border:1.5px solid var(--border);background:#fff;font-family:var(--ff);font-size:.72rem;font-weight:800;color:var(--muted);cursor:pointer;letter-spacing:.01em;transition:all .18s cubic-bezier(.2,.8,.2,1.1);white-space:nowrap;line-height:1}
/* v75: Search button in nav */
.nav-search-btn{display:flex;align-items:center;gap:.4rem;padding:.36rem .7rem;border-radius:8px;border:1.5px solid var(--border);background:#fff;font-family:var(--ff);font-size:.78rem;font-weight:700;color:var(--text,#1a1a1a);cursor:pointer;letter-spacing:.01em;transition:all .18s cubic-bezier(.2,.8,.2,1.1);white-space:nowrap;line-height:1}
.nav-search-btn:hover{border-color:var(--qz3-accent,#f26100);color:var(--qz3-accent,#f26100)}
.nav-search-btn svg{flex-shrink:0;color:var(--qz3-ink-3,#6b6b6b)}
.nav-search-btn:hover svg{color:var(--qz3-accent,#f26100)}
@media (max-width: 720px){
  .nav-search-btn .nav-search-label{display:none}
  .nav-search-btn{padding:.45rem;width:36px;height:36px;justify-content:center}
}
.veg-toggle:hover{border-color:#0f8a4f;color:#0f8a4f}
.veg-toggle .vm-dot{width:10px;height:10px;border-radius:2px;border:1.5px solid var(--muted);background:transparent;display:inline-flex;align-items:center;justify-content:center;position:relative;transition:all .18s}
.veg-toggle .vm-dot::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--muted);transition:background .18s}
.veg-toggle:hover .vm-dot{border-color:#0f8a4f}
.veg-toggle:hover .vm-dot::after{background:#0f8a4f}
.veg-toggle.active{background:#e7f5ec;border-color:#0f8a4f;color:#0f8a4f;box-shadow:0 2px 6px rgba(15,138,79,.18)}
.veg-toggle.active .vm-dot{border-color:#0f8a4f}
.veg-toggle.active .vm-dot::after{background:#0f8a4f}
.veg-toggle:active{transform:scale(.94)}

html[data-theme="dark"] .veg-toggle{background:var(--surface);border-color:var(--border2);color:var(--muted)}
html[data-theme="dark"] .veg-toggle:hover{border-color:#16a34a;color:#4ade80}
html[data-theme="dark"] .veg-toggle.active{background:rgba(15,138,79,.18);border-color:#16a34a;color:#4ade80}
html[data-theme="dark"] .veg-toggle.active .vm-dot{border-color:#4ade80}
html[data-theme="dark"] .veg-toggle.active .vm-dot::after{background:#4ade80}

/* Mobile — keep it compact but readable, show label */
@media (max-width:640px){
  .veg-toggle{padding:.3rem .5rem;font-size:.68rem;gap:.3rem}
  .veg-toggle .vm-dot{width:9px;height:9px}
  .veg-toggle .vm-dot::after{width:4px;height:4px}
}

/* Veg-filtered empty state */
.veg-empty-note{grid-column:1/-1;text-align:center;padding:2rem 1rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:14px;margin:0 4vw}
.veg-empty-note .ven-ic{width:48px;height:48px;border-radius:50%;background:#dcfce7;display:flex;align-items:center;justify-content:center;margin:0 auto .6rem}
.veg-empty-note .ven-title{font-family:var(--ff-display);font-weight:800;font-size:1rem;color:#0f8a4f;margin-bottom:.3rem}
.veg-empty-note .ven-sub{font-size:.82rem;color:var(--muted)}
html[data-theme="dark"] .veg-empty-note{background:rgba(15,138,79,.08);border-color:rgba(22,163,74,.3)}
html[data-theme="dark"] .veg-empty-note .ven-title{color:#4ade80}

/* ════════════════════════════════════════════════════════════
   v=28 — Enhanced Animations + WhatsApp + Recently Viewed
   ════════════════════════════════════════════════════════════ */

/* ─── Scroll-triggered reveal ─── */
.qz-reveal{opacity:0;transform:translateY(20px);transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.2,.8,.2,1)}
.qz-reveal.qz-revealed{opacity:1;transform:translateY(0)}
.qz-reveal-scale{opacity:0;transform:scale(.92);transition:opacity .5s cubic-bezier(.2,.8,.2,1.1),transform .5s cubic-bezier(.2,.8,.2,1.1)}
.qz-reveal-scale.qz-revealed{opacity:1;transform:scale(1)}

/* Apply to all restaurant cards by default (stagger already present) — layer reveal on top */
.rest-card{opacity:0;transform:translateY(14px) scale(.985)}
.rest-card.qz-revealed,.rest-card:not(.qz-reveal){animation:qzCardIn .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 60ms);opacity:1;transform:none}

/* ─── Enhanced page transitions (slide) ─── */
.page{transition:opacity .28s cubic-bezier(.2,.8,.2,1),transform .32s cubic-bezier(.2,.8,.2,1)}
.page.page-enter{animation:qzPageSlideIn .38s cubic-bezier(.2,.8,.2,1) both}
.page.page-enter.pop{animation:qzPageSlideBack .38s cubic-bezier(.2,.8,.2,1) both}
@keyframes qzPageSlideIn{from{opacity:0;transform:translate3d(28px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes qzPageSlideBack{from{opacity:0;transform:translate3d(-28px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}

/* ─── Glassmorphism on nav + modals ─── */
#nav{backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);background:rgba(255,255,255,.82);border-bottom:1px solid rgba(0,0,0,.06)}
#nav.scrolled{background:rgba(255,255,255,.92);box-shadow:0 2px 18px rgba(0,0,0,.06)}
html[data-theme="dark"] #nav{background:rgba(24,24,27,.78);border-bottom-color:rgba(255,255,255,.06)}
html[data-theme="dark"] #nav.scrolled{background:rgba(24,24,27,.92)}

/* Modals get a backdrop-blur overlay */
#locationModal,#deliveryAddrModal,#editProfileModal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:rgba(0,0,0,.4)}

/* Bottom nav glass */
.btm-tab{backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);background:rgba(255,255,255,.88)}
html[data-theme="dark"] .btm-tab{background:rgba(35,35,38,.88)}

/* ─── Parallax hero (driven by JS scroll listener) ─── */
.hero-greeting-row,.hero-sub{transition:transform .1s linear;will-change:transform}

/* ─── Animated icons ─── */
/* Heart pulse on favorite */
.fav-btn.active{animation:qzHeartPulse .5s cubic-bezier(.2,.8,.2,1.3)}
@keyframes qzHeartPulse{0%{transform:scale(1)}40%{transform:scale(1.4)}60%{transform:scale(.9)}100%{transform:scale(1)}}

/* Cart icon wiggle when items added */
.nav-cart-link.has-items svg{animation:qzCartWiggle .5s cubic-bezier(.2,.8,.2,1.3)}
@keyframes qzCartWiggle{0%,100%{transform:rotate(0)}20%{transform:rotate(-12deg)}50%{transform:rotate(10deg)}80%{transform:rotate(-4deg)}}

/* Animated SVG icons on bottom nav active */
.btm-tab-item.active svg{filter:drop-shadow(0 2px 4px rgba(242,97,0,.3))}
.btm-tab-item.active svg path,.btm-tab-item.active svg circle,.btm-tab-item.active svg polyline{stroke-dasharray:60;animation:qzIconDraw .6s ease-out forwards}
@keyframes qzIconDraw{from{stroke-dashoffset:60}to{stroke-dashoffset:0}}

/* ─── Number counter "just-animated" highlight ─── */
[data-count].qz-revealed{animation:qzCountFlash .8s cubic-bezier(.2,.8,.2,1)}
@keyframes qzCountFlash{0%{color:var(--primary)}70%{color:var(--primary)}100%{color:inherit}}

/* ─── Recently Viewed cards ─── */
.qz-rv-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem .85rem;cursor:pointer;transition:all .2s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;gap:.35rem;min-width:140px}
.qz-rv-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 8px 20px rgba(242,97,0,.12)}
.qz-rv-card:active{transform:scale(.97)}
.rv-emoji{font-size:1.8rem;line-height:1}
.rv-name{font-family:var(--ff-display);font-weight:800;font-size:.9rem;color:var(--text);line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
.rv-hint{font-size:.7rem;font-weight:700;color:var(--primary)}
html[data-theme="dark"] .qz-rv-card{background:var(--surface);border-color:var(--border)}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion:reduce){
  .qz-reveal,.qz-reveal-scale,.hero-greeting-row,.hero-sub,.qz-help-btn{transition:none!important;animation:none!important;transform:none!important;opacity:1!important}
}

/* Mobile tweaks: disable hero parallax on small screens (feels janky) */
@media (max-width:640px){
  .hero-greeting-row,.hero-sub{transform:none!important}
}

/* ════════════════════════════════════════════════════════════
   v=29 — Help button + Smart banner + Category tiles (visual upgrade)
   ════════════════════════════════════════════════════════════ */

/* ─── Floating Help button (internal, opens support page) ─── */
.qz-help-btn{position:fixed;bottom:calc(var(--btm-h,0px) + 16px + var(--safe-bottom,0px));right:16px;z-index:800;display:flex;align-items:center;gap:.4rem;padding:.7rem .95rem;background:linear-gradient(135deg,var(--primary) 0%,#ff8a50 100%);color:#fff;border:none;border-radius:100px;box-shadow:0 8px 24px rgba(242,97,0,.35),0 2px 6px rgba(0,0,0,.12);font-family:var(--ff);font-weight:800;font-size:.82rem;cursor:pointer;transition:transform .2s cubic-bezier(.2,.8,.2,1.2),box-shadow .2s;animation:qzHelpPulse 2.4s infinite ease-out}
.qz-help-btn:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 12px 32px rgba(242,97,0,.5),0 4px 10px rgba(0,0,0,.15)}
.qz-help-btn:active{transform:scale(.96)}
.qz-help-label{letter-spacing:.01em;white-space:nowrap}
@keyframes qzHelpPulse{0%,100%{box-shadow:0 8px 24px rgba(242,97,0,.35),0 0 0 0 rgba(242,97,0,.45)}50%{box-shadow:0 8px 24px rgba(242,97,0,.35),0 0 0 14px rgba(242,97,0,0)}}

@media (max-width:640px){
  .qz-help-btn{bottom:calc(var(--btm-h,64px) + 12px + var(--safe-bottom,0px));padding:.6rem .85rem;font-size:.78rem}
  .qz-help-btn svg{width:20px;height:20px}
}
body[data-page="cart"] .qz-help-btn,body[data-page="order-success"] .qz-help-btn,body[data-page="auth"] .qz-help-btn{display:none!important}

/* ─── Smart time-aware banner ─── */
.qz-smart-banner{margin:.35rem 4vw .9rem;padding:.85rem 1rem;display:flex;align-items:center;gap:.75rem;background:linear-gradient(135deg,#fff7f0 0%,#ffe8d6 100%);border:1px solid #ffd4ad;border-radius:14px;cursor:pointer;transition:transform .2s cubic-bezier(.2,.8,.2,1.2),box-shadow .2s,border-color .2s;animation:qzSbIn .55s cubic-bezier(.2,.8,.2,1.1) both;animation-delay:.15s;opacity:0;animation-fill-mode:forwards}
.qz-smart-banner:hover{transform:translateY(-2px);border-color:var(--primary);box-shadow:0 8px 24px rgba(242,97,0,.15)}
.qz-smart-banner:active{transform:scale(.98)}
.qz-sb-icon{font-size:2rem;line-height:1;flex-shrink:0;animation:qzSbFloat 3s ease-in-out infinite}
.qz-sb-content{flex:1;min-width:0}
.qz-sb-title{font-family:var(--ff-display);font-weight:800;font-size:.98rem;color:var(--text);line-height:1.2;margin-bottom:2px}
.qz-sb-sub{font-size:.76rem;color:var(--muted);font-weight:500;line-height:1.3}
.qz-sb-arrow{color:var(--primary);display:flex;align-items:center}
@keyframes qzSbIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes qzSbFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-4px) rotate(3deg)}}

html[data-theme="dark"] .qz-smart-banner{background:linear-gradient(135deg,#2a1f15 0%,#3a2a1a 100%);border-color:rgba(242,97,0,.3)}
html[data-theme="dark"] .qz-sb-title{color:var(--text)}
html[data-theme="dark"] .qz-sb-sub{color:var(--muted)}

/* ─── Category grid (visual icon tiles replace text chips) ─── */
.qz-cat-grid-wrap{padding:.35rem 4vw 1rem}
.qz-cat-grid-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.7rem}
.qz-cat-title{font-family:var(--ff-display);font-weight:900;font-size:1.05rem;color:var(--text);letter-spacing:-.01em}
.qz-cat-all{background:none;border:none;color:var(--primary);font-family:var(--ff);font-size:.78rem;font-weight:800;cursor:pointer;padding:.3rem .5rem;border-radius:8px;transition:background .15s}
.qz-cat-all:hover{background:var(--primary-light)}

.qz-cat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.55rem}
.qz-cat-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;padding:.75rem .4rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;cursor:pointer;font-family:var(--ff);transition:transform .2s cubic-bezier(.2,.8,.2,1.2),box-shadow .2s,border-color .2s,background .2s;position:relative;overflow:hidden;animation:qzTileIn .45s cubic-bezier(.2,.8,.2,1.1) both;animation-delay:calc(var(--i,0) * 35ms)}
.qz-cat-tile:nth-child(1){--i:0}.qz-cat-tile:nth-child(2){--i:1}.qz-cat-tile:nth-child(3){--i:2}.qz-cat-tile:nth-child(4){--i:3}.qz-cat-tile:nth-child(5){--i:4}.qz-cat-tile:nth-child(6){--i:5}.qz-cat-tile:nth-child(7){--i:6}.qz-cat-tile:nth-child(8){--i:7}.qz-cat-tile:nth-child(9){--i:8}.qz-cat-tile:nth-child(10){--i:9}
@keyframes qzTileIn{from{opacity:0;transform:translateY(10px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}

.qz-cat-tile:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 6px 16px rgba(242,97,0,.15);background:var(--surface)}
.qz-cat-tile:active{transform:scale(.94)}
.qz-cat-emoji{font-size:1.6rem;line-height:1;transition:transform .25s cubic-bezier(.2,.8,.2,1.3)}
.qz-cat-tile:hover .qz-cat-emoji{transform:scale(1.18) rotate(-4deg)}
.qz-cat-lbl{font-size:.7rem;font-weight:800;color:var(--text2);text-align:center;line-height:1.15;letter-spacing:-.005em}
.qz-cat-tile:hover .qz-cat-lbl{color:var(--primary)}

.qz-cat-tile-health{background:linear-gradient(135deg,#e7f5ec 0%,#d4ecd9 100%);border-color:#0f8a4f33}
.qz-cat-tile-health .qz-cat-lbl{color:#0f8a4f}
.qz-cat-tile-health:hover{border-color:#0f8a4f;box-shadow:0 6px 16px rgba(15,138,79,.25)}

html[data-theme="dark"] .qz-cat-tile{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .qz-cat-tile:hover{border-color:var(--primary)}
html[data-theme="dark"] .qz-cat-lbl{color:var(--text)}
html[data-theme="dark"] .qz-cat-tile-health{background:rgba(15,138,79,.15);border-color:rgba(22,163,74,.35)}
html[data-theme="dark"] .qz-cat-tile-health .qz-cat-lbl{color:#4ade80}

/* Mobile: 4 columns then wrap to 5 on second row */
@media (max-width:480px){
  .qz-cat-grid{grid-template-columns:repeat(4,1fr);gap:.5rem}
  .qz-cat-tile{padding:.65rem .3rem;border-radius:12px}
  .qz-cat-emoji{font-size:1.45rem}
  .qz-cat-lbl{font-size:.66rem}
  .qz-cat-title{font-size:.98rem}
}

/* Tablet/desktop: more columns */
@media (min-width:720px){
  .qz-cat-grid{grid-template-columns:repeat(10,1fr)}
}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion:reduce){
  .qz-help-btn,.qz-smart-banner,.qz-sb-icon,.qz-cat-tile{animation:none!important;transition:none!important}
}

/* ════════════════════════════════════════════════════════════
   v=30 — Auth polish + Premium Order Tracking + OG image
   ════════════════════════════════════════════════════════════ */

/* ─── AUTH PAGE PREMIUM POLISH ─── */

/* Animated gradient background behind auth card */

@keyframes qzAuthFloat{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-20px) rotate(5deg)}}

.auth-card{animation:qzAuthCardIn .55s cubic-bezier(.2,.8,.2,1.1) both;position:relative;z-index:1;box-shadow:0 20px 50px rgba(0,0,0,.08),0 4px 12px rgba(0,0,0,.04)!important}
@keyframes qzAuthCardIn{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}

.auth-hero-bolt{animation:qzAuthBolt 1.2s cubic-bezier(.2,.8,.2,1.2) both;transform-origin:center}
@keyframes qzAuthBolt{0%{transform:scale(0) rotate(-90deg);opacity:0}60%{transform:scale(1.15) rotate(10deg);opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}

/* Trust badges row */
.auth-trust-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.75rem .4rem 1.1rem;margin-bottom:.85rem;border-bottom:1px dashed var(--border)}
.auth-trust-item{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.25rem;text-align:center}
.atr-ic{font-size:1.35rem;line-height:1;animation:qzAuthBadge .5s cubic-bezier(.2,.8,.2,1.3) both}
.auth-trust-item:nth-child(1) .atr-ic{animation-delay:.2s}
.auth-trust-item:nth-child(2) .atr-ic{animation-delay:.32s}
.auth-trust-item:nth-child(3) .atr-ic{animation-delay:.44s}
.atr-txt{font-size:.68rem;font-weight:700;color:var(--text2);letter-spacing:-.005em;line-height:1.2}
@keyframes qzAuthBadge{from{opacity:0;transform:scale(.6) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}

html[data-theme="dark"] .auth-trust-row{border-bottom-color:var(--border)}
html[data-theme="dark"] .atr-txt{color:var(--muted)}

/* Enhanced tab row */
.auth-tab-row{background:var(--bg);border-radius:12px;padding:4px}
.auth-tab{background:transparent;transition:all .25s cubic-bezier(.2,.8,.2,1.1)}
.auth-tab.active{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.08)}
html[data-theme="dark"] .auth-tab.active{background:var(--surface)}

/* Enhanced input fields on auth */
#page-auth .input-field{transition:all .2s cubic-bezier(.2,.8,.2,1)}
#page-auth .input-field:focus{transform:translateY(-1px);box-shadow:0 0 0 3px rgba(242,97,0,.15),0 4px 12px rgba(242,97,0,.08)}

/* Login/Signup button — gradient + shine */
#page-auth .btn-primary{background:linear-gradient(135deg,var(--primary) 0%,#ff8a50 100%);box-shadow:0 8px 20px rgba(242,97,0,.3);position:relative;overflow:hidden}
#page-auth .btn-primary::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .6s ease}
#page-auth .btn-primary:hover::before{left:100%}
#page-auth .btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(242,97,0,.4)}

/* OTP boxes — glow when filled */
.otp-box{transition:all .2s cubic-bezier(.2,.8,.2,1.1)}
.otp-box:focus{transform:scale(1.08);box-shadow:0 0 0 3px rgba(242,97,0,.2),0 6px 14px rgba(242,97,0,.12)}
.otp-box:not(:placeholder-shown){border-color:var(--primary);background:rgba(242,97,0,.05)}

/* ─── PREMIUM ORDER TRACKING PAGE ─── */

/* Main hero card — gradient with status-aware colors */
.track-hero{position:relative;padding:2rem 1.25rem 1.75rem;border-radius:20px;margin-bottom:1rem;overflow:hidden;color:#fff;box-shadow:0 12px 32px rgba(0,0,0,.08);animation:qzTrackHeroIn .55s cubic-bezier(.2,.8,.2,1.1) both}
@keyframes qzTrackHeroIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.track-hero.status-pending{background:linear-gradient(135deg,#f59e0b 0%,#ea580c 100%)}
.track-hero.status-confirmed{background:linear-gradient(135deg,#3b82f6 0%,#1e40af 100%)}
.track-hero.status-preparing{background:linear-gradient(135deg,#f26100 0%,#ea580c 100%)}
.track-hero.status-ready{background:linear-gradient(135deg,#10b981 0%,#059669 100%);animation:qzTrackHeroIn .55s cubic-bezier(.2,.8,.2,1.1) both,qzReadyGlow 2s ease-in-out infinite alternate}
.track-hero.status-completed{background:linear-gradient(135deg,#6b7280 0%,#4b5563 100%)}
.track-hero.status-cancelled{background:linear-gradient(135deg,#ef4444 0%,#b91c1c 100%)}
@keyframes qzReadyGlow{from{box-shadow:0 12px 32px rgba(0,0,0,.08),0 0 0 0 rgba(16,185,129,.5)}to{box-shadow:0 12px 32px rgba(0,0,0,.08),0 0 0 24px rgba(16,185,129,0)}}

.track-hero::before{content:"";position:absolute;top:-40px;right:-40px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.08);animation:qzTrackOrb 8s ease-in-out infinite}
.track-hero::after{content:"";position:absolute;bottom:-60px;left:-50px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.05);animation:qzTrackOrb 10s ease-in-out infinite reverse}
@keyframes qzTrackOrb{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(20px,-10px) scale(1.1)}}

.track-hero-emoji{font-size:4rem;line-height:1;margin-bottom:.4rem;display:inline-block;animation:qzTrackEmoji 1.8s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgba(0,0,0,.15))}
@keyframes qzTrackEmoji{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
.track-hero.status-ready .track-hero-emoji{animation:qzReadyBounce .6s ease-in-out infinite alternate}
@keyframes qzReadyBounce{from{transform:scale(1) translateY(0)}to{transform:scale(1.12) translateY(-8px)}}

.track-hero-title{font-family:var(--ff-display);font-weight:900;font-size:1.55rem;line-height:1.2;letter-spacing:-.02em;margin-bottom:.35rem;position:relative;z-index:1}
.track-hero-sub{font-size:.88rem;opacity:.92;font-weight:600;position:relative;z-index:1}
.track-hero-eta{display:inline-flex;align-items:center;gap:.4rem;margin-top:.85rem;padding:.45rem .85rem;background:rgba(255,255,255,.22);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:100px;font-size:.82rem;font-weight:800;letter-spacing:.01em;position:relative;z-index:1}
.track-hero-eta svg{animation:qzEtaTick 1s linear infinite}
@keyframes qzEtaTick{0%,100%{transform:rotate(0)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}}

/* Progress bar (linear) */
.track-progress-wrap{padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:1rem}
.track-progress-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.track-progress-lbl{font-family:var(--ff-display);font-weight:800;font-size:.95rem;color:var(--text)}
.track-live-pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:800;color:var(--green);background:var(--green-light);padding:.25rem .55rem;border-radius:100px}
.track-live-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green);animation:qzLiveDot 1.4s ease-in-out infinite}
@keyframes qzLiveDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}

.track-bar-line{height:6px;background:var(--border);border-radius:100px;overflow:hidden;margin-bottom:1rem;position:relative}
.track-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary) 0%,#ff8a50 100%);border-radius:100px;transition:width .8s cubic-bezier(.2,.8,.2,1);position:relative}
.track-bar-fill::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.5) 50%,transparent 100%);animation:qzBarShine 2s ease-in-out infinite}
@keyframes qzBarShine{0%,100%{transform:translateX(-100%)}50%{transform:translateX(100%)}}
.track-hero.status-ready ~ * .track-bar-fill{background:linear-gradient(90deg,#10b981 0%,#34d399 100%)}

/* Status steps */
.track-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem;text-align:center}
.track-step-new{display:flex;flex-direction:column;align-items:center;gap:.35rem;opacity:.45;transition:opacity .3s}
.track-step-new.done,.track-step-new.active{opacity:1}
.track-step-ic{width:32px;height:32px;border-radius:50%;background:var(--border);display:flex;align-items:center;justify-content:center;font-size:.95rem;position:relative;transition:all .3s cubic-bezier(.2,.8,.2,1.3)}
.track-step-new.done .track-step-ic{background:var(--green);color:#fff}
.track-step-new.active .track-step-ic{background:var(--primary);color:#fff;animation:qzStepPulse 1.6s ease-in-out infinite;box-shadow:0 0 0 4px rgba(242,97,0,.15)}
@keyframes qzStepPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
.track-step-new .track-step-lbl{font-size:.62rem;font-weight:700;color:var(--muted);line-height:1.2;letter-spacing:-.005em}
.track-step-new.done .track-step-lbl,.track-step-new.active .track-step-lbl{color:var(--text)}

/* Action buttons row */
.track-actions{display:flex;gap:.6rem;margin-bottom:1rem}
.track-action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.75rem;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;font-family:var(--ff);font-size:.82rem;font-weight:800;color:var(--text);cursor:pointer;text-decoration:none;transition:all .2s cubic-bezier(.2,.8,.2,1.1)}
.track-action-btn:hover{transform:translateY(-2px);border-color:var(--primary);color:var(--primary);box-shadow:0 6px 16px rgba(242,97,0,.12)}
.track-action-btn:active{transform:scale(.96)}
.track-action-btn.btn-call{color:#0f8a4f;border-color:#0f8a4f33}
.track-action-btn.btn-call:hover{background:#e7f5ec;border-color:#0f8a4f;color:#0f8a4f}
.track-action-btn.btn-wa{color:#16a34a;border-color:#16a34a33}
.track-action-btn.btn-wa:hover{background:#dcfce7;border-color:#16a34a;color:#16a34a}

/* Info cards grid */
.track-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:1rem}
.track-info-card{padding:.85rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}
.track-info-lbl{font-size:.68rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.3rem}
.track-info-val{font-family:var(--ff-display);font-weight:800;font-size:.95rem;color:var(--text);line-height:1.2;letter-spacing:-.01em}
.track-info-card-wide{grid-column:1/-1}

/* Items list */
.track-items{padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:1rem}
.track-items-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}
.track-items-title{font-family:var(--ff-display);font-weight:800;font-size:.92rem}
.track-items-count{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--bg);padding:.15rem .55rem;border-radius:100px}
.track-item-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px dashed var(--border);font-size:.84rem}
.track-item-row:last-child{border-bottom:none}
.track-item-qty{color:var(--primary);font-weight:800;margin-right:.5rem}
.track-item-price{font-weight:800;color:var(--text);font-family:var(--ff-display)}
.track-total-row{display:flex;justify-content:space-between;align-items:center;padding-top:.75rem;margin-top:.5rem;border-top:2px solid var(--primary);font-family:var(--ff-display);font-weight:900;font-size:1.05rem}
.track-total-row .t-total-amt{color:var(--primary);font-size:1.2rem}

html[data-theme="dark"] .track-progress-wrap,
html[data-theme="dark"] .track-action-btn,
html[data-theme="dark"] .track-info-card,
html[data-theme="dark"] .track-items{background:var(--surface);border-color:var(--border)}

/* Ready state confetti */
.track-hero.status-ready .confetti{position:absolute;width:8px;height:8px;top:-20px;animation:qzConfetti 3s ease-out infinite}
@keyframes qzConfetti{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(400px) rotate(720deg);opacity:0}}

/* Mobile */
@media (max-width:480px){
  .track-hero{padding:1.5rem 1rem 1.25rem;border-radius:16px}
  .track-hero-emoji{font-size:3.3rem}
  .track-hero-title{font-size:1.3rem}
  .track-hero-sub{font-size:.82rem}
  .track-steps{gap:.25rem}
  .track-step-ic{width:28px;height:28px;font-size:.85rem}
  .track-step-new .track-step-lbl{font-size:.58rem}
  .track-info-grid{grid-template-columns:1fr}
  .track-actions{flex-direction:column}
  .auth-trust-row{padding:.6rem .2rem .85rem}
  .atr-ic{font-size:1.2rem}
  .atr-txt{font-size:.64rem}
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  .track-hero,.track-hero-emoji,.track-bar-fill::after,.track-step-new.active .track-step-ic,.auth-hero-bolt,.atr-ic,
}

/* ════════════════════════════════════════════════════════════
   v=33 — Google Sign-In + Full UI Upgrade
   ════════════════════════════════════════════════════════════ */

/* ─── Google Sign-In button ─── */
.qz-google-wrap{margin-bottom:.9rem}
.qz-google-btn{display:flex;align-items:center;justify-content:center;gap:.7rem;padding:.75rem 1rem;background:#fff;border:1.5px solid var(--border2);border-radius:12px;color:#3c4043;font-family:var(--ff);font-size:.92rem;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.2,.8,.2,1);user-select:none;letter-spacing:-.01em}
.qz-google-btn:hover{background:#f8f9fa;border-color:#dadce0;box-shadow:0 2px 8px rgba(0,0,0,.08);transform:translateY(-1px)}
.qz-google-btn:active{transform:scale(.98)}
.qz-google-btn svg{flex-shrink:0}

html[data-theme="dark"] .qz-google-btn{background:var(--surface);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .qz-google-btn:hover{background:var(--surface);border-color:var(--primary)}

.qz-auth-divider{display:flex;align-items:center;gap:.6rem;margin:1rem 0 .6rem;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.12em}
.qz-auth-divider::before,.qz-auth-divider::after{content:"";flex:1;height:1px;background:var(--border)}

/* ─── UI UPGRADE v=33 ─── */

/* Home: bigger, prettier cafe cards */
.rest-card{transition:transform .22s cubic-bezier(.2,.8,.2,1.05),box-shadow .22s,border-color .22s}
.rest-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.1),0 2px 4px rgba(0,0,0,.04);border-color:var(--primary)}

/* Open-now pulsing badge on cafe cards */
.rest-open-pulse{display:inline-flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:800;color:#0f8a4f;background:#e7f5ec;padding:.2rem .55rem;border-radius:100px}
.rest-open-pulse::before{content:"";width:6px;height:6px;border-radius:50%;background:#0f8a4f;animation:qzOpenPulse 1.6s ease-in-out infinite}
@keyframes qzOpenPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}

/* Menu item ADD button — micro-bounce on click */
.menu-row-add,.add-btn{transition:all .18s cubic-bezier(.2,.8,.2,1.3)}
.menu-row-add:active,.add-btn:active{animation:qzAddBounce .3s cubic-bezier(.2,.8,.2,1.3)}
@keyframes qzAddBounce{0%{transform:scale(1)}50%{transform:scale(.88)}100%{transform:scale(1)}}

/* Menu category scroll — sticky on scroll */
.menu-cats-bar{position:sticky;top:calc(var(--nav-h) + var(--safe-top));background:var(--bg);z-index:50;padding:.5rem 4vw;overflow-x:auto;white-space:nowrap;scrollbar-width:none;border-bottom:1px solid var(--border)}
.menu-cats-bar::-webkit-scrollbar{display:none}
.menu-cats-bar .cat-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.45rem .9rem;background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--text);font-family:var(--ff);font-size:.8rem;font-weight:700;cursor:pointer;transition:all .2s;margin-right:.35rem;white-space:nowrap}
.menu-cats-bar .cat-btn:hover{border-color:var(--primary);color:var(--primary)}
.menu-cats-bar .cat-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 3px 10px rgba(242,97,0,.25)}

/* Cart: clean item rows */
.cart-item{transition:background .15s}
.cart-item:hover{background:rgba(242,97,0,.03)}

/* Cart pickup time pill (in cart header) */
.qz-cart-time-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .7rem;background:var(--primary-light);color:var(--primary);border-radius:100px;font-size:.75rem;font-weight:800;margin-left:.4rem}

/* Profile: quick actions row */
.qz-profile-quick-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem;margin:1rem 0}
.qz-profile-quick-btn{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.8rem .4rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;cursor:pointer;transition:all .2s cubic-bezier(.2,.8,.2,1.1);font-family:var(--ff)}
.qz-profile-quick-btn:hover{transform:translateY(-2px);border-color:var(--primary);box-shadow:0 4px 12px rgba(242,97,0,.1)}
.qz-profile-quick-btn:active{transform:scale(.95)}
.qz-pq-icon{width:36px;height:36px;border-radius:10px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center}
.qz-pq-lbl{font-size:.7rem;font-weight:700;color:var(--text2);line-height:1.2;text-align:center}
html[data-theme="dark"] .qz-profile-quick-btn{background:var(--surface);border-color:var(--border)}

/* Order success — confetti container */
.qz-confetti-wrap{position:fixed;inset:0;pointer-events:none;z-index:9990;overflow:hidden}
.qz-confetti{position:absolute;top:-20px;width:10px;height:10px;opacity:0;animation:qzConfettiFall 3.5s cubic-bezier(.3,.5,.5,1) forwards}
@keyframes qzConfettiFall{0%{opacity:0;transform:translateY(0) rotate(0deg)}10%{opacity:1}100%{opacity:0;transform:translateY(110vh) rotate(720deg)}}

/* Order success — social share prompt */
.qz-share-prompt{display:flex;gap:.5rem;justify-content:center;margin-top:1rem;flex-wrap:wrap}
.qz-share-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.55rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:var(--ff);font-size:.82rem;font-weight:700;cursor:pointer;transition:all .18s;text-decoration:none}
.qz-share-btn:hover{transform:translateY(-2px);border-color:var(--primary);color:var(--primary)}
.qz-share-wa{color:#16a34a;border-color:#16a34a33}
.qz-share-wa:hover{color:#16a34a;background:#dcfce7}

/* Reorder button pulsing call-to-action */
.qz-reorder-btn{animation:qzReorderSoftPulse 3s ease-in-out infinite;position:relative}
@keyframes qzReorderSoftPulse{0%,100%{box-shadow:0 4px 12px rgba(242,97,0,.2)}50%{box-shadow:0 6px 20px rgba(242,97,0,.35)}}

/* Empty cart suggestions card */
.qz-empty-cart-card{padding:1.5rem 1.25rem;background:linear-gradient(135deg,#fff3f0 0%,#fff 100%);border:1px dashed var(--primary);border-radius:16px;text-align:center;margin:1rem 0}
.qz-ec-icon{font-size:3rem;margin-bottom:.5rem}
.qz-ec-title{font-family:var(--ff-display);font-weight:800;font-size:1.1rem;color:var(--text);margin-bottom:.4rem}
.qz-ec-sub{font-size:.85rem;color:var(--muted);margin-bottom:1rem;line-height:1.5}
html[data-theme="dark"] .qz-empty-cart-card{background:linear-gradient(135deg,rgba(242,97,0,.08) 0%,var(--surface) 100%)}

/* Reduced motion respect */
@media (prefers-reduced-motion:reduce){
  .rest-open-pulse::before,.qz-reorder-btn{animation:none!important}
  .qz-confetti{animation:none!important;display:none}
}

/* Mobile tweaks */
@media (max-width:480px){
  .qz-profile-quick-row{grid-template-columns:repeat(4,1fr);gap:.4rem}
  .qz-pq-icon{width:32px;height:32px}
  .qz-pq-lbl{font-size:.65rem}
  .qz-google-btn{font-size:.88rem;padding:.7rem .9rem}
}

/* ════════════════════════════════════════════════════════════
   v=34 — Profile completion + Location upgrade + Best-level UI polish
   ════════════════════════════════════════════════════════════ */

/* ─── Profile Completion Modal ─── */
.qz-pcm-overlay {
  position: fixed; inset: 0;
  background: rgba(17, 24, 39, 0.65);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 4000;
  display: flex; align-items: center; justify-content: center;
  padding: 1rem;
  animation: qzPcmFadeIn 0.25s cubic-bezier(.2,.8,.2,1);
}
@keyframes qzPcmFadeIn { from { opacity: 0; } to { opacity: 1; } }
.qz-pcm-overlay.qz-pcm-closing { animation: qzPcmFadeOut 0.2s ease forwards; }
@keyframes qzPcmFadeOut { to { opacity: 0; } }

.qz-pcm-card {
  background: var(--bg);
  border-radius: 24px;
  width: 100%;
  max-width: 440px;
  max-height: 92vh;
  overflow-y: auto;
  box-shadow: 0 30px 80px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.08);
  animation: qzPcmSlideUp 0.35s cubic-bezier(.2,.85,.3,1.05);
}
@keyframes qzPcmSlideUp {
  from { opacity: 0; transform: translateY(30px) scale(.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.qz-pcm-header {
  padding: 2rem 1.75rem 1.25rem;
  text-align: center;
  background: linear-gradient(135deg, #fff6f0 0%, #fff 100%);
  border-radius: 24px 24px 0 0;
  position: relative;
  overflow: hidden;
}
.qz-pcm-header::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 20%, rgba(242,97,0,.08) 0%, transparent 50%);
  pointer-events: none;
}
.qz-pcm-emoji {
  font-size: 3rem;
  margin-bottom: 0.5rem;
  animation: qzPcmWave 1.5s ease-in-out infinite;
  display: inline-block;
  transform-origin: 70% 70%;
}
@keyframes qzPcmWave {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(12deg); }
  75% { transform: rotate(-8deg); }
}
.qz-pcm-title {
  font-family: var(--ff-display);
  font-weight: 900;
  font-size: 1.5rem;
  color: var(--text);
  letter-spacing: -0.02em;
  margin-bottom: 0.3rem;
}
.qz-pcm-sub {
  font-size: 0.9rem;
  color: var(--muted);
  font-weight: 500;
}

.qz-pcm-body {
  padding: 1rem 1.75rem;
  display: flex; flex-direction: column;
  gap: 1.1rem;
}
.qz-pcm-field { display: flex; flex-direction: column; gap: 0.4rem; }
.qz-pcm-lbl {
  font-size: 0.78rem;
  font-weight: 800;
  color: var(--text);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.qz-pcm-req { color: var(--primary); font-weight: 900; }
.qz-pcm-opt { color: var(--muted); font-weight: 500; text-transform: none; letter-spacing: 0; }

.qz-pcm-input {
  width: 100%;
  padding: 0.85rem 1rem;
  border: 1.5px solid var(--border);
  border-radius: 12px;
  font-size: 0.95rem;
  font-family: var(--ff);
  font-weight: 600;
  background: var(--bg);
  color: var(--text);
  transition: all 0.2s;
  outline: none;
}
.qz-pcm-input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(242,97,0,.1);
}

.qz-pcm-phone-row {
  display: flex; align-items: stretch;
  border: 1.5px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  transition: all 0.2s;
  background: var(--bg);
}
.qz-pcm-phone-row:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(242,97,0,.1);
}
.qz-pcm-phone-prefix {
  padding: 0.85rem 0.9rem;
  background: var(--surface);
  color: var(--text2);
  font-weight: 800;
  font-size: 0.95rem;
  border-right: 1.5px solid var(--border);
  display: flex; align-items: center;
}
.qz-pcm-phone-input {
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  flex: 1;
}
.qz-pcm-phone-input:focus { box-shadow: none !important; }

.qz-pcm-hint {
  font-size: 0.72rem;
  color: var(--muted);
  font-weight: 500;
  line-height: 1.4;
}

.qz-pcm-footer {
  padding: 1rem 1.75rem 1.75rem;
  display: flex; flex-direction: column;
  gap: 0.5rem;
}
.qz-pcm-btn {
  padding: 0.95rem 1.25rem;
  border-radius: 12px;
  font-family: var(--ff);
  font-weight: 800;
  font-size: 0.95rem;
  cursor: pointer;
  border: none;
  transition: all 0.2s cubic-bezier(.2,.8,.2,1.05);
  display: flex; align-items: center; justify-content: center; gap: 0.4rem;
}
.qz-pcm-btn-primary {
  background: linear-gradient(135deg, var(--primary) 0%, #ff7e3d 100%);
  color: #fff;
  box-shadow: 0 6px 18px rgba(242,97,0,.3);
}
.qz-pcm-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(242,97,0,.4); }
.qz-pcm-btn-primary:active { transform: scale(.98); }
.qz-pcm-btn-ghost {
  background: transparent;
  color: var(--muted);
  font-weight: 600;
}
.qz-pcm-btn-ghost:hover { color: var(--text); }

/* ─── Location Picker: Saved addresses section ─── */
.qz-loc-saved-wrap {
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(242,97,0,.025) 0%, transparent 100%);
}
.qz-loc-saved-title {
  font-size: 0.74rem;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 0.6rem;
}
.qz-loc-saved-list {
  display: flex; flex-direction: column;
  gap: 0.4rem;
}
.qz-loc-saved-item {
  display: flex; align-items: center; gap: 0.7rem;
  width: 100%;
  padding: 0.7rem 0.9rem;
  background: var(--bg);
  border: 1.5px solid var(--border);
  border-radius: 12px;
  cursor: pointer;
  font-family: var(--ff);
  text-align: left;
  transition: all 0.18s cubic-bezier(.2,.8,.2,1.05);
}
.qz-loc-saved-item:hover {
  border-color: var(--primary);
  background: rgba(242,97,0,.04);
  transform: translateY(-1px);
}
.qz-loc-saved-item.active {
  border-color: var(--primary);
  background: rgba(242,97,0,.08);
  box-shadow: 0 0 0 3px rgba(242,97,0,.12);
}
.qz-lsi-ic { font-size: 1.25rem; flex-shrink: 0; }
.qz-lsi-info { flex: 1; min-width: 0; }
.qz-lsi-name {
  font-weight: 800;
  font-size: 0.88rem;
  color: var(--text);
  margin-bottom: 1px;
}
.qz-lsi-addr {
  font-size: 0.73rem;
  color: var(--muted);
  font-weight: 500;
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qz-lsi-default {
  font-size: 0.62rem;
  font-weight: 800;
  color: #0f8a4f;
  background: #dcfce7;
  padding: 0.15rem 0.5rem;
  border-radius: 100px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  flex-shrink: 0;
}

/* ─── Delivery Address modal: "Detect location" button ─── */
.qz-da-detect-wrap {
  display: flex; flex-direction: column;
  gap: 0.6rem;
  margin-bottom: 0.85rem;
}
.qz-da-detect-btn {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  width: 100%;
  padding: 0.75rem 1rem;
  background: linear-gradient(135deg, rgba(242,97,0,.08) 0%, rgba(242,97,0,.04) 100%);
  border: 1.5px dashed var(--primary);
  border-radius: 12px;
  color: var(--primary);
  font-family: var(--ff);
  font-weight: 800;
  font-size: 0.88rem;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(.2,.8,.2,1.05);
}
.qz-da-detect-btn:hover:not(:disabled) {
  background: rgba(242,97,0,.12);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(242,97,0,.2);
}
.qz-da-detect-btn:active:not(:disabled) { transform: scale(.98); }
.qz-da-detect-btn:disabled { cursor: default; }

.qz-da-loc-status {
  font-size: 0.78rem;
  color: var(--muted);
  font-weight: 600;
  line-height: 1.4;
  min-height: 1.1em;
  text-align: center;
}

.qz-da-divider {
  display: flex; align-items: center;
  gap: 0.7rem;
  margin: 0.3rem 0;
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.12em;
}
.qz-da-divider::before, .qz-da-divider::after {
  content: ""; flex: 1; height: 1px; background: var(--border);
}

/* ─── Location chip enhancement on home/nav ─── */
#locationLabel, #heroLocChip {
  max-width: 200px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ─── Best-level UI polish (v=34) ─── */

/* Smoother scrollbar on webkit */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.15);
  border-radius: 10px;
  border: 2px solid transparent;
  background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,.25); background-clip: content-box; }

/* Buttons: subtle press feedback globally */
.btn, button.btn-primary, button.btn-outline { transition: all 0.15s cubic-bezier(.2,.8,.2,1.05) !important; }
.btn:active:not(:disabled) { transform: scale(0.97); }

/* Input focus states: consistent across app */
input.input-field:focus, input.inp:focus, textarea.input-field:focus, textarea.inp:focus, select.inp:focus {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 4px rgba(242,97,0,.1) !important;
  outline: none !important;
}

/* Card lift on hover (subtle, not aggressive) */
.card.card-hover:not(.rest-card) {
  transition: transform 0.2s cubic-bezier(.2,.8,.2,1.05), box-shadow 0.2s;
}
.card.card-hover:not(.rest-card):hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,0,0,.08);
}

/* Mobile tweaks */
@media (max-width: 480px) {
  .qz-pcm-card { border-radius: 20px; }
  .qz-pcm-header { padding: 1.5rem 1.25rem 1rem; }
  .qz-pcm-title { font-size: 1.3rem; }
  .qz-pcm-body { padding: 0.85rem 1.25rem; gap: 0.9rem; }
  .qz-pcm-footer { padding: 0.85rem 1.25rem 1.25rem; }
  .qz-loc-saved-wrap { padding: 0.8rem 1rem; }
  #locationLabel, #heroLocChip { max-width: 140px; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .qz-pcm-overlay, .qz-pcm-card, .qz-pcm-emoji { animation: none !important; }
  .qz-loc-saved-item, .qz-da-detect-btn { transition: none !important; }
}

/* Dark mode */
html[data-theme="dark"] .qz-pcm-header {
  background: linear-gradient(135deg, rgba(242,97,0,.1) 0%, var(--bg) 100%);
}
html[data-theme="dark"] .qz-pcm-phone-prefix {
  background: var(--surface);
  color: var(--text2);
}
html[data-theme="dark"] .qz-loc-saved-wrap {
  background: linear-gradient(180deg, rgba(242,97,0,.05) 0%, transparent 100%);
}
html[data-theme="dark"] .qz-loc-saved-item { background: var(--surface); }
html[data-theme="dark"] .qz-loc-saved-item:hover { background: rgba(242,97,0,.08); }

/* ════════════════════════════════════════════════════════════════════════
   QUEZAP — moved from inline <style> in index.html
   v3 design system + dark mode + profile + Phase 4 polish
   ════════════════════════════════════════════════════════════════════════ */

/* Splash screen — inlined for instant render before app.css loads */

@media (prefers-reduced-motion:reduce){}

/* ═══════════════════════════════════════════════════════════════════════
   QUEZAP DESIGN SYSTEM v2 — unified, restrained, premium
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* Type scale — 6 sizes, nothing else */
  --qz-text-xs: 0.75rem;     /* 12px — captions, labels */
  --qz-text-sm: 0.8125rem;   /* 13px — body small, metadata */
  --qz-text-base: 0.9375rem; /* 15px — body */
  --qz-text-lg: 1.125rem;    /* 18px — card titles, section headings */
  --qz-text-xl: 1.5rem;      /* 24px — page titles */
  --qz-text-2xl: 2rem;       /* 32px — hero */

  /* Weight scale — 3 values */
  --qz-w-regular: 500;
  --qz-w-medium: 600;
  --qz-w-bold: 800;

  /* Spacing — 8px grid, nothing else */
  --qz-s-1: 4px;
  --qz-s-2: 8px;
  --qz-s-3: 12px;
  --qz-s-4: 16px;
  --qz-s-5: 20px;
  --qz-s-6: 24px;
  --qz-s-8: 32px;
  --qz-s-10: 40px;
  --qz-s-12: 48px;

  /* Radii */
  --qz-r-sm: 8px;
  --qz-r-md: 12px;
  --qz-r-lg: 16px;
  --qz-r-xl: 20px;

  /* Elevation — only three shadow levels */
  --qz-shadow-1: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06);
  --qz-shadow-2: 0 4px 8px -2px rgba(16, 24, 40, 0.06), 0 2px 4px -2px rgba(16, 24, 40, 0.04);
  --qz-shadow-3: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.03);

  /* Colors — semantic roles, not the raw palette */
  --qz-surface: #ffffff;
  --qz-surface-muted: #fafaf9;
  --qz-ink-1: #0f0f10;        /* primary text */
  --qz-ink-2: #3d3d40;        /* secondary text */
  --qz-ink-3: #71717a;        /* tertiary / captions */
  --qz-ink-4: #a1a1aa;        /* disabled */
  --qz-line: #e8e8ea;         /* borders */
  --qz-line-strong: #d4d4d7;

  --qz-accent: #f26100;
  --qz-accent-hover: #d85700;
  --qz-accent-soft: #fff4ec;
  --qz-accent-tint: #fff8f2;

  --qz-success: #15803d;
  --qz-success-soft: #ecfdf5;
  --qz-warning: #b45309;
  --qz-warning-soft: #fffbeb;
  --qz-danger: #b91c1c;
  --qz-danger-soft: #fef2f2;
}

/* ── Typography helpers ─────────────────────────────────────────────── */
.qz2-hero { font-family: 'Poppins', sans-serif; font-size: var(--qz-text-2xl); font-weight: var(--qz-w-bold); line-height: 1.1; letter-spacing: -0.025em; color: var(--qz-ink-1); }
.qz2-title { font-family: 'Poppins', sans-serif; font-size: var(--qz-text-xl); font-weight: var(--qz-w-bold); line-height: 1.2; letter-spacing: -0.02em; color: var(--qz-ink-1); }
.qz2-heading { font-family: 'Poppins', sans-serif; font-size: var(--qz-text-lg); font-weight: var(--qz-w-bold); line-height: 1.3; color: var(--qz-ink-1); }
.qz2-body { font-size: var(--qz-text-base); font-weight: var(--qz-w-regular); line-height: 1.55; color: var(--qz-ink-1); }
.qz2-small { font-size: var(--qz-text-sm); font-weight: var(--qz-w-regular); line-height: 1.5; color: var(--qz-ink-2); }
.qz2-caption { font-size: var(--qz-text-xs); font-weight: var(--qz-w-medium); line-height: 1.4; color: var(--qz-ink-3); }
.qz2-label { font-size: var(--qz-text-xs); font-weight: var(--qz-w-bold); letter-spacing: 0.04em; text-transform: uppercase; color: var(--qz-ink-3); }

/* ── Buttons ─────────────────────────────────────────────────────────── */
.qz2-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-family: inherit; font-weight: var(--qz-w-bold); cursor: pointer; border-radius: var(--qz-r-md); transition: transform .08s ease, background .15s ease, box-shadow .15s ease; border: 1.5px solid transparent; white-space: nowrap; user-select: none; }
.qz2-btn:active { transform: scale(0.97); }
.qz2-btn:disabled { opacity: .55; cursor: not-allowed; }

/* Size */
.qz2-btn-sm { padding: 8px 14px; font-size: var(--qz-text-sm); }
.qz2-btn-md { padding: 12px 20px; font-size: var(--qz-text-base); }
.qz2-btn-lg { padding: 14px 24px; font-size: var(--qz-text-base); min-height: 48px; }

/* Variants — only 4 */
.qz2-btn-primary { background: var(--qz-accent); color: #fff; box-shadow: 0 1px 2px rgba(242,97,0,.3); }
.qz2-btn-primary:hover { background: var(--qz-accent-hover); box-shadow: var(--qz-shadow-2); }
.qz2-btn-secondary { background: var(--qz-surface); color: var(--qz-ink-1); border-color: var(--qz-line-strong); }
.qz2-btn-secondary:hover { background: var(--qz-surface-muted); }
.qz2-btn-ghost { background: transparent; color: var(--qz-ink-2); }
.qz2-btn-ghost:hover { background: var(--qz-surface-muted); color: var(--qz-ink-1); }
.qz2-btn-danger { background: var(--qz-danger); color: #fff; }

/* ── Card ────────────────────────────────────────────────────────────── */
.qz2-card { background: var(--qz-surface); border-radius: var(--qz-r-lg); border: 1px solid var(--qz-line); box-shadow: var(--qz-shadow-1); overflow: hidden; }
.qz2-card-interactive { cursor: pointer; transition: transform .12s ease, box-shadow .15s ease, border-color .15s ease; }
.qz2-card-interactive:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); border-color: var(--qz-line-strong); }
.qz2-card-p4 { padding: var(--qz-s-4); }
.qz2-card-p5 { padding: var(--qz-s-5); }

/* ── Badge / Chip / Tag ──────────────────────────────────────────────── */
.qz2-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; border-radius: 100px; font-size: var(--qz-text-xs); font-weight: var(--qz-w-bold); letter-spacing: 0.01em; }
.qz2-chip-muted { background: var(--qz-surface-muted); color: var(--qz-ink-2); border: 1px solid var(--qz-line); }
.qz2-chip-accent { background: var(--qz-accent-soft); color: var(--qz-accent); }
.qz2-chip-success { background: var(--qz-success-soft); color: var(--qz-success); }
.qz2-chip-warning { background: var(--qz-warning-soft); color: var(--qz-warning); }
.qz2-chip-danger { background: var(--qz-danger-soft); color: var(--qz-danger); }

/* ── Input ───────────────────────────────────────────────────────────── */
.qz2-input { width: 100%; padding: 12px 16px; font-size: var(--qz-text-base); font-family: inherit; font-weight: var(--qz-w-regular); color: var(--qz-ink-1); background: var(--qz-surface); border: 1.5px solid var(--qz-line); border-radius: var(--qz-r-md); outline: none; transition: border-color .15s ease, box-shadow .15s ease; }
.qz2-input:focus { border-color: var(--qz-accent); box-shadow: 0 0 0 3px var(--qz-accent-soft); }
.qz2-input::placeholder { color: var(--qz-ink-4); }

/* ── Section layout ──────────────────────────────────────────────────── */
.qz2-section { padding: var(--qz-s-6) var(--qz-s-4); }
.qz2-section-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: var(--qz-s-4); }
.qz2-section-head-title { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-lg); color: var(--qz-ink-1); letter-spacing: -0.01em; }
.qz2-section-head-link { font-size: var(--qz-text-sm); font-weight: var(--qz-w-bold); color: var(--qz-accent); cursor: pointer; background: none; border: none; font-family: inherit; padding: 4px 0; }

/* ── Cafe card (restaurants list/home) ───────────────────────────────── */
.qz2-rest-card { background: var(--qz-surface); border-radius: var(--qz-r-lg); border: 1px solid var(--qz-line); overflow: hidden; cursor: pointer; transition: transform .12s, box-shadow .15s; display: flex; flex-direction: column; }
.qz2-rest-card:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); }
.qz2-rest-img { position: relative; aspect-ratio: 16/10; background: var(--qz-surface-muted); overflow: hidden; }
.qz2-rest-img img { width: 100%; height: 100%; object-fit: cover; }
.qz2-rest-img-fallback { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 3rem; background: linear-gradient(135deg, var(--qz-accent-soft), var(--qz-surface-muted)); }
.qz2-rest-body { padding: var(--qz-s-3); display: flex; flex-direction: column; gap: 4px; }
.qz2-rest-name { font-weight: var(--qz-w-bold); font-size: var(--qz-text-base); color: var(--qz-ink-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qz2-rest-meta { display: flex; align-items: center; gap: 8px; font-size: var(--qz-text-xs); color: var(--qz-ink-3); }
.qz2-rest-meta-dot::before { content: "·"; margin: 0 2px; }
.qz2-rest-rating { display: inline-flex; align-items: center; gap: 3px; font-weight: var(--qz-w-bold); color: var(--qz-success); }
.qz2-rest-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.qz2-rest-closed { position: absolute; inset: 0; background: rgba(15, 15, 16, 0.55); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); letter-spacing: 0.05em; text-transform: uppercase; }

/* ── Category pills (home) ───────────────────────────────────────────── */
.qz2-cat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--qz-s-3); }
.qz2-cat-pill { aspect-ratio: 1; background: var(--qz-surface); border: 1px solid var(--qz-line); border-radius: var(--qz-r-md); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; cursor: pointer; transition: transform .12s, box-shadow .15s, border-color .15s; padding: 8px; }
.qz2-cat-pill:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); border-color: var(--qz-accent); }
.qz2-cat-pill.active { background: var(--qz-accent-soft); border-color: var(--qz-accent); }
.qz2-cat-pill-icon { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: var(--qz-accent); }
.qz2-cat-pill-label { font-size: var(--qz-text-xs); font-weight: var(--qz-w-bold); color: var(--qz-ink-1); text-align: center; }

/* ── Hero (Home) ─────────────────────────────────────────────────────── */
.qz2-hero-wrap { padding: var(--qz-s-6) var(--qz-s-4) var(--qz-s-4); background: var(--qz-surface); }
.qz2-hero-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--qz-s-3); margin-bottom: var(--qz-s-4); }
.qz2-hero-greet-wrap { flex: 1; min-width: 0; }
.qz2-hero-greet { font-family: 'Poppins', sans-serif; font-size: var(--qz-text-2xl); font-weight: var(--qz-w-bold); line-height: 1.1; letter-spacing: -0.025em; color: var(--qz-ink-1); margin: 0 0 4px; }
.qz2-hero-sub { font-size: var(--qz-text-sm); color: var(--qz-ink-3); margin: 0; }
.qz2-hero-loc-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; background: var(--qz-surface-muted); border: 1px solid var(--qz-line); border-radius: 100px; font-size: var(--qz-text-sm); font-weight: var(--qz-w-bold); color: var(--qz-ink-1); cursor: pointer; font-family: inherit; max-width: 160px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: border-color .15s; }
.qz2-hero-loc-btn:hover { border-color: var(--qz-accent); color: var(--qz-accent); }
.qz2-hero-search { display: flex; align-items: center; gap: 10px; padding: 14px 16px; background: var(--qz-surface-muted); border: 1.5px solid var(--qz-line); border-radius: var(--qz-r-md); cursor: text; transition: border-color .15s; }
.qz2-hero-search:focus-within { border-color: var(--qz-accent); background: var(--qz-surface); }
.qz2-hero-search input { flex: 1; border: none; background: none; outline: none; font-size: var(--qz-text-base); font-family: inherit; color: var(--qz-ink-1); }
.qz2-hero-search svg { color: var(--qz-ink-3); flex-shrink: 0; }

/* ── Promo / trust strip ─────────────────────────────────────────────── */
.qz2-trust-strip { display: flex; gap: var(--qz-s-3); padding: var(--qz-s-3) var(--qz-s-4); background: var(--qz-accent-tint); border-top: 1px solid var(--qz-line); border-bottom: 1px solid var(--qz-line); }
.qz2-trust-item { flex: 1; text-align: center; padding: 4px; }
.qz2-trust-item-val { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-lg); color: var(--qz-accent); line-height: 1; }
.qz2-trust-item-lbl { font-size: var(--qz-text-xs); font-weight: var(--qz-w-medium); color: var(--qz-ink-3); margin-top: 3px; letter-spacing: 0.02em; }

/* ── Empty states ────────────────────────────────────────────────────── */
.qz2-empty { padding: var(--qz-s-10) var(--qz-s-4); text-align: center; }
.qz2-empty-icon { width: 56px; height: 56px; margin: 0 auto var(--qz-s-3); color: var(--qz-ink-4); }
.qz2-empty-title { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-lg); color: var(--qz-ink-1); margin-bottom: 4px; }
.qz2-empty-sub { font-size: var(--qz-text-sm); color: var(--qz-ink-3); max-width: 280px; margin: 0 auto var(--qz-s-4); line-height: 1.5; }

/* ── Cart ────────────────────────────────────────────────────────────── */
.qz2-cart-container { max-width: 520px; margin: 0 auto; padding: var(--qz-s-4); padding-bottom: 120px; }
.qz2-cart-header { display: flex; align-items: center; gap: var(--qz-s-3); margin-bottom: var(--qz-s-4); }
.qz2-cart-back { width: 40px; height: 40px; border-radius: 50%; background: var(--qz-surface); border: 1px solid var(--qz-line); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: var(--qz-ink-1); }
.qz2-cart-back:hover { background: var(--qz-surface-muted); }
.qz2-cart-title-wrap { flex: 1; min-width: 0; }
.qz2-cart-title { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-xl); color: var(--qz-ink-1); letter-spacing: -0.02em; margin: 0; }
.qz2-cart-subtitle { font-size: var(--qz-text-sm); color: var(--qz-ink-3); margin: 2px 0 0; }
.qz2-cart-item { display: grid; grid-template-columns: 1fr auto auto; gap: var(--qz-s-3); align-items: center; padding: var(--qz-s-3) 0; border-bottom: 1px solid var(--qz-line); }
.qz2-cart-item:last-child { border-bottom: none; }
.qz2-cart-item-name { font-weight: var(--qz-w-medium); font-size: var(--qz-text-base); color: var(--qz-ink-1); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qz2-cart-item-price { font-weight: var(--qz-w-bold); color: var(--qz-ink-1); font-size: var(--qz-text-base); min-width: 60px; text-align: right; }
.qz2-qty-ctrl { display: inline-flex; align-items: center; background: var(--qz-surface-muted); border: 1px solid var(--qz-line); border-radius: 100px; padding: 2px; gap: 2px; }
.qz2-qty-btn { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; background: var(--qz-surface); border: none; border-radius: 50%; cursor: pointer; color: var(--qz-ink-1); font-weight: var(--qz-w-bold); font-size: var(--qz-text-base); box-shadow: var(--qz-shadow-1); }
.qz2-qty-btn:hover { background: var(--qz-accent-soft); color: var(--qz-accent); }
.qz2-qty-num { min-width: 28px; text-align: center; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); color: var(--qz-ink-1); }
.qz2-bill-row { display: flex; justify-content: space-between; padding: var(--qz-s-2) 0; font-size: var(--qz-text-base); color: var(--qz-ink-2); }
.qz2-bill-row-total { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-lg); color: var(--qz-ink-1); border-top: 1.5px solid var(--qz-line); padding-top: var(--qz-s-3); margin-top: var(--qz-s-2); }
.qz2-bill-discount { color: var(--qz-success); font-weight: var(--qz-w-bold); }
.qz2-slot-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--qz-s-2); }
.qz2-slot-btn { padding: 10px; border: 1.5px solid var(--qz-line); background: var(--qz-surface); border-radius: var(--qz-r-md); cursor: pointer; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); color: var(--qz-ink-1); font-family: inherit; transition: all .12s; }
.qz2-slot-btn:hover { border-color: var(--qz-accent); color: var(--qz-accent); }
.qz2-slot-btn.active { background: var(--qz-accent); color: #fff; border-color: var(--qz-accent); }
.qz2-order-type-tabs { display: flex; gap: 4px; background: var(--qz-surface-muted); padding: 4px; border-radius: var(--qz-r-md); border: 1px solid var(--qz-line); margin-bottom: var(--qz-s-4); }
.qz2-order-type-tab { flex: 1; padding: 10px; border: none; background: transparent; border-radius: 10px; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); color: var(--qz-ink-3); cursor: pointer; font-family: inherit; transition: all .12s; }
.qz2-order-type-tab.active { background: var(--qz-surface); color: var(--qz-ink-1); box-shadow: var(--qz-shadow-1); }
.qz2-cart-footer { position: sticky; bottom: 0; left: 0; right: 0; background: var(--qz-surface); padding: var(--qz-s-4); border-top: 1px solid var(--qz-line); display: flex; gap: var(--qz-s-3); align-items: center; margin: var(--qz-s-4) calc(-1 * var(--qz-s-4)) 0; }
.qz2-cart-footer-total { flex: 1; }
.qz2-cart-footer-total-lbl { font-size: var(--qz-text-xs); color: var(--qz-ink-3); font-weight: var(--qz-w-medium); letter-spacing: 0.02em; text-transform: uppercase; margin-bottom: 2px; }
.qz2-cart-footer-total-val { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-xl); color: var(--qz-ink-1); }
.qz2-cart-footer-btn { flex: 1.2; padding: 14px 20px; background: var(--qz-accent); color: #fff; border: none; border-radius: var(--qz-r-md); font-weight: var(--qz-w-bold); font-size: var(--qz-text-base); cursor: pointer; font-family: inherit; min-height: 48px; box-shadow: 0 4px 12px rgba(242,97,0,.25); transition: background .15s; }
.qz2-cart-footer-btn:hover { background: var(--qz-accent-hover); }

/* ── Promo code row ──────────────────────────────────────────────────── */
.qz2-promo-wrap { display: flex; gap: var(--qz-s-2); margin-bottom: var(--qz-s-3); }
.qz2-promo-wrap input { flex: 1; padding: 10px 14px; border: 1.5px solid var(--qz-line); border-radius: var(--qz-r-md); font-size: var(--qz-text-sm); font-weight: var(--qz-w-medium); font-family: inherit; text-transform: uppercase; letter-spacing: 0.05em; }
.qz2-promo-wrap input:focus { outline: none; border-color: var(--qz-accent); }

/* ─── RESTAURANTS LIST (qz2) ──────────────────────────────────────── */
.qz2-rlist-header { padding: var(--qz-s-5) var(--qz-s-4) var(--qz-s-3); background: var(--qz-surface); }
.qz2-rlist-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--qz-s-3); gap: var(--qz-s-3); }
.qz2-rlist-title { font-family: 'Poppins', sans-serif; font-size: var(--qz-text-xl); font-weight: var(--qz-w-bold); letter-spacing: -0.02em; color: var(--qz-ink-1); margin: 0; }
.qz2-rlist-mode-tabs { display: inline-flex; background: var(--qz-surface-muted); border: 1px solid var(--qz-line); border-radius: 100px; padding: 3px; gap: 2px; }
.qz2-rlist-mode-tab { padding: 6px 14px; border: none; background: transparent; border-radius: 100px; font-size: var(--qz-text-sm); font-weight: var(--qz-w-bold); color: var(--qz-ink-3); cursor: pointer; font-family: inherit; transition: all .12s; }
.qz2-rlist-mode-tab.active { background: var(--qz-ink-1); color: #fff; }
.qz2-rlist-searchwrap { display: flex; gap: var(--qz-s-2); margin-bottom: var(--qz-s-3); }
.qz2-rlist-search { flex: 1; display: flex; align-items: center; gap: 8px; padding: 10px 14px; background: var(--qz-surface-muted); border: 1.5px solid var(--qz-line); border-radius: var(--qz-r-md); }
.qz2-rlist-search:focus-within { border-color: var(--qz-accent); background: var(--qz-surface); }
.qz2-rlist-search input { flex: 1; border: none; background: none; outline: none; font-size: var(--qz-text-sm); font-family: inherit; color: var(--qz-ink-1); }
.qz2-rlist-search svg { color: var(--qz-ink-3); }
.qz2-rlist-filters { display: flex; gap: var(--qz-s-2); overflow-x: auto; padding: 2px 0 var(--qz-s-2); -webkit-overflow-scrolling: touch; }
.qz2-rlist-filters::-webkit-scrollbar { display: none; }
.qz2-rlist-filter { padding: 6px 14px; background: var(--qz-surface); border: 1.5px solid var(--qz-line); border-radius: 100px; font-size: var(--qz-text-xs); font-weight: var(--qz-w-bold); color: var(--qz-ink-2); cursor: pointer; font-family: inherit; white-space: nowrap; transition: all .12s; }
.qz2-rlist-filter:hover { border-color: var(--qz-ink-1); color: var(--qz-ink-1); }
.qz2-rlist-filter.active { background: var(--qz-ink-1); color: #fff; border-color: var(--qz-ink-1); }
.qz2-rlist-filter.veg { color: var(--qz-success); border-color: var(--qz-success-soft); }
.qz2-rlist-filter.veg.active { background: var(--qz-success); color: #fff; border-color: var(--qz-success); }
.qz2-rlist-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--qz-s-3); padding: var(--qz-s-3) var(--qz-s-4) var(--qz-s-12); }
@media (max-width: 420px) { .qz2-rlist-grid { grid-template-columns: 1fr; } }

/* New cafe card — v71 listing card */
.qz2-cafe-card { background: var(--qz-surface); border-radius: 18px; border: 1px solid var(--qz-line); overflow: hidden; cursor: pointer; transition: transform .12s, box-shadow .15s, border-color .15s; }
.qz2-cafe-card:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); border-color: var(--qz-line-strong); }
.qz2-cafe-img { position: relative; width: 100%; aspect-ratio: 16/11; background: var(--qz-surface-muted); overflow: hidden; }
.qz2-cafe-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qz2-cafe-img-overlay-bottom { position: absolute; left: 10px; bottom: 10px; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.qz2-cafe-closed { position: absolute; inset: 0; background: rgba(0,0,0,0.55); display: flex; align-items: center; justify-content: center; color: #fff; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); text-transform: uppercase; letter-spacing: 0.05em; }
.qz2-cafe-fav { position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; border-radius: 50%; background: rgba(255,255,255,.96); border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; color: var(--qz-ink-2); box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.qz2-cafe-fav.active { color: var(--qz-accent); }
.qz2-cafe-body { padding: 14px 16px 16px; }
.qz2-cafe-name-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.qz2-cafe-name { font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 1.1rem; color: var(--qz-ink-1); line-height: 1.2; letter-spacing: -0.01em; margin: 0; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qz2-cafe-rating-block { flex-shrink: 0; text-align: center; line-height: 1; }
.qz2-cafe-rating-pill { display: inline-flex; align-items: center; gap: 3px; padding: 4px 8px; background: #1a8754; color: #fff; border-radius: 8px; font-weight: 800; font-size: 0.82rem; line-height: 1; }
.qz2-cafe-rating-pill svg { fill: #fff; }
.qz2-cafe-rating-by { display: block; margin-top: 3px; font-size: 0.66rem; font-weight: 600; color: var(--qz-ink-3); text-decoration: underline; text-underline-offset: 2px; }
.qz2-cafe-new { display: inline-flex; padding: 4px 8px; background: var(--qz-accent); color: #fff; border-radius: 8px; font-weight: 800; font-size: 0.7rem; letter-spacing: 0.05em; }
.qz2-cafe-metaline { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; color: var(--qz-ink-2); flex-wrap: wrap; }
.qz2-cafe-meta-item { display: inline-flex; align-items: center; gap: 4px; line-height: 1; color: var(--qz-ink-2); }
.qz2-cafe-meta-item svg { color: var(--qz-ink-3); }
.qz2-cafe-meta-sep { display: inline-block; width: 1px; height: 12px; background: var(--qz-line); }
.qz2-cafe-pickup-free { color: var(--qz-success); font-weight: 700; }
/* Legacy classes still referenced for skeleton compatibility — kept for safety */
.qz2-cafe-metarow { display: flex; align-items: center; gap: 6px; font-size: var(--qz-text-xs); color: var(--qz-ink-3); }
.qz2-cafe-rating { display: inline-flex; align-items: center; gap: 2px; padding: 2px 6px; background: var(--qz-success); color: #fff; border-radius: 4px; font-weight: var(--qz-w-bold); font-size: var(--qz-text-xs); }
.qz2-cafe-dotmeta::before { content: "·"; margin: 0 3px; }

/* ─── RESTAURANT DETAIL / MENU (qz2) — v70 cafe-page redesign ─────── */
/* Hero is hidden by default — cafe photo lives only on the listing card */
.qz2-rd-hero { display: none; }
.qz2-rd-back { position: absolute; top: calc(var(--nav-h) + var(--safe-top) + 8px); left: 14px; width: 36px; height: 36px; border-radius: 50%; background: var(--qz-surface); border: 1px solid var(--qz-line); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: var(--qz-ink-1); box-shadow: 0 1px 4px rgba(0,0,0,.06); z-index: 5; }
.qz2-rd-share { position: absolute; top: calc(var(--nav-h) + var(--safe-top) + 8px); right: 14px; width: 36px; height: 36px; border-radius: 50%; background: var(--qz-surface); border: 1px solid var(--qz-line); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: var(--qz-ink-1); box-shadow: 0 1px 4px rgba(0,0,0,.06); z-index: 5; }
.qz2-rd-info { padding: 60px var(--qz-s-4) var(--qz-s-4); background: var(--qz-surface); border-bottom: 8px solid var(--qz-bg); }
.qz2-rd-header-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.qz2-rd-name { flex: 1; min-width: 0; font-family: 'Poppins', sans-serif; font-size: 1.7rem; font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; color: var(--qz-ink-1); margin: 0; }
.qz2-rd-rating-block { flex-shrink: 0; text-align: center; }
.qz2-rd-rating-pill { display: inline-flex; align-items: center; gap: 4px; padding: 5px 10px; background: #1a8754; color: #fff; border-radius: 8px; font-weight: 800; font-size: 0.92rem; line-height: 1; }
.qz2-rd-rating-pill svg { fill: #fff; }
.qz2-rd-rating-count { display: block; margin-top: 4px; font-size: 0.72rem; font-weight: 700; color: var(--qz-ink-3); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
.qz2-rd-cuisine-line { font-size: 0.92rem; color: var(--qz-ink-2); margin-bottom: 14px; line-height: 1.4; }
.qz2-rd-meta-line { display: flex; align-items: center; gap: 8px; font-size: 0.86rem; color: var(--qz-ink-2); line-height: 1.4; margin-bottom: 6px; }
.qz2-rd-meta-line:last-of-type { margin-bottom: 0; }
.qz2-rd-meta-line svg { flex-shrink: 0; color: var(--qz-ink-3); }
.qz2-rd-meta-line strong { font-weight: 700; color: var(--qz-ink-1); }
.qz2-rd-meta-dot { color: var(--qz-ink-3); }
.qz2-rd-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0 0; }
.qz2-rd-actions { display: flex; gap: 8px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--qz-line); }
.qz2-rd-actions a, .qz2-rd-actions button { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 9px 12px; border-radius: 10px; font-size: 0.84rem; font-weight: 700; font-family: inherit; text-decoration: none; cursor: pointer; border: 1px solid var(--qz-line); background: var(--qz-surface); color: var(--qz-ink-1); transition: all .12s; }
.qz2-rd-actions a:hover, .qz2-rd-actions button:hover { background: var(--qz-surface-muted); border-color: var(--qz-ink-2); }
.qz2-rd-actions .qz2-rd-fav { flex: 0 0 44px; padding: 9px 0; }
.qz2-rd-actions .qz2-rd-fav.is-saved { color: var(--qz-accent); border-color: var(--qz-accent); background: var(--qz-accent-soft); }
.qz2-rd-actions .qz2-rd-fav.is-saved svg { fill: currentColor; }
@media (min-width: 640px) {
  .qz2-rd-name { font-size: 2rem; }
}

/* Category pill bar (sticky below nav) */
.qz2-menu-catbar { position: sticky; top: calc(var(--nav-h) + var(--safe-top)); z-index: 10; background: var(--qz-surface); border-bottom: 1px solid var(--qz-line); padding: var(--qz-s-3) var(--qz-s-4); display: flex; gap: var(--qz-s-2); overflow-x: auto; -webkit-overflow-scrolling: touch; }
.qz2-menu-catbar::-webkit-scrollbar { display: none; }
.qz2-menu-cat-pill { padding: 8px 16px; background: var(--qz-surface-muted); border: 1px solid var(--qz-line); border-radius: 100px; font-size: var(--qz-text-sm); font-weight: var(--qz-w-bold); color: var(--qz-ink-2); cursor: pointer; font-family: inherit; white-space: nowrap; transition: all .12s; }
.qz2-menu-cat-pill:hover { border-color: var(--qz-ink-1); color: var(--qz-ink-1); }
.qz2-menu-cat-pill.active { background: var(--qz-ink-1); color: #fff; border-color: var(--qz-ink-1); }

/* Menu item cards */
.qz2-menu-wrap { padding: var(--qz-s-4); padding-bottom: 120px; background: var(--qz-surface); }
.qz2-menu-section { margin-bottom: var(--qz-s-6); }
.qz2-menu-section-title { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-lg); color: var(--qz-ink-1); margin: 0 0 var(--qz-s-3); display: flex; align-items: baseline; gap: var(--qz-s-2); }
.qz2-menu-section-count { font-size: var(--qz-text-sm); font-weight: var(--qz-w-medium); color: var(--qz-ink-3); }
.qz2-menu-item { display: grid; grid-template-columns: 88px 1fr auto; gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--qz-line); align-items: flex-start; }
.qz2-menu-item:last-child { border-bottom: none; }
.qz2-menu-item-img-wrap { position: relative; width: 88px; height: 88px; border-radius: 12px; overflow: hidden; background: var(--qz-surface-muted); flex-shrink: 0; }
.qz2-menu-item-img-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qz2-menu-item-veg-overlay { position: absolute; top: 6px; left: 6px; width: 16px; height: 16px; background: var(--qz-surface); border-radius: 3px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.qz2-menu-item-info { min-width: 0; padding-top: 2px; }
.qz2-menu-item-name { font-weight: var(--qz-w-bold); font-size: 1rem; color: var(--qz-ink-1); line-height: 1.3; margin-bottom: 4px; }
.qz2-menu-item-price { font-weight: 700; font-size: 0.95rem; color: var(--qz-ink-1); margin-bottom: 4px; }
.qz2-menu-item-price .qz2-menu-item-prep { font-size: 0.78rem; color: var(--qz-ink-3); font-weight: 500; }
.qz2-menu-item-desc { font-size: 0.82rem; color: var(--qz-ink-3); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.qz2-menu-item-actions { flex-shrink: 0; min-width: 92px; display: flex; flex-direction: column; align-items: stretch; padding-top: 2px; }
.qz2-menu-item-add-btn { padding: 8px 18px; background: var(--qz-surface); color: var(--qz-accent); border: 1.5px solid var(--qz-accent); border-radius: 8px; font-size: 0.86rem; font-weight: 800; letter-spacing: 0.04em; cursor: pointer; font-family: inherit; transition: all .12s; }
.qz2-menu-item-add-btn:hover { background: var(--qz-accent-soft); }
.qz2-menu-item-qty { display: flex; align-items: center; justify-content: space-between; background: var(--qz-surface); border: 1.5px solid var(--qz-accent); border-radius: 8px; padding: 2px; gap: 2px; }
.qz2-menu-item-qty button { width: 28px; height: 28px; border: none; background: var(--qz-accent); color: #fff; border-radius: 6px; cursor: pointer; font-weight: 800; font-size: 1rem; }
.qz2-menu-item-qty span { flex: 1; text-align: center; font-weight: 800; font-size: 0.9rem; color: var(--qz-accent); padding: 0 4px; }
.qz2-veg-dot { width: 10px; height: 10px; border: 1.4px solid var(--qz-success); border-radius: 2px; position: relative; flex-shrink: 0; }
.qz2-veg-dot::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 5px; height: 5px; border-radius: 50%; background: var(--qz-success); }
.qz2-veg-dot.nonveg { border-color: var(--qz-danger); }
.qz2-veg-dot.nonveg::before { background: var(--qz-danger); }

/* Floating cart bar (shown at bottom when cart has items) */
.qz2-float-cart { position: fixed; left: 50%; bottom: calc(var(--bottom-nav-h, 60px) + var(--safe-bottom) + 12px); transform: translateX(-50%); width: calc(100% - var(--qz-s-8)); max-width: 420px; background: var(--qz-ink-1); color: #fff; border-radius: var(--qz-r-md); padding: 12px 16px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 8px 24px rgba(15,15,16,0.3); cursor: pointer; z-index: 100; }
.qz2-float-cart-left { display: flex; flex-direction: column; }
.qz2-float-cart-count { font-size: var(--qz-text-xs); color: rgba(255,255,255,.7); font-weight: var(--qz-w-medium); letter-spacing: 0.02em; }
.qz2-float-cart-rest { font-size: var(--qz-text-sm); font-weight: var(--qz-w-bold); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 200px; }
.qz2-float-cart-right { display: flex; align-items: center; gap: 6px; font-size: var(--qz-text-base); font-weight: var(--qz-w-bold); }

/* ─── Category tiles with photos (qz2 v2) ────────────────────────── */
.qz2-cat-grid-v2 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--qz-s-3); }
.qz2-cat-tile { position: relative; aspect-ratio: 1; border-radius: var(--qz-r-md); overflow: hidden; cursor: pointer; background: var(--qz-surface-muted); border: 1px solid var(--qz-line); transition: transform .12s, box-shadow .15s; }
.qz2-cat-tile:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); }
.qz2-cat-tile-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.qz2-cat-tile-gradient { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,0.75) 100%); }
.qz2-cat-tile-label { position: absolute; left: 8px; right: 8px; bottom: 8px; color: #fff; font-size: var(--qz-text-xs); font-weight: var(--qz-w-bold); text-align: left; line-height: 1.2; letter-spacing: 0.01em; }
.qz2-cat-tile-all { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; background: var(--qz-accent-soft); border-color: var(--qz-accent); }
.qz2-cat-tile-all .qz2-cat-tile-label { position: static; color: var(--qz-accent); text-align: center; }
.qz2-cat-tile-all-icon { width: 32px; height: 32px; color: var(--qz-accent); display: inline-flex; align-items: center; justify-content: center; }

/* ─── Popular dishes carousel ────────────────────────────────────── */
.qz2-pd-scroller { display: flex; gap: var(--qz-s-3); overflow-x: auto; padding: var(--qz-s-1) var(--qz-s-4) var(--qz-s-2); margin: 0 calc(-1 * var(--qz-s-4)); scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
.qz2-pd-scroller::-webkit-scrollbar { display: none; }
.qz2-pd-card { flex: 0 0 160px; background: var(--qz-surface); border: 1px solid var(--qz-line); border-radius: var(--qz-r-md); overflow: hidden; cursor: pointer; scroll-snap-align: start; transition: transform .12s, box-shadow .15s; }
.qz2-pd-card:hover { transform: translateY(-2px); box-shadow: var(--qz-shadow-2); }
.qz2-pd-img { width: 100%; aspect-ratio: 1; background: var(--qz-surface-muted); position: relative; overflow: hidden; }
.qz2-pd-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qz2-pd-veg-dot { position: absolute; top: 8px; left: 8px; width: 14px; height: 14px; border: 1.5px solid var(--qz-success); border-radius: 2px; background: rgba(255,255,255,.95); }
.qz2-pd-veg-dot::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 7px; height: 7px; border-radius: 50%; background: var(--qz-success); }
.qz2-pd-veg-dot.nonveg { border-color: var(--qz-danger); }
.qz2-pd-veg-dot.nonveg::before { background: var(--qz-danger); }
.qz2-pd-body { padding: 10px 12px 12px; }
.qz2-pd-name { font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); color: var(--qz-ink-1); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 3px; }
.qz2-pd-cafe { font-size: var(--qz-text-xs); color: var(--qz-ink-3); line-height: 1.3; margin-bottom: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qz2-pd-price { font-family: 'Poppins', sans-serif; font-weight: var(--qz-w-bold); font-size: var(--qz-text-sm); color: var(--qz-ink-1); }

.qz2-cat-tile { background: var(--qz-surface); border: 1px solid var(--qz-line); }
.qz2-cat-tile-svg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 22%; }
.qz2-cat-tile-svg svg { width: 100%; height: 100%; }
.qz2-cat-tile .qz2-cat-tile-label { color: var(--qz-ink-1); text-shadow: none; }

/* ─── Mobile-app width constraint for home page sections ─────────── */
#page-home { max-width: 480px; margin: 0 auto; }
#page-cart { max-width: 480px; margin: 0 auto; }

/* Tighter category grid — 4 columns, smaller tiles, smaller icons */
.qz2-cat-grid-v2 { grid-template-columns: repeat(4, 1fr); gap: 10px; }
.qz2-cat-tile { aspect-ratio: 1; border-radius: 14px; }
.qz2-cat-tile-svg { padding: 28%; }
.qz2-cat-tile-svg svg { width: 100%; height: 100%; max-width: 44px; max-height: 44px; }
.qz2-cat-tile-all .qz2-cat-tile-all-icon svg { width: 24px; height: 24px; }
.qz2-cat-tile-label { font-size: 11px; bottom: 6px; left: 6px; right: 6px; font-weight: 700; letter-spacing: 0.01em; }

/* Reduce section vertical padding so home isn't so long */
#page-home .qz2-section { padding: 18px 16px; }
#page-home .qz2-section + .qz2-section { padding-top: 0; }
#page-home .qz2-hero-wrap { padding: 20px 16px 12px; }
#page-home .qz2-hero-greet { font-size: 26px; }

/* Trust strip tightened */
#page-home .qz2-trust-strip { padding: 12px 16px; }
#page-home .qz2-trust-item-val { font-size: 18px; }
#page-home .qz2-trust-item-lbl { font-size: 11px; }

/* Section heads tighter */
#page-home .qz2-section-head { margin-bottom: 12px; }
#page-home .qz2-section-head-title { font-size: 16px; }

/* Featured cafe grid — 2 columns, tighter cards */
#homeFeatured { grid-template-columns: 1fr 1fr !important; gap: 12px !important; }

/* Popular dish carousel — slightly smaller cards on home */
.qz2-pd-card { flex: 0 0 140px; }
.qz2-pd-name { font-size: 13px; }
.qz2-pd-cafe { font-size: 11px; }
.qz2-pd-price { font-size: 13px; }

/* Make sure no image inside a card escapes its container */
#page-home img { max-width: 100%; height: auto; display: block; }
.qz2-cat-tile img,
.qz2-cat-tile svg { max-width: 100%; max-height: 100%; }

/* Own a cafe card tighter */
#page-home .qz2-card-p5 { padding: 14px 16px; }
#page-home .qz2-card-p5 .qz2-heading { font-size: 15px; }
#page-home .qz2-card-p5 .qz2-small { font-size: 12px; }

/* ─── Cafe cards never go full-screen — cap card width and tile size ─ */
/* DISABLED in v33 — replaced by main grid rule below */
.qz2-cafe-card { max-width: 360px; }

/* Also constrain the popular-dishes carousel cards same way */
.qz2-pd-card { max-width: 200px; }
.qz2-pd-img img,
.qz2-pd-img > div { max-height: 160px; }

/* ─── Hide redundant top-nav location chip when on home page ─────── */
#page-home.active ~ * .nav-location,
body:has(#page-home.active) .nav-location { display: none !important; }
/* Fallback for browsers without :has() — nav-location is hidden globally if hero chip exists */
@supports not selector(:has(*)) {
  /* Leave alone — better to show twice than not at all on old browsers */
}

/* ─── Clamp the placeholder rendered as a <div> (data-URL SVG inline image) ── */

.qz2-pd-img { aspect-ratio: 1 !important; max-height: 160px !important; }
.qz2-pd-img > img,
.qz2-pd-img > div,
.qz2-pd-img > svg { max-height: 160px !important; width: 100% !important; height: 100% !important; object-fit: cover; }

/* ─── Cafe metarow — keep on one line; ellipsize cuisine if needed ── */
.qz2-cafe-metarow { flex-wrap: nowrap !important; overflow: hidden; min-width: 0; }
.qz2-cafe-metarow > * { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; min-width: 0; }
.qz2-cafe-rating, .qz2-cafe-new { flex-shrink: 0; }

/* ─── Cafe card width ceiling ─ never wider than 360, regardless of grid ── */
.qz2-cafe-card { max-width: 100%; width: 100%; }
#restaurantsGrid, #homeFeatured {
  display: grid !important;
  /* auto-fit COLLAPSES empty tracks → single card sits at top-left.
     auto-fill keeps ghost tracks and stretches single items wide. */
  grid-template-columns: repeat(auto-fit, minmax(280px, 360px)) !important;
  gap: 16px !important;
  justify-content: start !important;
  max-width: 1100px !important;
  margin: 0 auto;
  padding: 16px !important;
}
#restaurantsGrid > *, #homeFeatured > * {
  max-width: 360px !important;
  width: 100% !important;
}
@media (max-width: 480px) {
  #restaurantsGrid, #homeFeatured {
    grid-template-columns: 1fr !important;
  }
  #restaurantsGrid > *, #homeFeatured > * {
    max-width: 100% !important;
  }
}
#restaurantsGrid > *, #homeFeatured > * {
  max-width: 360px !important;
  width: 100% !important;
  justify-self: start !important;
}

/* ─── On the popular dishes carousel, clamp width too ──────────── */
.qz2-pd-card { max-width: 160px; }

/* ─── PROFILE PAGE — premium 2-col layout (qz2) ────────────────────── */
#page-profile { background: var(--qz-surface-muted); min-height: 100vh; padding-top: calc(var(--nav-h) + var(--safe-top)); padding-bottom: calc(var(--btm-h, 0px) + var(--safe-bottom) + 32px); }
.qz2-profile-wrap { max-width: 980px; margin: 0 auto; padding: 24px 16px; display: grid; grid-template-columns: 280px 1fr; gap: 24px; align-items: start; }
@media (max-width: 768px) { .qz2-profile-wrap { grid-template-columns: 1fr; padding: 16px; gap: 16px; } }

/* Sidebar */
.qz2-profile-sidebar { display: flex; flex-direction: column; gap: 16px; position: sticky; top: calc(var(--nav-h) + 16px); }
@media (max-width: 768px) { .qz2-profile-sidebar { position: static; } }

/* Hero card with avatar + tier */
.qz2-profile-hero {
  background: var(--qz-surface);
  border: 1px solid var(--qz-line);
  border-radius: var(--qz-r-lg);
  padding: 24px 20px;
  text-align: center;
  box-shadow: var(--qz-shadow-1);
  position: relative;
  overflow: hidden;
}
.qz2-profile-hero::before {
  content: '';
  position: absolute; left: 0; right: 0; top: 0; height: 80px;
  background: linear-gradient(135deg, var(--qz-accent-tint), var(--qz-accent-soft));
  z-index: 0;
}
.qz2-profile-avatar {
  position: relative; z-index: 1;
  width: 80px; height: 80px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--qz-accent), #ff8a3d);
  color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 32px;
  letter-spacing: -0.02em;
  margin: 8px auto 14px;
  box-shadow: 0 4px 12px rgba(242,97,0,0.25), 0 0 0 4px var(--qz-surface);
}
.qz2-profile-name {
  position: relative; z-index: 1;
  font-family: 'Poppins', sans-serif;
  font-size: 18px; font-weight: var(--qz-w-bold);
  letter-spacing: -0.02em;
  color: var(--qz-ink-1);
  margin: 0 0 4px;
}
.qz2-profile-email {
  position: relative; z-index: 1;
  font-size: 13px; color: var(--qz-ink-3);
  margin: 0; word-break: break-word;
}

/* Tier block inside hero */
.qz2-profile-tier {
  position: relative; z-index: 1;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--qz-line);
  text-align: left;
}
.qz2-profile-tier-row {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 8px;
}
.qz2-profile-tier-name {
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 14px;
  color: var(--qz-ink-1);
  letter-spacing: 0.01em;
}
.qz2-profile-tier-pts {
  font-size: 13px;
  font-weight: var(--qz-w-bold);
  color: var(--qz-accent);
  font-family: 'Poppins', sans-serif;
}
.qz2-profile-tier-bar {
  height: 6px;
  background: var(--qz-surface-muted);
  border-radius: 100px;
  overflow: hidden;
  border: 1px solid var(--qz-line);
}
.qz2-profile-tier-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--qz-accent), #ff8a3d);
  border-radius: 100px;
  transition: width 0.5s ease;
}
.qz2-profile-tier-sub {
  font-size: 11px;
  color: var(--qz-ink-3);
  margin-top: 6px;
  font-weight: var(--qz-w-medium);
}

/* Sidebar navigation */
.qz2-profile-nav {
  background: var(--qz-surface);
  border: 1px solid var(--qz-line);
  border-radius: var(--qz-r-lg);
  padding: 6px;
  box-shadow: var(--qz-shadow-1);
  display: flex; flex-direction: column;
}
.qz2-pnav-item {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px;
  background: transparent;
  border: none;
  border-radius: 10px;
  font-family: inherit;
  font-size: 14px;
  font-weight: var(--qz-w-bold);
  color: var(--qz-ink-2);
  cursor: pointer;
  text-align: left;
  width: 100%;
  transition: background 0.12s ease, color 0.12s ease;
}
.qz2-pnav-item:hover {
  background: var(--qz-surface-muted);
  color: var(--qz-ink-1);
}
.qz2-pnav-item.active {
  background: var(--qz-accent-soft);
  color: var(--qz-accent);
}
.qz2-pnav-ic {
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  width: 32px; height: 32px;
  background: var(--qz-surface-muted);
  border-radius: 8px;
  color: var(--qz-ink-2);
}
.qz2-pnav-item.active .qz2-pnav-ic {
  background: var(--qz-accent);
  color: #fff;
}
.qz2-pnav-lbl { flex: 1; }
.qz2-pnav-chev {
  color: var(--qz-ink-4);
  flex-shrink: 0;
}
.qz2-pnav-sep {
  height: 1px;
  background: var(--qz-line);
  margin: 6px 8px;
}
.qz2-pnav-danger { color: var(--qz-danger); }
.qz2-pnav-danger:hover { background: var(--qz-danger-soft); color: var(--qz-danger); }
.qz2-pnav-danger .qz2-pnav-ic { background: var(--qz-danger-soft); color: var(--qz-danger); }

/* Content area */
.qz2-profile-content { min-height: 400px; }

/* ─── Settings rows — refined card style ──────────────────────────── */
.qz2-settings-hero {
  background: var(--qz-surface);
  border: 1px solid var(--qz-line);
  border-radius: var(--qz-r-lg);
  padding: 18px 20px;
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 20px;
  box-shadow: var(--qz-shadow-1);
}
.qz2-settings-hero-avatar {
  width: 52px; height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--qz-accent), #ff8a3d);
  color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 20px;
  flex-shrink: 0;
}
.qz2-settings-hero-info { flex: 1; min-width: 0; }
.qz2-settings-hero-name {
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 16px;
  color: var(--qz-ink-1);
  margin: 0 0 2px;
  letter-spacing: -0.01em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.qz2-settings-hero-email {
  font-size: 13px;
  color: var(--qz-ink-3);
  margin: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.qz2-settings-edit {
  padding: 8px 16px;
  background: var(--qz-surface);
  color: var(--qz-ink-1);
  border: 1.5px solid var(--qz-line);
  border-radius: 10px;
  font-family: inherit;
  font-size: 13px;
  font-weight: var(--qz-w-bold);
  cursor: pointer;
  transition: all 0.12s ease;
  flex-shrink: 0;
}
.qz2-settings-edit:hover {
  border-color: var(--qz-accent);
  color: var(--qz-accent);
  background: var(--qz-accent-soft);
}

.qz2-settings-section { margin-bottom: 24px; }
.qz2-settings-section-title {
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--qz-ink-3);
  margin: 0 0 10px 4px;
}
.qz2-settings-card {
  background: var(--qz-surface);
  border: 1px solid var(--qz-line);
  border-radius: var(--qz-r-lg);
  overflow: hidden;
  box-shadow: var(--qz-shadow-1);
}
.qz2-set-row {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 18px;
  cursor: pointer;
  transition: background 0.12s ease;
  border-bottom: 1px solid var(--qz-line);
}
.qz2-set-row:last-child { border-bottom: none; }
.qz2-set-row:hover { background: var(--qz-surface-muted); }
.qz2-set-row[role="button"] { user-select: none; }
.qz2-set-ic {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.qz2-set-body { flex: 1; min-width: 0; }
.qz2-set-lbl {
  font-size: 14px;
  font-weight: var(--qz-w-bold);
  color: var(--qz-ink-1);
  line-height: 1.3;
  letter-spacing: -0.01em;
}
.qz2-set-sub {
  font-size: 12px;
  color: var(--qz-ink-3);
  margin-top: 2px;
  line-height: 1.4;
  font-weight: var(--qz-w-medium);
}
.qz2-set-right {
  display: inline-flex; align-items: center; gap: 8px;
  flex-shrink: 0;
}
.qz2-set-chev { color: var(--qz-ink-4); }
.qz2-set-pill {
  padding: 3px 10px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: var(--qz-w-bold);
  letter-spacing: 0.02em;
}
.qz2-set-pill-on { background: var(--qz-success-soft); color: var(--qz-success); }
.qz2-set-pill-off { background: var(--qz-surface-muted); color: var(--qz-ink-3); border: 1px solid var(--qz-line); }
.qz2-set-row.danger .qz2-set-lbl { color: var(--qz-danger); }
.qz2-set-row.danger:hover { background: var(--qz-danger-soft); }

/* Toggle switch */
.qz2-switch { position: relative; display: inline-block; width: 42px; height: 24px; flex-shrink: 0; }
.qz2-switch input { opacity: 0; width: 0; height: 0; }
.qz2-switch-slider {
  position: absolute; cursor: pointer;
  inset: 0;
  background: var(--qz-line-strong);
  border-radius: 100px;
  transition: 0.18s ease;
}
.qz2-switch-slider::before {
  content: '';
  position: absolute;
  width: 18px; height: 18px;
  left: 3px; top: 3px;
  background: #fff;
  border-radius: 50%;
  transition: 0.18s ease;
  box-shadow: 0 1px 3px rgba(0,0,0,0.18);
}
.qz2-switch input:checked + .qz2-switch-slider { background: var(--qz-accent); }
.qz2-switch input:checked + .qz2-switch-slider::before { transform: translateX(18px); }

.qz2-settings-version {
  text-align: center;
  font-size: 12px;
  color: var(--qz-ink-4);
  margin-top: 24px;
  padding: 16px;
  font-weight: var(--qz-w-medium);
}

/* Settings page header in content area */
.qz2-content-head {
  font-family: 'Poppins', sans-serif;
  font-weight: var(--qz-w-bold);
  font-size: 22px;
  letter-spacing: -0.02em;
  color: var(--qz-ink-1);
  margin: 0 0 18px;
}

/* ════════════════════════════════════════════════════════════════════════
   QUEZAP DESIGN SYSTEM v3 — dark + light, switchable
   Light is default. Dark activated via [data-theme="dark"] on <html>.
   ════════════════════════════════════════════════════════════════════════ */

:root, [data-theme="light"] {
  /* Surfaces — paper layers from base to elevated */
  --qz3-bg: #fafaf9;
  --qz3-surface: #ffffff;
  --qz3-surface-2: #f7f7f6;
  --qz3-surface-3: #f0f0ef;
  --qz3-overlay: rgba(15, 15, 16, 0.55);

  /* Ink — text contrast scale */
  --qz3-ink-1: #0f0f10;        /* primary text */
  --qz3-ink-2: #3d3d40;
  --qz3-ink-3: #71717a;
  --qz3-ink-4: #a1a1aa;        /* disabled */
  --qz3-ink-inv: #ffffff;       /* on accent bg */

  /* Borders */
  --qz3-line: #e8e8ea;
  --qz3-line-2: #d4d4d7;

  /* Brand */
  --qz3-accent: #f26100;
  --qz3-accent-hover: #d85700;
  --qz3-accent-soft: #fff4ec;
  --qz3-accent-tint: #fff8f2;
  --qz3-accent-ink: #ffffff;

  /* Premium / tier */
  --qz3-gold: #c9a961;
  --qz3-gold-soft: #fdf7e9;
  --qz3-gold-ink: #2a2310;

  /* Status */
  --qz3-success: #15803d;
  --qz3-success-soft: #ecfdf5;
  --qz3-warning: #b45309;
  --qz3-warning-soft: #fffbeb;
  --qz3-danger: #b91c1c;
  --qz3-danger-soft: #fef2f2;
  --qz3-info: #2563eb;
  --qz3-info-soft: #eff6ff;

  /* Shadows */
  --qz3-shadow-1: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06);
  --qz3-shadow-2: 0 4px 8px -2px rgba(16, 24, 40, 0.06), 0 2px 4px -2px rgba(16, 24, 40, 0.04);
  --qz3-shadow-3: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.03);

  /* Banner / hero gradient */
  --qz3-hero-grad: linear-gradient(135deg, #fff8f2, #fff4ec);
}

[data-theme="dark"] {
  --qz3-bg: #0a0a0b;
  --qz3-surface: #131315;
  --qz3-surface-2: #1a1a1d;
  --qz3-surface-3: #232327;
  --qz3-overlay: rgba(0, 0, 0, 0.65);

  --qz3-ink-1: #f5f5f5;
  --qz3-ink-2: #c8c8cb;
  --qz3-ink-3: #8a8a8f;
  --qz3-ink-4: #5a5a5f;
  --qz3-ink-inv: #ffffff;

  --qz3-line: #2a2a2e;
  --qz3-line-2: #38383d;

  --qz3-accent: #ff7a1f;
  --qz3-accent-hover: #ff8a3d;
  --qz3-accent-soft: rgba(255, 122, 31, 0.14);
  --qz3-accent-tint: rgba(255, 122, 31, 0.08);
  --qz3-accent-ink: #ffffff;

  --qz3-gold: #d4b76a;
  --qz3-gold-soft: rgba(212, 183, 106, 0.12);
  --qz3-gold-ink: #f5e8c2;

  --qz3-success: #4ade80;
  --qz3-success-soft: rgba(74, 222, 128, 0.12);
  --qz3-warning: #fbbf24;
  --qz3-warning-soft: rgba(251, 191, 36, 0.12);
  --qz3-danger: #f87171;
  --qz3-danger-soft: rgba(248, 113, 113, 0.14);
  --qz3-info: #60a5fa;
  --qz3-info-soft: rgba(96, 165, 250, 0.14);

  --qz3-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.3);
  --qz3-shadow-2: 0 4px 8px -2px rgba(0, 0, 0, 0.4);
  --qz3-shadow-3: 0 12px 24px -4px rgba(0, 0, 0, 0.5);

  --qz3-hero-grad: linear-gradient(135deg, #1a1410, #131315);
}

/* Apply page-level surfaces when theme is set on html */
html[data-theme="dark"] body { background: var(--qz3-bg); color: var(--qz3-ink-1); }
html[data-theme="dark"] .page { background: var(--qz3-bg); color: var(--qz3-ink-1); }

/* ─── Theme toggle button (in nav) ───────────────────────────────────── */
.qz3-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--qz3-surface-2);
  border: 1px solid var(--qz3-line);
  color: var(--qz3-ink-2);
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
  padding: 0;
  flex-shrink: 0;
}
.qz3-theme-toggle:hover {
  background: var(--qz3-accent-soft);
  color: var(--qz3-accent);
  border-color: var(--qz3-accent);
}
.qz3-theme-toggle svg { width: 18px; height: 18px; }
[data-theme="light"] .qz3-theme-toggle .qz3-icon-sun { display: inline-block; }
[data-theme="light"] .qz3-theme-toggle .qz3-icon-moon { display: none; }
[data-theme="dark"] .qz3-theme-toggle .qz3-icon-sun { display: none; }
[data-theme="dark"] .qz3-theme-toggle .qz3-icon-moon { display: inline-block; }

/* ─── Dark-mode overrides for existing qz2 components ─────────────────
   (Reuse qz2 classes in dark mode by remapping their tokens) */
[data-theme="dark"] {
  --qz-surface: var(--qz3-surface);
  --qz-surface-muted: var(--qz3-surface-2);
  --qz-ink-1: var(--qz3-ink-1);
  --qz-ink-2: var(--qz3-ink-2);
  --qz-ink-3: var(--qz3-ink-3);
  --qz-ink-4: var(--qz3-ink-4);
  --qz-line: var(--qz3-line);
  --qz-line-strong: var(--qz3-line-2);
  --qz-accent: var(--qz3-accent);
  --qz-accent-hover: var(--qz3-accent-hover);
  --qz-accent-soft: var(--qz3-accent-soft);
  --qz-accent-tint: var(--qz3-accent-tint);
  --qz-success: var(--qz3-success);
  --qz-success-soft: var(--qz3-success-soft);
  --qz-warning: var(--qz3-warning);
  --qz-warning-soft: var(--qz3-warning-soft);
  --qz-danger: var(--qz3-danger);
  --qz-danger-soft: var(--qz3-danger-soft);
}
[data-theme="dark"] body { background: var(--qz3-bg); }
[data-theme="dark"] #nav { background: var(--qz3-surface); border-bottom-color: var(--qz3-line); }
[data-theme="dark"] .nav-logo, [data-theme="dark"] .nav-links a { color: var(--qz3-ink-1); }
[data-theme="dark"] .nav-utils-trigger { color: var(--qz3-ink-2); border-color: var(--qz3-line); background: var(--qz3-surface-2); }

/* Make sure nav location chip respects dark */
[data-theme="dark"] #locationLabel { color: var(--qz3-ink-1); }

/* ─── v74 Search overlay — full-screen Swiggy-style search panel ──── */
.qz3-search-overlay {
  position: fixed;
  inset: 0;
  background: var(--qz-surface, #fff);
  z-index: 2000;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  animation: qz3SearchOverlayIn .18s ease-out;
}
@keyframes qz3SearchOverlayIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.qz3-search-panel {
  width: 100%;
  max-width: 760px;
  margin: 0 auto;
  min-height: 100vh;
  background: var(--qz-surface, #fff);
  display: flex;
  flex-direction: column;
}
.qz3-search-panel-top {
  position: sticky;
  top: 0;
  background: var(--qz-surface, #fff);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--qz-line, #e5e5e0);
  z-index: 2;
}
.qz3-search-back {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--qz-ink-1, #1a1a1a);
  cursor: pointer;
  transition: background .12s;
}
.qz3-search-back:hover { background: var(--qz-surface-muted, #f5f5f0); }
.qz3-search-input-wrap {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  border: 1.5px solid var(--qz-line, #e5e5e0);
  border-radius: 12px;
  background: var(--qz-surface, #fff);
  transition: border-color .12s;
}
.qz3-search-input-wrap:focus-within { border-color: var(--qz-ink-2, #4a4a4a); }
.qz3-search-input-wrap > svg { color: var(--qz-ink-3, #6b6b6b); flex-shrink: 0; }
.qz3-search-input-wrap input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-family: inherit;
  font-size: 15px;
  color: var(--qz-ink-1, #1a1a1a);
}
.qz3-search-input-wrap input::placeholder { color: var(--qz-ink-3, #6b6b6b); }
.qz3-search-clear {
  flex: 0 0 26px;
  width: 26px;
  height: 26px;
  border: none;
  background: var(--qz-surface-muted, #f5f5f0);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--qz-ink-2, #4a4a4a);
  cursor: pointer;
}
.qz3-search-panel-body {
  flex: 1;
  padding: 20px 16px 80px;
}
.qz3-search-section { margin-bottom: 28px; }
.qz3-search-section-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 1.05rem;
  color: var(--qz-ink-1, #1a1a1a);
  margin: 0 0 12px;
  letter-spacing: -0.01em;
}
.qz3-search-result-card {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--qz-line, #e5e5e0);
  cursor: pointer;
  transition: background .1s;
}
.qz3-search-result-card:last-child { border-bottom: none; }
.qz3-search-result-card:hover { background: var(--qz-surface-muted, #fafaf7); }
.qz3-search-result-img {
  flex: 0 0 56px;
  width: 56px;
  height: 56px;
  border-radius: 10px;
  overflow: hidden;
  background: var(--qz-surface-muted, #f5f5f0);
}
.qz3-search-result-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qz3-search-result-info { flex: 1; min-width: 0; }
.qz3-search-result-name {
  font-weight: 700;
  font-size: 15px;
  color: var(--qz-ink-1, #1a1a1a);
  margin-bottom: 3px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qz3-search-result-sub {
  font-size: 13px;
  color: var(--qz-ink-3, #6b6b6b);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qz3-search-empty {
  text-align: center;
  padding: 48px 20px;
  color: var(--qz-ink-3, #6b6b6b);
}
.qz3-search-empty-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 700;
  font-size: 16px;
  color: var(--qz-ink-1, #1a1a1a);
  margin-bottom: 6px;
}
.qz3-search-empty-sub { font-size: 13px; }
body.qz3-search-open { overflow: hidden; }

/* ─── Top cafes carousel (v74) — horizontal swipe row of cards ────── */
.qz3-top-cafes-scroll {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  padding: 4px 16px 16px;
  margin: 0 -16px;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.qz3-top-cafes-scroll::-webkit-scrollbar { display: none; }
.qz3-top-cafes-scroll.qz3-dragging { cursor: grabbing; scroll-snap-type: none; }
.qz3-top-cafes-scroll > .qz2-cafe-card {
  flex: 0 0 280px;
  scroll-snap-align: start;
  margin: 0;
}
@media (min-width: 640px) {
  .qz3-top-cafes-scroll > .qz2-cafe-card { flex: 0 0 320px; }
}

/* ─── Cuisine photo scroller (the "What's on your mind" row) ──────── */
.qz3-cuisine-scroll {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  padding: 8px 16px 16px;
  margin: 0 -16px;
  scroll-snap-type: x proximity;
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE/Edge */
}
.qz3-cuisine-scroll::-webkit-scrollbar { display: none; }
.qz3-cuisine-scroll.qz3-dragging { cursor: grabbing; scroll-snap-type: none; }
.qz3-cuisine-tile {
  flex: 0 0 76px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  scroll-snap-align: start;
  user-select: none;
}
.qz3-cuisine-img-wrap {
  width: 72px; height: 72px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--qz3-surface-2);
  border: 2px solid var(--qz3-line);
  position: relative;
  transition: transform 0.12s ease, border-color 0.15s ease;
}
.qz3-cuisine-tile:hover .qz3-cuisine-img-wrap { border-color: var(--qz3-accent); transform: translateY(-2px); }
.qz3-cuisine-tile.active .qz3-cuisine-img-wrap { border-color: var(--qz3-accent); border-width: 2.5px; }
.qz3-cuisine-img-wrap img,
.qz3-cuisine-img-wrap > div {
  width: 100%; height: 100%; display: block; object-fit: cover;
}
.qz3-cuisine-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--qz3-ink-1);
  text-align: center;
  line-height: 1.2;
  max-width: 76px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qz3-cuisine-tile.active .qz3-cuisine-label { color: var(--qz3-accent); }

/* ─── Filter chips row ────────────────────────────────────────── */
.qz3-filter-row {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 4px 16px 12px;
  margin: 0 -16px;
  -webkit-overflow-scrolling: touch;
}
.qz3-filter-row::-webkit-scrollbar { display: none; }
.qz3-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 14px;
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 100px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 700;
  color: var(--qz3-ink-2);
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.12s ease;
  flex-shrink: 0;
}
.qz3-filter-chip:hover { border-color: var(--qz3-ink-1); color: var(--qz3-ink-1); }
.qz3-filter-chip.active { background: var(--qz3-ink-1); color: var(--qz3-surface); border-color: var(--qz3-ink-1); }
[data-theme="dark"] .qz3-filter-chip.active { background: var(--qz3-ink-1); color: var(--qz3-bg); }

/* ─── Section titles for home ────────────────────────────────── */
.qz3-section-eyebrow {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--qz3-ink-3);
  margin: 0 0 12px;
}
.qz3-section-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--qz3-ink-1);
  margin: 0 0 12px;
}

/* ─── Hero search + location ─────────────────────────────────── */
.qz3-home-top {
  background: var(--qz3-surface);
  padding: 20px 16px 12px;
  border-bottom: 1px solid var(--qz3-line);
}
.qz3-loc-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.qz3-loc-pill {
  flex: 1;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  padding: 0;
  font-family: inherit;
  min-width: 0;
}
.qz3-loc-pill-ic {
  color: var(--qz3-accent);
  flex-shrink: 0;
  margin-top: 2px;
}
.qz3-loc-pill-text { min-width: 0; flex: 1; }
.qz3-loc-pill-label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 16px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.01em;
}
.qz3-loc-pill-sub {
  font-size: 12px;
  color: var(--qz3-ink-3);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 2px;
}
.qz3-loc-actions { display: flex; gap: 8px; align-items: center; }

.qz3-search-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--qz3-surface-2);
  border: 1.5px solid var(--qz3-line);
  border-radius: 14px;
  cursor: text;
  transition: border-color 0.15s ease;
}
.qz3-search-bar:focus-within {
  border-color: var(--qz3-accent);
  background: var(--qz3-surface);
}
.qz3-search-bar svg { color: var(--qz3-ink-3); flex-shrink: 0; }
.qz3-search-bar input {
  flex: 1;
  border: none;
  background: none;
  outline: none;
  font-family: inherit;
  font-size: 14px;
  color: var(--qz3-ink-1);
}
.qz3-search-bar input::placeholder { color: var(--qz3-ink-3); }

/* ─── Trust strip (compact, optional) ─────────────────────────── */
.qz3-trust-row {
  display: flex;
  gap: 16px;
  padding: 14px 16px;
  background: var(--qz3-accent-tint);
  border-bottom: 1px solid var(--qz3-line);
}
.qz3-trust-item { flex: 1; text-align: center; }
.qz3-trust-val {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 16px;
  color: var(--qz3-accent);
  line-height: 1;
}
.qz3-trust-lbl {
  font-size: 11px;
  color: var(--qz3-ink-3);
  font-weight: 600;
  margin-top: 4px;
  letter-spacing: 0.02em;
}

/* ─── Restaurant card ─────────────────────────── */
.qz3-rest-card {
  background: var(--qz3-surface);
  border-radius: 16px;
  overflow: hidden;
  cursor: pointer;
  border: 1px solid var(--qz3-line);
  transition: transform 0.12s ease, box-shadow 0.15s ease, border-color 0.15s ease;
  width: 100%;
}
.qz3-rest-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--qz3-shadow-2);
  border-color: var(--qz3-line-2);
}
.qz3-rest-img-wrap {
  position: relative;
  aspect-ratio: 5/3;
  overflow: hidden;
  background: var(--qz3-surface-2);
}
.qz3-rest-img-wrap img,
.qz3-rest-img-wrap > div {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.qz3-rest-offer {
  position: absolute;
  left: 12px; bottom: 12px;
  padding: 6px 10px;
  background: var(--qz3-info);
  color: #fff;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 800;
  text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
.qz3-rest-fav {
  position: absolute;
  top: 12px; right: 12px;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.95);
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--qz3-ink-2);
  box-shadow: 0 1px 3px rgba(0,0,0,0.12);
}
[data-theme="dark"] .qz3-rest-fav { background: rgba(0,0,0,0.55); color: rgba(255,255,255,0.85); }
.qz3-rest-fav.active { color: var(--qz3-danger); }
.qz3-rest-body { padding: 14px; }
.qz3-rest-name-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.qz3-rest-name {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 16px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}
.qz3-rest-rating {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 7px;
  background: var(--qz3-success);
  color: #fff;
  border-radius: 5px;
  font-weight: 800;
  font-size: 12px;
  flex-shrink: 0;
}
.qz3-rest-meta {
  font-size: 13px;
  color: var(--qz3-ink-3);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-bottom: 6px;
}
.qz3-rest-prep {
  font-size: 13px;
  color: var(--qz3-ink-2);
  font-weight: 700;
}

.qz3-rest-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
  padding: 16px;
}
@media (max-width: 480px) {
  .qz3-rest-list { grid-template-columns: 1fr; }
}

/* Section spacing for home */
.qz3-section { padding: 18px 16px; }
.qz3-section + .qz3-section { padding-top: 8px; }

/* ════════════════════════════════════════════════════════════════════
   PHASE 2 — qz2 components in dark mode
   ════════════════════════════════════════════════════════════════════ */
[data-theme="dark"] .qz2-rlist-header,
[data-theme="dark"] .qz2-menu-catbar,
[data-theme="dark"] .qz2-rd-info { background: var(--qz3-surface) !important; border-color: var(--qz3-line) !important; }

[data-theme="dark"] .qz2-rlist-mode-tab.active { background: #fff; color: #000; }
[data-theme="dark"] .qz2-rlist-filter { background: var(--qz3-surface-2); border-color: var(--qz3-line); color: var(--qz3-ink-2); }
[data-theme="dark"] .qz2-rlist-filter:hover { border-color: var(--qz3-ink-1); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-rlist-filter.active { background: #fff; color: #000; border-color: #fff; }
[data-theme="dark"] .qz2-rlist-search { background: var(--qz3-surface-2); border-color: var(--qz3-line); }
[data-theme="dark"] .qz2-rlist-search input { color: var(--qz3-ink-1); }

[data-theme="dark"] .qz2-cafe-card,
[data-theme="dark"] .qz2-card,
[data-theme="dark"] .qz2-rest-card { background: var(--qz3-surface); border-color: var(--qz3-line); }
[data-theme="dark"] .qz2-cafe-name, [data-theme="dark"] .qz2-rest-name { color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-cafe-metarow { color: var(--qz3-ink-3); }

[data-theme="dark"] .qz2-rlist-title,
[data-theme="dark"] .qz2-cart-title,
[data-theme="dark"] .qz2-rd-name,
[data-theme="dark"] .qz2-menu-section-title,
[data-theme="dark"] .qz2-section-head-title,
[data-theme="dark"] .qz2-content-head { color: var(--qz3-ink-1); }

[data-theme="dark"] .qz2-empty-title { color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-empty-sub { color: var(--qz3-ink-3); }

[data-theme="dark"] .qz2-menu-item { border-bottom-color: var(--qz3-line); }
[data-theme="dark"] .qz2-menu-item-name, [data-theme="dark"] .qz2-menu-item-price { color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-menu-item-desc { color: var(--qz3-ink-3); }
[data-theme="dark"] .qz2-menu-item-img-wrap { background: var(--qz3-surface-2); }
[data-theme="dark"] .qz2-menu-cat-pill { background: var(--qz3-surface-2); border-color: var(--qz3-line); color: var(--qz3-ink-2); }
[data-theme="dark"] .qz2-menu-cat-pill.active { background: #fff; color: #000; border-color: #fff; }

[data-theme="dark"] .qz2-cart-back,
[data-theme="dark"] .qz2-rd-back,
[data-theme="dark"] .qz2-rd-share { background: var(--qz3-surface); border: 1px solid var(--qz3-line); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-cart-item { border-bottom-color: var(--qz3-line); }
[data-theme="dark"] .qz2-cart-item-name, [data-theme="dark"] .qz2-cart-item-price { color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-qty-ctrl { background: var(--qz3-surface-2); border-color: var(--qz3-line); }
[data-theme="dark"] .qz2-qty-btn { background: var(--qz3-surface); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-bill-row { color: var(--qz3-ink-2); }
[data-theme="dark"] .qz2-bill-row-total { color: var(--qz3-ink-1); border-top-color: var(--qz3-line); }
[data-theme="dark"] .qz2-cart-footer { background: var(--qz3-surface); border-top-color: var(--qz3-line); }
[data-theme="dark"] .qz2-cart-footer-total-val { color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-slot-btn { background: var(--qz3-surface-2); border-color: var(--qz3-line); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-slot-btn.active { background: var(--qz3-accent); color: #fff; border-color: var(--qz3-accent); }
[data-theme="dark"] .qz2-order-type-tabs { background: var(--qz3-surface-2); border-color: var(--qz3-line); }
[data-theme="dark"] .qz2-order-type-tab.active { background: var(--qz3-surface); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-promo-wrap input { background: var(--qz3-surface-2); border-color: var(--qz3-line); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-input { background: var(--qz3-surface-2); border-color: var(--qz3-line); color: var(--qz3-ink-1); }
[data-theme="dark"] .qz2-input::placeholder { color: var(--qz3-ink-4); }
[data-theme="dark"] .qz2-label { color: var(--qz3-ink-3); }

/* Float cart bar in dark mode — keep it dark always */
[data-theme="dark"] .qz2-float-cart { background: var(--qz3-accent); color: #fff; }

/* ════════════════════════════════════════════════════════════════════
   PHASE 3 — PROFILE page rebuild (themed, sectioned)
   ════════════════════════════════════════════════════════════════════ */
#page-profile { background: var(--qz3-bg); padding-top: calc(var(--nav-h) + var(--safe-top)); padding-bottom: calc(var(--btm-h, 0px) + var(--safe-bottom) + 32px); min-height: 100vh; }

.qz3-profile-wrap {
  max-width: 720px;
  margin: 0 auto;
  padding: 16px;
}

/* Hero card with watermark pattern + avatar */
.qz3-profile-hero {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 16px;
  padding: 22px 20px;
  display: flex;
  align-items: center;
  gap: 16px;
  position: relative;
  overflow: hidden;
  margin-bottom: 18px;
}
/* Subtle on-brand pattern in hero — geometric, low-opacity */
.qz3-profile-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'><g fill='none' stroke='%23f26100' stroke-width='1' opacity='0.06'><path d='M60 10 L80 30 L80 60 L60 80 L40 60 L40 30 Z'/><path d='M30 30 L50 50 M70 50 L90 30 M30 90 L50 70 M70 70 L90 90'/></g></svg>");
  background-size: 120px 120px;
  background-position: right -20px top -20px;
  background-repeat: no-repeat;
  pointer-events: none;
}
[data-theme="dark"] .qz3-profile-hero::before { opacity: 0.5; }
.qz3-profile-hero > * { position: relative; z-index: 1; }

.qz3-profile-avatar {
  width: 64px; height: 64px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--qz3-accent), #ff8a3d);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 26px;
  letter-spacing: -0.02em;
  flex-shrink: 0;
  box-shadow: 0 0 0 4px var(--qz3-surface), 0 4px 12px rgba(242, 97, 0, 0.25);
}
.qz3-profile-info { flex: 1; min-width: 0; }
.qz3-profile-name {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.02em;
  margin: 0 0 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qz3-profile-edit-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  font-weight: 700;
  color: var(--qz3-accent);
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  font-family: inherit;
}
.qz3-profile-edit-link:hover { color: var(--qz3-accent-hover); }

/* QuePoints quick-row inside hero */
.qz3-profile-points-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  padding: 8px 12px;
  background: var(--qz3-accent-soft);
  border-radius: 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--qz3-accent);
}
.qz3-profile-points-row svg { flex-shrink: 0; }
.qz3-profile-points-row strong { font-family: 'Poppins', sans-serif; font-weight: 800; }

/* Quick action tiles row (Wallet | Coupons) */
.qz3-quick-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 18px;
}
.qz3-quick-tile {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 14px;
  padding: 14px 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: border-color 0.15s ease, transform 0.12s ease;
  font-family: inherit;
  text-align: left;
}
.qz3-quick-tile:hover { border-color: var(--qz3-accent); transform: translateY(-1px); }
.qz3-quick-tile-ic {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--qz3-surface-2);
  color: var(--qz3-ink-2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.qz3-quick-tile-info { flex: 1; min-width: 0; }
.qz3-quick-tile-label { font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 14px; color: var(--qz3-ink-1); letter-spacing: -0.01em; }
.qz3-quick-tile-sub { font-size: 12px; color: var(--qz3-ink-3); margin-top: 2px; font-weight: 600; }

/* Sectioned cards with brand accent stripe */
.qz3-section-block { margin-bottom: 18px; }
.qz3-section-block-title {
  position: relative;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.02em;
  text-transform: none;
  color: var(--qz3-ink-1);
  padding-left: 12px;
  margin: 0 0 8px;
  line-height: 1.2;
}
.qz3-section-block-title::before {
  content: '';
  position: absolute;
  left: 0; top: 1px;
  width: 3px;
  height: calc(100% - 2px);
  background: var(--qz3-accent);
  border-radius: 100px;
}
.qz3-section-card {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 14px;
  overflow: hidden;
}
.qz3-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  cursor: pointer;
  border-bottom: 1px solid var(--qz3-line);
  transition: background 0.12s ease;
  font-family: inherit;
  background: none;
  border-left: none;
  border-right: none;
  border-top: none;
  width: 100%;
  text-align: left;
}
.qz3-row:last-child { border-bottom: none; }
.qz3-row:hover { background: var(--qz3-surface-2); }
.qz3-row-ic {
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--qz3-ink-2);
  flex-shrink: 0;
}
.qz3-row-body { flex: 1; min-width: 0; }
.qz3-row-label {
  font-size: 14px;
  font-weight: 700;
  color: var(--qz3-ink-1);
  line-height: 1.3;
}
.qz3-row-sub {
  font-size: 12px;
  color: var(--qz3-ink-3);
  margin-top: 2px;
  font-weight: 500;
}
.qz3-row-right {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  color: var(--qz3-ink-3);
}
.qz3-row-pill {
  padding: 3px 9px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.02em;
}
.qz3-row-pill-on { background: var(--qz3-success-soft); color: var(--qz3-success); }
.qz3-row-pill-off { background: var(--qz3-surface-2); color: var(--qz3-ink-3); }
.qz3-row-value {
  font-size: 13px;
  font-weight: 700;
  color: var(--qz3-ink-2);
}
.qz3-row.danger .qz3-row-label { color: var(--qz3-danger); }
.qz3-row.danger .qz3-row-ic { color: var(--qz3-danger); }
.qz3-row.danger:hover { background: var(--qz3-danger-soft); }

/* Toggle switch for preferences */
.qz3-switch { position: relative; display: inline-block; width: 42px; height: 24px; flex-shrink: 0; }
.qz3-switch input { opacity: 0; width: 0; height: 0; }
.qz3-switch-slider {
  position: absolute; cursor: pointer;
  inset: 0;
  background: var(--qz3-line-2);
  border-radius: 100px;
  transition: 0.18s ease;
}
.qz3-switch-slider::before {
  content: '';
  position: absolute;
  width: 18px; height: 18px;
  left: 3px; top: 3px;
  background: #fff;
  border-radius: 50%;
  transition: 0.18s ease;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.qz3-switch input:checked + .qz3-switch-slider { background: var(--qz3-accent); }
.qz3-switch input:checked + .qz3-switch-slider::before { transform: translateX(18px); }

.qz3-version {
  text-align: center;
  font-size: 12px;
  color: var(--qz3-ink-4);
  margin-top: 24px;
  padding: 16px;
  font-weight: 600;
}

/* Theme picker modal-ish row right side */
.qz3-theme-pills {
  display: inline-flex;
  background: var(--qz3-surface-2);
  border-radius: 10px;
  padding: 3px;
  gap: 2px;
}
.qz3-theme-pill {
  padding: 5px 12px;
  border: none;
  background: transparent;
  border-radius: 8px;
  font-family: inherit;
  font-size: 12px;
  font-weight: 700;
  color: var(--qz3-ink-3);
  cursor: pointer;
  transition: all 0.12s ease;
}
.qz3-theme-pill.active { background: var(--qz3-surface); color: var(--qz3-ink-1); box-shadow: var(--qz3-shadow-1); }

/* ════ PHASE 4 — Final dark-mode polish ════ */
[data-theme="dark"] body, [data-theme="dark"] html { background: var(--qz3-bg) !important; }
[data-theme="dark"] .nav-utils-pop, [data-theme="dark"] .nav-utils-popdown { background: var(--qz3-surface) !important; border-color: var(--qz3-line) !important; color: var(--qz3-ink-1) !important; }
[data-theme="dark"] .nav-utils-pop a, [data-theme="dark"] .nav-utils-popdown a { color: var(--qz3-ink-1) !important; }
[data-theme="dark"] .nav-utils-pop a:hover, [data-theme="dark"] .nav-utils-popdown a:hover { background: var(--qz3-surface-2) !important; }
[data-theme="dark"] .modal, [data-theme="dark"] .modal-card { background: var(--qz3-surface) !important; color: var(--qz3-ink-1) !important; border-color: var(--qz3-line) !important; }
[data-theme="dark"] .modal h2, [data-theme="dark"] .modal h3, [data-theme="dark"] .modal h4 { color: var(--qz3-ink-1) !important; }
[data-theme="dark"] .modal .modal-close { color: var(--qz3-ink-2) !important; }
[data-theme="dark"] .inp, [data-theme="dark"] input[type="text"], [data-theme="dark"] input[type="email"], [data-theme="dark"] input[type="tel"], [data-theme="dark"] input[type="password"], [data-theme="dark"] textarea, [data-theme="dark"] select {
  background: var(--qz3-surface-2) !important;
  border-color: var(--qz3-line) !important;
  color: var(--qz3-ink-1) !important;
}
[data-theme="dark"] input::placeholder, [data-theme="dark"] textarea::placeholder { color: var(--qz3-ink-4) !important; }
[data-theme="dark"] .toast { background: var(--qz3-surface) !important; color: var(--qz3-ink-1) !important; border: 1px solid var(--qz3-line); }
[data-theme="dark"] .bottom-nav { background: var(--qz3-surface) !important; border-top-color: var(--qz3-line) !important; }
[data-theme="dark"] .bottom-nav a { color: var(--qz3-ink-3) !important; }
[data-theme="dark"] .bottom-nav a.active { color: var(--qz3-accent) !important; }
[data-theme="dark"] .spinner { border-color: var(--qz3-line) !important; border-top-color: var(--qz3-accent) !important; }
[data-theme="dark"] .badge-yellow { background: var(--qz3-warning-soft); color: var(--qz3-warning); }
[data-theme="dark"] .badge-blue { background: var(--qz3-info-soft); color: var(--qz3-info); }
[data-theme="dark"] .badge-orange { background: var(--qz3-accent-soft); color: var(--qz3-accent); }
[data-theme="dark"] .badge-green { background: var(--qz3-success-soft); color: var(--qz3-success); }
[data-theme="dark"] .badge-gray { background: var(--qz3-surface-2); color: var(--qz3-ink-3); }
[data-theme="dark"] .badge-red { background: var(--qz3-danger-soft); color: var(--qz3-danger); }

/* About / Terms / Privacy / Refund / Support pages — give them dark-aware bg */
[data-theme="dark"] #page-about, [data-theme="dark"] #page-terms, [data-theme="dark"] #page-privacy, [data-theme="dark"] #page-refund, [data-theme="dark"] #page-support { background: var(--qz3-bg) !important; color: var(--qz3-ink-1) !important; }
[data-theme="dark"] #page-about h1, [data-theme="dark"] #page-about h2, [data-theme="dark"] #page-about h3,
[data-theme="dark"] #page-terms h1, [data-theme="dark"] #page-terms h2,
[data-theme="dark"] #page-privacy h1, [data-theme="dark"] #page-privacy h2,
[data-theme="dark"] #page-refund h1, [data-theme="dark"] #page-refund h2,
[data-theme="dark"] #page-support h1, [data-theme="dark"] #page-support h2 { color: var(--qz3-ink-1) !important; }

/* Wallet page in dark mode */
[data-theme="dark"] #page-wallet { background: var(--qz3-bg) !important; }
[data-theme="dark"] #page-wallet .wh-card { background: linear-gradient(135deg, var(--qz3-accent), var(--qz3-accent-hover)) !important; }

/* Auth page in dark */
[data-theme="dark"] #page-auth { background: var(--qz3-bg) !important; }
[data-theme="dark"] #page-auth .auth-card { background: var(--qz3-surface) !important; border-color: var(--qz3-line) !important; }
[data-theme="dark"] #page-auth .auth-card h1, [data-theme="dark"] #page-auth .auth-card h2 { color: var(--qz3-ink-1) !important; }

/* Track page in dark */
[data-theme="dark"] #page-track { background: var(--qz3-bg) !important; }
[data-theme="dark"] .track-info-card, [data-theme="dark"] .track-progress-wrap, [data-theme="dark"] .track-items, [data-theme="dark"] .track-actions { background: var(--qz3-surface) !important; border-color: var(--qz3-line) !important; }
[data-theme="dark"] .track-info-val, [data-theme="dark"] .track-items-title, [data-theme="dark"] .track-item-row { color: var(--qz3-ink-1) !important; }
[data-theme="dark"] .track-info-lbl, [data-theme="dark"] .track-items-count { color: var(--qz3-ink-3) !important; }
[data-theme="dark"] .track-bar-line { background: var(--qz3-surface-2) !important; }

/* Order success page in dark */
[data-theme="dark"] #page-order-success { background: var(--qz3-bg) !important; }
[data-theme="dark"] .success-wrap, [data-theme="dark"] .success-row { color: var(--qz3-ink-1) !important; }
[data-theme="dark"] .success-row { border-bottom-color: var(--qz3-line) !important; }
[data-theme="dark"] .sr-label { color: var(--qz3-ink-3) !important; }
[data-theme="dark"] .sr-value { color: var(--qz3-ink-1) !important; }

/* Top nav location pill in dark */
[data-theme="dark"] .nav-location { color: var(--qz3-ink-1) !important; }

/* Help button in dark */
[data-theme="dark"] .help-btn { background: var(--qz3-accent) !important; color: #fff !important; }

/* ════════ TURN A — bug fixes ════════ */

/* FIX 4: Top nav declutter — Veg/Health+/Campus into a single overflow menu on small viewports */
@media (max-width: 1100px) {
  /* Hide the verbose pill-style buttons; rely on Settings for these toggles */
  .nav-utils-trigger.nav-veg-toggle,
  #healthyModeBtn,
  #campusModeBtn { display: none !important; }
}

/* FIX 5 + 6: Desktop layout — wider container, use the empty space */
@media (min-width: 1024px) {
  /* The home page should fill more horizontal space on desktop */
  #page-home { max-width: none !important; }
  .qz3-home-top { max-width: 1100px; margin: 0 auto; }
  /* Cuisine row gets wider; restaurants in 3 columns */
  .qz3-section { max-width: 1100px; margin: 0 auto; padding-left: 24px; padding-right: 24px; }
  .qz3-rest-list { grid-template-columns: repeat(3, 1fr) !important; }
  /* Section heading scale for desktop */
  .qz3-section-title { font-size: 22px; }
  .qz3-cuisine-tile { flex: 0 0 84px; }
  .qz3-cuisine-img-wrap { width: 80px; height: 80px; }
}

/* FIX 6: Hero banner area — visible on desktop only, slim on mobile */
.qz3-hero-banner {
  display: none;
  background: linear-gradient(135deg, var(--qz3-accent-tint) 0%, var(--qz3-accent-soft) 100%);
  border-radius: 18px;
  padding: 32px 36px;
  margin: 16px auto 0;
  max-width: 1052px;
  display: flex;
  align-items: center;
  gap: 24px;
  border: 1px solid var(--qz3-accent-soft);
}
.qz3-hero-banner-text {
  flex: 1;
  min-width: 0;
}
.qz3-hero-banner-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--qz3-ink-1);
  margin: 0 0 8px;
}
.qz3-hero-banner-sub {
  font-size: 15px;
  font-weight: 600;
  color: var(--qz3-ink-2);
  line-height: 1.5;
  margin: 0;
  max-width: 520px;
}
.qz3-hero-banner-art {
  flex-shrink: 0;
  width: 180px;
  height: 140px;
  display: none;
}
@media (min-width: 1024px) {
  .qz3-hero-banner { display: flex; }
  .qz3-hero-banner-art { display: block; }
}
@media (max-width: 1023px) {
  .qz3-hero-banner { display: none !important; }
}

/* While we're at it: ensure qz3-rest-list doesn't have weird "1 cafe centered awkwardly" */
.qz3-rest-list:empty::before {
  content: '';
  grid-column: 1 / -1;
}

/* FIX 1 follow-up: ensure cuisine tile All has proper visual weight */
.qz3-cuisine-tile.active .qz3-cuisine-img-wrap {
  border-color: var(--qz3-accent);
  border-width: 3px;
  background: var(--qz3-accent-soft);
}

/* When a cuisine tile falls back to an SVG illustration, keep it contained (not cover-cropped) */
.qz3-cuisine-img-wrap img.qz3-cuisine-img-fallback {
  object-fit: contain !important;
  padding: 8px;
  background: var(--qz3-accent-tint);
}

/* ════════ TURN B — single-cafe alignment + marketing strip ════════ */

/* When the cafe list has just 1 or 2 items, don't stretch them across the full width.
   Cap each card to ~340px, left-align the grid (not center). */
.qz3-rest-list {
  justify-content: start;  /* left-align instead of stretching */
}
.qz3-rest-list > .qz3-rest-card {
  max-width: 360px;
  width: 100%;
}
@media (min-width: 1024px) {
  .qz3-rest-list {
    grid-template-columns: repeat(auto-fit, minmax(280px, 360px)) !important;
    gap: 16px;
  }
}

/* ── Marketing strip — 3 tiles between cuisine row and "Restaurants near you" ── */
.qz3-promo-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  padding: 16px;
  max-width: 1100px;
  margin: 0 auto;
}
.qz3-promo-tile {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 16px;
  padding: 18px 16px;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  transition: transform 0.12s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.qz3-promo-tile:hover {
  transform: translateY(-2px);
  box-shadow: var(--qz3-shadow-2);
  border-color: var(--qz3-accent);
}
.qz3-promo-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: var(--qz3-accent-soft);
  color: var(--qz3-accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.qz3-promo-text { flex: 1; min-width: 0; }
.qz3-promo-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.01em;
  margin: 0 0 4px;
  line-height: 1.25;
}
.qz3-promo-sub {
  font-size: 12px;
  color: var(--qz3-ink-3);
  font-weight: 500;
  line-height: 1.45;
  margin: 0;
}
@media (max-width: 768px) {
  .qz3-promo-strip {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .qz3-promo-tile { padding: 14px; }
}

/* ── "Coming soon" banner below cafe list ── */
.qz3-coming-soon {
  max-width: 1100px;
  margin: 8px auto 0;
  padding: 24px 20px;
  background: linear-gradient(135deg, var(--qz3-accent-tint) 0%, var(--qz3-surface) 100%);
  border: 1px dashed var(--qz3-accent);
  border-radius: 16px;
  display: flex;
  align-items: center;
  gap: 16px;
}
.qz3-coming-soon-emoji {
  font-size: 36px;
  flex-shrink: 0;
  line-height: 1;
}
.qz3-coming-soon-text { flex: 1; min-width: 0; }
.qz3-coming-soon-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 15px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.01em;
  margin: 0 0 4px;
}
.qz3-coming-soon-sub {
  font-size: 13px;
  color: var(--qz3-ink-2);
  font-weight: 500;
  line-height: 1.5;
  margin: 0;
}
.qz3-coming-soon-cta {
  flex-shrink: 0;
  padding: 10px 18px;
  background: var(--qz3-accent);
  color: #fff;
  border: none;
  border-radius: 10px;
  font-family: inherit;
  font-weight: 800;
  font-size: 13px;
  cursor: pointer;
  transition: background 0.15s ease;
}
.qz3-coming-soon-cta:hover {
  background: var(--qz3-accent-hover);
}
@media (max-width: 640px) {
  .qz3-coming-soon {
    flex-direction: column;
    text-align: center;
    align-items: center;
  }
  .qz3-coming-soon-cta { width: 100%; }
}

/* ════════ Search dropdown — live results ════════ */
.qz3-search-wrap {
  position: relative;
}
.qz3-search-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 14px;
  box-shadow: var(--qz3-shadow-3);
  max-height: 420px;
  overflow-y: auto;
  z-index: 100;
}
.qz3-search-result {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  cursor: pointer;
  border-bottom: 1px solid var(--qz3-line);
  transition: background 0.12s ease;
}
.qz3-search-result:last-child { border-bottom: none; }
.qz3-search-result:hover { background: var(--qz3-surface-2); }
.qz3-search-result-img {
  width: 56px;
  height: 56px;
  border-radius: 10px;
  overflow: hidden;
  background: var(--qz3-surface-2);
  flex-shrink: 0;
  position: relative;
}
.qz3-search-result-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.qz3-search-veg-dot {
  position: absolute;
  top: 4px;
  left: 4px;
  width: 12px;
  height: 12px;
  border: 1.5px solid var(--qz3-success);
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.95);
}
.qz3-search-veg-dot::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--qz3-success);
}
.qz3-search-veg-dot.nonveg { border-color: var(--qz3-danger); }
.qz3-search-veg-dot.nonveg::before { background: var(--qz3-danger); }
.qz3-search-result-info {
  flex: 1;
  min-width: 0;
}
.qz3-search-result-name {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin-bottom: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.qz3-search-result-cafe {
  font-size: 12px;
  color: var(--qz3-ink-3);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 2px;
}
.qz3-search-result-price {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 13px;
  color: var(--qz3-accent);
}
.qz3-search-empty {
  padding: 32px 20px;
  text-align: center;
}
.qz3-search-empty-icon {
  color: var(--qz3-ink-4);
  margin-bottom: 8px;
}
.qz3-search-empty-text {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: var(--qz3-ink-1);
  margin-bottom: 4px;
}
.qz3-search-empty-sub {
  font-size: 12px;
  color: var(--qz3-ink-3);
  font-weight: 500;
}

/* The wrapping div uses inline flex centering — on desktop, push it to the right half */
@media (min-width: 1024px) {
  
  #page-auth > 
  #page-auth .auth-card {
    max-width: 440px;
    margin: 0 auto;
  }
}

/* Mobile: stack normally, hide bg photo */
@media (max-width: 1023px) {
  #page-auth > 
  
}

/* ════════ Cafes page — align header with grid ════════ */
#page-restaurants .qz2-rlist-header {
  max-width: 1100px;
  margin: 0 auto;
  padding-left: 16px;
  padding-right: 16px;
}
@media (min-width: 1024px) {
  #page-restaurants .qz2-rlist-header {
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* ════════ Active nav link — minimal style ════════ */
.nav-links a.active,
.nav-links li.active a {
  color: var(--primary) !important;
  font-weight: 800 !important;
}

/* ════════════════════════════════════════════════════════════════
   ABOUT PAGE v2 — startup landing style, theme-aware
   ════════════════════════════════════════════════════════════════ */

#page-about {
  background: var(--qz3-bg);
  min-height: 100vh;
  padding-top: calc(var(--nav-h) + var(--safe-top));
  padding-bottom: calc(var(--btm-h, 0px) + var(--safe-bottom) + 32px);
}

/* Eyebrow tags */
.qzab2-eyebrow {
  display: inline-block;
  font-family: 'Poppins', sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--qz3-accent);
  background: var(--qz3-accent-soft);
  padding: 6px 14px;
  border-radius: 100px;
  margin-bottom: 18px;
}
.qzab2-eyebrow-light {
  color: rgba(255, 255, 255, 0.95);
  background: rgba(255, 255, 255, 0.18);
}

/* Headings */
.qzab2-section-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 36px;
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--qz3-ink-1);
  margin: 0 0 36px;
  max-width: 720px;
}
.qzab2-section-title-light {
  color: #fff;
}
.qzab2-accent { color: var(--qz3-accent); }

@media (max-width: 768px) {
  .qzab2-section-title { font-size: 26px; margin-bottom: 24px; }
}

/* ────────── HERO ────────── */
.qzab2-hero {
  position: relative;
  padding: 80px 24px 100px;
  overflow: hidden;
  background: linear-gradient(180deg, var(--qz3-accent-tint) 0%, var(--qz3-bg) 100%);
}
.qzab2-hero-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.qzab2-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(60px);
  opacity: 0.35;
}
.qzab2-blob-1 {
  width: 400px; height: 400px;
  background: var(--qz3-accent);
  top: -150px; right: -100px;
  animation: qzab2Float 18s ease-in-out infinite;
}
.qzab2-blob-2 {
  width: 350px; height: 350px;
  background: #ff944d;
  bottom: -100px; left: -80px;
  animation: qzab2Float 22s ease-in-out infinite reverse;
}
.qzab2-blob-3 {
  width: 250px; height: 250px;
  background: #ffb47a;
  top: 40%; left: 50%;
  opacity: 0.2;
  animation: qzab2Float 26s ease-in-out infinite;
}
@keyframes qzab2Float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(40px, -30px) scale(1.05); }
}
.qzab2-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}
.qzab2-hero-eyebrow {
  display: inline-block;
  font-family: 'Poppins', sans-serif;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--qz3-accent);
  background: rgba(242, 97, 0, 0.1);
  border: 1px solid rgba(242, 97, 0, 0.2);
  padding: 7px 18px;
  border-radius: 100px;
  margin-bottom: 24px;
  backdrop-filter: blur(8px);
}
.qzab2-hero-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 64px;
  line-height: 1.05;
  letter-spacing: -0.04em;
  color: var(--qz3-ink-1);
  margin: 0 0 20px;
}
.qzab2-hero-lead {
  font-size: 19px;
  line-height: 1.6;
  color: var(--qz3-ink-2);
  max-width: 620px;
  margin: 0 auto 36px;
  font-weight: 500;
}
.qzab2-hero-actions {
  display: inline-flex;
  gap: 14px;
  flex-wrap: wrap;
  justify-content: center;
}

@media (max-width: 768px) {
  .qzab2-hero { padding: 56px 20px 70px; }
  .qzab2-hero-title { font-size: 40px; }
  .qzab2-hero-lead { font-size: 16px; }
}
@media (max-width: 480px) {
  .qzab2-hero-title { font-size: 32px; }
}

/* CTA buttons (reused) */
.qzab2-cta-primary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  background: var(--qz3-accent);
  color: #fff;
  border: none;
  border-radius: 100px;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 15px;
  letter-spacing: -0.005em;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(242, 97, 0, 0.3);
  transition: all 0.18s cubic-bezier(.34, 1.56, .64, 1);
}
.qzab2-cta-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(242, 97, 0, 0.4);
  background: var(--qz3-accent-hover);
}
.qzab2-cta-primary:active {
  transform: translateY(0);
}
.qzab2-cta-secondary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  background: var(--qz3-surface);
  color: var(--qz3-ink-1);
  border: 1.5px solid var(--qz3-line-2);
  border-radius: 100px;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 15px;
  letter-spacing: -0.005em;
  cursor: pointer;
  transition: all 0.18s ease;
}
.qzab2-cta-secondary:hover {
  border-color: var(--qz3-accent);
  color: var(--qz3-accent);
  transform: translateY(-2px);
}

/* ────────── STATS STRIP ────────── */
.qzab2-stats-strip {
  background: var(--qz3-surface);
  border-top: 1px solid var(--qz3-line);
  border-bottom: 1px solid var(--qz3-line);
  padding: 32px 24px;
}
.qzab2-stats-inner {
  max-width: 1100px;
  margin: 0 auto;
  display: flex;
  justify-content: space-around;
  align-items: center;
  gap: 16px;
}
.qzab2-stat {
  text-align: center;
  flex: 1;
  min-width: 100px;
}
.qzab2-stat-num {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 36px;
  line-height: 1;
  color: var(--qz3-accent);
  margin-bottom: 6px;
  letter-spacing: -0.03em;
}
.qzab2-stat-lbl {
  font-size: 12px;
  font-weight: 700;
  color: var(--qz3-ink-3);
  letter-spacing: 0.02em;
}
.qzab2-stat-divider {
  width: 1px;
  height: 40px;
  background: var(--qz3-line);
  flex-shrink: 0;
}
@media (max-width: 640px) {
  .qzab2-stats-inner { flex-wrap: wrap; }
  .qzab2-stat-divider { display: none; }
  .qzab2-stat { flex: 1 1 40%; padding: 8px 0; }
  .qzab2-stat-num { font-size: 26px; }
}

/* ────────── SECTIONS ────────── */
.qzab2-section {
  padding: 80px 24px;
}
.qzab2-section-inner {
  max-width: 1100px;
  margin: 0 auto;
}
@media (max-width: 768px) {
  .qzab2-section { padding: 56px 20px; }
}

/* ────────── PROBLEM SECTION ────────── */
.qzab2-problem-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 20px;
  margin-top: 12px;
}
.qzab2-problem-card {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 18px;
  padding: 28px 24px;
  transition: all 0.2s ease;
}
.qzab2-problem-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--qz3-shadow-2);
  border-color: var(--qz3-accent);
}
.qzab2-problem-num {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 48px;
  line-height: 1;
  color: var(--qz3-accent);
  letter-spacing: -0.03em;
  margin-bottom: 12px;
}
.qzab2-problem-text {
  font-size: 15px;
  line-height: 1.55;
  color: var(--qz3-ink-2);
  font-weight: 500;
}

/* ────────── HOW IT WORKS — minimal, clean ────────── */
.qzab2-how {
  background: var(--qz3-bg);
}
.qzab2-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 12px;
}
.qzab2-step {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 16px;
  padding: 28px 24px;
  transition: border-color 0.15s ease;
}
.qzab2-step:hover {
  border-color: var(--qz3-line-strong);
}
.qzab2-step-num {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 32px;
  line-height: 1;
  color: var(--qz3-accent);
  letter-spacing: -0.03em;
  margin-bottom: 16px;
  display: block;
}
.qzab2-step-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--qz3-ink-1);
}
.qzab2-step-desc {
  font-size: 14px;
  line-height: 1.6;
  color: var(--qz3-ink-3);
  margin: 0;
  font-weight: 500;
}
.qzab2-step-arrow {
  display: none;
}
@media (max-width: 900px) {
  .qzab2-steps {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

/* ────────── FEATURES GRID ────────── */
.qzab2-features-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 20px;
  margin-top: 12px;
}
.qzab2-feature {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 18px;
  padding: 28px 24px;
  transition: all 0.2s ease;
}
.qzab2-feature:hover {
  transform: translateY(-3px);
  box-shadow: var(--qz3-shadow-2);
  border-color: var(--qz3-accent);
}
.qzab2-feature-ic {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--qz3-accent-soft);
  color: var(--qz3-accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
}
.qzab2-feature-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 17px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--qz3-ink-1);
}
.qzab2-feature-desc {
  font-size: 14px;
  line-height: 1.55;
  color: var(--qz3-ink-3);
  margin: 0;
  font-weight: 500;
}

/* ────────── FOUNDER ────────── */
.qzab2-founder {
  background: var(--qz3-bg);
}
.qzab2-founder-inner {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 56px;
  align-items: center;
}
.qzab2-founder-text { min-width: 0; }
.qzab2-founder-bio {
  font-size: 16px;
  line-height: 1.7;
  color: var(--qz3-ink-2);
  margin: 0 0 16px;
  font-weight: 500;
}
.qzab2-founder-contact {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  padding: 12px 22px;
  background: var(--qz3-accent-soft);
  color: var(--qz3-accent);
  border-radius: 100px;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 14px;
  text-decoration: none;
  border: 1.5px solid transparent;
  transition: all 0.15s ease;
}
.qzab2-founder-contact:hover {
  background: var(--qz3-accent);
  color: #fff;
  transform: translateY(-1px);
}
.qzab2-founder-card {
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 24px;
  padding: 40px 32px;
  text-align: center;
  box-shadow: var(--qz3-shadow-2);
}
.qzab2-founder-avatar {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--qz3-accent) 0%, #ff944d 100%);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 44px;
  letter-spacing: -0.02em;
  margin-bottom: 18px;
  box-shadow: 0 12px 32px rgba(242, 97, 0, 0.35);
}
.qzab2-founder-name {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 22px;
  color: var(--qz3-ink-1);
  letter-spacing: -0.02em;
  margin-bottom: 4px;
}
.qzab2-founder-role {
  font-size: 14px;
  font-weight: 700;
  color: var(--qz3-accent);
  margin-bottom: 16px;
}
.qzab2-founder-tags {
  display: flex;
  gap: 6px;
  justify-content: center;
  flex-wrap: wrap;
}
.qzab2-founder-tags span {
  display: inline-block;
  padding: 5px 12px;
  background: var(--qz3-surface-2);
  color: var(--qz3-ink-3);
  border-radius: 100px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
@media (max-width: 768px) {
  .qzab2-founder-inner { grid-template-columns: 1fr; gap: 32px; }
}

/* ────────── MISSION ────────── */
.qzab2-mission-wrap {
  padding-top: 0;
  padding-bottom: 0;
}
.qzab2-mission {
  max-width: 900px;
  margin: 0 auto;
  background: linear-gradient(135deg, var(--qz3-ink-1) 0%, #2a2a2e 100%);
  border-radius: 28px;
  padding: 60px 48px;
  text-align: center;
  position: relative;
  overflow: hidden;
  color: #fff;
}
.qzab2-mission::before {
  content: '';
  position: absolute;
  top: -80px; right: -80px;
  width: 280px; height: 280px;
  border-radius: 50%;
  background: rgba(242, 97, 0, 0.15);
}
.qzab2-mission::after {
  content: '';
  position: absolute;
  bottom: -100px; left: -50px;
  width: 240px; height: 240px;
  border-radius: 50%;
  background: rgba(242, 97, 0, 0.1);
}
.qzab2-mission-eyebrow {
  position: relative;
  z-index: 1;
  display: inline-block;
  font-family: 'Poppins', sans-serif;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--qz3-accent);
  background: rgba(242, 97, 0, 0.15);
  padding: 7px 16px;
  border-radius: 100px;
  margin-bottom: 24px;
}
.qzab2-mission-text {
  position: relative;
  z-index: 1;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 32px;
  line-height: 1.3;
  letter-spacing: -0.02em;
  max-width: 720px;
  margin: 0 auto;
  color: #fff;
}
@media (max-width: 768px) {
  .qzab2-mission { padding: 40px 24px; }
  .qzab2-mission-text { font-size: 22px; }
}

/* ────────── FINAL CTA ────────── */
.qzab2-final-cta-wrap { padding-top: 40px; }
.qzab2-final-cta {
  max-width: 900px;
  margin: 0 auto;
  background: var(--qz3-surface);
  border: 1px solid var(--qz3-line);
  border-radius: 28px;
  padding: 56px 32px;
  text-align: center;
  box-shadow: var(--qz3-shadow-2);
}
.qzab2-final-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  font-size: 36px;
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--qz3-ink-1);
  margin: 0 0 12px;
}
.qzab2-final-sub {
  font-size: 17px;
  color: var(--qz3-ink-3);
  margin: 0 0 32px;
  font-weight: 500;
}
.qzab2-final-actions {
  display: inline-flex;
  gap: 14px;
  flex-wrap: wrap;
  justify-content: center;
}
@media (max-width: 480px) {
  .qzab2-final-cta { padding: 40px 24px; }
  .qzab2-final-title { font-size: 26px; }
}

/* ════════ Home page minor polish — tighter spacing ════════ */
#page-home .qz3-section { padding-top: 14px; padding-bottom: 14px; }
#page-home .qz3-section-title { 
  font-family: var(--ff-display); 
  font-weight: 800; 
  letter-spacing: -0.02em;
  margin-bottom: 12px; 
}
#page-home .qzhm-toggles-section { 
  padding-top: 4px; 
  padding-bottom: 4px; 
}

/* ════════ "Coming soon" tag for delivery feature card ════════ */
.qzab2-feature {
  position: relative;
}
.qzab2-coming-soon-tag {
  position: absolute;
  top: 14px;
  right: 14px;
  display: inline-block;
  font-family: 'Poppins', sans-serif;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 100px;
  background: var(--qz3-accent-soft);
  color: var(--qz3-accent);
  border: 1px solid rgba(242, 97, 0, 0.2);
}
.qzab2-feature-soon {
  /* slightly muted to distinguish from active features */
  opacity: 0.92;
}

/* ════════════════════════════════════════════════════════════════
   AUTH PAGE — clean centered single-column (v48)
   ════════════════════════════════════════════════════════════════ */
#page-auth {
  background: var(--bg);
}
.qzauth-wrap {
  width: 100%;
}
#page-auth .auth-card {
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 36px 32px;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
}
#page-auth .auth-hero {
  text-align: center;
  margin-bottom: 28px;
}
.qzauth-logo {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 20px;
  text-decoration: none;
}
.qzauth-logo-text {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 900;
  color: var(--text);
  letter-spacing: -0.02em;
}
.qzauth-logo-text span {
  color: var(--primary);
}
#page-auth .auth-hero-title {
  font-family: var(--ff-display);
  font-weight: 800;
  font-size: 26px;
  letter-spacing: -0.02em;
  color: var(--text);
  margin: 0 0 6px;
  line-height: 1.2;
}
#page-auth .auth-hero-sub {
  font-size: 14px;
  color: var(--muted);
  font-weight: 500;
  margin: 0;
  line-height: 1.5;
}

/* Tab toggle (Login/Signup) */
#page-auth .auth-tab-row {
  background: var(--bg);
  border-radius: 10px;
  padding: 4px;
  margin-bottom: 18px;
  border: 1px solid var(--border);
}
#page-auth .auth-tab {
  font-size: 14px;
  font-weight: 700;
  padding: 10px 0;
}

/* Inputs — clean and tight */
#page-auth .input-group {
  margin-bottom: 14px;
}
#page-auth .input-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 6px;
}
#page-auth .input-field,
#page-auth .inp {
  border: 1.5px solid var(--border2);
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 14px;
  font-weight: 500;
  background: var(--surface);
  transition: border-color 0.15s, box-shadow 0.15s;
  width: 100%;
}
#page-auth .input-field:focus,
#page-auth .inp:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(242, 97, 0, 0.12);
}

/* Login button — solid, no gradient */
#page-auth .btn-primary {
  background: var(--primary);
  color: #fff;
  border: none;
  border-radius: 10px;
  padding: 13px 18px;
  font-size: 15px;
  font-weight: 800;
  width: 100%;
  margin-top: 6px;
  transition: background 0.15s, transform 0.1s;
  box-shadow: 0 2px 8px rgba(242, 97, 0, 0.22);
}
#page-auth .btn-primary:hover {
  background: var(--primary-dark);
  box-shadow: 0 4px 14px rgba(242, 97, 0, 0.32);
}
#page-auth .btn-primary:active {
  transform: translateY(1px);
}

/* OR divider */
#page-auth .auth-or {
  text-align: center;
  position: relative;
  margin: 20px 0;
}
#page-auth .auth-or::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--border);
}
#page-auth .auth-or span {
  position: relative;
  background: var(--surface);
  padding: 0 12px;
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.1em;
}

/* Forgot password link */
#page-auth .auth-forgot {
  text-align: center;
  margin-top: 14px;
  font-size: 13px;
}
#page-auth .auth-forgot a {
  color: var(--primary);
  font-weight: 700;
  text-decoration: none;
}
#page-auth .auth-forgot a:hover {
  text-decoration: underline;
}

/* Mobile: less padding */
@media (max-width: 480px) {
  #page-auth .auth-card {
    padding: 28px 20px;
    border-radius: 16px;
  }
  #page-auth .auth-hero-title {
    font-size: 22px;
  }
}

/* Dark theme */
html[data-theme="dark"] #page-auth .auth-card {
  background: var(--surface);
  border-color: var(--border);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
}
html[data-theme="dark"] #page-auth .auth-or span {
  background: var(--surface);
}

/* ════════════════════════════════════════════════════════════════
   CAFES PAGE polish (v49)
   ════════════════════════════════════════════════════════════════ */

/* 1. Mode tabs — full-width split pill (was inline auto-width) */
.qz2-rlist-mode-tabs {
  display: flex !important;
  width: 100% !important;
  max-width: 320px;
  margin-left: 0 !important;
  margin-bottom: 14px !important;
  padding: 4px !important;
  border-radius: 100px !important;
}
.qz2-rlist-mode-tab {
  flex: 1 !important;
  padding: 9px 16px !important;
  text-align: center;
  transition: background 0.18s cubic-bezier(.4,0,.2,1), color 0.18s !important;
}
.qz2-rlist-mode-tab.active {
  background: var(--qz-ink-1) !important;
  color: #fff !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

/* 2. Cafe card — overrides removed in v71. Base styles above (with new image-top + name-row layout) define the card. */
/* Hover-only refinement: subtler than the default transform */
.qz2-cafe-card:hover {
  transform: none !important;
  box-shadow: none !important;
}

/* 3. Generic empty state for cafes page (when NO cafes match any filter) */
.qz2-empty {
  text-align: center;
  padding: 48px 20px;
  max-width: 380px;
  margin: 0 auto;
}
.qz2-empty-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 16px;
  color: var(--qz-ink-3);
  opacity: 0.5;
}
.qz2-empty-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: var(--qz-ink-1);
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}
.qz2-empty-text {
  font-size: 14px;
  color: var(--qz-ink-3);
  font-weight: 500;
  line-height: 1.5;
  margin: 0;
}
.qz2-empty-action {
  display: inline-block;
  margin-top: 16px;
  background: var(--qz-accent);
  color: #fff;
  padding: 10px 20px;
  border-radius: 100px;
  font-weight: 800;
  font-size: 13px;
  border: none;
  cursor: pointer;
  font-family: inherit;
}

/* ════════ Cafe image — single clean rule (v50) ════════ */
.qz2-cafe-img {
  position: relative;
  width: 100%;
  aspect-ratio: 16/10;
  background: var(--qz-surface-muted);
  overflow: hidden;
  border-radius: 14px 14px 0 0;
}
.qz2-cafe-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}


/* ════════════════════════════════════════════════════════════════
   SPLASH SCREEN v3 — white minimal + lightning zap animation
   ════════════════════════════════════════════════════════════════ */

#qz-splash {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: radial-gradient(circle at 50% 35%, #fff8f0 0%, #faf6ee 55%, #f5efe3 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.45s ease, visibility 0.45s ease;
}

#qz-splash.qz-splash-hide {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.qz-splash-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}

.qz-splash-logo {
  position: relative;
  width: 84px;
  height: 84px;
  display: flex;
  align-items: center;
  justify-content: center;
  filter: drop-shadow(0 12px 28px rgba(242, 97, 0, 0.22));
}

/* The bolt path inside SVG — pulses with the zap */
.qz-splash-bolt {
  transform-origin: center;
  animation: qzBoltZap 1.6s ease-in-out infinite;
}

/* Flash overlay layers — bright halo around the logo at zap moment */
.qz-splash-flash {
  position: absolute;
  inset: 0;
  border-radius: 21px;
  background: radial-gradient(circle, rgba(255, 213, 79, 0.55) 0%, transparent 60%);
  opacity: 0;
  pointer-events: none;
  animation: qzFlashBurst 1.6s ease-out infinite;
}

.qz-splash-flash-2 {
  border-radius: 50%;
  inset: -20px;
  background: radial-gradient(circle, rgba(242, 97, 0, 0.32) 0%, transparent 65%);
  animation: qzFlashRing 1.6s ease-out infinite;
  animation-delay: 0.05s;
}

.qz-splash-wordmark {
  font-family: var(--ff-display, 'Poppins', sans-serif);
  font-size: 24px;
  font-weight: 800;
  color: #1a1a1a;
  letter-spacing: -0.025em;
  display: flex;
  align-items: baseline;
  min-height: 1.2em;
}

.qz-splash-letter {
  display: inline-block;
  opacity: 0;
  transform: translateY(8px);
  animation: qzLetterIn 0.32s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

.qz-splash-zap {
  color: #f26100;
}

/* Stagger each letter — 70ms apart */
.qz-splash-letter-1 { animation-delay: 0.20s; }
.qz-splash-letter-2 { animation-delay: 0.27s; }
.qz-splash-letter-3 { animation-delay: 0.34s; }
.qz-splash-letter-4 { animation-delay: 0.55s; }
.qz-splash-letter-5 { animation-delay: 0.62s; }
.qz-splash-letter-6 { animation-delay: 0.69s; }

@keyframes qzLetterIn {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* Tagline fades in last */
.qz-splash-tag {
  font-family: var(--ff, 'Inter', system-ui, sans-serif);
  font-size: 13px;
  font-weight: 500;
  color: #6b6b6b;
  letter-spacing: -0.005em;
  opacity: 0;
  animation: qzTagFadeIn 0.5s ease-out forwards;
  animation-delay: 0.95s;
  margin-top: -2px;
}

@keyframes qzTagFadeIn {
  0% { opacity: 0; transform: translateY(4px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* Reduced motion — skip stagger, just show */
@media (prefers-reduced-motion: reduce) {
  .qz-splash-letter,
  .qz-splash-tag {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ────────── Animations ────────── */

/* Bolt subtle scale pulse */
@keyframes qzBoltZap {
  0%, 100% { transform: scale(1); }
  45% { transform: scale(0.85); opacity: 0.7; }
  50% { transform: scale(1.18); opacity: 1; }
  55% { transform: scale(0.95); }
  60% { transform: scale(1); }
}

/* Inner halo flash */
@keyframes qzFlashBurst {
  0%, 40% { opacity: 0; transform: scale(0.5); }
  50% { opacity: 1; transform: scale(1.1); }
  65% { opacity: 0; transform: scale(1.4); }
  100% { opacity: 0; transform: scale(1.4); }
}

/* Outer ring flash */
@keyframes qzFlashRing {
  0%, 42% { opacity: 0; transform: scale(0.6); }
  52% { opacity: 0.9; transform: scale(1); }
  72% { opacity: 0; transform: scale(1.6); }
  100% { opacity: 0; transform: scale(1.6); }
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
  .qz-splash-bolt,
  .qz-splash-flash {
    animation: none;
  }
}

/* Dark theme — keep splash white anyway, brand consistency on first impression */
html[data-theme="dark"] #qz-splash {
  background: #ffffff;
}


/* ════════════════════════════════════════════════════════════════
   v57 FIXES
   ════════════════════════════════════════════════════════════════ */

/* Fix 1: Menu item Add/Qty button cutoff (REAL fix — addbox is inside img-wrap which has overflow:hidden)
   Solution: img-wrap allows overflow visible, parent menu-item has padding-bottom for button space.
   v70: ADD button is now in its own column (not overhanging), so padding-bottom is not needed. */
.qz2-menu-item-img-wrap {
  overflow: hidden !important;
}
.qz2-menu-item {
  /* v70: no extra padding-bottom needed; ADD lives in its own column */
  overflow: visible !important;
}
/* Image inside wrap still needs to be clipped to wrap bounds — apply round corners + overflow on img */
.qz2-menu-item-img-wrap > img {
  border-radius: 12px !important;
}
/* #menuContent overflow:hidden was clipping the ADD button too */
#menuContent {
  overflow: visible !important;
}

/* Fix 3: Pickup slot active style — match nav minimal style (orange text + bold, no box) */
.qz2-slot-btn.active,
.qz2-slot-btn.qz2-slot-btn-active {
  background: transparent !important;
  color: var(--qz3-accent) !important;
  border-color: var(--qz3-accent) !important;
  font-weight: 800 !important;
  box-shadow: 0 0 0 1px var(--qz3-accent) inset !important;
}
.qz2-slot-btn:hover {
  border-color: var(--qz3-accent) !important;
  color: var(--qz3-accent) !important;
}

/* Fix 4: Order success page — celebration animation (scale-in + radial halo burst) */
@keyframes qzSuccessPop {
  0% { transform: scale(0.3) rotate(-15deg); opacity: 0; }
  50% { transform: scale(1.15) rotate(8deg); opacity: 1; }
  75% { transform: scale(0.92) rotate(-3deg); }
  100% { transform: scale(1) rotate(0); opacity: 1; }
}
@keyframes qzSuccessHalo {
  0% { transform: scale(0.5); opacity: 0.7; }
  100% { transform: scale(2.4); opacity: 0; }
}
@keyframes qzSuccessTitleIn {
  0% { transform: translateY(20px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}
.success-check {
  position: relative;
  animation: qzSuccessPop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) backwards !important;
}
.success-check::before,
.success-check::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(15, 138, 79, 0.35);
  animation: qzSuccessHalo 1.1s ease-out 0.15s both;
  pointer-events: none;
  z-index: -1;
}
.success-check::after {
  background: rgba(15, 138, 79, 0.2);
  animation-delay: 0.4s;
}
.success-title {
  animation: qzSuccessTitleIn 0.45s cubic-bezier(0.4, 0, 0.2, 1) 0.35s backwards;
}
.success-sub {
  animation: qzSuccessTitleIn 0.45s cubic-bezier(0.4, 0, 0.2, 1) 0.55s backwards;
}
.success-card {
  animation: qzSuccessTitleIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.7s backwards;
}
.success-actions {
  animation: qzSuccessTitleIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.85s backwards;
}
@media (prefers-reduced-motion: reduce) {
  .success-check, .success-check::before, .success-check::after,
  .success-title, .success-sub, .success-card, .success-actions {
    animation: none !important;
  }
}


/* ════════ v60 — "You ordered earlier" section on cafe page ════════ */
.qzpo-wrap {
  margin: 12px 16px 4px;
  padding: 14px 16px;
  background: var(--qz3-accent-tint, #fff7f0);
  border: 1px solid rgba(242, 97, 0, 0.15);
  border-radius: 14px;
}
.qzpo-head {
  margin-bottom: 12px;
}
.qzpo-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 15px;
  color: var(--qz3-ink-1, #1a1a1a);
  letter-spacing: -0.015em;
  margin-bottom: 2px;
}
.qzpo-sub {
  font-size: 12px;
  color: var(--qz3-ink-3, #6b6b6b);
  font-weight: 500;
}
.qzpo-row {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4px;
}
.qzpo-row::-webkit-scrollbar { height: 4px; }
.qzpo-row::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 4px; }
.qzpo-card {
  flex-shrink: 0;
  background: #fff;
  border: 1px solid var(--qz3-line, #e5e5e0);
  border-radius: 10px;
  padding: 10px 12px;
  min-width: 140px;
  max-width: 180px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.qzpo-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--qz3-ink-1, #1a1a1a);
  letter-spacing: -0.005em;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.qzpo-add {
  background: var(--qz3-accent, #f26100);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s, transform 0.1s;
}
.qzpo-add:hover { background: var(--qz3-accent-hover, #d95500); }
.qzpo-add:active { transform: scale(0.96); }

html[data-theme="dark"] .qzpo-wrap {
  background: rgba(242, 97, 0, 0.08);
  border-color: rgba(242, 97, 0, 0.25);
}
html[data-theme="dark"] .qzpo-card {
  background: var(--qz3-surface, #1a1a1e);
}


/* ════════ v62 — Contextual time-aware greeting ════════ */
.qz3-home-greeting {
  padding: 16px 4vw 0;
  font-family: 'Poppins', sans-serif;
}
.qz3-greeting-line {
  font-size: 18px;
  font-weight: 800;
  color: var(--qz3-ink-1, #1a1a1a);
  letter-spacing: -0.015em;
  line-height: 1.3;
  display: flex;
  align-items: center;
  gap: 8px;
}
.qz3-greeting-line::before {
  content: "";
  width: 4px;
  height: 18px;
  background: var(--qz3-accent, #f26100);
  border-radius: 2px;
  flex-shrink: 0;
}
@media (max-width: 768px) {
  .qz3-greeting-line { font-size: 15px; }
  .qz3-home-greeting { padding-top: 12px; }
  .qz3-greeting-line::before { height: 15px; width: 3px; }
}
@media (max-width: 380px) {
  .qz3-greeting-line { font-size: 14px; }
}


/* ════════ v61 — Help button positioning fix (don't overlap content) ════════ */
.qz-help-btn {
  bottom: calc(var(--btm-h, 0px) + 16px + var(--safe-bottom, 0px) + 8px) !important;
}
@media (max-width: 768px) {
  .qz-help-btn {
    bottom: calc(var(--btm-h, 64px) + 16px + var(--safe-bottom, 0px)) !important;
    right: 12px !important;
    padding: 0.55rem 0.75rem !important;
    font-size: 0.74rem !important;
    box-shadow: 0 4px 14px rgba(242, 97, 0, 0.32) !important;
  }
  .qz-help-btn .qz-help-label {
    display: none !important;
  }
  .qz-help-btn svg {
    margin-right: 0 !important;
  }
}
body[data-page="cart"] .qz-help-btn {
  display: none !important;
}

/* ════════ v61 Fix 2: All filter chip — orange tint when active ════════ */
.qz3-filter-chip.active,
.qz3-filter-chip[aria-pressed="true"] {
  background: var(--qz3-accent-soft, rgba(242, 97, 0, 0.1)) !important;
  color: var(--qz3-accent, #f26100) !important;
  border-color: var(--qz3-accent, #f26100) !important;
}

/* ════════ v61 Fix 3: Compact location pill on mobile ════════ */
@media (max-width: 768px) {
  .qz3-loc-pill-label {
    font-size: 18px !important;
    font-weight: 800 !important;
  }
  .qz3-loc-pill-sub {
    font-size: 11px !important;
    color: var(--qz3-ink-3) !important;
    opacity: 0.85;
  }
  .qz3-loc-pill {
    gap: 6px !important;
  }
  .qz3-loc-pill-ic svg {
    width: 18px !important;
    height: 18px !important;
  }
}
@media (max-width: 380px) {
  .qz3-loc-pill-label { font-size: 16px !important; }
}
/* ─── v76: Minimal footer (About / For Cafes / Support / Privacy / Terms) ─── */
.qz-footer {
  background: var(--qz-surface, #fff);
  border-top: 1px solid var(--qz-line, #e5e5e0);
  padding: 32px 16px calc(32px + var(--bottom-nav-h, 0px) + var(--safe-bottom, 0px));
  margin-top: 40px;
}
.qz-footer-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  text-align: center;
}
.qz-footer-brand { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.qz-footer-logo {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: var(--qz-ink-1, #1a1a1a);
  letter-spacing: -0.01em;
}
.qz-footer-tag {
  font-size: 13px;
  color: var(--qz-ink-3, #6b6b6b);
}
.qz-footer-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 18px;
}
.qz-footer-links a {
  font-size: 13px;
  font-weight: 600;
  color: var(--qz-ink-2, #4a4a4a);
  text-decoration: none;
  transition: color 0.12s;
}
.qz-footer-links a:hover { color: var(--qz-accent, #f26100); }
.qz-footer-copy {
  font-size: 12px;
  color: var(--qz-ink-3, #6b6b6b);
}
@media (min-width: 720px) {
  .qz-footer-inner {
    flex-direction: row;
    justify-content: space-between;
    text-align: left;
  }
  .qz-footer-brand { align-items: flex-start; }
}

/* ─── v79: Profile sub-screen back button + slide-in animation ───── */
.qz3-ptab-back {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--qz3-line, #e5e5e0);
}
.qz3-ptab-back-btn {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid var(--qz3-line, #e5e5e0);
  background: var(--qz3-surface, #fff);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--qz3-ink-1, #1a1a1a);
  cursor: pointer;
  transition: transform 0.12s ease, background 0.12s ease, border-color 0.12s ease;
  flex-shrink: 0;
}
.qz3-ptab-back-btn:hover {
  background: var(--qz3-surface-muted, #f5f5f0);
  border-color: var(--qz3-line-strong, #d4d4cc);
}
.qz3-ptab-back-btn:active { transform: scale(0.92); }
.qz3-ptab-back-title {
  font-family: 'Poppins', sans-serif;
  font-weight: 700;
  font-size: 16px;
  color: var(--qz3-ink-1, #1a1a1a);
  letter-spacing: -0.01em;
}
/* When in sub-screen mode, slide content in from the right */
.qz3-ptab-sub {
  animation: qz3PtabSlide 0.22s ease-out;
}
@keyframes qz3PtabSlide {
  from { opacity: 0; transform: translateX(16px); }
  to { opacity: 1; transform: translateX(0); }
}

/* ─── v79: Smoother page transitions (additive — works alongside existing .page-enter) ── */
.page {
  transition: opacity 0.18s ease;
}
.page.page-enter {
  animation: qz3PageEnter 0.22s ease-out;
}
@keyframes qz3PageEnter {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}
.page.pop {
  animation: qz3PagePop 0.22s ease-out;
}
@keyframes qz3PagePop {
  from { opacity: 0; transform: translateX(-12px); }
  to { opacity: 1; transform: translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
  .page, .page.page-enter, .page.pop, .qz3-ptab-sub { animation: none !important; transition: none !important; }
}

/* ─── v79: Universal button press feedback (consistent active state) ── */
.btn:active,
.btn-primary:active,
.btn-outline:active,
.btn-secondary:active,
.btn-danger:active,
.btn-sm:active,
.qz2-btn:active,
.qz3-quick-tile:active,
.qz3-cuisine-tile:active,
.qz3-filter-chip:active,
.nav-search-btn:active,
.veg-toggle:active,
.healthy-toggle:active {
  transform: scale(0.96);
  transition: transform 0.08s ease;
}

/* ─── v79: Image skeleton shimmer for cafe cards ── */
.qz2-cafe-img {
  position: relative;
  overflow: hidden;
}
.qz2-cafe-img::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    var(--qz3-surface-muted, #f5f5f0) 0%,
    var(--qz3-line, #e5e5e0) 50%,
    var(--qz3-surface-muted, #f5f5f0) 100%);
  background-size: 200% 100%;
  animation: qz3Shimmer 1.6s ease-in-out infinite;
  z-index: 0;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.22s ease;
}
.qz2-cafe-img img {
  position: relative;
  z-index: 1;
  background: var(--qz3-surface-muted, #f5f5f0);
}
.qz2-cafe-img img.qz3-img-loaded {
  /* image loaded — fade out shimmer */
}
.qz2-cafe-img img.qz3-img-loaded ~ ::before,
.qz2-cafe-img:has(img.qz3-img-loaded)::before {
  opacity: 0;
}
@keyframes qz3Shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ─── v80: Profile accordion (collapsed by default) ───────────────── */
.qz3-acc-block {
  margin-bottom: 12px;
  background: var(--qz3-surface, #fff);
  border: 1px solid var(--qz3-line, #e5e5e0);
  border-radius: 14px;
  overflow: hidden;
  transition: border-color 0.15s ease;
}
.qz3-acc-block:hover {
  border-color: var(--qz3-line-strong, #d4d4cc);
}
.qz3-acc-block.qz3-acc-open {
  border-color: var(--qz3-accent, #f26100);
}
.qz3-acc-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 16px 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  transition: background 0.12s ease;
}
.qz3-acc-header:hover {
  background: var(--qz3-surface-2, #f5f5f0);
}
.qz3-acc-header:active {
  transform: scale(0.99);
  transition: transform 0.08s ease;
}
.qz3-acc-block .qz3-section-block-title {
  /* Override the original styles since title is now inside a button */
  margin: 0;
  padding-left: 12px;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: var(--qz3-ink-1, #1a1a1a);
  position: relative;
  line-height: 1.2;
}
.qz3-acc-chev {
  color: var(--qz3-ink-3, #6b6b6b);
  transition: transform 0.22s cubic-bezier(.4,.1,.2,1);
  flex-shrink: 0;
}
.qz3-acc-block.qz3-acc-open .qz3-acc-chev {
  transform: rotate(180deg);
  color: var(--qz3-accent, #f26100);
}
.qz3-acc-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.28s cubic-bezier(.4,.1,.2,1);
}
.qz3-acc-block.qz3-acc-open .qz3-acc-body {
  /* Generous max so any number of items fits — won't visibly affect closed state */
  max-height: 1200px;
  transition: max-height 0.34s cubic-bezier(.2,.8,.2,1);
}
/* When inside an accordion, the section-card loses its outer border (block already has one) */
.qz3-acc-block .qz3-section-card {
  border: none;
  border-radius: 0;
  border-top: 1px solid var(--qz3-line, #e5e5e0);
}
/* Remove the orange accent stripe on accordion title — the open-state border replaces it */
.qz3-acc-block .qz3-section-block-title::before {
  display: none;
}
@media (prefers-reduced-motion: reduce) {
  .qz3-acc-chev, .qz3-acc-body, .qz3-acc-header { transition: none !important; }
}

/* ════════════════════════════════════════════════════════════════
   v82: PREMIUM HOME HERO — animated gradient + stats bar
   ════════════════════════════════════════════════════════════════ */
.qz3v82-hero {
  position: relative;
  margin: 0 -16px 16px;
  padding: 24px 16px 18px;
  overflow: hidden;
  background: linear-gradient(180deg, #fff8f0 0%, #fdf5e9 50%, var(--qz3-bg, #fafaf7) 100%);
  border-bottom: 1px solid rgba(0,0,0,0.04);
  isolation: isolate;
}
[data-theme="dark"] .qz3v82-hero {
  background: linear-gradient(180deg, #2a1f17 0%, #221912 50%, var(--qz3-bg) 100%);
  border-bottom-color: rgba(255,255,255,0.05);
}

.qz3v82-hero-bg {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
}
.qz3v82-hero-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(40px);
  opacity: 0.55;
  will-change: transform;
}
.qz3v82-hero-blob-1 {
  width: 220px; height: 220px;
  background: radial-gradient(circle, rgba(255,170,80,0.85) 0%, rgba(255,170,80,0) 70%);
  top: -60px; left: -40px;
  animation: qz3v82BlobFloat1 14s ease-in-out infinite;
}
.qz3v82-hero-blob-2 {
  width: 180px; height: 180px;
  background: radial-gradient(circle, rgba(242,97,0,0.45) 0%, rgba(242,97,0,0) 70%);
  top: 20px; right: -50px;
  animation: qz3v82BlobFloat2 18s ease-in-out infinite;
}
.qz3v82-hero-blob-3 {
  width: 240px; height: 240px;
  background: radial-gradient(circle, rgba(255,213,79,0.5) 0%, rgba(255,213,79,0) 70%);
  bottom: -100px; left: 30%;
  animation: qz3v82BlobFloat3 22s ease-in-out infinite;
}
@keyframes qz3v82BlobFloat1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(20px, 12px) scale(1.08); }
}
@keyframes qz3v82BlobFloat2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(-18px, 16px) scale(1.05); }
}
@keyframes qz3v82BlobFloat3 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(14px, -14px) scale(1.1); }
}
[data-theme="dark"] .qz3v82-hero-blob { opacity: 0.32; }

.qz3v82-hero-content {
  position: relative;
  z-index: 1;
}

/* Greeting in hero — slightly bigger, tighter spacing */
.qz3v82-greeting {
  margin: 0 0 14px;
}
.qz3v82-greeting .qz3-greeting-line {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 22px;
  line-height: 1.2;
  letter-spacing: -0.018em;
  color: var(--qz3-ink-1, #1a1a1a);
  animation: qz3v82FadeUp 0.6s cubic-bezier(.2,.8,.2,1) 0.15s both;
}

/* Location pill in hero — slightly elevated */
.qz3v82-loctop {
  margin-bottom: 14px;
  animation: qz3v82FadeUp 0.6s cubic-bezier(.2,.8,.2,1) 0.30s both;
}
.qz3v82-loc-pill {
  background: rgba(255,255,255,0.85);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(0,0,0,0.06);
  box-shadow: 0 4px 14px rgba(242,97,0,0.08);
  transition: transform 0.15s ease, box-shadow 0.18s ease;
}
.qz3v82-loc-pill:active {
  transform: scale(0.98);
}
.qz3v82-loc-pill:hover {
  box-shadow: 0 6px 18px rgba(242,97,0,0.12);
}
[data-theme="dark"] .qz3v82-loc-pill {
  background: rgba(40,32,22,0.7);
  border-color: rgba(255,255,255,0.08);
}

/* Stats bar — 3 cells with dividers */
.qz3v82-stats {
  display: grid;
  grid-template-columns: 1fr 1px 1fr 1px 1fr;
  align-items: center;
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(0,0,0,0.05);
  border-radius: 16px;
  padding: 12px 4px;
  margin-top: 4px;
  box-shadow: 0 6px 22px rgba(0,0,0,0.04);
  animation: qz3v82FadeUp 0.6s cubic-bezier(.2,.8,.2,1) 0.45s both;
}
[data-theme="dark"] .qz3v82-stats {
  background: rgba(40,32,22,0.75);
  border-color: rgba(255,255,255,0.06);
}
.qz3v82-stat {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 0 4px;
}
.qz3v82-stat-num {
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: var(--qz3-accent, #f26100);
  letter-spacing: -0.02em;
  line-height: 1;
}
.qz3v82-stat-lbl {
  font-size: 10.5px;
  font-weight: 600;
  color: var(--qz3-ink-3, #6b6b6b);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.qz3v82-stat-divider {
  width: 1px;
  height: 26px;
  background: rgba(0,0,0,0.08);
  align-self: center;
}
[data-theme="dark"] .qz3v82-stat-divider {
  background: rgba(255,255,255,0.08);
}

@keyframes qz3v82FadeUp {
  0% { opacity: 0; transform: translateY(10px); }
  100% { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .qz3v82-hero-blob,
  .qz3v82-greeting .qz3-greeting-line,
  .qz3v82-loctop,
  .qz3v82-stats {
    animation: none !important;
  }
  .qz3v82-greeting .qz3-greeting-line,
  .qz3v82-loctop,
  .qz3v82-stats {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* On very narrow viewports keep stats readable */
@media (max-width: 360px) {
  .qz3v82-stat-num { font-size: 16px; }
  .qz3v82-stat-lbl { font-size: 9.5px; }
}

/* ─── v82: Performance — image lazy decoding hints ── */
.qz2-cafe-img img,
.qz3-cuisine-tile img {
  content-visibility: auto;
}
