/* Generado por scripts/build.mjs. Edita src/styles/. */
:root{--bg:#0f1115;--card:#181b22;--line:#262a33;--text:#f3f4f6;--muted:#9aa1ad;--push:#ff7a1a;--abs:#2ec5ff;--ok:#5ee37a;--gold:#ffd23f;--c:var(--push)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
body{min-height:100dvh;display:flex;flex-direction:column}
#app{flex:1;width:100%;max-width:480px;margin:0 auto;padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}
h1{margin:0;font-size:26px;font-weight:900;letter-spacing:-.5px}
h1 span{color:var(--push)}
h2{margin:0;font-size:26px}
.push{--c:var(--push)}.abs{--c:var(--abs)}
.top{display:flex;justify-content:space-between;align-items:center}
.icon{background:var(--card);border:1px solid var(--line);width:42px;height:42px;border-radius:12px;font-size:18px;margin-left:6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px}
.card-h{font-weight:700;margin-bottom:10px}
.muted{color:var(--muted)}.small{font-size:13px}
.row{display:flex;gap:12px}.row>*{flex:1}
/* Torre: cada nivel es un piso; el material y el cielo cambian con el rango */
.tower-card{padding:0;overflow:hidden}
.sky.night{--win:rgba(255,214,120,.95)}
.sky.night::before{content:"";position:absolute;inset:0;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 32% 42%,#fff,transparent),radial-gradient(1.5px 1.5px at 58% 12%,#fff,transparent),radial-gradient(1px 1px at 78% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 88% 8%,#fff,transparent),radial-gradient(1px 1px at 22% 66%,#fff,transparent),radial-gradient(1px 1px at 92% 58%,#fff,transparent),radial-gradient(1.5px 1.5px at 46% 26%,#fff,transparent);animation:twinkle 4s ease-in-out infinite alternate}
@keyframes twinkle{to{opacity:.45}}
.t-info{position:absolute;top:12px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:flex-start;z-index:2;text-shadow:0 2px 6px rgba(0,0,0,.6)}
.t-lvl{font-size:13px;font-weight:800;letter-spacing:2px;color:#fff;opacity:.9}
.t-lvl b{display:block;font-size:44px;line-height:1;letter-spacing:-1px}
.t-rank{font-size:22px;font-weight:900;color:var(--acc);text-align:right;text-shadow:0 0 3px #000,0 0 8px rgba(0,0,0,.8),0 2px 4px #000}
.t-rank small{display:block;font-size:11px;font-weight:600;color:#fff;opacity:.85;letter-spacing:0}
.tower{position:absolute;left:0;right:0;bottom:var(--g,0px);display:flex;flex-direction:column-reverse;align-items:center}
.ground{position:absolute;left:0;right:0;bottom:0;height:16px;background:linear-gradient(#5aa05a,#2f5f30)}
.sky.night .ground{background:linear-gradient(#24452a,#122615)}
.below{position:absolute;right:12px;bottom:8px;font-size:11px;font-weight:700;color:#fff;opacity:.8;text-shadow:0 1px 3px #000}
.floor{position:relative;flex:0 0 auto;width:150px;height:48px;background:var(--m);border-bottom:2px solid rgba(0,0,0,.35);box-shadow:inset 7px 0 rgba(255,255,255,.14),inset -7px 0 rgba(0,0,0,.22)}
.floor::after{content:"";position:absolute;inset:8px 15px 9px;background:linear-gradient(transparent 46%,rgba(0,0,0,.28) 46% 56%,transparent 56%) 0 0/11px 15px space,linear-gradient(90deg,rgba(255,255,255,.4) 0 1.5px,var(--win) 1.5px 9px,rgba(0,0,0,.35) 9px 11px) 0 0/11px 15px space;border-top:2px solid rgba(255,255,255,.18)}
.floor.ten{width:172px;border-bottom-width:3px}
.floor.ten::before{content:"";position:absolute;left:-4px;right:-4px;bottom:-1px;height:8px;border-top:2px solid rgba(255,255,255,.85);background:repeating-linear-gradient(90deg,rgba(255,255,255,.75) 0 2px,transparent 2px 7px);z-index:1}
.floor.base{width:178px}
.floor .door{position:absolute;left:50%;bottom:0;width:20px;height:32px;margin-left:-10px;border-radius:8px 8px 0 0;background:linear-gradient(90deg,#3a2414,#5a3a20);box-shadow:0 0 0 2px rgba(255,255,255,.25);z-index:1}
.floor .door::after{content:"";position:absolute;right:4px;top:17px;width:3px;height:3px;border-radius:50%;background:#ffd23f}
.floor.base::after{background:linear-gradient(transparent 46%,rgba(0,0,0,.28) 46% 56%,transparent 56%) 0 0/11px 15px space,linear-gradient(90deg,rgba(255,255,255,.4) 0 1.5px,var(--win) 1.5px 9px,rgba(0,0,0,.35) 9px 11px) 0 0/11px 15px space;-webkit-mask:linear-gradient(90deg,#000 38%,transparent 38% 62%,#000 62%);mask:linear-gradient(90deg,#000 38%,transparent 38% 62%,#000 62%)}
.fl-n{position:absolute;right:calc(100% + 8px);top:17px;font-size:11px;font-weight:800;color:#fff;text-shadow:0 1px 3px #000}
.floor.build{background:rgba(255,255,255,.08);border:2px dashed rgba(255,255,255,.75);box-shadow:none;overflow:visible}
.floor.build::after{display:none}
.floor.build .fill{position:absolute;left:0;right:0;bottom:0;height:var(--p);background:var(--m);opacity:.9;animation:glow 1.6s ease-in-out infinite alternate}
@keyframes glow{to{opacity:.55}}
.crane{position:absolute;left:calc(100% + 4px);bottom:-2px;font-size:26px;line-height:1}
.tfoot{padding:14px 16px 16px}
.tfoot .row{align-items:baseline;justify-content:space-between;margin-bottom:8px}
.tfoot .row>*{flex:none}
/* Subida de nivel a pantalla completa */
.lu{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(40px + env(safe-area-inset-top)) 16px calc(28px + env(safe-area-inset-bottom));background:var(--sky);overflow:hidden;animation:fadein .3s}
.lu.night{--win:rgba(255,214,120,.95)}
.lu:not(.night){--win:rgba(20,24,34,.55)}
.lu::after{content:"";position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.lu.flash::after{animation:flash .5s}
@keyframes flash{0%{opacity:.85}100%{opacity:0}}
@keyframes fadein{from{opacity:0}}
.lu.out{animation:fadeout .3s forwards}
@keyframes fadeout{to{opacity:0}}
.lu-head{text-align:center;color:#fff;text-shadow:0 4px 18px rgba(0,0,0,.6);z-index:1}
.lu-head small{font-size:16px;font-weight:800;letter-spacing:6px}
.lu-head b{display:block;font-size:110px;line-height:1;font-weight:900}
.lu-head b.pop{animation:pop .35s}
@keyframes pop{0%{transform:scale(1.6)}100%{transform:scale(1)}}
.lu-tower{display:flex;flex-direction:column-reverse;align-items:center;transform:scale(.85);transform-origin:bottom center;margin-bottom:40px}
.lu.shake .lu-tower{animation:shake .35s}
@keyframes shake{20%{transform:scale(.85) translate(-5px,2px)}40%{transform:scale(.85) translate(4px,-2px)}60%{transform:scale(.85) translate(-3px,1px)}80%{transform:scale(.85) translate(2px,0)}}
.floor.drop{animation:drop .55s cubic-bezier(.55,0,1,.45) both}
@keyframes drop{from{transform:translateY(-80vh)}to{transform:none}}
.lu-rank{text-align:center;min-height:70px;opacity:0;transform:scale(.6);transition:all .45s cubic-bezier(.2,1.6,.4,1);z-index:1}
.lu-rank.show{opacity:1;transform:none}
.lu-rank small{display:block;color:#fff;font-weight:800;letter-spacing:4px;text-shadow:0 2px 8px #000}
.lu-rank b{display:block;font-size:44px;font-weight:900;color:var(--acc);text-shadow:0 0 24px var(--acc),0 2px 6px #000}
.lu-tap{color:#fff;opacity:0;font-size:14px;text-shadow:0 1px 4px #000;z-index:1}
.lu.done .lu-tap{opacity:.85;transition:opacity .4s .6s}
/* Torre recorrible */
.sky-wrap{position:relative}
.sky{height:300px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;--win:rgba(20,24,34,.55)}
.sky::-webkit-scrollbar{display:none}
.sky{touch-action:pan-y;overflow-x:hidden;transform-origin:0 0}
.sky.zoomed{will-change:transform}
.sky-wrap{overflow:hidden}
.tcol{position:relative;width:100%}
.frow{position:absolute;left:0;right:0;height:48px;display:flex;justify-content:center;z-index:1}
.stars{position:absolute;left:0;right:0;top:0;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 32% 42%,#fff,transparent),radial-gradient(1.5px 1.5px at 58% 12%,#fff,transparent),radial-gradient(1px 1px at 78% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 88% 78%,#fff,transparent),radial-gradient(1px 1px at 22% 66%,#fff,transparent),radial-gradient(1px 1px at 92% 58%,#fff,transparent),radial-gradient(1.5px 1.5px at 46% 86%,#fff,transparent);background-size:240px 240px;-webkit-mask-image:linear-gradient(to top,transparent,#000 160px);mask-image:linear-gradient(to top,transparent,#000 160px);animation:twinkle 4s ease-in-out infinite alternate}
.sign{position:absolute;right:calc(50% + 110px);font-size:11px;font-weight:900;color:var(--acc);text-shadow:0 1px 3px #000,0 0 8px rgba(0,0,0,.7);white-space:nowrap;z-index:2}
.sign::after{content:" —";color:#fff;opacity:.6}
.keep{position:absolute;left:calc(50% + 82px);font-size:16px;line-height:18px;z-index:2;filter:drop-shadow(0 1px 2px #000)}
.deco{position:absolute;font-size:20px;opacity:.85;pointer-events:none}
.deco.drift{animation:drift 9s ease-in-out infinite alternate}
@keyframes drift{to{transform:translateX(28px)}}
.t-info{pointer-events:none}
.t-alt{position:absolute;left:12px;bottom:10px;z-index:3;font-size:12px;font-weight:800;color:#fff;background:rgba(0,0,0,.45);padding:5px 10px;border-radius:99px;pointer-events:none;transition:opacity .6s}
.t-alt.rest{opacity:0}
.t-hint{position:absolute;left:0;right:0;bottom:46px;text-align:center;font-size:12px;font-weight:700;color:#fff;text-shadow:0 1px 3px #000;animation:bob 1.4s ease-in-out infinite;pointer-events:none;z-index:3}
@keyframes bob{50%{transform:translateY(5px)}}
.t-btn{position:absolute;right:10px;bottom:8px;z-index:3;width:38px;height:38px;border-radius:10px;background:rgba(0,0,0,.45);color:#fff;font-size:18px}
.sky-wrap.full{position:fixed;inset:0;z-index:15;background:var(--bg)}
.sky-wrap.full .sky{height:100%}
.sky-wrap.full .t-info{top:calc(14px + env(safe-area-inset-top))}
/* Un solo mundo detrás de la torre */
.zbox{position:absolute;left:0;right:0;overflow:hidden;pointer-events:none;z-index:0;-webkit-mask:linear-gradient(to top,transparent,#000 22%,#000 78%,transparent);mask:linear-gradient(to top,transparent,#000 22%,#000 78%,transparent)}
.zbox.first{-webkit-mask:linear-gradient(to top,#000 78%,transparent);mask:linear-gradient(to top,#000 78%,transparent)}
.fog{position:absolute;left:0;right:0;top:0;background:linear-gradient(to top,rgba(255,255,255,0),rgba(255,255,255,.55));pointer-events:none;z-index:0}
.fog.dark{background:linear-gradient(to top,rgba(10,8,25,0),rgba(10,8,25,.85))}
.scene{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.strip{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column-reverse;transition:transform .25s ease-out;will-change:transform}
.panel{position:relative;flex:0 0 var(--ph,300px);height:var(--ph,300px);overflow:hidden}
.panel.night::before,.lu.night::before{content:"";position:absolute;inset:0;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 32% 42%,#fff,transparent),radial-gradient(1.5px 1.5px at 58% 12%,#fff,transparent),radial-gradient(1px 1px at 78% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 88% 78%,#fff,transparent),radial-gradient(1px 1px at 22% 66%,#fff,transparent),radial-gradient(1px 1px at 92% 58%,#fff,transparent),radial-gradient(1.5px 1.5px at 46% 86%,#fff,transparent);background-size:200px 200px;animation:twinkle 4s ease-in-out infinite alternate}
.pname{position:absolute;left:0;right:0;top:44%;text-align:center;font-size:30px;font-weight:900;letter-spacing:8px;text-transform:uppercase;color:#fff;opacity:.12;white-space:nowrap}
.tcol{background:none;min-height:100%}
.hills{position:absolute;left:-20%;right:-20%;bottom:-10%;height:26%;border-radius:50% 50% 0 0;background:linear-gradient(#5aa05a,#2f5f30)}
.hills.h2{left:30%;right:-40%;bottom:-4%;height:18%;background:linear-gradient(#6cb36c,#3c7a3d)}
.treec{position:absolute;bottom:9%;width:0;height:0;transform:scale(var(--s,1));transform-origin:bottom}
.treec::before{content:"";position:absolute;left:-14px;bottom:8px;border:14px solid transparent;border-bottom:34px solid #2f7a3a;border-top:0}
.treec::after{content:"";position:absolute;left:-3px;bottom:0;width:6px;height:10px;background:#6e4423}
.birdf{position:absolute;animation:birdfly 22s linear infinite}
@keyframes birdfly{from{transform:translateX(-30vw)}to{transform:translateX(120vw)}}
.planef{position:absolute;top:38%;animation:planex 18s linear infinite}
@keyframes planex{from{transform:translateX(-12cqw)}to{transform:translateX(110cqw)}}
.satf{position:absolute;right:14%;top:24%;animation:drift 10s ease-in-out infinite alternate}
.comet{position:absolute;width:90px;height:3px;border-radius:3px;background:linear-gradient(90deg,#fff,rgba(160,220,255,0));transform:rotate(-25deg);box-shadow:0 0 10px #bfe8ff}
.cloudbank{position:absolute;border-radius:50%;background:#fff;opacity:.85;filter:blur(8px);animation:drift 14s ease-in-out infinite alternate}
.cloudbank::before,.cloudbank::after{content:"";position:absolute;border-radius:50%;background:#fff}
.cloudbank::before{left:18%;top:-45%;width:45%;height:110%}
.cloudbank::after{left:48%;top:-25%;width:38%;height:90%}
.sun{position:absolute;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fffbe0 0 35%,#ffd36b 55%,rgba(255,180,60,0) 72%);filter:drop-shadow(0 0 20px #ffcf5a)}
.earthcap{position:absolute;left:-60%;width:220%;height:500%;top:62%;border-radius:50%;background:radial-gradient(ellipse at 50% 0%,#5fb8ff 0,#1f5fb0 8%,#0d2e5e 22%,#06162e 40%);box-shadow:0 -4px 18px 4px rgba(140,210,255,.9),0 -20px 60px 20px rgba(80,160,255,.35)}
.aurora{position:absolute;left:-30%;right:-30%;top:6%;height:62%;background:linear-gradient(transparent,rgba(80,255,170,.4) 40%,transparent);filter:blur(10px);transform:skewX(-25deg);animation:aur 7s ease-in-out infinite alternate}
.aurora.a2{top:16%;background:linear-gradient(transparent,rgba(180,120,255,.35) 50%,transparent);animation-duration:9s;animation-direction:alternate-reverse}
@keyframes aur{from{transform:skewX(-25deg) translateX(-8%) scaleY(.9)}to{transform:skewX(15deg) translateX(8%) scaleY(1.15)}}
.planet{position:absolute;aspect-ratio:1;border-radius:50%;box-shadow:inset -18px -12px 36px rgba(0,0,0,.65)}
.planet.earth{background:radial-gradient(circle at 30% 35%,#5fa86a 0 9%,transparent 10%),radial-gradient(circle at 62% 58%,#6aa857 0 12%,transparent 13%),radial-gradient(circle at 48% 22%,#ffffff 0 5%,transparent 6%),radial-gradient(circle at 35% 30%,#7cc6ff,#1d5fb3 55%,#0a2550);box-shadow:inset -22px -14px 40px rgba(0,0,0,.7),0 0 26px 4px rgba(110,190,255,.55)}
.planet.moonp{background:radial-gradient(circle at 30% 34%,#b9b9b9 0 8%,transparent 9%),radial-gradient(circle at 60% 60%,#adadad 0 11%,transparent 12%),radial-gradient(circle at 66% 28%,#c2c2c2 0 6%,transparent 7%),radial-gradient(circle at 38% 70%,#b3b3b3 0 7%,transparent 8%),radial-gradient(circle at 35% 35%,#f4f4f0,#bdbdb6 60%,#7d7d78);box-shadow:inset -20px -14px 36px rgba(0,0,0,.6),0 0 30px rgba(255,255,240,.25)}
.planet.mars{background:radial-gradient(circle at 50% 12%,#fff 0 7%,transparent 9%),radial-gradient(circle at 40% 55%,#9a3412 0 12%,transparent 14%),radial-gradient(circle at 35% 30%,#ffa173,#c1440e 55%,#4a1404);box-shadow:inset -16px -10px 30px rgba(0,0,0,.7),0 0 20px rgba(255,120,60,.35)}
.planet.rock{background:#8a7d6e;box-shadow:inset -3px -2px 4px rgba(0,0,0,.6);border-radius:45% 55% 50% 50%}
.planet.tumble{animation:tumble 24s linear infinite}
@keyframes tumble{to{transform:rotate(360deg)}}
.planet.jupiter{background:repeating-linear-gradient(8deg,#e9d5b4 0 9%,#c99b6d 9% 15%,#f3e6cc 15% 22%,#b47a4c 22% 27%,#dcc29a 27% 34%);box-shadow:inset -30px -20px 50px rgba(0,0,0,.7)}
.planet.jupiter i{position:absolute;left:52%;top:58%;width:22%;height:13%;border-radius:50%;background:radial-gradient(#c8482a,#9a2e16);box-shadow:0 0 0 3px rgba(240,200,170,.6)}
.planet.uranus{background:radial-gradient(circle at 35% 35%,#d2fbff,#7fe0e8 50%,#2b8a95)}
.planet.neptune{background:radial-gradient(circle at 35% 35%,#a9b9ff,#3f63ff 50%,#121f7a)}
.planet.earthsky{left:12%;top:8%;height:16%;animation:fadein 2s}
.saturn{position:absolute;aspect-ratio:1}
.saturn b{position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(12deg,#f3e0a8 0 12%,#d8bd7a 12% 18%,#efd9a0 18% 30%);box-shadow:inset -14px -10px 28px rgba(0,0,0,.6)}
.saturn i{position:absolute;left:-55%;right:-55%;top:30%;height:40%;border-radius:50%;background:radial-gradient(closest-side,transparent 64%,rgba(228,210,160,.9) 67% 80%,transparent 82%,rgba(200,180,130,.55) 85% 92%,transparent 95%);transform:rotate(-16deg)}
.neb{position:absolute;border-radius:50%;filter:blur(26px);opacity:.55;mix-blend-mode:screen;animation:breathe 9s ease-in-out infinite alternate}
@keyframes breathe{to{transform:scale(1.15) translate(4%,-3%);opacity:.75}}
.galaxy{position:absolute;aspect-ratio:1;transform:rotateX(62deg) rotate(20deg)}
.galaxy i{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#fff 0 5%,#ffe7b8 10%,transparent 32%),conic-gradient(from 0deg,transparent,rgba(180,150,255,.85),transparent 22%,rgba(255,180,230,.75),transparent 47%,rgba(150,200,255,.85),transparent 72%,rgba(255,220,160,.75),transparent);-webkit-mask:radial-gradient(circle,#000 25%,transparent 70%);mask:radial-gradient(circle,#000 25%,transparent 70%);animation:spin 60s linear infinite}
@keyframes spin{to{transform:rotate(calc(360deg * var(--r,1)))}}
.web{position:absolute;inset:0;width:100%;height:100%}
/* Adornos de la torre */
.keep{position:absolute;left:calc(50% + 104px);width:11px;height:11px;transform:rotate(45deg);background:linear-gradient(135deg,#fff,var(--k));box-shadow:0 0 8px 2px var(--k);z-index:2;animation:gem 3s ease-in-out infinite alternate}
@keyframes gem{to{box-shadow:0 0 14px 4px var(--k)}}
.puffc{position:absolute;width:44px;height:16px;border-radius:50%;background:#fff;opacity:.8;filter:blur(2px);animation:drift 9s ease-in-out infinite alternate;pointer-events:none}
.puffc::before{content:"";position:absolute;left:10px;top:-9px;width:22px;height:20px;border-radius:50%;background:#fff}
.crane{position:absolute;left:calc(100% + 2px);bottom:-4px}
/* Escenas de la subida de nivel */
.lu-art{position:absolute;inset:0;pointer-events:none;overflow:hidden;transition:opacity 1.2s}
.lu-art.dim{opacity:.08}
.fx{position:absolute;pointer-events:none;z-index:4}
.fx.cv{inset:0;width:100%;height:100%}
.lu-rank,.lu-cap,.lu-tap,.lu-head{position:relative;z-index:6}
.lu-tower{position:relative;z-index:2}
.lu.grounded .lu-tower{position:absolute;left:0;right:0;bottom:11%;margin:0}
.lu-cap{text-align:center;color:#fff;font-weight:700;font-size:16px;text-shadow:0 2px 6px #000;min-height:1.4em;opacity:0;transition:opacity .6s;margin:6px 0}
.lu-cap.show{opacity:1}
.lu.quake .lu-art,.lu.quake .lu-head{animation:quake .12s linear infinite}
@keyframes quake{25%{transform:translate(-4px,2px)}50%{transform:translate(3px,-3px)}75%{transform:translate(-2px,-1px)}}
.lu.quake .lu-tower{animation:quaket .12s linear infinite}
@keyframes quaket{0%,100%{transform:scale(.85)}25%{transform:scale(.85) translate(-3px,2px)}50%{transform:scale(.85) translate(2px,-2px)}75%{transform:scale(.85) translate(-1px,-1px)}}
.lu::after{z-index:8}
.lu.flash-soft::after{animation:flashs 1.4s}
@keyframes flashs{0%{opacity:.5;background:#fff3d6}100%{opacity:0}}
.lu.flash-big::after{animation:flashb 1.6s}
@keyframes flashb{0%,15%{opacity:1}100%{opacity:0}}
.lu.pulled .lu-tower,.lu.pulled .lu-head{transition:transform 4s cubic-bezier(.6,0,.9,.6);transform:translateX(18vw) skewX(-14deg) scale(1.3)}
.lu.pulled .lu-head{transform:translateX(18vw) skewX(-14deg)}
.lu.snap .lu-tower{transition:transform .9s cubic-bezier(.2,1.8,.4,1);transform:scale(.85)}
.lu.snap .lu-head{transition:transform .9s cubic-bezier(.2,1.8,.4,1);transform:none}
.storm{inset:0;background:rgba(5,8,20,.78);animation:fadein .6s;z-index:3}
.zapped .floor{animation:zap .9s steps(2) 3}
@keyframes zap{50%{filter:brightness(2.4) saturate(.3)}}
.bonus{left:0;right:0;top:24%;text-align:center;font-size:56px;font-weight:900;color:var(--gold);text-shadow:0 0 22px var(--gold),0 3px 8px #000;animation:pop .5s;z-index:7}
.countdown{left:0;right:0;top:30%;text-align:center;font-size:150px;font-weight:900;color:#fff;text-shadow:0 0 30px var(--acc),0 4px 12px #000;animation:cd .85s ease-out forwards;z-index:7}
@keyframes cd{from{transform:scale(1.8);opacity:0}30%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.7)}}
.glow{inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,140,30,.6),rgba(255,60,0,.2) 45%,transparent 70%);animation:fadein .8s,glowp 1.2s ease-in-out infinite alternate;z-index:3}
@keyframes glowp{to{opacity:.6}}
.nightfall{inset:0;animation:nightf 7.4s forwards;z-index:3}
@keyframes nightf{0%{background:rgba(0,0,10,0)}25%,85%{background:rgba(0,0,10,.8)}100%{background:rgba(0,0,10,0)}}
.void{inset:0;background:#000;animation:voidf 11s forwards;z-index:3}
@keyframes voidf{0%{opacity:0}8%,70%{opacity:1}100%{opacity:0}}
.earthrise{left:-60%;width:220%;aspect-ratio:1;top:100%;border-radius:50%;background:radial-gradient(ellipse at 50% 0%,#7cc6ff 0,#2b6cc4 6%,#0f3a78 16%,#061a38 32%);box-shadow:0 -6px 24px 6px rgba(150,215,255,.95),0 -30px 90px 30px rgba(90,170,255,.45);animation:erise 3s cubic-bezier(.2,.8,.3,1) forwards;z-index:3}
@keyframes erise{to{top:62%}}
.sunpt{left:50%;top:62%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:#fff;box-shadow:0 0 40px 20px #fff,0 0 120px 60px rgba(255,220,150,.8),0 0 300px 120px rgba(255,180,90,.35);animation:sunpt 4.8s ease-out forwards;z-index:5}
@keyframes sunpt{0%{transform:scale(0)}25%{transform:scale(1.4)}100%{transform:scale(1);opacity:.6}}
.flare{left:calc(50% + var(--i) * -9%);top:calc(62% + var(--i) * -7%);width:calc(18px + var(--i) * 12px);aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,230,180,.5);background:rgba(255,200,120,.08);transform:translate(-50%,-50%);animation:fadein 1.2s;z-index:5}
.moon{left:50%;top:110%;width:180px;height:180px;margin-left:-90px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 35% 35%,#fffbe8,#e9e2c4 60%,#cfc6a2);box-shadow:0 0 60px rgba(255,250,220,.6);animation:moonrise 2.2s ease-out forwards;transition:box-shadow 2.4s;z-index:4}
@keyframes moonrise{to{top:12%}}
.moon i{position:absolute;inset:0;border-radius:50%;background:#05030c;transform:translateX(-200px);transition:transform 2.4s ease-in-out}
.moon.eclipse i{transform:none}
.moon.eclipse{box-shadow:0 0 30px 10px #fff7d6,0 0 130px 45px rgba(255,190,90,.7)}
.diamond{left:calc(50% + 60px);top:calc(12% + 22px);width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 30px 14px #fff,0 0 90px 40px rgba(255,240,200,.8);animation:diamond 1.6s ease-out forwards;z-index:5}
@keyframes diamond{0%{transform:scale(0)}30%{transform:scale(1.6)}100%{transform:scale(.4);opacity:0}}
.lunarsurf{left:-10%;right:-10%;bottom:-40%;height:40%;border-radius:50% 50% 0 0/30% 30% 0 0;background:radial-gradient(circle at 20% 30%,#8f8f8f 0 4%,transparent 5%),radial-gradient(circle at 70% 20%,#8a8a8a 0 6%,transparent 7%),linear-gradient(#bdbdbd,#6d6d6d);animation:surf 1.5s ease-out forwards;z-index:3}
@keyframes surf{to{bottom:-6%}}
.lander{left:24%;top:-30%;width:70px;height:64px;animation:lander 4.3s cubic-bezier(.3,.6,.4,1) forwards;z-index:4}
@keyframes lander{to{top:calc(100% - 28% - 64px)}}
.lander .cab{position:absolute;left:14px;top:0;width:42px;height:26px;border-radius:8px 8px 2px 2px;background:linear-gradient(#e6e6e6,#9a9a9a)}
.lander .foil{position:absolute;left:8px;top:24px;width:54px;height:20px;background:repeating-linear-gradient(60deg,#e2b33c 0 6px,#c18f1d 6px 12px)}
.lander .leg{position:absolute;top:40px;width:3px;height:26px;background:#bbb}
.lander .leg.l{left:8px;transform:rotate(25deg)}
.lander .leg.r{right:8px;transform:rotate(-25deg)}
.lander .thrust{position:absolute;left:27px;top:44px;width:16px;height:30px;border-radius:50% 50% 50% 50%/30% 30% 70% 70%;background:radial-gradient(#fff,#9fd7ff 40%,rgba(80,150,255,0) 70%);animation:thr .08s infinite alternate}
@keyframes thr{to{transform:scaleY(1.3);opacity:.7}}
.lander.landed .thrust{display:none}
.redtint{inset:0;background:rgba(190,80,30,.35);animation:tint 7.6s forwards;z-index:3}
@keyframes tint{0%{opacity:0}20%,80%{opacity:1}100%{opacity:0}}
.phobos{left:20%;top:14%;width:18px;height:14px;border-radius:45% 55% 50% 50%;background:#8a7d6e;box-shadow:inset -3px -2px 4px rgba(0,0,0,.6);animation:fadein 1.4s,drift 6s ease-in-out infinite alternate}
.phobos.deimos{left:70%;top:24%;width:10px;height:10px}
.jupiterbig{left:-30%;right:-30%;aspect-ratio:1;top:100%;border-radius:50%;overflow:hidden;background:repeating-linear-gradient(6deg,#e9d5b4 0 6%,#c99b6d 6% 10%,#f3e6cc 10% 15%,#b47a4c 15% 18%,#dcc29a 18% 23%);background-size:200% 100%;box-shadow:inset -60px -40px 120px rgba(0,0,0,.75),0 0 60px rgba(255,220,170,.25);animation:jrise 2.4s cubic-bezier(.2,.8,.3,1) forwards,bands 12s linear infinite;z-index:3}
@keyframes jrise{to{top:38%}}
@keyframes bands{to{background-position:-200% 0}}
.jupiterbig i{position:absolute;left:54%;top:26%;width:26%;height:10%;border-radius:50%;background:conic-gradient(#c8482a,#e07a4f,#9a2e16,#d65a35,#c8482a);animation:spin 8s linear infinite}
.jupiterbig .lz{position:absolute;width:40px;height:20px;border-radius:50%;background:radial-gradient(#fff,rgba(200,220,255,0) 70%);opacity:0}
.jupiterbig .lz.on{animation:lz .5s}
@keyframes lz{20%,40%{opacity:1}0%,100%{opacity:0}}
.saturnbig{left:50%;top:22%;width:150px;height:150px;margin-left:-75px;animation:sat 3.8s ease-out forwards;z-index:4}
@keyframes sat{from{transform:scale(.3);opacity:0}30%{opacity:1}to{transform:scale(1.15)}}
.saturnbig b{position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(12deg,#f3e0a8 0 12%,#d8bd7a 12% 18%,#efd9a0 18% 30%);box-shadow:inset -24px -16px 40px rgba(0,0,0,.6)}
.saturnbig i{position:absolute;left:-55%;right:-55%;top:30%;height:40%;border-radius:50%;background:radial-gradient(closest-side,transparent 64%,rgba(228,210,160,.9) 67% 80%,transparent 82%,rgba(200,180,130,.55) 85% 92%,transparent 95%);transform:rotate(-16deg)}
.star0{left:50%;top:42%;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;background:radial-gradient(#fff,#fff3b0 40%,#ffb347 70%,rgba(255,120,40,0) 72%);box-shadow:0 0 60px 30px rgba(255,200,120,.7);animation:pulse0 .8s ease-in-out infinite alternate,fadein 1s;z-index:5}
@keyframes pulse0{to{transform:scale(1.25)}}
.star0.collapse{animation:collapse .9s cubic-bezier(.7,0,1,.5) forwards}
@keyframes collapse{0%{transform:scale(1.3)}80%{transform:scale(.05);box-shadow:0 0 30px 10px #fff}100%{transform:scale(.02);box-shadow:0 0 80px 40px #fff}}
.bubble-u{left:50%;top:40%;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;overflow:hidden;border:2px solid hsla(0,0%,100%,.6);box-shadow:0 0 30px rgba(180,220,255,.6),inset 0 0 30px rgba(180,220,255,.4);background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.25),rgba(80,60,160,.35));animation:ubub 7.4s ease-in-out both;z-index:5}
@keyframes ubub{0%{transform:scale(0)}15%{transform:translate(var(--dx),var(--dy)) scale(1)}50%{transform:translate(calc(var(--dx) * 1.1),calc(var(--dy) * .9)) scale(1.05)}85%{transform:translate(var(--dx),var(--dy)) scale(1)}100%{transform:scale(0)}}
.mini-t{position:absolute;left:50%;bottom:6%;display:flex;flex-direction:column-reverse;align-items:center;transform:translateX(-50%) scale(.3);transform-origin:bottom center}
.input{width:100%;padding:14px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--text);font-size:17px}
.err{color:#ff6b6b;min-height:1.2em;margin:8px 0}
.cloud{font-size:13px;color:var(--muted);margin-right:4px}
.bar{height:10px;background:var(--line);border-radius:99px;overflow:hidden;margin-bottom:6px}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--push),var(--gold));border-radius:99px;transition:width .6s}
.stat .big{font-size:24px;font-weight:800}
.goal{display:flex;align-items:center;gap:10px;padding:6px 0}
.goal b{margin-left:auto;font-size:18px}
.dot{width:10px;height:10px;border-radius:50%;background:var(--c)}
.btn{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 18px;font-weight:700}
.btn.primary{background:var(--c);border-color:transparent;color:#0b0d10}
.btn.xl{padding:18px;font-size:19px;width:100%;border-radius:18px}
.btn.danger{color:#ff6b6b}
.weekrow{display:flex;justify-content:space-between;padding:4px 6px}
.wd{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.wd i{width:26px;height:26px;border-radius:50%;border:2px solid var(--line)}
.wd.ok i{background:var(--ok);border-color:var(--ok)}
.wd.part i{border-color:var(--gold)}
.wd.today span{color:var(--text);font-weight:800}
.center-col{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;text-align:center}
.xtop{display:flex;justify-content:space-between;align-items:center;font-weight:700}
.count-in{font-size:150px;font-weight:900;line-height:1;color:var(--c)}
.work{flex:1;display:flex;flex-direction:column;gap:12px}
.timer{position:relative;width:120px;height:120px;margin:0 auto}
.timer svg{width:100%;height:100%;transform:rotate(-90deg)}
.timer circle{fill:none;stroke-width:8}
.track{stroke:var(--line)}
.prog{stroke:var(--c);stroke-linecap:round}
.timer b{position:absolute;inset:0;display:grid;place-items:center;font-size:36px;font-weight:900}
.timer.low b{color:#ff6b6b}
.tap{flex:1;min-height:260px;border-radius:28px;background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--c) 26%,var(--card)),var(--card));border:2px solid color-mix(in srgb,var(--c) 45%,transparent);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;position:relative;overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:none}
.tap #reps{font-size:128px;font-weight:900;line-height:1;color:var(--c)}
.tap small{font-size:18px;color:var(--muted)}
.tap em{font-style:normal;font-size:14px;color:var(--muted)}
.tap.hit{border-color:var(--ok)}
.tap.hit em{color:var(--ok);font-weight:700}
.tap.pulse{animation:pulse .16s}
@keyframes pulse{50%{transform:scale(.97)}}
.plus{position:absolute;top:30%;font-size:22px;font-weight:900;color:var(--gold);animation:up .7s forwards;pointer-events:none}
@keyframes up{to{transform:translateY(-90px);opacity:0}}
.wbot{display:flex;gap:12px}
.wbot .btn{flex:1;padding:16px}
.ok-txt{color:var(--ok);font-weight:700}
.goal .muted{margin-left:4px}
.rest-t{font-size:120px;font-weight:900;line-height:1}
.next{border-left:4px solid var(--c);text-align:left}
.next .big{font-size:22px;font-weight:800;color:var(--c)}
.xp-big{font-size:60px;font-weight:900;color:var(--gold);line-height:1}
.lines{text-align:left}
.lines div{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}
.lines div:last-child{border:0}
.stepper{display:flex;justify-content:space-between;align-items:center;padding:8px 0;text-align:left}
.ctl{display:flex;align-items:center;gap:10px}
.ctl button{width:42px;height:42px;border-radius:12px;background:var(--line);font-size:20px}
.ctl b{min-width:58px;text-align:center;font-size:18px}
.switch{display:flex;justify-content:space-between;align-items:center;padding:8px 0;width:100%;text-align:left}
.switch i{width:48px;height:28px;border-radius:99px;background:var(--line);position:relative;transition:.2s}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--text);transition:.2s}
.switch.on i{background:var(--ok)}
.switch.on i::after{left:23px}
.chart{display:flex;align-items:flex-end;gap:4px;height:150px}
.col{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:2px}
.col i{display:block;border-radius:4px}
.col .p{background:var(--push)}.col .a{background:var(--abs)}
.labels{display:flex;gap:4px;margin-top:6px}
.labels span{flex:1;text-align:center;font-size:10px;color:var(--muted)}
.legend{display:flex;gap:14px;font-size:13px;color:var(--muted);margin-top:10px}
.legend span{display:flex;align-items:center;gap:6px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid2 .card{padding:14px}
.grid2 b{display:block;font-size:22px}
.log div{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.log div:last-child{border:0}
.hero{font-size:56px}
.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:9}
.confetti i{position:absolute;top:-16px;width:8px;height:14px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
/* ---------- Estilos de piso según la altura ---------- */
.floor::after,.floor.base::after{content:none}
.floor{--glass:#a8d0ee;--glass2:#5b8cbf;--frame:#efe6d2}
.floor .trim{position:absolute;left:0;right:0;top:0;height:4px;background:var(--m);z-index:1}
.floor .wr{position:absolute;left:12px;right:12px;top:10px;bottom:8px;display:flex;justify-content:space-between;align-items:stretch;z-index:1}
.floor .wv{position:relative;display:flex;flex-direction:column;justify-content:center}
.floor .w{position:relative;display:block;width:20px;flex:1;background:linear-gradient(160deg,var(--glass),var(--glass2));border:2px solid var(--frame);overflow:hidden}
.floor .w.on{--glass:#ffe6a6;--glass2:#ffb24a;box-shadow:0 0 8px rgba(255,190,90,.65)}
.floor .door{z-index:2}
/* Pradera: casa de madera con postigos y maceteros */
.floor.s-wood{--facade:repeating-linear-gradient(0deg,#9b6b40 0 7px,#7f532d 7px 8px);background:var(--facade);--frame:#f3ead6}
.s-wood .w{width:17px}
.s-wood .wv::before,.s-wood .wv::after{content:"";position:absolute;top:2px;bottom:7px;width:5px;background:repeating-linear-gradient(#3f7a4a 0 2px,#2f5f38 2px 3px);border-radius:1px;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.25);filter:brightness(calc(1 - var(--d,0) * .7));z-index:0}
.s-wood .wv::before{left:-6px}
.s-wood .wv::after{right:-6px}
.fb{position:relative;display:block;height:5px;margin:1px -3px 0;background:#8b5a2b;box-shadow:inset 0 2px #6e4423}
.fb::before{content:"";position:absolute;left:1px;right:1px;top:-4px;height:4px;background:radial-gradient(circle,#ff5f6d 1.4px,transparent 1.7px) 0 0/5px 4px,radial-gradient(circle,#ffd23f 1.2px,transparent 1.5px) 2.5px 0/5px 4px}
/* Nubes: ladrillo con toldos */
.floor.s-brick{--facade:#b2533b;background-color:var(--facade);--facade-image:linear-gradient(rgba(255,255,255,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px);background-image:var(--facade-image);--facade-size:100% 8px,16px 8px;background-size:var(--facade-size);--frame:#e9dcc8}
.s-brick .w{border-radius:9px 9px 1px 1px}
.awn{display:block;height:6px;margin:0 -4px 1px;background:repeating-linear-gradient(90deg,var(--a) 0 4px,#fff 4px 8px);clip-path:polygon(12% 0,88% 0,100% 100%,0 100%)}
/* Cielo alto: rascacielos de vidrio con reflejo que pasa */
.floor.s-glass{--facade:linear-gradient(100deg,#2d5a92,#7fb0e2 35%,#3c6fa8 55%,#9cc6ee 70%,#2a5288);background:var(--facade);--frame:#cfd8e3;--glass:#bfe0ff;--glass2:#3d74b4;overflow:hidden}
.s-glass .wr{left:8px;right:8px;top:7px;bottom:6px}
.s-glass .w{width:13px;border-width:1px}
.shine{position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.55) 48%,transparent 56%);background-size:250% 100%;animation:shine 7s ease-in-out infinite;z-index:2;pointer-events:none}
@keyframes shine{0%,60%{background-position:120% 0}100%{background-position:-120% 0}}
/* Estratosfera: torre de observación con balizas */
.floor.s-tower{--facade:linear-gradient(#9aa1aa,#6b727c);background:var(--facade);--frame:#4a4f57;--glass:#2b3a55;--glass2:#11182a}
.s-tower .wr{top:15px;bottom:15px}
.s-tower .wv{flex:1}
.s-tower .w{width:auto}
.bc{position:absolute;top:-3px;width:6px;height:6px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 8px 2px rgba(255,60,60,.8);animation:blink 1.6s steps(1) infinite;z-index:3}
.bc.l{left:-2px}.bc.r{right:-2px}
@keyframes blink{50%{opacity:.15;box-shadow:none}}
/* Aurora: base polar con nieve y carámbanos */
.floor.s-polar{--facade:linear-gradient(#f2f6fa,#cfdbe5);background:var(--facade);--frame:#e37b2c;--glass:#a8d8ff;--glass2:#3e7fbf}
.s-polar .wv{justify-content:center}
.s-polar .w{flex:0 0 18px;width:18px;height:18px;border-radius:50%;border-width:3px}
.snow{position:absolute;left:-3px;right:-3px;top:-4px;height:8px;background:#fff;border-radius:6px;z-index:2;box-shadow:0 2px 3px rgba(0,0,0,.15)}
.icicles{position:absolute;left:4px;right:4px;bottom:-7px;height:7px;background:conic-gradient(from 135deg at 50% 0,#e8f6ff 90deg,transparent 0) 0 0/8px 7px;z-index:2}
/* Órbita: módulo de estación con escotillas y paneles solares */
.floor.s-module{--facade:linear-gradient(90deg,#7d8794,#e9edf2 28%,#ffffff 42%,#c5ccd6 70%,#6f7986);background:var(--facade);--frame:#8a929c;--glass:#1b2a44;--glass2:#0a1222;border-radius:4px}
.s-module .wv{justify-content:center}
.s-module .w{flex:0 0 20px;height:20px;border-radius:50%;border:3px solid #9aa3ad}
.s-module .w.on,.s-lunar .w.on{--glass:#9fe0ff;--glass2:#3a8fd0;box-shadow:0 0 8px rgba(120,200,255,.6)}
.nav{position:absolute;top:50%;width:5px;height:5px;margin-top:-2px;border-radius:50%;z-index:3;animation:blink 2s steps(1) infinite}
.nav.l{left:-3px;background:#ff3b3b;box-shadow:0 0 6px #ff3b3b}
.nav.r{right:-3px;background:#3bff6a;box-shadow:0 0 6px #3bff6a;animation-delay:-1s}
.wing{position:absolute;top:11px;width:22px;height:24px;background:repeating-linear-gradient(90deg,#2b4f9a 0 5px,#6f94d8 5px 6px);border:1px solid #9fb6e8;z-index:0}
.wing.l{right:100%;margin-right:3px}.wing.r{left:100%;margin-left:3px}
/* Luna: base lunar con lámina dorada */
.floor.s-lunar{--facade:radial-gradient(circle at 25% 30%,rgba(0,0,0,.12) 2px,transparent 3px) 0 0/14px 12px,linear-gradient(#d9d4c8,#a9a396);background:var(--facade);--frame:#7a746a;--glass:#3a3220;--glass2:#14100a}
.s-lunar .wr{bottom:12px}
.foil{position:absolute;left:0;right:0;bottom:0;height:9px;background:repeating-linear-gradient(60deg,#e2b33c 0 5px,#c18f1d 5px 10px);z-index:2}
/* Marte: hábitat con invernaderos */
.floor.s-mars{--facade:linear-gradient(#c8643a,#7a2e14);background:var(--facade);--frame:#e7c6a8;--glass:rgba(140,230,150,.55);--glass2:rgba(40,120,60,.8)}
.s-mars .w{width:26px;border-radius:12px 12px 2px 2px;background:radial-gradient(circle at 30% 85%,#3fa34d 0 25%,transparent 27%),radial-gradient(circle at 70% 90%,#5cc46a 0 22%,transparent 24%),linear-gradient(160deg,var(--glass),var(--glass2))}
.s-mars .w.on{box-shadow:0 0 10px rgba(120,255,140,.6)}
.pipe{position:absolute;left:-6px;right:-6px;bottom:4px;height:4px;background:#9aa1aa;border-radius:2px;z-index:2}
/* Cinturón: estación minera con franjas de peligro y focos */
.floor.s-mine{--facade:linear-gradient(#4a4f57,#2a2e34);background:var(--facade);--frame:#1a1d22;--glass:#3a2a14;--glass2:#1a1208}
.s-mine .wr{bottom:10px}
.s-mine .w{width:14px}
.s-mine .w.on{--glass:#ffb347;--glass2:#c96a12}
.hazard{position:absolute;left:0;right:0;bottom:0;height:7px;background:repeating-linear-gradient(45deg,#ffd23f 0 6px,#1a1a1a 6px 12px);z-index:2}
.flood{position:absolute;top:6px;width:90px;height:56px;z-index:0;pointer-events:none}
.flood.r{left:100%;background:linear-gradient(90deg,rgba(255,240,180,.4),transparent);clip-path:polygon(0 42%,100% 0,100% 100%,0 58%)}
.flood.l{right:100%;background:linear-gradient(270deg,rgba(255,240,180,.4),transparent);clip-path:polygon(100% 42%,0 0,0 100%,100% 58%)}
/* Júpiter: plataforma flotante con turbinas */
.floor.s-gas{--facade:linear-gradient(#efd9b0 0 30%,#d29a62 30% 45%,#f3e6cc 45% 70%,#b47a4c 70%);background:var(--facade);--frame:#8a5a32;--glass:#5a3a20;--glass2:#2a1a0a}
.s-gas .w.on{--glass:#ffd28a;--glass2:#e08a2e}
.fan{position:absolute;top:12px;width:22px;height:22px;border-radius:50%;background:conic-gradient(#ddd 0 20deg,transparent 20deg 120deg,#ddd 120deg 140deg,transparent 140deg 240deg,#ddd 240deg 260deg,transparent 260deg);border:2px solid #aaa;animation:spin 1.4s linear infinite;z-index:0}
.fan.l{right:100%;margin-right:2px}.fan.r{left:100%;margin-left:2px}
.band{position:absolute;left:-4px;right:-4px;top:20px;height:4px;background:#8a5a32;z-index:2}
/* Saturno: estación con anillo propio */
.floor.s-ring{--facade:linear-gradient(#5a4a2a,#2a2214);background:var(--facade);--frame:#c9a64a;--glass:#1a3a3a;--glass2:#0a1a1a}
.s-ring .w.on{--glass:#7ff0e0;--glass2:#1a9a8a;box-shadow:0 0 8px rgba(120,255,230,.5)}
.ringo{position:absolute;left:-22px;right:-22px;top:18px;height:14px;border-radius:50%;border:2px solid rgba(240,210,130,.9);box-shadow:0 0 8px rgba(255,220,140,.6);z-index:3;animation:ringg 4s ease-in-out infinite}
@keyframes ringg{50%{border-color:#fff5c8;box-shadow:0 0 14px rgba(255,230,160,.9)}}
/* Confines: hielo cristalizado */
.floor.s-ice{--facade:conic-gradient(from 30deg at 30% 40%,#e6fbff,#9fe0f0,#d8f6ff,#7fc8e6,#e6fbff);background:var(--facade);--frame:#fff;--glass:#bff4ff;--glass2:#5fb7d4;overflow:hidden}
.s-ice .wv{justify-content:center}
.s-ice .w{flex:0 0 14px;width:14px;height:14px;transform:rotate(45deg);border-width:1.5px}
.frost{position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.8) 45%,transparent 60%);background-size:300% 100%;animation:shine 9s ease-in-out infinite;z-index:2}
/* Nebulosas: estructura orgánica que brilla */
.floor.s-bio{--facade:radial-gradient(ellipse at 50% 120%,#ff6ad5,#8a2a9c 60%,#3a0a4a);background:var(--facade);border-radius:22px;border-bottom:0;--frame:rgba(255,190,240,.6);--glass:#ffd0f4;--glass2:#ff4fd8}
.s-bio .trim{left:18px;right:18px;border-radius:3px}
.s-bio .wv{justify-content:center}
.s-bio .w{flex:0 0 18px;height:18px;border-radius:50%;box-shadow:0 0 10px rgba(255,120,230,.8)}
.veins{position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(115deg,transparent 0 10px,rgba(255,200,255,.35) 10px 11px,transparent 11px 22px);animation:veins 5s linear infinite;z-index:0}
@keyframes veins{to{background-position:-60px 0}}
/* Galaxias: cristal que levita */
.floor.s-crystal{--facade:linear-gradient(135deg,rgba(200,180,255,.88),rgba(90,60,200,.8) 50%,rgba(160,220,255,.88));background:var(--facade);box-shadow:0 0 12px rgba(180,160,255,.6),inset 0 0 10px rgba(255,255,255,.5);border-bottom:1px solid rgba(255,255,255,.6);animation:lev 4s ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.37s);--frame:rgba(255,255,255,.7);--glass:rgba(255,255,255,.55);--glass2:rgba(150,120,255,.5)}
@keyframes lev{from{transform:translateY(-2px)}to{transform:translateY(2px)}}
.specks{position:absolute;inset:0;background-image:radial-gradient(1px 1px at 20% 30%,#fff,transparent),radial-gradient(1px 1px at 60% 70%,#fff,transparent),radial-gradient(1.5px 1.5px at 85% 25%,#fff,transparent),radial-gradient(1px 1px at 40% 80%,#fff,transparent);z-index:2;animation:twinkle 3s ease-in-out infinite alternate}
.s-crystal .w{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);border:0}
/* Red cósmica: armazón de energía */
.floor.s-lattice{--facade:rgba(80,140,255,.06);background:var(--facade);border:2px solid rgba(140,200,255,.85);box-shadow:0 0 10px rgba(120,180,255,.6),inset 0 0 10px rgba(120,180,255,.35)}
.xs{position:absolute;inset:0;background:linear-gradient(to top right,transparent calc(50% - 1px),rgba(140,200,255,.6) 50%,transparent calc(50% + 1px)),linear-gradient(to bottom right,transparent calc(50% - 1px),rgba(140,200,255,.6) 50%,transparent calc(50% + 1px));animation:pulse2 3s ease-in-out infinite;animation-delay:calc(var(--i) * -.2s)}
@keyframes pulse2{50%{opacity:.35}}
.node{position:absolute;width:6px;height:6px;border-radius:50%;background:#dff0ff;box-shadow:0 0 8px #9fd0ff;z-index:2}
.node.a{left:-4px;top:-4px}.node.b{right:-4px;top:-4px}.node.c{left:-4px;bottom:-4px}.node.d{right:-4px;bottom:-4px}
/* Más allá del 150: estilos generados */
.floor.s-gen{--facade:linear-gradient(var(--g1),var(--g2));background:var(--facade);--frame:rgba(255,255,255,.4);--glass:var(--gw);--glass2:var(--g2)}
.floor.s-gen.g1{border-radius:6px}.floor.s-gen.g2{border-radius:14px}.floor.s-gen.g3{border-radius:16px 16px 2px 2px}
.s-gen.gw1 .wv,.s-gen.gw2 .wv{justify-content:center}
.s-gen.gw1 .w{flex:0 0 18px;height:18px;border-radius:50%}
.s-gen.gw2 .w{flex:0 0 7px;width:26px}
.s-gen.gw3 .w{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);border:0}
.s-gen .w.on{--glass:var(--gw);box-shadow:0 0 8px var(--gw)}
.floor.s-gen.gglow{box-shadow:0 0 12px var(--g1)}
.floor.s-gen.gshim{background-size:100% 220%;animation:gsh 4s ease-in-out infinite alternate}
@keyframes gsh{to{background-position:0 100%}}
.floor.drop.s-crystal,.floor.drop.s-gen.gshim{animation:drop .55s cubic-bezier(.55,0,1,.45) both}
/* ---------- Remate de la cima ---------- */
.crown{position:absolute;left:0;right:0;height:90px;pointer-events:none;z-index:1}
.crown i{position:absolute;display:block}
.crown .blinkr{left:50%;bottom:78px;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 10px 3px rgba(255,60,60,.8);animation:blink 1.4s steps(1) infinite}
.c-wood .roof{left:50%;bottom:0;width:184px;height:46px;margin-left:-92px;background:repeating-linear-gradient(0deg,#b8432c 0 6px,#8f2f1d 6px 7px);clip-path:polygon(50% 0,100% 100%,0 100%)}
.c-wood .chim{left:calc(50% + 34px);bottom:18px;width:12px;height:30px;background:#7d3a26;box-shadow:inset 0 3px #5a2414}
.c-wood .smoke{left:calc(50% + 35px);bottom:48px;width:10px;height:10px;border-radius:50%;background:rgba(230,230,230,.8);animation:smoke 4s ease-out infinite}
.c-wood .smoke.s2{animation-delay:-2s}
@keyframes smoke{from{transform:translate(0,0) scale(.6);opacity:.9}to{transform:translate(14px,-42px) scale(2.3);opacity:0}}
@keyframes hop{0%,85%,100%{translate:0 0}90%{translate:0 -4px}}
.c-brick .parapet{left:50%;bottom:0;width:156px;margin-left:-78px;height:10px;background:linear-gradient(90deg,#9a4430 0 14px,transparent 14px 20px) 0 0/20px 6px repeat-x,linear-gradient(#b2533b,#b2533b) 0 6px/100% 4px no-repeat}
.c-brick .pole{left:50%;bottom:6px;width:3px;height:64px;background:#ccc}
.c-brick .flag{left:calc(50% + 3px);bottom:46px;width:34px;height:20px;background:var(--acc,#ff7a1a);transform-origin:left;animation:flagw 1.2s ease-in-out infinite alternate}
@keyframes flagw{from{transform:skewY(-6deg) scaleX(.95)}to{transform:skewY(6deg) scaleX(1.03)}}
.c-glass .pad{left:50%;bottom:0;width:120px;height:8px;margin-left:-60px;background:#3a3f4a;border-radius:2px}
.c-glass .spire{left:50%;bottom:8px;width:4px;height:70px;margin-left:-2px;background:linear-gradient(#e9edf2,#8a929c)}
.c-tower .mast{left:50%;bottom:0;width:6px;height:60px;margin-left:-3px;background:repeating-linear-gradient(0deg,#ccc 0 6px,#999 6px 8px)}
.c-tower .dish{left:calc(50% - 26px);bottom:40px;width:52px;height:20px;border-radius:0 0 50% 50%;background:linear-gradient(#e6e9ee,#9aa3ad);animation:radar 4s linear infinite}
@keyframes radar{0%,100%{transform:scaleX(1)}50%{transform:scaleX(-1)}}
.c-tower .blinkr{bottom:62px}
.c-polar .scope{left:50%;bottom:26px;width:8px;height:36px;margin-left:-4px;background:#556;transform-origin:bottom;transform:rotate(-20deg);animation:scope 8s ease-in-out infinite alternate}
@keyframes scope{to{transform:rotate(25deg)}}
.c-polar .odome{left:50%;bottom:0;width:90px;height:45px;margin-left:-45px;border-radius:45px 45px 0 0;background:radial-gradient(circle at 35% 30%,#fff,#cfdbe5 60%,#9fb0bd);overflow:hidden}
.c-polar .odome::after{content:"";position:absolute;left:44%;top:0;width:12%;height:100%;background:#1a2440}
.c-module .dock{left:50%;bottom:0;width:56px;height:26px;margin-left:-28px;border-radius:6px 6px 0 0;background:linear-gradient(90deg,#7d8794,#eef1f5 40%,#9aa3ad)}
.c-module .arr{bottom:8px;width:60px;height:16px;background:repeating-linear-gradient(90deg,#2b4f9a 0 7px,#7f9ee0 7px 8px);border:1px solid #9fb6e8}
.c-module .arr.l{right:calc(50% + 30px)}.c-module .arr.r{left:calc(50% + 30px)}
.c-module .ant{left:calc(50% + 8px);bottom:26px;width:2px;height:40px;background:#ccc}
.c-module .blinkr{bottom:64px;margin-left:5.5px}
.c-lunar .dishb{left:calc(50% - 30px);bottom:4px;width:60px;height:30px;border-radius:50% 50% 0 0/100% 100% 0 0;background:linear-gradient(#f2f2ee,#b5b0a4);transform-origin:50% 100%;animation:dishm 6s ease-in-out infinite alternate}
@keyframes dishm{from{transform:rotate(-15deg)}to{transform:rotate(15deg)}}
.c-lunar .flagm{left:calc(50% + 40px);bottom:0;width:2px;height:44px;background:#ddd}
.c-lunar .flagm::after{content:"";position:absolute;left:2px;top:0;width:26px;height:16px;background:linear-gradient(#d33b2c 0 33%,#fff 33% 66%,#3b6fd8 66%)}
.c-mars .gdome{left:50%;bottom:0;width:120px;height:50px;margin-left:-60px;border-radius:60px 60px 0 0;background:radial-gradient(circle at 30% 85%,#3fa34d 0 18%,transparent 19%),radial-gradient(circle at 65% 90%,#5cc46a 0 16%,transparent 17%),radial-gradient(circle at 50% 75%,#2e8a3a 0 12%,transparent 13%),rgba(160,255,190,.35);border:2px solid rgba(220,255,230,.7);box-shadow:0 0 18px rgba(120,255,150,.45)}
.c-mine .drill{left:50%;bottom:0;width:30px;height:60px;margin-left:-15px;background:repeating-linear-gradient(-30deg,#ffd23f 0 6px,#2a2a2a 6px 12px);clip-path:polygon(20% 0,80% 0,100% 30%,100% 100%,0 100%,0 30%)}
.c-mine .blinkr{bottom:62px}
.c-gas .tpost{left:50%;bottom:0;width:6px;height:50px;margin-left:-3px;background:#bbb}
.c-gas .turb{left:50%;bottom:20px;width:70px;height:70px;margin-left:-35px;border-radius:50%;background:conic-gradient(#eee 0 14deg,transparent 14deg 120deg,#eee 120deg 134deg,transparent 134deg 240deg,#eee 240deg 254deg,transparent 254deg);animation:spin 3s linear infinite}
.c-ring .orb{left:50%;bottom:6px;width:36px;height:36px;margin-left:-18px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff6c8,#e0a020 60%,#7a4a00)}
.c-ring .halo{left:50%;bottom:16px;width:120px;height:20px;margin-left:-60px;border-radius:50%;border:3px solid rgba(240,210,130,.9);box-shadow:0 0 12px rgba(255,220,140,.7);animation:ringsp 6s linear infinite}
@keyframes ringsp{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg) scaleY(.7)}}
.c-ice .spike{left:50%;bottom:0;width:26px;height:70px;margin-left:-13px;background:linear-gradient(90deg,#bff4ff,#fff 50%,#7fc8e6);clip-path:polygon(50% 0,100% 100%,0 100%);filter:drop-shadow(0 0 6px #bff4ff)}
.c-ice .spike.k2{margin-left:-42px;height:44px;width:20px}.c-ice .spike.k3{margin-left:22px;height:50px;width:20px}
.c-bio .stem{left:50%;bottom:0;width:6px;height:40px;margin-left:-3px;background:linear-gradient(#ff9ae6,#8a2a9c);border-radius:3px}
.c-bio .bulb{left:50%;bottom:34px;width:34px;height:34px;margin-left:-17px;border-radius:50% 50% 45% 45%;background:radial-gradient(circle at 40% 35%,#fff,#ff6ad5 50%,#8a2a9c);box-shadow:0 0 22px 6px rgba(255,106,213,.6);animation:bulb 2.4s ease-in-out infinite alternate}
@keyframes bulb{to{transform:scale(1.15);box-shadow:0 0 34px 12px rgba(255,106,213,.75)}}
.c-crystal .gem{left:50%;bottom:16px;width:36px;height:56px;margin-left:-18px;background:linear-gradient(135deg,#fff,#b8a6ff 40%,#5a3ad0 70%,#c9e6ff);clip-path:polygon(50% 0,100% 35%,50% 100%,0 35%);filter:drop-shadow(0 0 10px #b8a6ff);animation:gemf 3s ease-in-out infinite alternate}
@keyframes gemf{to{transform:translateY(-8px) scaleX(-1)}}
.c-lattice .beam{left:50%;bottom:10px;width:8px;height:300px;margin-left:-4px;background:linear-gradient(rgba(140,200,255,0),rgba(140,200,255,.8));filter:blur(1px);animation:pulse2 2s ease-in-out infinite}
.c-lattice .core{left:50%;bottom:0;width:22px;height:22px;margin-left:-11px;border-radius:50%;background:#dff0ff;box-shadow:0 0 18px 6px #9fd0ff}
/* ---------- Vida ---------- */
.life{position:absolute;left:0;right:0;bottom:0;height:120px;pointer-events:none;z-index:2}
.ent{position:absolute;pointer-events:none;transition:opacity .5s}
.ent .bd{display:block}
.ent.fl .bd{transform:scaleX(-1)}
.ent.gone,.pp.gone{opacity:0}
.ent svg,.pp svg{display:block;overflow:visible}
.tcol > .ent{z-index:3}
.say{position:absolute;left:50%;bottom:calc(100% + 5px);transform:translateX(-50%);white-space:nowrap;background:#fff;color:#1d2433;font:700 9px/1 system-ui,sans-serif;padding:3px 6px;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.35);animation:sayin .25s ease-out;z-index:6}
.say::after{content:"";position:absolute;left:50%;top:100%;margin-left:-3px;border:3px solid transparent;border-top-color:#fff}
@keyframes sayin{from{opacity:0;transform:translate(-50%,4px) scale(.7)}}
/* Esqueleto de las personas: piernas y brazos giran desde cadera y hombros */
.rig .lg,.rig .arm{transform-box:fill-box}
.rig .lg{transform-origin:50% 0}
.rig .arm.l{transform-origin:100% 0}
.rig .arm.r{transform-origin:0 0}
[data-a=walk] .rig .lg.a,[data-a=carry] .rig .lg.a,[data-a=walk] .rig .arm.l{animation:leg .5s ease-in-out infinite alternate}
[data-a=walk] .rig .lg.b,[data-a=carry] .rig .lg.b,[data-a=walk] .rig .arm.r{animation:leg .5s ease-in-out infinite alternate-reverse}
@keyframes leg{from{transform:rotate(-18deg)}to{transform:rotate(18deg)}}
[data-a=wave] .rig .arm.r{animation:wave2 .6s ease-in-out infinite alternate}
@keyframes wave2{from{transform:rotate(-160deg)}to{transform:rotate(-110deg)}}
[data-a=talk] .rig .arm.r{animation:talk .45s ease-in-out infinite alternate}
@keyframes talk{from{transform:rotate(-25deg)}to{transform:rotate(-65deg)}}
[data-a=jacks] .rig{animation:jhop .45s ease-in-out infinite alternate}
[data-a=jacks] .rig .arm.r{animation:jarmr .45s ease-in-out infinite alternate}
[data-a=jacks] .rig .arm.l{animation:jarml .45s ease-in-out infinite alternate}
[data-a=jacks] .rig .lg.a{animation:jlega .45s ease-in-out infinite alternate}
[data-a=jacks] .rig .lg.b{animation:jlegb .45s ease-in-out infinite alternate}
@keyframes jhop{to{transform:translateY(-3px)}}
@keyframes jarmr{to{transform:rotate(-150deg)}}
@keyframes jarml{to{transform:rotate(150deg)}}
@keyframes jlega{to{transform:rotate(16deg)}}
@keyframes jlegb{to{transform:rotate(-16deg)}}
[data-a=sit] .rig{transform:translateY(7px)}
[data-a=sit] .rig .lg{transform:rotate(-80deg)}
/* Calle */
.lamp{position:absolute;bottom:14px;left:calc(50% + 124px);width:4px;height:40px;background:#3a3f4a;border-radius:2px}
.lamp i{position:absolute;left:-5px;top:-6px;width:14px;height:8px;border-radius:6px 6px 2px 2px;background:#555}
.bench{position:absolute;bottom:14px;left:calc(50% - 170px);width:30px;height:10px;border-top:3px solid #8b5a2b;background:linear-gradient(90deg,#5a3b22 0 3px,transparent 3px calc(100% - 3px),#5a3b22 calc(100% - 3px))}
.floor .door{transition:background .3s,box-shadow .3s}
.floor .door.open{background:linear-gradient(90deg,#ffd98a,#ffb84a);box-shadow:0 0 0 2px rgba(255,255,255,.25),0 0 14px 4px rgba(255,200,110,.6)}
/* Perro */
.k-dog .lg,.k-dog .tail,.k-dog .hd{transform-box:fill-box}
.k-dog .lg{transform-origin:50% 0}
.k-dog .tail{transform-origin:100% 100%;animation:wag .5s ease-in-out infinite alternate}
.k-dog .hd{transform-origin:0 100%}
@keyframes wag{from{transform:rotate(-20deg)}to{transform:rotate(25deg)}}
.k-dog:is([data-a=trot],[data-a=follow],[data-a=sniff]) .lg.a{animation:leg .25s ease-in-out infinite alternate}
.k-dog:is([data-a=trot],[data-a=follow],[data-a=sniff]) .lg.b{animation:leg .25s ease-in-out infinite alternate-reverse}
.k-dog[data-a=run] .lg.a{animation:leg .12s linear infinite alternate}
.k-dog[data-a=run] .lg.b{animation:leg .12s linear infinite alternate-reverse}
.k-dog[data-a=run] svg{transform:scaleX(1.12) rotate(-3deg)}
.k-dog:is([data-a=sit],[data-a=follow]) .tail{animation-duration:.15s}
.k-dog[data-a=sit] svg{transform:rotate(-14deg) translate(1px,-1px);transform-origin:20% 100%}
.k-dog[data-a=sniff] .hd{transform:rotate(28deg) translateY(2px)}
.k-dog[data-a=bark] .hd{animation:bark .2s ease-in-out 6 alternate}
@keyframes bark{to{transform:rotate(-14deg)}}
.k-dog[data-a=jump] svg{animation:jump .6s ease-out 2}
@keyframes jump{50%{transform:translateY(-14px) rotate(-12deg)}}
.k-dog[data-a=sleep] svg{transform:scaleY(.7) translateY(4px)}
.k-dog[data-a=sleep] .tail{animation:none}
.k-dog[data-a=sleep] .eye{transform:scaleY(.2);transform-box:fill-box;transform-origin:center}
/* Gato: sentado, de lado o enroscado según lo que hace */
.k-cat{z-index:3}
.k-cat .s-side,.k-cat .s-curl{display:none}
.k-cat:is([data-a=walk],[data-a=stretch],[data-a=pounce]) .s-sit,.k-cat[data-a=sleep] .s-sit{display:none}
.k-cat:is([data-a=walk],[data-a=stretch],[data-a=pounce]) .s-side{display:block}
.k-cat[data-a=sleep] .s-curl{display:block}
.k-cat .ctail{transform-box:fill-box;transform-origin:0 100%;animation:wag 1.6s ease-in-out infinite alternate}
.k-cat .s-side .ctail{transform-origin:100% 100%}
.k-cat .lg{transform-box:fill-box;transform-origin:50% 0}
.k-cat[data-a=walk] .lg.a{animation:leg .35s ease-in-out infinite alternate}
.k-cat[data-a=walk] .lg.b{animation:leg .35s ease-in-out infinite alternate-reverse}
.k-cat .hd{transform-box:fill-box;transform-origin:50% 100%}
.k-cat[data-a=groom] .hd{animation:groom .3s ease-in-out infinite alternate}
@keyframes groom{to{transform:rotate(18deg) translateY(1px)}}
.k-cat[data-a=stretch] .s-side{animation:stretch 1.9s ease-in-out;transform-origin:100% 100%}
@keyframes stretch{40%,70%{transform:scaleX(1.18) skewX(-10deg) rotate(6deg)}}
.k-cat[data-a=pounce] .s-side{animation:jump .55s ease-out}
.k-cat[data-a=sleep] svg{animation:breath 2.4s ease-in-out infinite alternate}
@keyframes breath{to{transform:scaleY(1.08)}}
/* Conejo */
.k-rabbit .ears,.k-rabbit .hd{transform-box:fill-box;transform-origin:50% 100%}
.k-rabbit[data-a=hop] svg,.k-rabbit[data-a=dash] svg{animation:rhop .4s ease-out infinite}
@keyframes rhop{50%{transform:translateY(-6px) rotate(-6deg)}}
.k-rabbit[data-a=nibble] .hd{animation:nib .25s ease-in-out infinite alternate}
@keyframes nib{to{transform:rotate(14deg) translateY(1.5px)}}
.k-rabbit[data-a=ears] .ears{animation:ears .25s ease-in-out 6 alternate}
@keyframes ears{to{transform:rotate(-14deg)}}
.k-rabbit[data-a=situp] svg{transform:rotate(-30deg) translateY(-2px);transform-origin:20% 100%;transition:transform .3s}
/* Mariposas y luciérnagas */
.k-butterfly .bw{transform-box:fill-box;transform-origin:50% 50%;animation:flap .18s ease-in-out infinite alternate}
.k-butterfly[data-a=land] .bw{animation-duration:1.4s}
.k-butterfly[data-a=spiral] .bd{animation:circ 2.6s linear}
.k-butterfly[data-a=hover] .bd{animation:hov 1s ease-in-out infinite alternate}
@keyframes flap{to{transform:scaleX(.25)}}
@keyframes hov{to{translate:0 -5px}}
@keyframes circ{0%{translate:0 0}25%{translate:16px -12px}50%{translate:0 -24px}75%{translate:-16px -12px}100%{translate:0 0}}
.k-firefly i{display:block;width:4px;height:4px;border-radius:50%;background:#e8ff8a;box-shadow:0 0 8px 3px rgba(220,255,120,.7);animation:ffglow 3s ease-in-out infinite alternate}
@keyframes ffglow{from{opacity:.3}to{opacity:1}}
.k-firefly[data-a=blink] i{animation:ffglow .2s steps(2) infinite}
.k-firefly[data-a=dim] i{opacity:.08;animation:none;transition:opacity 1s}
.k-firefly[data-a=gather] i{box-shadow:0 0 12px 5px rgba(220,255,120,.85)}
/* Búho del farol */
.k-owl{z-index:3}
.k-owl .hd,.k-owl .lid,.k-owl .wgo{transform-box:fill-box}
.k-owl .hd{transform-origin:50% 80%}
.k-owl .lid{transform-origin:50% 0;transform:scaleY(0)}
.k-owl[data-a=blink] .lid{animation:lid 1.8s ease-in-out}
@keyframes lid{20%,35%,60%,75%{transform:scaleY(1)}0%,50%,90%{transform:scaleY(0)}}
.k-owl[data-a=turn] .hd{animation:oturn 2.2s ease-in-out}
@keyframes oturn{30%,60%{transform:scaleX(-1) rotate(-8deg)}}
.k-owl[data-a=hoot] svg{animation:hoot .4s ease-in-out 4 alternate}
@keyframes hoot{to{transform:scaleY(1.08) translateY(-1px)}}
.k-owl[data-a=ruffle] svg{animation:ruff .2s ease-in-out 6 alternate}
@keyframes ruff{to{transform:scale(1.15,.92)}}
.k-owl .wgo{transform-origin:50% 50%;transform:scaleX(0)}
.k-owl[data-a=fly] .wgo{transform:none;animation:flapw .2s ease-in-out infinite alternate}
/* Obreros */
.floor.build .scaf{position:absolute;inset:-2px;background:repeating-linear-gradient(90deg,transparent 0 22px,rgba(255,190,60,.8) 22px 25px),linear-gradient(transparent 46%,rgba(255,190,60,.8) 46% 54%,transparent 54%);z-index:1;pointer-events:none}
.k-worker{z-index:2}
.k-worker .plank,.k-worker .bottle,.k-worker .plan,.k-worker .hammer{display:none}
.k-worker[data-a=hammer] .hammer,.k-worker[data-a=carry] .plank,.k-worker[data-a=rest] .bottle,.k-worker[data-a=plans] .plan{display:inline}
.k-worker[data-a=hammer] .arm.r{animation:hammer .45s ease-in-out infinite alternate}
@keyframes hammer{from{transform:rotate(-120deg)}to{transform:rotate(-30deg)}}
.k-worker[data-a=carry] .arm{transform:rotate(180deg)}
.k-worker[data-a=rest] .rig{transform:translateY(7px)}
.k-worker[data-a=rest] .lg{transform:rotate(-80deg)}
.k-worker[data-a=rest] .arm.r{animation:drink 1.6s ease-in-out infinite alternate}
@keyframes drink{from{transform:rotate(-40deg)}to{transform:rotate(-150deg)}}
.k-worker[data-a=plans] .rig{animation:hov .9s ease-in-out infinite alternate}
.k-worker[data-a=plans] .arm.r{transform:rotate(-60deg)}
/* Pájaros */
.k-bird .s-sit{display:none}
.k-bird.sit .s-sit{display:block}
.k-bird.sit .s-fly{display:none}
.k-bird .wg{transform-box:fill-box;transform-origin:50% 70%;animation:flapw .32s ease-in-out infinite alternate}
.k-bird[data-a=glide] .wg{animation:none}
@keyframes flapw{to{transform:scaleY(-.7)}}
.k-bird[data-a=circle] .bd{animation:circ 2.6s linear}
.k-bird .s-sit .hd{transform-box:fill-box;transform-origin:0 100%}
.k-bird[data-a=peck] .s-sit .hd{animation:peck .3s ease-in-out infinite alternate}
@keyframes peck{to{transform:rotate(40deg) translate(1px,1.5px)}}
.k-bird[data-a=hop] .s-sit{animation:jump .25s ease-out 2}
.k-bird[data-a=preen] .s-sit{animation:preen .25s ease-in-out 8 alternate;transform-origin:50% 100%}
@keyframes preen{to{transform:rotate(-12deg) scaleX(-1)}}
.k-bird[data-a=sleep] .s-sit{transform:scaleY(.8);transform-origin:50% 100%}
.k-bird[data-a=sleep] .s-sit .hd{transform:translate(-2px,1.5px)}
/* Gente en las ventanas */
.pp{position:absolute;bottom:-1px;display:block;width:9px;height:18px;transform-origin:50% 100%;transform:scale(var(--ps,1));transition:opacity .5s;z-index:1}
.pp.fl svg{transform:scaleX(-1)}
.s-glass .pp{--ps:.9}
.s-polar .pp,.s-module .pp,.s-bio .pp,.s-gen.gw1 .pp{--ps:.68;bottom:1px}
.s-crystal .pp{--ps:.75;bottom:3px}
.pp[data-a=sit] .rig{transform:translateY(6px)}
.pp[data-a=sit] .rig .lg{transform:none}
.pp[data-a=float] svg{animation:floatr 4.2s ease-in-out}
@keyframes floatr{50%{translate:0 -3px;rotate:180deg}100%{rotate:360deg}}
.pp.astro[data-a=walk] svg,.pp.alien[data-a=walk] svg{animation:hov .8s ease-in-out infinite alternate}
.pp.alien svg{filter:drop-shadow(0 0 2px rgba(180,255,200,.8))}
.pp[data-a=glow] svg{animation:aglow .6s ease-in-out 4 alternate}
@keyframes aglow{to{filter:drop-shadow(0 0 5px #b4ffc8) brightness(1.6)}}
/* Lo que vuela en cada altura */
.k-balloon .flame{opacity:0}
.k-balloon[data-a=burn] .flame{opacity:1;animation:blink .15s steps(2) infinite}
.k-balloon:is([data-a=sway],[data-a=drift]) svg{animation:sway 1.5s ease-in-out infinite alternate;transform-origin:50% 0}
@keyframes sway{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
.k-balloon .arm.r,.k-glider .arm.r,.k-eva .arm.r{transform-box:fill-box;transform-origin:0 100%}
.k-balloon[data-a=greet] .arm.r,.k-glider[data-a=swoop] .arm.r,.k-eva[data-a=wave] .arm.r{animation:wag .3s ease-in-out infinite alternate}
.k-glider svg{transition:transform .6s}
.k-glider[data-a=turn] svg,.k-glider[data-a=spiral] svg{transform:rotate(-14deg)}
.k-glider[data-a=spiral] .bd{animation:circ 3.2s linear}
.k-glider[data-a=swoop] svg{transform:rotate(10deg)}
.k-wballoon .env{transform-box:fill-box;transform-origin:50% 100%}
.k-wballoon[data-a=pulse] .env{animation:inflate .6s ease-in-out 4 alternate}
@keyframes inflate{to{transform:scale(1.18)}}
.k-wballoon[data-a=sway] svg{animation:sway 1.5s ease-in-out infinite alternate;transform-origin:50% 0}
.k-wballoon .beac{opacity:0}
.k-wballoon[data-a=beacon] .beac{opacity:1;animation:blink .4s steps(1) infinite}
.k-eva svg{animation:hov 2s ease-in-out infinite alternate}
.k-eva .puff{opacity:0}
.k-eva[data-a=jet] .puff{opacity:1;animation:blink .2s steps(2) infinite}
.k-eva .tool{display:none}
.k-eva[data-a=work] .tool{display:inline}
.k-eva[data-a=work] .arm.r{animation:wag .35s ease-in-out infinite alternate}
.k-eva[data-a=flip] svg{animation:somer 2.6s ease-in-out}
@keyframes somer{to{transform:rotate(360deg)}}
.k-drone .prop{transform-box:fill-box;transform-origin:50% 50%;animation:propsp .12s linear infinite alternate}
@keyframes propsp{to{transform:scaleX(.3)}}
.k-drone[data-a=land] .prop{animation-duration:.6s}
.k-drone .blink{animation:blink 1s steps(1) infinite}
.k-drone[data-a=hover] svg{animation:hov .7s ease-in-out infinite alternate}
.k-drone .beam{position:absolute;left:9px;top:10px;width:10px;height:0;background:linear-gradient(rgba(255,80,80,.55),transparent);clip-path:polygon(35% 0,65% 0,100% 100%,0 100%);transition:height .4s}
.k-drone[data-a=scan] .beam{height:34px;animation:scan .8s ease-in-out infinite alternate}
@keyframes scan{from{transform:skewX(-20deg)}to{transform:skewX(20deg)}}
.k-drone[data-a=zip] svg{transform:rotate(-8deg)}
.k-jelly .tent{transform-box:fill-box;transform-origin:50% 0;animation:tentw 2s ease-in-out infinite alternate}
@keyframes tentw{to{transform:skewX(8deg)}}
.k-jelly .bell{transform-box:fill-box;transform-origin:50% 100%}
.k-jelly[data-a=swim] .bell{animation:pulse3 .5s ease-in-out 6 alternate}
@keyframes pulse3{to{transform:scale(.8,1.15)}}
.k-jelly[data-a=glow] svg{animation:aglow .5s ease-in-out 5 alternate}
.k-jelly[data-a=twirl] svg{animation:somer 2.6s ease-in-out}
.k-jelly svg{animation:hov 3s ease-in-out infinite alternate}
.k-shuttle .exh{opacity:0;transform-box:fill-box;transform-origin:100% 50%}
.k-shuttle:is([data-a=boost],[data-a=cruise]) .exh{opacity:1;animation:exh .1s linear infinite alternate}
.k-shuttle[data-a=boost] .exh{transform:scaleX(1.8)}
@keyframes exh{to{opacity:.6}}
.k-shuttle .nav{animation:blink 1.2s steps(1) infinite}
.k-shuttle[data-a=roll] svg{animation:roll 1.3s ease-in-out}
@keyframes roll{50%{transform:scaleY(-1)}}
.zl{position:absolute;pointer-events:none;z-index:0}
.flake{width:3px;height:3px;border-radius:50%;background:#fff;animation:flake 5s linear infinite}
@keyframes flake{from{transform:translate(0,-30px);opacity:0}20%{opacity:1}to{transform:translate(12px,40px);opacity:0}}
.shoot{left:0;width:80px;height:2px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff);border-radius:2px;opacity:0;animation:shoot 7s ease-in infinite}
@keyframes shoot{0%,80%{opacity:0;transform:translate(10cqw,0) rotate(-20deg)}85%{opacity:1}100%{opacity:0;transform:translate(80cqw,-60px) rotate(-20deg)}}
/* Mojados: la ropa y el pelo se oscurecen; empapados, además gotean. */
.ent.wet1 .bd{filter:brightness(.88) saturate(.92)}
.ent.wet2 .bd{filter:brightness(.74) saturate(.85)}
.ent.wet2 .bd{position:relative}
.ent.wet2 .bd::after{content:"";position:absolute;left:38%;bottom:3px;width:1.2px;height:3px;border-radius:1px;background:rgba(190,220,255,.9);animation:wdrip .75s linear infinite}
@keyframes wdrip{from{transform:translateY(-9px);opacity:1}to{transform:translateY(2px);opacity:0}}
.k-cat.wet2 svg{scale:.92 1}
:is(.k-bird,.k-pigeon,.k-owl).wet1 svg,:is(.k-bird,.k-pigeon,.k-owl).wet2 svg{scale:1.1}
/* Nieve que se junta encima (en la cabeza, el paraguas o el lomo). */
.snowcap{position:absolute;left:50%;bottom:23px;width:calc(5px + var(--sn,0) * 5px);height:calc(1.5px + var(--sn,0) * 2.5px);margin-left:calc(-2.5px - var(--sn,0) * 2.5px);border-radius:50% 50% 35% 35%;background:#fbfdff;box-shadow:0 0 1px rgba(0,0,0,.25);pointer-events:none;z-index:2}
.kid .snowcap{bottom:17px}
.k-dog .snowcap{bottom:11px;left:45%;width:calc(6px + var(--sn,0) * 8px)}
.k-cat .snowcap{bottom:12px;left:40%}
:is(.k-bird,.k-pigeon) .snowcap{bottom:8px;width:calc(3px + var(--sn,0) * 3px)}
/* Gotitas (o nieve) que salen disparadas al sacudirse. */
.burst{position:absolute;left:50%;bottom:45%;width:0;height:0;pointer-events:none;z-index:3}
.burst i{position:absolute;width:2px;height:2px;border-radius:50%;background:var(--bc);animation:burst .6s ease-out forwards}
.burst i:nth-child(1){--dx:-12px;--dy:-6px}.burst i:nth-child(2){--dx:12px;--dy:-7px}.burst i:nth-child(3){--dx:-9px;--dy:-12px}
.burst i:nth-child(4){--dx:9px;--dy:-13px}.burst i:nth-child(5){--dx:-14px;--dy:2px}.burst i:nth-child(6){--dx:14px;--dy:1px}
@keyframes burst{to{transform:translate(var(--dx),var(--dy));opacity:0}}
[data-a=brush] .rig .arm.r{animation:brushs .25s ease-in-out infinite alternate}
@keyframes brushs{from{transform:rotate(-120deg)}to{transform:rotate(-165deg)}}
.pp[data-a=change] .rig .arm.r{transform:rotate(-150deg)}
.pp[data-a=change] .rig .arm.l{transform:rotate(150deg)}
.pp[data-a=change] .rig{animation:jhop .4s ease-in-out infinite alternate}
/* ---------- Astros: no se mueven al deslizar ---------- */
.tcol:not(.ready) *,.tcol:not(.ready) *::before,.tcol:not(.ready) *::after{transition:none!important}
.tcol{overflow:clip;container-type:inline-size}
.frow:not(.bld){content-visibility:auto;contain-intrinsic-size:auto 48px}
.zbox{content-visibility:auto}
.tcol[data-tod=night] .kite{display:none}
.zwrap{position:relative;min-height:100%;display:flex;flex-direction:column}
.zwrap>.tcol{flex:1 0 auto}
.starsw{position:absolute;left:0;right:0;top:0;bottom:var(--stb,0px);pointer-events:none;z-index:0;opacity:var(--st,0);background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 32% 42%,#fff,transparent),radial-gradient(1.5px 1.5px at 58% 12%,#fff,transparent),radial-gradient(1px 1px at 78% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 88% 78%,#fff,transparent),radial-gradient(1px 1px at 22% 66%,#fff,transparent),radial-gradient(1px 1px at 92% 58%,#fff,transparent),radial-gradient(1.5px 1.5px at 46% 86%,#fff,transparent),radial-gradient(1px 1px at 66% 64%,#cfe0ff,transparent),radial-gradient(1px 1px at 6% 90%,#ffe9c8,transparent);background-size:230px 230px;-webkit-mask:linear-gradient(to top,transparent,#000 240px);mask:linear-gradient(to top,transparent,#000 240px)}
.sunw,.sunz{position:absolute;left:var(--sx);width:var(--ss,30px);height:var(--ss,30px);margin:0 0 calc(var(--ss,30px) / -2) calc(var(--ss,30px) / -2);pointer-events:none;z-index:0}
.sunw{bottom:var(--sy);opacity:var(--so,0);transition:opacity 3s,bottom 30s linear,left 30s linear}
.tcol.sunlow .sunw{--ss:40px}
.sunw i,.sunz i{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#fffdf0 0 38%,#ffe28a 58%,rgba(255,200,90,0) 72%);box-shadow:0 0 40px 16px rgba(255,220,130,.45)}
.tcol.sunlow .sunw i{background:radial-gradient(circle,#fff1c8 0 30%,#ff9a4a 55%,rgba(255,110,50,0) 72%);box-shadow:0 0 60px 26px rgba(255,120,60,.45)}
.sunz i{background:radial-gradient(circle,#fff 0 45%,rgba(255,255,255,.6) 55%,rgba(255,255,255,0) 72%);box-shadow:0 0 calc(var(--ss) * 1.2) calc(var(--ss) * .35) rgba(255,255,255,.5)}
.moonw{position:absolute;left:var(--mx);bottom:var(--my);width:22px;height:22px;margin:0 0 -11px -11px;opacity:var(--mo,0);pointer-events:none;z-index:0;transition:opacity 3s,bottom 30s linear,left 30s linear;filter:drop-shadow(0 0 8px rgba(240,240,220,.5))}
.moonw svg{display:block;width:100%;height:100%}
.hglow{position:absolute;left:var(--sx);bottom:-80px;width:160%;height:460px;margin-left:-80%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,150,80,.75),rgba(255,120,90,.35) 45%,rgba(255,120,120,0));opacity:var(--hg,0);pointer-events:none;z-index:0;transition:opacity 6s}
.rbow{position:absolute;left:var(--rx,50%);bottom:-260px;width:150%;aspect-ratio:1;margin-left:-75%;border-radius:50%;background:radial-gradient(circle,transparent 60%,rgba(148,0,211,.35) 61%,rgba(75,0,130,.3) 62%,rgba(0,0,255,.3) 63%,rgba(0,255,0,.3) 64.5%,rgba(255,255,0,.32) 66%,rgba(255,127,0,.32) 67.5%,rgba(255,0,0,.32) 69%,transparent 70%);opacity:var(--rb,0);pointer-events:none;z-index:0;transition:opacity 6s}
.spm{position:absolute;left:0;width:1px;pointer-events:none;visibility:hidden}
/* ---------- Luz sobre la torre ---------- */
.floor .shade{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(8,12,34,calc(var(--d) * .8 + var(--side,0) * .07)),rgba(8,12,34,calc(var(--d) * .8 - var(--side,0) * .07))),linear-gradient(rgba(255,140,60,calc(var(--w) * .22)),rgba(255,140,60,calc(var(--w) * .22)));transition:background 20s}
.floor .door,.floor .mailbox{filter:brightness(calc(1 - var(--d,0) * .7))}
.crown{filter:brightness(calc(1 - var(--d,0) * .65)) hue-rotate(var(--hue,0deg))}
/* Interiores: pared, zócalo y un mueble; el vidrio refleja de día y deja ver de noche */
.floor .w{background:linear-gradient(var(--wall) 0 80%,color-mix(in srgb,var(--wall) 65%,#000) 80%)}
.floor .w::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:rgba(6,10,26,calc(.12 + var(--d) * .78));transition:background 1.2s}
.floor .w.on::before{background:rgba(255,170,70,.14)}
.floor .w.dim::before{background:rgba(6,10,26,calc(var(--d) * .55))}
.floor .w::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(155deg,rgba(255,255,255,.6),rgba(190,220,255,.2) 38%,rgba(255,255,255,0) 55%,rgba(255,255,255,.14));opacity:calc(.85 - var(--d) * .75)}
.floor .w.on::after{opacity:.12}
.floor .w{cursor:pointer;pointer-events:auto}
.fu{position:absolute;display:block;z-index:0;pointer-events:none}
.fu0{left:18%;top:16%;width:34%;height:22%;background:#c96a3a;border:1px solid #6e4423}
.fu1{right:10%;bottom:20%;width:3px;height:42%;background:#555}
.fu1::before{content:"";position:absolute;left:-3px;top:-3px;width:9px;height:6px;border-radius:4px 4px 1px 1px;background:#ffe2a0}
.fu2{left:10%;bottom:20%;width:30%;height:30%;background:radial-gradient(circle at 50% 30%,#3f8a46 0 45%,transparent 47%),linear-gradient(transparent 60%,#a0522d 60%)}
.fu3{left:8%;right:8%;top:30%;height:2px;background:#8b5a2b;box-shadow:0 7px 0 #8b5a2b}
.fu4{right:16%;top:12%;width:7px;height:7px;border-radius:50%;background:#fff;border:1px solid #444}
.fu5{right:0;top:0;bottom:20%;width:24%;background:repeating-linear-gradient(90deg,#b84a5a 0 2px,#d06070 2px 4px)}
.fu6{left:20%;bottom:22%;width:50%;height:28%;background:#222;border:1px solid #444;box-shadow:inset 0 0 0 1.5px #3a8fd0}
.fu7{left:0;right:0;top:12%;height:2px;background:#7fd0ff;box-shadow:0 0 4px #7fd0ff,0 10px 0 rgba(127,208,255,.5)}
.fu8{left:30%;top:25%;width:40%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff,#c9a8ff 50%,transparent 70%);animation:pulse2 2.4s ease-in-out infinite}
.pp{bottom:-7px}
.s-polar .pp,.s-module .pp,.s-bio .pp,.s-gen.gw1 .pp{bottom:-4px}
/* ---------- La base: cordillera, cerros, árboles y suelo según la estación ---------- */
.andes{position:absolute;left:-5%;width:110%;bottom:13%;height:34%;filter:brightness(calc(1 - var(--ad,0) * .8)) sepia(calc(var(--aw,0) * .55)) saturate(calc(1 + var(--aw,0) * .6)) hue-rotate(calc(var(--aw,0) * -35deg))}
.andes .snowcap{opacity:var(--peaks,.5);transition:opacity 30s}
.zbox.first .hills{background:linear-gradient(var(--grass,#5aa05a),color-mix(in srgb,var(--grass,#5aa05a) 55%,#000))}
.zbox.first .hills.h2{background:linear-gradient(color-mix(in srgb,var(--grass,#6cb36c) 85%,#fff),color-mix(in srgb,var(--grass,#6cb36c) 60%,#000))}
.zbox.first .hills::after{content:"";position:absolute;inset:0;border-radius:inherit;background:#f2f6fa;opacity:var(--snow,0)}
.zbox.first .hills,.zbox.first .treeb,.ground,.life .bench,.life .lamp{filter:brightness(calc(1 - var(--gd,0) * .75)) sepia(calc(var(--gw,0) * .45))}
.treeb{position:absolute;bottom:9%;width:30px;height:50px;margin-left:-15px;transform:scale(var(--s,1));transform-origin:bottom}
.treeb svg{display:block;width:100%;height:100%;transform-origin:50% 100%;animation:tsway 3.2s ease-in-out infinite alternate}
@keyframes tsway{from{transform:rotate(calc(var(--wind,0) * -3deg))}to{transform:rotate(calc(var(--wind,0) * 5deg))}}
.tree .canopy{fill:var(--leaf,#4f8f3a);opacity:calc(.12 + var(--canopy,1) * .88);transition:opacity 30s}
.tree .bloom{fill:#ffc4dc;opacity:var(--bloom,0)}
.tree .cap{opacity:var(--snow,0)}
.ground{background:linear-gradient(var(--grass,#5aa05a),color-mix(in srgb,var(--grass,#5aa05a) 50%,#000))}
.ground::after{content:"";position:absolute;inset:0;background:rgba(30,40,60,calc(var(--wet,0) * .35))}
.snowg{position:absolute;inset:0;background:#f2f6fa;opacity:var(--snow,0)}
.pud{position:absolute;bottom:11px;height:4px;border-radius:50%;background:rgba(170,200,235,.6);opacity:var(--wet,0)}
.pud::after{content:"";position:absolute;left:30%;top:0;width:8px;height:3px;border-radius:50%;border:1px solid rgba(255,255,255,.8);opacity:calc(var(--rain,0) * 2);animation:ripple 1.1s ease-out infinite}
@keyframes ripple{from{transform:scale(.3)}to{transform:scale(2.2);opacity:0}}
.lamp i{background:#555}
.tcol.lampon .lamp i{background:#ffe6a0;box-shadow:0 0 14px 6px rgba(255,210,120,.7),0 30px 40px 10px rgba(255,210,120,.15)}
.tcol.lampon .lamp{filter:none}
.drift{position:absolute;left:0;right:0;bottom:0;height:420px;pointer-events:none;z-index:2;overflow:hidden}
.leafp{position:absolute;width:5px;height:3px;border-radius:60% 0;background:var(--lp,#c96a2a);opacity:var(--lpo,0);animation:leaffall 10s linear infinite}
@keyframes leaffall{from{transform:translate(0,0) rotate(0)}25%{transform:translate(calc(12px + var(--wind,0) * 30px),-25%) rotate(120deg)}to{transform:translate(calc(30px + var(--wind,0) * 120px),110px) rotate(560deg)}}
/* ---------- Nubes, lluvia, nieve, neblina y rayos ---------- */
.deck{position:absolute;left:0;right:0;pointer-events:none;z-index:0}
.overcast{position:absolute;left:-10%;right:-10%;top:20%;bottom:15%;background:var(--cc,#fff);opacity:calc((var(--cover,0) - .55) * 2);filter:blur(16px);border-radius:40%;transition:opacity 20s}
.cmist{position:absolute;left:0;right:0;pointer-events:none;z-index:2;background:linear-gradient(rgba(0,0,0,0),var(--cc,#fff) 25%,var(--cc,#fff) 70%,rgba(0,0,0,0));opacity:calc((var(--cover,0) - .6) * 1.3);transition:opacity 20s}
.cpuff{position:absolute;border-radius:50%;background:var(--cc,#fff);filter:blur(4px);opacity:0;transition:opacity 20s;animation:cdrift 80s ease-in-out infinite alternate;pointer-events:none;z-index:0}
.cpuff::before{content:"";position:absolute;left:18%;top:-42%;width:46%;height:105%;border-radius:50%;background:inherit}
.cpuff::after{content:"";position:absolute;left:48%;top:-24%;width:38%;height:90%;border-radius:50%;background:inherit}
@keyframes cdrift{from{translate:calc(-20px - var(--wind,0) * 60px) 0}to{translate:calc(20px + var(--wind,0) * 60px) 0}}
.wxp{position:absolute;left:0;right:0;bottom:16px;pointer-events:none;z-index:2;overflow:hidden}
.wxp i{position:absolute;left:-20%;right:-20%;top:-80px;bottom:0}
.wxp .l1{opacity:var(--rain,0);background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22130%22%20height%3D%22150%22%3E%3Cg%20stroke%3D%22rgba%28214%2C228%2C246%2C0.75%29%22%20stroke-width%3D%221%22%20stroke-linecap%3D%22round%22%3E%3Cpath%20d%3D%22M42.1%2022.6v15.2%22/%3E%3Cpath%20d%3D%22M9.4%2080.4v12.9%22/%3E%3Cpath%20d%3D%22M7.5%2076.1v10.3%22/%3E%3Cpath%20d%3D%22M56.4%2010.5v10.7%22/%3E%3Cpath%20d%3D%22M55.2%20124.0v11.0%22/%3E%3Cpath%20d%3D%22M29.0%2094.1v17.6%22/%3E%3Cpath%20d%3D%22M75.0%2059.5v17.8%22/%3E%3Cpath%20d%3D%22M6.1%20128.8v12.3%22/%3E%3Cpath%20d%3D%22M18.8%2017.7v12.5%22/%3E%3Cpath%20d%3D%22M106.1%2027.1v14.7%22/%3E%3Cpath%20d%3D%22M83.1%2055.9v14.4%22/%3E%3Cpath%20d%3D%22M8.2%208.9v11.6%22/%3E%3Cpath%20d%3D%22M88.5%2064.1v12.5%22/%3E%3Cpath%20d%3D%22M76.1%2068.0v12.4%22/%3E%3Cpath%20d%3D%22M103.3%20104.8v12.0%22/%3E%3Cpath%20d%3D%22M74.7%2078.8v17.0%22/%3E%3Cpath%20d%3D%22M94.8%2043.2v17.8%22/%3E%3Cpath%20d%3D%22M15.3%2062.7v16.1%22/%3E%3Cpath%20d%3D%22M19.8%2073.3v10.3%22/%3E%3Cpath%20d%3D%22M86.9%20114.7v14.6%22/%3E%3Cpath%20d%3D%22M113.8%2047.1v15.6%22/%3E%3Cpath%20d%3D%22M77.3%2087.0v13.6%22/%3E%3Cpath%20d%3D%22M109.2%20141.7v13.8%22/%3E%3Cpath%20d%3D%22M86.3%209.1v15.6%22/%3E%3Cpath%20d%3D%22M84.1%20149.0v16.6%22/%3E%3Cpath%20d%3D%22M37.0%2057.9v15.3%22/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2297%22%20height%3D%22113%22%3E%3Cg%20stroke%3D%22rgba%28214%2C228%2C246%2C0.45%29%22%20stroke-width%3D%221%22%20stroke-linecap%3D%22round%22%3E%3Cpath%20d%3D%22M2.2%2052.2v7.8%22/%3E%3Cpath%20d%3D%22M11.4%206.7v10.8%22/%3E%3Cpath%20d%3D%22M12.5%2028.0v9.0%22/%3E%3Cpath%20d%3D%22M84.5%209.1v9.2%22/%3E%3Cpath%20d%3D%22M53.3%2099.8v11.1%22/%3E%3Cpath%20d%3D%22M83.8%2031.5v9.1%22/%3E%3Cpath%20d%3D%22M34.8%2099.9v11.8%22/%3E%3Cpath%20d%3D%22M14.6%2019.9v8.2%22/%3E%3Cpath%20d%3D%22M22.6%2054.8v9.9%22/%3E%3Cpath%20d%3D%22M25.5%200.5v9.1%22/%3E%3Cpath%20d%3D%22M35.8%2064.0v11.8%22/%3E%3Cpath%20d%3D%22M67.0%2058.3v10.1%22/%3E%3Cpath%20d%3D%22M65.6%206.1v11.5%22/%3E%3Cpath%20d%3D%22M75.7%2098.8v11.0%22/%3E%3Cpath%20d%3D%22M38.1%2045.1v7.5%22/%3E%3Cpath%20d%3D%22M61.5%207.0v7.3%22/%3E%3C/g%3E%3C/svg%3E");background-size:130px 150px,97px 113px;transform:skewX(calc(var(--wind,0) * -22deg));animation:rainf .5s linear infinite}
@keyframes rainf{to{background-position:0 150px,0 113px}}
.wxp .l2{opacity:var(--flake,0);background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22150%22%20height%3D%22150%22%3E%3Cg%20fill%3D%22%23fff%22%3E%3Ccircle%20cx%3D%2231.3%22%20cy%3D%2224.3%22%20r%3D%221.1%22/%3E%3Ccircle%20cx%3D%227.9%22%20cy%3D%220.0%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%2215.2%22%20cy%3D%2254.5%22%20r%3D%220.7%22/%3E%3Ccircle%20cx%3D%22131.1%22%20cy%3D%2292.1%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%2237.8%22%20cy%3D%2252.1%22%20r%3D%221.2%22/%3E%3Ccircle%20cx%3D%2218.4%22%20cy%3D%22127.3%22%20r%3D%222.0%22/%3E%3Ccircle%20cx%3D%2269.9%22%20cy%3D%2272.6%22%20r%3D%220.8%22/%3E%3Ccircle%20cx%3D%2215.3%22%20cy%3D%2251.4%22%20r%3D%221.0%22/%3E%3Ccircle%20cx%3D%22124.3%22%20cy%3D%2224.2%22%20r%3D%220.7%22/%3E%3Ccircle%20cx%3D%22142.6%22%20cy%3D%2279.2%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%2281.5%22%20cy%3D%224.1%22%20r%3D%221.4%22/%3E%3Ccircle%20cx%3D%22146.8%22%20cy%3D%22129.5%22%20r%3D%221.6%22/%3E%3Ccircle%20cx%3D%2239.2%22%20cy%3D%2255.0%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%22115.8%22%20cy%3D%2279.9%22%20r%3D%221.7%22/%3E%3Ccircle%20cx%3D%2249.4%22%20cy%3D%2233.5%22%20r%3D%221.8%22/%3E%3Ccircle%20cx%3D%22147.7%22%20cy%3D%22127.9%22%20r%3D%221.7%22/%3E%3Ccircle%20cx%3D%22122.7%22%20cy%3D%22111.0%22%20r%3D%221.0%22/%3E%3Ccircle%20cx%3D%2277.6%22%20cy%3D%2253.3%22%20r%3D%220.7%22/%3E%3Ccircle%20cx%3D%224.2%22%20cy%3D%2241.9%22%20r%3D%221.0%22/%3E%3Ccircle%20cx%3D%22103.9%22%20cy%3D%22143.5%22%20r%3D%221.3%22/%3E%3Ccircle%20cx%3D%22140.6%22%20cy%3D%22148.2%22%20r%3D%221.9%22/%3E%3Ccircle%20cx%3D%2254.7%22%20cy%3D%2233.1%22%20r%3D%221.0%22/%3E%3Ccircle%20cx%3D%2229.5%22%20cy%3D%2230.7%22%20r%3D%221.5%22/%3E%3Ccircle%20cx%3D%22135.0%22%20cy%3D%22126.1%22%20r%3D%221.3%22/%3E%3Ccircle%20cx%3D%2297.9%22%20cy%3D%22119.9%22%20r%3D%220.8%22/%3E%3Ccircle%20cx%3D%2299.1%22%20cy%3D%22136.5%22%20r%3D%221.7%22/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22110%22%20height%3D%22120%22%3E%3Cg%20fill%3D%22%23fff%22%3E%3Ccircle%20cx%3D%2282.5%22%20cy%3D%2257.4%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%2286.8%22%20cy%3D%2239.9%22%20r%3D%221.7%22/%3E%3Ccircle%20cx%3D%22106.9%22%20cy%3D%2247.5%22%20r%3D%221.2%22/%3E%3Ccircle%20cx%3D%22104.1%22%20cy%3D%2287.0%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%2214.0%22%20cy%3D%2218.1%22%20r%3D%221.9%22/%3E%3Ccircle%20cx%3D%2288.7%22%20cy%3D%2217.5%22%20r%3D%221.8%22/%3E%3Ccircle%20cx%3D%22107.8%22%20cy%3D%2278.9%22%20r%3D%221.2%22/%3E%3Ccircle%20cx%3D%2260.4%22%20cy%3D%2215.7%22%20r%3D%220.7%22/%3E%3Ccircle%20cx%3D%22106.8%22%20cy%3D%2278.0%22%20r%3D%221.4%22/%3E%3Ccircle%20cx%3D%22102.7%22%20cy%3D%2252.1%22%20r%3D%221.8%22/%3E%3Ccircle%20cx%3D%2290.9%22%20cy%3D%2225.3%22%20r%3D%221.0%22/%3E%3Ccircle%20cx%3D%2232.2%22%20cy%3D%2228.9%22%20r%3D%221.5%22/%3E%3Ccircle%20cx%3D%2228.5%22%20cy%3D%2250.3%22%20r%3D%220.9%22/%3E%3Ccircle%20cx%3D%22100.1%22%20cy%3D%2242.5%22%20r%3D%221.3%22/%3E%3Ccircle%20cx%3D%2264.2%22%20cy%3D%22108.5%22%20r%3D%221.2%22/%3E%3Ccircle%20cx%3D%22100.9%22%20cy%3D%2260.2%22%20r%3D%221.4%22/%3E%3Ccircle%20cx%3D%2257.6%22%20cy%3D%222.2%22%20r%3D%221.3%22/%3E%3Ccircle%20cx%3D%2220.1%22%20cy%3D%220.5%22%20r%3D%221.7%22/%3E%3C/g%3E%3C/svg%3E");background-size:150px 150px,110px 120px;animation:snowf 7s linear infinite}
@keyframes snowf{to{background-position:calc(20px + var(--wind,0) * 80px) 150px,calc(-12px + var(--wind,0) * 60px) 240px}}
.snowfield{position:absolute;left:0;right:0;bottom:0;height:14%;background:linear-gradient(rgba(242,246,250,0),#f2f6fa 35%);opacity:var(--snow,0);pointer-events:none}
.wfog{position:absolute;left:0;right:0;bottom:0;height:260px;background:linear-gradient(rgba(214,222,232,0),rgba(214,222,232,.88) 70%);opacity:var(--fog,0);z-index:2;pointer-events:none;filter:brightness(calc(1 - var(--gd,0) * .75))}
.bolts{position:absolute;left:0;right:0;bottom:16px;z-index:2;pointer-events:none}
.bolts svg{position:absolute;bottom:0;width:22px;overflow:visible;filter:drop-shadow(0 0 6px #cfe0ff)}
.tcol.flash{filter:brightness(1.45)}
/* ---------- Fiestas ---------- */
.kite{position:absolute;z-index:1;pointer-events:none;animation:kitef 3s ease-in-out infinite alternate}
.kite i{display:block;width:16px;height:16px;background:var(--kc);transform:rotate(45deg);box-shadow:inset -8px -8px 0 rgba(0,0,0,.12)}
.kite::after{content:"";position:absolute;left:7px;top:16px;width:1px;height:var(--ks,160px);background:rgba(255,255,255,.5);transform-origin:top;transform:rotate(12deg)}
@keyframes kitef{to{transform:translate(10px,-8px) rotate(8deg)}}
.pump{position:absolute;bottom:14px;width:12px;height:10px;border-radius:50%;background:#ff8a1a;box-shadow:inset -2px -2px 0 #d06010;z-index:3}
.pump::after{content:"";position:absolute;left:3px;top:3px;width:6px;height:3px;background:#ffe27a;clip-path:polygon(0 0,30% 100%,50% 30%,70% 100%,100% 0);opacity:calc(var(--gd,0) * 1.2)}
.bat{position:absolute;left:50%;width:14px;height:6px;background:#111;clip-path:polygon(0 0,30% 60%,50% 20%,70% 60%,100% 0,85% 100%,50% 70%,15% 100%);animation:batf 7s linear infinite;z-index:3;opacity:calc(var(--gd,0) * 1.4)}
@keyframes batf{0%{transform:translate(-120px,0)}25%{transform:translate(-20px,-30px) scaleY(.6)}50%{transform:translate(90px,0)}75%{transform:translate(10px,20px) scaleY(.6)}100%{transform:translate(-120px,0)}}
.xtree{position:absolute;bottom:14px;left:calc(50% + 150px);width:0;height:0;border:12px solid transparent;border-bottom:34px solid #1f6b35;border-top:0;z-index:3}
.xtree::after{content:"";position:absolute;left:-2px;top:-4px;width:4px;height:4px;background:#ffd23f;box-shadow:-5px 14px 0 #e33,5px 20px 0 #3bf,-3px 26px 0 #ffd23f}
.xlights{position:absolute;left:calc(50% - 80px);width:160px;z-index:2;pointer-events:none;background:radial-gradient(circle,#ff4d4d 1.5px,transparent 2px) 0 0/6px 14px repeat-y,radial-gradient(circle,#ffd23f 1.5px,transparent 2px) 100% 7px/6px 14px repeat-y;animation:blink 1.4s steps(1) infinite}
.crown .star{display:none}
.tcol[data-hol=xmas] .crown .star{display:block;position:absolute;left:50%;bottom:100%;width:16px;height:16px;margin-left:-8px;background:#ffd23f;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);filter:drop-shadow(0 0 6px #ffd23f)}
.fworks{position:absolute;left:0;right:0;height:260px;pointer-events:none;z-index:3;display:none}
.tcol.fw .fworks{display:block}
.fworks i{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--fc);box-shadow:0 -14px 0 var(--fc),10px -10px 0 var(--fc),14px 0 0 var(--fc),10px 10px 0 var(--fc),0 14px 0 var(--fc),-10px 10px 0 var(--fc),-14px 0 0 var(--fc),-10px -10px 0 var(--fc);animation:fwb 2.2s ease-out infinite}
@keyframes fwb{0%{transform:scale(.1);opacity:1}70%{opacity:1}100%{transform:scale(2.4);opacity:0}}
.crown.love .smoke{background:none}
.crown.love .smoke::after{content:"♥";position:absolute;left:-2px;top:-6px;color:#ff6f9c;font-size:14px}
/* ---------- Seres: tocar, accesorios y acciones nuevas ---------- */
.ent{pointer-events:auto;cursor:pointer}
.ent::before{content:"";position:absolute;inset:-8px}
.ent.poke .bd{animation:pokej .5s ease-out}
@keyframes pokej{30%{translate:0 -6px}}
.acc{display:none}
.rainy .umb,.cold .scarf,.cold .beanie,.sunny .shades{display:inline}
.rainy .rig .arm.r{transform:rotate(-40deg)}
.kid svg{scale:.72;transform-origin:50% 100%}
[data-a=run] .rig .lg.a,[data-a=run] .rig .arm.l{animation:leg .24s ease-in-out infinite alternate}
[data-a=run] .rig .lg.b,[data-a=run] .rig .arm.r{animation:leg .24s ease-in-out infinite alternate-reverse}
[data-a=phone] .rig .arm.r{transform:rotate(-150deg)}
[data-a=phone] .rig .hd{transform:translateY(1px)}
[data-a=shake] .rig .umb{animation:wag .12s 8 alternate;transform-box:fill-box;transform-origin:50% 100%}
[data-a=snowball] .rig .arm.r{animation:throw .9s ease-in}
@keyframes throw{0%{transform:rotate(-20deg)}50%{transform:rotate(-170deg)}100%{transform:rotate(-30deg)}}
[data-a=shiver] .rig{animation:shiv .07s linear infinite alternate}
@keyframes shiv{to{transform:translateX(.8px)}}
[data-a=fan] .rig .arm.r{animation:talk .18s ease-in-out infinite alternate}
[data-a=yawn] .rig .arm.r{transform:rotate(-160deg)}
[data-a=yawn] .rig .arm.l{transform:rotate(160deg)}
[data-a=trip] .rig{animation:tripf 1.5s ease-in-out;transform-origin:50% 100%}
@keyframes tripf{20%,60%{transform:rotate(75deg) translateY(2px)}}
[data-a=sneeze] .rig .hd{animation:sneez .35s ease-in 2}
@keyframes sneez{60%{transform:translateY(2px) rotate(8deg)}}
.dog[data-a=shake] svg,.k-dog[data-a=shake] svg{animation:shiv .05s linear infinite alternate}
.k-dog[data-a=roll] svg{animation:somer 1s ease-in-out 2}
.k-dog[data-a=dig] .hd{animation:nib .15s ease-in-out infinite alternate}
.k-dog[data-a=pushup] svg{animation:dogpush .6s ease-in-out infinite alternate;transform-origin:20% 100%}
@keyframes dogpush{to{transform:scaleY(.75) translateY(2px)}}
.k-dog{z-index:2}
.k-cat[data-a=shelter] .s-sit{display:block}
.k-cat[data-a=meow] .hd{animation:groom .25s ease-in-out 4 alternate}
.k-cyclist .wh{transform-box:fill-box;transform-origin:center}
.k-cyclist:is([data-a=ride],[data-a=wheelie],[data-a=leave]) .wh{animation:wspin .5s linear infinite}
@keyframes wspin{to{transform:rotate(360deg)}}
.k-cyclist .ped{transform-box:fill-box;transform-origin:0 0}
.k-cyclist:is([data-a=ride],[data-a=wheelie],[data-a=leave]) .ped{animation:leg .5s ease-in-out infinite alternate}
.k-cyclist[data-a=wheelie] svg{transform:rotate(-14deg);transform-origin:80% 95%}
.k-cyclist[data-a=wave] .arm.r{animation:wave2 .6s ease-in-out infinite alternate}
.k-pigeon .hd{transform-box:fill-box;transform-origin:20% 100%}
.k-pigeon:is([data-a=strut],[data-a=peck]) .hd{animation:peck .25s ease-in-out infinite alternate}
.k-pigeon[data-a=puff] svg{transform:scale(1.15,1.05);transform-origin:50% 100%}
.k-pigeon[data-a=leave] svg{animation:flapw .15s linear infinite alternate}
.k-condor .wg{transform-box:fill-box;transform-origin:50% 50%}
.k-condor[data-a=flap] .wg{animation:flapw .5s ease-in-out 3 alternate}
.k-condor[data-a=thermal] .bd{animation:circ 5.2s linear}
.k-condor[data-a=bank] svg{transform:rotate(-8deg);transition:transform 1s}
.trail{position:absolute;right:96%;top:5px;width:170px;height:2px;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.8));border-radius:2px;opacity:calc(.35 + var(--cover,0) * .5);pointer-events:none}
.k-airliner .nav{animation:blink 1.1s steps(1) infinite}
.k-airliner .nav.w{animation-delay:-.5s}
.k-airliner[data-a=bank] svg{transform:rotate(-4deg);transition:transform 1s}
.k-airliner[data-a=lights] .nav{animation-duration:.3s}
.k-wballoon .chute{opacity:0}
.k-wballoon.popped .env{transform:scale(0);transition:transform .2s}
.k-wballoon.popped .chute{opacity:1}
.k-wballoon .env{transform-box:fill-box;transform-origin:50% 100%}
.k-wballoon[data-a=pulse] .env{animation:inflate .6s ease-in-out 4 alternate}
.k-wballoon[data-a=sway] svg{animation:sway 1.5s ease-in-out infinite alternate;transform-origin:50% 0}
.k-wballoon .beac{opacity:0}
.k-wballoon[data-a=beacon] .beac{opacity:1;animation:blink .4s steps(1) infinite}
.k-meteor .mt{display:block;width:70px;height:2px;border-radius:2px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff 85%,#fff3c4);transform:rotate(-28deg);opacity:0}
.k-meteor[data-a=streak] .mt{animation:met 1.2s ease-in}
.k-meteor[data-a=fireball] .mt{width:110px;height:4px;background:linear-gradient(90deg,rgba(255,120,40,0),#ffb347 70%,#fff);box-shadow:0 0 12px 3px rgba(255,160,60,.6);animation:met 1.5s ease-in}
.k-meteor[data-a=split] .mt{box-shadow:6px 8px 0 rgba(255,255,255,.7);animation:met 1.3s ease-in}
.k-meteor[data-a=fizzle] .mt{width:40px;animation:met 1s ease-in}
.k-meteor[data-a=glow] .mt{background:linear-gradient(90deg,rgba(120,255,160,0),#9fffbf 80%,#fff);animation:met 1.4s ease-in}
@keyframes met{0%{opacity:0;translate:60px -30px}20%{opacity:1}100%{opacity:0;translate:-70px 36px}}
.glint{opacity:0}
[data-a=glint] .glint{animation:glintf 1.5s ease-in-out}
@keyframes glintf{50%{opacity:1;filter:drop-shadow(0 0 6px #fff)}}
.k-sat .pan{transform-box:fill-box;transform-origin:center}
.k-sat[data-a=rotate] .pan{animation:pans 2.6s ease-in-out}
@keyframes pans{50%{transform:scaleY(.2)}}
.k-sat[data-a=beacon] svg{filter:drop-shadow(0 0 3px #ff4d4d)}
.k-iss[data-a=lights] svg{filter:drop-shadow(0 0 4px #fff)}
.k-capsule .rcs,.k-capsule .burn{opacity:0}
.k-capsule:is([data-a=thrust],[data-a=leave]) .burn,.k-capsule[data-a=rotate] .rcs{opacity:1;animation:blink .15s steps(2) infinite}
.k-capsule[data-a=rotate] svg{animation:somer 2.4s ease-in-out}
.k-probe .dish{transform-box:fill-box;transform-origin:50% 100%}
.k-probe[data-a=turn] .dish{animation:sway 1.3s ease-in-out 2 alternate}
.k-probe .ping{opacity:0;transform-box:fill-box;transform-origin:center}
.k-probe[data-a=transmit] .ping{animation:ping 1s ease-out 3}
@keyframes ping{from{opacity:1;transform:scale(.5)}to{opacity:0;transform:scale(5)}}
.k-probe[data-a=spin] svg{animation:somer 2.6s linear}
.motes{display:block;position:relative;width:34px;height:34px}
.motes i{position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px;border-radius:50%;background:#cff;box-shadow:0 0 6px 2px #7ff;animation:moteo 3s linear infinite}
.motes i:nth-child(2){animation-duration:2.2s;animation-delay:-.4s;scale:.7}
.motes i:nth-child(3){animation-duration:3.8s;animation-delay:-1s}
.motes i:nth-child(4){animation-duration:2.6s;animation-delay:-1.6s;scale:.6}
.motes i:nth-child(5){animation-duration:4.4s;animation-delay:-2s}
.motes i:nth-child(6){animation-duration:3.2s;animation-delay:-2.6s;scale:.8}
@keyframes moteo{from{transform:rotate(0) translateX(12px) rotate(0)}to{transform:rotate(360deg) translateX(12px) rotate(-360deg)}}
.k-motes[data-a=pulse] .motes{animation:inflate .6s ease-in-out 4 alternate}
.k-motes[data-a=spiral] .motes i{animation-duration:.9s}
.k-motes[data-a=scatter] .motes{animation:scat 1.8s ease-out}
@keyframes scat{50%{transform:scale(2.4);opacity:.5}}
.k-motes[data-a=gather] .motes{transform:scale(.5);transition:transform 1s}
.k-xeno .tent{transform-box:fill-box;transform-origin:50% 0;animation:tentw 2s ease-in-out infinite alternate}
.k-xeno .bell{transform-box:fill-box;transform-origin:50% 50%}
.k-xeno[data-a=pulse] .bell{animation:pulse3 .5s ease-in-out 5 alternate}
.k-xeno[data-a=twirl] svg{animation:somer 2.6s ease-in-out}
.k-xeno[data-a=morph] .bell{animation:morph 2.6s ease-in-out}
@keyframes morph{25%{transform:scale(1.3,.7)}50%{transform:scale(.7,1.3) skewX(10deg)}75%{transform:scale(1.15,.9)}}
.k-xeno svg{animation:hov 2.4s ease-in-out infinite alternate}
.k-balc{z-index:3}
.k-balc[data-a=lean] svg{transform:rotate(8deg);transform-origin:50% 100%}
.k-balc[data-a=tend] .rig .arm.r{animation:talk .5s ease-in-out infinite alternate}
.k-balc[data-a=stretch] .rig .arm.r{transform:rotate(-170deg)}
.k-balc[data-a=stretch] .rig .arm.l{transform:rotate(170deg)}
.k-cleaner{z-index:3}
.k-cleaner .cw .arm.r{transform-box:fill-box;transform-origin:0 0}
.k-cleaner[data-a=wipe] .cw .arm.r{animation:wipe .35s ease-in-out infinite alternate}
@keyframes wipe{from{transform:rotate(-120deg)}to{transform:rotate(-60deg)}}
.k-cleaner[data-a=wave] .cw .arm.r{animation:wave2 .6s ease-in-out infinite alternate}
.k-cleaner[data-a=rest] .cw{transform:translate(22px,-2px)}
.k-worker[data-a=cheer] .rig{animation:jhop .3s ease-in-out infinite alternate}
.k-worker[data-a=cheer] .rig .arm.r,.k-worker[data-a=cheer] .rig .arm.l{animation:jarmr .3s ease-in-out infinite alternate}
.k-worker[data-a=shelter] .rig{transform:translateY(7px)}
.tcol[data-mood=near] .k-worker[data-a=hammer] .arm.r{animation-duration:.22s}
.pp[data-a=dance] svg{animation:dance .4s ease-in-out infinite alternate}
@keyframes dance{from{transform:rotate(-8deg) translateY(0)}to{transform:rotate(8deg) translateY(-1.5px)}}
.pp[data-a=phone] .rig .arm.r{transform:rotate(-150deg)}
/* ---------- Secretos ---------- */
.egg{position:absolute;pointer-events:auto;z-index:3;cursor:pointer}
.egg::before{content:"";position:absolute;inset:-12px}
.egg svg{display:block;overflow:visible}
.egg.bob{animation:hov 3s ease-in-out infinite alternate}
.egg.hover{animation:hov .8s ease-in-out infinite alternate}
.egg.tumble svg{animation:spin 24s linear infinite}
.egg.tumble.slow svg{animation-duration:60s}
.egg.orbit{animation:eggorb 18s ease-in-out infinite alternate}
@keyframes eggorb{to{transform:translate(-40px,14px)}}
.egg.flyacross{left:0!important;animation:eggfly 34s linear infinite}
.egg.flyacross.fast{animation-duration:12s}
.egg.flyacross.slow{animation-duration:50s}
@keyframes eggfly{from{transform:translateX(-160px)}to{transform:translateX(calc(100cqw + 40px))}}
.egg.fall{animation:eggfall 16s ease-in-out infinite}
@keyframes eggfall{0%{transform:translateY(0) rotate(0)}50%{transform:translateY(-40px) rotate(180deg)}100%{transform:translateY(0) rotate(360deg)}}
.egg.ground{z-index:2;filter:brightness(calc(1 - var(--gd,0) * .7))}
.egg.hit svg{animation:pokej .5s ease-out}
.egg .rot{animation:propsp .1s linear infinite alternate;transform-box:fill-box;transform-origin:center}
.egg.hit .jmp{animation:jmpf 3s ease-in forwards}
@keyframes jmpf{to{transform:translateY(160px);opacity:0}}
.egg-say{white-space:normal;width:170px;text-align:center;line-height:1.25;z-index:7}
.wowt{font:700 11px monospace;color:#bfe;text-shadow:0 0 6px #6ff;letter-spacing:1px}
.karman{left:0;right:0;height:1px;border-top:1px dashed rgba(255,255,255,.3);pointer-events:auto;z-index:1}
.karman span{position:absolute;right:8px;top:2px;font-size:9px;font-weight:700;color:rgba(255,255,255,.55)}
.karman::before{inset:-8px 0}

.crown .chim{pointer-events:auto;cursor:pointer}
.planet.earth .nt{position:absolute;inset:0;border-radius:50%;background:linear-gradient(to right,rgba(2,6,20,.92) calc(var(--en,.5) * 100% - 12%),rgba(2,6,20,0) calc(var(--en,.5) * 100% + 12%))}
.planet.earth .nt::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#ffd27a .6px,transparent 1px) 0 0/11px 9px,radial-gradient(circle,#ffe6a8 .5px,transparent .9px) 4px 5px/7px 13px,radial-gradient(circle,#ffc060 .7px,transparent 1.1px) 2px 1px/17px 15px;-webkit-mask:linear-gradient(to right,#000 calc(var(--en,.5) * 100% - 14%),transparent calc(var(--en,.5) * 100%));mask:linear-gradient(to right,#000 calc(var(--en,.5) * 100% - 14%),transparent calc(var(--en,.5) * 100%));opacity:.55}
.mailbox{position:absolute;left:calc(100% + 4px);bottom:0;width:7px;height:9px;background:#2b5aa8;border-radius:3px 3px 0 0;z-index:2;pointer-events:auto;cursor:pointer}
.mailbox::after{content:"";position:absolute;left:2px;top:3px;width:3px;height:1px;background:#111}
/* ---------- Física y tragedias ---------- */
.tcol{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.gore{position:absolute;inset:0;pointer-events:none;z-index:4}
.gore .ent{pointer-events:auto}
.ent.held{z-index:6;filter:drop-shadow(0 6px 4px rgba(0,0,0,.35))}
.ent.held .bd{animation:dangle .35s ease-in-out infinite alternate;transform-origin:50% 0}
@keyframes dangle{from{rotate:-8deg}to{rotate:8deg}}
.ent.held .rig .lg.a,.ent.falling .rig .lg.a{animation:leg .14s linear infinite alternate}
.ent.held .rig .lg.b,.ent.falling .rig .lg.b{animation:leg .14s linear infinite alternate-reverse}
.ent.held .rig .arm.r,.ent.falling .rig .arm.r{animation:jarmr .2s ease-in-out infinite alternate}
.ent.held .rig .arm.l,.ent.falling .rig .arm.l{animation:jarml .2s ease-in-out infinite alternate}
.ent.chute::after{content:"";position:absolute;left:50%;bottom:100%;width:34px;height:16px;margin-left:-17px;border-radius:17px 17px 3px 3px;background:repeating-linear-gradient(90deg,#ff7a1a 0 6px,#fff 6px 12px);box-shadow:0 14px 0 -7px rgba(0,0,0,0)}
.ent.down svg{transform:rotate(90deg) translate(6px,-2px);transform-origin:50% 100%}
.ent.limp .rig{animation:limp .5s ease-in-out infinite alternate}
@keyframes limp{to{transform:translateY(1.5px) rotate(4deg)}}
.ent.adrift{transition:none!important}
.bandaged .band,.mopper .mop{display:inline}
.mopper[data-a=mop] .rig .arm.r{animation:wipe .3s ease-in-out infinite alternate}
.gib{position:absolute;display:block;transform-origin:50% 50%}
.gib svg{display:block}
.gib.corpse{transform-origin:50% 100%}
.gib.corpse.half{filter:saturate(.7)}
.gib.scrap i{display:block;border-radius:1px}
.drop{position:absolute;width:3px;height:3px;border-radius:50%;background:#a3141a}
.drop.goo{background:#7fe36a}
.stain{position:absolute;display:block;border-radius:50%;background:var(--bc,#9b0f12);opacity:.92}
.stain.wall{border-radius:45% 45% 50% 50%/30% 30% 70% 70%}
.pool{position:absolute;display:block;height:5px;border-radius:50%;background:radial-gradient(ellipse,#9b0f12 55%,#7a0a0e);transform-origin:50% 50%;animation:poolg 4s ease-out both}
.pool.goo{background:radial-gradient(ellipse,#7fe36a 55%,#4fb84a)}
@keyframes poolg{from{transform:scaleX(.15)}}
.blast{position:absolute;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle,#fff 0 15%,#ffd27a 30%,#ff7a1a 50%,rgba(80,80,80,.6) 70%,transparent 72%);animation:blastf 1.6s ease-out forwards;pointer-events:none}
@keyframes blastf{from{transform:scale(.2);opacity:1}60%{opacity:.9}to{transform:scale(1.6) translateY(-20px);opacity:0}}
.veh{position:absolute;z-index:3;pointer-events:auto;cursor:pointer}
.veh.fl .bd{transform:scaleX(-1)}
.veh .bd{display:block}
.amb .lb{animation:blink .35s steps(1) infinite}
.amb .lb.b{animation-delay:-.17s}
.amb.stop .bd{animation:none}
.sky.quake{animation:qshake .09s linear infinite}
@keyframes qshake{0%{translate:0 0}25%{translate:calc(var(--qk,2) * 1px) calc(var(--qk,2) * -.6px)}50%{translate:calc(var(--qk,2) * -1px) calc(var(--qk,2) * .5px)}75%{translate:calc(var(--qk,2) * .7px) calc(var(--qk,2) * .8px)}}
.pp.shook svg{transform:translateX(1.5px) rotate(6deg)}
.crack{position:absolute;top:3px;width:26px;height:40px;z-index:2;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 40'%3E%3Cpath d='M13 0 L10 8 L15 13 L9 21 L14 27 L8 34 L11 40 M15 13 L22 17 M9 21 L3 24' stroke='%23231a14' stroke-width='1.2' fill='none'/%3E%3C/svg%3E") no-repeat;transition:opacity 60s}
.floor.burning .w::before{background:radial-gradient(circle at 50% 80%,rgba(255,240,150,calc(var(--fire,1) * .95)),rgba(255,120,20,calc(var(--fire,1) * .9)) 45%,rgba(120,20,0,calc(var(--fire,1) * .8)));animation:fflick .18s steps(2) infinite}
.floor.burning .w{box-shadow:0 0 calc(var(--fire,1) * 14px) rgba(255,120,30,.9)}
@keyframes fflick{50%{filter:brightness(1.3)}}
.floor.burnt .w::before{background:rgba(25,18,12,.88)}
.floor.burnt .shade{background:linear-gradient(rgba(20,14,10,.55),rgba(20,14,10,.2))}
.smokecol{position:absolute;left:calc(50% - 50px);width:100px;height:420px;z-index:3;pointer-events:none;background:radial-gradient(ellipse at 50% 100%,rgba(60,60,60,.7),rgba(90,90,90,.35) 40%,rgba(120,120,120,0) 70%);filter:blur(6px);animation:smokeup 3s ease-in-out infinite alternate;transition:opacity 8s}
.smokecol.out{opacity:0}
@keyframes smokeup{to{transform:translateX(18px) scaleX(1.2)}}
.truck .lb,.heli .lb{animation:blink .35s steps(1) infinite}
.ladder{position:absolute;left:4px;bottom:22px;width:7px;background:repeating-linear-gradient(transparent 0 5px,#ccc 5px 6.5px),linear-gradient(90deg,#bbb 0 1.5px,transparent 1.5px 5.5px,#bbb 5.5px);transform-origin:bottom;animation:ladderup 1.5s ease-out both}
@keyframes ladderup{from{transform:scaleY(.05)}}
.truck.spray .ladder::after{content:"";position:absolute;top:2px;right:100%;width:46px;height:3px;border-radius:2px;background:linear-gradient(270deg,#bfe4ff,rgba(160,210,255,.2));animation:sprayw .2s linear infinite alternate}
.heli .rot{transform-box:fill-box;transform-origin:center;animation:propsp .08s linear infinite alternate}
.heli.spray::after{content:"";position:absolute;left:24px;top:28px;width:14px;height:70px;background:linear-gradient(rgba(160,210,255,.8),rgba(160,210,255,0));animation:sprayw .2s linear infinite alternate}
@keyframes sprayw{to{opacity:.6;transform:scaleX(1.1)}}
.tcol.blackout .w.on::before,.tcol.blackout .w.dim::before{background:rgba(6,10,26,.88)}
.tcol.blackout .w.on{box-shadow:none}
.tcol.blackout .w.candle::before{background:radial-gradient(circle at 50% 75%,rgba(255,200,110,.75) 0 12%,rgba(255,160,60,.25) 30%,rgba(6,10,26,.85) 60%);animation:fflick .4s steps(2) infinite}
.tcol.blackout .lamp i{background:#555!important;box-shadow:none!important}
.frag{position:absolute;width:7px;height:2px;border-radius:1px;background:#e0e4ea;box-shadow:0 0 4px #fff;animation:fragf .7s linear forwards}
@keyframes fragf{to{transform:translate(170px,-62px)}}
.blast.small{width:30px;height:30px}
.k-probe.dead svg{filter:grayscale(1) brightness(.6);transition:filter 5s}
.k-dog.bandaged svg{filter:drop-shadow(0 -1px 0 #fff)}

/* ---------- Después: los que recogen y limpian ---------- */
.ent.gone{pointer-events:none}
.gore .gib{pointer-events:auto}
.gib.carried{pointer-events:none;z-index:2}
.gib.stowed{display:none}
.gib.held{z-index:6;filter:drop-shadow(0 6px 4px rgba(0,0,0,.35))}
.k-medic .cross,.hasbag .rbag,.bagger .jbag{display:inline}
.bagger .jbag{transform:scale(var(--bag,1));transform-box:fill-box;transform-origin:50% 0}
.k-cleaner.cut svg > path:first-child{display:none}
.rig .hd{transform-box:fill-box;transform-origin:50% 100%}
[data-a=pick] .rig{transform:translateY(5px)}
[data-a=pick] .rig .lg.a{transform:rotate(-58deg)}
[data-a=pick] .rig .lg.b{transform:rotate(34deg)}
[data-a=pick] .rig .arm.r{transform:rotate(-20deg)}
[data-a=pick] .rig .hd{transform:translateY(1px) rotate(12deg)}
.carrying .rig .arm.r{transform:rotate(-62deg)}
.carrying .rig .arm.l{transform:rotate(40deg)}
[data-a=gag] .rig .arm.r{transform:rotate(-148deg)}
[data-a=gag] .rig .hd{transform:rotate(-8deg) translateY(.5px)}
[data-a=puke] .rig{transform:rotate(24deg);transform-origin:50% 100%}
[data-a=puke] .rig .arm.r{transform:rotate(-40deg)}
[data-a=cry] .rig .arm.r{transform:rotate(-152deg)}
[data-a=cry] .rig .arm.l{transform:rotate(152deg)}
[data-a=cry] .rig{animation:sob .35s ease-in-out infinite alternate}
@keyframes sob{to{transform:translateY(1px)}}
[data-a=point] .rig .arm.r{transform:rotate(-98deg)}
[data-a=spray] .rig .arm.r{transform:rotate(-78deg)}
.k-cat[data-a=hiss] svg{transform:scaleY(1.14) translateY(-1px);transform-origin:50% 100%}
/* Lo que se oye de los animales: ondas, notas o "z" (no hablan) */
.vox{position:absolute;left:80%;bottom:62%;display:block;width:12px;height:12px;pointer-events:none;z-index:6}
.ent.fl > .vox{left:auto;right:80%;transform:scaleX(-1)}
.vox i{position:absolute;left:0;top:50%;width:4px;height:8px;margin-top:-4px;border:1.4px solid rgba(255,255,255,.95);border-left-color:transparent;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;filter:drop-shadow(0 0 1px rgba(0,0,0,.7));opacity:0;animation:voxp .7s ease-out infinite}
.vox i+i{left:3px;width:7px;height:13px;margin-top:-6.5px;animation-delay:.15s}
@keyframes voxp{0%{opacity:0;translate:-2px 0}30%{opacity:1}100%{opacity:0;translate:2px 0}}
.vox.v-hiss i{border-right-color:#ffd6d6;animation-duration:.22s}
.vox.v-purr i{animation-duration:1.3s}
.vox.v-whine i{animation-duration:1s}
.vox.v-z i,.vox.v-song i{border:0;width:auto;height:auto;margin:0;top:0;font:italic 700 7px/1 system-ui,sans-serif;color:#fff;text-shadow:0 0 2px #000;animation:voxz 1.5s ease-out infinite}
.vox.v-z i+i,.vox.v-song i+i{left:5px;top:-5px;font-size:9px;animation-delay:.55s}
@keyframes voxz{0%{opacity:0;translate:0 3px}30%{opacity:1}100%{opacity:0;translate:2px -7px}}
/* Camilla, chorro de agua, moscas, vómito y tierra */
.stretcher{position:absolute;height:3px;border-radius:1px;background:#e9edf0;box-shadow:0 1px 0 #8d959e;z-index:5;pointer-events:none}
.stretcher > .gib{position:absolute;left:-3px;bottom:9px;transform:rotate(90deg)!important}
.jet{position:absolute;height:2px;transform-origin:0 50%;border-radius:1px;background:linear-gradient(90deg,rgba(200,230,255,.95),rgba(200,230,255,.4));box-shadow:0 0 3px rgba(200,230,255,.8);z-index:5;pointer-events:none;animation:sprayw .15s linear infinite alternate}
.flies{position:absolute;left:50%;bottom:90%;width:14px;height:10px;margin-left:-7px;pointer-events:none;background:radial-gradient(circle,#111 0 .7px,transparent 1.1px) 0 0/5px 4px;animation:flies .45s steps(3) infinite}
@keyframes flies{33%{background-position:2px -1px}66%{background-position:-1px 2px}100%{background-position:1px 0}}
.stain.vomit{border-radius:40% 60% 50% 50%}
.pool.old{animation:none}
/* Vehículos: abollado, destrozado, puertas abiertas, grúa */
.veh.dent .bd{transform:scaleY(.93) skewX(-3deg);transform-origin:50% 100%}
.veh.dent.fl .bd{transform:scaleX(-1) scaleY(.93) skewX(-3deg)}
.veh.wreck .bd{filter:grayscale(.8) brightness(.5) contrast(1.15);transform:scaleY(.68) skewX(-9deg);transform-origin:50% 100%;animation:none!important}
.veh.wreck.fl .bd{transform:scaleX(-1) scaleY(.68) skewX(-9deg)}
.veh.wreck .lb{animation:none!important;opacity:.3}
.veh.wreck::after{content:"";position:absolute;left:35%;bottom:55%;width:18px;height:34px;background:radial-gradient(ellipse at 50% 100%,rgba(60,60,60,.55),transparent 70%);filter:blur(3px);animation:smokeup 2.5s ease-in-out infinite alternate;pointer-events:none}
.amb .dr{display:none}
.amb.open .dr{display:inline}
.veh.towed{position:absolute;transform:rotate(-7deg);transform-origin:0 100%}
.veh.towed.fl{transform:rotate(7deg)}
.tow .lb{animation:blink .5s steps(1) infinite}
.tow.hook .hk{animation:hookd 1.2s ease-in-out infinite alternate}
@keyframes hookd{to{transform:translateY(3px)}}
.ladder.fold{animation:none;transform:scaleY(.05);transition:transform 1.4s ease-in}
.crack.patched{filter:invert(.75) sepia(.2) brightness(1.3)}
.floor.repair .w::before{background:repeating-linear-gradient(-10deg,#a8784a 0 4px,#7a5230 4px 5px)}
.floor.repair .w .pp{display:none}
.floor .bdoor{position:absolute;left:50%;bottom:0;width:15px;height:28px;margin-left:-7.5px;border-radius:6px 6px 0 0;background:linear-gradient(90deg,#3a2414,#5a3a20);box-shadow:0 0 0 1.5px rgba(255,255,255,.22);z-index:2;transition:background .3s,box-shadow .3s}
.floor:is(.s-module,.s-lunar,.s-mars,.s-mine,.s-gas,.s-ring,.s-polar,.s-tower,.s-glass) .bdoor{background:linear-gradient(90deg,#7d8894,#c3ccd6);border-radius:3px 3px 0 0}
.floor:is(.s-bio,.s-crystal,.s-lattice,.s-gen,.s-ice) .bdoor{background:linear-gradient(90deg,rgba(120,90,200,.7),rgba(200,180,255,.7));border-radius:8px 8px 0 0}
.floor .bdoor.open{background:linear-gradient(90deg,#ffd98a,#ffb84a);box-shadow:0 0 0 1.5px rgba(255,255,255,.25),0 0 12px 3px rgba(255,200,110,.55)}
/* Autos destrozados: ruedas sueltas, partido en dos, fuego, carcasa quemada */
.veh.nw1 .bd svg > circle:is(:nth-of-type(1),:nth-of-type(3)){display:none}
.veh.nw2 .bd svg > circle{display:none}
.veh.half-a .bd{clip-path:polygon(0 0,50% 0,44% 30%,53% 55%,46% 100%,0 100%)}
.veh.half-b .bd{clip-path:polygon(50% 0,100% 0,100% 100%,46% 100%,53% 55%,44% 30%)}
.veh.half-a .flames{right:50%}
.veh.charred .bd{filter:grayscale(1) brightness(.28) contrast(1.3)}
.veh.burning::after{display:none}
.veh.steam::after{background:radial-gradient(ellipse at 50% 100%,rgba(235,235,235,.6),transparent 70%)}
.k-fireman .helm{display:inline}
.flames{position:absolute;left:14%;right:14%;bottom:38%;height:30px;pointer-events:none;z-index:2;transform-origin:50% 100%;transform:scale(calc(.45 + var(--f,1) * .7));transition:opacity 1.2s}
.flames.out{opacity:0}
.flames i{position:absolute;bottom:0;width:11px;height:22px;margin-left:-5.5px;border-radius:50% 50% 38% 38%/62% 62% 38% 38%;background:radial-gradient(ellipse at 50% 82%,#fff6c0 0 18%,#ffc23a 38%,#ff6a1a 62%,rgba(255,50,0,0) 74%);transform-origin:50% 100%;animation:flick .32s ease-in-out infinite alternate}
.flames i:nth-child(1){left:12%;height:18px;animation-delay:-.1s}
.flames i:nth-child(2){left:32%;height:26px;animation-delay:-.25s}
.flames i:nth-child(3){left:52%;height:30px;animation-delay:-.05s}
.flames i:nth-child(4){left:70%;height:22px;animation-delay:-.18s}
.flames i:nth-child(5){left:88%;height:16px;animation-delay:-.3s}
@keyframes flick{0%{transform:scaleY(.82) skewX(-5deg)}50%{transform:scaleY(1.15) skewX(4deg)}100%{transform:scaleY(.9) skewX(-2deg)}}
.flames::before{content:"";position:absolute;inset:-12px -18px -8px;border-radius:50%;background:radial-gradient(ellipse at 50% 80%,rgba(255,140,40,.45),transparent 70%)}
.flames::after{content:"";position:absolute;left:5%;right:5%;bottom:85%;height:110px;background:radial-gradient(ellipse at 50% 100%,rgba(25,25,25,.8),rgba(45,45,45,.45) 40%,transparent 70%);filter:blur(5px);animation:smokeup 2.2s ease-in-out infinite alternate}
.flames.small{left:-4px;right:-4px;bottom:40%;height:12px}
.flames.small i{width:6px;height:11px;margin-left:-3px}
.flames.small::after{height:40px}
.gib.charred{filter:grayscale(1) brightness(.35)}
.fuelfire{position:absolute;height:22px;pointer-events:none;z-index:3;transform-origin:50% 100%;transform:scaleY(calc(.4 + var(--f,1) * .6));transition:opacity 1.2s}
.fuelfire.out{opacity:0}
.fuelfire::before{content:"";position:absolute;left:-4px;right:-4px;bottom:-1px;height:4px;border-radius:50%;background:#2a1f15}
.fuelfire i{position:absolute;bottom:0;width:9px;height:16px;margin-left:-4.5px;border-radius:50% 50% 38% 38%/62% 62% 38% 38%;background:radial-gradient(ellipse at 50% 82%,#fff6c0 0 18%,#ffb02e 40%,#ff5a1a 62%,rgba(255,50,0,0) 74%);transform-origin:50% 100%;animation:flick .28s ease-in-out infinite alternate}
.fuelfire i:nth-child(1){left:10%}.fuelfire i:nth-child(2){left:30%;height:20px;animation-delay:-.12s}.fuelfire i:nth-child(3){left:50%;height:14px;animation-delay:-.2s}.fuelfire i:nth-child(4){left:70%;height:19px;animation-delay:-.07s}.fuelfire i:nth-child(5){left:90%;height:12px;animation-delay:-.24s}
.stain.scorch{opacity:.8}
.jet.water{height:3px;background:linear-gradient(90deg,rgba(210,235,255,.95),rgba(170,215,255,.55));box-shadow:0 0 4px rgba(200,230,255,.9)}
/* Lesiones: tobillo, chichón, mareo, pierna quebrada, inconsciente, brazo; y cómo vuelven (yeso, cabestrillo) */
.bumped .bump,.cast .crutch,.sling .sling{display:inline}
.dizzy .rig{animation:dizzy .7s ease-in-out infinite alternate;transform-origin:50% 100%}
@keyframes dizzy{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
[data-a=hold] .rig{transform:translateY(5px)}
[data-a=hold] .rig .lg.a{transform:rotate(-55deg)}
[data-a=hold] .rig .arm.r{transform:rotate(-8deg)}
[data-a=hold] .rig .arm.l{transform:rotate(20deg)}
[data-a=rub] .rig .arm.r{animation:rub .3s ease-in-out infinite alternate}
@keyframes rub{from{transform:rotate(-150deg)}to{transform:rotate(-170deg)}}
.ent.legsit .rig{transform:translateY(8px)}
.ent.legsit .rig .lg.a{transform:rotate(-82deg)}
.ent.legsit .rig .lg.b{transform:rotate(-68deg)}
.ent.legsit .rig .arm.r{transform:rotate(-35deg)}
.ent.ko svg{transform:rotate(90deg) translate(6px,-2px);transform-origin:50% 100%}
.armhurt .rig .arm.r{transform:rotate(-58deg)}
.armhurt .rig .arm.l{transform:rotate(48deg)}
.cast .rig .lg.b path{stroke:#f2f2f2;stroke-width:3.3}
.cast .rig .lg.b{animation:none!important}
.sling .rig .arm.r{animation:none!important;transform:rotate(-74deg)!important}
.ent.stowed{display:none}
.stretcher > .ent{position:absolute!important;left:-3px!important;bottom:9px!important;transform:rotate(90deg);transform-origin:50% 100%}
.stretcher > .ent .rig,.stretcher > .ent svg{transform:none!important}
/* Cuerpos: con las extremidades torcidas, o sin lo que se soltó */
.gib.corpse.broken .rig .lg.a{transform:rotate(68deg)}
.gib.corpse.broken .rig .lg.b{transform:rotate(-38deg)}
.gib.corpse.broken .rig .arm.l{transform:rotate(118deg)}
.gib.corpse.broken .rig .arm.r{transform:rotate(-96deg)}
.gib.corpse.no-hd .rig .hd,.gib.corpse.no-hd .rig .bump{display:none}
.gib.corpse.no-arml .rig .arm.l,.gib.corpse.no-armr .rig .arm.r,.gib.corpse.no-lga .rig .lg.a,.gib.corpse.no-lgb .rig .lg.b{display:none}
.gib.chunk i{display:block;border-radius:40%}
/* Sangre que chorrea por la fachada, y la que queda en un auto */
.stain.drip::after{content:"";position:absolute;left:40%;top:60%;width:1px;height:0;background:var(--bc,#9b0f12);animation:drip 25s ease-out forwards}
@keyframes drip{to{height:10px}}
.veh .cstain{position:absolute;display:block;border-radius:50%;background:#8e0d10;z-index:2;pointer-events:none}
.veh.crushed .bd{transform:scaleY(.8) skewX(-4deg);transform-origin:50% 100%}
.veh.crushed.fl .bd{transform:scaleX(-1) scaleY(.8) skewX(-4deg)}
/* Caer: de pie, flexiona las rodillas con el golpe; al desplomarse, se va cayendo (no de golpe) */
.ent.impact .rig{animation:impact .35s ease-out}
@keyframes impact{0%{transform:translateY(0)}30%{transform:translateY(4px) scaleY(.86)}100%{transform:none}}
.ent.down:not(.flat) svg,.ent.ko:not(.flat) svg{animation:topple .45s ease-in}
@keyframes topple{from{transform:none}60%{transform:rotate(70deg) translate(4px,-1px)}to{transform:rotate(90deg) translate(6px,-2px)}}
.ent.legsit:not(.flat) .rig{animation:sitdown .4s ease-in}
@keyframes sitdown{from{transform:none}}
/* Los animales heridos quedan echados de lado (no se dan vuelta como una persona) */
.ent:is(.k-dog,.k-cat,.k-rabbit,.k-pigeon).down svg{transform:translateY(3px) scaleY(.72);transform-origin:50% 100%;animation:none}
.ent:is(.k-dog,.k-cat).down .lg{transform:rotate(62deg)}
/* Animal muerto: echado de lado, aplastado y con las patas sueltas (no girado como una persona). */
.gib.corpse.flatbody svg{transform:translateY(2px) scaleY(.7);transform-origin:50% 100%}
.gib.corpse.flatbody .lg{transform-box:fill-box;transform-origin:50% 0;transform:rotate(64deg)}
.gib.corpse.flatbody .tail,.gib.corpse.flatbody .ctail{animation:none}
/* El gato herido queda echado de lado (no sentado). */
.k-cat.down .s-sit,.k-cat.down .s-curl{display:none}
.k-cat.down .s-side{display:block}
/* Balcón chico de un piso de vivienda: losa que sobresale y baranda (de madera o de fierro). */
.balc-s {
  position: absolute;
  bottom: -2px;
  height: 14px;
  z-index: 3;
  pointer-events: none;
  filter: brightness(calc(1 - var(--d, 0) * .6));
}
.balc-s::before {
  content: "";
  position: absolute;
  left: -3px;
  right: -3px;
  bottom: 0;
  height: 3px;
  background: var(--m);
  border-top: 1px solid rgba(255,255,255,.35);
  box-shadow: 0 2px 2px rgba(0,0,0,.28);
}
.balc-s::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 3px;
  height: 10px;
  border: 1px solid var(--bal);
  border-top-width: 2px;
  border-bottom: 0;
  background: repeating-linear-gradient(90deg, var(--bal) 0 1.4px, transparent 1.4px 4.5px);
}
.balc-s.wood { --bal: #efe3c8; }
.balc-s.iron { --bal: #2b2b2e; }
/* Donde está la puerta del balcón no hay ventana (el espacio queda para que todo siga alineado). */
.wv.dw .w { visibility: hidden; }
/* Alero sobre la puerta de entrada: ahí se refugia de la lluvia quien no trae paraguas (y el gato). */
.floor.base .marq {
  position: absolute;
  left: 50%;
  bottom: 33px;
  width: 42px;
  height: 6px;
  margin-left: -21px;
  border-radius: 2px 2px 1px 1px;
  background: linear-gradient(#6a4628, #3a2414);
  box-shadow: 0 2px 3px rgba(0,0,0,.35);
  filter: brightness(calc(1 - var(--d, 0) * .6));
  z-index: 2;
}
