@charset "UTF-8";
/* ============================================================================
   ИнфраГео / InfraGeo — pages.css
   Owned by phase 3: /uslugi/, /kontakti/, /poveritelnost/
   Built: 2026-07-25

   WHY THIS FILE EXISTS
   `css/site.css` is the shared contract and phase 3 does NOT edit it (the
   dossier builder is reading it concurrently). Everything below is a gap
   site.css genuinely does not cover — three small blocks, nothing more.
   Load order is always: site.css first, then this file.

   THE SAME RULES APPLY HERE
   1. No `transition: all`, ever. Named properties only.
   2. No `hyphens: auto`, no `overflow-wrap: anywhere`, no `word-break`.
   3. Wrapping is set ONCE, globally, in site.css § 2. It is not repeated here.
   4. THE CONTAINER IS THE ONE MEASURE. Nothing here puts a `ch` measure on a
      wrapper or on a heading. The two `--measure` uses below sit on a <label>
      and are body text, which is exactly where the measure belongs.
   5. Motion: `--ease`, 90 / 160 / 240ms, no overshoot. Nothing here animates.
   ========================================================================== */

/* ==========================================================================
   § A  .split — two tracks that FILL the frame

   Reason it exists: `.form` carries `max-width: 34rem` (site.css § 12). Alone
   inside the 1180px frame that is a constrained, NON-centred, left-hugging
   block with a ~600px empty right gutter — the exact shape decision 1 of
   BUILD-NOTES forbids and `qa_layout_measure.py` fails the build on. Pairing
   the form with the contact rail fills the column instead of gutter-ing it.

   5/7 at >=64rem: the same axis and the same breakpoint as `.hero__grid`, so
   the site keeps ONE grid idiom rather than growing a second one.
   ========================================================================== */

.split {
  display: grid;
  gap: clamp(var(--space-8), 4vw, var(--space-12));
  grid-template-columns: 1fr;
  align-items: start;
}
.split > * { min-width: 0; }          /* the phantom-column guard, as in § 2 */

@media (min-width: 64rem) {
  .split { grid-template-columns: 5fr 7fr; }
}

/* ==========================================================================
   § B  .check — the consent row

   A brand whose control height is 48px because the hands holding the phone are
   in gloves cannot ship a 13px default checkbox. Grid rather than an inline
   input, so a two-line Bulgarian consent label wraps BESIDE the box and never
   underneath it.
   ========================================================================== */

.check {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
}
.check input[type="checkbox"] {
  width: 1.5rem;
  height: 1.5rem;
  margin: 0;
  accent-color: var(--color-primary);
}
.check label {
  font-size: var(--fs-small);
  line-height: var(--leading-normal);
  color: var(--color-ink);
  max-width: var(--measure);            /* body text, so the measure belongs here */
}

/* ==========================================================================
   § C  .doc — the legal-document rhythm on /poveritelnost/

   Ten numbered chapters, each an <h2> followed by a `.prose` block. This sets
   the vertical rhythm between them so the page needs neither a bespoke margin
   per chapter nor ten repeated `.mt-12` utilities. The heading itself is
   untouched: it still carries `max-width: none` from site.css § 2 and fills
   its column.
   ========================================================================== */

.doc > h2 { margin-top: var(--space-12); }
.doc > h2:first-child { margin-top: 0; }
.doc > .prose { margin-top: var(--space-6); }

/* ==========================================================================
   § D  PROSE LISTS — NOT HERE. They live in site.css § 4.

   REVIEW-FINDINGS M9 proposed this file for the rule that gives markers, an
   indent and item spacing back to lists in running prose. It went into
   site.css § 4 instead, immediately under the `.prose` rules and eleven lines
   from the `ul, ol { list-style: none }` reset in § 2 that made the fix
   necessary. Two reasons, both about the fix surviving:

   1. The reset and its exception must be readable together. Split across two
      files they drift, and the failure mode is silent — a legal list that
      quietly stops being a list.
   2. This file is loaded by three pages. site.css is loaded by five. Today
      every prose list is on /poveritelnost/, which loads both, so the two
      placements behave identically; the moment the dossier or the home page
      grows one, only the site.css placement covers it.

   The rules are `.prose ul` / `.prose ol` / `.prose ul ul` / `.prose
   li::marker` / `.prose li + li`. Nothing here overrides or repeats them.
   ========================================================================== */
