/*
 * servisas-overrides.css — update-safe CSS for the /servisas/ page ONLY.
 * Enqueued by solidum-landing-overrides.php on is_page( 380 ) (page-id-380),
 * filename-cache-busted like the other sheets. Does NOT load on the landing.
 *
 * ── Consolidated 2026-06-19 (behavior-identical) ─────────────────────────────
 * De-duplicated, grouped into the numbered sections below, every color routed
 * through the :root brand tokens, and UNNEEDED !important pruned. `!important`
 * is now used ONLY where a live competitor is itself !important or inline —
 * verified element-by-element against the live cascade (CDP getMatchedStylesForNode,
 * diag-prune.mjs). Selectors are unchanged from the prior, separately-proven state;
 * the only edits are token routing (identical hex values) and the !important prunes
 * listed under each section. Pruned because the #row-unique-N id scope already
 * out-specifies the only (non-!important) competitor:
 *   §1a panel bg, §3d radio-ul grid/padding/margin/list-style, §5a row padding +
 *   row-internal margin, §5c eyebrow font-size/line-height, §6b divider margin.
 * Kept (each faces an !important / inline competitor): §1b labels, §3b focus ring,
 *   §3d ul display+gap & the pseudo-circle kill & selected-chip color, §3e submit,
 *   §3f errors, §4d tel links, §5a row-inner height, §5c eyebrow letter-spacing,
 *   §5d mobile photo, §6b divider hairline color.
 * ───────────────────────────────────────────────────────────────────────────── */

/* Brand tokens (mirror the landing sheet; this sheet + the landing sheet never
 * load on the same page, so there is no :root collision. footer-overrides.css,
 * which DOES co-load here, defines no tokens). */
:root {
  --solidum-red:        #ff1d25;  /* brand red — accents: focus ring, selected chip, submit, partner phone */
  --solidum-red-hover:  #d10f16;  /* deeper red — the functional form-panel bg + phone hover */
  --solidum-white:      #fff;     /* all panel text on the red fill */

  --servisas-input-border: #d3d9e0; /* idle text-input border (grey) */
  --servisas-ink:          #303133; /* partner name — dark text on the grey list */
  --servisas-hairline:     #d8dde2; /* partner-list divider hairline */
}

/* =========================================================================
 * 1. Red service-request form panel — contrast fix (2026-06-19)
 * -------------------------------------------------------------------------
 * The panel is #row-unique-0 (.vc_row.style-accent-bg.row-container), whose
 * background was the BRIGHT band red #FF3A41 (rgb 255,58,65). On that red the
 * MAX contrast any light text can reach is white at only 3.54:1 — so no light
 * value can clear WCAG-AA 4.5:1 (measured, both engines, both widths). The
 * dark form text was even worse: the helper/description text and the required
 * asterisks rendered slate #6a7585 at ~1.32:1, and the navy labels at ~4.47:1.
 *
 * Fix (per design decision 2026-06-19): darken ONLY this functional form panel
 * to the deeper brand red-hover #D10F16, then make ALL panel text white. White
 * on #D10F16 = ~5.54:1, so every element — eyebrow, labels, asterisks, helper
 * text, time-slot labels, contact block — clears 4.5:1. The landing's bright
 * #FF1D25 / #FF3A41 celebratory bands are deliberately left unchanged; this
 * deeper red is reserved for the legibility-critical form panel.
 *
 * Scope: pinned to #row-unique-0 so it can only ever touch this panel. If
 * Uncode renumbers the row id the rules no-op safely (revert to defaults).
 * NOT touched: the white form INPUTS / textareas (dark text on white — kept
 * readable) and the original blue #0055ba submit button (restyled in §3e).
 * ========================================================================= */

/* 1a. Panel background: bright band red -> deeper brand red-hover.
 *     No !important: the only competitor is the plain `.style-accent-bg{#ff3a41}`
 *     [0,1,0] in style-custom.css; this `#row-unique-0.style-accent-bg` id scope
 *     [1,1,0] out-specifies it (no inline bg on the row — verified live). */
#row-unique-0.style-accent-bg,
#row-unique-0.vc_row.style-accent-bg {
  background-color: var(--solidum-red-hover);
}

