/* Velora Ivory — luminous editorial romance flagship. Trusted template stylesheet. */

.uk-velora-ivory{
  --vi-paper:#FBF7F1;
  --vi-porcelain:#F3EBE0;
  --vi-ink:#2A2320;
  --vi-muted:#7C6F64;
  --vi-wine:#6E1F2E;
  --vi-wine-deep:#511623;
  --vi-champagne:#C6A86B;
  --vi-line:rgba(42,35,32,.16);
  --vi-hairline:rgba(42,35,32,.10);
  --vi-radius:3px;
  --vi-radius-control:3px;
  --vi-ease:cubic-bezier(.22,.68,.28,1);
  --vi-reveal:.72s;
  --vi-shift:14px;
  overflow:clip;
  min-height:100vh;
  background:var(--vi-paper);
  color:var(--vi-ink);
  font-family:"DM Sans",system-ui,sans-serif;
  font-size:15px;
  line-height:1.6;
}
.uk-velora-ivory *,.uk-velora-ivory *:before,.uk-velora-ivory *:after{box-sizing:border-box}
.uk-velora-ivory .bdu-icon{display:inline-block;flex:0 0 auto;vertical-align:middle}
/* Several controls carry a display rule and are toggled through the hidden
   attribute. Without this the user-agent rule loses and nothing ever hides. */
.uk-velora-ivory [hidden]{display:none !important}
.uk-velora-ivory h1,.uk-velora-ivory h2,.uk-velora-ivory h3,.uk-velora-ivory h4{
  font-family:"Playfair Display",Georgia,serif;font-weight:600;letter-spacing:-.005em;overflow-wrap:anywhere;
}
.uk-velora-ivory p,.uk-velora-ivory strong,.uk-velora-ivory span,.uk-velora-ivory li{overflow-wrap:anywhere}
.uk-vi-preline{white-space:pre-line}

