/* ============================================================================
   GOOD LIFE PORTRAITS — EDITORIAL RESTYLE FOR THE SERVICE PAGES
   Supersedes services-newborn.css (single-page pilot).

   Covers 4 structurally identical pages:
       1391  /services/newborn/
       1470  /services/family/
       1553  /services/pets/
       1589  /services/couples/

   Author: Ace · 4 Sep 2026 · deploy into the child theme's glp-restyle.css
   OUT OF SCOPE: bikes (3426), boudoir (1479), niche-portraits (4124).

   ---------------------------------------------------------------------------
   THE BUG THIS RELEASE FIXES, AND WHY IT LOOKED SO STRANGE
   ---------------------------------------------------------------------------
   Ported to 3 new pages, headings rendered in Lato instead of Cormorant. The
   rules matched, carried a font-family, and still lost.

   Cause: the design tokens were defined on ONE page and used on FOUR.

       body.page-id-1391 .post-content { --glp-serif: 'Cormorant Garamond'… }   <- 1391 only
       body.page-id-1391 …, body.page-id-1470 … { font-family: var(--glp-serif) }  <- all four

   On 1470/1553/1589 `var(--glp-serif)` was undefined. An undefined var makes a
   declaration "invalid at computed-value time" — the property is not ignored,
   it becomes `unset`. font-family is inherited, so it fell back to the body
   font: Lato.

   ⚠️ THE TELL: if the webfont had merely failed to load, the computed font
   would have been GEORGIA — the next item in our stack. Lato is not in our
   stack at all, so it could only have arrived by inheritance. "Wrong font" and
   "wrong font that isn't even in your fallback list" are different bugs.

   Fix: ONE canonical page list, used by every rule INCLUDING the token block.

   ---------------------------------------------------------------------------
   HOW THIS FILE IS SCOPED  ·  read before adding a page
   ---------------------------------------------------------------------------
   Every rule begins with the same prefix. Throughout the comments it is
   written as SCOPE:

       SCOPE = body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content

   Two guards, both deliberate:
     · the :is() page list  — cannot leak to any other page on the site.
     · `.post-content`      — VERIFIED on all four pages: this wrapper opens
       after the Avada Template Builder header and closes before
       .fusion-tb-footer, so the global header, nav and footer are structurally
       unreachable from this file.

   TO ADD A PAGE: add its id to the :is() list. Do a find-and-replace on the
   whole list string so every rule changes together — including the token
   block. Missing the token block is exactly the bug described above, and it
   fails silently. `verify-restyle.py` check [7] now catches it.

   Only add pages with the verified structure below. Run the verifier first.

   ---------------------------------------------------------------------------
   NO ROW OR COLUMN NUMBERS.  This is the other change in this release.
   ---------------------------------------------------------------------------
   The pilot targeted `.fusion-builder-row-4`, `.fusion-builder-column-5` etc.
   Avada generates those numbers in document order, so ANY structural edit in
   the builder silently re-points them at the wrong thing. Ben is about to
   delete the $495 column on newborn, which would have done exactly that.

   Sections are now addressed by their position among .post-content's children,
   which is identical on all four pages and unaffected by edits inside a row:

       .post-content
         ├── .fusion-fullwidth            <- HERO      (:first-child)
         ├── .fusion-container-anchor     <- OFFERS    (#studiospecial wrapper)
         ├── .fusion-fullwidth            <- GALLERY   (:nth-child(3))
         └── .fusion-fullwidth            <- BROWSE    (:last-child)

   Columns inside the offers row are addressed so that deleting the $495 column
   changes nothing. Four top-level columns on every page:

       intro           = :first-child            (no accordion, no button)
       offer cards     = :has(a.fusion-button)   (2 per page — CONTENT, not position)
       what's included = :last-child             (accordion, no button)

   Verified on all four pages: intro=1, cards=2, what's-included=1, and the
   what's-included h2 confirmed as "What's included in your portrait experience?".
   After the $495 column goes, the survivor still has a button and
   what's-included is still last, so nothing re-points.

   ⚠️ NO `:not(:has(…))` ANYWHERE, deliberately. It is valid CSS and browsers
   handle it, but the verifier's selector engine evaluates it as always-true —
   so a rule written that way could not be machine-checked against the live
   markup. Everything here is verifiable, which matters more than elegance on
   a file that will be ported to 90+ pages.

   BROWSER SUPPORT: :is() and :has() are supported by every current browser
   (:has() since Firefox 121, Dec 2023). If either failed, the affected rules
   would drop entirely and the page would fall back to Avada's own styling —
   unstyled but self-consistent and legible. Nothing that sets a background
   depends on :has(), so a dark band can never lose its light text.

   ---------------------------------------------------------------------------
   !important POLICY
   ---------------------------------------------------------------------------
   Avada Builder writes real properties inline on its title/text/button
   elements (specificity 1000), so those need !important or they silently lose.
   Avada also writes inline CUSTOM PROPERTIES (--awb-*) on rows; those are just
   variables its own stylesheet consumes, so redefining them is a clean
   hand-off rather than a fight.

   Rule: !important ONLY on properties Avada sets inline on a matching element.
   That is measured, not guessed — verify-restyle.py check [3] reports exactly
   which. Do not add more.

   ---------------------------------------------------------------------------
   WHAT THIS FILE NEVER DOES
   ---------------------------------------------------------------------------
   · Hides anything. There is no display:none. Content problems are reported.
   · Touches the Avada header, nav or footer (structurally impossible above).
   · Touches the masonry gallery's layout — see PART B4.
   · Adds a script, webfont request, @import or external asset.
     The Meta pixel and consent scripts are unaffected.
   ============================================================================ */