/* 1b. All panel text -> white.
 *     The live Additional CSS (#wp-custom-css, loads LATE in wp_head) already
 *     pins this form's text dark via form-id selectors, the strongest being
 *     `#wpforms-1554 .wpforms-field-radio ul li label { color:#1a2330!important }`
 *     at specificity [1,1,3] (governs the time-slot radio labels). So we route
 *     through the confirmed `.wpforms-container-full` ancestor to reach [1,2,x],
 *     which out-specifies [1,1,3] / [1,1,0] regardless of source order. The
 *     competitor IS !important, so this rule must stay !important. (Found with
 *     diag-inline-label.mjs via CDP CSS.getMatchedStylesForNode.) */
#row-unique-0 .wpforms-container-full .wpforms-field-label,        /* labels + legend */
#row-unique-0 .wpforms-container-full .wpforms-field-label-inline, /* time-slot labels */
#row-unique-0 .wpforms-container-full .wpforms-required-label,     /* asterisks (*)   */
#row-unique-0 .wpforms-container-full .wpforms-field-description { /* helper text     */
  color: var(--solidum-white) !important;
}

/* =========================================================================
 * 2. Partner-logo strip — normalize + de-clip (2026-06-19)
 * -------------------------------------------------------------------------
 * The 5 partner logos (Saunier Duval, inVENTer, Heatpex, Solarfocus, Jäspi)
 * at the top of the red panel (#row-unique-0) used to be an Uncode owl-CAROUSEL
 * (#gallery-150707, type="carousel", carousel_sm="4") pointing at OLD,
 * non-normalized files (saunier.png/jaspi.png/Logo-02/inventer.png) with
 * mismatched cap-heights. The owl wrapper's overflow:hidden CLIPPED the 5th
 * logo: on mobile (sm=4 per view, 5 logos) inVENTer was cut at the right edge,
 * and on desktop the stage (595px) overflowed the 558px wrapper.
 *
 * Fix (same treatment as the landing brand strip): the carousel shortcode in
 * page 380 was replaced with a static <div class="servisas-brandstrip"> of the
 * five NORMALIZED landing assets (uploads/2026/06/*-white-balanced.{svg,png},
 * cap-height baked to 30.4% of canvas), laid out as a centered flex strip that
 * WRAPS — so a single uniform max-height equalises optical cap-height across all
 * five and nothing is ever clipped. The panel is only ~558px (desktop) / ~318px
 * (mobile) wide (it's the 1/2-width form column), much narrower than the
 * landing's ~1053px strip, so the logos wrap to two balanced rows at both widths.
 *
 * DEDICATED CLASS (NOT .solidum-brandstrip): the live Additional CSS
 * (#wp-custom-css) carries UN-scoped .solidum-brandstrip wildcards — per-brand
 * fixed heights AND an "F3" @media(<=959px) block with
 * `flex-wrap:nowrap!important; a{flex-shrink:1!important}; img{max-width:60px
 * !important; width:100%!important}` that would force a single shrunk row of
 * uneven logos, plus `:has(.solidum-brandstrip)` padding rules that would shift
 * the form panel. Using `.servisas-brandstrip` sidesteps all of them, so these
 * rules need NO !important (the #row-unique-0 scope + a brand-new class have no
 * competitors). Verified live both engines @1440 & 390: uniform caps (42/36px),
 * 0 clip, identical chromium==webkit (servisas-logos-tune.mjs).
 * Scope pinned to #row-unique-0 so it can only touch this panel.
 * ========================================================================= */
#row-unique-0 .servisas-brandstrip {
  display:         flex;
  flex-wrap:       wrap;             /* wrap to balanced rows — never clip */
  align-items:     center;          /* vertical centering */
  justify-content: center;          /* centered cluster, even gaps */
  gap:             18px 22px;        /* row-gap col-gap */
  padding:         4px 0 0;
  width:           100%;
}
#row-unique-0 .servisas-brandstrip span {
  display:         flex;
  align-items:     center;
  justify-content: center;
  flex:            0 0 auto;         /* natural width, NO shrink → wraps cleanly */
  min-width:       0;
}
#row-unique-0 .servisas-brandstrip img {
  max-height: 42px;                 /* single cap → uniform optical cap-height */
  max-width:  100%;
  width:      auto;
  height:     auto;
  object-fit: contain;
  display:    block;
}
/* Mobile/tablet (<=959px): narrower panel → smaller cap; still wraps to two
   balanced rows ([Saunier+inVENTer] / [Heatpex+Solarfocus+Jäspi]). */
