/* ==========================================================================
   Great Floors — theme.css
   --------------------------------------------------------------------------
   One stylesheet for the whole site: Elementor-rendered pages, the theme's
   own header / footer / forms, and the plain templates (index, single, 404).

   How this file gets along with Elementor
   ----------------------------------------
   * Anything that touches a widget's internals is prefixed "body .elementor "
     so it lands at specificity (0,3,1). That beats Elementor's kit defaults
     (0,3,0) even when the kit loads AFTER this sheet (editor iframe), and
     still LOSES to a client's per-widget setting (0,4,0). Never !important
     on widget styling — it would silently break the client's style controls.
   * Context colours (light / paper / dark sections) travel as CSS custom
     properties set on the SECTION at (0,1,0). Widget rules read the variable,
     so a "dark eyebrow" needs no compound selector and stays at (0,3,1).
   * Heading typography is likewise variable-driven: the single base rule
     declares font-size / colour via var(); tag and class rules only set the
     variables. The client's font-size picker (sets the property itself at
     0,4,0) therefore always wins.
   * Text width is constrained on .elementor-widget-container — never on the
     .elementor-widget wrapper (a narrowed wrapper lets the next widget float
     up beside it inside Elementor's flex row). The one deliberate exception
     is .gf-inline (side-by-side buttons).
   * Nothing depends on JavaScript to become visible. Reveal animation fails
     open, and is switched off inside the editor.
   * Plain CSS, no nesting (older Safari), no build step.

   Sections
   --------
   1. Tokens            2. Base & typography      3. Layout helpers
   4. Reveal            5. Elementor sections     6. Elementor columns
   7. Elementor widgets 8. Plain button system    9. HTML components
   10. Forms            11. Header                12. Footer
   13. Lightbox         14. Plain templates       15. Motion & print
   ========================================================================== */


/* ==========================================================================
   1. TOKENS
   ========================================================================== */
:root {
  /* brand gold */
  --gold-50:  #FBF5E1;
  --gold-100: #F6E8B8;
  --gold-200: #F0D070;
  --gold-300: #E4C24E;
  --gold-400: #D4B03A;
  --gold-500: #C9A227;
  --gold-600: #B08A16;
  --gold-700: #8C6D0E;

  /* charcoal */
  --ink-900: #121110;
  --ink-800: #1B1A18;
  --ink-700: #232323;
  --ink-600: #2E2C29;
  --ink-500: #4A4742;

  /* surfaces & text */
  --paper:         #FBF9F4;
  --paper-2:       #F4EFE4;
  --line:          #E6DFCF;
  --text:          #1B1A18;
  --muted:         #615C53;
  --on-dark:       #F3EEE2;
  --on-dark-muted: #B9B3A6;

  --grad-gold: linear-gradient(135deg, #F0D070 0%, #D4B03A 45%, #B8901A 100%);

  --font-display: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --font-body:    'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* rhythm & shape */
  --radius:    6px;
  --radius-lg: 8px;
  --wrap:      1240px;
  --gutter:    clamp(1rem, 4vw, 2rem);
  --header-h:  96px;
  --topbar-h:  36px;
  --ease:      cubic-bezier(.22, .61, .36, 1);
  --shadow-sm: 0 6px 18px -8px rgba(18, 17, 16, .25);
  --shadow-md: 0 18px 40px -20px rgba(18, 17, 16, .35);
  --shadow-lg: 0 32px 64px -28px rgba(18, 17, 16, .45);
  --shadow-gold: 0 14px 30px rgba(201, 162, 39, .28);

  /* ---- context defaults (light section). Overridden by .gf-dark / .gf-paper */
  --gf-bg:        var(--paper);
  --gf-card:      #FFFFFF;
  --gf-heading:   var(--ink-900);
  --gf-text:      var(--text);
  --gf-muted:     var(--muted);
  --gf-eyebrow:   var(--gold-700);
  --gf-rule:      var(--gold-500);
  --gf-hairline:  var(--line);
  --gf-link:      var(--gold-700);
  --gf-link-hover: var(--ink-900);
  --gf-check-bg:  var(--gold-100);
  --gf-check-fg:  var(--gold-700);
  --gf-icon-ring: rgba(201, 162, 39, .55);
  --gf-icon-fg:   var(--gold-700);
  --gf-stat-a:    var(--gold-600);
  --gf-stat-b:    var(--gold-700);
  --gf-chip-bg:   #FFFFFF;
  --gf-chip-border: var(--line);
  --gf-chip-fg:   var(--ink-800);
}


/* ==========================================================================
   2. BASE & TYPOGRAPHY
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  font-family: var(--font-body);
}

/* body.gf-body (0,1,1) out-ranks a kit body class (.elementor-kit-N, 0,1,0) */
body,
body.gf-body {
  margin: 0;
  background: var(--paper);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* belt-and-braces horizontal overflow guard. Set on BODY only: it propagates to
   the viewport (which treats clip as hidden) while body itself stays a plain
   box, so position:sticky keeps working and body.gf-nav-open{overflow:hidden}
   still locks page scroll. */
body { overflow-x: clip; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -.01em;
  color: var(--ink-900);
  margin: 0 0 .6em;
  overflow-wrap: anywhere;
}
h1 { font-size: clamp(2.75rem, 6vw, 5rem); line-height: 1.02; }
h2 { font-size: clamp(2rem, 4vw, 3.25rem); }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }
h5 { font-size: 1.1rem; }
h6 { font-size: .95rem; }

p { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }

a {
  color: var(--gold-700);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
  text-decoration-color: rgba(140, 109, 14, .45);
  transition: color .2s var(--ease), text-decoration-color .2s var(--ease);
}
a:hover { color: var(--ink-900); text-decoration-color: currentColor; }

img, svg, video, iframe { max-width: 100%; }
img { height: auto; display: block; }
svg { display: inline-block; vertical-align: middle; }

button { font: inherit; color: inherit; }
button, [type="button"], [type="submit"] { cursor: pointer; }

strong, b { font-weight: 700; }
small { font-size: .85em; }
hr { border: 0; border-top: 1px solid var(--line); margin: 2.5rem 0; }

::selection { background: var(--gold-200); color: var(--ink-900); }

/* focus rings: visible, gold, never removed */
:focus { outline: none; }
:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 3px;
  border-radius: 2px;
}

/* sticky header must not hide in-page anchors (#refinishing, #contact …) */
[id] { scroll-margin-top: 140px; }

.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  top: -100px; left: 1rem;
  z-index: 100;
  padding: .75rem 1.25rem;
  background: var(--ink-900);
  color: var(--gold-200);
  font-weight: 700;
  font-size: .9rem;
  letter-spacing: .04em;
  text-decoration: none;
  border-radius: 0 0 4px 4px;
  box-shadow: var(--shadow-md);
  transition: top .2s var(--ease);
}
.skip-link:focus { top: 0; outline-offset: -3px; }


/* ==========================================================================
   3. LAYOUT HELPERS
   ========================================================================== */
.gf-wrap {
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.gf-main { display: block; min-height: 40vh; }

/* Elementor's boxed container has no side padding of its own */
body .elementor .elementor-section > .elementor-container { padding-inline: var(--gutter); }


/* ==========================================================================
   4. REVEAL (fail-open)
   --------------------------------------------------------------------------
   Visible by default. Only once JS proves it is alive (html.js) do elements
   start hidden, and theme.js adds .in on intersection — with a 2.5s safety.
   The Elementor editor never runs that observer, so it is forced visible.
   ========================================================================== */
.gf-reveal { opacity: 1; transform: none; }
html.js .gf-reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .7s ease, transform .7s ease;
}
html.js .gf-reveal.in { opacity: 1; transform: none; }
body.elementor-editor-active .gf-reveal,
body.elementor-editor-active .gf-reveal.in { opacity: 1 !important; transform: none !important; }


/* ==========================================================================
   5. ELEMENTOR SECTIONS
   --------------------------------------------------------------------------
   Styled through the classes Elementor puts on <section> (css_classes).
   Section padding lives here, not in Elementor controls, so it cannot be
   flattened by a stray padding:0 and stays consistent across pages.
   ========================================================================== */
.elementor-section.gf-sec  { padding-block: clamp(4rem, 8vw, 7rem); }
.elementor-section.gf-band { padding-block: clamp(1.5rem, 3vw, 2.5rem); }

/* two same-toned sections back to back: tighten the seam (:where keeps this
   at (0,1,0) so a client padding control still wins) */
:where(.gf-sec:not(.gf-paper):not(.gf-dark):not(.gf-hero)) + .gf-sec:where(:not(.gf-paper):not(.gf-dark):not(.gf-hero)) { padding-top: clamp(.5rem, 2vw, 1.5rem); }
:where(.gf-sec.gf-paper) + .gf-sec:where(.gf-paper) { padding-top: clamp(.5rem, 2vw, 1.5rem); }

/* ---- tone: paper ------------------------------------------------------- */
.gf-paper {
  --gf-bg: var(--paper-2);
  --gf-chip-bg: #FFFFFF;
  background: var(--paper-2);
}

/* ---- tone: dark -------------------------------------------------------- */
.gf-dark {
  --gf-bg:        var(--ink-800);
  --gf-card:      var(--ink-700);
  --gf-heading:   var(--on-dark);
  --gf-text:      var(--on-dark);
  --gf-muted:     var(--on-dark-muted);
  --gf-eyebrow:   var(--gold-200);
  --gf-rule:      var(--gold-300);
  --gf-hairline:  rgba(255, 255, 255, .1);
  --gf-link:      var(--gold-200);
  --gf-link-hover: #FFFFFF;
  --gf-check-bg:  rgba(240, 208, 112, .14);
  --gf-check-fg:  var(--gold-200);
  --gf-icon-ring: rgba(240, 208, 112, .45);
  --gf-icon-fg:   var(--gold-200);
  --gf-stat-a:    var(--gold-200);
  --gf-stat-b:    var(--gold-500);
  --gf-chip-bg:   rgba(201, 162, 39, .08);
  --gf-chip-border: rgba(201, 162, 39, .55);
  --gf-chip-fg:   var(--gold-100);
  background: var(--ink-800);
  color: var(--on-dark);
}
.gf-dark a { color: var(--gf-link); text-decoration-color: rgba(240, 208, 112, .4); }
.gf-dark a:hover { color: var(--gf-link-hover); }
.gf-dark ::selection { background: var(--gold-300); color: var(--ink-900); }