/* ===========================================================================
   PART A — TOKENS, TYPOGRAPHY, COMPONENTS   (page-agnostic)
   =========================================================================== */

/* ---------------------------------------------------------------------------
   A1. Design tokens
   ⚠️ THIS BLOCK MUST CARRY THE SAME PAGE LIST AS EVERY OTHER RULE.
   If a page id appears anywhere else in this file but not here, every
   var(--glp-*) on that page resolves to `unset` and the page renders in
   Avada's Lato with Avada's colours. See the header note.

   Site palette for reference (Avada Global Colours):
     --awb-color1 #ffffff  ·  --awb-color4 #839682 (already GLP sage)
     --awb-color7 #171717  ·  --awb-color8 #000000
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content {
  --glp-sage:        #839682;   /* DECORATIVE ONLY — fills, rules. Never text. */
  --glp-light-sage:  #A8BFA7;   /* for use on dark grounds */
  --glp-charcoal:    #141413;
  --glp-off-white:   #FAF9F5;
  --glp-mid-grey:    #686868;
  --glp-hairline:    #DFE6DE;   /* sage-tinted, so sage carries light sections */
  --glp-soft-sage:   #EEF1EE;
  --glp-body-text:   #3F3D3B;

  /* --glp-sage-ink is the ACCESSIBLE sage and exists for a reason.
     White on #839682 is 3.16:1 — it FAILS WCAG AA for a 12px button label.
     (The live /investment/ page has this same fault on its own buttons; worth
     fixing there too.) #5C7159 is the same hue, deep enough to pass wherever
     it is used here:
        white on it ................ 5.30  PASS
        as text on #FAF9F5 ......... 5.03  PASS
        as text/border on #EEF1EE .. 4.66  PASS
     Use --glp-sage-ink for anything carrying text or forming a UI boundary.
     Use --glp-sage for decoration only. */
  --glp-sage-ink:    #5C7159;
  --glp-sage-ink-hv: #4F6350;   /* hover: white on it = 6.50 PASS */

  --glp-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --glp-sans:  'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
}

