@font-face {
  font-family: "Alistair";
  src: url('./fonts/alistair-signature.otf?v=20260823') format('opentype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Stolzl";
  src: url('./fonts/stolzl-regular.ttf?v=20260823') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root { --ink:#15304a; --blue:#a9c9e2; --deep:#2d5d83; --paper:#f3efe7; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; color:var(--ink); background:#e6dfd3; font-family:"Stolzl",Arial,sans-serif; font-weight:400; }
button,a { font:inherit; }
em { font-family:"Alistair",cursive; font-style:normal; font-weight:400; }

.intro { min-height:100svh; display:grid; place-items:center; align-content:center; gap:24px; overflow:hidden; position:relative; padding:36px 20px; background:radial-gradient(circle at 50% 42%,#f8f4ec 0,#e9e1d5 52%,#d8cbbc 100%); transition:min-height .8s ease; }
.intro:before { content:""; position:absolute; inset:0; opacity:.22; pointer-events:none; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E"); }
.intro-copy { position:relative; text-align:center; text-transform:uppercase; letter-spacing:.2em; font-size:12px; transition:.5s; }
.intro-copy span { font-family:"Alistair",cursive; font-size:clamp(34px,5vw,56px); letter-spacing:.02em; text-transform:none; }
.intro-copy p { margin:5px 0 0; }
.envelope-stage { width:min(720px,92vw); height:min(470px,62vw); min-height:300px; display:grid; place-items:center; perspective:1600px; z-index:1; transition:width 1.1s ease,height 1.1s ease; }
.envelope-trigger { appearance:none; border:0; padding:0; background:none; width:100%; cursor:pointer; color:inherit; perspective:1600px; }
.envelope-trigger:focus-visible { outline:2px solid var(--deep); outline-offset:12px; }
.envelope-trigger:disabled { cursor:default; }
.envelope-photo-wrap { position:relative; width:100%; height:100%; overflow:hidden; isolation:isolate; }
.envelope-photo-wrap:after { content:""; position:absolute; inset:0; z-index:7; pointer-events:none; opacity:.12; mix-blend-mode:multiply; background:url('./ivory-card-paper-texture.png') center/cover; }
.envelope-photo { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:opacity .65s ease,transform 1s cubic-bezier(.2,.8,.2,1); }
.closed-envelope-photo { z-index:4; opacity:1; }
.open-envelope-photo { z-index:3; opacity:0; transform:scale(.98); }
.envelope-pocket-foreground { position:absolute; z-index:35; inset:0; width:100%; height:100%; object-fit:cover; clip-path:polygon(0 53%,100% 53%,100% 100%,0 100%); opacity:0; pointer-events:none; transition:opacity .18s .52s; }
.is-open .envelope-pocket-foreground { opacity:1; }
.envelope-trigger:hover .closed-envelope-photo { transform:scale(1.012); }
.envelope { width:100%; aspect-ratio:1.56; position:relative; filter:drop-shadow(0 24px 30px #786b5e55); transition:transform 1.1s cubic-bezier(.2,.75,.15,1),filter .8s; }
.envelope-back,.envelope-front,.envelope-flap { position:absolute; inset:0; border-radius:4px; }
.envelope-back { background-color:#a9cce3; background-image:linear-gradient(145deg,#c1ddecaa,#8eb8d6cc),url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.42' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.16'/%3E%3C/svg%3E"); box-shadow:inset 0 0 55px #557c9825; }
.envelope-front { z-index:4; background-color:#9ec4dd; background-image:linear-gradient(26deg,#8fb9d5 49.65%,transparent 50%),linear-gradient(-26deg,#a6cbe2 49.65%,transparent 50%),url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.48' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.12'/%3E%3C/svg%3E"); clip-path:polygon(0 36%,50% 76%,100% 36%,100% 100%,0 100%); filter:drop-shadow(0 -1px 1px #52799445); }
.envelope-flap { z-index:5; transform-origin:top; transform:rotateX(0); transition:transform 1s cubic-bezier(.2,.8,.2,1),z-index 0s .48s; background-color:#b7d6e9; background-image:linear-gradient(155deg,#c5dfeddd,#96bed9dd),url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.14'/%3E%3C/svg%3E"); clip-path:polygon(0 0,100% 0,50% 67%); filter:drop-shadow(0 3px 2px #55788e55); }
.card-peek { position:absolute; z-index:2; width:84%; height:82%; left:8%; top:8%; opacity:0; transition:transform 1.15s .48s cubic-bezier(.18,.8,.16,1),opacity .15s .52s,width 1.1s .48s,height 1.1s .48s,left 1.1s .48s,top 1.1s .48s; box-shadow:0 7px 18px #4d667855; }
.compact-front { width:100%; height:100%; box-shadow:none; transform:none; }
.compact-front .photo-placeholder { min-height:0; }
.seal { position:absolute; z-index:6; left:50%; top:45%; translate:-50% -50%; display:grid; place-items:center; width:104px; aspect-ratio:1; border-radius:47% 53% 50% 46%; background:radial-gradient(circle at 35% 30%,#f2f4f4,#cad4da 65%,#a9bac6); box-shadow:0 7px 13px #4f647866,inset 0 0 0 7px #ffffff45,inset 0 0 0 10px #7a91a835; transition:.45s; }
.envelope-trigger:hover .seal { transform:scale(1.06) rotate(-3deg); }
.seal img { width:62%; height:62%; object-fit:contain; mix-blend-mode:multiply; opacity:.65; }
.paper-edge { position:absolute; z-index:5; bottom:0; width:50%; height:67%; pointer-events:none; opacity:.4; }
.edge-left { left:0; border-top:1px solid #d9eaf4; transform:skewY(26deg); transform-origin:left bottom; }
.edge-right { right:0; border-top:1px solid #6d98b455; transform:skewY(-26deg); transform-origin:right bottom; }
.is-open .envelope-flap { transform:rotateX(178deg); z-index:1; }
.is-open .envelope-stage { width:100%; height:100%; }
.is-open .envelope { transform:translateY(24%); filter:drop-shadow(0 14px 20px #786b5e33); }
.is-open .card-peek { opacity:1; width:100%; height:auto; aspect-ratio:1.55; left:0; top:0; transform:translateY(-39%); z-index:7; box-shadow:0 30px 60px #29475c55; }
.is-open .seal { opacity:0; pointer-events:none; transform:scale(.6); }
.is-open .intro-copy { opacity:0; transform:translateY(-16px); }
.is-open .envelope-photo-wrap { transform:none; }
.is-open .closed-envelope-photo { opacity:0; transform:scale(.99); }
.is-open .open-envelope-photo { opacity:1; transform:scale(1); }
.envelope-photo-wrap .card-peek { width:61%; height:auto; aspect-ratio:1.55; left:19.5%; top:31%; }
.is-open .envelope-photo-wrap .card-peek { width:94%; left:3%; top:0; transform:translateY(-44%); }
.intro { display:block; padding:0; background:#eee8de; }
.intro:before { z-index:2; opacity:.08; }
.intro-copy { position:absolute; z-index:8; top:clamp(22px,4vh,48px); left:50%; transform:translateX(-50%); color:var(--ink); text-shadow:0 1px 10px #fff; white-space:nowrap; }
.envelope-stage { position:absolute; inset:0; width:100%; height:100%; min-height:0; max-width:none; }
.envelope-trigger { width:100%; height:100%; display:block; }
.envelope-trigger:hover .closed-envelope-photo { transform:scale(1.006); }
.open-hint { position:absolute; z-index:9; left:50%; bottom:clamp(22px,5vh,52px); transform:translateX(-50%); padding:12px 18px; border-radius:30px; background:#f5f0e8d9; box-shadow:0 6px 24px #3d526a22; backdrop-filter:blur(5px); }
.is-open .intro-copy { opacity:0; transform:translateX(-50%) translateY(-16px); }
.is-open .open-hint { opacity:0; }
.open-hint,.scroll-invite { z-index:2; border:0; background:none; color:var(--ink); text-transform:uppercase; letter-spacing:.18em; font-size:11px; display:flex; gap:12px; align-items:center; cursor:pointer; text-decoration:none; }
.open-hint span,.scroll-invite span { font-size:18px; animation:bob 1.4s infinite; }
.is-open .open-hint { opacity:0; pointer-events:none; }
.scroll-invite { position:absolute; bottom:24px; }
@keyframes bob { 50% { transform:translateY(5px); } }
.story-panel { min-height:110svh; display:grid; place-items:center; padding:12vh 24px; position:relative; overflow:hidden; }
.cover-panel { min-height:100svh; padding:3vh 2vw; background:#8faec2; }
.cover-panel .front-card { width:min(1200px,96vw); max-height:94svh; transform:rotate(-1deg); }
.flying-card-shell { position:fixed; z-index:30; left:50%; top:50%; width:min(1200px,96vw); pointer-events:none; animation:card-extract 2.7s .62s cubic-bezier(.18,.72,.16,1) both; transform-origin:center; }
.flying-card-shell .front-card { width:100%; max-height:94svh; transform:none; }
@keyframes card-extract {
  0% { top:64%; opacity:.98; transform:translate(-50%,-50%) scale(.4) rotate(-1deg); }
  18% { top:59%; transform:translate(-50%,-50%) scale(.52) rotate(-1.3deg); }
  48% { top:51%; transform:translate(-50%,-50%) scale(.84) rotate(-1.5deg); }
  78%,100% { top:50%; opacity:1; transform:translate(-50%,-50%) scale(1) rotate(-1deg); }
}
.postcard { width:min(940px,92vw); aspect-ratio:1.55; background-color:var(--paper); background-image:linear-gradient(#f7f3eb22,#eee7dc22),url('./ivory-card-paper-texture.png'); background-size:cover; background-position:center; box-shadow:0 30px 60px #29475c55, inset 0 0 30px #9d8f7b12; position:relative; transform:rotate(-1.3deg); padding:clamp(14px,2vw,28px); }
.front-card { display:grid; grid-template-columns:1.5fr 1fr; gap:clamp(14px,2vw,28px); border:2px solid #2d5d83; outline:10px solid var(--paper); outline-offset:-13px; }
.photo-placeholder { min-height:260px; background:linear-gradient(150deg,#6d8797,#c4d1d8); display:grid; place-items:center; overflow:hidden; position:relative; }
.photo-placeholder:after { content:"Ю + Л"; font-family:"Alistair",cursive; font-size:clamp(80px,14vw,190px); color:#ffffff30; }
.photo-placeholder span { position:absolute; bottom:18px; text-transform:uppercase; letter-spacing:.18em; font-size:10px; color:white; }
.cover-title { display:flex; flex-direction:column; justify-content:center; font-family:"Stolzl",sans-serif; font-size:clamp(28px,4vw,62px); line-height:.95; }
.cover-title strong { color:var(--deep); font-family:"Alistair",cursive; font-weight:400; margin-top:15px; }
.tiny-date { position:absolute; right:4%; bottom:5%; letter-spacing:.28em; font-size:10px; }
.panel-note { position:absolute; bottom:32px; color:#fff; text-transform:uppercase; letter-spacing:.22em; font-size:9px; }
.reverse-panel { background:#d9d0c2; perspective:1600px; view-timeline-name:--card-turn; view-timeline-axis:block; }
.reverse-panel .postcard { transform-origin:center; animation:card-turn linear both; animation-timeline:--card-turn; animation-range:entry 0% cover 42%; backface-visibility:hidden; }
@keyframes card-turn { from { transform:rotateY(88deg) rotateZ(-1deg) scale(.92); opacity:.45; } to { transform:rotateY(0) rotateZ(.8deg) scale(1); opacity:1; } }
.back-card { display:grid; grid-template-columns:.85fr 1.35fr; padding:clamp(26px,5vw,70px); border:2px solid var(--deep); outline:9px solid var(--paper); outline-offset:-12px; transform:rotate(.8deg); }
.details-side { border-right:1px solid #7694a9; padding-right:clamp(18px,4vw,50px); display:flex; flex-direction:column; justify-content:center; }
.message-side { padding-left:clamp(20px,5vw,64px); display:flex; flex-direction:column; justify-content:center; font-family:"Stolzl",sans-serif; font-size:clamp(13px,1.55vw,19px); line-height:1.5; }
.message-side p { margin:.5em 0; }.signature { font-style:italic; color:var(--deep); }
.eyebrow { text-transform:uppercase; letter-spacing:.25em; font-size:10px; font-weight:600; }
.big-date { font-family:"Stolzl",sans-serif; font-weight:500; font-size:clamp(36px,5vw,68px); margin:8px 0 28px; line-height:1; white-space:nowrap; }
.big-date span { color:#83a5bd; padding:0 .1em; }
.place { display:grid; gap:4px; margin-top:18px; font-size:clamp(10px,1.3vw,14px); line-height:1.5; }
.place b { color:var(--deep); font-family:"Alistair",cursive; font-size:2.25em; font-weight:400; letter-spacing:.02em; line-height:.8; text-transform:lowercase; }
.script-title { display:block; font-family:"Alistair",cursive; color:var(--deep); font-size:clamp(55px,8vw,92px); line-height:.84; margin-bottom:24px; font-weight:400; }
.signature { font-family:"Alistair",cursive; font-style:normal; font-size:2.25em; line-height:.92; margin-top:.55em; }

/* Alistair is used only as a lowercase handwritten accent. */
.intro-copy span,
.photo-placeholder:after,
.cover-title strong,
.script-title,
.signature,
.section-copy h2 em,
.rsvp-section h2 em,
.timeline em,
.gift-copy h2 em {
  text-transform:lowercase;
  font-variant-caps:normal;
}

.content-section { min-height:100svh; padding:clamp(70px,10vw,150px) max(6vw,24px); display:grid; grid-template-columns:1fr 1fr; gap:clamp(50px,8vw,130px); align-items:center; }
.section-copy { max-width:630px; }
.section-copy h2,.rsvp-section h2 { font-family:"Stolzl",sans-serif; font-weight:500; font-size:clamp(44px,6vw,88px); line-height:.92; margin:22px 0 50px; letter-spacing:-.035em; }
.section-copy h2 em,.rsvp-section h2 em { color:var(--deep); font-family:"Alistair",cursive; font-style:normal; font-weight:400; font-size:1.35em; letter-spacing:0; }

.welcome-section { min-height:100svh; display:grid; grid-template-columns:minmax(320px,.9fr) minmax(0,1.1fr); align-items:center; gap:clamp(44px,7vw,120px); padding:clamp(50px,7vw,100px) max(6vw,24px); background:#9bb9cc; }
.welcome-photo { width:min(100%,570px); justify-self:end; transform:rotate(-1.2deg); box-shadow:0 26px 55px #304d6050; }
.welcome-photo img { display:block; width:100%; height:auto; object-fit:contain; }
.welcome-copy { max-width:720px; }
.welcome-copy h1 { margin:0 0 42px; color:var(--deep); font-weight:400; letter-spacing:0; }
.welcome-intro { display:block; font-family:"Stolzl",sans-serif; font-size:clamp(40px,5vw,76px); font-weight:500; line-height:1; letter-spacing:-.04em; }
.welcome-script { display:block; margin-top:-8px; font-family:"Alistair",cursive; font-size:clamp(74px,9vw,132px); line-height:.7; text-transform:lowercase; white-space:nowrap; }
.welcome-copy p { max-width:660px; margin:0; font-size:clamp(18px,1.8vw,26px); line-height:1.55; }

.location-section { min-height:100svh; display:grid; grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr); background:#173349; color:#f6f0e7; }
.location-photo { min-height:100svh; overflow:hidden; }
.location-photo img { width:100%; height:100%; display:block; object-fit:cover; object-position:center; }
.location-copy { display:flex; flex-direction:column; justify-content:center; padding:clamp(60px,7vw,120px); }
.location-copy .eyebrow { color:#bed8e9; }
.location-copy h2 { font-family:"Stolzl",sans-serif; font-size:clamp(40px,5vw,74px); font-weight:500; line-height:.96; letter-spacing:-.04em; margin:24px 0 40px; }
.location-copy h2 em { display:block; color:#bed8e9; font-family:"Alistair",cursive; font-size:1.45em; font-style:normal; font-weight:400; letter-spacing:0; line-height:.75; text-transform:lowercase; }
.location-copy p { max-width:560px; margin:0; font-size:clamp(16px,1.5vw,21px); line-height:1.6; }
.location-copy .location-signature { margin-top:28px; color:#bed8e9; font-family:"Alistair",cursive; font-size:clamp(42px,4.4vw,68px); line-height:.78; text-transform:none; }
.location-details { display:grid; grid-template-columns:auto 1fr; align-items:end; gap:28px; margin-top:42px; padding-top:24px; border-top:1px solid #bed8e966; }
.location-details strong { color:#bed8e9; font-size:clamp(24px,2.4vw,36px); font-weight:500; letter-spacing:.04em; white-space:nowrap; }
.location-details address { margin:0; padding:0; border:0; font-style:normal; font-size:13px; letter-spacing:.08em; line-height:1.6; text-transform:uppercase; }
.schedule-section { background:#f3efe7; }
.timeline { border-top:1px solid #9eacb5; }
.timeline>div { display:grid; grid-template-columns:90px 1fr; gap:22px; padding:18px 0; border-bottom:1px solid #b8c1c6; align-items:start; }
.timeline time { font-family:"Stolzl",sans-serif; font-weight:500; font-size:27px; color:var(--deep); }
.timeline p { margin:5px 0; text-transform:uppercase; letter-spacing:.06em; font-size:13px; line-height:1.5; }
.timeline em { font-family:"Alistair",cursive; font-style:normal; color:var(--deep); font-size:2.25em; line-height:.75; text-transform:lowercase; }
.timeline strong { color:var(--deep); font-weight:500; }
.timeline-address { display:block; margin-top:4px; color:#687b88; font-size:.9em; text-transform:none; letter-spacing:0; }
.timeline small { display:block; text-transform:none; letter-spacing:0; color:#687b88; margin-top:6px; }
.photobooth { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(8px,1.2vw,14px); width:min(100%,560px); transform:rotate(1deg); }
.photobooth img { display:block; width:100%; height:auto; object-fit:contain; background:#fff; box-shadow:0 14px 28px #304d6040; }

.story-section { position:relative; grid-template-columns:1fr; overflow:hidden; color:#fff; }
.story-visual { position:absolute; inset:0; background-image:linear-gradient(90deg,#10283a0d 20%,#10283ac4 70%,#10283af2 100%),url('./vladivostok-background.jpg'); background-size:cover; background-position:center; }
.story-section .section-copy { position:relative; z-index:1; justify-self:end; width:min(620px,48vw); padding:clamp(34px,4vw,64px); background:#10283a47; backdrop-filter:blur(3px); }
.story-section .section-copy h2 em { color:#c9e1ef; }
.story-section .section-copy p { font-family:"Stolzl",sans-serif; font-size:clamp(17px,1.6vw,22px); line-height:1.55; }
.text-link { display:inline-flex; gap:16px; margin-top:30px; color:inherit; text-decoration:none; text-transform:uppercase; letter-spacing:.15em; font-size:11px; border-bottom:1px solid currentColor; padding-bottom:8px; }

.gift-section { min-height:100svh; display:grid; grid-template-columns:1fr 1fr; overflow:hidden; background:#173349; }
.gift-section img { display:block; width:100%; height:100%; min-height:100svh; object-fit:cover; object-position:center; }
.gift-copy { display:flex; flex-direction:column; justify-content:center; color:white; padding:clamp(60px,7vw,120px); }
.gift-copy h2 { font-family:"Stolzl",sans-serif; font-size:clamp(54px,7vw,112px); line-height:.78; font-weight:500; letter-spacing:-.045em; margin:0 0 55px; }
.gift-copy h2 em { padding-left:18%; font-family:"Alistair",cursive; font-style:normal; font-size:1.4em; font-weight:400; letter-spacing:0; }
.gift-copy p { font-family:"Stolzl",sans-serif; font-size:clamp(18px,2.2vw,28px); line-height:1.45; width:min(620px,100%); }

.rsvp-section { background:#e7ded1; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; padding:72px 24px 34px; }
.rsvp-section h2 { margin:25px 0 38px; }
.rsvp-form { width:min(650px,100%); overflow:hidden; }
.rsvp-form iframe { display:block; width:100%; height:520px; border:0; }
.rsvp-buttons { display:flex; gap:16px; flex-wrap:wrap; justify-content:center; }
.rsvp-buttons a { min-width:230px; padding:18px 28px; text-decoration:none; border:1px solid var(--deep); color:var(--deep); text-transform:uppercase; letter-spacing:.12em; font-size:12px; transition:.25s; }
.rsvp-buttons a:first-child,.rsvp-buttons a:hover { background:var(--deep); color:white; }
footer { min-height:68svh; background:#173349; color:white; padding:clamp(70px,9vw,130px) max(7vw,24px); display:grid; grid-template-columns:1fr auto; align-content:center; gap:30px 80px; position:relative; }
footer>div { max-width:630px; } footer .script-title { color:#bed8e9; }
footer p { font-family:"Stolzl",sans-serif; font-size:clamp(17px,2vw,25px); line-height:1.5; }
.phone { color:white; font-family:"Stolzl",sans-serif; font-weight:500; font-size:clamp(28px,4vw,55px); text-decoration:none; border-bottom:1px solid #ffffff80; }
.footer-mark { position:absolute; bottom:24px; left:50%; translate:-50%; font-size:11px; letter-spacing:.22em; }
.notice { position:fixed; z-index:50; left:50%; bottom:25px; translate:-50%; background:#173349; color:white; padding:14px 22px; border-radius:30px; font-size:12px; box-shadow:0 12px 35px #17334955; text-align:center; }

@media(max-width:760px){
  .envelope-stage{min-height:0}.seal{width:76px}.front-card{grid-template-columns:1fr;aspect-ratio:.72}.cover-title{padding:18px}.tiny-date{right:8%}.story-panel{min-height:105svh}
  .is-open .envelope-stage{width:100%;height:100%}.is-open .envelope-photo-wrap{transform:none}.compact-front{grid-template-columns:1fr;aspect-ratio:.72}.compact-front .photo-placeholder{min-height:0}.envelope-photo{object-position:center}.cover-panel{min-height:100svh;padding:3vh 4vw}.cover-panel .front-card{width:92vw;max-height:94svh}.flying-card-shell{width:92vw}.flying-card-shell .front-card{width:92vw}
  .back-card{grid-template-columns:1fr;aspect-ratio:.76;padding:30px}.details-side{border-right:0;border-bottom:1px solid #7694a9;padding:0 0 22px}.message-side{padding:24px 0 0;font-size:14px}.message-side .script-title{font-size:30px}.big-date{font-size:34px;margin-bottom:10px}.place{margin-top:8px}
  .welcome-section{grid-template-columns:1fr;min-height:0;padding:58px 20px 76px;gap:46px}.welcome-photo{justify-self:center;width:min(88vw,470px)}.welcome-copy{max-width:620px}.welcome-copy h1{margin-bottom:34px}.welcome-intro{font-size:clamp(38px,11vw,56px)}.welcome-script{font-size:clamp(60px,18vw,90px)}.welcome-copy p{font-size:18px}
  .location-section{grid-template-columns:1fr;min-height:0}.location-photo{min-height:0}.location-photo img{height:auto;object-fit:contain}.location-copy{padding:70px 24px 82px}.location-copy h2{font-size:clamp(42px,12vw,62px);margin-bottom:30px}.location-details{grid-template-columns:1fr;gap:14px}.location-details address{line-height:1.7}
  .content-section{grid-template-columns:1fr}.schedule-section .section-copy{order:1}.photobooth{order:2;margin:auto;width:min(88vw,420px)}.story-section{display:block;min-height:0;padding:0;background:#173349}.story-visual{position:relative;inset:auto;width:100%;height:44svh;min-height:300px;background-image:url('./vladivostok-background.jpg');background-position:center;background-size:cover}.story-section .section-copy{width:100%;max-width:none;margin:0;padding:58px 24px 66px;background:#173349;backdrop-filter:none}.story-section .section-copy h2{font-size:clamp(42px,11vw,58px);margin:18px 0 32px}.story-section .section-copy p{font-size:17px;line-height:1.5}.timeline>div{grid-template-columns:72px 1fr}.gift-section{grid-template-columns:1fr;min-height:0}.gift-copy{min-height:0;order:1;padding:64px 24px 70px}.gift-section img{height:58svh;min-height:360px;order:2}.gift-copy h2{font-size:clamp(56px,17vw,82px);margin-bottom:38px}.gift-copy h2 em{padding-left:7%}.gift-copy p{font-size:17px;line-height:1.5}footer{grid-template-columns:1fr}.phone{justify-self:start}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Physical invitation sequence */
.sequence-photo { opacity:0; transform:scale(1.012); transition:opacity .34s ease, transform .55s cubic-bezier(.2,.75,.2,1); }
.sequence-photo.active { opacity:1; transform:scale(1); z-index:5; }
.is-open .sequence-photo { opacity:0; }
.is-open .sequence-photo.active { opacity:1; transform:scale(1); }
.is-open .envelope-closed-frame.active { animation:envelope-close-release .44s ease forwards; }
.is-open .envelope-open-frame.active { animation:envelope-open-reveal .62s cubic-bezier(.18,.72,.2,1) both; }
@keyframes envelope-close-release { to { opacity:0; transform:scale(.985) translateY(1.2%); } }
@keyframes envelope-open-reveal { from { opacity:0; transform:scale(.985) translateY(1.2%); } to { opacity:1; transform:scale(1) translateY(0); } }
.is-open .envelope-stage { width:100%; height:100%; }
.envelope-photo { object-position:center; }


.postcard.photo-front { width:min(61vh,82vw); aspect-ratio:2/3; padding:0; border:0; outline:0; overflow:hidden; background:transparent; box-shadow:0 28px 65px #18364d55; transform:rotate(-.8deg); display:block; }
.photo-front img { width:100%; height:100%; max-width:100%; object-fit:contain; object-position:center; transform:none; display:block; }
.cover-panel { min-height:110svh; padding:5svh 4vw; background:linear-gradient(145deg,#87a8bd,#b7cbd5); }
.cover-panel .front-card { width:min(61vh,82vw); max-height:none; }

.flying-card-shell { width:min(56vh,74vw); top:48%; animation:physical-lift 1.45s cubic-bezier(.18,.75,.18,1) both; }
.flying-card-shell .front-card { width:100%; }
@keyframes physical-lift {
  0% { opacity:.05; transform:translate(-50%,10%) scale(.78) rotate(-.6deg); }
  18% { opacity:1; }
  62% { transform:translate(-50%,-43%) scale(.94) rotate(-.8deg); }
  100% { opacity:1; transform:translate(-50%,-50%) scale(1) rotate(-.8deg); }
}

.reverse-panel { min-height:110svh; }
.back-card { width:min(61vh,82vw); aspect-ratio:2/3; grid-template-columns:1fr; grid-template-rows:auto 1fr; padding:clamp(28px,4.5vh,58px); }
.details-side { border-right:0; border-bottom:1px solid #7694a9; padding:0 0 clamp(18px,3vh,34px); display:grid; grid-template-columns:1fr 1fr; column-gap:20px; align-content:center; }
.details-side .eyebrow,.details-side .big-date { grid-column:1/-1; }
.big-date { margin:5px 0 14px; font-size:clamp(34px,5.2vh,62px); }
.place { margin-top:8px; }
.message-side { padding:clamp(20px,3vh,36px) 0 0; font-size:clamp(13px,1.75vh,19px); }
.message-side .script-title { font-size:clamp(56px,7.4vh,84px); line-height:.8; margin-bottom:20px; }

@media(max-width:760px){
  .intro{min-height:100svh}
  .envelope-stage{width:100%;height:100%;}
  .envelope-photo{object-fit:cover;object-position:center}
  .postcard.photo-front,.cover-panel .front-card,.back-card{width:min(58vh,88vw);max-width:calc(100vw - 32px)}
  .flying-card-shell{width:min(54vh,84vw)}
  .back-card{aspect-ratio:2/3;padding:24px}.details-side{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid #7694a9;padding:0 0 18px}.message-side{padding:20px 0 0;font-size:12px}.message-side p{margin:.4em 0}.place{font-size:9px}.big-date{font-size:32px}
}

@media(max-width:520px){
  .intro-copy{top:20px}.intro-copy span{font-size:28px}.intro-copy p{font-size:10px}
  .open-hint{bottom:20px;width:max-content;max-width:calc(100vw - 32px);justify-content:center}
  .cover-panel,.reverse-panel{min-height:100svh;padding-inline:16px}
  .content-section{padding:72px 20px;gap:42px}
  .section-copy h2,.rsvp-section h2{font-size:clamp(48px,16vw,72px);margin-bottom:34px}
  .story-section{padding:0;gap:0}.story-section .section-copy{padding:52px 20px 60px}.story-section .section-copy h2{font-size:clamp(40px,11.5vw,52px);margin:18px 0 30px}
  .timeline>div{grid-template-columns:64px minmax(0,1fr);gap:14px}
  .timeline time{font-size:26px}.timeline p{font-size:11px}
  .gift-section{padding:0}.gift-copy{width:100%;padding:58px 20px 64px}.gift-copy h2{font-size:clamp(52px,16vw,74px)}
  .rsvp-section{padding:58px 20px 20px}.rsvp-form iframe{height:540px}
  .rsvp-buttons{width:100%}.rsvp-buttons a{width:100%;min-width:0}
  footer{padding-inline:20px}.phone{font-size:clamp(27px,9vw,42px)}
}
