@property --ink-now { syntax: '<color>'; inherits: true; initial-value: #3f3e3e; }
@property --lab-now { syntax: '<color>'; inherits: true; initial-value: #56664a; }
:root {
  --paper: #f4f0dd; --ink: #33332f; --accent: #738561; --accent2: #a98a52;
  --font-display: "Gilda Display", Georgia, serif; --font-body: "EB Garamond", Georgia, serif; --font-script: "Homemade Apple", cursive;
  --shadow: 44, 36, 24;
  --table: color-mix(in srgb, var(--paper) 82%, var(--ink));
  --env: color-mix(in srgb, var(--accent) 84%, var(--ink));
  --card-accent: color-mix(in srgb, var(--accent) 55%, var(--ink));
  --ink-now: var(--ink); --lab-now: var(--accent-ink);
  --rule: color-mix(in srgb, var(--ink) 28%, transparent);
  transition: --ink-now 1.4s ease-out, --lab-now 1.4s ease-out, background-color 1.4s ease-out;
}
/* Paper dims at dusk, so the type deepens with it: the words never lose to the light. */
html.is-late { --ink-now: color-mix(in srgb, var(--ink) 80%, black); --lab-now: color-mix(in srgb, var(--accent-ink) 80%, black); background-color: color-mix(in srgb, var(--table) 30%, black); }
html.is-dark.is-late { --ink-now: var(--ink); --lab-now: var(--accent-ink); }
html { background: var(--table); overflow-x: clip; }
body { color: var(--ink-now); font-family: var(--font-body); font-size: 19px; line-height: 1.42; overflow-x: clip; }
i { display: block; }

/* ---- the table: linen under moving daylight, blended only inside itself ---- */
.table { position: fixed; left: 0; right: 0; top: 0; height: 100lvh; z-index: 0; isolation: isolate; overflow: hidden; background: var(--table) url(/assets/fine-linen.webp) center / cover; background-blend-mode: multiply; }
.tone { position: absolute; inset: 0; opacity: 0; mix-blend-mode: multiply; }
.tone--amber { background: linear-gradient(112deg, #f7dfb4, #efc695 70%, #dcab7a); }
.tone--rose { background: linear-gradient(112deg, #b09a80, #75695a); }
.tone--night { background: radial-gradient(130% 100% at 50% 0, #4a4834, #2c2f25 60%, #20231c); }
.sun, .rake { position: absolute; left: -10%; top: -40%; width: 70%; height: 180%; opacity: 0; }
.sun { background: linear-gradient(90deg, transparent, rgba(255, 214, 150, .42) 42%, rgba(255, 226, 170, .55) 52%, transparent); }
.lpool { position: absolute; left: -10%; right: -10%; top: -30%; height: 110%; opacity: 0; background: radial-gradient(50% 50% at 50% 42%, rgba(240, 176, 100, .3), rgba(224, 154, 84, .1) 62%, transparent); }

.branch--table { position: absolute; z-index: 1; }
.branch { position: fixed; left: -8vw; top: -4vh; width: max(116vw, 900px); aspect-ratio: 3 / 2; z-index: 3; pointer-events: none; transform-origin: 20% 30%; background: url(/assets/shadow-plane.webp) center / contain no-repeat; }

/* soft-light keeps dark ink dark: only paper and linen warm up. */
.over { position: fixed; left: 0; right: 0; top: 0; height: 100lvh; z-index: 4; pointer-events: none; overflow: hidden; mix-blend-mode: soft-light; }
.rake { background: linear-gradient(90deg, transparent, rgba(255, 196, 112, .85) 48%, transparent); }
.pool { position: absolute; top: -32vh; width: max(66vw, 420px); aspect-ratio: 1 / 1.1; margin-left: calc(max(66vw, 420px) / -2); opacity: 0; background: radial-gradient(closest-side, rgba(255, 198, 110, .95), rgba(255, 186, 96, .36) 58%, transparent); }

/* ---- garlands ---- */
.lights { position: fixed; left: 0; right: 0; top: 0; height: 0; z-index: 5; pointer-events: none; }
.strand { position: absolute; left: 50%; aspect-ratio: 4 / 1; }
.strand--front { width: max(100vw, 1000px); top: 0; transform: translate(-50%, -49%); }
.strand--back { width: max(76vw, 760px); top: 0; transform: translate(-44%, -60%) scaleX(-1); }
.wire { position: absolute; inset: 0; opacity: 0; background: color-mix(in srgb, var(--accent2) 60%, #fff); -webkit-mask: url(/assets/engrav-lights.webp) center / 100% 100% no-repeat; mask: url(/assets/engrav-lights.webp) center / 100% 100% no-repeat; }
.strand--back .wire { background: var(--accent2); }
.bulb { position: absolute; width: 0; height: 0; }
.halo, .core { position: absolute; border-radius: 50%; opacity: 0; transform: translate(-50%, -50%); }
.halo { width: 15vw; height: 15vw; min-width: 150px; min-height: 150px; background: radial-gradient(closest-side, rgba(255, 216, 150, .46), rgba(255, 190, 110, .15) 34%, rgba(255, 180, 100, .04) 66%, transparent); }
.core { width: 2.5vw; height: 2.5vw; min-width: 25px; min-height: 25px; background: radial-gradient(closest-side, #fffbe6 20%, #ffe6ad 54%, rgba(255, 208, 130, .4) 80%, transparent); }
.strand--back .halo { width: 10vw; height: 10vw; min-width: 100px; min-height: 100px; }
.strand--back .core { width: 1.9vw; height: 1.9vw; min-width: 19px; min-height: 19px; }

/* The hour, a paper tab in the margin. */
.hour { position: fixed; left: 26px; bottom: 26px; z-index: 6; width: 104px; padding: 11px 10px 10px; text-align: center; background: var(--paper) url(/assets/fine-cotton.webp) center / 700px; background-blend-mode: multiply; box-shadow: 0 1px 2px rgba(var(--shadow), .5), 2px 8px 18px rgba(var(--shadow), .3); transform: rotate(-2.4deg); color: var(--ink); pointer-events: none; }
.hour b { display: block; font: 400 25px/1.05 var(--font-display); font-variant-numeric: lining-nums; }
.hour span { display: block; margin-top: 4px; font: 500 9px/1.3 var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--accent-ink); }
.is-embed .hour { display: none; }

/* ---- the collage ---- */
.sheet { position: relative; z-index: 2; width: min(1120px, 100vw - 300px); margin: 0 auto; padding-bottom: 0; }
.spread { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 20px; align-items: start; padding-block: clamp(40px, 7vh, 70px); }

.card { position: relative; transform: rotate(var(--r, 0deg)); }
.cast { position: absolute; inset: 3px; pointer-events: none; }
.near .cast--sun { will-change: transform, opacity; }
.near .dusk, .near .body { will-change: opacity; }
.sun-gone .cast--sun { display: none; }
.cast--sun { background: rgba(var(--shadow), .34); box-shadow: 0 0 26px 10px rgba(var(--shadow), .3); transform-origin: 0 0; opacity: .6; }
.cast--night { background: rgba(14, 12, 8, .55); box-shadow: 0 16px 34px 8px rgba(14, 12, 8, .6); transform: translateY(8px); opacity: 0; }
.paper { position: relative; isolation: isolate; height: 100%; background: var(--paper) url(/assets/fine-cotton.webp) center / 900px; background-blend-mode: multiply; box-shadow: 0 1px 1.5px rgba(var(--shadow), .46), 0 2px 5px rgba(var(--shadow), .22), inset 0 0 0 1px color-mix(in srgb, var(--paper) 45%, transparent); overflow: hidden; }
.dusk { position: absolute; inset: 0; opacity: 0; pointer-events: none; background: radial-gradient(120% 110% at 50% 18%, rgba(150, 104, 56, .3), rgba(128, 86, 44, .42)); }
.body { position: relative; z-index: 2; }

.cream .paper { background: var(--paper-2) url(/assets/paper-sage-paper.webp) center / 900px; background-blend-mode: multiply; }
.deckle .paper { background: none; box-shadow: none; overflow: visible; }
.deckle .paper::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--paper) url(/assets/fine-deckle.webp) center / 100% 100% no-repeat; background-blend-mode: multiply; -webkit-mask: url(/assets/fine-deckle.webp) center / 100% 100% no-repeat; mask: url(/assets/fine-deckle.webp) center / 100% 100% no-repeat; }
.deckle .dusk { -webkit-mask: url(/assets/fine-deckle.webp) center / 100% 100% no-repeat; mask: url(/assets/fine-deckle.webp) center / 100% 100% no-repeat; }
.deckle .cast { inset: 5% 5%; }

/* Type */
.v-names, .v-h, .v-count__n {
  color: var(--ink-now); text-shadow: 0 1px 0 color-mix(in srgb, var(--paper) 55%, transparent);
  -webkit-mask: url(/assets/letterpress-ink-texture.webp) center / 620px; mask: url(/assets/letterpress-ink-texture.webp) center / 620px;
  padding-block: .06em;
}
.v-kicker, .v-count__l, .v-dl dt, .v-date b, .v-hosts span { font: 500 10.5px/1.4 var(--font-body); letter-spacing: .3em; text-transform: uppercase; color: var(--lab-now); }
.v-h { font: 400 40px/1.08 var(--font-display); margin-bottom: 20px; }
.v-prose p + p { margin-top: 12px; }
.v-guest { font: italic 400 20px/1.2 var(--font-body); color: var(--lab-now); margin-bottom: 10px; }
.v-link { display: inline-flex; align-items: center; min-height: 44px; align-self: flex-start; margin-top: auto; font: 500 10.5px/1.4 var(--font-body); letter-spacing: .26em; text-transform: uppercase; color: var(--ink-now); text-decoration: none; border-bottom: 1px solid var(--lab-now); }
.v-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.v-gallery img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.v-extra__img { width: 100%; max-height: 220px; object-fit: cover; margin-bottom: 16px; }


/* Hero */
.s-hero { min-height: 100svh; align-items: center; padding-block: 24px; }
.p-env { grid-column: 1 / 8; grid-row: 1; aspect-ratio: 590 / 410; margin-right: -40px; }
.p-env .paper { background: var(--env) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; }
.env__side, .env__low, .env__flap, .env__flapsh { position: absolute; inset: 0; }
.env__side { background: var(--env) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; clip-path: polygon(0 0, 50% 54%, 100% 0, 100% 100%, 0 100%); }
.env__low { background: color-mix(in srgb, var(--env) 90%, white) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; clip-path: polygon(0 100%, 48% 50%, 50% 48.5%, 52% 50%, 100% 100%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1); }
.env__flapsh { background: rgba(var(--shadow), .42); clip-path: polygon(0 0, 100% 0, 52% 60.5%, 50% 62.5%, 48% 60.5%); }
.env__flap { background: color-mix(in srgb, var(--env) 94%, white) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; clip-path: polygon(0 0, 100% 0, 52% 59%, 50% 61%, 48% 59%); }
.seal { display: block; isolation: isolate; background: var(--accent2); -webkit-mask: url(/assets/fine-seal.webp) center / contain no-repeat; mask: url(/assets/fine-seal.webp) center / contain no-repeat; aspect-ratio: 1; }
.seal img { width: 100%; height: 100%; filter: grayscale(1) contrast(1.25) brightness(1.1); mix-blend-mode: multiply; }
.env__seal { position: absolute; left: 50%; top: 58%; width: 23%; transform: translate(-50%, -50%); }
.env__sealsh { position: absolute; left: 50%; top: 59%; width: 20%; aspect-ratio: 1; border-radius: 50%; transform: translate(-50%, -50%); box-shadow: 1px 4px 7px rgba(var(--shadow), .55); }
.p-main { grid-column: 7 / 13; grid-row: 1; z-index: 1; margin-left: 40px; }
.p-main .body { display: flex; flex-direction: column; align-items: center; text-align: center; min-height: min(720px, 100svh - 48px); padding: clamp(48px, 8.5vh, 74px) 64px clamp(44px, 8vh, 70px); }
.hero__olive { width: 190px; height: clamp(62px, 11vh, 104px); object-fit: cover; margin-bottom: clamp(8px, 2vh, 20px); }
.p-main .v-names { font: 400 clamp(58px, 9vh, 76px)/1.02 var(--font-display); margin-top: 14px; }
.p-main .v-names em { display: block; font: italic 400 34px/1.2 var(--font-body); color: var(--lab-now); }
.p-main .v-date { margin-top: auto; padding-top: 16px; font-size: 21px; line-height: 1.32; }
.p-main .v-date b { display: block; font: 500 10.5px/1.5 var(--font-body); letter-spacing: .3em; text-transform: uppercase; color: var(--lab-now); margin-bottom: 8px; }
.p-main .v-place { margin-top: 14px; }
.p-main .v-place::before { content: ''; display: block; width: 56px; height: 1px; margin: 0 auto 14px; background: var(--rule); }
.v-date__time { display: block; font-size: 19px; }

/* Countdown */
.p-count { grid-column: 1 / 9; grid-row: 1; z-index: 1; }
.p-count .body { padding: 38px 44px 34px; text-align: center; }
.v-count { display: grid; grid-template-columns: repeat(4, 1fr); margin: 22px 0 20px; }
.v-count__cell + .v-count__cell { border-left: 1px solid var(--rule); }
.v-count__n { display: block; font: 400 62px/1 var(--font-display); font-variant-numeric: lining-nums tabular-nums; margin-bottom: 6px; }
.v-count__l { letter-spacing: .2em; }
.v-small { font-size: 20px; }
.p-count .v-kicker { text-align: center; }
.v-olive { grid-column: 9 / 13; grid-row: 1; margin: 50px 0 0 -30px; }

/* Engraving prints */
.vig .body { padding: 12px; }
.vig img { width: 100%; height: auto; }

/* Venue */
.p-venue { grid-column: 2 / 11; grid-row: 1; }
.p-venue .body { display: grid; grid-template-columns: 1.55fr 1fr; gap: 28px; padding: 30px; }
.venue__art img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; min-height: 330px; }
.venue__copy { display: flex; flex-direction: column; }
.v-venue__name { font: 400 40px/1.08 var(--font-display); margin: 4px 0 4px; }
.venue__copy .v-h { font: 500 10.5px/1.4 var(--font-body); letter-spacing: .28em; text-transform: uppercase; color: var(--lab-now); margin: 0; -webkit-mask: none; mask: none; text-shadow: none; }
.v-venue__loc { margin-bottom: 16px; color: var(--lab-now); font-size: 21px; font-style: italic; }
.p-venue .v-link { margin-top: auto; align-self: flex-start; display: inline-flex; align-items: center; min-height: 44px; font: 500 10.5px/1.4 var(--font-body); letter-spacing: .26em; text-transform: uppercase; color: var(--ink-now); text-decoration: none; border-bottom: 1px solid var(--lab-now); }
.p-photo { grid-column: 9 / 13; grid-row: 1; z-index: 1; margin-top: 310px; }
.p-photo .paper { aspect-ratio: 5 / 4.2; }
.photo__img { position: absolute; left: 12px; right: 12px; top: 12px; width: calc(100% - 24px); height: calc(100% - 56px); object-fit: cover; object-position: 50% 74%; }
.p-photo .body { position: absolute; left: 0; right: 0; bottom: 0; height: 44px; display: grid; place-items: center; }
.caption { font: 500 9px/1.3 var(--font-body); letter-spacing: .2em; text-transform: uppercase; color: var(--lab-now); text-align: center; }

/* Programme */
.p-prog { grid-column: 8 / 13; grid-row: 1 / span 2; z-index: 1; }
.p-prog .body { padding: 44px; }
.v-timeline li { display: grid; grid-template-columns: 92px 1fr; align-items: baseline; padding: 15px 0 16px; border-top: 1px solid rgba(42, 38, 34, .28); }
.v-timeline li:last-child { border-bottom: 1px solid rgba(42, 38, 34, .28); }
.v-timeline time { font: 400 28px/1 var(--font-display); font-variant-numeric: lining-nums; color: var(--lab-now); }
.v-timeline__label { font-size: 22px; }
.v-timeline p { grid-column: 2; font-size: 16px; line-height: 1.3; margin-top: 3px; }
.v-cer { grid-column: 1 / 8; grid-row: 1; margin-right: -14px; }
.v-coc { grid-column: 3 / 8; grid-row: 2; margin-top: -40px; z-index: 2; }

/* Menu */
.p-menu { grid-column: 1 / 7; grid-row: 1 / span 2; z-index: 1; }
.p-menu .body { padding: 44px 46px; }
.v-dl { display: grid; gap: 16px; }
.v-dl dt { font: 500 10px/1.4 var(--font-body); letter-spacing: .28em; text-transform: uppercase; color: var(--lab-now); margin-bottom: 3px; }
.v-dl dd { font-size: 20px; line-height: 1.3; }
.v-gla { grid-column: 9 / 12; grid-row: 1; margin-top: 20px; }
.v-ban { grid-column: 7 / 13; grid-row: 2; margin: -30px 0 0 -30px; }

/* Dress + transport */
.p-dress { grid-column: 1 / 7; }
.p-trans { grid-column: 7 / 13; margin-top: 76px; }
.p-dress .body, .p-trans .body { padding: 42px 44px; }
.v-prose { font-size: 19px; line-height: 1.38; }
.s-solo .p-dress, .s-solo .p-trans { grid-column: 3 / 11; margin-top: 0; }

/* FAQ */
.v-fes { grid-column: 1 / 7; grid-row: 1; margin: 60px -40px 0 0; }
.p-faq { grid-column: 6 / 13; grid-row: 1; z-index: 1; }
.p-faq .body { padding: 42px 46px; }
.v-faq { display: grid; gap: 16px; }
.v-faq dt { font: 500 19.5px/1.28 var(--font-body); margin-bottom: 3px; }
.v-faq dd { font-size: 18.5px; line-height: 1.38; }
.v-faq div + div { padding-top: 16px; border-top: 1px solid rgba(42, 38, 34, .22); }

/* Gift */
.s-gift { padding-top: 90px; }
.p-gift { grid-column: 3 / 9; grid-row: 1; color: var(--paper); z-index: 1; }
.sagecard .paper { background: var(--card-accent) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; }
.sagebase { position: absolute; inset: 0; background: color-mix(in srgb, var(--card-accent) 55%, transparent); }
.p-gift .body { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 48px 50px 44px; }
.p-gift .v-h { font-size: 37px; margin-bottom: 18px; color: var(--paper); }
.p-gift .v-kicker { color: var(--paper); }
.p-gift .v-prose, .p-gift .v-prose p { font-size: 19px; }
.v-iban { margin: 22px 0 8px; font: 500 13px/1.5 var(--font-body) !important; letter-spacing: .1em; overflow-wrap: anywhere; }
.v-copy { min-height: 44px; padding: 0 2px; background: none; border: 0; cursor: pointer; font: 500 10px/1.4 var(--font-body); letter-spacing: .28em; text-transform: uppercase; color: var(--paper); }
.v-copy span { border-bottom: 1px solid rgba(244, 240, 221, .6); padding-bottom: 3px; }
.sign { margin-top: 22px; font: 400 25px/1.9 var(--font-script) !important; color: var(--paper); transform: rotate(-3deg); }
.v-oli { grid-column: 8 / 12; grid-row: 1; margin: 90px 0 0 -20px; z-index: 2; }

/* Reply: the card by candlelight */
.s-rsvp { min-height: 100svh; align-items: center; justify-items: center; padding-block: 136px 56px; }
.p-rsvp { grid-column: 1 / -1; grid-row: 1; width: min(500px, 100%); z-index: 2; }
.p-rsvp .body { padding: 40px 46px 30px; }
.p-rsvp .v-h { text-align: center; margin-bottom: 12px; }
.p-rsvp .v-intro { text-align: center; font-style: italic; margin: -4px 0 10px; }
.p-rsvp .v-rsvp { max-height: min(520px, calc(100svh - 230px)); overflow-y: auto; overscroll-behavior: contain; padding: 2px 4px 6px; margin: 0 -4px; }
.p-rsvp .dusk { background: radial-gradient(90% 90% at 50% 45%, rgba(132, 88, 46, .44), rgba(112, 72, 36, .58)); }
.p-env .dusk, .p-mini .dusk { background: rgba(30, 32, 22, .66); }
.sagecard .dusk { background: rgba(26, 30, 18, .5); }
.vig .dusk { background: radial-gradient(120% 110% at 50% 18%, rgba(150, 104, 56, .34), rgba(120, 80, 40, .48)); }
.candle { position: absolute; left: 0; top: 0; z-index: 1; width: 0; height: 0; opacity: 0; pointer-events: none; }
.candle::before { content: ''; position: absolute; left: -380px; top: -380px; width: 760px; height: 760px; background: radial-gradient(closest-side, rgba(255, 240, 206, .74), rgba(255, 236, 194, .64) 18%, rgba(255, 228, 176, .42) 42%, rgba(255, 218, 156, .16) 70%, transparent); }
.p-mini { grid-column: 1 / -1; grid-row: 1; align-self: end; width: min(560px, 100%); aspect-ratio: 590 / 410; transform: translate(-90px, 12px) rotate(var(--r)); z-index: 1; }
.p-mini .paper { background: var(--env) url(/assets/fine-envelope.webp) center / 760px; background-blend-mode: soft-light; }
.p-mini .env__seal { display: none; }
.p-mini .env__sealsh { display: none; }
.spill { position: absolute; left: 50%; top: 50%; width: 1100px; height: 1100px; margin: -550px 0 0 -550px; opacity: 0; pointer-events: none; background: radial-gradient(closest-side, rgba(255, 196, 116, .5), rgba(240, 168, 92, .17) 55%, transparent); }

/* ---- narrower desktops keep the collage but lose the margin tab ---- */
@media (max-width: 1240px) {
  .sheet { width: calc(100vw - 56px); }
  .hour { display: none; }
}

/* ---- phones: one column, pieces overlapping like a dealt hand ---- */
@media (max-width: 860px) {
  body { font-size: 17.5px; }
  .sheet { width: min(362px, 100vw - 28px); }
  .spread { display: block; padding-block: 20px; }
  .card { transform: rotate(calc(var(--r, 0deg) * .55)); }
  .v-h { font-size: 34px; }
  .strand--front { width: 210vw; transform: translate(-50%, -52%); }
  .strand--back { width: 170vw; transform: translate(-44%, -62%) scaleX(-1); }
  .halo { min-width: 110px; min-height: 110px; }
  .pool { top: -22vh; width: 130vw; margin-left: -65vw; }

  .s-hero { min-height: 0; padding-block: 16px 20px; }
  .p-env { width: 74%; margin: 0 0 0 -2%; }
  .p-main { margin: -14vw 0 0; }
  .p-main .body { min-height: 0; padding: 50px 46px 48px; }
  .hero__olive { width: 150px; height: 72px; margin-bottom: 8px; }
  .p-main .v-names { font-size: 56px; margin-top: 10px; }
  .p-main .v-names em { font-size: 27px; }
  .p-main .v-date { margin-top: 18px; padding-top: 0; font-size: 19px; }

  .p-count .body { padding: 26px 16px 22px; }
  .v-count { margin: 16px 0 14px; }
  .v-count__n { font-size: 42px; }
  .v-count__l { font-size: 8.5px; letter-spacing: .12em; }
  .v-small { font-size: 17.5px; }
  .v-olive { width: 52%; margin: -12px 0 0 auto; }

  .p-venue .body { grid-template-columns: 1fr; gap: 18px; padding: 16px 16px 20px; }
  .venue__art img { min-height: 0; height: auto; aspect-ratio: 16 / 10; }
  .p-photo { width: 66%; margin: -14px 0 0 auto; }
  .p-venue .v-link { margin-top: 12px; }

  .v-cer { margin: 0 0 0 -2%; width: 88%; }
  .v-coc { width: 62%; margin: -22px 0 -18px auto; }
  .p-prog .body { padding: 30px 26px; }
  .v-timeline li { grid-template-columns: 78px 1fr; }
  .v-timeline time { font-size: 25px; }
  .v-timeline__label { font-size: 20px; }

  .p-menu .body { padding: 30px 26px; }
  .v-dl dd { font-size: 18.5px; }
  .v-gla { width: 42%; margin: -18px 0 0 6%; }
  .v-ban { width: 76%; margin: -66px 0 0 auto; }

  .p-trans { margin-top: 16px; }
  .p-dress .body, .p-trans .body { padding: 30px 26px; }

  .v-fes { width: 86%; margin: 0 0 -20px auto; }
  .p-faq .body { padding: 30px 26px; }
  .v-faq dd { font-size: 17.5px; }
  .v-faq dt { font-size: 18.5px; }

  .s-gift { padding-top: 20px; }
  .p-gift .body { padding: 36px 26px 30px; }
  .p-gift .v-h { font-size: 32px; }
  .p-gift .v-prose, .p-gift .v-prose p { font-size: 17.5px; }
  .v-iban { font-size: 11.5px !important; letter-spacing: .04em; }
  .sign { font-size: 21px !important; }
  .v-oli { width: 48%; margin: -20px 0 0 auto; }

  .s-rsvp { min-height: 100svh; display: grid; grid-template-columns: 1fr; padding-block: 92px 44px; }
  .p-rsvp .body { padding: 28px 26px 18px; }
  .p-rsvp { width: 100%; }
  .p-mini { width: 92%; transform: translate(-6%, 24px) rotate(calc(var(--r) * .6)); }
  .spill { width: 720px; height: 720px; margin: -360px 0 0 -360px; }
}

@media (prefers-reduced-motion: reduce) {
  :root { transition: none; }
}

.p-story, .p-misc { grid-column: 2 / 12; }
.p-story .body, .p-misc .body { padding: 42px 46px; }
.s-hero { padding-bottom: 24px; }
.p-gift .body > * { max-width: 100%; }
.p-gift .v-prose { width: 100%; }
.sheet { overflow-y: clip; }

.is-dark .hero__olive, .is-dark .venue__art img, .is-dark .vig img { filter: invert(1); }
