/* ==========================================================================
   GRACE CONSTRUCTION — Design System
   Brand palette sampled from logopositive.png
   Navy #0B1E3C · Red #ED1C24 · Orange #F47321
   ========================================================================== */

:root{
  --gc-navy:#0B1E3C;
  --gc-navy-900:#060F1F;
  --gc-navy-800:#0B1E3C;
  --gc-navy-700:#132B52;
  --gc-navy-600:#1D3B6B;
  --gc-red:#ED1C24;
  --gc-red-dark:#C4141B;
  --gc-orange:#F47321;
  --gc-orange-dark:#D65D12;
  --gc-ink:#101828;
  --gc-body:#4A5568;
  --gc-muted:#71809A;
  --gc-line:#E3E7EE;
  --gc-bg:#FFFFFF;
  --gc-bg-soft:#F6F8FB;
  --gc-bg-tint:#EFF3F9;
  --gc-gold:#C9A227;

  --gc-shadow-sm:0 1px 2px rgba(11,30,60,.06), 0 2px 8px rgba(11,30,60,.05);
  --gc-shadow:0 4px 12px rgba(11,30,60,.07), 0 14px 40px rgba(11,30,60,.09);
  --gc-shadow-lg:0 10px 24px rgba(11,30,60,.10), 0 30px 70px rgba(11,30,60,.16);

  --gc-r-sm:8px;
  --gc-r:14px;
  --gc-r-lg:22px;

  --gc-max:1240px;
  --gc-max-narrow:920px;

  --gc-h-font:'Montserrat', 'Helvetica Neue', Arial, sans-serif;
  --gc-b-font:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --gc-ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- Base ---------- */
body.grace{
  font-family:var(--gc-b-font);
  color:var(--gc-body);
  font-size:17px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  background:var(--gc-bg);
}
body.grace h1,body.grace h2,body.grace h3,body.grace h4,body.grace h5,body.grace h6{
  font-family:var(--gc-h-font);
  color:var(--gc-navy);
  font-weight:800;
  line-height:1.12;
  letter-spacing:-.02em;
  margin:0 0 .55em;
}
body.grace a{color:var(--gc-navy);text-decoration:none;transition:color .2s var(--gc-ease)}
body.grace a:hover{color:var(--gc-red)}
body.grace p{margin:0 0 1.15em}
body.grace img{max-width:100%;height:auto;display:block}
body.grace strong{color:var(--gc-navy);font-weight:650}

/* Astra full-width canvas resets */
body.grace .ast-container,
body.grace .site-content .ast-container{max-width:100%;padding-left:0;padding-right:0}
body.grace .entry-content>*{margin-left:0;margin-right:0}
body.grace .site-content #primary{margin:0;padding:0}
body.grace .entry-content{margin-top:0}
body.grace .ast-page-builder-template .site-content>.ast-container{max-width:100%}

/* ---------- Layout primitives ---------- */
.gc-wrap{max-width:var(--gc-max);margin:0 auto;padding:0 24px;width:100%}
.gc-wrap--narrow{max-width:var(--gc-max-narrow)}
.gc-section{padding:96px 0;position:relative}
.gc-section--tight{padding:64px 0}
.gc-section--soft{background:var(--gc-bg-soft)}
.gc-section--tint{background:var(--gc-bg-tint)}
.gc-section--navy{background:var(--gc-navy);color:rgba(255,255,255,.82)}
body.grace .gc-section--navy h1,body.grace .gc-section--navy h2,body.grace .gc-section--navy h3,body.grace .gc-section--navy h4{color:#fff}
body.grace .gc-section--navy a{color:#fff}

.gc-section--navy.gc-topo{
  background-image:
    radial-gradient(circle at 12% 20%, rgba(244,115,33,.13), transparent 42%),
    radial-gradient(circle at 88% 78%, rgba(237,28,36,.12), transparent 45%);
}

/* ---------- Typography helpers ---------- */
.gc-eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--gc-h-font);font-weight:750;font-size:12px;
  letter-spacing:.18em;text-transform:uppercase;color:var(--gc-red);
  margin:0 0 18px;
}
.gc-eyebrow::before{content:"";width:26px;height:3px;background:var(--gc-red);border-radius:2px;flex:none}
.gc-section--navy .gc-eyebrow{color:var(--gc-orange)}
.gc-section--navy .gc-eyebrow::before{background:var(--gc-orange)}

.gc-h1{font-size:clamp(2.4rem,5.2vw,4rem)}
.gc-h2{font-size:clamp(1.95rem,3.7vw,3rem)}
.gc-h3{font-size:clamp(1.35rem,2.2vw,1.85rem)}
.gc-lead{font-size:clamp(1.05rem,1.35vw,1.2rem);line-height:1.7;color:var(--gc-body)}
.gc-section--navy .gc-lead{color:rgba(255,255,255,.8)}
.gc-head{max-width:760px;margin-bottom:56px}
.gc-head--center{margin-left:auto;margin-right:auto;text-align:center}
.gc-head--center .gc-eyebrow{justify-content:center}

/* ---------- Buttons ---------- */
.gc-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--gc-h-font);font-weight:750;font-size:15px;letter-spacing:.02em;
  padding:16px 30px;border-radius:var(--gc-r-sm);border:2px solid transparent;
  cursor:pointer;transition:all .25s var(--gc-ease);text-align:center;line-height:1.2;
}
.gc-btn svg{width:18px;height:18px;flex:none}
body.grace .gc-btn,
body.grace .gc-link-arrow,
body.grace .gc-city,
body.grace .gc-pill,
body.grace .gc-card__media,
body.grace .gc-topbar a,
body.grace .gc-footer a,
body.grace .gc-panel__nav a,
body.grace .gc-crumbs a,
body.grace .gc-cta__phone,
body.grace .gc-mobilebar a{text-decoration:none!important}
/* Long-form copy keeps underlined links for scannability. */
body.grace .gc-prose p > a:not(.gc-btn):not(.gc-link-arrow),
body.grace .gc-faq__a a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;color:var(--gc-red)}
.gc-btn--primary{background:var(--gc-red);color:#fff!important;box-shadow:0 8px 22px rgba(237,28,36,.28)}
.gc-btn--primary:hover{background:var(--gc-red-dark);color:#fff!important;transform:translateY(-2px);box-shadow:0 14px 30px rgba(237,28,36,.34)}
.gc-btn--navy{background:var(--gc-navy);color:#fff!important;box-shadow:0 8px 22px rgba(11,30,60,.25)}
.gc-btn--navy:hover{background:var(--gc-navy-700);color:#fff!important;transform:translateY(-2px)}
.gc-btn--ghost{background:transparent;color:#fff!important;border-color:rgba(255,255,255,.45)}
.gc-btn--ghost:hover{background:#fff;color:var(--gc-navy)!important;border-color:#fff;transform:translateY(-2px)}
.gc-btn--outline{background:transparent;color:var(--gc-navy)!important;border-color:var(--gc-line)}
.gc-btn--outline:hover{border-color:var(--gc-navy);background:var(--gc-navy);color:#fff!important;transform:translateY(-2px)}
.gc-btn--lg{padding:19px 38px;font-size:16px}
.gc-btn--block{width:100%}
.gc-btns{display:flex;flex-wrap:wrap;gap:14px;align-items:center}

.gc-link-arrow{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--gc-h-font);
  font-weight:700;font-size:14.5px;color:var(--gc-red)!important;letter-spacing:.01em;
}
.gc-link-arrow::after{content:"→";transition:transform .25s var(--gc-ease)}
.gc-link-arrow:hover::after{transform:translateX(5px)}

/* ---------- Header ---------- */
.gc-topbar{background:var(--gc-navy);color:rgba(255,255,255,.86);font-size:13.5px}
.gc-topbar .gc-wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:42px;flex-wrap:wrap}
body.grace .gc-topbar a{color:#fff!important;font-weight:600}
.gc-topbar a:hover{color:var(--gc-orange)!important}
.gc-topbar__items{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.gc-topbar__item{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.gc-topbar__item svg{width:15px;height:15px;opacity:.85;flex:none}
.gc-t-short{display:none}

body.grace .site-header{box-shadow:0 1px 0 rgba(11,30,60,.08)}
body.grace .ast-primary-header-bar{border-bottom:0}

/* The logo already reads "Grace Construction" — drop the duplicate text. */
body.grace .site-title,
body.grace .site-description{display:none!important}
body.grace .ast-site-identity{padding:10px 0}
body.grace .site-logo-img img{max-width:190px;height:auto}

/* Keep the nav + CTA on one line at laptop widths. */
body.grace .ast-primary-header-bar .site-primary-header-wrap{min-height:0}
body.grace .main-header-menu > .menu-item > .menu-link{padding-left:14px;padding-right:14px}
body.grace .ast-builder-button-wrap{margin-left:14px}
body.grace .site-header .ast-custom-button{
  white-space:nowrap;padding:13px 24px;font-size:14.5px;line-height:1.15;letter-spacing:.02em
}
body.grace .ast-builder-menu-1 .main-header-menu{flex-wrap:nowrap}
@media(min-width:922px) and (max-width:1180px){
  body.grace .main-header-menu > .menu-item > .menu-link{padding-left:10px;padding-right:10px;font-size:14px}
  body.grace .site-logo-img img{max-width:150px}
  body.grace .site-header .ast-custom-button{padding:11px 18px;font-size:13.5px}
}
body.grace .main-header-menu > .menu-item > .menu-link{
  font-family:var(--gc-h-font);font-weight:650;font-size:15px;letter-spacing:.005em;color:var(--gc-navy)
}
body.grace .main-header-menu > .menu-item > .menu-link:hover,
body.grace .main-header-menu > .current-menu-item > .menu-link{color:var(--gc-red)}
body.grace .main-header-menu .sub-menu{box-shadow:var(--gc-shadow);border-radius:var(--gc-r-sm);overflow:hidden;border:0;padding:8px 0}
body.grace .main-header-menu .sub-menu .menu-link{font-size:14.5px;font-weight:550;padding:11px 22px}
body.grace .ast-builder-menu .main-header-menu .menu-item.menu-item-has-children>.menu-link{padding-right:6px}
body.grace .site-header .ast-custom-button,
body.grace .site-header .ast-header-button-1 .ast-custom-button{
  background:var(--gc-red);font-family:var(--gc-h-font);font-weight:750;border-radius:var(--gc-r-sm)
}

/* ---------- Hero ---------- */
.gc-hero{position:relative;isolation:isolate;overflow:hidden;background:var(--gc-navy)}
.gc-hero__media{position:absolute;inset:0;z-index:-2}
body.grace .gc-hero__media img{width:100%;height:100%;object-fit:cover;object-position:center 58%}
.gc-hero::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(100deg, rgba(6,15,31,.94) 0%, rgba(11,30,60,.86) 42%, rgba(11,30,60,.42) 74%, rgba(11,30,60,.28) 100%);
}
.gc-hero__inner{padding:112px 0 104px;max-width:730px}
body.grace .gc-hero h1{color:#fff;font-size:clamp(2.5rem,5.4vw,4.15rem);margin-bottom:22px}
body.grace .gc-hero h1 em{font-style:normal;color:var(--gc-orange)}
.gc-hero__sub{color:rgba(255,255,255,.86);font-size:clamp(1.05rem,1.4vw,1.24rem);line-height:1.7;margin-bottom:34px;max-width:620px}
.gc-hero .gc-eyebrow{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);padding:8px 16px 8px 14px;border-radius:100px;backdrop-filter:blur(6px)}
.gc-hero .gc-eyebrow::before{background:var(--gc-orange)}

.gc-hero__trust{display:flex;flex-wrap:wrap;gap:12px 30px;margin-top:38px;padding-top:32px;border-top:1px solid rgba(255,255,255,.16)}
.gc-hero__trust li{
  list-style:none;display:flex;align-items:center;gap:10px;
  color:rgba(255,255,255,.9);font-size:14.5px;font-weight:550;font-family:var(--gc-h-font)
}
.gc-hero__trust svg{width:19px;height:19px;color:var(--gc-orange);flex:none}

.gc-hero--page .gc-hero__inner{padding:88px 0 78px;max-width:830px}
.gc-hero--page h1{font-size:clamp(2.15rem,4.4vw,3.4rem)}

/* Breadcrumbs */
.gc-crumbs{font-size:13.5px;color:rgba(255,255,255,.68);margin-bottom:22px;font-weight:500}
body.grace .gc-crumbs a{color:rgba(255,255,255,.85)!important}
.gc-crumbs a:hover{color:var(--gc-orange)!important}
.gc-crumbs span{margin:0 8px;opacity:.5}

/* ---------- Trust strip ---------- */
.gc-strip{background:var(--gc-navy-900);padding:0}
.gc-strip .gc-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.09);padding:0}
.gc-strip__item{background:var(--gc-navy-900);padding:30px 26px;text-align:center}
.gc-strip__num{font-family:var(--gc-h-font);font-weight:800;font-size:clamp(1.8rem,2.6vw,2.4rem);color:#fff;line-height:1;letter-spacing:-.03em}
.gc-strip__num span{color:var(--gc-orange)}
.gc-strip__label{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:10px;font-weight:600;font-family:var(--gc-h-font)}

/* ---------- Cards / service grid ---------- */
.gc-grid{display:grid;gap:28px}
.gc-grid--2{grid-template-columns:repeat(2,1fr)}
.gc-grid--3{grid-template-columns:repeat(3,1fr)}
.gc-grid--4{grid-template-columns:repeat(4,1fr)}

.gc-card{
  background:#fff;border-radius:var(--gc-r);overflow:hidden;border:1px solid var(--gc-line);
  display:flex;flex-direction:column;transition:transform .35s var(--gc-ease),box-shadow .35s var(--gc-ease),border-color .35s var(--gc-ease);
}
.gc-card:hover{transform:translateY(-6px);box-shadow:var(--gc-shadow-lg);border-color:transparent}
.gc-card__media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--gc-bg-tint)}
body.grace .gc-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--gc-ease)}
.gc-card:hover .gc-card__media img{transform:scale(1.06)}
.gc-card__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,30,60,.42),transparent 55%)}
.gc-card__tag{
  position:absolute;left:16px;top:16px;z-index:2;background:rgba(255,255,255,.94);
  color:var(--gc-navy);font-family:var(--gc-h-font);font-weight:750;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;padding:7px 13px;border-radius:100px
}
.gc-card__body{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1}
.gc-card__body h3{font-size:1.28rem;margin-bottom:11px}
.gc-card__body p{font-size:15.5px;line-height:1.68;margin-bottom:18px;flex:1}
.gc-card__list{list-style:none;margin:0 0 20px;padding:0;font-size:14.5px}
.gc-card__list li{position:relative;padding-left:22px;margin-bottom:7px;color:var(--gc-body)}
.gc-card__list li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:8px;border-radius:2px;background:var(--gc-orange)}

