/* ==========================================================================
   FORM ATHLETICS — page sections
   hero · marquee · programs · studio · coaches · membership · stories ·
   schedule · final CTA · footer
   ========================================================================== */

.section-head {
  display: grid;
  gap: 24px;
  margin-bottom: clamp(40px, 6vw, 88px);
}

.section-head .h2 {
  margin-top: 1.4rem;
}

@media (min-width: 900px) {
  .section-head {
    grid-template-columns: 1.5fr 1fr;
    align-items: end;
    gap: 72px;
  }

  .section-head__side {
    justify-self: end;
  }
}

/* House photographic grade: everything mono, contrasty, a touch dark */
.photo {
  position: relative;
  overflow: hidden;
  background: var(--graphite);
}

.photo img,
.gs {
  filter: grayscale(1) contrast(1.12) brightness(0.86);
}

.photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, 50% 50%);
}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  isolation: isolate;
  background: var(--black);
  color: var(--off);
}

.hero__media {
  position: absolute;
  inset: 0;
  z-index: -3;
}

.hero__media picture {
  display: block;
  width: 100%;
  height: 100%;
}

.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 62% 30%;
  filter: grayscale(1) contrast(1.15) brightness(0.8);
  animation: hero-in 1.6s var(--ease) both;
  will-change: transform;
}

@keyframes hero-in {
  from {
    transform: scale(1.12);
    filter: grayscale(1) contrast(1.15) brightness(0.3);
  }
}

.hero__shade {
  position: absolute;
  inset: 0;
  z-index: -2;
  background:
    linear-gradient(to top, rgba(10, 10, 10, 0.96) 0%, rgba(10, 10, 10, 0.55) 36%, rgba(10, 10, 10, 0.05) 68%),
    linear-gradient(to right, rgba(10, 10, 10, 0.7), rgba(10, 10, 10, 0) 62%),
    linear-gradient(to bottom, rgba(10, 10, 10, 0.65), rgba(10, 10, 10, 0) 22%);
}

/* volt slash cutting across the frame */
.hero__slash {
  position: absolute;
  z-index: -1;
  top: -10%;
  bottom: -10%;
  right: 30%;
  width: clamp(10px, 1.4vw, 22px);
  background: var(--volt);
  transform: skewX(-14deg) translateY(-110%);
  animation: slash 1s var(--ease-snap) 0.5s forwards;
  mix-blend-mode: normal;
}

@keyframes slash {
  to {
    transform: skewX(-14deg) translateY(0);
  }
}

.hero__inner {
  padding-top: calc(var(--header-h) + 80px);
  padding-bottom: clamp(26px, 4.4vh, 48px);
}

.hero__kicker {
  margin-bottom: clamp(16px, 2.4vw, 28px);
  color: var(--off);
}

.hero__title {
  font-size: clamp(5.2rem, 20.5vw, 20rem);
  line-height: 0.8;
  margin-left: -0.03em;
}

.hero__title .line {
  display: block;
  overflow: hidden;
  padding: 0.03em 0.05em 0.05em;
  margin: -0.03em -0.05em -0.05em;
}

.hero__title .line > span {
  display: block;
  transform: translateY(105%);
  animation: line-up 0.95s var(--ease-snap) forwards;
  animation-delay: calc(0.25s + var(--i, 0) * 0.13s);
}

@keyframes line-up {
  to {
    transform: none;
  }
}

.hero__foot {
  display: grid;
  gap: 26px;
  margin-top: clamp(24px, 3.6vw, 44px);
  padding-top: clamp(20px, 2.4vw, 28px);
  border-top: 1px solid var(--line-d-strong);
}

.hero__copy {
  font-size: clamp(1.2rem, 2vw, 1.8rem);
  font-weight: 800;
  font-stretch: 78%;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  line-height: 1.1;
}

