:root {
    --thm02-ivory: #f6faf7;
    --thm02-paper: #ffffff;
    --thm02-blush: #fde8e6;
    --thm02-rose: #f69d9d;
    --thm02-wine: #b94351;
    --thm02-wine-dark: #39413f;
    --thm02-sage: #ddebe6;
    --thm02-ink: #39413f;
    --thm02-muted: #535d5a;
    --thm02-line: rgba(57, 65, 63, 0.16);
    /* The couple's own fonts (custom font add-on) take over when set; see x-theme-custom-fonts. */
    --thm02-display: var(--invie-font-heading, "Noto Serif"), Georgia, "Times New Roman", serif;
    --thm02-body: var(--invie-font-body, "Montserrat"), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --thm02-gutter: clamp(20px, 6vw, 68px);
    --thm02-section-space: clamp(72px, 11vw, 144px);
}

html {
    scroll-behavior: smooth;
}

body.theme-thm02 {
    width: 100%;
    min-width: 0;
    margin: 0;
    overflow-x: clip;
    background: var(--thm02-ivory);
    color: var(--thm02-ink);
    font-family: var(--thm02-body);
    font-size: 15px;
    font-weight: 400;
    line-height: 1.75;
}

body.theme-thm02 :where(h1, h2, h3, p, figure, blockquote, dl, dd, ol, ul) {
    margin: 0;
}

body.theme-thm02 :where(h1, h2, h3, blockquote) {
    overflow-wrap: normal;
    word-break: normal;
}

body.theme-thm02 :where(ol, ul) {
    padding: 0;
    list-style: none;
}

:where(body.theme-thm02) a {
    color: inherit;
    text-decoration: none;
}

/* A zero-specificity reset: it must not strip the 1px border of .thm02-button--outline
   (Salin nomor, Salin alamat), which a body-scoped selector outranked. */
:where(body.theme-thm02 button) {
    border: 0;
    cursor: pointer;
}

body.theme-thm02 :where(img) {
    display: block;
    width: 100%;
}

.thm02-page {
    position: relative;
    min-width: 0;
    min-height: 100dvh;
    overflow: clip;
    container-name: thm02-page;
    container-type: inline-size;
    background:
        radial-gradient(circle at 90% 14%, rgba(184, 124, 130, 0.08), transparent 22rem),
        var(--thm02-ivory);
}

.thm02-invitation {
    min-width: 0;
    min-height: 100dvh;
    overflow: clip;
    background: var(--thm02-ivory);
    opacity: 0;
    transition: opacity 520ms ease 120ms;
}

body.theme-thm02[data-theme-state="open"] .thm02-invitation {
    opacity: 1;
}

.thm02-section {
    padding: var(--thm02-section-space) var(--thm02-gutter);
}

.thm02-kicker {
    color: var(--thm02-wine);
    font-family: var(--thm02-body);
    font-size: clamp(12px, 1.8vw, 13px);
    font-weight: 700;
    letter-spacing: 0.21em;
    line-height: 1.5;
    text-transform: uppercase;
}

.thm02-heading {
    width: min(100%, 700px);
    margin: 0 auto clamp(42px, 7vw, 76px);
    text-align: center;
}

.thm02-heading--left {
    margin-inline: 0;
    text-align: left;
}

.thm02-heading h2,
.thm02-dresscode h2,
.thm02-health h2 {
    margin-top: 10px;
    color: var(--thm02-ink);
    font-family: var(--thm02-display);
    font-size: clamp(42px, 8.5vw, 76px);
    font-weight: 500;
    letter-spacing: -0.035em;
    line-height: 0.98;
    text-wrap: balance;
}

.thm02-heading > p:last-child {
    max-width: 590px;
    margin: 22px auto 0;
    color: var(--thm02-muted);
    font-size: clamp(15px, 2.3vw, 16px);
    line-height: 1.85;
}

.thm02-heading--left > p:last-child {
    margin-inline: 0;
}

.thm02-couple .thm02-heading > h2 + p {
    margin-top: 22px;
}

.thm02-button {
    display: inline-flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 12px 22px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 750;
    letter-spacing: 0.13em;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.thm02-button:hover {
    transform: translateY(-2px);
}

.thm02-button--primary {
    background: var(--thm02-wine);
    color: #fff;
}

.thm02-button--primary:hover {
    background: var(--thm02-wine-dark);
}

.thm02-button--light {
    border-color: rgba(255, 255, 255, 0.6);
    background: rgba(255, 253, 249, 0.92);
    color: var(--thm02-wine-dark);
    box-shadow: 0 15px 40px rgba(31, 18, 21, 0.2);
    backdrop-filter: blur(14px);
}

.thm02-button--outline {
    border-color: var(--thm02-line);
    background: transparent;
    color: var(--thm02-wine);
}

body.theme-thm02 .thm02-button--outline:is(:hover, :focus-visible) {
    border-color: var(--thm02-wine);
    background: var(--thm02-wine);
    color: #fff;
}

.thm02-text-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    gap: 8px;
    border-bottom: 1px solid currentColor;
    color: var(--thm02-wine);
    font-size: 13px;
    font-weight: 750;
    letter-spacing: 0.12em;
    line-height: 1.4;
    text-transform: uppercase;
}

/* Opening cover */
.thm02-cover {
    position: fixed;
    z-index: 1000;
    inset: 0;
    display: grid;
    min-height: 100dvh;
    place-items: center;
    overflow: hidden;
    background: #33272a;
    color: #fff;
    isolation: isolate;
    transition: opacity 620ms ease, transform 760ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 760ms;
}