/* the stats band directly under the home hero sits one shade deeper */
.gf-band.gf-dark {
  --gf-bg: var(--ink-900);
  background: var(--ink-900);
  border-top: 1px solid rgba(201, 162, 39, .28);
  border-bottom: 1px solid rgba(255, 255, 255, .05);
}

/* ---- heroes ------------------------------------------------------------ */
/* the <section> carries Elementor's inline background-image; the scrim and
   watermark are pseudo-elements so the editor never sees an empty widget */
.elementor-section.gf-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  align-items: center;
  padding-block: clamp(5rem, 10vw, 8rem);
  background-color: var(--ink-900);
  background-position: center center;
  background-size: cover;
}
.elementor-section.gf-hero--home { min-height: clamp(600px, 88vh, 860px); }
.elementor-section.gf-hero--page { min-height: clamp(380px, 52vh, 560px); }

.elementor-section.gf-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: linear-gradient(78deg, rgba(18, 17, 16, .92) 0%, rgba(18, 17, 16, .55) 55%, rgba(18, 17, 16, .15) 100%);
}
/* a soft floor-shadow along the bottom so the next section lands cleanly */
.elementor-section.gf-hero--home::before {
  background:
    linear-gradient(180deg, rgba(18, 17, 16, 0) 70%, rgba(18, 17, 16, .55) 100%),
    linear-gradient(78deg, rgba(18, 17, 16, .92) 0%, rgba(18, 17, 16, .55) 55%, rgba(18, 17, 16, .15) 100%);
}
.elementor-section.gf-hero > .elementor-container {
  position: relative;
  z-index: 2;
  width: 100%;
}
/* keep hero copy inside the dark end of the gradient */
.gf-hero .elementor-column > .elementor-widget-wrap { max-width: 680px; }

/* faint gold "G" watermark on the right of the home hero */
.elementor-section.gf-hero--home::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: 50%;
  right: -3%;
  width: min(48vw, 620px);
  aspect-ratio: 1 / 1;
  transform: translateY(-50%);
  background: url("../img/logo-mark.png") center / contain no-repeat;
  opacity: .12;
  mix-blend-mode: screen;
  pointer-events: none;
}

/* ---- CTA band ---------------------------------------------------------- */
.elementor-section.gf-cta {
  --gf-bg: var(--ink-900);
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--ink-900);
}
.elementor-section.gf-cta::before {
  content: "";
  position: absolute;
  z-index: 0;
  left: 0; right: 0; top: 0;
  height: 2px;
  background: var(--grad-gold);
  opacity: .8;
}
.elementor-section.gf-cta > .elementor-container { position: relative; z-index: 1; }

/* ---- full-width "materials" section: dark with a subtle warm vignette ---- */
.elementor-section.gf-materials-sec {
  background:
    radial-gradient(60% 80% at 50% 100%, rgba(201, 162, 39, .12), transparent 70%),
    var(--ink-800);
}


/* ==========================================================================
   6. ELEMENTOR COLUMNS
   --------------------------------------------------------------------------
   Kept at (0,2,0) on purpose: a client's column-width setting (0,3,0) can
   still override the split.
   ========================================================================== */
.gf-split > .elementor-container {
  display: flex;
  flex-wrap: nowrap;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: stretch;
}
.gf-split > .elementor-container > .elementor-column {
  width: calc(50% - clamp(1rem, 2.5vw, 2.5rem));
  min-width: 0;
}
/* form sections read 44 / 56 so the form gets room to breathe */
.gf-form-sec     > .elementor-container > .gf-col-text,
.gf-contact-sec  > .elementor-container > .gf-col-text,
.gf-estimate-sec > .elementor-container > .gf-col-text { width: calc(44% - clamp(1rem, 2.5vw, 2.5rem)); }
.gf-form-sec     > .elementor-container > .gf-col-form,
.gf-contact-sec  > .elementor-container > .gf-col-form,
.gf-estimate-sec > .elementor-container > .gf-col-form { width: calc(56% - clamp(1rem, 2.5vw, 2.5rem)); }

/* vertical centring of a column's widget stack */
.gf-vcenter .elementor-column > .elementor-widget-wrap { align-content: center; }

/* centred single-column sections */
.gf-center-col .elementor-column > .elementor-widget-wrap { justify-content: center; }
body .elementor .gf-center-col .elementor-widget-heading .elementor-heading-title { text-align: center; }
body .elementor .gf-center-col .elementor-widget-text-editor { text-align: center; }
body .elementor .gf-center-col .elementor-widget-button .elementor-button-wrapper { text-align: center; }
body .elementor .gf-center-col .elementor-widget-icon-list .elementor-icon-list-items { justify-content: center; }

/* the media column is sticky-ish to the eye: let a tall image column breathe */
.gf-col-media > .elementor-widget-wrap { align-content: center; }

@media (max-width: 900px) {
  .gf-split > .elementor-container { flex-wrap: wrap; row-gap: clamp(2rem, 6vw, 3rem); }
  .gf-split > .elementor-container > .elementor-column,
  .gf-form-sec     > .elementor-container > .gf-col-text,
  .gf-contact-sec  > .elementor-container > .gf-col-text,
  .gf-estimate-sec > .elementor-container > .gf-col-text,
  .gf-form-sec     > .elementor-container > .gf-col-form,
  .gf-contact-sec  > .elementor-container > .gf-col-form,
  .gf-estimate-sec > .elementor-container > .gf-col-form { width: 100%; }
  /* photo first, form last */
  .gf-split > .elementor-container > .gf-col-media { order: -1; }
  .gf-split > .elementor-container > .gf-col-form  { order: 2; }
  .gf-hero .elementor-column > .elementor-widget-wrap { max-width: none; }
  .elementor-section.gf-hero--home::after {
    width: 70vw;
    top: auto; right: -20%; bottom: -12%;
    transform: none;
    opacity: .08;
  }
}


/* ==========================================================================
   7. ELEMENTOR WIDGETS  — every rule here is (0,3,1) unless noted
   ========================================================================== */

/* ---- headings ---------------------------------------------------------- */
/* ONE base rule owns the properties. Tag and class rules below only set the
   variables, so a client's own font-size / colour picker (0,4,0) always wins. */
body .elementor .elementor-widget-heading .elementor-heading-title {
  font-family: var(--gf-h-font, var(--font-display));
  font-weight: var(--gf-h-weight, 600);
  font-size: var(--gf-h-size, clamp(2rem, 4vw, 3.25rem));
  line-height: var(--gf-h-lh, 1.08);
  letter-spacing: var(--gf-h-ls, -.01em);
  text-transform: var(--gf-h-tt, none);
  color: var(--gf-h-color, var(--gf-heading));
  text-shadow: var(--gf-h-shadow, none);
  margin: 0;
  padding: 0;
  overflow-wrap: anywhere;
}
/* sizes by tag (variables only, on the element itself) */
.elementor-widget-heading h1.elementor-heading-title { --gf-h-size: clamp(2.75rem, 6vw, 5rem); --gf-h-lh: 1.02; }
.elementor-widget-heading h2.elementor-heading-title { --gf-h-size: clamp(2rem, 4vw, 3.25rem); }
.elementor-widget-heading h3.elementor-heading-title { --gf-h-size: clamp(1.35rem, 2vw, 1.5rem); --gf-h-lh: 1.2; }
.elementor-widget-heading h4.elementor-heading-title { --gf-h-size: 1.25rem; --gf-h-lh: 1.25; }
.elementor-widget-heading h5.elementor-heading-title { --gf-h-size: 1.1rem; --gf-h-lh: 1.3; }
.elementor-widget-heading h6.elementor-heading-title { --gf-h-size: .95rem; --gf-h-lh: 1.35; }
/* sizes by role (win over the tag rules by specificity 0,2,0 > 0,1,1) */
.gf-h1 .elementor-heading-title { --gf-h-size: clamp(2.75rem, 6vw, 5rem); --gf-h-lh: 1.02; }
.gf-h2 .elementor-heading-title { --gf-h-size: clamp(2rem, 4vw, 3.25rem); --gf-h-lh: 1.08; }
.gf-hero .elementor-heading-title { --gf-h-shadow: 0 2px 22px rgba(0, 0, 0, .38); }

/* eyebrow: small caps Manrope with a short gold rule */
.gf-eyebrow .elementor-heading-title {
  --gf-h-font: var(--font-body);
  --gf-h-weight: 700;
  --gf-h-size: .78rem;
  --gf-h-lh: 1.4;
  --gf-h-ls: .22em;
  --gf-h-tt: uppercase;
  --gf-h-color: var(--gf-eyebrow);
  --gf-h-shadow: none;
}
body .elementor .gf-eyebrow .elementor-heading-title {
  display: flex;
  align-items: center;
  gap: .75rem;
  overflow-wrap: normal;
}
body .elementor .gf-eyebrow .elementor-heading-title::before {
  content: "";
  flex: 0 0 28px;
  width: 28px;
  height: 1px;
  background: var(--gf-rule);
}
/* centred variant draws the rule on both sides (no Elementor rule to beat, so
   plain low specificity is fine) */
.gf-center-col .gf-eyebrow .elementor-heading-title,
.gf-center .elementor-heading-title { justify-content: center; }
.gf-center-col .gf-eyebrow .elementor-heading-title::after {
  content: "";
  flex: 0 0 28px;
  width: 28px;
  height: 1px;
  background: var(--gf-rule);
}

/* ---- text editor --------------------------------------------------------
   Colour sits on the widget element (the one the client's picker targets) at
   (0,2,1): above the kit, below the client. */
body .elementor .elementor-widget-text-editor {
  color: var(--gf-text);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.7;
  text-shadow: var(--gf-t-shadow, none);
}
body .elementor .elementor-widget-text-editor p { margin: 0 0 1.1em; }
body .elementor .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
body .elementor .elementor-widget-text-editor a { color: var(--gf-link); }
body .elementor .elementor-widget-text-editor a:hover { color: var(--gf-link-hover); }
body .elementor .elementor-widget-text-editor strong { color: var(--gf-heading); }
body .elementor .elementor-widget-text-editor ul,
body .elementor .elementor-widget-text-editor ol { padding-left: 1.25em; margin: 0 0 1.1em; }
body .elementor .elementor-widget-text-editor li { margin-bottom: .35em; }