.hero__copy span {
  color: var(--volt);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.hero__loc {
  display: none;
}

.js .hero__kicker,
.js .hero__foot {
  opacity: 0;
  animation: fade-up 0.9s var(--ease) 0.9s forwards;
}

.js .hero__kicker {
  animation-delay: 0.15s;
}

@keyframes fade-up {
  from {
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@media (min-width: 900px) {
  .hero__foot {
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 56px;
  }

  .hero__loc {
    display: block;
    position: absolute;
    right: var(--gutter);
    top: 50%;
    writing-mode: vertical-rl;
    transform: translateY(-50%) rotate(180deg);
    font-size: 0.68rem;
    font-weight: 700;
    font-stretch: 120%;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: rgba(238, 236, 230, 0.75);
  }
}

@media (orientation: portrait) {
  .hero__media img {
    object-position: 50% 30%;
  }

  .hero__slash {
    right: 16%;
  }
}

@media (max-width: 560px) {
  .hero__title {
    font-size: 22.5vw;
  }

  .hero__kicker {
    line-height: 1.5;
    font-size: 0.64rem;
  }

  .hero__slash {
    bottom: auto;
    height: 58%;
    right: 12%;
  }

  .hero__actions .btn {
    flex: 1 1 100%;
  }

  .hero__inner {
    padding-top: calc(var(--header-h) + 40px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero__media img,
  .hero__title .line > span,
  .hero__slash,
  .js .hero__kicker,
  .js .hero__foot {
    animation: none;
    transform: none;
    opacity: 1;
    filter: grayscale(1) contrast(1.15) brightness(0.8);
  }

  .hero__slash {
    transform: skewX(-14deg);
  }
}

/* --------------------------------------------------------------------------
   Marquee
   -------------------------------------------------------------------------- */

.marquee {
  overflow: hidden;
  background: var(--volt);
  color: var(--black);
  border-block: 2px solid var(--black);
}

.marquee__track {
  display: flex;
  width: max-content;
  animation: marquee 32s linear infinite;
}

.marquee:hover .marquee__track {
  animation-play-state: paused;
}

.marquee__group {
  display: flex;
  flex: none;
}

.marquee__item {
  display: inline-flex;
  align-items: center;
  gap: clamp(20px, 3vw, 44px);
  padding: 0.28em clamp(20px, 3vw, 44px) 0.22em 0;
  font-weight: 900;
  font-stretch: 66%;
  font-size: clamp(2rem, 4.4vw, 4rem);
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}

.marquee__item::after {
  content: "";
  width: 0.34em;
  height: 0.34em;
  background: var(--black);
  transform: rotate(45deg);
}

@keyframes marquee {
  to {
    transform: translateX(-50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .marquee__track {
    animation: none;
  }
}

/* --------------------------------------------------------------------------
   Programs
   -------------------------------------------------------------------------- */

.programs {
  background: var(--black);
  color: var(--off);
  overflow: hidden;
}

.progs {
  display: flex;
  gap: 8px;
  margin-inline: calc(var(--gutter) * -1);
  padding-inline: var(--gutter);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gutter);
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.progs::-webkit-scrollbar {
  display: none;
}

.prog {
  position: relative;
  flex: 0 0 80%;
  aspect-ratio: 3 / 4.1;
  scroll-snap-align: start;
  overflow: hidden;
  background: var(--graphite);
  isolation: isolate;
}

.prog__img {
  position: absolute;
  inset: 0;
  z-index: -2;
}

.prog__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, 50% 50%);
  filter: grayscale(1) contrast(1.12) brightness(0.72);
  transition: transform 1.2s var(--ease), filter 0.6s var(--ease);
}

.prog::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to top, rgba(10, 10, 10, 0.95) 0%, rgba(10, 10, 10, 0.4) 46%, rgba(10, 10, 10, 0.05) 80%);
}

.prog::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 6px;
  background: var(--volt);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.6s var(--ease-snap);
}

.prog__num {
  position: absolute;
  top: 18px;
  left: 20px;
  font-size: 0.74rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.2em;
  color: var(--volt);
}

.prog__vname {
  display: none;
}

.prog__body {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 22px 20px 26px;
  display: grid;
  gap: 0.9rem;
}

.prog__name {
  font-size: clamp(3.2rem, 15vw, 4.8rem);
  font-weight: 900;
  font-stretch: 66%;
  line-height: 0.86;
  text-transform: uppercase;
}

.prog__desc {
  max-width: 26em;
  color: #cfcdc6;
  font-size: 0.98rem;
  line-height: 1.5;
}

.prog__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 1.2rem;
  font-size: 0.66rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--mute-d);
}

