@font-face {
  font-family: 'Open Sauce';
  src: url('./OpenSauceSans-Bold.ttf') format('truetype');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

:root {
  --red: #750000;
  --dark-red: #500000;
  --black: #0c0c0c;
  --white: #ffffff;
  --off-white: #f5f3f0;
  --bg-color: #fcfbf9;
  --text-color: #0c0c0c;

  --font-logo: 'Open Sauce', sans-serif;
  --font-headline: 'Open Sauce', sans-serif;
  --font-base: 'Open Sauce', sans-serif;
  --font-infrared-body: 'Darker Grotesque', sans-serif;

  --transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  /* Navbar height used to offset page content when navbar is fixed */
  --navbar-height: 76px;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: var(--font-base);
  font-weight: normal;
  /* Body text: Helvetica Neue Regular */
  background-color: var(--bg-color);
  color: var(--text-color);
  line-height: 1.5;
  letter-spacing: -0.06em;
  overflow-x: hidden;
  /* offset page content so fixed navbar doesn't cover it */
  padding-top: var(--navbar-height);
}

img {
  max-width: 100%;
  display: block;
}

a {
  text-decoration: none;
  color: inherit;
}

ul {
  list-style: none;
}

/* Animations */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-in {
  animation: fadeIn 0.8s ease-out forwards;
  opacity: 0;
}

.delay-1 {
  animation-delay: 0.1s;
}

.delay-2 {
  animation-delay: 0.2s;
}

.delay-3 {
  animation-delay: 0.3s;
}

/* Navbar - Default (Mobile/Desktop shared base)
   Use fixed positioning so the navbar stays in view on scroll.
   Background left transparent by design. */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 2rem;
  background: transparent;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 10000;
  box-shadow: none;
}

.logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}

.logo img {
  height: 45px;
  width: auto;
  display: block;
}

/* Toggle logos based on screen size */
.logo-desktop {
  display: none !important;
}

.logo-mobile {
  display: block !important;
}

.nav-links {
  display: none;
  /* Hamburger on mobile */
}

/* Desktop Styles */
@media (min-width: 769px) {
  .logo-desktop {
    display: block !important;
    filter: invert(1);
  }

  .logo-mobile {
    display: none !important;
  }

  .navbar {
    /* desktop sizing only - position handled globally */
    --navbar-height: 110px;
    width: 100%;
    background: transparent;
    padding: 2.5rem 0 2rem 4rem;
    /* Padding left for logo */
    box-shadow: none;
    justify-content: flex-start;
  }

  .logo img.logo-desktop {
    height: 68px;
    /* Reduced by 15% from 80px */
  }

  .nav-links {
    display: flex;
    gap: 0;
    align-items: center;
    background-color: rgba(255, 255, 255, 0.78);
    flex: 1;
    margin-left: 3rem;
    padding: 0.2rem 0;
    /* Removed large right padding to balance the spacing */
    justify-content: space-around;
    /* Spread items evenly */
    border-radius: 0;
  }

  .nav-actions {
    display: none;
    /* Hidden on desktop now that Join is moved to Hero */
  }

  .nav-links a {
    font-family: var(--font-base);
    font-weight: bold;
    font-size: 0.85rem;
    color: var(--black);
    text-transform: uppercase;
    letter-spacing: 0px;
    /* Matched to design */
    position: relative;
    transition: var(--transition);
    padding: 0 1rem;
  }

  .nav-links a:hover {
    opacity: 0.7;
  }

  .nav-links a::after {
    display: none;
  }
}

.btn-primary,
.healcode-pricing-option-text-link {
  background-color: var(--black);
  color: var(--white);
  padding: 0.75rem 2rem;
  font-family: var(--font-base);
  font-weight: bold;
  /* Buttons and pricing: Helvetica Neue Bold */
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0px;
  border: none;
  cursor: pointer;
  transition: var(--transition);
  display: inline-block;
  text-decoration: none;
}

.btn-primary:hover,
.healcode-pricing-option-text-link:hover {
  background-color: var(--red);
  transform: translateY(-2px);
  box-shadow: 0 10px 20px rgba(214, 0, 13, 0.2);
  color: var(--white);
}

