/* Edition 19: anniversary invitation and two-day programme. */
.icon {display:inline-block;width:22px;height:22px;max-width:none;flex:0 0 auto;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.icon-arrow {width:23px;height:23px}
.hotel-arrow,.slider-controls button {display:inline-flex;align-items:center;justify-content:center}
.primary-button>span,.sticky-rsvp>span:last-child,.looks-button>span,.text-link>span {display:inline-flex;align-items:center}
.menu-contact span {display:inline-flex;align-items:center;gap:10px}
.header-act {font:500 25px/1 var(--event-serif);letter-spacing:.12em}
.invitation {background:#100807;overflow:hidden}
.invitation::before {content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#090605 0%,#0a0606d4 12%,#10070699 65%,#0b0706 100%),url('assets/program-piano-v16.jpg') 80% 100%/cover no-repeat;opacity:.94}
.invitation .section-inner {text-shadow:0 2px 15px #0008}
.invitation-message {max-width:500px;margin:0 auto 30px;font-family:var(--event-serif);font-size:clamp(23px,6vw,29px);font-weight:400;line-height:1.4;letter-spacing:0;text-wrap:balance;color:#e0cfb5}
.invitation-signature {margin:23px 0 0;font-family:var(--event-serif);font-size:clamp(29px,8vw,37px);line-height:1.2;letter-spacing:.025em;color:#e4c58e}
.invitation-date-lockup {margin:35px auto 8px;padding:26px 0 28px;max-width:450px}
.invitation-city {font-family:var(--event-serif);font-size:26px;line-height:1.3;color:#d5c1a2}
.invitation-venue {font-family:var(--event-serif);font-size:clamp(29px,8vw,37px);line-height:1.25;color:#f0d9af;margin:3px 0 21px}
.invitation-time {font-size:16px;letter-spacing:0;margin-top:12px}
.invitation .text-link {margin-top:17px}
.program {background:radial-gradient(ellipse at 90% 40%,#4c1b0c42,transparent 65%),#0b0706}
.program .program-curtain {background-image:linear-gradient(115deg,#0b0706,#20110a66 50%,#070504);background-size:cover}
.program .section-heading {padding-bottom:24px}
.program .section-heading .eyebrow {font-size:12px;letter-spacing:.12em;color:#c3a87c;margin-bottom:18px}
.program .timeline {margin-bottom:22px}
.program .day-two-note {font:400 22px/1.4 var(--event-serif);color:#cbb798}
.program .day-two-link {margin-top:16px;color:#e8c78a;font-size:13px;letter-spacing:.025em}
.dress-content .dress-concept {display:block;color:#f1d69f;font-size:1.18em;line-height:1.3;margin-bottom:18px}
.looks-button {margin-top:30px;transition:border-color .25s,background .25s}
.looks-button:hover {border-color:#eccd94;background:#d7b26c0c}
.hotels .hotel-image-link>img {filter:saturate(.32) brightness(.78) contrast(1.05) sepia(.25)}
.hotels .hotel-image-link:hover>img {filter:saturate(.36) brightness(.82) contrast(1.05) sepia(.23)}
.hotels .hotel-image-link::before {content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,#40230e18,#140b0859);mix-blend-mode:multiply}
.hotels .hotel-image-link::after {background:linear-gradient(112deg,transparent 39%,#e4c18b0b 48%,#eed4a122 50%,#c5a06c08 52%,transparent 59%)}
.hotel-arrow {z-index:2}
.hotel-offer .offer-phone {display:flex;align-items:center;gap:12px;flex-wrap:wrap;line-height:1.4}
.hotel-offer .offer-contact {font-family:var(--event-serif);font-size:29px;font-weight:500;letter-spacing:0}
.hotel-offer .offer-phone>span:nth-child(2) {font-size:16px;letter-spacing:.015em}
.rsvp-day-label {display:block;font-size:13px;letter-spacing:.055em;color:#d9b679;margin-bottom:10px}
.rsvp-form fieldset+fieldset {margin-top:30px}
.farewell {margin:0 auto 65px}
.farewell h2 {font-family:var(--event-serif);font-size:clamp(49px,13vw,72px);font-weight:500;line-height:1.07;letter-spacing:0;padding-bottom:.1em}
.farewell>p {font-family:var(--event-serif);font-size:28px;line-height:1.3;margin-top:18px;color:#d7bd8d}
.footer .contact-name {font-size:38px;line-height:1.2}
.footer .contact-phone {font-size:18px;letter-spacing:.02em}
body.looks-is-open {overflow:hidden}
.looks-dialog {position:fixed;inset:0;margin:auto;width:calc(100% - 16px);max-width:700px;height:calc(100vh - 16px);height:calc(100svh - 16px);height:calc(100dvh - 16px);max-height:960px;padding:clamp(14px,3.8vw,26px);border:1px solid #c5a16999;border-radius:3px;background:#100c09;color:#eee0c6;overflow:auto;overscroll-behavior:contain;box-shadow:0 24px 100px #0009;scrollbar-color:#9d7840 #130c09}
.looks-dialog[open] {display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:14px}
.looks-dialog::backdrop {background:#070403e8;backdrop-filter:blur(8px)}
.looks-dialog-top {display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.looks-dialog-top .eyebrow {font-size:11px;margin:0 0 7px;color:#bda479;letter-spacing:.08em}
.looks-dialog h2 {font-family:var(--event-serif);font-size:clamp(28px,7.8vw,38px);font-weight:500;line-height:1.08;letter-spacing:0;color:#f1d8a7}
.looks-close {width:44px;height:44px;flex:0 0 44px;display:flex;align-items:center;justify-content:center;border:1px solid #c5a16999;border-radius:2px;background:#251b12;color:#f4dfba}
.looks-tabs {display:flex;gap:10px}
.looks-tabs button {flex:1;min-height:46px;padding:9px 16px;border:1px solid #bb97548c;border-radius:2px;background:#20170f;color:#e4d0ae;font-size:15px;font-weight:500;letter-spacing:.01em}
.looks-tabs button[aria-selected=true] {background:linear-gradient(120deg,#cbaa72,#f1d7a5 50%,#d8b67c);color:#21170e;border-color:#efcd94}
.looks-panel {display:grid;grid-template-rows:minmax(0,1fr) auto;gap:12px;min-height:0;min-width:0}
.looks-panel>img {display:block;width:100%;height:100%;min-height:0;max-height:100%;object-fit:contain;object-position:center;background:#0f0b09}
.looks-panel>p {font-family:var(--event-serif);font-size:21px;line-height:1.25;text-align:center;margin:0 auto;max-width:520px;color:#e3d0b0;text-wrap:balance}
.looks-footnote {font-size:13px;line-height:1.4;color:#c9b694;text-align:center;margin:0;text-wrap:balance}
@media(min-width:650px) {
 .hero-center {top:12%;bottom:auto;left:calc(50% - 180px);right:auto;width:360px}
 .invitation-message {font-size:29px;margin-bottom:33px}
}
@media(max-width:649px) {.hero-center {top:14%;bottom:auto}}
@media(max-width:649px) and (max-height:680px) {
 .hero-title {max-width:78%;margin:0 auto}
}
@media(max-width:359px) {
 .invitation-message {font-size:22px}
 .invitation-venue {font-size:29px}
 .looks-dialog {padding:12px}
 .looks-dialog[open] {gap:10px}
 .looks-dialog h2 {font-size:28px}
 .looks-panel>p {font-size:19px}
 .hotel-offer .offer-phone {gap:8px}
}

/* Edition 20: user-supplied Kling films, with matching stills while loading. */
.video-scene>.scene-video {position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%;opacity:0;pointer-events:none}
.cabaret-art.video-scene>.scene-video {z-index:-3}
.video-scene.is-video-ready>.scene-video {opacity:1}
.video-scene.is-video-ready>.scene-poster {opacity:0}
.wish-scene.video-scene>.scene-video,.wish-scene.video-scene>.scene-poster {object-fit:cover;object-position:50% 24%}
.wish-scene.video-scene .stage-atmosphere {z-index:2;opacity:.18}
@media(prefers-reduced-motion:reduce) {
 .video-scene>.scene-video {display:none}
 .video-scene.is-video-ready>.scene-poster {opacity:1}
}

/* Edition 21: clear, tactile controls with no decorative arrows. */
.noir-edition .event-button {display:inline-flex;align-items:center;justify-content:center;gap:0;min-height:56px;max-width:100%;padding:16px 23px;border:1px solid #e4c58e;border-radius:3px;background:linear-gradient(120deg,#c9a66f,#f1d7a5 48%,#d9b67d);color:#21170e;font-family:Manrope,Arial,sans-serif;font-size:15px;font-weight:600;line-height:1.4;letter-spacing:.015em;text-transform:none;text-align:center;text-shadow:none;box-shadow:inset 0 1px #fff3d17a,0 6px 22px #0003;transition:background .25s,border-color .25s,box-shadow .25s}
.noir-edition .event-button>span {font:inherit;letter-spacing:inherit;line-height:inherit}
.noir-edition .text-link.event-button {min-width:min(220px,100%)}
.noir-edition .event-button:hover {background:linear-gradient(120deg,#d9b984,#f9e4bb 48%,#e5c794);color:#21170e;border-color:#ffe6b7;box-shadow:inset 0 1px #fff4d999,0 8px 26px #0004}
.noir-edition .event-button:active {box-shadow:inset 0 2px 6px #5a391826}
.noir-edition .primary-button[aria-disabled=true] {background:linear-gradient(120deg,#c9a66f,#f1d7a5 48%,#d9b67d);box-shadow:inset 0 1px #fff3d17a,0 6px 22px #0003}
.noir-edition .hotel-card .event-button {width:100%;min-width:0;min-height:50px;margin-top:20px;padding:12px 18px;font-size:14px}
.noir-edition .offer-whatsapp.event-button {width:100%;margin-top:22px;font-size:14px}
.noir-edition .sticky-rsvp.event-button {display:flex;min-height:56px;padding:15px 14px;transition:transform .4s,opacity .4s,visibility .4s,box-shadow .25s}
.music-toggle {background:#1a120b;border-color:#c6a36c;color:#f4dfb8;box-shadow:inset 0 1px #f5d7a31c}
.music-label {font-size:13px;font-weight:500}
.looks-close:hover,.looks-tabs button:not([aria-selected=true]):hover {background:#38291b;border-color:#e1bd82}
@media(max-width:359px) {
 .noir-edition .event-button {padding-left:16px;padding-right:16px;font-size:14px}
 .noir-edition .sticky-rsvp.event-button {font-size:13px}
}
@media(max-height:650px) {
 .looks-dialog {padding:12px}
 .looks-dialog[open] {gap:10px}
 .looks-panel {gap:8px}
 .looks-panel>p {font-size:18px;line-height:1.2}
 .looks-footnote {font-size:12px;line-height:1.35}
}
@media(forced-colors:active) {
 .noir-edition .event-button {background:Canvas;border:1px solid ButtonText;color:ButtonText;box-shadow:none}
}
