/* ByMany landing page — styles
   Tokens lifted from bymany.com.au theme.css so future ports stay compatible. */

@font-face { font-family: 'Frasa';      src: url('assets/fonts/Frasa-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Frasa';      src: url('assets/fonts/Frasa-Medium.woff2')  format('woff2'); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'SuisseIntl'; src: url('assets/fonts/SuisseIntl-Regular.woff2')   format('woff2'); font-weight: 400; font-style: normal;  font-display: swap; }
@font-face { font-family: 'SuisseIntl'; src: url('assets/fonts/SuisseIntl-Medium.woff2')    format('woff2'); font-weight: 500; font-style: normal;  font-display: swap; }
@font-face { font-family: 'SuisseIntl'; src: url('assets/fonts/SuisseIntl-RegularIt.woff2') format('woff2'); font-weight: 400; font-style: italic;  font-display: swap; }

:root {
  --c-white:       #FFFFFF;
  --c-black:       #000000;
  --c-soft-white:  #F6F3EE;
  --c-soft-black:  #101010;
  --c-soft-beige:  #E6D6CB;
  --c-charcoal:    #746D69;
  --c-sand:        #D5BF83;
  --c-green:       #808765;
  --c-rust:        #CD7058;
  --c-blush:       #C6A292;
  --c-blue:        #8CA7D6;     /* live-site blue */
  --c-blue-deep:   #7696CE;     /* docx-comment blue (membership) */

  --fz-base: 2rem;
  --lh-base: 1.5;
  --t-duration: 0.3s;
  --shell-max-width: 184rem;
  --shell-gutter: 4rem;

  --section-pad-y: clamp(4rem, 6vw, 8rem);
}
@media (max-width: 1513px) { :root { --fz-base: 1.6rem; } }
@media (max-width: 1023px) { :root { --fz-base: 1.4rem; --section-pad-y: 5rem; } }
@media (max-width: 599px)  { :root { --shell-gutter: 2rem; --section-pad-y: 9.5rem; } }

*,*::before,*::after { box-sizing: border-box; }
html { font-size: 62.5%; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  min-width: 320px;
  background: var(--c-soft-white);
  color: var(--c-soft-black);
  font: 400 var(--fz-base)/var(--lh-base) 'SuisseIntl', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: left;
  overflow-x: hidden;
}
img, svg, picture { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-color: rgba(0,0,0,.25); text-underline-offset: .2em; transition: color var(--t-duration), text-decoration-color var(--t-duration); }
a:hover { text-decoration-color: currentColor; }

p { margin: 0 0 3rem; }
@media (max-width: 767px) { p { margin-bottom: 1.8rem; } }
p:last-child { margin-bottom: 0; }
em { font-style: italic; }
strong { font-weight: 500; }
ul { padding: 0; margin: 0; list-style: none; }

/* Skip link */
.skip-link {
  position: absolute; left: -9999px; top: auto;
  background: var(--c-soft-black); color: var(--c-soft-white);
  padding: 1rem 1.6rem; z-index: 100; border-radius: 4px;
}
.skip-link:focus { left: 1rem; top: 1rem; }

/* Layout shells */
.shell {
  width: 100%;
  max-width: calc(var(--shell-max-width) + var(--shell-gutter) * 2);
  padding-inline: var(--shell-gutter);
  margin-inline: auto;
}
.shell--prose { max-width: calc(78rem + var(--shell-gutter) * 2); }

/* Type scale — mirrors bymany.com.au theme exactly */
.h1 {
  margin: 0;
  font: 400 clamp(4.8rem, 4.6875vw, 9rem)/1 'Frasa', SFMono-Regular, Menlo, monospace;
  letter-spacing: -.02em;
}
@media (max-width: 767px) { .h1 { font-size: 4.2rem; } }
.h2 { margin: 0; font: 400 2rem/1.3 'SuisseIntl'; letter-spacing: .04em; }
@media (max-width: 767px) { .h2 { font-size: 1.2rem; } }
.h3 {
  margin: 0 0 2.6rem;
  font: 400 clamp(3.4rem, 3.333vw, 6.4rem)/1 'Frasa', SFMono-Regular, Menlo, monospace;
  letter-spacing: -.02em;
}
@media (max-width: 767px) { .h3 { font-size: 4.2rem; margin-bottom: 1.3rem; } }
@media (max-width: 374px) { .h3 { font-size: 2.8rem; } }

/* Eyebrow with hand-drawn underline */
.eyebrow {
  display: inline-block;
  margin: 0 0 4rem;
  font: 400 1.4rem/1.5 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
}
.eyebrow > span { display: inline-block; padding-right: .2em; }

.eyebrow::after,
.incl-label::after {
  content: "";
  display: block;
  width: 24rem;
  height: 1.4rem;
  margin-top: .6rem;
  background-color: currentColor;
  -webkit-mask: url("assets/icons/handline.png") no-repeat left center / contain;
          mask: url("assets/icons/handline.png") no-repeat left center / contain;
  opacity: .9;
}

/* Buttons — mirror bymany.com.au theme: pill, sentence-case, 1.8rem desktop. */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .8rem;
  padding: 1rem 2.2rem;
  font: 400 1.8rem/1.334 'SuisseIntl';
  letter-spacing: 0;
  text-decoration: none;
  background: var(--button-bg); color: var(--button-fg);
  border: 1px solid var(--button-border, var(--button-bg));
  border-radius: 2.95rem;
  cursor: pointer;
  transition: opacity var(--t-duration), transform var(--t-duration), background-color var(--t-duration), color var(--t-duration), border-color var(--t-duration);
  white-space: nowrap;
}
@media (max-width: 1513px) {
  .btn { font-size: 1.4rem; line-height: 1.143; padding: .8rem 1.8rem; }
}
.btn:hover { opacity: .85; }
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.btn--white       { --button-bg: var(--c-soft-white); --button-fg: var(--c-soft-black); --button-border: var(--c-soft-white); }
.btn--blue        { --button-bg: var(--c-blue-deep);  --button-fg: var(--c-soft-white); --button-border: var(--c-blue-deep); }
.btn--rust        { --button-bg: var(--c-rust);       --button-fg: var(--c-soft-white); --button-border: var(--c-rust); }
.btn--black       { --button-bg: var(--c-soft-black); --button-fg: var(--c-soft-white); --button-border: var(--c-soft-black); }
.btn--ghost       { --button-bg: transparent;         --button-fg: var(--c-soft-black); --button-border: var(--c-soft-black); }
.btn--ghost-light { --button-bg: transparent;         --button-fg: var(--c-soft-white); --button-border: var(--c-soft-white); }
.btn--lg {
  padding: 1.4rem 3rem;
  font-size: 2rem;
}
@media (max-width: 1513px) {
  .btn--lg { padding: 1.2rem 2.4rem; font-size: 1.6rem; }
}
.btn--lg:hover { transform: translateY(-2px); opacity: 1; }

/* Arrow CTA pattern — uses the live site's hand-drawn ico-arrow-right.svg as a mask
   so it inherits each button's text color via currentColor. */
