/* 2048 Balls launcher: keep this in index only once. Game logic lives in balls2048-game.html. */
:root{--menu-gap-4:400px;}
.cat-game{position:fixed!important;left:var(--cat-menu-x,50%)!important;top:calc(var(--cat-anchor-y,120px) + 250px)!important;bottom:auto!important;width:64px;height:64px;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transform-origin:left top!important;transform:translate3d(var(--menu-gap-4),0,0) scale(.94)!important;z-index:999997!important;cursor:inherit;}
body.cat-menu-open .cat-game{opacity:1!important;visibility:visible!important;pointer-events:auto!important;transition:opacity .18s ease,visibility .18s ease,transform .32s cubic-bezier(.18,.9,.22,1)!important;transition-delay:.26s!important;}
.cat-game-ball{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:1000;color:#10304f;letter-spacing:-.03em;background:radial-gradient(circle at 30% 24%,#fff 0 10%,#9be7ff 28%,#43b6ff 56%,#8f51ea 100%);border:2px solid rgba(255,255,255,.85);box-shadow:inset -8px -10px 0 rgba(33,38,88,.16),0 8px 20px rgba(38,90,150,.28),0 0 0 3px rgba(255,255,255,.20);text-shadow:0 1px 0 rgba(255,255,255,.75);}
#gameHoverZone{left:var(--cat-menu-x,50%)!important;top:calc(var(--cat-anchor-y,120px) + 248px)!important;transform:translateX(calc(var(--menu-gap-4) - 45px))!important;width:145px!important;height:135px!important;bottom:auto!important;pointer-events:auto!important;background:rgba(255,255,255,0)!important;z-index:999999!important;}
body:not(.cat-menu-open) #gameHoverZone{pointer-events:none!important;visibility:hidden!important;}
.cat-game.v2048-hover{filter:drop-shadow(0 0 8px rgba(255,255,255,.95)) drop-shadow(0 0 18px rgba(143,81,234,.75))!important;}
body.cat-menu-open .cat-game.v2048-hover .cat-game-ball{animation:gameBallPulse .56s ease-in-out infinite;}
@keyframes gameBallPulse{0%,100%{transform:translateY(0) scale(1) rotate(0)}50%{transform:translateY(-7px) scale(1.16) rotate(9deg)}}
.cat-gamepad-prop{position:absolute;left:119px;top:198px;width:96px;height:42px;z-index:19;opacity:0;pointer-events:none;transform:translateY(10px) scale(.86);transition:opacity .16s ease,transform .22s ease;}
.cat-gamepad-prop:before{content:"";position:absolute;inset:6px 4px;border-radius:20px 20px 18px 18px;background:linear-gradient(135deg,#2a315f,#4c7cff 58%,#8f51ea);border:2px solid rgba(255,255,255,.75);box-shadow:0 9px 18px rgba(0,0,0,.25),inset 0 0 0 2px rgba(255,255,255,.12)}
.cat-gamepad-prop:after{content:"●  ✦  ●";position:absolute;left:0;right:0;top:12px;text-align:center;color:#fff;font-size:13px;font-weight:900;letter-spacing:8px;text-shadow:0 0 8px rgba(255,255,255,.85)}
.catContainer.playing-mode .cat-gamepad-prop{opacity:1;transform:translateY(0) scale(1);animation:catGamepadShake .46s ease-in-out infinite alternate;}
.catContainer.playing-mode .leftFoot{animation:catGameLeftPaw .28s ease-in-out infinite alternate!important;z-index:21!important;}
.catContainer.playing-mode .rightFoot{animation:catGameRightPaw .28s ease-in-out .14s infinite alternate!important;z-index:21!important;}
.catContainer.playing-mode .pupil{background:#111!important;box-shadow:0 0 0 2px rgba(139,233,253,.25),0 0 12px rgba(139,233,253,.75)!important;}
.catContainer.playing-mode .catTail{animation-duration:.72s!important;}
@keyframes catGamepadShake{from{transform:translateY(0) scale(1) rotate(-1deg)}to{transform:translateY(-3px) scale(1.03) rotate(1deg)}}
@keyframes catGameLeftPaw{from{transform:translate(54px,-13px) rotate(-22deg)}to{transform:translate(65px,-25px) rotate(-6deg)}}
@keyframes catGameRightPaw{from{transform:translate(-28px,-13px) rotate(22deg)}to{transform:translate(-40px,-25px) rotate(6deg)}}
.balls2048-shell{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:24px;z-index:1000000;background:rgba(19,31,54,.34);backdrop-filter:blur(18px) saturate(155%);-webkit-backdrop-filter:blur(18px) saturate(155%);}
.balls2048-shell.show{display:flex;}
.balls2048-frame-dialog{position:relative;width:min(96vw,920px);height:min(96vh,900px);border-radius:30px;background:linear-gradient(145deg,rgba(255,255,255,.24),rgba(255,255,255,.11));border:1px solid rgba(255,255,255,.48);box-shadow:0 34px 100px rgba(31,56,88,.35),inset 0 1px 0 rgba(255,255,255,.42);overflow:hidden;}
.balls2048-frame-dialog:before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 90deg,rgba(255,154,214,.22),rgba(139,233,253,.20),rgba(143,81,234,.20),rgba(255,214,102,.18),rgba(255,154,214,.22));filter:blur(42px);animation:ballsGlassSpin 9s linear infinite;z-index:-1;}
@keyframes ballsGlassSpin{to{transform:rotate(360deg)}}
.balls2048-frame-close{position:absolute;right:16px;top:14px;width:34px;height:34px;border-radius:999px;border:1px solid rgba(255,255,255,.48);background:rgba(255,255,255,.22);color:#fff;font-size:22px;line-height:30px;padding:0;z-index:6;box-shadow:0 8px 20px rgba(31,56,88,.18)!important;cursor:pointer;}
.balls2048-frame-title{position:absolute;left:20px;top:17px;z-index:5;color:#fff;font-weight:1000;text-shadow:0 2px 10px rgba(0,0,0,.25);letter-spacing:.02em;}
.balls2048-iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;}
body.balls2048-open #catPhone,body.balls2048-open #catCan,body.balls2048-open #catExport,body.balls2048-open #catGame,body.balls2048-open #phoneHoverZone,body.balls2048-open #canHoverZone,body.balls2048-open #exportHoverZone,body.balls2048-open #gameHoverZone{pointer-events:none!important;}
body.balls2048-open .cat-game,body.balls2048-open #catPhone,body.balls2048-open #catCan,body.balls2048-open #catExport{opacity:0!important;visibility:hidden!important;}
@media(max-width:700px){.balls2048-frame-dialog{width:100vw;height:100vh;border-radius:0}.balls2048-shell{padding:0}.balls2048-frame-title{font-size:14px}}