.prog__body .link-arrow {
  justify-self: start;
  margin-top: 0.3rem;
  color: var(--off);
}

.prog__body .link-arrow:hover,
.prog__body .link-arrow:focus-visible {
  color: var(--black);
}

.progs__hint {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-top: 18px;
  font-size: 0.68rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--mute-d);
}

.progs__hint::after {
  content: "";
  flex: 1;
  max-width: 90px;
  height: 3px;
  background: var(--volt);
}

@media (min-width: 1000px) {
  .progs {
    height: clamp(560px, 82vh, 800px);
    margin-inline: 0;
    padding-inline: 0;
    overflow: visible;
    scroll-snap-type: none;
    gap: 6px;
  }

  .prog {
    flex: 1 1 0;
    aspect-ratio: auto;
    min-width: 0;
    transition: flex-grow 0.75s var(--ease-snap);
    cursor: pointer;
  }

  .prog.is-active {
    flex-grow: 4.4;
  }

  .prog.is-active::after {
    transform: scaleX(1);
  }

  .prog.is-active .prog__img img {
    filter: grayscale(1) contrast(1.12) brightness(0.9);
    transform: scale(1.04);
  }

  .prog__num {
    top: 22px;
    left: 24px;
  }

  .prog__vname {
    display: block;
    position: absolute;
    left: 22px;
    bottom: 24px;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    font-size: clamp(2.8rem, 3.6vw, 3.8rem);
    font-weight: 900;
    font-stretch: 66%;
    line-height: 1;
    text-transform: uppercase;
    white-space: nowrap;
    opacity: 1;
    transition: opacity 0.3s var(--ease);
  }

  .prog.is-active .prog__vname {
    opacity: 0;
  }

  .prog__body {
    left: 0;
    right: auto;
    width: clamp(380px, 34vw, 560px);
    padding: 28px 28px 32px;
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 0.35s var(--ease), transform 0.35s var(--ease);
    pointer-events: none;
  }

  .prog.is-active .prog__body {
    opacity: 1;
    transform: none;
    transition-delay: 0.3s;
    pointer-events: auto;
  }

  .prog__name {
    font-size: clamp(4rem, 6.4vw, 6.8rem);
  }

  .progs__hint {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   Studio
   -------------------------------------------------------------------------- */

.facts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-bottom: clamp(40px, 5vw, 72px);
  border-top: 3px solid var(--black);
}

.fact {
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-end;
  padding: 1.2rem clamp(8px, 1.6vw, 24px) 0;
  border-left: 1px solid var(--line-l);
}

.fact:first-child {
  border-left: 0;
  padding-left: 0;
}

.fact dd {
  font-size: clamp(2.6rem, 6.4vw, 6rem);
  font-weight: 900;
  font-stretch: 66%;
  line-height: 0.9;
  font-variant-numeric: lining-nums;
}

.fact dd small {
  font-size: 0.42em;
  letter-spacing: 0.04em;
  margin-left: 0.15em;
}

.fact dt {
  margin-top: 0.7em;
  font-size: clamp(0.56rem, 1.5vw, 0.7rem);
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--mute-l);
  line-height: 1.4;
}

.studio__grid {
  display: grid;
  gap: 10px;
}

.st {
  position: relative;
  overflow: hidden;
  background: var(--graphite);
  aspect-ratio: var(--ar, 4 / 3);
}