.btn-hero {
  background-color: var(--white);
  color: var(--black);
  padding: 1.05rem 2.5rem;
  /* Symmetrical internal padding */
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  font-size: 1rem;
  letter-spacing: 2px;
  border: none;
  cursor: pointer;
  transition: var(--transition);
  display: inline-block;
  margin-top: 4rem;
  /* Increased space between text and button */
  text-decoration: none;
}

.btn-hero:hover {
  background-color: #750000;
  /* Brand Red */
  color: var(--white);
  transform: scale(1.05);
}

/* Optimization for Healcode Widgets */
.healcode-btn-wrapper {
  display: inline-block;
  min-height: 36px;
  min-width: 80px;
  /* 10% reduction from original 100px */
  width: fit-content;
  background-color: var(--black);
  transition: var(--transition);
  position: relative;
}

.pricing-box>.healcode-btn-wrapper {
  align-self: flex-start;
  /* Prevent stretching in welcome offer flex column */
}

/* Static placeholder that mirrors the real button */
.healcode-btn-wrapper .healcode-placeholder {
  display: inline-block;
  background-color: var(--black);
  color: var(--white);
  padding: 0.475rem 1.8rem;
  /* 10% less wide than original 2rem */
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0px;
  line-height: normal;
  /* Match the real button line-height better */
  cursor: default;
  user-select: none;
  white-space: nowrap;
}

/* Once real widget link loads, hide the placeholder and clear wrapper bg */
.healcode-btn-wrapper:has(.healcode-pricing-option-text-link) {
  background-color: transparent;
}

.healcode-btn-wrapper:has(.healcode-pricing-option-text-link) .healcode-placeholder {
  display: none;
}

/* Match the real button's hover state for the placeholder */
.healcode-btn-wrapper:not(:has(.healcode-pricing-option-text-link)):hover {
  background-color: var(--red);
  transform: translateY(-2px);
  box-shadow: 0 10px 20px rgba(214, 0, 13, 0.2);
  cursor: pointer;
}

.healcode-btn-wrapper:not(:has(.healcode-pricing-option-text-link)):hover .healcode-placeholder {
  background-color: var(--red);
}

/* Hero Section */
.hero {
  min-height: 80vh;
  background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url('./hero-background.jpg') center top/cover no-repeat;
  background-position: center top;
  display: flex;
  align-items: center;
  /* Pull the hero up so its background starts at the very top of the page
     while preserving content spacing by adding the navbar height to padding */
  margin-top: calc(-1 * var(--navbar-height));
  padding: calc(var(--navbar-height) + 6rem) 4rem 4rem;
  background-color: #1c1c1c;
}

.hero-title {
  font-family: var(--font-headline);
  /* Headline: Helvetica Neue Condensed Bold */
  font-stretch: condensed;
  font-weight: bold;
  font-size: clamp(3rem, 8vw, 6rem);
  color: var(--white);
  line-height: calc(0.9em + 4px);
  text-transform: uppercase;
  max-width: 800px;
  letter-spacing: -4px;
}

/* Intro Section */
.intro {
  display: flex;
  min-height: 100vh;
  background-color: var(--white);
}

.intro-text {
  flex: 1.25;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 8rem 5rem 6rem;
  position: relative;
  color: var(--black);
}

.intro-headline-group {
  display: flex;
  flex-direction: column;
}

.intro-headline {
  font-family: var(--font-headline);
  font-size: clamp(2rem, 4.5vw, 4.2rem);
  line-height: 0.9;
  letter-spacing: -0.05em;
  text-transform: uppercase;
  margin-bottom: 0.2rem;
  font-weight: bold;
}

.intro-subheadline {
  font-family: var(--font-headline);
  font-size: clamp(2rem, 4.5vw, 4.2rem);
  line-height: 0.9;
  letter-spacing: -0.05em;
  text-transform: uppercase;
  margin-left: 20%;
  /* Adjusted stagger for smaller text */
  font-weight: bold;
}

.intro-description {
  align-self: flex-end;
  max-width: 400px;
  margin-top: 4rem;
  text-align: right;
}

