:root{
  --bg: #0b0b0c;
  --bg-elevated: #141416;
  --bg-card: #1a1a1d;
  --ink: #f4f1ea;
  --ink-muted: #b9b6ae;
  --gold: #FFC939;
  --gold-deep: #d9a520;
  --line: #2a2a2d;
  --radius: 4px;
  --container: 1600px;
  --font-display: "Bebas Neue", Impact, "Arial Narrow", sans-serif;
  --font-body: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
}

*, *::before, *::after{ box-sizing: border-box; }
html{
  scroll-behavior: smooth;
  width:100%;
  max-width:100%;
  overflow-x:hidden;
  overflow-x:clip;
}
body{
  margin:0;
  width:100%;
  max-width:100%;
  overflow-x:hidden;
  overflow-x:clip;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration:none; }
.container{ max-width: var(--container); margin: 0 auto; padding: 0 clamp(24px, 4vw, 64px); }
main{ width:100%; max-width:100%; overflow-x:hidden; overflow-x:clip; }

.eyebrow{
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: .78rem;
  font-weight: 600;
  color: var(--gold);
  margin: 0 0 .6rem;
}
.eyebrow.center, .section-title.center, .section-lead.center{ text-align:center; }

.section-title{
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 3.2vw, 2.6rem);
  letter-spacing: .01em;
  font-weight: 400;
  margin: 0 0 1rem;
  line-height: 1.15;
}
.section-lead{
  color: var(--ink-muted);
  max-width: 62ch;
  margin: 0 auto 3rem;
}

