/* Homepage-only enhancement. The native scene and speech controller stay in place. */
[data-tss-travellers-ready] .traveller-leg-front { transform:rotate(6deg); }
[data-tss-travellers-ready] .traveller-leg-back { transform:rotate(-6deg); }
@media (prefers-reduced-motion:no-preference) {
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-leg-front { animation: tss-traveller-stride-front 1.1s ease-in-out infinite; }
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-leg-back { animation: tss-traveller-stride-back 1.1s ease-in-out infinite; }
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-upper { animation: tss-traveller-walking-bob .55s ease-in-out infinite; }
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-arm-back { animation: tss-traveller-arm-swing 1.1s ease-in-out infinite; }
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-bag { animation: tss-traveller-bag-swing 1.1s ease-in-out infinite; }
  [data-tss-travellers-ready] .tss-traveller.is-walking .traveller-hat { animation: tss-traveller-hat-settle .55s ease-in-out infinite; }
}
@keyframes tss-traveller-stride-front { 0%,100% { transform:rotate(18deg); } 50% { transform:rotate(-18deg); } }
@keyframes tss-traveller-stride-back { 0%,100% { transform:rotate(-18deg); } 50% { transform:rotate(18deg); } }
@keyframes tss-traveller-walking-bob { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-1.5px); } }
@keyframes tss-traveller-arm-swing { 0%,100% { transform:rotate(-12deg); } 50% { transform:rotate(14deg); } }
@keyframes tss-traveller-bag-swing { 0%,100% { transform:rotate(-3deg); } 50% { transform:rotate(4deg); } }
@keyframes tss-traveller-hat-settle { 0%,100% { transform:rotate(0); } 50% { transform:rotate(-1deg); } }
[data-tss-travellers-ready] .tss-traveller { display:block !important; animation:none !important; opacity:1 !important; visibility:visible !important; margin-left:0 !important; will-change:transform; z-index:8; }
[data-tss-travellers-ready] .tss-traveller > span:not(.tss-hero-park__bubble):not(.traveller-hee) { display:none !important; }
[data-tss-travellers-ready] .tss-traveller > .traveller { position:absolute; left:5px; bottom:5px; width:54px; height:88px; overflow:visible; pointer-events:none; }
[data-tss-travellers-ready] .tss-traveller[data-direction="left"] > .traveller { transform:scaleX(-1); }
[data-tss-travellers-ready] .tss-traveller::before { content:none !important; }
[data-tss-travellers-ready] .tss-traveller:focus-visible { outline:3px solid #171813; outline-offset:5px; border-radius:6px; }
[data-tss-travellers-ready] .tss-traveller .tss-hero-park__bubble { bottom:105px; }
[data-tss-travellers-ready] .tss-traveller.is-speaking { z-index:25 !important; }
[data-tss-travellers-ready] .tss-traveller.is-speaking .tss-hero-park__bubble { visibility:visible !important; }
[data-tss-travellers-ready] .traveller * { animation-delay:var(--gait-delay,0s); }
[data-tss-travellers-ready] .traveller-hee { display:none; position:absolute; top:-16px; right:-9px; width:max-content; border:1.5px solid #171813; border-radius:999px; padding:2px 5px; background:#fffaf0; color:#171813; font:950 10px/1 Arial,sans-serif; pointer-events:none; transform:rotate(8deg); }
[data-tss-travellers-ready] .tss-traveller.is-near { z-index:24; }
[data-tss-travellers-ready] .tss-traveller.is-near .traveller-hee { display:block; }
body.home .tss-hero [data-tss-travellers-ready]:has(.is-near) { z-index:auto; }
@media(prefers-reduced-motion:no-preference) {
 [data-tss-travellers-ready] .is-near .traveller-hee { animation:tss-traveller-giggle-pop .55s ease both; }
 [data-tss-travellers-ready] .is-walking .hat-propeller { animation:tss-propeller-turn .65s linear infinite; }
 [data-tss-travellers-ready] .is-walking .hat-corks { animation:tss-cork-sway 1.1s ease-in-out infinite alternate; }
}
@keyframes tss-propeller-turn { 0%,100% {transform:scaleX(1)} 50% {transform:scaleX(-1)} }
@keyframes tss-cork-sway { from {transform:rotate(-5deg)} to {transform:rotate(6deg)} }
@keyframes tss-traveller-giggle-pop { 0% {transform:rotate(8deg) translateY(2px) scale(.9)} 45% {transform:rotate(8deg) translateY(-2px) scale(1.08)} 100% {transform:rotate(8deg)} }
@media(prefers-reduced-motion:reduce) {
 [data-tss-travellers-ready] .traveller *, [data-tss-travellers-ready] .traveller-hee { animation:none !important; }
}

/* A brief, occasional greeting, independent of the native speech/wave class. */
[data-tss-travellers-ready] .traveller-hello-arm { display:none; }
@media(prefers-reduced-motion:no-preference) {
 [data-tss-travellers-ready] .is-hello .traveller-arm-back { display:none; }
 [data-tss-travellers-ready] .is-hello .traveller-hello-arm { display:block; animation:tss-traveller-hello 2.1s ease-in-out both; animation-delay:0s; }
}
[data-tss-travellers-ready].tss-hero-park--motion-paused .traveller-hello-arm,
[data-tss-travellers-ready].tss-travellers-offscreen .traveller-hello-arm { animation-play-state:paused !important; }
@keyframes tss-traveller-hello {
 0%,100% {transform:rotate(32deg)}
 18%,48%,78% {transform:rotate(-12deg)}
 33%,63% {transform:rotate(13deg)}
}

/* Shy approach: a short scoot, quick feet and a small duck of the head. */
[data-tss-travellers-ready] .is-shy .traveller-hee { display:block; }
[data-tss-travellers-ready] .tss-traveller.is-shy { z-index:24; }
body.home .tss-hero [data-tss-travellers-ready]:has(.is-shy) { z-index:auto; }
@media(prefers-reduced-motion:no-preference) {
 [data-tss-travellers-ready] .is-scurrying .traveller-leg-front { animation:tss-traveller-stride-front .15s ease-in-out infinite; animation-delay:0s; }
 [data-tss-travellers-ready] .is-scurrying .traveller-leg-back { animation:tss-traveller-stride-back .15s ease-in-out infinite; animation-delay:0s; }
 [data-tss-travellers-ready] .is-shy .traveller-head { transform:rotate(8deg) translateY(2px); }
 [data-tss-travellers-ready] .is-shy .traveller-hee { animation:tss-traveller-giggle-pop .55s ease both; }
}
[data-tss-travellers-ready].tss-hero-park--motion-paused .traveller *,
[data-tss-travellers-ready].tss-travellers-offscreen .traveller * { animation-play-state:paused !important; }

/* Ambient scenery shares the park, without intercepting any input. */
body.home .tss-hero > .tss-balloon-scene { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:1; }
@media(max-width:767px) {
 /* Give the adaptive balloon more sky while keeping its flight above the copy. */
 body.home .tss-hero { padding-top:100px; }
}
.tss-balloon-scene .tss-balloon { position:absolute; left:0; top:0; height:auto; overflow:visible; transform-origin:50% 30%; }
.tss-balloon-scene .traveller-hello-arm { display:none; }
.tss-balloon-scene .tss-parachutist { position:absolute; left:0; top:0; width:var(--tss-air-person); height:calc(var(--tss-air-person)*1.636); transform-origin:50% 0; }
.tss-balloon-scene .tss-parachutist[hidden] { display:none; }
.tss-balloon-scene .tss-parachutist-person > svg { width:100%; height:auto; overflow:visible; }
.tss-balloon-scene .tss-parachute { position:absolute; width:220%; height:auto; left:-60%; bottom:-2%; overflow:visible; }
.tss-balloon-scene .tss-canopy { transform-origin:55px 93px; }
@media(prefers-reduced-motion:no-preference) {
 .tss-balloon-scene .is-landed .traveller-leg-front { animation:tss-traveller-stride-front .65s ease-in-out infinite; }
 .tss-balloon-scene .is-landed .traveller-leg-back { animation:tss-traveller-stride-back .65s ease-in-out infinite; }
}
body.home .tss-hero:has(.tss-travellers-offscreen) .tss-balloon-scene *,
body.home .tss-hero:has(.tss-hero-park--motion-paused) .tss-balloon-scene * { animation-play-state:paused !important; }