@media (max-width: 959px) {
  #row-unique-0 .servisas-brandstrip      { gap: 16px 18px; padding: 6px 0 2px; }
  #row-unique-0 .servisas-brandstrip img  { max-height: 36px; }
}

/* =========================================================================
 * 3. Service-request form — premium field / radio / button styling (2026-06-19)
 * -------------------------------------------------------------------------
 * The WPForms form (#wpforms-1554) on the red panel. Goal: make it read clean
 * and consistent — subtle input radius + clear focus, even label/field spacing,
 * proper time-slot radios, and a button that matches the site's button system
 * instead of the old clashing blue. PURE styling: no field or logic change.
 *
 * Scope: every rule routes through `#row-unique-0 .wpforms-container-full`, the
 * same [1,2,x] ancestor used by §1 to beat the live Additional-CSS `#wpforms-1554
 * …` selectors (which pin form text/colors at [1,1,x]). `!important` is used
 * ONLY where a competitor is itself !important / inline (the focus border, the
 * grid display + gap, the submit colors, the radio pseudo-control, the selected
 * chip color) — verified live with diag-prune.mjs / servisas-form-tune.mjs.
 *
 * Tap targets: inputs 46px, radio chips 44px, submit 46px — all >= 44px.
 * Revert: delete this §3 (or restore servisas-overrides.backup-20260619-formfix2.css),
 * redeploy + litespeed-purge all + prime /servisas/ and /.
 * ========================================================================= */

/* 3a. White text inputs — consistent radius, >=44px height. (No !important: the
 *     #row-unique-0 id scope beats WPForms' plain input rules.) */
#row-unique-0 .wpforms-container-full input.wpforms-field-medium,
#row-unique-0 .wpforms-container-full input[type="text"],
#row-unique-0 .wpforms-container-full input[type="email"],
#row-unique-0 .wpforms-container-full input[type="tel"],
#row-unique-0 .wpforms-container-full input[type="number"],
#row-unique-0 .wpforms-container-full textarea {
  border: 1px solid var(--servisas-input-border);
  border-radius: 8px;
  padding: 12px 16px;
  min-height: 46px;
  font-size: 14px;
  background-color: var(--solidum-white);
  box-shadow: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
/* 3b. Clear focus ring — grey border -> brand red + white halo (pops on the red
 *     panel). The live form pins a brand-BLUE :focus border with high
 *     specificity AND !important, so this needs !important to win (verified via
 *     the focus crop). Uses --solidum-red, matching the landing/button accents. */
#row-unique-0 .wpforms-container-full input.wpforms-field-medium:focus,
#row-unique-0 .wpforms-container-full input[type="text"]:focus,
#row-unique-0 .wpforms-container-full input[type="email"]:focus,
#row-unique-0 .wpforms-container-full input[type="tel"]:focus,
#row-unique-0 .wpforms-container-full input[type="number"]:focus,
#row-unique-0 .wpforms-container-full textarea:focus {
  border-color: var(--solidum-red) !important;
  box-shadow: 0 0 0 3px rgba(255,255,255,.55) !important;
  outline: none !important;
}

/* 3c. Consistent label / field / description spacing. */
#row-unique-0 .wpforms-container-full .wpforms-field {
  padding: 0;
  margin-bottom: 20px;
}
#row-unique-0 .wpforms-container-full .wpforms-field-label {
  margin-bottom: 8px;
  line-height: 1.3;
}
#row-unique-0 .wpforms-container-full .wpforms-field-description {
  margin-top: 8px;
  line-height: 1.4;
}

