/* ==========================================================================
   A Simple Twist — Aerial Yoga & Bungee Fitness, Ext. 8 Lenasia
   Palette sampled directly from the studio's own hammocks, floor and walls.
   ========================================================================== */

:root{
  /* Colour — every value pulled from the studio footage or the class posters */
  --ink:        #1B0A17;   /* plum-black, the studio ceiling            */
  --plum:       #3B0E36;   /* deep aubergine, headings                  */
  --plum-soft:  #5E2A57;
  --silk:       #7A1668;   /* the hammock magenta                       */
  --silk-lit:   #A82A87;   /* where the light catches the fabric        */
  --silk-deep:  #4B0D40;   /* inside the folds                          */
  --mist:       #D8C4D6;   /* lavender                                  */
  --mist-soft:  #EADDE8;
  --paper:      #F4E8ED;   /* the blush the posters sit on              */
  --paper-lift: #FCF7F9;
  --floor:      #B98A66;   /* the wooden floor — our warm counterweight */
  --floor-soft: #E3CDB8;
  --steel:      #9A9298;   /* rigging hardware                          */

  /* Type */
  --display: "Bodoni Moda", "Didot", "Playfair Display", Georgia, serif;
  --script:  "Parisienne", "Snell Roundhand", cursive;
  --body:    "Jost", "Futura", "Century Gothic", system-ui, sans-serif;

  /* Rhythm */
  --gutter: clamp(1.25rem, 5vw, 4.5rem);
  --maxw: 1240px;
  --section-y: clamp(4.5rem, 9vw, 8.5rem);

  --ease: cubic-bezier(.16,1,.3,1);
  --shadow-lift: 0 22px 50px -28px rgba(27,10,23,.55);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--paper);
  color:var(--plum);
  font-family:var(--body);
  font-weight:300;
  font-size:clamp(1rem,.97rem + .18vw,1.09rem);
  line-height:1.72;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg,video{ max-width:100%; display:block; }
figure{ margin:0; }
blockquote{ margin:0; }
a{ color:inherit; }
button{ font:inherit; color:inherit; }
::selection{ background:var(--silk); color:var(--paper-lift); }

.defs{ position:absolute; width:0; height:0; overflow:hidden; }

/* ---------- type ---------- */
h1,h2,h3,h4{
  font-family:var(--display);
  font-weight:400;
  color:var(--plum);
  margin:0 0 .5em;
  line-height:1.02;
  letter-spacing:-.015em;
}
h1{ font-size:clamp(2.9rem,9vw,7rem); }
h2{ font-size:clamp(2.1rem,4.6vw,3.9rem); }
h3{ font-size:clamp(1.35rem,2.1vw,1.8rem); line-height:1.15; }
h4{ font-size:1.12rem; letter-spacing:0; }
p{ margin:0 0 1.15em; }
p:last-child{ margin-bottom:0; }
strong{ font-weight:500; }
em{ font-style:italic; }

.script{
  font-family:var(--script);
  font-weight:400;
  letter-spacing:.01em;
  line-height:1;
  color:var(--silk);
}
.eyebrow{
  font-family:var(--body);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--silk);
  margin:0 0 1.3rem;
  display:flex;
  align-items:center;
  gap:.85rem;
}
.eyebrow::after{
  content:"";
  flex:1;
  height:1px;
  background:linear-gradient(90deg,var(--mist),transparent);
  max-width:120px;
}
.eyebrow.centred{ justify-content:center; }
.eyebrow.centred::before{
  content:"";
  flex:1;
  height:1px;
  max-width:120px;
  background:linear-gradient(270deg,var(--mist),transparent);
}
.lede{
  font-size:clamp(1.1rem,1.5vw,1.32rem);
  line-height:1.62;
  font-weight:300;
  color:var(--plum-soft);
  max-width:60ch;
}
.fine{
  font-size:.83rem;
  letter-spacing:.02em;
  line-height:1.6;
  color:var(--plum-soft);
  opacity:.85;
}

