/*
 * Frozen-contract guard against parent-theme / Elementor-kit collisions. Loaded at priority 100
 * so it wins. Not a design change — it re-asserts the mockup's own values against overrides that
 * would otherwise leak in. Collisions handled (see also guard 5 at the foot of this file):
 *
 * 1. Chrome width — our chrome reuses the class names .site-header / .site-footer, which Hello
 *    Elementor also styles (clamping them to its 1140px content width). Restore full-bleed.
 * 2. Typography — Elementor's Global Kit applies a system font stack + 1.5 line-height to <body>
 *    via its .elementor-kit-N class (higher specificity than the frozen `body{}` rule), so the page
 *    rendered in -apple-system instead of Vazirmatn. Re-assert the frozen font + line-heights.
 */

/* 0) The frozen design forbids horizontal scroll; the WP/Elementor document wrapper can introduce a
 *    few px of document-level overflow that body alone can't clip. Enforce it at the root so no page
 *    scrolls sideways on mobile — but use `clip`, NOT `hidden`: `overflow-x:hidden` forces
 *    `overflow-y:auto`, turning <html> into a scroll container, which breaks `position:sticky`
 *    everywhere (the pinned scroll-scrub hero, sticky product gallery, sticky compare header).
 *    `overflow-x:clip` clips horizontally without creating a scroll container, so sticky keeps working.
 *    `hidden` stays as a fallback for browsers without `overflow:clip` (Safari < 16). */
html {
  overflow-x: hidden;
  overflow-x: clip;
}

/* 1) Chrome full-bleed */
body .site-header,
body .site-footer {
  max-width: none !important;
  width: auto !important;
  margin-inline: 0 !important;
}

.site-header {
  padding-block: 0;
}

.site-footer {
  padding-block: var(--space-16) var(--space-8);
}

/* 2) Frozen typography — the kit applies a system font + 1.5 line-height to <body> via its
 *    .elementor-kit-N class (higher specificity than `body{}`), so only these two need !important;
 *    element margins/line-heights are handled by frozen load-order (see enqueue.php). */
body {
  font-family: var(--font-sans) !important;
  line-height: 1.6 !important;
}

/* 3) Frozen margin model — Hello Elementor's reset adds block margins to <p> and <h1..h6> via plain
 *    element selectors that load after the frozen CSS. Re-assert margin:0; the frozen SPECIFIC rules
 *    (.eyebrow, .brand-card p, .lead …) keep their margins via higher specificity. */
p {
  margin-block: 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-block: 0;
}

/* 4) Asset Binding Rule — product featured image inside the frozen .prod card media. */
.prod .media img.pimg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 5) Buttons - hello-elementor's reset.css button skin
 *    ([type=button],[type=submit],button{border:1px solid #c36;border-radius:3px;padding:.5rem 1rem}
 *    plus a :hover/:focus fill) out-orders the frozen `button{border:0;background:none;color:inherit}`
 *    base rule, which ties it at (0,0,1) and loses. That guard canNOT live in this file: it must sit
 *    BETWEEN the reset and the component stylesheets, and chrome-fix.css is enqueued at priority 100,
 *    which lands it AFTER mirani-finder.css and mirani-hero-slider.css. From here its typed-button arm
 *    would out-order those components and strip their real styling (measured: hero-slider dots collapse
 *    40x10 -> 40x2, .mi-hs__nav loses its gold fill, .mi-finder__clear loses its pill + background).
 *    It therefore lives in novamira-sandbox/mirani-button-reset.css, enqueued at priority 11 - directly
 *    after hello's reset (default 10) and before every component sheet. See the header comment there
 *    for the full specificity analysis. Live since 2026-07-21 (MIRANI_BUTTON_RESET_LIVE). */