/* ---------- Alternating image / text rows ---------- */
.gc-alt{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,74px);align-items:center}
.gc-alt + .gc-alt{margin-top:clamp(56px,7vw,104px)}
.gc-alt--flip .gc-alt__media{order:2}
.gc-alt__media{position:relative}
body.grace .gc-alt__media img{width:100%;height:auto;border-radius:var(--gc-r-lg);box-shadow:var(--gc-shadow);aspect-ratio:4/3;object-fit:cover}
body.grace .gc-alt__media--tall img{aspect-ratio:3/4}
.gc-alt__media::before{
  content:"";position:absolute;width:56%;height:56%;border:3px solid var(--gc-orange);
  border-radius:var(--gc-r-lg);z-index:-1;opacity:.5;
  left:-22px;bottom:-22px;
}
.gc-alt--flip .gc-alt__media::before{left:auto;right:-22px}
.gc-alt__body h2,.gc-alt__body h3{margin-bottom:16px}
.gc-alt__body p{font-size:16.5px}
.gc-alt__body .gc-checks{margin:22px 0 26px}

.gc-checks{list-style:none;padding:0;margin:0 0 24px;display:grid;gap:12px}
.gc-checks--2{grid-template-columns:1fr 1fr;gap:12px 26px}
.gc-checks li{position:relative;padding-left:32px;font-size:15.5px;line-height:1.6}
.gc-checks li::before{
  content:"";position:absolute;left:0;top:3px;width:20px;height:20px;border-radius:50%;
  background:var(--gc-red);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z' fill='%23fff'/%3E%3C/svg%3E") center/13px no-repeat, linear-gradient(#000,#000);
  -webkit-mask-composite:xor;mask-composite:exclude;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z' fill='%23fff'/%3E%3C/svg%3E") center/13px no-repeat, linear-gradient(#000,#000);
  mask-composite:exclude;
}
.gc-section--navy .gc-checks li::before{background:var(--gc-orange)}
.gc-section--navy .gc-checks li{color:rgba(255,255,255,.84)}

