/* Maison Saïdi — styles actifs consolidés. */
@font-face { font-family: Chopin; src: url("assets/ChopinScript-Regular.ttf") format("truetype"); font-weight: 400; font-display: swap; }
:root { color-scheme: light; --paper: #fff; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: rgb(255, 255, 255); }
body { margin: 0px; }
main { max-width: 1000px; margin: auto; overflow: hidden; background: var(--paper); }
.hero { position: relative; isolation: isolate; z-index: 1; }
.portrait { position: absolute; top: 0px; right: 0px; left: 0px; overflow: hidden; }
.portrait img { display: block; width: 100%; height: 100%; object-fit: cover; }
.portrait::after { content: ""; position: absolute; inset: 74% 0px 0px; background: linear-gradient(transparent 0%, rgba(255, 255, 255, 0.25) 40%, rgb(255, 255, 255) 100%); }
.hero-copy { position: absolute; z-index: 3; left: 50%; transform: translateX(-50%); width: calc(100% - 28px); text-align: center; }
.overline { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 700; font-stretch: normal; line-height: 1.5; font-family: Arial, sans-serif; text-transform: uppercase; color: rgb(255, 255, 255); text-shadow: rgb(4, 12, 32) 0px 2px 8px, rgb(4, 12, 32) 0px 0px 2px; margin: 0px auto 8px; }
h1 { font: 400 clamp(43px, 12vw, 110px) / 1.1 Chopin, cursive; margin: 0px auto; white-space: nowrap; padding: 0.12em 0.04em 0.26em; background: linear-gradient(104deg, rgb(187, 200, 217), rgb(255, 255, 255) 28%, rgb(180, 193, 211) 45%, rgb(255, 255, 255) 66%, rgb(183, 198, 218)) text; color: transparent; filter: drop-shadow(rgb(4, 15, 38) 0px 1px 1px) drop-shadow(rgb(10, 25, 54) 0px 2px 4px); }
.silver-line { display: block; width: 31%; height: 1px; margin: 0px auto 13px; background: linear-gradient(90deg, transparent, rgb(237, 243, 251), transparent); }
.tagline { letter-spacing: 0.02em; margin: 0px; }
.discover { display: grid; place-items: center; margin-right: auto; margin-bottom: 0px; margin-left: auto; color: rgb(255, 255, 255); text-shadow: rgb(25, 48, 96) 0px 1px 3px; text-decoration: none; font-size: 22px; }
.discover:focus-visible { outline: rgb(25, 48, 96) solid 2px; outline-offset: 4px; }
.drape { position: absolute; z-index: 2; pointer-events: none; width: 110%; max-width: none; left: -5%; height: auto; }
.announcement { position: relative; z-index: 0; background: transparent; text-align: center; padding-right: 24px; padding-left: 24px; }
.monogram { display: block; height: auto; margin: 0px auto 25px; filter: grayscale(0.72) brightness(1.04) contrast(1.14) drop-shadow(rgba(17, 37, 75, 0.22) 0px 2px 3px); }
.house { margin: 0px 0px 30px; }
.house strong { display: block; text-transform: uppercase; font: 400 clamp(30px, 7.5vw, 44px) / 0.95 "Bodoni MT", Didot, Georgia, serif; letter-spacing: -0.045em; white-space: nowrap; }
.house span { display: block; margin-top: 28px; text-transform: uppercase; color: var(--couture-blue); font: 700 7px / 1.6 Arial, sans-serif; letter-spacing: 0.34em; }
h2 { font: 400 clamp(44px, 11.4vw, 92px) / 1.03 Chopin, cursive; margin: 0px auto 24px; letter-spacing: -0.025em; }
h2 span { display: block; white-space: nowrap; }
h2 span + span { margin-top: 0.05em; }
.invitation-copy { max-width: 690px; margin: auto; color: rgb(65, 74, 91); }
.invitation-copy p { margin: 0px; }
.invitation-copy .date { font: 400 clamp(38px, 9.2vw, 58px) / 1.15 Chopin, cursive; margin: 27px auto 40px; }
.closing-line { display: none; }
@media (min-width: 760px) {
  .hero-copy { top: 55%; width: 94%; }
  .house span { font-size: 9px; }
  .announcement { padding-bottom: 110px; }
  .monogram { margin-bottom: 30px; }
  h2 { margin-bottom: 30px; }
}
@media (max-width: 360px) {
  h1 { font-size: 39px; }
  h2 { font-size: 40px; }
  .announcement { padding-inline: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
.tagline { text-shadow: rgb(7, 21, 44) 0px 1px 4px, rgb(7, 21, 44) 0px 0px 2px; }
.hero { --drape-width: min(100vw,1000px); }
.portrait { bottom: auto; }
.portrait::after { display: none; }
.announcement { padding-bottom: 50px; }
.promise { position: relative; isolation: isolate; min-height: 680px; color: rgb(255, 255, 255); text-align: center; overflow: hidden; }
.promise-photo { position: absolute; inset: 0px; width: 100%; object-fit: cover; object-position: 50% 50%; z-index: -3; }
.promise-shade { position: absolute; top: 0px; right: 0px; left: 0px; z-index: -2; }
.promise h2 { position: absolute; left: 0px; width: 100%; margin: 0px; }
.countdown-copy { position: absolute; left: 0px; width: 100%; padding: 0px 22px; text-shadow: rgb(5, 11, 30) 0px 2px 12px; }
.countdown-intro { margin: 0px 0px 14px; }
.countdown { display: grid; grid-template-columns: repeat(4, 1fr); max-width: 570px; margin: 0px auto 25px; }
.countdown div { position: relative; }
.countdown div + div::before { content: ""; position: absolute; left: 0px; top: 10%; height: 50%; width: 1px; background: rgba(255, 255, 255, 0.25); }
.countdown span { display: block; font-style: normal; font-variant: tabular-nums; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; font-size: clamp(35px, 6.7vw, 64px); line-height: 1.1; font-family: Georgia, serif; letter-spacing: -0.04em; }
.countdown small { display: block; margin-top: 10px; font: 400 8px / 1.5 Arial, sans-serif; letter-spacing: 0.19em; text-transform: uppercase; }
.countdown-copy h3 { margin: 0px 0px 15px; }
.countdown-poem { margin: 0px auto; color: rgb(237, 240, 247); }
@media (min-width: 760px) {
  .countdown-copy { bottom: 5%; }
  .promise h2 { top: 20%; }
  .countdown { margin-bottom: 22px; }
}
@media (max-width: 360px) {
  .countdown-copy { padding-inline: 14px; }
  .countdown small { font-size: 7px; }
}
.promise { --photo-height: clamp(680px,100vw,1000px); }
.promise-photo { height: var(--photo-height); mask-image: linear-gradient(rgb(0, 0, 0) 88%, transparent 100%); }
.promise-shade { height: var(--photo-height); bottom: auto; }
.promise h2 { text-transform: uppercase; }
.countdown-intro { font: 400 8px / 1.5 Arial, sans-serif; letter-spacing: 0.19em; text-transform: uppercase; }
.promise-lace { position: absolute; left: 0px; width: 100%; pointer-events: none; }
.countdown .digit-window { display: inline-block; position: relative; width: 0.62em; height: 1.16em; overflow: hidden; vertical-align: top; line-height: 1.16; }
.countdown .digit-face { display: block; position: absolute; inset: 0px; font: inherit; letter-spacing: inherit; }
.countdown .digit-value { display: block; min-height: 1.16em; }
.promise-lace { object-fit: fill; }
.promise-lace { bottom: -2px; z-index: 1; }
.sacred { position: relative; text-align: center; background: rgb(255, 255, 255); }
.section-label { font: 400 9px / 1.7 Arial, sans-serif; letter-spacing: 0.24em; text-transform: uppercase; margin: 0px 0px 35px; color: var(--couture-blue); }
.sacred blockquote { font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; margin-top: 0px; margin-right: auto; margin-left: auto; }
.sacred blockquote em { font: 400 clamp(39px, 7vw, 65px) / 1.3 Chopin, cursive; }
.sacred cite { text-transform: uppercase; }
.sacred-thread { width: 1px; background: linear-gradient(rgba(187, 167, 121, 0.44), transparent); }
.story header { text-align: center; }
.story header .section-label { margin-bottom: 20px; }
.story h2 { font-size: clamp(42px, 7vw, 66px); line-height: 1.15; max-width: 650px; margin-top: 0px; margin-right: auto; margin-left: auto; }
.story-chapter { grid-template-columns: minmax(0px, 1fr) minmax(0px, 1fr); align-items: center; gap: 65px; }
.story-chapter[hidden] { display: none; }
.story.is-interactive .story-chapter { margin-bottom: 0px; }
.polaroid { position: relative; background: rgb(255, 255, 255); padding: 12px 12px 22px; margin: 0px; transform: rotate(-3deg); box-shadow: rgba(24, 47, 90, 0.094) 0px 8px 30px, rgba(24, 47, 90, 0.03) 0px 0px 0px 1px; isolation: isolate; }
.polaroid::before, .polaroid::after { content: ""; position: absolute; inset: 0px; background: rgb(253, 252, 249); box-shadow: rgba(24, 47, 90, 0.07) 0px 1px 12px; z-index: -1; transform: rotate(6deg); }
.polaroid::after { transform: rotate(3deg); background: rgb(255, 255, 255); }
.polaroid img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; position: relative; }
.polaroid figcaption { position: relative; text-align: center; font: 400 25px / 1.15 Chopin, cursive; padding: 18px 2px 0px; color: var(--couture-blue); }
.chapter-number { text-transform: uppercase; color: rgb(155, 128, 80); margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.chapter-copy h3 { margin-top: 0px; margin-right: 0px; margin-left: 0px; color: var(--couture-blue); }
.chapter-copy > p:last-child { color: rgb(80, 88, 102); margin: 0px; }
.story-controls { display: flex; align-items: center; justify-content: center; gap: 28px; }
.story-controls[hidden], .story-hint[hidden] { display: none; }
.story-controls button { border: 1px solid rgba(25, 48, 96, 0.19); border-radius: 50%; width: 44px; height: 44px; background: transparent; color: var(--couture-blue); font: 24px Georgia, serif; cursor: pointer; }
.story-controls button:disabled { opacity: 0.25; cursor: default; }
.story-controls button:focus-visible { outline: rgb(25, 48, 96) solid 2px; outline-offset: 4px; }
.story-status { font: 400 10px Arial, sans-serif; letter-spacing: 0.15em; }
.story-hint { text-align: center; font: italic 13px Georgia, serif; color: rgb(105, 117, 138); margin-top: 15px; }
@media (max-width: 650px) {
  .story-chapter { grid-template-columns: 1fr; gap: 40px; }
  .polaroid { width: 82%; max-width: 310px; margin: auto; }
  .chapter-copy { max-width: 430px; margin: auto; text-align: center; min-height: 300px; }
  .chapter-copy h3 { font-size: 22px; }
  .chapter-copy > p:last-child { font-size: 14px; line-height: 1.8; }
  .story-controls { margin-top: 14px; }
  .sacred { padding-top: 25px; }
  .story h2 { margin-bottom: 45px; }
}
.promise { --lace-space: clamp(100px,18vw,180px); height: calc(var(--photo-height) + var(--lace-space)); }
.countdown-copy { bottom: calc(var(--lace-space) + 14px); }
.promise-lace { height: min(33.3333vw, 333.333px); background-size: 50% auto; background-repeat: repeat-x; background-position: left bottom; }
.story { background: rgb(255, 255, 255); }
.story-portrait { margin: 0px; position: relative; }
.story-portrait img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.chapter-copy { text-align: left; min-height: 0px; }
.chapter-copy > p:last-child { text-align-last: left; overflow-wrap: break-word; }
.story-controls { margin-top: 32px; }
@media (max-width: 650px) {
  .story-portrait { width: 100%; max-width: 400px; margin: auto; }
  .story-chapter { gap: 30px; }
  .chapter-copy { width: 100%; max-width: 430px; min-height: 0px; }
  .chapter-copy h3 { text-align: left; }
  .story-controls { margin-top: 28px; }
}
.promise-lace { background-image: url("assets/dentelle-transparente-v3.png"); }
.sacred { isolation: isolate; overflow: hidden; }
.sacred-monogram { position: absolute; width: 200px; height: auto; left: 50%; top: 30px; transform: translateX(-50%); opacity: 0.1; filter: sepia(0.2); z-index: -1; pointer-events: none; }
.sacred .section-label { margin-bottom: 22px; }
.sacred-final { display: inline-block; margin-top: 12px; }
.sacred.is-visible .sacred-final { animation: 1300ms cubic-bezier(0.2, 0.65, 0.3, 1) 0s 1 normal both running sacred-rise; }
@keyframes sacred-rise { 
  0% { opacity: 0; transform: translateY(15px); filter: blur(3px); }
  100% { opacity: 1; transform: translateY(0px); filter: blur(0px); }
}
.story-layout { max-width: 900px; margin: auto; display: grid; }
.photo-composition { position: relative; width: 100%; touch-action: pan-y; }
.memory-frame { background: rgb(255, 255, 255); margin: 0px; box-shadow: rgba(25, 48, 96, 0.125) 0px 5px 18px; border: 1px solid rgb(233, 230, 225); }
.memory-frame img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.memory-left { width: 49%; }
.memory-right { width: 49%; }
.memory-left img, .memory-right img { filter: grayscale(1); opacity: 0.85; }
.story-chapter { display: block; margin: 0px; max-width: none; }
.chapter-copy { max-width: none; }
.chapter-number { margin-bottom: 10px; }
.chapter-selector { display: flex; justify-content: center; }
.chapter-selector[hidden] { display: none; }
.chapter-selector button { position: relative; border: 0px; background: none; color: rgb(130, 144, 164); font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: normal; font-stretch: normal; line-height: normal; font-family: Georgia, serif; cursor: pointer; }
.chapter-selector button::after { content: ""; position: absolute; height: 1px; transition: background 0.25s, transform 0.25s; }
.chapter-selector button[aria-pressed="true"] { color: var(--couture-blue); }
.chapter-selector button[aria-pressed="true"]::after { background: rgb(166, 127, 54); transform: scaleY(2); }
.chapter-selector button:focus-visible { outline: rgb(25, 48, 96) solid 1px; outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; }
@media (min-width: 700px) {
  .story-layout { grid-template-columns: minmax(0px, 1fr) minmax(0px, 1fr); align-items: center; gap: 35px; }
  .photo-composition { height: 490px; }
  .memory-center { top: 185px; }
  .chapter-copy h3 { font-size: clamp(14px, 2vw, 22px); }
}
@media (max-width: 360px) {
  .photo-composition { height: 380px; }
  .memory-center { top: 153px; }
  .chapter-selector { gap: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  .sacred.is-visible .sacred-final { animation: auto ease 0s 1 normal none running none; }
  .chapter-selector button::after { transition: none; }
}
.sacred-thread { height: 15px; margin: 16px auto 0px; }
.promise { background: rgb(8, 14, 26); }
.promise::after { content: ""; position: absolute; inset: auto 0px -2px; height: min(33.3333vw, 333.333px); background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201536%201024%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M0%20580%20C130%20650%20220%20650%20320%20630%20C450%20670%20600%20620%20768%20530%20C936%20620%201086%20670%201216%20630%20C1316%20650%201406%20650%201536%20580%20L1536%201024%20H0Z%22%2F%3E%3C%2Fsvg%3E") left bottom / 50% auto repeat-x; z-index: 0; pointer-events: none; }
.sacred { padding-top: 15px; padding-right: 20px; padding-left: 20px; }
.sacred > .section-label { margin-bottom: 14px; }
.sacred-medallion { position: relative; margin: auto; }
.sacred blockquote { margin-bottom: 18px; }
.sacred blockquote em.sacred-word { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; line-height: 1; font-family: Chopin, cursive; display: inline-block; vertical-align: baseline; margin-left: 2px; clip-path: inset(0px); }
@keyframes write-word { 
  0% { clip-path: inset(0px 100% 0px 0px); }
  100% { clip-path: inset(0px); }
}
.sacred-thread { display: none; }
.story { padding-top: 16px; padding-right: 16px; padding-left: 16px; }
.story h2 { margin-bottom: 26px; }
.story-layout { grid-template-columns: minmax(0px, 0.85fr) minmax(0px, 1.35fr); gap: 14px; align-items: center; }
.photo-composition { margin: auto; }
.memory-frame { padding: 4px 4px 11px; }
.memory-left { left: 0px; right: auto; top: 12px; }
.memory-center { left: 8%; }
.memory-right { right: 0px; left: auto; }
.chapter-copy h3 { margin-bottom: 12px; }
.chapter-copy > p:last-child { hyphens: auto; }
.chapter-selector { gap: 0px; margin-top: 13px; }
.chapter-selector button { font-size: 8px; min-width: 0px; width: 20%; min-height: 44px; padding: 12px 0px; }
.chapter-selector button::after { left: 25%; right: 25%; bottom: 8px; }
@media (min-width: 700px) {
  .story-layout { grid-template-columns: minmax(0px, 1fr) minmax(0px, 1.25fr); gap: 45px; max-width: 780px; }
  .photo-composition { height: 550px; max-width: 260px; }
  .memory-frame { width: 74%; max-width: 190px; padding: 7px 7px 18px; }
  .memory-center { top: 170px; left: 13%; }
  .memory-right { top: 330px; }
  .chapter-number { font-size: 9px; }
  .chapter-copy h3 { font-size: 20px; }
  .chapter-copy > p:last-child { font-size: 15px; text-align: justify; }
}
.day { padding-right: 24px; padding-left: 24px; background: rgb(255, 255, 255); }
.day header { text-align: center; }
.day header .section-label { margin-bottom: 18px; }
.day h2 { line-height: 1.2; margin-bottom: 14px; }
.day-date { color: rgb(155, 128, 80); margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.day-act { margin-top: 0px; margin-right: auto; margin-left: auto; }
.venue { text-align: center; margin-top: 0px; margin-right: auto; margin-left: auto; }
.venue img { display: block; width: 100%; object-fit: contain; margin-top: 0px; margin-right: auto; margin-left: auto; }
.venue h3 { margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.venue address { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; font-family: Georgia, serif; color: rgb(89, 98, 115); margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.venue a { display: inline-block; font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: normal; font-stretch: normal; line-height: 1.5; font-family: Arial, sans-serif; letter-spacing: 0.08em; color: var(--couture-blue); text-underline-offset: 5px; }
.day-events { list-style: none; padding: 0px; margin: 0px auto; }
.day-events li { grid-template-columns: 65px minmax(0px, 1fr); gap: 20px; }
.day-events li::before { content: ""; position: absolute; left: 74px; top: 5px; bottom: 0px; width: 1px; background: rgb(221, 213, 198); }
.day-events li::after { content: ""; position: absolute; border-radius: 50%; }
.day-events time { color: rgb(155, 128, 80); }
.day-events h4 { margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.day-events p { color: rgb(92, 98, 112); }
.day-interlude { margin-top: 0px; margin-right: auto; margin-left: auto; }
@media (min-width: 700px) {
  .day-act { display: grid; grid-template-columns: 1fr 1fr; gap: 45px; align-items: start; }
  .day-interlude { padding-left: calc(50% + 22px); }
  .venue img { height: 220px; }
  .day-events { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .sacred.is-visible .sacred-word { animation: auto ease 0s 1 normal none running none; }
}
.chapter-copy > p:last-child { text-align: justify; }
.sacred-medallion { border: 0px; border-radius: 0px; background: none; max-width: 420px; isolation: isolate; }
.sacred-wreath { position: absolute; inset: 0px; width: 100%; height: 100%; object-fit: fill; z-index: -1; pointer-events: none; opacity: 0.85; }
.sacred blockquote { font-size: clamp(18px, 3.2vw, 26px); line-height: 1.5; }
.sacred blockquote em.sacred-word { font-size: clamp(38px, 6vw, 52px); }
.sacred:not(.is-visible) .sacred-word { clip-path: inset(0px 100% 0px 0px); }
.sacred.is-visible .sacred-word { animation-timing-function: linear; animation-delay: 0s; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; animation-play-state: running; animation-name: write-word; animation-timeline: auto; animation-range: normal; }
.portrait-window { aspect-ratio: 4 / 5; overflow: hidden; position: relative; }
.portrait-window img { width: 100%; height: 100%; transform-origin: 50% 0px; }
.memory-right { top: 280px; }
.memory-center { top: 133px; }
@media (min-width: 700px) {
  .photo-composition { height: 650px; }
  .memory-center { top: 190px; }
  .memory-right { top: 440px; }
}
.day-act { display: block; max-width: 680px; margin-bottom: 18px; }
.day-interlude { padding-left: 0px; max-width: 680px; margin-bottom: 12px; }
.day-events { position: relative; isolation: isolate; }
.day-events li { position: relative; }
.day-events li::before, .day-events li::after { display: none; }
.day-events .event-copy { position: relative; }
.event-icon { display: block; object-fit: contain; }
.day-events time { display: block; text-align: center; }
.pearl-necklace { position: absolute; inset: 0px; width: 100%; height: 100%; pointer-events: none; z-index: -1; overflow: visible; }
@media (min-width: 700px) {
  .event-icon { width: 78px; height: 78px; }
  .day-events h4 { font-size: 19px; }
  .day-events p { font-size: 14px; }
  .day-events li { min-height: 205px; }
  .venue img { height: 145px; }
}
.dressing { text-align: center; }
.dressing > .section-label { margin-bottom: 20px; }
.dressing h2 { font-size: clamp(39px, 7vw, 66px); line-height: 1.1; margin-top: 0px; margin-right: auto; margin-left: auto; }
.dressing-runway { height: auto; }
.dressing-note { font-size: 12px; }
.dressing-swatches { display: grid; grid-template-columns: repeat(5, minmax(0px, 1fr)); max-width: 620px; margin-right: auto; margin-bottom: 0px; margin-left: auto; }
.dressing-swatches figure { margin: 0px; }
.dressing-swatches img { width: 100%; }
.dressing-swatches figcaption { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: normal; font-stretch: normal; line-height: 1.5; font-family: Arial, sans-serif; color: var(--couture-blue); margin-top: 10px; }
@media (prefers-reduced-motion: reduce) {
  .sacred:not(.is-visible) .sacred-word { clip-path: none; }
  .sacred.is-visible .sacred-word { animation: auto ease 0s 1 normal none running none; }
}
.sacred-medallion { min-height: 0px; padding-right: 8px; padding-bottom: 10px; padding-left: 8px; }
.sacred { padding-bottom: 5px; }
.embossed-divider { position: relative; justify-content: center; align-items: center; gap: 12px; color: rgb(255, 255, 255); font: 28px Georgia, serif; }
.embossed-divider::before, .embossed-divider::after { content: ""; width: 45px; height: 1px; background: rgb(245, 243, 239); box-shadow: rgb(215, 212, 206) 0px 1px 1px; }
.portrait-window img { transform: none; object-fit: contain; object-position: center center; aspect-ratio: auto; background: rgb(255, 255, 255); }
.day-date { font: 400 10px / 1.5 Arial, sans-serif; letter-spacing: 0.18em; text-transform: uppercase; margin-bottom: 15px; }
.venue-pair { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 14px; max-width: 580px; margin: 0px auto 22px; }
.venue img { height: 80px; max-width: 140px; margin-bottom: 8px; }
.venue h3 { margin-bottom: 6px; }
.venue .section-label { margin-bottom: 5px; }
.venue address { font-size: 10px; line-height: 1.5; margin-bottom: 3px; }
.venue a { font-size: 8px; padding: 9px 0px; }
.venue { margin-bottom: 0px; }
.day { padding-inline: 15px; padding-bottom: 30px; }
.day h2 { font-size: clamp(35px, 6vw, 55px); }
.pearl-timeline { position: relative; isolation: isolate; }
.pearl-image { position: absolute; top: 0px; bottom: 0px; height: 100%; object-fit: fill; pointer-events: none; z-index: -1; }
.day-events { max-width: none; width: 100%; }
.day-events .event-copy { text-align: center; }
@media (min-width: 700px) {
  .venue img { height: 95px; max-width: 180px; }
  .venue h3 { font-size: 18px; }
  .venue address { font-size: 12px; }
  .venue a { font-size: 10px; }
  .day-events li { min-height: 145px; }
  .event-icon { width: 36px; height: 36px; }
  .day-events time { font-size: 15px; }
  .day-events h4 { font-size: 14px; }
  .day-events p { font-size: 11px; }
}
.dressing { padding-top: 15px; padding-right: 0px; padding-left: 0px; overflow: hidden; }
.dressing > .section-label, .dressing > h2 { padding-inline: 20px; }
.dressing-scene { position: relative; margin: auto; }
.dressing-runway { width: 100%; max-width: none; margin: 0px; display: block; mask-image: linear-gradient(transparent, rgb(0, 0, 0) 5%, rgb(0, 0, 0) 95%, transparent); }
.dressing-scene::after { content: ""; position: absolute; inset: 0px; pointer-events: none; background: linear-gradient(90deg, rgb(255, 255, 255), transparent 4%, transparent 96%, rgb(255, 255, 255)); }
.dressing-copy { position: absolute; left: 30%; width: 40%; max-width: none; margin: 0px; z-index: 1; }
.dressing-swatches { padding: 0px 18px; gap: 8px; margin-top: 14px; }
.dressing-swatches img { border-radius: 0px; box-shadow: none; object-fit: contain; aspect-ratio: auto; height: auto; background: none; }
.dressing-swatches figcaption { font-size: 8px; }
.scroll-reveal { opacity: 0; transition: opacity 900ms; }
.scroll-reveal.is-shown { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .scroll-reveal { opacity: 1; transition: none; }
}
.pearl-image { left: 5%; right: auto; width: 90%; }
.embossed-divider { display: block; width: 74px; height: 1px; margin: 30px auto 29px; background: rgb(200, 205, 213); text-shadow: none; box-shadow: none; }
.embossed-divider::before, .embossed-divider::after { display: none; }
.photo-composition { display: flex; flex-direction: column; height: auto; max-width: 260px; }
.memory-frame { position: relative; inset: auto; width: 83%; max-width: 190px; flex: 0 0 auto; }
.memory-left { order: 0; transform: rotate(-7deg); }
.memory-center { order: 1; transform: none; }
.memory-right { order: 2; transform: rotate(7deg); }
.memory-right .portrait-window { aspect-ratio: 4 / 3; }
.memory-right img { object-fit: cover; object-position: 50% 65%; }
.story { padding-bottom: 42px; }
.day { padding-top: 28px; }
.chapter-number, .chapter-copy h3 { text-align: center; }
.venue-intro { text-align: center; max-width: 450px; margin: 28px auto 24px; }
.venue-intro .section-label { margin-bottom: 9px; font-size: 8px; }
.venue-intro h3 { margin: 0px 0px 12px; }
.venue-intro > p:last-child { color: rgb(92, 98, 112); margin: 0px; }
.pearl-timeline { margin-right: auto; margin-bottom: 0px; margin-left: auto; }
.day-events::before { content: ""; position: absolute; left: 50%; top: 22px; width: 1px; background: linear-gradient(transparent, rgb(213, 219, 228) 3%, rgb(213, 219, 228) 97%, transparent); }
.day-events li { align-items: flex-start; }
.day-events li::after { display: block; width: 5px; height: 5px; background: rgb(167, 179, 196); border: 2px solid white; box-sizing: content-box; }
.event-icon { width: 58px; height: 58px; margin: 0px auto 7px; }
.day-events time { margin-bottom: 6px; }
.day-events h4 { margin-bottom: 5px; }
@media (min-width: 700px) {
  .photo-composition { gap: 16px; }
  .story { padding-bottom: 50px; }
  .day-events li { min-height: 155px; }
  .event-icon { width: 66px; height: 66px; }
  .day-events h4 { font-size: 15px; }
  .day-events p { font-size: 12px; }
}
.sacred-doves { display: block; }
.sacred-medallion { padding-top: 10px; }
.memory-left, .memory-right { width: 72%; max-width: 145px; padding: 4px 4px 11px; }
.memory-left .portrait-window, .memory-right .portrait-window { aspect-ratio: 4 / 3; }
.memory-left img { object-fit: contain; }
.memory-center { width: 83%; max-width: 190px; }
.pearl-timeline { max-width: 520px; margin-top: 24px; }
.day-events { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 34px; }
.day-events li { min-height: 0px; padding: 0px 0px 12px; display: block; }
.day-events li:nth-child(2n) { padding-top: 30px; }
.day-events .event-copy { width: 100%; margin: 0px; }
.day-events li:nth-child(2n) .event-copy { margin: 0px; }
.day-events li::after { left: auto; right: -21px; top: 29px; transform: none; }
.day-events li:nth-child(2n)::after { left: -21px; right: auto; top: 59px; }
.day-events p { max-width: 190px; margin: auto; }
.day-events::before { bottom: 60px; }
.dressing { padding-bottom: 20px; }
@media (min-width: 700px) {
  .day-events { gap: 4px 46px; }
  .day-events li::after { right: -27px; }
  .day-events li:nth-child(2n)::after { left: -27px; }
  .photo-composition { gap: 10px; }
}
.memory-frame .portrait-window img { display: block; transform: none; }
.dressing-scene { width: 100%; max-width: 1000px; }
.dressing-copy { top: 32%; }
.dressing-copy p { margin: 0px 0px 14px; }
.dressing h2 { margin-bottom: 24px; }
:root { --copy-leading: 1.7; }
.invitation-copy { font: 400 var(--copy-size)/var(--copy-leading) Georgia,serif; }
.countdown-poem { font: 400 var(--copy-size)/var(--copy-leading) Georgia,serif; }
.story h2, .day h2, .dressing h2 { font-size: var(--section-title-size); font-weight: 400; line-height: 1.15; }
.venue-intro > p:last-child { font: 400 var(--copy-size)/var(--copy-leading) Georgia,serif; }
.venue-intro h3 { font: 400 clamp(17px, 2vw, 21px) / 1.4 Georgia, serif; }
.venue h3 { font: 400 clamp(14px, 1.8vw, 18px) / 1.4 Georgia, serif; }
.venue .section-label { font-size: 8px; line-height: 1.6; letter-spacing: 0.15em; }
.day-events time { font: 400 clamp(14px, 1.8vw, 17px) / 1.4 Georgia, serif; }
.day-events h4 { font: 400 clamp(13px, 1.6vw, 16px) / 1.4 Georgia, serif; }
.day-events p { font: 400 clamp(12px, 1.4vw, 14px) / 1.6 Georgia, serif; }
.chapter-copy > p:last-child { font: 400 clamp(12px, 3.2vw, 16px) / 1.7 Georgia, serif; }
.chapter-copy h3 { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; line-height: 1.4; font-family: Georgia, serif; letter-spacing: -0.025em; }
.chapter-number { font: 400 8px / 1.6 Arial, sans-serif; letter-spacing: 0.16em; }
.dressing-copy .dressing-note { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; line-height: 1.6; font-family: Georgia, serif; }
.promise h2 { font: 400 10px / 1.5 Arial, sans-serif; letter-spacing: 0.19em; }
.photo-composition { --overlap: clamp(20px,6vw,48px); gap: 0px; padding: 18px 5px 22px; }
.memory-frame, .memory-left, .memory-center, .memory-right { width: 90%; max-width: 190px; padding: 5px 5px 15px; flex: 0 0 auto; }
.memory-frame .portrait-window { aspect-ratio: 4 / 5; }
.memory-frame .portrait-window img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; aspect-ratio: auto; }
.memory-left { z-index: 1; align-self: flex-start; }
.memory-center { z-index: 3; align-self: center; margin-top: calc(-1 * var(--overlap)); }
.memory-right { z-index: 2; align-self: flex-end; margin-top: calc(-1 * var(--overlap)); }
.memory-right .portrait-window img { object-position: 50% 58%; }
.promise h2 { color: rgb(255, 255, 255); text-shadow: rgb(9, 19, 41) 0px 1px 3px, rgb(9, 19, 41) 0px 0px 7px; }
.house strong, .house span, .section-label, .chapter-copy h3, .venue h3, .venue-intro h3, .day-events h4 { color: var(--text-heading); }
.invitation-copy, .chapter-copy > p:last-child, .venue-intro > p:last-child, .day-events p, .dressing-copy { color: var(--text-body); }
.chapter-number, .invitation-copy .date { color: var(--text-accent); }
.promise .countdown-poem, .promise .countdown-intro, .promise h2, .promise .countdown, .promise .countdown-copy h3 { color: rgb(255, 255, 255); }
.sacred.is-visible .sacred-word { animation-duration: 2400ms; }
.day-programme { max-width: 680px; margin: 34px auto 0px; }
.programme-act { margin: 0px 0px 26px; }
.day .act-heading { display: flex; align-items: center; gap: 12px; text-align: left; padding: 0px 0px 12px; border-bottom: 1px solid rgba(25, 48, 96, 0.125); margin: 0px 0px 10px; }
.act-heading span { font: 400 10px / 1.5 Georgia, serif; color: var(--text-accent); }
.act-heading h3 { font: 400 clamp(20px, 3vw, 25px) / 1.3 Georgia, serif; color: var(--text-heading); margin: 0px; }
.day-programme .day-events { display: block; max-width: none; width: 100%; margin: 0px; }
.day-programme .day-events::before, .day-programme .day-events li::before, .day-programme .day-events li::after { display: none; }
.day-programme .day-events li, .day-programme .day-events li:nth-child(2n) { padding: 10px 0px; min-height: 0px; margin: 0px; }
.day-programme .event-copy, .day-programme .day-events li:nth-child(2n) .event-copy { display: grid; grid-template-columns: 58px minmax(0px, 1fr); gap: 3px 14px; text-align: left; align-items: start; width: 100%; margin: 0px; }
.day-programme .event-icon { grid-area: 1 / 1 / 4; width: 58px; height: 58px; margin: auto 0px; align-self: center; }
.day-programme .day-events time { grid-column: 2; text-align: left; font: 400 9px / 1.5 Arial, sans-serif; letter-spacing: 0.12em; color: var(--text-heading); margin: 0px; }
.day-programme .day-events h4 { grid-column: 2; font: 400 clamp(15px, 2vw, 18px) / 1.35 Georgia, serif; margin: 0px; }
.day-programme .day-events p { grid-column: 2; max-width: none; margin: 0px; font: 400 clamp(12px, 1.5vw, 14px) / 1.5 Georgia, serif; }
@media (min-width: 700px) {
  .day-programme { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
  .programme-act:last-child { grid-column: 1 / -1; }
  .programme-act:last-child .day-events { display: grid; grid-template-columns: 1fr 1fr; column-gap: 28px; }
  .day-programme .event-copy { column-gap: 10px; }
}
.journey { margin: 30px auto 0px; max-width: 940px; }
.journey-scroll { overflow: auto hidden; scroll-snap-type: x; scrollbar-width: none; overscroll-behavior-x: contain; }
.journey-scroll::-webkit-scrollbar { display: none; }
.journey-scroll:focus-visible { outline: 1px solid var(--blue); outline-offset: 3px; }
.journey-track { display: flex; position: relative; list-style: none; width: max-content; min-width: 100%; margin: 0px; padding: 0px 14px; height: 340px; }
.journey-track::before { content: ""; position: absolute; left: 14px; right: 14px; top: 50%; height: 1px; background: rgba(154, 136, 95, 0.5); }
.journey-item { position: relative; flex: 0 0 150px; width: 150px; height: 100%; display: grid; grid-template-rows: 1fr 1fr; row-gap: 32px; scroll-snap-align: start; padding: 0px 10px; }
.journey-node { position: absolute; top: 50%; left: 50%; width: 5px; height: 5px; transform: translate(-50%, -50%) rotate(45deg); background: rgb(161, 138, 92); }
.journey-icon { grid-row: 1; align-self: end; padding-bottom: 2px; display: flex; justify-content: center; }
.journey-icon .event-icon { width: 78px; height: 78px; margin: 0px; object-fit: contain; }
.journey-copy { grid-row: 2; align-self: start; text-align: center; }
.journey-item:nth-child(2n) .journey-copy { grid-row: 1; align-self: end; }
.journey-item:nth-child(2n) .journey-icon { grid-row: 2; align-self: start; padding-bottom: 0px; }
.journey-copy time { display: block; margin-bottom: 7px; }
.journey-copy h4 { font: 400 15px / 1.3 Georgia, serif; color: var(--blue); margin: 0px 0px 7px; }
.journey-copy p { font: 400 12px / 1.5 Georgia, serif; color: var(--text-body); margin: 0px; }
.journey-navigation { display: flex; justify-content: center; align-items: center; gap: 18px; margin: 12px auto 0px; max-width: 240px; }
.journey-navigation[hidden] { display: none; }
.journey-navigation button { border: 0px; background: none; color: var(--blue); font: 400 22px / 1 Georgia, serif; width: 44px; height: 44px; cursor: pointer; }
.journey-navigation button:disabled { opacity: 0.25; cursor: default; }
.journey-navigation button:focus-visible { outline: 1px solid var(--blue); outline-offset: 2px; }
.journey-progress { display: block; position: relative; flex: 1 1 0%; height: 1px; overflow: hidden; }
.journey-progress > span { position: absolute; top: 0px; bottom: 0px; width: 20%; left: 0px; }
@media (min-width: 700px) {
  .journey-item { flex-basis: 160px; width: 160px; }
  .journey-track { height: 330px; }
}
.atelier-souvenirs { background: rgb(255, 255, 255); }
.atelier-souvenirs header { padding: 0px 24px; max-width: 700px; margin: auto; }
.souvenirs-intro { color: var(--text-body); max-width: 600px; }
.atelier-scene { position: relative; isolation: isolate; }
.atelier-art { display: block; width: 100%; height: auto; pointer-events: none; }
.atelier-card { position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--blue); text-decoration: none; transition: color 0.2s; }
.atelier-card img { object-fit: contain; flex-shrink: 0; }
.atelier-card span { font: 400 clamp(10px, 2.6vw, 21px) / 1.25 Georgia, serif; max-width: 100%; }
.atelier-card:hover { color: var(--gold); }
.atelier-card:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.souvenir-privacy { max-width: 600px; font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; line-height: 1.7; font-family: Georgia, serif; color: var(--text-body); }
.souvenir-privacy a { color: var(--blue); text-underline-offset: 3px; }
.souvenir-dialog { width: calc(100% - 36px); max-width: 450px; border: 1px solid rgba(25, 48, 96, 0.125); background: white; color: var(--blue); padding: 36px 24px 28px; text-align: center; max-height: 85svh; overflow: auto; }
.souvenir-dialog::backdrop { background: rgba(10, 25, 57, 0.42); }
.souvenir-close { position: absolute; top: 4px; right: 4px; width: 44px; height: 44px; border: 0px; background: none; color: var(--blue); font: 28px Georgia; cursor: pointer; }
.souvenir-dialog-icon { width: 64px; height: 64px; object-fit: contain; margin: auto auto 14px; }
.souvenir-dialog h2 { font: 400 35px / 1.2 Chopin, cursive; margin-bottom: 20px; }
.souvenir-dialog-description { font: 400 15px / 1.7 Georgia, serif; color: var(--text-body); }
.souvenir-destination { display: inline-block; padding: 14px 18px; background: var(--blue); color: white; text-decoration: none; font: 400 13px / 1.5 Georgia, serif; margin-top: 10px; }
.souvenir-destination-note { font: 400 11px / 1.5 Georgia, serif; color: var(--text-body); margin-top: 15px; }
.atelier-card { top: 34%; height: 57%; width: 23.5%; padding: 4px 1px; }
.atelier-card-0 { left: 6.5%; transform: rotate(4deg); }
.atelier-card-1 { left: 38.25%; transform: none; }
.atelier-card-2 { left: 70%; transform: rotate(-4deg); }
.atelier-gifts { display: grid; grid-template-columns: minmax(0px, 1.1fr) minmax(0px, 0.9fr); align-items: center; gap: 10px; max-width: 900px; margin: 0px auto; padding: 22px 20px 55px; background: white; }
.gifts-copy { text-align: left; position: relative; z-index: 1; }
.gifts-copy .section-label { font-size: 8px; letter-spacing: 0.14em; margin-bottom: 16px; }
.gifts-copy h2 { font: 400 clamp(28px, 6.6vw, 56px) / 1.12 Chopin, cursive; margin: 0px 0px 20px; color: var(--blue); }
.gifts-description { font: 400 clamp(12px, 2.8vw, 17px) / 1.7 Georgia, serif; color: var(--text-body); margin: 0px 0px 20px; }
.gifts-perfume { display: block; width: 115%; max-width: none; height: auto; transform: translateX(-5%); pointer-events: none; }
.gifts-action { display: inline-block; color: var(--blue); font: 400 clamp(10px, 2.6vw, 13px) / 1.6 Georgia, serif; text-underline-offset: 5px; padding: 8px 0px; }
.gifts-action span { padding-left: 5px; }
@media (min-width: 700px) {
  .atelier-gifts { gap: 30px; padding-top: 35px; }
  .gifts-copy .section-label { font-size: 9px; }
  .gifts-perfume { width: 100%; transform: none; }
}
@media (max-width: 350px) {
  .atelier-card { gap: 5px; }
  .atelier-card .atelier-card-description { font-size: 9px; line-height: 1.35; }
  .atelier-card .atelier-card-title { font-size: 10px; }
}
.atelier-salon { padding: 15px 0px 35px; text-align: center; }
.atelier-salon header { max-width: 680px; margin: auto; padding: 0px 24px; }
.atelier-salon .section-label { margin-bottom: 18px; }
.atelier-salon h2 { font-size: var(--section-title-size); line-height: 1.15; margin-bottom: 22px; }
.atelier-salon header > p:last-child { font: 400 var(--copy-size)/1.7 Georgia,serif; color: var(--text-body); margin: 0px auto 18px; max-width: 520px; }
.salon-entry { display: block; text-decoration: none; color: var(--blue); }
.salon-entry > img { display: block; height: auto; margin: auto; mask-image: linear-gradient(transparent, rgb(0, 0, 0) 3%, rgb(0, 0, 0) 93%, transparent); }
.salon-entry > span { display: inline-block; border-bottom: 1px solid rgba(25, 48, 96, 0.314); font: 400 13px / 1.5 Georgia, serif; padding: 12px 4px 7px; margin-top: 8px; }
.salon-entry > span > span { margin-left: 12px; }
.response-stationery { position: relative; isolation: isolate; text-align: center; }
.response-paper { inset: 0px; pointer-events: none; }
.response-seal { position: absolute; width: 17%; max-width: 110px; height: auto; top: 10%; right: 12%; transform: rotate(8deg); filter: drop-shadow(rgba(9, 19, 41, 0.15) 0px 3px 3px); pointer-events: none; }
.response-copy .section-label { font-size: 8px; }
.response-copy h2 { line-height: 1.1; margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.response-copy > p:not(.section-label) { font: 400 clamp(12px, 3.2vw, 16px) / 1.7 Georgia, serif; color: var(--text-body); margin-top: 0px; margin-right: 0px; margin-left: 0px; }
.response-copy strong { font-weight: 400; white-space: nowrap; }
.response-action { display: inline-block; text-decoration: none; padding: 13px 14px; }
.response-action span { margin-left: 6px; }
.atelier-finale { padding: 15px 0px 35px; background: rgb(255, 255, 255); }
.finale-editorial { display: grid; align-items: center; max-width: 940px; margin: auto; }
.finale-copy { padding: 0px 8px 0px 22px; position: relative; z-index: 1; }
.finale-copy .section-label { font-size: 8px; letter-spacing: 0.15em; margin-bottom: 18px; }
.finale-copy h2 { font-size: clamp(30px, 6.8vw, 56px); line-height: 1.12; margin: 0px 0px 20px; }
.finale-copy > p:not(.section-label):not(.finale-names) { font: 400 clamp(12px, 2.9vw, 16px) / 1.7 Georgia, serif; color: var(--text-body); margin: 0px 0px 14px; }
.finale-copy .finale-names { font: 400 clamp(29px, 6.6vw, 52px) / 1.2 Chopin, cursive; margin: 22px 0px 0px; color: var(--blue); }
.finale-portrait { height: auto; display: block; mask-image: linear-gradient(transparent, rgb(0, 0, 0) 3%, rgb(0, 0, 0) 91%, transparent); }
.finale-memory { padding: 0px 26px; max-width: 650px; margin: 25px auto 22px; text-align: center; font: 400 var(--copy-size)/1.7 Georgia,serif; color: var(--text-body); }
.finale-date { text-align: center; font: 400 9px / 1.6 Arial, sans-serif; letter-spacing: 0.19em; text-transform: uppercase; color: var(--blue); margin: 0px 0px 18px; }
.finale-back { display: block; width: max-content; margin: auto; color: var(--blue); font: 400 11px / 1.6 Georgia, serif; text-underline-offset: 4px; padding: 12px; }
@media (min-width: 700px) {
  .finale-copy { padding-left: 35px; padding-right: 25px; }
  .atelier-finale { padding-top: 30px; }
  .response-copy .section-label { font-size: 9px; }
}
.atelier-souvenirs { display: grid; grid-template-columns: minmax(0px, 1.05fr) minmax(0px, 1fr); gap: 16px; align-items: center; max-width: 940px; margin: 0px auto; padding: 30px 16px 40px; text-align: left; }
.atelier-souvenirs > header { grid-area: 1 / 2; padding: 0px; min-width: 0px; margin: 0px; max-width: none; }
.atelier-souvenirs .section-label { font-size: 7px; letter-spacing: 0.12em; margin-bottom: 14px; }
.atelier-souvenirs h2 { font-size: clamp(28px, 5.8vw, 45px); line-height: 1.15; margin-bottom: 18px; }
.souvenirs-intro { font: 400 clamp(12px, 2.8vw, 16px) / 1.7 Georgia, serif; margin: 0px; }
.souvenir-gallery { grid-area: 1 / 1; min-width: 0px; }
.souvenir-cards-viewport { scrollbar-width: thin; scrollbar-color: rgba(25, 48, 96, 0.333) transparent; overscroll-behavior-x: contain; }
.souvenir-cards-viewport:focus-visible { outline: 1px solid var(--blue); outline-offset: 3px; }
.atelier-card { gap: 5px; text-align: center; }
.atelier-card img { width: 26px; height: 26px; }
.souvenir-privacy { grid-area: 2 / 1 / auto / -1; font-size: 10px; padding: 0px; text-align: center; margin: 4px auto 0px; }
@media (min-width: 700px) {
  .atelier-souvenirs { grid-template-columns: minmax(0px, 1.15fr) minmax(0px, 1fr); gap: 35px; padding: 35px 28px 45px; }
  .atelier-scene { width: 100%; min-width: 0px; }
  .atelier-souvenirs .section-label { font-size: 9px; }
  .atelier-card img { width: 32px; height: 32px; }
  .atelier-card .atelier-card-title { font-size: 12px; }
  .atelier-card .atelier-card-description { font-size: 10px; }
  .souvenir-cards-viewport { padding-bottom: 0px; }
}
.souvenir-swipe-hint { grid-area: 2 / 1; margin: 0px; text-align: center; font: 400 9px / 1.5 Arial, sans-serif; color: var(--text-body); }
.atelier-souvenirs .souvenir-privacy { grid-row: 3; }
@media (min-width: 700px) {
  .souvenir-swipe-hint { display: none; }
  .atelier-souvenirs .souvenir-privacy { grid-row: 2; }
}
.finale-signature { text-align: center; padding-right: 20px; padding-bottom: 26px; padding-left: 20px; margin: auto; }
.finale-signature h2 { font: 400 clamp(18px, 3.8vw, 26px) / 1.5 Georgia, serif; color: var(--text-heading); margin: 0px 0px 24px; }
.finale-signature h2 em { display: block; font: 400 clamp(49px, 10vw, 76px) / 1.3 Chopin, cursive; margin-bottom: 6px; }
.finale-signature h2 span { display: block; }
.finale-signature .finale-names { font-style: normal; font-variant: normal; font-size-adjust: none; font-language-override: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-weight: 400; font-stretch: normal; line-height: 1.5; margin: 0px; }
.signature-writing { display: inline-block; padding: 0px 0.16em; }
.signature-writing.is-pending { clip-path: inset(0px 100% 0px 0px); }
.signature-writing.is-writing { animation: 2400ms linear 0s 1 normal both running write-word; }
@media (prefers-reduced-motion: reduce) {
  .signature-writing.is-pending { clip-path: none; }
  .signature-writing.is-writing { animation: auto ease 0s 1 normal none running none; }
}
.finale-editorial { grid-template-columns: minmax(0px, 1.15fr) minmax(0px, 0.85fr); }
.finale-portrait { width: 85%; place-self: center; }
.finale-copy #finale-title { margin: 18px 0px 0px; }
.finale-copy #finale-title em { display: block; margin-bottom: 5px; }
.finale-copy #finale-title span { display: block; }
.finale-signature { padding-top: 24px; }
.portrait { clip-path: polygon(0px 0px, 100% 0px, 100% calc(100% - min(16vw, 160px)), 75% calc(100% - min(37vw, 370px)), 50% calc(100% - min(40vw, 400px)), 25% calc(100% - min(49vw, 490px)), 0px calc(100% - min(70vw, 700px))); }
:root { --font-copy: Georgia,'Times New Roman',serif; --font-script: Chopin,cursive; --font-label: Arial,sans-serif; --copy-size: clamp(14px,1.7vw,17px); --copy-compact: clamp(13px,1.7vw,17px); --section-title-size: clamp(38px,8.5vw,58px); --title-compact: clamp(30px,6.8vw,48px); --label-size: clamp(9px,1.1vw,11px); --note-size: clamp(11px,1.3vw,13px); }
body { font-family: var(--font-copy); color: var(--text-body); }
.section-label, .house span, .chapter-number, .finale-date, .atelier-souvenirs .section-label, .gifts-copy .section-label, .finale-copy .section-label, .response-copy .section-label, .venue .section-label { font: 400 var(--label-size)/1.6 var(--font-label); letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-heading); }
.house strong { color: var(--text-heading); }
.story h2, .day h2, .dressing h2, .atelier-salon h2 { font: 400 var(--section-title-size)/1.18 var(--font-script); color: var(--text-heading); letter-spacing: 0px; }
.atelier-souvenirs h2, .gifts-copy h2, .response-copy h2 { font: 400 var(--title-compact)/1.2 var(--font-script); color: var(--text-heading); letter-spacing: 0px; }
.invitation-copy, .venue-intro > p:last-child, .atelier-salon header > p:last-child, .countdown-poem { font: 400 var(--copy-size)/1.7 var(--font-copy); color: var(--text-body); }
.chapter-copy > p:last-child, .souvenirs-intro, .gifts-description, .finale-copy > p:not(.section-label):not(.finale-names), .response-copy > p:not(.section-label) { font: 400 var(--copy-compact)/1.7 var(--font-copy); color: var(--text-body); }
.chapter-copy h3, .venue h3, .journey-copy h4 { font: 400 clamp(14px,1.8vw,18px)/1.4 var(--font-copy); color: var(--text-heading); }
.chapter-copy h3 { font-size: clamp(12px, 3.2vw, 18px); white-space: nowrap; }
.journey-copy time { font: 400 var(--label-size)/1.6 var(--font-label); color: var(--text-heading); letter-spacing: 0.16em; }
.journey-copy p, .souvenir-privacy, .dressing-copy .dressing-note { font: 400 var(--note-size)/1.6 var(--font-copy); color: var(--text-body); }
.dressing-copy { font: 400 clamp(11px,2.7vw,17px)/1.7 var(--font-copy); color: var(--text-body); }
.dressing-copy .dressing-note { font-size: clamp(10px, 2.3vw, 13px); }
.gifts-action, .salon-entry > span, .venue a, .finale-back { font: 400 clamp(12px,1.5vw,15px)/1.6 var(--font-copy); color: var(--text-heading); text-underline-offset: 5px; }
.response-action { font: 400 clamp(12px,1.5vw,15px)/1.5 var(--font-copy); color: rgb(255, 255, 255); background: var(--text-heading); min-height: 44px; }
.response-copy strong { color: var(--text-heading); }
.atelier-card .atelier-card-title { font-style: ; font-variant-ligatures: ; font-variant-caps: ; font-variant-numeric: ; font-variant-east-asian: ; font-variant-alternates: ; font-variant-position: ; font-variant-emoji: ; font-weight: ; font-stretch: ; line-height: ; font-family: ; font-optical-sizing: ; font-size-adjust: ; font-kerning: ; font-feature-settings: ; font-variation-settings: ; font-language-override: ; color: var(--text-heading); }
.atelier-card .atelier-card-description { font-style: ; font-variant-ligatures: ; font-variant-caps: ; font-variant-numeric: ; font-variant-east-asian: ; font-variant-alternates: ; font-variant-position: ; font-variant-emoji: ; font-weight: ; font-stretch: ; line-height: ; font-family: ; font-optical-sizing: ; font-size-adjust: ; font-kerning: ; font-feature-settings: ; font-variation-settings: ; font-language-override: ; color: var(--text-body); }
.promise h2, .countdown-intro, .countdown small { font: 400 var(--label-size)/1.5 var(--font-label); letter-spacing: 0.16em; color: rgb(255, 255, 255); }
.promise .countdown-poem, .promise .countdown-copy h3 { color: rgb(255, 255, 255); }
.countdown-copy h3 { font: 400 var(--title-compact)/1.2 var(--font-script); }
.tagline { font: 400 var(--copy-size)/1.5 var(--font-copy); color: rgb(255, 255, 255); }
.sacred blockquote { font-family: var(--font-copy); font-style: normal; color: var(--text-heading); }
.sacred cite { font: 400 var(--label-size)/1.6 var(--font-label); color: var(--text-heading); letter-spacing: 0.16em; }
.invitation-copy .date { color: var(--text-accent); }
.finale-copy #finale-title { font-style: ; font-variant-ligatures: ; font-variant-caps: ; font-variant-numeric: ; font-variant-east-asian: ; font-variant-alternates: ; font-variant-position: ; font-variant-emoji: ; font-weight: ; font-stretch: ; font-family: ; font-optical-sizing: ; font-size-adjust: ; font-kerning: ; font-feature-settings: ; font-variation-settings: ; font-language-override: ; }
.finale-copy #finale-title em { font: 400 var(--section-title-size)/1.3 var(--font-script); }
.finale-copy #finale-title span { white-space: normal; }
.finale-signature .finale-names { font-family: var(--font-script); color: var(--text-heading); }
.salon-entry > img { width: 74%; max-width: 680px; }
.response-copy h2 { margin-bottom: 16px; }
.response-copy .section-label { margin-bottom: 12px; }
@media (min-width: 700px) {
  .response-stationery { padding-left: 90px; padding-right: 90px; }
}
.promise::before { content: ""; position: absolute; inset: -2px 0px auto; height: min(33.3333vw, 333.333px); background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201536%201024%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M0%20580%20C130%20650%20220%20650%20320%20630%20C450%20670%20600%20620%20768%20530%20C936%20620%201086%20670%201216%20630%20C1316%20650%201406%20650%201536%20580%20L1536%201024%20H0Z%22%2F%3E%3C%2Fsvg%3E") left bottom / 50% auto repeat-x; pointer-events: none; transform: rotate(180deg); z-index: 1; }
.atelier-response { max-width: 940px; margin: auto; padding: 24px 14px 45px; }
.response-label { text-align: center; margin: 0px 0px 20px; }
.response-layout { display: grid; grid-template-columns: minmax(0px, 1.15fr) minmax(0px, 1fr); align-items: center; gap: 14px; }
.response-stationery { width: 100%; max-width: none; margin: 0px; padding: 0px; aspect-ratio: 1 / 1; }
.response-paper { position: relative; display: block; width: 100%; height: auto; object-fit: contain; z-index: 0; }
.response-card-copy { position: absolute; left: 15%; width: 70%; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; }
.response-card-copy p { font-style: ; font-variant-ligatures: ; font-variant-caps: ; font-variant-numeric: ; font-variant-east-asian: ; font-variant-alternates: ; font-variant-position: ; font-variant-emoji: ; font-weight: ; font-stretch: ; font-family: ; font-optical-sizing: ; font-size-adjust: ; font-kerning: ; font-feature-settings: ; font-variation-settings: ; font-language-override: ; color: var(--text-heading); margin: 0px; text-align: center; }
.response-card-copy .response-action { position: relative; }
.response-card-copy .response-action::after { content: ""; position: absolute; left: 0px; right: 0px; top: 50%; height: max(100%, 44px); transform: translateY(-50%); }
.response-copy { text-align: left; min-width: 0px; }
.response-copy h2 { font-size: clamp(26px, 5.8vw, 45px); }
.response-copy > p:not(.section-label) { margin-bottom: 0px; }
.finale-copy #finale-title { font-size: var(--copy-compact); line-height: 1.7; color: var(--text-body); }
.finale-copy #finale-title em { text-align: center; color: var(--text-heading); }
.finale-copy #finale-title span { font: 400 var(--copy-compact)/1.7 var(--font-copy); }
.invitation-copy p:not(.date), .countdown-poem, .chapter-copy > p:last-child, .venue-intro > p, .journey-copy p, .dressing-copy p, .souvenirs-intro, .gifts-description, .atelier-salon header > p:not(.section-label), .response-copy > p, .finale-opening { text-align: justify; text-align-last: left; hyphens: auto; overflow-wrap: break-word; }
.promise-shade { background: linear-gradient(transparent 58%, rgba(5, 11, 24, 0.42) 72%, rgb(8, 14, 26) 100%); }
.promise-lace-top { top: -2px; bottom: auto; transform: rotate(180deg); }
.promise h2 { top: max(calc(var(--photo-height) * .075),min(20vw,200px)); z-index: 2; }
@media (min-width: 700px) {
  .response-layout { gap: 35px; }
  .response-card-copy { gap: 12px; }
  .response-card-copy .response-action { min-height: 44px; padding: 12px 18px; }
}
html body main p, html body main h1, html body main h2, html body main h3, html body main h4, html body main a, html body main span { hyphens: none; word-break: normal; overflow-wrap: normal; }
.finale-copy > .section-label, .finale-copy #finale-title { text-align: center; }
.finale-copy #finale-title span { text-align: center; }
.response-card-copy p { font-size: clamp(9px, 2.4vw, 17px); line-height: 1.35; max-width: 100%; }
.response-card-copy .response-action { background: transparent; color: var(--text-heading); border: 1px solid rgba(25, 48, 96, 0.5); border-radius: 2px; box-shadow: rgba(255, 255, 255, 0.565) 0px 0px 0px 2px inset; font-style: ; font-variant-ligatures: ; font-variant-caps: ; font-variant-numeric: ; font-variant-east-asian: ; font-variant-alternates: ; font-variant-position: ; font-variant-emoji: ; font-weight: ; font-stretch: ; line-height: ; font-family: ; font-optical-sizing: ; font-size-adjust: ; font-kerning: ; font-feature-settings: ; font-variation-settings: ; font-language-override: ; text-align: center; text-decoration: none; transition: background 0.2s, color 0.2s; }
.response-card-copy .response-action:hover { background: var(--text-heading); color: rgb(255, 255, 255); }
.response-card-copy .response-action:focus-visible { outline: 2px solid var(--text-heading); outline-offset: 3px; }
@media (min-width: 700px) {
  .response-card-copy { gap: 12px; }
  .response-card-copy .response-action { padding: 10px 15px; }
}
main * { hyphens: none !important; word-break: normal !important; overflow-wrap: normal !important; }
.response-card-copy .response-action { white-space: nowrap; }
.invitation-menu { position: fixed; top: max(14px,env(safe-area-inset-top)); right: max(16px, -484px + 50vw); display: flex; align-items: center; gap: 9px; min-height: 44px; padding: 10px 17px; border: 1px solid rgba(25, 48, 96, 0.25); border-radius: 30px; background: rgba(255, 255, 255, 0.376); color: var(--text-heading); font: 400 12px/1.4 var(--font-label); letter-spacing: 0.08em; cursor: pointer; transition: background 0.25s, box-shadow 0.25s; }
.invitation-menu[hidden] { display: none; }
.invitation-menu.is-scrolled { background: rgb(255, 255, 255); box-shadow: rgba(25, 48, 96, 0.07) 0px 3px 18px; }
.invitation-navigation { width: min(440px, 100% - 28px); max-height: calc(100dvh - 32px); padding: 48px 30px 30px; border: 1px solid rgba(25, 48, 96, 0.125); color: var(--text-heading); background: rgb(255, 255, 255); overscroll-behavior: contain; }
.invitation-navigation::backdrop { background: rgba(10, 25, 57, 0.42); backdrop-filter: blur(3px); }
.invitation-navigation h2 { font: 400 42px/1.3 var(--font-script); margin: 8px 0px 22px; }
.invitation-navigation nav { display: grid; gap: 2px; }
.invitation-navigation nav a { padding: 10px 0px; min-height: 44px; font: 400 15px/1.5 var(--font-copy); color: var(--text-heading); text-decoration: none; border-bottom: 1px solid rgba(25, 48, 96, 0.07); }
.navigation-close { position: absolute; top: 8px; right: 14px; border: 0px; background: none; min-height: 44px; padding: 8px; font: 12px var(--font-label); color: var(--text-heading); cursor: pointer; }
.invitation-navigation a:focus-visible, .navigation-close:focus-visible, .invitation-menu:focus-visible { outline: 2px solid var(--text-heading); outline-offset: 3px; }
.menu-open { overflow: hidden; }
main section, main footer { scroll-margin-top: 76px; }
.souvenir-cards-viewport { overflow: visible; padding: 0px; }
.atelier-scene { width: 100%; min-width: 0px; max-width: 460px; margin: auto; }
.atelier-card .atelier-card-title { font-size: clamp(11px, 1.4vw, 14px); }
.atelier-card .atelier-card-description { font-size: clamp(10px, 1.2vw, 12px); }
@media (max-width: 699px) {
  .atelier-souvenirs { display: flex; flex-direction: column; padding: 30px 16px 40px; gap: 18px; }
  .atelier-souvenirs > header { width: 100%; max-width: 440px; text-align: center; }
  .atelier-souvenirs h2 { font-size: 38px; }
  .souvenirs-intro { text-align: left; text-align-last: left; font-size: 14px; }
  .souvenir-gallery { width: 100%; max-width: 460px; }
  .atelier-card { gap: 4px; }
  .atelier-card img { width: 26px; height: 26px; }
  .atelier-card .atelier-card-title { font-size: 11px; line-height: 1.25; }
  .atelier-card .atelier-card-description { font-size: 10px; line-height: 1.35; }
  .response-layout { display: flex; flex-direction: column; gap: 4px; }
  .response-copy { order: 0; width: 100%; max-width: 400px; text-align: center; }
  .response-copy h2 { font-size: 36px; }
  .response-copy > p:not(.section-label) { font-size: 14px; text-align: left; text-align-last: left; }
  .response-stationery { order: 1; max-width: 390px; margin: auto; }
  .response-card-copy p { font-size: 14px; }
  .response-card-copy .response-action { font-size: 14px; min-height: 44px; padding: 10px 18px; }
  .invitation-copy p:not(.date), .countdown-poem, .chapter-copy > p:last-child, .venue-intro > p, .dressing-copy p, .gifts-description, .atelier-salon header > p:not(.section-label), .finale-opening { text-align: left; text-align-last: left; }
}
.overline { white-space: nowrap; font-size: clamp(6px, 1.7vw, 10px); letter-spacing: 0.13em; }
.discover { border: 0px; border-radius: 0px; width: 40px; height: 40px; margin-top: 15px; background: none; }
.discover svg { width: 16px; height: 22px; animation: 2.2s ease-in-out 0s infinite normal none running scroll-cue; }
@keyframes scroll-cue { 
  0%, 100% { transform: translateY(-3px); opacity: 0.4; }
  50% { transform: translateY(4px); opacity: 0.9; }
}
.invitation-menu, .invitation-menu.is-scrolled { border: 0px; border-radius: 0px; background: transparent; box-shadow: none; padding: 10px; min-width: 44px; color: var(--couture-blue); }
.invitation-menu svg { width: 23px; height: 23px; filter: drop-shadow(rgb(255, 255, 255) 0px 1px 2px); }
.promise .countdown-poem { text-align: center; text-align-last: center; }
.couture-button, .response-card-copy .response-action, .finale-back.couture-button { position: relative; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; isolation: isolate; border: 1px solid rgb(40, 71, 127); border-radius: 999px; background: linear-gradient(165deg, rgb(54, 89, 142), rgb(25, 48, 96) 60%, rgb(17, 35, 72)); color: rgb(255, 255, 255); box-shadow: rgba(255, 255, 255, 0.44) 0px 1px 1px inset, rgba(9, 25, 54, 0.314) 0px -2px 3px inset, rgba(25, 48, 96, 0.133) 0px 3px 8px; font: 400 14px/1.4 var(--font-copy); padding: 10px 22px; min-height: 42px; text-decoration: none; cursor: pointer; }
.couture-button::before { content: ""; position: absolute; z-index: -1; inset: -60% auto -60% -80%; width: 45%; transform: skewX(-24deg); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.19), transparent); animation: 4s linear 0s infinite normal none running button-shimmer; pointer-events: none; }
@keyframes button-shimmer { 
  0% { left: -80%; }
  100% { left: 160%; }
}
.response-card-copy { gap: 12px; top: 30%; height: 32%; }
.response-card-copy .response-action { font-size: 12px; padding: 7px 18px; min-height: 34px; }
.finale-back.couture-button { display: flex; width: max-content; margin: 12px auto 0px; }
.couture-button:disabled { opacity: 0.55; cursor: wait; }
.couture-button:focus-visible { outline: rgb(25, 48, 96) solid 2px; outline-offset: 4px; }
.atelier-salon, .atelier-response { position: relative; }
.pearl-accent { position: absolute; width: clamp(72px, 16vw, 130px); height: auto; pointer-events: none; opacity: 0.85; }
.pearl-salon { right: 4%; top: 5px; transform: rotate(30deg); }
.pearl-response { left: 1%; bottom: 14px; transform: rotate(-25deg); }
.guest-dialog { border: 0px; background: white; padding: 12px; width: min(620px, 100% - 20px); max-height: calc(100dvh - 24px); color: var(--text-body); overscroll-behavior: contain; }
.guest-dialog::backdrop { background: rgba(11, 25, 57, 0.41); backdrop-filter: blur(3px); }
.embossed-sheet { position: relative; padding: 54px 34px 40px; isolation: isolate; }
.embossed-sheet::before { content: ""; position: absolute; inset: 0px; z-index: -1; pointer-events: none; }
.guest-dialog h2 { font: 400 40px/1.25 var(--font-script); color: var(--text-heading); text-align: center; margin: 12px 0px 22px; }
.guest-dialog p { font: 400 14px/1.7 var(--font-copy); text-align: left; }
.guest-dialog .section-label { text-align: center; font: 10px var(--font-label); }
.guest-close { position: absolute; right: 18px; top: 15px; min-height: 44px; border: 0px; background: none; font: 12px var(--font-label); color: var(--text-heading); cursor: pointer; }
.guest-form, .guest-dialog label { display: grid; gap: 8px; }
.guest-form { gap: 18px; }
.guest-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.guest-dialog label, .guest-dialog legend { font: 400 13px/1.5 var(--font-copy); color: var(--text-heading); }
.guest-dialog input:not([type="radio"]), .guest-dialog select, .guest-dialog textarea { width: 100%; min-width: 0px; font: 16px/1.4 var(--font-copy); padding: 10px; border: 1px solid rgba(25, 48, 96, 0.208); background: rgba(255, 255, 255, 0.753); color: var(--text-body); border-radius: 3px; }
.guest-dialog fieldset { border: 0px; margin: 0px; padding: 0px; min-width: 0px; }
.guest-dialog legend { margin-bottom: 8px; }
.guest-dialog .attendance { display: flex; flex-wrap: wrap; gap: 12px; }
.attendance label { display: flex; align-items: center; gap: 5px; min-height: 44px; }
.attendance input { accent-color: rgb(25, 48, 96); }
.attendance-details { display: grid; gap: 16px; }
.attendance-details[hidden], [hidden].couture-button, .guest-dialog audio[hidden] { display: none; }
.guest-dialog .form-privacy { font-size: 11px; }
.guest-dialog a { color: var(--couture-blue); }
.guest-status { min-height: 24px; }
.guest-status.is-error { color: rgb(139, 35, 51); }
.guest-dialog audio { width: 100%; margin: 14px 0px; }
.guest-dialog .record, .guest-dialog .send-voice { margin-top: 18px; }
.file-label { margin-top: 22px; }
@media (max-width: 420px) {
  .embossed-sheet { padding: 52px 20px 28px; }
  .guest-row { grid-template-columns: 1fr; }
  .guest-dialog h2 { font-size: 35px; }
}
@media (prefers-reduced-motion: reduce) {
  .discover svg, .couture-button::before { animation: auto ease 0s 1 normal none running none; }
  .couture-button::before { display: none; }
}
.embossed-sheet::before { background: none; border-width: 24px; border-style: solid; border-color: transparent; border-image: url("assets/cadre-embosse-questionnaire-v1.png") 90 / 1 / 0 stretch; }
#rsvp-dialog { padding: 0px; border-radius: 5px; background: rgb(254, 254, 253); }
#rsvp-dialog .embossed-sheet { padding-top: 40px; padding-right: 34px; padding-left: 34px; }
#rsvp-dialog .embossed-sheet::before { border: 0px; inset: 0px; z-index: -1; }
#rsvp-dialog .embossed-sheet::after { content: ""; position: absolute; bottom: 0px; left: 0px; right: 0px; transform: rotate(180deg); z-index: -1; pointer-events: none; }
#rsvp-dialog .rsvp-monogram { display: block; height: auto; margin: 0px auto 12px; filter: drop-shadow(rgba(83, 103, 131, 0.19) 0px 1px 1px); }
#rsvp-dialog .guest-close { top: 3px; right: 10px; background: rgba(255, 255, 255, 0.85); border-radius: 20px; min-height: 34px; padding: 4px 10px; }
#rsvp-dialog .section-label { margin: 0px 0px 8px; }
#rsvp-dialog h2 { margin: 4px 0px 14px; }
#rsvp-dialog .guest-row { grid-template-columns: minmax(0px, 1fr) minmax(0px, 1fr); gap: 12px; }
#rsvp-dialog .guest-row label { min-width: 0px; }
#rsvp-dialog .menu-note { font-size: 12px; line-height: 1.6; margin: 0px; color: rgb(97, 107, 124); }
#rsvp-dialog .meal-options { display: grid; gap: 8px; }
#rsvp-dialog .meal-options legend { font-size: 17px; margin-bottom: 10px; color: var(--couture-blue); }
#rsvp-dialog .meal-options label { display: flex; align-items: center; gap: 10px; border: 1px solid rgba(25, 48, 96, 0.125); border-radius: 7px; padding: 10px 12px; background: rgba(255, 255, 255, 0.66); min-height: 58px; cursor: pointer; }
#rsvp-dialog .meal-options label:has(input:checked) { border-color: rgb(54, 89, 142); background: rgb(237, 242, 250); box-shadow: rgba(54, 89, 142, 0.094) 0px 0px 0px 1px inset; }
#rsvp-dialog .meal-options input { accent-color: rgb(25, 48, 96); flex: 0 0 auto; }
#rsvp-dialog .meal-options span { font-size: 14px; line-height: 1.45; }
#rsvp-dialog .meal-options small { display: block; font: 9px/1.7 var(--font-label); letter-spacing: 1px; text-transform: uppercase; color: var(--couture-blue); }
@media (max-width: 420px) {
  #rsvp-dialog .embossed-sheet { padding: 36px 20px 58px; }
  #rsvp-dialog .rsvp-monogram { width: 51px; margin-bottom: 10px; }
  #rsvp-dialog .guest-row { gap: 10px; }
  #rsvp-dialog .guest-row input { padding: 9px 7px; }
  #rsvp-dialog h2 { font-size: 34px; }
}
#rsvp-dialog .embossed-sheet { background: rgb(255, 255, 255); }
#rsvp-dialog .embossed-sheet::before { background: url("assets/perles-angles-rsvp-v1.png") left top / 180px 180px no-repeat; opacity: 0.75; }
#rsvp-dialog .embossed-sheet::after { height: 180px; background: url("assets/perles-angles-rsvp-v1.png") left top / 180px 180px no-repeat; opacity: 0.75; }
#rsvp-dialog .attendance { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#rsvp-dialog .attendance label { border: 1px solid rgba(25, 48, 96, 0.19); border-radius: 8px; padding: 10px; min-height: 50px; background: white; cursor: pointer; }
#rsvp-dialog .attendance label:has(input:checked) { border-color: rgb(25, 48, 96); background: rgb(237, 242, 250); }
#rsvp-dialog .attendance-guidance { font-size: 13px; line-height: 1.55; margin: 0px; color: rgb(86, 98, 122); }
#rsvp-receipt { width: min(440px, 100% - 30px); border-radius: 8px; }
#rsvp-receipt .embossed-sheet::before { border: 0px; background: url("assets/perles-angles-rsvp-v1.png") left top / 140px 140px no-repeat; opacity: 0.75; }
@media (max-width: 420px) {
  #rsvp-dialog .embossed-sheet::before { background-size: 145px 145px; }
  #rsvp-dialog .embossed-sheet::after { height: 145px; background-size: 145px 145px; }
}
#rsvp-dialog .embossed-sheet::before, #rsvp-receipt .embossed-sheet::before { background-image: url("assets/perles-angles-rsvp-v1.png"), url("assets/perles-angles-rsvp-v1.png"); background-position: left top, 0px 85px; background-size: 240px 240px, 105px 105px; background-repeat: no-repeat; opacity: 0.9; border: 0px; }
#rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::after { content: ""; position: absolute; left: 0px; right: 0px; bottom: 0px; background-image: url("assets/perles-angles-rsvp-v1.png"), url("assets/perles-angles-rsvp-v1.png"); background-position: left top, 0px 85px; background-size: 240px 240px, 105px 105px; background-repeat: no-repeat; transform: rotate(180deg); opacity: 0.9; pointer-events: none; z-index: -1; }
#rsvp-dialog .embossed-sheet { padding-bottom: 95px; }
#rsvp-dialog .rsvp-deadline { text-align: center; margin: 14px 0px 25px; font-size: 14px; line-height: 1.65; }
#rsvp-dialog .attendance label { position: relative; }
#rsvp-dialog .attendance label:has(input[value="non"]:checked) { background: white; border-color: rgba(25, 48, 96, 0.314); box-shadow: none; color: var(--couture-blue); }
#rsvp-dialog .attendance label:has(input[value="oui"]:checked) { background-attachment: initial; background-origin: initial; background-clip: initial; color: white; border-color: rgb(45, 75, 128); box-shadow: rgba(255, 255, 255, 0.565) 0px 1px 2px inset, rgba(9, 25, 54, 0.44) 0px -2px 3px inset, rgba(25, 48, 96, 0.208) 0px 3px 9px; }
#rsvp-dialog .attendance input[value="oui"]:checked { accent-color: white; }
.joy-spark { position: absolute; left: 50%; top: 50%; clip-path: polygon(50% 0px, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0px 50%, 38% 38%); pointer-events: none; z-index: 3; }
@keyframes joy-burst { 
  0% { opacity: 0; transform: translate(0px, 0px) scale(0.4); }
  20% { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--dx),var(--dy)) scale(.2) rotate(90deg); }
}
#rsvp-receipt .rsvp-monogram { display: block; width: 56px; height: auto; margin: 0px auto 18px; }
#rsvp-receipt .guest-status:empty { display: none; }
#rsvp-receipt .guest-close { top: 4px; right: 8px; }
@media (max-width: 420px) {
  #rsvp-dialog .embossed-sheet::before, #rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::before, #rsvp-receipt .embossed-sheet::after { background-size: 200px 200px, 85px 85px; background-position: left top, 0px 70px; }
  #rsvp-receipt .embossed-sheet { padding-left: 22px; padding-right: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .joy-spark { display: none; animation: auto ease 0s 1 normal none running none; }
}
#rsvp-dialog .embossed-sheet::before, #rsvp-receipt .embossed-sheet::before, #rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::after { background-image: url("assets/perles-angles-rsvp-v1.png"); background-size: 300px 300px; background-position: left top; background-repeat: no-repeat; opacity: 0.85; }
#rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::after { height: 300px; }
#rsvp-receipt .embossed-sheet { padding: 60px 25px 80px; text-align: center; }
#rsvp-receipt .section-label { font: 10px var(--font-label); letter-spacing: 1.5px; color: var(--couture-blue); margin: 0px 0px 30px; }
#rsvp-receipt h2 { font: 400 34px/1.25 var(--font-script); color: var(--couture-blue); margin: 12px 0px 28px; overflow-wrap: normal; }
#rsvp-receipt .receipt-copy { font: 400 14px/1.8 var(--font-copy); text-align: center; margin: 24px 0px 28px; }
#rsvp-dialog .attendance label:has(input[value="oui"]) { background-color: white; background-image: linear-gradient(150deg, rgb(65, 102, 155), rgb(25, 48, 96) 65%, rgb(16, 35, 73)); background-size: 0% 100%; background-position: left center; background-repeat: no-repeat; transition: background-size 1.2s, color 1s, box-shadow 1.2s; }
#rsvp-dialog .attendance label:has(input[value="oui"]:checked) { background-color: white; background-image: linear-gradient(150deg, rgb(65, 102, 155), rgb(25, 48, 96) 65%, rgb(16, 35, 73)); background-size: 100% 100%; background-position: left center; background-repeat: no-repeat; }
.joy-spark { width: 13px; height: 13px; background: rgb(209, 173, 89); filter: drop-shadow(rgb(242, 207, 125) 0px 0px 3px); animation: joy-burst 1.45s var(--delay) both; }
@keyframes joy-burst { 
  0% { opacity: 0; transform: translate(0px, 0px) scale(0.5); }
  15% { opacity: 1; }
  60% { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--dx),var(--dy)) scale(.4) rotate(110deg); }
}
@media (max-width: 420px) {
  #rsvp-dialog .embossed-sheet::before, #rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::before, #rsvp-receipt .embossed-sheet::after { background-size: 260px 260px; }
  #rsvp-dialog .embossed-sheet::after, #rsvp-receipt .embossed-sheet::after { height: 260px; }
}
@media (prefers-reduced-motion: reduce) {
  #rsvp-dialog .attendance label:has(input[value="oui"]) { transition: none; }
  .joy-spark { animation: auto ease 0s 1 normal none running none; display: none; }
}
@media (max-width: 480px) {
  #rsvp-receipt h2 { font-size: clamp(23px, 6.8vw, 32px); }
}
:root { --couture-blue: #183473; --blue: var(--couture-blue); --text-heading: var(--couture-blue); }
body :is(p, span, h1, h2, h3, h4, blockquote, cite, time, small, label, legend, input, textarea, select, button, a, em, strong):where(:not(.hero *):not(.promise *)) { color: var(--text-body) !important; }
body :is(#invitation-title, #invitation-title span, .sacred-word, #story-title, .chapter-copy h3, #day-title, .journey-copy h4, .venue h3, #dressing-title, #souvenirs-title, .atelier-card-title, #gifts-title, #salon-title, #response-title, #finale-title em, .finale-names) { color: var(--couture-blue) !important; }
body :is(.section-label, .house span, .sacred cite, .chapter-number, .date, .finale-date, .journey-copy time) { color: var(--gold) !important; }
body a:where(:not(.hero *):not(.promise *)), body a :is(span, svg):where(:not(.hero *):not(.promise *)), body .journey-navigation button { color: var(--gold) !important; }
body .atelier-card .atelier-card-title { color: var(--couture-blue) !important; }
body .atelier-card .atelier-card-description { color: var(--text-body) !important; }
.atelier-card img { filter: url("#card-gold"); }
body .chapter-selector button, body .chapter-selector button span { color: var(--couture-blue) !important; }
.chapter-selector button::after { background: var(--gold) !important; }
.journey-progress { background: rgba(166, 127, 54, 0.25); }
.journey-progress > span { background: var(--gold); }
.monogram, #rsvp-dialog .rsvp-monogram, #rsvp-receipt .rsvp-monogram { filter: drop-shadow(rgba(24, 52, 115, 0.14) 0px 2px 3px); }
body .couture-button, body .couture-button :is(span, svg), body .response-card-copy .response-action, body .finale-back.couture-button { color: rgb(255, 255, 255) !important; }
body .attendance label:has(input[value="oui"]:checked) { color: rgb(255, 255, 255) !important; }
body .finale-names .signature-writing { color: var(--couture-blue) !important; }
:root { --text-body: #000; }
body .house strong, body .house span { color: rgb(0, 0, 0) !important; }
:root { --gold: #ae8753; --text-accent: #ae8753; --champagne-ink: linear-gradient(112deg,#89633d 0%,#bd965e 20%,#ddc49b 36%,#a77a44 49%,#d6b786 68%,#936c41 85%,#c6a574 100%); }
.monogram { width: clamp(125px, 27vw, 172px); }
#rsvp-dialog .rsvp-monogram { width: 80px; }
.promise-lace { filter: url("#lace-champagne"); }
@supports (background-clip:text) {
  body :is(.section-label, .sacred cite, .chapter-number, .date, .finale-date, .journey-copy time) { background-image: var(--champagne-ink); background-clip: text; text-shadow: rgba(181, 140, 72, 0.125) 0px 1px 1px; color: transparent !important; }
  body a:where(:not(.hero *):not(.promise *):not(.couture-button):not(.response-action):not(.atelier-card):not(.salon-entry)) { background-image: var(--champagne-ink); background-clip: text; color: transparent !important; }
}
body #names, body .finale-names .signature-writing { background-image: linear-gradient(110deg,transparent 39%,#fff0cd 49%,transparent 59%),var(--champagne-ink); background-size: 250% 100%, 100% 100%; background-position: 150% 0px, 0px 0px; background-clip: text; -webkit-text-fill-color: transparent; white-space: nowrap; color: transparent !important; }
body #names { filter: drop-shadow(rgb(53, 33, 14) 0px 1px 1px) drop-shadow(rgba(16, 12, 11, 0.44) 0px 2px 4px); }
body #names.is-writing, body .finale-names .signature-writing.is-writing { animation: 2400ms linear 0s 1 normal both running write-word, 5s linear 0s infinite normal none running champagne-shimmer; }
@keyframes champagne-shimmer { 
  0% { background-position: 150% 0px, 0px 0px; }
  100% { background-position: -150% 0px, 0px 0px; }
}
.finale-signature { width: 100%; max-width: 850px; padding-inline: 12px; }
.finale-signature .finale-names { font-size: clamp(42px, 10.8vw, 84px); white-space: nowrap; }
body .sacred cite, body .finale-date { background: none; -webkit-text-fill-color: currentcolor; text-shadow: none; color: var(--text-body) !important; }
:root { --lace-drop: clamp(24px,6vw,60px); }
.drape { top: calc(100% - min(68vw,680px) + var(--lace-drop)); }
.announcement { padding-top: calc(min(14vw,140px) + var(--lace-drop) + 12px); }
@media (prefers-reduced-motion: reduce) {
  body #names.is-pending, body .signature-writing.is-pending { clip-path: none; }
  body #names.is-writing, body .finale-names .signature-writing.is-writing { animation: auto ease 0s 1 normal none running none; }
}
body main .atelier-finale .finale-date { background: none; -webkit-text-fill-color: currentcolor; text-shadow: none; color: var(--text-body) !important; }
.sacred-doves { width: clamp(230px, 64vw, 330px); max-width: 90%; height: auto; opacity: 1; margin: 22px auto 14px; }
.envelope-scene { position: relative; width: 100%; max-width: 390px; aspect-ratio: auto; padding: 0px; margin: 12px auto 0px; text-align: center; }
.envelope-stage { position: relative; aspect-ratio: 1 / 1; perspective: 1100px; isolation: isolate; }
.envelope-stage > img { position: absolute; inset: 0px; width: 100%; height: 100%; object-fit: contain; pointer-events: none; user-select: none; }
.envelope-back { z-index: 0; clip-path: inset(44% 0px 0px); }
.envelope-front { z-index: 3; }
.envelope-flap { z-index: 1; clip-path: inset(0px 0px 56%); transform-origin: 50% 44%; transform: rotateX(0deg); backface-visibility: visible; }
.envelope-scene .envelope-card { z-index: 2; left: 13%; width: 74%; height: 43%; padding-right: 6%; padding-bottom: 3%; padding-left: 6%; justify-content: flex-start; gap: 12px; }
.envelope-scene .envelope-card p { font-size: clamp(12px, 3.2vw, 15px); line-height: 1.4; text-align: center; }
.envelope-scene .envelope-card .response-action { font-size: 12px; min-height: 38px; padding: 8px 18px; flex-shrink: 0; }
.envelope-ready .envelope-card { transform: translateY(0px); visibility: hidden; pointer-events: none; }
.envelope-ready .envelope-flap { z-index: 4; transform: rotateX(-180deg); filter: drop-shadow(rgba(85, 64, 43, 0.15) 0px -3px 3px); }
.envelope-trigger { position: absolute; z-index: 5; top: 43%; left: 4%; width: 92%; height: 47%; border: 0px; background: transparent; cursor: pointer; border-radius: 3px; -webkit-tap-highlight-color: transparent; }
.envelope-trigger:focus-visible { outline: 2px solid var(--couture-blue); outline-offset: 5px; }
.envelope-hint { margin: -6% 0px 0px; font: 11px/1.5 var(--font-label); letter-spacing: 0.12em; text-align: center !important; color: var(--gold) !important; }
.envelope-ready.is-opening .envelope-flap, .envelope-ready.is-open .envelope-flap { animation: 1100ms ease-in-out 0s 1 normal both running unfold-lace; }
.envelope-ready.is-opening .envelope-card, .envelope-ready.is-open .envelope-card { visibility: visible; animation: 1400ms cubic-bezier(0.22, 0.65, 0.3, 1) 850ms 1 normal both running draw-invitation; }
.envelope-ready.is-open .envelope-card { pointer-events: auto; }
@keyframes unfold-lace { 
  0% { transform: rotateX(-180deg); z-index: 4; }
  49% { z-index: 4; }
  50% { z-index: 1; }
  100% { transform: rotateX(0deg); z-index: 1; filter: drop-shadow(transparent 0px 0px 0px); }
}
@keyframes draw-invitation { 
  0% { transform: translateY(0px); }
  100% { transform: translateY(-68%); }
}
@media (prefers-reduced-motion: reduce) {
  .envelope-ready.is-opening .envelope-flap, .envelope-ready.is-open .envelope-flap { animation: auto ease 0s 1 normal none running none; transform: rotateX(0deg); z-index: 1; }
  .envelope-ready.is-opening .envelope-card, .envelope-ready.is-open .envelope-card { animation: auto ease 0s 1 normal none running none; transform: translateY(-68%); }
}
.envelope-card-window { position: absolute; inset: 0px; z-index: 2; overflow: hidden; clip-path: inset(0px 0px 10%); }
.envelope-front { clip-path: url("#envelope-pocket"); }
.envelope-scene .envelope-card { top: 65%; transform: translateY(-112%); }
.envelope-ready .envelope-card, .envelope-ready.is-opening .envelope-card { visibility: hidden; animation: auto ease 0s 1 normal none running none; transform: translateY(0px); }
.envelope-ready.is-extracting .envelope-card { visibility: visible; animation: 1400ms cubic-bezier(0.22, 0.65, 0.3, 1) 0s 1 normal both running extract-card; }
@keyframes extract-card { 
  0% { transform: translateY(0px); }
  100% { transform: translateY(-112%); }
}
.portrait { height: calc(100% + min(35vw,350px) + var(--lace-drop)); }
.portrait img { object-position: 50% 0px; }
.hero-copy { top: 44%; }
#names.is-pending { clip-path: none; }
@media (prefers-reduced-motion: reduce) {
  .envelope-ready.is-extracting .envelope-card { animation: auto ease 0s 1 normal none running none; transform: translateY(-112%); }
}
@media (min-width: 760px) {
  .portrait img { height: calc(100% - 150px); object-position: 50% 0px; }
}
.envelope-stage > .envelope-seal { display: none; inset: 80% auto auto 50%; width: 15%; height: auto; z-index: 5; transform: translate(-50%, -50%); filter: drop-shadow(rgba(71, 48, 25, 0.25) 0px 3px 3px); clip-path: polygon(2% 53%, 6% 38%, 13% 23%, 27% 10%, 43% 3%, 51% 2%, 64% 7%, 77% 15%, 89% 27%, 97% 43%, 97% 49%, 92% 57%, 90% 69%, 80% 81%, 65% 92%, 54% 98%, 43% 97%, 30% 90%, 18% 87%, 8% 75%, 3% 64%); transition: opacity 240ms, transform 240ms; }
.envelope-ready .envelope-seal { display: block; }
.envelope-ready.is-opening .envelope-seal { opacity: 0; transform: translate(-50%, -50%) scale(0.85); }
@media (prefers-reduced-motion: reduce) {
  .envelope-stage > .envelope-seal { transition: none; }
}
.envelope-scene .envelope-card { background: radial-gradient(at 25% 10%, rgb(255, 254, 250) 0%, transparent 65%), repeating-linear-gradient(12deg, rgba(181, 165, 142, 0.02) 0px, rgba(181, 165, 142, 0.02) 1px, transparent 1px, transparent 3px), linear-gradient(135deg, rgb(249, 246, 239), rgb(255, 253, 248) 48%, rgb(238, 233, 223)); border: 1px solid rgb(215, 206, 189); border-radius: 2px; box-shadow: rgb(255, 252, 244) 0px 1px 0px, rgb(216, 205, 187) 0px 2px 0px, rgb(238, 231, 220) 0px 3px 0px, rgba(85, 68, 42, 0.157) 0px 5px 7px, rgba(81, 64, 44, 0.086) 0px 12px 24px, rgb(255, 255, 255) 1px 1px 2px inset, rgba(214, 203, 184, 0.42) -1px -1px 2px inset; padding-top: 10%; }
.envelope-card::before, .envelope-card::after { content: ""; position: absolute; pointer-events: none; border-radius: 2px; }
.envelope-card::before { inset: 8px; border: 1px solid rgba(211, 200, 182, 0.5); box-shadow: rgb(255, 255, 255) 1px 1px 1px, rgba(184, 171, 147, 0.22) -1px -1px 1px, rgb(255, 255, 255) 1px 1px 1px inset, rgba(184, 171, 147, 0.25) -1px -1px 1px inset; }
.envelope-card::after { inset: 12px; border: 1px solid rgb(255, 253, 246); box-shadow: rgba(164, 149, 124, 0.27) 1px 1px 2px, rgb(255, 255, 255) -1px -1px 2px, rgba(164, 149, 124, 0.15) 1px 1px 2px inset; }
.envelope-card > p, .envelope-card > a { position: relative; z-index: 1; }
body .music-toggle { position: fixed; display: grid; place-items: center; padding: 0px; border: 1px solid rgb(214, 194, 156); border-radius: 50%; background: linear-gradient(145deg, rgb(52, 82, 132), rgb(20, 41, 84)); box-shadow: rgba(255, 255, 255, 0.396) 0px 1px 1px inset, rgba(20, 41, 84, 0.15) 0px 3px 12px; cursor: pointer; color: rgb(255, 255, 255) !important; }
.music-toggle[hidden] { display: none; }
.music-toggle:focus-visible { outline: rgb(174, 135, 83) solid 2px; outline-offset: 4px; }
.music-toggle .music-waves { display: none; }
.music-toggle[aria-pressed="true"] .music-waves { display: block; }
.music-toggle[aria-pressed="true"] .music-muted { display: none; }
.intro-open { overflow: hidden; }
.opening-experience { position: fixed; inset: 0px; z-index: 100; background: rgb(16, 33, 59); isolation: isolate; transition: opacity 0.65s; display: grid; place-items: center; }
.opening-experience[hidden] { display: none; }
.opening-experience::before { content: ""; position: absolute; inset: 0px; z-index: -1; background: url("assets/royal-blue-opening-poster.webp") center center / cover; filter: blur(18px) brightness(0.7); transform: scale(1.05); }
#opening-video { position: absolute; inset: 0px; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
body .opening-enter { position: absolute; top: 76%; left: 50%; transform: translate(-50%, -50%); white-space: nowrap; }
body .opening-skip { position: absolute; bottom: max(20px,env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); cursor: pointer; }
.opening-experience.is-playing .opening-enter { visibility: hidden; }
.opening-experience.is-leaving { opacity: 0; pointer-events: none; }
body .music-toggle { bottom: auto; z-index: 120; }
.invitation-menu { z-index: 120; }
.opening-enter:focus-visible, .opening-skip:focus-visible { outline: rgb(255, 255, 255) solid 2px; outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) {
  .opening-experience { transition: none; }
}
@media (max-width: 759px) {
  #opening-video { object-fit: cover; }
}
#dressing .runway-layout { display: grid; grid-template-columns: minmax(0px, 440px) minmax(0px, 300px); gap: 35px; align-items: center; max-width: 820px; margin: 24px auto 0px; padding: 0px 20px; }
#dressing .dressing-copy { position: static; width: auto; max-width: none; margin: 0px; }
.couture-runway { position: relative; isolation: isolate; aspect-ratio: 3 / 4; width: 100%; max-width: 440px; margin: auto; background: transparent; overflow: visible; }
.runway-decor { position: absolute; inset: 0px; width: 100%; height: 100%; object-fit: fill; z-index: 0; }
.runway-lights { position: absolute; inset: 0px; width: 100%; height: 100%; z-index: 1; overflow: visible; pointer-events: none; }
.runway-beam { transform-box: view-box; animation: 4s ease-in-out 0s infinite alternate none running runwaySweep; }
.beam-left { transform-origin: 30.3867% 6.4917%; }
.beam-right { transform-origin: 70.9024% 6.4917%; animation-delay: -4s; }
.runway-look { position: absolute; z-index: 2; left: 0px; width: 100%; height: 60%; top: calc(85.5% - var(--feet)); object-fit: contain; object-position: center bottom; opacity: 0; transform: translateX(12px); transition: opacity 0.65s, transform 0.9s; pointer-events: none; }
.runway-look.active { opacity: 1; transform: none; }
.runway-look.leaving { opacity: 0; transform: translateX(-12px); }
.runway-shadow { position: absolute; z-index: 1; bottom: 13.8%; left: 30%; width: 40%; height: 1.6%; background: radial-gradient(rgba(35, 52, 82, 0.333), transparent 70%); filter: blur(2px); }
.runway-flash { position: absolute; z-index: 3; width: 30%; aspect-ratio: 1 / 1; opacity: 0; pointer-events: none; background: radial-gradient(circle, rgb(255, 255, 255) 0px, rgb(255, 255, 255) 5%, rgb(255, 249, 220) 7%, rgba(178, 201, 239, 0.65) 13%, rgba(198, 217, 250, 0.333) 28%, transparent 65%); filter: drop-shadow(rgb(119, 148, 195) 0px 0px 4px); }
.runway-flash::before, .runway-flash::after { content: ""; position: absolute; left: 49%; top: 2%; width: 2px; height: 96%; background: linear-gradient(transparent, rgb(172, 196, 235) 22%, rgb(255, 255, 255) 46%, rgb(255, 255, 255) 54%, rgb(172, 196, 235) 78%, transparent); }
.runway-flash::after { transform: rotate(90deg); }
.flash-left { left: -3%; top: 32%; }
.flash-right { right: -3%; top: 53%; }
.flash-top { right: 1%; top: 23%; }
.runway-shoot .flash-left { animation: 0.6s ease 0.8s 1 normal none running runwayCamera; }
.runway-shoot .flash-right { animation: 0.6s ease 1.9s 1 normal none running runwayCamera; }
.runway-shoot .flash-top { animation: 0.6s ease 3s 1 normal none running runwayCamera; }
.runway-no-flash .runway-flash { display: none; }
.runway-stopped .runway-beam, .runway-stopped .runway-flash { animation-play-state: paused; }
#dressing .runway-controls { display: flex; align-items: center; justify-content: center; gap: 12px; margin: 8px auto 20px; }
#dressing .runway-controls button { display: flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; border: 0px; background: transparent; padding: 8px; color: var(--gold,#a67f36); font: 12px Georgia, serif; cursor: pointer; }
#dressing .runway-controls button:focus-visible { outline: currentcolor solid 1px; outline-offset: 2px; }
#dressing .runway-controls button[aria-pressed="false"] { opacity: 0.5; }
@keyframes runwaySweep { 
  0% { transform: rotate(-7deg); }
  100% { transform: rotate(7deg); }
}
@keyframes runwayCamera { 
  0%, 100% { opacity: 0; transform: scale(0.5); }
  14% { opacity: 1; transform: scale(1.15); }
  35% { opacity: 0.55; transform: scale(1); }
  75% { opacity: 0; transform: scale(1.3); }
}
@media (max-width: 650px) {
  #dressing .runway-layout { display: block; padding: 0px 20px; max-width: 430px; }
  .couture-runway { max-width: 360px; }
  #dressing .dressing-copy { max-width: 340px; margin: 15px auto 0px; }
  #dressing .runway-controls { margin-bottom: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .runway-beam, .runway-flash { animation: auto ease 0s 1 normal none running none !important; }
  .runway-look { transition: opacity 0.2s; transform: none !important; }
}
.hero { container-type: inline-size; --hero-base: clamp(820px,140vw,1400px); --approved-lace-shift: min(23vw,160px); height: calc(var(--hero-base) + var(--approved-lace-shift)); }
.hero .portrait { height: calc(var(--hero-base) + min(35vw,350px) + var(--lace-drop)); clip-path: polygon(0 0,100% 0,100% min(100%,calc(100% - min(16vw,160px) + var(--approved-lace-shift))),75% calc(100% - min(37vw,370px) + var(--approved-lace-shift)),50% calc(100% - min(40vw,400px) + var(--approved-lace-shift)),25% calc(100% - min(49vw,490px) + var(--approved-lace-shift)),0 calc(100% - min(70vw,700px) + var(--approved-lace-shift))); }
.hero .hero-copy { top: calc(var(--hero-base)*.57); height: 350px; }
.hero .hero-copy .tagline { margin-top: 8px; }
body .music-toggle { width: 32px; height: 32px; top: calc(max(14px,env(safe-area-inset-top)) + 6px); right: max(62px, -438px + 50vw); }
body .music-toggle svg { width: 15px; height: 15px; }
#dressing .dressing-copy { font: 400 var(--copy-compact)/1.7 var(--font-copy); color: var(--text-body); }
#dressing .dressing-copy p { margin: 0px 0px 14px; text-align: left; text-align-last: left; hyphens: none; word-break: normal; overflow-wrap: normal; }
#dressing .dressing-copy .dressing-note { font: 400 var(--note-size)/1.6 var(--font-copy); }
@media (max-width: 759px) {
  .hero { --hero-base: 210.25641vw; --approved-lace-shift: 23vw; }
  .hero .hero-copy { top: 168cqw; left: 0px; transform: none; width: 100%; height: 55cqw; }
  .hero .overline { position: absolute; top: 0px; left: 2%; width: 96%; margin: 0px; font-size: 1.7cqw; line-height: 1.5; }
  .hero #names { position: absolute; top: 4.6cqw; left: 2%; width: 96%; margin: 0px; font-size: 12cqw; line-height: 1.1; }
  .hero .silver-line { position: absolute; top: 22cqw; left: 34.5%; width: 31%; margin: 0px; }
  .hero .hero-copy .tagline { position: absolute; top: 27cqw; left: 4%; width: 92%; margin: 0px; font-size: 3.59cqw; line-height: 1.5; }
  .hero .discover { position: absolute; top: 45cqw; left: 50%; transform: translateX(-50%); margin: 0px; }
}
@media (max-width: 699px) {
  #dressing .runway-layout { padding-inline: 16px; max-width: none; }
  #dressing .dressing-copy { max-width: 440px; width: 100%; font-size: 14px; margin: 15px auto 0px; }
  #dressing .dressing-copy .dressing-note { font: inherit; }
}
body .opening-enter { border: 0px; border-radius: 0px; background: none; box-shadow: none; padding: 12px 8px; min-height: 44px; font: 400 clamp(38px,9vw,66px)/1.2 var(--font-script); text-shadow: rgba(7, 21, 44, 0.5) 0px 2px 8px; cursor: pointer; animation: 2.2s ease-in-out 0s infinite normal none running invitation-pulse; color: rgb(255, 255, 255) !important; }
body .opening-enter::before { display: none; }
body .opening-skip { border: 0px; background: none; box-shadow: none; border-radius: 0px; font: 400 10px/1.4 var(--font-label); letter-spacing: 0.04em; opacity: 0.65; padding: 14px 18px; text-shadow: rgb(7, 21, 44) 0px 1px 4px; color: rgb(255, 255, 255) !important; }
body .opening-skip:hover, body .opening-skip:focus-visible { opacity: 1; }
@keyframes invitation-pulse { 
  0%, 100% { opacity: 1; }
  50% { opacity: 0.25; }
}
@media (prefers-reduced-motion: reduce) {
  body .opening-enter { animation: auto ease 0s 1 normal none running none; }
}

body .opening-enter:focus-visible{outline:none;text-decoration:underline;text-underline-offset:.2em}
@media(min-width:700px){#dressing .dressing-copy p{text-align:justify;text-align-last:left}}
.hero .discover{color:#193060}

body #names.is-pending:not(.is-writing){clip-path:inset(0 100% 0 0)}
@media(prefers-reduced-motion:reduce){body #names.is-pending:not(.is-writing){clip-path:none}}
