/* ==========================================================================
   urb-fixes.css — mobile hygiene + THE LANDSCAPE PHONES BLOCK. Loads LAST.
   Owner: the design reviewer. Hygiene + landscape mechanics ported as a unit
   from whatajazz waj-fixes.css (scar #24 family), classes translated to urb.
   Three views before shipping ANY change here: desktop · portrait phone ·
   landscape phone (~812–932 × 375–430). 2026-08-16.
   ========================================================================== */

/* ---- global hygiene (every family site needs these) ----------------------- */

/* stray horizontal overflow guard — clip (not hidden) keeps sticky working */
html { overflow-x: clip; }

/* iOS Safari landscape font-boost: trust our own responsive type */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

/* kill horizontal rubber-banding; off-screen fixed panels are visibility:hidden
   in components (iOS counts them as pannable area otherwise) */
html, body { overscroll-behavior-x: none; }

/* tap highlight — quiet */
body.theme--urb a, body.theme--urb button { -webkit-tap-highlight-color: rgba(102, 43, 130, .15); }

/* scroll lock while the drawer is open (JS toggles on <html>) */
html.urb-scroll-locked { overflow: hidden; }
html.urb-scroll-locked body { overflow: hidden; }

/* iOS zoom guard: EVERY text input ≥16px on phones */
@media (max-width: 640px) {
  body.theme--urb input[type="text"],
  body.theme--urb input[type="email"],
  body.theme--urb input[type="tel"],
  body.theme--urb input[type="search"],
  body.theme--urb textarea,
  body.theme--urb select {
    font-size: 16px !important;
  }
}

/* reduced motion */
@media (prefers-reduced-motion: reduce) {
  body.theme--urb *, body.theme--urb *::before, body.theme--urb *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   LANDSCAPE PHONES — the "middle band": wide but SHORT viewports (a phone
   turned sideways; Display-Zoom iPhones report ~812×375). Width-only
   breakpoints never catch this. Compact the header + drawer; heights gate
   on min-height/orientation, never width alone. Ported as a unit from
   whatajazz (Arnas-approved recipe, 2026-07-24); counter-intuitive parts
   kept: html one notch DOWN but headings capped relative (vh), fixed-px
   outliers brought down WITH body-prefixed selectors so ties can't lose
   on source order.
   ========================================================================== */
@media (max-width: 960px) and (max-height: 520px) {
  html { font-size: 14.5px; }

  body.theme--urb h1 { font-size: clamp(1.9rem, 8.5vh, 2.6rem) !important; }
  body.theme--urb h2 { font-size: clamp(1.3rem, 6vh, 1.8rem) !important; }
  body.theme--urb .urb-hero__date--text { font-size: clamp(2.2rem, 14vh, 3.4rem); }
  body.theme--urb .urb-tagline__text { font-size: 1.15rem; }
  body.theme--urb .urb-whisper { font-size: 12px; }
  body.theme--urb .urb-arrow-link { font-size: 12px !important; }

  /* hero must not eat two screens sideways */
  .urb-hero--flagship { min-height: 100svh; }
  .urb-hero--small { min-height: 180px; }
  /* raised to (0,2,0) on 2026-08-21: urb-components.css now sets the small
     hero's content padding at (0,2,0), so the bare class here would have
     silently lost and a sideways phone would have kept the 30px desktop air
     inside a 180px band. Same number, higher specificity. */
  .urb-hero--small .urb-hero__content { padding-top: 34px; padding-bottom: 34px; }
  .urb-hero--flagship .urb-hero__content { padding-top: 34px; padding-bottom: 34px; }

  /* compact header */
  .urb-header__inner { min-height: 54px; gap: 12px; }
  body.theme--urb .urb-logo__img { height: 26px; }
  body.theme--urb .urb-header__cta { padding: 8px 14px !important; font-size: 11px !important; }

  /* the drawer flows as ONE scroll column with room sideways */
  .urb-drawer { width: min(70vw, 430px); }
  .urb-drawer__scroll { padding: 12px 18px 16px; }
  body.theme--urb .urb-drawer__logo-img { height: 24px; }
  .urb-drawer__list a { font-size: 16px; padding: 8px 0; }
  /* DEAD RULE, FIXED 2026-08-22. This read `.urb-drawer__cta .urb-btn` — a
     DESCENDANT selector — but `.urb-drawer__cta` was never a wrapper: it sits
     ON the anchor, `<a class="urb-btn urb-btn--invert urb-drawer__cta">`. So it
     matched nothing and the drawer's CTA kept its full 18px/36px padding on a
     sideways phone, where the panel is ~375px tall. Invisible while there was
     one button; with the pair it would have cost ~40px of a very short panel. */
  body.theme--urb .urb-drawer__ctas .urb-btn { padding: 10px 16px !important; font-size: 11.5px !important; }
  .urb-drawer__lang-list a { font-size: 11px; padding: 3px 5px; }
  .urb-social__link { width: 36px; height: 36px; }
  .urb-social__link svg { width: 15px; height: 15px; }

  /* full-width stacked photos taller than a sideways screen: cap + cover.
     width:100% is LOAD-BEARING (aspect-ratio transfers a capped height back
     to width otherwise — whatajazz measured it live). */
  .urb-card__img, .urb-split__img { width: 100%; max-height: 62vh; aspect-ratio: auto; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   COMPLIANZ — the one rule that is a CORRECTNESS bug, not styling.
   Added 2026-08-22, the day the wizard was run and the cookie policy went live.

   `.cmplz-fmail-domain` is Complianz's ANTI-SPAM DECOY DOMAIN. The plugin
   assembles the contact address around it:

       <span class="cmplz-obfuscate">info@<span class="cmplz-fmail-domain">ex.com</span>lowair.lt</span>

   A harvester reading the DOM sees `info@ex.com`; a human is supposed to see
   `info@lowair.lt` because the decoy is hidden. Ship no rule and the decoy
   prints inline, so the live cookie policy reads:

       El. paštas: info@ex.comlowair.lt          ← measured on urbanessentials.lt

   A compliance page printing a broken contact address is the single worst
   failure these pages have, because the whole point of the address is that
   somebody worried about their data can reach you. **swingparadise.lt has been
   live with exactly this bug** (`welcome@ex.comswingparadise.lt`) since before
   2026-08-04 — this is the family's third encounter with it, so it goes in on
   day one here rather than being discovered later.

   Everything else Complianz needs — the cookies-per-purpose grid, the 600px
   breakpoint, the dropdown chrome — is styling and belongs with the legal-pages
   phase. This one is not styling. It ships now.
   ═══════════════════════════════════════════════════════════════════════════ */
.cmplz-fmail-domain { display: none !important; }
