/* ==========================================================================
   Wedding Template 01 — "Emerald & Ivory"
   An elegant emerald-green / cream-ivory invitation theme with sage accents.
   Theme colours are injected as --wed-primary / --wed-secondary / --wed-accent.
   ========================================================================== */

.wed-html { scroll-behavior: smooth; }

:root {
    /* Emerald-green primary · cream/ivory base · a touch of sage as accent. */
    --wed-primary: #0b5d3f;
    --wed-primary-2: #10744f;   /* lighter emerald for gradients */
    --wed-primary-deep: #06341f;   /* deep emerald for vignettes */
    --wed-secondary: #f6f1e7;
    --wed-accent: #94a67d;
    --wed-accent-2: #b6c2a2;    /* soft sage highlight */
    --wed-ink: #2c3831;
    --wed-ink-soft: #6d7a6f;
    --wed-cream: #f7f3ea;
    --wed-cream-2: #e9e3d4;
    --wed-white: #fdfbf6;
    --wed-line: rgba(11, 93, 63, .16);
    --wed-shadow: 0 24px 60px rgba(20, 40, 30, .12);
    --wed-shadow-sm: 0 12px 30px rgba(20, 40, 30, .10);
    --wed-serif: "Cormorant Garamond", "Cormorant", Georgia, serif;
    --wed-serif-2: "Cormorant", Georgia, serif;
    --wed-script: "Great Vibes", cursive;
    --wed-sans: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
    --wed-maxw: 1120px;
}

* { box-sizing: border-box; }

.wed-body {
    margin: 0;
    color: var(--wed-ink);
    font-family: var(--wed-sans);
    font-size: 16px;
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
    /* Layered soft light + faint paper texture for depth over flat cream. */
    background-color: var(--wed-cream);
    background-image:
        radial-gradient(120% 90% at 50% -10%, rgba(255, 255, 255, .75), transparent 60%),
        radial-gradient(80% 50% at 100% 0%, rgba(148, 166, 125, .10), transparent 55%),
        radial-gradient(70% 50% at 0% 100%, rgba(11, 93, 63, .06), transparent 55%);
    background-attachment: fixed;
}
.wed-body.wed-locked { overflow: hidden; height: 100vh; }

img { max-width: 100%; height: auto; display: block; }
a { color: var(--wed-primary); }

/* --- layout helpers ------------------------------------------------------ */
.wed-container { width: 100%; max-width: var(--wed-maxw); margin: 0 auto; padding: 0 24px; }
.wed-container--narrow { max-width: 760px; }
.wed-section { padding: clamp(56px, 9vw, 120px) 0; position: relative; }