/* carabiner bullets — everything in this room clips onto something */
ul.clip{ list-style:none; margin:0 0 1.2em; padding:0; }
ul.clip li{ position:relative; padding-left:1.9rem; margin-bottom:.62rem; }
ul.clip li::before{
  content:"";
  position:absolute;
  left:0; top:.62em;
  width:12px; height:18px;
  border:1.5px solid var(--floor);
  border-radius:7px;
  transform:rotate(-16deg);
}

/* ---------- layout ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.wrap-narrow{ max-width:820px; }
.section{ padding-block:var(--section-y); position:relative; }
.section.tight{ padding-block:clamp(3rem,5vw,4.75rem); }
.section.dark{ background:var(--ink); color:var(--mist); }
.section.dark h2,.section.dark h3,.section.dark h4{ color:var(--paper); }
.section.dark .lede{ color:var(--mist); }
.section.plum{ background:var(--plum); color:var(--mist-soft); }
.section.plum h2,.section.plum h3{ color:var(--paper); }
.section.plum .lede{ color:var(--mist); }
.section.plum .fine{ color:var(--mist); }
.section.lift{ background:var(--paper-lift); }

.split{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));
  gap:clamp(2rem,4.5vw,4.5rem);
  align-items:start;
}
.split.hold{ align-items:center; }

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  padding:.95rem 1.7rem;
  border-radius:999px;
  border:1px solid transparent;
  background:var(--silk);
  color:var(--paper-lift);
  font-size:.79rem;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  text-decoration:none;
  cursor:pointer;
  transition:transform .45s var(--ease), background .3s ease, box-shadow .45s var(--ease);
}
.btn:hover{ background:var(--silk-lit); transform:translateY(-3px); box-shadow:0 16px 30px -18px rgba(122,22,104,.9); }
.btn:active{ transform:translateY(-1px); }
.btn.ghost{ background:transparent; border-color:var(--silk); color:var(--silk); }
.btn.ghost:hover{ background:var(--silk); color:var(--paper-lift); }
.btn.light{ background:var(--paper); color:var(--plum); }
.btn.light:hover{ background:#fff; color:var(--silk); }
.btn.outline-light{ background:transparent; border-color:rgba(240,225,236,.45); color:var(--paper); }
.btn.outline-light:hover{ background:var(--paper); color:var(--plum); }
.btn.sm{ padding:.62rem 1.15rem; font-size:.68rem; letter-spacing:.14em; }
.btn svg{ width:1.05em; height:1.05em; flex:none; }
.btn-row{ display:flex; flex-wrap:wrap; gap:.85rem; margin-top:2rem; }

a.quiet{
  color:var(--silk);
  text-decoration:none;
  border-bottom:1px solid var(--mist);
  padding-bottom:2px;
  transition:border-color .3s ease,color .3s ease;
}
a.quiet:hover{ border-color:var(--silk); }

:focus-visible{ outline:2.5px solid var(--floor); outline-offset:3px; border-radius:3px; }

/* ---------- nav ---------- */
.nav{
  position:sticky;
  top:0;
  z-index:60;
  background:rgba(244,232,237,.82);
  backdrop-filter:blur(14px) saturate(1.3);
  -webkit-backdrop-filter:blur(14px) saturate(1.3);
  border-bottom:1px solid rgba(216,196,214,.6);
  transition:box-shadow .4s ease;
}
.nav.stuck{ box-shadow:0 10px 30px -24px rgba(27,10,23,.7); }
.nav-inner{
  max-width:var(--maxw);
  margin-inline:auto;
  padding:.65rem var(--gutter);
  display:flex;
  align-items:center;
  gap:1.5rem;
}
.brand{ display:flex; align-items:center; gap:.7rem; text-decoration:none; margin-right:auto; }
.brand img{ width:auto; height:46px; }
.brand-txt{ display:flex; flex-direction:column; line-height:1; }
.brand-txt b{
  font-family:var(--display);
  font-weight:500;
  font-size:1.02rem;
  letter-spacing:.02em;
  color:var(--plum);
}
.brand-txt span{
  font-size:.56rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--silk);
  margin-top:.32rem;
}
.nav-links{ display:flex; align-items:center; gap:1.75rem; }
.nav-links .btn.only-mobile{ display:none; }
.nav-links a:not(.btn){
  text-decoration:none;
  font-size:.74rem;
  font-weight:400;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:var(--plum-soft);
  position:relative;
  padding-block:.35rem;
  transition:color .3s ease;
}
.nav-links a:not(.btn)::after{
  content:"";
  position:absolute;
  left:0; bottom:0;
  width:100%; height:1px;
  background:var(--silk);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .45s var(--ease);
}
.nav-links a:not(.btn):hover{ color:var(--silk); }
.nav-links a:not(.btn):hover::after,
.nav-links a[aria-current="page"]:not(.btn)::after{ transform:scaleX(1); transform-origin:left; }
.nav-links a[aria-current="page"]:not(.btn){ color:var(--silk); }

