/* ============================================================
   SEGVIA INSURANCE - EDITORIAL DESIGN SYSTEM v2.2
   Aesthetic: Editorial Coastal Trust
   ============================================================ */

:root {
  /* Brand */
  --sg-navy-900: #04102B;
  --sg-navy-800: #0B2545;
  --sg-navy-700: #133B5C;
  --sg-navy-500: #355781;
  --sg-chrome:   #C5CCD6;
  --sg-cream:    #F7F4EC;
  --sg-paper:    #FBF9F4;
  --sg-bone:     #EFE9DD;
  --sg-ink:      #14233B;
  --sg-mute:     #5A6B82;
  --sg-rule:     rgba(11,37,69,.14);
  --sg-rule-soft:rgba(11,37,69,.07);
  --sg-brass:    #B07A4A;
  --sg-brass-bright: #C9A14A;

  /* Type */
  --sg-display: "Playfair Display", "Source Serif Pro", Georgia, serif;
  --sg-body:    "Inter", "Helvetica Neue", Arial, sans-serif;
  --sg-mono:    "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --sg-fs-eyebrow: 0.72rem;
  --sg-fs-meta:    0.82rem;
  --sg-fs-body:    1.0625rem;
  --sg-fs-lead:    1.25rem;
  --sg-fs-h4:      1.5rem;
  --sg-fs-h3:      2.125rem;
  --sg-fs-h2:      clamp(1.85rem, 4vw + .5rem, 3.5rem);
  --sg-fs-display: clamp(2.5rem, 7vw + .5rem, 6.25rem);

  --sg-r1: .25rem; --sg-r2: .5rem; --sg-r3: 1rem; --sg-r4: 1.5rem;
  --sg-r5: 2.25rem; --sg-r6: 3.5rem; --sg-r7: 5.5rem;

  --sg-shadow-1: 0 1px 0 rgba(11,37,69,.04), 0 8px 32px -16px rgba(11,37,69,.18);
  --sg-shadow-2: 0 1px 0 rgba(11,37,69,.06), 0 40px 80px -40px rgba(4,16,43,.32);
  --sg-radius: 2px;
  --sg-radius-lg: 4px;

  --sg-ease:   cubic-bezier(.2,.7,.2,1);
  --sg-ease-2: cubic-bezier(.65,.05,.36,1);
  --sg-d1: 240ms; --sg-d2: 480ms; --sg-d3: 720ms;
}

/* ============================================================
   GLOBAL OVERFLOW GUARD (no more horizontal slop)
   ============================================================ */
html, body { overflow-x: clip !important; max-width: 100vw !important; }
body { margin: 0; }
img, svg, video, canvas { max-width: 100%; height: auto; }

/* Hide editorial figure captions sitewide — they were reading as alt text */
.sg-hero__caption,
.sg-feature__media-cap,
figure.sg-hero__media figcaption,
figure.sg-feature__media figcaption { display: none !important; }

/* ============================================================
   NUCLEAR OVERRIDES — light text on every dark section
   These win every specificity battle so headings can never
   render as dark navy on a dark navy background.
   ============================================================ */
