/* =============================================================================
   L3 · vnm-placement.css — PLACEMENT AND MEASURE ONLY.
   =============================================================================

   SCOPE DISCIPLINE (contract rule 3). Every selector here is scoped to
   `.vnm-home-canvas` or to `.vnm-wpb` — the WPBakery canvas class the child
   theme adds to WPBakery-authored pages. Nothing here is a bare element or
   utility selector, because this file is bundled globally and a page-level rule
   bound to `.container` or `.vc_row` alone would hit every page on the site.

   TOKEN DISCIPLINE (contract rule: one copy only). This file declares ZERO
   colours and ZERO font stacks. The one gradient it paints is consumed as
   `var(--wp--preset--gradient--decode-band)`, which WordPress emits from L2's
   `settings.color.gradients`. If that preset is ever renamed, this rule paints
   nothing rather than painting a stale second copy of the brand.

   WHAT IT FIXES, ALL MEASURED ON DEV 2026-08-11 (see REPORT.md §4)
   ---------------------------------------------------------------
   Under `arneiron`, WPBakery markup still renders — `[vc_*]` count 0 raw on
   every page, because js_composer is a plugin — but the theme-added row
   parameters are gone, because `solutech/vc_templates/vc_row.php` and its
   `vc_add_params()` registrations are `get_template_directory()`-conditional.
   Measured on the homepage, BEFORE -> AFTER:

       pix-padding-* / pix-top-* / pix-bottom-*   17 -> 0
       span.vc_row-overlay                         2 -> 0
       .pix_gradient_colors_*                      2 -> 0
       linear-gradient occurrences                29 -> 27
       .container (Bootstrap, from solutech)      styled -> unstyled

   So two separate things break: the ROW RHYTHM (padding params) and the BAND
   GRADIENT (the overlay span). ============================================= */


/* -----------------------------------------------------------------------------
   1. Measure. solutech's `.container` is Bootstrap's, shipped by the theme, and
   dies with it — leaving every WPBakery row full-bleed. `d4-design.md` A6 counts
   an unrecorded line-length change as a regression, and the measured container
   is 980 px. L2 sets `settings.layout.contentSize: 980px`, so we consume that
   value rather than restating it.
   -------------------------------------------------------------------------- */
.vnm-home-canvas .container,
.vnm-wpb .container {
	max-width: var(--wp--style--global--content-size, 980px);
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--15, 15px);
	width: 100%;
	box-sizing: border-box;
}

/* Rows that were NOT full-bleed keep the measured measure. Rows that carry
   js_composer's own `vc_row-full-width` (which SURVIVES — measured 1 -> 1 on the
   homepage) are left alone so they can still span the viewport. */
.vnm-home-canvas .vc_row:not(.vc_row-full-width):not(.vc_inner),
.vnm-wpb .vc_row:not(.vc_row-full-width):not(.vc_inner) {
	max-width: var(--wp--style--global--content-size, 980px);
	margin-inline: auto;
}


/* -----------------------------------------------------------------------------
   2. Row rhythm. `pix_padding_top`/`pix_padding_bottom` were theme params that
   emitted `pix-padding-top-{s,m,l,xl}` classes. The CLASSES are gone from the
   markup entirely, so there is nothing left to restyle — this block instead
   restores a default vertical rhythm on the rows themselves, using L2's measured
   multiples-of-5 spacing scale. It is deliberately a floor, not a
   reconstruction: the per-row values are unrecoverable from the rendered page.
   -------------------------------------------------------------------------- */
.vnm-home-canvas > .wp-block-post-content > .vc_row,
.vnm-wpb > .wp-block-post-content > .vc_row {
	padding-block: var(--wp--preset--spacing--40, 40px);
}

/* The hero row must not inherit that padding — it is a full-bleed 1200 px
   canvas and any block padding shows as a band above it. */
.vnm-home-canvas > .wp-block-post-content > .vc_row:first-child {
	padding-block: 0;
}


/* -----------------------------------------------------------------------------
   3. ★ The "Decode Philosophy" band gradient — THE ONE THING CSS ALONE CANNOT
   FULLY RESTORE, stated plainly rather than papered over.

   solutech painted this gradient on `<span class="vc_row-overlay
   pix_gradient_colors_1590046756">`, an element INJECTED BY THE THEME'S OWN
   `vc_templates/vc_row.php`. Under arneiron that span is not in the DOM at all
   (measured 2 -> 0), so no rule can select it. The gradient is therefore
   re-applied to the row itself via a pseudo-element, which reproduces the paint
   but NOT the original stacking (solutech's overlay sat above the row background
   and below its content; this sits in the same place, but if the row also has
   `vc_row-has-fill` the fill now paints under the gradient rather than beside
   it).

   This is a re-implementation, not a transport. Flagged as such. If pixel
   fidelity on this band matters, the honest fix is L1's block or a pattern that
   owns the band, not this rule.
   -------------------------------------------------------------------------- */
.vnm-home-canvas .vc_row.vnm-decode-band {
	position: relative;
	isolation: isolate;
}

.vnm-home-canvas .vc_row.vnm-decode-band::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--wp--preset--gradient--decode-band);
	pointer-events: none;
}

/* NOTE: `.vnm-decode-band` is NOT emitted by anything yet. It has to be added to
   page 1952's row, either as a `css` class in the WPBakery row or by L1's block
   replacing the band outright. Until then this rule is INERT BY DESIGN — it is
   here so the gradient has one home, not so it can claim to be applied. A
   selector that matches nothing is honest; a selector bound to a class the theme
   used to emit would be a lamp. */


/* -----------------------------------------------------------------------------
   4. The visually-hidden front-page <h1> added by templates/front-page.html.
   `.screen-reader-text` is supplied by core's block-library `common.css`, which
   is enqueued on the front end, so this only guards against it being absent.
   -------------------------------------------------------------------------- */
.vnm-home-canvas .vnm-a11y-title.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	margin: -1px;
	padding: 0;
	border: 0;
}