/* 3d. Time-slot radios (8:00 / 10:00 / 13:00 / 15:00) — premium segmented chips.
 *     The native control is a custom blue ::before/::after circle whose checked
 *     dot rendered #066aab (the same clashing blue as the old button). It is
 *     HIDDEN and the whole CHIP becomes the selectable target: white-fill /
 *     brand-red text when selected, mirroring the Siųsti button — one unified
 *     white/red system, no blue.
 *
 *     CLICK TARGET (fix 2026-06-19): the <label> is made the FULL-SIZE flex target
 *     (flex:1 + align-self:stretch + min-height = chip height, li padding:0). Since
 *     label[for] toggles its radio, a click ANYWHERE on the pill (incl. the former
 *     padding zone) now selects it — verified functionally with servisas-click-test.mjs
 *     (left-edge / centre / right-edge all toggle, both engines @1440 & 390). The
 *     flex-centred label also TRULY centres the text. The <input> stays in the DOM
 *     and functional but is **sr-only** (visually hidden, still keyboard-focusable).
 *
 *     Layout is a CSS grid so the 4 options never orphan: 4-across on desktop,
 *     2x2 on mobile (so 15:00 pairs with 13:00 instead of wrapping alone — the
 *     original bug). `display:grid` + `gap` need !important because a live rule
 *     (`.page-id-380 .wpforms-field-radio ul`) sets `display:flex!important;
 *     gap:…!important` (proven in diag-prune.mjs); the grid-template-columns /
 *     padding / margin / list-style competitors are plain, so the [1,2,1] id
 *     scope wins those WITHOUT !important. Each chip is >=44px tall. Selected
 *     state uses :has(input:checked) (supported in both target engines; if not,
 *     the input still works — logic intact). */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul {
  display: grid !important;                                   /* beats display:flex !important */
  gap: 10px !important;                                        /* beats gap:4px 20px !important */
  grid-template-columns: repeat(4, minmax(0,1fr));            /* plain — id scope wins */
  padding: 0;
  margin: 0;
  list-style: none;
}
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li {
  position: relative;
  display: flex;
  align-items: stretch;            /* label fills the chip height */
  min-height: 44px;
  margin: 0;
  padding: 0;                      /* no stray padding -> label fills edge-to-edge */
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 8px;
  background: rgba(255,255,255,.06);
  transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
/* input kept in the DOM + functional, but visually hidden (sr-only) */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
  opacity: 0;
}
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li input[type="radio"]::before,
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li input[type="radio"]::after {
  display: none !important;        /* kill the blue custom-radio circle/dot (pseudo set !important) */
}
/* the label is the full-size click target AND centres the text */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li label.wpforms-field-label-inline {
  display: flex;
  flex: 1 1 auto;
  align-self: stretch;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 0;
  font-size: 15px;
  font-weight: 600;
  line-height: 1;
  text-align: center;
  cursor: pointer;
}
/* hover (unselected chips) */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li:hover {
  background: rgba(255,255,255,.14);
  border-color: rgba(255,255,255,.85);
}
/* selected — white fill, brand-red label (mirrors the Siųsti button) */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li:has(input:checked) {
  background: var(--solidum-white);
  border-color: var(--solidum-white);
  box-shadow: 0 2px 8px rgba(0,0,0,.16);
}
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li:has(input:checked) label.wpforms-field-label-inline {
  color: var(--solidum-red) !important;  /* beats §1b's white-on-panel !important for the selected chip */
}
/* keyboard focus ring on the chip */
#row-unique-0 .wpforms-container-full .wpforms-field-radio ul li:has(input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(255,255,255,.6);
}
@media (max-width: 959px) {
  #row-unique-0 .wpforms-container-full .wpforms-field-radio ul {
    grid-template-columns: repeat(2, minmax(0,1fr));  /* 2x2 — no orphan (plain; later in source wins) */
  }
}

/* 3e. Submit button ("Siųsti") — matches the landing "Registruokitės meistro
 *     vizitui" button system. That button is a white pill, 2px white border, with
 *     a hover_fx="outlined" invert (default white-fill -> hover transparent so the
 *     band red shows through, white text). DEFAULT here = white fill, 2px white
 *     border, brand-red text (the Servisas submit intentionally uses red text vs
 *     the landing's dark, per the form's design). HOVER inverts to red fill + white
 *     text, same cubic-bezier easing as the landing button.
 *
 *     IMPORTANT — distinct-on-panel: the landing's hover is transparent (shows its
 *     band red). On this DEEPER panel #D10F16 a transparent fill would blend in, so
 *     the hover uses an EXPLICIT --solidum-red fill (brighter than the panel) plus a
 *     2px white border, keeping the button clearly distinct from the panel (verified
 *     visually, shots/hoverfix-hover-*). The blue bg/colors are set !important
 *     upstream, so these win with the [1,2,x] scope + !important. */