.intro-description p {
  font-family: var(--font-base);
  font-size: 1.1rem;
  line-height: 1.3;
  text-transform: none;
  font-weight: bold;
  letter-spacing: -0.02em;
}

.intro-footer {
  display: flex;
  justify-content: center;
  /* Center the button in the remaining space */
  margin-top: auto;
}

.btn-black {
  background-color: var(--black);
  color: var(--white);
  padding: 1rem 3rem;
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  font-size: 1rem;
  transition: var(--transition);
  border: none;
  cursor: pointer;
}

.btn-black:hover {
  background-color: var(--red);
  transform: translateY(-2px);
}

.intro-image {
  flex: 1;
  background: url('./reception.jpg') center/cover;
  min-height: 400px;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  .intro {
    flex-direction: column;
  }

  .intro-text {
    padding: 4rem 2rem;
    min-height: auto;
  }

  .intro-subheadline {
    margin-left: 0;
  }

  .intro-description {
    text-align: left;
    margin-top: 2rem;
    max-width: 100%;
  }

  .intro-footer {
    margin-top: 3rem;
  }
}

/* Split Section */
.split-section {
  display: flex;
  height: 84vh;
}

.split-item {
  flex: 1;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  padding: 3rem;
  text-decoration: none;
}

.split-bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #222;
  background-size: cover;
  background-position: center;
  transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  z-index: 1;
}

.split-item::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent 50%);
  z-index: 2;
  transition: opacity 0.3s;
}

.split-item:hover .split-bg {
  transform: scale(1.05);
}

.split-item:hover::after {
  opacity: 0.8;
}

.split-title {
  font-family: var(--font-headline);
  font-stretch: condensed;
  font-weight: bold;
  color: var(--white);
  font-size: clamp(2.25rem, 4.875vw, 4.875rem);
  line-height: 0.9;
  letter-spacing: -0.03em;
  width: 100%;
  text-align: left;
  z-index: 3;
  position: relative;
}

.split-sub {
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  color: var(--white);
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  z-index: 3;
  position: relative;
  margin-top: 0.4rem;
  width: 100%;
  text-align: left;
}

/* Why Infrared Home Section */
.why-infrared-home {
  padding: 8rem 4rem;
  background-color: var(--bg-color);
  color: var(--black);
}

.why-home-title {
  font-family: var(--font-headline);
  font-size: clamp(3rem, 7vw, 6rem);
  line-height: 0.85;
  letter-spacing: -0.05em;
  text-transform: uppercase;
  font-weight: bold;
  margin-bottom: 6rem;
}

.why-home-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6rem 4rem;
}

.why-home-item {
  display: flex;
  gap: 3rem;
  align-items: flex-start;
}

.why-home-subtitle {
  font-family: var(--font-headline);
  font-size: 1.8rem;
  line-height: 0.9;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  font-weight: bold;
  min-width: 160px;
}

.why-home-text {
  font-family: var(--font-base);
  font-size: 0.82rem;
  line-height: 1.1;
  text-transform: uppercase;
  font-weight: bold;
  letter-spacing: 0.02em;
}

@media (max-width: 1024px) {
  .why-home-grid {
    gap: 4rem 2rem;
  }

  .why-home-subtitle {
    min-width: 140px;
  }
}

@media (max-width: 768px) {
  .why-infrared-home {
    padding: 6rem 2rem;
  }

  .why-home-grid {
    grid-template-columns: 1fr;
    gap: 4rem;
  }

  .why-home-item {
    flex-direction: column;
    gap: 1rem;
  }

  .why-home-subtitle {
    font-size: 1.5rem;
  }
}

/* Instagram Section */
.instagram-section {
  position: relative;
  background-color: var(--bg-color);
  padding: 8rem 0;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  min-height: 600px;
}

.instagram-bg-text {
  position: absolute;
  top: 20%;
  /* Shifted upward ~10% from original 30% */
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--font-headline);
  font-stretch: condensed;
  font-size: clamp(4.8rem, 14.4vw, 16rem);
  /* Reduced by 20% from original */
  font-weight: bold;
  color: var(--black);
  white-space: nowrap;
  letter-spacing: -2px;
  z-index: 1;
  pointer-events: none;
  line-height: 1;
}

