/* ============================================================================
 * LIVING WATERS v3 — the WordPress adapter (hand-written; site.css beside it is generated)
 * ----------------------------------------------------------------------------
 * Only what Elementor's wrappers need. Every rule is here because the static v3
 * pages had no wrapper there; nothing in this file restyles the design.
 * ========================================================================== */

/* Each section owns its rhythm and paints its own ground. Elementor's container gap,
   padding and per-widget margin would show as a strip of page colour between two
   sections (WIDGET-CODING-STANDARD §8 #14). */
html body.lw3 .elementor .e-con,
html body.lw3 .elementor .e-con-inner{--gap:0px;gap:0;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;padding:0;--container-max-width:none;max-width:none}
html body.lw3 .elementor .e-con > .elementor-element,
html body.lw3 .elementor .e-con-inner > .elementor-element{margin-block-end:0;width:100%}
html body.lw3 .elementor-widget{margin:0}

/* Sections are full-bleed inside a full-width container. */
html body.lw3 .elementor .e-con.e-con-full,
html body.lw3 .elementor .e-con-boxed > .e-con-inner{width:100%}

/* Section spacing presets (the widgets' "Spacing" control). Values copied from the static
   pages' inline styles, so a converted page matches its approved page exactly. */
html body.lw3 .sec.lw3-top-0{padding-top:0}
html body.lw3 .lw3-top-s{padding-top:clamp(56px,6vw,96px)}
html body.lw3 .lw3-top-xs{padding-top:clamp(40px,5vw,72px)}
html body.lw3 .lw3-bot-s{padding-bottom:clamp(40px,5vw,72px)}

/* The enquiry forms send for real now (wp.js): the honeypot is off-screen, and a failure reads as one. */
html body.lw3 .lw3-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
html body.lw3 .formok.is-error{color:#B4462B}

/* A post's own content (template-single.php) — written in the block editor, so plain HTML.
   v3's editorial measure and type; nothing here is a new design. */
html body.lw3 .lw3-article{max-width:68ch;font-size:clamp(1.05rem,1.25vw,1.18rem);line-height:1.72;color:var(--ink-soft)}
html body.lw3 .lw3-article > *{margin:0 0 1.1em}
html body.lw3 .lw3-article h2,html body.lw3 .lw3-article h3{font-family:var(--serif);color:var(--ink);line-height:1.1;margin:1.6em 0 .5em}
html body.lw3 .lw3-article h2{font-size:clamp(1.9rem,3vw,2.6rem)}
html body.lw3 .lw3-article h3{font-size:clamp(1.5rem,2.2vw,1.9rem)}
html body.lw3 .lw3-article a{color:var(--teal);text-underline-offset:3px}
html body.lw3 .lw3-article img{border-radius:var(--r);height:auto;max-width:100%}
html body.lw3 .lw3-article blockquote{margin:1.6em 0;padding-left:24px;border-left:2px solid var(--gold);font-family:var(--serif);font-style:italic;font-size:1.35em;color:var(--ink)}
html body.lw3 .lw3-article ul,html body.lw3 .lw3-article ol{padding-left:1.3em}
html body.lw3 .lw3-pager{margin-top:48px}
html body.lw3 .lw3-pager .nav-links{display:flex;gap:10px;flex-wrap:wrap}
html body.lw3 .lw3-pager .page-numbers{display:grid;place-items:center;min-width:44px;height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink);text-decoration:none;font:600 15px/1 var(--sans)}
html body.lw3 .lw3-pager .page-numbers.current{background:var(--forest);border-color:var(--forest);color:#fff}

/* Theme leftovers printed into wp_footer (LW3 turns Astra's off; this is the backstop). */
html body.lw3 #ast-scroll-top{display:none!important}

/* Logged in, WordPress's admin bar sits over the top of the fixed header. */
html body.lw3.admin-bar .hdr{top:32px}
html body.lw3.admin-bar .drawer{top:32px}
@media (max-width:782px){
  html body.lw3.admin-bar .hdr,html body.lw3.admin-bar .drawer{top:46px}
}
@media (max-width:600px){ /* the admin bar scrolls away on phones */
  html body.lw3.admin-bar .hdr.is-stuck{top:0}
}

/* Elementor zeroes every <figure> margin inside a widget at (0,3,1), after our sheet
   (§8 #38) — which flattened the polaroid strip's stagger. Restored at (0,5,2). */
html body.lw3 .elementor .elementor-widget .pol:nth-child(3n){margin-top:26px}

/* The Elementor editor: site.js is not loaded there (LW3::assets) and <html> keeps
   `no-js`, so reveals are already visible. Two things still need help:
   1) the fixed header sits on top of the first section's handles — let it scroll away;
   2) empty-state notices for a widget with no photograph. */
html body.lw3.elementor-editor-active .hdr{position:absolute}
html body.lw3.elementor-editor-active .callbar{display:none}

/* EVERY REVEAL VISIBLE WHILE EDITING. This used to rely on <html class="no-js">, which the
   editor's preview script replaces — so in the real editor the text, photos and cards that
   fade in on scroll were invisible (2026-10-06, the user's screenshots). `lw3-editing` is our
   own body class (LW3::body_class), and !important is deliberate: editor-only, it must win
   over every state class the animations use. */
html body.lw3-editing [data-reveal],
html body.lw3-editing .pillar,
html body.lw3-editing .hero .eyebrow,
html body.lw3-editing .hero__row > *,
html body.lw3-editing .hero--bg .eyebrow,
html body.lw3-editing .hero--bg .hero__lede,
html body.lw3-editing .hero--bg .hero__sub,
html body.lw3-editing .hero--bg .hero__acts,
html body.lw3-editing .tl li{opacity:1!important;transform:none!important;transition:none!important}
html body.lw3-editing .line-mask > span{transform:none!important;transition:none!important}
html body.lw3-editing .bar__fill{width:var(--w)!important}
html body.lw3-editing .hdr{position:absolute}
html body.lw3-editing .callbar{display:none}
