/**
 * Catalog motion, style "grand" (the multi-day tour pages, preview 2026-09-28). A private journey, told slowly:
 * the hero photo settles while its gold frame is drawn and the route lights up stop by stop; a gold hairline with a
 * diamond opens each block; faint line ornaments (star, arch, lantern, dunes) drift behind the pale blocks; the
 * day-by-day line fills in gold as you read, each day badge glows and its photo opens like a curtain; the hotel
 * levels catch a gold sheen; the ticks of what is included are drawn one by one; stars wake over the navy band.
 * Slow easing and long fades only: nothing bounces. catalog-motion.js arms the blocks; the style's script adds
 * the ornaments and plays the days one by one. Reduced motion: the page stands still, ornaments included.
 */
@keyframes tgc-g-rise { from { opacity: 0; transform: translateY(26px); } }
@keyframes tgc-g-soft { from { opacity: 0; } }
@keyframes tgc-g-word { from { opacity: 0; filter: blur(8px); transform: translateY(14px); } }
@keyframes tgc-g-settle { from { transform: scale(1.14); } }
@keyframes tgc-g-frame { from { clip-path: inset(0 100% 100% 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes tgc-g-lit { 0% { opacity: 0; transform: scale(.3); } 60% { opacity: 1; transform: scale(1.35); box-shadow: 0 0 0 8px rgba(232, 189, 120, .22), 0 0 18px rgba(232, 189, 120, .7); } 100% { transform: scale(1); } }
@keyframes tgc-g-leg { from { transform: scaleX(0); } }
@keyframes tgc-g-grow { from { transform: scaleX(0); } }
@keyframes tgc-g-gem { from { opacity: 0; transform: rotate(-135deg) scale(.2); } to { opacity: 1; transform: rotate(45deg) scale(1); } }
@keyframes tgc-g-glow { 0% { box-shadow: 0 0 0 0 rgba(232, 189, 120, .55); } 100% { box-shadow: 0 0 0 16px rgba(232, 189, 120, 0); } }
@keyframes tgc-g-badge { from { opacity: 0; transform: scale(.55); } }
@keyframes tgc-g-curtain { from { clip-path: inset(0 0 0 100% round 16px); } to { clip-path: inset(0 0 0 0 round 16px); } }
@keyframes tgc-g-zoom { from { transform: scale(1.1); } }
@keyframes tgc-g-sheen { from { transform: translateX(-120%) skewX(-18deg); } to { transform: translateX(260%) skewX(-18deg); } }
@keyframes tgc-g-draw { from { stroke-dashoffset: 30; } to { stroke-dashoffset: 0; } }
@keyframes tgc-g-from-left { from { opacity: 0; transform: translateX(-36px); } }
@keyframes tgc-g-from-right { from { opacity: 0; transform: translateX(36px); } }
@keyframes tgc-g-twinkle { 0%, 100% { opacity: .15; } 50% { opacity: .9; } }
@keyframes tgc-g-turn { to { transform: rotate(360deg); } }

/* Nothing that arrives from a side ever widens the page (clip keeps sticky parts sticky). */
.tgc--m-grand .tgc-hero, .tgc--m-grand .tgc-band { position: relative; overflow-x: clip; }
.tgc--m-grand .tgc-band > .tgc-wrap { position: relative; z-index: 1; }

/* ---------------------------------------------------------------- out of sight until played */
.tgc--m-grand .tgc-hero.is-armed:not(.is-in) .tgc-hero__copy > :not(.tgc-hero__title),
.tgc--m-grand .tgc-hero.is-armed:not(.is-in) .tgc-routeline__stop,
.tgc--m-grand .is-armed:not(.is-in) .tgc-head > *,
.tgc--m-grand .is-armed:not(.is-in) .tgc-strip__item,
.tgc--m-grand .is-armed:not(.is-in) .tgc-answer__text,
.tgc--m-grand .is-armed:not(.is-in) .tgc-stay,
.tgc--m-grand .is-armed:not(.is-in) .tgc-tier,
.tgc--m-grand .is-armed:not(.is-in) .tgc-glance__item,
.tgc--m-grand .is-armed:not(.is-in) .tgc-pricing__col,
.tgc--m-grand .is-armed:not(.is-in) .tgc-banner,
.tgc--m-grand .is-armed:not(.is-in) .tgc-reason,
.tgc--m-grand .is-armed:not(.is-in) .tgc-table tbody tr,
.tgc--m-grand .is-armed:not(.is-in) .tgc-booking__summary,
.tgc--m-grand .is-armed:not(.is-in) .tgc-booking__form,
.tgc--m-grand .is-armed:not(.is-in) .tgc-faq__item,
.tgc--m-grand .is-armed:not(.is-in) .tgc-faq__ask,
.tgc--m-grand .is-armed:not(.is-in) .tgc-other,
.tgc--m-grand .is-armed .tgc-day:not(.is-seen) .tgc-day__body,
.tgc--m-grand .is-armed .tgc-day:not(.is-seen) .tgc-day__photo { opacity: 0; }
.tgc--m-grand .is-armed .tgc-day:not(.is-seen) .tgc-day__no { opacity: 0; }

/* ---------------------------------------------------------------- the hero */
/* The photo settles slowly inside its frame, the gold frame is drawn around it. */
.tgc-g-kb { display: block; overflow: hidden; border-radius: 22px; }
.tgc-g-kb > img { transform-origin: 60% 40%; }
.tgc--m-grand .tgc-hero.is-in .tgc-g-kb > img { animation: tgc-g-settle 9s cubic-bezier(.2, .6, .2, 1) backwards; }
.tgc--m-grand .tgc-hero.is-armed:not(.is-in) .tgc-hero__photo::before { clip-path: inset(0 100% 100% 0); }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__photo::before { animation: tgc-g-frame 1.8s cubic-bezier(.4, 0, .2, 1) .6s backwards; }
.tgc--m-grand .tgc-hero.is-armed:not(.is-in) .tgc-hero__photo { opacity: 0; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__photo { animation: tgc-g-soft 1.4s ease .1s backwards; }

/* The title comes into focus word by word; the rest follows at an easy pace. */
.tgc--m-grand .tgc-m-w { display: inline-block; }
.tgc--m-grand .tgc-m-w > span { display: inline-block; }
.tgc--m-grand .tgc-hero.is-armed:not(.is-in) .tgc-m-w > span { opacity: 0; }
.tgc--m-grand .tgc-hero.is-in .tgc-m-w > span { animation: tgc-g-word 1.1s cubic-bezier(.2, .7, .2, 1) calc(var(--w, 0) * .08s + .3s) backwards; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__copy > :not(.tgc-hero__title) { animation: tgc-g-rise 1.1s cubic-bezier(.2, .7, .2, 1) .95s backwards; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__copy > :first-child { animation-delay: .05s; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__copy > .tgc-kicker { animation-delay: .15s; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__meta { animation-delay: 1.1s; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__price { animation-delay: 1.2s; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__act { animation-delay: 1.3s; }
.tgc--m-grand .tgc-hero.is-in .tgc-hero__trust { animation-delay: 1.4s; }

/* The route lights up stop by stop, each leg drawn from the last. */
.tgc--m-grand .tgc-hero.is-in .tgc-routeline__stop { animation: tgc-g-soft .8s ease calc(var(--i, 0) * .38s + 1.5s) backwards; }
.tgc--m-grand .tgc-routeline__stop::before { transform-origin: left center; }
.tgc--m-grand .tgc-hero.is-in .tgc-routeline__stop::before { animation: tgc-g-leg .7s cubic-bezier(.4, 0, .2, 1) calc(var(--i, 0) * .38s + 1.3s) backwards; }
.tgc--m-grand .tgc-hero.is-in .tgc-routeline__dot { animation: tgc-g-lit .9s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .38s + 1.6s) backwards; }

/* ---------------------------------------------------------------- between blocks: a gold hairline and a diamond */
.tgc-g-rule { position: absolute; top: 0; left: 50%; z-index: 2; display: flex; align-items: center; gap: 12px; width: min(520px, 70%); transform: translate(-50%, -50%); pointer-events: none; }
.tgc-g-rule span { flex: 1; height: 1px; background: linear-gradient(90deg, rgba(200, 164, 74, 0), rgba(200, 164, 74, .85)); transform-origin: right center; }
.tgc-g-rule span + i + span { background: linear-gradient(90deg, rgba(200, 164, 74, .85), rgba(200, 164, 74, 0)); transform-origin: left center; }
.tgc-g-rule i { flex: none; width: 9px; height: 9px; border: 1px solid #c8a44a; background: #fffdf9; transform: rotate(45deg); }
.tgc-band--cream > .tgc-g-rule i { background: #f5ede0; }
.tgc-band--navy > .tgc-g-rule i, .tgc-band--teal > .tgc-g-rule i { background: #202b4d; }
.tgc--m-grand .is-armed:not(.is-in) > .tgc-g-rule span { transform: scaleX(0); }
.tgc--m-grand .is-armed:not(.is-in) > .tgc-g-rule i { opacity: 0; }
.tgc--m-grand .is-in > .tgc-g-rule span { animation: tgc-g-grow 1.4s cubic-bezier(.4, 0, .2, 1) .15s backwards; }
.tgc--m-grand .is-in > .tgc-g-rule i { animation: tgc-g-gem .9s cubic-bezier(.2, .7, .2, 1) backwards; }

/* ---------------------------------------------------------------- ornaments behind the pale blocks */
.tgc-g-orn { position: absolute; z-index: 0; width: var(--s, 220px); height: var(--s, 220px); color: #b8701f; opacity: .075; pointer-events: none; will-change: transform; }
.tgc-g-orn svg { display: block; width: 100%; height: 100%; }
.tgc-g-orn--star svg { animation: tgc-g-turn 120s linear infinite; }
.tgc-band--navy .tgc-g-orn, .tgc-band--teal .tgc-g-orn { color: #e8bd78; opacity: .07; }
@media (max-width: 759px) {
	.tgc-g-orn { --s: 150px !important; opacity: .06; }
	.tgc-g-orn:nth-of-type(n + 2) { display: none; }
}

/* ---------------------------------------------------------------- headings, facts, overview */
.tgc--m-grand .is-in .tgc-head > * { animation: tgc-g-rise 1.1s cubic-bezier(.2, .7, .2, 1) .2s backwards; }
.tgc--m-grand .is-in .tgc-head > .tgc-title { animation-delay: .35s; }
.tgc--m-grand .is-in .tgc-head > :nth-child(n + 3) { animation-delay: .5s; }
.tgc--m-grand .is-in .tgc-strip__item { animation: tgc-g-rise .9s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .12s + .1s) backwards; }
.tgc--m-grand .is-in .tgc-answer__text { animation: tgc-g-rise 1.1s cubic-bezier(.2, .7, .2, 1) .45s backwards; }

/* ---------------------------------------------------------------- day by day */
.tgc--m-grand .tgc-day::after { content: ''; position: absolute; top: 88px; bottom: 10px; left: 36px; width: 4px; border-radius: 2px; background: linear-gradient(180deg, #e8bd78, #b8701f); transform: scaleY(var(--fill, 0)); transform-origin: top center; transition: transform .25s linear; pointer-events: none; }
.tgc--m-grand .tgc-day--last::after { display: none; }
.tgc--m-grand .tgc-day.is-seen .tgc-day__no { animation: tgc-g-badge .8s cubic-bezier(.2, .7, .2, 1) backwards, tgc-g-glow 1.6s ease-out .5s; }
.tgc--m-grand .tgc-day.is-seen .tgc-day__body { animation: tgc-g-rise 1.1s cubic-bezier(.2, .7, .2, 1) .2s backwards; }
.tgc--m-grand .tgc-day.is-seen .tgc-day__photo { animation: tgc-g-curtain 1.3s cubic-bezier(.65, 0, .35, 1) .35s backwards; }
.tgc--m-grand .tgc-day__photo { overflow: hidden; border-radius: 16px; }
.tgc--m-grand .tgc-day.is-seen .tgc-day__photo img { animation: tgc-g-zoom 2.6s cubic-bezier(.2, .6, .2, 1) .35s backwards; }
@media (max-width: 759px) {
	.tgc--m-grand .tgc-day::after { top: 62px; left: 24px; }
}

/* ---------------------------------------------------------------- where you sleep */
.tgc--m-grand .is-in .tgc-stay { animation: tgc-g-rise 1s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .14s + .2s) backwards; }
.tgc--m-grand .is-in .tgc-tier { animation: tgc-g-rise 1s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .16s + .5s) backwards; }
.tgc--m-grand .tgc-tier { position: relative; overflow: hidden; }
.tgc--m-grand .tgc-tier::after { content: ''; position: absolute; top: -20%; bottom: -20%; left: 0; width: 38%; background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(232, 189, 120, .22), rgba(255, 255, 255, 0)); transform: translateX(-120%) skewX(-18deg); pointer-events: none; }
.tgc--m-grand .is-in .tgc-tier::after { animation: tgc-g-sheen 1.6s cubic-bezier(.4, 0, .2, 1) calc(var(--i, 0) * .25s + 1.3s); }

/* ---------------------------------------------------------------- good to know, included */
.tgc--m-grand .is-in .tgc-glance__item { animation: tgc-g-rise .9s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .1s + .2s) backwards; }
.tgc--m-grand .is-in .tgc-pricing__col--included { animation: tgc-g-from-left 1.1s cubic-bezier(.2, .7, .2, 1) .2s backwards; }
.tgc--m-grand .is-in .tgc-pricing__col--excluded { animation: tgc-g-from-right 1.1s cubic-bezier(.2, .7, .2, 1) .35s backwards; }
.tgc--m-grand .tgc-pricing__col--included li .tgc-ico path { stroke-dasharray: 30; }
.tgc--m-grand .is-in .tgc-pricing__col--included li .tgc-ico path { animation: tgc-g-draw .6s ease calc(var(--i, 0) * .12s + .9s) backwards; }
.tgc--m-grand .is-in .tgc-banner { animation: tgc-g-rise 1s cubic-bezier(.2, .7, .2, 1) 1.1s backwards; }

/* ---------------------------------------------------------------- the navy band: stars wake, icons are drawn */
.tgc-g-sky { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.tgc-g-sky i { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: #f6e3bf; opacity: .15; }
.tgc--m-grand .is-in .tgc-g-sky i { animation: tgc-g-twinkle var(--t, 4s) ease-in-out var(--d, 0s) infinite; }
.tgc--m-grand .is-in .tgc-reason { animation: tgc-g-rise 1s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .14s + .25s) backwards; }
.tgc--m-grand .tgc-reason__icon svg path, .tgc--m-grand .tgc-reason__icon svg circle { stroke-dasharray: 80; }
.tgc--m-grand .is-in .tgc-reason__icon svg path, .tgc--m-grand .is-in .tgc-reason__icon svg circle { animation: tgc-g-draw80 1.4s ease calc(var(--i, 0) * .14s + .6s) backwards; }
@keyframes tgc-g-draw80 { from { stroke-dashoffset: 80; } to { stroke-dashoffset: 0; } }

/* ---------------------------------------------------------------- compare, book, questions, other trips */
.tgc--m-grand .is-in .tgc-table tbody tr { animation: tgc-g-rise .8s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .08s + .3s) backwards; }
.tgc--m-grand .is-in .tgc-booking__summary { animation: tgc-g-from-left 1.1s cubic-bezier(.2, .7, .2, 1) .2s backwards; }
.tgc--m-grand .is-in .tgc-booking__form { animation: tgc-g-rise 1.2s cubic-bezier(.2, .7, .2, 1) .4s backwards; }
.tgc--m-grand .is-in .tgc-faq__item,
.tgc--m-grand .is-in .tgc-other { animation: tgc-g-rise .9s cubic-bezier(.2, .7, .2, 1) calc(var(--i, 0) * .1s + .25s) backwards; }
.tgc--m-grand .is-in .tgc-faq__ask { animation: tgc-g-rise .9s ease 1s backwards; }

@media (prefers-reduced-motion: reduce) {
	.tgc-g-orn svg { animation: none; }
}
