:root {
  /* GCFM Core */
  --gcfm-navy-950: #02143F;
  --gcfm-navy-900: #061943;
  --gcfm-navy-800: #03296F;
  --gcfm-heading: #091D58;
  --gcfm-blue: #2E6BFF;
  --gcfm-blue-hover: #155DE0;

  /* Text */
  --gcfm-text: #33415F;
  --gcfm-text-muted: #68758F;
  --gcfm-text-on-dark: #FFFFFF;
  --gcfm-text-soft-on-dark: #D9E3FF;

  /* Surfaces */
  --gcfm-white: #FFFFFF;
  --gcfm-bg: #F7F8FB;
  --gcfm-bg-blue: #EEF3FB;
  --gcfm-border: #DFE5F0;
  --gcfm-border-alt: #E3E7F1;

  /* Planet Fitness contextual colors */
  --pf-dark-purple: #290241;
  --pf-digital-purple: #9600FA;
  --pf-light-purple: #FAEEFF;
  --pf-yellow: #FFDC00;

  /* Typography */
  --gcfm-font: "Montserrat", Arial, Helvetica, sans-serif;
  --gcfm-weight-regular: 400;
  --gcfm-weight-medium: 500;
  --gcfm-weight-semibold: 600;
  --gcfm-weight-bold: 700;
  --gcfm-weight-extrabold: 800;

  /* Radius */
  --gcfm-radius-sm: 8px;
  --gcfm-radius-md: 12px;
  --gcfm-radius-lg: 16px;

  /* Shadow */
  --gcfm-shadow-card: 0 8px 30px rgba(7, 26, 69, 0.06);

  /* Width */
  --gcfm-container: 1280px;

  /* Spacing */
  --space-xs: 8px;
  --space-sm: 16px;
  --space-md: 24px;
  --space-lg: 32px;
  --space-xl: 48px;
  --space-2xl: 64px;
  --space-3xl: 80px;
  --space-4xl: 96px;
  --space-5xl: 120px;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--gcfm-font);
  color: var(--gcfm-text);
  background: var(--gcfm-white);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

.gcfm-container {
  width: min(calc(100% - 64px), var(--gcfm-container));
  margin-inline: auto;
}

.gcfm-section {
  padding-block: 96px;
}

.gcfm-eyebrow {
  margin: 0 0 18px;
  color: var(--gcfm-blue);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.gcfm-h1 {
  margin: 0;
  color: var(--gcfm-heading);
  font-size: clamp(2.5rem, 5vw, 4.75rem);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.025em;
}

.gcfm-h2 {
  margin: 0;
  color: var(--gcfm-heading);
  font-size: clamp(1.9rem, 3.2vw, 2.75rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.015em;
}

.gcfm-h3 {
  margin: 0;
  color: var(--gcfm-heading);
  font-size: clamp(1.35rem, 2vw, 1.75rem);
  font-weight: 700;
  line-height: 1.25;
}

.gcfm-body {
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.65;
}

.gcfm-button {
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 0 24px;
  border: 1px solid var(--gcfm-blue);
  border-radius: var(--gcfm-radius-sm);
  background: var(--gcfm-blue);
  color: #fff;
  font: 700 15px/1 var(--gcfm-font);
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.gcfm-button:hover,
.gcfm-button:focus-visible {
  background: var(--gcfm-blue-hover);
  border-color: var(--gcfm-blue-hover);
  transform: translateY(-1px);
}

.gcfm-button--outline {
  color: var(--gcfm-blue);
  background: transparent;
}

.gcfm-button--outline:hover,
.gcfm-button--outline:focus-visible {
  color: var(--gcfm-blue);
  background: var(--gcfm-bg-blue);
}

.gcfm-card {
  background: #fff;
  border: 1px solid var(--gcfm-border-alt);
  border-radius: var(--gcfm-radius-md);
  box-shadow: var(--gcfm-shadow-card);
}

.gcfm-dark-band {
  color: #fff;
  background: linear-gradient(90deg, var(--gcfm-navy-950), var(--gcfm-navy-800));
}

.gcfm-hero {
  color: #fff;
  background-color: var(--gcfm-navy-950);
}

.gcfm-form label {
  display: block;
  margin-bottom: 8px;
  color: var(--gcfm-heading);
  font-weight: 600;
}

.gcfm-form input,
.gcfm-form textarea,
.gcfm-form select {
  width: 100%;
  min-height: 56px;
  padding: 14px 18px;
  border: 1px solid #D7DEEF;
  border-radius: 8px;
  background: #fff;
  color: var(--gcfm-text);
  font: 400 16px/1.4 var(--gcfm-font);
  box-sizing: border-box;
}

.gcfm-form textarea {
  min-height: 168px;
  resize: vertical;
}

.gcfm-form input:focus,
.gcfm-form textarea:focus,
.gcfm-form select:focus {
  outline: none;
  border-color: var(--gcfm-blue);
  box-shadow: 0 0 0 3px rgba(46, 107, 255, .15);
}

.gcfm-image {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--gcfm-radius-md);
}

@media (max-width: 1024px) {
  .gcfm-container {
    width: min(calc(100% - 48px), var(--gcfm-container));
  }

  .gcfm-section {
    padding-block: 72px;
  }
}

@media (max-width: 767px) {
  .gcfm-container {
    width: calc(100% - 40px);
  }

  .gcfm-section {
    padding-block: 52px;
  }
}

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