@font-face{font-family:Fraunces;src:url('assets/fraunces.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--paper:#f6f3ea;--ink:#394334;--muted:#666b5e;--accent:#864635;--line:#d6d5c6;--leaf:#7e8869;--display:Fraunces,Georgia,serif;--body:'Trebuchet MS',sans-serif}
*{box-sizing:border-box}
::selection{background:var(--accent);color:var(--paper)}
.invitation{overflow:clip}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.045;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.7' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--accent);outline-offset:7px}
.page-shell{max-width:1600px;margin:auto;padding:0 5.2%}
.site-header{height:104px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line)}
.wordmark{display:block;flex-shrink:0;width:190px}
.logo-image{display:block;width:100%;height:auto}
.welcome-intro{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:var(--paper);pointer-events:auto}
.welcome-intro[hidden]{display:none}
.welcome-mark{width:min(760px,94vw);opacity:0;text-align:center}
.welcome-mark img{display:block;width:100%;height:auto}
.welcome-rule{display:block;width:64px;height:1px;background:var(--accent);margin:20px auto 0}
.welcome-intro.is-ready{animation:welcome-out .65s ease-in-out 2.15s both}
.is-ready .welcome-mark{animation:welcome-in .9s ease-out both}
.is-ready .welcome-rule{animation:welcome-line 1.2s ease-out .3s both}
@keyframes welcome-in{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes welcome-out{from{opacity:1}to{opacity:0}}
@keyframes welcome-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.welcome-intro{display:none}html{scroll-behavior:auto}.calendar-link,.chapter-link span{transition:none}.chapter-link:hover span{transform:none}}
.header-note,.chapter-link{font-size:11px;letter-spacing:1.8px}.header-note{color:var(--muted)}.chapter-link{justify-self:end;min-height:44px;display:flex;align-items:center;gap:20px}.chapter-link span{font-size:20px;transition:transform .2s}.chapter-link:hover span{transform:translate(3px,3px)}
main{padding-top:56px}.invitation{position:relative;max-width:1140px;margin:auto;padding:65px 0 36px;isolation:isolate}
.arch{position:absolute;z-index:-1;width:610px;max-width:82%;inset:0 0 0;margin:auto;border:1px solid var(--line);border-radius:310px 310px 0 0}.arch::after{content:"";position:absolute;inset:9px;border:1px solid var(--line);border-radius:inherit;opacity:.5}
.invitation-content{text-align:center;position:relative}.chapter-label{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--accent);font-size:11px;letter-spacing:2.5px}.chapter-label span{height:1px;width:22px;background:var(--accent);opacity:.65}
.opening-line{font:italic 18px var(--display);margin:30px 0 14px}
h1{font:400 clamp(80px,9.3vw,133px)/1.05 var(--display);letter-spacing:-.035em;display:flex;align-items:center;justify-content:center;gap:27px;margin:8px 0 25px}h1 em{font-size:.65em;font-weight:300;color:var(--accent);letter-spacing:-.035em}
.forever-line{display:flex;align-items:center;justify-content:center;gap:20px}.forever-line p{font:400 24px var(--display);margin:0}.forever-line>span{font-size:20px;color:var(--accent)}
.intro{font-size:14px;line-height:1.95;color:var(--muted);margin:20px 0 31px}
.countdown-section h2{font-weight:400;font-size:11px;letter-spacing:1.8px;line-height:1.7;max-width:34em;margin:0 auto 14px}
.countdown{display:flex;align-items:flex-start;justify-content:center;gap:24px}.countdown>div{display:flex;flex-direction:column;min-width:64px}.number{font:400 54px/1.2 var(--display);font-variant-numeric:tabular-nums;letter-spacing:-2px}.unit{font-size:11px;letter-spacing:1.5px;margin-top:8px}.separator{font:25px var(--display);color:var(--muted);padding-top:12px}
.date-note{font:400 16px/1.6 var(--display);color:var(--muted);margin:19px 12px 0}.calendar-link{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;margin-top:12px;border-bottom:1px solid var(--accent);font-size:13px;color:var(--accent);padding:8px 12px;transition:background-color .2s,color .2s}
.calendar-link:hover{background:var(--accent);color:var(--paper)}
.calendar-link:active{background:var(--ink);color:var(--paper)}.calendar-link[hidden]{display:none}
.coming-soon{display:inline-flex;align-items:center;gap:9px;font-size:11px;letter-spacing:1.5px;border:1px solid var(--line);border-radius:30px;padding:12px 18px;margin-top:29px}.coming-soon>span{width:5px;height:5px;border-radius:50%;background:var(--accent)}
.botanical{position:absolute;z-index:-1;width:255px;opacity:.58;pointer-events:none}.botanical-left{left:-24px;top:175px;transform:rotate(-13deg)}.botanical-right{right:-24px;top:120px;transform:scaleX(-1) rotate(-13deg)}
.personal-note{display:flex;justify-content:center;align-items:center;gap:24px;padding:27px 0 29px}.personal-note p{text-align:center;font-size:12px;line-height:1.9;color:var(--muted)}.personal-note em{font:italic 16px/1.8 var(--display);color:var(--ink)}.note-line{height:1px;width:50px;background:var(--line)}
footer{border-top:1px solid var(--line);padding:25px 0 28px;display:flex;align-items:center;justify-content:space-between}footer>span{font-size:11px;letter-spacing:1.8px}footer p{font:italic 13px var(--display);color:var(--muted);margin:0}.tiny-heart{font-size:13px;margin:0 7px;color:var(--accent)}
@media(min-width:1500px){main{padding-top:70px}.invitation{padding-top:80px;padding-bottom:50px}.personal-note{padding:35px 0}}
@media(max-width:1000px){.botanical{width:190px;opacity:.55}.botanical-left{left:-20px;top:210px}.botanical-right{right:-20px;top:190px}h1{gap:18px;letter-spacing:-.035em}.header-note{font-size:11px}}
@media(max-width:850px){.header-note{display:none}.site-header{grid-template-columns:1fr auto}}
@media(max-width:650px){.page-shell{padding:0 6%}.site-header{height:81px}.wordmark{width:150px}.header-note{display:none}.chapter-link{font-size:11px;gap:10px}main{padding-top:31px}.invitation{padding:49px 0 29px}.arch{max-width:94%;border-radius:230px 230px 0 0}.chapter-label{font-size:11px;letter-spacing:2px;gap:9px}.chapter-label span{width:14px}.opening-line{font-size:15px;margin-top:28px;margin-bottom:20px}h1{font-size:clamp(70px,22vw,86px);line-height:.96;letter-spacing:-.035em;flex-direction:column;gap:0;margin:0 0 25px}h1 em{font-size:43px;line-height:1.1;letter-spacing:0;margin:7px 0}.forever-line{gap:9px}.forever-line p{font-size:18px}.forever-line>span{font-size:15px}.intro{font-size:13px;margin:16px 0 27px}.countdown-section h2{font-size:11px;letter-spacing:1.2px;max-width:25em;padding:0 10px}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;max-width:330px;margin:auto;padding:0 10px}.countdown>div{min-width:0;position:relative}.countdown>div:not(:last-child)::after{content:":";position:absolute;right:-4px;top:7px;font:20px var(--display);color:var(--muted)}.countdown>.separator{display:none}.number{font-size:clamp(32px,10vw,39px)}.unit{font-size:11px;letter-spacing:1px}.separator{font-size:20px;padding-top:7px}.date-note{max-width:260px;margin:20px auto 0;font-size:15px;padding:0 8px}.coming-soon{font-size:11px;padding:11px 14px;margin-top:24px}.botanical{width:120px;opacity:.24}.botanical-left{left:-28px;top:180px}.botanical-right{right:-27px;top:180px}.personal-note{gap:12px;padding:20px 0}.note-line{width:23px}.personal-note p{font-size:12px}.personal-note em{font-size:14px}footer{flex-wrap:wrap;row-gap:17px;padding:22px 0}footer>span{font-size:11px;letter-spacing:1.1px}footer p{order:3;width:100%;text-align:center;font-size:12px}}