/* ---------- Feature / icon grid ---------- */
.gc-feat{padding:32px 28px;background:#fff;border-radius:var(--gc-r);border:1px solid var(--gc-line);transition:all .3s var(--gc-ease)}
.gc-feat:hover{border-color:transparent;box-shadow:var(--gc-shadow);transform:translateY(-4px)}
.gc-feat__icon{
  width:52px;height:52px;border-radius:12px;display:grid;place-items:center;margin-bottom:20px;
  background:linear-gradient(135deg,var(--gc-navy),var(--gc-navy-600));color:#fff
}
.gc-feat__icon svg{width:25px;height:25px}
.gc-feat h3{font-size:1.14rem;margin-bottom:9px}
.gc-feat p{font-size:15px;line-height:1.65;margin:0}
.gc-section--navy .gc-feat{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12)}
.gc-section--navy .gc-feat:hover{background:rgba(255,255,255,.09)}
.gc-section--navy .gc-feat__icon{background:var(--gc-orange)}
.gc-section--navy .gc-feat p{color:rgba(255,255,255,.76)}

/* ---------- Process ---------- */
.gc-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;counter-reset:gcstep}
.gc-step{position:relative;padding-top:64px}
.gc-step::before{
  counter-increment:gcstep;content:counter(gcstep,decimal-leading-zero);
  position:absolute;top:0;left:0;font-family:var(--gc-h-font);font-weight:800;
  font-size:2.6rem;color:var(--gc-navy);opacity:.14;letter-spacing:-.04em;line-height:1
}
.gc-step::after{content:"";position:absolute;top:22px;left:74px;right:-13px;height:2px;background:var(--gc-line)}
.gc-step:last-child::after{display:none}
.gc-step h3{font-size:1.12rem;margin-bottom:9px}
.gc-step p{font-size:15px;line-height:1.65;margin:0}
.gc-section--navy .gc-step::before{color:#fff;opacity:.25}
.gc-section--navy .gc-step::after{background:rgba(255,255,255,.16)}
.gc-section--navy .gc-step p{color:rgba(255,255,255,.75)}

/* ---------- Gallery ---------- */
.gc-gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;gap:16px}
.gc-gallery figure{margin:0;position:relative;overflow:hidden;border-radius:var(--gc-r);background:var(--gc-bg-tint)}
/* Uniform 4:3 tiles for the simple grid galleries on service pages. */
body.grace .gc-grid--4 > figure img,
body.grace .gc-grid--3 > figure img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
body.grace .gc-gallery img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--gc-ease)}
.gc-gallery figure:hover img{transform:scale(1.07)}
.gc-gallery figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:34px 18px 16px;color:#fff;font-size:13.5px;
  font-weight:600;font-family:var(--gc-h-font);line-height:1.35;
  background:linear-gradient(to top,rgba(6,15,31,.88),transparent);
  opacity:0;transform:translateY(8px);transition:all .3s var(--gc-ease)
}
.gc-gallery figure:hover figcaption{opacity:1;transform:translateY(0)}
.gc-gallery .gc-g--wide{grid-column:span 2}
.gc-gallery .gc-g--tall{grid-row:span 2}
.gc-gallery .gc-g--big{grid-column:span 2;grid-row:span 2}