.st img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, 50% 50%);
  filter: grayscale(1) contrast(1.12) brightness(0.86);
  transition: transform 1.4s var(--ease), filter 0.6s var(--ease);
}

.st:hover img {
  transform: scale(1.05);
  filter: grayscale(1) contrast(1.12) brightness(1);
}

.st::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10, 10, 10, 0.72), rgba(10, 10, 10, 0) 44%);
  pointer-events: none;
}

.st__cap {
  position: absolute;
  z-index: 2;
  left: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 0.9em 1.2em;
  background: var(--volt);
  color: var(--black);
  font-size: 0.68rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.st__cap b {
  font-weight: 800;
  opacity: 0.55;
}

.studio__note {
  display: grid;
  gap: 1.4rem;
  align-content: center;
  padding: clamp(24px, 3vw, 44px) 0;
}

.studio__note p:first-child {
  font-size: clamp(2.8rem, 6.2vw, 5.6rem);
  font-weight: 900;
  font-stretch: 66%;
  line-height: 0.88;
  text-transform: uppercase;
}

@media (min-width: 900px) {
  .studio__grid {
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: auto auto auto;
    gap: 12px;
  }

  .st--floor {
    grid-column: 1 / 9;
    grid-row: 1 / 3;
    aspect-ratio: auto;
    min-height: 100%;
  }

  .st--equip {
    grid-column: 9 / 13;
    grid-row: 1;
    --ar: 4 / 3;
  }

  .st--coach {
    grid-column: 9 / 13;
    grid-row: 2;
    --ar: 4 / 3;
  }

  .st--comm {
    grid-column: 1 / 7;
    grid-row: 3;
    --ar: 3 / 2;
  }

  .studio__note {
    grid-column: 7 / 13;
    grid-row: 3;
    padding-left: clamp(16px, 3vw, 48px);
  }
}

@media (max-width: 899px) {
  .st--floor {
    --ar: 4 / 3;
  }

  .st--equip,
  .st--coach {
    --ar: 4 / 3;
  }
}

/* --------------------------------------------------------------------------
   Coaches
   -------------------------------------------------------------------------- */

.coaches {
  background: var(--black);
  color: var(--off);
}

.coaches__grid {
  display: grid;
  gap: 56px;
}

.coach {
  display: grid;
  gap: 0;
  align-content: start;
}

.coach__photo {
  position: relative;
  overflow: hidden;
  background: var(--graphite);
  aspect-ratio: 4 / 4.6;
}

.coach__photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, 50% 20%);
  filter: grayscale(1) contrast(1.1) brightness(0.92);
  transition: transform 1.4s var(--ease);
}

.coach:hover .coach__photo img {
  transform: scale(1.04);
}

.coach__no {
  position: absolute;
  top: 0;
  left: 0;
  padding: 0.7em 1em;
  background: var(--volt);
  color: var(--black);
  font-size: 0.7rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.18em;
}

.coach__name {
  margin-top: 1.3rem;
  font-size: clamp(3rem, 6.4vw, 5.4rem);
  font-weight: 900;
  font-stretch: 66%;
  line-height: 0.86;
  text-transform: uppercase;
}

.coach__role {
  margin-top: 0.7rem;
  font-size: 0.72rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--volt);
}

.coach__bio {
  margin-top: 1rem;
  color: #c4c2bb;
  max-width: 30em;
  font-size: 1rem;
  line-height: 1.6;
}

.coach__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 1.2rem;
}

.coach__facts li {
  padding: 0.4em 0.9em;
  border: 1px solid var(--line-d-strong);
  font-size: 0.66rem;
  font-weight: 700;
  font-stretch: 118%;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--off);
}

@media (min-width: 600px) and (max-width: 899px) {
  .coach {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1fr);
    column-gap: clamp(24px, 4vw, 40px);
    align-content: center;
  }

  .coach__photo {
    grid-row: 1 / span 4;
    aspect-ratio: 4 / 5;
  }

  .coach__name {
    margin-top: 0;
    align-self: end;
  }

  .coach__facts {
    align-self: start;
  }
}