.instagram-carousel-wrapper {
  /* Position overlayed on top of the section so it can be precisely
     positioned to cover part of the heading. JS will set top/height
     to keep it covering ~35% of the heading's height. */
  position: absolute;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
  transition: top 220ms ease, height 220ms ease;
  /* Make the Instagram carousel wrapper non-interactable */
  pointer-events: none;
}

.instagram-track {
  display: flex;
  gap: 1.5vw;
  width: max-content;
}

.instagram-post {
  position: relative;
  width: 18vw;
  aspect-ratio: 4/5;
  background-color: #222;
  overflow: hidden;
  transition: transform 0.4s ease;
  display: block;
}

.instagram-post img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.9;
  transition: opacity 0.4s ease, transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.instagram-post:hover {
  /* Disabled hover transform for uninteractable carousel */
  transform: none;
}

.instagram-post:hover img {
  /* Disable hover image effects */
  opacity: 0.9;
  transform: none;
}

.instagram-icon {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 24px;
  height: 24px;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>') no-repeat center/contain;
  opacity: 0;
  z-index: 2;
  transition: opacity 0.3s;
}

.instagram-post:hover .instagram-icon {
  opacity: 0;
}

/* Make brand carousel and its contents non-interactable */
.brand-carousel,
.brand-carousel-track,
.brand-carousel * {
  pointer-events: none;
}

@media (max-width: 1024px) {
  .instagram-post {
    width: 25vw;
  }

  .instagram-bg-text {
    font-size: 16vw;
    /* Reduced by 20% from 20vw */
  }
}

@media (max-width: 768px) {
  .instagram-section {
    padding: 6rem 0;
  }

  .instagram-post {
    width: 35vw;
  }

  .instagram-bg-text {
    font-size: 16.8vw;
    /* Reduced by 25% from 22.4vw */
    top: 30%;
    /* Move down a bit to match desktop appearance */
  }
}

/* Small gap between major stacked sections to improve visual separation */
section + section,
.hero + .intro,
.hero + .instagram-section,
.intro + .instagram-section,
.split-section + .instagram-section {
  margin-top: 1.5rem; /* adjust as needed */
}

/* Brand Carousel */
@keyframes slide-left {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-50%);
  }
}

@keyframes slide-right {
  0% {
    transform: translateX(-50%);
  }

  100% {
    transform: translateX(0);
  }
}

.brand-carousel {
  background-color: var(--bg-color);
  padding: 3rem 0;
  overflow: hidden;
  position: relative;
}

/* Edge fade masks */
.brand-carousel::before,
.brand-carousel::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: 120px;
  z-index: 2;
  pointer-events: none;
}

.brand-carousel::before {
  left: 0;
  background: linear-gradient(to right, var(--bg-color), transparent);
}

.brand-carousel::after {
  right: 0;
  background: linear-gradient(to left, var(--bg-color), transparent);
}

.brand-carousel-track {
  display: flex;
  align-items: center;
  gap: 5rem;
  width: max-content;
  will-change: transform;
  animation: slide-left 70s linear infinite;
}

.brand-carousel-track--reverse {
  animation: slide-right 220s linear infinite;
}

.brand-carousel-track img {
  height: 40px;
  width: auto;
  max-width: none;
  flex-shrink: 0;
  filter: grayscale(100%);
  opacity: 0.6;
  transition: all 0.4s ease;
}

.brand-carousel-track img:hover {
  /* Disabled hover effect for uninteractable brand carousel */
  filter: grayscale(100%) brightness(100%);
  opacity: 0.6;
  transform: none;
}

/* Footer Section */
.footer-main {
  background-color: var(--black);
  color: var(--white);
  padding: 6rem 4rem;
  text-align: left;
}

.footer-info h3 {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.5rem;
  margin-bottom: 2rem;
}

/* Policies page styles (matches reference image) */
.policies-hero {
  background: #0b0b0b;
  padding: 3rem 2rem 1rem; /* reduced vertical padding to decrease gap */
}

.house-rules {
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  color: var(--white);
  letter-spacing: -1px;
  margin: 0;
  font-size: 4rem; /* match other pages */
  line-height: 0.95;
  padding-left: 0;
  text-align: center;
}

