  :root{
    --bg:#0b0b0c;
    --card:#101013;
    --ink:#efeae0;
    --gold:#c9a96a;
    --hair:rgba(239,234,224,.14);
    --ghair:rgba(201,169,106,.35);
    --dim:rgba(239,234,224,.55);
    --faint:rgba(239,234,224,.32);
    --serif:'Cormorant Garamond', Georgia, serif;
    --sans:'Inter', system-ui, sans-serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth;background:var(--bg)}
  body{
    background:var(--bg);color:var(--ink);
    font-family:var(--sans);font-weight:400;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  body.locked{overflow:hidden;height:100vh}
  ::selection{background:var(--gold);color:var(--bg)}
  a{color:var(--ink)}
  button{cursor:pointer;font-family:var(--sans)}
  svg{display:block}

  /* ---------- atmosphere ---------- */
  #trail{position:fixed;inset:0;z-index:0;pointer-events:none}
  .cloud{
    position:fixed;z-index:0;pointer-events:none;border-radius:50%;
    background:radial-gradient(closest-side, rgba(239,234,224,.05), transparent 70%);
    animation:driftx 150s linear infinite alternate;
  }
  .cloud.c1{width:120vw;height:44vh;left:-30vw;top:16vh}
  .cloud.c2{width:100vw;height:36vh;right:-46vw;top:58vh;animation-duration:190s;animation-direction:alternate-reverse}
  @keyframes driftx{to{transform:translateX(22vw)}}
  #grain{position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.035;mix-blend-mode:overlay}
  .vin{
    position:fixed;inset:0;pointer-events:none;z-index:59;
    background:radial-gradient(ellipse at center, transparent 58%, rgba(0,0,0,.5) 100%);
  }
  #sndBtn{
    position:fixed;top:18px;right:20px;z-index:70;display:none;
    background:none;border:none;color:var(--faint);
    font-family:var(--sans);font-size:.52rem;letter-spacing:.36em;text-transform:uppercase;padding:8px;
  }
  #sndBtn:hover{color:var(--dim)}

  /* ---------- shared type ---------- */
  .eyebrow{
    font-size:.6rem;font-weight:500;letter-spacing:.44em;text-transform:uppercase;
    color:var(--gold);
  }
  .caps{
    font-size:.64rem;font-weight:400;letter-spacing:.36em;text-transform:uppercase;
    color:var(--dim);line-height:2.4;
  }
  .data{
    font-size:.56rem;font-weight:400;letter-spacing:.4em;text-transform:uppercase;
    color:var(--faint);
  }
  .serif{font-family:var(--serif)}
  .tlink{
    display:inline-block;font-size:.6rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;
    color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold);
    padding-bottom:6px;transition:color .25s ease;
  }
  .tlink:hover{color:var(--gold)}
  .registry-btn{
    display:inline-block;background:var(--gold);color:#0c0b09;
    font-family:var(--sans);font-size:.6rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;
    text-decoration:none;border:0;padding:16px 30px;
    transition:filter .25s ease, transform .25s ease;
  }
  .registry-btn:hover{color:#0c0b09;filter:brightness(1.08);transform:translateY(-1px)}
  .registry-btn:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
  .pass-links .registry-btn{padding:14px 22px;font-size:.56rem}
  .rule{width:64px;height:1px;background:var(--gold);opacity:.7;margin:0 auto}
  .hairline{height:1px;background:var(--hair)}

  /* ---------- wing monogram ---------- */
  .wingmono{width:150px;margin:0 auto}
  .wingmono path{stroke:var(--gold);stroke-width:1.2;fill:none;stroke-linecap:round}
  .wingmono text{font-family:var(--serif);font-weight:500;fill:var(--gold)}

  /* ---------- film gate ---------- */
  #gate{
    position:fixed;inset:0;z-index:100;
    background:
      radial-gradient(ellipse at 50% 38%, rgba(201,169,106,.07), transparent 52%),
      linear-gradient(180deg, #0a0a0b 0%, #060607 46%, #08080a 100%);
    display:flex;justify-content:center;align-items:center;text-align:center;
    padding:24px;transition:opacity 1.2s ease;overflow:hidden;
  }
  #gate.off{opacity:0;pointer-events:none}
  .gate-atmo{position:absolute;inset:0;pointer-events:none;overflow:hidden}
  .gate-trail{position:absolute;inset:0;width:100%;height:100%;opacity:.85}
  .gate-cloud{
    position:absolute;border-radius:50%;pointer-events:none;
    background:radial-gradient(closest-side, rgba(239,234,224,.06), transparent 72%);
    animation:gateDrift 140s linear infinite alternate;
  }
  .gate-cloud.gc1{width:130vw;height:48vh;left:-34vw;top:12vh;opacity:.9}
  .gate-cloud.gc2{
    width:110vw;height:40vh;right:-48vw;top:54vh;opacity:.75;
    animation-duration:175s;animation-direction:alternate-reverse;
  }
  @keyframes gateDrift{to{transform:translateX(18vw)}}
  .gate-glow{
    position:absolute;left:50%;top:44%;width:min(520px,88vw);height:min(520px,88vw);
    transform:translate(-50%,-50%);
    background:radial-gradient(circle, rgba(201,169,106,.1), transparent 68%);
  }
  .gate-horizon{
    position:absolute;left:0;right:0;bottom:18%;height:1px;
    background:linear-gradient(90deg, transparent, rgba(201,169,106,.22), transparent);
    box-shadow:0 0 40px rgba(201,169,106,.08);
  }
  .gate-horizon::after{
    content:"";position:absolute;left:0;right:0;top:8px;height:80px;
    background:linear-gradient(180deg, rgba(239,234,224,.03), transparent);
  }
  #gateGrain{
    position:absolute;inset:0;opacity:.04;mix-blend-mode:overlay;
  }
  .gate-vin{
    position:absolute;inset:0;
    background:radial-gradient(ellipse at center, transparent 52%, rgba(0,0,0,.58) 100%);
  }
  .gate-header{
    position:absolute;top:clamp(28px,5vh,56px);left:0;right:0;z-index:3;
    text-align:center;padding:0 26px;
  }
  .gate-brand{
    font-family:var(--serif);font-weight:600;
    font-size:clamp(1.45rem,4.8vw,2.35rem);line-height:1.12;letter-spacing:.04em;
    color:var(--ink);
  }
  .gate-header::after{
    content:"";display:block;width:64px;height:1px;background:var(--gold);
    opacity:.75;margin:18px auto 0;
  }
  .g-inner{width:min(820px,94vw);position:relative;z-index:2}
  .g-inner .wingmono{width:130px;margin-bottom:28px}
  .g-line{margin:18px 0 40px;font-family:var(--serif);font-weight:300;font-style:italic;
    font-size:clamp(1.15rem,2.6vw,1.5rem);color:var(--dim);letter-spacing:.02em}
  .g-film-title{margin-bottom:24px}
  .g-film-stack{width:min(72vw,320px);margin:0 auto}
  .g-frame{
    position:relative;width:100%;max-height:min(68vh,580px);aspect-ratio:9/16;
    background:#000;border:1px solid var(--hair);
  }
  .g-frame iframe,.g-frame video{
    position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:contain;
  }
  #gPlay{
    position:absolute;inset:0;z-index:5;width:100%;background:rgba(5,5,6,.4);
    border:none;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;
  }
  #gPlay .ring{
    width:78px;height:78px;border:1px solid var(--ink);border-radius:50%;
    display:flex;justify-content:center;align-items:center;
    transition:border-color .3s ease, transform .3s ease;
  }
  #gPlay:hover .ring{border-color:var(--gold);transform:scale(1.04)}
  #gPlay .tri{
    width:0;height:0;border-left:16px solid var(--ink);
    border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:5px;
    transition:border-left-color .3s ease;
  }
  #gPlay:hover .tri{border-left-color:var(--gold)}
  #gPlay .plbl{font-size:.58rem;letter-spacing:.4em;text-transform:uppercase;color:var(--dim)}
  #gHold{
    position:absolute;inset:0;display:none;flex-direction:column;justify-content:center;align-items:center;gap:14px;
    color:var(--faint);font-size:.58rem;letter-spacing:.36em;text-transform:uppercase;
  }
  .g-progress{margin-top:18px;height:1px;background:var(--hair);position:relative;width:100%}
  #gFill{position:absolute;left:0;top:0;bottom:0;width:0%;background:var(--gold)}
  #gStat{margin-top:14px;font-size:.56rem;letter-spacing:.4em;text-transform:uppercase;color:var(--faint)}
  #gSkip{
    position:absolute;bottom:26px;right:28px;z-index:3;background:none;border:none;
    color:rgba(239,234,224,.28);font-size:.54rem;letter-spacing:.32em;text-transform:uppercase;
  }
  #gSkip:hover{color:var(--dim)}

  /* press-and-hold check-in */
  #phaseCheck,#phaseFilm{position:relative}
  .pfade{opacity:0;transform:translateY(10px);transition:opacity .9s ease, transform .9s ease}
  .pfade.show{opacity:1;transform:none}
  #holdBtn{
    position:relative;width:192px;height:192px;margin:6px auto 10px;display:block;
    background:none;border:none;user-select:none;-webkit-user-select:none;
    touch-action:manipulation;-webkit-tap-highlight-color:transparent;cursor:pointer;
  }
  .hold-pulse{
    position:absolute;inset:-6px;border-radius:50%;pointer-events:none;z-index:0;
    border:1px solid rgba(201,169,106,.28);
    animation:holdPulse 2.6s ease-out infinite;
  }
  .hold-pulse-delay{inset:-16px;animation-delay:1.3s;opacity:.75}
  @keyframes holdPulse{
    0%{transform:scale(.94);opacity:.55}
    75%{transform:scale(1.12);opacity:0}
    100%{transform:scale(1.12);opacity:0}
  }
  #holdBtn.is-holding .hold-pulse{animation:holdPulse 1.8s ease-out infinite;opacity:1}
  #holdBtn.is-holding .hold-pulse-delay{animation:holdPulse 1.8s ease-out infinite 0.9s}
  #holdBtn.is-holding .hm{transform:translate(-50%,-50%) scale(1.03);transition:transform .2s ease}
  #holdBtn .hm{transition:transform .2s ease}
  .holdring{position:absolute;inset:0;transform:rotate(-90deg);z-index:1}
  .holdring .tr{
    fill:#000;stroke:rgba(239,234,224,.16);stroke-width:1;
    transition:stroke .25s ease, stroke-width .25s ease;
  }
  .holdring .pr{
    fill:none;stroke:var(--gold);stroke-width:1.4;stroke-linecap:round;
    stroke-dasharray:515.2;stroke-dashoffset:515.2;
    transition:stroke-width .25s ease, filter .25s ease;
  }
  #holdBtn.is-holding .holdring .tr{fill:#000;stroke:rgba(201,169,106,.35)}
  #holdBtn.is-holding .holdring .pr{
    stroke-width:2.2;filter:drop-shadow(0 0 8px rgba(201,169,106,.45));
  }
  #holdBtn:hover .tr{stroke:rgba(239,234,224,.28)}
  #holdBtn:focus-visible{outline:1px solid var(--ink);outline-offset:6px;border-radius:50%}
  #holdBtn .hm{position:absolute;left:50%;top:50%;width:106px;transform:translate(-50%,-50%);margin:0;z-index:2}
  .hold-feedback{width:192px;margin:0 auto 18px}
  .hold-pct{
    min-height:1.4em;margin-bottom:10px;
    font-size:.78rem;font-weight:500;letter-spacing:.42em;text-transform:uppercase;
    color:var(--gold);font-variant-numeric:tabular-nums;
    opacity:0;transform:translateY(4px);transition:opacity .2s ease, transform .2s ease;
  }
  .hold-pct.on{opacity:1;transform:none}
  .hold-track{height:2px;background:var(--hair);position:relative;overflow:hidden}
  .hold-track-fill{
    position:absolute;left:0;top:0;bottom:0;width:0%;background:var(--gold);
    box-shadow:0 0 12px rgba(201,169,106,.45);transition:width .08s linear;
  }
  .hold-cue{transition:opacity .25s ease, color .25s ease}
  #phaseCheck.is-holding .hold-cue{opacity:.45}
  #holdStat.ok{color:var(--gold)}

  /* ---------- page ---------- */
  #page{position:relative;z-index:1;opacity:0;transition:opacity 1.6s ease}
  #page.in{opacity:1}
  .col{max-width:720px;margin:0 auto;padding:0 26px;text-align:center}

  /* hero */
  .hero{
    min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;
    text-align:center;padding:80px 26px 70px;position:relative;
  }
  .hero .eyebrow{margin-bottom:42px}
  h1{
    font-family:var(--serif);font-weight:300;
    font-size:clamp(2.7rem,9.6vw,6.6rem);
    line-height:1.04;letter-spacing:.015em;
  }
  h1 .l3{font-weight:500}
  .hero .rule{margin:40px auto}
  .hero .caps b{color:var(--ink);font-weight:400}
  .hero .data{margin-top:20px}
  .blueprint{width:min(660px,90vw);margin:56px auto 0;opacity:.9}
  .blueprint .ln{stroke:var(--gold);stroke-width:1;fill:none;opacity:.85}
  .blueprint .ln2{stroke:var(--gold);stroke-width:.8;fill:none;opacity:.45}
  .blueprint .dot{fill:var(--gold);opacity:.7}
  .blueprint text{font-family:var(--sans);font-size:8.5px;letter-spacing:.32em;fill:rgba(201,169,106,.75)}
  .cue{
    position:absolute;bottom:32px;left:50%;transform:translateX(-50%);
    display:flex;flex-direction:column;align-items:center;gap:14px;
  }
  .cue i{display:block;width:1px;height:44px;background:var(--hair);position:relative;overflow:hidden}
  .cue i::after{content:"";position:absolute;left:0;top:-40%;width:100%;height:40%;background:var(--gold);animation:drip 2.8s ease-in-out infinite}
  @keyframes drip{60%,100%{top:110%}}
  .cue span{font-size:.52rem;letter-spacing:.44em;text-transform:uppercase;color:var(--faint)}

  section{padding:clamp(110px,15vh,180px) 0;position:relative;z-index:1}
  section .eyebrow{margin-bottom:32px}
  .big{
    font-family:var(--serif);font-weight:300;
    font-size:clamp(1.9rem,5.4vw,3.4rem);line-height:1.15;letter-spacing:.01em;
  }
  .big em{font-style:italic;font-weight:400}
  .sub{margin-top:24px}
  .fade{opacity:0;transform:translateY(16px);transition:opacity 1.1s ease, transform 1.1s ease}
  .fade.on{opacity:1;transform:none}
  .countdown{
    margin:56px auto 0;max-width:860px;padding:clamp(32px,6vw,52px) clamp(22px,4vw,40px);
    border:1px solid var(--ghair);background:linear-gradient(180deg, rgba(201,169,106,.1), rgba(16,16,19,.92));
    box-shadow:0 24px 80px -24px rgba(0,0,0,.85), inset 0 1px 0 rgba(201,169,106,.18);
    position:relative;overflow:hidden;
  }
  .countdown::before{
    content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
    width:min(180px,40%);height:2px;background:var(--gold);opacity:.85;
  }
  .countdown::after{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at center, rgba(201,169,106,.08), transparent 68%);
  }
  .countdown-label{
    position:relative;z-index:1;
    font-size:clamp(.68rem,1.6vw,.82rem);font-weight:500;letter-spacing:.48em;text-transform:uppercase;
    color:var(--gold);margin-bottom:clamp(22px,4vw,34px);
  }
  .countdown-grid{
    position:relative;z-index:1;
    display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,2.5vw,24px);text-align:center;
  }
  .cd-unit b{
    display:block;font-family:var(--serif);font-weight:300;
    font-size:clamp(2.8rem,10vw,5.2rem);line-height:1;color:var(--ink);
    letter-spacing:.02em;font-variant-numeric:tabular-nums;
    text-shadow:0 0 40px rgba(201,169,106,.18);
  }
  .cd-unit span{
    display:block;margin-top:10px;
    font-size:clamp(.52rem,1.2vw,.64rem);letter-spacing:.38em;text-transform:uppercase;color:var(--dim);
  }
  .countdown.boarding .countdown-grid{display:none}
  .countdown-boarding{
    position:relative;z-index:1;
    font-family:var(--serif);font-weight:400;font-style:italic;
    font-size:clamp(2.2rem,7vw,3.8rem);letter-spacing:.04em;color:var(--ink);
  }
  @media (max-width:680px){
    .countdown{
      padding:22px 14px;
      display:flex;flex-direction:row;align-items:center;justify-content:center;
      gap:10px;flex-wrap:nowrap;
    }
    .countdown-label{
      margin-bottom:0;font-size:.5rem;letter-spacing:.24em;flex-shrink:0;white-space:nowrap;
    }
    .countdown-grid{
      display:flex;flex-direction:row;align-items:baseline;justify-content:flex-end;
      gap:0;min-width:0;flex:1 1 auto;
    }
    .cd-unit{display:flex;align-items:baseline}
    .cd-unit span{display:none}
    .cd-unit b{
      display:inline;font-size:clamp(1.2rem,5.2vw,1.65rem);letter-spacing:.01em;
    }
    .cd-unit:not(:last-child)::after{
      content:":";
      margin:0 .12em;
      font-family:var(--serif);font-weight:300;
      font-size:clamp(1rem,4.2vw,1.35rem);color:var(--gold);opacity:.75;
    }
    .countdown-boarding{font-size:clamp(1.4rem,5.5vw,2rem)}
  }

  /* ---------- boarding pass ---------- */
  .pass{
    margin:56px auto 0;max-width:800px;display:flex;text-align:left;
    background:var(--card);border:1px solid var(--hair);
    box-shadow:0 30px 80px -30px rgba(0,0,0,.8);
    position:relative;
  }
  .pass-main{flex:1;padding:clamp(26px,4vw,44px)}
  .pass-head{
    display:flex;justify-content:space-between;align-items:center;gap:16px;
    padding-bottom:22px;border-bottom:1px solid var(--ghair);
  }
  .pass-brand{display:flex;align-items:center;gap:12px}
  .pass-brand svg{width:56px}
  .pass-brand svg path{stroke:var(--gold);stroke-width:1.4;fill:none;stroke-linecap:round}
  .pass-brand span{font-size:.6rem;font-weight:500;letter-spacing:.4em;text-transform:uppercase;color:var(--gold)}
  .pass-class{font-size:.54rem;letter-spacing:.4em;text-transform:uppercase;color:var(--dim)}
  .route{display:flex;align-items:center;gap:18px;padding:30px 0 26px}
  .route .code{font-family:var(--serif);font-weight:400;font-size:clamp(2.2rem,6vw,3.4rem);line-height:1}
  .route .rmid{flex:1;position:relative;height:26px}
  .route .rmid svg{position:absolute;inset:0;width:100%;height:100%}
  .route .rmid .arc{stroke:var(--ghair);stroke-width:1;fill:none;stroke-dasharray:2 6}
  .route .rmid .dart{fill:var(--gold)}
  .route .sub2{display:flex;justify-content:space-between;margin-top:-14px}
  .rlabels{display:flex;justify-content:space-between;margin-top:2px}
  .rlabels span{font-size:.52rem;letter-spacing:.34em;text-transform:uppercase;color:var(--faint)}
  .pgrid{
    display:grid;grid-template-columns:repeat(4,1fr);gap:22px 18px;
    padding:24px 0;border-top:1px solid var(--hair);
  }
  .pcell small{display:block;font-size:.5rem;letter-spacing:.36em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}
  .pcell div{font-size:.82rem;letter-spacing:.1em;color:var(--ink);text-transform:uppercase}
  .pgate{border-top:1px solid var(--hair);padding-top:24px}
  .pgate small{display:block;font-size:.5rem;letter-spacing:.36em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}
  .pgate .addr{font-family:var(--serif);font-size:clamp(1.15rem,2.8vw,1.5rem);letter-spacing:.03em}
  .pgate .caps{font-size:.56rem;margin-top:6px}
  .pass-links{display:flex;gap:30px;margin-top:22px;flex-wrap:wrap}
  .pass-attire{
    margin-top:24px;padding-top:20px;border-top:1px solid var(--hair);
    font-size:.54rem;letter-spacing:.34em;text-transform:uppercase;color:var(--dim);
  }
  .pass-perf{
    width:0;border-left:1px dashed var(--hair);position:relative;
  }
  .pass-perf::before,.pass-perf::after{
    content:"";position:absolute;left:-11px;width:22px;height:22px;border-radius:50%;
    background:var(--bg);border:1px solid var(--hair);
  }
  .pass-perf::before{top:-12px;border-top-color:transparent;border-left-color:transparent;border-right-color:transparent}
  .pass-perf::after{bottom:-12px;border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent}
  .pass-stub{
    width:200px;padding:clamp(26px,3vw,36px) 24px;
    display:flex;flex-direction:column;justify-content:space-between;gap:22px;text-align:left;
  }
  .pass-stub .data{color:var(--dim);line-height:2.6;letter-spacing:.3em}
  .pass-stub .data b{color:var(--ink);font-weight:500}
  .barcode{
    height:52px;
    background:
      repeating-linear-gradient(90deg, rgba(239,234,224,.65) 0 1px, transparent 1px 4px),
      repeating-linear-gradient(90deg, rgba(239,234,224,.5) 0 2px, transparent 2px 7px);
    opacity:.55;
  }
  @media (max-width:680px){
    .pass{flex-direction:column}
    .pass-perf{width:auto;height:0;border-left:none;border-top:1px dashed var(--hair)}
    .pass-perf::before,.pass-perf::after{left:auto;top:-11px}
    .pass-perf::before{left:-12px}
    .pass-perf::after{right:-12px;bottom:auto}
    .pass-stub{width:100%;flex-direction:row;align-items:center}
    .barcode{flex:1;height:44px}
    .pgrid{grid-template-columns:repeat(2,1fr)}
  }

  /* film frame */
  .frame{
    margin:46px auto 0;width:min(72vw,340px);max-width:340px;position:relative;aspect-ratio:9/16;
    background:#08080a;border:1px solid var(--hair);
  }
  .frame iframe,.frame video{
    position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:contain;
  }
  .frame .pending{
    position:absolute;inset:0;display:flex;justify-content:center;align-items:center;
    font-size:.58rem;letter-spacing:.42em;text-transform:uppercase;color:var(--faint);
  }

  /* accommodations */
  .list{margin-top:50px;border-top:1px solid var(--hair)}
  .entry{padding:44px 10px;border-bottom:1px solid var(--hair)}
  .entry .tag{font-size:.54rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
  .entry h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.4rem,3.4vw,1.9rem);letter-spacing:.02em;margin-bottom:12px}
  .entry p{font-size:.78rem;color:var(--dim);letter-spacing:.06em;line-height:2;margin-bottom:20px}
  .entry .tlink{font-size:.56rem}

  /* rsvp */
  .rsvp-glass{
    margin:40px auto 0;max-width:560px;padding:clamp(36px,6vw,52px) clamp(28px,5vw,44px);
    text-align:center;
    background:linear-gradient(145deg, rgba(8,8,10,.72), rgba(0,0,0,.55));
    backdrop-filter:blur(24px) saturate(140%);
    -webkit-backdrop-filter:blur(24px) saturate(140%);
    border:1px solid rgba(239,234,224,.1);
    box-shadow:
      0 32px 80px -28px rgba(0,0,0,.9),
      inset 0 1px 0 rgba(239,234,224,.12),
      inset 0 -1px 0 rgba(0,0,0,.45);
    position:relative;overflow:hidden;
  }
  .rsvp-glass::before{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at 50% -20%, rgba(201,169,106,.12), transparent 55%);
  }
  .rsvp-glass::after{
    content:"";position:absolute;top:0;left:0;right:0;height:1px;
    background:linear-gradient(90deg, transparent, rgba(201,169,106,.35), transparent);
  }
  .rsvp-title{margin-bottom:8px;position:relative;z-index:1}
  #rsvpForm{margin:36px auto 0;max-width:440px;text-align:left;position:relative;z-index:1}
  .fl{display:block;font-size:.54rem;font-weight:500;letter-spacing:.38em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
  .line-in{
    width:100%;background:rgba(0,0,0,.18);border:0;border-bottom:1px solid rgba(239,234,224,.14);
    color:var(--ink);font-family:var(--sans);font-size:.95rem;letter-spacing:.03em;
    padding:10px 10px 12px;border-radius:0;
  }
  .line-in:focus{outline:none;border-bottom-color:var(--gold);background:rgba(0,0,0,.28)}
  .fgroup{margin-bottom:36px}
  .pills{display:flex;gap:14px}
  .pill{flex:1;cursor:pointer;position:relative}
  .pill input{position:absolute;opacity:0;pointer-events:none}
  .pill span{
    display:block;text-align:center;padding:14px 8px;
    border:1px solid rgba(239,234,224,.12);
    background:rgba(0,0,0,.22);
    font-size:.58rem;letter-spacing:.32em;text-transform:uppercase;color:var(--dim);
    transition:all .25s ease;
  }
  .pill input:checked + span{
    border-color:rgba(201,169,106,.55);color:var(--gold);
    background:rgba(201,169,106,.08);
    box-shadow:inset 0 0 24px rgba(201,169,106,.06);
  }
  .pill input:focus-visible + span{outline:1px solid var(--ink);outline-offset:3px}
  .chk{display:flex;align-items:center;gap:14px;cursor:pointer}
  .chk input{appearance:none;width:15px;height:15px;border:1px solid var(--hair);background:none;cursor:pointer;position:relative;flex:none}
  .chk input:checked{border-color:var(--gold)}
  .chk input:checked::after{content:"";position:absolute;inset:3px;background:var(--gold)}
  .chk span{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--dim)}
  #guestWrap{display:none;margin-top:22px}
  #guestWrap.on{display:block}
  .submit{
    width:100%;background:var(--gold);color:#0c0b09;border:0;
    padding:19px;font-size:.6rem;font-weight:500;letter-spacing:.4em;text-transform:uppercase;
    transition:filter .25s ease;
  }
  .submit:hover{filter:brightness(1.08)}
  .submit:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
  .fnote{margin-top:22px;text-align:center;font-size:.54rem;letter-spacing:.28em;text-transform:uppercase;color:var(--faint);line-height:2.4}
  .fnote a{color:var(--dim);text-decoration:none;border-bottom:1px solid var(--hair)}
  .fnote a:hover{color:var(--gold);border-color:var(--gold)}
  #rsvpDone{display:none;margin-top:0;position:relative;z-index:1}
  #rsvpDone.on{display:block}
  #rsvpDone .big{font-size:clamp(1.7rem,4.6vw,2.6rem)}
  #rsvpDone .caps{margin-top:18px}
  #redoBtn{
    margin-top:24px;background:none;border:none;color:var(--faint);
    font-size:.52rem;letter-spacing:.3em;text-transform:uppercase;
    border-bottom:1px solid var(--hair);padding-bottom:4px;
  }
  #redoBtn:hover{color:var(--dim)}
  #manifest{display:none;margin-top:30px;font-size:.54rem;letter-spacing:.36em;text-transform:uppercase;color:var(--faint);position:relative;z-index:1}

  footer{padding:120px 26px 90px;text-align:center;position:relative;z-index:1}
  footer .hairline{max-width:680px;margin:0 auto 70px}
  footer .wingmono{width:120px;margin-bottom:26px}
  footer .caps{line-height:2.8}
  footer .coords{margin-top:26px;font-size:.52rem;letter-spacing:.4em;color:rgba(239,234,224,.25);text-transform:uppercase}

  @media (max-width:520px){ .pills{flex-direction:column} }
  @media (prefers-reduced-motion: reduce){
    *,*::before,*::after{animation:none !important;transition:none !important}
    html{scroll-behavior:auto}
    .fade{opacity:1;transform:none}
    .hold-pulse{display:none}
    #gate{display:none}
    #page{opacity:1}
  }