/* Buttons */
.btn{
  display:inline-block;
  padding: .9rem 1.8rem;
  border-radius: var(--radius);
  font-weight: 600;
  font-size: .95rem;
  letter-spacing:.02em;
  transition: transform .15s ease, background .2s ease, color .2s ease, border-color .2s ease;
  border: 1px solid transparent;
}
.btn-primary{ background: var(--gold); color: #17130a; }
.btn-primary:hover{ background: var(--gold-deep); transform: translateY(-1px); }
.btn-outline{ border-color: var(--gold); color: var(--gold); }
.btn-outline:hover{ background: rgba(255,201,57,.1); }
.btn-ghost{ border: 1px solid var(--line); color: var(--ink); padding:.6rem 1.2rem; }
.btn-ghost:hover{ border-color: var(--gold); color: var(--gold); }
.btn-block{ width:100%; text-align:center; border:none; cursor:pointer; }

/* Header */
.site-header{
  position: sticky; top:0; z-index:50;
  background: rgba(11,11,12,.85);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  height: 76px;
}
.brand{ display:flex; align-items:center; gap:.85rem; }
.brand-mark{ height: 34px; width:auto; }
.brand-logo{ height: 40px; width:auto; }
.main-nav{ display:flex; align-items:center; gap: 2rem; }
.main-nav a{ font-size:.92rem; font-weight:500; color: var(--ink-muted); transition: color .2s; }
.main-nav a:hover{ color: var(--gold); }
.main-nav a.btn{ color: inherit; }

.nav-toggle{
  display:none; flex-direction:column; gap:5px;
  background:none; border:none; cursor:pointer; padding:8px;
}
.nav-toggle span{ width:24px; height:2px; background: var(--ink); display:block; }

/* Hero */
.hero{ position:relative; min-height: 100vh; overflow:hidden; }

.hero-bg-carousel{ position:absolute; inset:0; }
.hero-bg-slide{
  position:absolute; inset:0;
  background-size: cover; background-position: center 30%;
  filter: grayscale(.15) brightness(.5);
  opacity: 0;
  transition: opacity 2s ease;
}
.hero-bg-slide.active{ opacity: 1; }

.hero-overlay{
  position:absolute; inset:0;
  background:
    radial-gradient(60% 60% at 20% 40%, rgba(11,11,12,.25) 0%, rgba(11,11,12,.7) 70%),
    linear-gradient(180deg, rgba(11,11,12,.35) 0%, rgba(11,11,12,.55) 55%, var(--bg) 100%);
}

.hero-grid{
  position:relative;
  min-height: calc(100vh - 76px);
  display:grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "copy video";
  align-items:center;
  column-gap: clamp(2.5rem, 6vw, 6rem);
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.hero-copy{
  grid-area: copy;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap: 1.4rem;
  min-width:0;
}
.hero-headline{ grid-area: headline; }
.hero-headline h1{
  font-family: var(--font-display);
  font-weight:400;
  font-size: clamp(2.6rem, 4.4vw, 3.9rem);
  line-height:1.05;
  max-width: 19ch;
  margin: 1rem 0 0;
}
.hero-headline h1 .accent{ color: var(--gold); }
.hero-lead{
  max-width: 52ch;
  margin: 1.25rem 0 0;
  color: var(--ink);
  font-size: clamp(1rem, 1.25vw, 1.15rem);
  line-height:1.6;
}
.hero-lead strong{ color: var(--gold); font-weight:600; }

.hero-points{
  grid-area: points;
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:.7rem;
  max-width: 52ch;
}
.hero-points li{
  position:relative;
  padding-left:1.6rem;
  color: var(--ink-muted);
  font-size:.95rem;
  line-height:1.5;
}
.hero-points li::before{
  content:"";
  position:absolute; left:0; top:.5em;
  width:8px; height:8px; border-radius:50%;
  background: var(--gold);
}
.hero-points strong{ color: var(--ink); font-weight:600; }

.hero-badge{
  grid-area: badge;
  display:flex;
  flex-direction:row;
  align-items:center;
  gap: 1.1rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255,255,255,.12);
  line-height:1;
}
.hero-badge-text{
  display:flex;
  align-items:baseline;
  gap:.6rem;
}
.hero-logo{
  flex-shrink:0;
  width: 54px;
  height: 64px;
  -webkit-mask-image: url('../img/alliance-emblem-stacked.svg');
  mask-image: url('../img/alliance-emblem-stacked.svg');
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  background: linear-gradient(120deg, var(--gold-deep), var(--gold), #fff6d8, var(--gold), var(--gold-deep));
  background-size: 300% 300%;
  animation: footerLogoGradient 8s ease-in-out infinite;
}
.hero-badge-number{
  display:block;
  font-family: var(--font-display);
  font-size: 3.2rem;
  color: var(--gold);
  text-shadow: 0 0 40px rgba(255,201,57,.25);
}
.hero-badge-label{
  display:block;
  font-size: .9rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.06em;
}

.hero-cta-zone{
  grid-area: cta;
  display:flex;
  flex-direction:row;
  flex-wrap:wrap;
  align-items:center;
  gap: 1.25rem 1.75rem;
}
.btn-hero{
  display:flex; flex-direction:column; align-items:flex-start; gap:.2rem;
  padding: 1.1rem 2.2rem;
  box-shadow: 0 12px 30px rgba(255,201,57,.25);
}

/* Vídeo de apresentação (vertical 9:16) */
.hero-video{
  grid-area: video;
  margin:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1rem;
}
.hero-video-frame{
  position:relative;
  height: min(72vh, 700px);
  aspect-ratio: 9 / 16;
  background:#000;
  border:1px solid rgba(255,201,57,.35);
  border-radius:20px;
  overflow:hidden;
  box-shadow: 0 30px 80px rgba(0,0,0,.6), 0 0 0 8px rgba(255,201,57,.06), 0 0 60px rgba(255,201,57,.12);
}
.hero-video-frame video{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  background:#000;
}
.hero-video-sound{
  position:absolute;
  top:14px;
  right:14px;
  z-index:2;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.55rem .95rem;
  border:1px solid rgba(255,201,57,.55);
  border-radius:999px;
  background:rgba(11,11,12,.72);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  color: var(--gold);
  font-family:inherit;
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.02em;
  cursor:pointer;
  transition: background .2s ease, color .2s ease, transform .15s ease;
}
.hero-video-sound[hidden]{ display:none; }
.hero-video-sound:hover{ background: var(--gold); color:#17130a; }
.hero-video-sound:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }
.hero-video-sound .icon-sound-on{ display:none; }
.hero-video-sound[aria-pressed="true"] .icon-sound-off{ display:none; }
.hero-video-sound[aria-pressed="true"] .icon-sound-on{ display:block; }
.hero-video-sound[aria-pressed="false"]{ animation: soundPulse 2.6s ease-in-out infinite; }
@keyframes soundPulse{
  0%, 100%{ box-shadow: 0 0 0 0 rgba(255,201,57,.45); }
  60%{ box-shadow: 0 0 0 10px rgba(255,201,57,0); }
}
.hero-video figcaption{
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  line-height:1.3;
}
.hero-video figcaption strong{ font-family: var(--font-display); font-weight:400; font-size:1.35rem; letter-spacing:.02em; }
.hero-video figcaption span{ color: var(--gold); font-size:.78rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
@media (prefers-reduced-motion: reduce){
  .hero-video-sound[aria-pressed="false"]{ animation:none; }
}
.btn-hero .btn-sub{
  font-size:.72rem; font-weight:500; text-transform:none; letter-spacing:0;
  color:#3a2f13;
  opacity:.8;
}
.link-secondary{
  color: var(--ink-muted);
  font-size:.95rem;
  font-weight:600;
  border-bottom: 1px solid transparent;
  transition: color .2s, border-color .2s;
}
.link-secondary:hover{ color: var(--gold); border-color: var(--gold); }

/* Trial class */
.trial-class{
  padding: 4.5rem 0;
  background: var(--bg);
  scroll-margin-top: 76px;
}
.trial-class-card{
  display:grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, .9fr);
  min-height: 360px;
  overflow:hidden;
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.trial-class-copy{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  padding: clamp(2rem, 5vw, 4.5rem);
}
.trial-class-copy .section-title{
  max-width: none;
  font-size: clamp(2rem, 2.8vw, 2.8rem);
}
.trial-class-copy > p:not(.eyebrow){
  max-width: 55ch;
  margin: 0 0 1.25rem;
  color: var(--ink-muted);
}
.trial-class-list{
  display:grid;
  gap: .85rem;
  margin: 0 0 1.25rem;
  padding: 0;
  list-style:none;
  counter-reset: trial-item;
}
.trial-class-list li{
  position:relative;
  padding-left: 2.5rem;
  counter-increment: trial-item;
}
.trial-class-list li::before{
  content: counter(trial-item, decimal-leading-zero);
  position:absolute;
  top:0;
  left:0;
  color: var(--gold);
  font-family: var(--font-display);
  font-size: 1.35rem;
  line-height:1.2;
}
.trial-class-list strong,
.trial-class-list span{ display:block; }
.trial-class-list strong{
  margin-bottom:.1rem;
  color: var(--ink);
  font-size:.95rem;
}
.trial-class-list span{
  max-width: 58ch;
  color: var(--ink-muted);
  font-size:.9rem;
  line-height:1.5;
}
.trial-class-copy .trial-class-closing{ margin-bottom:1.75rem; }
.trial-class-image{ min-height: 360px; }
.trial-class-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}

/* Family */
.family{ padding: 6rem 0; background: var(--bg); }
.family-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.5rem;
  margin-top: 1rem;
}
.family-card{
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 2rem 1.6rem;
  transition: border-color .2s, transform .2s;
}
a.family-card-link{ display:block; padding: 2rem 1.6rem; margin: -2rem -1.6rem; }
.family-card:has(.family-card-link):hover{ border-color: var(--gold); transform: translateY(-3px); }
.family-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:52px; height:52px;
  border-radius:50%;
  background: rgba(255,201,57,.1);
  color: var(--gold);
  margin-bottom: 1.1rem;
}
.family-card h3{ font-family: var(--font-display); font-weight:400; font-size:1.35rem; margin:0 0 .5rem; }
.family-card p{ color: var(--ink-muted); font-size:.92rem; margin:0; }
.family-card .link-more{ display:inline-block; margin-top: 1rem; }

