/* Tema Royal Palace — namespace .ti-theme-royal-palace, prefix kelas royal- (Premium · Luxury: ballroom istana, royal blue, emas antik, 2.5D) */
.ti-theme-royal-palace {
  --royal-blue: #0B1F4D; --royal-navy: #07152F; --royal-mid: #13295C; --royal-gold: #C9A45C; --royal-gold-l: #E7C979; --royal-gold-d: #8A6A2E;
  --royal-ivory: #F7F1E5; --royal-white: #FFFFFF; --royal-marble: #E8E4DC; --royal-ink: #0B1F4D; --royal-soft: #4E5A74;
  --royal-ease: cubic-bezier(.22,.61,.24,1);
  --ti-ease: cubic-bezier(.22,.61,.24,1); --ti-dur: 1.3s;
  background: var(--royal-navy); color: var(--royal-ivory); font-family: "Jost", "Segoe UI", sans-serif; font-weight: 300; font-size: 16px; line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
.ti-theme-royal-palace h1, .ti-theme-royal-palace h2, .ti-theme-royal-palace h3 { margin: 0; font-weight: 400; }
.ti-theme-royal-palace .royal-kicker { font-family: "Cinzel", Georgia, serif; font-size: 11px; letter-spacing: .38em; text-transform: uppercase; color: var(--royal-gold); margin: 0 0 10px; }
.ti-theme-royal-palace .royal-label { display: block; font-family: "Cinzel", Georgia, serif; font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--royal-gold); margin: 0 0 6px; }
.ti-theme-royal-palace .royal-title { font-family: "Playfair Display", Georgia, serif; font-weight: 400; font-size: clamp(34px, 9.4vw, 54px); line-height: 1.1; }
.ti-theme-royal-palace .royal-text { max-width: 540px; margin: 0 auto 22px; color: var(--royal-soft); }
.ti-theme-royal-palace .royal-text--light { color: rgba(247,241,229,.78); }
.ti-theme-royal-palace .royal-text--sm { font-size: 14.5px; margin-bottom: 8px; }
.ti-theme-royal-palace .royal-divider { display: block; width: 260px; max-width: 72%; margin: 16px auto 0; }
.ti-theme-royal-palace .royal-crown { width: 58px; filter: drop-shadow(0 0 14px rgba(231,201,121,.45)); }
.ti-theme-royal-palace .royal-sharp { display: inline-block; filter: blur(8px); opacity: .35; transition: filter 1.8s var(--royal-ease) .25s, opacity 1.8s var(--royal-ease) .25s; }
.ti-theme-royal-palace .is-in .royal-sharp, .ti-theme-royal-palace .is-in.royal-sharp { filter: none; opacity: 1; }
.ti-theme-royal-palace .royal-shimmer { background: linear-gradient(105deg, #F7F1E5 0%, #F7F1E5 38%, #FFF6DA 46%, #E7C979 50%, #FFF6DA 54%, #F7F1E5 62%, #F7F1E5 100%); background-size: 260% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; animation: royal-shimmer 8s ease-in-out infinite; }
.ti-theme-royal-palace .royal-link { display: inline-block; color: var(--royal-gold-d); text-decoration: none; font-size: 13.5px; letter-spacing: .06em; background: linear-gradient(var(--royal-gold), var(--royal-gold)) 0 100% / 0 1px no-repeat; transition: background-size .6s var(--royal-ease), color .3s; padding-bottom: 2px; }
.ti-theme-royal-palace .royal-link:hover { background-size: 100% 1px; color: var(--royal-blue); }

/* Tombol */
.ti-theme-royal-palace .royal-btn { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 46px; padding: 10px 30px; overflow: hidden; border: 1px solid rgba(201,164,92,.8); border-radius: 999px; background: linear-gradient(180deg, #13295C, #0B1F4D); color: var(--royal-gold-l); font-family: "Cinzel", Georgia, serif; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; text-decoration: none; cursor: pointer; box-shadow: inset 0 0 0 3px #0B1F4D, inset 0 0 0 4px rgba(231,201,121,.28), 0 14px 26px -16px rgba(0,0,0,.9); transition: transform .5s var(--royal-ease), box-shadow .5s, color .4s; }
.ti-theme-royal-palace .royal-btn::before { content: ""; position: absolute; inset: 0; background: linear-gradient(105deg, rgba(231,201,121,0) 30%, rgba(255,240,205,.32) 50%, rgba(231,201,121,0) 70%); transform: translateX(-120%); transition: transform 1s var(--royal-ease); }
.ti-theme-royal-palace .royal-btn:hover { transform: translateY(-2px); color: #FFF3CF; box-shadow: inset 0 0 0 3px #0B1F4D, inset 0 0 0 4px rgba(231,201,121,.45), 0 0 24px rgba(201,164,92,.25), 0 16px 26px -16px rgba(0,0,0,.9); }
.ti-theme-royal-palace .royal-btn:hover::before { transform: translateX(120%); }
.ti-theme-royal-palace .royal-btn svg { flex: none; }
.ti-theme-royal-palace .royal-btn--small { min-height: 42px; padding: 8px 24px; font-size: 11px; }
.ti-theme-royal-palace .royal-btn--ghost { margin-top: 30px; background: transparent; box-shadow: none; }

/* Sudut emas (berulang di foto, kartu, form, kutipan) */
.ti-theme-royal-palace .royal-corner { position: absolute; width: 46px; pointer-events: none; z-index: 2; }
.ti-theme-royal-palace .royal-corner--tl { top: -6px; left: -6px; }
.ti-theme-royal-palace .royal-corner--tr { top: -6px; right: -6px; transform: scaleX(-1); }
.ti-theme-royal-palace .royal-corner--bl { bottom: -6px; left: -6px; transform: scaleY(-1); }
.ti-theme-royal-palace .royal-corner--br { bottom: -6px; right: -6px; transform: scale(-1, -1); }

/* =============================== LOADING =============================== */
.ti-theme-royal-palace .royal-loader { position: fixed; inset: 0; z-index: 60; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; background: radial-gradient(60% 50% at 50% 45%, #13295C 0%, #07152F 70%); transition: opacity .8s ease, visibility 0s linear .8s; animation: royal-loader-auto .8s ease 5s forwards; }
.ti-theme-royal-palace.royal-loaded .royal-loader { opacity: 0; visibility: hidden; pointer-events: none; }
.ti-theme-royal-palace .royal-loader__crown { width: 52px; animation: royal-crown-pulse 2.4s ease-in-out infinite; }
.ti-theme-royal-palace .royal-loader__brand { margin: 0; font-family: "Cinzel", serif; font-size: 12px; letter-spacing: .5em; text-transform: uppercase; color: var(--royal-gold-l); padding-left: .5em; }
.ti-theme-royal-palace .royal-loader__line { position: relative; width: 140px; height: 1px; background: rgba(201,164,92,.25); overflow: hidden; }
.ti-theme-royal-palace .royal-loader__line i { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(231,201,121,0), #E7C979, rgba(231,201,121,0)); transform: translateX(-100%); animation: royal-line 1.4s ease-in-out infinite; }

/* =============================== LAPISAN BERSAMA =============================== */
.ti-theme-royal-palace .royal-l { position: absolute; inset: 0; width: 100%; height: 100%; display: block; object-fit: cover; object-position: 50% 100%; }
.ti-theme-royal-palace .royal-pillar { position: absolute; bottom: 0; height: 100%; width: auto; max-width: none; pointer-events: none; filter: drop-shadow(18px 0 30px rgba(0,0,0,.55)); }
.ti-theme-royal-palace .royal-pillar--l { left: -26vw; }
.ti-theme-royal-palace .royal-pillar--r { right: -26vw; filter: drop-shadow(-18px 0 30px rgba(0,0,0,.55)); }
.ti-theme-royal-palace .royal-haze { position: absolute; inset: 0; background: radial-gradient(60% 40% at 50% 18%, rgba(243,217,160,.22), rgba(243,217,160,0) 70%), linear-gradient(180deg, rgba(7,21,47,0) 60%, rgba(7,21,47,.55) 100%); pointer-events: none; }
.ti-theme-royal-palace .royal-chandelier { position: absolute; left: 50%; top: -2vh; width: min(62vw, 380px); translate: -50% 0; pointer-events: none; z-index: 4; }
.ti-theme-royal-palace .royal-chandelier img { position: relative; width: 100%; display: block; filter: drop-shadow(0 10px 18px rgba(0,0,0,.5)); }
.ti-theme-royal-palace .royal-chandelier__glow { position: absolute; left: 50%; top: 55%; width: 170%; aspect-ratio: 1; translate: -50% -50%; border-radius: 50%; background: radial-gradient(circle, rgba(255,233,184,.32) 0%, rgba(242,207,133,.12) 35%, rgba(242,207,133,0) 65%); animation: royal-glow 6s ease-in-out infinite alternate; }
.ti-theme-royal-palace .royal-floral { position: absolute; width: min(56vw, 380px); pointer-events: none; filter: drop-shadow(0 12px 16px rgba(0,0,0,.45)); }
.ti-theme-royal-palace .royal-floral--tl { left: -8px; top: -8px; }
.ti-theme-royal-palace .royal-floral--tr { right: -8px; top: -8px; transform: scaleX(-1); }
.ti-theme-royal-palace .royal-floral--bl { left: -8px; bottom: -8px; transform: scaleY(-1); }
.ti-theme-royal-palace .royal-floral--br { right: -8px; bottom: -8px; transform: scale(-1, -1); }
.ti-theme-royal-palace .royal-dust { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 5; }
.ti-theme-royal-palace .royal-dust i { position: absolute; bottom: -10px; left: calc(var(--n) * 7.1% + 3%); width: 3px; height: 3px; border-radius: 50%; background: radial-gradient(circle, #FFF6DA 0%, rgba(231,201,121,.9) 45%, rgba(231,201,121,0) 72%); opacity: 0; animation: royal-dust calc(18s + var(--n) * 1.1s) linear calc(var(--n) * -2.2s) infinite; }
.ti-theme-royal-palace .royal-dust i:nth-child(3n) { width: 5px; height: 5px; box-shadow: 0 0 8px 2px rgba(231,201,121,.25); }
@media (max-width: 600px) { .ti-theme-royal-palace .royal-dust i:nth-child(n+8) { display: none; } }

/* =============================== PEMBUKA =============================== */
.ti-theme-royal-palace .royal-cover { position: fixed; inset: 0; z-index: 40; overflow: hidden; background: var(--royal-navy); transition: opacity .9s ease 1.45s, visibility 0s linear 2.4s; }
.ti-opened.ti-theme-royal-palace .royal-cover { opacity: 0; visibility: hidden; pointer-events: none; }
.ti-theme-royal-palace .royal-cover__scene { position: absolute; inset: 0; transform-origin: 50% 45%; transition: transform 2.4s var(--royal-ease); }
.ti-theme-royal-palace .royal-curtain { position: absolute; top: 0; bottom: 0; width: 50.4vw; z-index: 2; pointer-events: none; transform-style: preserve-3d; }
.ti-theme-royal-palace .royal-curtain img { width: 100%; height: 100%; display: block; object-fit: fill; }
.ti-theme-royal-palace .royal-curtain--l { left: 0; transform-origin: 0 50%; filter: drop-shadow(14px 0 26px rgba(0,0,0,.6)); }
.ti-theme-royal-palace .royal-curtain--r { right: 0; transform-origin: 100% 50%; filter: drop-shadow(-14px 0 26px rgba(0,0,0,.6)); }
.ti-theme-royal-palace .royal-curtain--r img { transform: scaleX(-1); }
.ti-theme-royal-palace .royal-curtain__shade { position: absolute; inset: 0; opacity: 0; background: repeating-linear-gradient(90deg, rgba(3,9,26,.55) 0, rgba(3,9,26,0) 22px, rgba(150,180,240,.08) 32px, rgba(3,9,26,0) 44px); transition: opacity 1.2s ease .1s; }
.ti-theme-royal-palace .royal-valance { position: absolute; left: 0; right: 0; top: 0; height: clamp(84px, 15vh, 150px); z-index: 3; background: url(assets/img/valance.svg) 50% 0 / auto 100% repeat-x; filter: drop-shadow(0 10px 14px rgba(0,0,0,.5)); pointer-events: none; }
.ti-theme-royal-palace .royal-cover .royal-chandelier { top: 1vh; width: min(54vw, 340px); }
.ti-theme-royal-palace .royal-cover__candle { position: absolute; bottom: 1.5vh; width: min(20vw, 120px); z-index: 4; pointer-events: none; filter: drop-shadow(0 0 18px rgba(242,207,133,.35)); }
.ti-theme-royal-palace .royal-cover__candle--l { left: 3vw; }
.ti-theme-royal-palace .royal-cover__candle--r { right: 3vw; }
.ti-theme-royal-palace .royal-cover__content { position: absolute; left: 50%; top: 31%; z-index: 6; width: min(86vw, 560px); translate: -50% 0; display: flex; flex-direction: column; align-items: center; text-align: center; transition: opacity .8s ease, transform 1.2s var(--royal-ease), filter .8s ease; }
.ti-theme-royal-palace .royal-cover .royal-crown { width: 50px; margin-bottom: 12px; }
.ti-theme-royal-palace .royal-cover__names { display: flex; flex-direction: column; align-items: center; font-family: "Playfair Display", Georgia, serif; font-weight: 400; font-size: clamp(44px, 12.6vw, 90px); line-height: 1.02; color: var(--royal-ivory); text-shadow: 0 4px 26px rgba(0,0,0,.6); overflow-wrap: anywhere; }
.ti-theme-royal-palace .royal-cover__names em { font-style: italic; font-size: .45em; color: var(--royal-gold-l); margin: .06em 0; }
.ti-theme-royal-palace .royal-cover__line { width: min(64vw, 280px); margin: 16px 0 10px; }
.ti-theme-royal-palace .royal-cover__date { margin: 0 0 18px; font-family: "Cinzel", serif; font-size: 12px; letter-spacing: .26em; text-transform: uppercase; color: rgba(247,241,229,.88); }
.ti-theme-royal-palace .royal-cover__guest { margin-bottom: 22px; padding: 9px 26px; border-top: 1px solid rgba(201,164,92,.45); border-bottom: 1px solid rgba(201,164,92,.45); background: linear-gradient(90deg, rgba(7,21,47,0), rgba(7,21,47,.6), rgba(7,21,47,0)); }
.ti-theme-royal-palace .royal-cover__guest:empty { display: none; }
.ti-theme-royal-palace .royal-cover__guest .ti-guest__label { font-size: 12px; letter-spacing: .05em; text-transform: none; color: rgba(247,241,229,.72); }
.ti-theme-royal-palace .royal-cover__guest .ti-guest__name { font-family: "Playfair Display", serif; font-size: 21px; color: var(--royal-gold-l); }
.ti-theme-royal-palace .royal-flare { position: absolute; inset: -20% -40%; z-index: 7; pointer-events: none; opacity: 0; background: linear-gradient(105deg, rgba(255,240,205,0) 38%, rgba(255,240,205,.5) 50%, rgba(255,240,205,0) 62%); transform: translateX(-60%); }

/* urutan pembuka (dimulai setelah loading selesai) */
.ti-theme-royal-palace.royal-ready .royal-palace { animation: royal-fade 1.6s ease both; }
.ti-theme-royal-palace.royal-ready .royal-cover .royal-pillar { animation: royal-fade 1.8s ease .2s both; }
.ti-theme-royal-palace.royal-ready .royal-cover .royal-chandelier img { animation: royal-light 2.2s ease .5s both; }
.ti-theme-royal-palace.royal-ready .royal-cover .royal-chandelier__glow { animation: royal-fade 2.4s ease .9s both, royal-glow 6s ease-in-out 3.3s infinite alternate; }
.ti-theme-royal-palace.royal-ready .royal-cover .royal-dust { animation: royal-fade 2s ease 1.2s both; }
.ti-theme-royal-palace.royal-ready .royal-curtain--l { animation: royal-close-l 1.8s cubic-bezier(.45,0,.2,1) 1.3s both; }
.ti-theme-royal-palace.royal-ready .royal-curtain--r { animation: royal-close-r 1.8s cubic-bezier(.45,0,.2,1) 1.3s both; }
.ti-theme-royal-palace.royal-ready .royal-valance { animation: royal-drop 1.4s var(--royal-ease) 1.1s both; }
.ti-theme-royal-palace.royal-ready .royal-cover__candle { animation: royal-up 1.6s var(--royal-ease) 2.1s both; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > * { animation: royal-up 1.5s var(--royal-ease) both; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(1) { animation: royal-crown-in 1.6s var(--royal-ease) 2.6s both; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(2) { animation-delay: 2.9s; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(3) { animation-delay: 3.05s; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(4) { animation-delay: 3.3s; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(5) { animation-delay: 3.4s; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(6) { animation-delay: 3.5s; }
.ti-theme-royal-palace.royal-ready .royal-cover__content > :nth-child(7) { animation: royal-up 1.5s var(--royal-ease) 3.7s both, royal-pulse 3.4s ease-in-out 5.4s infinite; }

/* buka: tirai tersibak bak kain (lipatan merapat + perspektif), flare cahaya, chandelier makin terang */
.ti-opened.ti-theme-royal-palace .royal-curtain--l { animation: royal-open-l 1.9s cubic-bezier(.6,0,.25,1) both; }
.ti-opened.ti-theme-royal-palace .royal-curtain--r { animation: royal-open-r 1.9s cubic-bezier(.6,0,.25,1) both; }
.ti-opened.ti-theme-royal-palace .royal-curtain__shade { opacity: 1; }
.ti-opened.ti-theme-royal-palace .royal-valance { animation: none; transform: translateY(-105%); transition: transform 1.3s var(--royal-ease) .5s; }
.ti-opened.ti-theme-royal-palace .royal-cover__content { opacity: 0; transform: scale(.95); filter: blur(6px); }
.ti-opened.ti-theme-royal-palace .royal-cover__candle { animation: none; opacity: 0; transition: opacity .8s ease; }
.ti-opened.ti-theme-royal-palace .royal-cover__scene { transform: scale(1.1); }
.ti-opened.ti-theme-royal-palace .royal-cover .royal-chandelier__glow { animation: royal-flash-glow 1.8s ease both; }
.ti-opened.ti-theme-royal-palace .royal-flare { animation: royal-flare 1.7s cubic-bezier(.45,0,.3,1) .35s both; }

/* =============================== NAVIGASI, TOAST, KURSOR =============================== */
.ti-theme-royal-palace .royal-nav { position: fixed; left: 50%; bottom: 14px; z-index: 30; display: flex; gap: 2px; padding: 5px 8px; border: 1px solid rgba(201,164,92,.5); border-radius: 999px; background: rgba(7,21,47,.82); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: 0 14px 30px -14px rgba(0,0,0,.9); transform: translate(-50%, 160%); opacity: 0; transition: transform .7s var(--royal-ease), opacity .5s ease; }
.ti-opened.ti-theme-royal-palace .royal-nav { transform: translate(-50%, 0); opacity: 1; transition-delay: 2.4s; }
.ti-opened.ti-theme-royal-palace .royal-nav.is-hidden { transform: translate(-50%, 160%); opacity: 0; transition-delay: 0s; }
.ti-theme-royal-palace .royal-nav a { position: relative; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; color: var(--royal-gold-l); text-decoration: none; transition: color .3s, background .4s; }
.ti-theme-royal-palace .royal-nav a span { position: absolute; bottom: 52px; left: 50%; translate: -50% 6px; padding: 4px 10px; border-radius: 4px; background: rgba(7,21,47,.95); border: 1px solid rgba(201,164,92,.4); font-family: "Cinzel", serif; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; white-space: nowrap; color: var(--royal-ivory); opacity: 0; pointer-events: none; transition: opacity .3s, translate .4s var(--royal-ease); }
.ti-theme-royal-palace .royal-nav a:hover, .ti-theme-royal-palace .royal-nav a.is-active { color: #FFF3CF; background: rgba(201,164,92,.16); }
.ti-theme-royal-palace .royal-nav a:hover span, .ti-theme-royal-palace .royal-nav a:focus-visible span { opacity: 1; translate: -50% 0; }
.ti-theme-royal-palace .royal-toast { position: fixed; left: 50%; bottom: 80px; z-index: 70; padding: 12px 24px; border: 1px solid rgba(201,164,92,.6); border-radius: 999px; background: rgba(7,21,47,.95); color: var(--royal-ivory); font-family: "Cinzel", serif; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; white-space: nowrap; box-shadow: 0 18px 30px -16px rgba(0,0,0,.9), 0 0 20px rgba(201,164,92,.15); opacity: 0; transform: translate(-50%, 14px); pointer-events: none; transition: opacity .45s ease, transform .55s var(--royal-ease); }
.ti-theme-royal-palace .royal-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.ti-theme-royal-palace .royal-toast::before { content: "\2713"; margin-right: 10px; color: var(--royal-gold-l); }
.ti-theme-royal-palace .royal-cursor { display: none; }
@media (hover: hover) and (pointer: fine) {
  .ti-theme-royal-palace .royal-cursor { display: block; position: fixed; left: 0; top: 0; z-index: 36; width: 280px; height: 280px; margin: -140px 0 0 -140px; border-radius: 50%; pointer-events: none; background: radial-gradient(circle, rgba(255,240,205,.08) 0%, rgba(201,164,92,.035) 42%, rgba(201,164,92,0) 70%); mix-blend-mode: screen; opacity: 0; transition: opacity .6s; }
  .ti-theme-royal-palace .royal-cursor.is-on { opacity: 1; }
}

/* =============================== MAIN =============================== */
.ti-theme-royal-palace .royal-main { position: relative; z-index: 1; overflow: clip; background: var(--royal-navy); }
.ti-theme-royal-palace .royal-section { position: relative; padding: 104px 22px; text-align: center; overflow: hidden; }
.ti-theme-royal-palace .royal-section > * { position: relative; z-index: 1; }
.ti-theme-royal-palace .royal-head { margin: 0 auto 32px; }
.ti-theme-royal-palace .royal-head__crown { width: 40px; margin-bottom: 12px; opacity: .95; }
.ti-theme-royal-palace .royal-ivory { color: var(--royal-ink); background: radial-gradient(110% 60% at 50% 0%, #FFFDF8 0%, rgba(255,253,248,0) 70%), var(--royal-ivory); }
.ti-theme-royal-palace .royal-ivory::before, .ti-theme-royal-palace .royal-marble::before { content: ""; position: absolute; inset: 0; z-index: 0; background: url(assets/img/marble.svg) 50% 50% / 900px 900px; opacity: .35; pointer-events: none; }
.ti-theme-royal-palace .royal-marble { color: var(--royal-ink); background: linear-gradient(180deg, #EFEAE1, #E8E4DC); }
.ti-theme-royal-palace .royal-marble::before { opacity: .8; }
.ti-theme-royal-palace .royal-ivory .royal-title, .ti-theme-royal-palace .royal-marble .royal-title { color: var(--royal-blue); }
.ti-theme-royal-palace .royal-ivory .royal-kicker, .ti-theme-royal-palace .royal-ivory .royal-label, .ti-theme-royal-palace .royal-marble .royal-kicker, .ti-theme-royal-palace .royal-marble .royal-label { color: var(--royal-gold-d); }
.ti-theme-royal-palace .royal-blue { background: radial-gradient(90% 50% at 50% 0%, rgba(42,78,154,.45), rgba(42,78,154,0) 70%), linear-gradient(180deg, var(--royal-blue) 0%, #0E2558 50%, var(--royal-blue) 100%); }
.ti-theme-royal-palace .royal-navy { background: radial-gradient(80% 60% at 50% 50%, rgba(19,41,92,.8), rgba(19,41,92,0) 75%), var(--royal-navy); }
.ti-theme-royal-palace .royal-blue::before, .ti-theme-royal-palace .royal-navy::before { content: ""; position: absolute; inset: 0; z-index: 0; background: url(assets/img/damask.svg) 0 0 / 70px 70px; opacity: .05; pointer-events: none; }
.ti-theme-royal-palace .royal-blue .royal-title, .ti-theme-royal-palace .royal-navy .royal-title { color: var(--royal-ivory); }

/* HERO 2.5D */
.ti-theme-royal-palace .royal-hero { position: relative; height: 170vh; background: var(--royal-navy); }
.ti-theme-royal-palace .royal-hero__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; }
@supports (height: 100svh) { .ti-theme-royal-palace .royal-hero__sticky { height: 100svh; } }
.ti-theme-royal-palace .royal-hero__sticky::before { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; background: radial-gradient(70% 45% at 50% 58%, rgba(7,21,47,.62), rgba(7,21,47,.15) 70%), linear-gradient(180deg, rgba(7,21,47,.2) 0%, rgba(7,21,47,0) 30%, rgba(7,21,47,.35) 70%, var(--royal-navy) 100%); }
.ti-theme-royal-palace .royal-hero .royal-d1 { transform: translateY(calc(var(--ti-q, 0) * 20px)) scale(1.06); }
.ti-theme-royal-palace .royal-hero .royal-pillar--l { translate: calc(var(--ti-q, 0) * -4vw) calc(var(--ti-q, 0) * -30px); }
.ti-theme-royal-palace .royal-hero .royal-pillar--r { translate: calc(var(--ti-q, 0) * 4vw) calc(var(--ti-q, 0) * -30px); }
.ti-theme-royal-palace .royal-hero .royal-d3 { top: -1vh; z-index: 2; margin-top: calc(var(--ti-q, 0) * -45px); }
.ti-theme-royal-palace .royal-hero .royal-d4 { z-index: 4; translate: 0 calc(var(--ti-q, 0) * -70px); }
.ti-theme-royal-palace .royal-drape { position: absolute; top: 0; bottom: 0; width: 12vw; max-width: 200px; z-index: 4; pointer-events: none; }
.ti-theme-royal-palace .royal-drape img { width: 100%; height: 100%; display: block; object-fit: fill; }
.ti-theme-royal-palace .royal-drape--l { left: 0; translate: calc(var(--ti-q, 0) * -60%) calc(var(--ti-q, 0) * -60px); filter: drop-shadow(12px 0 22px rgba(0,0,0,.55)); }
.ti-theme-royal-palace .royal-drape--r { right: 0; translate: calc(var(--ti-q, 0) * 60%) calc(var(--ti-q, 0) * -60px); filter: drop-shadow(-12px 0 22px rgba(0,0,0,.55)); }
.ti-theme-royal-palace .royal-drape--r img { transform: scaleX(-1); }
.ti-theme-royal-palace .royal-hero .royal-dust { z-index: 5; }
.ti-theme-royal-palace .royal-hero__content { position: absolute; left: 50%; top: 56%; z-index: 6; width: min(86vw, 640px); transform: translate(-50%, -50%); translate: 0 calc(var(--ti-q, 0) * -110px); opacity: calc(1 - var(--ti-q, 0) * 1.5); text-align: center; }
.ti-theme-royal-palace .royal-hero__names { display: flex; flex-direction: column; align-items: center; font-family: "Playfair Display", Georgia, serif; font-weight: 400; font-size: clamp(50px, 14vw, 104px); line-height: 1.02; color: var(--royal-ivory); text-shadow: 0 6px 30px rgba(0,0,0,.65); overflow-wrap: anywhere; --ti-dist: 30px; }
.ti-theme-royal-palace .royal-hero__names em { font-style: italic; font-size: .42em; color: var(--royal-gold-l); margin: .05em 0; }
.ti-theme-royal-palace .royal-hero__date { margin: 14px 0 26px; font-family: "Cinzel", serif; font-size: 12px; letter-spacing: .28em; text-transform: uppercase; color: rgba(247,241,229,.9); }
.ti-theme-royal-palace .royal-explore { display: inline-flex; flex-direction: column; align-items: center; gap: 10px; font-family: "Cinzel", serif; font-size: 10px; letter-spacing: .3em; text-transform: uppercase; color: var(--royal-gold-l); text-decoration: none; }
.ti-theme-royal-palace .royal-explore i { position: relative; width: 22px; height: 36px; border: 1px solid rgba(231,201,121,.7); border-radius: 12px; }
.ti-theme-royal-palace .royal-explore i::after { content: ""; position: absolute; left: 50%; top: 7px; width: 2px; height: 7px; margin-left: -1px; border-radius: 2px; background: var(--royal-gold-l); animation: royal-wheel 2s ease-in-out infinite; }

/* MEMPELAI */
.ti-theme-royal-palace .royal-couple__grid { display: grid; grid-template-columns: 1fr; gap: 10px; max-width: 1000px; margin: 30px auto 0; align-items: start; }
.ti-theme-royal-palace .royal-person { max-width: 420px; margin: 0 auto; }
.ti-theme-royal-palace .royal-portrait { position: relative; width: min(70vw, 300px); margin: 0 auto 30px; --ti-dist: 40px; }
.ti-theme-royal-palace .royal-portrait__mat { padding: 12px; background: var(--royal-white); box-shadow: 0 30px 50px -30px rgba(11,31,77,.55), inset 0 0 0 1px rgba(201,164,92,.55); }
.ti-theme-royal-palace .royal-portrait__photo { position: relative; aspect-ratio: 3 / 4; overflow: hidden; background: linear-gradient(160deg, #E8E4DC, #CFC6B6); box-shadow: 0 0 0 1px rgba(201,164,92,.45); }
.ti-theme-royal-palace .royal-portrait__img { width: 100%; height: 100%; object-fit: cover; display: block; scale: .94; opacity: 0; transition: scale 1.8s var(--royal-ease) .3s, opacity 1.4s ease .3s, transform 1.2s var(--royal-ease); }
.ti-theme-royal-palace .royal-portrait.is-in .royal-portrait__img { scale: 1; opacity: 1; }
.ti-theme-royal-palace .royal-portrait:hover .royal-portrait__img { transform: scale(1.05); }
.ti-theme-royal-palace .royal-portrait__photo .ti-couple-monogram { display: grid; place-items: center; width: 100%; height: 100%; font-family: "Playfair Display", serif; font-size: 110px; color: var(--royal-blue); }
.ti-theme-royal-palace .royal-person__nick { font-family: "Playfair Display", serif; font-size: clamp(40px, 10.5vw, 54px); line-height: 1.08; color: var(--royal-blue); }
.ti-theme-royal-palace .royal-person__name { font-family: "Cinzel", serif; font-size: 12.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--royal-gold-d); margin: 8px 0 10px; }
.ti-theme-royal-palace .royal-couple__amp { font-family: "Playfair Display", serif; font-style: italic; font-size: 60px; line-height: 1; color: var(--royal-gold); margin: 4px 0 22px; }

/* KISAH CINTA — editorial */
.ti-theme-royal-palace .royal-timeline { position: relative; max-width: 900px; margin: 40px auto 0; padding-left: 44px; text-align: left; }
.ti-theme-royal-palace .royal-timeline__line { position: absolute; left: 14px; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, rgba(201,164,92,0), var(--royal-gold) 6%, var(--royal-gold) 94%, rgba(201,164,92,0)); transform-origin: 50% 0; scale: 1 min(1, calc(var(--ti-p, 1) * 1.7)); }
.ti-theme-royal-palace .royal-chapter { position: relative; margin-bottom: 56px; }
.ti-theme-royal-palace .royal-chapter__dot { position: absolute; left: -37px; top: 10px; width: 13px; height: 13px; rotate: 45deg; background: var(--royal-ivory); border: 1px solid var(--royal-gold); box-shadow: 0 0 0 4px rgba(232,228,220,.9), inset 0 0 0 3px var(--royal-ivory), inset 0 0 0 7px var(--royal-blue); }
.ti-theme-royal-palace .royal-chapter__body { --ti-dist: 36px; }
.ti-theme-royal-palace .royal-chapter__no { display: block; font-family: "Playfair Display", serif; font-style: italic; font-size: 46px; line-height: 1; color: rgba(201,164,92,.55); margin-bottom: 8px; }
.ti-theme-royal-palace .royal-chapter__img { position: relative; overflow: hidden; aspect-ratio: 4 / 3; margin-bottom: 16px; padding: 8px; background: var(--royal-white); box-shadow: 0 24px 40px -28px rgba(11,31,77,.6), inset 0 0 0 1px rgba(201,164,92,.5); }
.ti-theme-royal-palace .royal-chapter__img img { width: 100%; height: 100%; object-fit: cover; display: block; scale: 1.08; transition: scale 2s var(--royal-ease) .2s; }
.ti-theme-royal-palace .is-in .royal-chapter__img img { scale: 1; }
.ti-theme-royal-palace .royal-chapter h3 { font-family: "Playfair Display", serif; font-size: 30px; line-height: 1.15; color: var(--royal-blue); margin: 2px 0 8px; }
.ti-theme-royal-palace .royal-chapter p { margin: 0; color: var(--royal-soft); font-size: 15px; }

/* TRANSISI BALLROOM */
.ti-theme-royal-palace .royal-ballroom { position: relative; min-height: 82vh; display: flex; align-items: center; justify-content: center; overflow: hidden; text-align: center; padding: 120px 22px 90px; }
.ti-theme-royal-palace .royal-ballroom__bg { position: absolute; inset: -10% 0; width: 100%; height: 120%; object-fit: cover; object-position: 50% 80%; transform: translateY(calc((var(--ti-p, .5) - .5) * -90px)) scale(1.08); }
.ti-theme-royal-palace .royal-ballroom__veil { position: absolute; inset: 0; background: linear-gradient(180deg, var(--royal-navy) 0%, rgba(7,21,47,.62) 25%, rgba(7,21,47,.6) 75%, var(--royal-blue) 100%); }
.ti-theme-royal-palace .royal-ballroom__chandelier { top: -4%; width: min(54vw, 320px); z-index: 2; translate: -50% calc((var(--ti-p, .5) - .5) * 60px); }
.ti-theme-royal-palace .royal-candle { position: absolute; bottom: 4%; width: min(22vw, 130px); z-index: 2; translate: 0 calc((var(--ti-p, .5) - .5) * -50px); }
.ti-theme-royal-palace .royal-candle img { position: relative; width: 100%; display: block; }
.ti-theme-royal-palace .royal-candle--l { left: 5vw; }
.ti-theme-royal-palace .royal-candle--r { right: 5vw; }
.ti-theme-royal-palace .royal-candle__glow { position: absolute; left: 50%; top: 4%; width: 190%; aspect-ratio: 1; translate: -50% -38%; border-radius: 50%; background: radial-gradient(circle, rgba(255,226,160,.35) 0%, rgba(242,190,110,.12) 38%, rgba(242,190,110,0) 66%); animation: royal-flicker 4.8s ease-in-out infinite; }
.ti-theme-royal-palace .royal-ballroom .royal-dust { z-index: 3; }
.ti-theme-royal-palace .royal-ballroom__text { position: relative; z-index: 4; margin-top: 22vh; }
.ti-theme-royal-palace .royal-ballroom__title { font-family: "Playfair Display", serif; font-style: italic; font-weight: 400; font-size: clamp(36px, 10vw, 64px); line-height: 1.1; color: var(--royal-ivory); text-shadow: 0 6px 26px rgba(0,0,0,.6); }

/* ACARA — kartu mewah */
.ti-theme-royal-palace .royal-events__grid { display: grid; grid-template-columns: 1fr; gap: 34px; max-width: 920px; margin: 0 auto; }
.ti-theme-royal-palace .royal-events__item { --ti-dist: 40px; }
.ti-theme-royal-palace .royal-card { position: relative; height: 100%; padding: 44px 26px 32px; border: 1px solid rgba(201,164,92,.45); background: linear-gradient(170deg, #13295C 0%, #0B1F4D 55%, #07152F 100%); box-shadow: 0 30px 50px -32px rgba(0,0,0,.95), inset 0 0 0 8px rgba(7,21,47,.35), inset 0 0 0 9px rgba(201,164,92,.16); transition: transform .6s var(--royal-ease), box-shadow .6s ease, border-color .6s ease; }
.ti-theme-royal-palace .royal-card:hover { transform: translateY(-6px); border-color: rgba(231,201,121,.75); box-shadow: 0 36px 50px -30px rgba(0,0,0,.95), 0 0 28px rgba(201,164,92,.14), inset 0 0 0 8px rgba(7,21,47,.35), inset 0 0 0 9px rgba(201,164,92,.26); }
.ti-theme-royal-palace .royal-card__crown { width: 34px; margin-bottom: 12px; }
.ti-theme-royal-palace .royal-card__name { font-family: "Playfair Display", serif; font-size: 34px; line-height: 1.1; color: var(--royal-ivory); }
.ti-theme-royal-palace .royal-card__line { width: 200px; max-width: 70%; margin: 14px auto 18px; }
.ti-theme-royal-palace .royal-card__info { list-style: none; margin: 0 auto 24px; padding: 0; max-width: 320px; text-align: left; }
.ti-theme-royal-palace .royal-card__info li { display: flex; gap: 12px; align-items: flex-start; padding: 9px 0; border-bottom: 1px solid rgba(201,164,92,.16); font-size: 14.5px; color: rgba(247,241,229,.85); }
.ti-theme-royal-palace .royal-card__info li:last-child { border-bottom: 0; }
.ti-theme-royal-palace .royal-card__info svg { flex: none; margin-top: 3px; color: var(--royal-gold-l); }
.ti-theme-royal-palace .royal-card__info strong { font-weight: 500; color: var(--royal-ivory); }
.ti-theme-royal-palace .royal-card__actions { margin-top: 14px; }
.ti-theme-royal-palace .royal-card__actions .ti-btn--maps { display: none; }
.ti-theme-royal-palace .ti-btn { border-radius: 999px; font-family: "Jost", sans-serif; font-weight: 400; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; transition: transform .4s var(--royal-ease), box-shadow .4s, background .4s, color .4s; }
.ti-theme-royal-palace .ti-btn--primary, .ti-theme-royal-palace .ti-btn--maps { background: var(--royal-gold); border-color: var(--royal-gold); color: var(--royal-navy); }
.ti-theme-royal-palace .ti-btn--ghost { background: transparent; border-color: rgba(201,164,92,.6); color: var(--royal-gold-l); }
.ti-theme-royal-palace .ti-btn:hover { transform: translateY(-2px); }

/* COUNTDOWN */
.ti-theme-royal-palace .royal-count__chandelier { position: absolute; left: 50%; top: -6%; width: 520px; max-width: none; translate: -50% 0; opacity: .08; z-index: 0; }
.ti-theme-royal-palace .royal-countdown { display: flex; justify-content: center; gap: 0; max-width: 520px; margin: 0 auto; border-top: 1px solid rgba(201,164,92,.45); border-bottom: 1px solid rgba(201,164,92,.45); }
.ti-theme-royal-palace .royal-countdown .ti-countdown__item { position: relative; flex: 1; padding: 20px 4px 16px; background: transparent; }
.ti-theme-royal-palace .royal-countdown .ti-countdown__item + .ti-countdown__item::before { content: ""; position: absolute; left: 0; top: 22%; bottom: 22%; width: 1px; background: linear-gradient(180deg, rgba(201,164,92,0), rgba(201,164,92,.7), rgba(201,164,92,0)); }
.ti-theme-royal-palace .royal-countdown .ti-countdown__num { font-family: "Playfair Display", serif; font-size: 40px; line-height: 1.1; color: var(--royal-ivory); }
.ti-theme-royal-palace .royal-countdown .ti-countdown__label { font-family: "Cinzel", serif; font-size: 9.5px; letter-spacing: .26em; text-transform: uppercase; color: var(--royal-gold); opacity: 1; }
.ti-theme-royal-palace .royal-count__date { margin: 28px 0 0; font-family: "Cinzel", serif; font-size: 12px; letter-spacing: .28em; text-transform: uppercase; color: rgba(247,241,229,.7); }

/* VIDEO */
.ti-theme-royal-palace .royal-video { position: relative; max-width: 840px; margin: 0 auto; padding: 8px; border: 1px solid rgba(201,164,92,.45); }

/* GALERI — editorial masonry */
.ti-theme-royal-palace .royal-masonry { max-width: 1200px; margin: 0 auto; columns: 2; column-gap: 10px; text-align: left; }
.ti-theme-royal-palace .royal-shot { position: relative; display: block; margin: 0 0 10px; break-inside: avoid; overflow: hidden; background: #DDD6C9; box-shadow: 0 20px 34px -26px rgba(11,31,77,.8); --ti-dist: 36px; }
.ti-theme-royal-palace .royal-shot img { display: block; width: 100%; height: 100%; object-fit: cover; scale: .94; filter: blur(4px); transition: scale 1.8s var(--royal-ease) .1s, filter 1.4s ease .1s, transform 1.2s var(--royal-ease); }
.ti-theme-royal-palace .royal-shot.is-in img { scale: 1; filter: none; }
.ti-theme-royal-palace .royal-shot--0 { aspect-ratio: 4 / 5; }
.ti-theme-royal-palace .royal-shot--1 { aspect-ratio: 1 / 1; }
.ti-theme-royal-palace .royal-shot--2 { aspect-ratio: 3 / 4; }
.ti-theme-royal-palace .royal-shot--3 { aspect-ratio: 4 / 3; }
.ti-theme-royal-palace .royal-shot--4 { aspect-ratio: 2 / 3; }
.ti-theme-royal-palace .royal-shot--5 { aspect-ratio: 5 / 4; }
.ti-theme-royal-palace .royal-shot::after { content: ""; position: absolute; inset: 10px; border: 1px solid rgba(247,241,229,0); transition: border-color .6s ease, inset .6s var(--royal-ease); pointer-events: none; }
.ti-theme-royal-palace .royal-shot:hover img { transform: scale(1.05); }
.ti-theme-royal-palace .royal-shot:hover::after { inset: 14px; border-color: rgba(247,241,229,.75); }

/* KUTIPAN — marmer + royal blue */
.ti-theme-royal-palace .royal-quote { background: radial-gradient(80% 60% at 50% 40%, #1B3A7A 0%, var(--royal-blue) 55%, var(--royal-navy) 100%); }
.ti-theme-royal-palace .royal-quote__box { position: relative; max-width: 620px; margin: 0 auto; padding: 48px 28px 40px; color: var(--royal-ink); background: url(assets/img/marble.svg) 50% 50% / 700px 700px, var(--royal-marble); box-shadow: 0 40px 60px -36px rgba(0,0,0,.95), inset 0 0 0 9px rgba(255,255,255,.35), inset 0 0 0 10px rgba(201,164,92,.5); }
.ti-theme-royal-palace .royal-quote__box .royal-kicker, .ti-theme-royal-palace .royal-quote__box .royal-label { color: var(--royal-gold-d); }
.ti-theme-royal-palace .royal-quote__text { margin: 10px auto 4px; font-family: "Playfair Display", serif; font-style: italic; font-size: clamp(19px, 5vw, 24px); line-height: 1.6; color: var(--royal-blue); }

/* RSVP */
.ti-theme-royal-palace .royal-form { position: relative; max-width: 540px; margin: 0 auto; padding: 44px 26px 32px; text-align: left; color: var(--royal-ink); background: var(--royal-ivory); border: 1px solid rgba(201,164,92,.7); box-shadow: 0 40px 60px -36px rgba(0,0,0,.95), inset 0 0 0 7px var(--royal-ivory), inset 0 0 0 8px rgba(201,164,92,.35); }
.ti-theme-royal-palace .ti-field label, .ti-theme-royal-palace .ti-field legend { font-family: "Cinzel", serif; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--royal-blue); }
.ti-theme-royal-palace .ti-field input[type="text"], .ti-theme-royal-palace .ti-field input[type="number"], .ti-theme-royal-palace .ti-field input[type="tel"], .ti-theme-royal-palace .ti-field select, .ti-theme-royal-palace .ti-field textarea { font-family: "Jost", sans-serif; font-weight: 300; font-size: 15px; color: var(--royal-blue); border: 1px solid #D9C9A2; border-radius: 2px; background: #FFFFFF; transition: border-color .3s, box-shadow .3s; }
.ti-theme-royal-palace .ti-field input:focus, .ti-theme-royal-palace .ti-field select:focus, .ti-theme-royal-palace .ti-field textarea:focus { outline: none; border-color: var(--royal-gold); box-shadow: 0 0 0 3px rgba(201,164,92,.18); }
.ti-theme-royal-palace .ti-choice span { font-family: "Jost", sans-serif; border-color: #D9C9A2; }
.ti-theme-royal-palace .royal-form .ti-btn--primary, .ti-theme-royal-palace .royal-form button[type="submit"] { width: 100%; min-height: 48px; background: var(--royal-blue); border-color: var(--royal-blue); color: var(--royal-gold-l); font-family: "Cinzel", serif; letter-spacing: .24em; }

/* UCAPAN */
.ti-theme-royal-palace .royal-wishes__box { max-width: 660px; margin: 0 auto; text-align: left; }
.ti-theme-royal-palace .royal-wishes .ti-guestbook__item { position: relative; margin-bottom: 14px; padding: 22px 22px 18px 60px; border: 1px solid rgba(201,164,92,.35); border-radius: 2px; background: #FFFFFF; box-shadow: 0 18px 30px -26px rgba(11,31,77,.55); }
.ti-theme-royal-palace .royal-wishes .ti-guestbook__item::before { content: "\201C"; position: absolute; left: 18px; top: 6px; font-family: "Playfair Display", serif; font-size: 54px; line-height: 1; color: var(--royal-gold); }
.ti-theme-royal-palace .royal-wishes .ti-guestbook__item strong, .ti-theme-royal-palace .royal-wishes .ti-guestbook__item b { font-family: "Cinzel", serif; font-weight: 400; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--royal-blue); }
.ti-theme-royal-palace .royal-wishes .ti-guestbook__item p { font-family: "Playfair Display", serif; font-style: italic; font-size: 16.5px; line-height: 1.6; color: var(--royal-soft); }
.ti-theme-royal-palace .royal-wishes form, .ti-theme-royal-palace .royal-wishes .ti-guestbook__form { padding: 22px; margin-bottom: 22px; border: 1px solid rgba(201,164,92,.35); background: #FFFFFF; }

/* HADIAH */
.ti-theme-royal-palace .royal-gift { display: grid; gap: 22px; max-width: 780px; margin: 0 auto; }
.ti-theme-royal-palace .royal-gift .ti-gift__card { position: relative; padding: 34px 24px 28px; border: 1px solid rgba(201,164,92,.55); background: linear-gradient(165deg, #13295C, #07152F); color: var(--royal-ivory); box-shadow: 0 30px 46px -30px rgba(0,0,0,.95), inset 0 0 0 7px rgba(7,21,47,.4), inset 0 0 0 8px rgba(201,164,92,.18); transition: transform .6s var(--royal-ease), box-shadow .6s; }
.ti-theme-royal-palace .royal-gift .ti-gift__card::before { content: ""; position: absolute; left: 50%; top: -1px; width: 90px; height: 1px; translate: -50% 0; background: linear-gradient(90deg, rgba(231,201,121,0), #E7C979, rgba(231,201,121,0)); }
.ti-theme-royal-palace .royal-gift .ti-gift__card:hover { transform: translateY(-4px); box-shadow: 0 36px 46px -30px rgba(0,0,0,.95), 0 0 24px rgba(201,164,92,.14), inset 0 0 0 7px rgba(7,21,47,.4), inset 0 0 0 8px rgba(201,164,92,.28); }
.ti-theme-royal-palace .royal-gift .ti-gift__bank { font-family: "Cinzel", serif; font-size: 13px; letter-spacing: .3em; color: var(--royal-gold-l); }
.ti-theme-royal-palace .royal-gift .ti-gift__no { font-family: "Playfair Display", serif; font-size: 28px; letter-spacing: .08em; color: var(--royal-ivory); }
.ti-theme-royal-palace .royal-gift button, .ti-theme-royal-palace .royal-gift .ti-btn { border-color: rgba(201,164,92,.7); color: var(--royal-gold-l); font-family: "Cinzel", serif; letter-spacing: .2em; }
.ti-theme-royal-palace .royal-gift .is-copied { background: var(--royal-gold); color: var(--royal-navy); }

/* LOKASI — lengkung istana */
.ti-theme-royal-palace .royal-venue__list { display: grid; grid-template-columns: 1fr; gap: 70px; max-width: 920px; margin: 60px auto 0; }
.ti-theme-royal-palace .royal-arch { position: relative; padding: 110px 26px 36px; border: 1px solid rgba(201,164,92,.5); border-radius: 220px 220px 2px 2px; background: linear-gradient(180deg, rgba(19,41,92,.6), rgba(7,21,47,.7)); box-shadow: inset 0 0 0 8px rgba(7,21,47,.3), inset 0 0 0 9px rgba(201,164,92,.18); --ti-dist: 40px; }
.ti-theme-royal-palace .royal-arch__floral { position: absolute; left: 50%; top: -58px; width: 190px; translate: -50% 0; filter: drop-shadow(0 12px 14px rgba(0,0,0,.5)); }
.ti-theme-royal-palace .royal-arch__name { font-family: "Playfair Display", serif; font-size: 30px; line-height: 1.15; color: var(--royal-ivory); margin: 4px 0 10px; }
.ti-theme-royal-palace .royal-arch__addr { max-width: 360px; margin: 0 auto 24px; font-size: 14.5px; color: rgba(247,241,229,.75); }

/* PENUTUP */
.ti-theme-royal-palace .royal-closing { position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 200px 22px 140px; overflow: hidden; text-align: center; background: #040C1E; }
.ti-theme-royal-palace .royal-closing__bg { position: absolute; inset: -8% 0; width: 100%; height: 116%; object-fit: cover; object-position: 50% 90%; transform: translateY(calc((.5 - min(var(--ti-p, .5), .5)) * 70px)) scale(1.06); }
.ti-theme-royal-palace .royal-closing__veil { position: absolute; inset: 0; background: radial-gradient(60% 45% at 50% 55%, rgba(4,12,30,.62), rgba(4,12,30,.2) 75%), linear-gradient(180deg, var(--royal-navy) 0%, rgba(4,12,30,.25) 25%, rgba(4,12,30,.45) 80%, #040C1E 100%); }
.ti-theme-royal-palace .royal-closing__chandelier { top: -3%; width: min(56vw, 340px); z-index: 2; translate: -50% calc((.5 - min(var(--ti-p, .5), .5)) * -80px); }
.ti-theme-royal-palace .royal-closing .royal-floral { z-index: 2; width: min(44vw, 320px); }
.ti-theme-royal-palace .royal-closing__content { position: relative; z-index: 4; max-width: 660px; }
.ti-theme-royal-palace .royal-closing .royal-crown { margin-bottom: 18px; }
.ti-theme-royal-palace .royal-closing .royal-kicker { line-height: 1.9; }
.ti-theme-royal-palace .royal-closing__names { font-family: "Playfair Display", serif; font-size: clamp(44px, 12vw, 92px); line-height: 1.05; margin: 10px 0 0; }
.ti-theme-royal-palace .royal-closing .royal-divider { margin-bottom: 22px; }
.ti-theme-royal-palace .royal-footer { padding: 24px 16px 92px; text-align: center; background: #040C1E; color: rgba(201,164,92,.75); font-family: "Cinzel", serif; font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; border-top: 1px solid rgba(201,164,92,.18); }

/* =============================== DESKTOP =============================== */
@media (min-width: 760px) {
  .ti-theme-royal-palace .royal-section { padding: 130px 40px; }
  .ti-theme-royal-palace .royal-couple__grid { grid-template-columns: 1fr auto 1fr; gap: 34px; }
  .ti-theme-royal-palace .royal-couple__amp { align-self: center; margin: -140px 0 0; font-size: 84px; }
  .ti-theme-royal-palace .royal-events__grid { grid-template-columns: repeat(2, 1fr); gap: 34px; }
  .ti-theme-royal-palace .royal-venue__list { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
  .ti-theme-royal-palace .royal-gift { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
  .ti-theme-royal-palace .royal-masonry { columns: 3; column-gap: 16px; }
  .ti-theme-royal-palace .royal-shot { margin-bottom: 16px; }
  .ti-theme-royal-palace .royal-timeline { padding-left: 0; }
  .ti-theme-royal-palace .royal-timeline__line { left: 50%; }
  .ti-theme-royal-palace .royal-chapter { width: 50%; padding-right: 60px; text-align: right; }
  .ti-theme-royal-palace .royal-chapter__dot { left: auto; right: -7px; }
  .ti-theme-royal-palace .royal-chapter--alt { margin-left: 50%; padding: 0 0 0 60px; text-align: left; }
  .ti-theme-royal-palace .royal-chapter--alt .royal-chapter__dot { right: auto; left: -6px; }
  .ti-theme-royal-palace .royal-curtain { width: 50.4vw; }
  .ti-theme-royal-palace .royal-pillar--l { left: 3vw; }
  .ti-theme-royal-palace .royal-pillar--r { right: 3vw; }
  .ti-theme-royal-palace .royal-drape { width: 10vw; }
}
@media (min-width: 1200px) { .ti-theme-royal-palace .royal-masonry { columns: 4; } }

/* Mode ringan */
.ti-theme-royal-palace.royal-lite .royal-dust i:nth-child(n+6) { display: none; }
.ti-theme-royal-palace.royal-lite .royal-nav, .ti-theme-royal-palace.royal-lite .royal-cover__guest { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Animasi */
@keyframes royal-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes royal-up { from { opacity: 0; transform: translate3d(0, 20px, 0); filter: blur(8px); } to { opacity: 1; transform: none; filter: none; } }
@keyframes royal-crown-in { from { opacity: 0; transform: translateY(10px) scale(.7); filter: blur(6px) drop-shadow(0 0 0 rgba(231,201,121,0)); } to { opacity: 1; transform: none; filter: drop-shadow(0 0 14px rgba(231,201,121,.45)); } }
@keyframes royal-light { 0% { opacity: 0; filter: brightness(.25) drop-shadow(0 10px 18px rgba(0,0,0,.5)); transform: translateY(-14px) scale(.97); } 60% { opacity: 1; } 100% { opacity: 1; filter: brightness(1) drop-shadow(0 10px 18px rgba(0,0,0,.5)); transform: none; } }
@keyframes royal-glow { from { opacity: .75; transform: scale(.96); } to { opacity: 1; transform: scale(1.04); } }
@keyframes royal-flash-glow { 0% { opacity: 1; transform: scale(1); } 45% { opacity: 1; transform: scale(1.6); filter: brightness(1.6); } 100% { opacity: 1; transform: scale(1.3); filter: brightness(1.3); } }
@keyframes royal-close-l { from { transform: perspective(1200px) translateX(-100%) rotateY(14deg) scaleX(.6); } to { transform: none; } }
@keyframes royal-close-r { from { transform: perspective(1200px) translateX(100%) rotateY(-14deg) scaleX(.6); } to { transform: none; } }
@keyframes royal-open-l { 0% { transform: none; } 22% { transform: perspective(1200px) translateX(-4%) rotateY(4deg) scaleX(.97); } 100% { transform: perspective(1200px) translateX(-104%) rotateY(18deg) scaleX(.5); } }
@keyframes royal-open-r { 0% { transform: none; } 22% { transform: perspective(1200px) translateX(4%) rotateY(-4deg) scaleX(.97); } 100% { transform: perspective(1200px) translateX(104%) rotateY(-18deg) scaleX(.5); } }
@keyframes royal-drop { from { transform: translateY(-105%); } to { transform: none; } }
@keyframes royal-flare { 0% { opacity: 0; transform: translateX(-60%); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateX(60%); } }
@keyframes royal-pulse { 0%, 100% { box-shadow: inset 0 0 0 3px #0B1F4D, inset 0 0 0 4px rgba(231,201,121,.28), 0 14px 26px -16px rgba(0,0,0,.9), 0 0 0 0 rgba(231,201,121,0); } 50% { box-shadow: inset 0 0 0 3px #0B1F4D, inset 0 0 0 4px rgba(231,201,121,.4), 0 14px 26px -16px rgba(0,0,0,.9), 0 0 26px 2px rgba(231,201,121,.22); } }
@keyframes royal-dust { 0% { opacity: 0; transform: translate3d(0, 0, 0); } 15% { opacity: .85; } 55% { transform: translate3d(18px, -55vh, 0); } 85% { opacity: .6; } 100% { opacity: 0; transform: translate3d(-10px, -100vh, 0); } }
@keyframes royal-flicker { 0%, 100% { opacity: .85; transform: scale(1); } 30% { opacity: 1; transform: scale(1.03); } 55% { opacity: .9; transform: scale(.99); } 75% { opacity: 1; transform: scale(1.02); } }
@keyframes royal-shimmer { 0%, 30% { background-position: 130% 0; } 70%, 100% { background-position: -130% 0; } }
@keyframes royal-wheel { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(12px); } }
@keyframes royal-line { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
@keyframes royal-crown-pulse { 0%, 100% { opacity: .75; filter: drop-shadow(0 0 4px rgba(231,201,121,.2)); } 50% { opacity: 1; filter: drop-shadow(0 0 16px rgba(231,201,121,.55)); } }
@keyframes royal-loader-auto { to { opacity: 0; visibility: hidden; } }

@media (prefers-reduced-motion: reduce) {
  .ti-theme-royal-palace *, .ti-theme-royal-palace *::before, .ti-theme-royal-palace *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; animation-delay: 0s !important; transition-duration: .2s !important; transition-delay: 0s !important; }
  .ti-theme-royal-palace .royal-dust, .ti-theme-royal-palace .royal-flare, .ti-theme-royal-palace .royal-cursor { display: none; }
  .ti-theme-royal-palace .royal-hero { height: auto; }
  .ti-theme-royal-palace .royal-hero__sticky { position: relative; }
  .ti-theme-royal-palace .royal-sharp, .ti-theme-royal-palace .royal-portrait__img, .ti-theme-royal-palace .royal-shot img { filter: none; opacity: 1; scale: 1; }
}
.ti-theme-royal-palace .royal-hero .royal-pillar--l { left: -18vw; }
.ti-theme-royal-palace .royal-hero .royal-pillar--r { right: -18vw; }
@media (min-width: 760px) { .ti-theme-royal-palace .royal-hero .royal-pillar--l { left: 6vw; } .ti-theme-royal-palace .royal-hero .royal-pillar--r { right: 6vw; } }