#row-unique-0 .wpforms-container-full button.wpforms-submit,
#row-unique-0 .wpforms-container-full .wpforms-submit {
  background-color: var(--solidum-white) !important;
  color: var(--solidum-red) !important;       /* brand red text (matches landing accents) */
  border: 2px solid var(--solidum-white) !important;
  border-radius: 130px !important;            /* pill, matches the landing button */
  padding: 14px 44px !important;
  min-height: 46px;
  font-size: 14px !important;
  font-weight: 700 !important;
  letter-spacing: .5px !important;            /* matches landing button */
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
  transform: none;
  transition: color .2s cubic-bezier(.785,.135,.15,.86), background-color .2s cubic-bezier(.785,.135,.15,.86), border-color .2s cubic-bezier(.785,.135,.15,.86);
  cursor: pointer;
}
#row-unique-0 .wpforms-container-full button.wpforms-submit:hover,
#row-unique-0 .wpforms-container-full button.wpforms-submit:focus,
#row-unique-0 .wpforms-container-full .wpforms-submit:hover {
  background-color: var(--solidum-red) !important; /* invert to brand red (brighter than panel #D10F16 -> stays distinct) */
  color: var(--solidum-white) !important;
  border-color: var(--solidum-white) !important;   /* white outline delineates the button from the panel */
  box-shadow: 0 4px 14px rgba(0,0,0,.18) !important;
  transform: none !important;
}

/* 3f. Validation / error text — was red (#d63637) on the red panel = INVISIBLE.
 *     WPForms renders required-field messages as <em class="wpforms-error"> and
 *     pins their color !important, so recolor to white !important for high
 *     contrast on the panel (white on #D10F16 = 5.54:1). Verified by triggering
 *     an empty submit (servisas-errors-verify.mjs): every "This field is
 *     required." message reads white/legible, both engines. */
#row-unique-0 .wpforms-container-full .wpforms-error,
#row-unique-0 .wpforms-container-full em.wpforms-error,
#row-unique-0 .wpforms-container-full label.wpforms-error,
#row-unique-0 .wpforms-container-full .wpforms-error-container {
  color: var(--solidum-white) !important;
}

/* =========================================================================
 * 4. "Galimi rezervacijos būdai" — one coherent "how to book" block (2026-06-19)
 * -------------------------------------------------------------------------
 * BEFORE: "Galimi rezervacijos būdai:" ("possible booking methods") was a tiny
 * inline bold label glued to the top of the WPForms form, while the phone/email
 * and working-hours sat as detached lines far BELOW the Siųsti button with no
 * heading — they read as an unrelated contact footer, not "other ways to book".
 * The plural heading promised several options but only a form was visible.
 *
 * AFTER: one intentional block — an umbrella heading, the form as the PRIMARY
 * method, an "arba" (or) divider, then phone/email as the clearly-labelled
 * ALTERNATIVE method, with the opening hours as quiet supporting info set apart
 * by a rule. Light content edit on page 380 (blocks 164989 + 147957) adds the
 * markup hooks (.servisas-book-intro / .servisas-method-label / .servisas-or /
 * .servisas-direct[.sd-row/.sd-label/.sd-value] / .servisas-hours); this styles
 * them. Scoped to #row-unique-0 so it can only ever touch this panel; all panel
 * text is white on the #D10F16 red (§1), and these rules set white explicitly
 * (the old inline white on the contact spans was removed in the content edit).
 * No !important needed except the contact-link color (the theme pins link color
 * with a `.style-accent-bg a[href^="tel:"] {…!important}` rule — proven live).
 * ========================================================================= */