.thm02-cover__image,
.thm02-cover__wash,
.thm02-cover__grain {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.thm02-cover__image {
    z-index: -3;
    object-fit: cover;
    filter: saturate(0.66) contrast(0.94) brightness(0.88) sepia(0.06);
    transform: scale(1.02);
    transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.thm02-cover__wash {
    z-index: -2;
    background:
        linear-gradient(180deg, rgba(30, 20, 23, 0.18), rgba(28, 18, 22, 0.54)),
        radial-gradient(circle at 50% 34%, transparent 0 18%, rgba(37, 23, 27, 0.23) 76%);
}

.thm02-cover__grain {
    z-index: -1;
    opacity: 0.2;
    background-image:
        repeating-radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.34) 0 0.45px, transparent 0.6px 3px),
        repeating-radial-gradient(circle at 75% 65%, rgba(0, 0, 0, 0.25) 0 0.4px, transparent 0.55px 4px);
    background-size: 7px 7px, 11px 11px;
    mix-blend-mode: soft-light;
    pointer-events: none;
}

.thm02-cover__frame {
    position: relative;
    display: flex;
    width: min(calc(100% - 34px), 440px);
    min-height: min(76dvh, 680px);
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: clamp(32px, 7vh, 64px) clamp(22px, 7vw, 52px);
    border: 1px solid rgba(255, 255, 255, 0.44);
    text-align: center;
}

.thm02-cover__frame::before,
.thm02-cover__frame::after {
    position: absolute;
    width: 42px;
    height: 42px;
    border-color: rgba(255, 255, 255, 0.8);
    content: "";
}

.thm02-cover__frame::before {
    top: -7px;
    left: -7px;
    border-top: 1px solid;
    border-left: 1px solid;
}

.thm02-cover__frame::after {
    right: -7px;
    bottom: -7px;
    border-right: 1px solid;
    border-bottom: 1px solid;
}

.thm02-cover__monogram {
    display: grid;
    width: 58px;
    height: 58px;
    margin-bottom: 22px;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, 0.7);
    border-radius: 50%;
    font-family: var(--thm02-display);
    font-size: 22px;
    letter-spacing: 0.08em;
    line-height: 1;
}

.thm02-cover .thm02-kicker {
    color: rgba(255, 255, 255, 0.82);
}

.thm02-cover h1 {
    max-width: 100%;
    margin: 12px 0 10px;
    font-family: var(--thm02-display);
    font-size: clamp(42px, 12vw, 76px);
    font-weight: 500;
    letter-spacing: -0.045em;
    line-height: 0.92;
    overflow-wrap: normal;
    text-wrap: balance;
}

.thm02-cover__date {
    font-size: 12px;
    font-weight: 650;
    letter-spacing: 0.27em;
}