.burger{
  display:none;
  background:none;
  border:1px solid var(--mist);
  border-radius:999px;
  width:44px; height:44px;
  cursor:pointer;
  padding:0;
  position:relative;
}
.burger span{
  position:absolute;
  left:12px;
  width:20px; height:1.5px;
  background:var(--plum);
  transition:transform .4s var(--ease), opacity .25s ease;
}
.burger span:nth-child(1){ top:16px; }
.burger span:nth-child(2){ top:21px; }
.burger span:nth-child(3){ top:26px; }
.nav.open .burger span:nth-child(1){ transform:translateY(5px) rotate(45deg); }
.nav.open .burger span:nth-child(2){ opacity:0; }
.nav.open .burger span:nth-child(3){ transform:translateY(-5px) rotate(-45deg); }

@media (max-width:900px){
  .burger{ display:block; }
  .nav-inner .btn{ display:none; }
  .nav-links{
    position:absolute;
    top:100%; left:0; right:0;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    background:var(--paper-lift);
    border-bottom:1px solid var(--mist);
    padding:.5rem var(--gutter) 1.5rem;
    clip-path:inset(0 0 100% 0);
    transition:clip-path .5s var(--ease);
  }
  .nav.open .nav-links{ clip-path:inset(0 0 0 0); }
  .nav-links a:not(.btn){ padding:.95rem 0; border-bottom:1px solid var(--mist-soft); font-size:.82rem; }
  .nav-links .btn.only-mobile{ display:inline-flex; }
  .nav-links .btn{ margin-top:1.1rem; justify-content:center; }
}

/* ---------- hero ---------- */
.hero{
  position:relative;
  min-height:clamp(560px,88svh,880px);
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  background:var(--ink);
  isolation:isolate;
}
.hero-media{ position:absolute; inset:0; z-index:-2; }
.hero-media video,.hero-media img{
  width:100%; height:100%;
  object-fit:cover;
  filter:saturate(1.08) contrast(1.02);
}
.hero-scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(180deg,rgba(27,10,23,.62) 0%,rgba(27,10,23,.18) 34%,rgba(27,10,23,.72) 74%,rgba(27,10,23,.95) 100%),
    linear-gradient(95deg,rgba(59,14,54,.72) 0%,rgba(59,14,54,.15) 62%);
}
.hero-inner{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding:0 var(--gutter) clamp(3rem,7vw,5.5rem);
}
.hero .eyebrow{ color:var(--mist); }
.hero .eyebrow::after,.hero .eyebrow::before{ background:linear-gradient(90deg,rgba(216,196,214,.7),transparent); }
.hero-script{
  font-size:clamp(2rem,5.2vw,3.6rem);
  color:var(--mist);
  margin:0 0 -.15em;
  padding-left:.12em;
}
.hero h1{
  color:var(--paper-lift);
  font-size:clamp(2.85rem,10.5vw,8.4rem);
  letter-spacing:.04em;
  font-weight:500;
  margin:0 0 1.1rem;
  text-shadow:0 18px 45px rgba(27,10,23,.5);
}
.hero p.lede{ color:rgba(245,233,239,.92); max-width:46ch; }
.hero-facts{
  display:flex;
  flex-wrap:wrap;
  gap:clamp(1.2rem,3vw,2.6rem);
  margin-top:2.4rem;
  padding-top:1.6rem;
  border-top:1px solid rgba(216,196,214,.28);
}
.hero-fact b{
  display:block;
  font-family:var(--display);
  font-size:1.5rem;
  font-weight:500;
  color:var(--paper);
  line-height:1.1;
}
.hero-fact span{
  font-size:.64rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--mist);
  opacity:.85;
}

