/* Univers interactifs : objets légers, une seule cible de navigation. */
a.world-card{display:block;cursor:pointer;color:#f3f6ff;text-decoration:none;background:#10182e;border:1px solid #354a66;border-radius:16px;overflow:hidden;isolation:isolate}
.world-card:focus-visible{outline:3px solid #ffe09a;outline-offset:5px;border-color:#ffe09a}
.scene-trigger{display:block;position:relative;aspect-ratio:1;overflow:hidden;isolation:isolate;background:#0b1530}
.scene-trigger .world-card-art{display:block;position:absolute;inset:0;z-index:-2;transition:filter .35s}
.scene-trigger .world-card-art:after{background:linear-gradient(0deg,#10182e,transparent 30%)}
.world-card>h3{position:relative;margin:0;padding:13px 18px 24px;min-height:87px;display:flex;justify-content:center;align-items:center;text-align:center;font-size:24px;line-height:1.17;letter-spacing:-.6px;color:#f5f7ff}
.world-card:hover>h3,.world-card:focus-visible>h3{color:#beeaff}
.world-card:after{pointer-events:none}
.scene-ring{position:absolute;inset:17%;border:1px solid #9cecff60;border-radius:50%;opacity:0;transform:scale(.6);pointer-events:none;box-shadow:0 0 28px #5ad7ff33}
.scene-trigger.is-hover .scene-ring{animation:portal-ring 1.2s ease-out forwards}
@keyframes portal-ring{0%{opacity:0;transform:scale(.5)}35%{opacity:.6}100%{opacity:0;transform:scale(1.6)}}
/* Trois petits boosters : échelle proche des jouets de la tuile voisine. */
.world-card-0 .world-card-art{background:radial-gradient(ellipse at 50% 62%,#173855,#0b1832 58%,#0d1429)}
.world-card-0 .scene-ring{display:none}
.booster-floor{position:absolute;left:17%;right:17%;top:80%;height:6%;border-radius:50%;background:radial-gradient(ellipse,#63d9ff38,transparent 70%);filter:blur(5px)}
.booster-deck{position:absolute;inset:0;pointer-events:none}
.booster-pack{position:absolute;width:25%;height:42%;left:37.5%;top:33%;transform-origin:50% 90%;filter:drop-shadow(0 7px 5px #0009);transition:transform .55s cubic-bezier(.2,.8,.2,1),filter .45s}
.booster-face{position:absolute;inset:0;overflow:hidden;border-radius:1px}
.booster-face img{position:absolute;display:block;max-width:none;pointer-events:none}
/* Le cadrage CSS masque les marges des photos sans retoucher les emballages. */
.booster-onepiece{transform:translate(-68%,5%) rotate(-13deg)}
.booster-onepiece img{width:196.76%;height:119.37%;left:-48.3%;top:-7.28%}
.booster-naruto{width:23%;left:38.5%;transform:translate(80%,5%) rotate(13deg)}
.booster-naruto img{width:223.14%;height:123%;left:-59.9%;top:-11.62%}
.booster-pokemon{width:28%;left:36%;top:36%;z-index:1;transform:translateY(1%)}
.booster-pokemon .booster-face img{width:149.27%;height:100%;left:-24.78%;top:0}
.booster-pack:after{content:'';position:absolute;inset:1%;background:linear-gradient(115deg,transparent 30%,#ecfaff66 49%,transparent 67%);opacity:0;pointer-events:none}
.is-hover .booster-onepiece{transform:translate(-83%,0) rotate(-19deg)}
.is-hover .booster-naruto{transform:translate(96%,0) rotate(19deg)}
.is-hover .booster-pokemon{transform:translateY(-3%);filter:drop-shadow(0 4px 7px #65d5ff44)}
/* Le film se déchire d'abord, puis la carte glisse par l'ouverture du sachet. */
.world-card-0 .scene-trigger{--booster-tear:none;--booster-rise:none;--booster-light:none;--booster-mouth:none;--booster-foil:none;--booster-sparks:none}
.world-card-0 .scene-trigger.is-hover{--booster-tear:booster-tear;--booster-rise:booster-card-rise;--booster-light:booster-reveal-light;--booster-mouth:booster-mouth-open;--booster-foil:booster-foil-pass;--booster-sparks:booster-spark-reveal}
.booster-wrapper{z-index:3;clip-path:polygon(0 9%,10% 8%,20% 10%,31% 8%,43% 10%,55% 8%,68% 10%,80% 8%,90% 10%,100% 9%,100% 100%,0 100%)}
.booster-cap{position:absolute;inset:0;z-index:4;transform-origin:12% 9%;animation:var(--booster-tear) 1.5s ease-out both}
.booster-cap .booster-face{clip-path:polygon(0 0,100% 0,100% 9%,90% 10%,80% 8%,68% 10%,55% 8%,43% 10%,31% 8%,20% 10%,10% 8%,0 9%)}
.booster-mouth{position:absolute;top:8%;left:2%;width:96%;height:4%;border-radius:50%;z-index:2;background:#061426;box-shadow:0 -1px 3px #d4ffff,0 0 8px #5fe2ff88;opacity:0;animation:var(--booster-mouth) 1.5s ease-out both}
.booster-reveal-window{position:absolute;left:-20%;top:-90%;width:140%;height:100%;overflow:hidden;z-index:1}
.booster-prize-card{position:absolute;left:20%;top:100%;width:60%;height:82%;transform-origin:50% 90%;filter:drop-shadow(0 0 4px #72d9ff99);animation:var(--booster-rise) 1.5s cubic-bezier(.22,.7,.3,1) both}
.booster-prize-card img{display:block;width:100%;height:100%;object-fit:contain}
.booster-card-foil{position:absolute;inset:5%;border-radius:6%;overflow:hidden;background:linear-gradient(130deg,#58d9ff16,#f4adff2b 30%,#ffe99a1f 52%,#7affec28 75%,transparent);mix-blend-mode:screen}
.booster-card-foil:after{content:'';position:absolute;inset:-15% -35%;background:linear-gradient(110deg,transparent 30%,#c6f9ff55 42%,#fff 50%,#f5ccff66 57%,transparent 70%);opacity:0;transform:translateX(-110%);animation:var(--booster-foil) 1.5s ease-in-out both}
.booster-reveal-glow{position:absolute;left:-70%;top:-85%;width:240%;height:135%;z-index:0;border-radius:50%;background:radial-gradient(ellipse at 50% 65%,#c7fcff99,#73dfff44 30%,#3d80ff16 51%,transparent 70%);opacity:0;transform:scale(.5);animation:var(--booster-light) 1.5s ease-out both}
.booster-open-sparkles{position:absolute;inset:-70% -42% 50%;z-index:5;opacity:0;animation:var(--booster-sparks) 1.5s ease-out both}
.booster-open-sparkles i{position:absolute;left:8%;top:35%;font:normal 18px/1 system-ui,sans-serif;color:#d5fcff;text-shadow:0 0 7px #7be8ff}
.booster-open-sparkles i:nth-child(2){left:81%;top:54%;font-size:13px;color:#ffefb3}
.booster-open-sparkles i:nth-child(3){left:67%;top:4%;font-size:10px}
@keyframes booster-tear{0%,12%{transform:none;opacity:1}34%{transform:translate(-42%,-12%) rotate(-22deg);opacity:.9}60%,100%{transform:translate(-64%,-24%) rotate(-32deg);opacity:0}}
@keyframes booster-card-rise{0%,18%{transform:translateY(0) rotate(0)}73%{transform:translateY(-91%) rotate(-4deg)}100%{transform:translateY(-87%) rotate(-3deg)}}
@keyframes booster-mouth-open{0%,14%{opacity:0}28%,100%{opacity:1}}
@keyframes booster-reveal-light{0%,18%{opacity:0;transform:scale(.5)}48%{opacity:.85;transform:scale(1)}100%{opacity:.4;transform:scale(.94)}}
@keyframes booster-foil-pass{0%,40%{opacity:0;transform:translateX(-110%)}57%{opacity:.7}86%,100%{opacity:0;transform:translateX(110%)}}
@keyframes booster-spark-reveal{0%,35%{opacity:0;transform:scale(.65)}63%{opacity:.95;transform:scale(1.05)}100%{opacity:.45;transform:scale(1)}}
body:is(.yuna-motion-paused,.yuna-page-hidden) .world-card-0 .scene-trigger *,body:is(.yuna-motion-paused,.yuna-page-hidden) .world-card-0 .scene-trigger *:after,body:has(.world-hero[data-motion="paused"]) .world-card-0 .scene-trigger *,body:has(.world-hero[data-motion="paused"]) .world-card-0 .scene-trigger *:after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.booster-pack:after{animation:none!important}.is-hover .booster-onepiece{transform:translate(-68%,5%) rotate(-13deg)}.is-hover .booster-naruto{transform:translate(80%,5%) rotate(13deg)}.is-hover .booster-pokemon{transform:translateY(1%)}}
@media(prefers-reduced-motion:reduce){.booster-card-foil:after{animation:none!important}.booster-reveal-glow,.booster-open-sparkles,.booster-mouth{display:none}}
/* Petits jouets : un souvenir embarque avec deux martiens ravis, puis ils repartent. */
.world-card-1 .world-card-art{background:radial-gradient(ellipse at 50% 82%,#173e42,transparent 58%),radial-gradient(ellipse at 50% 28%,#14233c,transparent 65%),#070e1d}
.world-card-1 .scene-ring{display:none}
.world-card-1 .scene-trigger{--ufo-flight:none;--ufo-beam:none;--troop-light:none;--toy-lift:none;--surprise-pop:none;--ufo-calm:none;--ufo-happy:none;--ufo-prize:none;--ufo-joy:none}
.figure-troop{position:absolute;left:21%;top:36%;width:58%;height:58%;pointer-events:none;z-index:1}
.figure-troop img{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(.9) saturate(.95);animation:var(--troop-light) 12s linear infinite}
/* Le masque coupe progressivement le jouet à la hauteur de la trappe. */
.figure-pickup{position:absolute;inset:0;clip-path:inset(41% 0 0);z-index:3;pointer-events:none}
.figure-picked{position:absolute;left:38%;bottom:15%;width:24%;height:24%;transform-origin:50% 50%;animation:var(--toy-lift) 12s linear infinite}
.figure-picked img{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(1.05) drop-shadow(0 2px 2px #0007)}
.figure-surprise{position:absolute;top:61%;left:74%;width:12%;height:12%;z-index:5;pointer-events:none;opacity:0;transform:scale(.5) rotate(-12deg);animation:var(--surprise-pop) 12s linear infinite}
.figure-surprise i{position:absolute;font:900 clamp(16px,2vw,24px)/1 system-ui,sans-serif;font-style:normal;color:#fff1aa;text-shadow:0 2px 0 #6c4528,0 0 10px #ffd85666}
.figure-surprise i+i{top:44%;left:65%;font-size:10px;color:#a8f6ff;text-shadow:0 0 10px #a8f6ff99}
.figure-floor{position:absolute;left:22%;bottom:11%;width:56%;height:7%;border-radius:50%;background:#6bd3ff;filter:blur(12px);opacity:.12;transition:opacity .8s;pointer-events:none}
.figure-ufo{position:absolute;left:20%;top:9%;width:60%;height:80%;z-index:4;pointer-events:none;opacity:0;transform:translateX(-175%);animation:var(--ufo-flight) 12s linear infinite}
.figure-ufo-cabin{position:absolute;top:0;left:0;width:100%;aspect-ratio:240/142;animation:var(--ufo-joy) 12s linear infinite}
.figure-ufo-ship{position:absolute;inset:0;width:100%;height:auto;filter:drop-shadow(0 2px 4px #080a24) drop-shadow(0 0 4px #a3f1ff66)}
.figure-ufo-calm{animation:var(--ufo-calm) 12s linear infinite}
.figure-ufo-happy{opacity:0;animation:var(--ufo-happy) 12s linear infinite}
.figure-ufo-prize{position:absolute;left:43%;top:34%;width:14%;height:28%;object-fit:contain;opacity:0;filter:brightness(1.15);animation:var(--ufo-prize) 12s linear infinite}
.figure-ufo-hearts{position:absolute;inset:-16% 5% 0;opacity:0;animation:var(--ufo-happy) 12s linear infinite}
.figure-ufo-hearts i{position:absolute;left:20%;top:6%;color:#ffb8d7;font:900 14px/1 system-ui;font-style:normal;text-shadow:0 0 8px #ff91c2aa;transform:rotate(-14deg)}
.figure-ufo-hearts i+i{left:auto;right:15%;top:0;color:#ffe5a0;font-size:11px;transform:rotate(16deg)}
.figure-ufo-beam{position:absolute;left:17%;top:40%;width:66%;height:55%;background:linear-gradient(180deg,#e1ffffaa,#74dcff55 22%,#48bfff22 80%,transparent);clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);opacity:0;mix-blend-mode:screen;animation:var(--ufo-beam) 12s linear infinite}
.figure-ufo-beam::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 38%,#d9faff44 50%,transparent 62%)}
.world-card-1 .scene-trigger.is-hover,.world-card-1:focus-visible .scene-trigger{--ufo-flight:figure-ufo-pass;--ufo-beam:figure-ufo-scan;--troop-light:figure-troop-light;--toy-lift:figure-toy-lift;--surprise-pop:figure-surprise-pop;--ufo-calm:figure-ufo-calm;--ufo-happy:figure-ufo-happy;--ufo-prize:figure-ufo-prize;--ufo-joy:figure-ufo-joy}
.world-card-1 .is-hover .figure-floor,.world-card-1:focus-visible .figure-floor{opacity:.25}
@keyframes figure-ufo-pass{0%,5%{opacity:0;transform:translateX(-175%) rotate(-7deg)}16%{opacity:1;transform:translateX(-65%) rotate(-3deg)}26%,70%{opacity:1;transform:none}77%{opacity:1;transform:translate(38%,-8%) rotate(-7deg)}89%,100%{opacity:0;transform:translate(190%,-35%) rotate(-12deg)}}
@keyframes figure-ufo-scan{0%,23%,60%,100%{opacity:0}30%,53%{opacity:.75}56%{opacity:.95}}
@keyframes figure-troop-light{0%,19%,80%,100%{filter:brightness(.9) saturate(.95)}30%,57%{filter:brightness(1.15) saturate(1.05) drop-shadow(0 0 3px #75d6ff44)}67%{filter:brightness(1) saturate(1)}}
@keyframes figure-toy-lift{0%,32%{opacity:1;transform:none}42%{opacity:1;transform:translateY(-56%) scale(.94) rotate(-7deg)}51%{opacity:1;transform:translateY(-116%) scale(.64) rotate(8deg)}56%{opacity:1;transform:translateY(-154%) scale(.2)}57%,98%{opacity:0;transform:translateY(-160%) scale(.1)}98.01%{opacity:0;transform:none}100%{opacity:1;transform:none}}
@keyframes figure-surprise-pop{0%,33%,60%,100%{opacity:0;transform:translateY(3px) scale(.5) rotate(-12deg)}40%,49%{opacity:1;transform:none}56%{opacity:0;transform:translateY(-6px) scale(.9) rotate(12deg)}}
@keyframes figure-ufo-calm{0%,55%,100%{opacity:1}57%,99%{opacity:0}}
@keyframes figure-ufo-happy{0%,55%,100%{opacity:0}57%,99%{opacity:1}}
@keyframes figure-ufo-prize{0%,55%,100%{opacity:0;transform:translateY(12%) scale(.65)}58%,99%{opacity:1;transform:none}}
@keyframes figure-ufo-joy{0%,56%,71%,100%{transform:none}59%,65%{transform:translateY(-5%) rotate(-3deg)}62%,68%{transform:translateY(1%) rotate(3deg)}}
body:is(.yuna-motion-paused,.yuna-page-hidden) :is(.world-card-1,.world-card-3) .scene-trigger *,body:has(.world-hero[data-motion="paused"]) :is(.world-card-1,.world-card-3) .scene-trigger *{animation-play-state:paused!important}
body.yuna-motion-paused .figure-troop img,body:has(.world-hero[data-motion="paused"]) .figure-troop img{animation:none;filter:brightness(.95) saturate(1)}
/* La peluche seule s'incline et sourit, le fond reste immobile. */
.world-card-2 .world-card-art,.world-card-3 .world-card-art{background:radial-gradient(1px 1px at 18% 19%,#c0eaff 90%,transparent),radial-gradient(1px 1px at 83% 31%,#d9c7ff 90%,transparent),radial-gradient(1px 1px at 75% 13%,#9fe4ff 90%,transparent),radial-gradient(ellipse at 50% 66%,#2b2453,#101c39 60%,#0c152c)}
.world-card-2 .scene-ring,.world-card-3 .scene-ring{display:none}
.pet-sprite{position:absolute;inset:8% 4% 0;transform-origin:50% 85%;pointer-events:none}
.pet-frame,.chest-frame{position:absolute;inset:0;background-repeat:no-repeat;background-size:200% 100%;transition:opacity .22s ease}
.pet-frame{background-image:url('assets/yuna-plush-motion-v2.webp')}
.pet-idle{background-position:0 0;opacity:1}.pet-happy{background-position:100% 0;opacity:0}
:is(.is-hover,.is-activating) .pet-idle{opacity:0}:is(.is-hover,.is-activating) .pet-happy{opacity:1}
:is(.is-hover,.is-activating) .pet-sprite{animation:pet-cuddle 1.15s cubic-bezier(.3,.7,.3,1) both}
@keyframes pet-cuddle{0%{transform:translateY(0) rotate(0)}35%{transform:translateY(5%) rotate(-7deg) scale(.98,.94)}65%{transform:translateY(2%) rotate(3deg)}100%{transform:translateY(2%) rotate(-3deg)}}
.pet-hearts{position:absolute;inset:0;pointer-events:none}
.pet-hearts i{position:absolute;left:19%;top:33%;font-style:normal;font-size:22px;opacity:0;color:#ffc8e6;text-shadow:0 0 12px #ff7fc488;--heart-delay:0s}
.pet-hearts i:nth-child(2){left:76%;top:20%;--heart-delay:.14s;font-size:16px}.pet-hearts i:nth-child(3){left:49%;top:12%;--heart-delay:.28s;font-size:13px}
:is(.is-hover,.is-activating) .pet-hearts i{animation:pet-affection 1.5s var(--heart-delay) ease-out both}
@keyframes pet-affection{0%{opacity:0;transform:translateY(10px) scale(.4)}30%{opacity:1}100%{opacity:0;transform:translateY(-23px) scale(1.1)}}
/* Bois, ferrures dorées et Triforce : deux images alignées pour une ouverture lumineuse. */
.world-card-3 .world-card-art{background:radial-gradient(1px 1px at 80% 22%,#ffedb5 90%,transparent),radial-gradient(1px 1px at 18% 30%,#a5edc9 90%,transparent),radial-gradient(ellipse at 50% 69%,#39412a,#14262d 60%,#0b142a)}
.chest-sprite{position:absolute;inset:2% 0 -2%;pointer-events:none}
.chest-frame{background-image:url('assets/yuna-wooden-chest-triforce.webp')}
.chest-closed{background-position:0 0;opacity:1}.chest-open{background-position:100% 0;opacity:0;transform:translateY(2%) scale(.98);transition:opacity .18s ease,transform .5s cubic-bezier(.17,.9,.35,1.12)}
:is(.is-hover,.is-activating) .chest-closed{opacity:0}:is(.is-hover,.is-activating) .chest-open{opacity:1;transform:none}
.chest-light{position:absolute;left:17%;top:9%;width:66%;height:53%;background:conic-gradient(from 160deg at 50% 95%,transparent 0deg,#ffc55900 160deg,#ffe1a188 174deg,#fff1bacc 185deg,#f6c56344 200deg,transparent 219deg);clip-path:polygon(0 0,100% 0,65% 100%,35% 100%);filter:blur(4px);opacity:0;transform-origin:50% 95%;pointer-events:none}
:is(.is-hover,.is-activating) .chest-light{animation:chest-reveal .75s ease-out both}
@keyframes chest-reveal{0%,12%{opacity:0;transform:scale(.3,.15)}45%{opacity:1;transform:scale(1.2,1)}100%{opacity:.7;transform:scale(1.3,1.1)}}
.treasure-stars{position:absolute;inset:0;pointer-events:none}.treasure-stars i{position:absolute;top:48%;left:48%;font-size:25px;font-style:normal;color:#fff2bf;opacity:0;text-shadow:0 0 16px #ffd56b;--sx:-75%;--sy:-125%}.treasure-stars i:nth-child(2){--sx:160%;--sy:-95%;font-size:20px;color:#fff0bf}.treasure-stars i:nth-child(3){--sx:-220%;--sy:-200%;font-size:15px}.treasure-stars i:nth-child(4){--sx:60%;--sy:-260%;font-size:22px}.treasure-stars i:nth-child(5){--sx:220%;--sy:15%;font-size:16px;color:#fff0bf}
:is(.is-hover,.is-activating) .treasure-stars i{animation:treasure-reveal .75s cubic-bezier(.2,.8,.3,1) both}
@keyframes treasure-reveal{0%,15%{opacity:0;transform:translate(0,0) scale(.1) rotate(-60deg)}50%{opacity:1}100%{opacity:0;transform:translate(var(--sx),var(--sy)) scale(1) rotate(20deg)}}
@media(max-width:1050px){.world-card>h3{font-size:21px;padding-inline:12px}}
@media(max-width:760px){a.world-card{border-radius:12px}.world-card>h3{font-size:19px;padding:9px 10px 18px;min-height:73px;letter-spacing:-.4px}.world-grid{gap:14px 12px}}
@media(hover:none){a.world-card:active{filter:brightness(1.08)}.world-card-1 .scene-trigger{--ufo-flight:figure-ufo-pass;--ufo-beam:figure-ufo-scan;--troop-light:figure-troop-light;--toy-lift:figure-toy-lift;--surprise-pop:figure-surprise-pop;--ufo-calm:figure-ufo-calm;--ufo-happy:figure-ufo-happy;--ufo-prize:figure-ufo-prize;--ufo-joy:figure-ufo-joy}.figure-floor{opacity:.18}.chest-closed{animation:chest-closed-cycle 9s ease-in-out infinite}.chest-open{animation:chest-open-cycle 9s ease-in-out infinite}.world-card-3 .chest-light{animation:chest-glow-cycle 9s ease-in-out infinite}}
@keyframes chest-closed-cycle{0%,20%,67%,100%{opacity:1}28%,58%{opacity:0}}
@keyframes chest-open-cycle{0%,20%,67%,100%{opacity:0;transform:translateY(2%) scale(.98)}28%,58%{opacity:1;transform:none}}
@keyframes chest-glow-cycle{0%,23%,64%,100%{opacity:0;transform:scale(.4,.2)}33%,54%{opacity:.6;transform:scale(1.15,1)}}
@media(prefers-reduced-motion:reduce){.scene-trigger *{animation:none!important;transition:none!important}.scene-ring{display:none}.figure-picked{transform:none}.figure-troop img{filter:brightness(.95) saturate(1)}.figure-ufo{opacity:1;transform:none}.figure-ufo-beam{opacity:.2}.chest-open{transform:none}:is(.is-hover,.is-activating) .pet-sprite{transform:none}.pet-hearts,.treasure-stars,.chest-light,.figure-surprise{display:none}}

/* L’ouverture reste visible au survol, au clavier et pendant le clic. */
.is-hover .chest-light{animation:chest-reveal .75s ease-out both}.is-activating .chest-light{animation:chest-click-reveal 1.05s ease-out both}
@keyframes chest-click-reveal{0%{opacity:.65;transform:scale(1)}35%{opacity:1;transform:scale(1.3,1.15)}100%{opacity:.75;transform:scale(1.4,1.2)}}