.thm02-cover__guest {
    display: flex;
    width: min(100%, 310px);
    flex-direction: column;
    gap: 3px;
    margin: clamp(28px, 5vh, 44px) 0 24px;
    padding: 16px 14px;
    border-top: 1px solid rgba(255, 255, 255, 0.35);
    border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.thm02-cover__guest span,
.thm02-cover__guest small {
    color: rgba(255, 255, 255, 0.78);
    font-size: 12px;
    letter-spacing: 0.08em;
    line-height: 1.55;
}

.thm02-cover__guest strong {
    font-family: var(--thm02-display);
    font-size: clamp(20px, 5vw, 26px);
    font-weight: 550;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

body.theme-thm02[data-theme-state="open"] .thm02-cover {
    visibility: hidden;
    opacity: 0;
    transform: translateY(-3%) scale(1.012);
}

body.theme-thm02[data-theme-state="open"] .thm02-cover__image {
    transform: scale(1.08);
}

/* Intro */
.thm02-intro {
    min-height: 100dvh;
    background: var(--thm02-paper);
}

.thm02-nav {
    position: sticky;
    z-index: 20;
    top: 0;
    display: flex;
    min-height: 68px;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 10px var(--thm02-gutter);
    border-bottom: 1px solid var(--thm02-line);
    background: rgba(255, 253, 249, 0.9);
    backdrop-filter: blur(16px);
}

.thm02-nav__brand {
    flex: 0 0 auto;
    font-family: var(--thm02-display);
    font-size: 25px;
    font-weight: 650;
    letter-spacing: 0.06em;
    line-height: 1;
}

.thm02-nav__brand i {
    margin-inline: 2px;
    color: var(--thm02-rose);
    font-size: 0.7em;
    font-weight: 500;
}

.thm02-nav__links {
    display: none;
    align-items: center;
    gap: clamp(14px, 2.4vw, 30px);
}

.thm02-nav__links a {
    font-size: 12px;
    font-weight: 750;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

.thm02-intro__canvas {
    display: grid;
    min-height: calc(100dvh - 68px);
    align-items: stretch;
}

.thm02-intro__portrait {
    position: relative;
    min-height: 54dvh;
    overflow: hidden;
    background: var(--thm02-blush);
}

.thm02-intro__portrait img {
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    object-position: center 40%;
    filter: saturate(0.76) contrast(0.95) sepia(0.06);
    box-shadow: none !important;
}

.thm02-intro__portrait::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(42, 27, 32, 0.48));
    content: "";
    pointer-events: none;
}

.thm02-intro__portrait figcaption {
    position: absolute;
    z-index: 1;
    right: 20px;
    bottom: 18px;
    color: rgba(255, 255, 255, 0.9);
    font-family: var(--thm02-display);
    font-size: 16px;
    font-style: italic;
}

.thm02-intro__copy {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    padding: clamp(52px, 10vw, 100px) var(--thm02-gutter);
}

.thm02-intro__copy h2 {
    max-width: 100%;
    margin: 10px 0 24px;
    color: var(--thm02-ink);
    font-family: var(--thm02-display);
    font-size: clamp(48px, 10vw, 92px);
    font-weight: 500;
    letter-spacing: -0.05em;
    line-height: 0.88;
    overflow-wrap: normal;
    text-wrap: balance;
}

.thm02-intro__lead {
    max-width: 520px;
    color: var(--thm02-muted);
}

.thm02-intro__event {
    display: flex;
    width: 100%;
    flex-direction: column;
    gap: 2px;
    margin-top: 32px;
    padding: 18px 0;
    border-top: 1px solid var(--thm02-line);
    border-bottom: 1px solid var(--thm02-line);
}

.thm02-intro__event time {
    color: var(--thm02-ink);
    font-family: var(--thm02-display);
    font-size: 22px;
    font-weight: 600;
}

.thm02-intro__event span {
    color: var(--thm02-muted);
    font-size: 12px;
}

.thm02-countdown {
    display: grid;
    width: 100%;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 28px 0 18px;
    border-top: 1px solid var(--thm02-line);
    border-bottom: 1px solid var(--thm02-line);
}

.thm02-countdown > div {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: center;
    padding: 14px 4px 12px;
    border-right: 1px solid var(--thm02-line);
}

.thm02-countdown > div:last-child {
    border-right: 0;
}

.thm02-countdown strong {
    font-family: var(--thm02-display);
    font-size: clamp(24px, 6vw, 38px);
    font-weight: 550;
    line-height: 1;
}

.thm02-countdown span {
    margin-top: 5px;
    color: var(--thm02-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* Couple */
.thm02-couple {
    background:
        linear-gradient(rgba(251, 247, 242, 0.94), rgba(251, 247, 242, 0.94)),
        url("../../../../img/akad.webp") center 24% / cover no-repeat;
}

.thm02-couple__diptych {
    position: relative;
    display: grid;
    width: min(100%, 1100px);
    gap: clamp(58px, 9vw, 100px);
    margin: 0 auto;
}

.thm02-person {
    min-width: 0;
}

.thm02-person__portrait {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--thm02-blush);
}

.thm02-person__portrait::after {
    position: absolute;
    inset: 14px;
    border: 1px solid rgba(255, 255, 255, 0.64);
    content: "";
    pointer-events: none;
}

.thm02-person__portrait img {
    width: 100%;
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    filter: saturate(0.7) contrast(0.96) sepia(0.08);
    box-shadow: none !important;
}

.thm02-person:nth-child(2) .thm02-person__portrait img {
    object-position: center 34%;
}

.thm02-person__portrait > span {
    position: absolute;
    z-index: 2;
    right: 24px;
    bottom: 18px;
    color: rgba(255, 255, 255, 0.88);
    font-family: var(--thm02-display);
    font-size: 19px;
}

.thm02-person__fallback {
    display: grid;
    width: 100%;
    height: 100%;
    place-items: center;
    color: var(--thm02-wine);
    font-family: var(--thm02-display);
    font-size: clamp(72px, 22vw, 140px);
    background: linear-gradient(145deg, #ead8d4, #f4e9e1);
}

.thm02-person__copy {
    padding: 26px 4px 0;
}

.thm02-person__role {
    color: var(--thm02-wine);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.thm02-person h3 {
    max-width: 100%;
    margin: 8px 0 14px;
    font-family: var(--thm02-display);
    font-size: clamp(38px, 8cqw, 56px);
    font-weight: 500;
    letter-spacing: -0.04em;
    line-height: 0.96;
    overflow-wrap: normal;
    word-break: normal;
    text-wrap: balance;
}

.thm02-person--medium h3 { font-size: clamp(34px, 7cqw, 46px); }
.thm02-person--long h3 { font-size: clamp(27px, 5.1cqw, 35px); }
.thm02-person--xlong h3 { font-size: clamp(24px, 4.6cqw, 30px); }

.thm02-person__copy > p:not(.thm02-person__role) {
    color: var(--thm02-muted);
    font-size: 15px;
    line-height: 1.8;
}

.thm02-person .thm02-text-link {
    margin-top: 18px;
}

.thm02-couple__ampersand {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: 50%;
    display: none;
    color: rgba(117, 70, 80, 0.17);
    font-family: var(--thm02-display);
    font-size: clamp(100px, 13vw, 190px);
    line-height: 1;
    transform: translate(-50%, -50%);
}

/* Events */
.thm02-events {
    background: var(--thm02-wine-dark);
    color: #fff;
}

.thm02-events__hero {
    position: relative;
    min-height: min(68dvh, 720px);
    overflow: hidden;
}

.thm02-events__hero img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    filter: saturate(0.63) contrast(0.94) brightness(0.68) sepia(0.1);
    box-shadow: none !important;
}

.thm02-events__hero::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(34, 20, 24, 0.08), rgba(34, 20, 24, 0.72));
    content: "";
}

.thm02-events__hero figcaption {
    position: absolute;
    z-index: 1;
    right: var(--thm02-gutter);
    bottom: clamp(38px, 8vw, 78px);
    left: var(--thm02-gutter);
}

.thm02-events__hero .thm02-kicker {
    color: #ead1d3;
}

.thm02-events__hero h2 {
    max-width: 760px;
    margin-top: 8px;
    font-family: var(--thm02-display);
    font-size: clamp(52px, 11vw, 108px);
    font-weight: 500;
    letter-spacing: -0.05em;
    line-height: 0.86;
}

.thm02-events__cards {
    width: min(100%, 1040px);
    margin: 0 auto;
    padding: clamp(56px, 10vw, 110px) var(--thm02-gutter);
}

.thm02-event {
    display: grid;
    min-width: 0;
    gap: 26px;
    padding: clamp(34px, 6vw, 60px) 0;
    border-top: 1px solid rgba(255, 255, 255, 0.22);
}

.thm02-event:last-child {
    border-bottom: 1px solid rgba(255, 255, 255, 0.22);
}

.thm02-event__date {
    display: flex;
    align-items: baseline;
    gap: 14px;
}

.thm02-event__date strong {
    font-family: var(--thm02-display);
    font-size: clamp(62px, 15vw, 104px);
    font-weight: 500;
    line-height: 0.72;
    overflow-wrap: normal;
    white-space: nowrap;
}

.thm02-event__date span,
.thm02-event__copy > p {
    color: rgba(255, 255, 255, 0.72);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.thm02-event__copy h3 {
    margin: 6px 0 12px;
    font-family: var(--thm02-display);
    font-size: clamp(34px, 7vw, 55px);
    font-weight: 500;
    line-height: 1;
}

.thm02-event__copy time,
.thm02-event__venue,
.thm02-event__copy address {
    display: block;
}

.thm02-event__copy time {
    margin-bottom: 18px;
    font-size: 13px;
    font-weight: 650;
}

.thm02-event__venue {
    font-size: 13px;
}

.thm02-event__copy address {
    max-width: 520px;
    margin-top: 5px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 12px;
    font-style: normal;
    line-height: 1.75;
}

.thm02-event__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px 20px;
    margin-top: 24px;
}

.thm02-events .thm02-button--outline {
    border-color: rgba(255, 255, 255, 0.42);
    color: #fff;
}

.thm02-events .thm02-text-link {
    color: #fff;
}

.thm02-event__map {
    grid-column: 1 / -1;
}

.thm02-event__map summary {
    min-height: 44px;
    padding: 10px 0;
    cursor: pointer;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.thm02-event__map iframe {
    width: 100%;
    height: 280px;
    border: 0;
    filter: grayscale(0.55) sepia(0.18);
}

/* Dress palette and livestream */
.thm02-dresscode {
    display: grid;
    gap: 46px;
    padding: var(--thm02-section-space) var(--thm02-gutter);
    background: #f1e6df;
}

.thm02-dresscode__copy > p:not(.thm02-kicker) {
    max-width: 560px;
    margin-top: 20px;
    color: var(--thm02-muted);
}

.thm02-dresscode__copy > small {
    display: block;
    margin-top: 12px;
    color: var(--thm02-muted);
    font-size: 12px;
}

.thm02-dresscode__palette {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.thm02-dresscode__palette li {
    min-width: 0;
    text-align: center;
}

.thm02-dresscode__palette span {
    display: block;
    aspect-ratio: 1;
    border-radius: 50% 50% 48% 52% / 58% 44% 56% 42%;
    background: var(--thm02-swatch);
    box-shadow: inset 0 0 0 1px rgba(56, 41, 45, 0.1);
}

.thm02-dresscode__palette small {
    display: block;
    margin-top: 2px;
    color: var(--thm02-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
}

.thm02-dresscode__palette strong {
    display: block;
    margin-top: 9px;
    color: var(--thm02-ink);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.35;
}

.thm02-livestream {
    display: grid;
    gap: 32px;
    align-items: center;
    background: var(--thm02-paper);
}

.thm02-livestream__mark {
    display: flex;
    width: clamp(120px, 28vw, 180px);
    aspect-ratio: 1;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 1px solid var(--thm02-line);
    border-radius: 50%;
    color: var(--thm02-wine);
    font-family: var(--thm02-display);
    font-size: clamp(26px, 6vw, 40px);
    font-style: italic;
}

.thm02-livestream__mark i {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #a43645;
    box-shadow: 0 0 0 5px rgba(164, 54, 69, 0.12);
}

.thm02-livestream__copy h2 {
    margin: 8px 0 18px;
    font-family: var(--thm02-display);
    font-size: clamp(42px, 8vw, 70px);
    font-weight: 500;
    line-height: 0.98;
}

.thm02-livestream__copy > p:not(.thm02-kicker) {
    max-width: 620px;
    color: var(--thm02-ink);
    font-size: clamp(15px, 1.8cqw, 17px);
    font-weight: 500;
    line-height: 1.8;
}

.thm02-livestream__copy > p + .thm02-button {
    margin-top: clamp(24px, 4cqw, 32px);
}

.thm02-livestream dl {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 36px;
    margin: 24px 0;
}

.thm02-livestream dl div {
    min-width: 130px;
}

.thm02-livestream dt {
    color: var(--thm02-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.thm02-livestream dd {
    margin-top: 3px;
    font-family: var(--thm02-display);
    font-size: 21px;
}

/* Centered quote */
.thm02-quote {
    position: relative;
    display: grid;
    min-height: min(86dvh, 800px);
    place-items: center;
    overflow: hidden;
    padding: var(--thm02-section-space) var(--thm02-gutter);
    background: #f8f0ea;
    text-align: center;
    isolation: isolate;
}

.thm02-quote__floral {
    position: absolute;
    z-index: -1;
    inset: 0;
    background:
        linear-gradient(rgba(248, 240, 234, 0.78), rgba(248, 240, 234, 0.82)),
        url("../../../../img/akad.webp") center / cover no-repeat;
    filter: saturate(0.65) sepia(0.08);
    transform: none;
}

.thm02-quote blockquote {
    width: min(100%, 920px);
}

.thm02-quote blockquote > span {
    display: block;
    height: 58px;
    color: rgba(117, 70, 80, 0.25);
    font-family: var(--thm02-display);
    font-size: 120px;
    line-height: 0.8;
}

.thm02-quote blockquote p {
    color: var(--thm02-wine-dark);
    font-family: var(--thm02-display);
    font-size: clamp(32px, 7vw, 64px);
    font-weight: 500;
    letter-spacing: -0.025em;
    line-height: 1.12;
    text-wrap: balance;
}

.thm02-quote cite {
    display: block;
    margin-top: 34px;
    color: var(--thm02-wine);
    font-family: var(--thm02-body);
    font-size: 12px;
    font-style: normal;
    font-weight: 750;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

/* Story */
.thm02-story {
    background: var(--thm02-paper);
}

.thm02-story__chapters {
    width: min(100%, 1040px);
    margin: 0 auto;
}

.thm02-story-card {
    display: grid;
    gap: 30px;
    margin-top: clamp(58px, 10vw, 110px);
}

.thm02-story-card:first-child {
    margin-top: 0;
}

.thm02-story-card__media {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--thm02-blush);
}

.thm02-story-card__media img {
    width: 100%;
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    filter: saturate(0.72) contrast(0.95) sepia(0.07);
    box-shadow: none !important;
}

.thm02-story-card__media span {
    position: absolute;
    right: 18px;
    bottom: 13px;
    color: rgba(255, 255, 255, 0.88);
    font-family: var(--thm02-display);
    font-size: 20px;
}

.thm02-story-card__copy {
    align-self: center;
}

.thm02-story-card__copy time {
    color: var(--thm02-wine);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.thm02-story-card__copy h3 {
    margin: 8px 0 16px;
    font-family: var(--thm02-display);
    font-size: clamp(36px, 8cqw, 54px);
    font-weight: 500;
    letter-spacing: -0.03em;
    line-height: 0.98;
    overflow-wrap: normal;
    word-break: normal;
    text-wrap: balance;
}

.thm02-story-card__copy p {
    color: var(--thm02-muted);
    line-height: 1.9;
    white-space: pre-line;
}

/* Gallery */
/* Rows come from the shared gallery layout in theme-system.css. */
.thm02-gallery {
    --theme-gallery-gap: clamp(8px, 1.6vw, 18px);
    background: #eee5de;
}

.thm02-gallery__grid {
    width: min(100%, 1160px);
    margin: 0 auto;
}

.thm02-gallery__item {
    position: relative;
    display: block;
    padding: 0;
    border: 0;
    overflow: hidden;
    background: var(--thm02-blush);
    color: inherit;
    font: inherit;
    cursor: zoom-in;
}

.thm02-gallery__item img {
    width: 100%;
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    filter: saturate(0.76) contrast(0.96) sepia(0.05);
    box-shadow: none !important;
    transition: transform 600ms cubic-bezier(0.22, 1, 0.36, 1), filter 400ms ease;
}

.thm02-gallery__item:hover img {
    filter: saturate(0.9) contrast(1);
    transform: scale(1.035);
}

.thm02-gallery__item > span {
    position: absolute;
    right: 12px;
    bottom: 12px;
    display: grid;
    width: 48px;
    height: 48px;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 253, 249, 0.86);
    color: var(--thm02-wine);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    opacity: 0;
    transition: opacity 180ms ease;
}

.thm02-gallery__item:hover > span,
.thm02-gallery__item:focus-visible > span {
    opacity: 1;
}

/* A coral album sleeve for the enlarged photograph. */
.thm02-gallery-dialog {
    box-sizing: border-box;
    width: min(940px, calc(100vw - 32px));
    max-width: calc(100vw - 32px);
    max-height: calc(100dvh - 32px);
    margin: auto;
    padding: 0;
    overflow: auto;
    border: 1px solid rgba(57, 65, 63, 0.2);
    border-radius: 30px 30px 14px 14px;
    background: var(--thm02-ivory);
    color: var(--thm02-ink);
    box-shadow: 0 28px 90px rgba(30, 41, 36, 0.3);
}

.thm02-gallery-dialog::backdrop {
    background: rgba(30, 41, 36, 0.78);
    backdrop-filter: blur(8px);
}

.thm02-gallery-dialog__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 24px;
    background: var(--thm02-rose);
}

.thm02-gallery-dialog__bar p { margin: 0; }
.thm02-gallery-dialog__kicker {
    font: 700 12px/1.5 var(--thm02-body);
    letter-spacing: 0.14em;
    text-transform: uppercase;
}
.thm02-gallery-dialog__bar p:last-child {
    margin-top: 4px;
    font: 400 clamp(17px, 3vw, 24px)/1.25 var(--thm02-display);
}

.thm02-gallery-dialog button {
    display: inline-flex;
    min-width: 44px;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 10px 16px;
    border: 1px solid rgba(57, 65, 63, 0.28);
    border-radius: 999px;
    background: transparent;
    color: var(--thm02-ink);
    font: 700 12px/1.35 var(--thm02-body);
    cursor: pointer;
}
.thm02-gallery-dialog .thm02-gallery-dialog__close {
    flex: 0 0 44px;
    width: 44px;
    padding: 0;
    background: var(--thm02-ivory);
    font-size: 28px;
    font-weight: 400;
}
.thm02-gallery-dialog button:focus-visible {
    outline: 3px solid var(--thm02-wine-dark);
    outline-offset: 3px;
}
.thm02-gallery-dialog button:disabled { opacity: 0.4; cursor: default; }

.thm02-gallery-dialog__frame { margin: 0; padding: 20px 24px 0; }
.thm02-gallery-dialog__frame img {
    box-sizing: border-box;
    width: 100%;
    height: min(60dvh, 620px);
    max-height: calc(100dvh - 230px);
    border-radius: 12px;
    background: var(--thm02-sage);
    object-fit: contain;
    filter: none;
}
.thm02-gallery-dialog__frame figcaption {
    padding-top: 12px;
    color: var(--thm02-muted);
    font: 400 12px/1.6 var(--thm02-body);
    text-align: center;
    overflow-wrap: anywhere;
}
.thm02-gallery-dialog[data-gallery-loading="true"] [data-theme-gallery-image] { opacity: 0.4; }
.thm02-gallery-dialog__controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: 12px;
    padding: 18px 24px 22px;
}
.thm02-gallery-dialog__controls [data-theme-gallery-counter] {
    color: var(--thm02-wine);
    font: 700 12px/1.4 var(--thm02-body);
    white-space: nowrap;
}

@media (max-width: 479px) {
    .thm02-gallery-dialog { width: calc(100vw - 20px); max-width: calc(100vw - 20px); border-radius: 22px 22px 10px 10px; }
    .thm02-gallery-dialog__bar { padding: 14px 16px; }
    .thm02-gallery-dialog__frame { padding: 14px 14px 0; }
    .thm02-gallery-dialog__controls { padding: 14px 16px 18px; }
    .thm02-gallery-dialog__button-label { display: none; }
}

/* RSVP and forms */
.thm02-rsvp {
    display: grid;
    background: var(--thm02-paper);
}

.thm02-rsvp__photo {
    position: relative;
    min-height: 52dvh;
    overflow: hidden;
    background: var(--thm02-blush);
}

.thm02-rsvp__photo img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border-radius: 0 !important;
    object-fit: cover;
    filter: saturate(0.64) contrast(0.96) sepia(0.1);
    box-shadow: none !important;
}

.thm02-rsvp__photo::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 50%, rgba(45, 28, 34, 0.58));
    content: "";
}

.thm02-rsvp__photo figcaption {
    position: absolute;
    z-index: 1;
    right: 22px;
    bottom: 20px;
    color: #fff;
    font-family: var(--thm02-display);
    font-size: 18px;
    font-style: italic;
}

.thm02-rsvp__form-wrap {
    padding: var(--thm02-section-space) var(--thm02-gutter);
}

.thm02-rsvp .thm02-heading {
    margin-bottom: 40px;
}

.thm02-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
}