/* Design control palettes. Only the token layer changes; layout stays identical. */
.uk-velora-ivory.uk-design-palette-warm{--vi-paper:#FDF6F3;--vi-porcelain:#F7E9E4;--vi-ink:#322424;--vi-muted:#877069;--vi-wine:#A2596A;--vi-wine-deep:#7C3F4E;--vi-champagne:#D2AE8E;--vi-line:rgba(50,36,36,.16);--vi-hairline:rgba(50,36,36,.10)}
.uk-velora-ivory.uk-design-palette-sage{--vi-paper:#F8F7F0;--vi-porcelain:#EBEDE2;--vi-ink:#262C25;--vi-muted:#6E7668;--vi-wine:#4F6350;--vi-wine-deep:#3A4A3C;--vi-champagne:#B8A878;--vi-line:rgba(38,44,37,.16);--vi-hairline:rgba(38,44,37,.10)}
.uk-velora-ivory.uk-design-palette-midnight{--vi-paper:#F7F5F2;--vi-porcelain:#E8E7E4;--vi-ink:#1C2530;--vi-muted:#5F6B77;--vi-wine:#22303F;--vi-wine-deep:#16202B;--vi-champagne:#A08A5F;--vi-line:rgba(28,37,48,.16);--vi-hairline:rgba(28,37,48,.10)}
.uk-velora-ivory.uk-design-palette-romantic{--vi-paper:#FFF6F6;--vi-porcelain:#F8E6E7;--vi-ink:#331F22;--vi-muted:#8A6B6E;--vi-wine:#8C2F3C;--vi-wine-deep:#6A1F2A;--vi-champagne:#D8A9A2;--vi-line:rgba(51,31,34,.16);--vi-hairline:rgba(51,31,34,.10)}

/* Typography variants. */
.uk-velora-ivory.uk-design-type-editorial h1,
.uk-velora-ivory.uk-design-type-editorial h2,
.uk-velora-ivory.uk-design-type-editorial h3{font-style:italic;letter-spacing:.01em}
.uk-velora-ivory.uk-design-type-classic h1,
.uk-velora-ivory.uk-design-type-classic h2,
.uk-velora-ivory.uk-design-type-classic h3{letter-spacing:.02em}
.uk-velora-ivory.uk-design-type-modern h1,
.uk-velora-ivory.uk-design-type-modern h2,
.uk-velora-ivory.uk-design-type-modern h3,
.uk-velora-ivory.uk-design-type-modern h4{font-family:"DM Sans",system-ui,sans-serif;font-weight:700;letter-spacing:-.035em}

/* Surface variants. Velora is hairline-first; radius stays deliberately small. */
.uk-velora-ivory.uk-design-surface-soft{--vi-radius:12px;--vi-radius-control:10px}
.uk-velora-ivory.uk-design-surface-balanced{--vi-radius:6px;--vi-radius-control:6px}
.uk-velora-ivory.uk-design-surface-sharp{--vi-radius:0px;--vi-radius-control:0px}

/* Motion variants. */
.uk-velora-ivory.uk-design-motion-soft{--vi-reveal:.95s;--vi-shift:8px}
.uk-velora-ivory.uk-design-motion-cinematic{--vi-reveal:.8s;--vi-shift:20px}
.uk-velora-ivory.uk-design-motion-minimal{--vi-reveal:0s;--vi-shift:0px}

/* Shared primitives ------------------------------------------------------- */
.uk-vi-eyebrow{
  margin:0;color:var(--vi-wine);font-size:10px;font-weight:700;line-height:1.5;
  letter-spacing:.3em;text-transform:uppercase;
}
.uk-vi-rule{display:block;width:44px;height:1px;margin:12px 0 0;background:var(--vi-champagne)}
.uk-vi-rule.is-center{margin:12px auto 0}
.uk-vi-copy{margin:14px 0 0;max-width:62ch;color:var(--vi-muted);font-size:14px;line-height:1.85}
.uk-vi-lead{margin:14px 0 0;font-family:"Playfair Display",Georgia,serif;font-size:clamp(1.3rem,4vw,1.8rem);font-weight:600}

.uk-vi-button{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;padding:0 16px;border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:transparent;color:var(--vi-ink);text-decoration:none;cursor:pointer;
  font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  transition:background .25s var(--vi-ease),border-color .25s var(--vi-ease),color .25s var(--vi-ease);
}
.uk-vi-button:hover{border-color:var(--vi-wine);color:var(--vi-wine)}
.uk-vi-button.is-solid{border-color:var(--vi-wine);background:var(--vi-wine);color:#FFF9F4}
.uk-vi-button.is-solid:hover{background:var(--vi-wine-deep);color:#FFF9F4}
.uk-velora-ivory :is(a,button,summary,input,select,textarea):focus-visible{outline:2px solid var(--vi-wine);outline-offset:3px}

.uk-vi-progress{position:fixed;left:0;top:0;z-index:1100;width:100%;height:2px;background:transparent;pointer-events:none}
.uk-vi-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--vi-champagne),var(--vi-wine));transition:width .1s linear}

.uk-vi-toast{
  position:fixed;left:50%;bottom:96px;z-index:1250;transform:translate(-50%,10px);
  opacity:0;pointer-events:none;max-width:min(88vw,340px);
  padding:10px 14px;border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:var(--vi-paper);color:var(--vi-ink);font-size:12px;font-weight:600;text-align:center;
  box-shadow:0 14px 40px rgba(42,35,32,.14);transition:opacity .22s var(--vi-ease),transform .22s var(--vi-ease);
}
.uk-vi-toast.is-show{opacity:1;transform:translate(-50%,0)}

.uk-vi-feedback{
  position:fixed;left:50%;top:64px;z-index:1200;transform:translateX(-50%);
  display:flex;align-items:center;gap:8px;width:min(92vw,520px);
  padding:11px 14px;border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:var(--vi-paper);color:var(--vi-ink);font-size:13px;box-shadow:0 12px 34px rgba(42,35,32,.12);
}

/* Reveal — Velora uses a rising mask rather than a drifting card. */
.uk-vi-reveal,.uk-vi-reveal-item{
  opacity:0;transform:translate3d(0,var(--vi-shift),0);
  clip-path:inset(0 0 12% 0);
  transition:opacity var(--vi-reveal) var(--vi-ease),transform var(--vi-reveal) var(--vi-ease),clip-path var(--vi-reveal) var(--vi-ease);
}
.uk-vi-reveal.is-visible,.uk-vi-reveal.is-visible .uk-vi-reveal-item,.uk-vi-reveal-item.is-visible{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
.uk-vi-reveal.is-visible .uk-vi-reveal-item:nth-child(2){transition-delay:.07s}
.uk-vi-reveal.is-visible .uk-vi-reveal-item:nth-child(3){transition-delay:.14s}
.uk-vi-reveal.is-visible .uk-vi-reveal-item:nth-child(4){transition-delay:.21s}

/* Opening gate ------------------------------------------------------------ */
.uk-vi-gate{
  position:fixed;inset:0;z-index:900;display:grid;
  background:var(--vi-paper);
  transition:opacity .6s var(--vi-ease),visibility .6s;
}
.uk-vi-gate.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.uk-vi-gate-media{position:absolute;inset:0;overflow:hidden}
.uk-vi-gate-media img{width:100%;height:100%;object-fit:cover;object-position:var(--vi-focus-mobile-x,50%) var(--vi-focus-mobile-y,38%)}
.uk-vi-gate-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(251,247,241,.30) 0%,rgba(251,247,241,.62) 46%,rgba(251,247,241,.97) 88%)}
.uk-vi-gate-panel{position:relative;z-index:2;display:flex;align-items:flex-end;padding:24px 20px calc(30px + env(safe-area-inset-bottom))}
.uk-vi-gate-inner{width:min(100%,520px)}
.uk-vi-gate-inner h1{margin:18px 0 0;font-size:clamp(2.4rem,11vw,3.9rem);line-height:1.02}
.uk-vi-gate-date{margin:16px 0 0;color:var(--vi-muted);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.uk-vi-gate-open{margin-top:22px}

.uk-vi-guest{margin:20px 0 0;padding:12px 0;border-top:1px solid var(--vi-line);border-bottom:1px solid var(--vi-line);max-width:340px}
.uk-vi-guest span{display:block;color:var(--vi-muted);font-size:9px;letter-spacing:.22em;text-transform:uppercase}
.uk-vi-guest strong{display:block;margin-top:4px;font-family:"Playfair Display",Georgia,serif;font-size:18px;font-weight:600;line-height:1.3}

.uk-vi-couple-list{display:grid;gap:8px;margin:16px 0 0}
.uk-vi-couple-list span{display:grid;gap:2px}
.uk-vi-couple-list small{color:var(--vi-muted);font-size:9px;letter-spacing:.2em;text-transform:uppercase}
.uk-vi-couple-list strong{font-family:"Playfair Display",Georgia,serif;font-size:17px;font-weight:600;line-height:1.25}

/* Cover ------------------------------------------------------------------- */
/* The cover is the only chance to stop a guest scrolling, so the photograph
   takes the screen and the ivory panel rides up over its lower edge. */
.uk-vi-cover{position:relative;display:grid;grid-template-rows:80svh auto;min-height:100svh;background:var(--vi-paper)}
.uk-vi-cover-media{position:relative;overflow:hidden}
.uk-vi-cover-image{width:100%;height:100%;object-fit:cover;object-position:var(--vi-focus-mobile-x,50%) var(--vi-focus-mobile-y,38%)}
.uk-vi-cover-veil{position:absolute;inset:auto 0 0;height:36%;background:linear-gradient(180deg,rgba(251,247,241,0),var(--vi-paper))}
.uk-vi-cover-panel{position:relative;z-index:2;width:min(calc(100% - 40px),560px);margin:-64px 0 0 20px;padding:26px 0 40px}
.uk-vi-cover-panel h1{margin:18px 0 0;font-size:clamp(2.6rem,12vw,4.2rem);line-height:1}
.uk-vi-cover-date{display:flex;align-items:center;gap:8px;margin:18px 0 0;color:var(--vi-muted);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.uk-vi-monogram{display:block;margin:26px 0 0;color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;font-size:15px;letter-spacing:.32em}

/* Section shell — asymmetric folio column + body column. */
.uk-vi-section{padding:clamp(56px,11vw,110px) 0}
.uk-vi-section.is-paper{background:var(--vi-paper)}
.uk-vi-section.is-porcelain{background:var(--vi-porcelain)}
.uk-vi-wrap{width:min(calc(100% - 40px),1120px);margin:0 auto;display:grid;gap:22px}
.uk-vi-wrap-narrow{width:min(calc(100% - 40px),640px);margin:0 auto}
.uk-vi-folio{position:relative}
.uk-vi-body>h2{margin:0;font-size:clamp(1.9rem,7vw,3.1rem);line-height:1.08;max-width:18ch}
.uk-vi-bismillah{margin:0 0 16px;color:var(--vi-wine);font-size:clamp(1.1rem,5vw,1.5rem);line-height:2}
.uk-vi-quote{margin:26px 0 0;padding:0 0 0 18px;border-left:2px solid var(--vi-champagne)}
.uk-vi-quote p{margin:0;font-family:"Playfair Display",Georgia,serif;font-size:clamp(1.05rem,4vw,1.35rem);font-style:italic;line-height:1.6}
.uk-vi-quote cite{display:block;margin-top:10px;color:var(--vi-muted);font-size:11px;font-style:normal;letter-spacing:.16em;text-transform:uppercase}

/* Participants ------------------------------------------------------------ */
.uk-vi-couple-index{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0}
.uk-vi-couple-index button{
  display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;cursor:pointer;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);background:transparent;
  color:var(--vi-muted);font:inherit;font-size:12px;
}
.uk-vi-couple-index button span{color:var(--vi-champagne);font-size:10px;letter-spacing:.14em}
.uk-vi-couple-index button strong{color:inherit;font-weight:600}
.uk-vi-couple-index button.is-active{border-color:var(--vi-wine);color:var(--vi-wine)}

.uk-vi-couples{display:grid;gap:48px;margin:34px 0 0}
.uk-vi-couple>header{display:flex;align-items:baseline;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--vi-hairline)}
.uk-vi-couple>header>span{color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;font-size:26px;line-height:1}
.uk-vi-couple>header h3{margin:4px 0 0;font-size:clamp(1.4rem,5vw,2.1rem);line-height:1.1}
.uk-vi-pair,.uk-vi-people{display:grid;gap:32px;margin:28px 0 0}
.uk-vi-person{min-width:0}
.uk-vi-portrait{aspect-ratio:4/5;overflow:hidden;border-radius:var(--vi-radius);background:var(--vi-porcelain)}
.uk-vi-portrait img{width:100%;height:100%;object-fit:cover}
.uk-vi-portrait.is-empty{display:grid;place-items:center;border:1px solid var(--vi-hairline)}
.uk-vi-portrait.is-empty span{font-family:"Playfair Display",Georgia,serif;font-size:2.4rem;color:var(--vi-champagne)}
.uk-vi-person .uk-vi-eyebrow{margin-top:16px}
.uk-vi-person h4{margin:8px 0 0;font-size:clamp(1.6rem,6vw,2.4rem);line-height:1.05}
.uk-vi-person>strong{display:block;margin-top:6px;color:var(--vi-muted);font-size:12px;font-weight:500;letter-spacing:.06em}
.uk-vi-parents{margin-top:14px;padding-top:12px;border-top:1px solid var(--vi-hairline)}
.uk-vi-parents span{display:block;color:var(--vi-muted);font-size:9px;letter-spacing:.2em;text-transform:uppercase}
.uk-vi-parents p{margin:6px 0 0;font-size:13px;line-height:1.7}
.uk-vi-parents em{color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;font-style:italic}
.uk-vi-bio{margin-top:12px;color:var(--vi-muted);font-size:13px;line-height:1.8}
.uk-vi-amp{color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;font-size:1.8rem;font-style:italic;text-align:center}

/* Events ------------------------------------------------------------------ */
.uk-vi-events{display:grid;gap:0;margin:30px 0 0;border-top:1px solid var(--vi-hairline)}
.uk-vi-event{display:grid;gap:14px;padding:26px 0;border-bottom:1px solid var(--vi-hairline)}
.uk-vi-event-rail>span{display:block;color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;font-size:22px;line-height:1}
.uk-vi-event-rail .uk-vi-eyebrow{margin-top:8px}
.uk-vi-event-body{min-width:0}
.uk-vi-event-body h3{margin:0;font-size:clamp(1.2rem,4.6vw,1.75rem);line-height:1.2}
.uk-vi-venue{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:13px;font-weight:600}
.uk-vi-address{margin:6px 0 0;color:var(--vi-muted);font-size:13px;line-height:1.7}
.uk-vi-scope{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 10px}
.uk-vi-scope span{color:var(--vi-muted);font-size:9px;letter-spacing:.2em;text-transform:uppercase}
.uk-vi-scope strong{color:var(--vi-wine);font-size:12px}
.uk-vi-map{width:100%;height:190px;margin-top:16px;border:1px solid var(--vi-hairline);border-radius:var(--vi-radius);filter:grayscale(.35) contrast(.96)}
.uk-vi-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.uk-vi-actions .uk-vi-button{min-height:42px}

/* Countdown — a single quiet band, not a dashboard. */
.uk-vi-countdown{padding:clamp(34px,7vw,56px) 0;background:var(--vi-wine);color:#FFF6EF;text-align:center}
.uk-vi-countdown .uk-vi-eyebrow{color:var(--vi-champagne)}
.uk-vi-count{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:18px}
.uk-vi-count>div{padding:0 4px;border-left:1px solid rgba(255,246,239,.22)}
.uk-vi-count>div:first-child{border-left:0}
.uk-vi-count strong{display:block;font-family:"Playfair Display",Georgia,serif;font-size:clamp(1.5rem,7vw,2.5rem);font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.uk-vi-count span{display:block;margin-top:4px;color:rgba(255,246,239,.72);font-size:9px;letter-spacing:.2em;text-transform:uppercase}

/* Timeline (story + schedule) --------------------------------------------- */
.uk-vi-timeline{list-style:none;margin:28px 0 0;padding:0;display:grid}
.uk-vi-timeline li{display:grid;gap:6px;padding:20px 0;border-top:1px solid var(--vi-hairline)}
.uk-vi-timeline li>span{color:var(--vi-wine);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.uk-vi-timeline h3{margin:0;font-size:18px;line-height:1.3}
.uk-vi-timeline p{margin:6px 0 0;color:var(--vi-muted);font-size:13px;line-height:1.75}

/* Gallery ----------------------------------------------------------------- */
.uk-vi-gallery-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:26px 0 14px}
.uk-vi-gallery-tools>span{color:var(--vi-muted);font-size:10px;letter-spacing:.2em;text-transform:uppercase}
.uk-vi-gallery-tools>div{display:none;gap:6px}
.uk-design-gallery-filmstrip .uk-vi-gallery-tools>div{display:flex}
.uk-vi-gallery-tools button{
  display:grid;place-items:center;width:44px;height:44px;cursor:pointer;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);background:transparent;color:var(--vi-ink);
}
.uk-vi-gallery figure{position:relative;margin:0;overflow:hidden;border-radius:var(--vi-radius);background:var(--vi-porcelain)}
.uk-vi-gallery figure img{display:block;width:100%;height:auto;object-fit:cover;transition:transform .6s var(--vi-ease)}
.uk-vi-gallery figure:hover img{transform:scale(1.03)}
.uk-vi-gallery figure button{
  position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:44px;height:44px;cursor:pointer;
  border:0;border-radius:var(--vi-radius-control);background:rgba(251,247,241,.88);color:var(--vi-ink);
}
/* Masonry is the Velora default; the design control can switch it. */
.uk-vi-gallery{columns:2;column-gap:10px}
.uk-vi-gallery figure{break-inside:avoid;margin-bottom:10px}
.uk-design-gallery-grid .uk-vi-gallery{columns:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.uk-design-gallery-grid .uk-vi-gallery figure{margin-bottom:0;aspect-ratio:1/1}
.uk-design-gallery-grid .uk-vi-gallery figure img{height:100%}
/* One wide column per row: previously this repeated the masonry default and
   the Design Studio offered two choices that looked identical. */
.uk-design-gallery-editorial .uk-vi-gallery{columns:1;column-gap:0}
.uk-design-gallery-editorial .uk-vi-gallery figure{margin-bottom:18px}
.uk-design-gallery-editorial .uk-vi-gallery figure img{aspect-ratio:4/5;height:100%}
.uk-design-gallery-filmstrip .uk-vi-gallery{
  columns:auto;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,64%);gap:10px;
  overflow-x:auto;padding-bottom:10px;scroll-snap-type:x mandatory;scrollbar-width:none;
}
.uk-design-gallery-filmstrip .uk-vi-gallery::-webkit-scrollbar{display:none}
.uk-design-gallery-filmstrip .uk-vi-gallery figure{margin-bottom:0;aspect-ratio:4/5;scroll-snap-align:start}
.uk-design-gallery-filmstrip .uk-vi-gallery figure img{height:100%}

/* Gift, contacts, FAQ, livestream ---------------------------------------- */
.uk-vi-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0}
.uk-vi-tabs button{
  display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;cursor:pointer;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);background:transparent;
  color:var(--vi-muted);font:inherit;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
}
.uk-vi-tabs button.is-active{border-color:var(--vi-wine);color:var(--vi-wine)}
.uk-vi-gift-panel{margin-top:22px}
.uk-vi-accounts,.uk-vi-contacts{display:grid;gap:0;border-top:1px solid var(--vi-hairline)}
.uk-vi-accounts article,.uk-vi-contacts article{padding:20px 0;border-bottom:1px solid var(--vi-hairline);min-width:0}
.uk-vi-accounts strong{display:block;margin:8px 0 4px;font-family:"Playfair Display",Georgia,serif;font-size:22px;overflow-wrap:anywhere}
.uk-vi-accounts p,.uk-vi-contacts p{margin:4px 0 0;display:flex;align-items:center;gap:7px;color:var(--vi-muted);font-size:13px}
.uk-vi-accounts .uk-vi-button,.uk-vi-contacts .uk-vi-button{margin-top:12px}
.uk-vi-contacts strong{display:block;margin-top:8px;font-family:"Playfair Display",Georgia,serif;font-size:1.25rem}
.uk-vi-address-card{padding:20px 0;border-top:1px solid var(--vi-hairline);border-bottom:1px solid var(--vi-hairline)}
.uk-vi-address-card strong{display:block;margin:8px 0 6px;font-family:"Playfair Display",Georgia,serif;font-size:1.2rem}
.uk-vi-address-card p{margin:0;color:var(--vi-muted);font-size:13px;line-height:1.75}

.uk-vi-faq{margin:26px 0 0;border-top:1px solid var(--vi-hairline)}
.uk-vi-faq details{border-bottom:1px solid var(--vi-hairline)}
.uk-vi-faq summary{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  min-height:56px;padding:14px 0;cursor:pointer;list-style:none;font-size:14px;font-weight:600;
}
.uk-vi-faq summary::-webkit-details-marker{display:none}
.uk-vi-faq summary .bdu-icon{color:var(--vi-champagne);transition:transform .3s var(--vi-ease)}
.uk-vi-faq details[open] summary .bdu-icon{transform:rotate(45deg)}
.uk-vi-faq p{margin:0 0 16px;color:var(--vi-muted);font-size:13px;line-height:1.8}

.uk-vi-streams{display:grid;gap:0;margin:26px 0 0;border-top:1px solid var(--vi-hairline)}
.uk-vi-streams a{
  display:flex;align-items:center;gap:12px;min-height:56px;padding:16px 0;
  border-bottom:1px solid var(--vi-hairline);color:inherit;text-decoration:none;
}
.uk-vi-streams a>span{display:grid;gap:2px;flex:1;min-width:0}
.uk-vi-streams strong{font-size:14px}
.uk-vi-streams small{color:var(--vi-muted);font-size:12px}

/* Closing ----------------------------------------------------------------- */
.uk-vi-closing{padding:clamp(64px,13vw,120px) 0;background:var(--vi-wine-deep);color:#FFF6EF;text-align:center}
.uk-vi-closing .uk-vi-eyebrow{color:var(--vi-champagne)}
.uk-vi-closing h2{margin:16px 0 0;font-size:clamp(2.1rem,9vw,3.4rem);line-height:1.05}
.uk-vi-closing>div>p{margin:16px auto 0;max-width:52ch;color:rgba(255,246,239,.78);font-size:14px;line-height:1.85}
.uk-vi-signature{font-family:"Playfair Display",Georgia,serif;font-style:italic;font-size:1.2rem;color:var(--vi-champagne) !important}
.uk-vi-hashtags{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:22px}
.uk-vi-hashtags button{
  display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;cursor:pointer;
  border:1px solid rgba(255,246,239,.28);border-radius:var(--vi-radius-control);background:transparent;
  color:#FFF6EF;font:inherit;font-size:11px;letter-spacing:.08em;
}
.uk-vi-closing-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:26px}
.uk-vi-closing-actions .uk-vi-button{border-color:rgba(255,246,239,.3);color:#FFF6EF}
.uk-vi-closing-actions .uk-vi-button:hover{border-color:var(--vi-champagne);color:var(--vi-champagne)}

/* Navigation and controls ------------------------------------------------- */
/* Folio marks. A printed spread numbers its pages and names none of them; only
   the page you are on is spelled out. The row is sized by its contents and sits
   centred, so it never becomes a bar stretched across the foot of the page. */
.uk-vi-nav{
  position:fixed;left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:850;
  max-width:calc(100vw - 88px);transform:translateX(-50%);
}
.uk-vi-folio{
  display:flex;align-items:stretch;gap:0;margin:0;padding:0 4px;list-style:none;
  overflow-x:auto;scrollbar-width:none;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:rgba(251,247,241,.96);backdrop-filter:blur(12px);box-shadow:0 10px 26px rgba(58,42,38,.14);
}
.uk-vi-folio::-webkit-scrollbar{display:none}
.uk-vi-folio>li{flex:0 0 auto}
.uk-vi-nav button{
  display:flex;align-items:center;gap:0;min-width:34px;min-height:44px;padding:0 6px;
  cursor:pointer;border:0;background:transparent;
  color:var(--vi-muted);font:inherit;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
}
.uk-vi-nav button i{
  font-style:normal;font-variant-numeric:tabular-nums;font-size:10px;letter-spacing:.14em;opacity:.7;
}
/* The name only appears for the section being read, and on hover or keyboard focus. */
.uk-vi-nav button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uk-vi-nav button span{max-width:0;opacity:0;transition:max-width .24s var(--vi-ease),opacity .24s var(--vi-ease),margin-left .24s var(--vi-ease)}
.uk-vi-nav button.is-active{color:var(--vi-wine)}
.uk-vi-nav button.is-active i{opacity:1}
.uk-vi-nav button.is-active span,
.uk-vi-nav button:hover span,
.uk-vi-nav button:focus-visible span{max-width:120px;opacity:1;margin-left:7px}

.uk-vi-rail{position:fixed;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:860;display:grid;gap:6px;justify-items:end}
/* A fixed control has to read against paper AND against ink, because the
   page scrolls under it. Measured before this ring: 1.10:1 against the
   background at every scroll position. The ring is the half that the fill cannot be. */
.uk-vi-rail-toggle,.uk-vi-rail-panel button{
  display:grid;place-items:center;width:44px;height:44px;cursor:pointer;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:rgba(251,247,241,.96);color:var(--vi-ink);box-shadow:0 0 0 2px var(--vi-ink),0 10px 26px rgba(42,35,32,.12);
}
.uk-vi-rail-panel{display:grid;gap:6px;justify-items:end}
.uk-vi-rail-panel button.is-active{border-color:var(--vi-wine);color:var(--vi-wine)}
.uk-vi-rail-panel button.is-paused{border-color:var(--vi-champagne)}

.uk-velora-ivory main{padding-bottom:calc(74px + env(safe-area-inset-bottom))}

/* Modals ------------------------------------------------------------------ */
.uk-vi-sheet,.uk-vi-lightbox{
  position:fixed;inset:0;z-index:1200;display:grid;opacity:0;visibility:hidden;
  background:rgba(42,35,32,.62);transition:opacity .28s var(--vi-ease),visibility .28s;
}
.uk-vi-sheet{place-items:end center}
.uk-vi-lightbox{place-items:center}
.uk-vi-sheet.is-open,.uk-vi-lightbox.is-open{opacity:1;visibility:visible}
.uk-vi-sheet-panel{
  width:min(100%,520px);padding:24px 20px calc(24px + env(safe-area-inset-bottom));
  border-top:2px solid var(--vi-champagne);background:var(--vi-paper);
}
.uk-vi-sheet-panel h2{margin:12px 0 0;font-size:1.5rem}
.uk-vi-share-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:20px 0 0}
.uk-vi-share-grid button{
  display:flex;align-items:center;gap:9px;min-height:52px;padding:0 14px;cursor:pointer;
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);background:transparent;
  color:var(--vi-ink);font:inherit;font-size:13px;font-weight:600;
}
.uk-vi-sheet-close{width:100%;margin-top:12px}
.uk-vi-lightbox-panel{position:relative;width:min(94vw,900px);max-height:88svh;display:grid;place-items:center}
.uk-vi-lightbox-panel img{max-width:100%;max-height:78svh;object-fit:contain;background:var(--vi-porcelain)}
.uk-vi-lightbox.is-switching img{opacity:.35;transition:opacity .12s linear}
.uk-vi-lightbox-counter{margin-top:12px;color:#FFF6EF;font-size:11px;letter-spacing:.18em}
.uk-vi-lightbox button{
  position:absolute;display:grid;place-items:center;width:46px;height:46px;cursor:pointer;
  border:1px solid rgba(255,246,239,.34);border-radius:var(--vi-radius-control);
  background:rgba(42,35,32,.5);color:#FFF6EF;
}
.uk-vi-lightbox-close{top:-4px;right:-4px}
.uk-vi-lightbox-prev{left:-4px;top:50%;transform:translateY(-50%)}
.uk-vi-lightbox-next{right:-4px;top:50%;transform:translateY(-50%)}
body.is-velora-modal-open{overflow:hidden}

/* Engagement skin — the shared RSVP/wishes partials, dressed for ivory. */
.uk-vi-engagement .bdu-public-card{
  max-width:none;margin:0;padding:0;border:0;border-top:1px solid var(--vi-hairline);
  border-radius:0;background:transparent;box-shadow:none;color:var(--vi-ink);
}
.uk-vi-engagement .bdu-public-card-head{display:flex;align-items:center;gap:12px;padding-top:22px}
.uk-vi-engagement .bdu-public-icon{
  display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--vi-line);
  border-radius:var(--vi-radius-control);background:transparent;color:var(--vi-wine);
}
.uk-vi-engagement .bdu-public-card-head p{margin:0;color:var(--vi-wine);font-size:9px;font-weight:700;letter-spacing:.24em;text-transform:uppercase}
.uk-vi-engagement .bdu-public-card-head h2{margin:2px 0 0;font-family:"Playfair Display",Georgia,serif;font-size:clamp(1.5rem,5vw,2.1rem);font-weight:600;color:var(--vi-ink)}
.uk-vi-engagement .bdu-public-card-copy{color:var(--vi-muted);font-size:14px;line-height:1.8}
.uk-vi-engagement .bdu-public-form{display:grid;gap:12px;margin-top:18px}
.uk-vi-engagement .bdu-public-form label{color:var(--vi-ink);font-size:11px;font-weight:700;letter-spacing:.08em}
.uk-vi-engagement .bdu-public-form :is(input,select,textarea){
  border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);background:var(--vi-paper);color:var(--vi-ink);
}
.uk-vi-engagement .bdu-public-form :is(input,select){min-height:46px}
.uk-vi-engagement .bdu-public-form :is(input,select,textarea):focus{border-color:var(--vi-wine);box-shadow:0 0 0 3px rgba(110,31,46,.10)}
.uk-vi-engagement .bdu-public-form small{color:var(--vi-muted)}
.uk-vi-engagement .bdu-public-choice-group span{
  min-height:44px;border:1px solid var(--vi-line);border-radius:var(--vi-radius-control);
  background:var(--vi-paper);color:var(--vi-muted);
}
.uk-vi-engagement .bdu-public-choice-group input:checked+span{border-color:var(--vi-wine);background:transparent;color:var(--vi-wine)}
.uk-vi-engagement .bdu-public-primary{
  min-height:46px;border:1px solid var(--vi-wine);border-radius:var(--vi-radius-control);
  background:var(--vi-wine);color:#FFF9F4;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
}
.uk-vi-engagement .bdu-public-primary:hover{background:var(--vi-wine-deep)}
.uk-vi-engagement :is(.bdu-public-known-guest,.bdu-public-notice,.bdu-public-wish,.bdu-public-rsvp-saved){
  border:1px solid var(--vi-hairline);border-radius:var(--vi-radius-control);background:var(--vi-paper);
}
.uk-vi-engagement .bdu-public-wishes-list{border-top:1px solid var(--vi-hairline)}
.uk-vi-engagement .bdu-public-wishes-list>h3{margin:0 0 6px;color:var(--vi-wine);font-family:inherit;font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase}
.uk-vi-engagement .bdu-public-wish p{color:var(--vi-ink)}
.uk-vi-engagement .bdu-public-wish footer{color:var(--vi-muted)}
.uk-vi-engagement .bdu-public-pin{color:var(--vi-wine)}