/* ---------- Testimonials ---------- */
.gc-quote{background:#fff;border-radius:var(--gc-r);padding:34px 32px;border:1px solid var(--gc-line);position:relative}
.gc-quote__stars{color:var(--gc-orange);font-size:16px;letter-spacing:3px;margin-bottom:16px}
.gc-quote p{font-size:16px;line-height:1.72;color:var(--gc-ink);margin-bottom:22px;font-style:italic}
.gc-quote__who{display:flex;align-items:center;gap:13px;padding-top:19px;border-top:1px solid var(--gc-line)}
.gc-quote__avatar{
  width:44px;height:44px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:var(--gc-navy);color:#fff;font-family:var(--gc-h-font);font-weight:800;font-size:16px
}
.gc-quote__name{font-family:var(--gc-h-font);font-weight:750;color:var(--gc-navy);font-size:15px;line-height:1.3}
.gc-quote__meta{font-size:13px;color:var(--gc-muted)}

/* ---------- FAQ ---------- */
.gc-faq{max-width:880px;margin:0 auto}
.gc-faq details{
  background:#fff;border:1px solid var(--gc-line);border-radius:var(--gc-r-sm);
  margin-bottom:12px;overflow:hidden;transition:box-shadow .25s var(--gc-ease),border-color .25s
}
.gc-faq details[open]{box-shadow:var(--gc-shadow-sm);border-color:#CDD6E4}
.gc-faq summary{
  cursor:pointer;list-style:none;padding:22px 56px 22px 24px;position:relative;
  font-family:var(--gc-h-font);font-weight:700;font-size:16.5px;color:var(--gc-navy);line-height:1.45
}
.gc-faq summary::-webkit-details-marker{display:none}
.gc-faq summary::after{
  content:"";position:absolute;right:24px;top:50%;width:13px;height:13px;margin-top:-6px;
  border-right:2.5px solid var(--gc-red);border-bottom:2.5px solid var(--gc-red);
  transform:rotate(45deg);transition:transform .3s var(--gc-ease);transform-origin:70% 70%
}
.gc-faq details[open] summary::after{transform:rotate(-135deg)}
.gc-faq summary:hover{color:var(--gc-red)}
.gc-faq__a{padding:0 24px 24px;font-size:15.8px;line-height:1.72}
.gc-faq__a p:last-child{margin-bottom:0}

/* ---------- CTA band ---------- */
.gc-cta{position:relative;overflow:hidden;background:var(--gc-navy);isolation:isolate}
.gc-cta__media{position:absolute;inset:0;z-index:-2}
body.grace .gc-cta__media img{width:100%;height:100%;object-fit:cover}
.gc-cta::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(95deg,rgba(6,15,31,.95),rgba(11,30,60,.82))}
.gc-cta .gc-wrap{display:grid;grid-template-columns:1.35fr .95fr;gap:48px;align-items:center;padding-top:82px;padding-bottom:82px}
body.grace .gc-cta h2{color:#fff;margin-bottom:14px}
.gc-cta p{color:rgba(255,255,255,.82);font-size:17px;margin-bottom:0}
.gc-cta__act{display:flex;flex-direction:column;gap:14px}
.gc-cta__phone{
  display:flex;align-items:center;gap:14px;color:#fff;font-family:var(--gc-h-font);
  font-weight:800;font-size:1.5rem;letter-spacing:-.01em
}
.gc-cta__phone svg{width:26px;height:26px;color:var(--gc-orange)}

/* ---------- City / link grids ---------- */
.gc-cities{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.gc-city{
  display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--gc-line);
  border-radius:var(--gc-r-sm);padding:15px 17px;font-family:var(--gc-h-font);font-weight:650;
  font-size:14.5px;color:var(--gc-navy)!important;transition:all .25s var(--gc-ease)
}
.gc-city svg{width:16px;height:16px;color:var(--gc-red);flex:none}
.gc-city:hover{border-color:var(--gc-navy);background:var(--gc-navy);color:#fff!important;transform:translateY(-3px);box-shadow:var(--gc-shadow-sm)}
.gc-city:hover svg{color:var(--gc-orange)}

.gc-pills{display:flex;flex-wrap:wrap;gap:10px}
.gc-pill{
  display:inline-flex;align-items:center;gap:8px;padding:11px 19px;border-radius:100px;
  background:#fff;border:1px solid var(--gc-line);font-size:14.5px;font-weight:600;
  font-family:var(--gc-h-font);color:var(--gc-navy)!important;transition:all .22s var(--gc-ease)
}
.gc-pill:hover{background:var(--gc-navy);color:#fff!important;border-color:var(--gc-navy);transform:translateY(-2px)}
.gc-section--navy .gc-pill{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.16);color:#fff!important}
.gc-section--navy .gc-pill:hover{background:#fff;color:var(--gc-navy)!important}

/* ---------- Split: content + sticky sidebar ---------- */
.gc-split{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:56px;align-items:start}
/* The quote form needs more room than a sidebar panel does. */
.gc-split:has(.gc-form){grid-template-columns:minmax(0,1fr) 470px}
.gc-aside{position:sticky;top:110px;display:grid;gap:20px}
.gc-panel{background:#fff;border:1px solid var(--gc-line);border-radius:var(--gc-r);padding:28px;box-shadow:var(--gc-shadow-sm)}
/* A long unbroken email address would otherwise set the grid track's
   min-content width and push the page into horizontal overflow. */
.gc-panel,.gc-aside > *{min-width:0}
.gc-panel li,.gc-panel a{overflow-wrap:anywhere}
.gc-panel--navy{background:var(--gc-navy);border-color:transparent;color:rgba(255,255,255,.82)}
body.grace .gc-panel--navy h3{color:#fff}
.gc-panel h3{font-size:1.15rem;margin-bottom:14px}
.gc-panel ul{list-style:none;padding:0;margin:0}
.gc-panel__nav li a{
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;
  border-bottom:1px solid var(--gc-line);font-size:15px;font-weight:600;font-family:var(--gc-h-font)
}
.gc-panel__nav li:last-child a{border-bottom:0}
.gc-panel__nav li a::after{content:"→";color:var(--gc-red);opacity:0;transition:all .25s var(--gc-ease);transform:translateX(-5px)}
.gc-panel__nav li a:hover::after{opacity:1;transform:translateX(0)}

/* ---------- Prose (long-form SEO copy) ---------- */
.gc-prose h2{font-size:clamp(1.6rem,2.6vw,2.1rem);margin-top:48px}
.gc-prose h2:first-child{margin-top:0}
.gc-prose h3{font-size:clamp(1.2rem,1.8vw,1.4rem);margin-top:32px}
.gc-prose p{font-size:16.8px;line-height:1.78}
.gc-prose ul,.gc-prose ol{margin:0 0 22px;padding-left:0;list-style:none}
.gc-prose ul li{position:relative;padding-left:26px;margin-bottom:10px;font-size:16.3px;line-height:1.7}
.gc-prose ul li::before{content:"";position:absolute;left:0;top:11px;width:8px;height:8px;border-radius:2px;background:var(--gc-orange)}
.gc-prose ol{counter-reset:gcol}
.gc-prose ol li{position:relative;padding-left:38px;margin-bottom:12px;font-size:16.3px;line-height:1.7;counter-increment:gcol}
.gc-prose ol li::before{
  content:counter(gcol);position:absolute;left:0;top:2px;width:26px;height:26px;border-radius:50%;
  background:var(--gc-navy);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;font-family:var(--gc-h-font)
}
.gc-prose figure{margin:34px 0}
.gc-prose figure img{border-radius:var(--gc-r);box-shadow:var(--gc-shadow)}
.gc-prose figcaption{font-size:13.8px;color:var(--gc-muted);margin-top:11px;text-align:center;font-style:italic}
.gc-note{
  background:var(--gc-bg-tint);border-left:4px solid var(--gc-orange);border-radius:0 var(--gc-r-sm) var(--gc-r-sm) 0;
  padding:22px 26px;margin:30px 0
}
.gc-note p:last-child{margin-bottom:0}
.gc-note strong{color:var(--gc-navy)}

/* Table */
.gc-table-wrap{overflow-x:auto;margin:28px 0;border:1px solid var(--gc-line);border-radius:var(--gc-r)}
.gc-table{width:100%;border-collapse:collapse;font-size:15.5px;min-width:560px}
.gc-table th{background:var(--gc-navy);color:#fff;text-align:left;padding:15px 20px;font-family:var(--gc-h-font);font-weight:700;font-size:14px;letter-spacing:.03em}
.gc-table td{padding:15px 20px;border-bottom:1px solid var(--gc-line);vertical-align:top}
.gc-table tr:last-child td{border-bottom:0}
.gc-table tbody tr:nth-child(even){background:var(--gc-bg-soft)}

/* ---------- Map ---------- */
.gc-map{position:relative;border-radius:var(--gc-r);overflow:hidden;box-shadow:var(--gc-shadow);border:1px solid var(--gc-line);background:var(--gc-bg-tint)}
.gc-map iframe{display:block;width:100%;height:100%;min-height:420px;border:0}
.gc-map--flush{border-radius:0;border:0;box-shadow:none}
.gc-map--flush iframe{min-height:460px}

.gc-contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.gc-contact-card{
  background:#fff;border:1px solid var(--gc-line);border-radius:var(--gc-r);padding:30px 26px;
  transition:all .3s var(--gc-ease)
}
.gc-contact-card:hover{box-shadow:var(--gc-shadow);transform:translateY(-4px);border-color:transparent}
.gc-contact-card__icon{
  width:48px;height:48px;border-radius:12px;background:var(--gc-navy);color:#fff;
  display:grid;place-items:center;margin-bottom:18px
}
.gc-contact-card__icon svg{width:22px;height:22px}
.gc-contact-card h3{font-size:1.05rem;margin-bottom:8px}
.gc-contact-card p,.gc-contact-card a{font-size:15.5px;line-height:1.6;margin:0}
.gc-contact-card a{font-weight:650;color:var(--gc-navy)}
.gc-contact-card a:hover{color:var(--gc-red)}

/* ---------- Footer ---------- */
.gc-footer{background:var(--gc-navy-900);color:rgba(255,255,255,.66);font-size:15px}
body.grace .gc-footer a{color:rgba(255,255,255,.66)!important;font-size:14.8px}
.gc-footer a:hover{color:var(--gc-orange)!important}
.gc-footer__main{padding:72px 0 56px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:44px}
.gc-footer__logo img{max-width:210px;margin-bottom:22px}
body.grace .gc-footer h4{
  color:#fff;font-size:13px;letter-spacing:.15em;text-transform:uppercase;
  margin-bottom:20px;font-family:var(--gc-h-font);font-weight:750
}
.gc-footer ul{list-style:none;padding:0;margin:0}
.gc-footer ul li{margin-bottom:11px;line-height:1.5}
.gc-footer__contact li{display:flex;gap:12px;align-items:flex-start;margin-bottom:15px}
.gc-footer__contact svg{width:17px;height:17px;color:var(--gc-orange);flex:none;margin-top:3px}
.gc-footer__bar{
  border-top:1px solid rgba(255,255,255,.11);padding:24px 0;display:flex;
  justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:13.5px;color:rgba(255,255,255,.48)
}
.gc-footer__bar a{font-size:13.5px}

/* ---------- Mobile sticky call bar ---------- */
.gc-mobilebar{display:none}
@media(max-width:781px){
  .gc-mobilebar{
    display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:999;
    box-shadow:0 -4px 20px rgba(11,30,60,.18)
  }
  .gc-mobilebar a{
    display:flex;align-items:center;justify-content:center;gap:9px;padding:15px 10px;
    font-family:var(--gc-h-font);font-weight:750;font-size:15px;color:#fff!important
  }
  .gc-mobilebar svg{width:18px;height:18px}
  .gc-mobilebar__call{background:var(--gc-navy)}
  .gc-mobilebar__quote{background:var(--gc-red)}
  body.grace{padding-bottom:56px}
}

/* ==========================================================================
   FORMIDABLE — multi-step quote form, brand styled
   ========================================================================== */
.gc-form{background:#fff;border-radius:var(--gc-r-lg);box-shadow:var(--gc-shadow-lg);overflow:hidden;border:1px solid var(--gc-line)}
.gc-form__head{background:var(--gc-navy);padding:28px 32px;color:#fff}
body.grace .gc-form__head h3{color:#fff;font-size:1.4rem;margin-bottom:6px}
.gc-form__head p{margin:0;font-size:14.8px;color:rgba(255,255,255,.76)}
.gc-form__body{padding:30px 32px 34px}

/* progress rail */
.gc-progress{display:flex;align-items:center;margin:0 0 30px;counter-reset:gcp}
.gc-progress__step{flex:1;position:relative;text-align:center}
.gc-progress__dot{
  width:34px;height:34px;border-radius:50%;background:#fff;border:2px solid var(--gc-line);
  color:var(--gc-muted);display:grid;place-items:center;margin:0 auto 9px;position:relative;z-index:2;
  font-family:var(--gc-h-font);font-weight:750;font-size:14px;transition:all .3s var(--gc-ease)
}
.gc-progress__step::before{content:"";position:absolute;top:17px;left:-50%;width:100%;height:2px;background:var(--gc-line);z-index:1}
.gc-progress__step:first-child::before{display:none}
.gc-progress__label{font-size:12.5px;font-weight:650;color:var(--gc-muted);font-family:var(--gc-h-font);letter-spacing:.02em}
.gc-progress__step.is-active .gc-progress__dot{background:var(--gc-red);border-color:var(--gc-red);color:#fff;box-shadow:0 0 0 5px rgba(237,28,36,.14)}
.gc-progress__step.is-active .gc-progress__label{color:var(--gc-navy)}
.gc-progress__step.is-done .gc-progress__dot{background:var(--gc-navy);border-color:var(--gc-navy);color:#fff;font-size:0}
.gc-progress__step.is-done .gc-progress__dot::after{content:"✓";font-size:15px}
.gc-progress__step.is-done::before,.gc-progress__step.is-active::before{background:var(--gc-navy)}
.gc-progress__step.is-done .gc-progress__label{color:var(--gc-navy)}

/* Formidable field styling */
body.grace .frm_forms .frm_form_field{margin-bottom:19px}
body.grace .frm_forms .frm_primary_label{
  font-family:var(--gc-h-font);font-weight:650;font-size:14.5px;color:var(--gc-navy);
  margin-bottom:8px;display:block
}
body.grace .frm_forms .frm_required{color:var(--gc-red)}
body.grace .frm_forms input[type=text],
body.grace .frm_forms input[type=email],
body.grace .frm_forms input[type=tel],
body.grace .frm_forms input[type=url],
body.grace .frm_forms input[type=number],
body.grace .frm_forms select,
body.grace .frm_forms textarea{
  width:100%;padding:14px 16px;border:1.5px solid var(--gc-line);border-radius:var(--gc-r-sm);
  font-family:var(--gc-b-font);font-size:15.5px;color:var(--gc-ink);background:#fff;
  transition:border-color .2s var(--gc-ease),box-shadow .2s var(--gc-ease);box-shadow:none;height:auto
}
body.grace .frm_forms textarea{min-height:120px;resize:vertical}
body.grace .frm_forms input:focus,
body.grace .frm_forms select:focus,
body.grace .frm_forms textarea:focus{
  outline:0;border-color:var(--gc-navy);box-shadow:0 0 0 4px rgba(11,30,60,.09)
}
body.grace .frm_forms .frm_description{font-size:13.2px;color:var(--gc-muted);margin-top:6px}

/* radio / checkbox as selectable cards */
body.grace .frm_forms .frm_radio,
body.grace .frm_forms .frm_checkbox{margin:0}
body.grace .gc-optcards .frm_opt_container{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}
body.grace .gc-optcards .frm_radio,
body.grace .gc-optcards .frm_checkbox{margin:0}
body.grace .gc-optcards label{
  display:flex!important;align-items:center;gap:11px;padding:15px 16px;border:1.5px solid var(--gc-line);
  border-radius:var(--gc-r-sm);cursor:pointer;font-size:14.8px;font-weight:600;color:var(--gc-navy);
  font-family:var(--gc-h-font);transition:all .2s var(--gc-ease);margin:0;line-height:1.35;background:#fff
}
body.grace .gc-optcards label:hover{border-color:var(--gc-navy-600);background:var(--gc-bg-soft)}
body.grace .gc-optcards input[type=radio],
body.grace .gc-optcards input[type=checkbox]{accent-color:var(--gc-red);width:18px;height:18px;flex:none;margin:0}
body.grace .gc-optcards label:has(input:checked){
  border-color:var(--gc-red);background:rgba(237,28,36,.045);box-shadow:0 0 0 3px rgba(237,28,36,.09)
}

/* step panes + nav */
.gc-step-pane{display:none}
.gc-step-pane.is-active{display:block;animation:gcFade .35s var(--gc-ease)}
@keyframes gcFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.gc-step-nav{display:flex;justify-content:space-between;gap:14px;margin-top:26px;padding-top:24px;border-top:1px solid var(--gc-line)}
.gc-step-nav .gc-btn{min-width:132px}
.gc-step-nav__spacer{flex:1}
body.grace .frm_forms .frm_submit{margin:0}
body.grace .frm_forms .frm_submit button,
body.grace .frm_forms input[type=submit]{
  background:var(--gc-red);color:#fff;border:0;border-radius:var(--gc-r-sm);
  font-family:var(--gc-h-font);font-weight:750;font-size:15.5px;padding:17px 34px;cursor:pointer;
  box-shadow:0 8px 22px rgba(237,28,36,.28);transition:all .25s var(--gc-ease);width:100%
}
body.grace .frm_forms .frm_submit button:hover,
body.grace .frm_forms input[type=submit]:hover{background:var(--gc-red-dark);transform:translateY(-2px)}
body.grace .frm_forms .frm_error{color:var(--gc-red);font-size:13.4px;margin-top:6px;font-weight:600}
body.grace .frm_forms .frm_blank_field input,
body.grace .frm_forms .frm_blank_field select,
body.grace .frm_forms .frm_blank_field textarea{border-color:var(--gc-red)}
body.grace .frm_forms .frm_message,
body.grace .frm_forms .frm_success_style{
  background:#F0FAF3;border:1px solid #B7E4C7;border-left:4px solid #2E9E5B;
  color:#1B5E37;border-radius:var(--gc-r-sm);padding:20px 24px
}
.gc-form__trust{
  display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;
  font-size:13px;color:var(--gc-muted)
}
.gc-form__trust svg{width:15px;height:15px;color:#2E9E5B}

/* ---------- Utilities ---------- */
.gc-center{text-align:center}
.gc-mt-0{margin-top:0}
.gc-mb-0{margin-bottom:0!important}
.gc-mt-32{margin-top:32px}
.gc-mt-48{margin-top:48px}
.gc-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--gc-ease),transform .7s var(--gc-ease)}
.gc-reveal.is-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .gc-reveal{opacity:1;transform:none;transition:none}
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
.gc-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- Responsive ---------- */
@media(max-width:1100px){
  /* The :has() rule above is more specific, so it must be unset explicitly
     or the fixed form column overflows narrow viewports. */
  .gc-split,
  .gc-split:has(.gc-form){grid-template-columns:minmax(0,1fr);gap:44px}
  .gc-aside{position:static;grid-template-columns:1fr 1fr;display:grid}
  .gc-cities{grid-template-columns:repeat(3,1fr)}
  .gc-footer__main{grid-template-columns:1fr 1fr;gap:38px}
}
@media(max-width:992px){
  .gc-section{padding:72px 0}
  .gc-grid--4{grid-template-columns:repeat(2,1fr)}
  .gc-grid--3{grid-template-columns:repeat(2,1fr)}
  .gc-steps{grid-template-columns:repeat(2,1fr);gap:34px 26px}
  .gc-step::after{display:none}
  .gc-gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:180px}
  .gc-contact-grid{grid-template-columns:1fr}
  .gc-cta .gc-wrap{grid-template-columns:1fr;gap:32px}
  .gc-strip .gc-wrap{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:781px){
  .gc-section{padding:58px 0}
  .gc-wrap{padding:0 20px}
  .gc-hero__inner{padding:76px 0 68px}
  .gc-hero--page .gc-hero__inner{padding:58px 0 52px}
  .gc-alt{grid-template-columns:1fr;gap:30px}
  .gc-alt--flip .gc-alt__media{order:0}
  .gc-alt__media::before{display:none}
  .gc-alt + .gc-alt{margin-top:52px}
  .gc-grid--2,.gc-grid--3,.gc-grid--4{grid-template-columns:1fr}
  .gc-checks--2{grid-template-columns:1fr}
  .gc-cities{grid-template-columns:repeat(2,1fr)}
  .gc-aside{grid-template-columns:1fr}
  .gc-head{margin-bottom:38px}
  /* Above the fold is precious on a phone — keep the bar to a single
     tappable row of phone + email and drop the address and hours,
     which are repeated in the footer and on the contact page. */
  .gc-topbar .gc-wrap{
    justify-content:center;gap:0;padding-top:0;padding-bottom:0;min-height:0;flex-wrap:nowrap
  }
  .gc-topbar__items{gap:0;font-size:13px;width:100%}
  .gc-topbar__items:first-child{display:none}
  .gc-topbar__items:last-child{display:grid;grid-template-columns:1fr 1fr}
  .gc-topbar__items:last-child .gc-topbar__item{
    justify-content:center;padding:11px 8px;overflow:hidden;text-overflow:ellipsis
  }
  .gc-topbar__items:last-child .gc-topbar__item:first-child{border-right:1px solid rgba(255,255,255,.16)}
  .gc-t-full{display:none}
  .gc-t-short{display:inline}
  /* Keep the hero eyebrow on one line at phone widths. */
  .gc-hero .gc-eyebrow{font-size:10.5px;letter-spacing:.1em;padding:7px 13px 7px 11px}
  .gc-hero .gc-eyebrow::before{width:18px}
  .gc-gallery .gc-g--big,.gc-gallery .gc-g--wide{grid-column:span 2}
  .gc-gallery .gc-g--big,.gc-gallery .gc-g--tall{grid-row:span 1}
  .gc-form__head,.gc-form__body{padding-left:22px;padding-right:22px}
  body.grace .gc-optcards .frm_opt_container{grid-template-columns:1fr}
  .gc-progress__label{display:none}
  .gc-step-nav{flex-direction:column-reverse}
  .gc-step-nav .gc-btn{width:100%}
  .gc-footer__main{grid-template-columns:1fr;gap:34px;padding:52px 0 40px}
  .gc-footer__bar{flex-direction:column;text-align:center;align-items:center}
  .gc-strip .gc-wrap{grid-template-columns:repeat(2,1fr)}
  .gc-btns .gc-btn{width:100%}
}
@media(max-width:480px){
  .gc-gallery{grid-template-columns:1fr;grid-auto-rows:210px}
  .gc-gallery .gc-g--big,.gc-gallery .gc-g--wide{grid-column:span 1}
}
