/* Media Strom mattress catalogue — size gate + series sections + model cards.
   Loaded only on the mattress category archives. Tokens inherited from
   dromeas-category.css (--dr-*). */

/* ── Archive hero ───────────────────────────────────────────────────────────
   Copy sits over the left of the photo; the scrim keeps it legible without
   washing out the bedroom scene on the right. */

.gg-hero {
  position: relative;
  isolation: isolate;
  margin: 0 0 26px;
  border-radius: var(--dr-radius, 14px);
  overflow: hidden;
  background: var(--gg-hero-img) right center / cover no-repeat, #eef1f4;
}

.gg-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    100deg,
    rgba(255, 255, 255, .97) 0%,
    rgba(255, 255, 255, .95) 30%,
    rgba(255, 255, 255, .87) 48%,
    rgba(255, 255, 255, .35) 62%,
    rgba(255, 255, 255, 0) 78%
  );
}

.gg-hero__inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 18px;
  max-width: 560px;
  min-height: clamp(400px, 40vw, 540px);
  padding: clamp(30px, 4.4vw, 62px) clamp(22px, 3.5vw, 58px);
}

.gg-hero__title {
  margin: 0;
  font-size: clamp(2.1rem, 5vw, 3.6rem);
  font-weight: 800;
  line-height: 1.04;
  letter-spacing: -.035em;
  color: var(--dr-ink, #0f1419);
}

.gg-hero__title span { color: var(--dr-brand-2, #0f2240); }

.gg-hero__sub {
  margin: 0;
  max-width: 34ch;
  font-size: clamp(.95rem, 1.5vw, 1.08rem);
  line-height: 1.5;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-hero__trust {
  display: flex;
  gap: 12px 20px;
  width: 100%;
  margin: 6px 0 0;
  padding: 0;
  list-style: none;
}

/* One row of four, like the reference — equal columns rather than fixed widths
   so the Greek labels wrap inside their own column instead of onto a 2nd row. */
.gg-hero__trust-item { flex: 1 1 0; min-width: 0; }

.gg-hero__trust-item svg {
  display: block;
  width: 26px;
  height: 26px;
  margin-bottom: 9px;
  fill: none;
  stroke: var(--dr-brand-2, #0f2240);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.gg-hero__trust-item strong {
  display: block;
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.25;
  color: var(--dr-ink, #0f1419);
}

.gg-hero__trust-item small {
  display: block;
  margin-top: 3px;
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.3;
  color: #4b5563; /* not --dr-muted: only 3.7:1 over the photo, this is 5.8:1 */
}

.gg-hero__badge {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  margin-top: 4px;
  padding: 12px 28px;
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 999px;
  background: #fff;
  color: var(--dr-ink-2, #2a2f36);
  text-align: center;
  text-decoration: none;
  box-shadow: 0 3px 14px rgba(15, 34, 64, .10);
  transition: border-color .15s, box-shadow .15s, transform .12s;
}

.gg-hero__badge:hover {
  border-color: var(--dr-brand-2, #0f2240);
  box-shadow: 0 6px 20px rgba(15, 34, 64, .16);
  transform: translateY(-1px);
}

.gg-hero__badge span { font-size: 0.875rem; font-weight: 600; color: var(--dr-muted, #6b7280); }
.gg-hero__badge strong { font-size: 1.0625rem; font-weight: 800; letter-spacing: .06em; }
.gg-hero__badge-logo { display: block; width: 104px; height: auto; }

@media (max-width: 900px) {
  /* Photo drops behind a near-solid scrim — legibility beats the scene. */
  .gg-hero::before {
    background: linear-gradient(180deg, rgba(255, 255, 255, .95) 0%, rgba(255, 255, 255, .88) 55%, rgba(255, 255, 255, .82) 100%);
  }
  .gg-hero__inner { max-width: none; min-height: 0; gap: 15px; }
  .gg-hero__trust { flex-wrap: wrap; gap: 16px 20px; }
  .gg-hero__trust-item { flex: 1 1 40%; }
  .gg-hero__badge { align-self: stretch; }
}

@media (prefers-reduced-motion: reduce) {
  .gg-hero__badge { transition: none; }
  .gg-hero__badge:hover { transform: none; }
}

.gg-sizegate {
  background: var(--dr-surface, #fff);
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius, 14px);
  padding: 22px 24px;
  margin: 0 0 28px;
  box-shadow: var(--dr-shadow, 0 2px 12px rgba(0, 0, 0, .07));
}

.gg-sizegate__title {
  font-size: clamp(1.05rem, 2.4vw, 1.35rem);
  font-weight: 800;
  line-height: 1.25;
  margin: 0 0 6px;
  color: var(--dr-ink, #0f1419);
  letter-spacing: -.01em;
}

.gg-sizegate__sub {
  margin: 0 0 16px;
  font-size: 1.0625rem;
  line-height: 1.5;
  color: var(--dr-muted, #6b7280);
  max-width: 62ch;
}

.gg-sizegate__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-start;
}

.gg-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  font: inherit;
  font-size: 1.0625rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink, #0f1419);
  background: var(--dr-bg, #f7f6f3);
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 999px;
  padding: 10px 17px;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, transform .1s;
}

.gg-chip:hover { border-color: var(--dr-brand, #1a3a6b); background: var(--dr-brand-soft, #eaf1fb); }
.gg-chip:active { transform: translateY(1px); }

.gg-chip.is-active {
  background: var(--dr-brand, #1a3a6b);
  border-color: var(--dr-brand, #1a3a6b);
  color: #fff;
}

.gg-chip__count {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--dr-muted, #6b7280);
}

.gg-chip.is-active .gg-chip__count { color: rgba(255, 255, 255, .72); }

.gg-chip--clear { font-weight: 600; color: var(--dr-muted, #6b7280); background: transparent; }
.gg-chip.is-hidden { display: none; }

.gg-chip-more { position: relative; }
.gg-chip-more > summary { list-style: none; }
.gg-chip-more > summary::-webkit-details-marker { display: none; }

.gg-chip-more__panel {
  position: absolute;
  z-index: 20;
  top: calc(100% + 8px);
  left: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  width: max-content;
  max-width: min(92vw, 430px);
  padding: 14px;
  background: var(--dr-surface, #fff);
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius-s, 8px);
  box-shadow: var(--dr-shadow-hover, 0 8px 32px rgba(0, 0, 0, .12));
}

/* ── Series section ─────────────────────────────────────────────────────── */

.gg-series { margin: 0 0 44px; }

/* A series with nothing in the chosen size stays on the page — collapsed to its
   header plus the sizes it IS stocked in. Hiding it outright would keep the
   whole premium range secret from anyone who picked a smaller size. */
.gg-series__offsize {
  display: none;
  margin: 12px 0 0;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--dr-ink-2, #2a2f36);
  background: var(--dr-bg, #f7f6f3);
  border-left: 3px solid var(--dr-brand, #1a3a6b);
  border-radius: 0 6px 6px 0;
  padding: 9px 13px;
}

.gg-series[data-visible="0"] .gg-series__offsize { display: block; }
.gg-series[data-visible="0"] .gg-series__facts { display: none; }

.gg-series[data-visible="0"] .gg-series__grid {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

/* Collapsed cards: keep the name, price and firmness, drop the rest. */
.gg-series[data-visible="0"] .gg-model__media,
.gg-series[data-visible="0"] .gg-model__headline,
.gg-series[data-visible="0"] .gg-model__sizes,
.gg-series[data-visible="0"] .gg-model__avail,
.gg-series[data-visible="0"] .gg-model__cta { display: none; }

.gg-series[data-visible="0"] .gg-model { opacity: 1; }
.gg-series[data-visible="0"] .gg-model__body { padding: 12px 13px; gap: 7px; }
.gg-series[data-visible="0"] .gg-model__name { font-size: 1.0625rem; }
.gg-series[data-visible="0"] .gg-model__specs { border-top: 0; padding-top: 0; }
.gg-series[data-visible="0"] .gg-model__now { font-size: 1.02rem; }
.gg-series[data-visible="0"] .gg-model__foot { padding-top: 6px; }

.gg-series__head {
  border-top: 2px solid var(--dr-ink, #0f1419);
  padding-top: 14px;
  margin-bottom: 20px;
}

.gg-series__title {
  font-size: clamp(1.1rem, 2.6vw, 1.45rem);
  font-weight: 800;
  letter-spacing: -.015em;
  line-height: 1.2;
  margin: 0 0 6px;
  color: var(--dr-ink, #0f1419);
}

.gg-series__desc {
  margin: 0;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--dr-ink-2, #2a2f36);
  max-width: 82ch;
}

.gg-series__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
}

.gg-series__facts li {
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--dr-brand, #1a3a6b);
  background: var(--dr-brand-soft, #eaf1fb);
  border-radius: 999px;
  padding: 5px 12px;
}

.gg-series__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
  gap: 18px;
}

/* ── Model card ─────────────────────────────────────────────────────────── */

.gg-model {
  display: flex;
  flex-direction: column;
  background: var(--dr-surface, #fff);
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius, 14px);
  /* No overflow:hidden here — it silently CLIPPED the availability line on some
     widths. The media element rounds its own top corners instead, so nothing on
     the card can ever be cut off. */
  transition: box-shadow .18s, border-color .18s, transform .18s;
}

.gg-model:hover {
  border-color: var(--dr-brand, #1a3a6b);
  box-shadow: var(--dr-shadow-hover, 0 8px 32px rgba(0, 0, 0, .12));
  transform: translateY(-2px);
}

/* Model exists, but not in the size the customer picked. Kept visible and
   dimmed rather than hidden, so the range still reads as complete. */
.gg-model.is-offsize { opacity: .48; }
.gg-model.is-offsize:hover { opacity: 1; }

/* Media Strom's product shots carry a lot of internal whitespace, so a tall box
   reads as an empty card. Short box + cover crop fills it. */
.gg-model__media {
  position: relative;
  display: block;
  aspect-ratio: 5 / 3;
  overflow: hidden;
  border-radius: calc(var(--dr-radius, 14px) - 1px) calc(var(--dr-radius, 14px) - 1px) 0 0;
  background: var(--dr-bg, #f7f6f3);
}

.gg-model__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.gg-model__save {
  position: absolute;
  top: 10px;
  left: 10px;
  font-size: 0.875rem;
  font-weight: 800;
  color: #fff;
  background: var(--dr-accent, #c8321a);
  border-radius: 6px;
  padding: 4px 9px;
  letter-spacing: .01em;
}

.gg-model__save.is-hidden { display: none; }

.gg-model__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 13px 14px 12px;
  gap: 7px;
}

.gg-model__name {
  font-size: 1.02rem;
  font-weight: 800;
  letter-spacing: -.01em;
  line-height: 1.25;
  margin: 0;
}

.gg-model__name a { color: var(--dr-ink, #0f1419); text-decoration: none; }
.gg-model__name a:hover { color: var(--dr-brand, #1a3a6b); }

.gg-model__headline {
  margin: 0;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--dr-ink-2, #2a2f36);
}

/* Spec block — this is what makes two cards distinguishable at a glance. */
.gg-model__specs {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0 14px;
  align-items: end;
  margin: 0;
  padding: 9px 0 0;
  border-top: 1px solid var(--dr-line-2, #eeece7);
}

.gg-model__specs dt {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--dr-muted, #6b7280);
  margin-bottom: 3px;
}

.gg-model__specs dd {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.4;
  font-weight: 600;
  color: var(--dr-ink, #0f1419);
}


/* Firmness dots */
.gg-firm { display: inline-flex; align-items: center; gap: 3px; flex-wrap: wrap; }

.gg-firm__dot {
  width: 13px;
  height: 5px;
  border-radius: 3px;
  background: var(--dr-line, #e7e5df);
}

.gg-firm__dot.is-on { background: var(--dr-brand, #1a3a6b); }

.gg-firm__label {
  flex: 0 0 100%;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--dr-ink, #0f1419);
  margin-top: 3px;
}

/* ponytail: kept in the DOM, not on screen. The size gate at the top of the page
   already answers "does it come in my size" and reprices every card; repeating it
   per card was the same question twice and the tallest block on the card. The JS
   still reads these buttons for prices/links, so hiding beats deleting. */
.gg-model__sizes { display: none; }

.gg-size {
  font: inherit;
  font-size: 0.875rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink-2, #2a2f36);
  background: var(--dr-bg, #f7f6f3);
  border: 1.5px solid transparent;
  border-radius: 7px;
  padding: 5px 9px;
  cursor: pointer;
  transition: background .13s, border-color .13s, color .13s;
}

.gg-size:hover { border-color: var(--dr-brand, #1a3a6b); }

.gg-size.is-active {
  background: var(--dr-brand-soft, #eaf1fb);
  border-color: var(--dr-brand, #1a3a6b);
  color: var(--dr-brand-2, #0f2240);
}

.gg-size__ed {
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  opacity: .72;
}

/* Price + CTA */
.gg-model__foot {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  padding-top: 12px;
}

.gg-model__price { display: flex; flex-direction: column; line-height: 1.15; }

.gg-model__was {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--dr-muted, #6b7280);
  text-decoration: line-through;
}

.gg-model__was.is-hidden { display: none; }

.gg-model__now {
  font-size: 1.6rem;
  font-weight: 800;
  letter-spacing: -.025em;
  color: var(--dr-ink, #0f1419);
}

.gg-model__now .woocommerce-Price-amount { font-size: inherit; font-weight: inherit; }

.gg-model__for {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--dr-muted, #6b7280);
  font-variant-numeric: tabular-nums;
  margin-top: 2px;
}

.gg-model__cta {
  flex: 0 0 auto;
  font-size: 0.9375rem;
  font-weight: 700;
  color: #fff;
  background: var(--dr-brand, #1a3a6b);
  border-radius: 8px;
  padding: 9px 14px;
  text-decoration: none;
  white-space: nowrap;
  transition: background .15s;
}

.gg-model__cta:hover { background: var(--dr-brand-2, #0f2240); color: #fff; }

.gg-model__avail {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 600;
  color: #1a7f4b;
}

.gg-nosize {
  margin: 0 0 32px;
  padding: 18px 20px;
  font-size: 1.0625rem;
  line-height: 1.55;
  color: var(--dr-ink-2, #2a2f36);
  background: var(--dr-bg, #f7f6f3);
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius-s, 8px);
}

@media (max-width: 640px) {
  .gg-sizegate { padding: 18px 16px; }
  .gg-chip { padding: 9px 14px; font-size: 1rem; }
  .gg-series__grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
  .gg-model__foot { flex-direction: column; align-items: stretch; gap: 10px; }
  .gg-model__cta { text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  .gg-model, .gg-chip, .gg-size, .gg-model__cta { transition: none; }
  .gg-model:hover { transform: none; }
}

/* ── Sort control ───────────────────────────────────────────────────────── */

.gg-sizegate__sort {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--dr-line-2, #eeece7);
}

.gg-sizegate__sort label {
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--dr-muted, #6b7280);
}

.gg-sizegate .gg-sort {
  font: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: var(--dr-ink, #0f1419);
  background: var(--dr-bg, #f7f6f3);
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 8px;
  padding: 8px 11px;
  cursor: pointer;
  min-height: 40px;
}

.gg-sizegate .gg-sort:focus-visible { outline: 2px solid var(--dr-brand, #1a3a6b); outline-offset: 1px; }

/* ── Sticky bar: size + series jump ─────────────────────────────────────── */

.gg-stickybar {
  position: fixed;
  z-index: 60;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: stretch;
  gap: 10px;
  padding: 9px 12px;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(8px);
  border-top: 1px solid var(--dr-line, #e7e5df);
  box-shadow: 0 -4px 20px rgba(15, 34, 64, .10);
}

.gg-stickybar[hidden] { display: none; }

.gg-stickybar__size {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
  font: inherit;
  padding: 8px 13px;
  border: 1.5px solid var(--dr-brand, #1a3a6b);
  border-radius: 10px;
  background: var(--dr-brand-soft, #eaf1fb);
  color: var(--dr-brand-2, #0f2240);
  cursor: pointer;
  min-height: 44px;
}

.gg-stickybar__label {
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  opacity: .7;
}

.gg-stickybar__size strong { font-size: 1.0625rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.gg-stickybar__size svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2.4; }
.gg-stickybar__size[aria-expanded="true"] svg { transform: rotate(180deg); }

.gg-stickybar__jump {
  display: flex;
  gap: 7px;
  align-items: center;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.gg-stickybar__jump::-webkit-scrollbar { display: none; }

.gg-stickybar__jump a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding: 8px 13px;
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: 999px;
  background: var(--dr-bg, #f7f6f3);
  color: var(--dr-ink-2, #2a2f36);
  font-size: 0.9375rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  min-height: 40px;
}

.gg-stickybar__jump a:hover,
.gg-stickybar__jump a.is-current {
  border-color: var(--dr-brand, #1a3a6b);
  background: var(--dr-brand-soft, #eaf1fb);
  color: var(--dr-brand-2, #0f2240);
}

.gg-stickybar__panel {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: calc(100% + 8px);
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 14px;
  background: var(--dr-surface, #fff);
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius, 14px);
  box-shadow: var(--dr-shadow-hover, 0 8px 32px rgba(0, 0, 0, .12));
}

.gg-stickybar__panel[hidden] { display: none; }

/* ── Card actions: details + add to cart ───────────────────────────────── */

.gg-model__actions { display: flex; gap: 7px; align-items: stretch; flex: 0 0 auto; }

.gg-model__cart {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  border: 1.5px solid var(--dr-brand, #1a3a6b);
  border-radius: 8px;
  background: #fff;
  color: var(--dr-brand, #1a3a6b);
  text-decoration: none;
  transition: background .15s, color .15s;
}

.gg-model__cart svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.gg-model__cart:hover { background: var(--dr-brand, #1a3a6b); color: #fff; }
.gg-model__cart.loading { opacity: .55; pointer-events: none; }
.gg-model__cart.added { background: #1a7f4b; border-color: #1a7f4b; color: #fff; }
/* WooCommerce injects its own "view cart" link after an AJAX add — we show the
   tick on the button instead, so hide it. */
.gg-model__actions .added_to_cart { display: none !important; }

/* ── Help / close block ─────────────────────────────────────────────────── */

.gg-help {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 28px;
  align-items: center;
  margin: 8px 0 36px;
  padding: 28px 30px;
  border: 1px solid var(--dr-line, #e7e5df);
  border-radius: var(--dr-radius, 14px);
  background: linear-gradient(105deg, var(--dr-brand-soft, #eaf1fb), #fff 70%);
}

.gg-help__copy h2 {
  margin: 0 0 10px;
  font-size: clamp(1.15rem, 2.5vw, 1.5rem);
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--dr-ink, #0f1419);
}

.gg-help__copy p { margin: 0 0 14px; font-size: 1.0625rem; line-height: 1.6; color: var(--dr-ink-2, #2a2f36); }

.gg-help__points { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }

.gg-help__points li {
  position: relative;
  padding-left: 22px;
  font-size: 1rem;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-help__points li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: #1a7f4b;
  font-weight: 800;
}

.gg-help__actions { display: grid; gap: 10px; }

.gg-help__btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 10px;
  text-decoration: none;
  color: #fff;
  transition: transform .12s, box-shadow .15s;
}

.gg-help__btn svg { width: 22px; height: 22px; flex: 0 0 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.gg-help__btn span { display: flex; flex-direction: column; gap: 2px; }
.gg-help__btn strong { font-size: 1.0625rem; font-weight: 800; }
.gg-help__btn small { font-size: 0.875rem; opacity: .85; }
.gg-help__btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(15, 34, 64, .18); color: #fff; }
.gg-help__btn--call { background: var(--dr-brand-2, #0f2240); }
.gg-help__btn--map { background: #0d7a43; }

@media (max-width: 900px) {
  .gg-help { grid-template-columns: 1fr; gap: 20px; padding: 22px 18px; }
}

@media (max-width: 640px) {
  .gg-stickybar { padding: 8px 10px; gap: 8px; }
  .gg-stickybar__size { padding: 7px 10px; }
  .gg-stickybar__size .gg-stickybar__label { display: none; }
  /* Sticky bar sits above the content it would otherwise cover. */
  body.gg-has-stickybar { padding-bottom: 66px; }
}

@media (prefers-reduced-motion: reduce) {
  .gg-model__cart, .gg-help__btn { transition: none; }
  .gg-help__btn:hover { transform: none; }
}

body.gg-has-stickybar { padding-bottom: 74px; }

/* ── Typed size entry ───────────────────────────────────────────────────── */

.gg-sizeform {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin: 0 0 14px;
}

.gg-sizeform__field {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 11px;
  background: var(--dr-bg, #f7f6f3);
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 9px;
}

.gg-sizeform__field:focus-within { border-color: var(--dr-brand, #1a3a6b); background: #fff; }

.gg-sizeform__field label {
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--dr-muted, #6b7280);
}

.gg-sizeform__field input {
  width: 62px;
  font: inherit;
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink, #0f1419);
  background: transparent;
  border: 0;
  padding: 3px 0;
  min-height: 30px;
}

.gg-sizeform__field input:focus { outline: none; }
.gg-sizeform__field > span { font-size: 0.9375rem; font-weight: 600; color: var(--dr-muted, #6b7280); }
.gg-sizeform__x { align-self: center; padding-bottom: 12px; font-size: 1.1rem; font-weight: 700; color: var(--dr-muted, #6b7280); }

.gg-sizeform__go {
  font: inherit;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  background: var(--dr-brand, #1a3a6b);
  border: 0;
  border-radius: 9px;
  padding: 0 20px;
  min-height: 48px;
  cursor: pointer;
}

.gg-sizeform__go:hover { background: var(--dr-brand-2, #0f2240); }

.gg-sizeform__msg {
  flex: 1 1 100%;
  margin: 2px 0 0;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-sizeform__msg:empty { display: none; }
.gg-sizeform__msg.is-miss { color: #9a3412; }
.gg-sizeform__msg a { color: inherit; font-weight: 700; }

.gg-sizegate__or {
  margin: 0 0 10px;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--dr-muted, #6b7280);
}

/* ── Mobile: two cards per row ───────────────────────────────────────────
   One card per row wasted half the screen and made the page twice as long.
   At two-up the card is ~165px, so the long-form bits step aside. */

@media (max-width: 640px) {
  .gg-series__grid,
  .gg-series[data-visible="0"] .gg-series__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .gg-model__body { padding: 10px 10px 11px; gap: 6px; }
  .gg-model__name { font-size: 1rem; line-height: 1.22; }

  /* The differentiating sentence needs room it doesn't have at 165px; the
     firmness + height specs below still separate the models. */
  .gg-model__headline { display: none; }

  .gg-model__specs { grid-template-columns: 1fr; gap: 6px; padding-top: 8px; }
  .gg-model__specs dt { font-size: 0.8125rem; margin-bottom: 2px; }
  .gg-model__specs dd { font-size: 0.875rem; }
  .gg-firm__dot { width: 10px; height: 4px; }
  .gg-firm__label { font-size: 0.875rem; }

  .gg-model__now { font-size: 1.18rem; }
  .gg-model__was { font-size: 0.875rem; }
  .gg-model__for { font-size: 0.8125rem; }
  .gg-model__avail { font-size: 0.8125rem; line-height: 1.3; }
  .gg-model__save { top: 6px; left: 6px; font-size: 0.8125rem; padding: 3px 6px; }

  .gg-model__foot { padding-top: 9px; gap: 8px; }
  .gg-model__actions { display: grid; grid-template-columns: 1fr auto; gap: 6px; }
  .gg-model__cta { font-size: 0.875rem; padding: 9px 8px; text-align: center; }
  .gg-model__cart { width: 38px; }
}

/* ── Width chips + length toggle ─────────────────────────────────────────
   Price depends on width alone, so width is the decision and length is a
   same-price variant offered only where both are stocked. */

.gg-chip strong { font-size: 1.05rem; font-weight: 800; }
.gg-chip__unit { font-size: 0.8125rem; font-weight: 600; opacity: .65; margin-left: -3px; }

.gg-lengths {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0 0;
  padding: 11px 13px;
  background: var(--dr-bg, #f7f6f3);
  border-radius: 9px;
}

.gg-lengths[hidden] { display: none; }

.gg-lengths__label {
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--dr-muted, #6b7280);
}

.gg-lengths__opts { display: flex; gap: 6px; }

.gg-len {
  font: inherit;
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink-2, #2a2f36);
  background: #fff;
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 8px;
  padding: 7px 13px;
  min-height: 40px;
  cursor: pointer;
}

.gg-len:hover { border-color: var(--dr-brand, #1a3a6b); }

.gg-len.is-active {
  background: var(--dr-brand, #1a3a6b);
  border-color: var(--dr-brand, #1a3a6b);
  color: #fff;
}

.gg-lengths__note { font-size: 0.875rem; font-weight: 600; color: #1a7f4b; }

/* Availability: ready-to-ship vs made-to-order, per size. */
.gg-model__avail.is-order { color: #9a6108; }

@media (max-width: 640px) {
  .gg-lengths { flex-wrap: wrap; gap: 8px; }
  .gg-lengths__note { flex: 1 1 100%; }
}

/* ── Dimension dropdowns ─────────────────────────────────────────────────
   Deliberately large: this is the primary control on the page and the
   audience skews older. Nothing here goes below 16px. */

.gg-sizepick {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 16px;
  margin: 0 0 18px;
}

.gg-sizepick__field { display: flex; flex-direction: column; gap: 7px; min-width: 190px; }

.gg-sizepick__field label {
  font-size: 1rem;
  font-weight: 700;
  color: var(--dr-ink, #0f1419);
}

.gg-sizepick__wrap { position: relative; display: block; }

.gg-sizepick__wrap::after {
  content: "";
  position: absolute;
  right: 16px;
  top: 50%;
  width: 11px;
  height: 11px;
  margin-top: -7px;
  border-right: 2.5px solid var(--dr-brand-2, #0f2240);
  border-bottom: 2.5px solid var(--dr-brand-2, #0f2240);
  transform: rotate(45deg);
  pointer-events: none;
}

.gg-sizegate .gg-sizepick__select {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  font: inherit;
  font-size: 1.125rem;          /* 18px */
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink, #0f1419);
  background: #fff;
  border: 2px solid var(--dr-line, #e7e5df);
  border-radius: 10px;
  padding: 14px 44px 14px 16px;
  min-height: 56px;
  cursor: pointer;
}

.gg-sizegate .gg-sizepick__select:hover:not(:disabled) { border-color: var(--dr-brand, #1a3a6b); }
.gg-sizegate .gg-sizepick__select:focus-visible { outline: 3px solid var(--dr-brand, #1a3a6b); outline-offset: 2px; }
.gg-sizegate .gg-sizepick__select:disabled { background: var(--dr-bg, #f7f6f3); color: var(--dr-muted, #6b7280); cursor: not-allowed; }

.gg-sizepick__note {
  font-size: 0.9375rem;
  font-weight: 600;
  color: #1a7f4b;
}

.gg-sizepick__note[hidden] { display: none; }

.gg-sizepick__clear {
  font: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: var(--dr-muted, #6b7280);
  background: transparent;
  border: 0;
  padding: 14px 6px;
  min-height: 56px;
  text-decoration: underline;
  cursor: pointer;
}

.gg-sizepick__clear.is-hidden { display: none; }

.gg-sizeform[hidden] { display: none; }

@media (max-width: 640px) {
  .gg-sizepick { gap: 13px; }
  .gg-sizepick__field { min-width: 0; flex: 1 1 100%; }
  .gg-sizepick__clear { align-self: flex-start; }
}

/* ── Made-to-order quote state ───────────────────────────────────────────
   The size exists at Media Strom but not on our shelf: we show our derived
   price and drop the cart button, because there is no product to add yet. */
.gg-model.is-quote { border-style: dashed; }
.gg-model.is-quote .gg-model__now { color: var(--dr-brand-2, #0f2240); }
.gg-model__cart.is-hidden { display: none; }
.gg-model.is-quote .gg-model__cta { flex: 1 1 auto; text-align: center; }

/* ── Ready-to-deliver-only filter ────────────────────────────────────────── */
.gg-readyonly {
  display: flex;
  align-items: center;
  gap: 11px;
  margin: 14px 0 0;
  padding: 13px 15px;
  border: 1.5px solid var(--dr-line, #e7e5df);
  border-radius: 10px;
  background: var(--dr-bg, #f7f6f3);
  cursor: pointer;
  font-size: 1rem;
  line-height: 1.4;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-readyonly:hover { border-color: #1a7f4b; }
.gg-readyonly input { width: 22px; height: 22px; flex: 0 0 22px; accent-color: #1a7f4b; cursor: pointer; }
.gg-readyonly strong { color: #1a7f4b; }
.gg-model.is-hidden-by-filter { display: none; }

/* ── Size gate prominence + popular picks ────────────────────────────────
   The gate was easy to scroll past. It now reads as an explicit first step. */
.gg-sizegate {
  border: 2px solid var(--dr-brand, #1a3a6b);
  border-top: 6px solid var(--dr-brand, #1a3a6b);
}

.gg-sizegate__step {
  display: inline-block;
  margin-bottom: 8px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--dr-brand, #1a3a6b);
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.gg-sizegate__lead {
  margin: 6px 0 18px;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-sizepick__field label span { font-weight: 600; color: var(--dr-muted, #6b7280); }
.gg-sizepick__x { align-self: center; margin-top: 26px; font-size: 1.25rem; font-weight: 700; color: var(--dr-muted, #6b7280); }
.gg-sizegate .gg-sizepick__select { min-width: 130px; }

.gg-sizeform__msg.is-ok { color: #1a7f4b; }
.gg-sizeform__msg.is-order { color: #9a6108; }

.gg-popular { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 4px 0 0; }

.gg-popular__label {
  font-size: 1rem;
  font-weight: 700;
  color: var(--dr-ink-2, #2a2f36);
}

.gg-popular__opts { display: flex; flex-wrap: wrap; gap: 8px; }

.gg-pop {
  font: inherit;
  font-size: 1.0625rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--dr-ink, #0f1419);
  background: var(--dr-bg, #f7f6f3);
  border: 2px solid var(--dr-line, #e7e5df);
  border-radius: 999px;
  padding: 11px 18px;
  min-height: 48px;
  cursor: pointer;
  transition: background .14s, border-color .14s, color .14s;
}

.gg-pop:hover { border-color: var(--dr-brand, #1a3a6b); background: var(--dr-brand-soft, #eaf1fb); }
.gg-pop.is-active { background: var(--dr-brand, #1a3a6b); border-color: var(--dr-brand, #1a3a6b); color: #fff; }

@media (max-width: 640px) {
  .gg-sizepick__field { flex: 1 1 0; min-width: 0; }
  .gg-sizepick__x { margin-top: 30px; }
  .gg-sizepick__clear { flex: 1 1 100%; }
}