.btn--arrow { gap: 1.2rem; }
.btn--arrow::after {
  content: "";
  display: inline-block;
  width: 3rem; height: 1.2rem;
  background-color: currentColor;
  -webkit-mask: url("assets/icons/arrow-right.svg") no-repeat center / contain;
          mask: url("assets/icons/arrow-right.svg") no-repeat center / contain;
  flex-shrink: 0;
  transition: transform var(--t-duration);
}
.btn--arrow:hover::after { transform: translateX(.4rem); }
.btn--lg.btn--arrow::after { width: 3.6rem; height: 1.4rem; }

/* ====== Sticky header (revealed once hero scrolls past) ====== */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  background: rgba(246, 243, 238, .94);
  backdrop-filter: saturate(140%) blur(8px);
  -webkit-backdrop-filter: saturate(140%) blur(8px);
  border-bottom: 1px solid rgba(16,16,16,.08);
  transform: translateY(-100%);
  transition: transform .35s cubic-bezier(.22,.8,.3,1);
}
.is-scrolled .site-header { transform: translateY(0); }
.site-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1.6rem;
  padding-block: 1.2rem;
}
.site-header__brand {
  display: inline-flex; align-items: center;
  text-decoration: none; color: var(--c-soft-black);
}
.site-header__wordmark {
  width: auto; height: 3.2rem; display: block;
}
.site-header__nav { display: flex; gap: 3.2rem; }
.site-header__nav a {
  font: 400 1.4rem/1 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--c-soft-black);
  opacity: .85;
}
.site-header__nav a:hover { opacity: 1; }
.site-header__cta { padding: 1rem 1.8rem; font-size: 1.3rem; }
@media (max-width: 599px) {
  .site-header__nav { display: none; }
  .site-header__wordmark { height: 2.4rem; }
}
.header-sentinel { width: 1px; height: 1px; }

/* ====== Hero ====== */
.hero {
  position: relative;
  isolation: isolate;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: center;
  text-align: center;
  color: var(--c-soft-white);
  padding: clamp(10rem, 14vw, 18rem) 0 clamp(6rem, 10vw, 12rem);
}
.hero__media {
  position: absolute; inset: 0; z-index: -1; overflow: hidden;
}
.hero__media img {
  width: 100%; height: 100%; object-fit: cover; object-position: 68% 30%;
}
.hero__veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(16,16,16,.30) 0%, rgba(16,16,16,.40) 45%, rgba(16,16,16,.65) 100%),
    linear-gradient(180deg, rgba(16,16,16,.20) 0%, rgba(16,16,16,.20) 100%);
}
.hero__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

/* Wordmark cycle — staged so we can clip + perspective the swap.
   Logo size matches bymany.com.au exactly (15.2rem desktop / 10.9rem mobile). */
.wordmark-cycle {
  position: relative;
  display: block;
  width: 15.2rem;
  height: 4rem;
  text-decoration: none;
  perspective: 90rem;
}
@media (max-width: 767px) {
  .wordmark-cycle { width: 10.9rem; height: 2.9rem; }
}
.hero__wordmark.wordmark-cycle {
  position: absolute;
  top: clamp(2rem, 3.6vw, 4rem);
  left: var(--shell-gutter);
  z-index: 2;
}
.wordmark-cycle__stage {
  position: absolute; inset: 0;
  display: block;
  transform-style: preserve-3d;
  animation: wordmark-drift 14s ease-in-out infinite;
}
.wordmark-cycle img {
  position: absolute;
  left: 0; bottom: 0;
  height: 100%; width: auto;
  max-width: none;
  opacity: 0;
  /* The source SVGs are black; the hero is dark. Invert + boost to soft-white. */
  filter: brightness(0) invert(1) blur(.6rem);
  pointer-events: none;
  transform-origin: 0 100%;
  will-change: opacity, transform, filter, clip-path;
  transition:
    opacity .55s ease,
    transform 1.1s cubic-bezier(.2,.8,.2,1),
    filter .9s ease,
    clip-path .9s cubic-bezier(.2,.8,.2,1);
}

/* Per-frame entrance flavours — kept subtle so wordmarks stay perceptually
   the same size at rest. Scale variance held to ±5%. */
.wordmark-cycle img[data-i="0"] { transform: translate3d(0, 18%, 0); clip-path: inset(100% 0 0 0); }
.wordmark-cycle img[data-i="1"] { transform: translate3d(-12%, 0, 0) skewX(6deg); clip-path: inset(0 100% 0 0); }
.wordmark-cycle img[data-i="2"] { transform: translate3d(12%, 0, 0) skewX(-6deg); clip-path: inset(0 0 0 100%); }
.wordmark-cycle img[data-i="3"] { transform: scale(1.04) rotate(2deg); clip-path: inset(0 0 0 0); }
.wordmark-cycle img[data-i="4"] { transform: scale(.96) rotate(-1.5deg) translateY(-6%); clip-path: inset(0 0 100% 0); }
.wordmark-cycle img[data-i="5"] { transform: translate3d(0, 0, -2rem) rotateY(28deg); clip-path: inset(0 0 0 0); }

/* v6's "Many" has an extra-long y-descender intrinsic to the lettering. Its
   viewBox stays at full height so the swoop renders intact; we scale it up here
   so the cap matches the other variants and let the descender hang below the
   wordmark band. */
.wordmark-cycle img[data-i="5"] {
  height: 187%;
  bottom: -78%;
  transform-origin: 0 56%;
}

.wordmark-cycle img.is-active {
  opacity: 1;
  transform: translate3d(0, 0, 0) rotate(0) scale(1) skewX(0);
  filter: brightness(0) invert(1) blur(0);
  clip-path: inset(0 0 0 0);
}

/* Outgoing frames exit with the inverse direction so the swap feels intentional. */
.wordmark-cycle img.is-leaving[data-i="0"] { transform: translate3d(0, -14%, 0); }
.wordmark-cycle img.is-leaving[data-i="1"] { transform: translate3d(14%, 0, 0) skewX(-6deg); clip-path: inset(0 0 0 100%); }
.wordmark-cycle img.is-leaving[data-i="2"] { transform: translate3d(-14%, 0, 0) skewX(6deg); clip-path: inset(0 100% 0 0); }
.wordmark-cycle img.is-leaving[data-i="3"] { transform: scale(.97) rotate(-1.5deg); }
.wordmark-cycle img.is-leaving[data-i="4"] { transform: scale(1.03) rotate(1deg) translateY(4%); }
.wordmark-cycle img.is-leaving[data-i="5"] { transform: translate3d(0, 0, -2rem) rotateY(-28deg); }

@keyframes wordmark-drift {
  0%, 100% { transform: translate3d(0, 0, 0) rotateX(0); }
  50%      { transform: translate3d(.4rem, -.4rem, 0) rotateX(2deg); }
}

.hero__title {
  margin: 0 0 clamp(2.4rem, 3.6vw, 4.4rem);
  color: var(--c-soft-white);
  text-transform: uppercase;
  letter-spacing: -.005em;
  max-width: 16ch;
}
.hero__sub {
  max-width: 60rem;
  margin: 0 0 clamp(2rem, 3vw, 3.2rem);
  font: 400 clamp(2.2rem, 2.6vw, 3.2rem)/1.15 'Frasa', SFMono-Regular, Menlo, monospace;
  letter-spacing: -.005em;
  color: var(--c-soft-white);
}
.hero__lede {
  max-width: 56rem;
  margin: clamp(2.4rem, 3vw, 3.6rem) 0 0;
  font-size: clamp(1.8rem, 1.8vw, 2.4rem);
  line-height: 1.45;
  color: var(--c-soft-white);
  opacity: .9;
}
.hero__cta { display: flex; flex-wrap: wrap; gap: 1.2rem; align-items: center; justify-content: center; }
.hero__proof {
  margin: 2.4rem 0 0;
  font: 500 1.4rem/1.4 'SuisseIntl';
  letter-spacing: .06em;
  color: var(--c-soft-white);
  opacity: .85;
}
.hero__proof span { color: var(--c-rust); margin-right: .4rem; }

