@font-face{font-family:Display;src:url('assets/vintage/DMSerifDisplay-Regular.ttf') format('truetype');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#ead4d5;color:#542c40;font:16px/1.75 Arial,sans-serif;overflow-x:clip}body.locked{overflow:hidden}:root{--cream:#ead4d5;--sage:#ba8e9b;--dark:#542c40;--gold:#c8ae83}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3,.signature{font-family:Display,Georgia,serif;font-weight:400;line-height:1.1}h2{font-size:clamp(38px,5vw,66px)}h3{font-size:32px}p+p{margin-top:22px}.eyebrow{font-size:12px;letter-spacing:.23em;font-weight:500;line-height:1.8}.paper{background:var(--cream)}.sage{background:var(--sage)}.dark{background:var(--dark);color:var(--cream)}section,header,footer{position:relative;isolation:isolate}.paper:before,.sage:before,.dark:before{content:'';position:absolute;inset:0;z-index:-1;opacity:.18;pointer-events:none;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='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%239c8554' filter='url(%23n)' opacity='.27' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.button{display:inline-flex;align-items:center;justify-content:center;gap:25px;background:var(--dark);color:var(--cream);border:1px solid var(--dark);border-radius:40px;padding:15px 29px;font-size:14px;transition:background .25s,transform .25s}.button:hover{background:#704058;transform:translateY(-2px)}.quiet-button,.text-button{border:0;background:none;color:inherit}.text-button{font-size:14px;border-bottom:1px solid #ad9b77;padding:9px 0;display:inline-flex;gap:26px}.quiet-button{font-size:14px;padding:14px}.welcome{position:fixed;inset:0;z-index:100;background:#542c40ba;backdrop-filter:blur(9px);display:grid;place-items:center;padding:24px;transition:opacity .8s}.welcome.leaving{opacity:0;pointer-events:none}.welcome-card{text-align:center;width:min(440px,100%);padding:55px 28px;background:var(--cream);border-radius:220px 220px 12px 12px;box-shadow:0 24px 90px #31162440}.welcome-card h2{font-size:48px;margin:28px 0 24px}.welcome-card h2 em{font-size:35px;display:block;color:var(--gold);margin:5px}.welcome-card .button{margin-top:28px}.welcome-card .quiet-button{display:block;margin:auto}.hero{height:960px;min-height:760px;max-height:1200px;height:110svh;color:white;overflow:hidden;background:#704058}.hero-photo,.hero-filter,.closing-photo,.closing-filter{position:absolute;inset:0;z-index:-2}.hero-photo{background:url('assets/vintage/oliva-hero.webp') center 61%/cover no-repeat;animation:zoom 24s ease-in-out infinite alternate;animation-play-state:paused}.entered .hero-photo{animation-play-state:running}.hero-filter{z-index:-1;background:linear-gradient(180deg,#542c40aa,#7040587d 48%,#311624a3);mix-blend-mode:multiply}.hero-copy{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);width:min(760px,88%);text-align:center}.hero-date{font-size:14px;letter-spacing:.12em;margin:20px 0 29px}.hero-date:before,.hero-date:after{content:'';width:42px;height:1px;background:#e4d5b5;display:inline-block;vertical-align:middle;margin:0 17px}.hero h1{font-size:clamp(74px,8.7vw,126px);letter-spacing:-.035em;line-height:1.01}.hero h1 em{font-size:.46em;vertical-align:middle;color:#e2cf9c;font-style:italic;letter-spacing:0}.hero-quote{font-family:Display,Georgia,serif;font-size:24px;line-height:1.45;margin-top:26px}.discover{position:absolute;bottom:190px;left:50%;transform:translateX(-50%);font-size:12px;letter-spacing:.1em;text-align:center}.discover span{display:block;font-size:27px;margin-top:9px}.music{position:fixed;z-index:40;right:22px;bottom:22px;width:48px;height:48px;border:1px solid #ffffff66;border-radius:50%;background:#542c40ed;color:#fff;font-size:23px;box-shadow:0 4px 22px #542c4020}.music[aria-pressed=true]{background:#c8ae83}.spray{position:absolute;pointer-events:none;width:350px;aspect-ratio:1;--ink:var(--gold);z-index:1}.spray-piece{position:absolute;inset:0;background:var(--ink);mask:url('assets/vintage/botanical.png') center/contain no-repeat;clip-path:inset(0 100% 100% 0);opacity:0}.spray-piece:nth-child(1){--region:polygon(0 0,100% 0,100% 38%,0 38%);--delay:.15s}.spray-piece:nth-child(2){--region:polygon(0 38%,100% 38%,100% 66%,0 66%);--delay:.65s}.spray-piece:nth-child(3){--region:polygon(0 66%,100% 66%,100% 100%,0 100%);--delay:1.15s}.entered .hero-spray .spray-piece,.spray.visible .spray-piece{animation:branch-in 2.7s cubic-bezier(.22,.65,.3,1) var(--delay) both}.hero-spray{--ink:#f5efdb;opacity:.66;width:min(34vw,460px)}.hero-spray.first{left:-28px;top:-22px;transform:rotate(-8deg)}.hero-spray.second{right:-26px;bottom:145px;transform:rotate(178deg);width:min(27vw,360px);opacity:.5}.hero-spray.second .spray-piece{animation-delay:calc(var(--delay) + .45s)}.wave{height:150px;position:absolute;left:0;width:100%;pointer-events:none;z-index:3}.wave svg{width:100%;height:100%;display:block;overflow:visible}.hero-wave,.bottom-wave{bottom:-1px}.top-wave{top:-149px}.closing-top{top:-1px;transform:rotate(180deg)}.wave-line{fill:none;stroke:#b19b67;stroke-width:1.2;vector-effect:non-scaling-stroke;opacity:.65}.story{padding:0 24px 180px}.countdown{position:relative;z-index:4;margin:-85px auto 95px;background:var(--cream);width:360px;max-width:95%;border-radius:50%;aspect-ratio:1.12;display:flex;flex-direction:column;justify-content:center;text-align:center;box-shadow:0 15px 45px #542c400d}.countdown:before,.countdown:after{content:'';position:absolute;inset:9px -4px;border:1px solid #b8a578;border-radius:48% 52% 49% 51%;transform:rotate(-13deg);pointer-events:none}.countdown:after{inset:-2px 8px;transform:rotate(19deg);opacity:.5}.countdown>p{font-family:Display,Georgia,serif;font-size:18px;max-width:200px;margin:0 auto 23px}.count-grid{display:flex;gap:15px;justify-content:center;align-items:center}.count-grid strong{font-family:Display,Georgia,serif;font-size:40px;line-height:1}.count-grid span{display:block;font-size:11px;letter-spacing:.14em;margin-top:8px}.count-grid i{font-style:normal;color:var(--gold)}.heart{font-size:28px;color:var(--gold);margin-top:15px}.story-copy{max-width:585px;margin:auto;text-align:center}.story-copy h2{margin:20px 0 30px}.story-copy>p:not(.eyebrow){font-size:17px;line-height:1.9;color:#664453}.signature{font-size:27px;margin-top:35px;color:var(--gold)}.story-spray{right:-36px;bottom:45px;width:230px;opacity:.28;transform:rotate(182deg)}.section-title{text-align:center;position:relative;z-index:2;padding:0 22px}.section-title h2{margin-top:20px}.album{padding:30px 24px 195px}.wallpaper{position:absolute;inset:0;background-image:url('assets/vintage/botanical.png');background-size:270px;background-repeat:repeat;opacity:.075;z-index:-1;pointer-events:none}.album-frame{position:relative;width:min(580px,86vw);margin:50px auto 0;padding:13px 13px 32px;background:#f5e7e8;box-shadow:0 18px 45px #542c4022;transform:rotate(-2deg);z-index:2}.album-stage{position:relative;aspect-ratio:4/4.6;background:#090c0a;overflow:hidden}.slide{position:absolute;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 850ms ease;object-position:center 40%;transform:scale(1.03)}.slide.active{opacity:1;animation:zoom 9s linear both}.album-controls{position:relative;z-index:3;display:flex;gap:14px;justify-content:center;margin-top:34px}.album-controls button{background:transparent;border:1px solid #87556866;color:var(--dark);width:43px;height:43px;border-radius:50%;font-size:19px}.album-spray{left:calc(50% - 410px);bottom:165px;width:290px;transform:rotate(145deg);opacity:.72;z-index:2}.event{padding:20px 24px 205px}.event-date{display:flex;align-items:center;justify-content:center;gap:25px;font-size:14px;margin-top:42px}.event-date b{font-family:Display,Georgia,serif;font-size:84px;font-weight:400;line-height:1.2;color:var(--gold)}.event-columns,.detail-columns{display:grid;grid-template-columns:1fr 1fr;max-width:950px;margin:65px auto 0;gap:80px;text-align:center}.event-columns article+article,.detail-columns article+article{border-left:1px solid #c2b491;padding-left:70px}.detail-number{display:block;font-family:Display,serif;font-size:17px;color:var(--gold);margin-bottom:18px}.event-columns h3{margin:15px 0}.hour{font-size:20px;color:var(--gold);margin:18px 0}.event-columns .text-button{margin-top:20px}.agenda{padding:25px 24px 185px}.agenda-spray{right:2%;top:15px;width:250px;transform:rotate(170deg);--ink:#c6bb90;opacity:.45}.timeline{list-style:none;display:flex;padding:0;max-width:900px;justify-content:space-between;gap:25px;margin:65px auto 30px}.timeline li{position:relative;flex:1;text-align:center;border-top:1px solid #bbab7880;padding-top:25px}.timeline li:before{content:'';position:absolute;width:7px;height:7px;border-radius:50%;background:#bfa879;top:-4px;left:50%}.timeline time{font-size:13px;color:#d7c598;letter-spacing:.08em}.timeline span{display:block;font-family:Display,Georgia,serif;font-size:27px;margin-top:12px}.details{padding:30px 24px 220px}.detail-columns{margin-top:55px}.small-symbol{font-size:38px;color:var(--gold);display:block;margin-bottom:10px}.detail-columns p{margin:20px 0;color:#664453}.rsvp{padding:25px 24px 110px;text-align:center}.rsvp-inner{position:relative;z-index:2}.rsvp h2{margin:20px 0 25px}.rsvp .button{margin-top:32px}.closing{height:690px;overflow:hidden;color:white;display:flex;align-items:center;justify-content:center;text-align:center}.closing-photo{background:url('assets/vintage/oliva-hero.webp') center 68%/cover no-repeat;animation:zoom 26s ease-in-out infinite alternate}.closing-filter{z-index:-1;background:#422032ac}.closing-copy{padding:20px;z-index:2}.closing h2{font-size:clamp(48px,7vw,86px);margin:23px 0}.closing-copy>p:last-child{font-family:Display,serif;font-size:24px}.closing-spray{left:-40px;bottom:80px;width:290px;--ink:#f1e6c9;opacity:.5;transform:rotate(265deg)}footer{text-align:center;padding:25px 24px 40px}footer>a{font:40px Display,serif}footer em{color:var(--gold);font-size:27px}footer p{font-size:12px;letter-spacing:.15em;margin:10px 0 35px}footer>span{font-size:12px;color:#664453}dialog{border:1px solid #b6a47b;border-radius:160px 160px 12px 12px;background:var(--cream);color:var(--dark);width:min(480px,calc(100% - 32px));padding:65px 35px 35px;max-height:90svh;box-shadow:0 25px 80px #31162444}dialog::backdrop{background:#422032dc;backdrop-filter:blur(5px)}dialog h2{font-size:38px;margin:20px 0 25px}dialog p{font-size:16px}.close{position:absolute;top:20px;right:25px;font-size:28px;background:none;border:0;color:inherit;width:42px;height:42px}label{display:block;font-size:14px;margin:20px 0}input,select{display:block;width:100%;margin-top:9px;padding:13px;background:#f5e7e8;border:1px solid #ba8e9b;border-radius:3px;color:var(--dark);font:16px Arial,sans-serif}form .button{width:100%}.demo-note{font-size:12px!important;line-height:1.6;color:#664453;margin-top:20px}.notice{position:fixed;bottom:85px;left:50%;transform:translateX(-50%);z-index:200;background:var(--dark);color:white;padding:15px 22px;border-radius:10px;width:min(360px,90%);font-size:14px}.reveal:not(.spray){opacity:0;translate:0 22px;transition:opacity 1.2s ease,translate 1.2s cubic-bezier(.2,.65,.3,1)}.reveal.visible:not(.spray){opacity:1;translate:0 0}.hero-copy,.discover{opacity:0}.entered .hero-copy{animation:fade-in 1.6s .25s ease both}.entered .discover{animation:fade-in 1.8s 1s ease both}@keyframes fade-in{to{opacity:1}}@keyframes zoom{from{transform:scale(1)}to{transform:scale(1.12)}}@keyframes branch-in{0%{opacity:0;clip-path:inset(0 100% 100% 0);translate:-14px -10px}40%{opacity:.8}100%{opacity:1;clip-path:var(--region);translate:0 0}}
@media(min-width:1100px){.hero-photo{background-position:center 65%}.hero-copy{top:43%}.story-spray{right:8%;width:290px}.agenda-spray{right:10%}}@media(max-width:650px){.hero{height:100svh;min-height:810px;max-height:1050px}.hero-copy{top:43%}.hero h1{font-size:83px}.hero-date{font-size:12px;letter-spacing:.05em}.hero-date:before,.hero-date:after{width:25px;margin:0 10px}.hero-quote{font-size:22px}.hero-spray.first{width:245px;left:-30px;top:-15px}.hero-spray.second{width:195px;right:-32px;bottom:140px}.discover{bottom:143px;white-space:nowrap}.wave{height:105px}.top-wave{top:-104px}.story{padding-bottom:140px}.countdown{margin:-45px auto 65px;width:300px}.countdown>p{font-size:17px}.count-grid strong{font-size:36px}.story-copy{max-width:340px}.story-copy>p:not(.eyebrow){font-size:16px}.story-spray{width:145px;right:-30px;bottom:22px;opacity:.25}.album{padding-top:15px;padding-bottom:140px}.album-frame{margin-top:36px;width:88vw;padding:9px 9px 23px}.album-spray{left:-50px;bottom:118px;width:170px;opacity:.6}.event{padding:12px 24px 150px}.event-date{gap:20px}.event-columns,.detail-columns{grid-template-columns:1fr;gap:45px;margin-top:40px}.event-columns article+article,.detail-columns article+article{border-left:0;border-top:1px solid #c2b491;padding:42px 0 0;max-width:310px;margin:auto;width:100%}.agenda{padding:15px 24px 140px}.agenda-spray{width:145px;right:-20px;top:0;opacity:.25}.timeline{display:grid;grid-template-columns:1fr 1fr;gap:30px 18px;margin:45px 15px 10px}.timeline span{font-size:25px}.details{padding:20px 24px 150px}.rsvp{padding:20px 24px 85px}.closing{height:650px}.closing-spray{width:200px;left:-35px;bottom:78px}.music{right:15px;bottom:15px;width:44px;height:44px}.eyebrow{font-size:11px;letter-spacing:.19em}.welcome-card{padding-top:45px}dialog{padding:65px 25px 30px}.section-title h2{font-size:39px}}
dialog{border-radius:24px;padding-top:60px}.close{top:12px;right:12px}body:has(dialog[open]){overflow:hidden}
@keyframes branch-in{0%{opacity:0;clip-path:polygon(0 0,0 0,0 0,0 0);translate:-10px -7px}40%{opacity:.7}100%{opacity:1;clip-path:var(--region);translate:0 0}}
@media(max-width:650px){.hero-spray.second{width:140px;bottom:95px;right:-27px;opacity:.5}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important}.reveal:not(.spray){opacity:1;translate:0 0}}