@media (min-width: 900px) {
  .coaches__grid {
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(24px, 3.4vw, 60px);
    align-items: start;
  }

  .coach:nth-child(2) {
    margin-top: clamp(56px, 8vw, 132px);
  }

  .coach:nth-child(3) {
    margin-top: clamp(24px, 4vw, 66px);
  }
}

/* --------------------------------------------------------------------------
   Membership
   -------------------------------------------------------------------------- */

.membership {
  background: var(--paper);
}

.plans {
  display: grid;
  gap: 0;
}

.plan {
  position: relative;
  display: grid;
  gap: 1.4rem;
  align-content: start;
  padding: clamp(28px, 3.2vw, 48px) clamp(20px, 2.6vw, 40px) clamp(32px, 3.4vw, 52px);
  border-top: 4px solid var(--black);
  background: transparent;
}

.plan + .plan {
  margin-top: 16px;
}

.plan__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.plan__name {
  font-size: 0.8rem;
  font-weight: 800;
  font-stretch: 122%;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.plan__flag {
  padding: 0.4em 0.8em;
  background: var(--volt);
  color: var(--black);
  font-size: 0.62rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.plan__price {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  line-height: 0.85;
}

.plan__price b {
  font-size: clamp(5rem, 9vw, 8.4rem);
  font-weight: 900;
  font-stretch: 66%;
  font-variant-numeric: lining-nums;
}

.plan__price b small {
  font-size: 0.42em;
  margin-right: 0.06em;
  vertical-align: 0.9em;
}

.plan__price span {
  font-size: 0.74rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  opacity: 0.6;
}

.plan__tag {
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1.45;
  max-width: 20em;
  opacity: 0.85;
}

.plan__list {
  display: grid;
  border-top: 1px solid var(--line-l-strong);
}

.plan__list li {
  display: grid;
  grid-template-columns: 1.6rem 1fr;
  padding-block: 0.8rem;
  border-bottom: 1px solid var(--line-l);
  font-size: 0.98rem;
  line-height: 1.45;
}

.plan__list li::before {
  content: "/";
  font-weight: 900;
  color: var(--black);
}

.plan .btn {
  justify-self: start;
  margin-top: 0.4rem;
}

/* the featured plan inverts */
.plan--feature {
  background: var(--black);
  color: var(--off);
  border-top-color: var(--volt);
}

.plan--feature .plan__list {
  border-top-color: var(--line-d-strong);
}

.plan--feature .plan__list li {
  border-bottom-color: var(--line-d);
}

.plan--feature .plan__list li::before {
  color: var(--volt);
}

.plans__note {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 2rem;
  margin-top: clamp(28px, 4vw, 48px);
  font-size: 0.7rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.plans__note span::before {
  content: "+";
  margin-right: 0.7em;
  padding: 0 0.3em;
  background: var(--volt);
}

@media (min-width: 900px) {
  .plans {
    grid-template-columns: repeat(3, 1fr);
    align-items: stretch;
    column-gap: 0;
  }

  .plan + .plan {
    margin-top: 0;
  }

  .plan--feature {
    margin-block: -28px;
    padding-block: clamp(48px, 5vw, 72px) clamp(56px, 6vw, 80px);
    z-index: 1;
  }
}

/* --------------------------------------------------------------------------
   Stories
   -------------------------------------------------------------------------- */

.stories {
  background: var(--black);
  color: var(--off);
}

.stories__lead {
  display: grid;
  gap: 40px;
}

.story__tag {
  display: inline-block;
  padding: 0.5em 0.9em;
  background: var(--volt);
  color: var(--black);
  font-size: 0.66rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.story--lead blockquote {
  margin-top: 1.6rem;
  font-size: clamp(2.2rem, 4.8vw, 4.4rem);
  font-weight: 800;
  font-stretch: 74%;
  line-height: 1;
  text-transform: uppercase;
  text-wrap: balance;
}

.story--lead blockquote em {
  font-style: normal;
  color: var(--volt);
}

.story__by {
  margin-top: 1.8rem;
  display: grid;
  gap: 0.3rem;
}

.story__by b {
  font-size: 0.8rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.story__by span {
  font-size: 0.9rem;
  color: var(--mute-d);
}

.streak {
  display: grid;
  gap: 0.7rem;
  margin-top: 1.8rem;
}

.streak__grid {
  display: grid;
  grid-template-columns: repeat(26, 1fr);
  gap: 3px;
  max-width: 460px;
}

.streak__grid i {
  aspect-ratio: 1;
  background: var(--steel);
}

.streak__grid i.on {
  background: var(--volt);
}

.js .streak__grid i.on {
  transform: scaleY(0.2);
  transform-origin: bottom;
  transition: transform 0.5s var(--ease);
  transition-delay: calc(var(--k, 0) * 22ms);
}

.streak.is-in .streak__grid i.on {
  transform: none;
}

.streak__label {
  font-size: 0.66rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--mute-d);
}

.stories__photo {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--graphite);
}

.stories__photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1) contrast(1.15) brightness(0.9);
}

.stories__more {
  display: grid;
  gap: 0;
  margin-top: clamp(48px, 6vw, 96px);
  border-top: 3px solid var(--off);
}

.story:not(.story--lead) {
  padding-block: clamp(28px, 3.6vw, 44px);
  border-bottom: 1px solid var(--line-d);
}

.story:not(.story--lead) blockquote {
  margin-top: 1.2rem;
  font-size: clamp(1.4rem, 2vw, 1.75rem);
  font-weight: 600;
  line-height: 1.32;
  max-width: 24em;
}

.story:not(.story--lead) .story__by {
  margin-top: 1.4rem;
}

@media (min-width: 900px) {
  .stories__lead {
    grid-template-columns: 1.5fr 0.8fr;
    gap: clamp(40px, 6vw, 110px);
    align-items: start;
  }

  .stories__photo {
    aspect-ratio: 4 / 5;
    margin-top: 2rem;
  }

  .stories__more {
    grid-template-columns: 1fr 1fr;
    column-gap: clamp(40px, 6vw, 110px);
  }

  .story:not(.story--lead) {
    border-bottom: 0;
  }

  .story:not(.story--lead) + .story {
    border-left: 1px solid var(--line-d);
    padding-left: clamp(24px, 3vw, 48px);
  }
}

/* --------------------------------------------------------------------------
   Schedule
   -------------------------------------------------------------------------- */

.schedule {
  background: var(--off);
}

.sched__bar {
  display: grid;
  gap: 18px;
  margin-bottom: 28px;
}

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

.filter {
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  min-height: 46px;
  padding: 0.5em 1.1em;
  border: 2px solid var(--black);
  font-size: 0.74rem;
  font-weight: 800;
  font-stretch: 118%;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease);
}

