/* ================================================================
   GAME PARTY PLAY - STYLESHEET
   Organized: Tokens -> Base/Type -> Components -> Header -> Footer -> Responsive
   ================================================================ */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,600;0,700;0,800;1,700&family=Inter:wght@400;500;600;700&display=swap');

:root {
  --gpp-navy: #05182D;
  --gpp-navy-mid: #0A1C2F;
  --gpp-navy-deep: #030F1C;
  --gpp-orange: #FF6A00;
  --gpp-orange-hover: #E05E00;
  --gpp-lime: #C7E52E;
  --gpp-lime-hover: #B0CE1F;
  --gpp-white: #FFFFFF;
  --gpp-ink: #0B1F33;
  --gpp-body: #45566A;
  --gpp-muted: #7A8A9B;

  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px;
  --space-6: 32px; --space-7: 48px; --space-8: 64px; --space-9: 96px; --space-10: 128px;

  --radius-sm: 8px; --radius-md: 14px; --radius-lg: 24px; --radius-pill: 999px;

  --shadow-sm: 0 2px 8px rgba(4,28,52,0.08);
  --shadow-md: 0 8px 24px rgba(4,28,52,0.12);
  --shadow-lg: 0 20px 48px rgba(4,28,52,0.18);

  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-spring: cubic-bezier(.34,1.56,.64,1);
  --dur-fast: 150ms; --dur-med: 250ms;
}

/* ---------- Base typography ---------- */
body, p, li, .elementor-widget-text-editor, input, textarea, select {
  font-family: 'Inter', Arial, sans-serif;
}
h1, h2, h3, h4, h5, h6, .elementor-heading-title {
  font-family: 'Barlow Condensed', 'Arial Narrow', sans-serif;
  font-weight: 800;
  letter-spacing: 0.2px;
  line-height: 1.08;
}

/* Single source of truth for heading sizes - fluid, no duplicate overrides elsewhere */
.elementor-widget-heading h1.elementor-heading-title { font-size: clamp(32px, 4.2vw + 12px, 60px) !important; line-height: 1.08 !important; letter-spacing: -0.01em; }
.elementor-widget-heading h2.elementor-heading-title { font-size: clamp(26px, 2.4vw + 14px, 40px) !important; line-height: 1.15 !important; letter-spacing: -0.01em; }
.elementor-widget-heading h3.elementor-heading-title { font-size: clamp(20px, 1.2vw + 14px, 26px) !important; line-height: 1.25 !important; }
.elementor-widget-heading h4.elementor-heading-title { font-size: clamp(18px, 0.6vw + 15px, 21px) !important; line-height: 1.35 !important; }
.elementor-widget-text-editor p { font-size: clamp(17px, 0.3vw + 16px, 19px) !important; line-height: 1.65 !important; color: var(--gpp-body); }

.gpp-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; letter-spacing: 2.5px;
  text-transform: uppercase; font-size: clamp(12px, 0.3vw + 11px, 14px); color: var(--gpp-orange);
  margin-bottom: var(--space-3);
}

/* Accessible focus states everywhere */
a:focus-visible, button:focus-visible, .elementor-button:focus-visible, input:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--gpp-lime) !important; outline-offset: 2px !important;
}

/* ---------- Section rhythm utility ---------- */
.gpp-section-pad { padding-top: clamp(32px, 3vw + 16px, 72px) !important; padding-bottom: clamp(32px, 3vw + 16px, 72px) !important; }

/* ---------- Decorative section utilities ---------- */
.gpp-stripe { position: relative; }
.gpp-stripe::before {
  content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 10px;
  background: linear-gradient(90deg, var(--gpp-orange) 0 60%, var(--gpp-lime) 60% 100%);
  transform: skewY(-1.1deg); transform-origin: top left; z-index: 5;
}
.gpp-stripe-bottom { position: relative; }
.gpp-stripe-bottom::after {
  content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 10px;
  background: linear-gradient(90deg, var(--gpp-lime) 0 55%, var(--gpp-orange) 55% 100%);
  transform: skewY(1.1deg); transform-origin: bottom left; z-index: 5;
}
.gpp-dotgrid { position: relative; }
.gpp-dotgrid::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(rgba(255,255,255,.14) 1.5px, transparent 1.5px);
  background-size: 22px 22px; opacity: .6; z-index: 0;
}
.gpp-dotgrid > .elementor-container { position: relative; z-index: 1; }

/* ---------- Buttons ---------- */
.elementor-button.elementor-button-link {
  font-family: 'Barlow Condensed', sans-serif !important; font-weight: 700 !important;
  letter-spacing: 1px; text-transform: uppercase; border-radius: var(--radius-pill) !important;
  padding: 18px 34px !important; font-size: 16px !important;
  transition: transform var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out) !important;
}
.elementor-button.elementor-button-link:hover {
  transform: translateY(-2px) scale(1.03) !important; filter: brightness(1.06);
  box-shadow: var(--shadow-md) !important;
}
.elementor-button.elementor-button-link:active { transform: translateY(0) scale(0.98) !important; }

