@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=Great+Vibes&display=swap";:root{color:#32402f;font-synthesis:none;--olive:#718363;--ivory:ivory;--ink:#32402f;--line:#4d634561;background:#9caf88;font-family:Cormorant Garamond,Georgia,serif}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#718363db #fffff06b}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:#fffff06b}::-webkit-scrollbar-thumb{background:#718363db padding-box padding-box;border:1px solid #fffff07a;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#5d6f51 padding-box padding-box}::-webkit-scrollbar-corner{background:#fffff06b}html{scroll-behavior:smooth}body{background:#9caf88;min-width:320px;margin:0}body.is-welcome-visible{overflow:hidden}button,input,textarea{font:inherit}.page-shell{padding:14px;transition:opacity 1s,transform 1.2s cubic-bezier(.2,.75,.25,1),filter 1s}.page-shell--waiting{opacity:0;filter:blur(8px);pointer-events:none;transform:scale(.965)}.page-shell--open{animation:1.2s cubic-bezier(.2,.75,.25,1) both invitationReveal}.music-control{z-index:20;width:43px;height:43px;color:var(--olive);cursor:pointer;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#fffff0eb;border:1px solid #71836394;border-radius:50%;place-items:center;padding:0;transition:transform .25s,background .25s,color .25s;display:grid;position:fixed;top:18px;right:max(18px,50vw - 282px);box-shadow:0 7px 22px #2d382826}.music-control:hover{background:var(--olive);color:var(--ivory);transform:translateY(-2px)}.music-control>span{justify-content:center;align-items:center;gap:2px;width:17px;height:16px;display:flex}.music-control i{transform-origin:50%;background:currentColor;border-radius:2px;width:2px;height:5px;display:block}.music-control i:nth-child(2){height:10px}.music-control--playing i{animation:.9s ease-in-out infinite alternate musicWave}.music-control--playing i:nth-child(2){animation-delay:-.45s}.music-control--playing i:nth-child(3){animation-delay:-.2s}.invitation-page{background-color:var(--ivory);background-image:radial-gradient(#404f380b .7px,#0000 .7px),linear-gradient(90deg,#ffffff59,#0000 45%,#74806406);background-size:5px 5px,100% 100%;max-width:600px;margin:0 auto;position:relative;overflow:hidden;box-shadow:0 22px 70px #2d382847}.invitation-page:before{content:"";pointer-events:none;z-index:4;border:1px solid #71836347;position:absolute;inset:8px}.section{text-align:center;padding:72px 30px;position:relative}.section__kicker,.hero__eyebrow{letter-spacing:.22em;text-transform:uppercase;margin-bottom:8px;font-size:.78rem;font-weight:600;display:block}h2{color:var(--olive);margin:0;font:400 clamp(2.8rem,12vw,4rem)/1.05 Great Vibes,cursive}p{font-size:1.15rem;line-height:1.65}.hero{opacity:0;min-height:780px;padding:24px;animation:1.2s forwards heroIn}.hero__frame{outline-offset:-9px;background:#596054;border:1px solid #fffff0c7;outline:1px solid #fffff061;height:732px;position:relative;overflow:hidden}.hero__frame:before{content:"";z-index:2;pointer-events:none;border:1px solid #fffff080;position:absolute;inset:18px}.hero__photo{filter:saturate(.9)contrast(1.04);background-color:#777c70;background-image:linear-gradient(#171d1585 0%,#1a211838 22%,#0000 39%,#161d1530 52%,#141a138c 74%,#111610db 100%),url(/wedding-photo-retouched.png);background-position:50% 32%;background-repeat:no-repeat;background-size:auto 125%;position:absolute;inset:0;transform:scale(1.008)}.hero__frame:after{content:"";z-index:1;pointer-events:none;background-image:radial-gradient(#fffff009 .7px,#0000 .7px);background-size:5px 5px;position:absolute;inset:0}.hero__intro,.hero__names{z-index:3;text-align:center;color:var(--ivory);text-shadow:0 1px 2px #0b100af5,0 3px 22px #0b100acc;-webkit-user-select:none;user-select:none;position:absolute;left:24px;right:24px}.hero__intro{top:49px}.hero__date-split{letter-spacing:.15em;text-transform:uppercase;justify-content:center;align-items:center;gap:10px;margin:0;font-size:.7rem;display:flex}.hero__date-split i{font-size:.82rem;font-style:normal}.hero__date-split b{border-left:1px solid #fffff080;border-right:1px solid #fffff080;padding:0 11px;font-weight:400}.hero__names{top:auto;bottom:66px}.hero__names>span{letter-spacing:.24em;text-transform:uppercase;font-size:.75rem}.hero h1{margin:11px 0 0;font:400 clamp(3.8rem,17vw,5.7rem)/.92 Great Vibes,cursive}.hero__names p{letter-spacing:.32em;margin:16px 0 0;font-size:.9rem;display:block}.hero__paper-edge{z-index:4;background:var(--ivory);clip-path:polygon(0 63%,5% 48%,10% 70%,16% 39%,22% 58%,29% 31%,35% 62%,41% 35%,48% 54%,55% 28%,61% 60%,68% 36%,74% 61%,82% 33%,89% 55%,95% 38%,100% 56%,100% 100%,0 100%);height:30px;position:absolute;bottom:-1px;left:-2%;right:-2%}.ornament{max-width:220px;color:var(--olive);align-items:center;gap:14px;margin:0 auto;display:flex}.ornament span{background:linear-gradient(90deg, transparent, var(--line));flex:1;height:1px}.ornament span:last-child{background:linear-gradient(90deg, var(--line), transparent)}.ornament b{font-size:1.2rem;font-weight:400}.ornament--compact{max-width:140px;margin-top:19px;margin-bottom:26px}.invitation__card{border:1px solid var(--line);margin-top:15px;padding:38px 26px;position:relative}.invitation__card:before,.invitation__card:after{content:"⌜";color:var(--olive);font-size:1.3rem;position:absolute}.invitation__card:before{top:8px;left:10px}.invitation__card:after{content:"⌟";bottom:8px;right:10px}.invitation__card p{display:inline}.dropcap{color:var(--olive);margin-right:3px;font:400 3.1rem/.7 Great Vibes,cursive}.countdown{padding-top:68px;padding-bottom:68px}.wedding-calendar{background:#ffffff1f;border:1px solid #71836347;max-width:350px;margin:34px auto 0;padding:30px 30px 26px;position:relative}.wedding-calendar:before{content:"";pointer-events:none;border:1px solid #71836321;position:absolute;inset:6px}.wedding-calendar__corner{z-index:1;color:var(--olive);font-size:1.35rem;line-height:1;position:absolute}.wedding-calendar__corner--top{top:10px;right:11px;transform:rotate(-42deg)}.wedding-calendar__corner--bottom{bottom:10px;left:11px;transform:rotate(138deg)}.wedding-calendar__month{justify-content:center;align-items:baseline;gap:12px;margin-bottom:17px;display:flex;position:relative}.wedding-calendar__month strong{color:var(--olive);font:400 2.7rem/1 Great Vibes,cursive}.wedding-calendar__month span{letter-spacing:.18em;font-size:.62rem}.wedding-calendar__grid{grid-template-columns:repeat(7,1fr);align-items:center;display:grid}.wedding-calendar__weekdays{border-bottom:1px solid #7183632e;padding-bottom:8px}.wedding-calendar__weekdays span{letter-spacing:.06em;text-transform:uppercase;font-size:.67rem;font-weight:600}.wedding-calendar__days{row-gap:2px;padding-top:6px}.wedding-calendar__days>span{place-items:center;min-height:27px;font-size:.83rem;display:grid;position:relative}.wedding-calendar__days b{z-index:1;font-weight:500;position:relative}.wedding-calendar__day--selected{color:var(--ivory)}.wedding-calendar__day--selected i{color:var(--olive);font-size:2rem;font-style:normal;animation:1.7s ease-in-out infinite calendarHeartbeat;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(1)}.wedding-calendar>p{letter-spacing:.04em;margin:18px 0 0;font-size:.82rem;font-style:italic}.calendar-button{min-height:43px;margin-top:20px;padding:10px 19px;font-size:.78rem}.calendar-button__icon{fill:none;stroke:currentColor;stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.calendar-button:hover .calendar-button__icon{animation:.45s calendarIconLift}.countdown__grid{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin-top:34px;display:grid}.countdown__item{padding:20px 3px 18px;position:relative}.countdown__item:not(:last-child):after{content:"";background:var(--line);width:1px;position:absolute;top:25%;bottom:25%;right:0}.countdown__item strong{font-size:clamp(1.65rem,8vw,2.4rem);font-weight:400;line-height:1;display:block}.countdown__item span{letter-spacing:.08em;text-transform:uppercase;margin-top:8px;font-size:.63rem;display:block}.timeline{margin-top:45px;position:relative}.timeline__vine{pointer-events:none;opacity:.42;width:88px;height:100%;position:absolute;top:0;left:83px;overflow:visible}.timeline__vine path{fill:none;stroke:var(--olive);stroke-width:1px;vector-effect:non-scaling-stroke}.timeline__vine .timeline__leaf{fill:var(--ivory)}.timeline__item{text-align:left;grid-template-columns:76px 44px 1fr;min-height:130px;display:grid}.timeline__item time{color:var(--olive);padding-top:13px;font-size:1.65rem}.timeline__marker{justify-content:center;display:flex;position:relative}.timeline__marker:before{content:"";background:var(--line);opacity:.22;width:1px;position:absolute;top:0;bottom:0}.timeline__marker span{border:1px solid var(--olive);background:var(--ivory);z-index:1;border-radius:50%;place-items:center;width:31px;height:31px;margin-top:8px;font-size:1.1rem;display:grid;position:relative}.timeline__content{padding:7px 0 38px 14px}.timeline__content small{letter-spacing:.14em;text-transform:uppercase;font-size:.68rem}.timeline__content h3{margin:5px 0 0;font-size:1.5rem;font-weight:500;line-height:1.2}.dress-code>p,.rsvp>p{max-width:440px;margin:26px auto 0}.palette{flex-wrap:wrap;justify-content:center;gap:22px 10px;max-width:460px;margin:32px auto 0;display:flex}.palette__color{flex:0 0 76px}.palette__color>span{border:1px solid #32402f33;border-radius:50%;width:58px;height:58px;margin:0 auto;display:block;box-shadow:inset 0 0 0 4px #ffffff40,0 6px 18px #32402f1f}.palette__color small{margin-top:10px;display:block}.palette__color b{letter-spacing:.08em;opacity:.65;font-size:.68rem;font-weight:400;display:block}.locations__list{margin-top:38px}.location-card{text-align:left;border-top:1px solid var(--line);grid-template-columns:48px 1fr;gap:14px;padding:27px 0;display:grid}.location-card:last-child{border-bottom:1px solid var(--line)}.location-card__number{letter-spacing:.12em;color:var(--olive);font-size:.72rem}.location-card h3{margin:-5px 0 5px;font-size:1.45rem;font-weight:500}.location-card__subtitle{margin:0 0 5px;font-size:1rem;font-style:italic}.location-card address{opacity:.8;max-width:350px;margin-bottom:17px;font-size:1rem;font-style:normal;line-height:1.45}.button{border:1px solid var(--olive);min-height:46px;color:var(--ink);letter-spacing:.07em;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:12px;padding:12px 22px;font-weight:600;text-decoration:none;transition:color .25s,background .25s,transform .25s;display:inline-flex}.button:hover{color:var(--ivory);background:var(--olive);transform:translateY(-2px)}.button__icon{fill:none;stroke:currentColor;stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px;transition:transform .25s}.button:hover .button__icon{transform:translate(2px,-2px)}.button:disabled{cursor:wait;opacity:.6;transform:none}.rsvp__form{border:1px solid var(--line);text-align:left;gap:24px;margin-top:35px;padding:32px 24px;display:grid}.rsvp__recipient{text-align:center;background:#9caf8817;border:1px solid #71836340;padding:18px 16px}.rsvp__recipient span,.rsvp__recipient strong{display:block}.rsvp__recipient span{letter-spacing:.12em;text-transform:uppercase;opacity:.65;font-size:.72rem}.rsvp__recipient strong{color:var(--olive);margin-top:10px;font-size:1.35rem;font-weight:500;line-height:1.25}.rsvp__deadline{color:var(--olive);letter-spacing:.08em;background:#9caf8829;border:1px solid #71836380;margin:0 3px;padding:2px 9px 3px;font-size:1.08em;font-weight:600;line-height:1.2;display:inline-block;box-shadow:0 3px 12px #4d634514}.rsvp__form label,.rsvp__form legend{letter-spacing:.06em;font-size:.85rem;font-weight:600}.rsvp__form label small{float:right;opacity:.65;font-style:italic;font-weight:400}.rsvp__form input:not([type=radio]),.rsvp__form textarea{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);resize:vertical;background:0 0;border-radius:0;outline:none;margin-top:8px;padding:12px 0;font-size:1.08rem;display:block}.rsvp__form textarea{min-height:110px;max-height:280px}.rsvp__form input:focus,.rsvp__form textarea:focus{border-color:var(--olive)}.rsvp__form input[aria-invalid=true]{border-color:#9a6259}.field-error{color:#8a5048;letter-spacing:.01em;margin-top:7px;font-size:.82rem;font-weight:500;display:block}.rsvp__form fieldset{border:0;gap:13px;margin:0;padding:0;display:grid}.rsvp__form legend{margin-bottom:13px}.radio{cursor:pointer;align-items:center;gap:10px;display:flex;letter-spacing:0!important;font-size:1.05rem!important;font-weight:400!important}.radio input{opacity:0;position:absolute}.radio span{border:1px solid var(--olive);border-radius:50%;place-items:center;width:17px;height:17px;display:grid}.radio input:checked+span:after{content:"";background:var(--olive);border-radius:50%;width:9px;height:9px}.rsvp__form .button{background:var(--olive);width:100%;color:var(--ivory)}.rsvp__form .button:hover{background:#5d6f51}.form-message{text-align:center;margin:0;padding:10px;font-size:1rem}.form-message--success{color:#526848;background:#9caf882b}.form-message--error{color:#8a5048;background:#8a504814}.rsvp__bride-note{background:linear-gradient(145deg,#a9787814,#ffffff26);border:1px solid #a9787847;margin-top:30px;padding:34px 25px}.rsvp__bride-note>span{color:#a97878;font-size:1.8rem;display:block}.rsvp__bride-note p{margin:12px 0 18px}.rsvp__bride-note strong{color:var(--olive);font:400 1.55rem Great Vibes,cursive}.guest-media{background:linear-gradient(#9caf8812,#0000 72%)}.guest-media>p{max-width:440px;margin-left:auto;margin-right:auto}.guest-media__open{margin-top:17px}.guest-media__open:disabled{cursor:not-allowed;color:#32402f94;background:#9caf8814;border-color:#71836361}.guest-media__availability{opacity:.72;font-size:.86rem;font-style:italic;line-height:1.45;margin-top:13px!important}.media-modal{z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1f271db8;place-items:center;padding:18px;animation:.28s both modalFade;display:grid;position:fixed;inset:0;overflow-y:auto}.media-modal__dialog{outline-offset:-8px;background-color:var(--ivory);text-align:center;background-image:radial-gradient(#404f380b .7px,#0000 .7px);background-size:5px 5px;border:1px solid #7183635c;outline:1px solid #7183632e;width:min(100%,510px);max-height:calc(100dvh - 36px);padding:48px 30px 32px;animation:.42s cubic-bezier(.22,.8,.3,1) both modalCardIn;position:relative;overflow-y:auto;box-shadow:0 24px 80px #141b126b}.media-modal__close{border:1px solid var(--line);width:36px;height:36px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;font:300 1.75rem/1 serif;transition:color .2s,background .2s,transform .2s;display:grid;position:absolute;top:15px;right:16px}.media-modal__close:hover{color:var(--ivory);background:var(--olive);transform:rotate(4deg)}.media-modal__close:disabled{cursor:not-allowed;opacity:.35}.media-modal h2{font-size:clamp(2.6rem,11vw,3.7rem)}.media-modal__intro{max-width:390px;margin:14px auto 24px;font-size:1rem;line-height:1.5}.media-upload__dropzone{cursor:pointer;background:#9caf8814;border:1px dashed #7183638c;place-items:center;min-height:166px;padding:25px 18px;transition:border-color .25s,background .25s,transform .25s;display:grid}.media-upload__dropzone:hover{border-color:var(--olive);background:#9caf8826;transform:translateY(-2px)}.media-upload__dropzone input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.media-upload__dropzone svg{fill:none;width:35px;height:35px;stroke:var(--olive);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round;margin-bottom:11px}.media-upload__dropzone strong{letter-spacing:.04em;font-size:.92rem}.media-upload__dropzone small{opacity:.62;margin-top:5px}.media-upload__honeypot{width:1px!important;height:1px!important;position:absolute!important;left:-10000px!important;overflow:hidden!important}.media-upload__files{text-align:left;gap:8px;max-height:210px;margin-top:17px;display:grid;overflow-y:auto}.media-upload__file{background:#ffffff3d;border:1px solid #7183632e;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 12px;display:grid}.media-upload__file>span{color:var(--olive);font-size:1.1rem}.media-upload__file div{min-width:0}.media-upload__file strong,.media-upload__file small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.media-upload__file strong{font-size:.82rem;font-weight:600}.media-upload__file small{opacity:.62;margin-top:2px;font-size:.7rem}.media-upload__file>b{min-width:32px;color:var(--olive);text-align:right;font-size:.72rem}.media-upload__progress{margin-top:20px}.media-upload__progress-label{justify-content:space-between;gap:15px;margin-bottom:8px;font-size:.78rem;display:flex}.media-upload__progress-label strong{color:var(--olive)}.media-upload__progress-track{background:#71836329;height:5px;overflow:hidden}.media-upload__progress-track span{background:var(--olive);height:100%;transition:width .22s;display:block}.media-upload__message{margin:17px 0 0;padding:10px 12px;font-size:.9rem;line-height:1.45}.media-upload__message--success{color:#526848;background:#9caf882b}.media-upload__message--error{color:#8a5048;background:#8a504814}.media-upload__message--ready,.media-upload__message--idle{color:#7a6040;background:#c29d6b1a}.media-modal__actions{z-index:3;background:linear-gradient(180deg, #fffff0e6, var(--ivory) 26%);border-top:1px solid #71836326;margin:22px -30px -32px;padding:16px 30px 28px;position:sticky;bottom:-32px}.media-modal__actions .button{background:var(--olive);width:100%;color:var(--ivory)}.media-modal__actions .button:hover{background:#5d6f51}.footer{text-align:center;padding:55px 30px 70px}.footer>span{font:400 2rem Great Vibes,cursive;display:block}.footer i{color:var(--olive);font-style:normal}.footer p{margin:8px 0 0;font-size:1rem}.footer small{letter-spacing:.18em}.reveal{opacity:0;transition:opacity .8s,transform .8s;transform:translateY(22px)}.reveal--visible{opacity:1;transform:translateY(0)}@keyframes heroIn{to{opacity:1}}@keyframes invitationReveal{0%{opacity:0;filter:blur(7px);transform:scale(.97)translateY(22px)}to{opacity:1;filter:blur();transform:none}}@keyframes modalFade{0%{opacity:0}to{opacity:1}}@keyframes modalCardIn{0%{opacity:0;transform:translateY(18px)scale(.975)}to{opacity:1;transform:none}}@keyframes musicWave{0%{transform:scaleY(.55)}to{transform:scaleY(1.4)}}@keyframes calendarHeartbeat{0%,34%,to{filter:drop-shadow(0 0 #71836300);transform:translate(-50%,-50%)scale(1)}10%{filter:drop-shadow(0 2px 4px #71836333);transform:translate(-50%,-50%)scale(1.13)}18%{transform:translate(-50%,-50%)scale(1)}26%{filter:drop-shadow(0 1px 3px #71836324);transform:translate(-50%,-50%)scale(1.08)}}@keyframes calendarIconLift{0%,to{transform:translateY(0)}45%{transform:translateY(-2px)}}.welcome{z-index:100;min-height:100svh;color:var(--ivory);text-align:center;cursor:default;background:#35422f;grid-template-rows:1fr auto 1fr;place-items:center;padding:clamp(26px,7vh,58px) 24px;transition:opacity .75s 6.7s,visibility .75s 6.7s;display:grid;position:fixed;inset:0;overflow:hidden}.welcome:before,.welcome:after{content:"";pointer-events:none;position:absolute}.welcome:before{border:1px solid #fffff061;inset:14px}.welcome:after{border:1px solid #fffff021;border-radius:48% 48% 0 0/15% 15% 0 0;inset:22px}.welcome__grain{opacity:.55;pointer-events:none;background-image:radial-gradient(#fffff011 .65px,#0000 .65px),linear-gradient(115deg,#ffffff06,#0000 45%);background-size:5px 5px,100% 100%;position:absolute;inset:0}.welcome__heading,.welcome__status,.envelope{z-index:2;position:relative}.welcome__heading{align-self:start;animation:.9s .15s both welcomeFade}.welcome__heading span{letter-spacing:.24em;text-transform:uppercase;font-size:.7rem;font-weight:600}.welcome__heading p{margin:12px 0 0;font:400 clamp(2.35rem,10vw,3.5rem)/1.05 Great Vibes,cursive}.envelope{aspect-ratio:1.48;perspective:900px;filter:drop-shadow(0 22px 23px #0d150b47);width:min(78vw,350px);animation:1.1s cubic-bezier(.2,.8,.25,1) .25s both envelopeArrive}.envelope__back{background:#e9e4d3;border:1px solid #3a453340;border-radius:2px;position:absolute;inset:0}.envelope__flap{z-index:6;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transform-style:preserve-3d;background:#f7f3e4;transition:transform .85s cubic-bezier(.65,0,.3,1),z-index 0s .42s;position:absolute;inset:0 0 46%}.envelope__flap:after{content:"";background-image:radial-gradient(#535b480f .6px,#0000 .6px);background-size:4px 4px;position:absolute;inset:0}.envelope__letter{z-index:2;background:var(--ivory);height:82%;color:var(--ink);border:1px solid #5c694f52;flex-direction:column;align-items:center;padding:20px 14px;transition:transform 1s cubic-bezier(.16,.8,.25,1) .35s,filter .8s;display:flex;position:absolute;top:6%;left:7%;right:7%}.envelope__letter:before{content:"";border:1px solid #5c694f2e;position:absolute;inset:6px}.envelope__letter span{letter-spacing:.18em;font-size:.52rem}.envelope__letter strong{color:var(--olive);margin:auto 0 4px;font:400 clamp(1.7rem,8vw,2.4rem)/1 Great Vibes,cursive}.envelope__letter strong i{margin:0 4px;font-size:.75em;font-style:normal}.envelope__letter small{letter-spacing:.15em;text-align:center;text-transform:uppercase;margin:0 auto auto;font-size:.55rem;line-height:1.45}.envelope__front{z-index:4;background:#f4efdf;position:absolute;inset:0}.envelope__front--left{clip-path:polygon(0 0,53% 54%,0 100%)}.envelope__front--right{clip-path:polygon(100% 0,47% 54%,100% 100%);filter:brightness(.98)}.envelope__front--bottom{clip-path:polygon(0 100%,50% 45%,100% 100%);filter:brightness(.96)}.envelope__seal{z-index:7;width:58px;height:58px;color:var(--ivory);background:#6e8061;border:1px solid #fffff066;border-radius:50%;justify-content:center;align-items:center;transition:opacity .25s .25s,transform .55s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:51%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 12px #1f2a1b4d,inset 0 0 0 4px #fffff014}.envelope__seal span{font:400 1.3rem Great Vibes,cursive}.envelope__seal i{margin:0 -1px;font:400 .75rem Great Vibes,cursive}.envelope__reading-timer{z-index:9;width:min(64vw,230px);color:var(--ivory);opacity:0;pointer-events:none;position:absolute;top:calc(100% + 36px);left:50%;transform:translate(-50%)translateY(6px)}.envelope__reading-timer>span{letter-spacing:.18em;text-transform:uppercase;margin-bottom:10px;font-size:.62rem;display:block}.envelope__reading-timer>div{background:#fffff033;height:1px;overflow:hidden}.envelope__reading-timer i{background:var(--ivory);transform-origin:0;width:100%;height:100%;display:block}.welcome__status{align-self:end;width:min(76vw,290px);animation:.9s .55s both welcomeFade}.welcome__progress{background:#fffff033;height:1px;overflow:hidden}.welcome__progress span{background:var(--ivory);height:100%;transition:width .12s linear;display:block}.welcome__status strong{letter-spacing:.16em;margin-top:11px;font-size:.7rem;font-weight:400;display:block}.welcome__messages{height:31px;margin-top:6px;position:relative}.welcome__message{letter-spacing:.13em;text-transform:uppercase;place-items:center;margin:0;font-size:.8rem;transition:opacity .42s,transform .42s;display:grid;position:absolute;inset:0}.welcome__message--loading{opacity:1;transform:translateY(0)}.welcome__message--ready{opacity:0;transition-delay:0s;transform:translateY(6px)}.welcome__tap{opacity:0;margin-top:3px;font-size:1.25rem;display:block;transform:translateY(-2px)}.welcome--ready .welcome__message--loading{opacity:0;transform:translateY(-5px)}.welcome--ready .welcome__message--ready{opacity:1;transition-delay:.5s;transform:translateY(0)}.welcome--ready .welcome__tap{opacity:1;transition:opacity .4s .78s;animation:1.2s ease-in-out .85s infinite tapHint}.welcome--ready{cursor:pointer}.welcome--ready .envelope{animation:3s ease-in-out infinite envelopeFloat}.welcome--ready .envelope__seal{box-shadow:0 4px 12px #1f2a1b4d,0 0 0 8px #fffff00d,inset 0 0 0 4px #fffff014}.welcome--opening{pointer-events:none;opacity:0;visibility:hidden}.welcome--opening .envelope{animation:none}.welcome--opening .envelope__flap{z-index:1;animation:1.15s cubic-bezier(.55,.05,.8,.45) 2.35s forwards envelopeFlapFall;transform:rotateX(180deg)}.welcome--opening .envelope__seal{opacity:0;transform:translate(-50%,-50%)scale(.55)}.welcome--opening .envelope__back{animation:1.15s cubic-bezier(.55,.05,.8,.45) 2.35s forwards envelopeFall}.welcome--opening .envelope__front--left{animation:1.15s cubic-bezier(.55,.05,.8,.45) 2.35s forwards envelopeFallLeft}.welcome--opening .envelope__front--right{animation:1.15s cubic-bezier(.55,.05,.8,.45) 2.35s forwards envelopeFallRight}.welcome--opening .envelope__front--bottom{animation:1.15s cubic-bezier(.55,.05,.8,.45) 2.35s forwards envelopeFall}.welcome--opening .envelope__letter{z-index:2;animation:7.4s linear forwards cardJourney}.welcome--opening .envelope__reading-timer{animation:7.4s linear forwards readingTimerVisibility}.welcome--opening .envelope__reading-timer i{animation:7.4s linear forwards readingTimerProgress}.welcome--opening .welcome__heading,.welcome--opening .welcome__status{opacity:0;transition:opacity .35s,transform .35s;animation:none;transform:translateY(-10px)}@keyframes envelopeArrive{0%{opacity:0;transform:translateY(34px)rotate(-2deg)scale(.96)}to{opacity:1;transform:none}}@keyframes envelopeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes cardJourney{0%,12%{z-index:2;opacity:1;filter:drop-shadow(0 0 #111b0e00);transform:translateY(0)scale(1)}24%{z-index:2;opacity:1;filter:drop-shadow(0 14px 14px #111b0e38);transform:translateY(-72%)scale(1.06)}25%{z-index:8;opacity:1;filter:drop-shadow(0 14px 14px #111b0e38);transform:translateY(-72%)scale(1.06)}33%,71%{z-index:8;opacity:1;filter:drop-shadow(0 21px 19px #111b0e4d);transform:translateY(4%)scale(1.22)}89%,to{z-index:8;opacity:0;filter:drop-shadow(0 8px 9px #111b0e1f);transform:translateY(78vh)rotate(6deg)scale(1.04)}}@keyframes readingTimerVisibility{0%,32%{opacity:0;transform:translate(-50%)translateY(6px)}35%,69%{opacity:1;transform:translate(-50%)translateY(0)}72%,to{opacity:0;transform:translate(-50%)translateY(3px)}}@keyframes readingTimerProgress{0%,34%{transform:scaleX(1)}71%,to{transform:scaleX(0)}}@keyframes envelopeFall{0%{opacity:1;transform:translateY(0)rotate(0)}45%{opacity:.95}to{opacity:0;transform:translateY(72vh)rotate(7deg)}}@keyframes envelopeFallLeft{0%{opacity:1;transform:translateY(0)rotate(0)}45%{opacity:.95}to{opacity:0;transform:translate(-7vw,72vh)rotate(-11deg)}}@keyframes envelopeFallRight{0%{opacity:1;transform:translateY(0)rotate(0)}45%{opacity:.95}to{opacity:0;transform:translate(7vw,70vh)rotate(12deg)}}@keyframes envelopeFlapFall{0%{opacity:1;transform:translateY(0)rotateX(180deg)}45%{opacity:.95}to{opacity:0;transform:translateY(70vh)rotate(8deg)rotateX(180deg)}}@keyframes welcomeFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes tapHint{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(5px)}}@media (width>=700px){.page-shell{padding:48px 20px}.section{padding-left:58px;padding-right:58px}.hero{padding:30px}.location-card{grid-template-columns:62px 1fr}}@media (width<=640px){.hero{min-height:676px;padding:18px}.hero__frame{height:640px}.hero__photo{background-position:57%;background-size:auto 100%}.hero__names{bottom:50px}}@media (width<=380px){.section{padding-left:23px;padding-right:23px}.hero{min-height:656px}.hero__frame{height:620px}.hero__photo{background-position:57%}.hero__names{bottom:46px}.timeline__item{grid-template-columns:64px 36px 1fr}.timeline__vine{left:69px}.timeline__content{padding-left:10px}.countdown__item span{letter-spacing:0}}@media (height<=680px){.welcome{padding-top:24px;padding-bottom:24px}.welcome__heading p{font-size:2.2rem}.envelope{width:min(68vw,290px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.welcome--opening .envelope__letter{transform:translateY(4%)scale(1.15)}}
