 :root { --fv-primary: #0c7e0e; --fv-border: #37c839; }
html body .brand, html body .customer-nav nav a:hover,
html body .admin-nav a:hover, html body .eyebrow, html body .hero-kicker {
    color: var(--fv-primary) !important;
}
html body .btn:not(.btn-outline):not(.btn-danger), html body button.btn:not(.btn-outline):not(.btn-danger),
html body .fv-announcement { background: var(--fv-primary) !important; border-color: var(--fv-primary) !important; }
html body .panel, html body .food-card, html body .menu-banner { border-color: var(--fv-border) !important; }
html body:not(.fv-admin-page) {
    background-image: linear-gradient(rgba(255,255,255,0.20),rgba(255,255,255,0.20)), url(" /uploads/backgrounds/e31a9ac7862bfa92ce6f61e81b052da3.webp") !important;
    background-size: cover !important;
    background-attachment: fixed !important;
    background-position: center center !important;
}

/* STEP 34 — Uploaded logo appears alongside the name on every page using the global theme. */
/* Published site-wide dark mode; high specificity overrides legacy light !important styles. */
:root { color-scheme:dark; --fv-text:#edf5f4; --fv-muted:#b4c9c8; --fv-shadow:0 12px 35px rgba(0,0,0,.25); --fv-soft:#172e33; }
html body { background:#0e191e!important; color:#edf5f4!important; }
html body :is(h1,h2,h3,h4,h5,h6) { color:#f0f7f5!important; }
html body :is(.muted,.tiny,.small,.fv-inbox-footnote,.fv-cust-section-description,.fv-cust-hero-sub) { color:#b3c9c7!important; }
html body :is(.customer-top,.admin-top,.dash-top,.fv-design-preview-top,.fv-mobile-shortcuts) { background:#14272c!important; border-color:#354a4f!important; color:#f0f7f5!important; }
html body :is(.panel,.food-card,.auth-card,.fv-address-card,.fv-cust-shortcut,.fv-cust-stat,.fv-cust-orders,.fv-inbox-summary-card,.fv-inbox-item,.fv-inbox-empty,.fv-inbox-filter-empty,.fv-admin-dropdown,.fv-design-section) {
    background:#192b30!important; color:#eaf4f3!important; border-color:var(--fv-border)!important; box-shadow:0 10px 34px rgba(0,0,0,.15)!important;
}
html body :is(.hero-home,.menu-banner,.dv-hero,.fv-cust-hero,.fv-inbox-hero,.report-welcome,.stats>div,.fv-community .fv-stats>div) {
    background:linear-gradient(115deg,#193439,#14262d 56%,#31272c)!important; color:#edf5f4!important; border-color:var(--fv-border)!important;
}
html body :is(.hero-home h1,.hero-home p,.fv-cust-hero h1,.fv-inbox-hero h1,.fv-inbox-hero p,.fv-inbox-item h3,.fv-inbox-item p,.fv-cust-stat strong,.fv-cust-shortcut-copy strong,.fv-cust-brand,.fv-inbox-brand) {
    color:#eaf5f3!important;
}
html body :is(.customer-nav nav a,.admin-nav a,.fv-admin-quick a,.fv-admin-links-group a,.fv-cust-headlink,.fv-inbox-back,.fv-inbox-refresh,.fv-inbox-item-actions button) { color:#cce0dd!important; }
html body :is(.customer-nav nav a:hover,.admin-nav a:hover,.fv-admin-quick a:hover,.fv-admin-links-group a:hover) { color:#67ddd0!important; background:#254146!important; }
html body :is(.fv-admin-menu summary,.fv-notify-sound,.fv-cust-logout button,.fv-inbox-back,.fv-inbox-refresh,.btn.btn-outline,.dv-btn.secondary) {
    background:#22363a!important; color:#e0f1ee!important; border-color:#547177!important;
}
html body :is(input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]),textarea,select) {
    background:#14272d!important; color:#edf5f4!important; border-color:#50696d!important;
}
html body input::placeholder, html body textarea::placeholder { color:#9bb4b3!important; opacity:1; }
html body :is(th,.fv-cust-table th) { background:#22383d!important; color:#d3eeeb!important; }
html body :is(td,th,.bill-row,.cart-item,.fv-cust-table td) { border-color:#41555a!important; }
html body tbody tr:hover { background:#23383e!important; }
html body :is(.food-photo,.cart-thumb,.fv-cust-shortcut-icon,.fv-cust-stat-icon,.fv-inbox-item-icon,.fv-inbox-summary-symbol,.fv-inbox-empty-icon,.fv-cust-hero-symbol,.fv-inbox-hero-icon,.photo-fallback) { background:#274246!important; }
html body :is(.fv-design-preview-cards span,.fv-inline-category-box,.fv-notice-top,.fv-admin-menu[open] summary) { background:#1e3439!important; }
html body .site-footer { background:#0a1418!important; color:#d1e2e1!important; }
html body.fv-customer-page { --fv-cust-ink:#ecf5f4; --fv-cust-muted:#bacdca; --fv-cust-light:#1d3238; --fv-cust-stroke:#40575a; }
html body.fv-customer-page :is(.fv-cust-shortcut,.fv-cust-stat,.fv-cust-orders,.fv-cust-hero,.fv-cust-hero-symbol,.fv-cust-secondary,.fv-cust-logout button) { background:#192b30!important; color:#eaf4f3!important; border-color:#536d6e!important; }
html body.fv-customer-page :is(.fv-cust-shortcut-copy small,.fv-cust-headlink,.fv-cust-hero-sub,.fv-cust-stat span:last-child) { color:#bed0d0!important; }
html body.fv-inbox-page { --fv-inbox-ink:#e7f4f2; --fv-inbox-muted:#bed1ce; --fv-inbox-soft:#20353a; --fv-inbox-stroke:#4a6669; }
html body.fv-inbox-page :is(.fv-inbox-summary-card,.fv-inbox-item,.fv-inbox-empty,.fv-inbox-filter-empty,.fv-inbox-hero-icon) { background:#192c32!important; color:#e9f6f3!important; }
html body.fv-inbox-page :is(.fv-inbox-hero-meta,.fv-inbox-item-meta,.fv-inbox-summary-label,.fv-inbox-filter,.fv-inbox-item p) { color:#b9cdca!important; }
html body:not(.fv-admin-page) { background-image:linear-gradient(rgba(9,18,23,0.20),rgba(9,18,23,0.20)),url(" /uploads/backgrounds/e31a9ac7862bfa92ce6f61e81b052da3.webp")!important; background-size:cover!important; background-position:center!important; background-attachment:fixed!important; }

/* STEP 36 — Delivery login contrast in admin-selected dark mode.
   The legacy .dv-auth was a white card; text inherited the global dark palette. */
html body .dv-auth {
    background:#192d33 !important;
    color:#edf8f6 !important;
    border:1px solid var(--fv-border,#f5aaaa) !important;
    box-shadow:0 18px 55px rgba(0,0,0,.40) !important;
}
html body .dv-auth :is(.dv-label,h1,h2,h3) {
    color:#f3fbfa !important;
}
html body .dv-auth :is(p,.dv-muted) {
    color:#c6dbd9 !important;
}
html body .dv-auth .dv-hero p { color:#d0e8e5 !important; }
html body .dv-auth :is(input.dv-input,input[type="email"],input[type="password"]) {
    background:#0f2329 !important;
    color:#f3fbfa !important;
    border:1px solid #6b9290 !important;
    caret-color:#7ef1e5 !important;
}
html body .dv-auth input.dv-input:focus-visible {
    outline:3px solid #69ded3 !important;
    outline-offset:2px;
}
html body .dv-auth input.dv-input:-webkit-autofill {
    -webkit-text-fill-color:#f3fbfa !important;
    -webkit-box-shadow:0 0 0 1000px #0f2329 inset !important;
}
html body .dv-auth a { color:#84e9df !important; text-underline-offset:3px; }
html body .dv-auth a:hover { color:#b7fff8 !important; }
html body .dv-auth .dv-btn { color:#fff !important; }
html body .dv-auth .dv-error {
    background:#43282d !important;
    color:#ffe5e9 !important;
    border-color:#e5a2ac !important;
}
@media(max-width:500px) {
    html body .dv-auth { margin:24px 14px !important; padding:22px !important; }
}

/* FOOD VIBES — Step 37: responsive mobile/tablet layout.
   Additive stylesheet loaded at the end of theme.php.
   Does not alter authentication, permissions, totals, or order processing. */
:root {
  --fv-mobile-gutter: clamp(12px, 3vw, 24px);
  --fv-touch-target: 44px;
}
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
html, body { max-width:100%; }
html body { font-size:16px; }
html body :is(img, video, svg, canvas) { max-width:100%; }
html body :is(.customer-wrap, .page-wrap, .dashboard, .dv-page, .fv29-shell, .fv30-layout, .fv32-page, .fv-design-layout, .cart-layout, .fv-inbox-shell, .fv-cust-shell, .fv-admin-header) { min-width:0; }
html body :is(.panel, .food-card, .cart-item-details, .product-row, .fv29-menu, .fv29-food-main, .fv29-side, .fv30-card, .fv-inbox-item-main) { min-width:0; }
html body :is(h1, h2, h3, h4, p, .muted, .dv-muted) { overflow-wrap:break-word; }
html body :is(input, select, textarea) { font-size:16px; max-width:100%; }
html body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]), select, textarea) { min-height:44px; }
html body input[type="checkbox"], html body input[type="radio"] { width:18px; height:18px; accent-color:var(--fv-primary,#0fa9a2); }
html body :is(.btn, .dv-btn, .link-btn, .fv30-button, .fv29-step, .fv29-add, .fv-inbox-refresh, .fv-inbox-mark-all, button[type="submit"]) { min-height:44px; touch-action:manipulation; }
html body :is(.btn, .dv-btn, .link-btn, .fv30-button) { text-decoration:none; }
html body :is(.panel, .food-card, .fv30-card, .dv-card) { overflow-wrap:anywhere; }
html body :is(.table-scroll, .fv-table-wrap, .dv-table, .fv30-table-scroll, .fv32-table-wrap, .fv28-table-wrap) {
  max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch;
}
html body :is(.table-scroll, .fv-table-wrap, .dv-table, .fv30-table-scroll, .fv32-table-wrap, .fv28-table-wrap) table { width:100%; }
html body :is(.table-scroll, .fv-table-wrap, .dv-table, .fv30-table-scroll, .fv32-table-wrap, .fv28-table-wrap) :is(th,td) { vertical-align:middle; }
html body :is(.admin-shell, .customer-top, .customer-nav, .admin-top, .fv30-layout, .fv-design-layout, .fv29-layout, .cart-layout) { min-width:0; }
/* Keep focus rings clearly visible on touch devices using keyboards. */
html body :focus-visible { outline:3px solid var(--fv-primary,#0fa9a2)!important; outline-offset:3px; }
@media (hover:hover) and (pointer:fine) {
  html body :is(.food-card,.fv-inbox-item) { transition:transform .2s ease,box-shadow .2s ease; }
  html body .food-card:hover { transform:translateY(-3px); }
}

/* Laptop / landscape tablet: less wasted space, and menu navigation stays reachable. */
@media (max-width:1100px) {
  html body :is(.customer-wrap,.page-wrap,.dashboard,.dv-page,.fv29-shell,.fv30-layout,.fv-inbox-shell,.fv-cust-shell) {
    width:100%; max-width:100%!important; padding-left:var(--fv-mobile-gutter)!important; padding-right:var(--fv-mobile-gutter)!important;
  }
  html body .food-grid { grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:16px!important; }
  html body .food-photo { min-height:0!important; height:auto; aspect-ratio:4/3; }
  html body .hero-home { padding:40px var(--fv-mobile-gutter)!important; }
  html body .cart-layout { grid-template-columns:minmax(0,1.6fr) minmax(270px,1fr); gap:16px; }
  html body .fv-design-layout { gap:16px; }
  html body .fv-admin-header { gap:10px!important; padding:12px 16px!important; }
  html body .fv-admin-quick { gap:3px; }
  html body .fv-admin-quick a { padding:8px!important; }
  html body .fv-admin-dropdown { width:min(940px,calc(100vw - 24px)); }
}

/* Portrait tablet and small laptop. */
@media (max-width:900px) {
  html body .customer-nav { display:flex!important; align-items:center!important; flex-direction:column!important; gap:8px!important; padding:12px var(--fv-mobile-gutter)!important; }
  html body .customer-nav>.brand { align-self:flex-start; }
  html body .customer-nav nav {
    width:100%; max-width:100%; display:flex!important; flex-wrap:nowrap!important; gap:4px!important; overflow-x:auto;
    align-items:center; padding:2px 0 7px; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch;
    scrollbar-width:thin; scrollbar-color:var(--fv-primary,#12b8b0) transparent;
  }
  html body .customer-nav nav a { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; min-height:44px; padding:8px 12px!important; border-radius:10px; white-space:nowrap; }
  html body .customer-nav nav :is(a.selected,a[aria-current="page"]) { background:color-mix(in srgb,var(--fv-primary,#12b8b0) 12%,transparent); }
  html body .hero-home { gap:20px!important; }
  html body .hero-home h1 { font-size:clamp(2.1rem,6vw,3.5rem)!important; }
  html body .cart-layout { display:grid; grid-template-columns:minmax(0,1fr)!important; }
  html body .cart-layout .order-summary { position:static!important; }
  html body .fv29-layout,html body .dv-columns,html body .fv-design-layout { grid-template-columns:minmax(0,1fr)!important; }
  html body .fv29-summary,html body .fv-design-preview-wrap { position:static!important; }
  html body .fv-design-preview-wrap { order:-1; }
  html body .fv-admin-dropdown { grid-template-columns:repeat(2,minmax(0,1fr))!important; max-height:min(68vh,650px); overflow-y:auto; overscroll-behavior:contain; }
  html body .fv-inbox-hero { padding:26px!important; min-height:auto; }
  html body .fv-inbox-hero-icon { display:none!important; }
  html body .fv30-nav { flex-wrap:nowrap; width:100%; max-width:100%; overflow-x:auto; padding-bottom:6px; }
  html body .fv30-nav a { flex:none; white-space:nowrap; min-height:44px; display:inline-flex; align-items:center; }
  html body .stats { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
}

/* Phone-sized screens. */
@media (max-width:640px) {
  :root { --fv-mobile-gutter:14px; }
  html body :is(.customer-wrap,.page-wrap,.dashboard,.dv-page,.fv29-shell,.fv30-layout,.fv-inbox-shell,.fv-cust-shell) {
    padding-left:var(--fv-mobile-gutter)!important; padding-right:var(--fv-mobile-gutter)!important;
  }
  html body .customer-top { border-bottom:1px solid var(--fv-border,#f5aaaa)!important; }
  html body .customer-nav { padding:9px 14px 6px!important; }
  html body .customer-nav .brand { font-size:1.38rem!important; line-height:1.2; }
  html body .customer-nav nav a { font-size:.85rem!important; font-weight:750; }
  html body .fv-announcement { font-size:.76rem; line-height:1.4; padding:7px 14px; }
  html body :is(.hero-home,.menu-banner,.dv-hero) { border-radius:0; }
  html body .hero-home { padding:30px 18px 35px!important; flex-direction:column!important; text-align:left!important; align-items:stretch!important; }
  html body .hero-home h1 { font-size:clamp(2rem,9vw,2.8rem)!important; line-height:1.13!important; margin:14px 0; }
  html body .hero-home p { font-size:1rem!important; }
  html body .fv-hero-photo { width:min(78vw,320px)!important; height:min(78vw,320px)!important; min-width:0!important; min-height:0!important; margin:15px auto 0; border-width:5px; border-radius:27px; }
  html body .menu-banner { padding:26px 18px!important; margin:0 0 16px; }
  html body .section-heading { align-items:flex-start; gap:10px; }
  html body .section-heading :is(h1,h2) { font-size:clamp(1.5rem,6.2vw,2rem)!important; line-height:1.2; }
  html body .food-grid { grid-template-columns:minmax(0,1fr)!important; gap:13px!important; }
  html body .food-card { border-radius:16px!important; }
  html body .food-photo { width:100%; aspect-ratio:16/10; max-height:240px; }
  html body .food-content { padding:15px!important; }
  html body .food-content :is(h2,h3) { font-size:1.14rem!important; }
  html body .food-content p { min-height:0!important; }
  html body .food-bottom { gap:10px; flex-wrap:wrap; }
  html body .food-bottom .btn { min-height:44px; padding:10px 17px; }
  html body :is(.panel,.fv-design-section,.fv30-card,.fv32-panel,.dv-card) { padding:16px!important; border-radius:15px!important; }
  html body .cart-item { gap:10px; align-items:flex-start; flex-wrap:wrap; }
  html body .cart-thumb { width:80px; height:80px; flex:0 0 80px; }
  html body .cart-item>strong { width:100%; text-align:right; }
  html body .cart-controls { align-items:stretch; gap:8px; }
  html body .cart-controls form { max-width:100%; }
  html body .cart-controls :is(.btn,button) { min-height:44px; }
  html body :is(.two-cols,.dv-columns,.fv-color-row) { grid-template-columns:minmax(0,1fr)!important; }
  html body .filter-form>div,html body .filter-form>.btn { min-width:0; width:100%; }
  html body .form-field label { line-height:1.45; }
  html body .product-row { flex-wrap:wrap; gap:12px; }
  html body .product-actions { width:100%; justify-content:flex-end; }
  html body .product-thumbnail { width:76px; height:76px; }
  html body .category-row { flex-direction:column; align-items:stretch; }
  html body .fv-add-category-row { flex-wrap:wrap; }
  html body .fv-add-category-row input { flex-basis:100%; }
  html body .fv-design-preview-top { padding:13px!important; }
  html body .fv-design-preview-top span { font-size:.68rem; }
  html body .fv-design-preview-hero { margin:10px!important; min-height:210px!important; padding:18px 14px!important; }
  html body .fv-design-preview-cards { gap:7px; padding:0 10px 12px; }
  html body .fv-design-preview-cards span { height:43px; }
  html body .fv-admin-header { display:flex!important; justify-content:space-between!important; align-items:center!important; gap:8px!important; padding:10px 12px!important; }
  html body .fv-admin-header>.brand { font-size:1.25rem!important; max-width:100%; min-width:0; white-space:normal; }
  html body .fv-admin-header .brand span { font-size:.65rem; }
  html body .fv-admin-quick { display:none!important; }
  html body .fv-admin-menu { margin-left:auto; }
  html body .fv-admin-menu summary { min-height:44px; font-size:.78rem; padding:8px 10px; }
  html body .fv-admin-dropdown { left:50%; width:calc(100vw - 20px); grid-template-columns:minmax(0,1fr)!important; gap:14px; padding:15px; max-height:min(67dvh,630px); overflow-y:auto; }
  html body .fv-admin-links-group h2 { margin:0 0 4px; }
  html body .fv-admin-links-group a { min-height:44px; display:flex; align-items:center; padding:9px 12px; }
  html body .fv-admin-tools { width:100%; justify-content:space-between; gap:8px; }
  html body .fv-admin-tools .btn { min-height:44px; }
  html body .fv-admin-tools :is(.fv-notify-widget,.fv-notify-sound) { min-width:0; }
  html body .stats { grid-template-columns:minmax(0,1fr)!important; gap:10px; }
  html body .stats>div { padding:15px!important; }
  html body .stats strong { font-size:1.65rem; }
  html body :is(.actions-row,.fv-row-actions,.dv-actions,.fv30-action-buttons,.fv29-actions) { gap:8px; flex-wrap:wrap; }
  html body .dv-nav { align-items:flex-start; }
  html body .dv-form>div { min-width:0; }
  html body .dv-auth,.auth-card { width:calc(100% - 28px)!important; max-width:440px; margin:22px auto!important; padding:20px!important; }
  html body .fv30-topbar { padding:12px!important; gap:12px; }
  html body .fv30-action-buttons { width:100%; }
  html body .fv30-action-buttons .fv30-button { flex:1 1 150px; }
  html body .fv29-shell { padding-top:10px!important; }
  html body .fv29-food { padding:12px; }
  html body .fv29-controls { width:100%; justify-content:flex-start; }
  html body .fv29-products { max-height:none; }
  html body .fv29-side,.fv29-customer,.fv29-summary { min-width:0; }
  html body .fv28-tabs { display:flex; flex-wrap:wrap; }
  html body .fv28-tabs a { flex:1 1 135px; text-align:center; min-height:44px; }
  html body .fv28-filter { display:flex; flex-wrap:wrap; gap:8px; }
  html body .fv28-filter>* { flex:1 1 145px; min-width:0; }
  html body .fv-inbox-hero { padding:20px 17px!important; }
  html body .fv-inbox-summary { grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
  html body .fv-inbox-summary-card { padding:12px; }
  html body .fv-inbox-item { padding:15px!important; gap:10px; }
  html body .fv-inbox-item-icon { width:39px; height:39px; flex:0 0 39px; }
  html body .fv-inbox-section-head { flex-direction:column; align-items:flex-start; }
  html body .fv-inbox-actions { width:100%; }
  html body .fv-inbox-actions :is(a,button) { min-height:44px; }
  html body .fv-mobile-shortcuts { z-index:50; bottom:0; gap:4px; padding-bottom:env(safe-area-inset-bottom)!important; }
  html body .fv-mobile-shortcuts a { min-height:46px; }
  html body .site-footer { font-size:.78rem; padding:20px 14px max(22px,env(safe-area-inset-bottom)); }
  html body:not(.fv-admin-page) { background-attachment:scroll!important; }
  /* Avoid a whole-page horizontal scrollbar from a single wide report/order table. */
  html body :is(.panel,.dv-card,.fv30-card,.fv32-panel)>table { display:block; width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  html body :is(.table-scroll,.fv-table-wrap,.dv-table,.fv30-table-scroll,.fv32-table-wrap,.fv28-table-wrap) table { min-width:540px; }
  html body :is(.panel,.dv-card,.fv30-card,.fv32-panel)>table :is(th,td) { white-space:nowrap; }
}
@media (max-width:390px) {
  html body .customer-nav .brand { font-size:1.22rem!important; }
  html body .fv-admin-header>.brand { font-size:1.08rem!important; }
  html body .fv-admin-menu summary { font-size:.74rem; }
  html body .cart-controls .qty-form { flex-wrap:wrap; }
  html body .cart-item-details { flex:1 1 175px; }
  html body .fv30-topbar .fv30-brand { font-size:1.08rem; }
  html body .fv29-controls .fv29-step { min-width:42px; }
}
@media (prefers-reduced-motion:reduce) {
  html body :is(.food-card,.fv-inbox-item,.btn,.dv-btn,button) { transition:none!important; transform:none!important; }
}

/* Chat stays usable when mobile keyboard is open. */
@media (max-width:640px) {
  html body .fv-chat-thread { height:min(45dvh,370px); min-height:190px; padding:12px; }
  html body .fv-chat-bubble { max-width:94%; padding:10px 12px; }
  html body .fv-chat-form { display:flex; flex-direction:column; gap:8px; }
  html body .fv-chat-form textarea { min-height:85px; width:100%; }
  html body .fv-chat-form .btn { width:100%; }
  html body .report-chart { max-width:100%; overflow-x:auto; }
  html body :is(.report-kpis,.report-grid) { grid-template-columns:minmax(0,1fr)!important; }
}
/* Step 37: dark-mode contrast on newer staff, manager and chat screens. */
html body :is(.fv29-food,.fv29-shell .panel,.fv30-topbar,.fv30-card,.fv32-panel,.fv28-orders-table,.fv29-cod,.fv30-info,.fv-chat-thread,.fv-chat-bubble,.fv29-count) {
  background:#1b3035!important; color:#eef8f6!important; border-color:var(--fv-border,#f5aaaa)!important;
}
html body :is(.fv29-shell,.fv30-layout,.fv32-page,.fv29-food h3,.fv29-side h2,.fv30-card h2,.fv32-form label,.fv30-details,.fv30-brand small,.fv29-line,.fv29-total,.fv30-summary) {
  color:#eef8f6!important;
}
html body :is(.fv29-help,.fv29-customer label,.fv29-menu label,.fv30-muted,.fv30-info,.fv30-details p,.fv30-events li small,.fv30-nav a,.fv32-reset summary) {
  color:#bad2cf!important;
}
html body .fv-chat-bubble.mine { background:#24514e!important; border-color:var(--fv-primary,#12b8b0)!important; }
html body .fv-chat-bubble small { color:#c0d7d3!important; }
html body .fv30-table th, html body .fv32-table th { background:#263f43!important; color:#eaf8f6!important; }
html body :is(.fv29-step,.fv30-outline,.fv29-count) { background:#274449!important; color:#d9f6f2!important; }

/* FOOD VIBES | Step 46: dark-mode contrast corrections.
   Loaded by theme.php ONLY when Admin -> Website Design -> Dark is selected.
   The rules are deliberately scoped to app surfaces; printable invoices and
   the intentionally light Design Studio preview are not turned dark.
*/
:root {
  color-scheme: dark;
  --fv-text: #edf7f5;
  --fv-muted: #bdd2cf;
  --fv-soft: #20373c;
  --fv-input-bg: #10262b;
  --fv-ink: #edf7f5;
  --fv30-text: #edf7f5;
  --fv30-muted: #bfd6d2;
}
html body { color: #edf7f5 !important; }

/* Surfaces added in Steps 19-45 that kept light backgrounds when Dark Mode
   was enabled. Without a matching dark background, white inherited text
   becomes invisible. */
html body :is(
  .auth-card, .panel, .food-card, .order-summary, .cart-item,
  .fv45-auth-card, .fv45-google-panel, .fv39-card, .fv39-notice,
  .fv42-card, .fv42-success, .fv43-card, .fv43-notice,
  .fv-address-card, .fv-inline-category-box,
  .fv-design-section, .fv-current-logo,
  .fv28-info, .fv28-empty, .fv29-food, .fv29-cod, .fv29-shell .panel,
  .fv30-topbar, .fv30-card, .fv30-info, .fv32-panel,
  .fv-inbox-item, .fv-inbox-empty, .fv-inbox-summary-card,
  .fv-chat-thread, .fv-chat-bubble,
  .notice:not(.notice-good):not(.notice-bad)
) {
  background: #1a3035 !important;
  color: #edf7f5 !important;
  border-color: #57767a !important;
}

/* Universal form and detail labels: many legacy pages used fixed dark text. */
html body :is(
  .auth-card, .panel, .fv45-auth-card, .fv39-card, .fv42-card,
  .fv43-card, .fv29-shell, .fv30-card, .fv32-panel, .dv-auth,
  .fv-design-section, .form-field, .fv28-filter
) :is(label, legend) {
  color: #f1f8f6 !important;
}
html body :is(
  .fv45-panel-intro, .fv45-desc, .fv45-bottom, .fv45-legal,
  .fv39-back, .fv29-help, .fv29-qty-label, .fv28-sub, .fv28-muted,
  .fv30-muted, .fv30-details p, .fv30-events li small,
  .fv30-brand small, .fv32-reset summary, .fv-inbox-item-meta,
  .fv-inbox-summary-label, .fv-category-feedback,
  .fv-design-preview-label, .fv-design-heading p
) { color: #c3d8d4 !important; }
html body :is(.fv29-shell,.fv30-layout,.fv32-page,.fv28-dashboard,.fv45-google-only) {
  color: #edf7f5 !important;
}
html body :is(.fv29-line,.fv29-total,.fv29-bill,.fv30-summary,.fv30-address,
  .fv30-details,.fv29-food-main,.fv28-heading,.fv28-top,.fv28-filter) {
  color: #edf7f5 !important;
}
html body :is(.fv29-food h3,.fv29-food strong,.fv29-side h2,
  .fv30-card h2,.fv32-page h1,.fv28-heading h1) { color: #f1f8f6 !important; }

/* Forms, input helper text and dropdown choices stay readable. */
html body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]), select, textarea) {
  background: #10262b !important;
  color: #edf7f5 !important;
  border-color: #66888a !important;
  caret-color: #87e7dc !important;
}
html body :is(input,textarea)::placeholder { color: #bbd1cd !important; opacity: 1 !important; }
html body select option { background: #132a30 !important; color: #edf7f5 !important; }
html body input:-webkit-autofill {
  -webkit-text-fill-color: #edf7f5 !important;
  -webkit-box-shadow: 0 0 0 1000px #10262b inset !important;
}

/* Menus, filters, counters and status pills get a matching dark surface. */
html body :is(.fv-admin-dropdown,.fv-admin-menu summary,.fv30-nav,
  .fv28-staff-nav a,.fv28-tabs a,.fv28-count,.fv28-pill,
  .fv29-count,.fv29-step:not(.fv29-add),.fv30-outline,
  .fv30-status,.fv43-tabs a,.fv32-reset summary) {
  background: #203940 !important;
  color: #dff3ef !important;
  border-color: #66898a !important;
}
html body :is(.fv-admin-links-group h2,.fv-admin-links-group a,
  .fv-admin-header .brand span,.fv28-action,.fv30-back,.fv30-nav a,
  .fv45-footer-links a,.fv45-recovery a,.fv45-bottom a,
  .fv39-forgot a,.fv39-back a,.fv32-reset summary) {
  color: #77e2d8 !important;
}
html body :is(.fv-admin-links-group a:hover,.fv-admin-links-group a.is-active,
  .fv28-tabs a:hover,.fv28-tabs a[aria-current="page"],
  .fv28-staff-nav a:hover,.fv28-staff-nav a[aria-current="page"]) {
  background: #2b4b4c !important;
  color: #eefbf8 !important;
}
html body :is(.fv29-category,.fv30-eyebrow,.fv43-kicker,
  .fv45-panel-label,.fv39-eyebrow,.fv42-kicker) {
  color: #72e2d7 !important;
}

/* Tables: high-contrast headings, labels, and hovering rows. */
html body :is(table th,.fv28-orders-table th,.fv30-table th,.fv32-table th) {
  background: #244047 !important;
  color: #f1f9f6 !important;
  border-color: #527377 !important;
}
html body :is(table td,.fv28-orders-table td,.fv30-table td,.fv32-table td) {
  background: transparent !important;
  color: #e8f4f1 !important;
  border-color: #4a6266 !important;
}
html body tbody tr:hover { background: #263f44 !important; }

/* Informational and error notices — preserve meaning with visible text. */
html body :is(.notice-good,.fv39-notice,.fv42-success,.fv43-notice,.fv28-info) {
  background: #163c36 !important;
  border-color: #48b69e !important;
  color: #e4fbf2 !important;
}
html body :is(.notice-bad,.fv45-notice,.dv-error) {
  background: #44272f !important;
  border-color: #e7a7ad !important;
  color: #ffe7e9 !important;
}
html body :is(.fv45-notice,.fv39-notice,.fv42-success,.fv43-notice,.notice-good,.notice-bad) :is(p,small,span) {
  color: inherit !important;
}

/* Buttons: white text on a darkened brand-colour background, readable even
   if the custom turquoise colour is unusually bright. Do not alter Google
   Identity Services' own branding/button. */
html body :is(.btn:not(.btn-outline):not(.btn-danger),.fv29-submit,.fv29-add,
  .fv30-primary,.fv28-book,.fv43-button,.fv39-cta) {
  background: color-mix(in srgb,var(--fv-primary,#12b8b0) 62%,#061b20) !important;
  color: #fff !important;
  border-color: transparent !important;
}
html body :is(.btn.btn-outline,.dv-btn.secondary,.fv30-outline) {
  background: #233e43 !important;
  color: #e8f8f5 !important;
  border-color: #78a5a4 !important;
}

/* Design Studio preview must honor its own selected light/dark mode.
   Global dark headings previously made the light preview heading invisible. */
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-top {
  background: #fff !important;
  color: #153c40 !important;
}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-top span { color:#45676a !important; }
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-hero {
  background: linear-gradient(125deg,#e7fbf5,#fff5f3) !important;
  color: #153c40 !important;
}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-hero h2 { color:#153c40 !important; }
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-hero p { color:#45676a !important; }
html body .fv-design-preview.fv-preview-dark .fv-design-preview-top {
  background: #17272f !important;
  color: #f0f9f6 !important;
}
html body .fv-design-preview.fv-preview-dark .fv-design-preview-hero {
  background: linear-gradient(125deg,#1c3338,#34272d) !important;
  color: #ecf9f6 !important;
}
html body .fv-design-preview.fv-preview-dark .fv-design-preview-hero :is(h2,p) { color:#ecf9f6 !important; }

/* Existing printable invoices intentionally retain a white print sheet and
   dark ink, including when the rest of the app uses Dark Mode. */
html body .fv-print-sheet {
  background: #fff !important;
  color: #132f31 !important;
  color-scheme: light;
}
html body .fv-print-sheet :is(h1,h2,h3,h4,p,span,strong,small,th,td) { color:#132f31 !important; }
html body .fv-print-sheet :is(th,td) { background:#fff !important; border-color:#dde8e6 !important; }

@media print {
  html body { background: #fff !important; color: #111 !important; }
  html body .fv-print-sheet { background: #fff !important; color: #111 !important; }
}

/* FOOD VIBES Step 47 — Dark mode readability, October 2026.
   Loaded ONLY when admin-selected mode is dark by theme.php.
   Compatible with Step 37 responsive CSS and Step 46 dark contrast CSS.
   Core rule: pair text colours with the actual surface/row background. */
:root {
    --fv47-row: #1b3238;
    --fv47-row-alt: #263f46;
    --fv47-row-hover: #31535b;
    --fv47-text: #edf8f6;
    --fv47-muted: #c5dbd8;
    --fv47-link: #63efe1;
    --fv47-border: #53747a;
}

/* FIX: historic light striped rows from assets/fv-refresh.css were combined
   with Step 46's pale text. This sets BOTH rows and cells to dark contrast. */
html body table {
    background: #192e34 !important;
    color: var(--fv47-text) !important;
    border-color: var(--fv47-border) !important;
}
html body table thead,
html body table thead tr,
html body table thead th {
    background: #25454b !important;
    color: #f6fffd !important;
    border-color: var(--fv47-border) !important;
}
html body table tbody tr,
html body .fv-table-wrap table tbody tr,
html body .fv28-orders-table tbody tr,
html body .fv30-table tbody tr,
html body .fv32-table tbody tr {
    background: var(--fv47-row) !important;
    color: var(--fv47-text) !important;
}
html body table tbody tr:nth-child(even),
html body .fv-table-wrap table tbody tr:nth-child(even),
html body .fv28-orders-table tbody tr:nth-child(even),
html body .fv30-table tbody tr:nth-child(even),
html body .fv32-table tbody tr:nth-child(even) {
    background: var(--fv47-row-alt) !important;
    color: var(--fv47-text) !important;
}
html body table tbody tr:hover,
html body table tbody tr:focus-within,
html body .fv-table-wrap table tbody tr:hover {
    background: var(--fv47-row-hover) !important;
}
html body table tbody td,
html body .fv-table-wrap table tbody td,
html body .fv28-orders-table tbody td,
html body .fv30-table tbody td,
html body .fv32-table tbody td {
    background: transparent !important;
    color: var(--fv47-text) !important;
    border-color: var(--fv47-border) !important;
}
html body table tbody td :is(strong, b),
html body table tbody td span:not([class]) {
    color: #f6fffd !important;
}
html body table tbody td :is(small, .muted, .tiny, .fv-history-eligibility) {
    color: var(--fv47-muted) !important;
    opacity: 1 !important;
}
html body table tbody td a:not(.btn):not([class*="button"]) {
    color: var(--fv47-link) !important;
    text-decoration-color: #71dcd2;
}
html body table tbody td a:not(.btn):hover,
html body table tbody td a:not(.btn):focus-visible {
    color: #c4fff7 !important;
    text-decoration: underline;
}
/* Preserve status contrast: status pills intentionally have a pale background
   and dark letters, so never force their text to white. */
html body table tbody td :is(.status-pill, .available-pill) {
    background: #d7f9ec !important;
    color: #07584d !important;
    border-color: #64c6a7 !important;
}

/* Light-background callouts and counters used elsewhere on the website.
   Turn them into dark surfaces too, so descendants keep their light text. */
html body :is(.fv-history-help, .fv-history-count, .fv-history-notice,
              .fv28-info, .fv29-info, .fv30-info) {
    background: #203b3f !important;
    color: #effbf8 !important;
    border-color: #5c8b83 !important;
}
html body :is(.fv-history-help, .fv-history-count, .fv-history-notice,
              .fv28-info, .fv29-info, .fv30-info) :is(p,small,span,strong,b) {
    color: inherit !important;
    opacity: 1 !important;
}
html body :is(.fv-history-filter, .fv-history-head, .fv-history-tabs,
              .fv-history-actions, .fv-pagination) {
    color: var(--fv47-text) !important;
}
html body .fv-pagination :is(a,span) {
    background: #213b41 !important;
    color: #edf8f6 !important;
    border-color: var(--fv47-border) !important;
}
html body .fv-pagination :is(.current,[aria-current="page"]) {
    background: #087c76 !important;
    color: #fff !important;
}

/* Dark form labels and secondary copy across customer/admin/staff/delivery.
   Existing identity-provider buttons and custom light previews are excluded. */
html body :is(.panel,.auth-card,.fv30-card,.fv29-shell,.fv32-panel,
              .fv-design-section,.fv28-dashboard,.fv45-auth-card) :is(label,legend) {
    color: #eefaf7 !important;
}
html body :is(.panel,.auth-card,.fv30-card,.fv29-shell,.fv32-panel,
              .fv-design-section,.fv28-dashboard,.fv45-auth-card)
          :is(.muted,.tiny,.small,.help-text,.fv30-muted,.fv28-muted) {
    color: var(--fv47-muted) !important;
}

/* Explicitly retain light-mode rendering inside Design Studio's light preview. */
html body .fv-design-preview:not(.fv-preview-dark) table,
html body .fv-design-preview:not(.fv-preview-dark) table :is(thead,tbody,tr,th,td) {
    background: #fff !important;
    color: #173a3e !important;
    border-color: #d7e7e3 !important;
}

/* Specificity override for light Design Studio preview tables nested in wrappers. */
html body .fv-design-preview:not(.fv-preview-dark) .fv-table-wrap table tbody tr,
html body .fv-design-preview:not(.fv-preview-dark) .fv-table-wrap table tbody td {
    background: #fff !important;
    color: #173a3e !important;
}

/* Receipt and invoice document must remain black-on-white even in Dark Mode. */
html body .fv-print-sheet,
html body .fv-print-sheet table,
html body .fv-print-sheet table :is(thead,tbody,tr,th,td) {
    background: #fff !important;
    color: #172f31 !important;
    border-color: #d4e4e0 !important;
}
html body .fv-print-sheet .fv-table-wrap table tbody tr,
html body .fv-print-sheet .fv-table-wrap table tbody td,
html body .fv-print-sheet .fv-line-items table tbody tr,
html body .fv-print-sheet .fv-line-items table tbody td {
    background: #fff !important;
    color: #172f31 !important;
}
html body .fv-print-sheet table tbody td :is(strong,small,b,span:not([class])) {
    color: #172f31 !important;
}
html body .fv-print-sheet table a { color: #086e68 !important; }
@media print {
    html body .fv-table-wrap table tbody tr,
    html body .fv-table-wrap table tbody td,
    html body .fv28-orders-table tbody tr,
    html body .fv28-orders-table tbody td,
    html body .fv30-table tbody tr,
    html body .fv30-table tbody td {
        background: #fff !important;
        color: #151b1b !important;
    }
    html body, html body table, html body table :is(thead,tbody,tr,th,td) {
        background: #fff !important;
        color: #151b1b !important;
        box-shadow: none !important;
    }
    html body table :is(small,strong,b,span:not([class])) {
        color: #151b1b !important;
    }
}

/* FOOD VIBES Step 49 — final dark-mode visibility patch.
   Covers delivery/staff order pages and the remaining light-card + pale-text cases.
   Loaded only when the saved theme mode is dark. */
:root {
  --fv49-surface: #183137;
  --fv49-surface-2: #203b40;
  --fv49-surface-3: #27484f;
  --fv49-text: #eef9f7;
  --fv49-muted: #c9ddda;
  --fv49-border: #5b8482;
  --fv49-link: #77fff0;
}

/* DELIVERY PAGES (Step 12 / later variants) */
html body .dv-hero,
html body .dv-card,
html body .dv-auth,
html body .dv-warning,
html body .dv-notice,
html body .dv-table,
html body .dv-page .panel,
html body .dv-page .card {
  background: var(--fv49-surface) !important;
  color: var(--fv49-text) !important;
  border-color: var(--fv49-border) !important;
  box-shadow: 0 10px 30px rgba(0,0,0,.22) !important;
}
html body .dv-hero { background: linear-gradient(120deg, #15343a, #182e38, #2e2a37) !important; }
html body .dv-warning { background: #463b1d !important; color: #fff4cf !important; border-color: #b8953a !important; }
html body .dv-notice { background: #17392c !important; color: #ecfff7 !important; border-color: #65bf8f !important; }
html body .dv-error { background: #4a1f28 !important; color: #ffeef1 !important; border-color: #d27586 !important; }

html body .dv-page :is(h1,h2,h3,h4,strong,b,label,legend,.dv-label),
html body .dv-card :is(h1,h2,h3,h4,strong,b,label,legend,.dv-label),
html body .dv-auth :is(h1,h2,h3,h4,strong,b,label,legend,.dv-label),
html body .dv-hero :is(h1,h2,h3,h4,strong,b) {
  color: #f5fffd !important;
}
html body .dv-page :is(p,span,li,small,.dv-muted),
html body .dv-card :is(p,span,li,small,.dv-muted),
html body .dv-auth :is(p,span,li,small,.dv-muted) {
  color: var(--fv49-muted) !important;
  opacity: 1 !important;
}
html body .dv-page a:not(.dv-btn),
html body .dv-card a:not(.dv-btn),
html body .dv-auth a:not(.dv-btn) {
  color: var(--fv49-link) !important;
}
html body .dv-page a:not(.dv-btn):hover,
html body .dv-page a:not(.dv-btn):focus-visible { color: #d2fffa !important; }

html body .dv-input,
html body .dv-page input:not([type="checkbox"]):not([type="radio"]),
html body .dv-page select,
html body .dv-page textarea {
  background: #10262b !important;
  color: #effbf8 !important;
  border-color: var(--fv49-border) !important;
}
html body .dv-input::placeholder,
html body .dv-page input::placeholder,
html body .dv-page textarea::placeholder { color: #9ab7b1 !important; }

html body .dv-table table,
html body .dv-table table thead,
html body .dv-table table tbody,
html body .dv-table table tr,
html body .dv-table table th,
html body .dv-table table td {
  background: transparent !important;
  color: var(--fv49-text) !important;
  border-color: #44656c !important;
}
html body .dv-table table thead th { background: var(--fv49-surface-3) !important; color: #f6fffd !important; }
html body .dv-pill { background: #f1eaff !important; color: #5530a2 !important; border-color: #c8b4f4 !important; }
html body .dv-timeline { border-left-color: #9d87ef !important; }
html body .dv-event small { color: var(--fv49-muted) !important; }

/* STAFF / ORDER DETAIL PAGES (Step 30 and similar) */
html body .fv30-card,
html body .fv30-topbar,
html body .fv30-info,
html body .fv30-update-form select,
html body .fv30-update-form input,
html body .fv30-update-form textarea,
html body .fv30-table-scroll,
html body .fv30-card .panel,
html body .fv30-card .card {
  background: var(--fv49-surface) !important;
  color: var(--fv49-text) !important;
  border-color: var(--fv49-border) !important;
}
html body .fv30-card :is(h1,h2,h3,h4,strong,b,label,legend,.fv30-eyebrow),
html body .fv30-topbar :is(a,small,strong,b) { color: #f5fffd !important; }
html body .fv30-card :is(p,span,small,li,.fv30-muted),
html body .fv30-topbar :is(p,span,small) { color: var(--fv49-muted) !important; opacity: 1 !important; }
html body .fv30-details p,
html body .fv30-details .fv30-address,
html body .fv30-summary > div,
html body .fv30-events li,
html body .fv30-events li span,
html body .fv30-events li small { color: var(--fv49-text) !important; }
html body .fv30-table,
html body .fv30-table th,
html body .fv30-table td {
  background: transparent !important;
  color: var(--fv49-text) !important;
  border-color: #44656c !important;
}
html body .fv30-table th { background: var(--fv49-surface-3) !important; }
html body .fv30-status { background: #daf8e9 !important; color: #085d4c !important; border-color: #73d0a4 !important; }
html body .fv30-outline { background: #13282d !important; color: #d9fffa !important; border-color: #79bdb2 !important; }
html body .fv30-primary { background: #18d6c7 !important; color: #06393a !important; border-color: #18d6c7 !important; }
html body .fv30-info :is(p,span,strong,b,small,label) { color: inherit !important; }

/* GENERIC REMAINING WHITE-CARD CASES USED ACROSS FOOD VIBES */
html body :is(.order-card,.order-panel,.detail-card,.detail-panel,.summary-card,.summary-panel,.track-card,.track-panel,.chat-card,.chat-panel,.customer-card,.customer-panel,.payment-card,.payment-panel) {
  background: var(--fv49-surface) !important;
  color: var(--fv49-text) !important;
  border-color: var(--fv49-border) !important;
}
html body :is(.order-card,.order-panel,.detail-card,.detail-panel,.summary-card,.summary-panel,.track-card,.track-panel,.chat-card,.chat-panel,.customer-card,.customer-panel,.payment-card,.payment-panel)
:is(h1,h2,h3,h4,strong,b,label,legend,th,td,p,span,small,li) {
  color: inherit !important;
  opacity: 1 !important;
}
html body :is(.order-card,.order-panel,.detail-card,.detail-panel,.summary-card,.summary-panel,.track-card,.track-panel,.chat-card,.chat-panel,.customer-card,.customer-panel,.payment-card,.payment-panel) a:not(.btn):not([class*="button"]) {
  color: var(--fv49-link) !important;
}

/* Keep Google button, invoices and light previews untouched. */
html body .g_id_signin,
html body [id^="gsi_"],
html body iframe[src*="accounts.google.com"],
html body .fv-print-sheet,
html body .fv-print-sheet *,
html body .fv-design-preview:not(.fv-preview-dark),
html body .fv-design-preview:not(.fv-preview-dark) * {
  box-shadow: revert-layer;
}
html body .fv-print-sheet,
html body .fv-print-sheet * {
  background: #fff !important;
  color: #172f31 !important;
  border-color: #d4e4e0 !important;
}

@media print {
  html body .dv-hero,
  html body .dv-card,
  html body .dv-auth,
  html body .fv30-card,
  html body .fv30-topbar {
    background: #fff !important;
    color: #172f31 !important;
    box-shadow: none !important;
  }
}

/* FOOD VIBES — Step 50: Dark Mode navigation + action readability
 * Included by theme.php ONLY when Admin Website Design is set to Dark Mode.
 * Fixes delivery top bar and Refresh status link shown in the screenshot.
 * Paired background/text selectors prevent bright-on-bright failures elsewhere.
 */
:root {
  --fv50-nav-bg: #162e33;
  --fv50-action-bg: #213d43;
  --fv50-text: #f1faf8;
  --fv50-subtle-text: #bfd7d3;
  --fv50-link: #8affee;
  --fv50-edge: #6a9c97;
}

/* Navigation bars formerly styled with white backgrounds by fv-refresh.css.
 * Important: set the foreground and background TOGETHER. */
html body .dv-page .dv-nav,
html body .dv-nav,
html body .customer-top,
html body .admin-top,
html body .dash-top,
html body .fv30-topbar,
html body .fv28-topbar,
html body .staff-topbar,
html body .delivery-topbar {
  background: var(--fv50-nav-bg) !important;
  background-image: none !important;
  border-color: var(--fv50-edge) !important;
  color: var(--fv50-text) !important;
}

html body .dv-page .dv-nav :is(strong,b,span:not(.fv-notify-count),small),
html body .dv-nav :is(strong,b,span:not(.fv-notify-count),small),
html body .customer-top :is(strong,b),
html body .admin-top :is(strong,b),
html body .dash-top :is(strong,b),
html body .fv30-topbar :is(strong,b) {
  color: var(--fv50-text) !important;
  opacity: 1 !important;
}

html body .dv-page .dv-nav a:not(.fv-notify-bell),
html body .dv-nav a:not(.fv-notify-bell),
html body .fv30-topbar a:not(.btn):not(.fv30-button),
html body .customer-top nav a,
html body .admin-top nav a,
html body .dash-top nav a,
html body .staff-topbar a,
html body .delivery-topbar a {
  color: var(--fv50-link) !important;
  text-shadow: none !important;
  opacity: 1 !important;
}
html body .dv-page .dv-nav a:not(.fv-notify-bell):hover,
html body .dv-page .dv-nav a:not(.fv-notify-bell):focus-visible,
html body .dv-nav a:not(.fv-notify-bell):hover,
html body .dv-nav a:not(.fv-notify-bell):focus-visible {
  color: #ffffff !important;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Notification controls are real click targets, not merely label text. */
html body .dv-nav .fv-notify-bell,
html body .dv-nav .fv-notify-sound,
html body .dv-page .dv-nav .fv-notify-sound,
html body .customer-top .fv-notify-sound,
html body .admin-top .fv-notify-sound,
html body .dash-top .fv-notify-sound,
html body .staff-topbar .fv-notify-sound,
html body .delivery-topbar .fv-notify-sound {
  background: var(--fv50-action-bg) !important;
  color: var(--fv50-text) !important;
  border: 1px solid var(--fv50-edge) !important;
  box-shadow: none !important;
}
html body .dv-nav .fv-notify-bell:hover,
html body .dv-nav .fv-notify-sound:hover {
  background: #31535b !important;
}
html body .dv-nav .fv-notify-count:not([hidden]) {
  background: #d91e4c !important;
  color: #ffffff !important;
}
html body .dv-nav .fv-notify-latest { color: var(--fv50-subtle-text) !important; }

/* The circled Refresh status link is .fv-control in the Step 18 delivery page.
 * Scope shared outline/action controls to surfaces that use dark mode. */
html body .dv-page .fv-row-actions .fv-control,
html body .dv-page a.fv-control,
html body .dv-page button.fv-control,
html body a.fv-control,
html body button.fv-control,
html body :is(a,button).btn-outline,
html body :is(a,button).btn.btn-outline,
html body :is(a,button).dv-btn.secondary,
html body :is(a,button).fv-inbox-refresh,
html body :is(a,button).fv30-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--fv50-action-bg) !important;
  color: var(--fv50-text) !important;
  border-color: var(--fv50-edge) !important;
  background-image: none !important;
  opacity: 1 !important;
  text-shadow: none !important;
  text-decoration: none;
}
html body .dv-page .fv-row-actions .fv-control:hover,
html body .dv-page .fv-row-actions .fv-control:focus-visible,
html body :is(a,button).fv-control:hover,
html body :is(a,button).fv-control:focus-visible,
html body :is(a,button).btn-outline:hover,
html body :is(a,button).btn-outline:focus-visible {
  background: #31565d !important;
  color: #ffffff !important;
}

/* Some shared action buttons and notifications use a saturated brand fill.
 * Keep the text strongly legible, without altering their actions. */
html body :is(.dv-page,.dv-card,.fv30-card) :is(a.dv-btn,button.dv-btn,.fv30-primary),
html body .fv-notice-button,
html body .fv-toast {
  color: #ffffff !important;
  text-shadow: none !important;
}

/* Make the header functional on narrow phones/tablets, not off-screen. */
@media (max-width: 720px) {
  html body .dv-page .dv-nav,
  html body .dv-nav {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: space-between !important;
    gap: 9px 12px !important;
    padding: 12px !important;
    border-radius: 12px;
  }
  html body .dv-nav .fv-notify-widget {
    min-width: 0 !important;
    max-width: 100% !important;
  }
  html body .dv-page .fv-row-actions .fv-control {
    min-height: 44px;
  }
}

/* Leave third-party Google buttons and A4/thermal print sheets unmodified. */
@media print {
  html body .dv-nav,
  html body .customer-top,
  html body .admin-top,
  html body .dash-top,
  html body .fv30-topbar {
    background: #ffffff !important;
    color: #182c2f !important;
    border-color: #dae3e1 !important;
  }
  html body .dv-nav :is(strong,b,span:not(.fv-notify-count)),
  html body .dv-nav a {
    color: #182c2f !important;
  }
}

/* FOOD VIBES Step 52: admin-selected typography; links, icons, coloured buttons,
   badges, light previews and printed documents retain their own contrast styling. */
:root { --fv52-font: Verdana, Geneva, sans-serif; --fv52-size: 14px; --fv52-text: #ededed; }
html { font-size: var(--fv52-size) !important; }
html body { font-family: var(--fv52-font) !important; font-size: var(--fv52-size) !important; color: var(--fv52-text) !important; }
html body :is(h1,h2,h3,h4,h5,h6,p,li,label,legend,td,th,blockquote,small,summary,nav,a,button,input,textarea,select,output):not(.fa):not(.fas):not(.far):not(.fab):not(.material-icons):not([class*="lucide"]) {
    font-family: var(--fv52-font) !important;
}
html body :is(p,li,label,legend,blockquote,td,th,textarea,input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),select,output) {
    font-size: var(--fv52-size) !important;
    color: var(--fv52-text) !important;
}
html body :is(h1,h2,h3,h4,h5,h6) { color: var(--fv52-text) !important; }
html body h1 { font-size: clamp(27px, 29px, 46px) !important; }
html body h2 { font-size: clamp(23px, 23px, 36px) !important; }
html body h3 { font-size: clamp(19px, 19px, 30px) !important; }
html body :is(small,.small,.tiny) { font-size: 12px !important; }
html body :is(header nav a,.customer-nav a,.admin-nav a,.fv-admin-quick a,.fv-admin-links-group a,.dv-nav a,.fv30-nav a,
    .site-footer a,.site-footer p) {
    font-size: clamp(12px, calc(var(--fv52-size) * .88), 19px) !important;
}
html body :is(button,.btn,.dv-btn,.fv30-button,.fv29-button) {
    font-size: clamp(13px, calc(var(--fv52-size) * .90), 20px) !important;
}
/* Preserve colored control text and status pills for legibility. */
html body :is(button,.btn,[role="button"],.dv-btn,.fv30-button,.status-pill,.available-pill,.dv-pill,.fv30-status,.badge) {
    font-family: var(--fv52-font) !important;
}
/* Avoid forcing typography into Google's account-selection button or icon glyphs. */
html body :is(.g_id_signin,[id^="gsi_"]) { font-size: revert !important; }
@media(max-width:600px) {
    html body h1 { font-size: clamp(25px, 7vw, 29px) !important; }
}
/* Document printing, receipt sheets and Design Studio preview stay intentionally scoped. */
@media print {
    html,html body { font-size: 12pt !important; color: #172f31 !important; }
    html body :is(td,th,p,li,label,small) { font-size: 10pt !important; color: #172f31 !important; }
}



@media screen {
html body, html body[class], html body[class][class] {background-image:linear-gradient(rgba(8,18,25,0.20),rgba(8,18,25,0.20)),url(" /uploads/backgrounds/e31a9ac7862bfa92ce6f61e81b052da3.webp")!important;background-position:center center!important;background-repeat:no-repeat!important;background-size:cover!important;background-attachment:fixed!important;}
html body :is(.admin-shell,.dashboard,.dv-page,.fv-inbox-shell) {background-color:transparent!important;background-image:none!important;}
@media (max-width:800px){html body, html body[class], html body[class][class]{background-attachment:scroll!important;}}
}


/* FOOD VIBE Step 78 — Dark mode legibility / Modern Light compatibility.
   Emitted ONLY for the SAVED dark display mode, after prior theme layers.
   Styling only: no form, authorization, ordering or payment behavior changed. */
@media screen {
html:root {
  color-scheme:dark!important;
  --fv-text:#eef7f7;
  --fv-muted:#c0d2d5;
  --fv-soft:#213a40;
  --fv-ink:#edf7f7;
  --fv47-row:#1b343b;
  --fv47-row-alt:#234049;
  --fv47-row-hover:#2c505b;
  --fv47-text:#eef8f7;
  --fv47-muted:#c7dadc;
  --fv47-link:#8de9ee;
  --fv47-border:#56767d;
  --fv50-nav-bg:#152a32;
  --fv50-action-bg:#223e49;
  --fv50-text:#f1f9fd;
  --fv50-subtle-text:#bed1dc;
  --fv50-link:#93e6f4;
  --fv50-edge:#577b86;
  --fv71-surface:#1b3039;
  --fv71-soft:#24414a;
  --fv71-ink:#f0f8fa;
  --fv71-secondary:#c3d5d9;
  --fv71-line:#56757e;
  --fv71-elev:0 10px 30px rgba(0,0,0,.25);
  --fv-cust-ink:#edf8f8;
  --fv-cust-muted:#c5d8dc;
  --fv-cust-light:#203841;
  --fv-cust-stroke:#4b6a75;
  --fv-inbox-ink:#eef9f9;
  --fv-inbox-muted:#c3d7dc;
  --fv-inbox-soft:#223d46;
  --fv-inbox-stroke:#56717a;
}
html body,
html body.fv-customer-page,
html body.fv-inbox-page {
  color:#edf7f9!important;
  background-color:#0d1d25!important;
}
/* This site may have a selected food photograph behind its content. We do not
   touch background-image; Step 77 continues to use the uploaded photo/overlay. */
html body :is(h1,h2,h3,h4,h5,h6) {color:#f4fbff!important;}
html body :is(.muted,.tiny,.small,.dv-muted,.next-feature,.fv-cust-section-description,
  .fv-cust-hero-sub,.fv-inbox-footnote,.fv-inbox-item-meta,.fv-inbox-summary-label,
  .food-content p,.fv71-overline,.fv71-status-hint,.fv71-card-date,.fv71-card-meta,
  .fv71-floating-action small,.fv73-note,.fv32-reset p,.fv-design-heading p) {
  color:#c2d5da!important;opacity:1!important;
}
html body :is(.eyebrow,.hero-kicker,.fv-cust-kicker,.fv-cust-eyebrow) {color:#86e6ec!important;}
html body a:not(.btn):not(.link-btn):not(.fv56-order-btn):not(.fv71-track-btn):not(.fv-cust-primary) {color:#94e5f5;}
html body a:not(.btn):not(.link-btn):not(.fv56-order-btn):hover {color:#c6f8ff;}

/* Headers and navs: dark surfaces + light foregrounds as a pair. */
html body :is(.customer-top,.admin-top,.dash-top,.fv-cust-header,.dv-nav,.fv-inbox-header,
  .fv30-topbar,.fv28-topbar,.staff-topbar,.delivery-topbar,.fv-mobile-shortcuts,.fv71-bottom-nav) {
  background:#152b34!important;
  background-image:none!important;
  color:#ecf7fc!important;
  border-color:#41616a!important;
}
html body :is(.brand,.logo,.fv-cust-brand,.fv-inbox-brand,.customer-nav .brand) {color:#f3fafc!important;}
html body .fv-admin-header .brand span {color:#b7eef4!important;}
html body :is(.customer-nav nav a,.admin-nav a,.fv-admin-quick a,.fv-admin-links-group a,
  .fv-admin-submenu a,.fv-cust-headlink,.fv-inbox-back,.fv-inbox-refresh,
  .fv71-bottom-nav a,.fv71-chat-btn,.fv71-chip,.dv-nav a) {
  color:#d9eef4!important;text-shadow:none!important;opacity:1!important;
}
html body :is(.customer-nav nav a:hover,.customer-nav nav a.selected,
  .fv-admin-quick a:hover,.fv-admin-quick a.is-active,.admin-nav a:hover,
  .fv-admin-links-group a:hover,.fv-admin-submenu a:hover,
  .fv71-bottom-nav a.is-active,.fv71-chip.is-active) {
  background:#254650!important;color:#fff!important;border-color:#5d909a!important;
}
html body :is(.fv-admin-menu summary,.fv-admin-compact-nav .fv-admin-group>summary,
  .fv-notify-sound,.fv-notify-bell,.btn.btn-outline,.btn.btn-dark,.fv-outline,
  .fv-control,.dv-btn.secondary,.fv-cust-secondary,.fv-cust-logout button,
  .logout .btn.btn-dark,.secondary) {
  color:#edf9fb!important;background:#25404a!important;border:1px solid #64868e!important;
}
html body :is(.fv-admin-menu summary:hover,.fv-notify-sound:hover,
  .btn.btn-outline:hover,.fv-outline:hover,.fv-control:hover,
  .fv-cust-secondary:hover,.fv-cust-logout button:hover) {
  color:#fff!important;background:#305561!important;
}
html body :is(.fv-admin-dropdown,.fv-admin-submenu,.fv-admin-compact-nav .fv-admin-submenu) {
  background:#172e37!important;border:1px solid #4e6e78!important;color:#ecf7fa!important;
}
html body .fv-admin-links-group h2 {color:#f2fbff!important;}
html body .fv-announcement {background:#22414d!important;color:#f0fafb!important;}

/* Menu, customer, auth, admin, delivery, staff and account-management surfaces. */
html body :is(.panel,.auth-card,.menu-controls,.food-card,.order-summary,.payment-options,
  .fv-cust-shortcut,.fv-cust-stat,.fv-cust-orders,.fv-address-card,
  .fv-inbox-item,.fv-inbox-summary-card,.fv-inbox-empty,.fv-inbox-filter-empty,
  .fv-design-section,.fv32-panel,.fv30-card,.fv29-side,.fv29-food,.fv28-info,
  .fv28-empty,.fv30-info,.fv30-panel,.dv-card,.dv-panel,.dv-auth,.dv-table,
  .fv42-card,.fv43-card,.fv39-card,.fv45-auth-card,.fv45-google-panel,
  .fv-chat-bubble,.fv-chat-thread,.fv71-order-card,.fv71-tracking,
  .fv71-floating-action,.page-card,.report-kpi,.fv73-feature,.fv-custom-card) {
  background:#1b343e!important;color:#eef8fa!important;
  border-color:#52737d!important;
}
html body :is(.hero-home,.menu-banner,.fv-cust-hero,.fv-inbox-hero,.report-welcome,.dv-hero) {
  background-color:#193640!important;
  color:#f4faff!important;border-color:#59777e!important;
}
html body :is(.hero-home,.menu-banner,.fv-cust-hero,.fv-inbox-hero,.report-welcome,.dv-hero) :is(h1,h2,h3,p,small) {
  color:#f0f8fb!important;
}
html body :is(.food-card,.food-content,.fv-cust-shortcut,.fv-cust-stat,.fv-cust-orders,
  .fv71-order-card,.fv71-tracking,.fv71-floating-action) :is(h1,h2,h3,h4,strong,b) {
  color:#f4fbfd!important;
}
html body :is(.food-content p,.fv-cust-shortcut-copy small,.fv-cust-stat span,
  .fv71-card-meta,.fv71-card-date,.fv71-status-hint,.fv-inbox-item p) {color:#c7d9dc!important;}
html body :is(.stats>div,.report-kpi,.fv-cust-stat,.fv-community .fv-stats>div) {
  background:#213d48!important;color:#eef8fa!important;border-color:#567783!important;
}
html body :is(.stats strong,.stats span,.report-kpi strong,.report-kpi span) {color:#f1fbfd!important;}
html body :is(.food-photo,.cart-thumb,.photo-fallback,.fv-cust-shortcut-icon,.fv-cust-stat-icon,
  .fv-cust-hero-symbol,.fv-inbox-item-icon) {background:#294851!important;color:#d6f4f8!important;}
html body :is(.food-category,.fv-mini a,.small-link,.back-link) {color:#a2ecf7!important;}
html body :is(.food-bottom strong,.price,.pay-total,.fv-cust-amount) {color:#f7fbff!important;}
html body :is(.cart-item,.bill-row,.category-row,.product-row) {border-color:#506c77!important;}
html body .bill-row.total {color:#f6fdff!important;border-color:#6c8d93!important;}
html body .empty-state {background:#1b343e!important;color:#d9eff3!important;border-color:#6e949d!important;}
html body .site-footer {background:#0e2029!important;color:#c0d6da!important;border-color:#4e6872!important;}

/* Tables: row colors AND cell text to avoid pale-on-pale stripes. */
html body :is(table,.fv-cust-table,.fv28-orders-table,.fv30-table,.fv32-table) {
  background:#1b343e!important;color:#effafc!important;
}
html body :is(table thead,table thead tr,table thead th) {background:#2a4a55!important;color:#f8feff!important;}
html body table tbody tr {background:#1b343e!important;color:#ecf8fb!important;}
html body table tbody tr:nth-child(even) {background:#25434d!important;}
html body table tbody tr:hover {background:#315561!important;}
html body table tbody td {background:transparent!important;color:#ecf8fb!important;border-color:#547480!important;}
html body table :is(td,th) :is(.muted,small,.tiny) {color:#cfdee4!important;}
html body :is(.fv-cust-table th,.fv-cust-table td) {border-color:#587781!important;}

/* Form labels, text boxes, dropdowns, placeholders, checkboxes. */
html body :is(label,legend,.dv-label,.form-field label,.filter-form label,.fv32-form label,
  .fv-design-section label,.fv29-menu label,.fv30-details label) {color:#f0f9fb!important;opacity:1!important;}
html body :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]),
  textarea,select,.dv-input) {
  background:#102630!important;color:#f4fcff!important;border:1px solid #66838b!important;
  caret-color:#d7faff!important;
}
html body :is(input,textarea)::placeholder {color:#a9c2cc!important;opacity:1!important;}
html body :is(select option,optgroup) {background:#102630!important;color:#f4fcff!important;}
html body :is(input,textarea,select):disabled {opacity:.72!important;}
html body input:-webkit-autofill {
  -webkit-text-fill-color:#f4fcff!important;
  -webkit-box-shadow:0 0 0 1000px #102630 inset!important;
}
html body :is(.fv30-outline,.fv29-step,.fv-inline-category-box,.fv-current-logo,
  .fv-favorite-btn,.fv-mini button) {
  background:#27454e!important;color:#f3fbfe!important;border-color:#67828a!important;
}

/* Primary buttons: sufficiently dark fill for readable white labels.
   Danger buttons are deliberately excluded and retain danger styling. */
html body :is(.btn:not(.btn-outline):not(.btn-danger):not(.btn-dark),
  button.btn:not(.btn-outline):not(.btn-danger):not(.btn-dark),
  .link-btn,.dv-btn:not(.secondary),.fv56-order-btn,.fv56-detail-add,
  .fv-action,.pay-btn,.fv-cust-primary,.fv71-sticky-submit,.fv71-track-btn,
  .fv71-floating-action > b) {
  background:#17647a!important;color:#fff!important;border-color:#3b8393!important;
}
html body :is(.btn:not(.btn-outline):not(.btn-danger):not(.btn-dark),
  .link-btn,.dv-btn:not(.secondary),.fv56-order-btn,.fv56-detail-add,
  .fv-action,.pay-btn,.fv-cust-primary,.fv71-sticky-submit,.fv71-track-btn,
  .fv71-floating-action > b):hover {background:#1b768e!important;color:#fff!important;}
html body :is(.btn-danger,.fv-delete-confirm,.fv-delete-disclosure>summary) {
  color:#ffe4e8!important;background:#55242d!important;border-color:#b96574!important;
}
html body .fv-delete-form {background:#34272d!important;color:#fff1f3!important;border-color:#966477!important;}
html body .fv-delete-form :is(p,label) {color:#ffe3e8!important;}

/* Statuses and notices: keep warnings distinct and legible. */
html body :is(.notice-good,.dv-notice,.fv71-status-delivered,.fv-cust-status--completed) {
  background:#174635!important;color:#d2ffe4!important;border-color:#398963!important;
}
html body :is(.notice-bad,.dv-error,.fv71-status-cancelled,.fv-cust-status--cancelled) {
  background:#552a33!important;color:#ffe2e8!important;border-color:#af6375!important;
}
html body :is(.status-pill,.dv-pill,.fv71-status-out_for_delivery,.fv-cust-status--progress) {
  background:#1a4e65!important;color:#d1f3ff!important;border-color:#4c91a6!important;
}
html body :is(.fv71-status-preparing,.fv-cust-status--pending) {
  background:#553c1f!important;color:#ffe5b1!important;border-color:#9b7243!important;
}
html body :is(.notice-good,.notice-bad,.status-pill,.fv71-status-delivered,
  .fv71-status-cancelled,.fv71-status-preparing,.fv71-status-out_for_delivery) :is(strong,b,span) {
  color:inherit!important;
}

/* Keep receipt previews legible on their intentionally white paper surface.
   Receipt printing is unaffected because this entire patch is screen-only. */
html body.receipt-page .receipt-sheet {background:#fff!important;color:#183342!important;}
html body.receipt-page .receipt-sheet :is(h1,h2,h3,h4,p,span,small,strong,b,td,th) {color:#183342!important;}
html body.receipt-page .receipt-sheet :is(thead,thead tr,thead th) {background:#eaf4f7!important;color:#183342!important;}
html body.receipt-page .receipt-sheet :is(tbody tr,tbody tr:nth-child(even),tbody td) {background:#fff!important;color:#183342!important;}
html body.receipt-page .receipt-sheet .receipt-warning {background:#fff0f2!important;color:#8c293a!important;}
html body.receipt-page .receipt-sheet .receipt-thanks {color:#215a65!important;}

/* Protect live Website Design preview: it demonstrates a separate light/dark palette. */
html body .fv-design-preview:not(.fv-preview-dark) {
  background:#fff!important;color:#20383f!important;
}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-top {background:#fff!important;}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-top span {color:#4c6468!important;}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-hero {
  background:linear-gradient(125deg,#e7fbf5,#fff5f3)!important;
}
html body .fv-design-preview:not(.fv-preview-dark) .fv-design-preview-hero :is(h1,h2,h3,p) {color:#23434b!important;}
html body .fv-design-preview.fv-preview-dark .fv-design-preview-hero {
  background:linear-gradient(125deg,#1b343d,#2e2937)!important;
}
html body .fv-design-preview.fv-preview-dark .fv-design-preview-hero :is(h1,h2,h3,p) {color:#f2f9fc!important;}
html body .fv-design-preview .fv-preview-button {color:#fff!important;}
/* The typography studio has its own live light-colour preview. */
html body .fv52-typography-preview :is(h1,h2,h3,p) {color:inherit!important;}

html body :is(.fv71-chip,.fv71-bottom-nav,.fv71-floating-action,.fv71-order-card,.fv71-tracking) {
  border-color:#55757e!important;
}
html body .fv71-bottom-nav a {color:#d9ebf1!important;}
html body .fv71-nav-count {color:#fff!important;}
html body .fv71-floating-action :is(strong,b) {color:#f4fbfd!important;}
html body .fv71-categories .fv71-chip.is-active {background:#17647a!important;color:#fff!important;}
html body .fv71-categories .fv71-chip:not(.is-active) {background:#24414a!important;color:#e7f8fa!important;}
@media (max-width:700px) {
  html body .fv71-bottom-nav {background:#142c36!important;}
  html body .fv-mobile-shortcuts {background:#142c36!important;}
}
} /* end screen */

