/* =====================================================================
   Mobile-first stylesheet.
   Base rules target phones (about 360-430px). Larger screens are
   layered on top with min-width queries; the heavier effects (blur,
   continuous animation, hover states) only switch on for big screens
   with a real pointer.
   ===================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-padding-top:16px}
body{margin:0;font-family:var(--font-body);font-size:1.12rem;line-height:1.6;color:var(--ink);background:var(--ivory);overflow-x:hidden;max-width:100vw;animation:pageIn .7s var(--ease-out) backwards}
img{max-width:100%;display:block}
h1,h2,h3,p{margin:0}
a{color:inherit}
button{font:inherit;color:inherit}

/* ---------- layout ---------- */
:root{--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px)}
.container{width:calc(100% - 2*var(--gutter) - var(--safe-l) - var(--safe-r));margin-inline:auto}
.container--narrow,.container--form{max-width:720px}
.container--form{max-width:620px}
.center{text-align:center}
.section{position:relative;padding:56px 0;overflow-x:clip}
.section--ivory{background:var(--ivory)}
.section--sage{background:linear-gradient(180deg,#f3f7f3,#e4eee8)}
.section--blush{background:linear-gradient(180deg,var(--blush-100),var(--blush-300) 140%)}
.section--emerald{background:linear-gradient(180deg,var(--emerald-600),var(--emerald-800) 55%,var(--emerald-900));color:var(--ivory)}

.eyebrow{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.28em;font-size:.7rem;color:var(--brass-700);margin-bottom:8px}
.eyebrow--light{color:var(--brass-300)}
.title{font-family:var(--font-display);font-weight:600;font-size:clamp(1.8rem,1.4rem + 2vw,3rem);line-height:1.2;color:var(--emerald-800);margin-bottom:24px}
.title--light{color:var(--ivory)}
.script{font-family:var(--font-script);font-weight:400;color:var(--emerald-800)}
.prose p+p{margin-top:1em}
.prose p{color:var(--ink-soft)}
.signoff{margin-top:24px;font-style:italic;color:var(--brass-700)}

/* ---------- buttons (48px+ touch targets) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;cursor:pointer;font:600 .76rem/1 var(--font-display);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;padding:0 22px;border-radius:999px;border:1.5px solid transparent;transition:transform .3s var(--ease-out),box-shadow .3s,background .3s,color .3s}
.btn:active{transform:scale(.97)}
.btn:focus-visible{outline:3px solid var(--brass-300);outline-offset:3px}
.btn--brass{background:linear-gradient(135deg,var(--brass-300),var(--brass-500));color:var(--emerald-900)}
.btn--blush{background:var(--blush-300);color:var(--emerald-900)}
.btn--ghost{background:transparent;color:var(--ivory);border-color:var(--brass-300)}
.btn--emerald{background:var(--emerald-800);color:var(--ivory);width:100%;min-height:54px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(6px,1.4svh,12px);text-align:center;padding:clamp(32px,5svh,60px) calc(var(--gutter) + var(--safe-l)) clamp(56px,8svh,84px);color:var(--ivory);background:radial-gradient(120% 80% at 50% 0%,var(--emerald-600),var(--emerald-800) 55%,var(--emerald-900));overflow:hidden}
.hero__glow{position:absolute;inset:0;background:radial-gradient(circle at 25% 15%,rgba(220,184,120,.2),transparent 45%),radial-gradient(circle at 80% 75%,rgba(233,169,163,.18),transparent 50%)}
.hero>*{position:relative}
.hero__eyebrow{font-family:var(--font-deva);color:var(--brass-300);font-size:1.05rem;letter-spacing:.06em}
.hero__kicker{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.26em;font-size:.66rem;color:var(--blush-300)}
.hero__names{font-family:var(--font-script);font-weight:400;font-size:clamp(2.5rem,min(13.5vw,11svh),4.6rem);line-height:1.05;color:var(--ivory);text-shadow:0 4px 22px rgba(0,0,0,.35)}
.hero__names .amp{display:block;color:var(--brass-300);font-size:.55em;line-height:1}
.hero__names .word{display:inline-block}
.hero__names .ch{display:inline-block;white-space:pre;opacity:0;transform:translateY(.6em) rotate(4deg);animation:letter .8s var(--ease-out) forwards;animation-delay:calc(var(--i) * 45ms + 250ms)}
.hero__arch{width:min(44vw,18.5svh,240px);aspect-ratio:3/4;border-radius:999px 999px 16px 16px;padding:6px;background:linear-gradient(160deg,var(--brass-300),var(--brass-700));box-shadow:var(--shadow-soft);margin-block:6px}
.hero__arch img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.hero__date{font-family:var(--font-display);letter-spacing:.24em;color:var(--brass-300);font-size:clamp(.85rem,.78rem + .5vw,1.2rem)}
.hero__city{color:var(--blush-300);font-style:italic;font-size:.95rem;line-height:1.45;max-width:20em}
.hero__cta{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px}
.scroll-hint{position:absolute;bottom:calc(14px + var(--safe-b));left:50%;translate:-50% 0;width:24px;height:38px;border:1.5px solid var(--brass-300);border-radius:20px;display:block}
.scroll-hint span{position:absolute;left:50%;top:7px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--brass-300);animation:wheel 1.8s ease-in-out infinite}

/* ---------- countdown ---------- */
.countdown{display:flex;gap:8px;margin-top:6px}
.cd{min-width:clamp(58px,19vw,84px);padding:10px 4px 7px;border-radius:12px;background:rgba(251,246,240,.12);border:1px solid rgba(220,184,120,.45)}
.cd b{display:block;font-family:var(--font-display);font-weight:600;font-size:clamp(1.4rem,1.1rem + 1.6vw,2.2rem);line-height:1.2;color:var(--ivory);font-variant-numeric:tabular-nums}
.cd b.tick{animation:tick .4s var(--ease-out)}
.cd small{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.16em;font-size:.55rem;color:var(--brass-300)}

/* ---------- letter / ornament ---------- */
.shloka{margin-bottom:6px}
.shloka__h{font-family:var(--font-deva);color:var(--brass-700);font-size:1.2rem;margin-bottom:10px}
.shloka__s{font-family:var(--font-deva);white-space:pre-line;font-size:1.1rem;color:var(--emerald-800);line-height:1.85}
.shloka__t{margin-top:8px;font-style:italic;font-size:.92rem;color:var(--ink-soft)}
.ornament{height:30px;margin:18px auto;width:min(240px,70%);background:
  radial-gradient(circle at 50% 50%,var(--brass-500) 0 4px,transparent 5px),
  linear-gradient(90deg,transparent,var(--brass-500) 30%,var(--brass-500) 42%,transparent 42.5%,transparent 57.5%,var(--brass-500) 58%,var(--brass-500) 70%,transparent);
  background-size:100% 100%,100% 1.5px;background-position:center,center;background-repeat:no-repeat}
#letter-greeting{font-size:clamp(2.1rem,1.7rem + 2vw,3.2rem);margin-bottom:14px}

/* ---------- meet the bride & groom ---------- */
.meet{display:grid;grid-template-columns:1fr;gap:36px;max-width:880px;margin:28px auto 0}
.meet__card{text-align:center}
.meet__frame{width:min(240px,70vw);aspect-ratio:3/4;margin:0 auto 18px;padding:6px;border-radius:999px 999px 16px 16px;background:linear-gradient(160deg,var(--brass-300),var(--brass-700));box-shadow:var(--shadow-soft);overflow:hidden}
.meet__frame img{width:100%;height:100%;object-fit:cover;border-radius:inherit;transition:transform .9s var(--ease-out)}
.meet__role{font-family:var(--font-display);font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;color:var(--brass-700)}
.meet__name{font-family:var(--font-script);font-weight:400;font-size:clamp(2.1rem,1.7rem + 1.8vw,3rem);line-height:1.15;color:var(--emerald-800);margin:2px 0 6px}
.meet__bio{max-width:24em;margin:0 auto;color:var(--ink-soft)}

/* ---------- timeline / event cards (single column on phones) ---------- */
.timeline{list-style:none;margin:28px 0 0;padding:0;position:relative;display:grid;gap:24px}
.timeline::before{content:"";position:absolute;left:12px;top:0;bottom:0;width:2px;background:linear-gradient(var(--brass-300),var(--brass-500));transform-origin:top;transform:scaleY(var(--p,0))}
.tl{position:relative;display:block;padding-left:38px}
.tl::after{content:"";position:absolute;left:5px;top:28px;width:16px;height:16px;border-radius:50%;background:var(--ivory);border:3px solid var(--brass-500);box-shadow:0 0 0 5px rgba(184,138,68,.15);scale:0;transition:scale .6s cubic-bezier(.34,1.56,.64,1) .2s}
.tl.in::after{scale:1}
.tl__card{position:relative;width:100%}
.tl__card:not(.tl__card--flip){background:#fff;border:1px solid rgba(184,138,68,.35);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-soft)}
.tl__card--flip{perspective:1100px;cursor:pointer;outline:none}
.tl__inner{display:grid;transform-style:preserve-3d;transition:transform .7s var(--ease-out)}
.tl__face{grid-area:1/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-soft)}
.tl__front{background:#fff;border:1px solid rgba(184,138,68,.35);padding-bottom:36px}
.tl__back{transform:rotateY(180deg);background:linear-gradient(160deg,var(--emerald-600),var(--emerald-800));color:var(--ivory);border:1px solid var(--brass-500)}
.tl__back .tl__name{color:var(--brass-300);margin-bottom:10px}
.tl__rows{margin:0;display:grid;gap:10px}
.tl__rows dt{font-family:var(--font-display);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--brass-300)}
.tl__rows dd{margin:0;line-height:1.4}
.tl__hint{position:absolute;right:14px;bottom:10px;font-family:var(--font-display);font-size:.56rem;letter-spacing:.18em;text-transform:uppercase;color:var(--brass-500);opacity:.85;pointer-events:none;transition:opacity .3s}
.tl__card--flip.is-flipped .tl__hint{opacity:0}
.tl__card--flip.is-flipped .tl__inner{transform:rotateY(180deg)}
.tl__card--flip:focus-visible .tl__face{outline:3px solid var(--brass-300);outline-offset:3px}
.tl__day{font-family:var(--font-display);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-700)}
.tl__name{font-family:var(--font-display);font-size:1.4rem;line-height:1.25;color:var(--emerald-800);margin:2px 0}
.tl__time{color:var(--emerald-600);font-weight:600}
.tl__tag{font-style:italic;color:var(--ink-soft)}
.dress{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(184,138,68,.5)}
.dress__title{display:flex;flex-wrap:wrap;gap:2px 10px;align-items:baseline;font-family:var(--font-display);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--brass-700)}
.dress__title b{font-family:var(--font-body);font-size:1.05rem;letter-spacing:0;text-transform:none;color:var(--emerald-800)}
.dress__swatches{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 14px}
.dress__swatches li{display:flex;align-items:center;gap:7px;font-size:.9rem;color:var(--ink-soft)}
.swatch{width:22px;height:22px;border-radius:50%;background:var(--c);border:2px solid #fff;box-shadow:0 0 0 1px rgba(28,43,38,.25),0 3px 8px -2px rgba(28,43,38,.35)}
.dress__note{margin-top:8px;font-size:.95rem;font-style:italic;color:var(--ink-soft);line-height:1.45}

/* ---------- venue ---------- */
.venue__name{font-family:var(--font-display);font-size:1.5rem;line-height:1.25;color:var(--brass-300);margin-bottom:6px}
.venue__address{margin-bottom:10px}
.venue__note{color:var(--blush-300);font-style:italic;margin-bottom:22px}
#venue{isolation:isolate;overflow:hidden}
#venue.has-photo::before{content:"";position:absolute;inset:0;z-index:-2;background:var(--venue-photo) center 38%/cover no-repeat;filter:saturate(1.15) contrast(1.05) brightness(1.05)}
#venue.has-photo::after{content:"";position:absolute;inset:0;z-index:-1;background:
  radial-gradient(60% 50% at 50% 52%,rgba(8,34,28,.6),rgba(8,34,28,.25) 70%,transparent 100%),
  linear-gradient(180deg,rgba(10,44,36,.6),rgba(15,61,51,.22) 38%,rgba(15,61,51,.3) 65%,rgba(10,44,36,.78))}