/* 4a. Umbrella heading — introduces the whole block (subordinate to the H1). */
#row-unique-0 .servisas-book-intro {
  margin: 4px 0 18px;
  font-size: 19px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: .2px;
  color: var(--solidum-white);
}
#row-unique-0 .servisas-book-intro strong { font-weight: 700; }

/* 4b. Method labels — identical sub-heading above EACH method (form + direct),
 *     so the two options read as parallel, consistent "ways to book". */
#row-unique-0 .servisas-method-label {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--solidum-white);
}

/* 4c. "arba" (or) divider — visually ties the form (primary) to the direct
 *     contacts (alternative) as two choices. Centred word, hairline each side. */
#row-unique-0 .servisas-or {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 26px 0 22px;
  color: var(--solidum-white);
}
#row-unique-0 .servisas-or::before,
#row-unique-0 .servisas-or::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: rgba(255,255,255,.4);
}
#row-unique-0 .servisas-or span {
  flex: 0 0 auto;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  opacity: .92;
}

/* 4d. Direct-contact rows — aligned label / value, even rhythm, hairline split. */
#row-unique-0 .servisas-direct { margin: 0 0 4px; }
#row-unique-0 .servisas-direct .sd-row {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 8px 0;
}
#row-unique-0 .servisas-direct .sd-row + .sd-row {
  border-top: 1px solid rgba(255,255,255,.18);
}
#row-unique-0 .servisas-direct .sd-label {
  flex: 0 0 84px;
  font-weight: 700;
  font-size: 14px;
  color: var(--solidum-white);
}
#row-unique-0 .servisas-direct .sd-value {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 15px;
}
#row-unique-0 .servisas-direct .sd-value a {
  color: var(--solidum-white) !important;  /* theme pins tel-link color !important -> force white */
  text-decoration: underline;
  text-underline-offset: 2px;
}
#row-unique-0 .servisas-direct .sd-value a:hover { opacity: .82; }

/* 4e. Opening hours — quiet supporting info, set apart by a top rule. */
#row-unique-0 .servisas-hours {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,.28);
  font-size: 13px;
  line-height: 1.65;
  color: rgba(255,255,255,.9);
}
#row-unique-0 .servisas-hours .sh-label {
  display: block;
  margin-bottom: 4px;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--solidum-white);
}

/* =========================================================================
 * 5. Vertical-rhythm + eyebrow + mobile worker-photo spacing (2026-06-19)
 * -------------------------------------------------------------------------
 * Four spacing fixes, no content/logic change:
 *  (a) the partner-contacts section (#row-unique-1, "Serviso partnerių kontaktai
 *      Lietuvoje") carried an Uncode `row_height_percent` inline height of 468px
 *      on its .row-inner (DESKTOP only — mobile is already height:auto), while
 *      the actual content is ~188px. The ~280px of vertical-centering slack read
 *      as a large empty grey gap BELOW the list before the footer. height:auto
 *      collapses it (same lever as the global footer Fix A); balanced 52px
 *      (32px mobile) row padding then gives an even rhythm into the footer.
 *  (b) the rhythm across the red panel -> partner list -> footer is normalised by
 *      the symmetric padding above + the gap removal below.
 *  (c) the eyebrow caps "PROFESIONALI ĮRANGOS PRIEŽIŪRA – GARANTINIS IR
 *      POGARANTINIS APTARNAVIMAS" (#row-unique-0 panel <h6>, fontspace-381873,
 *      14px / letter-spacing 5px) wrapped to 2 lines desktop / 4 lines mobile.
 *      Tighter size + tracking + leading drop it to 2 clean lines at both widths.
 *      The H1 "Servisas" is a separate heading (fontsize-101436, no <h6>) — untouched.
 *  (d) on mobile the worker photo (the band's 2nd column) read as a detached strip:
 *      a 36px red band sat ABOVE it (the column's padding-top:36px), and the
 *      existing `...center top !important` framing cut the hard-hat top. We zero
 *      that top padding (flush with the form), give it a touch more presence
 *      (300 -> 340px), and re-frame to the worker's FACE (50% 22%). Desktop photo
 *      (full-height, center) is untouched — every (d) rule is inside the ≤959px MQ.
 *
 * !important policy here (verified via diag-prune.mjs):
 *  - KEEP: .row-inner height/min-height (beats Uncode's INLINE row_height_percent
 *    height); the eyebrow letter-spacing (beats `.fontspace-381873{ls:5px!important}`);
 *    the mobile photo column padding/min-height/background-position (beats the live
 *    Additional-CSS `.page-id-380 #row-unique-0 …` [1,4,0] incl. its `center top!`).
 *    The (d) rules add `.page-id-380.page` -> [1,5,0] to win regardless of source.
 *  - PRUNED (id scope already beats the only, non-!important competitor): the
 *    .row-parent padding (vs `.row-container .row-parent{36px}` [0,9,0]), the
 *    .row-internal margin-top (vs a [0,132,12] plain rule), and the eyebrow
 *    font-size / line-height (vs plain h6 rules).
 * Revert: delete this §5 (or restore servisas-overrides.backup-20260619-spacing.css),
 * redeploy + litespeed-purge all + prime /servisas/ and /.
 * ========================================================================= */

