:root{
  --ink:#2c3550; --ink-soft:#5b6582; --mute:#8790ab;
  --ice:#dce8f5; --ice-2:#eef4fb; --frost:#f7f9fd; --silver:#b8c0d2;
  --lav:#b9b2dc; --lav-deep:#7d74b3; --navy:#27304d;
  --glass:rgba(255,255,255,.55); --glass-line:rgba(255,255,255,.75);
  --serif:"Cormorant Garamond",Georgia,serif; --script:"Pinyon Script",cursive; --sans:"Jost",system-ui,sans-serif;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--serif);color:var(--ink);background:var(--frost);font-size:18px;line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden;height:100vh}
img{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--lav);color:#fff}

#snow{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:60}

.eyebrow{font-family:var(--sans);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--ink-soft);font-weight:400}
.script{font-family:var(--script);font-weight:400;line-height:1}
.names{font-size:clamp(3rem,13vw,4.6rem);color:var(--navy)}
.names{display:flex;flex-direction:column;align-items:center;gap:.02em}
.names em{font-family:var(--serif);font-style:italic;font-weight:300;font-size:.5em;color:var(--lav-deep);line-height:1;margin:.05em 0}
.names--xl{font-size:clamp(3.6rem,17vw,7.4rem);display:flex;flex-direction:column;align-items:center;gap:.05em}
.names--xl em{font-size:.4em}
.names--lg{font-size:clamp(3rem,12vw,5rem)}
.shimmer,.names span{background:linear-gradient(110deg,var(--navy) 0%,var(--navy) 40%,#9fb3d9 50%,var(--navy) 60%,var(--navy) 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 7s linear infinite;padding:.08em .06em}
@keyframes shimmer{from{background-position:130% 0}to{background-position:-130% 0}}

.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--sans);font-size:.74rem;letter-spacing:.24em;text-transform:uppercase;border-radius:999px;padding:1em 2em;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform .4s var(--ease),box-shadow .4s var(--ease),background .4s}
.btn svg{width:18px;height:18px}
.btn--frost{background:rgba(255,255,255,.7);border-color:rgba(255,255,255,.9);color:var(--navy);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 30px -10px rgba(39,48,77,.35)}
.btn--frost:hover{transform:translateY(-2px);box-shadow:0 16px 40px -12px rgba(39,48,77,.45)}
.btn--solid{background:var(--navy);color:#fff}
.btn--solid:hover{background:#3a4568}
.btn--ghost{border-color:var(--silver);color:var(--ink);background:transparent}
.btn--ghost:hover{background:#fff}

/* ---------- cover ---------- */
.cover{position:fixed;inset:0;z-index:50;display:grid;place-items:center;text-align:center;overflow:hidden;transition:transform 1.3s cubic-bezier(.7,0,.2,1),opacity 1.3s}
.cover.is-open{transform:translateY(-100%);opacity:.3;pointer-events:none}
.cover__bg{position:absolute;inset:-4%;background-size:cover;background-position:center 70%;animation:drift 30s ease-in-out infinite alternate}
.cover__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(247,249,253,.82) 0%,rgba(238,244,251,.55) 45%,rgba(238,244,251,.25) 75%,rgba(247,249,253,.7) 100%)}
.cover__inner{position:relative;padding:2rem 1.5rem calc(2rem + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:1.1rem;max-width:520px}
.cover .eyebrow{color:var(--ink)}
.cover__date{font-family:var(--sans);letter-spacing:.5em;font-size:.78rem;color:var(--ink-soft);margin-top:-.3rem}
.wreath{position:relative;width:min(62vw,250px);aspect-ratio:1;margin:.4rem 0}
.wreath__img{position:absolute;inset:0;width:100%;height:100%;mix-blend-mode:multiply;z-index:2;animation:spin 120s linear infinite}
.wreath__photo{position:absolute;inset:19%;border-radius:50%;overflow:hidden;box-shadow:0 0 0 4px rgba(255,255,255,.8),0 12px 30px -10px rgba(39,48,77,.4)}
.wreath__photo img{width:100%;height:100%;object-fit:cover;object-position:center 22%}
.guest{display:flex;flex-direction:column;gap:.15rem;margin:.6rem 0 .4rem}
.guest__label{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft)}
.guest__sub{font-style:italic;color:var(--ink-soft);font-size:.95rem}
.guest__name{font-weight:500;font-size:1.55rem;color:var(--navy);padding:.2rem 1.2rem;border-bottom:1px solid var(--silver)}
@keyframes drift{from{transform:scale(1.02) translateY(0)}to{transform:scale(1.08) translateY(-1.5%)}}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;text-align:center;overflow:hidden;padding:4rem 1.5rem 7rem}
.hero__bg{position:absolute;inset:0;background-size:cover;background-position:center 75%;transform:scale(1.05);will-change:transform}
.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(247,249,253,.15) 0%,rgba(247,249,253,.0) 30%,rgba(238,244,251,.1) 60%,rgba(247,249,253,.6) 100%)}
.hero__content{position:relative;display:flex;flex-direction:column;align-items:center;gap:.8rem;margin-top:-18vh}
.hero__content .eyebrow{color:var(--navy)}
.hero__lead{font-style:italic;font-size:1.3rem;color:var(--ink-soft);font-weight:300}
.hero__date{display:flex;align-items:center;gap:1rem;font-family:var(--sans);font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;color:var(--navy);margin-top:.6rem}
.rule{width:38px;height:1px;background:var(--navy);opacity:.4}
.scroll-cue{position:absolute;bottom:5.5rem;left:50%;transform:translateX(-50%);width:22px;height:36px;border:1px solid rgba(39,48,77,.4);border-radius:12px;z-index:2}
.scroll-cue span{position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;border-radius:2px;background:var(--navy);animation:cue 2.2s infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(12px)}}