/* ---------------------------------------------------------------------------
   A2. Base typography
   Avada's heading font on this site is Abril Fatface (--awb-typography1).
   Swapping it for Cormorant Garamond is the biggest single visual shift.

   FONTS ARE ALREADY LOADED — no request is added here. A sitewide <style>
   block @imports Cormorant Garamond + DM Sans from Google Fonts, but scopes
   every rule using them to .glp-investment / .glp-homepage, so on these pages
   they load and do nothing. This puts them to work.

   ⚠️ That import loads Cormorant 400;500;600;700 — NOT 300, which is what the
   /investment/ page uses for its big headings. Asking for 300 would make the
   browser snap to 400 or synthesise a fake light weight, so headings here are
   400. Very slightly heavier than /investment/. Matching exactly means adding
   300 to the sitewide import — a global change, and Ben's call.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content {
  font-family: var(--glp-sans);
  font-weight: 300;
  color: var(--glp-body-text);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content h1,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content h2,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content h3,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content h4,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-title-heading {
  font-family: var(--glp-serif) !important;
  font-weight: 400 !important;
  /* line-height and letter-spacing carry !important because Avada writes BOTH
     inline on its title elements (line-height as
     var(--awb-typography1-line-height)). Measured, not assumed — these were
     the only two properties in this file losing to an inline style. */
  letter-spacing: -0.01em !important;
  line-height: 1.1 !important;
}

body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content p,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-text,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-text p,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-body,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .toggle-content p {
  font-family: var(--glp-sans) !important;
  font-weight: 300;
  font-size: 16.5px;
  line-height: 1.75;
}

body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content strong,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content b {
  font-weight: 500;
}