.policies-section {
  background: #0b0b0b;
  color: var(--white);
  padding: 1.5rem 2rem 4rem; /* reduced top padding to halve space between header and rules */
}

.policies-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 1rem 2rem 0; /* reduce inner top padding */
  text-align: left;
}

.policies-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3.5rem 6rem;
  align-items: start;
}

.policy-block h3 {
  font-family: var(--font-headline);
  font-weight: bold;
  font-size: 1.6rem;
  text-transform: uppercase;
  margin-bottom: 1.6rem;
  letter-spacing: -0.5px;
  padding-left: 20px; /* shift headings right to match body text */
}

.policy-block p {
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  color: var(--white);
  line-height: 1.05;
  font-size: 1.05rem; /* slightly larger body text */
  margin-bottom: 1.2rem;
  letter-spacing: -0.02em;
  padding-left: 20px; /* shift body text to the right */
}

.policy-block {
  text-align: left;
}

.policies-footnotes {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-top: 4.5rem;
}

.footnote-left {
  font-size: 0.67rem;
  color: rgba(255,255,255,0.6);
  text-transform: uppercase;
  line-height: 1.1;
}

.footnote-right {
  font-size: 0.82rem;
  color: var(--white);
  text-transform: uppercase;
  font-weight: bold;
}

@media (max-width: 1024px) {
  .policies-grid {
    grid-template-columns: 1fr 1fr;
    gap: 3rem 3rem;
  }

  .house-rules {
    font-size: clamp(2.4rem, 10vw, 5.2rem);
    padding-left: 0;
    text-align: center;
  }
}

@media (max-width: 768px) {
  .policies-grid {
    grid-template-columns: 1fr;
    gap: 2.4rem;
  }

  .policies-inner {
    padding: 1.5rem 1.5rem 0;
  }

  .house-rules {
    text-align: left;
    padding-left: 1.25rem;
    font-size: clamp(2rem, 14vw, 4rem);
  }

  .policies-footnotes {
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
  }

  .footnote-right {
    align-self: flex-end;
  }
}

.footer-phone {
  font-size: 1.25em;
  margin-bottom: 1rem;
}

.footer-socials {
  margin-top: 2rem;
  display: flex;
  gap: 1rem;
}

.btn-social {
  background-color: var(--white);
  color: var(--black);
  padding: 0.5rem 1.5rem;
  font-family: var(--font-base);
  font-weight: bold;
  text-transform: uppercase;
  font-size: 0.75rem;
  border: 1px solid var(--white);
  cursor: pointer;
  transition: var(--transition);
  display: inline-block;
  text-align: center;
}

.btn-social:hover {
  background-color: transparent;
  color: var(--white);
  transform: translateY(-2px);
}

.newsletter-signup {
  margin-top: 2rem;
  display: flex;
  gap: 0;
  max-width: 450px;
}

.newsletter-signup input[type="email"] {
  background-color: transparent;
  border: 1px solid var(--white);
  color: var(--white);
  padding: 0.5rem 1rem;
  font-family: var(--font-base);
  font-size: 0.8rem;
  text-transform: uppercase;
  width: 100%;
  outline: none;
  font-weight: bold;
  letter-spacing: 1px;
}

.newsletter-signup input[type="email"]::placeholder {
  color: rgba(255, 255, 255, 0.5);
}

/* Mindbody Register Button Styling */
.healcode-register-text-link {
  background-color: var(--white) !important;
  color: var(--black) !important;
  padding: 0.65rem 1.5rem !important;
  /* Slightly more padding to match input height */
  font-family: var(--font-base) !important;
  font-weight: bold !important;
  text-transform: uppercase !important;
  font-size: 0.8rem !important;
  border: 1px solid var(--white) !important;
  cursor: pointer !important;
  transition: var(--transition) !important;
  display: inline-block !important;
  text-align: center !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  line-height: 1 !important;
}

.healcode-register-text-link:hover {
  background-color: transparent !important;
  color: var(--white) !important;
}

@media (max-width: 768px) {
  .newsletter-signup {
    flex-direction: column;
    max-width: 100%;
  }

  .newsletter-signup input[type="email"] {
    border-bottom: none;
  }
}