/* Perks (diferenciais City América) */
.perks{ padding: 6rem 0; background: var(--bg); }
.perks-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin: 1rem auto 0;
  max-width: 880px;
}
.perk-card{
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 2.2rem 1.9rem;
  transition: border-color .2s, transform .2s;
}
.perk-card:hover{ border-color: var(--gold); transform: translateY(-3px); }
.perk-card h3{ font-family: var(--font-display); font-weight:400; font-size:1.6rem; margin:0 0 .6rem; }
.perk-card p{ color: var(--ink-muted); font-size:.95rem; margin:0; }
.perk-card .link-more{ display:inline-block; margin-top: 1rem; }

/* Philosophy */
.philosophy{ padding: 7rem 0; background: var(--bg-elevated); }
.philosophy-inner{ position:relative; display:grid; grid-template-columns: 1.15fr 1fr; gap:0; align-items:center; }

.philosophy-image{
  position:relative;
  z-index:1;
  width:65%;
  justify-self:center;
}
.philosophy-image::before{
  content:"";
  position:absolute;
  top: 22px; left: 22px; right: -22px; bottom: -22px;
  background: var(--gold);
  border-radius: var(--radius);
  z-index:-1;
}
.philosophy-image img{
  position:relative;
  display:block;
  width:100%;
  height:auto;
  border-radius: var(--radius);
  filter: grayscale(.1);
  clip-path: polygon(0 1.6%, 100% 0, 100% 100%, 0 98.4%);
  transform: rotate(-1deg);
}

.philosophy-text-card{
  position:relative;
  z-index:2;
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  margin-left: -70px;
  padding: 3rem 3rem 3rem 4rem;
}
.philosophy blockquote{
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 2.4vw, 2.1rem);
  font-weight:400;
  color: var(--gold);
  margin: 0 0 1.5rem;
  line-height:1.3;
  border-left: 3px solid var(--gold);
  padding-left: 1.2rem;
}
.philosophy-text-card p{ color: var(--ink-muted); }
.values-list{ list-style:none; padding:0; margin: 1.5rem 0 0; display:flex; flex-direction:column; gap:.7rem; }
.values-list li{ padding-left: 1.6rem; position:relative; }
.values-list li::before{
  content: "";
  position:absolute; left:0; top:.45em;
  width:8px; height:8px; background: var(--gold); border-radius:50%;
}

/* Programs */
.programs{ padding: 4.5rem 0; }
.programs-header{
  display:flex;
  align-items:center;
  gap: 2.5rem;
  margin-bottom: 2rem;
}
.programs-logo{
  height: 148px;
  width:auto;
  flex-shrink:0;
  filter: drop-shadow(0 0 24px rgba(255,201,57,.16));
}
.programs-header-text{ max-width: 640px; }
.programs-header-text .section-title{ margin-bottom:.6rem; }
.programs-header-text .section-lead{ margin: 0; }

.link-more{ display:inline-block; margin-top:1rem; color: var(--gold); font-weight:600; font-size:.9rem; }
.link-more:hover{ text-decoration: underline; }
.program-details{
  padding:0;
  border:0;
  background:none;
  font-family:inherit;
  line-height:inherit;
  cursor:pointer;
}
.program-details:focus-visible{ outline:2px solid var(--gold); outline-offset:5px; border-radius:2px; }

/* Timeline */
.timeline{ position:relative; margin-top: 0; }