/* lead paragraph */
body .elementor .gf-lead {
  font-size: clamp(1.1rem, 1.5vw, 1.2rem);
  line-height: 1.6;
  color: var(--gf-muted);
}
.gf-hero { --gf-t-shadow: 0 1px 14px rgba(0, 0, 0, .35); }
body .elementor .gf-hero__lead { color: var(--on-dark); font-size: clamp(1.1rem, 1.6vw, 1.25rem); }
body .elementor .gf-hero__lead .elementor-widget-container { max-width: 56ch; }

/* width & alignment helpers — always on the container, never the wrapper */
.gf-narrow .elementor-widget-container { max-width: 62ch; }
.gf-center .elementor-widget-container { margin-inline: auto; }
body .elementor .gf-center { text-align: center; }

/* ---- widget rhythm ------------------------------------------------------
   Elementor's default is 20px under every widget. These are deliberate. */
body .elementor .elementor-widget-text-editor { margin-bottom: 1.5rem; }
body .elementor .elementor-widget-icon-list  { margin-bottom: 1.75rem; }
body .elementor .elementor-widget-html       { margin-bottom: 2rem; }
body .elementor .elementor-widget-image      { margin-bottom: 2rem; }
body .elementor .elementor-widget-toggle     { margin-bottom: 2rem; }
body .elementor .elementor-widget.gf-eyebrow { margin-bottom: 1.1rem; }
body .elementor .elementor-widget.gf-h1      { margin-bottom: 1.4rem; }
body .elementor .elementor-widget.gf-h2      { margin-bottom: 1.25rem; }
body .elementor .elementor-widget.gf-lead    { margin-bottom: 1.9rem; }
body .elementor .elementor-widget.gf-hero__proof { margin-top: 1.25rem; }
body .elementor .elementor-widget-button     { margin-bottom: 1rem; }

/* side-by-side buttons: the ONE place a widget wrapper is narrowed */
body .elementor .elementor-widget.gf-inline {
  width: auto;
  display: inline-block;
  margin-right: .75rem;
  margin-bottom: .75rem;
  vertical-align: middle;
}

/* the last widget in a column carries no trailing margin (:where keeps 0,3,1;
   ordered last so it settles every class above by source order) */
body .elementor :where(.elementor-widget-wrap) > .elementor-widget:last-child { margin-bottom: 0; }

/* ---- buttons ----------------------------------------------------------- */
body .elementor .elementor-widget-button .elementor-button,
body .elementor .elementor-widget-button .elementor-button:visited {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: .95rem;
  line-height: 1;
  letter-spacing: .04em;
  text-transform: uppercase;
  text-decoration: none;
  text-shadow: none;
  padding: 1rem 1.75rem;
  border-radius: 4px;
  border: 1px solid transparent;
  background: var(--grad-gold);
  color: var(--ink-900);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38), 0 1px 2px rgba(18, 17, 16, .18);
  cursor: pointer;
  transition: transform .25s var(--ease), box-shadow .25s var(--ease),
              background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease);
}
body .elementor .elementor-widget-button .elementor-button:hover,
body .elementor .elementor-widget-button .elementor-button:focus-visible {
  color: var(--ink-900);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), var(--shadow-gold);
}
body .elementor .elementor-widget-button .elementor-button:active { transform: translateY(0); }
body .elementor .elementor-widget-button .elementor-button:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 3px; }
body .elementor .elementor-widget-button .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: .5rem; }
body .elementor .elementor-widget-button .elementor-button-text { display: inline-block; }

/* gold is the default; the class is kept for clarity in the editor panel */
body .elementor .gf-btn-gold .elementor-button,
body .elementor .gf-btn-gold .elementor-button:visited { background: var(--grad-gold); color: var(--ink-900); }

/* ghost — for dark sections and photo heroes */
body .elementor .gf-btn-ghost .elementor-button,
body .elementor .gf-btn-ghost .elementor-button:visited {
  background: transparent;
  color: var(--on-dark);
  border-color: rgba(243, 238, 226, .55);
  box-shadow: none;
}
body .elementor .gf-btn-ghost .elementor-button:hover,
body .elementor .gf-btn-ghost .elementor-button:focus-visible {
  background: var(--gold-200);
  border-color: var(--gold-200);
  color: var(--ink-900);
  box-shadow: var(--shadow-gold);
}

/* ghost on light sections */
body .elementor .gf-btn-ghost-dark .elementor-button,
body .elementor .gf-btn-ghost-dark .elementor-button:visited {
  background: transparent;
  color: var(--ink-900);
  border-color: rgba(27, 26, 24, .45);
  box-shadow: none;
}
body .elementor .gf-btn-ghost-dark .elementor-button:hover,
body .elementor .gf-btn-ghost-dark .elementor-button:focus-visible {
  background: var(--ink-900);
  border-color: var(--ink-900);
  color: var(--on-dark);
  box-shadow: var(--shadow-md);
}

/* solid ink */
body .elementor .gf-btn-dark .elementor-button,
body .elementor .gf-btn-dark .elementor-button:visited {
  background: var(--ink-900);
  color: var(--on-dark);
  box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
}
body .elementor .gf-btn-dark .elementor-button:hover,
body .elementor .gf-btn-dark .elementor-button:focus-visible {
  background: var(--grad-gold);
  color: var(--ink-900);
  box-shadow: var(--shadow-gold);
}

/* large */
body .elementor .gf-btn-lg .elementor-button { padding: 1.15rem 2.1rem; font-size: 1rem; }

/* ---- icon list (.gf-checklist) ------------------------------------------
   The kit colours the <i> directly, so the <i> is what we style. FontAwesome
   may be absent: the glyph is zeroed and a check is drawn with a mask. */
body .elementor .elementor-widget-icon-list .elementor-icon-list-items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-item {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  padding-block: .3rem;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--gf-text);
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-icon {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  margin-top: .05em;
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-icon i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--gf-check-bg);
  color: var(--gf-check-fg);
  box-shadow: inset 0 0 0 1px rgba(201, 162, 39, .38);
  font-size: 0;
  line-height: 0;
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-icon i::before {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.5l4.8 4.8L19.5 7'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.5l4.8 4.8L19.5 7'/%3E%3C/svg%3E") center / contain no-repeat;
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-text {
  padding: 0;
  color: inherit;
}
body .elementor .elementor-widget-icon-list .elementor-icon-list-text strong {
  color: var(--gf-heading);
  font-weight: 700;
}

/* ---- toggle / FAQ (.gf-faq) ----------------------------------------------
   Elementor (or theme.js) toggles .elementor-active and the content's
   display; nothing here sets display on .elementor-tab-content. */
body .elementor .gf-faq .elementor-widget-container { max-width: 820px; margin-inline: auto; }
body .elementor .elementor-widget-toggle .elementor-toggle { border-top: 1px solid var(--gf-hairline); }
body .elementor .elementor-widget-toggle .elementor-toggle-item { border-bottom: 1px solid var(--gf-hairline); }
body .elementor .elementor-widget-toggle .elementor-tab-title {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0;
  padding: 1.2rem .25rem;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(1.2rem, 1.6vw, 1.35rem);
  line-height: 1.25;
  letter-spacing: -.005em;
  text-align: left;
  color: var(--gf-heading);
  transition: color .2s var(--ease);
}
body .elementor .elementor-widget-toggle .elementor-tab-title:hover { color: var(--gold-700); }
body .elementor .elementor-widget-toggle .elementor-tab-title:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 2px; border-radius: 4px; }
body .elementor .elementor-widget-toggle .elementor-tab-title .elementor-toggle-title {
  flex: 1 1 auto;
  color: inherit;
  font: inherit;
  text-decoration: none;
  cursor: pointer;
}
/* plus → minus, drawn in CSS, inside a gold ring */
body .elementor .elementor-widget-toggle .elementor-toggle-icon {
  order: 2;
  position: relative;
  flex: 0 0 32px;
  width: 32px;
  height: 32px;
  margin-left: auto;
  float: none;
  border-radius: 50%;
  border: 1px solid rgba(201, 162, 39, .55);
  color: var(--gold-700);
  text-align: center;
  transition: transform .35s var(--ease), background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
}
body .elementor .elementor-widget-toggle .elementor-toggle-icon::before,
body .elementor .elementor-widget-toggle .elementor-toggle-icon::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  background: currentColor;
  border-radius: 1px;
  transform: translate(-50%, -50%);
  transition: transform .35s var(--ease);
}
body .elementor .elementor-widget-toggle .elementor-toggle-icon::before { width: 14px; height: 2px; }
body .elementor .elementor-widget-toggle .elementor-toggle-icon::after  { width: 2px; height: 14px; }
body .elementor .elementor-widget-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon {
  background: var(--grad-gold);
  border-color: transparent;
  color: var(--ink-900);
  transform: rotate(180deg);
}
body .elementor .elementor-widget-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon::after { transform: translate(-50%, -50%) rotate(90deg); }
/* the FontAwesome plus/minus never shows, whether or not the font loaded */
body .elementor .elementor-widget-toggle .elementor-toggle-icon span { position: absolute; width: 0; height: 0; overflow: hidden; }
body .elementor .elementor-widget-toggle .elementor-toggle-icon i { font-size: 0; line-height: 0; color: transparent; width: 0; height: 0; overflow: hidden; }
body .elementor .elementor-widget-toggle .elementor-toggle-icon i::before { content: none; }

body .elementor .elementor-widget-toggle .elementor-tab-content {
  margin: 0;
  padding: 0 3.25rem 1.5rem .25rem;
  border: 0;
  color: var(--gf-muted);
  font-size: 1rem;
  line-height: 1.7;
}
body .elementor .elementor-widget-toggle .elementor-tab-content p { margin: 0 0 1em; }
body .elementor .elementor-widget-toggle .elementor-tab-content p:last-child { margin-bottom: 0; }

/* ---- image widget (.gf-frame) ------------------------------------------- */
body .elementor .elementor-widget-image .elementor-widget-container { position: relative; }
body .elementor .elementor-widget-image img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius);
}
body .elementor .elementor-widget-image .widget-image-caption {
  margin-top: .75rem;
  font-size: .85rem;
  color: var(--gf-muted);
  text-align: center;
}
body .elementor .gf-frame .elementor-widget-container { position: relative; z-index: 0; }
body .elementor .gf-frame img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
/* a thin gold frame set 14px down and right; margin makes room so nothing
   leaves the column */
body .elementor .gf-frame--offset .elementor-widget-container { margin: 0 14px 14px 0; }
body .elementor .gf-frame--offset .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border: 1px solid var(--gold-500);
  border-radius: var(--radius);
  transform: translate(14px, 14px);
  pointer-events: none;
}