/* page banner for interior pages */
.banner{
  position:relative;
  padding-block:clamp(3.4rem,7vw,6rem) clamp(2.8rem,5vw,4.5rem);
  background:var(--plum);
  color:var(--mist-soft);
  overflow:hidden;
}
.banner::after{
  content:"";
  position:absolute;
  inset:auto 0 0 0;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--silk-lit),transparent);
}
.banner h1{ color:var(--paper-lift); font-size:clamp(2.4rem,6.5vw,4.9rem); }
.banner .lede{ color:var(--mist); }
.banner .eyebrow{ color:var(--mist); }
.banner .eyebrow::after,.banner .eyebrow::before{ background:linear-gradient(90deg,rgba(216,196,214,.55),transparent); }
.banner-silk{
  position:absolute;
  top:0; right:clamp(-40px,2vw,60px);
  width:min(400px,50vw);
  opacity:.55;
  pointer-events:none;
  animation:sway 13s ease-in-out infinite alternate;
  transform-origin:50% 0;
}
@media (max-width:760px){ .banner-silk{ width:64vw; right:-14vw; opacity:.35; } }

/* ---------- the rail: everything in this room hangs ---------- */
.rail-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));
  gap:0;
  margin-top:clamp(2rem,4vw,3.25rem);
}
.hang{ padding-inline:clamp(.4rem,1vw,.75rem); display:flex; flex-direction:column; }
.hang-rail{
  height:5px;
  border-radius:2px;
  background:linear-gradient(180deg,var(--steel),#6d666c 60%,#4a444a);
  box-shadow:0 2px 5px -1px rgba(27,10,23,.35);
  margin-inline:calc(-1 * clamp(.4rem,1vw,.75rem));
}
.hang-silk{
  width:100%;
  height:132px;
  display:block;
  transform-origin:50% 0;
  animation:sway 9s ease-in-out infinite alternate;
}
.hang:nth-child(2) .hang-silk{ animation-duration:11s; animation-delay:-2.4s; }
.hang:nth-child(3) .hang-silk{ animation-duration:8.2s; animation-delay:-5s; }
.hang:nth-child(4) .hang-silk{ animation-duration:10.4s; animation-delay:-1.2s; }
@keyframes sway{
  from{ transform:rotate(-.75deg); }
  to{ transform:rotate(.75deg); }
}
.hang-card{
  margin-top:-44px;
  flex:1;
  display:flex;
  flex-direction:column;
  position:relative;
  background:var(--paper-lift);
  border:1px solid var(--mist-soft);
  border-radius:4px 4px 20px 20px;
  padding:1.9rem 1.5rem 1.7rem;
  text-align:center;
  transition:transform .55s var(--ease), box-shadow .55s var(--ease), border-color .4s ease;
}
.hang:hover .hang-card{
  transform:translateY(6px);
  box-shadow:var(--shadow-lift);
  border-color:var(--mist);
}
.hang-day{
  font-family:var(--script);
  font-size:2.35rem;
  color:var(--silk);
  line-height:1;
  margin:0 0 .35rem;
}
.hang-time{
  font-family:var(--display);
  font-size:1.32rem;
  font-weight:500;
  letter-spacing:-.01em;
  color:var(--plum);
  margin:0 0 .7rem;
}
.hang-note{ font-size:.92rem; line-height:1.55; color:var(--plum-soft); margin:0 0 1.1rem; }
.hang-tag{
  display:inline-block;
  align-self:center;
  margin-top:auto;
  padding-top:.28rem;
  padding:.28rem .8rem;
  border-radius:999px;
  background:var(--mist-soft);
  color:var(--silk);
  font-size:.6rem;
  font-weight:500;
  letter-spacing:.2em;
  text-transform:uppercase;
}
.hang-tag.kids{ background:var(--floor-soft); color:#7d4f2a; }

/* ---------- silk drop divider ---------- */
.drop{
  display:block;
  width:100%;
  height:clamp(58px,7vw,96px);
  color:var(--silk);
  opacity:.55;
  transform-origin:50% 0;
  animation:sway 12s ease-in-out infinite alternate;
}
.drop.on-dark{ color:rgba(216,196,214,.42); }

/* ---------- plain cards ---------- */
.cards{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));
  gap:clamp(1.1rem,2.2vw,2rem);
  margin-top:clamp(2.2rem,4vw,3.5rem);
}
.card{
  background:var(--paper-lift);
  border:1px solid var(--mist-soft);
  border-radius:3px;
  padding:clamp(1.5rem,2.4vw,2.2rem);
  position:relative;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.card:hover{ transform:translateY(-5px); box-shadow:var(--shadow-lift); }
.card h3{ margin-bottom:.55rem; }
.card p{ font-size:.98rem; color:var(--plum-soft); }
.card-mark{
  width:34px; height:34px;
  margin-bottom:1.1rem;
  color:var(--silk);
}
.section.dark .card,.section.plum .card{
  background:rgba(216,196,214,.07);
  border-color:rgba(216,196,214,.2);
}
.section.dark .card p,.section.plum .card p{ color:var(--mist); }
.section.dark .card:hover,.section.plum .card:hover{ background:rgba(216,196,214,.12); }

/* ---------- pull quote ---------- */
.quote{
  position:relative;
  text-align:center;
  padding-block:clamp(3.5rem,7vw,6.5rem);
}
.quote blockquote{
  margin:0 auto;
  max-width:19ch;
  font-family:var(--display);
  font-style:italic;
  font-weight:400;
  font-size:clamp(2rem,5.4vw,4.2rem);
  line-height:1.12;
  letter-spacing:-.02em;
  color:var(--paper);
}
.quote .qmark{
  font-family:var(--display);
  font-size:clamp(4rem,10vw,8rem);
  line-height:.6;
  color:var(--silk-lit);
  display:block;
  margin-bottom:.1em;
}
.quote cite{
  display:block;
  margin-top:2rem;
  font-style:normal;
  font-size:.66rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--mist);
}