#venue.has-photo .container{padding:26px 20px;border-radius:var(--radius);background:rgba(8,34,28,.74);border:1px solid rgba(220,184,120,.45);box-shadow:0 24px 60px -24px rgba(0,0,0,.6)}
#venue.has-photo .venue__address,#venue.has-photo .venue__note{font-weight:600;color:var(--ivory)}
#venue.has-photo .venue__note{color:var(--blush-300)}
#venue.has-photo .venue__name,#venue.has-photo .venue__address,#venue.has-photo .venue__note,#venue.has-photo .title{text-shadow:0 1px 8px rgba(0,0,0,.6)}

/* ---------- gallery: 2 fluid columns on phones ---------- */
.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:28px}
.photo{position:relative;display:block;aspect-ratio:4/5;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft);cursor:pointer;outline:none}
.photo img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.photo__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:10px;text-align:center;background:rgba(8,34,28,.68);opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out)}
.photo__title{font-family:var(--font-display);font-size:.95rem;line-height:1.25;color:var(--ivory);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.photo__actions{display:flex;flex-direction:column;gap:8px;width:100%}
.photo__btn{min-height:44px;cursor:pointer;white-space:nowrap;font:600 .6rem/1 var(--font-display);letter-spacing:.12em;text-transform:uppercase;padding:0 8px;border-radius:999px;border:1.5px solid var(--brass-300);background:linear-gradient(135deg,var(--brass-300),var(--brass-500));color:var(--emerald-900)}
.photo__btn--story{background:rgba(251,246,240,.14);color:var(--ivory)}
.photo__btn:focus-visible{outline:3px solid var(--ivory);outline-offset:2px}
.photo:focus-visible{box-shadow:0 0 0 3px var(--brass-300),var(--shadow-soft)}
.photo.is-open .photo__overlay,.photo:focus-within .photo__overlay{opacity:1;pointer-events:auto}

/* ---------- story viewer + lightbox ---------- */
.storyview{position:fixed;inset:0;z-index:55;display:grid;place-items:center;padding:calc(12px + env(safe-area-inset-top,0px)) 12px calc(12px + var(--safe-b));background:rgba(6,26,21,.94);animation:fade .25s}
.storyview[hidden]{display:none}
.storyview__close,.lightbox__close{position:absolute;top:calc(6px + env(safe-area-inset-top,0px));right:8px;z-index:2;width:48px;height:48px;font-size:2.2rem;line-height:1;color:var(--ivory);background:none;border:0;cursor:pointer}
.storyview__card{position:relative;width:100%;max-width:560px;height:min(86svh,720px);border-radius:var(--radius);overflow:hidden;box-shadow:0 30px 80px -20px rgba(0,0,0,.7);animation:pop .4s var(--ease-out)}
.storyview__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.storyview__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,34,28,.55),rgba(8,34,28,.88) 60%)}
.storyview__text{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:36px 22px;display:flex;flex-direction:column;justify-content:safe center;gap:14px;text-align:center;color:var(--ivory);overscroll-behavior:contain}
.storyview__text>*{margin:0}
.storyview__text h3{font-family:var(--font-display);font-size:1.5rem;line-height:1.25;color:var(--brass-300);text-shadow:0 2px 12px rgba(0,0,0,.5)}
.storyview__text p{font-size:1.15rem;line-height:1.7;white-space:pre-line;text-shadow:0 1px 8px rgba(0,0,0,.55)}
.lightbox{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(10,44,36,.95);animation:fade .25s}
.lightbox[hidden]{display:none}
.lightbox img{max-height:86svh;max-width:94vw;border-radius:12px;animation:pop .4s var(--ease-out)}