/* 5a. Partner-contacts section — collapse the row_height_percent dead space.
 *     Only height/min-height keep !important (they beat the INLINE height). */
#row-unique-1 .row-inner { height: auto !important; min-height: 0 !important; }
#row-unique-1 .row-parent { padding-top: 52px; padding-bottom: 52px; }
#row-unique-1 .row-internal { margin-top: 0; }

/* 5e. Heading -> list gap (2026-06-19). The "Serviso partnerių kontaktai
 *     Lietuvoje" heading (.vc_custom_heading_wrap) and the partner list
 *     (.row-internal) are siblings in the same .uncont, and 5a's
 *     `.row-internal{margin-top:0}` removed the theme's default gap — leaving the
 *     heading flush on the list. Restore a balanced gap on the heading wrapper
 *     (36px desktop / 24px mobile below). No !important / inline competitor on the
 *     wrapper's margin (verified live), so the plain id scope wins cleanly. */
#row-unique-1 .vc_custom_heading_wrap { margin-bottom: 36px; }

/* 5c. Eyebrow caps — tighten so it stops wrapping heavily. Only letter-spacing
 *     keeps !important (beats `.fontspace-381873:not(.bigtext){ls:5px!important}`);
 *     font-size / line-height win on the id scope alone. */
#row-unique-0 .heading-text h6,
#row-unique-0 .heading-text h6 span {
  font-size: 12px;
  letter-spacing: 2px !important;
  line-height: 1.4;
}

@media (max-width: 959px) {
  /* 5b. tighter section rhythm on mobile */
  #row-unique-1 .row-parent { padding-top: 32px; padding-bottom: 32px; }

  /* 5e. slightly tighter heading->list gap on the narrow column */
  #row-unique-1 .vc_custom_heading_wrap { margin-bottom: 24px; }

  /* 5c. eyebrow even smaller on the narrow panel (letter-spacing still !important) */
  #row-unique-0 .heading-text h6,
  #row-unique-0 .heading-text h6 span { font-size: 11px; letter-spacing: 1.5px !important; }

  /* 5d. mobile worker photo — flush, a touch taller, face framed. */
  .page-id-380.page #row-unique-0 .row-inner > .wpb_column:nth-child(2) {
    padding-top: 0 !important;
    min-height: 340px !important;
  }
  .page-id-380.page #row-unique-0 .row-inner > .wpb_column:nth-child(2) .background-inner {
    background-position: 50% 22% !important;
  }
}