/* ---------- price ---------- */
.price-block{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:clamp(1.5rem,4vw,3rem);
  padding:clamp(1.8rem,3.5vw,2.8rem);
  border:1px solid var(--mist);
  border-radius:4px;
  background:var(--paper-lift);
}
.price-fig{
  font-family:var(--display);
  font-size:clamp(3.2rem,8vw,5.4rem);
  font-weight:500;
  line-height:.9;
  color:var(--silk);
  letter-spacing:-.03em;
}
.price-fig small{ font-size:.28em; letter-spacing:.2em; text-transform:uppercase; color:var(--plum-soft); display:block; margin-top:.9rem; font-family:var(--body); }

/* ---------- gallery ---------- */
.gallery{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));
  gap:clamp(.6rem,1.2vw,1rem);
  margin-top:clamp(2rem,4vw,3rem);
}
.shot{
  position:relative;
  overflow:hidden;
  border-radius:3px;
  background:var(--ink);
  aspect-ratio:3/4;
}
.shot.wide{ aspect-ratio:auto; min-height:clamp(240px,26vw,340px); grid-column:span 2; }
.shot video,.shot img{
  width:100%; height:100%;
  object-fit:cover;
  transition:transform 1.1s var(--ease);
}
.shot:hover video,.shot:hover img{ transform:scale(1.05); }
.shot figcaption{
  position:absolute;
  left:0; right:0; bottom:0;
  padding:2.4rem 1.1rem .9rem;
  font-size:.68rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--paper);
  background:linear-gradient(180deg,transparent,rgba(27,10,23,.85));
}
@media (max-width:620px){ .shot.wide{ grid-column:span 1; aspect-ratio:16/11; min-height:0; } }