.filter small {
  font-size: 0.7rem;
  font-weight: 700;
  opacity: 0.55;
}

.filter:hover {
  background: var(--paper);
}

.filter[aria-pressed="true"] {
  background: var(--black);
  color: var(--off);
}

.filter[aria-pressed="true"] small {
  color: var(--volt);
  opacity: 1;
}

.legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1.4rem;
  font-size: 0.66rem;
  font-weight: 700;
  font-stretch: 120%;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--mute-l);
}

.legend span {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
}

.badge {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 2px solid var(--black);
  font-size: 0.6rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0;
  color: var(--black);
}

.badge--s {
  background: var(--black);
  color: var(--off);
}

.badge--c {
  background: transparent;
}

.badge--p {
  background: var(--volt);
}

/* mobile day tabs */
.daytabs {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin-bottom: 18px;
}

.daytab {
  display: grid;
  gap: 0.25rem;
  justify-items: center;
  padding: 0.7rem 0 0.6rem;
  border: 2px solid var(--line-l);
  font-size: 0.6rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: background-color 0.25s, border-color 0.25s, color 0.25s;
}

.daytab b {
  font-size: 1.7rem;
  font-weight: 900;
  font-stretch: 66%;
  line-height: 1;
  letter-spacing: 0;
}

.daytab[aria-selected="true"] {
  background: var(--black);
  border-color: var(--black);
  color: var(--off);
}