/* =========================================================================
 * 6. Partner-contacts list — premium scannable restyle (2026-06-19)
 * -------------------------------------------------------------------------
 * The "Serviso partnerių kontaktai Lietuvoje" section is #row-unique-1
 * (.style-color-lxmt-bg, light grey). It listed 6 service partners as a 2-column
 * (desktop) / stacked (mobile) set of plain rows, each one a .uncode_text_column
 * <p> of the form:
 *     <strong>City – Company</strong> | <a href="tel:..."><em>+370...</em></a>
 * The phone numbers rendered in the BRIGHT band red #FF3A41 AND italic (the <em>),
 * which read like inline error text; the literal " | " pipe between name and number
 * was visual noise, and the 1px dividers carried an asymmetric 18px-top / 0-bottom
 * margin (the hairline hugged the next row).
 *
 * Restyle (CSS-ONLY, no content/markup change — names + numbers untouched):
 *  - Make each <p> a flex row: City–Company (primary, dark) on the LEFT, phone
 *    (secondary, right-aligned) on the RIGHT — a clear two-part hierarchy that
 *    scans cleanly down two vertical "phone" rails on desktop.
 *  - Kill the literal " | " text node WITHOUT a content edit: font-size:0 on the
 *    <p> collapses the bare pipe text node (it has no element to target), then the
 *    real text size is restored on <strong> + <a>. Verified the pipe is gone and
 *    word sizes are unaffected (partners-tune.mjs, both engines @1440 & 390).
 *  - De-italicize the phone (em{font-style:normal}) and recolor it from the harsh
 *    bright band red #FF3A41 to the proper brand red --solidum-red at weight 600
 *    with tabular figures — it now reads as a deliberate, tappable contact, not an
 *    error. (--solidum-red on the light bg ≈3.9:1; the phone is 15.5px/600 = WCAG
 *    "large text", threshold 3:1 — passes. Same deliberate brand-accent trade-off
 *    the form §3 makes.)
 *  - Symmetric 12px dividers (was 18/0) and a softer hairline -> even rhythm.
 *  - Mobile (≤959px, stacked single column): each row stacks name over phone for a
 *    clean, consistently-scannable list on the narrow width.
 *
 * Scope pinned to #row-unique-1 (and its .uncode_text_column / .divider-wrapper),
 * so it can only ever touch this section; if Uncode renumbers the row the rules
 * no-op safely. !important is used ONLY on the divider hairline COLOR — it beats a
 * live `.border-color-uydo-color{border-color:#ddd!important}` rule (proven in
 * diag-prune.mjs); the divider MARGIN wins on the id scope alone, so its !important
 * was pruned. Equal-height columns are preserved (Uncode table layout).
 * Revert: delete this §6 (or restore servisas-overrides.backup-20260619-partners.css),
 * redeploy + litespeed-purge all + prime /servisas/ and /.
 * ========================================================================= */

/* 6a. Each partner row -> flex: name left, phone right. font-size:0 kills the
 *     literal " | " text node (restored on the real text below). */
#row-unique-1 .uncode_text_column p {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
  margin: 0;
  padding: 6px 0;
  font-size: 0;                 /* collapses the bare " | " text node */
  line-height: 1.35;
}
#row-unique-1 .uncode_text_column p strong,
#row-unique-1 .uncode_text_column p a {
  font-size: 15.5px;            /* restore real text size */
}
/* City – Company = primary, dark, scannable */
#row-unique-1 .uncode_text_column p strong {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 600;
  color: var(--servisas-ink);
  letter-spacing: .1px;
}
/* Phone = de-italicized, brand red, right-aligned, weighted -> a clear "call this" */
#row-unique-1 .uncode_text_column p a {
  flex: 0 0 auto;
  white-space: nowrap;
  text-align: right;
  font-weight: 600;
  font-style: normal;
  color: var(--solidum-red);
  font-variant-numeric: tabular-nums;
  letter-spacing: .2px;
}
#row-unique-1 .uncode_text_column p a em { font-style: normal; }
#row-unique-1 .uncode_text_column p a:hover { color: var(--solidum-red-hover); }

/* 6b. Dividers — symmetric thin hairline, even rhythm (was 18px top / 0 bottom).
 *     margin wins on the id scope (no !important); the hairline COLOR keeps
 *     !important to beat `.border-color-uydo-color{border-color:#ddd!important}`. */
#row-unique-1 .divider-wrapper { margin: 12px 0; }
#row-unique-1 .divider-wrapper hr.unseparator { border-top-color: var(--servisas-hairline) !important; }

/* 6c. Mobile (stacked, ~318px): stack name over phone per row -> clean, scannable. */
@media (max-width: 959px) {
  #row-unique-1 .uncode_text_column p {
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    padding: 7px 0;
  }
  #row-unique-1 .uncode_text_column p a { text-align: left; white-space: normal; }
  #row-unique-1 .divider-wrapper { margin: 10px 0; }
}