.timeline-controls{
  display:flex;
  justify-content:flex-end;
  gap: .75rem;
  margin-bottom: 1.25rem;
}
.timeline-arrow{
  width: 40px; height:40px;
  border-radius:50%;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--ink-muted);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  transition: border-color .2s ease, color .2s ease, background .2s ease;
}
.timeline-arrow:hover{ border-color: var(--gold); color: var(--gold); }
.timeline-arrow:disabled{ opacity:.35; cursor:default; }
.timeline-arrow:disabled:hover{ border-color: var(--line); color: var(--ink-muted); }

.timeline-scroll{
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 1.75rem 0 1.5rem;
}
.timeline-scroll::-webkit-scrollbar{ display:none; }

.timeline-items{
  position:relative;
  display:flex;
  align-items:flex-start;
  gap: 2.5rem;
  width: max-content;
}

.timeline-item{
  position:relative;
  z-index:1;
  flex: 0 0 250px; /* fallback before JS computes the real width */
  scroll-snap-align: start;
  display:flex;
  flex-direction:column;
}
.timeline-item:nth-child(even){ margin-top: 1.5rem; }

.timeline-node{
  width:52px; height:52px;
  flex-shrink:0;
  border-radius:50%;
  background: var(--bg-card);
  border:2px solid var(--line);
  color: var(--ink-muted);
  display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display);
  font-size:1.3rem;
  margin-bottom:1.5rem;
  opacity:0;
  transform: scale(.5);
  transition: transform .5s cubic-bezier(.2,.8,.2,1), opacity .5s ease, background .3s ease, border-color .3s ease, box-shadow .3s ease, color .3s ease;
}
.timeline-item.in-view .timeline-node{ opacity:1; transform:scale(1); }

.timeline-card{
  opacity:0;
  transform: translateY(16px);
  transition: opacity .6s ease .1s, transform .6s ease .1s;
}
.timeline-item.in-view .timeline-card{ opacity:1; transform:translateY(0); }
.timeline-card img{
  width:100%;
  aspect-ratio: 4/3;
  object-fit:cover;
  border-radius: var(--radius);
  filter: grayscale(.1);
  margin-bottom: 1.1rem;
}
.timeline-card h3{ font-family: var(--font-display); font-weight:400; font-size:1.6rem; margin:.1rem 0 .6rem; }
.timeline-card p{ color: var(--ink-muted); font-size:.92rem; }