/* Readable measure. Avada lets copy run the full container width, which is the
   main reason these pages read as a wall of text. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-text p {
  max-width: 66ch;
}

/* ---------------------------------------------------------------------------
   A3. Section headings — thin sage rule beneath, as on /investment/
   Purely decorative (an empty ::after box). Adds no content, hides none.

   VERIFIED: this site has no `.fusion-title-left` wrapper class. Alignment is
   carried on the HEADING element as title-heading-center / title-heading-left.
   Selecting on the wrapper matches nothing at all.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-title-heading.title-heading-center::after,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-title-heading.title-heading-left::after {
  content: "";
  display: block;
  width: 54px;
  height: 2px;
  background: var(--glp-sage);
  margin-top: 22px;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-title-heading.title-heading-center::after {
  margin-left: auto;
  margin-right: auto;
}

/* ---------------------------------------------------------------------------
   A4. Buttons — square, small-caps, wide tracking (the /investment/ .btn)
   Avada sets button colours as inline custom properties on each <a>, so the
   variables are redefined AND the concrete properties set, which keeps this
   working regardless of which route Avada's CSS takes.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button {
  --button_gradient_top_color:          var(--glp-sage-ink) !important;
  --button_gradient_bottom_color:       var(--glp-sage-ink) !important;
  --button_gradient_top_color_hover:    var(--glp-sage-ink-hv) !important;
  --button_gradient_bottom_color_hover: var(--glp-sage-ink-hv) !important;
  --button_border_color:                var(--glp-sage-ink) !important;
  --button_border_hover_color:          var(--glp-sage-ink-hv) !important;
  --button_accent_color:                #ffffff !important;
  --button_accent_hover_color:          #ffffff !important;

  background: var(--glp-sage-ink) !important;
  border: 1px solid var(--glp-sage-ink) !important;
  border-radius: 0 !important;
  color: #fff !important;
  padding: 17px 34px !important;
  font-family: var(--glp-sans) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  line-height: 1.2 !important;
  height: auto !important;
  transition: background .2s ease, border-color .2s ease;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button:hover,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button:focus {
  background: var(--glp-sage-ink-hv) !important;
  border-color: var(--glp-sage-ink-hv) !important;
  color: #fff !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button .fusion-button-text,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button .awb-button__text {
  font-family: var(--glp-sans) !important;
  letter-spacing: inherit !important;
  font-size: inherit !important;
  color: inherit !important;
}
/* The camera glyph sits too tight to the label once tracking is widened. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button .awb-button__icon {
  margin-right: 10px !important;
  font-size: 13px !important;
}
/* Visible keyboard focus — Avada ships `fusion-disable-outline` on <body>. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button:focus-visible {
  outline: 2px solid var(--glp-light-sage) !important;
  outline-offset: 3px;
}

/* ---------------------------------------------------------------------------
   A5. Accordions (Avada "toggles")
   Structure: .fusion-panel > .panel-heading > h4.panel-title.toggle > a
              > span.fusion-toggle-icon-wrapper + span.fusion-toggle-heading
              then .panel-collapse > .panel-body.toggle-content
   Collapse behaviour is Avada JS and is left completely alone.
   Panel counts differ per page (13/12/12/11) — nothing here depends on count.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-panel {
  border: 0 !important;
  border-top: 1px solid var(--glp-hairline) !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  margin: 0 !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-panel:last-child {
  border-bottom: 1px solid var(--glp-hairline) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-heading {
  background: transparent !important;
  padding: 0 !important;
  border: 0 !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-title.toggle {
  margin: 0 !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-title.toggle > a {
  display: flex !important;
  align-items: baseline;
  gap: 14px;
  padding: 21px 0 !important;
  font-family: var(--glp-serif) !important;
  font-weight: 500 !important;
  font-size: 20px !important;
  line-height: 1.3 !important;
  color: var(--glp-charcoal) !important;
  text-decoration: none !important;
  transition: color .18s ease;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-title.toggle > a:hover {
  color: var(--glp-sage-ink) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-toggle-heading {
  font-family: inherit !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: 0 !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-toggle-icon-wrapper,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-title.toggle .fa-fusion-box {
  color: var(--glp-sage) !important;
  background: transparent !important;
  font-size: 13px !important;
  order: 2;                 /* chevron right, editorial rather than bulleted */
  margin-left: auto !important;
  flex: 0 0 auto;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-body.toggle-content {
  padding: 0 0 24px !important;
  border: 0 !important;
  background: transparent !important;
  color: var(--glp-body-text) !important;
  max-width: 68ch;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-body.toggle-content p:last-child {
  margin-bottom: 0 !important;
}


/* ===========================================================================
   PART B — SECTIONS, ADDRESSED STRUCTURALLY (no row/column numbers)

     .post-content
       ├── .fusion-fullwidth         B1  HERO      :first-child
       ├── .fusion-container-anchor  B2  OFFERS    #studiospecial wrapper
       ├── .fusion-fullwidth         B3  GALLERY   :nth-child(3)
       └── .fusion-fullwidth         B4  BROWSE    :last-child

   Banding: dark hero -> off-white offers -> soft-sage gallery -> dark close.
   The browse band being dark is not a choice — it carries a near-black
   background image (see B4).
   =========================================================================== */

/* Consistent editorial rhythm across all four sections. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-fullwidth {
  --awb-padding-top: 88px !important;
  --awb-padding-bottom: 88px !important;
}

/* ---------------------------------------------------------------------------
   B1. HERO — image column | copy column
   Was #171717; charcoal #141413 to match /investment/ exactly.
   The image column uses Avada lazyload (data-bg) — only its height is set.
   Verified on all four pages: 2 columns, image first, copy second.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child {
  --awb-background-color: var(--glp-charcoal) !important;
  --awb-padding-top: 0px !important;
  --awb-padding-bottom: 0px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-builder-row > .fusion-layout-column:first-child .fusion-column-wrapper {
  min-height: 62vh;
  background-size: cover !important;
  background-position: center 42% !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-builder-row > .fusion-layout-column:last-child .fusion-column-wrapper {
  padding: 76px 56px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-title-heading {
  color: #fff !important;
  font-size: clamp(36px, 5.4vw, 64px) !important;
  line-height: 1.08 !important;
  max-width: 15ch;
  margin-left: auto !important;
  margin-right: auto !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-text,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-text p {
  color: rgba(255, 255, 255, 0.80) !important;
  font-size: 17px !important;
  max-width: 48ch;
  margin-left: auto;
  margin-right: auto;
}

/* ---------------------------------------------------------------------------
   B2. OFFERS — "Studio Specials", the offer cards, "What's included"

   ⚠️ DESIGN CHANGE, NOT A BUG FIX. This row ships with a SOLID SAGE background
   (--awb-color4 = #839682) and black headings. I checked: black on sage is
   ~6.3:1 and PASSES AA, so nothing is broken today.

   It moves to off-white because /investment/ reserves sage for short accent
   bands and puts long content-heavy sections on cream; a full-height sage
   field behind two offers and a 12-row accordion reads heavy and flattens the
   photography. Each offer card keeps a sage top rule, so sage still carries.

   To revert, delete the one --awb-background-color line. If you do, keep the
   type charcoal — never white. White on #839682 is 3.16:1 and fails AA.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth {
  --awb-background-color: var(--glp-off-white) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor .fusion-title-heading {
  color: var(--glp-charcoal) !important;
}

/* Section intro — the only top-level column with no accordion in it. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:first-child .fusion-title-heading {
  font-size: clamp(30px, 4.6vw, 50px) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:first-child h3.fusion-title-heading {
  font-family: var(--glp-sans) !important;
  font-weight: 300 !important;
  font-size: 17.5px !important;
  line-height: 1.7 !important;
  letter-spacing: 0 !important;
  color: var(--glp-mid-grey) !important;
  max-width: 62ch;
  margin: 0 auto !important;
}
/* One rule per section, under the heading — not under the standfirst too. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:first-child h3.fusion-title-heading::after {
  content: none;
}

/* --- The offer cards ------------------------------------------------------
   Identified by CONTENT, not position: a top-level column holding both an
   accordion and a button. Survives the $495 column being deleted, and survives
   any renumbering. Verified on all four pages: exactly two per page.

   ⚠️ BOTH OFFERS STAY, AND STAY EQUAL — same card, same rule, same weight.
   Neither is dressed up as the only or the recommended one. If a preference is
   ever wanted that is a commercial decision for Ben, not a styling default.
   -------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) > .fusion-column-wrapper {
  background: #fff !important;
  border-top: 3px solid var(--glp-sage) !important;
  padding: 44px 44px 40px !important;
  margin-top: 40px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) h2.fusion-title-heading {
  font-size: clamp(26px, 3.2vw, 34px) !important;
  line-height: 1.15 !important;
  margin-bottom: 4px !important;
}
/* The price row is the LAST panel of an offer accordion — "$225 Special
   ($1,000 Value)" and equivalents. Scoped to offer cards, so it can never
   catch the last row of the "What's included" accordion. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) .fusion-panel:last-child > .panel-heading > .panel-title.toggle > a {
  font-size: 25px !important;
  color: var(--glp-sage-ink) !important;   /* 5.03:1 on white — safe at any size */
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) .fusion-panel:last-child {
  border-top: 1px solid var(--glp-sage) !important;
  border-bottom: 0 !important;
}

