:root{
  --primary:#4A6683; --accent:#B99A5B; --paper:#F7F1E6; --sage:#8FA58A; --blush:#E9D5CC;
  --ink:#2C3A4D; --script:'Pinyon Script',cursive; --serif:'Cormorant Garamond',Georgia,serif; --sans:'Montserrat',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--serif);overflow-x:hidden;-webkit-font-smoothing:antialiased}
/* ---------- journey ---------- */
#journey{position:relative;height:900vh}
#stage{position:sticky;top:0;height:100vh;height:100lvh;width:100%;overflow:hidden;background:linear-gradient(180deg,#cfe0ee 0%,#e8e3d6 55%,#f2e6cf 100%)}
#layers{position:absolute;inset:0;overflow:hidden}
.ly{position:absolute;left:0;top:0;will-change:transform;user-select:none;-webkit-user-drag:none;pointer-events:none}
.ly img{display:block;width:100%;height:100%;-webkit-user-drag:none}
#glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,rgba(255,236,190,.0),rgba(255,236,190,0) 55%);pointer-events:none;mix-blend-mode:screen}
.pt{position:absolute;left:0;top:0;width:34px;height:34px;opacity:0;will-change:transform,opacity;pointer-events:none}
.pt img{width:100%;height:100%;object-fit:contain}
#grain{position:absolute;inset:0;pointer-events:none;opacity:.16;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .3  0 0 0 0 .25  0 0 0 0 .2  0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
#stage:after{content:'';position:absolute;left:0;right:0;top:0;height:42vh;background:linear-gradient(180deg,rgba(247,241,230,.95),rgba(247,241,230,.74) 50%,rgba(247,241,230,0));pointer-events:none}
#captions{z-index:3;position:absolute;left:0;right:0;top:7vh;display:flex;justify-content:center;pointer-events:none;padding:0 6vw}
.cap{position:absolute;top:0;left:50%;width:max-content;max-width:min(760px,88vw);text-align:center;opacity:0;transform:translate(-50%,14px);will-change:opacity,transform}
.cap .t{font-family:var(--script);font-size:clamp(34px,6.2vw,76px);color:#34506E;line-height:1.05;text-shadow:0 2px 14px rgba(247,241,230,.9)}
.cap .k{font-family:var(--sans);font-size:clamp(10px,1.4vw,13px);letter-spacing:.38em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:10px}
.cap .x{font-size:clamp(17px,2.3vw,26px);color:#17222F;font-weight:600;margin-top:10px;line-height:1.35;font-style:italic;text-shadow:0 1px 8px rgba(255,255,255,.6)}
.cap.names .t{font-size:clamp(46px,9vw,118px)}
#hint{z-index:5;position:absolute;left:0;right:0;bottom:4.5vh;text-align:center;font-family:var(--sans);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:#2C3E55;text-shadow:0 1px 10px rgba(247,241,230,.95);pointer-events:none}
#hint i{display:block;margin:10px auto 0;width:1.5px;height:34px;background:linear-gradient(var(--primary),transparent);animation:drop 1.8s ease-in-out infinite;transform-origin:top}
@keyframes drop{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
#veil{position:absolute;inset:0;background:var(--paper);clip-path:circle(0px at 50% 40%);pointer-events:none}
/* ---------- nav ---------- */
#nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:center;gap:clamp(14px,3.2vw,38px);padding:14px 16px;background:linear-gradient(180deg,rgba(247,241,230,.94),rgba(247,241,230,.0));font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;opacity:0;transform:translateY(-14px);transition:opacity .5s,transform .5s;pointer-events:none}
#nav.on{opacity:1;transform:none;pointer-events:auto}
#nav a{color:var(--primary);text-decoration:none;font-weight:600;padding:6px 2px;border-bottom:1px solid transparent}
#nav a:hover{border-color:var(--accent)}
/* ---------- site ---------- */
#site{position:relative;z-index:4;margin-top:-55vh;background:linear-gradient(180deg,transparent 0,transparent 55vh,var(--paper) 55vh)}
#site:before{content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .6  0 0 0 0 .5  0 0 0 0 .4  0 0 0 .22 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.sec{position:relative;padding:clamp(70px,11vw,140px) 6vw;max-width:1120px;margin:0 auto;text-align:center}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s ease}
.reveal.in{opacity:1;transform:none}
.eyebrow{font-family:var(--sans);font-size:12px;letter-spacing:.42em;text-transform:uppercase;color:var(--accent);font-weight:600}
h2.h{font-family:var(--script);font-weight:400;font-size:clamp(48px,8vw,92px);color:var(--primary);line-height:1.05;margin:10px 0 6px}
.orn{display:block;margin:18px auto;width:170px;height:16px;color:var(--accent)}
.lead{font-size:clamp(19px,2.4vw,26px);line-height:1.5;max-width:760px;margin:0 auto}
.card{position:relative;background:#fffdf8;border:1px solid rgba(185,154,91,.55);box-shadow:0 30px 70px rgba(74,102,131,.18),0 2px 0 rgba(255,255,255,.8) inset;padding:clamp(34px,6vw,76px) clamp(22px,5vw,64px);max-width:760px;margin:0 auto}
.card:before{content:"";position:absolute;inset:10px;border:1px solid rgba(185,154,91,.45);pointer-events:none}
.names{font-family:var(--script);font-size:clamp(54px,10vw,112px);color:var(--primary);line-height:1.05;margin:14px 0}
.when{font-family:var(--sans);letter-spacing:.34em;font-size:clamp(12px,1.7vw,15px);text-transform:uppercase;line-height:2.1;color:var(--ink);font-weight:500}
.greet{font-family:var(--script);font-size:clamp(30px,4.5vw,46px);color:var(--accent);margin-bottom:6px}
.cd{display:flex;justify-content:center;gap:clamp(10px,3vw,34px);margin-top:34px}
.cd div{min-width:64px}
.cd b{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(40px,7.4vw,74px);color:var(--primary);line-height:1}
.cd span{font-family:var(--sans);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent);font-weight:600}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,5vw,64px);align-items:center;text-align:left}
.sched{list-style:none}
.sched li{display:grid;grid-template-columns:110px 18px 1fr;align-items:center;gap:6px;padding:15px 0;border-bottom:1px solid rgba(185,154,91,.3)}
.sched .tm{font-family:var(--sans);font-size:13px;letter-spacing:.14em;color:var(--primary);font-weight:600}
.sched .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);justify-self:center}
.sched .lb{font-size:clamp(20px,2.5vw,27px);font-weight:600}
.meta{margin-top:26px;font-family:var(--sans);font-size:12px;letter-spacing:.22em;text-transform:uppercase;line-height:2;color:var(--ink)}
.meta b{color:var(--primary)}
.sw{display:flex;gap:14px;margin-top:20px;flex-wrap:wrap}
.sw div{text-align:center;font-family:var(--sans);font-size:10px;letter-spacing:.18em;text-transform:uppercase}
.sw i{display:block;width:60px;height:60px;border-radius:50%;border:3px solid #fff;box-shadow:0 6px 16px rgba(0,0,0,.14);margin-bottom:8px}
.photo{aspect-ratio:4/5;background:linear-gradient(135deg,#e9e1d0,#f6efe0);border:10px solid #fff;box-shadow:0 18px 44px rgba(60,70,90,.22);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:rgba(74,102,131,.5);font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase}
.photo.wide{aspect-ratio:4/3}
.btn{display:inline-block;margin-top:26px;font-family:var(--sans);font-weight:600;font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:#fff;background:var(--primary);padding:20px 44px;border-radius:60px;text-decoration:none;box-shadow:0 14px 34px rgba(74,102,131,.35);transition:transform .25s,box-shadow .25s}
.btn:hover{transform:translateY(-3px);box-shadow:0 20px 40px rgba(74,102,131,.4)}
.btn.ghost{background:transparent;color:var(--primary);border:1.5px solid var(--primary);box-shadow:none;margin-left:12px}
.polas{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,4vw,46px);margin-top:44px;align-items:start}
.pola{background:#fffefb;padding:14px 14px 22px;box-shadow:0 20px 44px rgba(60,70,90,.24);transform:rotate(var(--r,0deg));transition:transform .5s}
.pola:hover{transform:rotate(0) translateY(-6px)}
.pola .ph{aspect-ratio:1;background:linear-gradient(135deg,#dfe4ea,#eef0ee);background-size:cover;background-position:center}
.pola p{font-family:var(--script);font-size:clamp(26px,3.4vw,38px);color:var(--primary);margin-top:12px}
.timeline{max-width:760px;margin:60px auto 0;text-align:left;position:relative;padding-left:34px}
.timeline:before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:1.5px;background:linear-gradient(var(--accent),rgba(185,154,91,.15))}
.timeline div{position:relative;margin-bottom:34px}
.timeline div:before{content:"";position:absolute;left:-33px;top:9px;width:11px;height:11px;border-radius:50%;background:var(--paper);border:2px solid var(--accent)}
.timeline h4{font-family:var(--script);font-weight:400;font-size:clamp(30px,4vw,42px);color:var(--primary)}
.timeline p{font-size:clamp(18px,2.2vw,22px);line-height:1.45}
.faq{max-width:780px;margin:44px auto 0;text-align:left}
.faq details{border-bottom:1px solid rgba(185,154,91,.4);padding:20px 4px}
.faq summary{list-style:none;cursor:pointer;font-family:var(--sans);font-size:13px;letter-spacing:.24em;text-transform:uppercase;color:var(--primary);font-weight:600;display:flex;justify-content:space-between;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary:after{content:"+";font-size:24px;color:var(--accent);font-weight:400;transition:transform .3s}
.faq details[open] summary:after{transform:rotate(45deg)}
.faq p{margin-top:14px;font-size:clamp(18px,2.2vw,22px);line-height:1.5}
footer{padding:80px 6vw 110px;text-align:center;position:relative}
footer .names{font-size:clamp(44px,7vw,80px)}
footer small{display:block;margin-top:16px;font-family:var(--sans);letter-spacing:.3em;font-size:11px;text-transform:uppercase;color:var(--accent)}
.replay{margin-top:34px;display:inline-block;font-family:var(--sans);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--primary);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:4px}
@media (max-width:760px){
  .grid2{grid-template-columns:1fr}
  .polas{grid-template-columns:1fr;max-width:340px;margin-left:auto;margin-right:auto}
  .sched li{grid-template-columns:92px 16px 1fr}
  .btn.ghost{margin-left:0;margin-top:14px}
  #nav{font-size:9.5px;letter-spacing:.14em;gap:12px}
}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}#hint i{animation:none}}

.archwrap{margin:46px auto 0;max-width:420px}
.arch{aspect-ratio:4/5;border-radius:999px 999px 14px 14px;background-size:cover;background-position:center;border:10px solid #fff;box-shadow:0 30px 70px rgba(60,70,90,.28),0 0 0 1px rgba(185,154,91,.5)}

.sec.wide{max-width:1320px}
.mapbox{margin:34px auto 0;max-width:980px;aspect-ratio:16/8;border:10px solid #fff;box-shadow:0 24px 60px rgba(60,70,90,.22);background:#e8e1d2}
.mapbox iframe{width:100%;height:100%;border:0;display:block;filter:saturate(.85) sepia(.12)}
.cards3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;margin-top:40px;text-align:left}
.mini{background:#fffdf8;border:1px solid rgba(185,154,91,.45);padding:26px 24px;box-shadow:0 14px 34px rgba(74,102,131,.12)}
.mini h4{font-family:var(--script);font-weight:400;font-size:34px;color:var(--primary);line-height:1.1}
.mini p{margin-top:8px;font-size:19px;line-height:1.45}.mini .code{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.lnk{display:inline-block;margin-top:14px;font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:600;color:var(--primary);text-decoration:none;border-bottom:1px solid var(--accent)}
.gal{columns:3 260px;column-gap:16px;margin-top:44px}
.gal a{display:block;margin-bottom:16px;break-inside:avoid;box-shadow:0 14px 34px rgba(60,70,90,.2);overflow:hidden;background:#fff;padding:7px}
.gal img{display:block;width:100%;height:auto;transition:transform .6s}.gal a:hover img{transform:scale(1.04)}
#lb{position:fixed;inset:0;z-index:100;background:rgba(20,26,36,.92);display:flex;align-items:center;justify-content:center}
#lb[hidden]{display:none}#lb img{max-width:92vw;max-height:88vh;box-shadow:0 20px 70px rgba(0,0,0,.5)}
#lb button{position:absolute;background:none;border:0;color:#fff;font-size:44px;cursor:pointer;padding:14px 20px;opacity:.85}
#lbx{top:6px;right:10px}#lbp{left:6px;top:50%}#lbn{right:6px;top:50%}
.partyg{display:flex;flex-wrap:wrap;justify-content:center;gap:34px 26px;margin-top:44px}.pp{width:190px}
.pp .av{width:130px;height:130px;border-radius:50%;margin:0 auto 14px;background:linear-gradient(135deg,#e5e0d2,#f3efe4);background-size:cover;background-position:center;border:6px solid #fff;box-shadow:0 12px 28px rgba(60,70,90,.2)}
.pp h4{font-family:var(--script);font-weight:400;font-size:32px;color:var(--primary);line-height:1.1}
.pp span{font-family:var(--sans);font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--accent);font-weight:600}.pp p{margin-top:8px;font-size:18px;line-height:1.4}
.fund{margin:26px auto 0;max-width:560px;padding:22px;border:1px dashed var(--accent);background:rgba(255,255,255,.6)}
.fund h4{font-family:var(--script);font-weight:400;font-size:36px;color:var(--primary)}.fund p{font-size:19px;margin-top:6px}
.rform{margin-top:30px;text-align:left;display:grid;gap:18px}
.rform label{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--primary);font-weight:600}
.rform input:not([type=radio]),.rform select,.rform textarea{display:block;width:100%;margin-top:8px;padding:15px 16px;font:500 18px var(--serif);color:var(--ink);background:#fff;border:1px solid rgba(185,154,91,.6);border-radius:3px;outline:none}
.rform input:focus,.rform select:focus,.rform textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(74,102,131,.14)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.yn{display:grid;grid-template-columns:1fr 1fr;gap:12px}.yn label{margin:0}.yn input{position:absolute;opacity:0}
.yn span{display:block;text-align:center;padding:17px 10px;border:1.5px solid var(--primary);border-radius:60px;letter-spacing:.12em;font-size:11.5px;cursor:pointer;transition:.25s}
.yn input:checked+span{background:var(--primary);color:#fff;box-shadow:0 10px 26px rgba(74,102,131,.3)}
.arow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:12px}
.rform .btn{justify-self:center;border:0;cursor:pointer;margin-top:8px}.rform .btn:disabled{opacity:.6}
.fst{text-align:center;min-height:24px;font-family:var(--sans);font-size:12px;letter-spacing:.14em}.fst.ok{color:#3f7a52}.fst.bad{color:#a8433a}
#mus{position:fixed;right:18px;bottom:18px;z-index:60;width:50px;height:50px;border-radius:50%;border:0;background:var(--primary);color:#fff;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.3)}
#mus span:before{content:"♪";font-size:22px}#mus.on{animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(74,102,131,.5)}100%{box-shadow:0 0 0 18px rgba(74,102,131,0)}}
@media (max-width:760px){.row2,.arow{grid-template-columns:1fr}.gal{columns:2 140px;column-gap:10px}.gal a{margin-bottom:10px}}

/* mobile hamburger menu */
#burger{display:none}
@media(max-width:720px){
  #burger{position:fixed;top:12px;right:12px;z-index:60;width:44px;height:44px;border-radius:50%;border:1px solid rgba(0,0,0,.08);background:rgba(247,241,230,.95);box-shadow:0 4px 14px rgba(0,0,0,.12);flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:0;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .4s}
  body.nav-on #burger{display:flex;opacity:1;pointer-events:auto}
  body:not(.nav-on) #burger{display:flex}
  #burger i{display:block;width:18px;height:1.5px;background:var(--primary);transition:transform .3s,opacity .3s}
  body.menu-open #burger i:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
  body.menu-open #burger i:nth-child(2){opacity:0}
  body.menu-open #burger i:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
  #nav{inset:0;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px;background:rgba(247,241,230,.97);font-size:15px;letter-spacing:.2em;opacity:0;pointer-events:none;transform:none;transition:opacity .35s}
  #nav.on{opacity:0;pointer-events:none}
  body.menu-open #nav.on{opacity:1;pointer-events:auto}
  #nav a{padding:14px 10px}
}
.rhelp{max-width:520px;margin:6px auto 0;font-size:15px;opacity:.8;text-align:center}.rguest{margin:14px auto 4px;padding:10px 16px;border:1px dashed var(--accent);border-radius:12px;display:table;font-size:15px;text-align:center}.rguest:empty{display:none}

/* opening gate */
body.gated{overflow:hidden}
#gate{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;text-align:center;background:radial-gradient(ellipse at 50% 40%,#fbf6ec,#efe5d2);transition:opacity .9s,visibility .9s}
#gate.out{opacity:0;visibility:hidden}
#gate .gin{padding:24px;max-width:90vw}
#gate .gk{font-family:var(--sans);font-size:12px;letter-spacing:.34em;text-transform:uppercase;color:var(--accent)}
#gate .gn{font-family:var(--script);font-size:clamp(46px,12vw,92px);color:var(--primary);line-height:1.15;margin:14px 0 6px}
#gate .gd{font-family:var(--sans);font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent);margin-bottom:38px}
#gbtn{font-family:var(--sans);font-size:13px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:#fff;background:var(--primary);border:0;border-radius:40px;padding:17px 30px;cursor:pointer;box-shadow:0 12px 30px rgba(74,102,131,.35);animation:gpulse 2.2s infinite}
#gbtn span{font-size:18px;margin-right:6px;vertical-align:-1px}
@keyframes gpulse{0%{box-shadow:0 0 0 0 rgba(74,102,131,.45)}100%{box-shadow:0 0 0 22px rgba(74,102,131,0)}}
#gate .gs{margin-top:18px;font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;opacity:.6;color:var(--primary)}

@media (max-width:760px){
  #captions{top:12vh}
  .cap{max-width:92vw}
  .cap .k{font-size:12px;margin-bottom:12px}
  .cap .t{font-size:56px;line-height:1.02}
  .cap .x{font-size:22px;margin-top:14px;line-height:1.32}
  .cap.names .t{font-size:70px}
  #stage:after{height:52vh}
}