/* ====== Sections ====== */
.section { padding: var(--section-pad-y) 0; }
.section__title { max-width: 22ch; }

.section--intro {
  background: var(--c-soft-beige);
  color: var(--c-soft-black);
  text-align: center;
  position: relative;
}
.intro__inner { display: flex; flex-direction: column; align-items: center; }
.intro__inner .eyebrow { margin-bottom: 3.2rem; }
.intro__inner .section__title { max-width: 28ch; margin-inline: auto; }
.intro__inner p { max-width: 64ch; }
.intro__inner p + p { margin-top: 1.6rem; }

/* Credentialing + stats sit on a blue panel below the beige manifesto */
.section--credit {
  background: var(--c-blue);
  color: var(--c-soft-black);
  text-align: center;
}

.intro__credit {
  text-align: center;
}
.intro__credit p {
  margin: 0 auto;
  max-width: 60ch;
  font: 400 clamp(2rem, 2.2vw, 2.8rem)/1.35 'Frasa', serif;
  letter-spacing: -.005em;
  color: var(--c-soft-black);
}

/* Credentialing stats stacked under the manifesto on the same blue panel */
.intro__stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(2.4rem, 4vw, 4rem);
  align-items: start;
  text-align: center;
  margin: clamp(4rem, 6vw, 6.4rem) auto 0;
  max-width: 120rem;
}
@media (max-width: 599px) {
  .intro__stats { grid-template-columns: 1fr; gap: 3.2rem; }
}
.ornament {
  display: inline-flex; gap: 1rem;
  margin-top: 4rem;
}
.ornament i {
  width: .7rem; height: .7rem;
  border-radius: 50%;
  background: var(--c-rust);
  display: block;
  opacity: .8;
}
.ornament i:nth-child(2) { background: var(--c-soft-black); opacity: .55; }
.ornament i:nth-child(3) { background: var(--c-blue-deep); opacity: .8; }

/* Section 2 — magazine spread: warm cream wash, eyebrow tag, slight depth */
.section--free {
  background: linear-gradient(180deg, #EFE5D7 0%, #ECE0CF 100%);
  color: var(--c-soft-black);
  position: relative;
}
.section--free::before,
.section--free::after {
  content: "";
  position: absolute; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(16,16,16,.12) 18%, rgba(16,16,16,.12) 82%, transparent);
}
.section--free::before { top: 0; }
.section--free::after  { bottom: 0; }
.section--free .eyebrow { margin-bottom: 3.2rem; }
.section--free .section__title { max-width: 26ch; }
.section--free .tile__art {
  background: var(--c-soft-white);
}

.section--membership {
  background: var(--c-soft-beige);
  color: var(--c-soft-black);
  text-align: center;
}
.section--membership .shell--prose { text-align: center; }
.section--membership .section__title { margin-inline: auto; max-width: 28ch; }
.section--membership a:not(.btn) { color: inherit; }

/* ====== Free section collage (3 tiles) ====== */
.incl-label {
  margin-top: 4rem;
  font: 500 1.4rem/1.4 'SuisseIntl';
  letter-spacing: .14em;
  text-transform: uppercase;
}

.collage {
  display: grid;
  gap: clamp(2.4rem, 4vw, 4.8rem);
  margin: 4rem 0 6rem;
}
.collage--free {
  grid-template-columns: repeat(3, 1fr);
  align-items: end;
  max-width: 110rem;
  margin-inline: auto;
}
@media (max-width: 899px) {
  .collage--free { grid-template-columns: 1fr; max-width: 48rem; }
}

.tile {
  margin: 0;
  display: flex; flex-direction: column;
  transform: rotate(var(--rot, 0deg));
  transition: transform var(--t-duration);
}
.tile:hover { transform: rotate(0); }

.tile__art {
  position: relative;
  aspect-ratio: 3/4;
  background: var(--c-soft-beige);
  overflow: hidden;
  border-radius: 4px;
}
.tile__art--photo img {
  width: 100%; height: 100%; object-fit: cover; object-position: center;
}
.tile figcaption {
  margin-top: 1.6rem;
  font-size: 1.5rem;
  line-height: 1.45;
  color: var(--c-soft-black);
}
.check {
  display: inline-block;
  margin-right: .4em;
  color: var(--c-rust);
  font-weight: 500;
}

/* "Newsletter" tile — built in CSS to evoke a stack of paper */
.tile__art--paper {
  background: linear-gradient(155deg, var(--c-soft-beige) 0%, var(--c-blush) 100%);
  display: grid; place-items: center; padding: 2.4rem;
}
.paper { position: absolute; inset: auto; background: var(--c-soft-white); border-radius: 2px; }
.paper--back  { width: 70%; height: 88%; transform: rotate(-6deg); top: 6%;  left: 8%;  opacity: .65; }
.paper--mid   { width: 75%; height: 92%; transform: rotate(3deg);  top: 4%;  left: 16%; opacity: .85; }
.paper--front {
  position: relative;
  width: 78%; height: 90%;
  transform: rotate(-1.5deg);
  padding: 2rem 1.8rem;
  display: flex; flex-direction: column; gap: 1rem;
}
.paper__brand { font: 400 1.6rem/1 'Frasa'; letter-spacing: -.01em; color: var(--c-soft-black); }
.paper__rule { display: block; height: 1px; background: var(--c-soft-black); opacity: .25; }
.paper__h { font: 400 2rem/1.15 'Frasa'; color: var(--c-soft-black); }
.paper__lines { display: flex; flex-direction: column; gap: .5rem; margin-top: auto; }
.paper__lines span { display: block; height: 4px; background: var(--c-soft-black); opacity: .14; border-radius: 2px; }
.paper__lines span:nth-child(2) { width: 92%; }
.paper__lines span:nth-child(3) { width: 76%; }
.paper__lines span:nth-child(4) { width: 88%; }
.paper__lines span:nth-child(5) { width: 50%; }

.podcast-badge,
.musings-badge {
  position: absolute;
  bottom: 1.6rem; left: 1.6rem;
  display: inline-flex; align-items: center; gap: .6rem;
  padding: .8rem 1.2rem;
  background: var(--c-soft-white);
  color: var(--c-soft-black);
  font: 500 1.3rem/1 'SuisseIntl';
  letter-spacing: .08em; text-transform: uppercase;
  border-radius: 999px;
}
.musings-badge { background: var(--c-rust); color: var(--c-soft-white); font-family: 'Frasa', serif; text-transform: none; letter-spacing: -.005em; font-size: 1.5rem; padding: .8rem 1.4rem; }

