/*
Theme Name: Get Grab Bars
Theme URI: https://getgrabbars.com
Author: Built for Get Grab Bars
Author URI: https://getgrabbars.com
Description: A conversion-focused, senior-friendly WordPress theme for grab bar installation and home safety companies. Every page is built from editable core blocks, with 16 block patterns for the site's sections and a blank-canvas template for page builders. Includes ZIP-code service-area routing, duplicatable location landing pages for paid ads, a built-in scheduling request form, review and FAQ management, and one-click site setup.
Version: 1.1.0
Requires at least: 6.2
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: getgrabbars
Tags: business, service, accessible, one-column, custom-colors, custom-logo, custom-menu, featured-images, full-width-template, block-styles, wide-blocks
*/

/* ==========================================================================
   1. Tokens
   ========================================================================== */
:root{
  --navy:#214583;
  --navy-deep:#16305C;
  --navy-ink:#0E1F3D;
  --red:#DB3030;
  --red-deep:#B01F1F;
  --amber:#F2A93B;
  --green:#1C7A54;
  --ink:#182438;
  --ink-soft:#4B5768;
  --line:#D7E0EF;
  --chalk:#F1F5FC;
  --paper:#FFFFFF;

  --font-display:"Archivo","Arial Black",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-body:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  --step--1:1rem;
  --step-0:1.1875rem;      /* 19px base — sized for older eyes */
  --step-1:1.375rem;
  --step-2:clamp(1.5rem,1.2rem + 1vw,1.85rem);
  --step-3:clamp(1.8rem,1.4rem + 1.8vw,2.4rem);
  --step-4:clamp(2.1rem,1.5rem + 3vw,3.1rem);
  --step-5:clamp(2.35rem,1.6rem + 3.2vw,3.5rem);

  --wrap:1220px;
  --gutter:max(1.25rem,calc((100vw - 1220px) / 2));
  --wrap-narrow:820px;
  --gap:clamp(1.25rem,3vw,2.25rem);
  --section-y:clamp(3.5rem,7vw,6.5rem);

  --radius:14px;
  --radius-lg:22px;
  --shadow-sm:0 2px 6px rgba(14,31,61,.08);
  --shadow:0 14px 34px -18px rgba(14,31,61,.45);
  --shadow-lg:0 30px 60px -30px rgba(14,31,61,.55);
  --ring:0 0 0 4px rgba(33,69,131,.28);
  --header-h:0px;
}

/* ==========================================================================
   2. Reset & base
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--font-body);font-size:var(--step-0);line-height:1.7;
  font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
body.ggb-menu-open{overflow:hidden}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--navy);text-underline-offset:3px}
a:hover{color:var(--red-deep)}
h1,h2,h3,h4,h5{font-family:var(--font-display);color:var(--navy-ink);line-height:1.08;margin:0 0 .5em;letter-spacing:-.02em;font-weight:800}
h1{font-size:var(--step-5)}
h2{font-size:var(--step-4)}
h3{font-size:var(--step-2)}
h4{font-size:var(--step-1);letter-spacing:-.01em}
p{margin:0 0 1.15em}
ul,ol{margin:0 0 1.3em;padding-left:1.35em}
li{margin-bottom:.55em}
strong,b{font-weight:700}
hr{border:0;border-top:2px solid var(--line);margin:2.5rem 0}
blockquote{margin:2rem 0;padding:1.25rem 1.6rem;border-left:6px solid var(--red);background:var(--chalk);border-radius:0 var(--radius) var(--radius) 0;font-size:var(--step-1)}
table{width:100%;border-collapse:collapse;margin-bottom:1.6rem;font-size:var(--step--1)}
th,td{border:1px solid var(--line);padding:.85rem 1rem;text-align:left;vertical-align:top}
th{background:var(--chalk);font-family:var(--font-display);font-weight:700;color:var(--navy-ink)}
:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:4px}
::selection{background:var(--navy);color:#fff}

.ggb-skip{position:absolute;left:-9999px;top:0;z-index:1000;background:var(--navy);color:#fff;padding:1rem 1.5rem;font-weight:700}
.ggb-skip:focus{left:0;color:#fff}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}

/* ==========================================================================
   3. Layout helpers
   ========================================================================== */
