/* OnlySatvik app shell (v2.9.116)
 * Site-wide app behaviour on phone/tablet (the owner's standing
 * rule: the site should act and behave like an app on mobile and
 * tablet). Loaded last so these rules win: instant touch response,
 * press feedback, no iOS focus-zoom, 44px thumb targets, safe-area
 * aware floating elements, background scroll lock (with
 * os-app-shell.js) and a standalone (home-screen) treatment.
 * Desktop keeps its own behaviour — every layout rule here is
 * scoped to <=1100px or to touch/standalone contexts. */

/* v2.9.79 — THE FLOATING-BAR FIX. The base skin wraps the whole
   site in .sb-app{ overflow:hidden }. An overflow:hidden ancestor
   is a scroll container, so every position:sticky inside it is
   silently disabled — the menu category bar (and the desktop
   rail, and the search card before it) computed as sticky but
   scrolled away with the page; reproduced on the real staging
   menu page: scrolled 1600px, the bar sat at top:-1291px.
   overflow:clip keeps the exact same visual clipping (the skin
   only wants sideways bleed contained) WITHOUT creating a
   scroll box, so sticky works again: same test, the bar parks
   exactly 6px under the header frame and the rail at its 178px. */
.sb-app {
	overflow: clip;
}

/* Instant, clean touch response: no grey tap flash, and
   touch-action:manipulation removes the double-tap zoom delay on
   the controls people actually tap. */
a, button, input, select, textarea, summary, label,
.osd-chip, .os-menu-chip, .osd-step, .osd-add {
	-webkit-tap-highlight-color: transparent;
}
button, [role="button"], .osd-chip, .os-menu-chip, .osd-step,
.osd-add, .osco-seg-btn, .osd-fav {
	touch-action: manipulation;
}

/* Press feedback on touch devices — the control acknowledges the
   tap the way an app button does. */
@media (hover: none) {
	.osd-add:active, .os-menu-chip:active, .osd-chip:active,
	.osco-seg-btn:active, .osd-service-btn:active {
		transform: scale(.97);
	}
}

/* Background scroll lock while a sheet/panel is open (cart drawer,
   header search sheet, mobile menu, mini cart, info bar). The
   os-app-shell.js sync adds .os-scroll-locked to <html>.
   v2.9.107: the lock must be overflow:clip, NEVER overflow:hidden.
   overflow:hidden on the root turns <html> into a scroll container,
   which silently un-sticks the sticky header frame — and the mobile
   menu / search sheets are anchored to that frame (its backdrop-
   filter is their fixed-position containing block), so the moment
   the lock engaged on a scrolled page the frame AND the just-opened
   sheet slid off the top of the screen together: the menu "would
   not open", the header bar "disappeared" and the page sat frozen
   (owner report 2026-11-05; reproduced in the burgerbug rig —
   frame top 0 -> -1800 on tap at scroll 1800, sheet at -1653).
   overflow:clip creates no scroll box (the same principle as the
   v2.9.79 .sb-app fix): the frame stays stuck, the sheet parks
   under it, and wheel/touch scrolling stays locked (rig-verified).
   A browser without overflow:clip support skips the lock — the
   sheets still open, the page behind may scroll. */
html.os-scroll-locked, html.os-scroll-locked body {
	overflow: clip !important;
}
/* …and a panel's own scrolling never chains into the page. */
#os-cart-drawer-body, nav .sb-navigation.sb-navigation-default {
	overscroll-behavior: contain;
}

/* Floating elements respect the home-indicator safe area. */
.os-toast { bottom: calc(24px + env(safe-area-inset-bottom)); }
.os-setaside--pill { bottom: calc(86px + env(safe-area-inset-bottom)); }

/* Launched from the home screen: the notch/status area above the
   header takes the brand green instead of showing page white. */
body.os-standalone .sb-top-bar-frame {
	padding-top: env(safe-area-inset-top);
	background-color: #2c9440;
}

@media (max-width: 1100px) {
	/* No iOS focus zoom: Safari zooms the page whenever a focused
	   text-entry control renders under 16px. Checkout fields were
	   already pinned; this covers the rest (menu search, ZIP
	   checks, dish option selects, coupon, header search sheet). */
	input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="hidden"]):not([type="file"]),
	select, textarea {
		font-size: 16px !important;
	}
	/* Thumb targets: nothing tappable under 44px tall on the
	   ordering surfaces. */
	.os-menu-chip { min-height: 44px; }
	.osd-chip { min-height: 44px; }
	.osd-fav { width: 44px; height: 44px; }
	.osd-step { width: 42px; height: 44px; }
	.os-menu-toolbar .os-plan-check { height: 44px; }
	.os-menu-toolbar .os-plan-zipwrap input { height: 44px; }
	.osd-attr-select, .os-zipcheck-row input { min-height: 44px; }
}

/* Respect a system reduced-motion setting, like an app does. */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