.sg-section.sg-cta,
.sg-section.sg-cta h1, .sg-section.sg-cta h2, .sg-section.sg-cta h3,
.sg-section.sg-cta p, .sg-section.sg-cta span,
.sg-cta__title, section.sg-cta h2.sg-cta__title,
.sg-cta .sg-cta__sub { color: #FFFFFF !important; }
.sg-cta__title em, .sg-cta em, .sg-cta__phone strong { color: #E6C77A !important; }
.sg-cta__phone { color: #F7F4EC !important; opacity: 1 !important; }
.sg-cta__sub { color: rgba(255,255,255,.88) !important; }

.sg-section.sg-areas,
.sg-section.sg-areas h1, .sg-section.sg-areas h2, .sg-section.sg-areas h3,
.sg-section.sg-areas p, .sg-section.sg-areas span,
.sg-section.sg-areas .sg-h2,
.sg-section.sg-areas .sg-lead { color: #FFFFFF !important; }
.sg-areas .sg-h2 em, .sg-areas em { color: #E6C77A !important; }
.sg-areas .sg-lead { color: rgba(255,255,255,.85) !important; }
.sg-areas__col h4 { color: #E6C77A !important; }
.sg-areas__col li { color: rgba(255,255,255,.9) !important; }

.sg-section.sg-stats,
.sg-section.sg-stats h1, .sg-section.sg-stats h2, .sg-section.sg-stats h3,
.sg-section.sg-stats p, .sg-section.sg-stats span { color: #FFFFFF !important; }
.sg-stats .sg-h2 em, .sg-stats em { color: #E6C77A !important; }
.sg-stats .sg-lead { color: rgba(255,255,255,.85) !important; }
.sg-stat__num { color: #FFFFFF !important; }
.sg-stat__num sup { color: #E6C77A !important; }
.sg-stat__label { color: #E8ECF2 !important; }
.sg-stat__hint { color: rgba(255,255,255,.78) !important; }

/* Brass button: white text + drop shadow for legibility on the gradient */
.sg-btn--brass, .sg-btn--brass *, .sg-btn--brass span, .sg-btn--brass .sg-btn__arrow {
  color: #FFFFFF !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.32);
}
/* Primary navy button: white text */
.sg-btn, .sg-btn *, .sg-btn span, .sg-btn .sg-btn__arrow { color: var(--_fg, #FFFFFF) !important; }
.sg-btn--ghost { --_fg: var(--sg-navy-800); }
.sg-btn--ghost, .sg-btn--ghost * { color: var(--sg-navy-800) !important; }
.sg-btn--ghost:hover, .sg-btn--ghost:hover * { color: #FFFFFF !important; }
/* In a dark section, ghost button is white outlined */
.sg-section.is-dark .sg-btn--ghost,
.sg-section.is-dark .sg-btn--ghost * { color: #FFFFFF !important; }

/* Hero image — bleed FULL width on mobile, no padded edges */
@media (max-width: 900px) {
  .sg-hero { padding: 0 !important; }
  .sg-hero__inner { gap: 0 !important; padding: 0 !important; margin: 0 !important; }
  .sg-hero__media {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
    aspect-ratio: 16/10 !important;
    max-height: 56vh !important;
  }
  .sg-hero__img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
}

/* Defeat Hello Elementor's hard-coded button rule that paints all <button> elements dark grey */
button.sg-faq__btn,
.sg-faq button,
.sg-faq__btn {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--sg-navy-900) !important;
  border: 0 !important;
  padding: 1.4rem 0 1.3rem !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  font-family: inherit !important;
  font-size: inherit !important;
  border-radius: 0 !important;
}
.sg-faq__btn .sg-faq__q { color: var(--sg-navy-900) !important; }

/* Defeat Hello Elementor's hard-coded button rule that paints all <button> elements dark grey */
button.sg-faq__btn,
.sg-faq button,
.sg-faq__btn {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--sg-navy-900) !important;
  border: 0 !important;
  padding: 1.4rem 0 1.3rem !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  font-family: inherit !important;
  font-size: inherit !important;
  border-radius: 0 !important;
}
.sg-faq__btn .sg-faq__q { color: var(--sg-navy-900) !important; }

/* ============================================================
   BASE
   ============================================================ */
.sg-section {
  --_pad: clamp(3rem, 7vw, 7rem);
  padding: var(--_pad) 0; position: relative;
  color: var(--sg-ink); font-family: var(--sg-body); font-size: var(--sg-fs-body); line-height: 1.6;
  overflow: hidden;
}
.sg-section.is-dark { background: var(--sg-navy-900); color: var(--sg-cream); }
.sg-section.is-cream { background: var(--sg-cream); }
.sg-section.is-paper { background: var(--sg-paper); }
.sg-section.is-bone  { background: var(--sg-bone); }
.sg-section *, .sg-section *::before, .sg-section *::after { box-sizing: border-box; }

.sg-wrap { max-width: 1240px; margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }
.sg-wrap--tight { max-width: 980px; }
.sg-wrap--reading { max-width: 720px; }

.sg-rule { height: 1px; background: var(--sg-rule); border: 0; margin: 0; }
.sg-rule--dark { background: rgba(247,244,236,.18); }

.sg-eyebrow {
  display: inline-flex; align-items: center; gap: .6rem;
  font-family: var(--sg-body); font-size: var(--sg-fs-eyebrow);
  font-weight: 600; text-transform: uppercase; letter-spacing: .22em;
  color: var(--sg-brass); margin: 0 0 var(--sg-r4);
}
.sg-eyebrow::before { content: ""; width: 28px; height: 1px; background: currentColor; display: inline-block; }
.is-dark .sg-eyebrow { color: var(--sg-brass-bright); }

.sg-display {
  font-family: var(--sg-display); font-weight: 700; font-size: var(--sg-fs-display);
  line-height: 1.02; letter-spacing: -0.02em; margin: 0 0 var(--sg-r4); color: inherit;
}
.sg-display em, .sg-h2 em { font-style: italic; font-weight: 700; color: var(--sg-brass); }
.is-dark .sg-display em, .is-dark .sg-h2 em { color: var(--sg-brass-bright); }

.sg-h2 {
  font-family: var(--sg-display); font-weight: 700; font-size: var(--sg-fs-h2);
  line-height: 1.08; letter-spacing: -0.015em; margin: 0 0 var(--sg-r4);
}

.sg-h3 {
  font-family: var(--sg-display); font-weight: 700; font-size: var(--sg-fs-h3);
  line-height: 1.15; letter-spacing: -0.01em; margin: 0 0 var(--sg-r3);
}

.sg-lead {
  font-size: var(--sg-fs-lead); line-height: 1.55; color: var(--sg-navy-700);
  max-width: 56ch; margin: 0 0 var(--sg-r5); font-weight: 400;
}
.is-dark .sg-lead { color: var(--sg-chrome); }

.sg-meta { font-size: var(--sg-fs-meta); color: var(--sg-mute); font-variant-numeric: tabular-nums; }
.is-dark .sg-meta { color: rgba(197,204,214,.7); }

.sg-marker { font-family: var(--sg-display); font-style: italic; font-size: 1rem; color: var(--sg-brass); }

.sg-link {
  color: inherit; text-decoration: none;
  background: linear-gradient(to right, currentColor, currentColor) no-repeat 0 100%/0 1px;
  transition: background-size var(--sg-d2) var(--sg-ease); padding-bottom: 1px;
}
.sg-link:hover, .sg-link:focus-visible { background-size: 100% 1px; }

/* ============================================================
   BUTTONS - white text always, regardless of dark or light bg
   ============================================================ */
.sg-btn {
  --_bg: var(--sg-navy-800);
  --_fg: #FFFFFF;
  --_brd: var(--sg-navy-800);
  display: inline-flex; align-items: center; justify-content: center; gap: .65rem;
  padding: .95rem 1.5rem;
  font: 600 .9rem/1 var(--sg-body) !important;
  letter-spacing: .08em !important; text-transform: uppercase !important;
  color: var(--_fg) !important;
  background: var(--_bg) !important;
  background-color: var(--_bg) !important;
  border: 1px solid var(--_brd) !important;
  border-radius: var(--sg-radius) !important;
  cursor: pointer; text-decoration: none !important;
  transition: transform var(--sg-d1) var(--sg-ease), background-color var(--sg-d1) var(--sg-ease), color var(--sg-d1) var(--sg-ease), border-color var(--sg-d1) var(--sg-ease), box-shadow var(--sg-d2) var(--sg-ease);
  position: relative; overflow: hidden;
  min-height: 48px;
}
.sg-btn, .sg-btn span, .sg-btn .sg-btn__arrow { color: var(--_fg) !important; }
.sg-btn:hover { transform: translateY(-2px); box-shadow: var(--sg-shadow-1); }
.sg-btn:active { transform: translateY(0); }
.sg-btn:focus-visible { outline: 2px solid var(--sg-brass); outline-offset: 3px; }
.sg-btn .sg-btn__arrow { display: inline-block; transition: transform var(--sg-d1) var(--sg-ease); color: inherit; }
.sg-btn:hover .sg-btn__arrow { transform: translateX(3px); }
.sg-btn span { color: inherit; }
.sg-btn--ghost { --_bg: transparent; --_fg: var(--sg-navy-800); --_brd: var(--sg-navy-800); }
.sg-btn--ghost:hover { --_bg: var(--sg-navy-800); --_fg: #FFFFFF; }
.is-dark .sg-btn--ghost { --_fg: #FFFFFF; --_brd: var(--sg-cream); }
.is-dark .sg-btn--ghost:hover { --_bg: var(--sg-cream); --_fg: var(--sg-navy-900); }
.sg-btn--brass {
  --_bg: #9A6A3F;
  --_fg: #FFFFFF;
  --_brd: #B07A4A;
  background: linear-gradient(135deg, #9A6A3F 0%, #C9A14A 50%, #9A6A3F 100%) !important;
  background-size: 200% auto !important;
  animation: sg-gold-shift 9s ease-in-out infinite;
  text-shadow: 0 1px 2px rgba(0,0,0,.25);
}
.sg-btn--brass, .sg-btn--brass span { color: #FFFFFF !important; }
@keyframes sg-gold-shift {
  0%, 100% { background-position: 0% 50%; }
  50%      { background-position: 100% 50%; }
}
.sg-btn--brass:hover { box-shadow: 0 16px 40px -10px rgba(176,122,74,.55); }

/* ============================================================
   HERO
   ============================================================ */
.sg-hero {
  position: relative; overflow: hidden;
  background: var(--sg-paper); color: var(--sg-ink); padding: 0;
}
.sg-hero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(60% 50% at 0% 30%, rgba(201,161,74,.07), transparent 70%),
    radial-gradient(50% 40% at 100% 80%, rgba(53,87,129,.08), transparent 70%);
  background-size: 200% 200%, 200% 200%;
  animation: sg-hero-drift 26s ease-in-out infinite;
}
@keyframes sg-hero-drift {
  0%, 100% { background-position: 0% 0%, 100% 100%; }
  50%      { background-position: 30% 30%, 70% 70%; }
}
.sg-hero__inner {
  display: grid; grid-template-columns: 1.05fr .95fr;
  min-height: clamp(560px, 88vh, 900px); align-items: stretch;
  position: relative; z-index: 1;
}
.sg-hero__copy {
  padding: clamp(2.25rem, 6vw, 5.5rem) clamp(1.25rem, 4vw, 4.5rem);
  display: flex; flex-direction: column; justify-content: center; position: relative; z-index: 2;
  min-width: 0;
}
.sg-hero__masthead {
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
  font: 600 .7rem/1.2 var(--sg-body);
  letter-spacing: .26em; text-transform: uppercase;
  color: var(--sg-navy-700);
  margin-bottom: var(--sg-r5);
}
.sg-hero__masthead::after { content: ""; flex: 1; height: 1px; background: var(--sg-rule); min-width: 30px; }
.sg-hero__display {
  font-family: var(--sg-display); font-weight: 700;
  font-size: var(--sg-fs-display);
  line-height: 1.02; letter-spacing: -0.025em;
  color: var(--sg-navy-900); margin: 0 0 var(--sg-r5);
}
.sg-hero__display em { font-style: italic; color: var(--sg-brass); display: inline-block; }
.sg-hero__sub { font-size: var(--sg-fs-lead); color: var(--sg-navy-700); max-width: 38ch; margin: 0 0 var(--sg-r5); line-height: 1.55; }
.sg-hero__ctas { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
.sg-hero__phone {
  display: inline-flex; align-items: center; gap: .6rem;
  font: 600 .9rem/1 var(--sg-body); letter-spacing: .04em;
  color: var(--sg-navy-800); text-decoration: none;
  padding: .85rem 1.15rem; border-radius: var(--sg-radius);
  border: 1px solid var(--sg-rule);
  transition: background var(--sg-d1) var(--sg-ease);
  min-height: 48px;
}
.sg-hero__phone:hover { background: var(--sg-bone); }
.sg-hero__phone svg { width: 16px; height: 16px; flex-shrink: 0; }

.sg-hero__media {
  position: relative; overflow: hidden;
  background: var(--sg-navy-900);
  margin: 0 !important; padding: 0 !important;
  width: 100%; height: 100%;
  display: block;
  min-height: 100%;
  align-self: stretch;
  justify-self: stretch;
}
figure.sg-hero__media { margin: 0 !important; }
.sg-hero__inner > figure.sg-hero__media { display: block; min-height: 100%; }
.sg-hero__media::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(4,16,43,.55) 0%, rgba(4,16,43,.12) 45%, rgba(4,16,43,0) 70%);
  z-index: 2; pointer-events: none;
}
.sg-hero__media::after {
  content: ""; position: absolute; inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.18 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: .35; mix-blend-mode: overlay; pointer-events: none; z-index: 3;
}
.sg-hero__img {
  width: 100% !important; height: 100% !important;
  object-fit: cover !important; display: block !important;
  transform: scale(1.04); transition: transform 1.6s var(--sg-ease);
  margin: 0 !important;
  position: absolute; inset: 0;
}
.sg-hero.is-loaded .sg-hero__img { transform: scale(1); }
.sg-hero__caption {
  position: absolute; left: 1.25rem; bottom: 1rem;
  font: italic 400 .82rem/1.4 var(--sg-display);
  color: rgba(255,255,255,.85); z-index: 4; max-width: 36ch;
  text-shadow: 0 1px 6px rgba(0,0,0,.3);
}
.sg-hero__rail {
  position: absolute; left: clamp(1.5rem,4vw,4.5rem); top: 50%;
  transform: translateY(-50%) rotate(-90deg); transform-origin: left top;
  font: 600 .72rem/1 var(--sg-body); letter-spacing: .3em; text-transform: uppercase;
  color: var(--sg-navy-700); display: none; white-space: nowrap; z-index: 1;
}
@media (min-width: 1200px) {
  .sg-hero__rail { display: block; }
  .sg-hero__copy { padding-left: clamp(4.5rem, 7vw, 7rem); }
}

/* Reveal */
.sg-reveal { opacity: 0; transform: translateY(20px); transition: opacity var(--sg-d3) var(--sg-ease), transform var(--sg-d3) var(--sg-ease); }
.sg-reveal.is-in { opacity: 1; transform: none; }
.sg-reveal--d1 { transition-delay: 80ms; }
.sg-reveal--d2 { transition-delay: 200ms; }
.sg-reveal--d3 { transition-delay: 340ms; }
.sg-reveal--d4 { transition-delay: 480ms; }

@media (max-width: 900px) {
  .sg-hero__inner { grid-template-columns: 1fr; min-height: auto; }
  .sg-hero__media { aspect-ratio: 5/4; order: -1; max-height: 60vh; }
  .sg-hero__copy { padding: 2rem 1.25rem 2.5rem; }
  .sg-hero__display { font-size: clamp(2.1rem, 8vw, 3.5rem); }
  .sg-hero__sub { font-size: 1.05rem; }
  .sg-hero__rail { display: none; }
  .sg-hero__ctas { width: 100%; }
  .sg-hero__ctas .sg-btn, .sg-hero__phone { flex: 1 1 auto; min-width: 0; justify-content: center; }
}

/* ============================================================
   TRUST STRIP
   ============================================================ */
.sg-trust { background: var(--sg-cream); border-top: 1px solid var(--sg-rule); border-bottom: 1px solid var(--sg-rule); padding: 1.5rem 0; }
.sg-trust__row { display: flex; align-items: center; gap: clamp(1rem,3vw,2.5rem); flex-wrap: wrap; justify-content: space-between; }
.sg-trust__label { font: 600 .72rem/1 var(--sg-body); letter-spacing: .26em; text-transform: uppercase; color: var(--sg-navy-700); }
.sg-trust__items { display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: center; opacity: .85; }
.sg-trust__item { font: italic 500 .95rem/1 var(--sg-display); color: var(--sg-navy-800); }
@media (max-width: 700px) {
  .sg-trust__row { flex-direction: column; align-items: flex-start; gap: 1rem; }
  .sg-trust__items { gap: .85rem 1.4rem; }
  .sg-trust__item { font-size: .9rem; }
}

/* ============================================================
   STATS
   ============================================================ */
.sg-stats { background: var(--sg-navy-900); color: var(--sg-cream); }
.sg-stats__head { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 2rem; margin-bottom: var(--sg-r6); }
.sg-stats__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-top: 1px solid rgba(247,244,236,.18); }
.sg-stat { padding: 2rem 1.25rem 1.75rem 0; border-right: 1px solid rgba(247,244,236,.18); position: relative; min-width: 0; }
.sg-stat:last-child { border-right: 0; padding-right: 0; }
.sg-stat__num {
  font-family: var(--sg-display); font-weight: 700;
  font-size: clamp(2.25rem, 5vw, 4.25rem); line-height: 1; letter-spacing: -0.02em;
  color: var(--sg-cream); display: block; margin-bottom: .8rem;
  font-variant-numeric: tabular-nums;
}
.sg-stat__num sup { font-size: .45em; vertical-align: top; color: var(--sg-brass-bright); margin-left: .15em; font-style: italic; }
.sg-stat__label { font: 600 .72rem/1.3 var(--sg-body); letter-spacing: .22em; text-transform: uppercase; color: var(--sg-chrome); margin-bottom: .35rem; }
.sg-stat__hint { font: italic 400 .9rem/1.5 var(--sg-display); color: rgba(197,204,214,.75); max-width: 22ch; }

@media (max-width: 900px) {
  .sg-stats__head { grid-template-columns: 1fr; gap: 1rem; }
  .sg-stats__grid { grid-template-columns: 1fr 1fr; }
  .sg-stat:nth-child(2) { border-right: 0; }
  .sg-stat { border-bottom: 1px solid rgba(247,244,236,.18); padding: 1.5rem 1rem 1.5rem 0; }
  .sg-stat:nth-child(2) { padding-right: 0; }
  .sg-stat:nth-last-child(-n+2) { border-bottom: 0; }
}
@media (max-width: 560px) {
  .sg-stats__grid { grid-template-columns: 1fr; }
  .sg-stat { border-right: 0; border-bottom: 1px solid rgba(247,244,236,.18); padding: 1.25rem 0; }
  .sg-stat:last-child { border-bottom: 0; }
}

/* ============================================================
   SERVICES CARDS
   ============================================================ */
.sg-services { background: var(--sg-paper); }
.sg-services__head { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: end; margin-bottom: var(--sg-r6); }
.sg-services__intro { max-width: 38ch; }
.sg-services__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }

.sg-card {
  --_tilt-x: 0deg; --_tilt-y: 0deg; --_lift: 0;
  position: relative; display: flex; flex-direction: column;
  padding: clamp(1.5rem, 3vw, 2.5rem);
  background: #fff;
  border: 1px solid var(--sg-rule);
  border-radius: var(--sg-radius);
  text-decoration: none; color: inherit;
  overflow: hidden;
  transition: transform var(--sg-d2) var(--sg-ease-2), box-shadow var(--sg-d2) var(--sg-ease-2), border-color var(--sg-d1) var(--sg-ease);
  transform: perspective(1200px) rotateX(var(--_tilt-x)) rotateY(var(--_tilt-y)) translateY(calc(var(--_lift) * -4px));
  transform-style: preserve-3d;
  min-height: 320px;
}
.sg-card::before {
  content: ""; position: absolute; inset: 0;
  border-radius: inherit; padding: 1px;
  background: linear-gradient(135deg, var(--sg-brass), transparent 35%, transparent 65%, var(--sg-navy-700));
  -webkit-mask: linear-gradient(#000,#000) content-box, linear-gradient(#000,#000);
  -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity var(--sg-d2) var(--sg-ease);
  pointer-events: none;
}
.sg-card:hover { --_lift: 1; box-shadow: var(--sg-shadow-2); border-color: transparent; }
.sg-card:hover::before { opacity: 1; }
.sg-card:focus-visible { outline: 2px solid var(--sg-brass); outline-offset: 4px; }

.sg-card__index { font: italic 500 .9rem/1 var(--sg-display); color: var(--sg-brass); margin-bottom: 1.5rem; display: flex; align-items: center; gap: .75rem; }
.sg-card__index::after { content: ""; flex: 1; height: 1px; background: var(--sg-rule); }
.sg-card__icon { width: 44px; height: 44px; margin-bottom: 1.15rem; display: inline-flex; align-items: center; justify-content: center; color: var(--sg-navy-800); transition: transform var(--sg-d2) var(--sg-ease); }
.sg-card:hover .sg-card__icon { transform: translateY(-3px) rotate(-3deg); color: var(--sg-brass); }
.sg-card__title { font-family: var(--sg-display); font-weight: 700; font-size: 1.55rem; line-height: 1.15; letter-spacing: -.01em; color: var(--sg-navy-900); margin: 0 0 .75rem; }
.sg-card__desc { color: var(--sg-mute); font-size: 1rem; line-height: 1.55; margin: 0 0 1.5rem; }
.sg-card__cta { margin-top: auto; display: inline-flex; align-items: center; gap: .55rem; font: 600 .8rem/1 var(--sg-body); letter-spacing: .18em; text-transform: uppercase; color: var(--sg-navy-800); }
.sg-card__cta svg { width: 14px; height: 14px; transition: transform var(--sg-d1) var(--sg-ease); }
.sg-card:hover .sg-card__cta svg { transform: translateX(4px); }

@media (max-width: 900px) {
  .sg-services__head { grid-template-columns: 1fr; gap: 1rem; }
  .sg-services__grid { grid-template-columns: 1fr; gap: 1rem; }
  .sg-card { min-height: auto; }
}

/* ============================================================
   FEATURE EDITORIAL
   ============================================================ */
.sg-feature { background: var(--sg-cream); }
.sg-feature__grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.sg-feature__media { position: relative; }
.sg-feature__media img { width: 100%; aspect-ratio: 4/5; object-fit: cover; display: block; border-radius: var(--sg-radius); }
.sg-feature__media::after { content: ""; position: absolute; inset: 0; border: 1px solid var(--sg-brass); border-radius: var(--sg-radius); transform: translate(14px, 14px); pointer-events: none; z-index: -1; }
.sg-feature__media-cap { display: block; margin-top: 1rem; font: italic 400 .85rem/1.5 var(--sg-display); color: var(--sg-navy-700); max-width: 32ch; }
.sg-feature__sig { font: italic 600 1.4rem/1 var(--sg-display); color: var(--sg-brass); margin: 1.75rem 0 .25rem; }
.sg-feature__sig-name { font: 600 .82rem/1.4 var(--sg-body); letter-spacing: .18em; text-transform: uppercase; color: var(--sg-navy-800); }
@media (max-width: 900px) { .sg-feature__grid { grid-template-columns: 1fr; gap: 2rem; } }

/* ============================================================
   PROCESS
   ============================================================ */
.sg-process { background: var(--sg-paper); }
.sg-process__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--sg-rule); }
.sg-process__step { padding: 2.25rem 1.5rem 1.75rem 0; border-right: 1px solid var(--sg-rule); position: relative; }
.sg-process__step:last-child { border-right: 0; padding-right: 0; }
.sg-process__num { font: italic 700 .9rem/1 var(--sg-display); color: var(--sg-brass); margin-bottom: 1.15rem; display: block; }
.sg-process__title { font-family: var(--sg-display); font-weight: 700; font-size: 1.45rem; line-height: 1.2; letter-spacing: -.01em; color: var(--sg-navy-900); margin: 0 0 .6rem; }
.sg-process__title em { font-style: italic; color: var(--sg-brass); }
.sg-process__body { color: var(--sg-mute); line-height: 1.6; margin: 0; }
@media (max-width: 900px) {
  .sg-process__grid { grid-template-columns: 1fr; }
  .sg-process__step { border-right: 0; border-bottom: 1px solid var(--sg-rule); padding: 1.5rem 0; }
  .sg-process__step:last-child { border-bottom: 0; }
}

/* ============================================================
   TESTIMONIAL MARQUEE
   ============================================================ */
.sg-testify { background: var(--sg-bone); overflow: hidden; padding: var(--sg-r7) 0; }
.sg-testify__head { text-align: center; margin-bottom: var(--sg-r6); }
.sg-testify__head .sg-eyebrow { justify-content: center; }
.sg-marquee {
  position: relative; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.sg-marquee__track { display: flex; gap: 1.25rem; width: max-content; animation: sg-marquee 60s linear infinite; }
.sg-marquee:hover .sg-marquee__track { animation-play-state: paused; }
@keyframes sg-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.sg-quote { flex: 0 0 clamp(260px, 32vw, 420px); background: var(--sg-paper); border: 1px solid var(--sg-rule); padding: 1.75rem 1.5rem; border-radius: var(--sg-radius); display: flex; flex-direction: column; gap: 1.1rem; }
.sg-quote__mark { font: italic 700 3.5rem/.5 var(--sg-display); color: var(--sg-brass); height: .5em; user-select: none; }
.sg-quote__body { font-family: var(--sg-display); font-style: italic; font-size: 1.05rem; line-height: 1.5; color: var(--sg-navy-800); margin: 0; }
.sg-quote__attr { display: flex; align-items: center; gap: .75rem; margin-top: auto; }
.sg-quote__avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--sg-chrome); font: 600 .85rem/36px var(--sg-body); text-align: center; color: var(--sg-navy-900); letter-spacing: .04em; }
.sg-quote__who { font: 600 .82rem/1.3 var(--sg-body); color: var(--sg-navy-900); }
.sg-quote__where { font: italic 400 .8rem/1.3 var(--sg-display); color: var(--sg-mute); }

/* ============================================================
   FAQ
   ============================================================ */
.sg-faq { background: var(--sg-cream); }
.sg-faq__grid { display: grid; grid-template-columns: 1fr 1.6fr; gap: clamp(2rem, 5vw, 5rem); }
.sg-faq__head { position: sticky; top: 7rem; align-self: start; }
.sg-faq__list { border-top: 1px solid var(--sg-rule); }
.sg-faq__item { border-bottom: 1px solid var(--sg-rule); }
.sg-faq__btn {
  width: 100%; padding: 1.4rem 0 1.3rem;
  display: grid; grid-template-columns: auto 1fr auto; gap: 1.25rem; align-items: baseline;
  background: transparent; border: 0; cursor: pointer; text-align: left; font: inherit;
  color: var(--sg-navy-900);
}
.sg-faq__btn:focus-visible { outline: 2px solid var(--sg-brass); outline-offset: 4px; }
.sg-faq__num { font: italic 500 .85rem/1 var(--sg-display); color: var(--sg-brass); font-variant-numeric: tabular-nums; }
.sg-faq__q { font-family: var(--sg-display); font-weight: 700; font-size: clamp(1.05rem, 1.6vw, 1.35rem); line-height: 1.3; }
.sg-faq__toggle { width: 28px; height: 28px; position: relative; flex-shrink: 0; transition: transform var(--sg-d2) var(--sg-ease-2); align-self: center; }
.sg-faq__toggle::before, .sg-faq__toggle::after { content: ""; position: absolute; left: 50%; top: 50%; background: var(--sg-navy-800); transition: transform var(--sg-d2) var(--sg-ease-2), opacity var(--sg-d2) var(--sg-ease-2); }
.sg-faq__toggle::before { width: 14px; height: 1px; transform: translate(-50%,-50%); }
.sg-faq__toggle::after  { width: 1px; height: 14px; transform: translate(-50%,-50%); }
.sg-faq__item.is-open .sg-faq__toggle::after { opacity: 0; transform: translate(-50%,-50%) rotate(90deg); }
.sg-faq__item.is-open .sg-faq__toggle { transform: rotate(90deg); }
.sg-faq__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--sg-d2) var(--sg-ease-2); }
.sg-faq__item.is-open .sg-faq__panel { grid-template-rows: 1fr; }
.sg-faq__panel-inner { overflow: hidden; }
.sg-faq__a { padding: 0 0 1.5rem 2.5rem; color: var(--sg-mute); line-height: 1.6; max-width: 60ch; }
@media (max-width: 900px) {
  .sg-faq__grid { grid-template-columns: 1fr; }
  .sg-faq__head { position: static; }
  .sg-faq__btn { gap: .85rem; }
  .sg-faq__a { padding-left: 2rem; }
}

/* ============================================================
   CTA BANNER - white text, breathing brass glow
   ============================================================ */
.sg-cta { background: var(--sg-navy-900); color: #FFFFFF !important; position: relative; overflow: hidden; }
.sg-cta * { color: inherit; }
.sg-cta::before {
  content: ""; position: absolute; right: -8%; top: -20%; width: 60%; height: 140%;
  background: radial-gradient(closest-side, rgba(176,122,74,.32), transparent 70%);
  pointer-events: none;
  animation: sg-cta-breathe 14s ease-in-out infinite;
}
@keyframes sg-cta-breathe {
  0%, 100% { transform: scale(1) translate(0,0); opacity: .85; }
  50%      { transform: scale(1.08) translate(-3%, 1%); opacity: 1; }
}
.sg-cta__grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 2.5rem; align-items: center; position: relative; z-index: 1; }
.sg-cta__title {
  font-family: var(--sg-display); font-weight: 700;
  font-size: clamp(1.65rem, 3.5vw, 3rem);
  line-height: 1.1; letter-spacing: -.015em;
  color: #FFFFFF !important;
  margin: 0 0 1rem;
}
.sg-cta__title em, .sg-cta em { font-style: italic; color: var(--sg-brass-bright) !important; }
.sg-cta__sub { color: #E8ECF2 !important; max-width: 50ch; margin: 0; line-height: 1.55; }
.sg-cta__actions { display: flex; flex-direction: column; gap: .8rem; align-items: flex-end; }
.sg-cta__phone { font: italic 400 1.05rem/1 var(--sg-display); color: #F7F4EC !important; text-decoration: none; text-align: right; }
.sg-cta__phone strong { font: 700 1.55rem/1 var(--sg-display); font-style: italic; color: var(--sg-brass-bright) !important; display: block; margin-top: .3rem; }
@media (max-width: 900px) {
  .sg-cta__grid { grid-template-columns: 1fr; gap: 1.75rem; }
  .sg-cta__actions { align-items: stretch; }
  .sg-cta__phone { text-align: left; }
  .sg-cta .sg-btn { width: 100%; }
}

/* ============================================================
   STICKY MOBILE DOCK - tighter, more readable
   ============================================================ */
.sg-dock {
  position: fixed; left: 8px; right: 8px; bottom: 8px; z-index: 99;
  display: none; gap: 6px;
  padding: 6px;
  background: rgba(4,16,43,.96);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-radius: 14px;
  box-shadow: 0 20px 50px -10px rgba(4,16,43,.55), 0 0 0 1px rgba(255,255,255,.08) inset;
  transform: translateY(120%);
  transition: transform var(--sg-d2) var(--sg-ease-2);
}
.sg-dock.is-on { transform: translateY(0); }
.sg-dock a {
  flex: 1 1 0; display: inline-flex; flex-direction: row; align-items: center; justify-content: center; gap: .4rem;
  padding: .75rem .5rem;
  border-radius: 10px;
  font: 700 .85rem/1 var(--sg-body) !important; letter-spacing: .02em;
  text-decoration: none !important;
  color: #FFFFFF !important;
  background: rgba(255,255,255,.10) !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  transition: background var(--sg-d1) var(--sg-ease);
  min-height: 50px;
  white-space: nowrap;
}
.sg-dock a, .sg-dock a span, .sg-dock a svg { color: #FFFFFF !important; }
.sg-dock a:hover, .sg-dock a:focus-visible { background: rgba(255,255,255,.16); }
.sg-dock a.is-primary {
  background: linear-gradient(135deg, #B07A4A, #C9A14A, #B07A4A);
  background-size: 200% auto;
  border-color: #C9A14A;
  flex: 1.4 1 0;
  animation: sg-gold-shift 9s ease-in-out infinite;
}
.sg-dock svg { width: 16px; height: 16px; flex-shrink: 0; }
@media (max-width: 900px) {
  .sg-dock { display: flex; }
  body { padding-bottom: 76px; }
}
@media (max-width: 380px) {
  .sg-dock a { font-size: .76rem; padding: .7rem .35rem; }
  .sg-dock svg { width: 14px; height: 14px; }
}

/* ============================================================
   AREAS SERVED
   ============================================================ */
.sg-areas { background: var(--sg-navy-900); color: var(--sg-cream); }
.sg-areas__grid { display: grid; grid-template-columns: 1fr 1.6fr; gap: clamp(2rem,5vw,5rem); align-items: start; }
.sg-areas__cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem 2rem; }
.sg-areas__col h4 { font: 600 .72rem/1 var(--sg-body); letter-spacing: .22em; text-transform: uppercase; color: var(--sg-brass-bright); margin: 0 0 1rem; padding-bottom: .75rem; border-bottom: 1px solid rgba(247,244,236,.18); }
.sg-areas__col ul { list-style: none; padding: 0; margin: 0; }
.sg-areas__col li { padding: .35rem 0; font-size: .98rem; color: var(--sg-chrome); }
.sg-areas__col li em { font: italic 400 .8rem/1 var(--sg-display); color: rgba(197,204,214,.55); margin-left: .35rem; }
@media (max-width: 900px) { .sg-areas__grid { grid-template-columns: 1fr; } .sg-areas__cols { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .sg-areas__cols { grid-template-columns: 1fr; } }

/* ============================================================
   THEME-BUILDER HEADER / FOOTER ENVELOPES
   ============================================================ */
.elementor-location-header,
.elementor-location-footer {
  overflow: visible;
  max-width: 100vw;
}
.elementor-location-header { position: relative; z-index: 50; }
.elementor-location-header > .elementor,
.elementor-location-footer > .elementor { max-width: 100vw; overflow-x: clip; }
.elementor-location-header img,
.elementor-location-footer img { max-width: 100%; height: auto; }

/* Defeat Hello Elementor button defaults sitewide for our anchors-styled-as-buttons */
.sgh__cta, .sgh__phone,
.sgf a,
.sg-btn, .sg-btn--brass, .sg-btn--ghost,
.sg-dock a, .sgc__btn,
.sgh__nav a {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* Hello Elementor adds bg + padding to button elements — neutralize for ours */
button.sg-faq__btn:hover,
button.sg-faq__btn:focus { background: transparent !important; }

@media print { .sg-dock { display: none !important; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important; animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important; scroll-behavior: auto !important;
  }
  .sg-reveal { opacity: 1; transform: none; }
}