/* ====== Membership collage ====== */
.collage--membership {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: auto;
  gap: clamp(1.6rem, 2.4vw, 3.2rem);
  margin: 5rem 0 7rem;
  align-items: stretch;
}
@media (max-width: 899px) {
  .collage--membership { grid-template-columns: repeat(6, 1fr); }
}

.m-card {
  position: relative;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: clamp(2rem, 2.4vw, 3.2rem);
  min-height: 22rem;
  background: var(--c-soft-white);
  color: var(--c-soft-black);
  border-radius: 6px;
  transform: rotate(var(--rot, 0deg));
  transition: transform var(--t-duration);
}
.m-card:hover { transform: rotate(0) translateY(-4px); }

.m-card__eyebrow { font: 500 1.2rem/1 'SuisseIntl'; letter-spacing: .14em; text-transform: uppercase; opacity: .65; }
.m-card__big     { font: 400 clamp(2.6rem, 3vw, 3.6rem)/1.05 'Frasa'; letter-spacing: -.01em; margin-top: 1.6rem; }
.m-card__foot    { font: 400 1.4rem/1.4 'SuisseIntl'; opacity: .8; margin-top: auto; padding-top: 2rem; }

.m-card--journal  { grid-column: 1 / 5;  grid-row: 1; background: var(--c-soft-beige); }
.m-card--book     { grid-column: 9 / 13; grid-row: 1; background: var(--c-rust); color: var(--c-soft-white); }
.m-card--app      { grid-column: 5 / 9;  grid-row: 1 / 3; background: var(--c-soft-white); padding: 0; overflow: hidden; align-items: center; justify-content: center; }
.m-card--exchange { grid-column: 1 / 6;  grid-row: 2; background: var(--c-sand); }
.m-card--carnival { grid-column: 9 / 13; grid-row: 2; background: var(--c-blush); color: var(--c-soft-white); }

@media (max-width: 899px) {
  .collage--membership .m-card { grid-column: 1 / -1; grid-row: auto; }
  .m-card--app { min-height: 36rem; }
}

/* Phone mock inside .m-card--app */
.phone {
  position: relative;
  width: clamp(16rem, 60%, 22rem);
  aspect-ratio: 9/19;
  margin: 3rem 0;
  background: var(--c-soft-black);
  border-radius: 2.4rem;
  padding: .6rem;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06);
}
.phone__notch {
  position: absolute; top: 1rem; left: 50%; transform: translateX(-50%);
  width: 6rem; height: 1.4rem; border-radius: 999px; background: var(--c-soft-black);
  z-index: 2;
}
.phone__screen {
  position: relative;
  width: 100%; height: 100%;
  background: var(--c-soft-white);
  border-radius: 2rem;
  padding: 3rem 1.6rem 1.6rem;
  display: flex; flex-direction: column; gap: 1rem;
}
.phone__label { font: 400 1.2rem/1 'Frasa'; color: var(--c-rust); }
.phone__h     { font: 400 1.4rem/1.15 'Frasa'; color: var(--c-soft-black); margin-top: .4rem; }
.phone__body  { font: 400 1.1rem/1.4 'SuisseIntl'; color: var(--c-soft-black); }
.phone__bar   { display: block; height: 4px; border-radius: 2px; background: var(--c-soft-beige); margin-top: auto; }
.phone__bar--short { width: 60%; margin-top: .6rem; }

/* Comparison table — Free vs ByAll */
.compare {
  width: 100%;
  max-width: 110rem;
  margin: 2rem auto 5rem;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 1.5rem;
  line-height: 1.4;
  color: var(--c-soft-white);
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  overflow: hidden;
}
.compare th, .compare td {
  text-align: left;
  padding: 1.8rem 2rem;
  vertical-align: middle;
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.compare tbody tr:last-child th,
.compare tbody tr:last-child td { border-bottom: 0; }

.compare thead th {
  font: 500 1.2rem/1.2 'SuisseIntl';
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--c-soft-white);
  opacity: .85;
  vertical-align: bottom;
  padding-top: 2.2rem;
  padding-bottom: 1.6rem;
  background: rgba(255,255,255,.06);
  border-bottom: 1px solid rgba(255,255,255,.22);
}
.compare__feat { width: 44%; }
.compare__col  { width: 28%; }
.compare__col--ba {
  background: var(--c-rust);
  color: var(--c-soft-white);
}
.compare__plan {
  display: block;
  font: 400 2rem/1.1 'Frasa', serif;
  letter-spacing: -.01em;
  text-transform: none;
}
.compare__sub {
  display: block;
  font-size: 1.1rem;
  letter-spacing: .14em;
  opacity: .8;
  margin-top: .4rem;
}

.compare tbody th {
  font-weight: 400;
  color: var(--c-soft-white);
}
.compare tbody td {
  font-size: 1.4rem;
  color: rgba(255,255,255,.9);
}
.compare tbody td:last-child {
  background: rgba(205, 112, 88, .14);
  color: var(--c-soft-white);
}

.compare__yes {
  display: inline-flex; align-items: center; gap: .6rem;
}
.compare__yes::before {
  content: "✓";
  font-weight: 500;
  color: #FFD7C5;
}
.compare__yes--plus::before { content: "✦"; }
.compare__no { opacity: .45; }

/* Hero rows — physical goods get a tinted band + tag */
.compare__hero-row > th { padding-top: 2rem; padding-bottom: 2rem; }
.compare__hero-row > th,
.compare__hero-row > td:first-of-type { background: rgba(213, 191, 131, .12); }
.compare__hero-row > td:last-child   { background: rgba(205, 112, 88, .26); }
.compare__feat-name {
  display: block;
  font: 400 1.7rem/1.2 'Frasa', serif;
  letter-spacing: -.01em;
  margin-top: .4rem;
}
.compare__feat-name em { font-style: italic; }
.compare__feat-sub {
  display: block;
  font-size: 1.3rem;
  opacity: .75;
  margin-top: .4rem;
}
.hero-tag {
  display: inline-block;
  padding: .3rem .8rem;
  font: 500 1rem/1 'SuisseIntl';
  letter-spacing: .14em;
  text-transform: uppercase;
  background: var(--c-sand);
  color: var(--c-soft-black);
  border-radius: 999px;
}

/* Mobile reframe — desktop table is replaced by two grouped lists */
.compare-mobile { display: none; }

@media (max-width: 720px) {
  .compare { display: none; }

  .compare-mobile {
    display: block;
    max-width: 110rem;
    margin: 2rem auto 5rem;
    color: var(--c-soft-white);
  }
  .compare-mobile__group { margin-bottom: 2.4rem; }
  .compare-mobile__group:last-child { margin-bottom: 0; }
  .compare-mobile__group--ba {
    background: rgba(205, 112, 88, .14);
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 8px;
    padding: 2.2rem 1.8rem;
  }
  .compare-mobile__head {
    font: 500 1.15rem/1.2 'SuisseIntl';
    letter-spacing: .16em;
    text-transform: uppercase;
    opacity: .75;
    margin: 0 0 1.4rem;
  }
  .compare-mobile__price { opacity: .7; }
  .compare-mobile__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
  }
  .compare-mobile__list > li {
    display: flex;
    gap: .8rem;
    align-items: baseline;
    font-size: 1.5rem;
    line-height: 1.45;
  }
  .compare-mobile__list > li::before {
    content: "✓";
    color: #FFD7C5;
    font-weight: 500;
    flex: 0 0 auto;
  }
  .compare-mobile__group--ba .compare-mobile__list > li::before { content: "✦"; }
  .compare-mobile__qual { opacity: .7; }
  .compare-mobile__hero {
    flex-direction: column;
    align-items: flex-start;
    gap: .5rem;
    padding: 1.4rem 1.4rem 1.2rem;
    background: rgba(213, 191, 131, .14);
    border-radius: 6px;
  }
  .compare-mobile__hero::before { display: none; }
  .compare-mobile__name {
    font: 400 1.7rem/1.2 'Frasa', serif;
    letter-spacing: -.01em;
  }
  .compare-mobile__name em { font-style: italic; }
  .compare-mobile__sub {
    font-size: 1.3rem;
    opacity: .75;
  }
}