.footer-simple {
  background-color: var(--black);
  color: var(--white);
  padding: 2rem 4rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-base);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0px;
}

/* Internal Pages Layout */
.page-header {
  /* Pull page headers to the very top of the viewport (behind transparent navbar)
     and compensate with extra padding so content keeps its visual spacing. */
  margin-top: calc(-1 * var(--navbar-height));
  padding: calc(var(--navbar-height) + 8rem) 4rem 1rem;
  background-color: var(--black);
  text-align: center;
}

/* Compact header variant for pages that should sit closer to the navbar (policies) */
.page-header.page-header--compact {
  padding: calc(var(--navbar-height) + 0rem) 4rem 0.5rem;
}

@media (max-width: 768px) {
  .page-header.page-header--compact {
    /* Compact headers get proportionally reduced top padding on mobile */
    padding: calc(var(--navbar-height) + 0.6rem) 1rem 0.5rem;
  }
}

.page-title {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 4rem;
  color: var(--white);
  text-transform: uppercase;
  margin-bottom: 1rem;
}

/* Mobile: Reduce header text by 20% and add side padding */
@media (max-width: 768px) {
  .page-header {
    /* Reduce top spacing by ~50% on mobile */
    padding: calc(var(--navbar-height) + 4rem) 0.5rem 1rem;
  }

  .page-title {
    font-size: 3.2rem;
  }
}

.content-section {
  padding: 2rem;
  max-width: 1200px;
  margin: 0 auto;
}

.schedule-container {
  background-color: var(--white);
  padding: 1rem;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
  min-height: 600px;
}

/* Memberships / Packs Grid */
.pack-section {
  margin-bottom: 4rem;
}

.pack-section-title {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 2.5rem;
  margin-bottom: 2rem;
  text-transform: uppercase;
}

.pack-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 2rem;
}

.pack-card {
  background-color: var(--off-white);
  padding: 2rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 2rem;
  border-top: 4px solid transparent;
  transition: var(--transition);
}