/* ---------- RSVP form (kept for when the section is restored) ---------- */
.form{display:grid;gap:16px;background:rgba(255,255,255,.7);border:1px solid rgba(184,138,68,.4);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-soft);margin-top:24px}
.form label,.form legend{font-family:var(--font-display);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--emerald-800)}
.form label{display:grid;gap:6px}
.form input:not([type=checkbox]):not([type=radio]),.form select,.form textarea{font:inherit;font-size:1rem;letter-spacing:0;text-transform:none;color:var(--ink);min-height:48px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--blush-500);background:#fff}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--emerald-600);box-shadow:0 0 0 4px rgba(31,107,87,.15)}
.form fieldset{border:0;padding:0;margin:0}
.checks,.radios{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.pill{position:relative}
.pill input{position:absolute;opacity:0}
.pill span{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--blush-500);font-family:var(--font-body);font-size:1rem;letter-spacing:0;text-transform:none;cursor:pointer}
.pill input:checked+span{background:var(--emerald-800);color:var(--ivory);border-color:var(--emerald-800)}
.pill input:focus-visible+span{outline:3px solid var(--brass-300);outline-offset:2px}
.form__status{padding:14px;border-radius:12px;text-align:center;background:#e8f4ee;color:var(--emerald-800)}
.form__status.is-error{background:#fde8e6;color:#8a2c26}
.form__status.is-info{background:var(--blush-100);color:var(--ink)}
.form__status a{font-weight:600}

/* ---------- contact ---------- */
.contact__intro{max-width:34em;margin:0 auto 24px;color:var(--ink-soft)}
.contact__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.contact__card{flex:1 1 220px;max-width:340px;background:rgba(255,255,255,.78);border:1px solid rgba(184,138,68,.4);border-radius:var(--radius);padding:22px 16px;box-shadow:var(--shadow-soft)}
.contact__name{font-family:var(--font-display);font-size:1.25rem;color:var(--emerald-800)}
.contact__role{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-family:var(--font-display);color:var(--brass-700);margin:2px 0 8px}
.contact__phone{font-variant-numeric:tabular-nums;color:var(--ink-soft);margin-bottom:12px}
.contact__links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chip{display:inline-flex;align-items:center;justify-content:center;min-height:44px;font:600 .64rem/1 var(--font-display);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;padding:0 18px;border-radius:999px;border:1.5px solid var(--emerald-600);color:var(--emerald-800);transition:background .25s,color .25s}
.chip:active{background:var(--emerald-800);color:var(--ivory)}
.chip:focus-visible{outline:3px solid var(--brass-300);outline-offset:2px}

/* ---------- footer ---------- */
.footer{background:var(--emerald-900);color:var(--blush-300);text-align:center;padding:48px calc(var(--gutter) + var(--safe-l)) calc(48px + var(--safe-b));border-top:3px solid var(--brass-500)}
.footer__names{font-size:2.3rem;line-height:1.2;color:var(--brass-300)}
.footer__date{font-family:var(--font-display);letter-spacing:.2em;font-size:.76rem;margin-top:8px;color:var(--brass-300)}

/* ---------- falling leaves ---------- */
.particles{position:fixed;inset:0;z-index:5;pointer-events:none;overflow:hidden}
.particle{position:absolute;top:-8vh;opacity:0;animation:float linear infinite}
.particle--leaf{border-radius:0 100% 0 100%;background:var(--emerald-300)}
.particle--bloom{border-radius:50% 50% 50% 0;background:var(--blush-500)}

/* ---------- scroll reveal (cheap: opacity + translate only) ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out);transition-delay:var(--d,0ms)}
.reveal.in{opacity:1;transform:none}

/* ---------- slide mode: each section is at least one screen, scrollbar hidden ---------- */
html.slides{scrollbar-width:none;-ms-overflow-style:none}
html.slides::-webkit-scrollbar{display:none}
html.slides .hero,html.slides .section{min-height:100svh}
html.slides .section{display:flex;flex-direction:column;justify-content:center}

/* ---------- section dots: small on phones, big hit area ---------- */
.dots{position:fixed;right:4px;top:50%;translate:0 -50%;z-index:45;display:grid;gap:6px;margin:0;padding:0;list-style:none}
.dots button{position:relative;display:block;width:8px;height:8px;padding:0;border-radius:50%;cursor:pointer;border:1.5px solid var(--brass-500);background:rgba(251,246,240,.7);transition:transform .3s var(--ease-out),background .3s}
.dots button::after{content:"";position:absolute;inset:-9px -6px}
.dots button.is-active{background:var(--brass-500);transform:scale(1.4)}
.dots button span{display:none}
.dots button:focus-visible{outline:3px solid var(--brass-300);outline-offset:3px}

/* ---------- keyframes ---------- */
@keyframes pageIn{from{opacity:0}}
@keyframes letter{to{opacity:1;transform:none}}
@keyframes drift{to{transform:translate(3%,-3%) scale(1.08)}}
@keyframes wheel{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(14px)}}
@keyframes tick{0%{transform:translateY(-35%);opacity:.2}100%{transform:none;opacity:1}}
@keyframes sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:scale(.94)}}
@keyframes venueZoom{from{transform:scale(1)}to{transform:scale(1.1) translateY(-1.5%)}}
@keyframes float{0%{transform:translate3d(0,-8vh,0) rotate(0);opacity:0}10%{opacity:.7}100%{transform:translate3d(var(--dx,40px),108vh,0) rotate(540deg);opacity:0}}

