*{margin:0;padding:0;box-sizing:border-box}
:root{
  --paper:#faf6ef; --paper2:#f3ecdf; --paper3:#ece2d1; --card:#fffdf8;
  --ink:#33302a; --sepia:#6f6555; --line:#e2d9c8;
  --olive:#7d8b6a; --olive-d:#5a6b4a;
  --terra:#b8674a; --terra-d:#8a4530;
  --gold:#b99b5f; --blush:#e6d2c8;
  --shadow:0 26px 60px -34px rgba(90,70,45,.5);
  --shadow-sm:0 10px 28px -18px rgba(90,70,45,.45);
}
html{scroll-behavior:smooth}
body{font-family:'Jost',system-ui,sans-serif;font-weight:300;background:var(--paper);color:var(--ink);line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.locked{overflow:hidden;height:100vh}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px}
.narrow{max-width:760px}
h1,h2,h3,.disp{font-family:'Cormorant Garamond',Georgia,serif;font-weight:300;letter-spacing:.01em;line-height:1.12}
a{color:inherit;text-decoration:none}
svg{display:block}

/* бумажная фактура поверх всего фона */
body:before{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E")}

/* ───────── конверт-интро ───────── */
.env{position:fixed;inset:0;z-index:200;background:var(--paper2);display:grid;place-items:center;
  transition:opacity .9s ease,transform 1s cubic-bezier(.4,0,.2,1)}
.env.gone{opacity:0;transform:translateY(-60px) scale(1.04);pointer-events:none}
.env-stage{text-align:center;padding:24px}
.env-kicker{font-size:12px;letter-spacing:.34em;text-transform:uppercase;color:var(--sepia);margin-bottom:28px}
.env-body{position:relative;width:min(360px,84vw);aspect-ratio:1.42/1;margin:0 auto;
  background:linear-gradient(165deg,var(--card),var(--paper3));border:1px solid var(--line);
  border-radius:4px;box-shadow:var(--shadow);perspective:1100px}
.env-flap{position:absolute;inset:0 0 auto 0;height:70%;background:linear-gradient(175deg,var(--paper3),var(--paper2));
  clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;transition:transform 1s cubic-bezier(.5,0,.3,1);
  backface-visibility:hidden;border-bottom:1px solid rgba(226,217,200,.7)}
.env.open .env-flap{transform:rotateX(-176deg)}
.env-inner{position:absolute;inset:14% 12% 12% 12%;background:var(--card);border:1px solid var(--line);border-radius:2px;
  display:grid;place-items:center;transform:translateY(0);transition:transform .9s .35s cubic-bezier(.3,0,.2,1);opacity:.55}
.env.open .env-inner{transform:translateY(-26%);opacity:1}
.env-mono{width:120px;color:var(--ink);opacity:.8}
.env-seal{position:absolute;left:50%;top:64%;transform:translate(-50%,-50%);width:120px;cursor:pointer;
  z-index:3;background:none;border:0;padding:0;transition:transform .55s cubic-bezier(.3,0,.2,1),opacity .5s}
.env-seal:hover{transform:translate(-50%,-50%) scale(1.06)}
.env.open .env-seal{transform:translate(-50%,-50%) scale(1.5) rotate(14deg);opacity:0}
.env-seal .seal-svg{width:100%;height:auto}
.env-hint{margin-top:30px;font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:var(--sepia);
  animation:breathe 2.8s ease-in-out infinite}
.env.open .env-hint{opacity:0;transition:opacity .3s}
@keyframes breathe{0%,100%{opacity:.45}50%{opacity:1}}

/* ───────── общий каркас ───────── */
.page{position:relative;z-index:2}
.sec{padding:96px 0;position:relative}
.sec--tint{background:var(--paper2)}
.head{text-align:center;max-width:640px;margin:0 auto 52px}
.k{font-size:11.5px;letter-spacing:.34em;text-transform:uppercase;color:var(--terra);margin-bottom:16px}
.head h2{font-size:clamp(30px,4.4vw,50px);margin-bottom:14px}
.head h2 em{font-style:italic;color:var(--olive-d)}
.head p{font-size:17px;color:var(--sepia);font-weight:300}
.divider-svg{width:280px;height:44px;margin:26px auto 0;opacity:.85}

/* ───────── герой ───────── */
.hero{min-height:100svh;display:grid;place-items:center;text-align:center;position:relative;overflow:hidden;padding:56px 0 58px}
.hero .wash{position:absolute;pointer-events:none}
.hero .wash.w1{width:620px;height:620px;top:-160px;left:-190px}
.hero .wash.w2{width:520px;height:520px;bottom:-170px;right:-140px}
.hero .sprig{position:absolute;pointer-events:none;opacity:.85}
.hero .s1{width:190px;height:330px;top:4%;left:2%;transform:rotate(-14deg)}
.hero .s2{width:170px;height:300px;top:8%;right:3%;transform:rotate(16deg) scaleX(-1)}
.hero .s3{width:150px;height:264px;bottom:-2%;left:8%;transform:rotate(168deg)}
.hero .s4{width:160px;height:282px;bottom:-3%;right:7%;transform:rotate(196deg)}
.hero-in{position:relative;z-index:3}
.hero .mono-svg{width:96px;margin:0 auto 14px;color:var(--ink);opacity:.75}
.hero .pre{font-size:12px;letter-spacing:.4em;text-transform:uppercase;color:var(--sepia);margin-bottom:12px}
.names{font-size:clamp(40px,7.2vw,78px);line-height:.96;margin-bottom:4px}
.names .amp{display:block;font-style:italic;font-size:.4em;color:var(--terra);margin:2px 0;opacity:.85}
.hero .sub{font-size:16.5px;color:var(--sepia);margin:14px auto 0;max-width:420px}
.datebar{display:inline-flex;align-items:center;gap:20px;margin-top:20px;padding:13px 28px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.datebar b{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:26px;letter-spacing:.04em}
.datebar span{font-size:12.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--sepia)}
.scrollcue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:.3em;
  text-transform:uppercase;color:var(--sepia);z-index:3}