.pack-card:hover {
  border-top-color: var(--red);
  transform: translateY(-5px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
}

.pack-info h4 {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.25rem;
  margin-bottom: 0.5rem;
  text-transform: uppercase;
}

.pack-info p {
  color: #666;
  font-size: 0.9rem;
}

.pack-price-btn {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.pack-price {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.25rem;
}

/* Custom Pricing Layout (Image Match) */
.pricing-container {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  max-width: 1200px;
  margin: 0 auto 6rem;
  padding: 0 4rem;
}

.pricing-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}

.pricing-col {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.pricing-box {
  background-color: var(--off-white);
  padding: 3rem;
  display: flex;
  flex-direction: column;
}

.pricing-box-title {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 3rem;
  letter-spacing: -3px;
  line-height: 0.9;
  text-transform: uppercase;
  margin-bottom: 2.5rem;
}

/* Welcome Offer Styles */
.pricing-welcome-title {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.4rem;
  text-transform: uppercase;
  letter-spacing: -1px;
  margin-bottom: 0.5rem;
  line-height: 1.1;
}

.pricing-welcome-price {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.2rem;
  text-transform: uppercase;
  line-height: 1.2;
}

.pricing-welcome-desc {
  font-family: var(--font-base);
  font-size: 0.7rem;
  font-weight: bold;
  text-transform: uppercase;
  margin-top: 0.2rem;
  margin-bottom: 1.5rem;
}

/* Item List Styles (Memberships / Packs) */
.pricing-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 2rem;
}

.pricing-item:last-of-type {
  margin-bottom: 0;
}

.pricing-item-info {
  display: flex;
  flex-direction: column;
}

.pricing-item-note {
  font-family: var(--font-base);
  font-size: 0.65rem;
  font-weight: bold;
  text-transform: uppercase;
  color: var(--black);
  margin-top: 0.4rem;
  letter-spacing: -0.5px;
}

.pricing-item-title {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.2rem;
  text-transform: uppercase;
  line-height: 1.2;
  letter-spacing: -0.5px;
}

.pricing-item-price {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.2rem;
  text-transform: uppercase;
  line-height: 1.2;
  letter-spacing: -0.5px;
}

/* Footer Notes */
.pricing-footer-notes {
  margin-top: 3rem;
  font-family: var(--font-base);
  font-size: 0.7rem;
  font-weight: bold;
  text-transform: uppercase;
  color: #0c0c0c;
  line-height: 1.4;
}

/* Buttons */
.pricing-box .btn-primary,
.pricing-box .healcode-pricing-option-text-link {
  padding: 0.475rem 1.8rem !important;
  /* 10% less wide than original 2rem */
  font-size: 0.85rem !important;
}

.pricing-welcome-btn-wrapper {
  align-self: flex-start;
}

@media (max-width: 768px) {
  .pricing-row {
    grid-template-columns: 1fr;
  }

  .pricing-container {
    padding: 0 2rem;
  }

  .pricing-box {
    padding: 2rem;
  }

  .pricing-box-title {
    font-size: 2.5rem;
    letter-spacing: -2px;
  }

  /* Ensure BUY buttons align vertically in a fixed right column on mobile */
  .pricing-item {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1rem;
    align-items: start;
  }

  .pricing-item .healcode-btn-wrapper {
    justify-self: end;
    align-self: start;
  }
}


/* Why Infrared */
.infrared-split {
  display: flex;
  min-height: 80vh;
}

.infrared-image {
  flex: 1;
  background: url('./infrared-bg.jpg') center/cover;
  position: relative;
  display: flex;
  align-items: center;
  padding: 4rem;
  background-color: #1c1c1c;
  /* Fallback */
}

.infrared-title {
  font-family: var(--font-headline);
  font-stretch: condensed;
  font-weight: bold;
  font-size: 4rem;
  color: var(--white);
  line-height: 0.9;
  text-transform: uppercase;
}

.infrared-text {
  flex: 1;
  padding: 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2rem;
}

.infrared-text h3 {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.5rem;
  text-transform: uppercase;
}

.infrared-text p {
  font-family: var(--font-infrared-body);
  font-optical-sizing: auto;
  font-weight: 500;
  font-style: normal;
  color: #888;
  font-size: 1.1rem;
  line-height: 1.6;
  letter-spacing: normal;
}

/* Reversed layout (text left, image right) */
.infrared-split--reversed {
  flex-direction: row-reverse;
}

.reformer-image {
  background: #1c1c1c center/cover;
  /* Replace with actual image: background-image: url('./reformer-page-bg.jpg'); */
}

/* Policies */
.policies-bg {
  background-color: var(--black);
  color: var(--white);
  padding: 3.2rem 4rem;
  /* Reduced from 6rem */
}

.policies-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4rem;
  margin-top: 2.3rem;
  /* Reduced from 4rem */
}

.policy-block h4 {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.25rem;
  margin-bottom: 1rem;
  color: var(--white);
}

.policy-block p {
  color: #aaa;
  font-size: 0.9rem;
  margin-bottom: 1rem;
}

/* Schedule Placeholder */
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 2rem;
}

.schedule-table th,
.schedule-table td {
  padding: 1.5rem;
  border-bottom: 1px solid #ddd;
  text-align: left;
}

.schedule-table th {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 1.2rem;
}

.schedule-table tr:hover {
  background-color: var(--off-white);
}

/* Responsive */
@media (max-width: 900px) {

  .intro,
  .split-section,
  .infrared-split {
    flex-direction: column;
  }

  .split-item {
    min-height: 300px;
  }



  .policies-grid {
    grid-template-columns: 1fr;
  }

  /* Mobile fix: ensure Why Infrared section sits below the split images */
  .split-section {
    height: auto; /* allow stacked items to size naturally on mobile */
  }

  .split-item {
    min-height: 50vh; /* make each stacked split item tall enough to avoid overlap */
  }

  .why-infrared-home {
    margin-top: 0rem; /* push the Why Infrared section further down on mobile */
    z-index: 1;
  }
}

/* Nav Actions */
.nav-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
}

/* Hamburger */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 24px;
  height: 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 10002;
}

.hamburger .bar {
  width: 100%;
  height: 2px;
  background-color: var(--black);
  transition: var(--transition);
}

