@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400&family=Kirang+Haerang&family=Manrope:wght@400;500;700&display=swap";*{margin:0;padding:0;box-sizing:border-box}html{scroll-snap-type:y mandatory;overflow-y:scroll;scroll-behavior:smooth}body{background:#f9f6f0;font-family:Cormorant Garamond,serif;position:relative}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;background-image:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(139,119,101,.03) 2px,rgba(139,119,101,.03) 4px),repeating-linear-gradient(90deg,transparent,transparent 2px,rgba(139,119,101,.03) 2px,rgba(139,119,101,.03) 4px);opacity:.4}body:after{content:"";position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E");mix-blend-mode:multiply}#page1-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:4}.flower-confetti{position:absolute;left:50%;top:38%;opacity:0;will-change:transform,opacity;filter:drop-shadow(0 4px 10px rgba(128,95,103,.24));animation:page1FlowerConfetti var(--dur) cubic-bezier(.2,.9,.3,1) forwards}.flower-confetti svg{width:100%;height:100%;display:block}@keyframes page1FlowerConfetti{0%{opacity:0;transform:translate(-50%,-52%) scale(.42) rotate(0)}10%{opacity:var(--max-op)}80%{opacity:calc(var(--max-op) * .82)}to{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-52% + var(--y))) scale(var(--s)) rotate(var(--rot))}}#page1{height:100vh;scroll-snap-align:start;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse at 20% 30%,rgba(255,250,240,.6) 0%,transparent 50%),radial-gradient(ellipse at 80% 70%,rgba(252,248,238,.5) 0%,transparent 50%),#f9f6f0;box-shadow:inset 0 0 100px #8b776514}.ring{position:absolute;border-radius:50%;pointer-events:none}#ring1{width:clamp(280px,56vw,540px);height:clamp(280px,56vw,540px);border:1px solid rgba(201,164,164,.15);animation:breathe 5s ease-in-out infinite}#ring2{width:clamp(330px,66vw,640px);height:clamp(330px,66vw,640px);border:1px dashed rgba(201,164,164,.07);animation:spin 80s linear infinite}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.022)}}@keyframes spin{to{transform:rotate(360deg)}}#num-row{position:absolute;z-index:6;display:flex;align-items:flex-end;justify-content:center}.num{font-family:"DM Serif Display",serif;font-style:italic;font-size:clamp(110px,22vw,210px);line-height:1;letter-spacing:-.02em;-webkit-user-select:none;user-select:none;display:inline-block;opacity:0;transform:scale(.85);will-change:transform,opacity}.num.typewriter-in{animation:typewriterStrike .35s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes typewriterStrike{0%{opacity:0;transform:scale(.88) translateY(3px)}50%{opacity:1;transform:scale(1.05) translateY(-1px)}75%{transform:scale(.98) translateY(.5px)}to{opacity:1;transform:scale(1) translateY(0)}}#n3{color:#c9a4a4;text-shadow:2px 2px 4px rgba(139,119,101,.15)}#n2,#n1{color:#3a2e2e;text-shadow:2px 2px 4px rgba(58,46,46,.2)}#frac-wrap{position:absolute;z-index:6;display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;pointer-events:none;transform:rotateY(180deg) translateY(14px);will-change:transform,opacity;padding:32px 48px;background:#fffcf580;border-radius:2px;box-shadow:0 2px 8px #8b77651f,0 8px 24px #8b776514,inset 0 1px #ffffff80;position:relative;transform-style:preserve-3d;backface-visibility:hidden}#frac-wrap:before,#frac-wrap:after{content:"";position:absolute;width:20px;height:20px;border:2px solid rgba(201,164,164,.3)}#frac-wrap:before{top:8px;left:8px;border-right:none;border-bottom:none}#frac-wrap:after{bottom:8px;right:8px;border-left:none;border-top:none}#hero-names{font-family:Kirang Haerang,cursive;font-style:normal;font-weight:400;font-size:clamp(40px,8.8vw,72px);line-height:1.04;letter-spacing:.02em;color:#34292a;white-space:nowrap}.name-samuel{color:#c9a4a4}#frac-line{width:clamp(120px,30vw,220px);height:1px;background:linear-gradient(to right,transparent,#c9a4a4 20%,#c9a4a4 80%,transparent);margin:0;transform:scaleX(0);transform-origin:center;transition:transform .9s cubic-bezier(.16,1,.3,1)}#frac-line.in{transform:scaleX(1)}#hero-date{font-family:Cormorant Garamond,serif;font-style:italic;font-weight:400;font-size:clamp(22px,4.8vw,38px);line-height:1.1;letter-spacing:.14em;color:#b89fa0;white-space:nowrap;display:inline-flex;align-items:baseline;gap:.02em}.hero-date-char{display:inline-block;opacity:0;transform:translateY(7px);transition:opacity .55s ease,transform .55s cubic-bezier(.16,1,.3,1)}.hero-date-char.in{opacity:1;transform:translateY(0)}#page1{perspective:2500px}#num-row{transform-style:preserve-3d;backface-visibility:hidden}#num-row.page-turn-out{animation:pageTurnOut 1.8s cubic-bezier(.65,.05,.36,1) forwards}@keyframes pageTurnOut{0%{transform:rotateY(0);opacity:1;filter:drop-shadow(0 0 0 transparent)}50%{opacity:.7;filter:drop-shadow(-15px 10px 25px rgba(58,46,46,.3))}to{transform:rotateY(-180deg);opacity:0;filter:drop-shadow(0 0 0 transparent)}}#frac-wrap.page-turn-in{animation:pageTurnIn 1.8s cubic-bezier(.65,.05,.36,1) forwards}@keyframes pageTurnIn{0%{transform:rotateY(180deg) translateY(14px);opacity:0;filter:drop-shadow(0 0 0 transparent)}50%{opacity:.5;filter:drop-shadow(15px 10px 25px rgba(139,119,101,.3))}to{transform:rotateY(0) translateY(0);opacity:1;filter:drop-shadow(0 0 0 transparent)}}#invite-above{position:absolute;top:clamp(32px,8vw,72px);left:50%;transform:translate(-50%);z-index:6;font-style:italic;font-weight:300;font-size:13px;letter-spacing:.28em;text-transform:uppercase;color:#c9a4a4;white-space:nowrap;opacity:0;transition:opacity 1s ease}#invite-tagline{position:absolute;bottom:clamp(90px,14vw,130px);left:50%;transform:translate(-50%);z-index:6;font-style:italic;font-weight:300;font-size:15px;letter-spacing:.2em;color:#b89fa0;white-space:nowrap;opacity:0;transition:opacity 1s ease .3s}#scroll-hint{position:absolute;bottom:28px;left:50%;transform:translate(-50%);z-index:7;display:flex;flex-direction:column;align-items:center;gap:6px;opacity:0;transition:opacity 1s ease}#scroll-hint span{font-style:italic;font-weight:300;font-size:12px;letter-spacing:.22em;color:#b99a9a80;white-space:nowrap}.chevron{width:12px;height:12px;border-right:1px solid rgba(185,154,154,.4);border-bottom:1px solid rgba(185,154,154,.4);transform:rotate(45deg);animation:bob 2s ease-in-out infinite}@keyframes bob{0%,to{transform:rotate(45deg) translateY(0);opacity:.4}50%{transform:rotate(45deg) translateY(4px);opacity:.8}}#heart{position:fixed;top:42px;right:44px;z-index:10;font-size:15px;color:#c9a4a4;opacity:0;transition:opacity 1s ease;animation:hb 3s ease-in-out infinite}@keyframes hb{0%,to{transform:scale(1)}35%{transform:scale(1.18)}55%{transform:scale(1)}75%{transform:scale(1.1)}}#page2{min-height:100vh;scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:72px 24px 80px;background:radial-gradient(ellipse at 30% 40%,rgba(255,250,240,.7) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(252,248,238,.6) 0%,transparent 50%),#f9f6f0;box-shadow:inset 0 0 120px #8b77651a;position:relative;overflow:hidden}.p2-ring{position:absolute;border-radius:50%;pointer-events:none;border:1px solid rgba(201,164,164,.1)}#p2r1{width:600px;height:600px;top:-100px;right:-150px}#p2r2{width:400px;height:400px;bottom:-80px;left:-100px;border-style:dashed;border-color:#c9a4a412}.p2-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;max-width:500px;width:100%;padding:48px 40px;background:#fffcf5b3;border-radius:2px;box-shadow:0 4px 12px #8b776526,0 12px 32px #8b77651a,inset 0 1px #fff9}.p2-content:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%) rotate(-1deg);width:120px;height:30px;background:#e8e1d299;border-left:1px dashed rgba(139,119,101,.15);border-right:1px dashed rgba(139,119,101,.15);box-shadow:0 2px 4px #8b77651a}.p2-date{font-family:"DM Serif Display",serif;font-style:italic;font-size:clamp(52px,11vw,90px);color:#3a2e2e;letter-spacing:-.02em;line-height:1;margin-bottom:6px}.p2-date .frac-slash{color:#c9a4a4}.p2-subtitle{font-style:italic;font-weight:300;font-size:13px;letter-spacing:.28em;text-transform:uppercase;color:#c9a4a4;margin-bottom:40px}.p2-names{font-family:Kirang Haerang,cursive;font-weight:400;font-size:clamp(16px,3.2vw,21px);letter-spacing:.02em;color:#4a3b3f;margin-bottom:10px}.p2-divider{width:60px;height:1px;background:linear-gradient(to right,transparent,#c9a4a4,transparent);margin-bottom:40px}.program{width:100%;display:flex;flex-direction:column;gap:0;margin-bottom:48px;padding:20px 24px;background:#fffffa99;border-radius:2px;box-shadow:0 2px 6px #8b77651a,inset 0 1px #fffc;border:1px solid rgba(201,164,164,.12)}.program-item{display:flex;align-items:baseline;padding:14px 0;border-bottom:1px solid rgba(201,164,164,.15)}.program-item:first-child{border-top:1px solid rgba(201,164,164,.15)}.prog-time{font-style:italic;font-weight:300;font-size:13px;letter-spacing:.15em;color:#c9a4a4;min-width:70px;flex-shrink:0}.prog-dot{width:4px;height:4px;border-radius:50%;background:#c9a4a466;flex-shrink:0;margin:0 16px;position:relative;top:-1px}.prog-event{font-weight:400;font-size:16px;color:#3a2e2e;letter-spacing:.02em;flex:1}.prog-sub{font-style:italic;font-weight:300;font-size:13px;color:#b89fa0;display:block;margin-top:2px;letter-spacing:.05em}#rsvp-btn{font-family:Cormorant Garamond,serif;font-style:italic;font-weight:300;font-size:14px;letter-spacing:.3em;text-transform:uppercase;color:#4a3b3f;background:#e8e1d2e6;border:2px solid rgba(201,164,164,.4);border-radius:40px;padding:14px 44px;cursor:pointer;transition:all .3s;box-shadow:0 3px 12px #8b776533,inset 0 1px #ffffff80;position:relative}#rsvp-btn:hover{background:#e8e1d2;transform:translateY(-2px);box-shadow:0 6px 20px #8b776540,inset 0 1px #fff9;border-color:#c9a4a499}#rsvp-btn:active{transform:translateY(0);box-shadow:0 2px 8px #8b776533,inset 0 1px 2px #8b77651a}.p2-footer{margin-top:28px;font-style:italic;font-weight:300;font-size:12px;letter-spacing:.18em;color:#b99a9a73}
