/* Royal — contemporary palace: burgundy, ivory, antique gold, architectural framing. */
.t-royal { --radius: 2px; --arch: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140' preserveAspectRatio='none'%3E%3Cpath d='M0 140 V60 C0 50 6 45 11 44 C10 36 15 30 22 29 C22 20 28 15 35 15 C37 8 43 4 47 5 C48 2 49 1 50 1 C51 1 52 2 53 5 C57 4 63 8 65 15 C72 15 78 20 78 29 C85 30 90 36 89 44 C94 45 100 50 100 60 V140 Z'/%3E%3C/svg%3E"); }
.t-royal .s-title { font-weight: 500; letter-spacing: -.01em; color: var(--heading); }
.t-royal .eyebrow { color: var(--ink-accent); letter-spacing: .3em; }
.ry-divider { display: flex; align-items: center; justify-content: center; gap: .8rem; color: var(--accent); margin: 1.25rem auto; max-width: 16rem; }
.ry-divider span { flex: 1; height: 1px; background: currentColor; opacity: .55; }
.ry-jaali { position: absolute; inset: 0; color: var(--accent); opacity: .16; }

/* nav */
.t-royal .site-nav__mark { background: var(--deep); color: var(--deep-ink); border-color: var(--accent); }
.t-royal .site-menu__mono { font-weight: 600; letter-spacing: .12em; text-transform: uppercase; font-size: 1rem; }

/* hero */
.ry-hero { position: relative; background: var(--deep); color: var(--deep-ink); padding: 6.5rem 0 4rem; overflow: hidden; }
.ry-hero::after { content: ''; position: absolute; inset: auto 0 0; height: 30%; background: linear-gradient(transparent, color-mix(in srgb, #000 30%, var(--deep))); pointer-events: none; }
.ry-hero__inner { position: relative; z-index: 1; display: grid; gap: 2.5rem; justify-items: center; text-align: center; }
.ry-window { position: relative; width: min(80vw, 24rem); aspect-ratio: 100 / 140; color: var(--accent); }
.ry-window__photo { position: absolute; inset: 0; overflow: hidden; -webkit-mask: var(--arch) center / 100% 100% no-repeat; mask: var(--arch) center / 100% 100% no-repeat; }
.ry-window__photo img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.06); animation: ry-settle 2.4s var(--ease) forwards; }
@keyframes ry-settle { to { transform: scale(1); } }
.ry-window__line { position: absolute; inset: -12px -12px 0; width: calc(100% + 24px); height: calc(100% + 12px); }
.ry-hero__text { display: grid; justify-items: center; gap: .6rem; }
.ry-hero .eyebrow { color: color-mix(in srgb, var(--accent) 80%, var(--deep-ink)); }
.ry-names { font-family: var(--font-display); font-weight: 500; font-size: clamp(2.6rem, 10vw, 5.4rem); line-height: 1; letter-spacing: .04em; text-transform: uppercase; display: grid; }
.ry-names__amp { font-style: italic; text-transform: none; font-weight: 400; font-size: .5em; color: var(--accent); margin: .2em 0; letter-spacing: 0; }
.ry-hero__line { font-family: var(--font-display); font-style: italic; font-size: 1.15rem; opacity: .85; }
.ry-hero__date { font-family: var(--font-display); font-size: clamp(1.3rem, 3.6vw, 1.7rem); letter-spacing: .06em; }
.ry-hero__place { font-size: .78rem; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); font-weight: 600; }
@media (min-width: 60rem) {
  .ry-hero { min-height: 100svh; display: grid; align-items: center; padding: 7rem 0 5rem; }
  .ry-hero__inner { grid-template-columns: 1fr auto; gap: 5rem; text-align: right; justify-items: end; }
  .ry-hero__text { justify-items: end; order: -1; }
  .ry-hero__text .ry-divider { margin-right: 0; }
  .ry-window { width: min(34vw, 27rem); }
}

/* burgundy bands */
.t-royal .s--welcome, .t-royal .s--countdown, .t-royal .s--rsvp { background: var(--deep); color: var(--deep-ink); }
.t-royal .s--welcome .s-title, .t-royal .s--countdown .s-title, .t-royal .s--rsvp .s-title { color: var(--deep-ink); }
.t-royal .s--rsvp .lede, .t-royal .s--countdown .countdown__label { color: color-mix(in srgb, var(--deep-ink) 75%, transparent); }
.t-royal .welcome__text { font-family: var(--font-display); font-size: clamp(1.25rem, 3.2vw, 1.65rem); line-height: 1.6; }
.t-royal .welcome__sign { margin-top: 1.75rem; font-size: .78rem; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); }
.t-royal .s--rsvp .rsvp { color: var(--ink); border-color: color-mix(in srgb, var(--accent) 45%, transparent); box-shadow: 0 0 0 6px color-mix(in srgb, var(--deep-ink) 8%, transparent); }
.t-royal .countdown__unit + .countdown__unit { border-left: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); padding-left: clamp(.75rem, 4vw, 2.5rem); }