.hamburger.is-active .bar:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}

.hamburger.is-active .bar:nth-child(2) {
  opacity: 0;
}

.hamburger.is-active .bar:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

/* Mobile Menu */
.mobile-menu {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-color: var(--white);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 2rem;
  z-index: 10001;
  transform: translateY(-100%);
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  visibility: hidden;
}

.mobile-menu.is-active {
  transform: translateY(0);
  visibility: visible;
}

.mobile-menu a {
  font-family: var(--font-base);
  font-weight: bold;
  font-size: 2rem;
  text-transform: uppercase;
  color: var(--black);
  transition: color 0.3s ease;
}

.mobile-menu a:hover {
  color: var(--red);
}

@media (max-width: 768px) {
  .navbar {
    --navbar-height: 76px;
    /* mobile sizing only - position handled globally */
    width: 100%;
    background: transparent;
    padding: 1rem 2rem;
    box-shadow: none;
  }

  .nav-actions {
    background-color: rgba(255, 255, 255, 0.78);
    padding: 0.5rem 1rem;
    border-radius: 2px;
  }

  .nav-links {
    display: none;
  }

  .hamburger {
    display: flex;
  }

  .hero-title {
    font-size: 3rem;
  }

  .hero {
    padding: 6rem 2rem 4rem;
  }

  .content-section {
    padding: 1rem 0.5rem;
  }

  .schedule-container {
    padding: 0.5rem;
  }

  .footer-simple {
    padding: 2rem 1rem;
  }
}

/* Classes Section (Used in BB Method) */
.classes-section {
  padding: 6rem 4rem;
  background-color: var(--white);
}

.classes-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}

@media (max-width: 1024px) {
  .classes-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .classes-grid {
    grid-template-columns: 1fr;
  }
}

.class-card {
  cursor: pointer;
}

.class-image-wrapper {
  position: relative;
  aspect-ratio: 4/5;
  overflow: hidden;
  background-color: var(--black);
}

.class-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94), filter 0.5s ease, opacity 0.5s ease;
  opacity: 0.85;
}

.class-card:hover .class-img,
.class-card.active .class-img {
  transform: scale(1.05);
  filter: blur(6px);
  opacity: 0.6;
}

/* Hover text overlay */
.class-hover-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 2rem;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0.3) 60%, transparent 100%);
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

.class-card:hover .class-hover-overlay,
.class-card.active .class-hover-overlay {
  opacity: 1;
}

.class-title-overlay {
  position: absolute;
  bottom: 2rem;
  left: 2rem;
  font-family: var(--font-headline);
  font-stretch: condensed;
  font-weight: bold;
  color: var(--white);
  font-size: 2rem;
  text-transform: uppercase;
  z-index: 3;
  line-height: 1;
  transition: opacity 0.3s ease, transform 0.4s ease;
}

/* Move title to the top on hover */
.class-card:hover .class-title-overlay,
.class-card.active .class-title-overlay {
  bottom: auto;
  top: 2rem;
  transform: translateY(0);
}

/* Mobile: Position title at top and move to very top on hover/active */
@media (max-width: 768px) {
  .class-title-overlay {
    bottom: auto;
    top: 2rem;
  }

  .class-card:hover .class-title-overlay,
  .class-card.active .class-title-overlay {
    transform: translateY(0);
  }
}

.class-hover-overlay .class-meta {
  display: flex;
  gap: 0.5rem;
  font-family: var(--font-base);
  font-size: 0.6rem;
  letter-spacing: -0.3px;
  text-transform: uppercase;
  font-weight: normal;
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 0.5rem;
}

.class-hover-overlay .class-desc-title {
  font-family: var(--font-base);
  font-size: 0.7rem;
  letter-spacing: -0.3px;
  text-transform: uppercase;
  font-weight: bold;
  color: var(--white);
  margin-bottom: 0.4rem;
}

.class-hover-overlay .class-desc {
  font-family: var(--font-base);
  font-size: 0.65rem;
  letter-spacing: -0.3px;
  text-transform: uppercase;
  font-weight: normal;
  color: rgba(255, 255, 255, 0.8);
  line-height: 1.5;
}