/* ---------- Cards ---------- */
.gpp-card {
  transition: transform var(--dur-med) var(--ease-spring), box-shadow var(--dur-med) var(--ease-out);
  will-change: transform;
}
.gpp-card:hover { transform: translateY(-6px) scale(1.015); box-shadow: var(--shadow-md) !important; }

.gpp-tile {
  display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px;
  border-radius: var(--radius-md); font-family: 'Barlow Condensed', sans-serif; font-weight: 800;
  font-size: 26px; color: var(--gpp-navy); margin-bottom: 14px;
}

/* ---------- Mood cards (2-up feature grid) ---------- */
.gpp-mood-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; max-width: 1140px; margin: 0 auto; padding: 10px 20px 60px; }
@media (max-width: 767px) { .gpp-mood-grid { grid-template-columns: 1fr; } }
.gpp-mood-card {
  position: relative; overflow: hidden; border-radius: var(--radius-md); min-height: clamp(160px, 14vw + 100px, 190px);
  padding: clamp(22px, 2.5vw + 12px, 34px) clamp(20px, 2vw + 12px, 30px); display: flex; flex-direction: column; justify-content: center;
  text-decoration: none !important; box-shadow: var(--shadow-sm);
  transition: transform var(--dur-med) var(--ease-spring), box-shadow var(--dur-med) var(--ease-out);
}
.gpp-mood-card:hover { transform: translateY(-4px) scale(1.02); box-shadow: var(--shadow-lg); }
.gpp-mood-card::before { content: ''; position: absolute; right: -40px; top: -40px; width: 180px; height: 180px; background: rgba(255,255,255,.12); transform: rotate(18deg); }
.gpp-mood-card .gpp-mc-label { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; font-size: 12px; color: rgba(255,255,255,.85); margin-bottom: 6px; position: relative; z-index: 1; }
.gpp-mood-card .gpp-mc-title { font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: clamp(22px, 2vw + 14px, 30px); line-height: 1.05; color: #fff; margin-bottom: 8px; position: relative; z-index: 1; }
.gpp-mood-card .gpp-mc-desc { font-family: 'Inter', sans-serif; font-size: 16px; color: rgba(255,255,255,.92); margin-bottom: 14px; max-width: 380px; position: relative; z-index: 1; }
.gpp-mood-card .gpp-mc-link { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; font-size: 14px; color: #fff; position: relative; z-index: 1; }
.gpp-mood-card .gpp-mc-link::after { content: '\2192'; margin-left: 6px; }
.gpp-mc-lime .gpp-mc-title, .gpp-mc-lime .gpp-mc-label { color: var(--gpp-navy); }
.gpp-mc-lime .gpp-mc-desc { color: rgba(4,28,52,.82); }
.gpp-mc-lime .gpp-mc-link { color: var(--gpp-navy); }

/* ---------- Numbered steps row ---------- */
.gpp-steps { display: grid; grid-template-columns: repeat(4,1fr); gap: 22px; max-width: 1140px; margin: 0 auto; padding: 10px 20px 60px; }
@media (max-width: 900px) { .gpp-steps { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .gpp-steps { grid-template-columns: 1fr; } }
.gpp-step { background: #fff; border-radius: var(--radius-md); padding: 26px 22px; box-shadow: var(--shadow-sm); transition: transform var(--dur-fast) var(--ease-out); }
.gpp-step:hover { transform: translateY(-4px); }
.gpp-step .gpp-step-num { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 10px; font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 22px; margin-bottom: 14px; color: var(--gpp-navy); }
.gpp-step .gpp-step-title { font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 19px; color: var(--gpp-navy); margin-bottom: 6px; }
.gpp-step .gpp-step-desc { font-family: 'Inter', sans-serif; font-size: 15.5px; color: var(--gpp-body); line-height: 1.5; }

/* ================================================================
   HEADER
   ================================================================ */
.aux-logo-text { display: none !important; } /* redundant duplicate site title next to logo image */
.aux-elementor-header {
  position: relative !important; top: auto !important;
  background-color: var(--gpp-navy) !important;
  transition: box-shadow .25s ease;
}
.aux-elementor-header.aux-sticky { position: relative !important; box-shadow: 0 4px 20px rgba(2,14,26,0.35); }
body.aux-top-sticky .aux-elementor-header { position: relative !important; } /* theme's native sticky mode rendered a broken white bar; disabled site-wide via theme option, this is belt-and-suspenders */
.aux-elementor-header .elementor-section.elementor-top-section { background-color: transparent !important; }
.aux-elementor-header .aux-header { min-height: 85px; display: flex; align-items: center; padding-top: 18px; padding-bottom: 18px; }
.aux-elementor-header .aux-widget-logo img { max-height: 44px !important; width: auto !important; }

/* Mobile burger icon - must render visibly white against navy in every state, including the
   'dead zone' width where the theme swaps to .aux-burger-box.aux-lite-small; a leftover theme
   border-bottom default was overriding the fill, so border-color is forced too. */
.aux-elementor-header .aux-burger .mid-line,
.aux-elementor-header .aux-burger .mid-line::before,
.aux-elementor-header .aux-burger .mid-line::after {
  background-color: #FFFFFF !important;
  border-color: #FFFFFF !important;
}

.aux-elementor-header .aux-master-menu > li.aux-menu-item > a.aux-item-content { padding-top: 8px; padding-bottom: 8px; }
.aux-elementor-header .aux-master-menu > li:not(.menu-cta) > a.aux-item-content .aux-menu-label { position: relative; }
.aux-elementor-header .aux-master-menu > li:not(.menu-cta) > a.aux-item-content .aux-menu-label::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -6px; height: 2px; background: var(--gpp-lime);
  transform: scaleX(0); transform-origin: left; transition: transform .2s ease;
}
.aux-elementor-header .aux-master-menu > li:not(.menu-cta):hover > a.aux-item-content .aux-menu-label::after { transform: scaleX(1); }

.aux-elementor-header .aux-master-menu > li { vertical-align: middle !important; }

.menu-cta > a.aux-item-content {
  margin: 0 !important;
  background: var(--gpp-orange) !important; padding: 10px 24px !important; border-radius: var(--radius-pill) !important;
  display: inline-flex !important; align-items: center; transition: background-color .2s ease, transform .2s ease;
}
.menu-cta > a.aux-item-content:hover { background: var(--gpp-orange-hover) !important; transform: translateY(-1px); }
.menu-cta .aux-menu-label { color: #FFFFFF !important; font-weight: 700 !important; }

.aux-elementor-header ul.sub-menu.aux-submenu {
  background: var(--gpp-navy-mid) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 12px !important;
  box-shadow: 0 20px 40px rgba(2,14,26,0.45) !important;
  padding: 10px !important; min-width: 240px; margin-top: 14px !important; overflow: hidden;
}
.aux-elementor-header ul.sub-menu.aux-submenu li { margin: 0 !important; }
.aux-elementor-header ul.sub-menu.aux-submenu li a.aux-item-content {
  padding: 12px 16px !important; border-radius: 8px !important; display: block; color: #FFFFFF !important;
  transition: background-color .15s ease;
}
.aux-elementor-header ul.sub-menu.aux-submenu li:hover > a.aux-item-content { background: rgba(184,211,67,0.12) !important; }
.aux-elementor-header ul.sub-menu.aux-submenu li:hover .aux-menu-label { color: var(--gpp-lime) !important; }

.aux-offcanvas-menu { background: var(--gpp-navy) !important; width: 320px !important; max-width: 88vw !important; }
.aux-offcanvas-menu .offcanvas-header, .aux-offcanvas-menu .offcanvas-footer { background: transparent !important; }
.aux-offcanvas-menu .aux-master-menu.aux-vertical { padding: 24px 8px !important; }
.aux-offcanvas-menu .aux-master-menu.aux-vertical > li > a.aux-item-content {
  padding: 16px 18px !important; font-size: 17px !important; color: #FFFFFF !important;
  border-bottom: 1px solid rgba(255,255,255,0.08) !important;
}
.aux-offcanvas-menu .aux-master-menu.aux-vertical .sub-menu a.aux-item-content { color: #C7D0DC !important; padding-left: 32px !important; }
.aux-offcanvas-menu .aux-panel-close .aux-close { background-color: #FFFFFF !important; }
.aux-offcanvas-menu .menu-cta > a.aux-item-content { background: var(--gpp-orange) !important; border-radius: 10px !important; margin: 12px 10px 0 !important; text-align: center; border-bottom: none !important; }

/* ================================================================
   FOOTER
   ================================================================ */
.gpp-footer-cta {
  max-width: 1200px; margin: 0 auto 48px; padding: 0 20px 40px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px;
  border-bottom: 1px solid rgba(255,255,255,0.10);
}
.gpp-footer-cta h3 { font-family: 'Barlow Condensed', sans-serif; font-weight: 800; text-transform: uppercase; color: #FFFFFF; font-size: 28px; margin: 0; letter-spacing: 0.01em; }
.gpp-footer-cta a.gpp-footer-cta-btn {
  background: var(--gpp-orange); color: #FFFFFF; text-decoration: none; font-weight: 700;
  font-family: 'Barlow Condensed', sans-serif; text-transform: uppercase; letter-spacing: 1px;
  padding: 14px 32px; border-radius: var(--radius-pill); white-space: nowrap;
  transition: background-color .2s ease, transform .2s ease;
}
.gpp-footer-cta a.gpp-footer-cta-btn:hover { background: var(--gpp-orange-hover); transform: translateY(-1px); }

.gpp-footer-logo img { width: 140px; height: auto; display: block; }
.gpp-footer-tagline { font-size: 16px; line-height: 1.65; max-width: 300px; color: #C7D0DC; margin: 0; }
.gpp-footer-contact { font-size: 16px; line-height: 1.9; color: #C7D0DC; margin: 0; }
.gpp-footer-contact a { color: #FFFFFF; text-decoration: none; }
.gpp-footer-contact a:hover { color: var(--gpp-lime); }
.gpp-footer-heading { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gpp-lime); font-size: 14px; margin-bottom: 20px; }
.gpp-footer-links { list-style: none; margin: 0; padding: 0; }
.gpp-footer-links li { margin-bottom: 13px; }
.gpp-footer-links a { display: inline-block; color: #C7D0DC; text-decoration: none; font-size: 16px; transition: color .15s ease, transform .15s ease; }
.gpp-footer-links a:hover { color: var(--gpp-lime); transform: translateX(3px); }
.gpp-footer-bottom { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 20px; color: #7C90A6; font-size: 13px; flex-wrap: wrap; gap: 10px; }

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 767px) {
  .elementor-section.elementor-section-boxed > .elementor-container { padding-left: 20px; padding-right: 20px; }
  .gpp-footer-cta { flex-direction: column; align-items: flex-start; }
  .gpp-footer-cta a.gpp-footer-cta-btn { width: 100%; text-align: center; }
  .gpp-footer-bottom { flex-direction: column; text-align: center; }
  .elementor-48 .elementor-container, .elementor-49 .elementor-container { flex-wrap: wrap; }
}

/* ================================================================
   HERO PHOTOGRAPHY (Adobe Stock, licensed) - combined bg, no pseudo-element
   ================================================================ */
.gpp-hero-photo { background-size: cover !important; background-position: center !important; background-repeat: no-repeat !important; }
.gpp-hero-bg-home { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-home.jpg') !important; }
.gpp-hero-bg-rentals { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-rentals.jpg') !important; }
.gpp-hero-bg-experiences { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-experiences.jpg') !important; }
.gpp-hero-bg-training { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-training.jpg') !important; }
.gpp-hero-bg-who-we-serve { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-who-we-serve.jpg') !important; }
.gpp-hero-bg-residential { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-residential.jpg') !important; }
.gpp-hero-bg-communities { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-communities.jpg') !important; }
.gpp-hero-bg-businesses-teams { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-businesses-teams.jpg') !important; }
.gpp-hero-bg-about { background-image: linear-gradient(180deg, rgba(4,28,52,0.90) 0%, rgba(4,28,52,0.80) 45%, rgba(4,28,52,0.92) 100%), url('https://gamepartyplay.com/wp-content/uploads/2026/07/gpp-hero-about.jpg') !important; }

/* Contrast safety for text sitting on photo heroes */
.gpp-hero-photo .elementor-widget-text-editor p { color: rgba(255,255,255,0.92) !important; text-shadow: 0 2px 14px rgba(2,10,20,0.5); }
.gpp-hero-photo .elementor-heading-title { text-shadow: 0 2px 18px rgba(2,10,20,0.35); }


/* ---------- Fix: card-grid 'Add to Quote' buttons flipping from circle to pill ----------
   Elementor's flex column rounding occasionally gives one column a few extra px, which is
   enough to flip that single button from a 2-line wrapped circle to a 1-line pill, breaking
   visual consistency across an otherwise uniform repeating card grid. Capping max-width forces
   every button in these specific grids to wrap identically regardless of column rounding noise. */
.elementor-element-de63a96 .elementor-widget-button .elementor-button,
.elementor-element-9964804 .elementor-widget-button .elementor-button {
  max-width: 100px !important;
}


/* ---------- Fix: 'Signature Formats' 12-item row was non-wrapping flex (nowrap), overflowing
   its container by ~1000px with a hidden-overflow ancestor silently clipping ~half the cards
   with no scroll access. Force wrap so every format card is visible. ---------- */
.elementor-element-6c37e68 > .elementor-container {
  flex-wrap: wrap !important;
  row-gap: 24px !important;
}

.elementor-element-0a30470 > .elementor-container {
  flex-wrap: wrap !important;
  row-gap: 24px !important;
}


/* ---------- Fix: header 'dead zone' at tablet widths (769px-1024px) ----------
   Elementor's own tablet-breakpoint CSS (baked into post 48's generated stylesheet, not
   gpp_custom_css) forces the logo widget to width:100% + centered text-align at max-width:1024px,
   which wraps it onto its own row and pushes the full nav below it with a 55px top margin —
   producing a broken two-row header in the 769-1024px band (the mobile burger only takes over
   at <=768px, per Auxin's own .aux-burger-box rule). Restoring the logo to its normal auto-width,
   left-aligned, single-row treatment for this band — matching desktop — since the full nav
   comfortably fits in one row down to 1024px once the logo isn't forced full-width. */
@media (max-width: 1024px) {
  .elementor-48 .elementor-element.elementor-element-c49eb21 { width: auto !important; max-width: none !important; text-align: left !important; }
  .elementor-48 .elementor-element.elementor-element-99ffd65.elementor-column > .elementor-widget-wrap { justify-content: space-between !important; }
  .elementor-48 .elementor-element.elementor-element-d052931 { margin: 0 !important; }
}

/* ====================================================================
   Blog Archive
   ================================================================ */
.gpp-blog-hero {
  background: var(--gpp-navy);
  padding: var(--space-8) var(--space-4) var(--space-6);
  text-align: center;
}
.gpp-blog-hero__inner { max-width: 720px; margin: 0 auto; }
.gpp-blog-eyebrow {
  color: var(--gpp-lime);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  font-size: 14px;
  margin: 0 0 var(--space-2);
}
.gpp-blog-title {
  color: #fff;
  font-size: clamp(30px, 3.2vw + 14px, 48px);
  line-height: 1.12;
  margin: 0 0 var(--space-3);
}
.gpp-blog-subtitle {
  color: rgba(255,255,255,0.75);
  font-family: 'Inter', Arial, sans-serif;
  font-size: clamp(15px, 0.6vw + 13px, 18px);
  margin: 0;
}
.gpp-blog-main { max-width: 1100px; margin: 0 auto; padding: var(--space-8) var(--space-4); }
.gpp-blog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-5);
}
.gpp-blog-card {
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  overflow: hidden;
  transition: transform var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out);
}
.gpp-blog-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.gpp-blog-card__link { display: block; color: inherit; text-decoration: none; }
.gpp-blog-card__media img { width: 100%; height: 200px; object-fit: cover; display: block; }
.gpp-blog-card__body { padding: var(--space-4); }
.gpp-blog-card__date { color: var(--gpp-muted); font-family: 'Inter', Arial, sans-serif; font-size: 13px; margin: 0 0 var(--space-1); }
.gpp-blog-card__title { color: var(--gpp-ink); font-size: clamp(19px, 0.9vw + 15px, 22px); margin: 0 0 var(--space-2); }
.gpp-blog-card__excerpt { color: var(--gpp-body); font-family: 'Inter', Arial, sans-serif; font-size: 16px; line-height: 1.55; margin: 0 0 var(--space-3); }
.gpp-blog-card__cta { color: var(--gpp-orange); font-family: 'Inter', Arial, sans-serif; font-weight: 700; font-size: 14px; }
.gpp-blog-pagination { margin-top: var(--space-6); text-align: center; }
.gpp-blog-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 40px; height: 40px; margin: 0 4px; padding: 0 12px;
  border-radius: var(--radius-pill); background: #F7F9FB; color: var(--gpp-ink);
  font-family: 'Inter', Arial, sans-serif; font-weight: 600; text-decoration: none;
}
.gpp-blog-pagination .page-numbers.current { background: var(--gpp-orange); color: #fff; }

.gpp-blog-empty {
  text-align: center;
  max-width: 560px;
  margin: var(--space-6) auto;
  padding: var(--space-8) var(--space-5);
  background: #F7F9FB;
  border-radius: var(--radius-lg);
  border: 1px solid rgba(4,28,52,0.08);
}
.gpp-blog-empty__emoji { font-size: 48px; margin-bottom: var(--space-3); }
.gpp-blog-empty__title { color: var(--gpp-ink); font-size: clamp(22px, 1.4vw + 16px, 28px); margin: 0 0 var(--space-3); }
.gpp-blog-empty__body {
  color: var(--gpp-body); font-family: 'Inter', Arial, sans-serif;
  font-size: 16px; line-height: 1.6; margin: 0 0 var(--space-5);
}
.gpp-blog-empty__cta {
  display: inline-flex; align-items: center;
  background: var(--gpp-orange); color: #fff;
  font-family: 'Inter', Arial, sans-serif; font-weight: 700;
  padding: 14px 28px; border-radius: var(--radius-pill);
  text-decoration: none;
  transition: background var(--dur-fast) var(--ease-out);
}
.gpp-blog-empty__cta:hover { background: var(--gpp-orange-hover); }

@media (max-width: 640px) {
  .gpp-blog-grid { grid-template-columns: 1fr; }
}
/* ====================================================================
   Floating "Build Your Quote" button (sitewide, replaces header CTA)
   ================================================================ */
.gpp-float-quote {
  position: fixed;
  bottom: 110px;
  right: 0;
  z-index: 9999;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--gpp-orange);
  color: #fff !important;
  font-family: 'Inter', Arial, sans-serif;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none !important;
  padding: 16px 22px 16px 18px;
  border-radius: var(--radius-pill) 0 0 var(--radius-pill);
  box-shadow: var(--shadow-lg);
  transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
}
.gpp-float-quote:hover, .gpp-float-quote:focus {
  background: var(--gpp-orange-hover);
  transform: translateX(-3px);
  color: #fff;
}
.gpp-float-quote__icon { font-size: 18px; line-height: 1; }
.gpp-float-quote__text { white-space: nowrap; }

@media (max-width: 640px) {
  .gpp-float-quote { padding: 13px 16px 13px 14px; gap: 6px; font-size: 13px; }
  .gpp-float-quote__icon { font-size: 16px; }
}
@media (max-width: 380px) {
  .gpp-float-quote__text { display: none; }
  .gpp-float-quote { padding: 14px; border-radius: 50% 0 0 50%; }
}
/* ====================================================================
   Home hero launch badge ("just launched" signal, no discount claim)
   ================================================================ */
.gpp-launch-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.28);
  color: #fff;
  font-family: 'Inter', Arial, sans-serif;
  font-weight: 600;
  font-size: clamp(13px, 0.4vw + 12px, 14px);
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  margin-bottom: var(--space-4);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.gpp-launch-badge__dot {
  width: 8px;
  height: 8px;
  flex: none;
  border-radius: 50%;
  background: var(--gpp-lime);
  animation: gpp-pulse 2s infinite;
}
@keyframes gpp-pulse {
  0% { box-shadow: 0 0 0 0 rgba(184,211,67,0.6); }
  70% { box-shadow: 0 0 0 6px rgba(184,211,67,0); }
  100% { box-shadow: 0 0 0 0 rgba(184,211,67,0); }
}

/* ---------- Fix: multi-column card rows overflowing/not wrapping (5+ columns) ---------- */
.elementor-element-4331023 > .elementor-container,
.elementor-element-2bd6c2e > .elementor-container,
.elementor-element-0a30470 > .elementor-container,
.elementor-element-9964804 > .elementor-container,
.elementor-element-de63a96 > .elementor-container,
.elementor-element-6c37e68 > .elementor-container {
  flex-wrap: wrap !important;
  row-gap: 24px !important;
}


/* 3-up mood grid variant (Home audience cards) */
.gpp-mood-grid--3up { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .gpp-mood-grid--3up { grid-template-columns: 1fr; } }

/* Carousel container spacing on Home */
.gpp-carousel { padding-top: 10px; padding-bottom: 10px; }


/* ===== GPP V2 DESIGN SYSTEM (reference-site morph) ===== */
@import url('https://cdn.jsdelivr.net/npm/@fontsource-variable/geist@5/index.css');

:root{
  --gpp2-navy-950:#03141F;
  --gpp2-navy-900:#05182D;
  --gpp2-navy-800:#0A1C2F;
  --gpp2-navy-700:#132E45;
  --gpp2-navy-600:#173E5E;
  --gpp2-lime:#C7E52E;
  --gpp2-lime-dark:#8FB300;
  --gpp2-orange:#FF6A00;
  --gpp2-cream:#FAF6EF;
  --gpp2-offwhite:#EDF0F2;
  --gpp2-font: 'Geist Variable','Geist',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}

.gpp2{ font-family: var(--gpp2-font); }

.gpp2-h1{
  font-family: var(--gpp2-font);
  font-weight: 900;
  font-size: clamp(2.6rem, 5.6vw, 4.7rem);
  line-height: 1.03;
  letter-spacing: -0.02em;
  color:#fff;
  margin:0 0 20px;
}
.gpp2-h2{
  font-family: var(--gpp2-font);
  font-weight: 400;
  font-size: clamp(2.1rem, 4.2vw, 3.7rem);
  line-height: 1.06;
  letter-spacing: -0.01em;
  color: var(--gpp2-navy-800);
  margin:0 0 16px;
}
.gpp2-h2.on-dark{ color:#fff; }
.gpp2-body{ font-family: var(--gpp2-font); font-size:17px; line-height:1.65; color:#4c5c68; }
.gpp2-body.on-dark{ color:#c7d6e0; }

.gpp2-eyebrow{ display:inline-flex; align-items:center; gap:8px; font-family:var(--gpp2-font); font-size:12px; font-weight:800; letter-spacing:0.14em; text-transform:uppercase; margin-bottom:14px; }
.gpp2-eyebrow::before{ content:''; width:20px; height:2px; background:var(--gpp2-lime); display:inline-block; }
.gpp2-eyebrow.on-dark{ color: var(--gpp2-lime); }
.gpp2-eyebrow.on-light{ color: var(--gpp2-lime-dark); }

/* Buttons */
.gpp2-btn{ display:inline-flex; align-items:center; gap:8px; font-family:var(--gpp2-font); font-weight:800; font-size:14.5px; letter-spacing:0.03em; padding:17px 28px; border-radius:10px; text-decoration:none !important; text-transform:uppercase; transition:transform 0.15s ease, box-shadow 0.15s ease; border:1.5px solid transparent; }
.gpp2-btn:hover{ transform:translateY(-2px); }
.gpp2-btn-primary{ background:var(--gpp2-orange); color:#fff !important; }
.gpp2-btn-primary:hover{ box-shadow:0 10px 24px rgba(255,106,0,0.35); }
.gpp2-btn-outline-dark{ border-color:rgba(255,255,255,0.55); color:#fff !important; background:transparent; }
.gpp2-btn-outline-dark:hover{ background:rgba(255,255,255,0.08); }
.gpp2-btn-outline-light{ border-color:rgba(10,28,47,0.3); color:var(--gpp2-navy-800) !important; background:transparent; }
.gpp2-btn-outline-light:hover{ background:rgba(10,28,47,0.05); }

/* Numbered gradient pillar cards */
.gpp2-numcard-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:900px){ .gpp2-numcard-grid{ grid-template-columns:1fr; } }
.gpp2-numcard{ position:relative; border-radius:14px; padding:28px 26px; min-height:250px; display:flex; flex-direction:column; justify-content:space-between; color:#fff !important; overflow:hidden; font-family:var(--gpp2-font); }
.gpp2-numcard::after{ content:''; position:absolute; inset:0; background-image: radial-gradient(rgba(255,255,255,0.22) 1px, transparent 1px); background-size:14px 14px; opacity:0.3; pointer-events:none; }
.gpp2-numcard-top{ display:flex; justify-content:space-between; font-size:12px; font-weight:800; letter-spacing:0.08em; position:relative; z-index:1; }
.gpp2-numcard-title{ font-size:26px; font-weight:700; line-height:1.15; margin:18px 0 10px; position:relative; z-index:1; }
.gpp2-numcard-desc{ font-size:15.5px; line-height:1.55; opacity:0.92; position:relative; z-index:1; }
.gpp2-numcard-link{ margin-top:20px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.35); font-size:13px; font-weight:800; display:flex; justify-content:space-between; position:relative; z-index:1; text-decoration:none !important; color:#fff !important; }
.gpp2-numcard--orange{ background:linear-gradient(135deg,#FF8A33,#E85A00); }
.gpp2-numcard--lime{ background:linear-gradient(135deg,#D6EE5C,#9FC01F); color:#122400 !important; }
.gpp2-numcard--lime .gpp2-numcard-link{ color:#122400 !important; border-top-color:rgba(10,30,0,0.3); }
.gpp2-numcard--blue{ background:linear-gradient(135deg,#2E8FE0,#0C5CA5); }

/* Hairline link list */
.gpp2-linklist{ border-top:1px solid rgba(255,255,255,0.16); font-family:var(--gpp2-font); }
.gpp2-linklist a{ display:flex; justify-content:space-between; align-items:center; padding:18px 2px; border-bottom:1px solid rgba(255,255,255,0.16); color:#fff !important; text-decoration:none !important; font-weight:700; font-size:16.5px; }
.gpp2-linklist a:hover{ color: var(--gpp2-lime) !important; }
.gpp2-linklist.on-light{ border-top-color: rgba(10,28,47,0.12); }
.gpp2-linklist.on-light a{ color: var(--gpp2-navy-800) !important; border-bottom-color: rgba(10,28,47,0.12); }
.gpp2-linklist.on-light a:hover{ color: var(--gpp2-orange) !important; }

/* Honest photo-space placeholder */
.gpp2-photo-space{ position:relative; border-radius:14px; overflow:hidden; background: linear-gradient(160deg, var(--gpp2-navy-700), var(--gpp2-navy-900)); display:flex; align-items:flex-end; min-height:220px; padding:20px; }
.gpp2-photo-space::before{ content:''; position:absolute; top:16px; right:16px; width:80px; height:80px; border-radius:50%; background: radial-gradient(circle, rgba(255,122,26,0.35), transparent 70%); }
.gpp2-photo-space-tag{ position:relative; z-index:1; font-family:var(--gpp2-font); font-size:10px; font-weight:800; letter-spacing:0.08em; text-transform:uppercase; background:rgba(255,255,255,0.14); color:#fff; padding:4px 10px; border-radius:6px; align-self:flex-start; position:absolute; top:16px; left:16px; }
.gpp2-photo-space-caption{ position:relative; z-index:1; color:#fff; font-family:var(--gpp2-font); }
.gpp2-photo-space-caption .title{ font-weight:700; font-size:16px; }
.gpp2-photo-space-caption .note{ font-size:11.5px; opacity:0.65; margin-top:4px; }

/* Numbered step cards */
.gpp2-step-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:900px){ .gpp2-step-grid{ grid-template-columns:1fr; } }
.gpp2-step-card{ background:#fff; border-radius:12px; padding:26px; border:1px solid rgba(10,28,47,0.08); font-family:var(--gpp2-font); }
.gpp2-step-num{ font-size:13px; font-weight:900; color: var(--gpp2-orange); }
.gpp2-step-title{ font-size:20px; font-weight:700; color:var(--gpp2-navy-800); margin:14px 0 8px; }
.gpp2-step-desc{ font-size:15.5px; color:#5b6b78; line-height:1.55; margin:0; }

/* Quick booking bar */
.gpp2-bookbar{ background: var(--gpp2-lime); padding:26px 0; }
.gpp2-bookbar-grid{ display:flex; align-items:flex-end; gap:16px; flex-wrap:wrap; font-family:var(--gpp2-font); }
.gpp2-bookbar-field{ display:flex; flex-direction:column; min-width:150px; flex:1 1 150px; }
.gpp2-bookbar-field label{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:0.06em; color:#122400; margin-bottom:6px; }
.gpp2-bookbar-field select, .gpp2-bookbar-field input{ border:1px solid rgba(10,28,47,0.25); border-radius:8px; padding:13px 14px; font-size:16px; background:#fff; font-family:var(--gpp2-font); }
.gpp2-bookbar-label{ font-family:var(--gpp2-font); font-size:11px; font-weight:800; letter-spacing:0.1em; text-transform:uppercase; color:#3b4815; margin-bottom:4px; }
.gpp2-bookbar-heading{ font-family:var(--gpp2-font); font-size:20px; font-weight:800; color:#122400; margin:0 0 16px; }


/* ---------- Sizing pass: forms + general legibility bump ---------- */
input[type=text], input[type=email], input[type=tel], input[type=number], input[type=date], textarea, select,
.elementor-field-textual, .elementor-field-group select {
  font-size: 16px !important;
  padding: 13px 16px !important;
}
textarea.elementor-field-textual { padding: 13px 16px !important; }

/* Accordion (FAQ) question/answer text was reading small */
.elementor-accordion .elementor-tab-title { font-size: 17px !important; padding: 18px 22px !important; }
.elementor-accordion .elementor-tab-content { font-size: 16px !important; line-height: 1.6 !important; padding: 4px 22px 20px !important; }

/* GPP2 body-copy paragraphs set with explicit inline sizes still route through this class chain for line-height comfort */
.gpp2 p { line-height: 1.6; }


/* ====================================================================
   Blog Single Article (gpp-blog-single.php)
   ================================================================ */
.gpp-article-hero {
  background: var(--gpp-navy);
  padding: 64px 20px 48px;
  text-align: center;
}
.gpp-article-hero__inner { max-width: 760px; margin: 0 auto; }
.gpp-article-back {
  display: inline-block; color: var(--gpp-lime); font-family: 'Inter', Arial, sans-serif;
  font-weight: 700; font-size: 14px; text-decoration: none; margin-bottom: 22px;
}
.gpp-article-back:hover { text-decoration: underline; }
.gpp-article-eyebrow {
  color: var(--gpp-lime); text-transform: uppercase; letter-spacing: 0.1em;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 13px; margin: 0 0 14px;
}
.gpp-article-title {
  color: #fff; font-family: 'Barlow Condensed', sans-serif; font-weight: 800;
  font-size: clamp(32px, 3.6vw + 16px, 52px); line-height: 1.1; margin: 0 0 18px;
}
.gpp-article-subtitle {
  color: rgba(255,255,255,0.82); font-family: 'Inter', Arial, sans-serif;
  font-size: clamp(16px, 0.6vw + 14px, 19px); line-height: 1.55; margin: 0 0 18px;
}
.gpp-article-date {
  color: rgba(255,255,255,0.5); font-family: 'Inter', Arial, sans-serif; font-size: 14px; margin: 0;
}
.gpp-article-main { max-width: 760px; margin: 0 auto; padding: 56px 24px 40px; }
.gpp-article-body { font-family: var(--gpp2-font); }
.gpp-article-body p {
  font-size: 17.5px; line-height: 1.75; color: #3a4854; margin: 0 0 22px;
}
.gpp-article-body h2 {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; color: var(--gpp-navy);
  font-size: clamp(24px, 1.6vw + 18px, 30px); line-height: 1.2; margin: 44px 0 16px;
}
.gpp-article-body h3 {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; color: var(--gpp-navy);
  font-size: clamp(19px, 0.9vw + 15px, 22px); line-height: 1.3; margin: 34px 0 12px;
}
.gpp-article-body ul, .gpp-article-body ol {
  margin: 0 0 22px; padding-left: 22px;
}
.gpp-article-body li {
  font-size: 17px; line-height: 1.65; color: #3a4854; margin-bottom: 8px;
}
.gpp-article-body strong { color: var(--gpp-navy); }
.gpp-article-body blockquote {
  margin: 32px 0; padding: 4px 0 4px 20px; border-left: 4px solid var(--gpp-orange);
  font-style: italic; font-size: 19px; line-height: 1.6; color: var(--gpp-navy);
}
.gpp-article-cta {
  margin: 48px 0 8px; padding: 34px 32px; background: var(--gpp-navy); border-radius: var(--radius-lg);
  text-align: center;
}
.gpp-article-cta h3 {
  color: #fff; font-family: 'Barlow Condensed', sans-serif; font-weight: 800;
  font-size: 24px; margin: 0 0 10px;
}
.gpp-article-cta p {
  color: rgba(255,255,255,0.78); font-family: 'Inter', Arial, sans-serif; font-size: 16px;
  line-height: 1.55; max-width: 480px; margin: 0 auto 22px;
}
.gpp-article-cta__actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.gpp-article-footer-link { max-width: 760px; margin: 8px auto 60px; padding: 0 24px; }
.gpp-article-footer-link a {
  color: var(--gpp-orange); font-family: 'Inter', Arial, sans-serif; font-weight: 700;
  font-size: 15px; text-decoration: none;
}
.gpp-article-footer-link a:hover { text-decoration: underline; }

@media (max-width: 640px) {
  .gpp-article-hero { padding: 48px 20px 36px; }
  .gpp-article-main { padding: 40px 20px 30px; }
}

/* Signature Formats card spacing tightening (structural selectors, scoped to section 6c37e68) */
.elementor-element-6c37e68 .elementor-widget-divider{ margin-bottom:10px !important; margin-top:0 !important; }
.elementor-element-6c37e68 .elementor-widget-heading{ margin-bottom:6px !important; margin-top:0 !important; }
.elementor-element-6c37e68 .elementor-widget-heading .elementor-heading-title{ margin:0 !important; line-height:1.25 !important; }
.elementor-element-6c37e68 .elementor-widget-heading + .elementor-widget-text-editor{ margin-bottom:6px !important; margin-top:0 !important; }
.elementor-element-6c37e68 .elementor-widget-heading + .elementor-widget-text-editor p{ margin:0 !important; }
.elementor-element-6c37e68 .elementor-widget-text-editor + .elementor-widget-text-editor{ margin-bottom:0 !important; margin-top:0 !important; }
.elementor-element-6c37e68 .elementor-widget-text-editor + .elementor-widget-text-editor p{ margin:0 !important; }
.elementor-element-6c37e68 .elementor-widget-html{ margin-top:14px !important; margin-bottom:0 !important; }