/* ---- image gallery (.gf-gallery) ---------------------------------------- */
body .elementor .elementor-widget-image-gallery .gallery {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0;
}
body .elementor .elementor-widget-image-gallery .gallery-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body .elementor .elementor-widget-image-gallery .gallery-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body .elementor .elementor-widget-image-gallery .gallery-item {
  display: block;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  float: none;
}
body .elementor .elementor-widget-image-gallery .gallery-icon {
  display: block;
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--paper-2);
  box-shadow: var(--shadow-sm);
}
body .elementor .elementor-widget-image-gallery .gallery-icon a {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: var(--radius);
}
body .elementor .elementor-widget-image-gallery .gallery-icon a::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: var(--radius);
  box-shadow: inset 0 0 0 0 var(--gold-400);
  transition: box-shadow .3s var(--ease);
  pointer-events: none;
}
body .elementor .elementor-widget-image-gallery .gallery-icon img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--radius);
  transition: transform .7s var(--ease);
}
body .elementor .elementor-widget-image-gallery .gallery-item:hover .gallery-icon img { transform: scale(1.04); }
body .elementor .elementor-widget-image-gallery .gallery-item:hover .gallery-icon a::after { box-shadow: inset 0 0 0 2px var(--gold-400); }
body .elementor .elementor-widget-image-gallery .gallery-icon a:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 3px; }
body .elementor .elementor-widget-image-gallery .gallery-caption {
  margin-top: .5rem;
  font-size: .85rem;
  color: var(--gf-muted);
}
@media (max-width: 760px) {
  body .elementor .elementor-widget-image-gallery .gallery,
  body .elementor .elementor-widget-image-gallery .gallery-columns-2,
  body .elementor .elementor-widget-image-gallery .gallery-columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
}

/* ---- shortcode / form widget -------------------------------------------- */
body .elementor .elementor-widget-shortcode .elementor-shortcode { display: block; }


/* ==========================================================================
   8. PLAIN BUTTON SYSTEM  (header, footer, forms — same look as the widgets)
   ========================================================================== */
.gf-btn,
.gf-btn:visited {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: .95rem;
  line-height: 1;
  letter-spacing: .04em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 1rem 1.75rem;
  border-radius: 4px;
  border: 1px solid transparent;
  background: var(--ink-900);
  color: var(--on-dark);
  cursor: pointer;
  white-space: nowrap;
  transition: transform .25s var(--ease), box-shadow .25s var(--ease),
              background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease);
}
.gf-btn:hover, .gf-btn:focus-visible { transform: translateY(-2px); }
.gf-btn:active { transform: translateY(0); }
.gf-btn--gold,
.gf-btn--gold:visited {
  background: var(--grad-gold);
  color: var(--ink-900);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38), 0 1px 2px rgba(18, 17, 16, .18);
}
.gf-btn--gold:hover, .gf-btn--gold:focus-visible {
  color: var(--ink-900);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), var(--shadow-gold);
}
.gf-btn--ghost,
.gf-btn--ghost:visited { background: transparent; color: var(--on-dark); border-color: rgba(243, 238, 226, .55); }
.gf-btn--ghost:hover, .gf-btn--ghost:focus-visible { background: var(--gold-200); border-color: var(--gold-200); color: var(--ink-900); }
.gf-btn--lg { padding: 1.15rem 2.1rem; font-size: 1rem; }
.gf-btn--block { display: flex; width: 100%; }


/* ==========================================================================
   9. HTML COMPONENTS  (markup from content.py, inside Elementor HTML widgets)
   --------------------------------------------------------------------------
   Image rules are prefixed "body .elementor" because Elementor's frontend
   reset (.elementor img{height:auto;border-radius:0;box-shadow:none}) ties
   equal-specificity rules and wins by load order on the live site.
   ========================================================================== */

/* ---- shared card surface ------------------------------------------------ */
.gf-card,
.gf-value,
.gf-quote,
.gf-material,
.gf-mini {
  background: var(--gf-card);
  border: 1px solid var(--gf-hairline);
  border-radius: var(--radius-lg);
}

/* ---- .gf-stats — big serif numerals ------------------------------------- */
.gf-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  text-align: center;
}
.gf-stat {
  padding: .5rem 1rem;
  border-left: 1px solid var(--gf-hairline);
}
.gf-stat:first-child { border-left: 0; }
.gf-stat__num {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(2.6rem, 4.5vw, 3.5rem);
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--gf-stat-a);
  background: linear-gradient(135deg, var(--gf-stat-a), var(--gf-stat-b));
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  font-variant-numeric: lining-nums tabular-nums;
}
.gf-stat__suffix { font-size: .6em; vertical-align: .25em; margin-left: .05em; }
.gf-stat__label {
  margin-top: .6rem;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gf-muted);
}
/* inline variant (About page): 2-up, left aligned, sits in a text column */
.gf-stats--inline .gf-stats {
  grid-template-columns: repeat(2, auto);
  justify-content: start;
  gap: 0 2.5rem;
  text-align: left;
  margin-top: .5rem;
  padding-top: 1.75rem;
  border-top: 1px solid var(--gf-hairline);
}
.gf-stats--inline .gf-stat { padding: 0; border-left: 0; }
@media (max-width: 700px) {
  .gf-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 1.75rem; }
  .gf-stat:nth-child(3) { border-left: 0; }
}

/* ---- .gf-cards--services ------------------------------------------------- */
.gf-cards {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 2rem);
}
.gf-cards--services { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gf-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  box-shadow: var(--shadow-sm);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.gf-card:hover,
.gf-card:focus-visible {
  transform: translateY(-5px);
  box-shadow: var(--shadow-lg);
  border-color: rgba(201, 162, 39, .45);
  color: inherit;
}
.gf-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--paper-2);
}
body .elementor .gf-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  transition: transform .7s var(--ease);
}
.gf-card:hover .gf-card__media img { transform: scale(1.04); }
.gf-card__body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding: 1.5rem 1.6rem 1.6rem;
}
.gf-card__title {
  font-size: 1.6rem;
  line-height: 1.15;
  margin: 0 0 .5rem;
  color: var(--ink-900);
}
.gf-card__body p {
  margin: 0 0 1.25rem;
  color: var(--muted);
  font-size: .97rem;
  line-height: 1.6;
}
.gf-card__more {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gold-700);
}
.gf-arrow { width: 18px; height: 18px; transition: transform .3s var(--ease); }
.gf-card:hover .gf-arrow { transform: translateX(5px); }
@media (max-width: 1000px) { .gf-cards--services { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px)  { .gf-cards--services { grid-template-columns: 1fr; } }

/* ---- .gf-values ---------------------------------------------------------- */
.gf-values {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  text-align: left;
}
.gf-value {
  padding: 1.75rem 1.5rem 1.6rem;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.gf-value:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: rgba(201, 162, 39, .45); }
.gf-value__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin-bottom: 1.1rem;
  border-radius: 50%;
  border: 1px solid var(--gf-icon-ring);
  background: linear-gradient(160deg, rgba(240, 208, 112, .18), rgba(201, 162, 39, .04));
  color: var(--gf-icon-fg);
}
.gf-value__icon svg { width: 26px; height: 26px; }
.gf-value__title { font-size: 1.5rem; margin: 0 0 .5rem; color: var(--gf-heading); }
.gf-value p { margin: 0; color: var(--gf-muted); font-size: .95rem; line-height: 1.6; }
@media (max-width: 1000px) { .gf-values { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px)  { .gf-values { grid-template-columns: 1fr; } }

/* ---- .gf-steps — numbered process with a connecting hairline ------------ */
.gf-steps {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  text-align: left;
}
.gf-steps::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 2.4rem;
  height: 1px;
  background: var(--gf-hairline);
}
.gf-step { position: relative; }
.gf-step__num {
  position: relative;
  display: inline-block;
  padding-right: .9rem;
  background: var(--gf-bg);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 4.25rem;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--gold-200);
  font-variant-numeric: lining-nums;
}
.gf-dark .gf-step__num { color: rgba(240, 208, 112, .35); }
.gf-step__title { font-size: 1.45rem; margin: .35rem 0 .5rem; color: var(--gf-heading); }
.gf-step p { margin: 0; color: var(--gf-muted); font-size: .95rem; line-height: 1.6; }
@media (max-width: 900px) {
  .gf-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gf-steps::before { display: none; }
}
@media (max-width: 520px) { .gf-steps { grid-template-columns: 1fr; } }

/* ---- .gf-quotes — testimonials ------------------------------------------ */
.gf-quotes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  text-align: left;
}
/* exactly three cards read better in a row */
.gf-quotes:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gf-quote {
  position: relative;
  margin: 0;
  padding: 2rem 2rem 1.75rem;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.gf-quote::before {
  content: "\201C";
  position: absolute;
  top: -.35em;
  right: .35rem;
  font-family: var(--font-display);
  font-size: 8rem;
  line-height: 1;
  color: var(--gold-100);
  pointer-events: none;
}
.gf-quote > * { position: relative; }
.gf-quote__stars { display: flex; gap: 2px; margin-bottom: .9rem; color: var(--gold-500); }
.gf-quote__stars svg { width: 16px; height: 16px; }
.gf-quote__title { font-size: 1.5rem; margin: 0 0 .6rem; color: var(--gf-heading); }
.gf-quote blockquote {
  margin: 0 0 1.25rem;
  padding: 0;
  border: 0;
  font-style: normal;
  color: var(--gf-muted);
  font-size: 1rem;
  line-height: 1.65;
}
.gf-quote figcaption {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .25rem .6rem;
  padding-top: 1rem;
  border-top: 1px solid var(--gf-hairline);
  font-size: .9rem;
}
.gf-quote__name { font-weight: 700; color: var(--gf-heading); }
.gf-quote__place { color: var(--gf-muted); }
.gf-quote__place::before { content: "\00B7"; margin-right: .6rem; color: var(--gold-500); }
@media (max-width: 900px) { .gf-quotes:has(> :nth-child(3):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .gf-quotes, .gf-quotes:has(> :nth-child(3):last-child) { grid-template-columns: 1fr; } }

/* ---- .gf-mosaic — six tiles, first one 2×2 ------------------------------- */
.gf-mosaic {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.gf-mosaic__tile {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--paper-2);
  color: var(--ink-900);
  text-decoration: none;
}
.gf-mosaic__tile:first-child {
  grid-column: span 2;
  grid-row: span 2;
  aspect-ratio: auto;
}
body .elementor .gf-mosaic__tile img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  transition: transform .8s var(--ease);
}
.gf-mosaic__tile::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(18, 17, 16, 0) 55%, rgba(18, 17, 16, .55) 100%);
  opacity: 0;
  transition: opacity .35s var(--ease);
}
.gf-mosaic__cap {
  position: absolute;
  z-index: 1;
  left: 12px;
  bottom: 12px;
  padding: .4rem .8rem;
  border-radius: 999px;
  background: var(--grad-gold);
  color: var(--ink-900);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .35s var(--ease), transform .35s var(--ease);
}
.gf-mosaic__tile:hover img, .gf-mosaic__tile:focus-visible img { transform: scale(1.05); }
.gf-mosaic__tile:hover::after, .gf-mosaic__tile:focus-visible::after { opacity: 1; }
.gf-mosaic__tile:hover .gf-mosaic__cap, .gf-mosaic__tile:focus-visible .gf-mosaic__cap { opacity: 1; transform: none; }
@media (hover: none) { .gf-mosaic__cap { opacity: 1; transform: none; } }
@media (max-width: 700px) {
  .gf-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .gf-mosaic__tile:first-child { grid-column: span 2; grid-row: span 1; aspect-ratio: 16 / 10; }
  .gf-mosaic__tile:last-child { grid-column: span 2; aspect-ratio: 16 / 9; }
}