.thm02-field {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 7px;
}

.thm02-field label {
    color: var(--thm02-wine);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: 0.13em;
    line-height: 1.5;
    text-transform: uppercase;
}

.thm02-field :where(input, select, textarea) {
    width: 100%;
    min-width: 0;
    min-height: 48px;
    padding: 11px 0;
    border: 0;
    border-bottom: 1px solid rgba(117, 70, 80, 0.34);
    border-radius: 0;
    outline: 0;
    background: transparent;
    color: var(--thm02-ink);
    font-family: var(--thm02-body);
    font-size: 14px;
    line-height: 1.6;
}

.thm02-field textarea {
    min-height: 114px;
    resize: vertical;
}

.thm02-field :where(input, select, textarea):focus {
    border-bottom-color: var(--thm02-wine);
    box-shadow: 0 1px 0 var(--thm02-wine);
}

.thm02-field :where(input, textarea)::placeholder {
    color: #9a8b8e;
    opacity: 1;
}

.thm02-form__status {
    min-height: 1.5em;
    color: var(--thm02-wine);
    font-size: 12px;
}

.thm02-form [aria-busy="true"] {
    cursor: wait;
    opacity: 0.65;
}

/* Wishes */
.thm02-wishes {
    background: #f1e6df;
}

.thm02-wishes__featured {
    display: flex;
    width: min(100%, 1040px);
    gap: 16px;
    margin: 0 auto clamp(54px, 9vw, 100px);
    padding: 2px 2px 14px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline mandatory;
    scrollbar-color: var(--thm02-rose) transparent;
    scrollbar-width: thin;
}