/* =====================================================================
   Larger phones / small tablets (560px+)
   ===================================================================== */
@media (min-width:560px){
  .gallery{--tile:240px;grid-template-columns:repeat(2,var(--tile));justify-content:space-evenly;gap:32px 24px}
  .hero__arch{width:min(240px,22svh)}
}

/* =====================================================================
   Tablets (720px+): two-column layouts
   ===================================================================== */
@media (min-width:720px){
  body{font-size:1.2rem}
  .section{padding:88px 0}
  .container{width:min(1100px,100% - 2*var(--gutter))}
  .container--narrow{width:min(720px,100% - 2*var(--gutter))}
  .container--form{width:min(620px,100% - 2*var(--gutter))}
  .meet{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(32px,6vw,80px);margin-top:36px}
  .meet__frame{width:min(280px,100%)}
  .meet__card.reveal{transform:translateX(-40px)}
  .meet__card--right.reveal{transform:translateX(40px)}
  .meet__card.reveal.in{transform:none}

  /* alternating two-sided timeline */
  .timeline{gap:34px;margin-top:40px}
  .timeline::before{left:50%;translate:-50% 0}
  .tl{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding-left:0}
  .tl::after{left:50%;top:50%;translate:-50% -50%;scale:0}
  .tl.in::after{scale:1}
  .tl__card{width:min(100%,430px)}
  .tl:nth-child(odd) .tl__card{grid-column:1;justify-self:end;margin-right:42px}
  .tl:nth-child(even) .tl__card{grid-column:2;justify-self:start;margin-left:42px}
  .tl.reveal{transform:translateX(-44px) scale(.97)}
  .tl.reveal:nth-child(even){transform:translateX(44px) scale(.97)}
  .tl.reveal.in{transform:none}

  .venue__name{font-size:1.7rem}
  #venue.has-photo .container{width:min(640px,100% - 2*var(--gutter));padding:40px 44px}
  .footer__names{font-size:2.6rem}
  .photo__btn{font-size:.66rem;letter-spacing:.16em}
  .dots{right:clamp(8px,1.6vw,20px);gap:10px}
  .dots button{width:12px;height:12px}
  .dots button::after{inset:-8px}
}