.daytab[aria-selected="true"] b {
  color: var(--volt);
}

.daytab.is-today:not([aria-selected="true"]) {
  border-color: var(--black);
}

.sched__cols {
  display: block;
  border-top: 4px solid var(--black);
}

.day {
  display: none;
}

.day.is-active {
  display: block;
}

.day__head {
  display: none;
}

.sess {
  display: grid;
  grid-template-columns: 4.6rem 1fr auto;
  align-items: center;
  gap: 0 1rem;
  width: 100%;
  padding: 1rem 0;
  border-bottom: 1px solid var(--line-l-strong);
  text-align: left;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease), padding 0.3s var(--ease);
}

.sess[hidden] {
  display: none;
}

.sess__time {
  font-size: 2rem;
  font-weight: 900;
  font-stretch: 66%;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.sess__main {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}

.sess__name {
  font-size: 0.98rem;
  font-weight: 800;
  font-stretch: 100%;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.15;
}

.sess__coach {
  font-size: 0.82rem;
  color: var(--mute-l);
}

.sess__side {
  display: grid;
  justify-items: end;
  gap: 0.4rem;
}

.sess__spots {
  font-size: 0.62rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
}

.sess__spots.low {
  color: #b23a1c;
}

.sess__spots.full {
  color: var(--mute-l);
}

.sess:hover,
.sess:focus-visible {
  background: var(--black);
  color: var(--off);
  padding-inline: 12px;
}

.sess:hover .sess__coach,
.sess:focus-visible .sess__coach {
  color: var(--mute-d);
}

.sess:hover .sess__time,
.sess:focus-visible .sess__time {
  color: var(--volt);
}

.sess:hover .badge,
.sess:focus-visible .badge {
  border-color: var(--off);
}

.sess:hover .badge--s,
.sess:focus-visible .badge--s {
  background: var(--off);
  color: var(--black);
}

.sess:hover .badge--c,
.sess:focus-visible .badge--c {
  color: var(--off);
}

.sess:hover .sess__spots.low,
.sess:focus-visible .sess__spots.low {
  color: #ff9a6b;
}

.sess.is-new {
  animation: sess-in 0.5s var(--ease) both;
  animation-delay: calc(var(--k, 0) * 35ms);
}

@keyframes sess-in {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
}

.day__empty {
  padding: 2rem 0;
  font-size: 0.95rem;
  color: var(--mute-l);
}

.sched__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 32px;
  margin-top: 28px;
  font-size: 0.86rem;
  color: var(--mute-l);
}

@media (min-width: 1100px) {
  .sched__bar {
    grid-template-columns: 1fr auto;
    align-items: center;
  }

  .daytabs {
    display: none;
  }

  .sched__cols {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    align-items: start;
  }

  .day,
  .day.is-active {
    display: block;
    padding-inline: 12px;
    border-left: 1px solid var(--line-l);
  }

  .day:first-child {
    border-left: 0;
    padding-left: 0;
  }

  .day:last-child {
    padding-right: 0;
  }

  .day__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 1rem 0 0.9rem;
    border-bottom: 1px solid var(--black);
    font-size: 0.68rem;
    font-weight: 800;
    font-stretch: 120%;
    letter-spacing: 0.16em;
    text-transform: uppercase;
  }

  .day__head b {
    font-size: 2rem;
    font-weight: 900;
    font-stretch: 66%;
    line-height: 1;
    letter-spacing: 0;
  }

  .day.is-today .day__head b {
    background: var(--volt);
    padding: 0.05em 0.25em;
    margin: -0.05em -0.25em;
  }

  .sess {
    grid-template-columns: 1fr;
    gap: 0.35rem;
    padding: 1rem 0;
    align-items: start;
  }

  .sess__time {
    font-size: 1.7rem;
  }

  .sess__name {
    font-size: 0.86rem;
  }

  .sess__side {
    grid-auto-flow: column;
    justify-content: space-between;
    justify-items: start;
    align-items: center;
    width: 100%;
    margin-top: 0.3rem;
  }

  .sess:hover,
  .sess:focus-visible {
    padding-inline: 10px;
    margin-inline: -10px;
    width: calc(100% + 20px);
  }
}

