@font-face{font-family:LoveBrush;src:url('assets/calligraphy.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:LovePen;src:url('assets/handwriting.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--paper:#f7f4ee;--cream:#f0eae0;--ink:#48483f;--muted:#929083;--sage:#778575;--champagne:#b3977d;--line:#d8d3c666;--brush:LoveBrush,'Kaiti SC',KaiTi,STKaiti,serif;--pen:LovePen,'Kaiti SC',KaiTi,STKaiti,serif;--sans:Arial,'PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:94px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}body.covered,body.dialog-open{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--sage);outline-offset:5px}button{border:0}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}p,h1,h2,h3{margin-top:0}button,a{touch-action:manipulation}.eyebrow{font-size:10px;letter-spacing:3.2px;line-height:1.8;color:var(--sage);font-weight:400}.pill-button{min-height:50px;padding:0 26px;border-radius:99px;display:inline-flex;align-items:center;justify-content:center;gap:28px;font-size:12px;letter-spacing:1px;transition:transform .25s,background .25s,box-shadow .25s}.pill-button:hover{transform:translateY(-3px);box-shadow:0 8px 24px #4b493e0d}.pill-button span{font-size:20px;line-height:1}.dark{background:#535a4c;color:#fffdf5}.dark:hover{background:#434a3d}.light{background:transparent;border:1px solid #aaa48d77;color:var(--ink)}
.site-header{height:82px;max-width:1280px;margin:auto;padding:0 52px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}.wordmark{font:24px Georgia,serif;letter-spacing:-1px}.wordmark>span:not(.wordmark-dot){font-style:italic;font-size:17px;margin:0 5px;color:var(--champagne)}.wordmark-dot{color:var(--sage)}.site-header nav{display:flex;gap:35px}.site-header nav a{font-size:11px;letter-spacing:1.5px;color:#797b6e;transition:color .2s}.site-header nav a:hover{color:#3e4b3b}.header-share{background:none;color:var(--sage);padding:10px}.header-share svg{width:18px;height:18px}
.hero{position:relative;max-width:1440px;min-height:min(750px,calc(100svh - 82px));height:750px;margin:auto;overflow:hidden;isolation:isolate;background:#f4f0e8}.hero-art{position:absolute;inset:0 0 0 40%;z-index:-1;overflow:hidden}.hero-art img{width:100%;height:100%;object-fit:cover;object-position:center 53%;transform:scale(1.05);will-change:transform}.hero-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#f4f0e8,transparent 28%)}.hero-content{position:relative;padding:105px 0 0 10.5%;width:62%;z-index:1}.hero-content .eyebrow{margin-bottom:29px}.hero h1{font:76px/1.3 var(--brush);font-weight:400;letter-spacing:0;margin:0 0 20px;color:#41483d;white-space:nowrap}.title-dot{color:var(--champagne);font-size:.65em;margin-left:3px}.hero-intro{font:17px/1.8 var(--pen);letter-spacing:1px;color:#959185;margin-bottom:43px}.hero-names{display:flex;align-items:center;gap:23px;font:31px/1.5 var(--pen);letter-spacing:3px;margin-bottom:28px}.hero-names i{font:italic 27px Georgia,serif;color:var(--champagne);letter-spacing:0}.hero-date{display:grid;width:230px;gap:5px;padding:19px 0 0;border-top:1px solid #bdb8a45e}.hero-date>span:first-child{font:12px Georgia,serif;letter-spacing:3px;color:#a39c8b}.hero-date>b{font:38px/1.2 Georgia,serif;letter-spacing:2px;color:#687161}.hero-date b span{font-size:20px;color:#b3aa95;margin:0 10px}.hero-date>span:last-child{font:13px/1.7 var(--pen);letter-spacing:1px;color:#8d8d7c;margin-top:5px}.hero-button{margin-top:32px}.hero-side-note{position:absolute;right:37px;top:57px;writing-mode:vertical-rl;letter-spacing:3px;font-size:8px;color:#a29e8d}.scroll-cue{position:absolute;bottom:25px;left:10.5%;display:flex;align-items:center;gap:16px;font:11px var(--pen);letter-spacing:1px;color:#8f907e}.scroll-line{width:24px;height:1px;background:#a7a890;transform-origin:left;animation:breath-line 2.5s ease-in-out infinite}.hero-content{animation:rise-in .9s .08s both}.hero-art{animation:soft-in 1.2s both}@keyframes breath-line{50%{transform:scaleX(1.45)}}@keyframes rise-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-in{from{opacity:0}to{opacity:1}}
.section{max-width:1120px;margin:auto;padding:95px 45px}.section-number{font:13px Georgia,serif;letter-spacing:2px;color:var(--champagne);display:flex;align-items:center;gap:18px;margin-bottom:48px}.section-number:before{content:'';width:33px;height:1px;background:#b7aa935a}.section-number span{font:11px var(--sans);color:#a09c8e;letter-spacing:2px}.letter-layout{display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:start;padding:0 35px}.letter-heading .eyebrow{margin-bottom:23px}.letter-heading h2{font:53px/1.35 var(--brush);font-weight:400;letter-spacing:3px;color:#525b4d;margin-bottom:25px}.little-flower{font:52px Georgia,serif;color:#c4b49b;display:block;margin:15px 0;animation:slow-turn 24s linear infinite;width:45px;line-height:1}.letter-copy{padding-top:3px;font:17px/2 var(--pen);color:#797e6d}.letter-copy p{margin-bottom:25px}.letter-dear{color:#4e5849!important;margin-bottom:27px!important}.letter-signature{font:26px/1.4 var(--pen);color:#54624e;margin:35px 0 8px!important;letter-spacing:2px}.letter-signature span{font:italic 22px Georgia,serif;color:#b3977d;margin:0 7px}.letter-footnote{font:8px var(--sans);letter-spacing:2px;color:#a7a490}@keyframes slow-turn{to{transform:rotate(360deg)}}
.details-section{padding-top:62px}.details-top{display:flex;align-items:end;justify-content:space-between;margin-bottom:32px}.details-top .eyebrow{margin-bottom:13px}.details-top h2{font:45px/1.3 var(--brush);font-weight:400;color:#525b4d;margin:0}.calendar-link{display:inline-flex;align-items:center;gap:8px;font-size:11px;color:#8e957f;border-bottom:1px solid #b9bea575;padding-bottom:8px;transition:color .2s}.calendar-link:hover{color:#4f6048}.calendar-link svg{width:16px;height:16px}.event-grid{display:grid;grid-template-columns:1fr 1fr 1.15fr;gap:18px}.event-tile{border:1px solid #d3cdbb7a;border-radius:18px;padding:28px 25px 26px;background:linear-gradient(135deg,#fffdf6aa,#eeebdf55);min-height:263px;transition:transform .35s,box-shadow .35s,border-color .35s}.event-tile:hover{transform:translateY(-6px);border-color:#a6ad9988;box-shadow:0 15px 30px #55544108}.tile-label{font-size:8px;letter-spacing:2px;color:#aaa58e}.date-display,.time-display{display:flex;gap:10px;align-items:baseline;margin:31px 0 21px;white-space:nowrap}.date-display strong,.time-display strong{font:47px/1 Georgia,serif;font-weight:400;color:#697360}.date-display>span{font:20px Georgia,serif;color:#bcb59e}.time-display>span{font-size:9px;letter-spacing:1px;color:#9ca18d}.event-tile>p{font:15px/1.5 var(--pen);color:#707863;margin:0 0 7px}.tile-note{font:12px/1.7 var(--pen);color:#a5a491}.venue-icon{display:block;width:28px;height:28px;stroke-width:1.1;margin:23px 0 15px;color:#99a38c}.venue-tile h3{font:23px/1.4 var(--pen);font-weight:400;color:#60705a;margin:0 0 10px;white-space:nowrap}.venue-tile h3 span{font-size:15px;margin-left:6px}.venue-tile>p{font-size:12px;color:#8f9883}.text-link{font-size:11px;letter-spacing:1px;background:none;padding:8px 0 0;display:flex;align-items:center;gap:22px;color:#6a785e}.text-link span{font-size:20px;transition:transform .2s}.text-link:hover span{transform:translate(3px,-3px)}.arrival-note{display:flex;align-items:center;gap:11px;font:13px/1.6 var(--pen);color:#a09d89;padding:24px 4px 0}.arrival-dot{width:5px;height:5px;background:#afbaa0;border-radius:50%;flex-shrink:0}.arrival-note p{margin:0}.arrival-note button{margin-left:auto;white-space:nowrap;background:none;padding:8px 0;font-size:10px;letter-spacing:1px;color:#99a18b}.arrival-note button span{margin-left:7px}
.wishes-section{padding-top:55px;padding-bottom:85px}.wishes-content{text-align:center;position:relative;padding:48px 25px 38px;border:1px solid #d6d2c358;border-radius:24px;background:radial-gradient(ellipse at 50% 48%,#f4eddf 0%,#f8f5ee55 66%,transparent 100%)}.wishes-content .eyebrow{font-size:9px;margin-bottom:16px}.wishes-content h2{font:42px/1.35 var(--brush);font-weight:400;color:#5b6352;margin-bottom:17px}.wishes-description{font:15px/1.8 var(--pen);min-height:27px;margin-bottom:0;color:#9c9d87}.wish-heart{position:relative;display:block;border-radius:50%;width:100px;height:100px;margin:31px auto 30px;background:#fbf8f0;border:1px solid #dcd1bc88;transition:transform .3s cubic-bezier(.34,1.56,.64,1),background .3s;isolation:isolate}.wish-heart:hover{transform:scale(1.07)}.wish-heart:active{transform:scale(.91)}.wish-heart>svg{width:40px;height:40px;stroke-width:1.6;color:#b69a80;fill:transparent;transition:fill .35s,color .35s;position:relative}.wish-heart[aria-pressed=true]{background:#f0e3d3;border-color:#ba9e7b}.wish-heart[aria-pressed=true]>svg{fill:#b99c7c;color:#b99c7c}.heart-halo{position:absolute;inset:-10px;border:1px solid #c1b19830;border-radius:50%;animation:heart-breath 2.6s ease-in-out infinite}.wish-heart.pulse{animation:heart-pop .6s cubic-bezier(.34,1.56,.64,1)}.wish-tags{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.wish-tags button{padding:10px 15px;border-radius:99px;background:#fdfbf477;border:1px solid #cdc9b95f;font:12px var(--pen);color:#9b9c84;transition:all .25s}.wish-tags button:hover,.wish-tags button.selected{border-color:#acb09b;background:#e8e9dc;color:#707e61}.wish-footnote{display:block;margin-top:23px;font:11px var(--pen);color:#b4ad97;letter-spacing:1px}@keyframes heart-breath{50%{transform:scale(1.08);opacity:.45}}@keyframes heart-pop{35%{transform:scale(1.18)}70%{transform:scale(.97)}100%{transform:scale(1)}}
.closing-section{text-align:center;max-width:1120px;margin:auto;padding:32px 25px 80px}.closing-line{width:1px;height:48px;background:linear-gradient(#c1b49b88,transparent);display:block;margin:0 auto 29px}.closing-section>.eyebrow{font-size:9px;margin-bottom:19px}.closing-section h2{font:48px/1.3 var(--brush);font-weight:400;margin-bottom:19px;color:#535f49}.closing-section>p:not(.eyebrow){font:21px var(--pen);letter-spacing:2px;color:#8e967f;margin-bottom:12px}.closing-section>span:not(.closing-line){font:11px Georgia,serif;letter-spacing:2px;color:#b1ab96}.closing-actions{display:flex;justify-content:center;gap:12px;margin:32px 0 24px}.closing-actions .pill-button{font-size:11px;min-height:45px;padding:0 23px;gap:20px}.replay{background:none;color:#b0ab97;font:11px var(--pen);text-decoration:underline;text-underline-offset:5px;padding:8px}.site-footer{max-width:1120px;margin:auto;padding:25px 45px 32px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;color:#b4ad9a;font-size:8px;letter-spacing:2px}.site-footer>span:last-child{font:10px var(--pen);letter-spacing:1px}.mobile-dock{display:none}.reveal{opacity:1;transform:translateY(0)}.motion-ready .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.75,.3,1),transform .8s cubic-bezier(.2,.75,.3,1)}.motion-ready .reveal.visible{opacity:1;transform:translateY(0)}.event-grid .reveal:nth-child(2){transition-delay:.08s}.event-grid .reveal:nth-child(3){transition-delay:.16s}
.cover{position:fixed;inset:0;z-index:100;background:#f1eee6;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:opacity .65s ease,visibility .65s}.cover[hidden]{display:none}.cover-light{position:absolute;inset:0;opacity:.3;background:url('assets/floral-editorial.webp') 75% 65%/cover no-repeat;filter:blur(1px)}.cover-light:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#f5f0e699,#f5f0e63b)}.cover-skip{position:absolute;right:35px;top:28px;background:none;font:12px var(--pen);color:#8a8f7b;letter-spacing:1px;padding:10px;z-index:3}.cover-skip span{margin-left:9px}.cover-content{position:relative;text-align:center;width:min(460px,90vw);padding:25px 20px 5px}.cover-content>.eyebrow{font-size:8px;letter-spacing:2.7px;margin-bottom:19px;color:#a7a188}.cover-content h2{font:44px/1.3 var(--brush);font-weight:400;color:#637058;letter-spacing:1px;margin:0 0 61px}.envelope{position:relative;display:block;margin:0 auto 34px;width:300px;height:197px;background:none;perspective:900px;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transform-style:preserve-3d;transition:transform .25s ease;isolation:isolate;padding:0;outline-offset:14px!important}.envelope-back{position:absolute;inset:0;border-radius:4px;background:#d5cebc;box-shadow:0 18px 42px #83785726,0 1px 3px #796d5333}.envelope-letter{position:absolute;inset:10px 13px 9px;padding:23px 12px 12px;background:#fffaf0;box-shadow:0 1px 6px #6f66581a;display:flex;flex-direction:column;align-items:center;gap:19px;transition:transform .9s cubic-bezier(.22,.72,.15,1);z-index:1;border-radius:2px}.letter-caption{font-size:8px;letter-spacing:2px;color:#a2a58d}.letter-names{font:20px var(--pen);color:#75816b}.letter-date{font:11px Georgia,serif;letter-spacing:2px;color:#aea28a}.envelope-front{position:absolute;inset:0;background:linear-gradient(160deg,#e8e1d2,#d9d0bf);clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);z-index:3;border-radius:3px}.envelope-front:after{content:'';position:absolute;inset:0;background:linear-gradient(33deg,transparent 49.6%,#c6bcaa77 50%,transparent 50.4%),linear-gradient(-33deg,transparent 49.6%,#c6bcaa77 50%,transparent 50.4%);opacity:.5}.envelope-flap{position:absolute;top:0;left:0;right:0;height:110px;background:linear-gradient(145deg,#eee7d9,#dbd2c0);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:center top;transition:transform .7s cubic-bezier(.22,.7,.2,1);z-index:4;backface-visibility:visible;filter:drop-shadow(0 1px 1px #89745c44)}.envelope-seal{position:absolute;width:44px;height:44px;left:calc(50% - 22px);top:86px;border-radius:50%;background:radial-gradient(ellipse at 30% 20%,#e8ddc6,#c9baa0);box-shadow:0 3px 7px #8d7b5833,inset 0 0 0 3px #e9dfcc99;display:grid;place-items:center;z-index:5;transition:opacity .25s,transform .25s}.envelope-seal svg{width:18px;height:18px;color:#907d62;stroke-width:1.1}.open-invitation{background:none;padding:10px 5px;border-bottom:1px solid #b1b59f88;font:16px var(--pen);color:#6d795f;letter-spacing:3px;display:flex;align-items:center;justify-content:space-between;gap:35px;margin:0 auto;transition:gap .3s}.open-invitation:hover{gap:48px}.open-invitation>span{font:24px Georgia,serif;letter-spacing:0}.cover-caption{font:12px var(--pen);color:#a9a28b;margin:22px 0 0;letter-spacing:1px}.cover-bottom{position:absolute;bottom:28px;font-size:8px;letter-spacing:3px;color:#b7af99}.cover.opening .envelope-seal{opacity:0;transform:scale(.7)}.cover.opening .envelope-flap{transform:rotateX(180deg);z-index:0}.cover.opening .envelope-letter{transform:translateY(-94px);transition-delay:.22s;z-index:2}.cover.opening .envelope{transform:translateY(18px)}.cover.departing{opacity:0;visibility:hidden;pointer-events:none}.cover.departing .cover-content{transform:translateY(-15px);transition:transform .7s}.cover.opening .open-invitation{opacity:.4;pointer-events:none}
dialog{width:min(420px,calc(100% - 34px));border:1px solid #c6c8b780;border-radius:22px;background:#fbf8f1;padding:33px 29px 27px;color:var(--ink);box-shadow:0 25px 100px #353b2440;animation:dialog-arrive .3s ease}dialog::backdrop{background:#47503f60;backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:12px;top:10px;width:36px;height:36px;background:none;font-size:27px;font-weight:200;color:#a2a38c}.dialog-close:hover{color:#687c54}dialog>.eyebrow{font-size:8px;margin-bottom:14px}dialog h2{font:33px/1.4 var(--brush);font-weight:400;color:#66775a;margin:0 0 21px}.dialog-venue{font:21px/1.5 var(--pen);margin:0 0 9px;color:#707d60}.dialog-note{font:13px/1.6 var(--pen);color:#a4a58d;margin:0 0 27px}.map-option{display:flex;align-items:center;justify-content:space-between;padding:19px 17px;background:#f4f2e8;border:1px solid #d4d8c466;border-radius:12px;margin-top:12px;transition:background .2s,transform .2s}.map-option:hover{background:#eaeede;transform:translateY(-2px)}.map-option b{font-weight:400;font-size:13px;color:#718461}.map-option small{display:block;font-size:10px;color:#a0a88e;margin-top:9px;letter-spacing:.5px}.map-option>span:last-child{font-size:25px;color:#9ea98a}.map-help{font:11px/1.8 var(--pen);color:#abb097;text-align:center;margin:20px 0 0}.poster-download{display:flex;justify-content:center;gap:25px;padding:20px 5px 3px;font:14px var(--pen);color:#9c9f85}#share-dialog>.pill-button{width:100%;font-size:12px;margin-top:3px}@keyframes dialog-arrive{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
#particles{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:90}.heart-particle{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);color:var(--particle-color);animation:float-heart var(--duration) cubic-bezier(.12,.56,.23,1) forwards}.heart-particle svg{width:100%;height:100%;fill:currentColor;stroke:none}@keyframes float-heart{0%{opacity:0;transform:translate(-50%,-50%) scale(.5) rotate(0deg)}12%{opacity:.8}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.1) rotate(var(--rotate))}}#toast{position:fixed;left:50%;bottom:33px;transform:translate(-50%,10px);max-width:calc(100vw - 24px);text-align:center;background:#59634fee;padding:14px 23px;border-radius:99px;box-shadow:0 8px 22px #38442418;color:#fffef3;font:13px var(--pen);opacity:0;pointer-events:none;z-index:110;transition:opacity .2s,transform .2s;white-space:nowrap}#toast.visible{opacity:1;transform:translate(-50%,0)}.noscript-navigation{padding:20px;text-align:center;font-size:14px}
@media(min-width:1500px){.hero{border-radius:2px}.hero-content{padding-left:12%}.scroll-cue{left:12%}}
@media(max-width:1000px) and (min-width:701px){.site-header{padding:0 35px}.hero{height:710px;min-height:710px}.hero-content{padding:90px 0 0 7%;width:75%}.hero h1{font-size:64px}.hero-intro{font-size:15px}.hero-art{left:35%}.scroll-cue{left:7%}.section{padding-left:36px;padding-right:36px}.letter-layout{gap:45px;padding:0 10px}.letter-heading h2{font-size:46px}.letter-copy{font-size:15px}.event-tile{padding:25px 19px}.venue-tile h3{font-size:20px}.venue-tile h3 span{font-size:13px}.time-display strong,.date-display strong{font-size:39px}.tile-label{font-size:7px;letter-spacing:1px}}
@media(max-width:700px){html{scroll-padding-top:70px}.site-header{height:65px;padding:0 21px}.wordmark{font-size:21px}.wordmark>span:not(.wordmark-dot){font-size:15px;margin:0 4px}.site-header nav{gap:19px}.site-header nav a{font-size:9px;letter-spacing:.7px}.header-share{display:none}.hero{height:715px;min-height:715px;max-height:none;background:#f4f0e8}.hero-art{inset:0}.hero-art img{object-position:center 60%;opacity:.94}.hero-art:after{background:linear-gradient(180deg,#f4f0e84d 0%,#f4f0e833 53%,transparent 80%)}.hero-content{width:100%;padding:66px 26px 0}.hero-content .eyebrow{font-size:8px;letter-spacing:3px;margin-bottom:25px}.hero h1{font-size:clamp(47px,12.4vw,67px);line-height:1.4;white-space:nowrap;margin-bottom:17px;letter-spacing:0}.title-dot{font-size:.52em;margin-left:1px}.hero-intro{font-size:14px;letter-spacing:.5px;margin-bottom:29px}.hero-names{font-size:27px;gap:18px;letter-spacing:2px;margin-bottom:24px}.hero-names i{font-size:24px}.hero-date{width:205px;padding-top:16px;gap:6px}.hero-date>span:first-child{font-size:10px}.hero-date>b{font-size:35px}.hero-date b span{font-size:18px;margin:0 8px}.hero-date>span:last-child{font-size:12px;margin-top:2px}.hero-button{margin-top:27px;min-height:44px;font-size:11px;padding:0 21px;gap:26px;background:#5b654f}.hero-side-note{right:17px;top:39px;font-size:6px;letter-spacing:2px}.scroll-cue{left:26px;bottom:24px;font-size:10px;gap:12px;color:#878e7a}.scroll-line{width:19px}.section{padding:63px 24px}.section-number{font-size:11px;margin-bottom:34px;gap:13px}.section-number:before{width:24px}.section-number span{font-size:10px;letter-spacing:1px}.letter-layout{display:block;padding:0 4px}.letter-heading .eyebrow{font-size:8px;letter-spacing:2px;margin-bottom:15px}.letter-heading h2{font-size:42px;line-height:1.3;letter-spacing:2px;margin-bottom:28px}.little-flower{display:none}.letter-copy{font-size:16px;line-height:1.95;padding-top:1px}.letter-copy p{margin-bottom:23px}.letter-signature{font-size:25px;margin-top:32px!important}.letter-footnote{font-size:7px}.details-section{padding-top:35px;padding-bottom:35px}.details-top{align-items:start;margin-bottom:25px;gap:12px}.details-top .eyebrow{font-size:8px;letter-spacing:2px;margin-bottom:10px}.details-top h2{font-size:35px;white-space:nowrap}.calendar-link{font-size:9px;gap:4px;margin-top:34px;padding-bottom:5px;white-space:nowrap}.calendar-link svg{width:13px;height:13px}.event-grid{grid-template-columns:1fr 1fr;gap:12px}.event-tile{padding:24px 18px;min-height:226px;border-radius:15px}.tile-label{font-size:7px;letter-spacing:1px}.date-display,.time-display{gap:7px;margin:31px 0 18px}.date-display strong,.time-display strong{font-size:35px}.date-display>span{font-size:14px}.time-display>span{font-size:7px;letter-spacing:0}.event-tile>p{font-size:12px;white-space:nowrap}.tile-note{font-size:10px;letter-spacing:0}.venue-tile{grid-column:1/-1;min-height:175px;padding:23px 23px 22px;position:relative;display:grid;grid-template-columns:1fr auto}.venue-tile>.tile-label{grid-column:1/-1}.venue-icon{position:absolute;top:48px;right:22px;width:30px;height:30px;margin:0}.venue-tile h3{grid-column:1/-1;font-size:25px;margin:24px 0 8px}.venue-tile h3 span{font-size:17px;margin-left:6px}.venue-tile>p{font-size:12px;align-self:center;margin:0}.venue-tile>.text-link{justify-self:end;padding:0;font-size:11px;gap:11px}.arrival-note{flex-wrap:wrap;gap:8px;padding-top:19px;font-size:11px}.arrival-note button{font-size:9px;margin:0 0 0 13px}.wishes-section{padding-top:35px;padding-bottom:45px}.wishes-content{padding:38px 13px 30px;border-radius:18px}.wishes-content h2{font-size:33px;margin-bottom:14px}.wishes-content .eyebrow{font-size:7px;letter-spacing:2px}.wishes-description{font-size:13px;min-height:43px;line-height:1.7;max-width:260px;margin:0 auto}.wish-heart{width:88px;height:88px;margin:20px auto 29px}.wish-heart>svg{width:35px;height:35px}.wish-tags{gap:6px}.wish-tags button{padding:9px 10px;font-size:11px}.wish-footnote{font-size:10px;letter-spacing:0;line-height:1.7;margin-top:21px}.closing-section{padding:25px 20px 48px}.closing-section h2{font-size:40px}.closing-section>p:not(.eyebrow){font-size:19px}.closing-actions{gap:9px;margin-top:28px}.closing-actions .pill-button{font-size:10px;padding:0 19px;gap:20px;min-height:44px}.closing-line{height:38px;margin-bottom:25px}.site-footer{padding:20px 24px calc(92px + env(safe-area-inset-bottom));margin:0 22px;font-size:7px;letter-spacing:1.5px}.site-footer>span:last-child{font-size:9px;letter-spacing:0}.mobile-dock{display:flex;align-items:center;gap:10px;padding:10px 17px calc(10px + env(safe-area-inset-bottom));position:fixed;bottom:0;left:0;right:0;z-index:4;background:#f9f7f0f0;backdrop-filter:blur(14px);border-top:1px solid #d4d2c559;transition:transform .35s,opacity .35s}.mobile-dock button{width:36%;min-height:43px;border:1px solid #c7cabb88;background:transparent;color:#8b967f;border-radius:99px;font:12px var(--pen)}.mobile-dock .dock-nav{width:64%;display:flex;align-items:center;justify-content:center;gap:9px;border-color:#59674d;background:#59674d;color:#fffdf0}.dock-nav svg{width:15px;height:15px}.covered .mobile-dock{transform:translateY(110%);opacity:0}.cover-skip{right:15px;top:19px;font-size:11px}.cover-content{width:100%;padding:0 20px}.cover-content h2{font-size:40px;margin-bottom:54px}.cover-content>.eyebrow{font-size:7px;letter-spacing:2px;margin-bottom:21px}.envelope{width:270px;height:178px;margin-bottom:32px}.envelope-flap{height:100px}.envelope-seal{width:40px;height:40px;left:calc(50% - 20px);top:77px}.envelope-seal svg{width:16px;height:16px}.envelope-letter{gap:17px;padding-top:20px}.letter-names{font-size:19px}.letter-caption{font-size:7px}.cover.opening .envelope-letter{transform:translateY(-85px)}.open-invitation{font-size:15px;gap:31px}.cover-caption{font-size:11px;margin-top:19px}.cover-bottom{font-size:7px;bottom:26px;letter-spacing:2px}dialog{padding:29px 24px 23px;border-radius:18px}dialog h2{font-size:30px}.dialog-venue{font-size:20px}.dialog-note{font-size:12px}.map-option{padding:18px 16px}.map-option b{font-size:12px}.map-option small{font-size:9px}.map-help{font-size:10px}#toast{bottom:calc(85px + env(safe-area-inset-bottom));font-size:12px;padding:12px 20px}.cover-light{background-position:65% 65%;opacity:.23}}
@media(max-width:360px){.site-header{padding:0 18px}.site-header nav{gap:15px}.hero{height:680px;min-height:680px}.hero-content{padding:55px 22px 0}.hero h1{font-size:43px}.hero-intro{font-size:12px}.hero-names{font-size:25px;gap:15px;letter-spacing:1px}.hero-side-note{right:13px;font-size:5px}.section{padding-left:20px;padding-right:20px}.details-top h2{font-size:31px}.calendar-link{font-size:8px;gap:2px}.event-tile{padding:22px 13px;min-height:219px}.date-display strong,.time-display strong{font-size:32px}.tile-label{font-size:6px;letter-spacing:.7px}.event-tile>p{font-size:11px}.tile-note{font-size:9px}.venue-tile{padding:22px;min-height:169px}.venue-tile h3{font-size:24px}.venue-tile h3 span{font-size:15px}.venue-tile>p{font-size:11px}.venue-tile .text-link{font-size:10px}.wishes-content h2{font-size:29px}.wish-tags button{font-size:10px;padding:9px}.closing-section h2{font-size:35px}.closing-actions .pill-button{padding:0 16px;gap:17px}.letter-copy{font-size:15px}.cover-content h2{font-size:36px}.envelope{width:250px;height:165px}.envelope-flap{height:91px}.envelope-seal{top:70px}.cover.opening .envelope-letter{transform:translateY(-78px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-ready .reveal{opacity:1;transform:none}.hero-art img{will-change:auto}}

.cover:focus,.hero h1:focus{outline:none}.hero-date>.hero-place{font:12px/1.7 var(--pen);color:#7d876e;letter-spacing:.3px;white-space:nowrap;margin-top:4px}.hero-intro{color:#858976}