/* ---- .gf-materials — numbered cards ------------------------------------- */
.gf-materials {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  text-align: left;
}
.gf-material {
  position: relative;
  padding: 1.75rem 1.6rem 1.6rem;
  overflow: hidden;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.gf-material::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 3px;
  background: var(--grad-gold);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .4s var(--ease);
}
.gf-material:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.gf-material:hover::before { transform: scaleX(1); }
.gf-material__idx {
  display: block;
  margin-bottom: .75rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .2em;
  color: var(--gold-700);
  font-variant-numeric: tabular-nums;
}
.gf-material__title { font-size: 1.5rem; margin: 0 0 .45rem; color: var(--gf-heading); }
.gf-material p { margin: 0; color: var(--gf-muted); font-size: .95rem; line-height: 1.6; }
@media (max-width: 900px) { .gf-materials { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 540px) { .gf-materials { grid-template-columns: 1fr; } }

/* ---- .gf-chips — pill list ----------------------------------------------- */
.gf-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
}
.gf-chip {
  display: inline-flex;
  align-items: center;
  padding: .6rem 1.1rem;
  border-radius: 999px;
  border: 1px solid var(--gf-chip-border);
  background: var(--gf-chip-bg);
  color: var(--gf-chip-fg);
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: .02em;
  text-decoration: none;
  transition: background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .25s var(--ease);
}
a.gf-chip:hover { background: var(--grad-gold); border-color: transparent; color: var(--ink-900); transform: translateY(-2px); }

/* ---- .gf-marquee — full-bleed material ticker --------------------------- */
.gf-marquee {
  position: relative;
  width: 100vw;
  margin-inline: calc(50% - 50vw);
  margin-block: .5rem 1.5rem;
  padding-block: 1.25rem;
  overflow: hidden;
  border-top: 1px solid rgba(201, 162, 39, .22);
  border-bottom: 1px solid rgba(201, 162, 39, .22);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.gf-marquee__track {
  display: flex;
  align-items: center;
  width: max-content;
  animation: gf-marquee 40s linear infinite;
  will-change: transform;
}
.gf-marquee:hover .gf-marquee__track { animation-play-state: paused; }
.gf-marquee__item {
  padding-inline: 1.6rem;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(1.35rem, 2vw, 1.75rem);
  line-height: 1;
  white-space: nowrap;
  color: var(--gold-200);
}
.gf-marquee__dot { font-size: .55rem; color: var(--gold-500); }
@keyframes gf-marquee { to { transform: translateX(-50%); } }

/* ---- .gf-info — contact list, .gf-hours --------------------------------- */
.gf-info {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  text-align: left;
}
.gf-info__item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  font-size: 1rem;
  line-height: 1.5;
}
.gf-info__item > div { min-width: 0; }
.gf-info__icon {
  display: inline-flex;
  flex: 0 0 44px;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--gf-icon-ring);
  background: linear-gradient(160deg, rgba(240, 208, 112, .18), rgba(201, 162, 39, .04));
  color: var(--gf-icon-fg);
}
.gf-info__icon svg { width: 20px; height: 20px; }
.gf-info__item strong {
  display: block;
  margin: .3rem 0 .15rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gf-muted);
}
.gf-info__item a {
  color: var(--gf-heading);
  font-weight: 600;
  text-decoration: none;
  overflow-wrap: anywhere;
}
.gf-info__item a:hover { color: var(--gf-link); }
.gf-hours {
  list-style: none;
  margin: .25rem 0 0;
  padding: 0;
  max-width: 300px;
}
.gf-hours li {
  display: flex;
  justify-content: space-between;
  gap: 1.5rem;
  padding: .3rem 0;
  border-bottom: 1px dotted var(--gf-hairline);
  font-size: .95rem;
}
.gf-hours li:last-child { border-bottom: 0; }
.gf-hours li span:last-child { font-weight: 600; color: var(--gf-heading); white-space: nowrap; }

/* ---- .gf-collage — showroom photo + gold badge ---------------------------- */
.gf-collage {
  position: relative;
  max-width: 640px;
  margin-inline: auto;
  padding: 2.75rem 2rem 1.25rem 1.25rem;
}
body .elementor .gf-collage__main {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
.gf-collage__badge {
  position: absolute;
  z-index: 3;
  top: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 128px;
  height: 128px;
  border-radius: 50%;
  background: var(--grad-gold);
  color: var(--ink-900);
  text-align: center;
  font-size: .68rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .1em;
  text-transform: uppercase;
  box-shadow: var(--shadow-gold), 0 0 0 6px var(--gf-bg);
}
.gf-collage__badge-num {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 3.1rem;
  line-height: .9;
  letter-spacing: 0;
  margin-bottom: .2rem;
}
@media (max-width: 520px) {
  .gf-collage { padding: 2.25rem 1.5rem 1rem 1rem; }
  .gf-collage__badge { width: 104px; height: 104px; font-size: .6rem; }
  .gf-collage__badge-num { font-size: 2.4rem; }
}

/* ---- .gf-pair — two images, second stepped down --------------------------- */
.gf-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
  align-items: start;
  max-width: 880px;
  margin-inline: auto;
}
body .elementor .gf-pair img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow-md);
}
body .elementor .gf-split .gf-pair img { aspect-ratio: 3 / 4; }
body .elementor .gf-pair__b { margin-top: 2rem; }
@media (max-width: 560px) {
  .gf-pair { grid-template-columns: 1fr; }
  body .elementor .gf-pair__b { margin-top: 0; }
  body .elementor .gf-split .gf-pair img { aspect-ratio: 4 / 3; }
}

/* ---- .gf-map ------------------------------------------------------------- */
.gf-map {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--radius);
  border: 1px solid var(--gf-hairline);
  background: var(--paper-2);
  box-shadow: var(--shadow-sm);
}
.gf-map iframe { display: block; width: 100%; height: 100%; border: 0; }

/* ---- .gf-proof — hero mini-stats ---------------------------------------- */
.gf-proof {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem 0;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(243, 238, 226, .18);
}
.gf-proof__item {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: 0 1.5rem;
  border-left: 1px solid rgba(243, 238, 226, .22);
}
.gf-proof__item:first-child { padding-left: 0; border-left: 0; }
.gf-proof__item strong {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--gold-200);
  text-shadow: 0 1px 12px rgba(0, 0, 0, .35);
}
.gf-proof__item span {
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--on-dark-muted);
}
@media (max-width: 480px) {
  .gf-proof { gap: 1rem 1.75rem; }
  .gf-proof__item { padding: 0; border-left: 0; }
  .gf-proof__item strong { font-size: 1.35rem; }
}

/* ---- .gf-minis — small service cards ------------------------------------ */
.gf-minis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  text-align: left;
}
.gf-mini {
  padding: 1.6rem 1.6rem 1.5rem;
  border-left: 3px solid var(--gold-500);
  border-radius: 4px var(--radius-lg) var(--radius-lg) 4px;
  box-shadow: var(--shadow-sm);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.gf-mini:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.gf-mini__title { font-size: 1.5rem; margin: 0 0 .45rem; color: var(--gf-heading); }
.gf-mini p { margin: 0; color: var(--gf-muted); font-size: .95rem; line-height: 1.6; }
@media (max-width: 900px) { .gf-minis { grid-template-columns: 1fr; } }

/* ---- .gf-expect — numbered steps (estimate page) ------------------------ */
.gf-expect {
  list-style: none;
  counter-reset: gf-step;
  margin: 0 0 2rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.gf-expect li {
  counter-increment: gf-step;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding-left: 3.5rem;
  min-height: 2.5rem;
}
.gf-expect li::before {
  content: counter(gf-step);
  position: absolute;
  left: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: var(--grad-gold);
  color: var(--ink-900);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.25rem;
  box-shadow: 0 1px 2px rgba(18, 17, 16, .2);
}
.gf-expect li::after {
  content: "";
  position: absolute;
  left: 1.25rem;
  top: 2.75rem;
  bottom: -1.25rem;
  width: 1px;
  background: var(--gf-hairline);
}
.gf-expect li:last-child::after { display: none; }
.gf-expect strong { font-family: var(--font-display); font-weight: 600; font-size: 1.35rem; line-height: 1.2; color: var(--gf-heading); }
.gf-expect span { color: var(--gf-muted); font-size: .95rem; line-height: 1.55; }


/* ==========================================================================
   10. FORMS
   --------------------------------------------------------------------------
   a) the theme's own fallback form (.gf-form, generated by build.py)
   b) WPForms compensation, in case the client installs it
   ========================================================================== */
.gf-form {
  --gf-heading: var(--ink-900);
  --gf-text: var(--text);
  --gf-muted: var(--muted);
  --gf-hairline: var(--line);
  color: var(--text);
  text-align: left;
}
/* on a dark section the form sits in a light card so it pops */
.gf-dark .gf-form {
  background: var(--paper);
  border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  box-shadow: var(--shadow-lg), 0 0 0 1px rgba(201, 162, 39, .18);
}
.gf-form__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.1rem 1rem;
  margin-bottom: 1.5rem;
}
.gf-field { display: flex; flex-direction: column; gap: .4rem; min-width: 0; }
.gf-field--wide { grid-column: 1 / -1; }
.gf-form label,
.gf-form legend {
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-800);
}
.gf-req { color: var(--gold-700); font-weight: 700; }

