@font-face{font-family:Wedding Serif;src:url(/fonts/wedding-serif.woff2)format("woff2");font-display:swap;font-weight:400 700}@font-face{font-family:Wedding Script;src:url(/fonts/great-vibes.ttf)format("truetype");font-display:swap;font-weight:400}:root{color:#e8dbc5;font-synthesis:none;--page:#15120f;--panel:#201913;--panel-soft:#292018;--paper:#e6d5b9;--gold:#b79359;--gold-bright:#d0ad70;--burgundy:#642c2f;--ink:#eadfcd;--muted:#ad9a80;--error:#efaaa3;--radius:24px;background:#15120f;font-family:Wedding Serif,Songti SC,STSong,serif;font-size:16px;line-height:1.7}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--page);min-width:320px;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:48px}img{width:100%;display:block}h1,h2,h3,p,figure{margin-top:0}h1,h2,h3{font-weight:400;line-height:1.35}p{margin-bottom:.7rem}.stage-transition{opacity:1;min-height:100vh;transition:opacity .26s,transform .26s;animation:.58s both stage-enter}.stage-transition.is-exiting{opacity:0;transform:scale(.995)}.screen{min-height:100svh;padding:max(24px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.cover-screen{padding:0 0 max(34px, env(safe-area-inset-bottom));background:var(--page);justify-content:flex-start}.cover-photo{border-radius:0 0 52% 52%/0 0 8% 8%;width:100%;height:min(69svh,720px);margin:0;overflow:hidden}.cover-photo img{object-fit:cover;object-position:center 44%;height:100%}.cover-content{width:min(100%,430px);color:var(--ink);padding:30px 28px 0}.eyebrow,.section-kicker{color:var(--gold);letter-spacing:.4em;margin-bottom:.85rem;font-family:Georgia,serif;font-size:.63rem}.cover-content h1{letter-spacing:.18em;margin-bottom:.45rem;font-size:clamp(1.6rem,7vw,2.2rem)}.cover-date{color:var(--gold-bright);letter-spacing:.28em;margin-bottom:.7rem;font-size:.74rem}.cover-copy{color:var(--muted);letter-spacing:.14em;margin-bottom:1.35rem;font-size:.9rem}.cover-content small{color:#756957;margin-top:.75rem;font-size:.72rem;display:block}.primary,.outline-button{letter-spacing:.12em;text-align:center;border-radius:999px;width:100%;max-width:340px;min-height:50px;padding:.75rem 1.5rem;text-decoration:none}.primary{color:#201913;background:linear-gradient(135deg,#d0ad70,#9b7541);border:1px solid #d0ad7094;box-shadow:0 12px 30px #00000047}.outline-button{color:var(--gold-bright);background:0 0;border:1px solid #b793599e;justify-content:center;align-items:center;display:inline-flex}.text-button{color:var(--gold-bright);text-underline-offset:.3em;background:0 0;border:0;padding:.65rem 1rem;text-decoration:underline}.music-button{z-index:20;top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));width:48px;height:48px;color:var(--gold-bright);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#15120fd1;border:1px solid #b79359a3;border-radius:50%;padding:0;position:fixed;box-shadow:0 8px 24px #0000004d}.music-button span{font-size:1.3rem;display:block}.music-button.is-playing span{animation:4s linear infinite music-spin}.game-screen{color:var(--ink);background:radial-gradient(circle at 50% 24%, #392b20, var(--page))}.game-screen h1{z-index:1;letter-spacing:.18em;margin-bottom:.5rem;font-size:clamp(2.1rem,9vw,3rem)}.game-screen>p,.game-progress,.game-screen button,.game-screen canvas{z-index:1;position:relative}.game-instruction,.game-timer{color:var(--muted)}.game-progress{gap:.55rem;min-height:32px;margin-bottom:.5rem;display:flex}.game-progress span{color:#665746;font-size:1.25rem;transition:color .25s,transform .25s}.game-progress span.is-collected{color:var(--gold-bright);transform:scale(1.25)}.game-screen canvas{border-radius:var(--radius);touch-action:none;background:#e6d5b90d;border:1px solid #b7935959;width:min(92vw,440px);height:min(52vh,470px)}.game-timer{margin:.65rem 0 0;font-size:.88rem}.invitation-page{background:var(--page);position:relative;overflow:hidden}.invitation-page:before{content:"";z-index:0;filter:invert()sepia(.35);mix-blend-mode:soft-light;opacity:.11;pointer-events:none;background:url(/textures/rough-paper.svg) 0 0/410px 410px;position:absolute;inset:0}.invitation-hero{z-index:1;text-align:center;position:relative}.invitation-photo-frame{width:100%;height:var(--invitation-hero-height,620px);background:#32251d;border-radius:52% 52% 0 0/7% 7% 0 0;position:relative;overflow:hidden}.invitation-photo-frame:after{content:"";background:linear-gradient(transparent, var(--page));pointer-events:none;height:26%;position:absolute;inset:auto 0 0}.invitation-photo-frame img{object-fit:cover;object-position:center 45%;height:100%}.hero-caption{z-index:2;width:min(100%,520px);margin:-14px auto 0;padding:0 28px 42px;position:relative}.script-heading{color:var(--gold-bright);margin-bottom:.15rem;font-family:Wedding Script,cursive;font-size:clamp(2.5rem,12vw,4.2rem);line-height:1}.hero-date{color:var(--muted);letter-spacing:.36em;margin:1rem 0 .75rem;font-size:.7rem}.hero-caption h1{letter-spacing:.18em;margin-bottom:.55rem;font-size:clamp(1.45rem,6vw,2rem)}.hero-caption>p:last-child{color:var(--muted);letter-spacing:.12em;font-size:.86rem}.invitation-content{z-index:2;width:min(100%,560px);padding-bottom:max(70px, env(safe-area-inset-bottom));margin:auto;position:relative}.invitation-content>section:not(.oval-story):not(.block-editorial),.form-section{text-align:center;margin:82px 28px}.invitation-content h2{color:var(--paper);letter-spacing:.22em;margin-bottom:1.4rem;font-size:clamp(1.15rem,5vw,1.55rem)}.prose-section{padding:0 5%}.prose-section p:not(.section-kicker):not(.script-heading):not(.signature){color:#cbbca6;letter-spacing:.055em;margin-bottom:.6rem;margin-left:auto;margin-right:auto;font-size:.875rem;line-height:2.15}.invitation-content>.story-section{margin-left:10px;margin-right:10px}.prose-lines span{white-space:nowrap;display:block}.story-section .prose-lines{font-size:clamp(.69rem,3.25vw,.875rem)}.flourish{color:var(--gold);margin:1.1rem 0 1.6rem;display:block}[data-reveal]{opacity:0;transition:opacity .85s,transform 1s cubic-bezier(.2,.7,.2,1);transform:translateY(28px)}[data-reveal].is-visible{opacity:1;transform:translate(0,0)}.spread-left,.spread-right{will-change:transform;transition:transform 1.25s cubic-bezier(.16,.72,.24,1)}[data-reveal]:not(.is-visible) .spread-left{transform:translate(20px)}[data-reveal]:not(.is-visible) .spread-right{transform:translate(-20px)}[data-reveal].is-visible .spread-left{transform:translate(-5px)}[data-reveal].is-visible .spread-right{transform:translate(5px)}.wide-photo{margin:88px 0}.wide-photo img{aspect-ratio:3/2;object-fit:cover}.wide-photo-plain{width:100%}.offset-duo{--duo-gap:clamp(42px, 12vw, 64px);margin:92px 20px 110px;position:relative}.offset-duo figure{margin:0;overflow:hidden}.offset-duo-top{position:relative}.offset-duo-tall{width:65%}.offset-duo-tall img{aspect-ratio:3/4;object-fit:cover}.offset-duo-wide{width:90%;margin-left:auto!important}.offset-duo-wide img{aspect-ratio:3/2;object-fit:cover}.offset-duo-english{width:34%;color:var(--gold-bright);letter-spacing:.06em;text-align:center;white-space:nowrap;font-family:Georgia,Times New Roman,serif;font-size:clamp(.61rem,2.9vw,.95rem);line-height:1.7;position:absolute;top:16%;right:0}.offset-duo-english p{margin:0}.offset-duo-english p+p{margin-top:1.2rem}.offset-duo-divider{width:100%;height:1px;margin:var(--duo-gap) auto;background:linear-gradient(90deg, transparent, var(--gold), transparent);display:block;position:relative}.offset-duo-divider:after{content:"◇";color:var(--gold);background:var(--page);padding:0 10px;font-size:.7rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.offset-duo-copy{width:90%;color:var(--muted);letter-spacing:.06em;text-align:center;margin:28px 0 0 auto;font-family:Wedding Serif,Songti SC,serif;font-size:.75rem;line-height:2}.oval-story{min-height:clamp(930px,258vw,1420px);margin:110px 0 125px;position:relative;overflow:hidden}.oval-story-heading{z-index:3;align-items:baseline;gap:18px;display:flex;position:absolute;top:0;left:8%}.oval-story-heading .script-heading{font-size:clamp(3.4rem,18vw,6rem)}.oval-story-heading span{color:var(--muted);letter-spacing:.16em;font-size:.72rem}.oval-story-verse{z-index:3;width:80%;color:var(--muted);letter-spacing:.06em;text-align:center;margin:0;font-family:Wedding Serif,Songti SC,STSong,serif;font-size:.76rem;line-height:2.1}.oval-story-copy{position:absolute;top:13%;left:10%}.oval-story-line{z-index:1;width:116%;height:91%;position:absolute;inset:7% -8% 2%;overflow:visible}.oval-story-line path{fill:none;stroke:var(--gold);stroke-width:1.25px;vector-effect:non-scaling-stroke}.oval-photo{z-index:2;aspect-ratio:2/3;border:3px solid var(--gold);background:var(--panel);border-radius:50%;width:50%;margin:0;position:absolute;overflow:hidden}.oval-photo img{object-fit:cover;height:100%}.oval-photo-groom{top:30%;left:3%}.oval-photo-groom img{object-position:center}.oval-photo-bride{top:58%;right:3%}.oval-photo-bride img{object-position:center}.oval-label{z-index:3;color:var(--paper);margin:0;position:absolute}.oval-label em{color:var(--gold-bright);font-family:Wedding Script,cursive;font-size:clamp(2.2rem,11vw,4rem);line-height:.9;display:block}.oval-label span{letter-spacing:.22em;margin-top:.55rem;font-size:.84rem;display:block}.oval-label-groom{text-align:center;width:31%;top:40%;right:4%}.oval-label-bride{text-align:center;width:31%;top:70%;left:3%}.oval-story-ending{position:absolute;bottom:2%;right:10%}.details-card,.closed-card,.success-card{border-top:1px solid #b7935952;border-bottom:1px solid #b7935952;padding:45px 0}.details-card h3{color:var(--paper);letter-spacing:.08em;margin-bottom:.35rem;font-size:1.25rem}.details-card>p:not(.section-kicker){color:var(--muted)}.address{font-size:.82rem}.wedding-calendar{border-top:1px solid #b793593d;border-bottom:1px solid #b793593d;width:min(100%,330px);margin:1.5rem auto 2rem;padding:18px 14px}.calendar-month{color:var(--paper);letter-spacing:.2em;margin-bottom:.8rem;font-size:1rem}.calendar-month span,.calendar-weekdays{color:var(--gold)}.calendar-grid{grid-template-columns:repeat(7,1fr);display:grid}.calendar-grid>span{place-items:center;min-height:31px;font-size:.76rem;display:grid}.calendar-days{color:var(--muted)}.calendar-days .wedding-day{z-index:0;color:var(--paper);font-weight:700;position:relative}.calendar-days .wedding-day:before{content:"♡";z-index:-1;color:var(--burgundy);font-size:2.55rem;line-height:1;position:absolute}.amap-card{width:88%;color:var(--ink);background:var(--panel);text-align:left;border:1px solid #b793596b;grid-template-rows:142px auto;margin:2rem auto 0;text-decoration:none;display:grid;overflow:hidden}.map-preview{background:#30271f;display:block;position:relative;overflow:hidden}.map-preview img{object-fit:cover;filter:sepia(.28)saturate(.65);width:100%;height:100%}.map-unavailable{width:100%;height:100%;color:var(--muted);letter-spacing:.08em;background:linear-gradient(135deg,#30271f,#1f1a15);align-content:center;place-items:center;gap:.25rem;font-size:.72rem;display:grid}.map-unavailable span{color:var(--gold);letter-spacing:.3em;font-size:1.15rem}.map-copy{flex-direction:column;justify-content:center;padding:14px 16px 16px;display:flex}.map-copy strong{font-size:.9rem;font-weight:400}.map-provider{color:var(--gold);letter-spacing:.14em;margin-bottom:.16rem;font-size:.66rem}.map-copy small{color:var(--muted);margin:.38rem 0 .55rem;font-size:.72rem;line-height:1.45}.map-copy>span{color:var(--gold-bright);font-size:.76rem}.block-editorial{min-height:clamp(960px,246vw,1390px);margin:118px 0;position:relative}.block-editorial figure{margin:0;overflow:hidden}.block-photo-primary{z-index:2;width:76%;position:absolute;top:4%;left:0}.block-photo-primary img{aspect-ratio:3/4;object-fit:cover}.block-words{z-index:3;width:20%;color:var(--gold-bright);letter-spacing:.2em;text-align:center;font-family:Georgia,serif;font-size:clamp(1.25rem,6vw,2rem);line-height:1.25;position:absolute;top:18%;right:3%}.block-words span{text-align:center;padding-left:.2em;display:block}.block-words i{background:var(--gold);width:1px;height:78px;margin:22px auto;display:block}.block-copy{z-index:3;width:52%;color:var(--muted);letter-spacing:.06em;text-align:center;font-size:.72rem;line-height:2;position:absolute;top:48%;right:4%}.block-photo-secondary{z-index:2;width:76%;position:absolute;bottom:0;right:0}.block-photo-secondary img{aspect-ratio:3/4;object-fit:cover}.block-love{z-index:3;width:18%;color:var(--gold-bright);letter-spacing:.22em;text-align:center;font-family:Georgia,serif;font-size:clamp(1.2rem,6vw,2rem);line-height:1.55;position:absolute;bottom:17%;left:4%}.color-block{z-index:1;aspect-ratio:1;background:var(--burgundy);width:19%;display:block;position:absolute}.color-block-top{top:0;right:-5%}.color-block-bottom{background:#785327;bottom:28%;left:-3%}.timeline{max-width:420px;margin:2rem auto 0}.timeline-item{text-align:left;grid-template-columns:105px 20px 1fr;align-items:center;min-height:72px;display:grid}.timeline-item time{color:var(--gold-bright);font-size:.9rem}.timeline-item>span{border:2px solid var(--gold);border-radius:50%;width:8px;height:8px;position:relative}.timeline-item>span:after{content:"";background:#b7935959;width:1px;height:61px;position:absolute;top:9px;left:1px}.timeline-item:last-child>span:after{display:none}.timeline-item p{color:#cbbca6;margin:0}.closing-gallery{min-height:clamp(760px,196vw,1080px);margin:100px 18px 42px;position:relative}.closing-gallery figure{margin:0;position:absolute;overflow:hidden}.closing-window{width:54%}.closing-window img{aspect-ratio:3/4;object-fit:cover}.closing-window-left{top:13%;left:0}.closing-window-right{top:21%;right:0}.closing-gallery-script{z-index:3;width:100%;color:var(--gold-bright);letter-spacing:.01em;text-align:center;font-family:Wedding Script,cursive;font-size:clamp(2rem,9vw,3.2rem);font-weight:400;line-height:.95;position:absolute;top:0;left:0}.closing-classic{width:calc(100% + 36px);top:62%;left:-18px}.closing-classic img{aspect-ratio:3/2;object-fit:cover}.rsvp-divider{width:calc(100% - 40px);margin:0 auto}.rsvp-divider+.form-section{margin-top:clamp(42px,12vw,64px)}.form-section{scroll-margin-top:24px}.form-header{text-align:center;padding:0 8px 16px}.form-header h2{letter-spacing:.12em;margin-bottom:.7rem;font-size:clamp(1.6rem,7vw,2.2rem)}.form-header p:last-child{color:var(--muted)}.form-section form{text-align:left;background:#201913bf;border:1px solid #b793595c;margin-bottom:20px;padding:28px 22px}.form-section label{margin:1.2rem 0;font-weight:400;display:block}.form-section input:not([type=radio]):not([type=checkbox]),.form-section textarea{color:#2a211a;background:#eadfcf;border:1px solid #806c50;border-radius:8px;width:100%;min-height:50px;margin-top:.45rem;padding:.75rem .9rem;font-size:16px;display:block}.form-section textarea{resize:vertical;min-height:96px}.form-section fieldset{border:0;margin:1.4rem 0;padding:0}.form-section legend{margin-bottom:.55rem}.choice{align-items:center;gap:.7rem;min-height:48px;margin:.3rem 0!important;display:flex!important}.choice input{width:21px;height:21px;accent-color:var(--gold);flex:none}.row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.required,.error{color:var(--error)}.error{background:#7d282638;padding:.7rem .9rem;font-weight:600}.privacy-note{color:var(--muted);text-align:center;margin:.8rem 0 0;font-size:.78rem}.closing-silhouette{border-radius:0 0 52% 52%/0 0 7% 7%;margin:100px 0 0;overflow:hidden}.closing-silhouette img{aspect-ratio:3/4;object-fit:cover}.closing-section{padding-top:55px;margin-top:0!important}.signature{color:var(--gold-bright);letter-spacing:.16em;font-size:1rem;margin-top:1.8rem!important}.closing-section .text-button{margin:.8rem auto 0;display:block}.success-screen{background:radial-gradient(circle at 50% 22%, #392b20, var(--page))}.success-card{z-index:1;width:min(100%,500px);position:relative}.success-mark{border:1px solid var(--gold);width:64px;height:64px;color:var(--gold-bright);border-radius:50%;place-items:center;margin:0 auto 1rem;font-size:1.6rem;display:grid}.success-name{color:var(--gold-bright)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}:focus-visible{outline:3px solid var(--gold-bright);outline-offset:3px}button:disabled{cursor:wait;opacity:.6}@keyframes music-spin{to{transform:rotate(360deg)}}@keyframes stage-enter{0%{opacity:0;transform:scale(1.005)}}@media (width>=700px){.cover-photo{width:min(100%,560px)}.invitation-photo-frame{width:min(100%,560px);margin:auto}.wide-photo{border-radius:2px;overflow:hidden}}@media (width<=350px){.row{grid-template-columns:1fr;gap:0}.oval-story-copy{font-size:.72rem;left:7%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-reveal]{opacity:1;transform:none}[data-reveal] .spread-left,[data-reveal] .spread-right{transform:none}}