/* --- "What's included in your portrait experience?" -----------------------
   The column with an accordion and NO button. -------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:last-child > .fusion-column-wrapper {
  margin-top: 52px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:last-child h2.fusion-title-heading {
  font-size: clamp(26px, 3.6vw, 40px) !important;
  margin-bottom: 10px !important;
}

/* ---------------------------------------------------------------------------
   B3. GALLERY

   ⚠️ DO NOT RESTYLE THE GRID. THE GUTTER IS NOT SAFE TO CHANGE.
   Avada masonry driven by isotope JS. I checked whether the 5px gutters could
   be opened up: they cannot. The gutter is baked into an inline height
   calculation on every item —

       padding-top: calc((100% + 10px) * 0.8 - 5px)
                                 ^^^^         ^^^ both derived from the 5px gutter

   Changing margin on the container or padding on the columns without
   rewriting every one of those inline calcs leaves each row slightly the wrong
   height, which on a masonry reads as broken rather than roomy. Width,
   position, display, float and padding on the grid stay off-limits.
   verify-restyle.py check [5] enforces this.

   Everything below is paint-only. Not one property can move a box.

   Item counts differ per page (29/18/7/8) — nothing here depends on count.
   Worth knowing: the crops are NOT varied. Every item is the same 0.8 ratio.
   What reads as unevenness is the framing inside each frame — a picture
   selection matter, not a CSS one.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) {
  --awb-background-color: var(--glp-soft-sage) !important;
  --awb-padding-top: 96px !important;
  --awb-padding-bottom: 96px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) .fusion-title-heading {
  color: var(--glp-charcoal) !important;   /* 16.2:1 on soft sage */
  font-size: clamp(28px, 4.2vw, 46px) !important;
  margin-bottom: 8px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) .fusion-title-heading::after {
  background: var(--glp-sage);
  margin-bottom: 46px;                     /* air between heading and grid */
}
/* Paint-only frame polish. Avada paints each frame as a background-image on
   .fusion-masonry-element-container (the <img> inside is display:none) and
   already applies overflow:hidden + a scale transform for hover-type-zoomin. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) .fusion-masonry-element-container {
  border-radius: 2px;
  /* inset, so it cannot add to the box the way a border would */
  box-shadow: inset 0 0 0 1px rgba(20, 20, 19, 0.07);
  transition: transform .45s ease, filter .45s ease;
}
/* Tell people the frames open. Avada gives no affordance at all. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) a.fusion-lightbox {
  cursor: zoom-in;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:nth-child(3) .fusion-gallery-column:hover .fusion-masonry-element-container {
  filter: brightness(1.04);
}

/* ---------------------------------------------------------------------------
   B4. BROWSE OUR GOOD LIFE GALLERIES

   🔴 This band is DARK, and not by choice. It carries a lazy-loaded background
   image (data-bg, so it never appears in the row's inline style):
       /wp-content/uploads/2018/12/avadabarbers-about-introbackground-scaled.jpg
   Measured: a flat near-black, mean #181818, very uniform (luminance 0.0086 –
   0.0110 across the frame). Styling it light-with-charcoal-type produced
   1.04:1 — invisible headings and category buttons that rendered as empty
   dark boxes. Light-on-dark is safe everywhere on it:
       off-white #FAF9F5 heading .......... 16.85:1
       white     #FFFFFF labels ........... 17.76:1
       light-sage #A8BFA7 borders .......... 9.03:1  (needs 3:1 as a boundary)
       charcoal on light-sage hover fill ... 9.37:1

   ⚠️ The background-color below is a SAFETY NET, not decoration. The image is
   lazy-loaded, so before it arrives — or if the lazyload never fires — the
   band paints its background colour. Left light, the light type would be
   stranded on a light band. Charcoal keeps it legible either way, and keeps it
   legible if the image is ever removed.

   NOTE FOR BEN: that background is leftover Avada "Barbers" demo content from
   2018. It works, but nobody chose it. Safe to replace or drop.
   --------------------------------------------------------------------------- */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child {
  --awb-background-color: var(--glp-charcoal) !important;
}