.thm02-wish-card {
    flex: 0 0 min(84%, 480px);
    padding: clamp(28px, 5vw, 48px);
    border: 1px solid rgba(117, 70, 80, 0.16);
    background: rgba(255, 253, 249, 0.68);
    scroll-snap-align: start;
}

.thm02-wish-card blockquote {
    font-family: var(--thm02-display);
    font-size: clamp(25px, 5vw, 38px);
    line-height: 1.25;
    overflow-wrap: normal;
    word-break: normal;
}

.thm02-wish-card figcaption {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-top: 24px;
}

.thm02-wish-card figcaption > img,
.thm02-wish-card__initial {
    display: grid;
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
    place-items: center;
    border-radius: 50%;
    object-fit: cover;
    background: var(--thm02-wine);
    color: #fff;
    font-family: var(--thm02-display);
    font-size: 22px;
}

.thm02-wish-card figcaption > span:last-child {
    display: flex;
    flex-direction: column;
}

.thm02-wish-card figcaption strong {
    font-size: 12px;
}

.thm02-wish-card figcaption small {
    color: var(--thm02-muted);
    font-size: 12px;
}

.thm02-wishes__guestbook {
    display: grid;
    width: min(100%, 1040px);
    gap: 50px;
    margin: 0 auto;
}