.ways { font-size: 1.7rem; opacity: .9; margin-bottom: 2.4rem; }
.cta-row { display: flex; flex-wrap: wrap; gap: 1.2rem; margin-top: 1.2rem; }

.cta-secondary {
  margin: 1.8rem 0 0;
  font-size: 1.4rem;
  color: inherit;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
  gap: .9rem;
}
.cta-secondary a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: .35em;
  text-decoration-thickness: 1px;
  text-decoration-color: currentColor;
  transition: opacity var(--t-duration);
}
.cta-secondary a:hover {
  opacity: .7;
}
.cta-secondary > [aria-hidden] { opacity: .55; }

/* Centered CTA block (used by free-section subscribe) */
.cta-center {
  display: flex;
  justify-content: center;
  margin-top: 2.4rem;
}

/* ====== Free signup form — underline-input style on sand bg ====== */
.subscribe {
  margin: clamp(2rem, 3vw, 4rem) auto 0;
  max-width: 60rem;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  text-align: center;
}
.subscribe__title {
  margin: 0 0 1rem;
  font: 400 clamp(2.4rem, 2.8vw, 3.2rem)/1.1 'Frasa', serif;
  letter-spacing: -.01em;
}
.subscribe__sub {
  margin: 0 0 2.8rem;
  font-size: 1.6rem;
  line-height: 1.5;
  color: var(--c-charcoal);
}
.subscribe__form {
  display: flex;
  flex-direction: column;
  gap: 0;
  align-items: stretch;
  text-align: left;
}
.subscribe__field {
  position: relative;
  display: block;
  border-bottom: 1px solid rgba(16,16,16,.7);
}
.subscribe__field + .subscribe__field { margin-top: 1.6rem; }

/* Visually hidden labels (kept for screen readers) */
.subscribe__label {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

.subscribe__field input {
  width: 100%;
  padding: 1.6rem 0;
  font: 400 1.8rem/1.4 'SuisseIntl';
  color: var(--c-soft-black);
  background: transparent;
  border: 0;
  border-radius: 0;
  transition: border-color var(--t-duration);
}
.subscribe__field input:focus {
  outline: none;
}
.subscribe__field:focus-within {
  border-bottom-color: var(--c-soft-black);
}
.subscribe__field input::placeholder {
  color: var(--c-soft-black);
  opacity: .92;
}

/* Required-indicator dot in the upper-right of the name field
   (purely decorative — input has its own required attribute). */
.subscribe__dot {
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  width: 1.2rem; height: 1.2rem;
  border-radius: 50%;
  background: var(--c-rust);
  pointer-events: none;
}

.subscribe__submit {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  margin: clamp(3.2rem, 4vw, 4.8rem) auto 0;
  padding: 1rem 2.2rem;
  font: 400 1.8rem/1.334 'SuisseIntl';
  letter-spacing: 0;
  color: var(--c-soft-black);
  background: var(--c-soft-white);
  border: 1px solid var(--c-soft-white);
  border-radius: 2.95rem;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t-duration), color var(--t-duration);
}
.subscribe__submit:hover {
  background: var(--c-soft-black);
  color: var(--c-soft-white);
}
.subscribe__submit:focus-visible {
  outline: 2px solid var(--c-soft-black);
  outline-offset: 3px;
}
@media (max-width: 1513px) {
  .subscribe__submit { font-size: 1.4rem; line-height: 1.143; padding: .8rem 1.8rem; }
}
@media (max-width: 599px) {
  .subscribe__submit { width: 100%; }
}
.subscribe__hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  overflow: hidden;
}
.subscribe__alert {
  margin: 1.6rem 0 0;
  padding: 1rem 1.4rem;
  background: rgba(205, 112, 88, .12);
  border-radius: 8px;
  color: var(--c-rust);
  font-size: 1.4rem;
  text-align: center;
}
.subscribe__alert[hidden] { display: none; }
.subscribe__submit-label, .subscribe__spinner {
  display: inline-block;
}
.subscribe__spinner {
  width: 1.6rem; height: 1.6rem;
  margin-left: .8rem;
  border: 2px solid rgba(255,255,255,.35);
  border-top-color: var(--c-soft-white);
  border-radius: 50%;
  animation: subscribe-spin .8s linear infinite;
  display: none;
}
.subscribe.is-submitting .subscribe__submit { pointer-events: none; opacity: .85; }
.subscribe.is-submitting .subscribe__spinner { display: inline-block; }
.subscribe.is-submitting .subscribe__submit::after { display: none; }
.subscribe.is-success .subscribe__title,
.subscribe.is-success .subscribe__sub:not(.subscribe__success-msg),
.subscribe.is-success .subscribe__form,
.subscribe.is-success .subscribe__alert,
.subscribe.is-success .subscribe__fineprint { display: none; }
.subscribe.is-success .subscribe__success { display: block; }
@keyframes subscribe-spin { to { transform: rotate(360deg); } }

/* ====== Deck-of-cards reveal for membership collage ====== */
.deck-reveal .m-card { opacity: 0; }
.deck-reveal.is-revealed .m-card {
  opacity: 1;
  animation: deck-deal 1.1s cubic-bezier(.18, .85, .25, 1.05) var(--reveal-delay, 0s) backwards;
}
@keyframes deck-deal {
  from {
    opacity: 0;
    transform:
      translate(var(--stack-x, 0), var(--stack-y, 0))
      rotate(var(--stack-rot, 0deg))
      scale(var(--stack-s, .9));
  }
  to {
    opacity: 1;
    transform: translate(0, 0) rotate(var(--rot, 0deg)) scale(1);
  }
}

/* Stack origins — cards converge toward the centred phone, then fan out. */
.deck-reveal .m-card--app      { --stack-x: 0;     --stack-y: 4rem;  --stack-rot: 0deg;   --stack-s: .94; --reveal-delay: 0s; }
.deck-reveal .m-card--journal  { --stack-x: 70%;   --stack-y: 25%;   --stack-rot: 1.5deg; --stack-s: .9;  --reveal-delay: .12s; }
.deck-reveal .m-card--book     { --stack-x: -70%;  --stack-y: 25%;   --stack-rot: -1.5deg;--stack-s: .9;  --reveal-delay: .18s; }
.deck-reveal .m-card--exchange { --stack-x: 70%;   --stack-y: -25%;  --stack-rot: -2deg;  --stack-s: .9;  --reveal-delay: .28s; }
.deck-reveal .m-card--carnival { --stack-x: -70%;  --stack-y: -25%;  --stack-rot: 2.5deg; --stack-s: .9;  --reveal-delay: .34s; }