/* --------------------------------------------------------------------------
   Final CTA
   -------------------------------------------------------------------------- */

.cta {
  position: relative;
  overflow: hidden;
  background: var(--volt);
  color: var(--black);
  padding-block: clamp(72px, 11vw, 190px);
  isolation: isolate;
}

.cta::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: repeating-linear-gradient(-58deg, rgba(10, 10, 10, 0.07) 0 2px, transparent 2px 46px);
}

.cta__title {
  margin-top: 1.4rem;
  font-size: clamp(6rem, 20vw, 22rem);
  line-height: 0.78;
  margin-left: -0.03em;
}

.cta__row {
  display: grid;
  gap: 28px;
  margin-top: clamp(28px, 4vw, 56px);
  padding-top: clamp(20px, 2.6vw, 30px);
  border-top: 3px solid var(--black);
}

.cta__copy {
  font-size: clamp(1.15rem, 1.8vw, 1.5rem);
  font-weight: 600;
  line-height: 1.4;
  max-width: 24em;
}

.cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.cta .tag i {
  background: var(--black);
  box-shadow: none;
}

@media (min-width: 900px) {
  .cta__row {
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 64px;
  }
}

@media (max-width: 560px) {
  .cta__title {
    font-size: 31vw;
  }

  .cta__actions .btn {
    flex: 1 1 100%;
  }
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.footer {
  background: var(--black);
  color: var(--off);
  padding-top: clamp(64px, 8vw, 112px);
}

.footer__grid {
  display: grid;
  gap: 48px 32px;
  grid-template-columns: 1fr 1fr;
}

.footer__brand {
  grid-column: 1 / -1;
  max-width: 26em;
}

.footer__brand p {
  margin-top: 1.5rem;
  color: var(--mute-d);
}

.footer .logo__form {
  font-size: 2.2rem;
}

.footer__title {
  margin-bottom: 1.2rem;
  font-size: 0.68rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--volt);
}

.footer__list {
  display: grid;
  gap: 0.65rem;
  font-size: 1rem;
  color: #d4d2cb;
}

.footer__list a {
  transition: color 0.25s;
}

.footer__list a:hover,
.footer__list a:focus-visible {
  color: var(--volt);
}

.footer__hours div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
}

.footer__hours dt {
  color: var(--mute-d);
}

.footer__hours dd {
  font-variant-numeric: tabular-nums;
}

.footer__bar {
  margin-top: clamp(56px, 7vw, 96px);
  padding-block: 28px;
  border-top: 1px solid var(--line-d);
  display: grid;
  gap: 14px;
  font-size: 0.84rem;
  color: var(--mute-d);
}

.footer__demo {
  font-size: 0.66rem;
  font-weight: 800;
  font-stretch: 120%;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--volt);
}

.footer__credit a {
  border-bottom: 1px solid var(--line-d-strong);
}

.footer__credit a:hover {
  color: var(--off);
}

@media (min-width: 900px) {
  .footer__grid {
    grid-template-columns: 1.6fr 1fr 1fr 1.2fr;
    gap: 48px;
  }

  .footer__brand {
    grid-column: auto;
  }

  .footer__bar {
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
  }

  .footer__demo {
    text-align: center;
  }

  .footer__credit {
    text-align: right;
  }
}

@media (max-width: 1019px) {
  .footer {
    padding-bottom: 76px;
  }
}

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