/* doorways */
.ry-doors { display: grid; gap: 2.25rem 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 36rem) { .ry-doors { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 64rem) { .ry-doors { grid-template-columns: repeat(4, 1fr); } }
.ry-door { text-align: center; display: grid; gap: 1.1rem; }
.ry-door__arch { position: relative; aspect-ratio: 100 / 130; background: var(--deep); -webkit-mask: var(--arch) center / 100% 100% no-repeat; mask: var(--arch) center / 100% 100% no-repeat; display: grid; place-items: center; }
.ry-door__arch img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.ry-door:hover .ry-door__arch img { transform: scale(1.06); }
.ry-door__num { font-family: var(--font-display); font-size: 3rem; color: var(--accent); }
.ry-door__body { display: grid; gap: .35rem; justify-items: center; }
.t-royal .event__name { color: var(--heading); font-weight: 500; font-size: 1.45rem; }
.t-royal .event__where, .t-royal .event__desc { font-size: .9rem; }

/* story */
.ry-story__photo { position: relative; aspect-ratio: 100 / 132; width: min(100%, 28rem); margin-inline: auto; }
.ry-story__photo::before { content: ''; position: absolute; inset: 14px -14px -14px 14px; border: 1px solid var(--accent); -webkit-mask: var(--arch) center / 100% 100% no-repeat; mask: var(--arch) center / 100% 100% no-repeat; background: color-mix(in srgb, var(--accent) 12%, transparent); }
.ry-story__text { margin-top: 1.25rem; font-size: 1.1rem; }
.ry-story__text p:first-child::first-letter { float: left; font-family: var(--font-display); font-size: 3.6em; line-height: .82; padding: .06em .12em 0 0; color: var(--accent); }

/* gallery, venue, family */
.t-royal .gallery__item { border-radius: 0; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); }
.t-royal .venue__img { border-radius: 0; box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent), 14px 14px 0 var(--deep); }
.t-royal .family__names { color: var(--heading); }
.t-royal .s--family, .t-royal .s--travel { background: var(--soft); }
.t-royal .btn { letter-spacing: .14em; text-transform: uppercase; font-size: .8rem; }

/* footer */
.ry-footer { position: relative; background: var(--deep); color: var(--deep-ink); overflow: hidden; }
.ry-footer .site-footer__names { text-transform: uppercase; letter-spacing: .06em; font-weight: 500; }
.ry-footer .lede { color: color-mix(in srgb, var(--deep-ink) 80%, transparent); }
.ry-monogram { width: 5.5rem; height: 5.5rem; margin: 0 auto 1.5rem; display: grid; place-items: center; font-family: var(--font-display); font-size: 1.4rem; letter-spacing: .05em; color: var(--accent); border: 1px solid var(--accent); -webkit-mask: none; border-radius: 50% 50% 4px 4px; }

/* ---------- events, scroll-stacked (themes/event-stack.js) ----------
   Only while the stack runs (.is-evstack): each event becomes one card of this design,
   laid over the last by the scroll. Without it the layout above is untouched. */
.is-evstack .ry-doors { max-width: 54rem; margin-inline: auto; }
.is-evstack .ry-door {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  padding: clamp(1.25rem, 3vw, 2.25rem); gap: 1rem; align-items: center;
  box-shadow: 0 30px 60px -38px rgba(60, 12, 20, .55);
}
.is-evstack .ry-door__arch { width: min(58%, 14rem); margin-inline: auto; }
@media (min-width: 48rem) {
  .is-evstack .ry-door { grid-template-columns: minmax(0, 18rem) minmax(0, 1fr); gap: 2.5rem; }
  .is-evstack .ry-door__arch { width: 100%; }
}