/* The platform-level personalized chip, matched to the ivory canvas. */
.bdu-public-theme-velora-ivory .bdu-guest-personalized{
  border-color:rgba(198,168,107,.7);background:#FBF7F1;box-shadow:0 8px 26px rgba(42,35,32,.12);
}
.bdu-public-theme-velora-ivory .bdu-guest-personalized strong{color:#6E1F2E}

/* Desktop ----------------------------------------------------------------- */
@media(min-width:768px){
  .uk-velora-ivory{font-size:16px}

  .uk-vi-gate-media img{object-position:var(--vi-focus-desktop-x,62%) var(--vi-focus-desktop-y,44%)}
  .uk-vi-gate-veil{background:linear-gradient(100deg,rgba(251,247,241,.98) 0%,rgba(251,247,241,.9) 36%,rgba(251,247,241,.28) 72%,rgba(251,247,241,.1) 100%)}
  .uk-vi-gate-panel{align-items:center;padding:0 0 0 clamp(40px,7vw,110px)}
  .uk-vi-gate-inner{width:min(46vw,560px)}
  .uk-vi-gate-inner h1{font-size:clamp(3rem,5.2vw,4.8rem)}

  .uk-vi-cover{grid-template-rows:none;grid-template-columns:38% 62%;align-items:stretch}
  .uk-vi-cover-media{order:2;min-height:100svh}
  .uk-vi-cover-image{object-position:var(--vi-focus-desktop-x,62%) var(--vi-focus-desktop-y,44%)}
  .uk-vi-cover-veil{inset:0 auto 0 0;width:26%;height:auto;background:linear-gradient(90deg,var(--vi-paper),rgba(251,247,241,0))}
  .uk-vi-cover-panel{order:1;display:flex;flex-direction:column;justify-content:center;width:auto;margin:0;padding:0 clamp(32px,4vw,64px) 0 clamp(40px,7vw,110px)}
  .uk-vi-cover-panel h1{font-size:clamp(3rem,5vw,4.6rem)}

  .uk-vi-wrap{grid-template-columns:168px minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
  .uk-vi-folio{position:sticky;top:64px}
  .uk-vi-folio .uk-vi-rule{width:100%;max-width:120px}

  .uk-vi-pair{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:28px}
  .uk-vi-people{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px}
  /* A workspace can hold one entry or five. An odd last entry would sit in the
     first column with an empty one beside it, so it takes the whole row and
     centres itself — which also covers the case of a single entry. */
  .uk-vi-people>*:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:min(100%,360px)}
  .uk-vi-amp{align-self:center;padding-top:40px}

  .uk-vi-event{grid-template-columns:128px minmax(0,1fr);gap:28px;padding:34px 0}
  .uk-vi-map{height:230px}

  .uk-vi-gallery{columns:3;column-gap:14px}
  .uk-design-gallery-editorial .uk-vi-gallery{columns:1}
  .uk-vi-gallery figure{margin-bottom:14px}
  .uk-design-gallery-grid .uk-vi-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .uk-design-gallery-filmstrip .uk-vi-gallery{grid-auto-columns:minmax(260px,30%)}

  .uk-vi-accounts,.uk-vi-contacts{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}
  /* A workspace can hold one entry or five. An odd last entry would sit in the
     first column with an empty one beside it, so it takes the whole row and
     centres itself — which also covers the case of a single entry. */
  .uk-vi-accounts>*:last-child:nth-child(odd),.uk-vi-contacts>*:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:min(100%,420px)}

  /* With room to spare the folio reads as a running foot: every name spelled out. */
  .uk-vi-nav{bottom:clamp(16px,2.6vh,30px);max-width:min(620px,calc(100vw - 96px))}
  .uk-vi-nav button{min-height:40px;padding:0 10px}
  .uk-vi-nav button span,
  .uk-vi-nav button.is-active span{max-width:140px;opacity:1;margin-left:7px}
  .uk-vi-feedback{top:20px}
  .uk-vi-rail{right:clamp(12px,2vw,26px);bottom:auto;top:50%;transform:translateY(-50%)}
  .uk-velora-ivory main{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
  .uk-vi-toast{bottom:28px}
  .uk-vi-sheet{place-items:center}
  .uk-vi-sheet-panel{border:1px solid var(--vi-line);border-top:2px solid var(--vi-champagne);padding:28px}
  .uk-vi-lightbox-close{top:-52px;right:0}
  .uk-vi-lightbox-prev{left:-62px}
  .uk-vi-lightbox-next{right:-62px}
}

@media(min-width:1280px){
  .uk-vi-wrap{width:min(calc(100% - 200px),1180px)}
  .uk-vi-body>h2{max-width:16ch}
}

/* Small phones and short viewports ---------------------------------------- */
@media(max-width:760px){
  .uk-vi-share-grid{grid-template-columns:1fr}
  .uk-vi-body>h2{max-width:none}
  .uk-vi-cover-panel{margin-top:-52px}
}
@media(max-width:400px){
  .uk-vi-gallery,.uk-design-gallery-editorial .uk-vi-gallery{columns:1}
  .uk-design-gallery-grid .uk-vi-gallery{grid-template-columns:1fr}
  .uk-vi-count{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:16px}
  .uk-vi-count>div:nth-child(3){border-left:0}
}
@media(max-height:620px){
  .uk-vi-cover{grid-template-rows:62svh auto;min-height:auto}
  .uk-vi-gate-panel{padding-top:16px;padding-bottom:20px}
  .uk-vi-gate-inner h1{font-size:clamp(2rem,8vw,2.8rem)}
  .uk-vi-guest{margin-top:12px;padding:9px 0}
  .uk-vi-gate-open{margin-top:14px}
}
@media(min-width:768px) and (max-height:620px){
  .uk-vi-nav{bottom:10px}
  .uk-vi-nav button{min-height:38px}
}

/* Cover without a photograph -------------------------------------------- */
/* The cover fills the screen now, so an invitation with no photo uploaded
   yet would otherwise show a full viewport of empty colour. Each template
   falls back to its own ornament instead. */
.uk-vi-cover-empty{
  display:flex;align-items:center;justify-content:center;gap:18px;
  width:100%;height:100%;padding:0 24px;
  background:linear-gradient(160deg,var(--vi-porcelain),var(--vi-paper));
}
.uk-vi-cover-empty-rule{flex:1;max-width:120px;height:1px;background:var(--vi-champagne)}
.uk-vi-cover-empty-mark{
  flex:0 0 auto;color:var(--vi-champagne);font-family:"Playfair Display",Georgia,serif;
  font-size:clamp(1.4rem,6vw,2.2rem);letter-spacing:.3em;
}

/* Reduced motion ---------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .uk-velora-ivory{--vi-reveal:0s;--vi-shift:0px}
  .uk-vi-reveal,.uk-vi-reveal-item{opacity:1;transform:none;clip-path:none;transition:none}
  .uk-vi-gate,.uk-vi-sheet,.uk-vi-lightbox,.uk-vi-gallery figure img,.uk-vi-faq summary .bdu-icon{transition:none}
  .uk-vi-progress i{transition:none}
  /* The folio name appears at once rather than unrolling. */
  .uk-vi-nav button span{transition:none}
}
/* Closing action hierarchy keeps the folio restraint while making the main share action unmistakable. */
.uk-vi-closing-actions .uk-vi-button.is-primary{border-color:var(--vi-champagne);background:var(--vi-champagne);color:var(--vi-wine-deep);box-shadow:0 10px 26px rgba(26,19,18,.18)}
.uk-vi-closing-actions .uk-vi-button.is-primary:hover,.uk-vi-closing-actions .uk-vi-button.is-primary:focus-visible{border-color:#FFF6EF;background:#FFF6EF;color:var(--vi-wine-deep)}
.uk-vi-closing-actions .uk-vi-button.is-secondary{border-color:rgba(255,246,239,.48);background:rgba(255,246,239,.04);color:#FFF6EF}
.uk-vi-closing-actions .uk-vi-button.is-secondary:hover,.uk-vi-closing-actions .uk-vi-button.is-secondary:focus-visible{border-color:var(--vi-champagne);color:var(--vi-champagne)}
.uk-vi-closing-actions .uk-vi-button.is-tertiary{border-color:rgba(255,246,239,.2);color:rgba(255,246,239,.72)}
.uk-vi-closing-actions .uk-vi-button.is-tertiary:hover,.uk-vi-closing-actions .uk-vi-button.is-tertiary:focus-visible{border-color:rgba(255,246,239,.42);color:#FFF6EF}