.gf-form input[type="text"],
.gf-form input[type="email"],
.gf-form input[type="tel"],
.gf-form input[type="number"],
.gf-form input[type="url"],
.gf-form select,
.gf-form textarea {
  width: 100%;
  min-width: 0;
  padding: .85rem 1rem;
  font: inherit;
  font-size: 1rem;
  line-height: 1.4;
  color: var(--text);
  background: #FFFFFF;
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: inset 0 1px 2px rgba(18, 17, 16, .04);
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.gf-form input::placeholder, .gf-form textarea::placeholder { color: #9A948A; }
.gf-form textarea { min-height: 8.5rem; resize: vertical; }
.gf-form select {
  padding-right: 2.5rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%238C6D0E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .9rem center;
  background-size: 16px;
}
.gf-form input:focus,
.gf-form select:focus,
.gf-form textarea:focus {
  outline: none;
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(201, 162, 39, .22);
}
.gf-form input:focus-visible,
.gf-form select:focus-visible,
.gf-form textarea:focus-visible { outline: none; }

/* checkbox grid */
.gf-checks { margin: .25rem 0 0; padding: 0; border: 0; min-width: 0; }
.gf-checks legend { padding: 0; margin-bottom: .75rem; }
.gf-checks__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem 1rem;
}
.gf-check {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  font-size: .95rem;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
  cursor: pointer;
}
.gf-check input[type="checkbox"] {
  flex: 0 0 auto;
  width: 1.15rem;
  height: 1.15rem;
  margin: .15rem 0 0;
  accent-color: var(--gold-500);
  cursor: pointer;
}
.gf-check input[type="checkbox"]:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 2px; }

/* honeypot: off-screen, not display:none (bots check for that) */
.gf-hp { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.gf-form .gf-btn { margin-top: .25rem; }
.gf-form__note {
  margin: 1rem 0 0;
  font-size: .82rem;
  color: var(--muted);
}

/* validation (theme.js adds .was-validated on a failed submit) */
.gf-form.was-validated input:invalid,
.gf-form.was-validated select:invalid,
.gf-form.was-validated textarea:invalid {
  border-color: #B4432E;
  box-shadow: 0 0 0 3px rgba(180, 67, 46, .16);
}

/* status banners printed by gf_form_status() */
.gf-form__status {
  margin: 0 0 1.25rem;
  padding: .9rem 1.1rem;
  border-radius: 4px;
  border: 1px solid var(--line);
  border-left-width: 4px;
  background: #FFFFFF;
  font-size: .95rem;
  line-height: 1.5;
  color: var(--text);
}
.gf-form__status--success,
.gf-form__status.is-success { border-left-color: #4C8A3F; background: #F1F8EE; }
.gf-form__status--error,
.gf-form__status.is-error { border-left-color: #B4432E; background: #FBF0EE; }
.gf-form__status p { margin: 0; }

@media (max-width: 600px) { .gf-form__grid { grid-template-columns: 1fr; } }
@media (max-width: 480px) { .gf-checks__grid { grid-template-columns: 1fr; } }

/* ---- WPForms compensation ----------------------------------------------- */
.wpforms-container {
  --wpforms-field-border-radius: 4px;
  --wpforms-field-border-style: solid;
  --wpforms-field-border-size: 1px;
  --wpforms-field-border-color: var(--line);
  --wpforms-field-border-color-spare: var(--line);
  --wpforms-field-background-color: #FFFFFF;
  --wpforms-field-text-color: var(--text);
  --wpforms-field-size-input-height: 50px;
  --wpforms-field-size-input-spacing: 18px;
  --wpforms-field-size-font-size: 16px;
  --wpforms-field-size-padding-h: 16px;
  --wpforms-label-color: var(--text);
  --wpforms-label-sublabel-color: var(--muted);
  --wpforms-label-error-color: #B4432E;
  --wpforms-label-size-font-size: .9rem;
  --wpforms-label-size-sublabel-font-size: .8rem;
  --wpforms-button-background-color: var(--gold-500);
  --wpforms-button-background-color-alt: var(--gold-600);
  --wpforms-button-border-color: transparent;
  --wpforms-button-border-radius: 4px;
  --wpforms-button-text-color: var(--ink-900);
  --wpforms-button-text-color-alt: var(--ink-900);
  --wpforms-button-size-font-size: .95rem;
  --wpforms-button-size-height: 52px;
  --wpforms-button-size-padding-h: 28px;
  --wpforms-page-break-color: var(--gold-500);
  font-family: var(--font-body);
}
.gf-dark .wpforms-container {
  background: var(--paper);
  border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  box-shadow: var(--shadow-lg), 0 0 0 1px rgba(201, 162, 39, .18);
  color: var(--text);
}
/* explicit rules at (0,3,3)+ back the variables for older WPForms markup */
body div.wpforms-container-full .wpforms-form input[type="text"],
body div.wpforms-container-full .wpforms-form input[type="email"],
body div.wpforms-container-full .wpforms-form input[type="tel"],
body div.wpforms-container-full .wpforms-form input[type="number"],
body div.wpforms-container-full .wpforms-form input[type="url"],
body div.wpforms-container-full .wpforms-form select,
body div.wpforms-container-full .wpforms-form textarea {
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--text);
  background-color: #FFFFFF;
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: .85rem 1rem;
  box-shadow: inset 0 1px 2px rgba(18, 17, 16, .04);
}
body div.wpforms-container-full .wpforms-form input:focus,
body div.wpforms-container-full .wpforms-form select:focus,
body div.wpforms-container-full .wpforms-form textarea:focus {
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(201, 162, 39, .22);
  outline: none;
}
body div.wpforms-container-full .wpforms-form .wpforms-field-label {
  font-family: var(--font-body);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-800);
}
body div.wpforms-container-full .wpforms-form .wpforms-required-label { color: var(--gold-700); }
body div.wpforms-container-full .wpforms-form .wpforms-field-sublabel,
body div.wpforms-container-full .wpforms-form .wpforms-field-description { color: var(--muted); font-size: .82rem; }
body div.wpforms-container-full .wpforms-form input[type="checkbox"],
body div.wpforms-container-full .wpforms-form input[type="radio"] { accent-color: var(--gold-500); }
body div.wpforms-container-full .wpforms-form button[type="submit"],
body div.wpforms-container-full .wpforms-form .wpforms-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: .95rem;
  line-height: 1;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 1.05rem 1.9rem;
  height: auto;
  border-radius: 4px;
  border: 1px solid transparent;
  background: var(--grad-gold);
  color: var(--ink-900);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38), 0 1px 2px rgba(18, 17, 16, .18);
  cursor: pointer;
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
body div.wpforms-container-full .wpforms-form button[type="submit"]:hover,
body div.wpforms-container-full .wpforms-form .wpforms-submit:hover {
  background: var(--grad-gold);
  color: var(--ink-900);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), var(--shadow-gold);
}
body div.wpforms-container-full .wpforms-form .wpforms-error,
body div.wpforms-container-full .wpforms-form label.wpforms-error { color: #B4432E; }
body div.wpforms-container-full .wpforms-confirmation-container-full {
  background: #F1F8EE;
  border: 1px solid #CFE3C8;
  border-left: 4px solid #4C8A3F;
  border-radius: 4px;
  color: var(--text);
}


/* ==========================================================================
   11. HEADER
   ========================================================================== */
.gf-header {
  position: sticky;
  top: 0;
  z-index: 50;
  font-family: var(--font-body);
}
body.admin-bar .gf-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .gf-header { top: 46px; } }

/* ---- topbar ------------------------------------------------------------- */
.gf-topbar {
  background: var(--ink-900);
  color: var(--on-dark-muted);
  font-size: .8rem;
  line-height: 1;
  border-bottom: 1px solid rgba(255, 255, 255, .05);
}
.gf-topbar__in {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  min-height: var(--topbar-h);
}
.gf-topbar__item {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
  letter-spacing: .01em;
}
.gf-topbar__item svg { width: 16px; height: 16px; flex: 0 0 16px; color: var(--gold-300); }
a.gf-topbar__item:hover { color: var(--gold-200); }
.gf-topbar .gf-social { margin-left: auto; }

.gf-social { display: inline-flex; align-items: center; gap: .35rem; }
.gf-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  color: var(--on-dark-muted);
  text-decoration: none;
  transition: color .2s var(--ease), background-color .2s var(--ease);
}
.gf-social a svg { width: 18px; height: 18px; }
.gf-social a:hover { color: var(--gold-200); background: rgba(255, 255, 255, .06); }

/* ---- main bar ----------------------------------------------------------- */
.gf-header__main {
  background: var(--ink-800);
  border-bottom: 1px solid rgba(176, 138, 22, .3);
  box-shadow: 0 1px 0 rgba(0, 0, 0, .3);
  transition: box-shadow .3s var(--ease);
}
.gf-header.is-scrolled .gf-header__main { box-shadow: 0 10px 30px -14px rgba(0, 0, 0, .6); }
.gf-header__in {
  display: flex;
  align-items: center;
  gap: clamp(1rem, 2.5vw, 2.5rem);
  min-height: var(--header-h);
  padding-block: .75rem;
  transition: min-height .3s var(--ease);
}
.gf-header.is-scrolled .gf-header__in { min-height: 76px; }

.gf-logo { display: inline-flex; align-items: center; flex: 0 0 auto; text-decoration: none; }
.gf-logo img {
  display: block;
  height: 64px;
  width: auto;
  transition: height .3s var(--ease);
}
.gf-header.is-scrolled .gf-logo img { height: 48px; }