/* ---------- snow-cap dividers ---------- */
.snowcap{position:absolute;left:0;right:0;bottom:-1px;height:70px;z-index:3;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cpath fill='%23f7f9fd' d='M0 52c40-14 70-20 104-8 26 9 40 26 72 22 30-4 40-30 80-34 44-4 58 26 100 28 40 2 52-30 96-32 38-2 60 24 98 26 44 2 58-28 104-30 42-2 54 22 94 24 38 2 56-24 98-26 44-2 60 26 102 26 40 0 56-26 96-28 42-2 62 24 102 24 38 0 60-22 92-24 40-2 58 18 102 20L1440 60V90H0z'/%3E%3Cg fill='%23ffffff'%3E%3Ccircle cx='176' cy='62' r='3'/%3E%3Ccircle cx='452' cy='54' r='2.5'/%3E%3Ccircle cx='760' cy='60' r='3'/%3E%3Ccircle cx='1050' cy='56' r='2.5'/%3E%3Ccircle cx='1330' cy='60' r='3'/%3E%3C/g%3E%3C/svg%3E") center bottom/100% 100% no-repeat;
  filter:drop-shadow(0 -6px 8px rgba(160,175,210,.18))}
.snowcap--light{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cpath fill='%23eef2fa' d='M0 52c40-14 70-20 104-8 26 9 40 26 72 22 30-4 40-30 80-34 44-4 58 26 100 28 40 2 52-30 96-32 38-2 60 24 98 26 44 2 58-28 104-30 42-2 54 22 94 24 38 2 56-24 98-26 44-2 60 26 102 26 40 0 56-26 96-28 42-2 62 24 102 24 38 0 60-22 92-24 40-2 58 18 102 20L1440 60V90H0z'/%3E%3C/svg%3E")}

/* ---------- sections ---------- */
.section{position:relative;padding:5.5rem 1.5rem 8rem;text-align:center}
.section:nth-of-type(odd){background:var(--frost)}
.verse{background:var(--frost)}
.couple{background:linear-gradient(180deg,#eef2fa 0%,#f3f1fa 100%)}
.events{background:var(--frost)}
.gallery{background:linear-gradient(180deg,#eef2fa,#f1effa)}
.wishes{background:var(--frost)}
.section__head{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:2.4rem}
.title{font-weight:300;font-size:clamp(2.1rem,8vw,3rem);letter-spacing:.02em;color:var(--navy);line-height:1.1}
.flake-rule{display:block;width:160px;height:14px;margin-top:.4rem;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 14'%3E%3Cpath d='M0 7h66M94 7h66' stroke='%23b8c0d2' stroke-width='.8'/%3E%3Cg stroke='%237d74b3' stroke-width='.9' stroke-linecap='round'%3E%3Cpath d='M80 1v12M74.8 4l10.4 6M74.8 10l10.4-6'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}

.verse{padding-top:3.5rem}
.verse__doves{width:min(78vw,340px);margin:0 auto 1.2rem;mix-blend-mode:multiply}
.verse blockquote{max-width:560px;margin:0 auto}
.verse blockquote p{font-style:italic;font-weight:300;font-size:clamp(1.25rem,4.8vw,1.6rem);line-height:1.6;color:var(--ink)}
.verse blockquote p::before{content:"“";display:block;font-family:var(--serif);font-size:3.4rem;line-height:.6;color:var(--lav);margin-bottom:.6rem}
.verse cite{display:block;margin-top:1.2rem;font-style:normal;font-family:var(--sans);font-size:.72rem;letter-spacing:.32em;text-transform:uppercase;color:var(--lav-deep)}

.couple__intro{max-width:540px;margin:0 auto 2.8rem;color:var(--ink-soft);font-size:1.08rem}
.arch{position:relative;width:min(80vw,360px);margin:0 auto;aspect-ratio:3/4;border-radius:999px 999px 18px 18px;overflow:hidden;box-shadow:0 0 0 8px rgba(255,255,255,.75),0 0 0 9px rgba(184,192,210,.6),0 30px 60px -25px rgba(39,48,77,.45)}
.arch img{width:100%;height:100%;object-fit:cover;object-position:center 20%;transition:transform 1.6s var(--ease)}
.arch:hover img{transform:scale(1.04)}
.arch__frost{position:absolute;inset:auto 0 0 0;height:30%;background:linear-gradient(180deg,transparent,rgba(238,242,250,.55))}
.couple__names{display:grid;gap:1.4rem;margin-top:2.6rem;justify-items:center}
.person{display:flex;flex-direction:column;align-items:center;gap:.4rem}
.person__short{font-size:3.4rem;color:var(--lav-deep)}
.person__full{font-weight:500;font-size:1.25rem;letter-spacing:.04em;color:var(--navy);max-width:300px;line-height:1.35}
.couple__amp{color:var(--silver);width:26px}
.couple__amp svg{width:100%}

/* ---------- glass cards ---------- */
.glass{background:var(--glass);border:1px solid var(--glass-line);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-radius:22px;box-shadow:0 20px 50px -30px rgba(39,48,77,.4),inset 0 1px 0 rgba(255,255,255,.9)}
.events__grid{display:grid;gap:1.8rem;max-width:920px;margin:0 auto}
.event{overflow:hidden;text-align:center;position:relative}
.event__img{aspect-ratio:16/10;background-size:cover;background-position:center;position:relative}
.event__img::after{content:"";position:absolute;inset:auto 0 -1px 0;height:44px;background:linear-gradient(180deg,transparent,rgba(247,249,253,.95))}
.event__body{padding:1.4rem 1.6rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.55rem}
.event__name{font-family:var(--script);font-size:2.35rem;color:var(--navy);line-height:1.1}
.event__date{font-family:var(--sans);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--lav-deep)}
.event__place{font-weight:600;font-size:1.2rem;color:var(--ink)}
.event__addr{color:var(--ink-soft);font-size:1rem;max-width:320px}
.event .btn{margin-top:.8rem}

.countdown{max-width:620px;margin:3.4rem auto 0;display:flex;flex-direction:column;align-items:center;gap:1.2rem}
.countdown__label{font-style:italic;color:var(--ink-soft);font-size:1.1rem}
.countdown__row{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;width:100%}
.countdown__row div{background:linear-gradient(160deg,rgba(255,255,255,.9),rgba(220,232,245,.6));border:1px solid #fff;border-radius:16px;padding:1rem .2rem .8rem;box-shadow:0 12px 30px -20px rgba(39,48,77,.5);position:relative;overflow:hidden}
.countdown__row div::before{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:skewX(-20deg);animation:glint 6s infinite}
.countdown__row div:nth-child(2)::before{animation-delay:.4s}.countdown__row div:nth-child(3)::before{animation-delay:.8s}.countdown__row div:nth-child(4)::before{animation-delay:1.2s}
@keyframes glint{0%,70%{left:-60%}100%{left:130%}}
.countdown b{display:block;font-weight:400;font-size:clamp(1.9rem,8vw,2.6rem);color:var(--navy);font-variant-numeric:lining-nums tabular-nums;line-height:1.1}
.countdown span{font-family:var(--sans);font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--mute)}

/* ---------- gallery ---------- */
.gallery__grid{columns:2;column-gap:.8rem;max-width:980px;margin:0 auto}
.gallery__grid button{display:block;width:100%;margin:0 0 .8rem;border:0;padding:0;background:none;cursor:zoom-in;border-radius:14px;overflow:hidden;break-inside:avoid;position:relative;box-shadow:0 14px 30px -22px rgba(39,48,77,.6)}
.gallery__grid img{width:100%;height:auto;transition:transform 1.2s var(--ease),filter .6s}
.gallery__grid button:hover img{transform:scale(1.05)}
.gallery__grid button::after{content:"";position:absolute;inset:0;border-radius:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}

.lightbox{position:fixed;inset:0;z-index:90;background:rgba(22,27,45,.86);backdrop-filter:blur(6px);display:grid;place-items:center;padding:3rem 1rem;animation:fade .4s}
.lightbox[hidden]{display:none}
.lightbox img{max-width:min(94vw,1100px);max-height:84vh;border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lightbox button{position:absolute;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);color:#fff;width:46px;height:46px;border-radius:50%;font-size:1.6rem;cursor:pointer;line-height:1}
.lightbox__close{top:1rem;right:1rem}
.lightbox__prev{left:.8rem;top:50%;transform:translateY(-50%)}
.lightbox__next{right:.8rem;top:50%;transform:translateY(-50%)}
@keyframes fade{from{opacity:0}}

/* ---------- wishes ---------- */
.form{max-width:560px;margin:0 auto;padding:1.8rem 1.4rem;display:grid;gap:1rem;text-align:left}
.form label{display:grid;gap:.35rem;font-family:var(--sans);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
.form input,.form select,.form textarea{font:inherit;font-family:var(--serif);font-size:1.08rem;letter-spacing:0;text-transform:none;color:var(--ink);background:rgba(255,255,255,.8);border:1px solid #d9e0ee;border-radius:12px;padding:.75rem .9rem;outline:none;transition:border .3s,box-shadow .3s;width:100%;-webkit-appearance:none;appearance:none}
.form select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235b6582' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;background-size:11px;padding-right:2.2rem}
.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--lav);box-shadow:0 0 0 4px rgba(185,178,220,.25)}
.form__row{display:grid;grid-template-columns:1fr 96px;gap:.8rem}
.form .btn{justify-self:center;margin-top:.4rem}
.form__note{text-align:center;font-style:italic;color:var(--lav-deep);min-height:1.2em;font-size:.98rem}
.wishes__stats{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap;margin:2rem auto 1.2rem;font-family:var(--sans);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}
.wishes__stats span{padding:.5em 1.1em;border-radius:999px;background:#fff;border:1px solid #e1e6f1;color:var(--ink-soft)}
.wishes__list{list-style:none;max-width:560px;margin:0 auto;max-height:520px;overflow:auto;display:grid;gap:.8rem;text-align:left;padding:.2rem .3rem .6rem;scrollbar-width:thin}
.wish{background:#fff;border:1px solid #e7ebf4;border-radius:16px;padding:1rem 1.2rem;animation:rise .6s var(--ease)}
.wish__top{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}
.wish__name{font-weight:600;color:var(--navy);font-size:1.08rem}
.wish__tag{font-family:var(--sans);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;padding:.25em .8em;border-radius:999px;background:var(--ice-2);color:var(--lav-deep)}
.wish__msg{margin-top:.3rem;color:var(--ink-soft);white-space:pre-line}
.wish__time{display:block;margin-top:.4rem;font-family:var(--sans);font-size:.66rem;color:var(--mute);letter-spacing:.06em}
@keyframes rise{from{opacity:0;transform:translateY(10px)}}

/* ---------- closing ---------- */
.closing{position:relative;min-height:100svh;display:grid;place-items:start center;padding-top:7rem!important;text-align:center;padding:6rem 1.5rem 8rem;overflow:hidden}
.closing__bg{position:absolute;inset:0;background-size:cover;background-position:center 80%}
.closing__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(247,249,253,.95) 0%,rgba(247,249,253,.55) 40%,rgba(238,244,251,.35) 100%)}
.closing__inner{position:relative;max-width:560px;display:flex;flex-direction:column;align-items:center;gap:1rem}
.closing__wreath{width:120px;mix-blend-mode:multiply;animation:spin 90s linear infinite;opacity:.95}
.closing__text{font-size:clamp(1.4rem,5.4vw,1.9rem);font-weight:400;line-height:1.45;color:var(--navy)}
.closing__sub{color:var(--ink-soft);font-style:italic}
.closing__bless{font-family:var(--sans);font-size:.7rem;letter-spacing:.38em;text-transform:uppercase;color:var(--navy);margin-top:.6rem}

/* ---------- dock + music ---------- */
.dock{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translate(-50%,140%);z-index:40;display:flex;gap:.2rem;padding:.4rem;border-radius:999px;background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 14px 40px -18px rgba(39,48,77,.45);transition:transform .8s var(--ease)}
.dock.show{transform:translate(-50%,0)}
.dock a{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink-soft);transition:background .3s,color .3s}
.dock a.active,.dock a:hover{background:var(--navy);color:#fff}
.dock svg,.music svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}
.music[hidden]{display:none!important}
.music{position:fixed;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:41;width:46px;height:46px;border-radius:50%;border:1px solid #fff;background:rgba(255,255,255,.75);backdrop-filter:blur(10px);color:var(--navy);cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 30px -14px rgba(39,48,77,.5)}
.music.playing svg{animation:spin 6s linear infinite}
.toast{position:fixed;left:50%;top:20px;transform:translate(-50%,-300%);z-index:95;background:var(--navy);color:#fff;font-family:var(--sans);font-size:.8rem;letter-spacing:.06em;padding:.7em 1.4em;border-radius:999px;transition:transform .5s var(--ease)}
.toast.show{transform:translate(-50%,0)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(26px);filter:blur(4px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease)}
.reveal.in{opacity:1;transform:none;filter:none}

@media (min-width:760px){
  body{font-size:19px}
  .section{padding:7rem 2rem 9rem}
  .events__grid{grid-template-columns:1fr 1fr}
  .gallery__grid{columns:3;column-gap:1rem}
  .gallery__grid button{margin-bottom:1rem}
  .couple__names{grid-template-columns:1fr 40px 1fr;align-items:center;max-width:760px;margin-inline:auto}
  .snowcap{height:96px}
  .hero__content{margin-top:-22vh}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none;filter:none}}

.cover__title{max-width:300px;line-height:2}
.event__time{font-weight:500;font-size:1.05rem;color:var(--navy);margin-top:-.25rem}
.event__actions{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin-top:.8rem}
.btn--sm{padding:.85em 1.4em;font-size:.66rem;letter-spacing:.2em}
.event .btn{margin-top:0}
.closing__from{margin-top:1.2rem}
.closing__family{font-style:italic;color:var(--ink-soft);font-size:1.15rem;margin-top:-.2rem}
@media (min-width:760px){.events__grid{grid-template-columns:repeat(3,1fr);max-width:1140px}}
@media (min-width:760px) and (max-width:1023px){.events__grid{grid-template-columns:1fr 1fr}.events__grid .event:last-child{grid-column:1/-1;max-width:520px;justify-self:center}}
.names em{font-size:.62em}
.names--xl em{font-size:.48em}
.closing__shade{background:linear-gradient(180deg,rgba(247,249,253,.96) 0%,rgba(247,249,253,.82) 55%,rgba(238,244,251,.35) 85%,rgba(238,244,251,.2) 100%)}
.closing__inner{padding-bottom:22vh}
@media (min-width:900px){
  .hero__bg{background-position:center 52%}
  .hero__content{margin-top:-6vh}
  .closing__bg{background-position:center 55%}
  .closing__inner{padding-bottom:4rem}
}

/* ===== mobile audit fixes ===== */
html{overflow-x:hidden}
.cover{overflow-y:auto;overscroll-behavior:contain;place-items:safe center}
.cover__inner{gap:clamp(.45rem,1.6svh,1.1rem);padding:clamp(1rem,4svh,2.4rem) 1.25rem calc(clamp(1rem,4svh,2.4rem) + env(safe-area-inset-bottom));margin:auto}
.wreath{width:min(58vw,28svh,250px);margin:0}
.wreath__photo img{object-position:50% 26%}
.cover .names{font-size:min(13vw,7.2svh,4.6rem)}
.cover__title{font-size:.78rem;letter-spacing:.3em;line-height:1.8}
.cover__date{font-size:.85rem;margin-top:0}
.guest{margin:.2rem 0}
.guest__label{font-size:.78rem}
.guest__name{font-size:clamp(1.25rem,5.5vw,1.55rem);overflow-wrap:anywhere}
.arch img{object-position:50% 24%}
.eyebrow{font-size:.8rem;letter-spacing:.32em}
.btn{font-size:.82rem;letter-spacing:.2em;min-height:48px}
.btn--sm{font-size:.8rem;letter-spacing:.14em;min-height:44px;padding:.7em 1.3em}
.event__date{font-size:.86rem;letter-spacing:.16em}
.event__addr{font-size:1.02rem}
.verse cite{font-size:.82rem}
.countdown span{font-size:.75rem;letter-spacing:.16em}
.form label{font-size:.8rem;letter-spacing:.16em}
.form input,.form select,.form textarea{font-size:16px;min-height:48px}
.wish__tag{font-size:.72rem}
.wish__time{font-size:.78rem}
.wishes__stats{font-size:.78rem}
.closing__bless{font-size:.8rem}
.scroll-cue{width:44px;height:52px;border:0;bottom:5rem}
.scroll-cue::before{content:"";position:absolute;left:11px;top:8px;width:22px;height:36px;border:1px solid rgba(39,48,77,.4);border-radius:12px}
.scroll-cue span{top:15px}
main{padding-bottom:0}
.closing{padding-bottom:calc(8rem + env(safe-area-inset-bottom))!important}
.wishes{padding-bottom:6rem}
.music{bottom:calc(86px + env(safe-area-inset-bottom));right:12px}
.event__actions .btn{flex:1 1 130px;justify-content:center;max-width:200px}
.lightbox{padding:3.5rem .5rem;touch-action:pan-y}
.lightbox img{max-width:100%;max-height:78svh;object-fit:contain}
.lightbox__close{top:calc(.8rem + env(safe-area-inset-top))}
@media (max-width:359px){
  body{font-size:17px}
  .section{padding-left:1.1rem;padding-right:1.1rem}
  .countdown__row{gap:.4rem}
  .countdown span{letter-spacing:.06em;font-size:.72rem}
  .form__row{grid-template-columns:1fr 84px}
  .dock a{width:44px}
}
@media (max-height:640px){
  .guest__sub{display:none}
  .cover__title{letter-spacing:.24em}
}
@media (max-width:420px){
  .lightbox__nav{top:auto!important;bottom:calc(1rem + env(safe-area-inset-bottom));transform:none!important}
  .lightbox__prev{left:calc(50% - 56px)}
  .lightbox__next{right:calc(50% - 56px)}
}

/* readable sizes (>=14px for labels & controls) */
.eyebrow,.cover__title{font-size:.875rem;letter-spacing:.24em}
.btn,.btn--sm{font-size:.875rem;letter-spacing:.12em}
.form label,.event__date,.verse cite,.closing__bless,.guest__label,.hero__date,.cover__date{font-size:.875rem}
.countdown span{font-size:.875rem;letter-spacing:.06em;text-transform:none}
.wish__tag,.wish__time,.wishes__stats{font-size:.875rem;letter-spacing:.04em}
.closing__wreath{width:120px;max-width:120px;height:auto}
/* tighter cover on short/narrow phones */
@media (max-height:700px){
  .wreath{width:min(50vw,24svh,220px)}
  .cover .names{font-size:min(12vw,6.2svh,4rem)}
  .cover__inner{gap:.45rem;padding-top:.9rem;padding-bottom:calc(.9rem + env(safe-area-inset-bottom))}
  .guest__name{font-size:1.2rem;padding:.1rem 1rem}
  .cover .btn{min-height:46px;padding:.8em 1.6em}
}
@media (max-width:359px){.eyebrow,.cover__title{letter-spacing:.16em}}
