  :root{
    --onyx:#1f2a2e;
    --onyx-deep:#172023;
    --rich-gold:#9b7a30;
    --gold-100:#aa8e4d;
    --gold-60:#c9b68e;
    --gold-40:#dcd1b3;
    --gold-20:#ede6d8;
    --gold-10:#f6f2ef;
    --serif:'Marcellus',serif;
    --sans:'Jost',sans-serif;
    --ease-lux:cubic-bezier(.22,.61,.21,1);
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--onyx);
    color:var(--gold-20);
    font-family:var(--sans);
    font-weight:300;
    -webkit-font-smoothing:antialiased;
    line-height:1.7;
    overflow-x:hidden;
  }

  /* ---------- grain: material depth over everything ---------- */
  body::after{
    content:"";position:fixed;inset:0;z-index:100;pointer-events:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
    opacity:.035;
    mix-blend-mode:overlay;
  }

  /* ---------- the thread: scroll-linked ---------- */
  #thread{
    position:fixed;top:0;left:50%;z-index:1;
    width:1px;height:100vh;
    pointer-events:none;
  }
  #thread .line{
    position:absolute;top:0;left:0;width:1px;height:100%;
    background:linear-gradient(to bottom, var(--gold-100) 82%, transparent);
    opacity:.22;
    transform:scaleY(0);
    transform-origin:top;
  }

  /* ---------- fine details ---------- */
  ::selection{background:var(--gold-100);color:var(--onyx);}
  html{scrollbar-width:thin;scrollbar-color:var(--gold-100) var(--onyx-deep);}
  ::-webkit-scrollbar{width:8px;}
  ::-webkit-scrollbar-track{background:var(--onyx-deep);}
  ::-webkit-scrollbar-thumb{background:var(--gold-100);border-radius:0;}
  .section-eyebrow::before{
    content:"";display:inline-block;width:22px;height:1px;
    background:currentColor;vertical-align:middle;
    margin-right:.9em;margin-top:-2px;
  }

  /* ---------- whisper cta ---------- */
  .whisper{
    display:inline-block;margin-top:3.4rem;
    font-size:.68rem;letter-spacing:.36em;text-transform:uppercase;
    color:var(--gold-60);text-decoration:none;
    padding-bottom:.7rem;position:relative;
  }
  .whisper::after{
    content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
    background:var(--gold-100);
    transform:scaleX(.32);transform-origin:left;
    transition:transform .6s var(--ease-lux);
  }
  .whisper:hover{color:var(--gold-100);}
  .whisper:hover::after{transform:scaleX(1);}
  .whisper:focus-visible{outline:1px solid var(--gold-100);outline-offset:6px;}

  /* ---------- the doctors ---------- */
  .doctors-grid{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:2.4rem;margin-top:5rem;
  }
  .doc-card .frame{aspect-ratio:3/4;}
  .doc-card .frame .placeholder{aspect-ratio:auto;height:100%;}
  .doc-name{
    font-family:var(--serif);font-size:1.08rem;color:var(--onyx);
    margin-top:1.4rem;letter-spacing:.02em;
  }
  .doc-role{
    font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;
    color:var(--rich-gold);margin-top:.45rem;font-weight:300;
  }
  @media (max-width:880px){
    .doctors-grid{grid-template-columns:repeat(2,1fr);gap:1.8rem;}
  }

  /* ---------- arrival veil ---------- */
  .veil{
    position:fixed;inset:0;z-index:200;
    background:var(--onyx-deep);
    display:flex;align-items:center;justify-content:center;
    transition:opacity .6s var(--ease-lux) .15s, visibility 0s .8s;
  }
  .veil .logo-mark{height:26px;opacity:0;animation:veilmark .5s var(--ease-lux) forwards;}
  .veil .logo-mark path{fill:var(--gold-100);}
  @keyframes veilmark{to{opacity:1;}}
  .loaded .veil{opacity:0;visibility:hidden;pointer-events:none;}
  html:not(.js) .veil{display:none;}
  @media (prefers-reduced-motion:reduce){.veil{display:none;}}

  /* ---------- nav ---------- */
  header{
    position:fixed;top:0;left:0;right:0;z-index:50;
    display:flex;justify-content:space-between;align-items:center;
    padding:2.2rem 4vw;
    transition:background .6s var(--ease-lux), padding .6s var(--ease-lux);
  }
  header.scrolled{
    background:rgba(23,32,35,.9);
    backdrop-filter:blur(10px);
    padding:1.1rem 4vw;
  }
  .logo-mark{height:22px;display:block;transition:height .6s var(--ease-lux);}
  header.scrolled .logo-mark{height:17px;}
  .logo-mark path{fill:var(--gold-20);}
  nav{display:flex;gap:3rem;align-items:center;}
  nav a{
    color:var(--gold-20);text-decoration:none;
    font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;font-weight:300;
    position:relative;transition:color .4s;
  }
  nav a:not(.nav-enquire)::after{
    content:"";position:absolute;left:0;bottom:-6px;height:1px;width:100%;
    background:var(--gold-100);
    transform:scaleX(0);transform-origin:right;
    transition:transform .5s var(--ease-lux);
  }
  nav a:not(.nav-enquire):hover::after,
  nav a.active::after{transform:scaleX(1);transform-origin:left;}
  nav a.active{color:var(--gold-100);}
  nav a:hover{color:var(--gold-100);}
  nav a:focus-visible{outline:1px solid var(--gold-100);outline-offset:6px;}
  .nav-enquire{border:1px solid var(--gold-100);padding:.65rem 1.8rem;color:var(--gold-60);overflow:hidden;}

  /* ---------- buttons: sweep fill ---------- */
  .btn,.nav-enquire{position:relative;isolation:isolate;transition:transform .3s var(--ease-lux);}
  .btn::before,.nav-enquire::before{
    content:"";position:absolute;inset:0;z-index:-1;
    background:var(--gold-100);
    transform:scaleX(0);transform-origin:left;
    transition:transform .55s var(--ease-lux);
  }
  .btn:hover::before,.nav-enquire:hover::before{transform:scaleX(1);}
  .btn:hover,.nav-enquire:hover{color:var(--onyx);}

  /* ---------- hero ---------- */
  .hero{
    min-height:92vh;min-height:92svh;
    display:flex;flex-direction:column;
    justify-content:center;align-items:flex-start;
    text-align:left;position:relative;
    padding:7rem 8vw 8rem;overflow:hidden;
  }
  /* the lineform: scattered marks resolving onto one line */
  #lineform{position:absolute;inset:0;z-index:1;pointer-events:none;}
  #lineform i{
    position:absolute;display:block;
    background:var(--gold-100);
    transition:top 1.6s var(--ease-lux), opacity 1.6s var(--ease-lux);
  }
  #lineform .master{
    position:absolute;left:0;width:100%;height:1px;top:71%;
    background:linear-gradient(90deg, transparent, rgba(170,142,77,.32) 10%, rgba(170,142,77,.32) 90%, transparent);
    transform-origin:center;
    transition:transform 2.2s var(--ease-lux);
  }
  .js #lineform .master{transform:scaleX(0);}
  #lineform.aligned .master{transform:scaleX(1);}
  .hero>*:not(#lineform):not(.scroll-cue){position:relative;z-index:2;}
  .hero .wordmark path{fill:var(--gold-100);}
  .eyebrow{
    font-size:.68rem;letter-spacing:.42em;text-transform:uppercase;
    color:var(--gold-60);margin-bottom:2.2rem;
  }
  h1{
    font-family:var(--serif);font-weight:400;
    font-size:clamp(2.2rem,4.8vw,4rem);
    line-height:1.16;color:var(--gold-10);
    max-width:15ch;letter-spacing:.01em;
  }
  /* masked line reveal for the headline */
  h1 .line-mask{display:block;overflow:hidden;padding-bottom:.14em;margin-bottom:-.14em;}
  h1 .line-inner{display:block;}
  .js h1 .line-inner{transform:translateY(110%);}
  .loaded h1 .line-inner{animation:rise 1.3s var(--ease-lux) .55s forwards;}
  .loaded h1 .line-mask:nth-child(2) .line-inner{animation-delay:.7s;}
  @keyframes rise{to{transform:translateY(0);}}

  .hero-sub{
    margin-top:2.6rem;max-width:42ch;
    font-size:clamp(1.1rem,1.5vw,1.35rem);
    font-weight:300;letter-spacing:.02em;color:var(--gold-40);
    line-height:1.65;
  }
  .btn{
    display:inline-block;margin-top:3.2rem;
    background:var(--onyx);
    border:1px solid var(--gold-100);color:var(--gold-20);
    text-decoration:none;font-size:.72rem;letter-spacing:.34em;
    text-transform:uppercase;padding:1.05rem 3.4rem;
  }
  .btn:focus-visible{outline:1px solid var(--gold-20);outline-offset:4px;}
  .hero-note{margin-top:1.6rem;font-size:.72rem;letter-spacing:.18em;color:var(--gold-60);font-weight:200;}

  /* scroll cue: the thread begins */
  .scroll-cue{
    position:absolute;bottom:2.4rem;left:0;right:0;z-index:2;
    width:max-content;margin:0 auto;
    display:flex;flex-direction:column;align-items:center;gap:.9rem;
    text-decoration:none;
    transition:opacity .8s var(--ease-lux);
  }
  .scroll-cue .cue-line{
    display:block;width:1px;height:52px;
    background:var(--gold-100);
    transform-origin:top;
    animation:descend 3.4s var(--ease-lux) infinite;
  }
  .scroll-cue .cue-label{
    font-size:.62rem;letter-spacing:.4em;text-transform:uppercase;
    color:var(--gold-60);font-weight:200;
    padding-left:.4em;
    transition:color .4s;
  }
  .scroll-cue:hover .cue-label{color:var(--gold-100);}
  .scroll-cue:focus-visible{outline:1px solid var(--gold-100);outline-offset:8px;}
  .scroll-cue.away{opacity:0;pointer-events:none;}
  @keyframes descend{
    0%{transform:scaleY(0);opacity:0;}
    12%{opacity:1;}
    62%{transform:scaleY(1);opacity:1;}
    100%{transform:scaleY(1);opacity:0;}
  }
  @media (prefers-reduced-motion:reduce){
    .scroll-cue .cue-line{animation:none;transform:scaleY(1);}
  }

  /* staged hero entrance */
  .js .stage{opacity:0;transform:translateY(18px);}
  .loaded .stage{animation:fadeUp 1.2s var(--ease-lux) forwards;}
  .loaded .stage.s1{animation-delay:.65s;}
  .loaded .stage.s2{animation-delay:1.05s;}
  .loaded .stage.s3{animation-delay:1.45s;}
  .loaded .stage.s4{animation-delay:1.7s;}
  .loaded .stage.s5{animation-delay:1.85s;}
  @keyframes fadeUp{to{opacity:1;transform:none;}}

  /* ---------- shared ---------- */
  section{position:relative;scroll-margin-top:5rem;}
  .inner{z-index:2;}
  header{z-index:50;}
  .light{background:var(--gold-10);color:var(--onyx);}
  .lighter{background:var(--gold-20);color:var(--onyx);}
  .inner{max-width:1100px;margin:0 auto;padding:9rem 6vw;position:relative;}
  .section-eyebrow{
    font-size:.66rem;letter-spacing:.42em;text-transform:uppercase;
    color:var(--rich-gold);margin-bottom:2.2rem;
  }
  h2{
    font-family:var(--serif);font-weight:400;
    font-size:clamp(1.7rem,3.2vw,2.6rem);
    line-height:1.25;color:var(--onyx);max-width:20ch;
  }
  .dark h2{color:var(--gold-10);}

  /* ---------- image frames: duotone architecture ---------- */
  .frame{
    position:relative;overflow:hidden;
    border:1px solid rgba(155,122,48,.35);
  }
  .frame img{
    display:block;width:100%;height:100%;object-fit:cover;
    filter:grayscale(1) sepia(.35) saturate(.9) brightness(.92) contrast(1.02);
    transform:scale(1.04);
    transition:transform 2.4s var(--ease-lux);
  }
  .frame:hover img{transform:scale(1);}
  .frame .placeholder{will-change:transform;
    display:flex;flex-direction:column;justify-content:flex-end;
    aspect-ratio:4/5;padding:1.6rem;
    position:relative;
  }
  /* lighting comp: portrait — window light falling from upper left onto onyx */
  .comp-portrait{
    background:
      radial-gradient(120% 90% at 18% 8%, rgba(237,230,216,.34), transparent 52%),
      radial-gradient(90% 70% at 30% 30%, rgba(170,142,77,.22), transparent 60%),
      linear-gradient(155deg, #2b383d 0%, var(--onyx) 45%, #161f22 100%);
  }
  .comp-portrait .tag,.comp-portrait .direction{color:var(--gold-60);}
  .comp-portrait .direction{color:var(--gold-40);}
  /* lighting comp: interior — long warm horizontal glow, late light through a room */
  .comp-interior{
    background:
      linear-gradient(90deg, transparent 0%, rgba(170,142,77,.30) 34%, rgba(220,209,179,.42) 52%, rgba(170,142,77,.24) 68%, transparent 100%),
      radial-gradient(140% 100% at 50% 115%, rgba(23,32,35,.55), transparent 60%),
      linear-gradient(180deg, #23343a 0%, #1b282c 100%);
  }
  .comp-interior .tag{color:var(--gold-60);}
  .comp-interior .direction{color:var(--gold-40);}
  /* lighting comp: detail — low morning slant across a warm surface */
  .comp-detail{
    background:
      linear-gradient(115deg, rgba(246,242,239,.55) 0%, transparent 42%),
      linear-gradient(295deg, rgba(155,122,48,.28) 0%, transparent 50%),
      repeating-linear-gradient(115deg, transparent 0 54px, rgba(31,42,46,.05) 54px 55px),
      linear-gradient(160deg, var(--gold-40), var(--gold-60));
  }
  .frame .placeholder .tag{
    font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;
    color:var(--rich-gold);
  }
  .frame .placeholder .direction{
    font-size:.78rem;color:#5a5f57;font-weight:300;margin-top:.4rem;max-width:30ch;
  }
  .frame-wide .placeholder{aspect-ratio:21/9;}

  /* ---------- premise: text + portrait frame ---------- */
  .premise .inner{display:grid;grid-template-columns:1.25fr .75fr;gap:5.5rem;align-items:center;}
  .premise p{max-width:56ch;margin-top:1.6rem;font-size:1.02rem;font-weight:300;color:#3a4448;}
  .premise .close{
    font-family:var(--serif);font-size:1.15rem;letter-spacing:.16em;
    color:var(--rich-gold);margin-top:3rem;
  }

  /* ---------- trio ---------- */
  .trio{display:grid;grid-template-columns:repeat(3,1fr);gap:4.5rem;margin-top:5rem;}
  .trio-item{transition:transform .8s var(--ease-lux);}
  .trio-item:hover{transform:translateY(-6px);}
  .trio-item .rule{
    width:2.6rem;height:1px;background:var(--gold-100);
    margin-bottom:1.8rem;
    transition:width .7s var(--ease-lux);
  }
  .trio-item:hover .glyph{transform:translateY(-2px);}
  .trio-item .glyph{transition:transform .7s var(--ease-lux);}
  .trio-item h3{
    font-family:var(--serif);font-weight:400;font-size:1.28rem;
    color:var(--onyx);margin-bottom:1.1rem;letter-spacing:.02em;
  }
  .trio-item p{font-size:.94rem;color:#4a5357;font-weight:300;}

  /* ---------- interior band: full-bleed image moment ---------- */
  .interior{background:var(--onyx-deep);}
  .interior .frame-wide{margin:0;border-left:none;border-right:none;}
  .interior .caption{
    text-align:center;padding:2.6rem 6vw;
    font-size:.68rem;letter-spacing:.34em;text-transform:uppercase;
    color:var(--gold-60);font-weight:200;
  }

  /* ---------- membership ---------- */
  .membership .inner{text-align:center;padding:11rem 6vw;}
  .membership h2,.enquire h2{margin-left:auto;margin-right:auto;}
  .membership p.lead{
    margin:2.4rem auto 0;max-width:52ch;
    color:var(--gold-40);font-weight:200;font-size:1.02rem;
  }
  .scope{
    display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 0;
    margin:3.6rem auto 0;max-width:820px;
    font-family:var(--serif);font-size:.98rem;letter-spacing:.06em;color:var(--gold-60);
  }
  .scope span{padding:0 1.4rem;position:relative;}
  .scope span+span::before{
    content:"";position:absolute;left:0;top:50%;
    width:1px;height:.9em;transform:translateY(-50%);
    background:var(--gold-100);opacity:.5;
  }

  /* ---------- open ---------- */
  .open .inner{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center;}
  .open p{font-size:1rem;color:#3a4448;max-width:44ch;}

  /* ---------- enquire ---------- */
  .enquire .inner{text-align:center;padding:12rem 6vw;}
  .enquire p{margin:2.2rem auto 0;max-width:40ch;color:var(--gold-40);font-weight:200;}

  /* ---------- footer ---------- */
  footer{
    border-top:1px solid rgba(170,142,77,.25);
    padding:3.4rem 4vw;
    display:flex;justify-content:space-between;align-items:center;
    flex-wrap:wrap;gap:1.6rem;
  }
  footer .logo-mark{height:16px;}
  footer .fine{font-size:.68rem;letter-spacing:.2em;color:var(--gold-60);text-transform:uppercase;font-weight:200;}


  /* ---------- keyline illustration language ---------- */
  .glyph{display:block;width:96px;height:96px;margin-bottom:2rem;overflow:visible;}
  .glyph *{
    fill:none;
    stroke:var(--rich-gold);
    stroke-width:1.5;
    vector-effect:non-scaling-stroke;
    stroke-linecap:square;
  }
  .dark .glyph *{stroke:var(--gold-100);}
  .glyph-center{margin-left:auto;margin-right:auto;}
  .glyph-sm{width:72px;height:72px;}
  /* draw-on: every path carries pathLength=1 */
  .js .glyph .draw{
    stroke-dasharray:1;
    stroke-dashoffset:1;
    transition:stroke-dashoffset 1.6s var(--ease-lux);
  }
  .glyph .draw.d2{transition-delay:.25s;}
  .glyph .draw.d3{transition-delay:.5s;}
  .visible .glyph .draw, .glyph.visible .draw{stroke-dashoffset:0;}
  @media (prefers-reduced-motion:reduce){
    .glyph .draw{stroke-dasharray:none;stroke-dashoffset:0;transition:none;}
  }

  /* ---------- scroll reveals ---------- */
  .js .reveal{opacity:0;transform:translateY(30px);transition:opacity 1.2s var(--ease-lux),transform 1.2s var(--ease-lux);}
  .reveal.visible{opacity:1;transform:none;}
  .reveal.d1{transition-delay:.12s;}
  .reveal.d2{transition-delay:.24s;}

  @media (prefers-reduced-motion:reduce){
    .reveal,.stage,h1 .line-inner{opacity:1;transform:none;transition:none;animation:none;}
    #thread .line{transform:scaleY(1);}
    html{scroll-behavior:auto;}
  }

  @media (max-width:880px){
    nav{gap:1.4rem;}
    nav a:not(.nav-enquire){display:none;}
    .trio{grid-template-columns:1fr;gap:3.2rem;}
    .premise .inner,.open .inner{grid-template-columns:1fr;gap:3rem;}
    .inner{padding:6.5rem 8vw;}
  }

/* ---------- subpage hero ---------- */
.page-hero{
  min-height:46vh;min-height:46svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:9rem 8vw 5rem;position:relative;
}
.page-hero h1{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(2.2rem,4.2vw,3.5rem);
  line-height:1.16;color:var(--gold-10);max-width:16ch;letter-spacing:.01em;
}
.page-hero .lead{
  margin-top:1.8rem;max-width:46ch;
  font-size:clamp(1rem,1.3vw,1.2rem);font-weight:300;
  color:var(--gold-40);line-height:1.65;
}
.page-hero .eyebrow{margin-bottom:1.8rem;}

/* ---------- mobile menu ---------- */
.menu-btn{
  display:none;background:none;border:0;cursor:pointer;
  width:34px;height:22px;position:relative;z-index:70;padding:0;
}
.menu-btn span{
  position:absolute;left:0;width:100%;height:1px;background:var(--gold-20);
  transition:transform .5s var(--ease-lux),opacity .4s,top .5s var(--ease-lux);
}
.menu-btn span:nth-child(1){top:2px;}
.menu-btn span:nth-child(2){top:11px;}
.menu-btn span:nth-child(3){top:20px;}
.menu-btn[aria-expanded="true"] span:nth-child(1){top:11px;transform:rotate(45deg);}
.menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0;}
.menu-btn[aria-expanded="true"] span:nth-child(3){top:11px;transform:rotate(-45deg);}
.menu-overlay{
  position:fixed;inset:0;z-index:60;background:var(--onyx-deep);
  display:flex;flex-direction:column;justify-content:center;align-items:flex-start;
  padding:0 10vw;gap:2.2rem;
  opacity:0;visibility:hidden;
  transition:opacity .6s var(--ease-lux),visibility 0s .6s;
}
.menu-overlay.open{opacity:1;visibility:visible;transition:opacity .6s var(--ease-lux);}
.menu-overlay a{
  font-family:var(--serif);font-size:clamp(1.9rem,7vw,2.8rem);
  color:var(--gold-20);text-decoration:none;letter-spacing:.02em;
}
.menu-overlay a:hover,.menu-overlay a.current{color:var(--gold-100);}
.menu-overlay .menu-fine{
  margin-top:2.5rem;font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--gold-60);font-weight:200;
}
@media (max-width:880px){
  .menu-btn{display:block;}
  nav a:not(.nav-enquire){display:none;}
}
nav a.current{color:var(--gold-100);}
nav a.current::after{transform:scaleX(1);}

/* ---------- long-form content blocks ---------- */
.block{max-width:66ch;}
.block p{margin-top:1.5rem;font-size:1.02rem;color:#3a4448;font-weight:300;}
.dark .block p{color:var(--gold-40);}
.block h3{
  font-family:var(--serif);font-weight:400;font-size:1.35rem;
  color:var(--onyx);margin-top:3.5rem;letter-spacing:.02em;
}
.dark .block h3{color:var(--gold-10);}

/* ---------- pillars (membership) ---------- */
.pillars{display:grid;grid-template-columns:1fr 1fr;gap:4rem 5rem;margin-top:5rem;}
.pillar h3{
  font-family:var(--serif);font-weight:400;font-size:1.3rem;
  color:var(--onyx);margin:1.4rem 0 .9rem;
}
.pillar p{font-size:.96rem;color:#4a5357;font-weight:300;}
@media (max-width:880px){.pillars{grid-template-columns:1fr;gap:3rem;}}

/* ---------- doctors page ---------- */
.doc-page-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem 4rem;margin-top:5rem;}
.doc-profile .frame{aspect-ratio:4/5;max-width:420px;}
.doc-profile .frame .placeholder{aspect-ratio:auto;height:100%;}
.doc-bio{font-size:.98rem;color:#4a5357;font-weight:300;margin-top:1.2rem;max-width:46ch;}
@media (max-width:880px){.doc-page-grid{grid-template-columns:1fr;}}

/* ---------- faq ---------- */
.faq-list{margin-top:4rem;max-width:760px;}
.faq-item{border-top:1px solid rgba(155,122,48,.3);}
.faq-item:last-child{border-bottom:1px solid rgba(155,122,48,.3);}
.faq-item summary{
  list-style:none;cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;gap:2rem;
  padding:1.9rem 0;
  font-family:var(--serif);font-size:1.18rem;color:var(--onyx);
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary .mark{
  flex:0 0 auto;width:15px;height:15px;position:relative;
}
.faq-item summary .mark::before,.faq-item summary .mark::after{
  content:"";position:absolute;background:var(--rich-gold);
  transition:transform .5s var(--ease-lux);
}
.faq-item summary .mark::before{left:0;top:7px;width:15px;height:1px;}
.faq-item summary .mark::after{left:7px;top:0;width:1px;height:15px;}
.faq-item[open] summary .mark::after{transform:rotate(90deg);}
.faq-item .faq-body{padding:0 0 2rem;max-width:60ch;}
.faq-item .faq-body p{font-size:.98rem;color:#4a5357;font-weight:300;margin-top:1rem;}

/* ---------- form ---------- */
.form-wrap{max-width:640px;}
.field{margin-top:2.6rem;}
.field label{
  display:block;font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;
  color:var(--gold-60);margin-bottom:.9rem;font-weight:300;
}
.field input[type="text"],.field input[type="email"],.field input[type="tel"],.field textarea{
  width:100%;background:transparent;border:0;
  border-bottom:1px solid rgba(170,142,77,.4);
  padding:.6rem 0;color:var(--gold-10);
  font-family:var(--sans);font-weight:300;font-size:1.05rem;
  border-radius:0;
}
.field input:focus,.field textarea:focus{
  outline:none;border-bottom-color:var(--gold-100);
}
.field textarea{min-height:120px;resize:vertical;}
.choices{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.4rem;}
.choice{position:relative;}
.choice input{position:absolute;opacity:0;pointer-events:none;}
.choice span{
  display:inline-block;padding:.7rem 1.5rem;
  border:1px solid rgba(170,142,77,.45);
  font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold-40);cursor:pointer;
  transition:all .4s var(--ease-lux);
}
.choice input:checked + span{background:var(--gold-100);color:var(--onyx);border-color:var(--gold-100);}
.choice input:focus-visible + span{outline:1px solid var(--gold-100);outline-offset:4px;}
.form-actions{margin-top:3.4rem;}
.form-actions button.btn{cursor:pointer;font-family:var(--sans);}
.form-fine{margin-top:1.6rem;font-size:.72rem;letter-spacing:.14em;color:var(--gold-60);font-weight:200;}
.hidden-field{position:absolute;left:-9999px;}

/* ---------- the vital line ---------- */
.vital{
  position:absolute;left:0;right:0;bottom:18%;
  width:100%;height:auto;z-index:0;pointer-events:none;
}
.vital path{
  fill:none;stroke:rgba(170,142,77,.5);stroke-width:1.5;
  vector-effect:non-scaling-stroke;stroke-linejoin:miter;
}
.js .vital path{stroke-dasharray:1;stroke-dashoffset:1;}
.loaded .vital path{animation:vitaldraw 2.6s var(--ease-lux) .5s forwards;}
@keyframes vitaldraw{to{stroke-dashoffset:0;}}
@media (prefers-reduced-motion:reduce){
  .js .vital path{stroke-dasharray:none;stroke-dashoffset:0;animation:none;}
}
.page-hero{overflow:hidden;}
.page-hero>*{position:relative;z-index:2;}
.page-hero .vital{z-index:0;}

/* ---------- watermark glyphs ---------- */
.has-wm{overflow:hidden;}
.wm{
  position:absolute;z-index:0;pointer-events:none;
  width:min(54vw,680px);height:auto;
  right:-6%;top:50%;transform:translateY(-50%);
}
.wm *{
  fill:none;stroke:var(--rich-gold);stroke-width:1;
  vector-effect:non-scaling-stroke;
}
.wm{opacity:.055;}
.dark .wm{opacity:.07;}
.wm-left{right:auto;left:-8%;}
.has-wm .inner{position:relative;z-index:2;}

/* ---------- the pulse: life in the hero line ---------- */
#lineform .master::after{
  content:"";position:absolute;top:0;left:-20%;
  width:16%;height:1px;opacity:0;
  background:linear-gradient(90deg, transparent, var(--gold-20), transparent);
}
#lineform.aligned .master::after{
  animation:pulse 7s linear 3.4s infinite;
}
@keyframes pulse{
  0%{left:-20%;opacity:0;}
  6%{opacity:.9;}
  50%{opacity:.9;}
  60%{left:104%;opacity:0;}
  100%{left:104%;opacity:0;}
}
@media (prefers-reduced-motion:reduce){
  #lineform .master::after{animation:none;opacity:0;}
}



/* ---------- hero parent glyph: pillar-icon grammar, enlarged ---------- */
.hero-glyph{
  position:absolute;right:9%;top:50%;
  transform:translateY(-50%);
  width:min(280px,26vw);height:min(280px,26vw);
  z-index:0;pointer-events:none;overflow:visible;
}
.hero-glyph *{
  fill:none;stroke:rgba(170,142,77,.7);stroke-width:1.4;
  vector-effect:non-scaling-stroke;stroke-linecap:square;
}
.js .hero-glyph .draw{stroke-dasharray:1;stroke-dashoffset:1;}
.loaded .hero-glyph .g1{animation:markdraw 1.4s var(--ease-lux) .5s forwards;}
.loaded .hero-glyph .g2{animation:markdraw 1.4s var(--ease-lux) 1.1s forwards;}
.loaded .hero-glyph .g3{animation:markdraw 1.2s var(--ease-lux) 1.6s forwards;}
.loaded .hero-glyph .g4{animation:markdraw .9s var(--ease-lux) 2.1s forwards;}
@keyframes markdraw{to{stroke-dashoffset:0;}}
@media (prefers-reduced-motion:reduce){
  .js .hero-glyph .draw{stroke-dasharray:none;stroke-dashoffset:0;animation:none;}
}
@media (max-width:980px){ .hero-glyph{display:none;} }

/* ---------- ceremony pages: thanks, 404 ---------- */
.ceremony{min-height:86svh;display:flex;align-items:center;justify-content:center;text-align:center;padding:11rem 6vw 8rem;}
.ceremony .inner-c{max-width:620px;margin:0 auto;}
.seal{width:104px;height:104px;margin:0 auto 3rem;display:block;overflow:visible;}
.seal *{fill:none;stroke:rgba(170,142,77,.8);stroke-width:1.3;vector-effect:non-scaling-stroke;stroke-linecap:square;}
.js .seal .draw{stroke-dasharray:1;stroke-dashoffset:1;}
.loaded .seal .s1{animation:markdraw 1.4s var(--ease-lux) .3s forwards;}
.loaded .seal .s2{animation:markdraw 1.3s var(--ease-lux) .9s forwards;}
@media (prefers-reduced-motion:reduce){.js .seal .draw{stroke-dasharray:none;stroke-dashoffset:0;animation:none;}}
.ceremony h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.2rem,4vw,3.4rem);line-height:1.15;margin:0 0 1.8rem;}
.ceremony .lead{margin-left:auto;margin-right:auto;}
.return-link{display:inline-block;margin-top:3.4rem;letter-spacing:.18em;text-transform:uppercase;font-size:.72rem;color:var(--gold-100);text-decoration:none;border-bottom:1px solid rgba(170,142,77,.45);padding-bottom:.5rem;transition:border-color .4s;}
.return-link:hover{border-color:var(--gold-100);}