/* ---- primary nav (desktop) --------------------------------------------- */
.gf-nav { display: flex; align-items: center; flex: 1 1 auto; justify-content: center; min-width: 0; }
.gf-nav__list {
  display: flex;
  align-items: center;
  gap: 1.75rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.gf-nav__list > li { position: relative; display: flex; align-items: center; }
.gf-nav__list a {
  position: relative;
  display: inline-block;
  padding: .5rem 0;
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--on-dark);
  text-decoration: none;
  white-space: nowrap;
  transition: color .2s var(--ease);
}
.gf-nav__list > li > a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: .1rem;
  height: 1px;
  background: var(--gold-300);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .3s var(--ease);
}
.gf-nav__list > li > a:hover,
.gf-nav__list > li:hover > a,
.gf-nav__list > li.is-open > a,
.gf-nav__list > li:focus-within > a,
.gf-nav__list > li.current-menu-item > a,
.gf-nav__list > li.current-menu-ancestor > a,
.gf-nav__list > li.current-menu-parent > a,
.gf-nav__list > li.current_page_item > a,
.gf-nav__list > li.current_page_ancestor > a { color: var(--gold-200); }
.gf-nav__list > li > a:hover::after,
.gf-nav__list > li:hover > a::after,
.gf-nav__list > li.is-open > a::after,
.gf-nav__list > li:focus-within > a::after,
.gf-nav__list > li.current-menu-item > a::after,
.gf-nav__list > li.current-menu-ancestor > a::after,
.gf-nav__list > li.current_page_item > a::after,
.gf-nav__list > li.current_page_ancestor > a::after { transform: scaleX(1); transform-origin: left; }

/* caret button beside a parent item */
.gf-nav__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  margin-left: .15rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--on-dark-muted);
  cursor: pointer;
  transition: color .2s var(--ease), transform .3s var(--ease);
}
.gf-nav__toggle::before {
  content: "";
  display: block;
  width: 7px;
  height: 7px;
  margin-top: -3px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
}
.gf-nav__list > li:hover > .gf-nav__toggle,
.gf-nav__list > li.is-open > .gf-nav__toggle,
.gf-nav__list > li:focus-within > .gf-nav__toggle { color: var(--gold-200); }
.gf-nav__list > li.is-open > .gf-nav__toggle,
.gf-nav__toggle[aria-expanded="true"] { transform: rotate(180deg); }

/* dropdown */
.gf-nav .sub-menu {
  position: absolute;
  top: calc(100% + 14px);
  left: -1.25rem;
  z-index: 60;
  min-width: 280px;
  margin: 0;
  padding: .5rem 0;
  list-style: none;
  background: var(--ink-700);
  border-top: 2px solid var(--gold-600);
  border-radius: 0 0 var(--radius) var(--radius);
  box-shadow: 0 24px 48px -16px rgba(0, 0, 0, .6);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .25s var(--ease), transform .25s var(--ease), visibility 0s linear .25s;
}
/* invisible bridge so the pointer can cross the gap */
.gf-nav .sub-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -16px;
  height: 16px;
}
.gf-nav__list > li:hover > .sub-menu,
.gf-nav__list > li:focus-within > .sub-menu,
.gf-nav__list > li.is-open > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition-delay: 0s;
}
.gf-nav .sub-menu li { display: block; }
.gf-nav .sub-menu a {
  display: block;
  padding: .6rem 1.25rem;
  font-size: .85rem;
  font-weight: 500;
  letter-spacing: .01em;
  text-transform: none;
  color: var(--on-dark);
  white-space: normal;
  border-left: 2px solid transparent;
  transition: color .2s var(--ease), background-color .2s var(--ease), border-color .2s var(--ease);
}
.gf-nav .sub-menu a:hover,
.gf-nav .sub-menu a:focus-visible,
.gf-nav .sub-menu li.current-menu-item > a {
  color: var(--gold-200);
  background: rgba(255, 255, 255, .04);
  border-left-color: var(--gold-500);
}
.gf-nav .sub-menu a:focus-visible { outline-offset: -3px; }

/* header CTA and pieces that belong only to the off-canvas panel */
.gf-header__cta { flex: 0 0 auto; padding: .8rem 1.25rem; font-size: .82rem; }
.gf-nav__mobile-extra { display: none; }

/* burger (hidden on desktop) */
.gf-burger {
  display: none;
  position: relative;
  z-index: 70;
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  margin-left: auto;
  padding: 0;
  border: 1px solid rgba(243, 238, 226, .18);
  border-radius: 4px;
  background: transparent;
  color: var(--on-dark);
  cursor: pointer;
  transition: border-color .2s var(--ease), color .2s var(--ease);
}
.gf-burger:hover { border-color: rgba(240, 208, 112, .55); color: var(--gold-200); }
.gf-burger__box {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 22px;
  height: 16px;
  transform: translate(-50%, -50%);
}
.gf-burger__bar,
.gf-burger__bar::before,
.gf-burger__bar::after {
  position: absolute;
  left: 0;
  width: 22px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform .3s var(--ease), opacity .2s var(--ease), top .3s var(--ease);
}
.gf-burger__bar { top: 7px; }
.gf-burger__bar::before { content: ""; top: -7px; }
.gf-burger__bar::after  { content: ""; top: 7px; }
.gf-burger[aria-expanded="true"] { color: var(--gold-200); border-color: rgba(240, 208, 112, .55); }
.gf-burger[aria-expanded="true"] .gf-burger__bar { background: transparent; }
.gf-burger[aria-expanded="true"] .gf-burger__bar::before { top: 0; transform: rotate(45deg); }
.gf-burger[aria-expanded="true"] .gf-burger__bar::after  { top: 0; transform: rotate(-45deg); }

/* ---- responsive header -------------------------------------------------- */
@media (max-width: 1200px) {
  .gf-nav__list { gap: 1.2rem; }
  .gf-nav__list a { font-size: .82rem; letter-spacing: .06em; }
  .gf-topbar__addr { display: none; }
}
@media (max-width: 1023px) {
  :root { --header-h: 80px; }
  .gf-header__in { gap: 1rem; }
  .gf-logo img { height: 52px; }
  .gf-header.is-scrolled .gf-logo img { height: 44px; }
  .gf-header__cta { display: none; }
  .gf-burger { display: inline-flex; }

  /* off-canvas panel */
  .gf-nav {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 60;
    width: min(420px, 88vw);
    display: block;
    padding: 6rem 1.5rem 2.5rem;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background: var(--ink-900);
    border-left: 1px solid rgba(201, 162, 39, .25);
    box-shadow: -30px 0 60px -20px rgba(0, 0, 0, .6);
    transform: translateX(100%);
    visibility: hidden;
    transition: transform .4s var(--ease), visibility 0s linear .4s;
  }
  .gf-nav.is-open { transform: none; visibility: visible; transition-delay: 0s; }
  body.gf-nav-open { overflow: hidden; }
  body.gf-nav-open::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 40;
    background: rgba(18, 17, 16, .55);
    -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px);
  }

  .gf-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .gf-nav__list > li { flex-wrap: wrap; border-bottom: 1px solid rgba(255, 255, 255, .08); }
  .gf-nav__list > li > a {
    flex: 1 1 auto;
    padding: 1rem 0;
    font-family: var(--font-display);
    font-size: 1.5rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    white-space: normal;
  }
  .gf-nav__list > li > a::after { display: none; }
  .gf-nav__toggle { width: 44px; height: 44px; margin: 0; border: 1px solid rgba(255, 255, 255, .12); color: var(--gold-200); }
  .gf-nav__toggle::before { width: 9px; height: 9px; margin-top: -4px; }

  /* sub-menus stack inline and open with .is-open */
  .gf-nav .sub-menu {
    position: static;
    display: none;
    flex: 1 1 100%;
    min-width: 0;
    margin: 0 0 .75rem;
    padding: .25rem 0 .25rem .75rem;
    background: transparent;
    border: 0;
    border-left: 1px solid rgba(201, 162, 39, .35);
    border-radius: 0;
    box-shadow: none;
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: none;
  }
  .gf-nav .sub-menu::before { display: none; }
  .gf-nav__list > li.is-open > .sub-menu { display: block; }
  .gf-nav__list > li:hover > .sub-menu,
  .gf-nav__list > li:focus-within > .sub-menu { display: none; }
  .gf-nav__list > li.is-open:hover > .sub-menu,
  .gf-nav__list > li.is-open:focus-within > .sub-menu { display: block; }
  .gf-nav .sub-menu a { padding: .55rem .75rem; font-size: .95rem; border-left: 0; }
  .gf-nav .sub-menu a:hover, .gf-nav .sub-menu a:focus-visible { background: transparent; }

  .gf-nav__mobile-extra {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
    margin-top: 1.75rem;
  }
  .gf-nav__mobile-extra .gf-btn { display: flex; width: 100%; }
  .gf-nav__phone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 600;
    color: var(--gold-200);
    text-decoration: none;
  }
  .gf-nav__phone svg { width: 20px; height: 20px; }
  [id] { scroll-margin-top: 120px; }
}
@media (max-width: 820px) { .gf-topbar__email { display: none; } }
@media (max-width: 560px) {
  .gf-topbar__hours { display: none; }
  .gf-topbar__in { gap: 1rem; }
  .gf-logo img { height: 48px; }
  .gf-header.is-scrolled .gf-logo img { height: 42px; }
}


/* ==========================================================================
   12. FOOTER
   ========================================================================== */
.gf-footer {
  --gf-heading: var(--on-dark);
  --gf-hairline: rgba(255, 255, 255, .08);
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--ink-900);
  color: var(--on-dark-muted);
  font-size: .95rem;
  line-height: 1.65;
}
.gf-footer::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  z-index: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(201, 162, 39, .55), transparent);
}
.gf-footer::after {
  content: "";
  position: absolute;
  z-index: 0;
  right: -80px;
  bottom: -100px;
  width: 420px;
  height: 420px;
  background: url("../img/logo-mark.png") center / contain no-repeat;
  opacity: .06;
  pointer-events: none;
}
.gf-footer__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1.2fr;
  gap: clamp(2rem, 4vw, 4rem);
  padding-block: clamp(3.5rem, 6vw, 5.5rem) clamp(2.5rem, 4vw, 3.5rem);
}
.gf-footer__brand p { margin: 1.25rem 0; max-width: 40ch; }
.gf-footer__logo { display: inline-block; }
.gf-footer__logo img { display: block; width: 220px; height: auto; }
.gf-footer .gf-social a { color: var(--on-dark-muted); border: 1px solid rgba(255, 255, 255, .1); width: 36px; height: 36px; }
.gf-footer .gf-social a:hover { color: var(--gold-200); border-color: rgba(240, 208, 112, .5); }

.gf-footer__title {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin: 0 0 1.1rem;
  font-family: var(--font-body);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold-300);
}
.gf-footer__title::before { content: ""; width: 22px; height: 1px; background: var(--gold-500); flex: 0 0 22px; }