.scrollcue:after{content:"";display:block;width:1px;height:38px;background:var(--line);margin:12px auto 0;
  animation:cue 2.4s ease-in-out infinite}
@keyframes cue{0%,100%{transform:scaleY(.4);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}

/* ───────── обратный отсчёт ───────── */
.cd{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:720px;margin:0 auto}
.cd-i{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:26px 12px;text-align:center;box-shadow:var(--shadow-sm)}
.cd-i b{display:block;font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(34px,5vw,52px);line-height:1;color:var(--olive-d)}
.cd-i span{display:block;margin-top:9px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--sepia)}
.cd-note{text-align:center;margin-top:26px;font-size:15px;color:var(--sepia);font-style:italic;font-family:'Cormorant Garamond',serif}

/* ───────── история ───────── */
.story{position:relative;max-width:760px;margin:0 auto}
.story:before{content:"";position:absolute;left:50%;top:8px;bottom:8px;width:1px;background:var(--line);transform:translateX(-.5px)}
.st{position:relative;display:grid;grid-template-columns:1fr 76px 1fr;align-items:center;margin-bottom:40px}
.st:last-child{margin-bottom:0}
.st .dot{grid-column:2;justify-self:center;width:13px;height:13px;border-radius:50%;background:var(--paper);
  border:1px solid var(--olive);position:relative;z-index:2}
.st .dot:after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--olive)}
.st .txt{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:22px 24px;box-shadow:var(--shadow-sm)}
.st:nth-child(odd) .txt{grid-column:1;text-align:right}
.st:nth-child(even) .txt{grid-column:3}
.st .when{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--terra);margin-bottom:7px}
.st h3{font-size:23px;margin-bottom:6px}
.st p{font-size:14.5px;color:var(--sepia)}

/* ───────── программа дня ───────── */
.prog{max-width:680px;margin:0 auto}
.pr{display:grid;grid-template-columns:96px 54px 1fr;align-items:center;gap:18px;padding:20px 0;border-bottom:1px solid var(--line)}
.pr:last-child{border-bottom:0}
.pr .time{font-family:'Cormorant Garamond',serif;font-size:27px;color:var(--olive-d);text-align:right}
.pr .ic{width:54px;height:54px;border-radius:50%;background:var(--paper2);border:1px solid var(--line);
  display:grid;place-items:center;font-size:23px}