/* Program details modal */
body.modal-open{ overflow:hidden; }
.program-modal{
  width:min(760px, calc(100% - 32px));
  max-width:none;
  max-height:min(90vh, 820px);
  padding:0;
  border:1px solid rgba(255,201,57,.3);
  border-radius:18px;
  background:var(--bg-card);
  color:var(--ink);
  box-shadow:0 28px 90px rgba(0,0,0,.68);
  overflow:hidden;
}
.program-modal::backdrop{
  background:rgba(3,3,4,.82);
  backdrop-filter:blur(7px);
}
.program-modal[open]{ animation:modal-in .28s cubic-bezier(.2,.8,.2,1); }
.program-modal-shell{ position:relative; max-height:min(90vh, 820px); overflow-y:auto; }
.program-modal-accent{ height:4px; background:linear-gradient(90deg, var(--gold), #fff0a3 48%, var(--gold)); }
.program-modal-content{ padding:clamp(2rem, 5vw, 3.5rem); }
.program-modal-close{
  position:absolute;
  z-index:2;
  top:18px;
  right:18px;
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border:1px solid var(--line);
  border-radius:50%;
  background:rgba(17,17,19,.86);
  color:var(--ink-muted);
  cursor:pointer;
  transition:border-color .2s ease, color .2s ease, transform .2s ease;
}
.program-modal-close:hover{ border-color:var(--gold); color:var(--gold); transform:rotate(4deg); }
.program-modal-close:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }
.program-modal h2{
  margin:.25rem 3rem .8rem 0;
  font-family:var(--font-display);
  font-size:clamp(2.4rem, 7vw, 4.25rem);
  font-weight:400;
  line-height:.95;
}
.program-modal-intro{ max-width:650px; margin:0; color:var(--ink-muted); font-size:1.02rem; }
.program-modal-grid{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1rem; margin:2rem 0; }
.program-modal-grid > div{ padding:1.2rem; border:1px solid var(--line); border-radius:12px; background:rgba(255,255,255,.025); }
.program-modal-grid strong{ display:block; margin-bottom:.3rem; color:var(--gold); font-size:.82rem; letter-spacing:.08em; text-transform:uppercase; }
.program-modal-grid p{ margin:0; color:var(--ink-muted); font-size:.9rem; line-height:1.55; }
.belt-journey{ padding:1.3rem; border-radius:14px; background:#0b0b0c; border:1px solid rgba(255,255,255,.07); }
.belt-journey-title{ margin:0 0 1rem; color:var(--ink); font-size:.8rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; text-align:center; }
.belt-row{ display:flex; align-items:flex-start; justify-content:center; gap:clamp(.65rem, 3vw, 1.5rem); }
.belt{ width:min(112px, 20%); color:var(--ink-muted); text-align:center; }
.program-svg-defs{ position:absolute; width:0; height:0; overflow:hidden; }
.belt-svg{
  display:block;
  width:100%;
  height:auto;
  margin-bottom:.35rem;
  filter:drop-shadow(0 5px 5px rgba(0,0,0,.38));
}
.belt-svg-shadow{ fill:#000; opacity:.42; }
.belt-svg-fabric{ fill:var(--belt); stroke:rgba(255,255,255,.3); stroke-width:1; }
.belt-svg-highlight{ fill:#fff; opacity:.12; }
.belt-svg-bar{ fill:var(--bar, #111); }
.belt-svg-seam{ fill:none; stroke:rgba(255,255,255,.24); stroke-width:1; }
.belt-svg-stripes path{ fill:none; stroke:#f5f5f0; stroke-width:3; }
.belt small{ display:block; font-size:.72rem; line-height:1.25; }
.belt-featured .belt-svg{ filter:drop-shadow(0 0 2px var(--gold)) drop-shadow(0 7px 6px rgba(0,0,0,.55)); }
.belt-row-single .belt{ width:min(260px, 80%); }
.belt-arrow{ align-self:center; margin-top:2px; color:var(--gold); font-size:1.5rem; }
.nogi-journey{ text-align:center; color:var(--ink-muted); }
.nogi-icon{ width:145px; margin:0 auto; color:#5a5a60; }
.program-modal-action{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1.1rem clamp(2rem, 5vw, 3.5rem);
  border-top:1px solid var(--line);
  background:rgba(0,0,0,.18);
}
.program-modal-action span{ color:var(--ink-muted); font-size:.88rem; }
.program-modal-action .btn{ flex-shrink:0; padding:.72rem 1.15rem; font-size:.78rem; }
@keyframes modal-in{
  from{ opacity:0; transform:translateY(18px) scale(.97); }
  to{ opacity:1; transform:translateY(0) scale(1); }
}
@media (prefers-reduced-motion:reduce){ .program-modal[open]{ animation:none; } }

.valkhan-target { color: #ffffff; text-decoration: none; transition: color 0.3s ease, text-decoration 0.3s ease; }
.valkhan-target:hover { color: var(--gold); text-decoration: underline; }

@media (max-width: 900px){
  .timeline-scroll{
    overflow: visible;
    scroll-snap-type: none;
    max-height: none;
    padding: 0;
    margin: 0;
  }
  .timeline-items{
    display:grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width:100%;
    gap: 2.25rem 1rem;
  }
  .timeline-item{
    min-width:0;
    flex-direction:column;
    gap: 0;
    margin-top: 0 !important;
    scroll-snap-align: none;
  }
  .timeline-node{
    width:40px;
    height:40px;
    margin-bottom:.75rem;
    font-size:1rem;
  }
  .timeline-card{ min-width:0; }
  .timeline-card img{ aspect-ratio: 4 / 3; }
  .timeline-card h3{ font-size:clamp(1.2rem, 5vw, 1.5rem); }

  .timeline-controls{ display:none; }
  .programs-header{ flex-direction:column; text-align:center; gap:1.2rem; }
  .programs-logo{ height: 96px; }
  .programs-header-text .section-title,
  .programs-header-text .section-lead{ text-align:center; margin-left:auto; margin-right:auto; }
}

/* Social proof */
.social-proof{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  padding: 6rem 0;
  background: var(--bg-elevated);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.social-proof::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background: url('../img/familia-jiu-jitsu.png') center / min(520px, 70vw) auto no-repeat;
  opacity:.1;
  pointer-events:none;
}
.social-proof-inner{ display:grid; grid-template-columns: 1.2fr 1fr; gap: 3rem; align-items:center; min-width:0; }
.social-copy,
.social-stats{ min-width:0; }
.social-copy p{ color: var(--ink-muted); max-width: 42ch; }
.social-stats{ display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:1rem; }
.stat-card{
  min-width:0;
  background: var(--bg-card); border:1px solid var(--line); border-radius: var(--radius);
  padding: 1.6rem 1rem; text-align:center;
}
.stat-card strong{ display:block; font-family: var(--font-display); font-size:2.1rem; color: var(--gold); }
.stat-card span{ font-size:.8rem; color: var(--ink-muted); text-transform:uppercase; letter-spacing:.04em; }

/* Team */
.team{ padding: 7rem 0; text-align:center; }

.team-podium{
  display:flex;
  align-items:center;
  justify-content:center;
  gap: 1rem;
  margin-top: 3rem;
}
.podium-arrow{
  flex-shrink:0;
  width:44px; height:44px;
  border-radius:50%;
  border:1px solid var(--line);
  background: var(--bg-card);
  color: var(--ink);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  transition: border-color .2s, color .2s;
}
.podium-arrow:hover{ border-color: var(--gold); color: var(--gold); }

.podium-track{
  max-width: 900px;
  width:100%;
  overflow:hidden;
  padding: 1.5rem 0;
  margin: -1.5rem 0;
}
.podium-slider{
  display:flex;
  align-items:flex-start;
  gap:1.5rem;
  width:max-content;
  transition:transform .48s cubic-bezier(.22, .61, .36, 1);
  will-change:transform;
}
.podium-slider.no-transition{ transition:none; }
.podium-slider.no-transition .podium-card{ transition:none; }
.podium-card{
  flex:0 0 clamp(180px, 27vw, 280px);
  opacity:.2;
  transform: scale(.82);
  cursor:pointer;
  transition:transform .48s cubic-bezier(.22, .61, .36, 1), opacity .48s ease;
  user-select:none;
}
.podium-card.is-adjacent{ opacity:.55; }
.podium-card.is-adjacent:hover{ opacity:.8; }
.podium-card.is-active{
  opacity:1;
  transform:scale(1);
  cursor:default;
}
.podium-card.is-active .team-photo{ border-color: var(--gold); box-shadow: 0 12px 30px rgba(255,201,57,.15); }

.podium-dots{ display:flex; justify-content:center; gap:.5rem; margin-top: 2rem; }
.podium-dot{
  width:8px; height:8px; border-radius:50%;
  background: var(--line);
  border:none; cursor:pointer; padding:0;
  transition: background .2s;
}
.podium-dot.active{ background: var(--gold); }

.team-photo{
  aspect-ratio: 3/4;
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  display:flex; align-items:center; justify-content:center;
  color: var(--ink-muted);
  font-size: .85rem;
  text-transform: uppercase;
  letter-spacing:.08em;
  margin-bottom: 1rem;
}
.team-photo img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center;
}
.podium-card h3{ font-family: var(--font-display); font-weight:400; font-size:1.1rem; margin:0 0 .2rem; }
.podium-card.is-active h3{ font-size:1.4rem; }
.team-role{ color: var(--gold); font-size:.85rem; margin:0; text-transform:uppercase; letter-spacing:.04em; }

@media (prefers-reduced-motion: reduce){
  .podium-slider,
  .podium-card{ transition:none; }
}

/* Training schedule */
.training-schedule{
  width:100%;
  max-width:100%;
  padding: 7rem 0;
  overflow-x:hidden;
  overflow-x:clip;
  contain:layout paint;
  background:
    radial-gradient(circle at 85% 20%, rgba(255,201,57,.08), transparent 30%),
    var(--bg-elevated);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.training-schedule > .container{
  width:100%;
  max-width:1440px;
  min-width:0;
  padding-inline:clamp(40px, 7vw, 112px);
}
.schedule-heading{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:3rem;
  margin-bottom:3rem;
}
.schedule-heading .section-title{ margin-bottom:0; }
.schedule-heading > p{
  max-width:52ch;
  margin:0;
  color:var(--ink-muted);
}
.schedule-swipe-hint{ display:none; }
.schedule-period{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow:hidden;
}
.schedule-period + .schedule-period{ margin-top:3rem; }
.schedule-period-title{
  display:flex;
  align-items:center;
  gap:1rem;
  margin:0 0 1rem;
  font-family:var(--font-display);
  font-size:1.8rem;
  font-weight:400;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.schedule-period-title::after{
  content:"";
  height:1px;
  flex:1;
  background:linear-gradient(90deg, var(--gold), transparent);
}
.schedule-period-title span{
  display:inline-block;
  padding:.35rem 1.15rem .25rem;
  color:#17130a;
  background:var(--gold);
  border-radius:var(--radius);
}
.schedule-scroll{
  display:block;
  position:relative;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  contain:layout inline-size;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-color:var(--gold) var(--bg-card);
  scrollbar-width:thin;
}
.schedule-scroll:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:4px;
}
.schedule-table{
  width:100%;
  min-width:880px;
  border-collapse:separate;
  border-spacing:6px;
  table-layout:fixed;
}
.schedule-table--weekend{ min-width:560px; }
.schedule-table th,
.schedule-table td{
  height:82px;
  padding:.75rem .65rem;
  border:1px solid var(--line);
  border-radius:var(--radius);
  text-align:center;
  vertical-align:middle;
}
.schedule-table thead th{
  height:64px;
  background:var(--gold);
  border-color:var(--gold);
  color:#17130a;
  font-family:var(--font-display);
  font-size:1.35rem;
  font-weight:400;
  letter-spacing:.03em;
}
.schedule-table tbody th{
  background:#222225;
  color:var(--gold);
  font-size:1.08rem;
  font-weight:700;
}
.schedule-table td{
  background:var(--bg-card);
  color:var(--ink);
  font-size:.95rem;
  line-height:1.25;
  transition:border-color .2s ease, background .2s ease;
}
.schedule-table tbody tr:hover td:not(.schedule-empty){
  background:#202023;
  border-color:rgba(255,201,57,.55);
}
.schedule-table td.schedule-empty{
  color:#5d5b57;
  font-size:2.4rem;
  font-weight:400;
  line-height:1;
}
.schedule-plus{ color:var(--gold); font-weight:700; }
.schedule-note{
  margin:1.5rem 6px 0;
  color:var(--ink-muted);
  font-size:.8rem;
}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* Contact */
.contact{ padding: 7rem 0; }
.contact-inner{ display:grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items:start; }
.contact-copy p{ color: var(--ink-muted); max-width: 40ch; }
/* FAQ */
.faq{ padding: 6rem 0; background: var(--bg-elevated); }
.faq-list{ max-width: 820px; margin: 2rem auto 0; display:flex; flex-direction:column; gap:.8rem; }
.faq-item{
  background: var(--bg-card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  transition: border-color .2s;
}
.faq-item[open], .faq-item:hover{ border-color: var(--gold); }
.faq-item summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1.1rem 1.4rem;
  font-weight:600;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:"+"; color: var(--gold); font-size:1.5rem; line-height:1; flex-shrink:0; }
.faq-item[open] summary::after{ content:"−"; }
.faq-item p{ margin:0; padding:0 1.4rem 1.2rem; color: var(--ink-muted); font-size:.95rem; }
.faq-item p strong{ color: var(--ink); }

.contact-form{ display:flex; flex-direction:column; gap:1.2rem; }
.contact-form label{ display:flex; flex-direction:column; gap:.5rem; font-size:.85rem; color: var(--ink-muted); }
.contact-form input, .contact-form select{
  background: var(--bg-card); border:1px solid var(--line); color: var(--ink);
  padding:.85rem 1rem; border-radius: var(--radius); font-size:1rem; font-family:inherit;
}
.contact-form input:focus, .contact-form select:focus{ outline:none; border-color: var(--gold); }
.form-note{ color: var(--gold); font-size:.9rem; min-height:1.2em; margin:0; }

/* Footer */
.site-footer{ border-top:1px solid var(--line); padding: 4rem 0 1.5rem; position:relative; overflow:hidden; }

.footer-grid{
  position:relative;
  display:grid;
  grid-template-columns: 1fr auto 1fr;
  align-items:center;
  gap: 2.5rem;
  padding-bottom: 3rem;
}

.footer-brand-center{
  display:flex;
  justify-content:center;
}
.footer-logo{
  height: 190px;
  width: 160px;
  opacity:.9;
  -webkit-mask-image: url('../img/alliance-emblem-stacked.svg');
  mask-image: url('../img/alliance-emblem-stacked.svg');
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  background: linear-gradient(120deg, var(--gold-deep), var(--gold), #fff6d8, var(--gold), var(--gold-deep));
  background-size: 300% 300%;
  animation: footerLogoGradient 8s ease-in-out infinite;
}

@keyframes footerLogoGradient{
  0%{ background-position: 0% 50%; }
  50%{ background-position: 100% 50%; }
  100%{ background-position: 0% 50%; }
}

.footer-col{ max-width: 320px; }
.footer-col--right{ justify-self:end; text-align:right; }

.footer-heading{
  color: var(--gold);
  font-size:.78rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.1em;
  margin: 0 0 .6rem;
}
.footer-heading--spaced{ margin-top: 1.6rem; }
.footer-line{ color: var(--ink-muted); font-size:.9rem; margin: 0 0 .3rem; }
.footer-line strong{ color: var(--ink); font-weight:600; }
.footer-rating{ margin-top:.8rem; }
.footer-rating span{ color: var(--gold); }
.footer-line--link{ display:inline-block; color: var(--ink-muted); }
.footer-line--link:hover{ color: var(--gold); }
.footer-link{ color: var(--gold); font-size:.9rem; font-weight:600; }
.footer-link:hover{ text-decoration:underline; }

.footer-social{ display:flex; gap:.75rem; }
.footer-col--right .footer-social{ justify-content:flex-end; }
.footer-social-icon{
  width:36px; height:36px;
  border-radius:50%;
  border:1px solid var(--line);
  color: var(--ink-muted);
  display:flex; align-items:center; justify-content:center;
  transition: border-color .2s ease, color .2s ease;
}
.footer-social-icon:hover{ border-color: var(--gold); color: var(--gold); }

.footer-bottom{ border-top:1px solid var(--line); padding-top:1.5rem; }
.footer-bottom p{ color: var(--ink-muted); font-size:.8rem; margin:0; text-align:center; }

/* Responsive */
@media (max-width: 900px){
  .main-nav{
    position:absolute; top:76px; left:0; right:0;
    background: var(--bg); border-bottom:1px solid var(--line);
    flex-direction:column; align-items:flex-start; gap:0;
    max-height:0; overflow:hidden; transition: max-height .25s ease;
  }
  .main-nav.open{ max-height: 400px; }
  .main-nav a{ width:100%; padding:1rem 24px; border-bottom:1px solid var(--line); }
  .nav-toggle{ display:flex; }

  .philosophy-inner,
  .social-proof-inner, .contact-inner, .trial-class-card{
    grid-template-columns: 1fr;
  }
  .trial-class-image{ min-height: 300px; }
  .philosophy-image::before{ top:14px; left:14px; right:-14px; bottom:-14px; }
  .philosophy-image img{ clip-path:none; transform:none; }
  .philosophy-text-card{
    margin-left:0; margin-top: 2rem;
    padding: 2rem;
  }
  .social-stats{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .podium-side{ flex-basis: 90px; }
  .podium-side .team-photo span,
  .podium-side h3,
  .podium-side .team-role{ display:none; }
  .podium-center{ flex-basis: 220px; }
  .podium-track{ gap: .75rem; }

  /* Mobile: título → vídeo vertical → benefícios → CTA → selo */
  .hero{ min-height:0; }
  .hero-grid{
    min-height:0;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "headline"
      "video"
      "points"
      "cta"
      "badge";
    row-gap: 2rem;
    padding-top: 2.5rem;
    padding-bottom: 3.5rem;
  }
  .hero-copy{ display:contents; }
  .hero-video{ width:100%; }
  .hero-video-frame{
    width: min(100%, 340px);
    height:auto;
  }
  .hero-cta-zone{ flex-direction:column; align-items:stretch; gap:1rem; text-align:center; }
  .btn-hero{ align-items:center; }
  .hero-badge{ justify-self:start; width:100%; }

  .footer-grid{
    grid-template-columns: 1fr;
    text-align:center;
    justify-items:center;
    gap: 2rem;
  }
  .footer-brand-center{ order:-1; }
  .footer-logo{ height:150px; width:126px; }
  .footer-col, .footer-col--right{ justify-self:center; text-align:center; max-width:100%; }
  .footer-col--right .footer-social{ justify-content:center; }

  .schedule-heading{ align-items:start; flex-direction:column; gap:1rem; margin-bottom:2rem; }
  .training-schedule > .container{
    max-width:100vw;
    padding-inline:24px;
    overflow:hidden;
  }
  .schedule-scroll{
    width:100%;
    max-width:100%;
  }
  .schedule-swipe-hint{
    display:flex;
    align-items:center;
    gap:.55rem;
    width:100%;
    margin:-.75rem 0 1.5rem;
    color:var(--gold);
    font-size:.78rem;
    font-weight:600;
    letter-spacing:.04em;
    text-transform:uppercase;
  }
  .schedule-swipe-hint span{
    font-size:1.15rem;
    line-height:1;
  }
  .schedule-table{ min-width:760px; }
  .schedule-table--weekend{ min-width:560px; }
  .schedule-table th, .schedule-table td{ height:72px; }
  .schedule-table thead th{ height:56px; font-size:1.15rem; }
  .schedule-period + .schedule-period{ margin-top:2.25rem; }
}

@media (max-width: 560px){
  .trial-class{ padding: 3.5rem 0; }
  .trial-class-copy{ padding: 2rem 1.5rem 2.25rem; }
  .trial-class-image{ min-height: 240px; }

  .social-proof{ padding:4.5rem 0; }
  .social-proof > .container{
    width:100%;
    max-width:100%;
    padding-inline:24px;
  }
  .social-proof-inner{ gap:2.25rem; }
  .social-copy,
  .social-copy .section-title,
  .social-copy p,
  .social-copy .btn{ max-width:100%; }
  .social-copy .btn{ overflow-wrap:anywhere; }
  .social-stats{ grid-template-columns:1fr; }

  .training-schedule{ padding:5rem 0; }
  .schedule-table th,
  .schedule-table td{ padding:.6rem .45rem; font-size:.86rem; }
  .schedule-table thead th{ font-size:1.05rem; }
  .schedule-period-title{ font-size:1.45rem; }
}

/* Mantém as colunas legíveis e limita a rolagem à área da grade. */
@media (max-width: 700px){
  html,
  body{
    width:100%;
    max-width:100%;
    overflow-x:hidden;
    overflow-x:clip;
    overscroll-behavior-x:none;
  }

  .program-modal{ width:calc(100% - 20px); max-height:calc(100dvh - 20px); border-radius:14px; }
  .program-modal-shell{ max-height:calc(100dvh - 20px); }
  .program-modal-content{ padding:2.7rem 1.15rem 1.25rem; }
  .program-modal-action{ align-items:stretch; flex-direction:column; padding:1rem 1.15rem 1.15rem; text-align:center; }
  .program-modal-action .btn{ text-align:center; }
  .program-modal-close{ top:12px; right:12px; width:38px; height:38px; }
  .program-modal h2{ margin-right:2.5rem; }
  .program-modal-grid{ grid-template-columns:1fr; gap:.7rem; margin:1.4rem 0; }
  .program-modal-grid > div{ padding:1rem; }
  .belt-journey{ padding:1rem .65rem; }
  .belt-row{ gap:.5rem; }
  .belt{ width:min(92px, 20%); }
  .belt small{ font-size:.62rem; }

  main,
  .training-schedule{
    width:100%;
    max-width:100%;
    overflow-x:hidden;
    overflow-x:clip;
  }

  .training-schedule > .container,
  .schedule-period{
    width:100%;
    max-width:100%;
    min-width:0;
    overflow:hidden;
  }

  .schedule-scroll{
    display:block;
    position:relative;
    inline-size:100%;
    max-inline-size:100%;
    min-inline-size:0;
    width:100%;
    max-width:100%;
    min-width:0;
    overflow-x:auto;
    overflow-y:hidden;
    touch-action:pan-x pan-y;
    overscroll-behavior-x:contain;
    contain:layout inline-size;
    -webkit-overflow-scrolling:touch;
  }

  .schedule-table{
    width:760px;
    min-width:760px;
  }

  .schedule-table--weekend{
    width:560px;
    min-width:560px;
  }
}

/* Honeypot anti-spam: fora da tela, mas presente no DOM (bots costumam preencher tudo) */
.hp-field{
  position:absolute;
  left:-9999px;
  top:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}
