/* A-Game r3 mobile polish — layout/chrome only; no price/copy/photo changes */
:root{
  --sat:env(safe-area-inset-top,0px);
  --sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px);
  --sar:env(safe-area-inset-right,0px);
}
html{hanging-punctuation:first allow-end last;text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{overflow-x:clip}
/* Sticky header clears the notch; keep brand row height via --header */
.site-header{
  top:0;
  padding-top:var(--sat);
  padding-left:max(18px, var(--sal));
  padding-right:max(18px, var(--sar));
  min-height:calc(var(--header) + var(--sat));
  height:auto;
  box-sizing:border-box;
}
@media (min-width:960px){
  .site-header{padding-left:max(40px, var(--sal));padding-right:max(40px, var(--sar))}
}
/* Language toggle: full 44×44 tap */
.lang-switch{
  min-width:44px !important;
  min-height:44px !important;
  padding:0 10px;
  display:inline-grid;
  place-items:center;
}
/* Footer links: readable tap rows without redesigning the footer */
.site-footer .footer-grid a,
.site-footer .footer-base a,
.site-footer .footer-invite .text-link{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  padding-block:10px;
}
.site-footer .wordmark{min-height:44px}
/* Homepage guest number already large; keep numeric keyboard friendly */
#party-guests{
  font-size:max(16px, min(3.5rem, 15vw)) !important;
}
/* Planner: prevent iOS focus-zoom on any text-like controls; ranges stay 16px for consistency */
.planner-page #guests,
.planner-page #ddRange,
.planner-page input[type=number],
.planner-page input[type=text],
.planner-page input[type=email],
.planner-page input[type=tel],
.planner-page textarea,
.planner-page select{
  font-size:16px !important;
}
/* Align planner sticky scene under cinematic header + notch */
.planner-page{
  --hdrH:calc(var(--header, 80px) + var(--sat));
  --safe:var(--sab);
}
.planner-page .scn{
  top:calc(var(--hdrH) + 12px) !important;
}
/* Prefer dynamic viewport units where the builder still used 100vh */
.planner-page .sheet{
  max-height:calc(100dvh - 24px - var(--sab)) !important;
}
.planner-page .lbi img{
  max-height:calc(100dvh - 160px - var(--sab)) !important;
}
/* Quote sheet / tray already use --safe; tighten left/right insets on notched devices */
.planner-page .tray{
  left:max(8px, var(--sal)) !important;
  right:max(8px, var(--sar)) !important;
}
.planner-page .bar{
  padding-left:max(12px, var(--sal));
  padding-right:max(12px, var(--sar));
}
/* Home dock already has bottom safe-area; add side insets */
.home-dock{
  left:max(16px, var(--sal)) !important;
  right:max(16px, var(--sar)) !important;
}
/* Mobile menu fills the screen including safe areas */
.site-menu{
  padding-top:max(18px, var(--sat));
  padding-bottom:max(18px, var(--sab));
  padding-left:max(18px, var(--sal));
  padding-right:max(18px, var(--sar));
}
/* Reduce scroll jank under fixed chrome on iOS */
.planner-page .ctl2,
.planner-page #build{
  overscroll-behavior:contain;
}
/* When quote sheet is open, lock background scroll (class toggled if present; also dialog[open]) */
html.is-lock, html.is-lock body, body.is-open,
body.sheet-open,
body:has(.sheet.open),
body:has(dialog.sheet[open]),
body:has(.tray.open){
  overflow:hidden;
  touch-action:none;
}
/* Reduced motion: trust existing prefers-reduced-motion rules; reinforce for polish animations */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .home-dock,.planner-page .dock,.planner-page .tray,.planner-page .bar{
    transition:none !important;
  }
}

/* Builder already toggles these when the quote sheet / item sheet is open */
html.is-lock, html.is-lock body, body.is-open{
  overflow:hidden !important;
  overscroll-behavior:none;
  touch-action:none;
  height:100%;
}

/* Rentals catalog: title buttons & filters need 44px taps on phones */
.product-info h2 button,
.product-line h2 button,
button[data-product]{
  min-height:44px;
  padding-block:10px;
  text-align:left;
}
.filter-bar button,
.filter-bar [role=button]{
  min-height:44px;
  padding:10px 14px;
}
.desktop-nav a{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  padding-inline:8px;
}


/* r3.1 clip guard: prevent left-edge clipping from 100vw / scaled heroes / safe-area padding mismatches */
html, body{
  max-width:100%;
  overflow-x:clip;
}
body{position:relative}
.site-header, .site-footer, main, .hero, .home-hero, .home-dock, .planner-page, .entry, .bld2, .sheet, .tray, .bar{
  max-width:100%;
  box-sizing:border-box;
}
/* Prefer % over 100vw for horizontal padding calcs that caused SE left-clip */
.album, .album-track, .hero-stage, .home-art{
  max-width:100%;
}
img, picture, video, canvas, svg{
  max-width:100%;
}


/* hero img overflow clamp — scaled hero photos were spilling past viewport (real left/right clip on home) */
.hero img, .hero-stage img, .home-hero img, .hero picture img, .album img, .album-photo img, .album-photo-1 img{
  max-width:100%;
  height:auto;
}
.hero, .hero-stage, .home-hero, .album, .album-track, .album-photo, .album-photo-1{
  overflow:hidden;
  max-width:100%;
}
/* Neutralize horizontal spill from scale transforms on hero art */
@media (max-width:600px){
  .hero img, .album-photo img, .album-photo-1 img{
    transform:none !important;
  }
}