.gf-footer__links { list-style: none; margin: 0; padding: 0; }
.gf-footer__links li { margin-bottom: .45rem; }
.gf-footer a {
  color: var(--on-dark);
  text-decoration: none;
  transition: color .2s var(--ease);
  overflow-wrap: anywhere;
}
.gf-footer a:hover { color: var(--gold-200); }
.gf-footer__links a { position: relative; display: inline-block; }
.gf-footer__links a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 1px;
  background: var(--gold-300);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .3s var(--ease);
}
.gf-footer__links a:hover::after { transform: scaleX(1); transform-origin: left; }

.gf-footer address { font-style: normal; margin: 0 0 .6rem; }
.gf-footer__phone,
.gf-footer__email { display: block; margin-bottom: .35rem; font-weight: 600; }
.gf-footer__phone { font-family: var(--font-display); font-size: 1.4rem; color: var(--gold-200); }
.gf-hours--footer { margin-top: 1rem; max-width: 260px; }
.gf-hours--footer li { border-bottom-color: rgba(255, 255, 255, .08); font-size: .9rem; }
.gf-hours--footer li span:last-child { color: var(--on-dark); }

.gf-footer__bottom {
  position: relative;
  z-index: 1;
  border-top: 1px solid rgba(255, 255, 255, .08);
  font-size: .8rem;
  color: var(--on-dark-muted);
}
.gf-footer__bottom-in {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .5rem 2rem;
  padding-block: 1.25rem;
}

@media (max-width: 1000px) {
  .gf-footer__grid { grid-template-columns: 1fr 1fr; }
  .gf-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .gf-footer__grid { grid-template-columns: 1fr; gap: 2.25rem; }
  .gf-footer::after { width: 300px; height: 300px; right: -90px; bottom: -80px; }
}


/* ==========================================================================
   13. LIGHTBOX  (dialog built by theme.js when Elementor's own is absent)
   ========================================================================== */
.gf-lightbox {
  position: fixed;
  inset: 0;
  z-index: 200;
  width: 100vw;
  max-width: none;
  height: 100vh;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--on-dark);
}
.gf-lightbox[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}
.gf-lightbox::backdrop { background: rgba(18, 17, 16, .92); }
.gf-lightbox figure {
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .75rem;
  max-width: 90vw;
}
.gf-lightbox img {
  display: block;
  max-width: 90vw;
  max-height: 85vh;
  width: auto;
  height: auto;
  border-radius: var(--radius);
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .8);
}
.gf-lightbox figcaption { font-size: .9rem; color: var(--on-dark-muted); text-align: center; }
.gf-lightbox button {
  position: absolute;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 50%;
  background: rgba(18, 17, 16, .55);
  color: #FFFFFF;
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  transition: background-color .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);
}
.gf-lightbox button:hover { background: var(--gold-500); border-color: var(--gold-500); color: var(--ink-900); }
.gf-lightbox__close { top: 1rem; right: 1rem; }
.gf-lightbox__prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.gf-lightbox__next { right: 1rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 640px) {
  .gf-lightbox__prev { left: .5rem; }
  .gf-lightbox__next { right: .5rem; }
  .gf-lightbox img { max-width: 94vw; }
}


/* ==========================================================================
   14. PLAIN TEMPLATES  (index / single / search / 404 — no Elementor)
   ========================================================================== */
.gf-page-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--ink-800);
  color: var(--on-dark);
  padding-block: clamp(3rem, 7vw, 5rem);
}
.gf-page-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: radial-gradient(60% 90% at 90% 50%, rgba(201, 162, 39, .14), transparent 70%);
}
.gf-page-hero::after {
  content: "";
  position: absolute;
  z-index: 0;
  right: -4%;
  top: 50%;
  width: min(30vw, 320px);
  aspect-ratio: 1 / 1;
  transform: translateY(-50%);
  background: url("../img/logo-mark.png") center / contain no-repeat;
  opacity: .1;
  pointer-events: none;
}
.gf-page-hero > * { position: relative; z-index: 1; }
.gf-page-hero h1 { color: var(--on-dark); margin: 0; font-size: clamp(2.25rem, 5vw, 3.75rem); }
.gf-page-hero p { margin: .75rem 0 0; color: var(--on-dark-muted); font-size: 1.1rem; max-width: 60ch; }
.gf-page-hero .gf-eyebrow {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 1rem;
  font-family: var(--font-body);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold-200);
}
.gf-page-hero .gf-eyebrow::before { content: ""; width: 28px; height: 1px; background: var(--gold-300); }

.gf-content {
  max-width: 760px;
  margin-inline: auto;
  padding: clamp(3rem, 6vw, 5rem) var(--gutter);
  font-size: 1.0625rem;
  line-height: 1.75;
}
.gf-content > *:first-child { margin-top: 0; }
.gf-content h1, .gf-content h2, .gf-content h3, .gf-content h4 { margin-top: 1.6em; }
.gf-content h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
.gf-content h3 { font-size: 1.5rem; }
.gf-content p, .gf-content ul, .gf-content ol { margin-bottom: 1.25em; }
.gf-content ul, .gf-content ol { padding-left: 1.4em; }
.gf-content li { margin-bottom: .4em; }
.gf-content img, .gf-content figure img { border-radius: var(--radius); box-shadow: var(--shadow-md); }
.gf-content figure { margin: 2rem 0; }
.gf-content figcaption { margin-top: .6rem; font-size: .85rem; color: var(--muted); }
.gf-content blockquote {
  margin: 2rem 0;
  padding: .5rem 0 .5rem 1.5rem;
  border-left: 3px solid var(--gold-500);
  font-family: var(--font-display);
  font-size: 1.4rem;
  line-height: 1.4;
  color: var(--ink-800);
}
.gf-content pre, .gf-content table { max-width: 100%; overflow-x: auto; }
.gf-content pre { padding: 1rem 1.25rem; background: var(--paper-2); border-radius: var(--radius); font-size: .9rem; }
.gf-content table { display: block; border-collapse: collapse; width: 100%; font-size: .95rem; }
.gf-content th, .gf-content td { padding: .6rem .8rem; border-bottom: 1px solid var(--line); text-align: left; }
.gf-content th { font-weight: 700; color: var(--ink-900); }
.gf-content iframe { width: 100%; border-radius: var(--radius); }
.gf-content .wp-block-image, .gf-content .alignwide, .gf-content .alignfull { max-width: 100%; }
.gf-content .gf-btn { text-decoration: none; }

/* archive / search entries */
.gf-entry { padding-block: 2rem; border-bottom: 1px solid var(--line); }
.gf-entry:last-child { border-bottom: 0; }
.gf-entry__title { font-size: 1.85rem; margin-bottom: .35rem; }
.gf-entry__title a { color: var(--ink-900); text-decoration: none; }
.gf-entry__title a:hover { color: var(--gold-700); }
.gf-entry__meta { font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin-bottom: .75rem; }
.gf-content .search-form,
.gf-search { display: flex; gap: .5rem; max-width: 520px; margin: 1.5rem 0; }
.gf-content .search-form input[type="search"],
.gf-search input[type="search"] {
  flex: 1 1 auto;
  min-width: 0;
  padding: .85rem 1rem;
  font: inherit;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #FFFFFF;
}
.gf-content .search-form input[type="search"]:focus,
.gf-search input[type="search"]:focus { outline: none; border-color: var(--gold-500); box-shadow: 0 0 0 3px rgba(201, 162, 39, .22); }
.gf-pagination { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2.5rem; }
.gf-pagination a, .gf-pagination span,
.gf-content .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding: 0 .75rem;
  border: 1px solid var(--line);
  border-radius: 4px;
  text-decoration: none;
  color: var(--ink-900);
  font-weight: 600;
}
.gf-pagination .current, .gf-content .page-numbers.current { background: var(--grad-gold); border-color: transparent; }

/* WordPress core helpers that may appear in content */
.alignleft { float: left; margin: .5rem 1.5rem 1rem 0; }
.alignright { float: right; margin: .5rem 0 1rem 1.5rem; }
.aligncenter { display: block; margin-inline: auto; }
.wp-caption { max-width: 100%; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }


/* ==========================================================================
   15. MOTION & PRINT
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.js .gf-reveal { opacity: 1; transform: none; transition: none; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  /* the ticker becomes a static, centred, wrapping list (one copy only) */
  .gf-marquee { width: auto; margin-inline: 0; -webkit-mask-image: none; mask-image: none; }
  .gf-marquee__track { animation: none; width: auto; flex-wrap: wrap; justify-content: center; row-gap: .75rem; }
  .gf-marquee__item { white-space: normal; }
  .gf-marquee__track > :nth-child(n+27) { display: none; }
  .gf-card:hover, .gf-value:hover, .gf-material:hover, .gf-mini:hover,
  .gf-btn:hover, body .elementor .elementor-widget-button .elementor-button:hover { transform: none; }
}

/* the editor canvas: keep decorative motion still so handles stay put */
body.elementor-editor-active .gf-marquee__track { animation-play-state: paused; }

@media print {
  .gf-header, .gf-footer, .gf-burger, .gf-nav__mobile-extra, .skip-link, .gf-lightbox,
  .elementor-section.gf-cta, .gf-marquee { display: none !important; }
  body, body.gf-body { background: #fff; color: #000; font-size: 11pt; }
  .gf-dark, .gf-paper, .elementor-section.gf-hero { background: #fff !important; color: #000 !important; }
  .elementor-section.gf-hero::before, .elementor-section.gf-hero::after { display: none; }
  .elementor-section.gf-hero { min-height: 0; padding-block: 1.5rem; }
  .elementor-section.gf-sec { padding-block: 1.5rem; }
  .gf-reveal { opacity: 1 !important; transform: none !important; }
  a { color: #000; text-decoration: underline; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
  a[href^="tel"]::after, a[href^="mailto"]::after { content: none; }
  img { max-height: 3.5in; }
}

/* ---- post-review fixes ------------------------------------------------ */
/* long email addresses in narrow footer columns wrap at a character boundary, never mid-word overflow */
.gf-footer__email,
.gf-info a[href^="mailto:"] { overflow-wrap: anywhere; word-break: break-word; }
/* footer credit */
.gf-footer__credit a { color: var(--gold-200); font-weight: 600; text-decoration: none; }
.gf-footer__credit a:hover { color: #fff; text-decoration: underline; }
.gf-footer__heart { display: inline-block; margin: 0 .1em; }
/* footer email: fit the column on one line instead of breaking mid-word */
.gf-footer__email { font-size: .86rem; font-weight: 500; letter-spacing: -.01em; overflow-wrap: normal; word-break: normal; }