/* "Browse our Good Life Galleries" is NOT an Avada title element — it is a
   plain <h3> inside a .fusion-text, wrapped in an <a>, so the heading rules in
   PART A's .fusion-title-heading branch do not reach it. It is also a
   self-link (points at the page you are already on). */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3 {
  font-family: var(--glp-serif) !important;
  font-weight: 400 !important;
  font-size: clamp(26px, 3.4vw, 38px) !important;
  line-height: 1.15 !important;
  color: var(--glp-off-white) !important;
  margin-bottom: 34px !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3 a {
  color: inherit !important;
  text-decoration: none !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3 a:hover,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3 a:focus {
  color: var(--glp-light-sage) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3::after {
  content: "";
  display: block;
  width: 54px;
  height: 2px;
  background: var(--glp-light-sage);
  margin: 22px auto 0;
}

/* The six category links — ghost buttons, light-on-dark. */
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-button {
  background: transparent !important;
  border: 1px solid var(--glp-light-sage) !important;   /* 9.03:1 boundary */
  color: #ffffff !important;                            /* 17.76:1 label */
  padding: 13px 22px !important;
  font-size: 11px !important;
  --button_gradient_top_color:    rgba(0,0,0,0) !important;
  --button_gradient_bottom_color: rgba(0,0,0,0) !important;
  --button_border_color:          var(--glp-light-sage) !important;
  --button_accent_color:          #ffffff !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-button:hover,
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-button:focus {
  background: var(--glp-light-sage) !important;
  border-color: var(--glp-light-sage) !important;
  color: var(--glp-charcoal) !important;                /* 9.37:1 on the fill */
  --button_gradient_top_color_hover:    var(--glp-light-sage) !important;
  --button_gradient_bottom_color_hover: var(--glp-light-sage) !important;
  --button_border_hover_color:          var(--glp-light-sage) !important;
  --button_accent_hover_color:          var(--glp-charcoal) !important;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-button:focus-visible {
  outline: 2px solid #ffffff !important;
  outline-offset: 3px;
}
body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-image-element {
  margin-bottom: 18px !important;
}


/* ===========================================================================
   PART C — RESPONSIVE
   Avada's own breakpoints are 1024 / 800 / 640. These sit alongside them, so
   the builder's column stacking still governs layout and this file only
   adjusts rhythm and scale.
   =========================================================================== */

@media (max-width: 1024px) {
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-builder-row > .fusion-layout-column:last-child .fusion-column-wrapper {
    padding: 56px 36px !important;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) > .fusion-column-wrapper {
    padding: 36px 32px 32px !important;
  }
}

@media (max-width: 800px) {
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-fullwidth {
    --awb-padding-top: 56px !important;
    --awb-padding-bottom: 56px !important;
  }
  /* Hero image sits above the copy once columns stack — generous, but not so
     tall the headline is pushed off the first screen. */
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-builder-row > .fusion-layout-column:first-child .fusion-column-wrapper {
    min-height: 46vh;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-builder-row > .fusion-layout-column:last-child .fusion-column-wrapper {
    padding: 44px 24px 52px !important;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .panel-title.toggle > a {
    font-size: 18px !important;
    padding: 18px 0 !important;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) .fusion-panel:last-child > .panel-heading > .panel-title.toggle > a {
    font-size: 21px !important;
  }
}

@media (max-width: 640px) {
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-container-anchor > .fusion-fullwidth > .fusion-builder-row > .fusion-layout-column:has(a.fusion-button) > .fusion-column-wrapper {
    padding: 30px 22px 26px !important;
    margin-top: 28px !important;
  }
  /* Long CTA labels ("Book Now - $225") must not overflow a narrow screen. */
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-button {
    padding: 15px 26px !important;
    font-size: 11px !important;
    white-space: normal !important;
    max-width: 100%;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content .fusion-title-heading::after {
    margin-top: 18px;
  }
}


/* ===========================================================================
   PART D — MOTION + PRINT
   =========================================================================== */

@media (prefers-reduced-motion: reduce) {
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content * {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

@media print {
  /* the hero and the browse band are the dark ones on screen — flatten them */
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child,
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child {
    --awb-background-color: #ffffff !important;
  }
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-title-heading,
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:first-child .fusion-text p,
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3,
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-text h3 a,
  body:is(.page-id-1391, .page-id-1470, .page-id-1553, .page-id-1589) .post-content > .fusion-fullwidth:last-child .fusion-button {
    color: var(--glp-charcoal) !important;
  }
}

/* ============================ END OF FILE ================================= */