/* =====================================================================
   Desktop (800px+): three-column gallery, inline names
   ===================================================================== */
@media (min-width:800px){
  #gallery .container{width:min(1280px,100% - 2*var(--gutter))}
  .gallery{grid-template-columns:repeat(3,var(--tile));justify-content:space-between;gap:clamp(24px,4vw,56px) 24px}
}
@media (min-width:900px){
  .hero__names{font-size:clamp(2.8rem,min(5.2vw,11svh),5.6rem)}
  .hero__names .amp{display:inline;font-size:.7em;margin-inline:.25em}
}
@media (min-width:1024px){
  .section{padding:112px 0}
}

/* =====================================================================
   Big screens with a real pointer only: hover states + heavy effects
   ===================================================================== */
@media (min-width:800px) and (hover:hover) and (pointer:fine){
  .btn:hover{transform:translateY(-3px);box-shadow:0 12px 24px -10px rgba(0,0,0,.45)}
  .btn--ghost:hover{background:rgba(220,184,120,.15)}
  .btn--emerald:hover{background:var(--emerald-600)}
  .chip:hover{background:var(--emerald-800);color:var(--ivory);transform:translateY(-2px)}
  .contact__card{transition:transform .4s var(--ease-out)}
  .contact__card:hover{transform:translateY(-4px)}
  .meet__card:hover .meet__frame img{transform:scale(1.05)}
  .dress__swatches li:hover .swatch{transform:scale(1.25)}
  .swatch{transition:transform .35s var(--ease-out)}
  .tl__card--flip:hover .tl__inner{transform:rotateY(180deg)}
  .tl__card--flip:hover .tl__hint{opacity:0}
  .photo:hover .photo__overlay{opacity:1;pointer-events:auto}
  .photo:hover img{transform:scale(1.06)}
  .photo.is-open img{transform:scale(1.06)}
  .photo__btn--story:hover{background:var(--ivory);color:var(--emerald-900)}
  .dots button:hover{transform:scale(1.3)}
  .dots button span{display:block;position:absolute;right:22px;top:50%;translate:0 -50%;white-space:nowrap;padding:4px 10px;border-radius:999px;font-family:var(--font-display);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;background:var(--emerald-900);color:var(--ivory);opacity:0;pointer-events:none;transition:opacity .25s}
  .dots button:hover span,.dots button:focus-visible span{opacity:1}

  /* blur + continuous animation: desktop only */
  .reveal{filter:blur(4px);transition:opacity 1.1s var(--ease-out),transform 1.1s var(--ease-out),filter 1.1s var(--ease-out);transition-delay:var(--d,0ms)}
  .reveal.in{filter:none}
  .cd{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
  .photo__overlay{background:rgba(8,34,28,.52);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
  #venue.has-photo .container{background:rgba(8,34,28,.58);-webkit-backdrop-filter:blur(8px) saturate(1.1);backdrop-filter:blur(8px) saturate(1.1)}
  #venue.has-photo::before{inset:-6%;animation:venueZoom 26s ease-in-out infinite alternate}
  .storyview{background:rgba(6,26,21,.88);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
  .storyview__veil{background:linear-gradient(180deg,rgba(8,34,28,.35),rgba(8,34,28,.78) 60%);-webkit-backdrop-filter:blur(14px) saturate(1.1);backdrop-filter:blur(14px) saturate(1.1)}
  .hero__glow{inset:-20%;translate:0 calc(var(--hp,0) * 80px);animation:drift 18s ease-in-out infinite alternate}
  .hero__arch{translate:0 calc(var(--hp,0) * -24px)}
  .ornament{animation:sway 6s ease-in-out infinite}
}

/* =====================================================================
   Reduced motion
   ===================================================================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,.reveal.in,.tl.reveal,.tl.reveal:nth-child(even),.meet__card.reveal,.meet__card--right.reveal{opacity:1;transform:none;filter:none}
  .hero__names .ch{opacity:1;transform:none}
  .timeline::before{transform:none}
  .tl::after{scale:1}
  .particles{display:none}
}