/* ====== Testimonial — editorial centered (PDF p6) ====== */
.section--testimonial {
  background: var(--c-soft-white);
  color: var(--c-soft-black);
  position: relative;
  overflow: hidden;
}
.testimonial__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(4rem, 6vw, 7rem);
  max-width: 110rem;
  margin-inline: auto;
}
.testimonial__head {
  text-align: center;
  display: flex; flex-direction: column; align-items: center;
}
.testimonial__head .section__title { max-width: 24ch; margin-inline: auto; }
.section--testimonial .eyebrow {
  font: 500 clamp(1.3rem, 1.4vw, 1.6rem)/1.5 'SuisseIntl';
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: .85;
  max-width: 60rem;
  margin-bottom: clamp(4rem, 6vw, 7.2rem);
}
.section--testimonial .eyebrow::after { display: none; }

.quote-card {
  position: relative;
  margin: 0 auto;
  max-width: 92rem;
  padding: 0 clamp(2rem, 4vw, 4rem);
  background: transparent;
  text-align: center;
  border-radius: 0;
  transform: none;
  box-shadow: none;
}
.quote-card::after { content: none; }
.quote-card:hover { transform: none; }

.quote-card__mark { display: none; }

.quote-card blockquote {
  position: relative;
  margin: 0 0 2.8rem;
  font: 400 clamp(2.4rem, 3vw, 4rem)/1.3 'Frasa', serif;
  font-style: italic;
  letter-spacing: -.01em;
  color: var(--c-soft-black);
}
.quote-card blockquote p { margin: 0; }
.quote-card blockquote p::before { content: "\2018"; }
.quote-card blockquote p::after  { content: "\2019"; }

.quote-card figcaption {
  display: inline-flex; align-items: center; justify-content: center; gap: 1rem;
  font: 400 1.4rem/1.4 'SuisseIntl';
  letter-spacing: .04em;
  color: var(--c-soft-black);
}
.quote-card__rule {
  display: inline-block;
  width: 3.2rem; height: 1px;
  background: var(--c-charcoal);
  opacity: .6;
}

@media (prefers-reduced-motion: reduce) {
  .quote-card { transform: none !important; }
}

/* Slider container — stacks slides in the same grid cell so the wrapper sizes to the tallest. */
.quote-slider {
  position: relative;
  max-width: 86rem;
  margin: 0 auto;
  padding-inline: clamp(0rem, 7vw, 7rem);
}
.quote-slider__track {
  display: grid;
  grid-template-areas: "stack";
}
.quote-slider__track > .quote-card {
  grid-area: stack;
  margin: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity .5s ease;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.quote-slider__track > .quote-card blockquote { margin-bottom: 2rem; }
.quote-slider__track > .quote-card.is-active {
  opacity: 1;
  pointer-events: auto;
}

.quote-slider__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 4.8rem; height: 4.8rem;
  border-radius: 50%;
  border: 1px solid var(--c-soft-black);
  background: transparent;
  color: var(--c-soft-black);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0;
  transition: background var(--t-duration), color var(--t-duration), border-color var(--t-duration);
  z-index: 2;
}
.quote-slider__arrow:hover,
.quote-slider__arrow:focus-visible {
  background: var(--c-soft-black);
  color: var(--c-soft-white);
}
.quote-slider__arrow:focus-visible {
  outline: 2px solid var(--c-soft-black);
  outline-offset: 4px;
}
.quote-slider__arrow--prev { left: 0; }
.quote-slider__arrow--next { right: 0; }

.quote-slider__arrow-icon {
  width: 2rem; height: 1.4rem;
  background-color: currentColor;
  -webkit-mask: url("/assets/icons/arrow-right.svg") center/contain no-repeat;
          mask: url("/assets/icons/arrow-right.svg") center/contain no-repeat;
}
.quote-slider__arrow--prev .quote-slider__arrow-icon { transform: scaleX(-1); }

@media (max-width: 720px) {
  .quote-slider {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 1.6rem;
    row-gap: 2.4rem;
    padding-inline: 0;
  }
  .quote-slider__track { grid-column: 1 / -1; }
  .quote-slider__arrow {
    position: static;
    transform: none;
  }
  .quote-slider__arrow--prev { grid-column: 1; justify-self: end; }
  .quote-slider__arrow--next { grid-column: 2; justify-self: start; }
}

@media (prefers-reduced-motion: reduce) {
  .quote-slider__track > .quote-card { transition: none; }
}

/* ====== Footer ====== */
.footer {
  background: var(--c-soft-black);
  color: var(--c-soft-white);
  padding: 8rem 0 4rem;
  font-size: 1.6rem;
}
.footer a { color: inherit; text-decoration-color: rgba(246, 243, 238, .35); }
.footer a:hover { text-decoration-color: currentColor; }

.footer__wrapper { display: flex; flex-direction: column; gap: 6rem; }

.footer__main .footer__inner,
.footer__outro .footer__inner {
  display: grid;
  grid-template-columns: minmax(20rem, 1fr) 3fr;
  gap: 4rem 6rem;
  align-items: start;
}

.footer__logo {
  display: block;
  width: 100%;
  max-width: 26.6rem;
  aspect-ratio: 266 / 133;
  background-color: var(--c-soft-white);
  -webkit-mask: url("assets/wordmarks/bymany-1.svg") no-repeat left center / contain;
          mask: url("assets/wordmarks/bymany-1.svg") no-repeat left center / contain;
}

.footer__nav {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4rem 3rem;
}

.footer__head {
  margin: 0 0 1.6rem;
  font: 400 1.4rem/1.5 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
  color: rgba(246, 243, 238, .6);
}

.footer__list { display: flex; flex-direction: column; gap: 1rem; }
.footer__list a { text-decoration: none; }
.footer__list a:hover { text-decoration: underline; text-underline-offset: .25em; }

.footer__outro {
  padding-top: 4rem;
  border-top: 1px solid rgba(246, 243, 238, .15);
}

.footer__legal {
  margin: 0;
  font-size: 1.4rem;
  line-height: 1.6;
  color: rgba(246, 243, 238, .7);
}

.footer__entry {
  margin: 0;
  font-size: 1.4rem;
  line-height: 1.6;
  color: rgba(246, 243, 238, .7);
  max-width: 78rem;
}

@media (max-width: 1023px) {
  .footer { padding: 6rem 0 3.2rem; }
  .footer__main .footer__inner,
  .footer__outro .footer__inner {
    grid-template-columns: 1fr;
    gap: 3.2rem;
  }
  .footer__wrapper { gap: 4.8rem; }
}

@media (max-width: 767px) {
  .footer__nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 3.2rem 2rem;
  }
}

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

/* ====== Stripe Embedded Checkout modal ====== */
html.is-modal-open, html.is-modal-open body { overflow: hidden; }

.checkout-modal {
  position: fixed; inset: 0; z-index: 200;
  display: flex; align-items: center; justify-content: center;
  padding: 4rem 2rem;
}
.checkout-modal[hidden] { display: none; }