.wed-heading { text-align: center; margin-bottom: clamp(32px, 5vw, 60px); }
.wed-heading__eyebrow {
    display: inline-flex; align-items: center; gap: 14px; font-family: var(--wed-sans);
    text-transform: uppercase; letter-spacing: .42em; font-size: 11px; font-weight: 600;
    color: var(--wed-accent); margin-bottom: 16px;
}
.wed-heading__eyebrow::before, .wed-heading__eyebrow::after {
    content: ""; width: 28px; height: 1px; background: currentColor; opacity: .6;
}
.wed-heading__title {
    font-family: var(--wed-serif); font-weight: 500; letter-spacing: .005em;
    font-size: clamp(2.1rem, 5.2vw, 3.4rem); line-height: 1.08; margin: 0; color: var(--wed-primary);
}
.wed-heading--light .wed-heading__eyebrow::before,
.wed-heading--light .wed-heading__eyebrow::after { opacity: .5; }
.wed-heading--light .wed-heading__eyebrow { color: rgba(255,255,255,.75); }
.wed-heading--light .wed-heading__title { color: #fff; }
.wed-heading__flourish { display: inline-block; width: 130px; color: var(--wed-accent); margin-top: 18px; }
.wed-heading__flourish svg { width: 100%; height: auto; }

/* --- buttons ------------------------------------------------------------- */
.wed-btn {
    position: relative; display: inline-block; overflow: hidden;
    font-family: var(--wed-sans); font-size: 11.5px; font-weight: 600;
    letter-spacing: .24em; text-transform: uppercase; text-decoration: none;
    padding: 15px 34px; border-radius: 2px; cursor: pointer; border: 1px solid transparent;
    transition: color .3s ease, border-color .3s ease, box-shadow .3s ease, transform .3s ease;
    z-index: 0;
}
.wed-btn::before {
    content: ""; position: absolute; inset: 0; z-index: -1; transform: scaleX(0); transform-origin: left;
    transition: transform .35s cubic-bezier(.4, 0, .2, 1);
}
.wed-btn:hover { box-shadow: var(--wed-shadow-sm); transform: translateY(-1px); }
.wed-btn--solid { background: var(--wed-primary); color: #fff; }
.wed-btn--solid::before { background: var(--wed-primary-deep); }
.wed-btn--solid:hover::before { transform: scaleX(1); }
.wed-btn--outline { background: transparent; color: var(--wed-primary); border-color: var(--wed-primary); }
.wed-btn--outline::before { background: var(--wed-primary); }
.wed-btn--outline:hover { color: #fff; }
.wed-btn--outline:hover::before { transform: scaleX(1); }

/* --- reveal-on-scroll ---------------------------------------------------- */
[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s ease; }
[data-reveal].is-visible { opacity: 1; transform: none; }

/* ==========================================================================
   ENVELOPE — intro "page one"
   ========================================================================== */
.wed-envelope {
    position: fixed; inset: 0; z-index: 2000;
    display: flex; align-items: center; justify-content: center;
    background:
        radial-gradient(100% 70% at 50% 8%, rgba(255,255,255,.9), transparent 55%),
        radial-gradient(120% 90% at 50% 12%, var(--wed-cream) 0%, var(--wed-cream-2) 100%);
    text-align: center; cursor: pointer;
    transition: opacity .7s ease, visibility .7s ease;
    padding: 40px 24px;
}
.wed-envelope__inner {
    max-width: 640px; width: 100%; padding: clamp(20px, 3.5vw, 34px) clamp(16px, 3vw, 30px);
    position: relative;
}
/* Thin double-rule frame around the intro for a stationery feel. */
.wed-envelope__inner::before {
    content: ""; position: absolute; inset: 0; border: 1px solid var(--wed-line);
    box-shadow: inset 0 0 0 5px rgba(255,255,255,.5); pointer-events: none;
}
.wed-envelope__intro {
    text-transform: uppercase; letter-spacing: .48em; font-size: 10.5px; font-weight: 600;
    color: var(--wed-accent); margin: 0 0 3px;
}
/* Names: elegant script, but small — a caption above the envelope. */
.wed-envelope__names {
    font-family: var(--wed-script); font-weight: 400; color: var(--wed-primary);
    font-size: clamp(1.5rem, 3.6vw, 2.1rem); letter-spacing: .01em; line-height: 1.2; margin: 0;
    text-transform: none;
}
/* The envelope is the centrepiece — the largest, most prominent element. */
.wed-envelope__art { position: relative; margin: clamp(18px, 3.5vw, 30px) auto 12px; max-width: clamp(360px, 88vw, 600px); }
.wed-envelope__svg { display: block; width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 26px 42px rgba(20, 30, 18, .28)); position: relative; z-index: 2; perspective: 1100px; }
.wed-envelope__flap { transform-box: fill-box; transform-origin: 50% 0; transform-style: preserve-3d; backface-visibility: visible; transition: transform .8s ease; }
.wed-envelope.is-opening .wed-envelope__flap { transform: rotateX(172deg); }
/* Seal pops up slightly, then drops and falls away as the flap opens. */
.wed-envelope__seal { transform-box: fill-box; transform-origin: 50% 50%; }
.wed-envelope.is-opening .wed-envelope__seal { animation: wedSealDrop .85s cubic-bezier(.5, 0, .75, 1) forwards; }
@keyframes wedSealDrop {
    0%   { transform: translateY(0) scale(1) rotate(0deg); opacity: 1; }
    22%  { transform: translateY(-12px) scale(1.03) rotate(-2deg); opacity: 1; }
    38%  { transform: translateY(-12px) scale(1.03) rotate(-2deg); opacity: 1; }
    100% { transform: translateY(150px) scale(.82) rotate(9deg); opacity: 0; }
}
/* Monogram / logo on the wax seal. */
.wed-seal__initials {
    font-family: var(--wed-serif); font-weight: 700; font-size: 9.4px; letter-spacing: .04em; pointer-events: none;
    fill: #eaf5ee;
}
.wed-seal__logo { pointer-events: none; }
/* Lush foliage clusters that frame the envelope corners (bouquet effect). */
.wed-envelope__floral {
    position: absolute; z-index: 3;
    width: clamp(150px, 26vw, 230px); height: clamp(150px, 26vw, 230px);
    color: var(--wed-primary);
}
.wed-envelope__floral .wed-sprig { position: absolute; left: 50%; top: 50%; width: 100%; }
.wed-envelope__floral .wed-sprig svg { width: 100%; height: auto; }
.wed-sprig--1 { transform: translate(-50%, -50%) rotate(0deg); opacity: .95; }
.wed-sprig--2 { transform: translate(-50%, -50%) rotate(52deg) scale(.82); color: var(--wed-accent); opacity: .85; }
.wed-sprig--3 { transform: translate(-50%, -50%) rotate(-48deg) scale(.66); color: var(--wed-accent-2); opacity: .8; }
.wed-envelope__floral--tr { top: -34px; right: -46px; }
.wed-envelope__floral--bl { bottom: -34px; left: -46px; transform: rotate(180deg); }
.wed-envelope__cta {
    display: inline-block; font-family: var(--wed-sans); font-size: 12px; font-weight: 600;
    text-transform: uppercase; letter-spacing: .28em; color: var(--wed-primary); margin: 14px 0 0;
    padding: 12px 26px; border: 1px solid var(--wed-primary); border-radius: 2px;
    transition: background-color .3s ease, color .3s ease;
}
.wed-envelope:hover .wed-envelope__cta { background: var(--wed-primary); color: #fff; }
.wed-envelope__cta-text { animation: none; }
.wed-envelope__cta-dots { display: inline-block; animation: wedPulse 1.6s ease-in-out infinite; }
@keyframes wedPulse { 0%,100% { opacity: .35; } 50% { opacity: 1; } }
.wed-envelope.is-hidden { opacity: 0; visibility: hidden; pointer-events: none; }

/* ==========================================================================
   SITE (revealed after opening the envelope)
   ========================================================================== */
.wed-site { opacity: 0; transition: opacity .8s ease .1s; }
.wed-body.wed-opened .wed-site { opacity: 1; }

/* --- preview banner ------------------------------------------------------ */
.wed-preview-banner {
    position: fixed; top: 0; left: 0; right: 0; z-index: 1100;
    background: #6b5b3a; color: #fff; text-align: center; font-size: 13px; letter-spacing: .04em;
    padding: 8px 16px;
}
.wed-preview-banner .wed-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #ffd479; margin-right: 6px; }

/* --- navigation ---------------------------------------------------------- */
.wed-nav {
    display: none; /* top menu hidden — visitors navigate by scrolling */
    position: fixed; top: 0; left: 0; right: 0; z-index: 900;
    background: #fbfaf6; transition: box-shadow .3s ease;
}
.wed-nav.is-stuck { box-shadow: 0 2px 20px rgba(80,80,60,.08); }
.wed-nav__inner { max-width: var(--wed-maxw); margin: 0 auto; padding: 18px 24px; min-height: 46px;
    display: flex; align-items: center; justify-content: center; position: relative; }
.wed-nav__brand {
    font-family: var(--wed-serif); font-weight: 600; font-size: 1.5rem; letter-spacing: .08em;
    color: var(--wed-primary); text-decoration: none; border: 1.5px solid var(--wed-accent);
    border-radius: 50%; width: 52px; height: 52px; display: flex; align-items: center; justify-content: center;
}
.wed-nav.is-stuck .wed-nav__brand { width: 44px; height: 44px; font-size: 1.25rem; }
.wed-nav__links {
    list-style: none; display: flex; gap: clamp(20px, 3.5vw, 44px); margin: 0; padding: 0;
    justify-content: center; align-items: center;
}
.wed-nav__links a {
    font-family: var(--wed-sans); text-transform: uppercase; letter-spacing: .2em; font-size: 12px;
    font-weight: 600; color: var(--wed-ink); text-decoration: none; padding: 6px 0; position: relative;
}
.wed-nav__links a::after { content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 1px; background: var(--wed-accent); transition: width .3s ease; }
.wed-nav__links a:hover::after { width: 100%; }
.wed-nav__toggle { display: none; background: none; border: 0; cursor: pointer; width: 40px; height: 40px; position: absolute; left: 16px; }
.wed-nav__toggle span { display: block; width: 24px; height: 2px; background: var(--wed-primary); margin: 5px auto; transition: transform .3s ease, opacity .3s ease; }

/* --- hero ---------------------------------------------------------------- */
.wed-hero {
    min-height: 100svh; display: flex; flex-direction: column; align-items: center; justify-content: center;
    text-align: center; padding: 48px 24px 56px; position: relative;
    background-size: cover; background-position: center; background-repeat: no-repeat;
    background-attachment: fixed;
}
.wed-hero--plain { background:
    radial-gradient(70% 55% at 50% 26%, var(--wed-white) 0%, var(--wed-cream) 55%, var(--wed-cream-2) 100%); }
.wed-hero--image { color: #fff; background-color: #1e1e19; overflow: hidden; }
/* blurred, darkened copy of the image that fills the letterbox gaps like a soft shadow */
.wed-hero--image::before {
    content: ""; position: absolute; inset: 0; z-index: 0;
    background-image: var(--wed-hero-img);
    background-size: cover; background-position: center; background-repeat: no-repeat;
    filter: blur(28px) brightness(.5); transform: scale(1.12);
}
/* the full, uncropped image, plus a light overlay for text legibility */
.wed-hero--image::after {
    content: ""; position: absolute; inset: 0; z-index: 0;
    background-image: linear-gradient(rgba(30,30,25,.4), rgba(30,30,25,.4)), var(--wed-hero-img);
    background-size: cover, contain;
    background-position: center, center;
    background-repeat: no-repeat, no-repeat;
}
.wed-hero--image .wed-hero__eyebrow,
.wed-hero--image .wed-hero__invite,
.wed-hero--image .wed-hero__venue { color: rgba(255,255,255,.9); }
.wed-hero--image .wed-hero__names,
.wed-hero--image .wed-hero__date { color: #fff; }
.wed-hero--image .wed-hero__amp { color: rgba(255,255,255,.9); }
.wed-hero--image .wed-leaf { color: rgba(255,255,255,.85); }
.wed-hero__frame { max-width: 800px; position: relative; z-index: 1; }
.wed-hero__crest {
    width: 74px; height: 74px; border: 1px solid var(--wed-accent);
    border-radius: 50%; display: flex; align-items: center; justify-content: center;
    font-family: var(--wed-serif); font-size: 1.4rem; font-weight: 600; letter-spacing: .06em;
    color: var(--wed-primary); position: relative;
}
.wed-hero__crest::after { content: ""; position: absolute; inset: 5px; border: 1px solid var(--wed-accent); border-radius: 50%; opacity: .5; }
.wed-hero--image .wed-hero__crest { color: #fff; border-color: rgba(255,255,255,.7); }
.wed-hero--image .wed-hero__crest::after { border-color: rgba(255,255,255,.5); }
.wed-hero__crest--logo { width: 50px; height: 50px; border: 0; }
.wed-hero__crest--logo::after { display: none; }
.wed-nav__logo { width: 100%; height: 100%; object-fit: contain; display: block; }
.wed-hero__eyebrow { text-transform: uppercase; letter-spacing: .46em; font-size: 12px; font-weight: 600; color: var(--wed-accent); margin: 0 0 20px; }
.wed-hero__names { font-family: var(--wed-script); font-weight: 400; margin: 0; line-height: 1.02;
    font-size: clamp(3.2rem, 12vw, 7rem); color: var(--wed-primary); }
.wed-hero__amp { display: block; font-family: var(--wed-serif); font-style: italic; font-size: .42em; margin: 6px 0; color: var(--wed-accent); }
.wed-hero__invite { font-family: var(--wed-serif); font-size: clamp(1.05rem, 2.4vw, 1.4rem); color: var(--wed-ink-soft); margin: 20px auto 0; max-width: 540px; font-style: italic; line-height: 1.6; }
.wed-hero__date {
    display: inline-flex; align-items: center; gap: 16px; font-family: var(--wed-sans);
    text-transform: uppercase; letter-spacing: .3em; font-size: 13px; font-weight: 600;
    margin: 32px 0 8px; color: var(--wed-primary);
}
.wed-hero__date::before, .wed-hero__date::after { content: ""; width: 34px; height: 1px; background: var(--wed-accent); }
.wed-hero__venue { font-family: var(--wed-serif); font-size: 1.2rem; color: var(--wed-ink-soft); margin: 0; letter-spacing: .02em; }
.wed-leaf { color: var(--wed-accent); }
.wed-leaf--top { width: 120px; margin: 0 auto 24px; }
.wed-leaf--bottom { width: 120px; margin: 28px auto 0; transform: rotate(180deg); }
.wed-scroll { position: absolute; z-index: 1; bottom: 26px; left: 50%; transform: translateX(-50%); text-decoration: none; color: inherit; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.wed-scroll__label { text-transform: uppercase; letter-spacing: .25em; font-size: 10px; font-weight: 600; }
.wed-scroll__chev { width: 12px; height: 12px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); animation: wedBounce 1.8s ease-in-out infinite; }
@keyframes wedBounce { 0%,100% { transform: rotate(45deg) translate(0,0); } 50% { transform: rotate(45deg) translate(4px,4px); } }

/* --- couple -------------------------------------------------------------- */
.wed-couple { background: var(--wed-white); }
.wed-couple__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: clamp(28px, 5vw, 64px); max-width: 860px; margin: 0 auto; }
.wed-person { text-align: center; }
.wed-person__photo { position: relative; width: 210px; height: 210px; margin: 0 auto 24px; border-radius: 50%; overflow: hidden;
    box-shadow: var(--wed-shadow), 0 0 0 1px var(--wed-cream-2), 0 0 0 8px var(--wed-white), 0 0 0 9px var(--wed-line);
    background: var(--wed-cream); transition: transform .4s ease, box-shadow .4s ease; }
.wed-person:hover .wed-person__photo { transform: translateY(-4px); }
.wed-person__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.wed-person:hover .wed-person__photo img { transform: scale(1.05); }
.wed-person__photo.is-empty { display: flex; align-items: center; justify-content: center; }
.wed-person__initial { font-family: var(--wed-script); font-size: 4rem; color: var(--wed-accent); }
.wed-person__role { text-transform: uppercase; letter-spacing: .3em; font-size: 11px; font-weight: 600; color: var(--wed-accent); margin: 0 0 6px; }
.wed-person__name { font-family: var(--wed-serif); font-size: 1.8rem; font-weight: 500; color: var(--wed-primary); margin: 0 0 12px; }
.wed-person__bio { color: var(--wed-ink-soft); font-size: .98rem; margin: 0 auto 14px; max-width: 340px; }
.wed-person__social { display: flex; gap: 18px; justify-content: center; }
.wed-person__social a { text-transform: uppercase; letter-spacing: .16em; font-size: 11px; font-weight: 600; text-decoration: none; color: var(--wed-ink-soft); }
.wed-person__social a:hover { color: var(--wed-primary); }

/* --- story --------------------------------------------------------------- */
.wed-story { background: var(--wed-cream); position: relative; overflow: hidden; }
.wed-story > .wed-container { position: relative; z-index: 1; }
/* Celebrant photos as faded left/right corner backdrops (max two). */
.wed-story__corner { position: absolute; z-index: 0; pointer-events: none;
    width: clamp(170px, 32vw, 380px); height: clamp(230px, 44vw, 480px);
    background-size: cover; background-position: center; opacity: .42; }
.wed-story__corner--left { left: 0; bottom: 0;
    -webkit-mask-image: linear-gradient(58deg, #000 0%, transparent 76%);
            mask-image: linear-gradient(58deg, #000 0%, transparent 76%); }
.wed-story__corner--right { right: 0; top: 0;
    -webkit-mask-image: linear-gradient(238deg, #000 0%, transparent 76%);
            mask-image: linear-gradient(238deg, #000 0%, transparent 76%); }

/* --- couple section faded background ------------------------------------- */
.wed-couple { position: relative; }
.wed-couple__bg { position: absolute; inset: 0; background-size: cover; background-position: center;
    opacity: .5; z-index: 0; pointer-events: none; }
.wed-couple--bg::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(253,251,246,.55), rgba(253,251,246,.75)); }
.wed-couple > .wed-container { position: relative; z-index: 1; }

/* --- flying gold butterflies (couple section) ---------------------------- */
.wed-butterflies { position: absolute; inset: 0; z-index: 2; pointer-events: none; overflow: hidden; }
.wed-butterfly { position: absolute; color: #d4af6e; filter: drop-shadow(0 3px 4px rgba(120,90,20,.28));
    animation: wed-bfly-fly var(--bf-dur, 16s) ease-in-out var(--bf-delay, 0s) infinite; will-change: transform; }
.wed-butterfly__flit { display: block; animation: wed-bfly-bob calc(var(--bf-flap, .32s) * 9) ease-in-out infinite; }
/* Flap by scaling the whole butterfly at its centre — the body sits at the
   viewBox's horizontal midpoint, so both wings fold symmetrically. Uses only
   transform + default centre origin, so it works in every browser. */
.wed-butterfly__svg { display: block; width: 100%; height: auto; opacity: .9;
    transform-origin: 50% 50%; animation: wed-bfly-flap var(--bf-flap, .32s) ease-in-out infinite; }

@keyframes wed-bfly-fly {
    0%   { transform: translate(0, 0) rotate(-6deg); }
    25%  { transform: translate(34px, -26px) rotate(7deg); }
    50%  { transform: translate(70px, -6px) rotate(-5deg); }
    75%  { transform: translate(30px, 20px) rotate(9deg); }
    100% { transform: translate(0, 0) rotate(-6deg); }
}
@keyframes wed-bfly-bob {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50%      { transform: translateY(-4px) rotate(3deg); }
}
@keyframes wed-bfly-flap {
    0%, 100% { transform: scaleX(1); }
    50%      { transform: scaleX(.22); }
}
@media (prefers-reduced-motion: reduce) {
    .wed-butterfly, .wed-butterfly__flit, .wed-butterfly__svg { animation: none; }
}
.wed-story__body { font-family: var(--wed-serif); font-size: clamp(1.1rem, 2.4vw, 1.4rem); line-height: 1.9; text-align: center; color: var(--wed-ink); }
.wed-story__body p { margin: 0 0 1.2em; }
.wed-story__sign { font-family: var(--wed-script); font-size: 2.4rem; color: var(--wed-primary); text-align: center; margin: 24px 0 0; }

/* --- countdown ----------------------------------------------------------- */
.wed-countdown { color: #fff; position: relative; overflow: hidden;
    background:
        radial-gradient(120% 100% at 50% 0%, var(--wed-primary-2), transparent 60%),
        linear-gradient(160deg, var(--wed-primary) 0%, var(--wed-primary-deep) 100%); }
/* Elegant gold frame around the whole section, with ornamental corners. */
.wed-countdown { --wed-frame-gold: #d4af6e; }
.wed-countdown__frame { position: absolute; inset: clamp(14px, 3.2vw, 34px); z-index: 1; pointer-events: none;
    border: 1px solid rgba(212,175,110,.55); }
.wed-countdown__frame::before { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(212,175,110,.28); }
.wed-countdown__corner { position: absolute; width: clamp(66px, 11vw, 132px); line-height: 0; color: var(--wed-frame-gold);
    filter: drop-shadow(0 1px 1px rgba(0,0,0,.25)); }
.wed-countdown__corner svg { width: 100%; height: auto; display: block; }
.wed-countdown__corner--tl { top: -1px; left: -1px; }
.wed-countdown__corner--tr { top: -1px; right: -1px; transform: scaleX(-1); }
.wed-countdown__corner--bl { bottom: -1px; left: -1px; transform: scaleY(-1); }
.wed-countdown__corner--br { bottom: -1px; right: -1px; transform: scale(-1); }
.wed-countdown > .wed-container { position: relative; z-index: 2; }
.wed-countdown__grid { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(6px, 2vw, 20px); }
.wed-count { min-width: 74px; text-align: center; padding: 10px 8px; position: relative; }
.wed-count + .wed-count::before { content: ""; position: absolute; left: -4px; top: 28%; bottom: 28%; width: 1px; background: rgba(255,255,255,.18); }
.wed-count__num { display: block; font-family: var(--wed-serif); font-size: clamp(2.8rem, 7vw, 4.6rem); line-height: 1; font-weight: 500; font-variant-numeric: tabular-nums; }
.wed-count__label { display: block; text-transform: uppercase; letter-spacing: .3em; font-size: 10.5px; font-weight: 600; margin-top: 6px; color: rgba(255,255,255,.75); }
.wed-countdown__done { text-align: center; font-family: var(--wed-serif); font-size: 1.7rem; margin-top: 8px; }

/* --- events -------------------------------------------------------------- */
.wed-events { background: var(--wed-white); position: relative; overflow: hidden; }
.wed-events > .wed-container { position: relative; z-index: 1; }
/* Faded dresses/suits backdrop behind the When & Where section. */
.wed-events__bg { position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-size: cover; background-position: center; opacity: .14; }
.wed-events--bg::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,.74), rgba(255,255,255,.88)); }
.wed-events__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 28px; }
.wed-event { position: relative; background: var(--wed-cream); border: 1px solid var(--wed-cream-2); border-radius: 4px; padding: 44px 32px 40px; text-align: center; overflow: hidden; transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease; }
.wed-event::before { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 56px; height: 3px; background: var(--wed-accent); border-radius: 0 0 4px 4px; }
.wed-event:hover { transform: translateY(-6px); box-shadow: var(--wed-shadow); border-color: transparent; }
.wed-event__type { text-transform: uppercase; letter-spacing: .3em; font-size: 11px; font-weight: 600; color: var(--wed-accent); }
.wed-event__title { font-family: var(--wed-serif); font-size: 2.1rem; font-weight: 500; color: var(--wed-primary); margin: 10px 0 14px; }
.wed-event__date { font-weight: 600; margin: 0 0 4px; }
.wed-event__time { color: var(--wed-ink-soft); margin: 0 0 12px; }
.wed-event__venue { font-family: var(--wed-serif); font-size: 1.2rem; margin: 0 0 4px; }
.wed-event__addr { color: var(--wed-ink-soft); font-size: .95rem; margin: 0 0 12px; }
.wed-event__samevenue { color: var(--wed-ink-soft); font-family: var(--wed-serif); font-style: italic; font-size: 1.05rem; margin: 0 0 12px; }
.wed-event__samevenue strong { color: var(--wed-primary); font-style: normal; }
.wed-event__dress { font-size: .92rem; margin: 0 0 6px; }
.wed-event__dress span { color: var(--wed-accent); font-weight: 600; }
.wed-event__desc { color: var(--wed-ink-soft); font-size: .95rem; margin: 0 0 18px; }
.wed-event .wed-btn { margin-top: 8px; }
.wed-dresscode { text-align: center; margin-top: 56px; }
.wed-dresscode__title { font-family: var(--wed-serif); font-size: 1.8rem; color: var(--wed-primary); margin: 0 0 10px; }
.wed-dresscode__note { color: var(--wed-ink-soft); max-width: 620px; margin: 0 auto; }
.wed-swatches { display: flex; gap: 12px; justify-content: center; margin-top: 18px; }
.wed-swatches span { width: 40px; height: 52px; border-radius: 40px; border: 1px solid rgba(0,0,0,.06); box-shadow: 0 6px 14px rgba(80,80,60,.14); }
/* Per-group attire colour palettes */
.wed-attire__groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 24px; margin-top: 34px; max-width: 940px; margin-left: auto; margin-right: auto; }
.wed-attire { background: var(--wed-cream); border: 1px solid var(--wed-cream-2); border-radius: 6px; padding: 26px 22px; }
.wed-attire__group { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--wed-accent); margin: 0 0 4px; }
.wed-attire__title { font-family: var(--wed-serif); font-size: 1.05rem; color: var(--wed-primary); margin: 0 0 12px; }
.wed-attire__swatches { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 6px 0 12px; }
.wed-attire__swatches span { width: 26px; height: 26px; border-radius: 50%; border: 1px solid rgba(0,0,0,.08); box-shadow: 0 4px 10px rgba(80,80,60,.16); }
.wed-attire__note { color: var(--wed-ink-soft); font-size: .8rem; margin: 0; }

/* --- entourage ----------------------------------------------------------- */
.wed-entourage { background: var(--wed-cream); position: relative; overflow: hidden; }
.wed-entourage > .wed-container { position: relative; z-index: 1; }
/* Up to three faded photo accents behind the Entourage section. */
.wed-entourage__bg { position: absolute; z-index: 0; pointer-events: none;
    width: clamp(150px, 26vw, 340px); height: clamp(190px, 34vw, 420px);
    background-size: cover; background-position: center; opacity: .12; }
.wed-entourage__bg--left { left: 0; top: 10%;
    -webkit-mask-image: linear-gradient(68deg, #000 0%, transparent 80%);
            mask-image: linear-gradient(68deg, #000 0%, transparent 80%); }
.wed-entourage__bg--right { right: 0; top: 28%;
    -webkit-mask-image: linear-gradient(248deg, #000 0%, transparent 80%);
            mask-image: linear-gradient(248deg, #000 0%, transparent 80%); }
.wed-entourage__bg--bottom { left: 50%; bottom: 0; transform: translateX(-50%);
    -webkit-mask-image: linear-gradient(0deg, #000 0%, transparent 82%);
            mask-image: linear-gradient(0deg, #000 0%, transparent 82%); }

/* Twinkling gold sparkles across the Entourage section. */
.wed-glitter { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.wed-glint { position: absolute; color: #e6c25a; line-height: 0; opacity: 0; will-change: transform, opacity;
    filter: drop-shadow(0 0 3px rgba(212,175,110,.7));
    animation: wed-glint-twinkle var(--g-dur, 2.6s) ease-in-out var(--g-delay, 0s) infinite; }
.wed-glint--pale { color: #f5e3a8; }
.wed-glint__svg { display: block; width: 100%; height: auto; }
@keyframes wed-glint-twinkle {
    0%, 100% { opacity: 0; transform: scale(.2) rotate(0deg); }
    50%      { opacity: .95; transform: scale(1) rotate(45deg); }
}
@media (prefers-reduced-motion: reduce) {
    .wed-glint { animation: none; opacity: .5; transform: scale(.8); }
}
.wed-entourage__group { text-align: center; margin-bottom: 22px; }
.wed-entourage__cat { font-family: var(--wed-serif); font-size: 1.3rem; font-weight: 600; color: var(--wed-primary);
    letter-spacing: .05em; margin: 0 0 12px; }
/* delicate sage flourish beneath each category label (follows the label's alignment) */
.wed-entourage__cat::after { content: ""; display: block; width: 46px; height: 1px; margin: 9px auto 0;
    background: linear-gradient(90deg, transparent, var(--wed-accent), transparent); }
.wed-entourage__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 6px 14px; max-width: 900px; margin: 0 auto; }
.wed-entourage__item { display: flex; flex-direction: column; align-items: center; gap: 1px; }
.wed-entourage__avatar { width: 96px; height: 96px; border-radius: 50%; overflow: hidden;
    border: 3px solid var(--wed-white); box-shadow: 0 0 0 1px var(--wed-line), var(--wed-shadow-sm);
    margin-bottom: 8px; transition: transform .35s ease, box-shadow .35s ease; }
.wed-entourage__item:hover .wed-entourage__avatar { transform: translateY(-3px);
    box-shadow: 0 0 0 1px var(--wed-accent-2), var(--wed-shadow); }
.wed-entourage__avatar img { width: 100%; height: 100%; object-fit: cover; }
.wed-entourage__name { font-family: var(--wed-serif); font-size: 1.05rem; line-height: 1.25; color: var(--wed-ink); }
.wed-entourage__pair { font-family: var(--wed-serif); font-size: 1.05rem; line-height: 1.25; color: var(--wed-ink); }
.wed-entourage__role { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--wed-accent); }

/* Sponsors: linear paired rows, photos hidden */
.wed-entourage__group--linear .wed-entourage__list { grid-template-columns: 1fr; max-width: 720px; gap: 3px; }
.wed-entourage__group--linear .wed-entourage__item { flex-flow: row wrap; justify-content: center; align-items: baseline; column-gap: 12px; gap: 1px 12px; }
.wed-entourage__group--linear .wed-entourage__avatar { display: none; }
.wed-entourage__group--linear .wed-entourage__amp { flex: 0 0 auto; color: var(--wed-accent);
    font-family: var(--wed-script); font-size: 1.5rem; line-height: 1; margin-top: -2px; }
.wed-entourage__group--linear .wed-entourage__role { flex: 0 0 100%; text-align: center; }

/* Bearers: one per row, centered */
.wed-entourage__group--bearers .wed-entourage__list { grid-template-columns: 1fr; max-width: 420px; gap: 12px; }

/* Little groomsmen / bridesmaids / flower girls: compact names flowing centered across rows */
.wed-entourage__group--compact .wed-entourage__list { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; max-width: 640px; gap: 2px 22px; }
.wed-entourage__group--compact .wed-entourage__item { flex: 0 0 auto; flex-direction: row; align-items: baseline; gap: 6px; }
.wed-entourage__group--compact .wed-entourage__avatar { display: none; }
.wed-entourage__group--compact .wed-entourage__name,
.wed-entourage__group--compact .wed-entourage__pair { font-size: .98rem; white-space: nowrap; }

/* Principal & Secondary Sponsors: "Name & Partner" as one normally-centered line (solo names centered too) */
.wed-entourage__group--centered .wed-entourage__name,
.wed-entourage__group--centered .wed-entourage__pair { text-align: center; }

/* Role-on-top groups: stack members one per row (single column) */
.wed-entourage__group--role-top .wed-entourage__list { grid-template-columns: 1fr; }

/* Secondary Sponsors: same centered names, but the role sits above them with spacing between entries */
.wed-entourage__group--role-top .wed-entourage__item { margin-top: 7px; }
.wed-entourage__group--role-top .wed-entourage__item:first-child { margin-top: 0; }
.wed-entourage__group--role-top .wed-entourage__role { order: -1; margin-bottom: 2px; }

/* Best Man & Maid of Honor: two columns side by side (like the Parents pair) */
.wed-entourage__honor-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.wed-entourage__honor-row .wed-entourage__group { margin-bottom: 18px; }
@media (max-width: 560px) { .wed-entourage__honor-row { grid-template-columns: 1fr; } }

/* Facing-inward alignment: left side flush right, right side flush left. */
/* Parents — two columns, odd = left (flush right), even = right (flush left). */
.wed-entourage__group--facing .wed-entourage__list { grid-template-columns: 1fr 1fr; }
.wed-entourage__group--facing .wed-entourage__item:nth-child(odd) { align-items: flex-end; text-align: right; }
.wed-entourage__group--facing .wed-entourage__item:nth-child(even) { align-items: flex-start; text-align: left; }
/* Best Man (left column) flush right, Maid of Honor (right column) flush left. */
.wed-entourage__honor-row > .wed-entourage__group:first-child { text-align: right; }
.wed-entourage__honor-row > .wed-entourage__group:first-child .wed-entourage__item { align-items: flex-end; }
.wed-entourage__honor-row > .wed-entourage__group:first-child .wed-entourage__cat::after { margin-right: 0; margin-left: auto; }
.wed-entourage__honor-row > .wed-entourage__group:last-child { text-align: left; }
.wed-entourage__honor-row > .wed-entourage__group:last-child .wed-entourage__cat::after { margin-left: 0; margin-right: auto; }
.wed-entourage__honor-row > .wed-entourage__group:last-child .wed-entourage__item { align-items: flex-start; }
/* On mobile the two groups stack vertically, so centre them instead of facing inward. */
@media (max-width: 560px) {
    .wed-entourage__honor-row > .wed-entourage__group:first-child,
    .wed-entourage__honor-row > .wed-entourage__group:last-child { text-align: center; }
    .wed-entourage__honor-row > .wed-entourage__group:first-child .wed-entourage__item,
    .wed-entourage__honor-row > .wed-entourage__group:last-child .wed-entourage__item { align-items: center; }
    .wed-entourage__honor-row > .wed-entourage__group:first-child .wed-entourage__cat::after,
    .wed-entourage__honor-row > .wed-entourage__group:last-child .wed-entourage__cat::after { margin-left: auto; margin-right: auto; }
}

/* --- gallery ------------------------------------------------------------- */
.wed-gallery { background: var(--wed-white); }
.wed-gallery__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.wed-gallery__item { margin: 0; }
.wed-gallery__btn { position: relative; padding: 0; border: 0; background: none; cursor: pointer; display: block; width: 100%; overflow: hidden; border-radius: 3px; box-shadow: var(--wed-shadow-sm); }
.wed-gallery__btn::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(6,52,31,.42)); opacity: 0; transition: opacity .4s ease; }
.wed-gallery__btn:hover::after { opacity: 1; }
.wed-gallery__btn img { width: 100%; aspect-ratio: 4/5; object-fit: cover; transition: transform .6s ease; }
.wed-gallery__btn:hover img { transform: scale(1.06); }
.wed-gallery__item figcaption { font-family: var(--wed-serif); font-style: italic; color: var(--wed-ink-soft); text-align: center; font-size: .95rem; margin-top: 8px; }

/* --- lightbox ------------------------------------------------------------ */
.wed-lightbox { position: fixed; inset: 0; z-index: 1200; background: rgba(30,30,25,.92); display: flex; align-items: center; justify-content: center; padding: 40px; }
.wed-lightbox[hidden] { display: none; }
.wed-lightbox__stage { margin: 0; max-width: 90vw; max-height: 86vh; text-align: center; }
.wed-lightbox__stage img { max-width: 90vw; max-height: 78vh; object-fit: contain; margin: 0 auto; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.wed-lightbox__stage figcaption { color: #fff; font-family: var(--wed-serif); font-style: italic; margin-top: 14px; }
.wed-lightbox__close { position: absolute; top: 18px; right: 24px; background: none; border: 0; color: #fff; font-size: 40px; line-height: 1; cursor: pointer; }
.wed-lightbox__nav { background: none; border: 0; color: #fff; font-size: 48px; cursor: pointer; padding: 0 12px; opacity: .8; }
.wed-lightbox__nav:hover { opacity: 1; }

/* --- rsvp ---------------------------------------------------------------- */
.wed-rsvp { color: #fff;
    background:
        radial-gradient(120% 90% at 50% 0%, var(--wed-primary-2), transparent 62%),
        linear-gradient(160deg, var(--wed-primary) 0%, var(--wed-primary-deep) 100%); }
.wed-rsvp__lead { max-width: 480px; margin: 16px auto 0; color: rgba(255,255,255,.82); font-family: var(--wed-serif); font-size: 1.2rem; font-style: italic; }
.wed-rsvp__card { background: var(--wed-white); color: var(--wed-ink); border-radius: 6px; padding: clamp(28px, 5vw, 52px); box-shadow: 0 30px 70px rgba(6,52,31,.35); position: relative; }
.wed-rsvp__card::before { content: ""; position: absolute; inset: 10px; border: 1px solid var(--wed-line); border-radius: 3px; pointer-events: none; }
.wed-rsvp__note { background: var(--wed-cream); border-left: 3px solid var(--wed-accent); padding: 12px 16px; border-radius: 3px; font-size: .95rem; color: var(--wed-ink-soft); margin: 0 0 20px; }
.wed-find__row { display: flex; gap: 12px; }
.wed-find__input { flex: 1; border: 1px solid var(--wed-cream-2); background: var(--wed-cream); border-radius: 3px; padding: 14px 16px; font-family: var(--wed-sans); font-size: 15px; color: var(--wed-ink); }
.wed-find__input:focus { outline: none; border-color: var(--wed-accent); box-shadow: 0 0 0 3px rgba(148,166,125,.25); }
.wed-find__result { margin-top: 18px; }
.wed-find__result .wed-alert { margin: 0; }
@media (max-width: 560px) { .wed-find__row { flex-direction: column; } }

/* --- seat-finder result modal ------------------------------------------- */
.wed-modal { position: fixed; inset: 0; z-index: 1300; display: flex; align-items: center; justify-content: center; padding: 24px; }
.wed-modal[hidden] { display: none; }
.wed-modal__backdrop { position: absolute; inset: 0; background: rgba(6, 52, 31, .55); backdrop-filter: blur(3px); }
.wed-modal__card {
    position: relative; z-index: 1; background: var(--wed-white); color: var(--wed-ink);
    width: 100%; max-width: 440px; border-radius: 8px; text-align: center;
    padding: clamp(34px, 5vw, 50px) clamp(24px, 4vw, 40px);
    box-shadow: 0 40px 90px rgba(6, 52, 31, .40);
    animation: wedModalIn .35s cubic-bezier(.2, .8, .2, 1);
}
@keyframes wedModalIn { from { opacity: 0; transform: translateY(16px) scale(.98); } to { opacity: 1; transform: none; } }
.wed-modal__card::before { content: ""; position: absolute; inset: 10px; border: 1px solid var(--wed-line); border-radius: 5px; pointer-events: none; }
.wed-modal__close { position: absolute; top: 8px; right: 14px; background: none; border: 0; font-size: 30px; line-height: 1; color: var(--wed-ink-soft); cursor: pointer; z-index: 2; }
.wed-modal__close:hover { color: var(--wed-primary); }
.wed-modal__deco { width: 96px; margin: 0 auto 6px; color: var(--wed-accent); }
.wed-modal__deco svg { width: 100%; height: auto; }
.wed-modal__eyebrow { display: block; text-transform: uppercase; letter-spacing: .3em; font-size: 11px; font-weight: 600; color: var(--wed-accent); margin-bottom: 8px; }
.wed-modal__name { font-family: var(--wed-serif); font-size: clamp(1.7rem, 5vw, 2.3rem); font-weight: 500; color: var(--wed-primary); margin: 0 0 14px; line-height: 1.1; }
.wed-modal__table { display: inline-flex; flex-direction: column; gap: 3px; background: var(--wed-cream); border: 1px solid var(--wed-cream-2); border-radius: 4px; padding: 12px 28px; margin-bottom: 16px; }
.wed-modal__table span { text-transform: uppercase; letter-spacing: .22em; font-size: 10px; font-weight: 600; color: var(--wed-ink-soft); }
.wed-modal__table strong { font-family: var(--wed-serif); font-size: 1.5rem; color: var(--wed-primary); }
.wed-modal__msg { color: var(--wed-ink-soft); margin: 0 0 22px; font-size: .98rem; line-height: 1.6; }
.wed-modal__confirm { width: 100%; }
.wed-modal__badge { display: inline-block; background: #e7efe0; color: #3f6a3a; border: 1px solid #bcd4ac; border-radius: 40px; padding: 11px 24px; font-size: 13px; font-weight: 600; letter-spacing: .03em; }
.wed-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.wed-field { margin-bottom: 20px; }
.wed-field label { display: block; text-transform: uppercase; letter-spacing: .16em; font-size: 11px; font-weight: 600; color: var(--wed-ink-soft); margin-bottom: 8px; }
.wed-form .form-control,
.wed-field input:not([type=radio]),
.wed-field textarea {
    width: 100%; border: 1px solid var(--wed-cream-2); background: var(--wed-cream); border-radius: 3px;
    padding: 12px 14px; font-family: var(--wed-sans); font-size: 15px; color: var(--wed-ink);
}
.wed-field input:focus, .wed-field textarea:focus { outline: none; border-color: var(--wed-accent); box-shadow: 0 0 0 3px rgba(183,160,106,.18); }
.wed-field__error { color: #b23b3b; font-size: .82rem; margin-top: 6px; }
.wed-field .form-control.is-invalid,
.wed-field .has-error input { border-color: #c96; }
.wed-radios { display: flex; flex-wrap: wrap; gap: 12px; }
.wed-radio { display: flex; align-items: center; gap: 8px; padding: 10px 16px; border: 1px solid var(--wed-cream-2); border-radius: 40px; cursor: pointer; font-size: 14px; }
.wed-radio input { accent-color: var(--wed-primary); }
.wed-form__actions { text-align: center; margin-top: 10px; }
.wed-alert { border-radius: 4px; padding: 14px 18px; margin-bottom: 20px; font-size: 14px; }
.wed-alert--success { background: #e7efe0; color: #47603a; border: 1px solid #b9d0a8; }
.wed-alert--error { background: #f6e4e2; color: #8a3b34; border: 1px solid #e0b3ac; }

/* --- gift ---------------------------------------------------------------- */
.wed-gift { background: var(--wed-cream); }
.wed-gift__box { background: var(--wed-white); border: 1px solid var(--wed-cream-2); border-radius: 6px; padding: clamp(28px, 5vw, 48px); text-align: center; font-family: var(--wed-serif); font-size: 1.2rem; line-height: 1.8; color: var(--wed-ink); }
.wed-gift__qrs { display: flex; flex-wrap: nowrap; justify-content: center; align-items: flex-start; gap: clamp(12px, 3vw, 36px); margin-top: 32px; }
.wed-gift__qr { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; margin: 0; background: var(--wed-white); border: 1px solid var(--wed-cream-2); border-radius: 6px; padding: clamp(10px, 2vw, 18px); box-shadow: 0 1px 4px rgba(0, 0, 0, .06); }
.wed-gift__qr-btn { padding: 0; border: 0; background: none; cursor: zoom-in; width: 100%; max-width: 180px; border-radius: 4px; line-height: 0; transition: transform .2s ease, box-shadow .2s ease; }
.wed-gift__qr-btn:hover, .wed-gift__qr-btn:focus-visible { transform: scale(1.03); box-shadow: 0 4px 14px rgba(0, 0, 0, .14); outline: none; }
.wed-gift__qr-img { width: 100%; aspect-ratio: 1 / 1; height: auto; object-fit: contain; display: block; }
.wed-gift__qr-label { font-family: var(--wed-serif); font-size: 1.05rem; color: var(--wed-ink); letter-spacing: .02em; }

/* --- faq ----------------------------------------------------------------- */
/* Every answer is shown expanded — guests should be able to read the whole
   section at a glance, without clicking. Two columns on wide screens keeps a
   long list from turning into an endless scroll. */
.wed-faq { background: var(--wed-white); }
/* Cards stretch to their row's height so the bottom edges line up even when the
   answers differ in length. */
.wed-faq__list {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    align-items: stretch; gap: clamp(18px, 2.6vw, 30px);
}
.wed-faq__item {
    background: var(--wed-cream); border: 1px solid var(--wed-cream-2); border-radius: 6px;
    padding: clamp(20px, 2.6vw, 30px); box-shadow: 0 1px 4px rgba(0, 0, 0, .04);
}
.wed-faq__q {
    display: flex; align-items: baseline; gap: 12px; margin: 0 0 12px;
    font-family: var(--wed-serif); font-weight: 600; line-height: 1.4;
    font-size: clamp(1.08rem, 2.2vw, 1.28rem); color: var(--wed-primary);
}
.wed-faq__num { font-family: var(--wed-sans); font-size: 11px; font-weight: 600;
    letter-spacing: .18em; color: var(--wed-accent); flex: none; }
.wed-faq__text { flex: 1 1 auto; }
.wed-faq__answer { font-size: .97rem; line-height: 1.85; color: var(--wed-ink-soft); }
.wed-faq__answer p { margin: 0 0 .8em; }
.wed-faq__answer p:last-child { margin-bottom: 0; }
.wed-faq__answer strong { color: var(--wed-primary); font-weight: 600; }
@media (max-width: 400px) {
    /* Avoid a horizontal overflow when the viewport is narrower than the track. */
    .wed-faq__list { grid-template-columns: 1fr; }
}

/* --- footer -------------------------------------------------------------- */
.wed-footer { color: #fff; text-align: center; padding: clamp(56px, 8vw, 96px) 0;
    background:
        radial-gradient(90% 120% at 50% 120%, var(--wed-primary-2), transparent 60%),
        linear-gradient(180deg, var(--wed-primary-deep) 0%, var(--wed-primary) 100%); }
.wed-leaf--footer { width: 120px; margin: 0 auto 20px; color: rgba(255,255,255,.85); }
.wed-footer__grateful { font-family: var(--wed-serif); font-style: italic; font-size: 1.2rem; margin: 0 0 6px; color: rgba(255,255,255,.85); }
.wed-footer__names { font-family: var(--wed-script); font-size: clamp(2.2rem, 6vw, 3.4rem); margin: 0 0 6px; }
.wed-footer__date { text-transform: uppercase; letter-spacing: .28em; font-size: 12px; font-weight: 600; color: rgba(255,255,255,.75); margin: 0 0 20px; }
.wed-footer__social { display: flex; gap: 22px; justify-content: center; margin-bottom: 22px; }
.wed-footer__social a { color: #fff; text-transform: uppercase; letter-spacing: .18em; font-size: 11px; font-weight: 600; text-decoration: none; opacity: .85; }
.wed-footer__social a:hover { opacity: 1; }
.wed-footer__back { background: transparent; border: 1px solid rgba(255,255,255,.5); color: #fff; text-transform: uppercase; letter-spacing: .2em; font-size: 11px; font-weight: 600; padding: 12px 26px; border-radius: 2px; cursor: pointer; transition: background-color .25s ease; }
.wed-footer__back:hover { background: rgba(255,255,255,.12); }
.wed-footer__copy { font-size: 12px; color: rgba(255,255,255,.6); margin: 26px 0 0; letter-spacing: .04em; }

/* --- music toggle -------------------------------------------------------- */
.wed-music { position: fixed; bottom: 22px; right: 22px; z-index: 950; width: 52px; height: 52px; border-radius: 50%; border: 0; background: var(--wed-primary); box-shadow: 0 10px 24px rgba(80,80,60,.28); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.wed-music__icon { width: 16px; height: 16px; position: relative; display: block; }
.wed-music__icon::before, .wed-music__icon::after { content: ""; position: absolute; top: 0; width: 4px; height: 16px; background: #fff; }
.wed-music__icon::before { left: 2px; } .wed-music__icon::after { right: 2px; }
.wed-music.is-playing .wed-music__icon::before, .wed-music.is-playing .wed-music__icon::after { animation: wedEq .8s ease-in-out infinite alternate; }
.wed-music.is-playing .wed-music__icon::after { animation-delay: .25s; }
@keyframes wedEq { from { height: 6px; top: 5px; } to { height: 16px; top: 0; } }

/* --- responsive ---------------------------------------------------------- */
@media (max-width: 820px) {
    .wed-nav__inner { justify-content: flex-end; }
    .wed-nav__brand { position: absolute; left: 50%; transform: translateX(-50%); }
    .wed-nav__toggle { display: block; }
    .wed-nav__links {
        position: fixed; inset: 0 0 auto 0; top: 0; flex-direction: column; justify-content: flex-start;
        background: var(--wed-cream); padding: 90px 24px 32px; gap: 6px; left: 0; right: 0;
        transform: translateY(-100%); transition: transform .35s ease; box-shadow: 0 20px 40px rgba(80,80,60,.15);
        pointer-events: auto;
    }
    .wed-nav__links.is-open { transform: none; }
    .wed-nav__links a { display: block; padding: 12px 0; font-size: 14px; }
    .wed-form__row { grid-template-columns: 1fr; }
    .wed-envelope__floral { width: 96px; }
}

/* On portrait screens (phones held upright) a landscape photo shown with
   `contain` becomes a tiny center strip, so fall back to an immersive full-bleed
   crop and drop the now-redundant blurred backdrop. */
@media (orientation: portrait) {
    .wed-hero--image::before { display: none; }
    .wed-hero--image::after { background-size: cover, cover; }
}

/* On short viewports (small laptops, landscape phones) the large script names
   push the hero taller than the screen, so compress the type and spacing so the
   whole hero fits in one screen without spilling below the fold. */
@media (max-height: 760px) {
    .wed-hero { padding-top: 32px; padding-bottom: 40px; }
    .wed-hero__eyebrow { margin-bottom: 12px; }
    .wed-hero__names { font-size: clamp(2.6rem, 9vw, 4.6rem); }
    .wed-hero__invite { margin-top: 14px; }
    .wed-hero__date { margin: 20px 0 6px; }
}

/* --- reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
    .wed-html { scroll-behavior: auto; }
    *, [data-reveal] { animation: none !important; transition: none !important; }
    [data-reveal] { opacity: 1 !important; transform: none !important; }
    .wed-scroll__chev { animation: none; }
}

/* Visible focus states for keyboard users. */
a:focus-visible, button:focus-visible, .wed-envelope:focus-visible,
input:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--wed-accent); outline-offset: 3px;
}