.thm02-wishes__messages {
    min-width: 0;
}

.thm02-wishes__messages ul {
    margin: 16px 0;
    border-top: 1px solid var(--thm02-line);
}

.thm02-wishes__messages li {
    padding: 20px 0;
    border-bottom: 1px solid var(--thm02-line);
}

.thm02-wishes__messages li strong,
.thm02-wishes__messages li time,
.thm02-wishes__messages li p {
    display: block;
}

.thm02-wishes__messages li strong {
    font-family: var(--thm02-display);
    font-size: 22px;
    line-height: 1.15;
}

.thm02-wishes__messages li time {
    margin: 3px 0 7px;
    color: var(--thm02-muted);
    font-size: 12px;
}

.thm02-wishes__messages li p {
    color: var(--thm02-muted);
    font-size: 15px;
    line-height: 1.75;
    white-space: pre-wrap;
}

/* Gift */
.thm02-gift {
    padding: var(--thm02-section-space) var(--thm02-gutter);
    background: var(--thm02-paper);
}

.thm02-gift__canvas {
    display: grid;
    width: min(100%, 1120px);
    margin: 0 auto;
    background:
        linear-gradient(rgba(255, 253, 249, 0.92), rgba(255, 253, 249, 0.92)),
        url("../../../../img/akad.webp") right bottom / cover no-repeat;
}

.thm02-gift__photo {
    min-height: 46dvh;
    overflow: hidden;
    background: var(--thm02-blush);
}

.thm02-gift__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.65) contrast(0.96) sepia(0.1);
}

.thm02-gift__copy {
    align-self: center;
    padding: clamp(38px, 7vw, 72px) 0;
}

.thm02-gift__copy > h2 {
    margin: 8px 0 20px;
    font-family: var(--thm02-display);
    font-size: clamp(45px, 9vw, 78px);
    font-weight: 500;
    line-height: 0.94;
}