.checkout-modal__veil {
  position: absolute; inset: 0;
  background: rgba(16, 16, 16, .72);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.checkout-modal__panel {
  position: relative; z-index: 1;
  width: 100%; max-width: 56rem;
  max-height: calc(100vh - 8rem);
  display: flex; flex-direction: column;
  background: var(--c-soft-white);
  border-radius: 1.2rem;
  overflow: hidden;
  animation: checkout-rise .32s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes checkout-rise {
  from { opacity: 0; transform: translateY(2rem) scale(.98); }
  to   { opacity: 1; transform: none; }
}

.checkout-modal__head {
  position: relative;
  padding: 3.2rem 5.6rem 2rem 3.2rem;
  border-bottom: 1px solid rgba(16,16,16,.08);
}
.checkout-modal__head .eyebrow { margin: 0 0 1.6rem; }
.checkout-modal__title { margin: 0; font-size: clamp(2.8rem, 4vw, 3.6rem); }

.checkout-modal__close {
  position: absolute; top: 1.6rem; right: 1.6rem;
  width: 4rem; height: 4rem;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 0; cursor: pointer;
  color: var(--c-soft-black);
  border-radius: 50%;
  transition: background var(--t-duration);
}
.checkout-modal__close:hover { background: rgba(16,16,16,.06); }
.checkout-modal__close:focus-visible { outline: 2px solid var(--c-blue-deep); outline-offset: 2px; }

.checkout-modal__body {
  padding: 2rem 3.2rem 3.2rem;
  overflow-y: auto;
  flex: 1;
}
#checkout-mount { min-height: 32rem; }

.checkout-modal__error {
  margin: 1.6rem 0 0;
  padding: 1.2rem 1.6rem;
  background: rgba(205, 112, 88, .12);
  color: var(--c-rust);
  border-radius: .8rem;
  font-size: 1.4rem;
}

.checkout-modal__success {
  padding: 4rem 3.2rem 4.8rem;
  text-align: center;
}
.checkout-modal__success-title {
  margin: 0 0 1.2rem;
  font: 400 clamp(2.8rem, 4vw, 3.6rem)/1.1 'Frasa', SFMono-Regular, Menlo, monospace;
  letter-spacing: -.02em;
}

@media (max-width: 599px) {
  .checkout-modal { padding: 0; align-items: stretch; }
  .checkout-modal__panel {
    max-height: 100vh; height: 100vh; border-radius: 0;
  }
  .checkout-modal__head { padding: 2.4rem 5.6rem 1.6rem 2rem; }
  .checkout-modal__body { padding: 1.6rem 2rem 2.4rem; }
  .checkout-modal__success { padding: 3.2rem 2rem; }
}

/* ====== Reduced motion ====== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
  .tile, .m-card { transform: none !important; }
  .deck-reveal .m-card { opacity: 1 !important; transform: rotate(var(--rot, 0deg)) !important; }
}
/* ----------------------------------------------------------
   Collage / hero treatments (Kristina design direction).
   These rules override or extend the base styles above.
   ---------------------------------------------------------- */

/* --- Hero: full-bleed Kristina image. The image is already
       painterly/veiled in palette, so we only add a soft
       bottom-weighted gradient to anchor the CTAs without
       flattening the artwork. */

:root {
  --c-green-deep: #0c2d05;     /* Kristina's specified brand green */
}

.hero--v2 .hero__media img {
  object-position: center center;
}

/* Neutral dark gradient — no green tint. Preserves the photo's
   mid-tones up top and darkens behind the headline + CTAs. */
.hero--v2 .hero__veil {
  background:
    linear-gradient(180deg,
      rgba(0, 0, 0, .12) 0%,
      rgba(0, 0, 0, .28) 45%,
      rgba(0, 0, 0, .55) 100%);
}

.collage-v2 {
  margin: 0 auto;
  display: block;
  max-width: 88rem;
  padding: 1.6rem 2rem 0;
}

.collage-v2__art {
  display: block;
  width: 100%;
  height: auto;
}

/* --- Free section: blue subscription collage on cream BG ---- */

.collage-v2--free {
  max-width: 78rem;
}

/* The benefit list that replaces the three figcaptions.
   On desktop, three columns; on narrow screens, stack. */
.incl-list {
  list-style: none;
  margin: 3.2rem auto 0;
  padding: 0 2rem;
  max-width: 110rem;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3rem 4rem;
  text-align: left;
}

.incl-list li {
  font: 400 1.6rem/1.55 'SuisseIntl', system-ui, sans-serif;
  color: var(--c-soft-black);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.2rem;
  align-items: start;
}

.incl-list .check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.4rem; height: 2.4rem;
  border-radius: 50%;
  background: var(--c-rust);
  color: var(--c-soft-white);
  font-size: 1.3rem; line-height: 1;
  margin-top: .2rem;
  flex: 0 0 auto;
}

@media (max-width: 760px) {
  .incl-list { grid-template-columns: 1fr; gap: 2rem; max-width: 48rem; }
}

/* --- Membership section: green collage on deep blue ---------
   The PNG has white papers + green palm-leaf brushwork on a
   transparent background. On the existing --c-blue-deep section
   the whites pop and the greens read as accent — Kristina's
   intent for the page. */

.collage-v2--membership {
  max-width: 92rem;
  padding-top: 0;
}

/* --- Reveal-on-scroll. Triggered by /reveal.js once the
   figure enters the viewport. */

.reveal-on-view {
  opacity: 0;
  transform: translateY(2.4rem) scale(.985);
  transition:
    opacity .9s cubic-bezier(.2, .7, .2, 1),
    transform 1.1s cubic-bezier(.2, .7, .2, 1);
  will-change: opacity, transform;
}

.reveal-on-view.is-revealed {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-on-view {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* Tighten section rhythm where the collage graphics are big
   and need a bit more space to breathe. */
.section--free .collage-v2 + .shell { margin-top: 1.2rem; }
.section--membership .collage-v2 { margin-bottom: 2.4rem; }

/* ====== Manifesto extras (uppercase headline + sub) ====== */
.section__title--upper {
  text-transform: uppercase;
  letter-spacing: -.005em;
  margin-block: 0 1.6rem;
}
/* Line breaks come from `<br>` in markup; let the box size to its widest line. */
.intro__inner .section__title--upper { max-width: none; }
.intro__lede {
  font: 400 clamp(1.7rem, 1.8vw, 2.1rem)/1.5 'SuisseIntl';
  color: var(--c-soft-black);
  max-width: 64ch;
}
.intro__lede + .intro__lede { margin-top: 1.2rem; }
.intro__sub {
  font: 400 clamp(2rem, 2.2vw, 2.8rem)/1.3 'Frasa', serif;
  letter-spacing: -.005em;
  margin: 0 0 clamp(3.2rem, 5vw, 5.6rem);
}

/* ====== Stats banner (full-bleed band below manifesto) ====== */
.stat { display: flex; flex-direction: column; align-items: center; gap: 1.2rem; }
.stat__num {
  margin: 0;
  font: 400 clamp(4rem, 5.6vw, 7.2rem)/1 'Frasa', serif;
  letter-spacing: -.02em;
  color: var(--c-soft-black);
}
.stat__label {
  margin: 0;
  font: 400 1.4rem/1.5 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--c-soft-black);
  max-width: 22ch;
}

/* ====== Featured podcast section ====== */
.section--podcast {
  background: var(--c-blue);
  color: var(--c-soft-black);
}

.podcast__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(3.2rem, 5vw, 6.4rem);
  align-items: stretch;
  max-width: 100%;
  margin-inline: auto;
}
.podcast__copy {
  display: flex;
  flex-direction: column;
}
.podcast__title + p { margin-top: auto; }
@media (max-width: 899px) {
  .podcast__layout { grid-template-columns: 1fr; }
}

.podcast__media {
  margin: 0;
  overflow: hidden;
  background: var(--c-soft-black);
}
.podcast__video {
  position: relative;
  aspect-ratio: 1 / 1;
  background: #000;
}
.podcast__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* Poster facade — shown until the user clicks play, then JS swaps in
   the YouTube iframe. Subtle outlined controls match the live BM site. */
.podcast__poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: #000;
  cursor: pointer;
  overflow: hidden;
  color: var(--c-soft-white);
  transition: filter var(--t-duration);
}
.podcast__poster:hover { filter: brightness(1.04); }
.podcast__poster:focus-visible { outline: 2px solid var(--c-soft-white); outline-offset: -4px; }