.pr h3{font-size:20px;margin-bottom:3px}
.pr p{font-size:14px;color:var(--sepia)}

/* ───────── локация ───────── */
.loc{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:stretch}
.loc-card{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:32px;box-shadow:var(--shadow-sm)}
.loc-card h3{font-size:26px;margin-bottom:8px}
.loc-card .addr{font-size:15px;color:var(--sepia);margin-bottom:20px}
.loc-row{display:flex;gap:13px;padding:14px 0;border-top:1px solid var(--line);font-size:14.5px;color:var(--sepia)}
.loc-row .ic{font-size:17px;flex:0 0 auto}
.loc-row b{display:block;color:var(--ink);font-weight:400;margin-bottom:2px;font-size:14px}
.loc-map{border-radius:3px;overflow:hidden;min-height:320px;border:1px solid var(--line)}
.loc-map .stub{height:100%;min-height:320px;background:var(--paper2);display:grid;place-items:center;
  color:var(--sepia);font-size:14px;text-align:center;padding:24px}
.loc-map iframe{width:100%;height:100%;min-height:320px;border:0;display:block}

/* ───────── дресс-код ───────── */
.dress{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;max-width:900px;margin:0 auto}
.sw{display:flex;flex-wrap:wrap;gap:16px}
.sw-i{text-align:center}
.sw-dot{width:74px;height:74px;border-radius:50%;box-shadow:inset 0 -6px 16px rgba(0,0,0,.09),var(--shadow-sm);margin-bottom:9px}
.sw-i span{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--sepia)}
.dress p{font-size:16px;color:var(--sepia)}
.dress .no{margin-top:16px;font-size:14px;color:var(--terra-d);font-style:italic;font-family:'Cormorant Garamond',serif}

/* ───────── детали ───────── */
.notes{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.nt{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:30px 26px;text-align:center;box-shadow:var(--shadow-sm)}
.nt .ic{font-size:27px;margin-bottom:14px}
.nt h3{font-size:21px;margin-bottom:9px}
.nt p{font-size:14.5px;color:var(--sepia)}

/* ───────── FAQ ───────── */
.faq2{max-width:760px;margin:0 auto}
.faq2 details{border-bottom:1px solid var(--line)}
.faq2 summary{list-style:none;cursor:pointer;padding:22px 4px;font-size:19px;font-family:'Cormorant Garamond',serif;
  display:flex;justify-content:space-between;align-items:center;gap:18px}
.faq2 summary::-webkit-details-marker{display:none}
.faq2 .ar{font-size:22px;color:var(--olive);transition:.25s;flex:0 0 auto;line-height:1}
.faq2 details[open] .ar{transform:rotate(45deg)}
.faq2 .a{padding:0 4px 22px;color:var(--sepia);font-size:15px}

/* ───────── RSVP ───────── */
.rsvp{position:relative;overflow:hidden}
.rsvp .sprig{position:absolute;opacity:.5;pointer-events:none}
.rsvp .r1{width:150px;height:264px;top:6%;left:1%;transform:rotate(-18deg)}
.rsvp .r2{width:150px;height:264px;bottom:4%;right:1%;transform:rotate(190deg)}
.rsvp-card{position:relative;z-index:2;max-width:620px;margin:0 auto;background:var(--card);
  border:1px solid var(--line);border-radius:3px;padding:44px;box-shadow:var(--shadow)}
.steps-bar{display:flex;gap:8px;margin-bottom:30px}
.steps-bar i{flex:1;height:2px;background:var(--line);border-radius:2px;transition:.4s}
.steps-bar i.on{background:var(--olive)}
.step{display:none}
.step.on{display:block;animation:fade .45s ease}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.step h3{font-size:27px;margin-bottom:8px;text-align:center}
.step .sh{text-align:center;color:var(--sepia);font-size:14.5px;margin-bottom:26px}
.fi{margin-bottom:16px}
.fi label{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--sepia);margin-bottom:8px}
.fi input,.fi textarea,.fi select{width:100%;background:var(--paper);border:1px solid var(--line);border-radius:2px;
  padding:14px 16px;font-size:15px;font-family:'Jost',sans-serif;font-weight:300;color:var(--ink)}
