.living-world { --world-lavender:#bca4e8; position:relative; isolation:isolate; width:100%; overflow:hidden; }
[data-bs-theme=light] .living-world { --world-lavender:#735099; }
#pokemonWorldCanvas { position:absolute; inset:0; width:100%; height:100%; z-index:-1; pointer-events:none; opacity:0; transition:opacity .6s; }
.pokemon-world-ready #pokemonWorldCanvas { opacity:1; }
.adventure-shell { max-width:1200px; margin:auto; padding:0 2rem 80px; }
.adventure-heading { width:100%; padding:90px 0 0; margin:0 auto 3rem; text-align:center; }
.living-world .adventure-title { flex:none; margin:0; color:var(--bs-body-color); font-size:13.2vw; }
.adventure-heading > p { padding-inline:1rem; }
.adventure-heading > p { margin:1.5rem auto 0; max-width:600px; font-size:.9rem; color:var(--bs-secondary-color); }
.adventure-heading > .adventure-heading__description { margin-top:.5rem; font-size:.83rem; line-height:1.7; }
.adventure-cta { display:inline-flex; align-items:center; gap:.7rem; margin-top:1.5rem; }
.adventure-cta svg { color:inherit; }
.adventure-universes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(2rem,5vw,5rem); }
.adventure-universe { min-width:0; }
.adventure-scene { position:relative; display:block; width:100%; max-width:300px; height:170px; margin:0 auto 1.5rem; padding:0; border:0; background:none; color:var(--bs-body-color); cursor:pointer; }
.adventure-scene:focus-visible { outline:2px dashed var(--world-lavender); outline-offset:5px; border-radius:50%; }
.adventure-universe__kicker { display:block; margin-bottom:.8rem; font-size:.62rem; text-transform:uppercase; letter-spacing:.13em; color:var(--bs-secondary-color); }
.adventure-universe h3 { margin:0 0 .85rem; font-size:clamp(1.3rem,1.8vw,1.7rem); font-weight:650; line-height:1.3; letter-spacing:-.03em; }
.adventure-universe p { margin:0; font-size:.88rem; line-height:1.8; color:var(--bs-secondary-color); }
.adventure-arena-mark { position:absolute; width:95px; height:40px; left:calc(50% - 48px); top:94px; border:1px solid var(--bs-border-color); border-radius:50%; }
.adventure-arena-mark::after { content:''; position:absolute; height:100%; left:50%; border-left:1px solid var(--bs-border-color); }
.adventure-sprite { --sprite-size:48px; position:absolute; display:block; width:var(--sprite-size); height:var(--sprite-size); top:59px; overflow:hidden; image-rendering:pixelated; pointer-events:none; }
.adventure-sprite img { position:absolute; width:400%; height:400%; max-width:none; top:calc(-100% * var(--sprite-row,0)); left:0; }
.adventure-sprite--capture { left:calc(50% - 24px); }
.adventure-sprite--duel-left,.adventure-sprite--trainer-left { left:calc(50% - 82px); }
.adventure-sprite--duel-right,.adventure-sprite--trainer-right { left:calc(50% + 34px); }
.adventure-ball { position:absolute; object-fit:contain; image-rendering:pixelated; pointer-events:none; }
.adventure-ball--capture { top:111px; left:calc(50% + 23px); }
.adventure-ball--trade { top:89px; left:calc(50% - 29px); }
.adventure-grass { position:absolute; width:36px; height:34px; top:87px; object-fit:contain; image-rendering:pixelated; transform-origin:50% 90%; pointer-events:none; }
.adventure-grass--left { left:calc(50% - 61px); }
.adventure-grass--right { left:calc(50% + 50px); top:101px; width:28px; height:27px; }
.adventure-spark { position:absolute; top:33px; left:calc(50% + 20px); color:var(--world-lavender); opacity:.7; font-size:.9rem; }
.adventure-impact { position:absolute; top:70px; left:calc(50% - 10px); color:var(--bs-secondary-color); font-size:1.3rem; opacity:.4; }
.adventure-greeting { position:absolute; top:32px; left:calc(50% - 8px); color:var(--world-lavender); font-size:1rem; }
@media(prefers-reduced-motion:no-preference) {
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-sprite img { animation:adventure-steps .7s steps(3,end) infinite; }
 .adventure-universe--capture .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-sprite { animation:adventure-discover 2s ease-in-out infinite; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-grass { animation:adventure-grass .8s ease-in-out infinite alternate; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-spark { animation:adventure-spark 1.8s ease-in-out infinite; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-sprite--duel-left { animation:adventure-duel-left 1.8s ease-in-out infinite; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-sprite--duel-right { animation:adventure-duel-right 1.8s -.9s ease-in-out infinite; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-impact { animation:adventure-spark .9s ease-in-out infinite; }
 .adventure-scene:is(:hover,:focus-visible,.is-active) .adventure-ball--trade { animation:adventure-exchange 3s ease-in-out infinite; }
}
.living-world:not(.is-visible) .adventure-scene * { animation-play-state:paused!important; }
@keyframes adventure-steps { to { transform:translateX(-75%); } }
@keyframes adventure-discover { 50% { transform:translateY(-7px); } }
@keyframes adventure-grass { to { transform:skewX(7deg); } }
@keyframes adventure-spark { 50% { opacity:1; transform:scale(1.2); } 0%,100% { opacity:.3; transform:scale(.7); } }
@keyframes adventure-duel-left { 35%,55% { transform:translateX(13px); } }
@keyframes adventure-duel-right { 35%,55% { transform:translateX(-13px); } }
@keyframes adventure-exchange { 0%,15%,100% { transform:translate(0,0) rotate(0); } 40% { transform:translate(29px,-32px) rotate(140deg); } 55%,65% { transform:translate(58px,0) rotate(280deg); } 85% { transform:translate(29px,-27px) rotate(140deg); } }
@media(max-width:767.98px) {
 .adventure-shell { padding:0 1.5rem 60px; }
 /* AVEN is wider than ARTI: preserve the two-line display without clipping letters. */
 .living-world .adventure-title { font-size:26.2vw!important; }
 .adventure-heading { padding:60px 0 0; margin-bottom:2rem; }
 .adventure-heading > p { font-size:.8rem; margin-top:1rem; }
 .adventure-universes { grid-template-columns:1fr; gap:2.2rem; max-width:420px; margin:auto; }
 .adventure-universe { display:grid; grid-template-columns:110px minmax(0,1fr); align-items:center; gap:1rem; }
 .adventure-scene { height:132px; margin:0; }
 .adventure-sprite { --sprite-size:36px; top:41px; }
 .adventure-sprite--capture { left:calc(50% - 18px); }
 .adventure-sprite--duel-left,.adventure-sprite--trainer-left { left:calc(50% - 50px); }
 .adventure-sprite--duel-right,.adventure-sprite--trainer-right { left:calc(50% + 14px); }
 .adventure-ball--capture { left:calc(50% + 11px); top:78px; width:20px; height:20px; }
 .adventure-ball--trade { left:calc(50% - 22px); top:65px; width:15px; height:15px; }
 .adventure-arena-mark { width:68px; height:28px; left:calc(50% - 34px); top:66px; }
 .adventure-grass--left { left:calc(50% - 38px); top:62px; width:24px; height:23px; }
 .adventure-grass--right { left:calc(50% + 31px); top:72px; width:21px; height:20px; }
 .adventure-spark,.adventure-greeting { top:17px; }
 .adventure-impact { top:47px; }
 .adventure-universe h3 { font-size:1.2rem; }
 .adventure-universe__kicker { font-size:.53rem; letter-spacing:.08em; margin-bottom:.5rem; }
 .adventure-universe p { font-size:.8rem; line-height:1.7; }
}
@media(prefers-reduced-motion:reduce) { #pokemonWorldCanvas { transition:none; } }