.podcast__poster-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.podcast__poster::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(16, 16, 16, .38);
  pointer-events: none;
  z-index: 1;
}
.podcast__controls,
.podcast__fullscreen { z-index: 2; }

.podcast__controls {
  position: absolute;
  bottom: clamp(1.4rem, 2vw, 2rem);
  left: clamp(1.4rem, 2vw, 2rem);
  display: inline-flex;
  gap: .8rem;
}
.podcast__ctl,
.podcast__fullscreen {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.8rem;
  height: 2.8rem;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.85);
  color: var(--c-soft-white);
  background: transparent;
}
.podcast__fullscreen {
  position: absolute;
  bottom: clamp(1.4rem, 2vw, 2rem);
  right: clamp(1.4rem, 2vw, 2rem);
  border: 0;
}
.podcast__ctl svg,
.podcast__fullscreen svg { display: block; }
.podcast__ctl--play svg { transform: translateX(.1rem); }

.podcast__eyebrow {
  margin: 0 0 clamp(2.4rem, 4vw, 4.8rem);
  font: 400 1.4rem/1.5 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--c-soft-black);
  opacity: .8;
}
.podcast__title {
  margin: 0 0 clamp(2rem, 2.4vw, 3.2rem);
  font: 400 clamp(2.8rem, 3.6vw, 5.2rem)/1.05 'Frasa', serif;
  letter-spacing: -.02em;
  text-transform: uppercase;
  text-align: center;
}
.podcast__copy p { max-width: 56ch; }
.podcast__credit {
  font-size: 1.3rem;
  color: var(--c-charcoal);
  margin-top: 2.4rem;
}
.podcast__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem;
  margin-top: 2.4rem;
}

/* GOOD WORK ribbon — full-width black bar at bottom of podcast section */
.podcast__bar {
  display: block;
  margin-top: clamp(6rem, 8vw, 10rem);
  padding: clamp(1.6rem, 2vw, 2.4rem) 0;
  background: var(--c-soft-black);
  color: var(--c-soft-white);
  text-decoration: none;
  transition: background var(--t-duration);
}
.podcast__bar:hover { background: #000; }
.podcast__bar p {
  margin: 0;
  text-align: center;
  font: 400 clamp(1.3rem, 1.4vw, 1.6rem)/1.5 'Frasa', serif;
  letter-spacing: .04em;
}

/* ====== Subscribe section — 2-card preview (PDF p3) ====== */
.section--free {
  background: linear-gradient(180deg, #DCC79A 0%, #D5BF83 100%);
  text-align: center;
}
.section--free .shell--prose { text-align: center; }
.section--free .eyebrow {
  letter-spacing: 0;
  font: 400 1.4rem/1.5 'SuisseIntl';
  text-transform: uppercase;
  margin-bottom: 2rem;
}
.section--free .section__title {
  margin-inline: auto;
  max-width: 38ch;
}

.sub-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 clamp(2.4rem, 4vw, 4.8rem);
  max-width: 72rem;
  margin: clamp(4rem, 6vw, 6.4rem) auto clamp(4rem, 6vw, 6.4rem);
  padding: 0;
  list-style: none;
}
@media (max-width: 699px) {
  .sub-cards { grid-template-columns: 1fr; max-width: 44rem; row-gap: 4rem; }
}
.sub-card {
  display: flex;
  flex-direction: column;
  text-align: center;
}
.sub-card__art {
  margin: 0 0 2rem;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--c-soft-white);
  border-radius: 0;
  box-shadow: none;
}
.sub-card__art img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.sub-card__title {
  margin: 0 0 1rem;
  font: 400 clamp(2rem, 2.4vw, 2.8rem)/1.15 'Frasa', serif;
  letter-spacing: -.01em;
}
.sub-card__body p {
  max-width: 36ch;
  margin: 0 auto;
  font-size: 1.5rem;
  line-height: 1.5;
}

/* ====== Membership cards ======
   Flat 7-card grid on beige. */
.pillars {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  column-gap: clamp(1.6rem, 2vw, 2.4rem);
  row-gap: clamp(3.2rem, 4vw, 4.8rem);
  margin: clamp(3.2rem, 5vw, 5.6rem) auto clamp(3rem, 4vw, 4.8rem);
  max-width: 138rem;
  padding: 0;
  list-style: none;
}
.pillars__group-label {
  margin: clamp(2.4rem, 3vw, 3.6rem) 0 0;
  font: 400 1.4rem/1.5 'SuisseIntl';
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--c-soft-black);
  text-align: center;
  text-decoration: underline;
  text-underline-offset: .4em;
}

.pillar {
  display: flex;
  flex-direction: column;
  color: var(--c-soft-black);
  text-align: center;
}
.pillar__art {
  margin: 0 0 1.6rem;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: rgba(16, 16, 16, .04);
  border-radius: 4px;
}
.pillar__art img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.pillar__art--right img { object-position: 78% center; }
.pillar__body { padding: 0 .4rem; }
.pillar__title {
  margin: 0 0 1.2rem;
  font: 400 1.9rem/1.2 'Frasa', serif;
  letter-spacing: -.005em;
  color: var(--c-soft-black);
}
.pillar__body p {
  margin: 0;
  font-size: 1.4rem;
  line-height: 1.5;
  color: var(--c-soft-black);
  opacity: .82;
}

@media (max-width: 1199px) {
  .pillars { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .pillars { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 419px) {
  .pillars { grid-template-columns: 1fr; max-width: 32rem; }
}

.pillars__cta {
  display: flex;
  justify-content: center;
  margin: clamp(3.2rem, 5vw, 5.6rem) 0 clamp(2.4rem, 3vw, 4rem);
}

/* Subhead under the section heading */
.membership__lede {
  margin: 1.6rem auto 0;
  font: 400 clamp(1.7rem, 1.8vw, 2.1rem)/1.5 'SuisseIntl';
  color: var(--c-soft-black);
  max-width: 64ch;
  text-align: center;
}

/* Comparison-table heading (Slide 5) */
.compare__heading {
  text-align: center;
  margin: clamp(4rem, 6vw, 7rem) auto clamp(2rem, 3vw, 3.2rem);
  max-width: 32ch;
}