/* ---------- steps ---------- */
.steps{ counter-reset:step; margin-top:clamp(2rem,4vw,3rem); display:grid; gap:0; }
.step{
  counter-increment:step;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(1.2rem,3vw,2.4rem);
  padding:clamp(1.5rem,3vw,2.2rem) 0;
  border-top:1px solid var(--mist);
  align-items:start;
}
.step:last-child{ border-bottom:1px solid var(--mist); }
.step::before{
  content:counter(step,decimal-leading-zero);
  font-family:var(--display);
  font-size:1.1rem;
  font-weight:500;
  color:var(--silk);
  letter-spacing:.05em;
  padding-top:.35rem;
  min-width:2.2rem;
}
.step h3{ font-size:1.32rem; margin-bottom:.4rem; }
.step p{ color:var(--plum-soft); margin:0; max-width:62ch; }

/* ---------- faq ---------- */
.faq{ margin-top:clamp(1.8rem,3.5vw,2.6rem); border-top:1px solid var(--mist); }
.faq details{ border-bottom:1px solid var(--mist); }
.faq summary{
  cursor:pointer;
  list-style:none;
  padding:1.35rem 2.6rem 1.35rem 0;
  position:relative;
  font-family:var(--display);
  font-size:clamp(1.08rem,1.7vw,1.32rem);
  font-weight:500;
  color:var(--plum);
  transition:color .3s ease;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary:hover{ color:var(--silk); }
.faq summary::after{
  content:"";
  position:absolute;
  right:.4rem; top:50%;
  width:13px; height:13px;
  border-right:1.5px solid var(--silk);
  border-bottom:1.5px solid var(--silk);
  transform:translateY(-70%) rotate(45deg);
  transition:transform .4s var(--ease);
}
.faq details[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq .answer{ padding:0 clamp(0rem,4vw,3rem) 1.6rem 0; color:var(--plum-soft); max-width:70ch; }
.faq details[open] .answer{ animation:unfold .5s var(--ease); }
@keyframes unfold{ from{ opacity:0; transform:translateY(-8px); } to{ opacity:1; transform:none; } }

/* ---------- policy ---------- */
.policy{ display:grid; gap:0; margin-top:clamp(1.8rem,3.5vw,2.6rem); }
.policy-row{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(1.1rem,2.5vw,1.9rem);
  padding:clamp(1.3rem,2.6vw,1.9rem) 0;
  border-top:1px solid rgba(216,196,214,.35);
  align-items:start;
}
.policy-row:last-child{ border-bottom:1px solid rgba(216,196,214,.35); }
.policy-ico{
  width:44px; height:44px;
  border-radius:999px;
  background:rgba(216,196,214,.14);
  display:grid;
  place-items:center;
  color:var(--mist);
  flex:none;
}
.policy-ico svg{ width:20px; height:20px; }
.policy-row h3{ font-size:1.2rem; margin-bottom:.3rem; }
.policy-row p{ margin:0; font-size:.98rem; }

/* ---------- form ---------- */
.form{
  background:var(--paper-lift);
  border:1px solid var(--mist);
  border-radius:4px;
  padding:clamp(1.6rem,3.5vw,2.6rem);
}
.field{ margin-bottom:1.35rem; }
.field label{
  display:block;
  font-size:.65rem;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--silk);
  margin-bottom:.6rem;
}
.field input,.field select,.field textarea{
  width:100%;
  padding:.85rem 1rem;
  border:1px solid var(--mist);
  border-radius:3px;
  background:var(--paper);
  color:var(--plum);
  font-family:var(--body);
  font-size:1rem;
  font-weight:300;
  transition:border-color .3s ease, background .3s ease;
}
.field textarea{ min-height:110px; resize:vertical; }
.field input:focus,.field select:focus,.field textarea:focus{ border-color:var(--silk); background:#fff; }
.field select{ appearance:none; background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%237A1668' stroke-width='1.6' d='M1 1l5 5 5-5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; background-size:12px; padding-right:2.6rem; }
.chips{ display:flex; flex-wrap:wrap; gap:.5rem; }
.chip{
  padding:.55rem 1.05rem;
  border:1px solid var(--mist);
  border-radius:999px;
  background:var(--paper);
  font-size:.78rem;
  letter-spacing:.06em;
  cursor:pointer;
  transition:all .3s ease;
}
.chip:hover{ border-color:var(--silk); color:var(--silk); }
.chip[aria-pressed="true"]{ background:var(--silk); border-color:var(--silk); color:var(--paper-lift); }

/* ---------- contact list ---------- */
.contact-list{ list-style:none; margin:0; padding:0; }
.contact-list li{
  display:flex;
  gap:1rem;
  align-items:flex-start;
  padding:1.05rem 0;
  border-bottom:1px solid var(--mist);
}
.contact-list li:first-child{ border-top:1px solid var(--mist); }
.contact-list svg{ width:19px; height:19px; color:var(--silk); flex:none; margin-top:.3rem; }
.contact-list b{
  display:block;
  font-size:.63rem;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--plum-soft);
  margin-bottom:.15rem;
}
.contact-list a{ text-decoration:none; color:var(--plum); transition:color .3s ease; }
.contact-list a:hover{ color:var(--silk); }

/* ---------- cta band ---------- */
.cta-band{
  background:
    linear-gradient(120deg,rgba(27,10,23,.9),rgba(75,13,64,.78)),
    var(--silk);
  color:var(--paper);
  text-align:center;
}
.cta-band h2{ color:var(--paper-lift); max-width:16ch; margin-inline:auto; }
.cta-band .lede{ color:rgba(240,225,236,.9); margin-inline:auto; }
.cta-band .btn-row{ justify-content:center; }

/* ---------- footer ---------- */
.footer{ background:var(--ink); color:var(--mist); padding-block:clamp(3rem,6vw,4.5rem) 2rem; }
.footer-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));
  gap:clamp(2rem,4vw,3rem);
}
.footer h4{
  color:var(--paper);
  font-family:var(--body);
  font-size:.65rem;
  font-weight:500;
  letter-spacing:.24em;
  text-transform:uppercase;
  margin-bottom:1.1rem;
}
.footer a{ color:var(--mist); text-decoration:none; transition:color .3s ease; }
.footer a:hover{ color:var(--paper); }
.footer ul{ list-style:none; margin:0; padding:0; }
.footer li{ margin-bottom:.55rem; font-size:.94rem; }
.footer img.mark{ height:64px; width:auto; margin-bottom:1rem; }
.footer .tag{ font-family:var(--script); font-size:1.5rem; color:var(--mist); }
.footer-base{
  margin-top:clamp(2.5rem,5vw,3.5rem);
  padding-top:1.5rem;
  border-top:1px solid rgba(216,196,214,.16);
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  justify-content:space-between;
  font-size:.74rem;
  letter-spacing:.05em;
  opacity:.7;
}