.ggb-wrap{width:100%;padding-inline:var(--gutter);margin-inline:0}
.ggb-wrap--narrow{width:100%;max-width:none;padding-inline:max(var(--gutter),calc((100vw - var(--wrap-narrow)) / 2))}
.ggb-section{padding-block:var(--section-y)}
.ggb-section--tight{padding-block:clamp(2.5rem,5vw,4rem)}
.ggb-section--chalk{background:var(--chalk)}
.ggb-section--navy{background:var(--navy-deep);color:#E8EEF9}
.ggb-section--navy h2,.ggb-section--navy h3{color:#fff}
.ggb-section--navy a{color:#fff}
.ggb-grid{display:grid;gap:var(--gap)}
@media(min-width:700px){
  .ggb-grid--2{grid-template-columns:repeat(2,1fr)}
  .ggb-grid--3{grid-template-columns:repeat(2,1fr)}
  .ggb-grid--4{grid-template-columns:repeat(2,1fr)}
}
@media(min-width:1000px){
  .ggb-grid--3{grid-template-columns:repeat(3,1fr)}
  .ggb-grid--4{grid-template-columns:repeat(4,1fr)}
}
.ggb-center{text-align:center}
.ggb-lede{font-size:var(--step-1);color:var(--ink-soft);line-height:1.6;max-width:62ch}
.ggb-center .ggb-lede{margin-inline:auto}

/* Eyebrow: labels a section by what it is, not decoration */
.ggb-eyebrow{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--font-display);font-weight:700;font-size:.95rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--red-deep);margin-bottom:.9rem;
}
.ggb-eyebrow::before{content:"";width:34px;height:4px;background:var(--red);border-radius:2px}
.ggb-section--navy .ggb-eyebrow{color:#FFC9C9}
.ggb-section--navy .ggb-lede{color:#C6D3E8}
.ggb-section-head{margin-bottom:clamp(2rem,4vw,3.25rem)}

/* ==========================================================================
   4. Buttons
   ========================================================================== */
.ggb-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:58px;padding:.85rem 1.7rem;border:0;cursor:pointer;
  font-family:var(--font-display);font-size:1.075rem;font-weight:700;letter-spacing:.01em;
  text-decoration:none;border-radius:999px;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;
  line-height:1.2;text-align:center;
}
.ggb-btn svg{flex:0 0 auto}
.ggb-btn--primary{background:var(--red);color:#fff;box-shadow:0 6px 0 0 var(--red-deep)}
.ggb-btn--primary:hover{background:#E84343;color:#fff;transform:translateY(-2px);box-shadow:0 8px 0 0 var(--red-deep)}
.ggb-btn--primary:active{transform:translateY(3px);box-shadow:0 2px 0 0 var(--red-deep)}
.ggb-btn--navy{background:var(--navy);color:#fff;box-shadow:0 6px 0 0 var(--navy-deep)}
.ggb-btn--navy:hover{background:#2A54A0;color:#fff;transform:translateY(-2px)}
.ggb-btn--navy:active{transform:translateY(3px);box-shadow:0 2px 0 0 var(--navy-deep)}
.ggb-btn--ghost{background:transparent;color:var(--navy);box-shadow:inset 0 0 0 3px var(--navy)}
.ggb-btn--ghost:hover{background:var(--navy);color:#fff}
.ggb-btn--white{background:#fff;color:var(--navy-deep);box-shadow:0 6px 0 0 rgba(0,0,0,.18)}
.ggb-btn--white:hover{background:#fff;color:var(--red-deep);transform:translateY(-2px)}
.ggb-btn--lg{min-height:66px;font-size:1.2rem;padding:1rem 2.2rem}
.ggb-btn--block{display:flex;width:100%}
.ggb-btn-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.ggb-center .ggb-btn-row{justify-content:center}

/* ==========================================================================
   5. Header
   ========================================================================== */
.ggb-header{position:relative;z-index:60}
.ggb-header.is-sticky{position:sticky;top:0}
.ggb-topbar{background:var(--navy-deep);color:#fff;font-size:1rem}
.ggb-topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:52px;flex-wrap:wrap}
.ggb-topbar__msg{display:flex;align-items:center;gap:.6rem;font-weight:600;color:#CCDAF0}
.ggb-topbar__msg svg{color:var(--amber)}
.ggb-topbar__links{display:flex;align-items:center;gap:1.4rem}
.ggb-topbar a{color:#fff;text-decoration:none;font-weight:600}
.ggb-topbar a:hover{color:#FFD9D9;text-decoration:underline}
.ggb-topbar__phone{
  display:inline-flex;align-items:center;gap:.55rem;
  font-family:var(--font-display);font-weight:800;font-size:1.3rem;letter-spacing:-.01em;
}
@media(max-width:900px){.ggb-topbar{display:none}}

.ggb-bar{background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm)}
.ggb-bar__inner{display:flex;align-items:center;gap:1.5rem;min-height:96px}
.ggb-brand{display:flex;align-items:center;flex:0 0 auto;text-decoration:none}
.ggb-brand img,.ggb-brand .custom-logo,.ggb-brand__logo,
.ggb-header .custom-logo,.ggb-header .custom-logo-link img{
  width:auto;height:var(--logo-h,clamp(48px,5vw,68px));max-width:none
}
@media(max-width:1023px){
  .ggb-brand img,.ggb-brand .custom-logo,.ggb-brand__logo,
  .ggb-header .custom-logo{height:var(--logo-h-sm,46px)}
}
.ggb-brand__text{font-family:var(--font-display);font-weight:800;font-size:1.5rem;color:var(--navy);line-height:1}
.ggb-nav{margin-left:auto;display:flex;align-items:center;gap:1.75rem}
.ggb-nav__menu{display:flex;align-items:center;gap:1.6rem;list-style:none;margin:0;padding:0}
.ggb-nav__menu li{margin:0;position:relative}
.ggb-nav__menu > li > a{
  display:inline-flex;align-items:center;gap:.35rem;padding:.6rem 0;
  font-family:var(--font-display);font-weight:700;font-size:1.06rem;color:var(--navy-ink);text-decoration:none;
  border-bottom:4px solid transparent;
}
.ggb-nav__menu > li > a:hover,
.ggb-nav__menu > li.current-menu-item > a{color:var(--red-deep);border-bottom-color:var(--red)}
.ggb-nav__menu .sub-menu{
  position:absolute;top:100%;left:-1.1rem;min-width:270px;background:#fff;list-style:none;margin:0;padding:.6rem;
  border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--line);
  opacity:0;visibility:hidden;transform:translateY(10px);transition:.18s ease;z-index:70;
}
.ggb-nav__menu li:hover > .sub-menu,
.ggb-nav__menu li:focus-within > .sub-menu{opacity:1;visibility:visible;transform:translateY(0)}
.ggb-nav__menu .sub-menu a{display:block;padding:.75rem 1rem;border-radius:10px;color:var(--navy-ink);text-decoration:none;font-weight:600;font-size:1.03rem}
.ggb-nav__menu .sub-menu a:hover{background:var(--chalk);color:var(--red-deep)}
.ggb-nav__cta{display:flex;align-items:center;gap:.75rem}
@media(max-width:1100px){.ggb-nav__menu{gap:1.1rem}.ggb-nav__menu > li > a{font-size:1rem}}
@media(max-width:1023px){.ggb-nav{display:none}}

/* Mobile call strip + toggle */
.ggb-mobile-actions{margin-left:auto;display:none;align-items:center;gap:.6rem}
@media(max-width:1023px){.ggb-mobile-actions{display:flex}.ggb-bar__inner{min-height:80px;gap:.75rem}}
.ggb-iconbtn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-width:56px;min-height:56px;padding:0 .9rem;border:0;border-radius:14px;cursor:pointer;
  font-family:var(--font-display);font-weight:700;font-size:1rem;text-decoration:none;
}
.ggb-iconbtn--call{background:var(--red);color:#fff}
.ggb-iconbtn--call:hover{background:var(--red-deep);color:#fff}
.ggb-iconbtn--menu{background:var(--chalk);color:var(--navy-ink);flex-direction:column;gap:3px}
.ggb-iconbtn--menu .bar{display:block;width:26px;height:3px;background:currentColor;border-radius:2px;transition:.2s ease}
.ggb-iconbtn--menu[aria-expanded="true"] .bar:nth-child(1){transform:translateY(6px) rotate(45deg)}
.ggb-iconbtn--menu[aria-expanded="true"] .bar:nth-child(2){opacity:0}
.ggb-iconbtn--menu[aria-expanded="true"] .bar:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* Mobile drawer */
.ggb-drawer{
  position:fixed;inset:0;z-index:200;background:rgba(14,31,61,.55);
  opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease;
}
.ggb-drawer.is-open{opacity:1;visibility:visible}
.ggb-drawer__panel{
  position:absolute;top:0;right:0;height:100%;width:min(420px,90vw);background:#fff;
  display:flex;flex-direction:column;transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.ggb-drawer.is-open .ggb-drawer__panel{transform:translateX(0)}
.ggb-drawer__head{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.3rem;border-bottom:2px solid var(--line)}
.ggb-drawer__head img{height:44px;width:auto}
.ggb-drawer__close{background:var(--chalk);border:0;border-radius:12px;width:52px;height:52px;font-size:1.7rem;line-height:1;color:var(--navy-ink);cursor:pointer}
.ggb-drawer__close:hover{background:var(--red);color:#fff}
.ggb-drawer__phone{
  display:flex;align-items:center;justify-content:center;gap:.6rem;background:var(--navy-deep);color:#fff;
  padding:1.05rem;font-family:var(--font-display);font-weight:800;font-size:1.45rem;text-decoration:none;
}
.ggb-drawer__phone:hover{background:var(--navy);color:#fff}
.ggb-drawer__phone small{display:block;font-family:var(--font-body);font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#B9CBE8}
.ggb-drawer__menu{list-style:none;margin:0;padding:.5rem 0;flex:1}
.ggb-drawer__menu li{margin:0}
.ggb-drawer__menu a{
  display:block;padding:1.05rem 1.4rem;font-family:var(--font-display);font-weight:700;font-size:1.2rem;
  color:var(--navy-ink);text-decoration:none;border-bottom:1px solid var(--line);
}
.ggb-drawer__menu a:hover,.ggb-drawer__menu .current-menu-item > a{background:var(--chalk);color:var(--red-deep)}
.ggb-drawer__menu .sub-menu{list-style:none;margin:0;padding:0;background:#F8FAFE}
.ggb-drawer__menu .sub-menu a{padding-left:2.6rem;font-size:1.05rem;font-family:var(--font-body);font-weight:600}
.ggb-drawer__foot{padding:1.3rem;border-top:2px solid var(--line);display:grid;gap:.75rem}

/* ==========================================================================
   6. Hero + placement map (signature element)
   ========================================================================== */
.ggb-hero{position:relative;background:var(--navy-deep);color:#fff;overflow:hidden}
.ggb-hero::before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(1100px 520px at 78% 12%,rgba(56,101,180,.65),transparent 62%),
    linear-gradient(160deg,#1B3A6E 0%,#16305C 45%,#101F3D 100%);
  background-color:#16305C;
}
.ggb-hero::after{
  content:"";position:absolute;inset:0;opacity:.15;
  background-image:linear-gradient(rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.35) 1px,transparent 1px);
  background-size:64px 64px;mask-image:linear-gradient(to bottom,#000,transparent 78%);
}
.ggb-hero__inner{position:relative;z-index:2;display:grid;gap:clamp(1.75rem,3.5vw,3rem);padding-block:clamp(2.25rem,4vw,3.5rem)}
@media(min-width:1000px){.ggb-hero__inner{grid-template-columns:1.06fr .94fr;align-items:start}}
.ggb-hero h1{color:#fff;font-size:var(--step-5);margin-bottom:.4em}
.ggb-hero h1 em{font-style:normal;color:#FFB0B0;display:block;font-size:.68em;letter-spacing:-.01em;margin-top:.15em}
.ggb-hero__sub{font-size:var(--step-1);color:#C9D8F0;max-width:54ch;line-height:1.5;margin-bottom:1.25rem}
.ggb-hero__badges{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:1.35rem}
.ggb-badge{
  display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:999px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);
  font-size:.98rem;font-weight:700;color:#fff;
}
.ggb-badge svg{color:var(--amber)}
.ggb-hero__phone{display:inline-flex;flex-direction:column;text-decoration:none;margin-top:1.35rem}
.ggb-hero__phone span{font-size:.9rem;letter-spacing:.14em;text-transform:uppercase;color:#A9C0E4;font-weight:700}
.ggb-hero__phone strong{font-family:var(--font-display);font-size:clamp(1.9rem,3.6vw,2.6rem);color:#fff;line-height:1.1}
.ggb-hero__phone:hover strong{color:#FFB4B4}

/* ZIP finder — styled as a physical control panel */
.ggb-zip{
  background:#fff;border-radius:var(--radius-lg);padding:clamp(1.4rem,3vw,2rem);
  box-shadow:var(--shadow-lg);border-top:8px solid var(--red);color:var(--ink);
}
.ggb-zip h2,.ggb-zip h3{font-size:var(--step-2);margin-bottom:.35em;color:var(--navy-ink)}
.ggb-zip p{color:var(--ink-soft);font-size:1.05rem;margin-bottom:1.1rem}
.ggb-zip__row{display:flex;gap:.75rem;flex-wrap:wrap}
.ggb-zip__field{flex:1 1 190px;min-width:0}
.ggb-zip label{display:block;font-weight:700;font-size:1rem;margin-bottom:.4rem;color:var(--navy-ink)}
.ggb-zip input[type="text"],.ggb-zip input[type="tel"]{
  width:100%;min-height:66px;padding:.75rem 1.1rem;border:3px solid var(--line);border-radius:14px;
  font-family:var(--font-display);font-size:1.6rem;font-weight:700;letter-spacing:.22em;color:var(--navy-ink);
  background:#F8FAFE;
}
.ggb-zip input:focus{border-color:var(--navy);background:#fff;outline:none;box-shadow:var(--ring)}
.ggb-zip__row .ggb-btn{flex:1 1 190px}
.ggb-zip__note{display:flex;align-items:center;gap:.5rem;margin:1rem 0 0;font-size:.98rem;color:var(--ink-soft)}
.ggb-zip__note svg{color:var(--green);flex:0 0 auto}
.ggb-zip__error{margin:.85rem 0 0;padding:.75rem 1rem;background:#FDECEC;border-left:5px solid var(--red);border-radius:8px;color:#8E1A1A;font-weight:600;font-size:1rem}

/* Placement map */
.ggb-map{position:relative}
.ggb-map__frame{background:#fff;border-radius:var(--radius-lg);padding:1.1rem;box-shadow:var(--shadow-lg)}
.ggb-map__caption{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.25rem .5rem .85rem;flex-wrap:wrap}
.ggb-map__caption strong{font-family:var(--font-display);color:var(--navy-ink);font-size:1.1rem}
.ggb-map__caption span{font-size:.95rem;color:var(--ink-soft)}
.ggb-hotspot{cursor:pointer}
.ggb-hotspot circle.pulse{transform-origin:center;animation:ggbPulse 2.6s ease-out infinite}
.ggb-hotspot:hover circle.dot,.ggb-hotspot:focus circle.dot{fill:var(--navy)}
.ggb-hotspot:focus{outline:none}
.ggb-hotspot:focus circle.dot{stroke:#fff;stroke-width:4}
@keyframes ggbPulse{0%{transform:scale(.7);opacity:.65}70%{transform:scale(2.1);opacity:0}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.ggb-hotspot circle.pulse{animation:none;opacity:.25}}
.ggb-map__readout{margin-top:.9rem;background:var(--chalk);border-radius:var(--radius);padding:1rem 1.15rem;min-height:96px}
.ggb-map__readout h4{margin:0 0 .3rem;color:var(--navy-ink);font-size:1.15rem}
.ggb-map__readout p{margin:0;font-size:1.02rem;color:var(--ink-soft);line-height:1.55}

/* ==========================================================================
   7. Trust bar
   ========================================================================== */
.ggb-trust{background:var(--navy);color:#fff;padding-block:1.5rem}
.ggb-trust__grid{display:grid;gap:1.25rem;grid-template-columns:repeat(2,1fr);text-align:center}
@media(min-width:900px){.ggb-trust__grid{grid-template-columns:repeat(4,1fr)}}
.ggb-trust__item{display:flex;flex-direction:column;align-items:center;gap:.35rem}
.ggb-trust__item svg{color:#fff;opacity:.95}
.ggb-trust__item strong{font-family:var(--font-display);font-size:1.12rem;line-height:1.25}
.ggb-trust__item span{font-size:.97rem;color:#BFD1EC}

/* ==========================================================================
   8. Cards
   ========================================================================== */
.ggb-card{
  background:#fff;border:2px solid var(--line);border-radius:var(--radius-lg);padding:clamp(1.4rem,2.5vw,2rem);
  display:flex;flex-direction:column;height:100%;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.ggb-card h3{margin-bottom:.4em}
.ggb-card p{color:var(--ink-soft);font-size:1.06rem;margin-bottom:1rem}
.ggb-card p:last-child{margin-bottom:0}
.ggb-card__link{margin-top:auto;font-family:var(--font-display);font-weight:700;color:var(--red-deep);text-decoration:none;display:inline-flex;align-items:center;gap:.45rem}
.ggb-card__link:hover{gap:.8rem;color:var(--red-deep)}
a.ggb-card{text-decoration:none;color:inherit}
a.ggb-card:hover,.ggb-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--navy)}
.ggb-card__illo{border-radius:var(--radius);overflow:hidden;margin-bottom:1.1rem;background:var(--chalk);aspect-ratio:16/10;display:block}
.ggb-card__illo svg,.ggb-card__illo img{width:100%;height:100%;object-fit:cover}
.ggb-card__icon{
  width:66px;height:66px;border-radius:18px;background:var(--chalk);color:var(--navy);
  display:grid;place-items:center;margin-bottom:1.1rem;flex:0 0 auto;
}
.ggb-card--red .ggb-card__icon{background:#FDECEC;color:var(--red-deep)}

/* Numbered process — order carries real meaning here */
.ggb-steps{counter-reset:step;display:grid;gap:var(--gap)}
@media(min-width:820px){.ggb-steps{grid-template-columns:repeat(4,1fr)}}
.ggb-step{position:relative;padding-top:1.5rem}
.ggb-step::before{
  counter-increment:step;content:counter(step,decimal-leading-zero);
  font-family:var(--font-display);font-size:3.4rem;font-weight:800;color:var(--navy);opacity:.16;line-height:1;display:block;margin-bottom:.35rem;
}
.ggb-step::after{content:"";position:absolute;top:.6rem;left:0;width:100%;height:4px;background:var(--line);border-radius:2px}
.ggb-step h3{font-size:1.35rem;margin-bottom:.35em}
.ggb-step p{color:var(--ink-soft);font-size:1.05rem;margin:0}
.ggb-section--navy .ggb-step::before{color:#fff;opacity:.3}
.ggb-section--navy .ggb-step::after{background:rgba(255,255,255,.2)}
.ggb-section--navy .ggb-step p{color:#C6D3E8}

/* Checklists */
.ggb-checks{list-style:none;padding:0;margin:0 0 1.6rem;display:grid;gap:.85rem}
.ggb-checks li{display:flex;gap:.8rem;align-items:flex-start;margin:0;font-size:1.06rem}
.ggb-checks li::before{
  content:"";flex:0 0 auto;width:30px;height:30px;border-radius:50%;margin-top:.1rem;background:var(--green);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-size:18px;background-position:center;background-repeat:no-repeat;
}
.ggb-section--navy .ggb-checks li{color:#DCE6F6}

/* Split media/text */
.ggb-split{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:center}
@media(min-width:920px){.ggb-split{grid-template-columns:1fr 1fr}.ggb-split--flip .ggb-split__media{order:2}}
.ggb-split__media{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow);background:var(--chalk)}

/* ==========================================================================
   9. Reviews
   ========================================================================== */
.ggb-review{background:#fff;border-radius:var(--radius-lg);padding:clamp(1.5rem,2.5vw,2rem);border:2px solid var(--line);height:100%;display:flex;flex-direction:column}
.ggb-stars{display:flex;gap:.2rem;margin-bottom:.9rem;color:var(--amber)}
.ggb-review blockquote{margin:0 0 1.2rem;padding:0;background:none;border:0;font-size:1.1rem;line-height:1.6;color:var(--ink)}
.ggb-review__who{margin-top:auto;display:flex;align-items:center;gap:.85rem}
.ggb-review__avatar{width:52px;height:52px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:1.25rem;flex:0 0 auto}
.ggb-review__who strong{display:block;font-size:1.05rem;color:var(--navy-ink)}
.ggb-review__who span{font-size:.95rem;color:var(--ink-soft)}

/* ==========================================================================
   10. FAQ accordion
   ========================================================================== */
.ggb-faq{display:grid;gap:1rem}
.ggb-faq__item{background:#fff;border:2px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ggb-faq__item[open]{border-color:var(--navy);box-shadow:var(--shadow-sm)}
.ggb-faq__q{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer;list-style:none;
  padding:1.25rem 1.5rem;font-family:var(--font-display);font-weight:700;font-size:1.2rem;color:var(--navy-ink);
}
.ggb-faq__q::-webkit-details-marker{display:none}
.ggb-faq__q:hover{background:var(--chalk)}
.ggb-faq__q .sign{flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--chalk);color:var(--navy);display:grid;place-items:center;font-size:1.6rem;line-height:1;transition:.2s ease}
.ggb-faq__item[open] .sign{background:var(--red);color:#fff;transform:rotate(45deg)}
.ggb-faq__a{padding:0 1.5rem 1.5rem;color:var(--ink-soft);font-size:1.06rem}
.ggb-faq__a > :last-child{margin-bottom:0}

/* ==========================================================================
   11. Forms (schedule / contact)
   ========================================================================== */
.ggb-form{display:grid;gap:1.1rem}
.ggb-form__grid{display:grid;gap:1.1rem}
@media(min-width:640px){.ggb-form__grid--2{grid-template-columns:1fr 1fr}}
.ggb-field label{display:block;font-weight:700;margin-bottom:.4rem;color:var(--navy-ink);font-size:1.05rem}
.ggb-field .req{color:var(--red-deep)}
.ggb-field input,.ggb-field select,.ggb-field textarea{
  width:100%;min-height:58px;padding:.8rem 1rem;border:2px solid var(--line);border-radius:12px;
  font-family:var(--font-body);font-size:1.1rem;color:var(--ink);background:#fff;
}
.ggb-field textarea{min-height:130px;resize:vertical;line-height:1.5}
.ggb-field input:focus,.ggb-field select:focus,.ggb-field textarea:focus{border-color:var(--navy);outline:none;box-shadow:var(--ring)}
.ggb-field--hp{position:absolute!important;left:-9999px}
.ggb-form__consent{font-size:.95rem;color:var(--ink-soft);line-height:1.5}
.ggb-form__consent a{color:var(--navy)}
.ggb-notice{padding:1.1rem 1.3rem;border-radius:var(--radius);font-size:1.06rem;font-weight:600;margin-bottom:1.4rem}
.ggb-notice--ok{background:#E7F5EE;border-left:6px solid var(--green);color:#12523A}
.ggb-notice--err{background:#FDECEC;border-left:6px solid var(--red);color:#8E1A1A}
.ggb-formcard{background:#fff;border-radius:var(--radius-lg);padding:clamp(1.5rem,3vw,2.4rem);box-shadow:var(--shadow-lg);border-top:8px solid var(--red)}
.ggb-formcard h2,.ggb-formcard h3{font-size:var(--step-2);margin-bottom:.3em}
.ggb-formcard__sub{color:var(--ink-soft);margin-bottom:1.5rem}

/* ==========================================================================
   12. CTA band
   ========================================================================== */
.ggb-cta{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.ggb-cta::after{
  content:"";position:absolute;right:-60px;top:-60px;width:340px;height:340px;border-radius:50%;
  background:rgba(255,255,255,.06);
}
.ggb-cta__inner{position:relative;z-index:2;display:grid;gap:1.75rem;align-items:center;padding-block:clamp(2.75rem,5vw,4rem)}
@media(min-width:900px){.ggb-cta__inner{grid-template-columns:1.35fr .65fr}}
.ggb-cta h2{color:#fff;margin-bottom:.3em}
.ggb-cta p{color:#C9D8F0;font-size:var(--step-1);margin:0;max-width:56ch}
.ggb-cta__actions{display:grid;gap:.85rem}

/* ==========================================================================
   13. Page headers & content
   ========================================================================== */
.ggb-pagehead{background:var(--navy-deep);color:#fff;padding-block:clamp(2.75rem,6vw,4.5rem);position:relative;overflow:hidden}
.ggb-pagehead::after{
  content:"";position:absolute;inset:0;opacity:.14;
  background-image:linear-gradient(rgba(255,255,255,.4) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.4) 1px,transparent 1px);
  background-size:56px 56px;mask-image:linear-gradient(to bottom,#000,transparent 85%);
}
.ggb-pagehead__inner{position:relative;z-index:2}
.ggb-pagehead h1{max-width:22ch}
.ggb-pagehead p{max-width:60ch}
.ggb-pagehead h1{color:#fff;margin-bottom:.3em}
.ggb-pagehead p{color:#C9D8F0;font-size:var(--step-1);margin:0}
.ggb-crumbs{font-size:.98rem;color:#A9C0E4;margin-bottom:1rem}
.ggb-crumbs a{color:#DCE6F6;text-decoration:none}
.ggb-crumbs a:hover{text-decoration:underline;color:#fff}
.ggb-crumbs span{opacity:.6;padding:0 .45rem}

.ggb-prose > *:first-child{margin-top:0}
.ggb-prose h2{margin-top:2.2em;font-size:var(--step-3)}
.ggb-prose h3{margin-top:1.8em}
.ggb-prose h2:first-child,.ggb-prose h3:first-child{margin-top:0}
.ggb-prose ul li::marker{color:var(--red)}
.ggb-prose img{border-radius:var(--radius);margin-block:1.5rem}
.ggb-prose .ggb-grid{margin-block:2rem}
.ggb-layout{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:start}
@media(min-width:1000px){.ggb-layout--sidebar{grid-template-columns:minmax(0,1fr) 380px}}
.ggb-aside{position:sticky;top:120px;display:grid;gap:1.5rem}
.ggb-aside__card{background:var(--chalk);border-radius:var(--radius-lg);padding:1.6rem;border:2px solid var(--line)}
.ggb-aside__card h3{font-size:1.3rem}
.ggb-aside__card p{font-size:1.02rem;color:var(--ink-soft)}

/* Callout used inside editor content */
.ggb-callout{background:var(--chalk);border-left:6px solid var(--navy);border-radius:0 var(--radius) var(--radius) 0;padding:1.4rem 1.6rem;margin-block:2rem}
.ggb-callout h3{font-size:1.25rem;margin-bottom:.4em}
.ggb-callout p:last-child{margin-bottom:0}
.ggb-callout--red{border-left-color:var(--red);background:#FDF1F1}

/* Spec/compare table styling for grab bar types */
.ggb-compare th:first-child{width:34%}
.ggb-compare td strong{color:var(--navy-ink)}

/* ==========================================================================
   14. Locations
   ========================================================================== */
.ggb-loc-list{display:grid;gap:1rem}
@media(min-width:700px){.ggb-loc-list{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.ggb-loc-list{grid-template-columns:repeat(3,1fr)}}
.ggb-loc{display:flex;align-items:center;gap:.9rem;padding:1.15rem 1.3rem;background:#fff;border:2px solid var(--line);border-radius:var(--radius);text-decoration:none;color:var(--navy-ink);font-family:var(--font-display);font-weight:700;font-size:1.12rem}
.ggb-loc:hover{border-color:var(--navy);background:var(--chalk);color:var(--red-deep);transform:translateX(4px)}
.ggb-loc svg{color:var(--red);flex:0 0 auto}
.ggb-loc small{display:block;font-family:var(--font-body);font-weight:600;font-size:.92rem;color:var(--ink-soft)}
.ggb-zipchips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}
.ggb-zipchip{background:#fff;border:2px solid var(--line);border-radius:999px;padding:.35rem .9rem;font-size:.98rem;font-weight:700;color:var(--navy-ink)}
.ggb-zipchip.is-current{background:var(--navy);border-color:var(--navy);color:#fff}

/* ==========================================================================
   15. Landing template (ads)
   ========================================================================== */
.ggb-landing-header{background:#fff;border-bottom:4px solid var(--navy);position:sticky;top:0;z-index:60}
.ggb-landing-header__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:88px}
.ggb-landing-header img{height:clamp(44px,6vw,64px);width:auto}
.ggb-landing-header .ggb-hero__phone strong{color:var(--navy-ink);font-size:clamp(1.35rem,3vw,1.9rem)}
.ggb-landing-header .ggb-hero__phone span{color:var(--ink-soft)}
.ggb-landing-hero{background:var(--navy-deep);color:#fff;position:relative;overflow:hidden}
.ggb-landing-hero::after{
  content:"";position:absolute;inset:0;opacity:.13;
  background-image:linear-gradient(rgba(255,255,255,.4) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.4) 1px,transparent 1px);
  background-size:60px 60px;mask-image:linear-gradient(to bottom,#000,transparent 80%);
}
.ggb-landing-hero__inner{position:relative;z-index:2;display:grid;gap:clamp(2rem,4vw,3rem);padding-block:clamp(2.5rem,5vw,4.5rem)}
@media(min-width:980px){.ggb-landing-hero__inner{grid-template-columns:1.02fr .98fr;align-items:start}}
.ggb-landing-hero h1{color:#fff}
.ggb-landing-hero .ggb-checks li{color:#DCE6F6}
.ggb-sticky-call{
  position:fixed;left:0;right:0;bottom:0;z-index:120;display:none;gap:.6rem;padding:.7rem;
  background:rgba(14,31,61,.97);backdrop-filter:blur(6px);box-shadow:0 -6px 20px rgba(0,0,0,.28);
}
.ggb-sticky-call .ggb-btn{flex:1;min-height:56px;font-size:1.05rem;padding-inline:1rem}
@media(max-width:900px){.ggb-sticky-call.is-on{display:flex}body.has-sticky-call{padding-bottom:82px}}

/* ==========================================================================
   16. Footer
   ========================================================================== */
.ggb-footer{background:var(--navy-ink);color:#B9C7DE;padding-block:clamp(3rem,5vw,4.5rem) 0;font-size:1.03rem}
.ggb-footer__grid{display:grid;gap:2.5rem}
@media(min-width:820px){.ggb-footer__grid{grid-template-columns:1.4fr 1fr 1fr 1.2fr}}
.ggb-footer h3{color:#fff;font-size:1.15rem;letter-spacing:.06em;text-transform:uppercase;margin-bottom:1.1rem}
.ggb-footer a{color:#D6E0F1;text-decoration:none}
.ggb-footer a:hover{color:#fff;text-decoration:underline}
.ggb-footer ul{list-style:none;padding:0;margin:0}
.ggb-footer li{margin-bottom:.7rem}
.ggb-footer__plate{background:#fff;border-radius:16px;padding:.9rem 1.1rem;display:inline-block;margin-bottom:1.2rem}
.ggb-footer__plate img{height:56px;width:auto}
.ggb-footer__phone{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-display);font-weight:800;font-size:1.6rem;color:#fff!important;text-decoration:none!important}
.ggb-footer__phone:hover{color:#FFB4B4!important}
.ggb-footer__social{display:flex;gap:.6rem;margin-top:1.2rem}
.ggb-footer__social a{width:46px;height:46px;border-radius:12px;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff}
.ggb-footer__social a:hover{background:var(--red)}
.ggb-footer__bar{margin-top:3rem;border-top:1px solid rgba(255,255,255,.14);padding-block:1.5rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;font-size:.95rem}
.ggb-footer__bar ul{display:flex;flex-wrap:wrap;gap:1.2rem}
.ggb-footer__bar li{margin:0}

/* ==========================================================================
   17. Posts / archive / 404 / comments
   ========================================================================== */
.ggb-postcard{background:#fff;border:2px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column}
.ggb-postcard img{width:100%;aspect-ratio:16/9;object-fit:cover}
.ggb-postcard__body{padding:1.5rem;display:flex;flex-direction:column;flex:1}
.ggb-postcard h2,.ggb-postcard h3{font-size:1.35rem}
.ggb-postcard__meta{font-size:.95rem;color:var(--ink-soft);margin-bottom:.6rem}
.ggb-pagination{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin-top:3rem}
.ggb-pagination .page-numbers{display:grid;place-items:center;min-width:56px;min-height:56px;padding:0 1rem;border-radius:12px;background:var(--chalk);color:var(--navy-ink);font-weight:700;text-decoration:none}
.ggb-pagination .page-numbers.current,.ggb-pagination .page-numbers:hover{background:var(--navy);color:#fff}
.ggb-search{display:flex;gap:.6rem}
.ggb-search input{flex:1;min-height:58px;padding:.7rem 1rem;border:2px solid var(--line);border-radius:12px;font-size:1.05rem}
.comment-list{list-style:none;padding:0}
.comment-list li{background:var(--chalk);border-radius:var(--radius);padding:1.25rem;margin-bottom:1rem}

/* WP core alignment classes */
.alignleft{float:left;margin:.4rem 1.6rem 1.2rem 0}
.alignright{float:right;margin:.4rem 0 1.2rem 1.6rem}
.aligncenter{margin-inline:auto;display:block}
.alignwide{width:min(100%,1100px);margin-inline:auto}
.alignfull{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw)}
.wp-caption-text,figcaption{font-size:.95rem;color:var(--ink-soft);text-align:center;margin-top:.5rem}
.sticky,.gallery-caption,.bypostauthor{}

/* Utilities */
.ggb-mt-0{margin-top:0}.ggb-mb-0{margin-bottom:0}
.ggb-hide{display:none!important}
@media(max-width:640px){.ggb-hide-sm{display:none!important}}

/* Print */
@media print{.ggb-header,.ggb-footer,.ggb-cta,.ggb-sticky-call{display:none}body{font-size:12pt}}

/* ==========================================================================
   20. Block layer
   Everything below makes core editor blocks render as the theme's components,
   so pages can be built and rearranged in the block editor (or any page
   builder) without writing markup.
   ========================================================================== */

/* --- content flow
   One gutter variable does the whole job: content sits inside it, full-width
   blocks pull out to the viewport edge and re-apply it internally. No child
   needs its own width, so a paragraph with a reading measure still starts at
   the left edge of the column instead of floating to the middle. */
.ggb-content{padding-inline:var(--gutter)}
.ggb-content > *{margin-block:0}
.ggb-content > * + *{margin-top:1.6rem}
.ggb-content > .alignfull{
  margin-inline:calc(-1 * var(--gutter));
  padding-inline:var(--gutter);
  margin-top:0;
}
.ggb-content > .alignfull + .alignfull{margin-top:0}
.ggb-content > .alignwide{margin-inline:calc(-1 * min(var(--gutter),110px))}
.ggb-content{--content-y:clamp(2.5rem,5vw,4rem);padding-block:var(--content-y)}

/* Theme sections dropped in by shortcode ([ggb_cta] and friends) are meant to
   run edge to edge. They carry their own .ggb-wrap, so they only need to shed
   the content gutter — and when one ends the page, the bottom padding goes too
   so the band sits flush against the footer. */
/* These bands carry their own vertical padding, so they never take the
   between-blocks margin — otherwise a white strip appears wherever one sits
   next to a full-width section. */
.ggb-content > .ggb-cta,
.ggb-content > .ggb-section,
.ggb-content > .ggb-trust{margin-inline:calc(-1 * var(--gutter));margin-top:0}
.ggb-content > .alignfull + .ggb-cta,
.ggb-content > .ggb-cta + .alignfull,
.ggb-content > .alignfull + .ggb-section{margin-top:0}
.ggb-content > .ggb-cta:last-child,
.ggb-content > .ggb-section:last-child{margin-bottom:calc(-1 * var(--content-y))}
.ggb-content > .ggb-cta:first-child,
.ggb-content > .ggb-section:first-child{margin-top:calc(-1 * var(--content-y))}
.ggb-prose > .ggb-cta{margin-inline:0}
.ggb-content--home{--content-y:0px;padding-block:0}

/* --- headings inside blocks */
.ggb-content h2{font-size:var(--step-4);margin-bottom:.5em}
.ggb-content h3{font-size:var(--step-2);margin-bottom:.4em}
.ggb-content p{margin-bottom:1.15rem}
.ggb-content h2+p,.ggb-content h3+p{margin-top:0}

/* --- columns behave as the theme's grids */
.wp-block-columns.ggb-grid{display:grid;gap:var(--gap);margin-bottom:0}
.wp-block-columns.ggb-grid>.wp-block-column{flex-basis:auto!important;margin-left:0!important}
@media(max-width:781px){.wp-block-columns.ggb-grid{grid-template-columns:1fr}}
.wp-block-columns.ggb-split{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:center;margin-bottom:0}
.wp-block-columns.ggb-split>.wp-block-column{flex-basis:auto!important;margin-left:0!important}
.wp-block-columns.ggb-steps{display:grid;gap:var(--gap);margin-bottom:0}
.wp-block-columns.ggb-steps>.wp-block-column{flex-basis:auto!important;margin-left:0!important}
@media(min-width:820px){.wp-block-columns.ggb-steps{grid-template-columns:repeat(4,1fr)}}
@media(max-width:819px){.wp-block-columns.ggb-steps{grid-template-columns:1fr}}
.wp-block-column.ggb-card>*:last-child{margin-bottom:0}
.wp-block-column.ggb-step>*:last-child{margin-bottom:0}

/* --- media column: illustration sits in a rounded plate */
.wp-block-column.ggb-split__media{padding:0}
.ggb-split__media .ggb-illo,.ggb-split__media svg{display:block;width:100%;height:auto}

/* --- tables (the block wraps the table in a figure) */
.ggb-content .wp-block-table{margin-block:1.75rem}
.ggb-content .wp-block-table table{width:100%;border-collapse:collapse;background:#fff;border:2px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ggb-content .wp-block-table th,.ggb-content .wp-block-table td{padding:.95rem 1.1rem;text-align:left;border-bottom:1px solid var(--line);font-size:1.02rem;vertical-align:top}
.ggb-content .wp-block-table thead th{background:var(--chalk);font-family:var(--font-display);font-weight:700;color:var(--navy-ink);border-bottom:2px solid var(--line)}
.ggb-content .wp-block-table tbody tr:last-child td{border-bottom:0}
.ggb-content .wp-block-table td strong{color:var(--navy-ink)}
.ggb-content .ggb-compare table th:first-child{width:34%}

/* --- lists */
.ggb-content ul.ggb-checks{list-style:none;padding:0}
.ggb-content ul.ggb-pills{list-style:none;padding:0;margin:0 0 1.35rem;display:flex;flex-wrap:wrap;gap:.55rem}
.ggb-content ul.ggb-pills li{
  display:inline-flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:.5rem 1rem;
  font-weight:700;font-size:1rem;color:#fff;
}
.ggb-content ul.ggb-pills li::before{content:"✓";color:var(--amber);font-weight:800}
.ggb-section--chalk ul.ggb-pills li,.ggb-content>ul.ggb-pills li{background:#fff;border-color:var(--line);color:var(--navy-ink)}
.ggb-hero ul.ggb-pills li{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22);color:#fff}

/* --- core buttons wear the theme's button styles */
.ggb-content .wp-block-buttons{gap:.8rem;margin-block:1.5rem}
.ggb-content .wp-block-button__link{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:58px;padding:.9rem 1.9rem;border-radius:var(--radius-pill);
  font-family:var(--font-display);font-weight:700;font-size:1.09rem;line-height:1.2;
  text-decoration:none;background:var(--navy);color:#fff;border:2px solid var(--navy);
}
.ggb-content .wp-block-button__link:hover{background:var(--navy-deep);border-color:var(--navy-deep);color:#fff}
.ggb-content .wp-block-button.is-style-ggb-red .wp-block-button__link{background:var(--red);border-color:var(--red);box-shadow:var(--shadow-red)}
.ggb-content .wp-block-button.is-style-ggb-red .wp-block-button__link:hover{background:var(--red-deep);border-color:var(--red-deep)}
.ggb-content .wp-block-button.is-style-ggb-white .wp-block-button__link{background:#fff;color:var(--navy-ink);border-color:#fff}
.ggb-content .wp-block-button.is-style-ggb-white .wp-block-button__link:hover{background:var(--chalk);color:var(--navy-ink)}
.ggb-content .wp-block-button.is-style-ggb-outline .wp-block-button__link{background:transparent;color:var(--navy);border-color:var(--navy)}
.ggb-content .wp-block-button.is-style-ggb-outline .wp-block-button__link:hover{background:var(--navy);color:#fff}

/* --- hero built from blocks */
.ggb-hero.ggb-block-hero{padding-block:clamp(2.25rem,4vw,3.5rem)}
.wp-block-columns.ggb-hero__cols{display:grid;gap:clamp(1.75rem,3.5vw,3rem);align-items:start;margin-bottom:0}
.wp-block-columns.ggb-hero__cols>.wp-block-column{flex-basis:auto!important;margin-left:0!important;min-width:0}
@media(min-width:1000px){.wp-block-columns.ggb-hero__cols{grid-template-columns:1.06fr .94fr}}
.ggb-hero.ggb-block-hero > *{position:relative;z-index:2}
.ggb-hero .wp-block-columns{align-items:start}
.ggb-hero h1{margin-bottom:.35em}
.ggb-hero h2,.ggb-hero h3{color:#fff}
.ggb-hero p{color:#C9D8F0}
/* cards sitting inside the hero keep their own dark-on-light text */
.ggb-hero .ggb-zip h1,.ggb-hero .ggb-zip h2,.ggb-hero .ggb-zip h3,
.ggb-hero .ggb-map h2,.ggb-hero .ggb-map h3,
.ggb-hero .ggb-formcard h2,.ggb-hero .ggb-formcard h3{color:var(--navy-ink)}
.ggb-hero .ggb-zip p,.ggb-hero .ggb-map p,.ggb-hero .ggb-formcard p{color:var(--ink-soft)}
.ggb-hero .ggb-zip label,.ggb-hero .ggb-formcard label{color:var(--navy-ink)}
.ggb-hero .ggb-eyebrow{color:#FFC9C9}
.ggb-hero .ggb-lede{color:#C9D8F0}

/* --- shortcode blocks shouldn't inherit prose margins awkwardly */
.ggb-content .ggb-zip,.ggb-content .ggb-map,.ggb-content .ggb-formcard{margin-block:1.5rem}
.ggb-content .ggb-cta{margin-top:0}

/* --- editor parity: the same rules apply inside the editor canvas */
.editor-styles-wrapper .ggb-section{padding-block:clamp(2rem,4vw,3rem)}
.editor-styles-wrapper .ggb-hero{border-radius:var(--radius)}

/* --- components keep their own scale even when they sit inside block content */
.ggb-content .ggb-zip h2,.ggb-content .ggb-zip h3{font-size:var(--step-2);color:var(--navy-ink)}
.ggb-content .ggb-formcard h2,.ggb-content .ggb-formcard h3{font-size:var(--step-2);color:var(--navy-ink)}
.ggb-content .ggb-cta h2{font-size:var(--step-4);color:#fff}
.ggb-content .ggb-card h3,.ggb-content .ggb-aside__card h3{font-size:1.3rem}
.ggb-content .ggb-step h3{font-size:1.35rem}
.ggb-content .ggb-callout h3{font-size:1.25rem}
.ggb-content .ggb-review p{font-size:1.05rem}
.ggb-content .ggb-faq__q{font-size:1.12rem}
.ggb-content .ggb-loc small{font-size:.92rem}

/* Three-column comparison tables can't compress below a readable width, so on
   small screens they scroll inside their own box rather than pushing the page
   sideways. */
.ggb-content .wp-block-table{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ggb-content .wp-block-table table{min-width:34rem}
@media(max-width:640px){
  .ggb-content .wp-block-table th,.ggb-content .wp-block-table td{padding:.75rem .85rem;font-size:.98rem}
}