.thm02-gift__copy > p:not(.thm02-kicker) {
    max-width: 580px;
    color: var(--thm02-muted);
}

.thm02-gift-card {
    display: grid;
    gap: 24px;
    margin-top: 36px;
    padding: clamp(24px, 5vw, 42px);
    border: 1px solid var(--thm02-line);
    background: rgba(255, 253, 249, 0.82);
    backdrop-filter: blur(7px);
}

.thm02-gift-card__select {
    display: flex;
    min-width: 0;
    align-items: center;
    gap: 15px;
}

.thm02-gift-card__select select {
    flex: 1;
}

.thm02-gift-card__select img {
    width: auto;
    max-width: 76px;
    height: 26px;
    flex: 0 0 auto;
    object-fit: contain;
}

.thm02-gift-card__account {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
}

.thm02-gift-card__account > span {
    color: var(--thm02-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.thm02-gift-card__account strong {
    max-width: 100%;
    margin: 3px 0;
    font-family: var(--thm02-display);
    font-size: clamp(27px, 5cqw, 36px);
    font-weight: 550;
    line-height: 1.1;
    overflow-wrap: normal;
    white-space: nowrap;
}

.thm02-gift-card__account small {
    color: var(--thm02-muted);
    font-size: 12px;
}

.thm02-gift-card__account .thm02-button {
    margin-top: 20px;
}

/* Health + closing */
.thm02-health {
    display: grid;
    gap: 42px;
    padding: var(--thm02-section-space) var(--thm02-gutter);
    background: #dfe0d1;
}

.thm02-health__copy > p:not(.thm02-kicker) {
    max-width: 570px;
    margin-top: 20px;
    color: #5f6053;
}

.thm02-health ol {
    border-top: 1px solid rgba(56, 41, 45, 0.2);
}

.thm02-health li {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 16px;
    padding: 18px 0;
    border-bottom: 1px solid rgba(56, 41, 45, 0.2);
}

.thm02-health li span {
    color: var(--thm02-wine);
    font-family: var(--thm02-display);
    font-size: 18px;
}

.thm02-closing {
    position: relative;
    display: grid;
    min-height: 100dvh;
    place-items: center;
    overflow: hidden;
    background: var(--thm02-wine-dark);
    color: #fff;
    isolation: isolate;
}

.thm02-closing__media > img,
.thm02-closing__veil {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.thm02-closing__media > img {
    z-index: -2;
    object-fit: cover;
    filter: saturate(0.55) contrast(0.94) brightness(0.68) sepia(0.08);
}

.thm02-closing__veil {
    z-index: -1;
    background: radial-gradient(circle at 50% 38%, rgba(48, 29, 35, 0.08), rgba(42, 25, 31, 0.75));
}

.thm02-closing__copy {
    display: flex;
    width: min(calc(100% - 38px), 640px);
    min-height: min(72dvh, 640px);
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 36px 24px;
    border: 1px solid rgba(255, 255, 255, 0.4);
    text-align: center;
}

.thm02-closing .thm02-kicker {
    color: #ead1d3;
}

.thm02-closing__thanks {
    margin-top: 12px;
    font-family: var(--thm02-display);
    font-size: clamp(35px, 8vw, 60px);
    font-style: italic;
}

.thm02-closing h2 {
    max-width: 100%;
    margin: 12px 0;
    font-family: var(--thm02-display);
    font-size: clamp(48px, 11vw, 88px);
    font-weight: 500;
    letter-spacing: -0.045em;
    line-height: 0.88;
    overflow-wrap: normal;
    text-wrap: balance;
}

.thm02-closing time {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.thm02-closing small {
    margin-top: clamp(42px, 8vh, 72px);
    color: rgba(255, 255, 255, 0.72);
    font-size: 12px;
}

.thm02-closing small a {
    border-bottom: 1px solid currentColor;
}

/* Screen reader status */

.thm02-sr-status {
    position: fixed;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}

/* Wider component layouts respond to the invitation pane, not the viewport. */
@container thm02-page (min-width: 560px) {
    .thm02-nav__links {
        display: flex;
    }

    .thm02-intro__canvas {
        grid-template-columns: minmax(0, 0.88fr) minmax(0, 1.12fr);
    }

    .thm02-intro__portrait {
        min-height: calc(100dvh - 68px);
    }

    .thm02-couple__diptych {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: clamp(32px, 5vw, 70px);
    }

    .thm02-couple__ampersand {
        display: block;
    }

    .thm02-event {
        grid-template-columns: minmax(120px, 0.42fr) minmax(0, 1fr);
    }

    .thm02-dresscode,
    .thm02-health,
    .thm02-livestream {
        grid-template-columns: minmax(0, 1.2fr) minmax(220px, 0.8fr);
    }

    .thm02-dresscode__palette {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .thm02-story-card {
        grid-template-columns: minmax(0, 1fr) minmax(0, 0.84fr);
        gap: clamp(34px, 6vw, 76px);
        align-items: center;
    }

    .thm02-story-card--reverse .thm02-story-card__media {
        grid-column: 2;
    }

    .thm02-story-card--reverse .thm02-story-card__copy {
        grid-row: 1;
        grid-column: 1;
    }

    .thm02-wishes__guestbook,
    .thm02-gift-card {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .thm02-field--wide {
        grid-column: 1 / -1;
    }

    .thm02-wishes__guestbook .thm02-form {
        align-content: start;
    }

    .thm02-gift-card__account {
        justify-content: center;
        padding-left: clamp(0px, 3vw, 32px);
        border-left: 1px solid var(--thm02-line);
    }
}

@container thm02-page (min-width: 780px) {
    .thm02-rsvp {
        grid-template-columns: minmax(0, 0.8fr) minmax(430px, 1.2fr);
    }

    .thm02-rsvp__photo {
        min-height: 100%;
    }

    .thm02-gift__canvas {
        grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
        gap: clamp(40px, 7vw, 90px);
    }

    .thm02-gift__copy {
        padding-right: clamp(20px, 4vw, 52px);
    }
}

@media (min-width: 1024px) {
    body.theme-thm02.desktop-invitation-preview,
    body.theme-thm02.desktop-invitation-presentation {
        height: auto;
        min-height: 100dvh;
        overflow: visible;
        overflow-x: clip;
        background: var(--thm02-wine-dark);
    }

    body.theme-thm02:not([data-theme-state="open"]).desktop-invitation-preview,
    body.theme-thm02:not([data-theme-state="open"]).desktop-invitation-presentation {
        height: 100dvh;
        overflow: hidden;
    }

    body.theme-thm02 .desktop-invitation-shell--enabled {
        height: auto;
        min-height: 100dvh;
        grid-template-rows: auto;
        align-items: start;
        overflow: visible;
    }

    body.theme-thm02 .desktop-invitation-shell--enabled > .desktop-invitation-shell__visual {
        position: sticky;
        top: 0;
        height: 100dvh;
        min-height: 100dvh;
        align-self: start;
    }

    body.theme-thm02 .desktop-invitation-shell--enabled > .desktop-invitation-shell__invitation {
        position: relative;
        height: auto;
        min-height: 100dvh;
        overflow: visible;
    }

    body.theme-thm02 .thm02-cover {
        position: absolute;
        right: 0;
        left: 0;
        height: 100dvh;
        min-height: 100dvh;
    }

    body.theme-thm02 .desktop-invitation-shell__photo {
        filter: grayscale(0.1) sepia(0.13) saturate(0.68) contrast(0.96) brightness(0.9);
    }

    body.theme-thm02 .desktop-invitation-shell__visual::before {
        background:
            linear-gradient(180deg, rgba(55, 34, 40, 0.05), rgba(50, 30, 37, 0.66)),
            radial-gradient(circle at 50% 32%, transparent 18%, rgba(43, 26, 31, 0.22) 80%);
    }

    body.theme-thm02 .desktop-invitation-shell__copy {
        top: auto;
        bottom: clamp(44px, 8vh, 90px);
        translate: -50% 0;
    }

    body.theme-thm02 .desktop-invitation-shell__eyebrow {
        color: #e8cfd2;
        font-family: var(--thm02-body);
        font-size: 12px;
        letter-spacing: 0.22em;
    }

    body.theme-thm02 .desktop-invitation-shell__names {
        font-family: var(--thm02-display);
        font-size: clamp(42px, 4.2vw, 72px);
        letter-spacing: -0.02em;
        line-height: 0.95;
    }

    body.theme-thm02 .desktop-invitation-shell__date {
        font-family: var(--thm02-body);
        font-size: 12px;
    }

}

@media (max-width: 559px) {
    .thm02-cover__frame {
        min-height: min(78dvh, 650px);
    }

    .thm02-cover__guest {
        margin-top: 22px;
    }

    .thm02-section,
    .thm02-rsvp__form-wrap,
    .thm02-gift,
    .thm02-dresscode,
    .thm02-health,
    .thm02-quote {
        padding-inline: max(20px, env(safe-area-inset-left));
    }

    .thm02-intro__copy,
    .thm02-events__cards {
        padding-inline: max(20px, env(safe-area-inset-left));
    }

    .thm02-person__copy {
        padding-inline: 0;
    }
}

@media (max-width: 359px) {
    .thm02-nav {
        min-height: 60px;
    }

    .thm02-cover__frame {
        width: calc(100% - 24px);
        padding-inline: 16px;
    }

    .thm02-cover__monogram {
        width: 48px;
        height: 48px;
        margin-bottom: 16px;
    }

    .thm02-cover h1 {
        font-size: clamp(36px, 11.5vw, 46px);
    }

    .thm02-countdown span {
        font-size: 12px;
        letter-spacing: 0.05em;
    }

    .thm02-button {
        padding-inline: 16px;
        letter-spacing: 0.09em;
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .thm02-cover,
    .thm02-cover__image,
    .thm02-invitation,
    .thm02-gallery__item img {
        transition: none !important;
    }
}

@media (forced-colors: active) {
    .thm02-cover__frame,
    .thm02-closing__copy,
    .thm02-wish-card,
    .thm02-gift-card {
        border: 1px solid CanvasText;
    }
}

/* Floating controls use the shared dock (theme-system.css), coloured for this theme. */
.thm02-dock {
    --theme-dock-bg: #b94351;
    --theme-dock-fg: #fffdf9;
    --theme-dock-border: rgba(255, 253, 249, 0.4);
    --theme-dock-bg-on-dark: rgba(255, 253, 249, 0.94);
    --theme-dock-fg-on-dark: #b94351;
    --theme-dock-border-on-dark: rgba(117, 70, 80, 0.24);
}

/* Names wrap only between words: a name shrinks to its line instead (the templates estimate --thm02-name-em). */
.thm02-intro h2,
.thm02-closing h2 {
    width: 100%;
    container-type: inline-size;
}

.thm02-intro h2 > span,
.thm02-closing h2 > span {
    display: block;
    font-size: min(1em, max(1rem, 92cqi / var(--thm02-name-em, 3)));
    overflow-wrap: break-word;
}

/* Teks & Font: a text the couple writes may hold one long word (Bapak/Ibu/Saudara/i). Body text
   breaks instead of pushing past its column (headings shrink first: text-fit.js). Zero
   specificity, so the theme's own wrapping rules win. */
:where(body.theme-thm02) :where(h4, p, small, li, blockquote, figcaption) {
    overflow-wrap: break-word;
}

/* On phones these sections are one implicit grid column, which a long heading word would widen
   past the screen; the copy stays in the column so text-fit.js shrinks the heading instead. */
.thm02-dresscode__copy,
.thm02-health__copy,
.thm02-livestream__copy {
    min-width: 0;
}