/* ---------- reveal ---------- */
.rise{ opacity:0; transform:translateY(26px); }
.rise.in{ opacity:1; transform:none; transition:opacity .9s var(--ease), transform .9s var(--ease); }
.rise.d1.in{ transition-delay:.09s; }
.rise.d2.in{ transition-delay:.18s; }
.rise.d3.in{ transition-delay:.27s; }
.rise.d4.in{ transition-delay:.36s; }

/* hero load: the silks are released and settle downward */
.settle{ opacity:0; transform:translateY(-26px); }
.loaded .settle{ opacity:1; transform:none; transition:opacity 1s var(--ease), transform 1.15s var(--ease); }
.loaded .settle.s1{ transition-delay:.1s; }
.loaded .settle.s2{ transition-delay:.24s; }
.loaded .settle.s3{ transition-delay:.4s; }
.loaded .settle.s4{ transition-delay:.56s; }
.loaded .settle.s5{ transition-delay:.7s; }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  html{ scroll-behavior:auto; }
  .rise,.settle{ opacity:1; transform:none; }
}

/* ---------- utilities ---------- */
.sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.stack-sm > * + *{ margin-top:.8rem; }
.mt-2{ margin-top:2rem; }
.mt-3{ margin-top:3rem; }
.centre{ text-align:center; }
.centre .eyebrow{ justify-content:center; }
.centre .lede{ margin-inline:auto; }