.fi textarea{min-height:92px;resize:vertical}
.fi input:focus,.fi textarea:focus,.fi select:focus{outline:none;border-color:var(--olive)}
.opts{display:grid;gap:11px}
.opt{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:2px;padding:15px 18px;
  cursor:pointer;transition:.2s;background:var(--paper);font-size:15px}
.opt:hover{border-color:var(--olive)}
.opt.on{border-color:var(--olive);background:rgba(125,139,106,.09)}
.opt .box{width:19px;height:19px;border:1px solid var(--line);border-radius:50%;flex:0 0 auto;position:relative}
.opt.on .box{border-color:var(--olive)}
.opt.on .box:after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--olive)}
.opt .em{font-size:19px}
.nav-btns{display:flex;gap:12px;margin-top:26px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:'Jost',sans-serif;font-weight:400;
  font-size:13px;letter-spacing:.18em;text-transform:uppercase;padding:16px 32px;border-radius:2px;border:1px solid transparent;
  cursor:pointer;transition:.25s;background:none}
.btn--olive{background:var(--olive-d);color:var(--paper);flex:1}
.btn--olive:hover{background:var(--ink)}
.btn--ghost{border-color:var(--line);color:var(--sepia)}
.btn--ghost:hover{border-color:var(--olive);color:var(--olive-d)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.lp-consent{display:flex;gap:11px;align-items:flex-start;font-size:12.5px;color:var(--sepia);margin:6px 0 4px;cursor:pointer;line-height:1.5}
.lp-consent input{margin-top:3px;width:15px;height:15px;flex:0 0 auto;accent-color:var(--olive)}
.lp-consent a{color:var(--olive-d);text-decoration:underline}
.form-status{display:none;font-size:14px;padding:13px 16px;border-radius:2px;margin-top:14px;text-align:center}
.form-status.ok{display:block;background:rgba(125,139,106,.14);color:var(--olive-d);border:1px solid rgba(125,139,106,.4)}
.form-status.err{display:block;background:rgba(184,103,74,.12);color:var(--terra-d);border:1px solid rgba(184,103,74,.4)}
.thanks{display:none;text-align:center;padding:14px 0}
.thanks.on{display:block;animation:fade .5s ease}
.thanks .mono-svg{width:120px;margin:0 auto 18px;color:var(--olive-d)}
.thanks h3{font-size:30px;margin-bottom:10px}
.thanks p{color:var(--sepia);font-size:15.5px}

/* ───────── подвал ───────── */
.footer{background:var(--paper3);padding:64px 0 34px;text-align:center;position:relative;z-index:2}
.footer .mono-svg{width:110px;margin:0 auto 20px;color:var(--ink);opacity:.6}
.footer .fnames{font-family:'Cormorant Garamond',serif;font-size:28px;margin-bottom:8px}
.footer .fdate{font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--sepia);margin-bottom:26px}
.footer .fc{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;font-size:14.5px;color:var(--sepia);margin-bottom:26px}
.footer .fc a:hover{color:var(--olive-d)}
.footer .legal{padding-top:22px;border-top:1px solid var(--line);font-size:12px;color:var(--sepia);opacity:.8;
  display:flex;justify-content:center;gap:18px;flex-wrap:wrap}

.reveal{opacity:0;transform:translateY(26px);transition:.9s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.1s}.reveal.d2{transition-delay:.2s}.reveal.d3{transition-delay:.3s}

@media(max-width:900px){
  .loc,.dress{grid-template-columns:1fr}
  .notes{grid-template-columns:1fr}
  .hero .s1,.hero .s2{width:120px;height:210px;opacity:.6}
  .hero .s3,.hero .s4{display:none}
}
@media(max-width:620px){
  .sec{padding:68px 0}
  .cd{grid-template-columns:1fr 1fr}
  .rsvp-card{padding:28px 22px}
  .story:before{left:7px}
  .st{grid-template-columns:16px 1fr;gap:16px}
  .st .dot{grid-column:1;justify-self:start}
  .st:nth-child(odd) .txt,.st:nth-child(even) .txt{grid-column:2;text-align:left}
  .pr{grid-template-columns:70px 1fr;gap:14px}
  .pr .ic{display:none}
  .datebar{flex-direction:column;gap:8px;padding:14px 22px}
  .nav-btns{flex-direction:column}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
