
/* Rizo.game launch layer: install onboarding, legal footer, and ad presentation. */
:root{--launch-cyan:#16c8ff;--launch-ink:#07090d;--launch-cream:#f5f0df}
.install-gate[hidden]{display:none!important}
.install-gate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) 14px max(18px,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 12%,rgba(22,200,255,.2),transparent 34%),rgba(4,6,9,.97);backdrop-filter:blur(12px);overflow:auto}
.install-card{width:min(100%,470px);border:1px solid #35414e;border-radius:28px;background:linear-gradient(160deg,#171d26,#0b0e13 64%);box-shadow:0 28px 80px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.08);padding:18px;color:var(--launch-cream);text-align:center}
.install-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:9px}.install-brand img{width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 0 12px rgba(22,200,255,.32))}.install-brand b{font-size:20px;letter-spacing:.08em}.install-brand small{display:block;color:#9ba8b7;font-size:8px;letter-spacing:.12em;margin-top:3px}
.install-card h1{font-size:22px;line-height:1.08;margin:10px 0 7px;letter-spacing:.04em}.install-card>p{font-size:10px;line-height:1.55;color:#aab4c1;margin:0 auto 13px;max-width:370px}
.install-benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:13px 0}.install-benefits div{border:1px solid #2c3743;background:#0b1016;border-radius:12px;padding:10px 5px}.install-benefits b{display:block;font-size:17px}.install-benefits span{display:block;font-size:7px;color:#9ca8b5;margin-top:4px}
.install-steps{border:1px solid #2b3743;background:#0a0e13;border-radius:15px;padding:11px;text-align:left;margin:11px 0}.install-steps strong{font-size:9px;color:var(--launch-cyan);letter-spacing:.08em}.install-steps ol{padding-left:20px;margin:7px 0 0}.install-steps li{font-size:9px;line-height:1.55;color:#c6ced7}
.install-actions{display:grid;gap:8px;margin-top:12px}.install-primary,.install-secondary{border-radius:14px;padding:13px 12px;font:1000 10px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;cursor:pointer}.install-primary{border:1px solid #55ddff;background:linear-gradient(180deg,#18bfe9,#087c9b);color:white;box-shadow:0 5px 0 #054b5d}.install-primary:active{transform:translateY(4px);box-shadow:0 1px 0 #054b5d}.install-secondary{border:1px solid #384452;background:#1b222c;color:#d9e0e7}.install-meta{font-size:7px!important;color:#74808d!important;margin-top:12px!important}.install-meta a{color:#a8eaff}
.install-status{display:inline-flex;align-items:center;gap:6px;border:1px solid #2f3c48;background:#0a0f14;border-radius:999px;padding:6px 9px;font-size:7px;color:#aab4bf}.install-status i{width:7px;height:7px;border-radius:50%;background:#66ff8c;box-shadow:0 0 9px #66ff8c}
.ad-slot.rizo-ad-live{display:block!important;min-height:90px;padding:8px 7px 10px;border-style:solid;background:#0c1117}.rizo-sponsored-label{font-size:6px;letter-spacing:.13em;color:#7d8793;text-align:center;margin:0 0 6px}.rizo-ad-placeholder{min-height:72px;display:grid;place-items:center;border:1px dashed #3a4654;border-radius:11px;color:#7f8b98;font-size:8px;text-align:center;padding:12px}.rizo-ad-error{font-size:7px;color:#ff8c98;text-align:center;padding:8px}
.rizo-legal-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:9px}.rizo-legal-links a{font-size:7px;color:#8da1b4;text-decoration:none}.rizo-legal-links a:hover{color:#fff}
@media(max-height:680px){.install-card{padding:13px}.install-benefits{display:none}.install-card h1{font-size:18px}.install-steps{margin:8px 0}.install-actions{margin-top:8px}}


/* QA HARDENING — mobile ergonomics, safe scrolling, and overlay isolation. */
html{scroll-padding-bottom:calc(112px + env(safe-area-inset-bottom));max-width:100%;overflow-x:clip}
body{max-width:100%;overflow-x:clip}
html.ui-locked,body.ui-locked{overflow:hidden!important;overscroll-behavior:none!important}
button,a,input{touch-action:manipulation}
.install-gate,.bottom-sheet,.modal-overlay,.minigame-overlay{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.bottom-sheet,.modal-overlay,.minigame-overlay{overflow-y:auto}
.bottom-sheet{scrollbar-gutter:stable;max-height:min(88dvh,800px)}
.modal-overlay{align-items:safe center;justify-items:center}
.modal-card{margin:auto}
.game-shell{padding-bottom:calc(112px + var(--safe-bottom))}
.bottom-nav button{min-height:52px}
.scene-menu-button,.tutorial-banner button,.bottom-sheet header>button{min-width:44px!important;min-height:44px!important}
.story-next,.story-choice,.install-primary,.install-secondary,.settings-actions button,.wide-button,.ghost-button{min-height:44px}
.store-pill,.daily-gift,.brand-button{min-height:40px}
.sheet-card>a.sheet-action-link{display:inline-grid;place-items:center;min-width:65px;min-height:38px;border:1px solid #3d4856;background:#252d38;border-radius:10px;padding:9px 8px;color:inherit;text-decoration:none;font-size:8px;font-weight:1000}
.mini-arena{height:clamp(240px,63dvh,520px)!important;min-height:0!important}
@media(max-width:370px){
  .game-shell{padding-left:9px;padding-right:9px}
  .game-header{gap:5px}
  .header-right{gap:4px}
  .brand-button{gap:5px;min-width:0}
  .brand-button img{width:31px;height:31px}
  .brand-button strong{font-size:12px;letter-spacing:.09em}
  .brand-button em{font-size:6px}
  .brand-button small{display:none}
  .currency-pill{padding:0 7px}
  .currency-pill b{font-size:10px;max-width:54px;overflow:hidden;text-overflow:ellipsis}
  .store-pill{min-width:38px;padding:0 6px;font-size:7px}
  .daily-gift{min-width:39px;padding:0 6px}
  .sheet-card,.shop-item{grid-template-columns:44px minmax(0,1fr) auto;gap:7px;padding:8px}
  .sheet-card-icon,.shop-item-icon{width:43px;height:43px}
}
@media(max-height:560px) and (orientation:landscape){
  .game-shell{padding-top:8px}
  .minigame-shell header{margin-bottom:6px}
  .minigame-shell header h2{font-size:16px}
  .minigame-shell>p{margin:6px 0}
  .mini-arena{height:55dvh!important}
}

/* Comfortable tap targets without changing the compact retro look. */
.text-button,#moreCareButton,#journalJump,.game-card>button,.profile-card>button,
.shop-tabs button,.journal-tabs button,.shop-item button,.sheet-card button{
  min-height:40px;
}
.brand-drop-card a,.settings-board .wide-button{min-height:44px;display:grid!important;place-items:center}
.install-meta a{display:inline-flex;align-items:center;min-height:30px;padding:0 3px}
#moreCareButton{min-width:44px}
.real-shop-banner a{min-height:44px;display:grid;place-items:center}
.install-meta a{min-width:36px;justify-content:center}
.install-meta a{min-height:36px}


/* FINAL BETA POLISH — clearer actions, calmer notifications, faster-feeling UI. */
.toast-stack{top:auto!important;bottom:calc(88px + var(--safe-bottom));align-content:end}
.toast{padding:9px 11px}
.need-card.actionable-need:not(:disabled){cursor:pointer}
.need-card.actionable-need:not(:disabled)::after{content:"›";position:absolute;right:8px;top:7px;color:#657286;font-size:13px;font-weight:1000}
.need-card.actionable-need:not(:disabled):active{transform:translateY(1px);border-color:#4a5c6e;background:#18202a}
.need-card:disabled{cursor:default}
.shop-item button:disabled.owned{opacity:.72;color:#a8f0ff;border-color:#2e6b7c}
@media(max-height:620px){.toast-stack{bottom:calc(76px + var(--safe-bottom))}}
/* Keep the daily reward action comfortably tappable on every phone. */
.quest-card > button{min-width:44px;min-height:40px;padding:9px 10px}

/* INTUITIVE FINAL PASS: show the best next action without flattening the retro UI. */
.care-action.recommended{position:relative;border-color:#8cecff;box-shadow:0 0 0 2px rgba(22,200,255,.16),0 5px 0 #090b0f,inset 0 1px 0 rgba(255,255,255,.11)}
.care-action.recommended::after{content:"NOW";position:absolute;right:5px;top:5px;border-radius:999px;padding:2px 4px;background:var(--cyan);color:#061117;font-size:5px;font-weight:1000;letter-spacing:.08em}
.short-on-embers:not(:disabled){opacity:.62;filter:saturate(.72);cursor:pointer}
.short-on-embers:not(:disabled):active{opacity:1;filter:none}
.quest-card>button.locked{opacity:.72;background:#302a19;color:#c9b968;animation:none}
.quest-card>button.claimed{opacity:.55;background:#20262d;color:#8c96a3;border-color:#3c4652;animation:none}

/* GARDEN UPDATE — growth, autonomous behavior, distinct games, music-era polish. */
.pet-actor.stage-spark{transform:scale(.50)}
.pet-actor.stage-kid{transform:scale(.66)}
.pet-actor.stage-teen{transform:scale(.82)}
.pet-actor.stage-beast{transform:scale(.99)}
.pet-actor.stage-legend{transform:scale(1.13)}
.pet-actor.stage-spark.sleeping{transform:translateY(19px) scale(.44) rotate(-6deg)}
.pet-actor.stage-kid.sleeping{transform:translateY(19px) scale(.58) rotate(-6deg)}
.pet-actor.stage-teen.sleeping{transform:translateY(19px) scale(.72) rotate(-6deg)}
.pet-actor.stage-beast.sleeping{transform:translateY(19px) scale(.87) rotate(-6deg)}
.pet-actor.stage-legend.sleeping{transform:translateY(19px) scale(.99) rotate(-6deg)}
.pet-actor.stage-spark.sad{transform:translateY(7px) scale(.45)}
.pet-actor.stage-kid.sad{transform:translateY(7px) scale(.59)}
.pet-actor.stage-teen.sad{transform:translateY(7px) scale(.74)}
.pet-actor.stage-beast.sad{transform:translateY(7px) scale(.89)}
.pet-actor.stage-legend.sad{transform:translateY(7px) scale(1.02)}

/* The pet occasionally lives its own life in the den. */
.pet-actor.behavior-wander-left{animation:petWanderLeft 3.4s ease-in-out both}
.pet-actor.behavior-wander-right{animation:petWanderRight 3.4s ease-in-out both}
.pet-actor.behavior-hide{animation:petHide 4.3s ease-in-out both;z-index:2}
.pet-actor.behavior-window{animation:petWindow 3.4s ease-in-out both}
.pet-actor.behavior-ball{animation:petBall 3.4s ease-in-out both}
.pet-actor.behavior-dance img{animation:petDance .42s ease-in-out 7!important}
.pet-actor.behavior-zoomies{animation:petZoomies 2.6s cubic-bezier(.3,.8,.3,1) both}
.pet-actor.behavior-stretch img{animation:petStretch 1.1s ease-in-out 3!important}
@keyframes petWanderLeft{0%,100%{transform:translateX(0) scale(var(--life-scale,1))}45%{transform:translateX(-92px) scale(var(--life-scale,1)) rotate(-4deg)}70%{transform:translateX(-72px) scale(var(--life-scale,1)) rotate(3deg)}}
@keyframes petWanderRight{0%,100%{transform:translateX(0) scale(var(--life-scale,1))}45%{transform:translateX(92px) scale(var(--life-scale,1)) rotate(4deg)}70%{transform:translateX(72px) scale(var(--life-scale,1)) rotate(-3deg)}}
@keyframes petHide{0%,100%{transform:translate(0,0) scale(var(--life-scale,1));opacity:1}36%{transform:translate(122px,28px) scale(var(--life-scale,1));opacity:1}52%,78%{transform:translate(142px,58px) scale(var(--life-scale,1));opacity:.22}88%{transform:translate(108px,20px) scale(var(--life-scale,1));opacity:1}}
@keyframes petWindow{0%,100%{transform:translate(0,0) scale(var(--life-scale,1))}40%,74%{transform:translate(-88px,-35px) scale(var(--life-scale,1)) rotate(-7deg)}}
@keyframes petBall{0%,100%{transform:translate(0,0) scale(var(--life-scale,1))}28%{transform:translate(-110px,35px) scale(var(--life-scale,1)) rotate(-8deg)}55%{transform:translate(-60px,12px) scale(var(--life-scale,1)) rotate(8deg)}78%{transform:translate(-118px,28px) scale(var(--life-scale,1)) rotate(-5deg)}}
@keyframes petDance{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-16px) rotate(7deg) scale(1.04,.96)}}
@keyframes petZoomies{0%,100%{transform:translateX(0) scale(var(--life-scale,1))}18%{transform:translateX(-130px) scale(var(--life-scale,1)) rotate(-8deg)}38%{transform:translateX(132px) scale(var(--life-scale,1)) rotate(9deg)}58%{transform:translateX(-90px) scale(var(--life-scale,1)) rotate(-7deg)}78%{transform:translateX(86px) scale(var(--life-scale,1)) rotate(7deg)}}
@keyframes petStretch{0%,100%{transform:scale(1)}50%{transform:scale(1.1,.82) translateY(11px)}}

/* New cosmetic silhouettes. They remain pure CSS so every color Rizo can wear them. */
.accessory-layer.cap:before{content:"";position:absolute;left:28%;top:10%;width:45%;height:24%;background:#131923;border:7px solid #080b0f;border-radius:55% 55% 22% 22%;transform:rotate(-6deg)}
.accessory-layer.cap:after{content:"";position:absolute;left:53%;top:29%;width:28%;height:7%;background:#16c8ff;border:5px solid #080b0f;border-radius:0 50% 50% 0;transform:rotate(-9deg)}
.accessory-layer.bow:before,.accessory-layer.bow:after{content:"";position:absolute;top:15%;width:24%;height:22%;background:#ff68bd;border:6px solid #080b0f;clip-path:polygon(0 0,100% 50%,0 100%)}
.accessory-layer.bow:before{left:25%}.accessory-layer.bow:after{right:25%;transform:scaleX(-1)}
.accessory-layer.goggles:before{content:"";position:absolute;left:25%;top:41%;width:50%;height:18%;border:7px solid #0a0e13;border-radius:10px;background:radial-gradient(circle at 24% 50%,#8df4ff 0 26%,#12202b 27% 35%,transparent 36%),radial-gradient(circle at 76% 50%,#8df4ff 0 26%,#12202b 27% 35%,transparent 36%)}
.accessory-layer.antenna:before{content:"";position:absolute;left:48%;top:0;width:7px;height:28%;background:#11151c;border-radius:8px;transform:rotate(-5deg)}
.accessory-layer.antenna:after{content:"";position:absolute;left:43%;top:-3%;width:18%;height:12%;border-radius:50%;background:#16c8ff;border:5px solid #080b0f;box-shadow:0 0 14px #16c8ff}
.accessory-layer.leafcrown:before{content:"❧ ❧ ❧";position:absolute;left:24%;top:6%;font-size:34px;color:#9eff75;text-shadow:2px 3px 0 #08120d;letter-spacing:-10px;transform:rotate(-5deg)}
.accessory-layer.visor:before{content:"";position:absolute;left:24%;top:39%;width:52%;height:20%;background:linear-gradient(110deg,#09364a,#31eaff 48%,#fff 52%,#126e8a);border:7px solid #070b10;border-radius:45% 45% 32% 32%;transform:rotate(-2deg)}
.accessory-layer.cape:before{content:"";position:absolute;z-index:-1;right:7%;top:38%;width:40%;height:48%;background:#ff4f62;border:7px solid #080b0f;clip-path:polygon(0 0,100% 13%,75% 100%,18% 82%);transform:rotate(-10deg)}
.accessory-layer.backpack:before{content:"";position:absolute;z-index:-1;right:2%;top:39%;width:35%;height:40%;background:#75552e;border:7px solid #080b0f;border-radius:20% 40% 38% 20%;box-shadow:inset 0 12px 0 rgba(255,255,255,.08)}
.accessory-layer.starclip:before{content:"★";position:absolute;right:24%;top:14%;font-size:43px;color:#ffd45a;text-shadow:2px 3px 0 #080b0f}
.accessory-layer.mask:before{content:"";position:absolute;left:25%;top:41%;width:50%;height:18%;background:#171b26;border:6px solid #080b0f;clip-path:polygon(0 0,48% 30%,100% 0,89% 100%,53% 71%,10% 100%)}
.accessory-layer.earmuffs:before{content:"";position:absolute;left:22%;top:33%;width:56%;height:27%;border:8px solid #d9f9ff;border-bottom:0;border-radius:50% 50% 0 0}
.accessory-layer.earmuffs:after{content:"";position:absolute;left:18%;top:49%;width:20%;height:24%;background:#d9f9ff;border:6px solid #080b0f;border-radius:50%;box-shadow:165px 0 0 -6px #d9f9ff,165px 0 0 0 #080b0f}
.accessory-layer.bucket:before{content:"";position:absolute;left:26%;top:9%;width:48%;height:29%;background:#4e86a6;border:7px solid #080b0f;border-radius:50% 50% 25% 25%;clip-path:polygon(15% 0,85% 0,100% 100%,0 100%)}
.accessory-layer.bucket:after{content:"";position:absolute;left:20%;top:32%;width:61%;height:8%;background:#4e86a6;border:5px solid #080b0f;border-radius:50%}

.theme-sunset .habitat-sky{background:radial-gradient(circle at 73% 20%,#fff0a3 0 28px,transparent 29px),linear-gradient(180deg,#fb7f77,#7e4e95 58%,#55466a 58.5%,#302e45)}
.theme-sunset .habitat-floor{background:linear-gradient(#725844,#40382f)}
.theme-snow .habitat-sky{background:radial-gradient(circle at 18% 22%,#fff 0 2px,transparent 3px),radial-gradient(circle at 65% 18%,#fff 0 3px,transparent 4px),linear-gradient(#7fb9d5,#d8f2f5 60%,#dce8e8 60.5%,#abbfc2);background-size:42px 42px,61px 61px,100% 100%}
.theme-snow .habitat-floor{background:linear-gradient(#eefbff,#b9d2d8)}
.theme-space .habitat-sky{background:radial-gradient(circle at 70% 18%,#e4faff 0 22px,transparent 23px),radial-gradient(circle at 30% 32%,#16c8ff 0 2px,transparent 3px),radial-gradient(circle at 80% 43%,#fff 0 1px,transparent 2px),linear-gradient(#080b20,#15183e 60%,#11142b 60.5%,#080a18);background-size:100% 100%,47px 47px,31px 31px,100% 100%}
.theme-space .habitat-floor{background:linear-gradient(#252946,#111426)}
.theme-studio .habitat-sky{background:linear-gradient(90deg,rgba(22,200,255,.08) 1px,transparent 1px),linear-gradient(#1a1722,#2a1d31 60%,#18151e 60.5%,#0f0d13);background-size:32px 32px,100% 100%}
.theme-studio .habitat-window{background:linear-gradient(135deg,#ff68bd,#16c8ff);box-shadow:0 0 24px rgba(255,104,189,.32)}

/* Random event presentation. */
.world-event-card>small{display:block;color:var(--cyan);font-size:8px;letter-spacing:.13em;margin-bottom:8px}
.event-stage{height:155px;border:1px solid #34404d;border-radius:18px;background:radial-gradient(circle at 50% 55%,rgba(22,200,255,.18),transparent 42%),linear-gradient(#151c27,#0b0f15);position:relative;overflow:hidden;display:grid;place-items:center;margin-bottom:12px}
.event-stage img{width:145px;height:145px;object-fit:contain;filter:drop-shadow(0 10px 0 rgba(0,0,0,.22));animation:rizoIdle 2s ease-in-out infinite}
.event-icon{position:absolute;right:16px;top:13px;font-size:42px;z-index:2;filter:drop-shadow(0 5px 0 rgba(0,0,0,.25))}
.event-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.event-choices button{min-height:48px;border:1px solid #41505f;background:#222b37;border-radius:13px;font-size:9px;font-weight:1000;padding:10px}.event-choices button:first-child{border-color:#1788a7;background:#0d5e75}
.event-reward{margin:10px 0;border:1px solid #8c7426;background:#3a3116;color:#ffe887;border-radius:12px;padding:10px;font-size:9px;font-weight:1000}

/* Walk treasure shelf. */
.treasure-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.treasure-card{min-height:105px;border:1px solid #2d3743;background:#11161d;border-radius:15px;padding:12px;display:grid;place-items:center;text-align:center;gap:5px}.treasure-card b{font-size:30px;color:var(--gold)}.treasure-card strong{font-size:8px}.treasure-card span{font-size:6px;color:var(--muted)}.treasure-card.locked{opacity:.34;filter:grayscale(1)}

/* Arcade cards and score layout accommodate the added walk. */
.walk-art{background:linear-gradient(145deg,#2d5360,#15252a)}
.score-grid{grid-template-columns:repeat(3,1fr)}

/* Shared actual-Rizo mini game actor. */
.mini-arena{touch-action:none;user-select:none;-webkit-user-select:none;background:#0a0e14!important}
.mini-world{position:absolute;inset:0;overflow:hidden;border-radius:20px}
.mini-pet{position:absolute;width:132px;height:132px;display:grid;place-items:center;transform-origin:50% 80%;z-index:12;transition:left .18s ease,top .18s ease,filter .2s}
.mini-pet img{position:relative;z-index:3;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 0 rgba(0,0,0,.2));pointer-events:none}
.mini-pet .accessory-layer{z-index:5}.mini-pet-shadow{position:absolute;left:19%;right:19%;bottom:11px;height:20px;border-radius:50%;background:rgba(0,0,0,.25);filter:blur(3px)}
.mini-pet.stage-spark{width:82px;height:82px}.mini-pet.stage-kid{width:101px;height:101px}.mini-pet.stage-teen{width:118px;height:118px}.mini-pet.stage-beast{width:137px;height:137px}.mini-pet.stage-legend{width:148px;height:148px}

/* Power Tap is a timing game, not a moving circle. */
.power-world{background:radial-gradient(circle at 25% 30%,rgba(255,92,108,.17),transparent 28%),linear-gradient(#2a1820 0 72%,#171116 72%)}
.training-floor{position:absolute;left:0;right:0;bottom:0;height:29%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 2px,transparent 2px 42px),#191319;border-top:3px solid #3b2730}
.power-rizo{left:12%;bottom:76px}.training-bag{position:absolute;right:17%;bottom:93px;width:74px;height:175px;border-radius:40px 40px 22px 22px;background:linear-gradient(90deg,#7d2835,#d14d5f 45%,#7a2632);border:7px solid #080b10;transform-origin:50% 8%;display:grid;place-items:center;z-index:8}.training-bag:before{content:"";position:absolute;top:-78px;width:8px;height:82px;background:#222b35;border:2px solid #070a0e}.training-bag i{position:absolute;top:34%;left:13%;right:13%;height:6px;background:#080b10}.training-bag b{font-size:31px;color:#ffd45a}.training-bag.bag-hit{animation:bagHit .35s ease-out}.power-rizo.mini-punch{animation:miniPunch .35s ease-out}
.timing-console{position:absolute;left:12px;right:12px;bottom:14px;z-index:20}.timing-track{height:28px;border:4px solid #080b10;background:#252d38;border-radius:999px;position:relative;overflow:hidden;box-shadow:inset 0 5px 10px rgba(0,0,0,.35)}.timing-perfect{position:absolute;left:43%;width:14%;top:0;bottom:0;background:linear-gradient(90deg,#0e9fbe,#78ebff,#0e9fbe);box-shadow:0 0 16px #16c8ff}.timing-track b{position:absolute;top:-5px;left:0;width:11px;height:31px;border-radius:5px;background:#fff;border:3px solid #081217;transform:translateX(-50%);box-shadow:0 0 11px #fff}.timing-console strong{display:block;text-align:center;font-size:9px;margin-top:6px;color:#c7d1dc}.timing-console strong[data-grade="5"]{color:#75efff}.timing-console strong[data-grade="0"]{color:#ff8793}
@keyframes bagHit{45%{transform:rotate(17deg) translateX(8px)}100%{transform:none}}@keyframes miniPunch{45%{transform:translateX(74px) rotate(9deg) scale(1.08,.92)}100%{transform:none}}

/* Spark Catch: the pet visibly chases every spark. */
.spark-world{background:radial-gradient(circle at 50% 35%,rgba(22,200,255,.28),transparent 37%),linear-gradient(#172d3b,#0c141c 72%,#10272a 72%)}
.spark-world:after{content:"";position:absolute;left:0;right:0;bottom:0;height:28%;background:radial-gradient(ellipse at 50% 0,#2f6d55,#153d30 65%)}
.spark-rizo{left:50%;top:62%;transform:translate(-50%,-50%);z-index:9}.spark-rizo.spark-dash{filter:brightness(1.3);transition:left .12s cubic-bezier(.2,.8,.2,1),top .12s cubic-bezier(.2,.8,.2,1)}
.spark-orb{position:absolute;width:64px;height:64px;border:4px solid #061015;border-radius:50%;background:radial-gradient(circle,#fff 0 10%,#77edff 12% 40%,#0b8eb3 42% 70%,#06394c 72%);color:#fff;font-size:29px;display:grid;place-items:center;z-index:15;box-shadow:0 0 0 8px rgba(22,200,255,.15),0 0 30px rgba(22,200,255,.75);animation:sparkBob .75s ease-in-out infinite alternate}.spark-trail{position:absolute;left:50%;top:18%;z-index:18;color:#fff;font-size:24px;font-weight:1000;opacity:0}.spark-trail.pop{animation:sparkScore .5s ease-out}
@keyframes sparkBob{to{transform:translateY(-8px) rotate(12deg)}}@keyframes sparkScore{0%{opacity:0;transform:translate(-50%,20px) scale(.5)}35%{opacity:1}100%{opacity:0;transform:translate(-50%,-45px) scale(1.4)}}

/* Forest Forage: three-lane catching. */
.forage-world{background:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(#315e42,#183825 74%,#1d2c19 74%);background-size:28px 28px,28px 28px,100% 100%}
.forage-lanes{position:absolute;inset:0}.forage-lanes i{position:absolute;top:0;bottom:0;width:2px;background:linear-gradient(transparent,rgba(255,255,255,.16),transparent)}.forage-lanes i:first-child{left:33.33%}.forage-lanes i:last-child{left:66.66%}.forage-rizo{left:50%;bottom:35px;transform:translateX(-50%);transition:left .12s ease}.forage-drop{position:absolute;top:0;width:48px;height:48px;margin-left:-24px;border-radius:50%;display:grid;place-items:center;font-size:29px;z-index:16;filter:drop-shadow(0 7px 0 rgba(0,0,0,.22))}.forage-drop.good{background:#e9f9ce;border:4px solid #163421}.forage-drop.bad{background:#ff7b88;border:4px solid #3f1117}.forage-drop.rare{box-shadow:0 0 22px #a4f6ff}.forage-drop.caught{animation:itemCaught .16s ease-out forwards}.forage-rizo.forage-catch img{animation:forageCatch .2s ease-out}.forage-rizo.forage-hit img{animation:headNo .32s ease-out}.lane-labels{position:absolute;left:0;right:0;bottom:5px;display:grid;grid-template-columns:repeat(3,1fr);font-size:6px;color:rgba(255,255,255,.45);text-align:center;letter-spacing:.1em}
@keyframes itemCaught{to{opacity:0;transform:translate(-50%,30px) scale(1.7)}}@keyframes forageCatch{50%{transform:translateY(-16px) scale(1.08,.92)}}

/* Rizo Rush: tiny side-scrolling runner. */
.rush-world{background:linear-gradient(#3e5a81 0 58%,#263b5a 58% 72%,#192433 72%);isolation:isolate}
.rush-clouds,.rush-hills,.rush-ground{position:absolute;left:0;right:0;pointer-events:none}.rush-clouds{top:20px;height:100px;background:radial-gradient(ellipse at 20% 35%,rgba(255,255,255,.6) 0 10%,transparent 11%),radial-gradient(ellipse at 75% 55%,rgba(255,255,255,.45) 0 13%,transparent 14%);background-size:230px 90px;animation:rushScroll 7s linear infinite}.rush-hills{bottom:28%;height:32%;background:linear-gradient(135deg,transparent 0 30%,#273c55 31% 48%,transparent 49%) 0 0/160px 100%;animation:rushScroll 4s linear infinite}.rush-ground{bottom:0;height:29%;background:repeating-linear-gradient(90deg,#31462d 0 28px,#283c25 28px 56px);border-top:6px solid #6b8f50;animation:rushScroll 1.3s linear infinite}.rush-rizo{left:14%;bottom:45px;transform:translateY(calc(-1 * var(--jump-y,0px)));transition:filter .15s;z-index:15}.rush-rizo img{animation:rushRun .28s ease-in-out infinite}.rush-rizo.rush-hurt{filter:brightness(2) sepia(1);animation:rushHurt .5s steps(2)}.rush-entity{position:absolute;left:0;z-index:14}.rush-entity.stump{bottom:48px;width:48px;height:55px;background:#75492d;border:5px solid #1b100b;border-radius:8px 8px 16px 16px;box-shadow:inset 0 8px 0 #9a6741}.rush-entity.flame{bottom:93px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#16c8ff;border:4px solid #071219;color:#fff;font-size:24px;box-shadow:0 0 20px #16c8ff}.rush-entity.flame.collected{animation:itemCaught .18s ease-out forwards}.rush-hearts{position:absolute;left:12px;top:10px;color:#ff5c6c;font-size:20px;letter-spacing:4px;z-index:20;text-shadow:2px 2px 0 #090b0f}.rush-callout{position:absolute;right:12px;top:13px;font-size:7px;font-weight:1000;color:rgba(255,255,255,.7);z-index:20}
@keyframes rushScroll{to{background-position-x:-230px}}@keyframes rushRun{50%{transform:translateY(-5px) rotate(2deg)}}@keyframes rushHurt{50%{opacity:.2}}

/* Rain Walk: slower exploratory loop with tappable finds. */
.walk-world{background:linear-gradient(#526c78 0 65%,#3f4a45 65%);isolation:isolate}.walk-rain{position:absolute;inset:0;background:repeating-linear-gradient(105deg,transparent 0 21px,rgba(210,240,255,.18) 22px 23px,transparent 24px 43px);animation:walkRain .8s linear infinite}.walk-trees{position:absolute;left:0;right:0;bottom:26%;height:58%;background:radial-gradient(ellipse at 20% 60%,#263e35 0 21%,transparent 22%),radial-gradient(ellipse at 65% 48%,#1c332a 0 24%,transparent 25%);background-size:240px 180px;animation:rushScroll 12s linear infinite}.walk-trees.front{opacity:.7;bottom:20%;transform:scale(1.25);animation-duration:7s}.walk-path{position:absolute;left:0;right:0;bottom:0;height:31%;background:linear-gradient(#59604f,#353b31);border-top:5px solid #73816a}.walk-rizo{left:16%;bottom:35px;animation:walkBob .52s ease-in-out infinite}.walk-find{position:absolute;left:0;bottom:82px;width:58px;height:58px;border-radius:50%;border:4px solid #091015;background:#f3efe0;font-size:29px;display:grid;place-items:center;z-index:16;box-shadow:0 9px 0 rgba(0,0,0,.2)}.walk-find.rare{background:#dffbff;box-shadow:0 0 24px #9defff,0 9px 0 rgba(0,0,0,.2)}.walk-find.mud{background:#72513b}.walk-find.collected{animation:itemCaught .22s ease-out forwards}.walk-caption{position:absolute;left:12px;right:12px;top:12px;padding:8px;border-radius:10px;background:rgba(7,10,14,.65);border:1px solid rgba(255,255,255,.13);z-index:20;text-align:center;font-size:7px;font-weight:1000;color:#dbe4e9}.walk-rizo.walk-inspect img{animation:happyJump .42s ease-out}.walk-rizo.walk-splash img{animation:headNo .45s ease-out;filter:hue-rotate(35deg) saturate(.65)}
.walk-fork{position:absolute;left:10px;right:10px;bottom:14px;z-index:22;display:grid;gap:8px;animation:walkForkIn .3s ease-out both}
.walk-fork-btn{display:flex;flex-direction:column;gap:2px;padding:11px 12px;border-radius:13px;border:2px solid #16c8ff;background:rgba(9,13,18,.88);color:#eef6f9;text-align:left}
.walk-fork-btn:last-child{border-color:#ff68bd}
.walk-fork-btn b{font-size:10px;letter-spacing:.02em}
.walk-fork-btn span{font-size:7px;color:#a9b6bf;font-weight:600}
@keyframes walkForkIn{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}
.reduce-motion .walk-fork{animation:none}
@keyframes walkRain{to{background-position:-43px 80px}}@keyframes walkBob{50%{transform:translateY(-6px) rotate(2deg)}}

@media(max-width:370px){
  .mini-pet{width:112px;height:112px}.mini-pet.stage-spark{width:72px;height:72px}.mini-pet.stage-kid{width:88px;height:88px}.mini-pet.stage-legend{width:130px;height:130px}
  .training-bag{right:11%;width:65px;height:155px}.power-rizo{left:7%}
  .event-choices{grid-template-columns:1fr}.event-stage{height:132px}.event-stage img{width:122px;height:122px}
  .treasure-grid{grid-template-columns:1fr 1fr}
}
@media(max-height:620px){
  .timing-console{bottom:7px}.training-bag{height:130px;bottom:70px}.power-rizo{bottom:55px}
  .walk-find{bottom:64px}.walk-rizo{bottom:22px}.rush-rizo{bottom:30px}.rush-entity.stump{bottom:34px}.rush-entity.flame{bottom:78px}
}
body.reduce-motion .pet-actor[class*="behavior-"]{animation:none!important}
body.reduce-motion .rush-clouds,body.reduce-motion .rush-hills,body.reduce-motion .rush-ground,body.reduce-motion .walk-rain,body.reduce-motion .walk-trees{animation:none!important}


/* ===== TRUE GARDEN PASS: lineage, inheritance and raising clarity ===== */
.raising-influences{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}
.raising-influences span{min-width:0;border:1px solid #2d3947;background:#111720;border-radius:11px;padding:9px;color:#e9f2f5;font-size:8px;line-height:1.35;overflow-wrap:anywhere}
.raising-influences b{display:block;color:var(--muted);font-size:6px;letter-spacing:.1em;margin-bottom:4px}
.bond-seed-mini,.pairing-card,.bond-seed-card{border:1px solid #6150a1;background:linear-gradient(135deg,rgba(121,84,255,.18),rgba(22,200,255,.07));border-radius:13px;padding:11px;margin-top:10px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.bond-seed-mini b,.pairing-card>span,.bond-seed-card>span{display:block;color:#b9aaff;font-size:7px;letter-spacing:.12em;margin-bottom:5px}
.bond-seed-mini span,.pairing-card>b,.bond-seed-card>b{display:block;font-size:10px;color:#fff;margin-bottom:4px}
.bond-seed-mini small,.pairing-card small,.bond-seed-card small{display:block;color:#aab4c0;font-size:8px;line-height:1.45}
.pairing-card button,.bond-seed-card button{width:100%;min-height:42px;margin-top:9px;border:1px solid #6e63b1;background:#30275b;color:#fff;border-radius:10px;font-size:8px;font-weight:1000}
.legacy-modal .gene-preview{margin-bottom:7px}
.collection-card.variant-retro img{image-rendering:pixelated;filter:drop-shadow(0 0 10px rgba(22,200,255,.35))}
.collection-card.variant-shadow img{filter:drop-shadow(0 0 14px rgba(121,84,255,.55))}
.collection-card.resonating{outline:2px solid #79eaff;box-shadow:0 0 22px rgba(22,200,255,.18)}

/* Moving targets begin inside the playable area and remain easy to hit on narrow phones. */
.walk-find{will-change:transform;touch-action:manipulation}
@media(max-width:350px){
  .raising-influences{grid-template-columns:1fr}
  .walk-find{width:54px;height:54px;font-size:26px}
  .pairing-card,.bond-seed-card,.bond-seed-mini{padding:9px}
}

/* ======================================================================
   FINAL OVERHAUL PASS — exploration, new games, cutscenes, premium previews
   Every pet shown below is still produced by game.js's central renderer.
   ====================================================================== */

.rhythm-art{background:linear-gradient(145deg,#4a285f,#16152b)}
.memory-art{background:linear-gradient(145deg,#365e4b,#121f1a)}
.rhythm-card{border-color:#8a5fb4}.memory-card{border-color:#4d8069}

/* Real walk: layers are moved independently from updateWalkGame(). */
.walk-world{--walk-sky:#526c78;background:linear-gradient(var(--walk-sky) 0 68%,#303a33 68%);isolation:isolate}
.walk-sky{position:absolute;inset:0;background:radial-gradient(circle at 75% 18%,rgba(246,244,207,.5) 0 24px,transparent 25px),linear-gradient(180deg,rgba(255,255,255,.06),transparent 55%)}
.walk-layer{position:absolute;left:-25%;right:-25%;pointer-events:none;background-repeat:repeat-x;will-change:background-position}
.walk-far{bottom:28%;height:58%;opacity:.52;background-image:radial-gradient(ellipse at 45px 82%,#24392f 0 26px,transparent 28px),radial-gradient(ellipse at 120px 68%,#2d493b 0 39px,transparent 41px);background-size:190px 150px}
.walk-mid{bottom:23%;height:55%;opacity:.82;background-image:linear-gradient(87deg,transparent 0 42px,#1d3027 43px 54px,transparent 55px),radial-gradient(ellipse at 88px 62%,#1f3a2d 0 43px,transparent 45px);background-size:170px 170px}
.walk-near{bottom:19%;height:42%;opacity:.92;background-image:radial-gradient(ellipse at 38px 88%,#12251d 0 30px,transparent 32px),linear-gradient(88deg,transparent 0 112px,#14291f 113px 129px,transparent 130px);background-size:205px 135px;filter:blur(.2px)}
.walk-path{height:32%;background:linear-gradient(180deg,#77806c,#454b3e 50%,#292f28);border-top:5px solid rgba(196,217,177,.55);box-shadow:inset 0 12px 28px rgba(0,0,0,.18)}
.walk-path:after{content:"";position:absolute;inset:18px 0 0;background:repeating-linear-gradient(105deg,transparent 0 66px,rgba(255,255,255,.055) 67px 73px,transparent 74px 142px)}
.walk-weather{position:absolute;inset:-20%;z-index:8;pointer-events:none}
.weather-drizzle .walk-weather{background:repeating-linear-gradient(105deg,transparent 0 24px,rgba(210,240,255,.23) 25px 27px,transparent 28px 49px);animation:walkRain .72s linear infinite}
.weather-mist .walk-weather{background:radial-gradient(ellipse at 20% 45%,rgba(220,240,239,.24),transparent 42%),radial-gradient(ellipse at 72% 66%,rgba(220,240,239,.2),transparent 45%);animation:mistDrift 5s ease-in-out infinite alternate}
.weather-storm .walk-weather{background:repeating-linear-gradient(106deg,transparent 0 14px,rgba(220,242,255,.34) 15px 17px,transparent 18px 34px);animation:walkRain .42s linear infinite}.weather-storm.walk-world:after{content:"";position:absolute;inset:0;background:rgba(220,240,255,0);animation:stormFlash 4.8s steps(1) infinite;pointer-events:none;z-index:7}
.weather-clear .walk-weather{background:radial-gradient(circle at 18% 20%,rgba(255,245,178,.15),transparent 28%)}
.biome-rain{--walk-sky:#536d7a}.biome-moss{--walk-sky:#497b62}.biome-moon{--walk-sky:#30375f}.biome-storm{--walk-sky:#354258}
.biome-moss .walk-far{filter:hue-rotate(-10deg) saturate(1.25)}.biome-moss .walk-path{background:linear-gradient(#66795d,#344a35,#233024)}
.biome-moon .walk-sky{background:radial-gradient(circle at 76% 15%,#f6efc4 0 23px,rgba(246,239,196,.15) 24px 44px,transparent 45px),linear-gradient(180deg,#30375f,#1a213f 70%)}.biome-moon .walk-layer{filter:hue-rotate(36deg) brightness(.72)}.biome-moon .walk-path{background:linear-gradient(#4c4f68,#292d42,#1a1d2d)}
.biome-storm .walk-layer{filter:saturate(.65) brightness(.72)}.biome-storm .walk-path{background:linear-gradient(#535c5d,#30383a,#202629)}
.walk-rizo{left:15%;bottom:35px;animation:rizoWalkCycle .58s ease-in-out infinite;transition:filter .18s}.walk-rizo img{transform-origin:50% 80%}.walk-rizo .accessory-layer{transform-origin:50% 80%}
.walk-distance{position:absolute;left:12px;right:12px;bottom:8px;height:5px;background:rgba(0,0,0,.28);border-radius:99px;overflow:hidden;z-index:24}.walk-distance i{display:block;height:100%;width:0;background:linear-gradient(90deg,#16c8ff,#9eff75);transition:width .15s linear}
.walk-caption{display:grid;gap:2px;left:12px;right:12px;top:10px;padding:8px 10px}.walk-caption b{font-size:7px;color:#8ceeff;letter-spacing:.13em}.walk-caption span{font-size:7px;color:#fff}
.walk-find{left:auto;bottom:74px;width:54px;height:54px;border-radius:16px;border:3px solid #091015;background:#f3efe0;transform:none;transition:filter .15s;touch-action:manipulation}.walk-find[data-lane="high"]{filter:drop-shadow(0 9px 8px rgba(0,0,0,.25))}.walk-find.rare{background:linear-gradient(145deg,#fff,#bff7ff);border-color:#72eaff;box-shadow:0 0 25px rgba(121,235,255,.74)}.walk-find.hazard{background:#72513b;border-color:#28170f}.walk-find.obstacle{background:#71472c;border-color:#24140b;color:#f0d1a5}.walk-find.collected{animation:itemCaught .22s ease-out forwards}
.walk-fork{position:absolute;inset:64px 12px 45px;z-index:32;display:grid;align-content:center;gap:9px;padding:12px;border:1px solid rgba(164,234,255,.42);border-radius:18px;background:rgba(6,10,14,.9);box-shadow:0 16px 45px rgba(0,0,0,.42);backdrop-filter:blur(10px)}.walk-fork-btn{min-height:68px;border:1px solid #3b4b58;background:linear-gradient(145deg,#1c2630,#101820);border-radius:14px;padding:11px;text-align:left;color:#fff}.walk-fork-btn b{display:block;font-size:9px;color:#8ceeff}.walk-fork-btn span{display:block;margin-top:5px;font-size:7px;color:#aab5bf;line-height:1.35}.walk-fork-btn:active{transform:scale(.98)}
.walk-rizo.walk-inspect img{animation:walkInspect .48s ease-out}.walk-rizo.walk-splash img{animation:headNo .45s ease-out;filter:hue-rotate(35deg) saturate(.65)}.walk-rizo.walk-jump{animation:walkJump .5s ease-out}.walk-rizo.walk-awe img{animation:walkAwe .55s ease-out}.walk-rizo.walk-shock img{animation:walkShock .42s steps(2)}.walk-rizo.walk-sniff img{animation:walkSniff .55s ease-in-out}.walk-rizo.walk-celebrate img{animation:happyJump .52s ease-out}
@keyframes rizoWalkCycle{0%,100%{transform:translateY(0) rotate(-1.8deg) scaleX(.98)}25%{transform:translateY(-5px) rotate(1.5deg) scaleX(1.02)}50%{transform:translateY(0) rotate(2deg) scaleX(.98)}75%{transform:translateY(-4px) rotate(-1.2deg) scaleX(1.02)}}
@keyframes walkInspect{45%{transform:translateX(22px) rotate(7deg) scale(1.06,.94)}}@keyframes walkJump{45%{transform:translateY(-58px) rotate(10deg) scale(.94,1.06)}}@keyframes walkAwe{40%{transform:translateY(-10px) scale(1.1);filter:brightness(1.45)}}@keyframes walkShock{50%{transform:translateX(6px) rotate(7deg);filter:brightness(1.7)}}@keyframes walkSniff{35%{transform:translateX(18px) rotate(9deg) scaleY(.92)}}
@keyframes mistDrift{to{transform:translateX(8%) scale(1.08)}}@keyframes stormFlash{0%,92%,96%,100%{background:rgba(220,240,255,0)}93%,95%{background:rgba(220,240,255,.26)}}

/* Rhythm game: notes move toward a fixed hit gate. */
.rhythm-world{background:radial-gradient(circle at 50% 14%,rgba(255,104,189,.26),transparent 34%),linear-gradient(#251939 0 68%,#12121c 68%)}
.rhythm-lights{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 46px,rgba(22,200,255,.06) 47px 48px);animation:rhythmLights 2s linear infinite}
.rhythm-stage{position:absolute;left:0;right:0;bottom:0;height:31%;background:repeating-linear-gradient(90deg,#17182a 0 34px,#20213a 34px 68px);border-top:4px solid #6e4c8e}
.rhythm-rizo{left:12%;bottom:61px;animation:rhythmIdle .76s ease-in-out infinite}.rhythm-rizo.rhythm-hit img{animation:rhythmDance .22s ease-out}
.rhythm-lane{position:absolute;left:0;right:0;top:82px;height:92px;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1);background:rgba(5,6,13,.36);overflow:hidden;z-index:15}.rhythm-gate{position:absolute;left:22%;top:5px;bottom:5px;width:14px;border-radius:99px;background:#effcff;box-shadow:0 0 0 8px rgba(22,200,255,.18),0 0 24px #16c8ff;transform:translateX(-50%)}
#rhythmNotes{position:absolute;inset:0}.rhythm-note{position:absolute;left:0;top:19px;width:48px;height:48px;border-radius:14px;background:linear-gradient(145deg,#ff68bd,#7544a5);border:3px solid #fff;color:#fff;display:grid;place-items:center;font-style:normal;font-size:24px;box-shadow:0 0 18px rgba(255,104,189,.5)}.rhythm-note.hit{animation:rhythmHit .2s ease-out forwards}.rhythm-note.missed{animation:rhythmMiss .2s ease-out forwards}.rhythm-callout{position:absolute;left:10px;right:10px;bottom:15px;z-index:20;text-align:center;font-size:8px;font-weight:1000;color:#f8ddff;letter-spacing:.08em}
@keyframes rhythmLights{to{background-position-x:-96px}}@keyframes rhythmIdle{50%{transform:translateY(-6px) rotate(3deg)}}@keyframes rhythmDance{45%{transform:translateY(-15px) rotate(-9deg) scale(1.08)}}@keyframes rhythmHit{to{opacity:0;transform:scale(1.8);filter:brightness(2)}}@keyframes rhythmMiss{to{opacity:0;transform:translateY(20px) rotate(18deg);filter:grayscale(1)}}

/* Memory game: bounded Simon-style pattern, not another moving target. */
.memory-world{background:radial-gradient(circle at 50% 18%,rgba(158,255,117,.16),transparent 35%),linear-gradient(#193528 0 66%,#101d17 66%)}
.memory-stars{position:absolute;inset:0;background:radial-gradient(circle at 20% 22%,#fff 0 1px,transparent 2px),radial-gradient(circle at 76% 33%,#baffd4 0 1px,transparent 2px);background-size:53px 53px,71px 71px;opacity:.55}
.memory-rizo{left:50%;top:17%;transform:translateX(-50%);animation:memoryFloat 2s ease-in-out infinite}.memory-rizo.memory-nod img{animation:memoryNod .18s ease-out}.memory-rizo.memory-confused img{animation:headNo .4s ease-out}
.memory-board{position:absolute;left:50%;bottom:38px;transform:translateX(-50%);width:min(82%,310px);display:grid;grid-template-columns:1fr 1fr;gap:10px;z-index:17}.memory-rune{aspect-ratio:1.5;border:3px solid #0b1510;border-radius:16px;background:linear-gradient(145deg,#244d39,#142b21);color:#9eff75;font-size:27px;box-shadow:0 7px 0 rgba(0,0,0,.28);transition:transform .1s,filter .1s,background .1s}.memory-rune.lit{background:#dffff0;color:#173827;box-shadow:0 0 28px #9eff75,0 4px 0 #335b43;transform:translateY(3px) scale(.97)}.memory-callout{position:absolute;left:10px;right:10px;top:10px;text-align:center;font-size:8px;font-weight:1000;color:#d9ffe8;letter-spacing:.1em;z-index:20}
@keyframes memoryFloat{50%{transform:translateX(-50%) translateY(-6px)}}@keyframes memoryNod{50%{transform:rotate(7deg) scale(1.04,.96)}}

/* Reusable premium pet cutscenes. */
.pet-cutscene,.evolution-result,.visitor-arrival{overflow:hidden;background:radial-gradient(circle at 50% 35%,rgba(22,200,255,.15),transparent 42%),linear-gradient(145deg,#171e27,#0b0f15)}
.cutscene-stage,.evolution-stage,.visitor-arrival-stage{position:relative;height:260px;margin:10px 0 15px;border:1px solid rgba(255,255,255,.1);border-radius:19px;overflow:hidden;background:radial-gradient(circle at 50% 32%,rgba(22,200,255,.18),transparent 38%),linear-gradient(#263744 0 70%,#18241d 70%)}
.cutscene-floor{position:absolute;left:0;right:0;bottom:0;height:31%;background:linear-gradient(#345344,#1c3028)}.cutscene-pet,.evolution-pet{left:50%;bottom:35px;transform:translateX(-50%);animation:cutsceneEnter .72s cubic-bezier(.2,.8,.2,1) both}.cutscene-symbol{position:absolute;left:50%;top:12%;transform:translateX(-50%);font-size:58px;color:#8ceeff;text-shadow:0 0 24px currentColor;z-index:3;animation:cutsceneSymbol 1.1s ease-in-out infinite}.scene-shadow .cutscene-stage{background:radial-gradient(circle at 50% 42%,rgba(121,84,255,.32),transparent 38%),linear-gradient(#090812,#171029 70%,#08070c 70%)}.scene-evolution .cutscene-stage,.evolution-stage{background:radial-gradient(circle at 50% 44%,rgba(255,213,74,.26),transparent 37%),linear-gradient(#252141,#131527 70%,#10151d 70%)}.evolution-stage i{position:absolute;inset:-30%;background:conic-gradient(from 0deg,transparent,#16c8ff,transparent,#ffd54a,transparent);opacity:.25;animation:spin 3s linear infinite}.evolution-pet{z-index:2;animation:evolutionRise 1.05s ease-out both}
.premium-event-stage{position:relative;height:210px;margin:10px 0;border-radius:18px;overflow:hidden;background:linear-gradient(#2a3c49 0 70%,#1d3026 70%)}.premium-event-stage .event-pet{left:50%;bottom:22px;transform:translateX(-50%);z-index:3}.premium-event-stage .event-icon{position:absolute;right:12%;top:15%;font-size:52px;z-index:4;animation:cutsceneSymbol 1.3s ease-in-out infinite}.premium-event-stage .event-scenery{position:absolute;inset:0;background:radial-gradient(circle at 22% 25%,rgba(255,255,255,.11),transparent 22%)}
.visitor-arrival-stage .arrival-host{left:25%;bottom:28px;transform:translateX(-50%)}.arrival-visitor{position:absolute;right:8%;bottom:28px;width:128px;height:128px;display:grid;place-items:center;animation:visitorArrive .7s ease-out both}.arrival-visitor img{width:100%;height:100%;object-fit:contain}.visitor-arrival-stage>i{position:absolute;left:50%;top:20%;transform:translateX(-50%);font-style:normal;font-size:38px;color:#ff8fcf;animation:heartPop 1s ease-in-out infinite}
@keyframes cutsceneEnter{from{opacity:0;transform:translateX(-50%) translateY(70px) scale(.7)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}@keyframes cutsceneSymbol{50%{transform:translateX(-50%) translateY(-7px) scale(1.08)}}@keyframes evolutionRise{from{opacity:0;transform:translateX(-50%) translateY(80px) scale(.5) rotate(-12deg);filter:brightness(3)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1);filter:none}}@keyframes visitorArrive{from{opacity:0;transform:translateX(80px) rotate(12deg)}to{opacity:1;transform:none}}@keyframes heartPop{50%{transform:translateX(-50%) scale(1.25)}}@keyframes spin{to{transform:rotate(360deg)}}

/* Shop previews use the same central pet renderer and accessory anchors. */
.shop-pet-preview{position:relative;width:56px;height:56px;border-radius:14px;background:radial-gradient(circle,#283643,#131a22 70%);overflow:hidden;border:1px solid #33404e}.shop-preview-pet{position:absolute!important;left:50%!important;top:50%!important;bottom:auto!important;width:58px!important;height:58px!important;transform:translate(-50%,-50%) scale(.78)!important}.shop-preview-pet .mini-pet-shadow{bottom:4px;height:9px}.room-swatch{position:relative;width:52px;height:52px;border-radius:13px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(#557786 0 64%,#38483e 64%);border:1px solid #3b4b58}.room-swatch span{position:relative;z-index:2;font-size:22px}.room-swatch i{position:absolute;left:0;right:0;bottom:0;height:35%;background:rgba(0,0,0,.22)}.room-swatch.theme-forest{background:linear-gradient(#5ea67b 0 64%,#203827 64%)}.room-swatch.theme-arcade{background:linear-gradient(135deg,#16c8ff,#ff68bd)}.room-swatch.theme-cloud{background:linear-gradient(#8bdfff,#dff8ff)}.room-swatch.theme-void{background:radial-gradient(circle,#41275f,#070611)}

/* Rare Rizos have behavior/aura identity beyond hue. */
.pet-actor.retro img,.mini-pet.retro img,.garden-visitor.retro img{image-rendering:pixelated;filter:drop-shadow(0 0 0 #071016) drop-shadow(0 0 9px rgba(22,200,255,.58))}.pet-actor.retro,.mini-pet.retro{animation-timing-function:steps(4)!important}.mini-pet.retro:not(.walk-rizo),.pet-actor.retro{animation:retroIdle .9s steps(4) infinite}
.pet-actor.shadow img,.mini-pet.shadow img{filter:brightness(.72) contrast(1.32) drop-shadow(0 0 3px #fff) drop-shadow(0 0 16px rgba(121,84,255,.95))}.pet-actor.shadow:after,.mini-pet.shadow:after{content:"";position:absolute;inset:13%;border-radius:50%;background:radial-gradient(circle,rgba(121,84,255,.18),transparent 65%);filter:blur(8px);z-index:1;animation:shadowAura 1.8s ease-in-out infinite}
.pet-actor.golden img,.mini-pet.golden img{filter:drop-shadow(0 0 13px rgba(255,213,74,.85))}.pet-actor.golden:after,.mini-pet.golden:after{content:"✦";position:absolute;right:4%;top:15%;color:#fff1a5;text-shadow:0 0 12px #ffd54a;z-index:7;animation:goldSpark 1.3s ease-in-out infinite}
.pet-actor.diamond img,.mini-pet.diamond img{filter:drop-shadow(0 0 5px #fff) drop-shadow(0 0 16px rgba(180,245,255,.9));animation:diamondIdle 2.2s ease-in-out infinite}.pet-actor.diamond:after,.mini-pet.diamond:after{content:"";position:absolute;inset:5%;background:conic-gradient(transparent,rgba(255,104,189,.2),transparent,rgba(22,200,255,.25),transparent);border-radius:50%;z-index:1;animation:spin 4s linear infinite}
.pet-actor.obsidian img,.mini-pet.obsidian img{filter:drop-shadow(0 0 13px rgba(74,82,128,.8))}.pet-actor.obsidian:after,.mini-pet.obsidian:after{content:"";position:absolute;left:18%;right:18%;bottom:8%;height:25%;background:radial-gradient(ellipse,rgba(74,82,128,.38),transparent 68%);filter:blur(7px);animation:obsidianSmoke 2.4s ease-in-out infinite}
.pet-actor.glitch img,.mini-pet.glitch img{animation:glitchIdle 2.7s steps(1) infinite}.pet-actor.aurora img,.mini-pet.aurora img{filter:drop-shadow(0 0 14px rgba(125,244,255,.8));animation:auroraIdle 3s ease-in-out infinite}
@keyframes retroIdle{50%{transform:translateY(-5px) rotate(2deg)}}@keyframes shadowAura{50%{opacity:.35;transform:scale(1.12)}}@keyframes goldSpark{50%{transform:translateY(-8px) scale(1.35);opacity:.45}}@keyframes diamondIdle{50%{filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 24px rgba(255,104,189,.75));transform:translateY(-4px)}}@keyframes obsidianSmoke{50%{transform:translateY(-7px) scale(1.16);opacity:.35}}@keyframes glitchIdle{0%,92%,100%{transform:none;filter:none}93%{transform:translateX(-4px);filter:hue-rotate(80deg)}95%{transform:translateX(5px) skewX(5deg);filter:hue-rotate(-70deg)}}@keyframes auroraIdle{50%{filter:drop-shadow(0 0 20px rgba(255,104,189,.75)) hue-rotate(32deg)}}

@media(max-width:350px){.walk-fork{inset:55px 8px 38px;padding:8px}.walk-fork-btn{min-height:59px;padding:8px}.memory-board{bottom:27px;gap:7px}.memory-rune{font-size:22px}.cutscene-stage,.evolution-stage,.visitor-arrival-stage{height:220px}.shop-item{grid-template-columns:46px minmax(0,1fr) auto}.shop-pet-preview{width:46px;height:46px}.shop-preview-pet{width:50px!important;height:50px!important}}

body.reduce-motion .walk-rizo,body.reduce-motion .rhythm-rizo,body.reduce-motion .memory-rizo,body.reduce-motion .rhythm-lights,body.reduce-motion .walk-weather,body.reduce-motion .cutscene-symbol,body.reduce-motion .cutscene-pet,body.reduce-motion .evolution-pet,body.reduce-motion .evolution-stage i,body.reduce-motion .arrival-visitor,body.reduce-motion .visitor-arrival-stage>i,body.reduce-motion .pet-actor.retro,body.reduce-motion .mini-pet.retro,body.reduce-motion .pet-actor.shadow:after,body.reduce-motion .mini-pet.shadow:after,body.reduce-motion .pet-actor.golden:after,body.reduce-motion .mini-pet.golden:after,body.reduce-motion .pet-actor.diamond img,body.reduce-motion .mini-pet.diamond img,body.reduce-motion .pet-actor.diamond:after,body.reduce-motion .mini-pet.diamond:after,body.reduce-motion .pet-actor.obsidian:after,body.reduce-motion .mini-pet.obsidian:after,body.reduce-motion .pet-actor.glitch img,body.reduce-motion .mini-pet.glitch img,body.reduce-motion .pet-actor.aurora img,body.reduce-motion .mini-pet.aurora img{animation:none!important}

.capsule-stage{position:relative;height:245px;margin:8px 0 14px;border-radius:19px;overflow:hidden;background:radial-gradient(circle at 63% 42%,var(--reveal-color) 0 2%,transparent 34%),linear-gradient(#1a2230 0 72%,#111820 72%);border:1px solid rgba(255,255,255,.1)}.capsule-stage:before{content:"";position:absolute;inset:-20%;background:conic-gradient(from 0deg,transparent,var(--reveal-color),transparent,#fff,transparent);opacity:.16;animation:spin 3.5s linear infinite}.capsule-stage .capsule-reaction-pet{left:18%;bottom:22px;transform:translateX(-50%);animation:walkAwe .8s ease-out}.capsule-stage .rarity-reveal{position:absolute;right:7%;top:28px;width:170px;height:170px;z-index:4;display:grid;place-items:center;animation:capsuleReveal .78s cubic-bezier(.2,.8,.2,1) both}.capsule-stage .rarity-reveal img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 18px var(--reveal-color))}.capsule-stage>i{position:absolute;right:42%;top:12%;font-style:normal;font-size:34px;color:#fff;text-shadow:0 0 16px var(--reveal-color);animation:goldSpark 1.1s ease-in-out infinite}.rare-discovery-stage{position:relative;height:210px;margin:12px 0;border:1px solid rgba(255,255,255,.12);border-radius:18px;overflow:hidden;background:radial-gradient(circle at 67% 38%,rgba(121,84,255,.25),transparent 32%),linear-gradient(#1c2430 0 70%,#14221b 70%)}.rare-discovery-stage .rare-reaction-pet{left:20%;bottom:18px;transform:translateX(-50%)}.rare-found-pet{position:absolute;right:7%;bottom:24px;width:135px;height:135px;animation:visitorArrive .7s ease-out both}.rare-found-pet img{width:100%;height:100%;object-fit:contain}.rare-discovery-stage b{position:absolute;left:10px;right:10px;top:10px;text-align:center;font-size:8px;letter-spacing:.12em;color:#dffbff}.rare-discovery-stage.shadow .rare-found-pet img{filter:brightness(.7) contrast(1.35) drop-shadow(0 0 16px #7954ff)}.rare-discovery-stage.retro .rare-found-pet img{image-rendering:pixelated;filter:drop-shadow(0 0 11px #16c8ff)}
@keyframes capsuleReveal{from{opacity:0;transform:scale(.35) rotate(-18deg);filter:brightness(3)}to{opacity:1;transform:none;filter:none}}
body.reduce-motion .capsule-stage:before,body.reduce-motion .capsule-stage .rarity-reveal,body.reduce-motion .capsule-stage>i,body.reduce-motion .rare-found-pet{animation:none!important}

/* Central-renderer previews: profile and rename surfaces now carry the live pet, including wearables. */
.profile-avatar{overflow:hidden}.profile-avatar .profile-pet{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;width:66px!important;height:66px!important;transform:none!important}.profile-avatar .profile-pet .mini-pet-shadow{bottom:4px;height:8px}.rename-pet-stage{position:relative;height:126px;margin:4px 0 8px;border:1px solid #303b49;border-radius:18px;overflow:hidden;background:radial-gradient(circle at 50% 70%,rgba(22,200,255,.2),transparent 48%),linear-gradient(#111923,#090d13)}.rename-pet{left:50%!important;top:50%!important;bottom:auto!important;transform:translate(-50%,-50%) scale(.88)!important}.visitor-arrival-stage .arrival-visitor{position:absolute;right:7%;left:auto;bottom:8%;top:auto}.garden-visitor .accessory-layer{pointer-events:none}
body.reduce-motion .rename-pet,body.reduce-motion .profile-pet{animation:none!important}

/* TARGETED CONSEQUENCE PASS — tap-sickness now reads as a real reaction. */
.pet-actor.tap-sick-queasy img,.pet-actor.tap-sick-queasy .accessory-layer{animation:tapSickQueasy 1.55s cubic-bezier(.28,.75,.32,1) both!important}
.pet-actor.tap-sick-queasy img{filter:hue-rotate(68deg) saturate(.55) contrast(.92) drop-shadow(0 13px 0 rgba(6,21,22,.15))}
.status-fx.queasy:before{content:"⌁  ×  ⟳";position:absolute;left:50%;top:5%;transform:translateX(-50%);color:#d8ff78;font-size:24px;font-weight:1000;letter-spacing:12px;text-shadow:0 0 12px rgba(158,255,117,.9),2px 2px 0 #172014;animation:queasyOrbit 1.45s ease-in-out both}
.status-fx.queasy:after{content:"•  ○  •";position:absolute;left:50%;bottom:10%;transform:translateX(-50%);color:#9eff75;font-size:20px;letter-spacing:16px;opacity:0;animation:queasyBubbles 1.35s .08s ease-out both}
@keyframes tapSickQueasy{0%{transform:none}12%{transform:translate(-7px,3px) rotate(-8deg) scale(.96,1.03)}25%{transform:translate(8px,-4px) rotate(9deg) scale(1.03,.95)}39%{transform:translate(-5px,7px) rotate(-7deg) scale(.97,1.02)}54%{transform:translate(5px,10px) rotate(6deg) scale(1.01,.94)}70%{transform:translate(-3px,12px) rotate(-4deg) scale(.98,.93)}84%{transform:translate(2px,9px) rotate(2deg) scale(1,.95)}100%{transform:translateY(6px) rotate(0) scale(1,.97)}}
@keyframes queasyOrbit{0%{opacity:0;transform:translateX(-50%) translateY(18px) scale(.45) rotate(-18deg)}22%{opacity:1}55%{transform:translateX(-50%) translateY(-8px) scale(1.12) rotate(12deg)}100%{opacity:0;transform:translateX(-50%) translateY(-24px) scale(.8) rotate(34deg)}}
@keyframes queasyBubbles{0%{opacity:0;transform:translateX(-50%) translateY(12px) scale(.6)}35%{opacity:.95}100%{opacity:0;transform:translateX(-50%) translateY(-42px) scale(1.18)}}

/* Genuine bad-luck events keep the premium stage but use consequence styling. */
.misfortune-cutscene .cutscene-stage,.misfortune-event .premium-event-stage{background:radial-gradient(circle at 50% 38%,rgba(255,107,120,.2),transparent 35%),linear-gradient(#26202a 0 70%,#261d22 70%)}
.misfortune-cutscene .cutscene-symbol,.misfortune-event .event-icon{color:#ff6b78;text-shadow:0 0 22px rgba(255,107,120,.72)}
.world-event-card.misfortune-event{box-shadow:inset 0 3px 0 #ff6b78,var(--shadow)}
.world-event-card.misfortune-event .event-choices button{border-color:#75404a;background:#241a1e}
.misfortune-result{box-shadow:inset 0 3px 0 #ff6b78,var(--shadow)}
.event-loss{margin:10px 0;padding:9px 10px;border:1px solid #7b3d47;border-radius:10px;background:rgba(255,107,120,.09);color:#ff9eaa;font-size:8px;font-weight:1000;letter-spacing:.1em;text-align:center}

body.reduce-motion .pet-actor.tap-sick-queasy img,body.reduce-motion .pet-actor.tap-sick-queasy .accessory-layer,body.reduce-motion .status-fx.queasy:before,body.reduce-motion .status-fx.queasy:after{animation:none!important}
body.reduce-motion .status-fx.queasy:before{opacity:1;transform:translateX(-50%)}

/* ART-DIRECTED EVOLUTION FALLBACK
   The old Beast/Legend circles looked like detached arms. They are disabled.
   Until hand-drawn stage sprites exist, evolution stays restrained: size,
   directional aura, and a few external path signatures. The active sprite is
   never redrawn or covered, so Rizo's face and one-piece silhouette stay pure.
   Final stage art can replace this fallback through resolvePetSprite(). */
.muscle{display:none!important}
.evolution-echo,.evolution-rune{position:absolute;inset:0;pointer-events:none;transform-origin:50% 72%}
.evolution-echo{z-index:2;opacity:0;background:var(--pet-color,var(--cyan));-webkit-mask-image:var(--pet-sprite);mask-image:var(--pet-sprite);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;filter:blur(5px);transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1)}
.evolution-rune{z-index:6;opacity:0;color:var(--pet-color,var(--cyan));transition:opacity .35s ease}
.mini-pet .evolution-echo{z-index:2}.mini-pet .evolution-rune{z-index:4}

/* Spark and Kid stay completely clean. Later stages gain atmosphere, not
   random anatomy. Actual silhouette evolution belongs in the PNG art. */
.stage-spark .evolution-echo,.stage-kid .evolution-echo{opacity:0}
.stage-teen .evolution-echo{opacity:.10;transform:translateY(-.5%) scale(1.025,1.03)}
.stage-beast .evolution-echo{opacity:.17;transform:translateY(-.8%) scale(1.055,1.04)}
.stage-legend .evolution-echo{opacity:.25;transform:translateY(-1.2%) scale(1.075,1.075);filter:blur(7px);animation:evolutionBreathe 2.8s ease-in-out infinite}
.stage-teen .evolution-rune{opacity:.12}.stage-beast .evolution-rune{opacity:.38}.stage-legend .evolution-rune{opacity:.65}

/* Raising paths direct the aura while preserving the same Rizo body. */
.stage-teen.form-speed .evolution-echo{transform:translate(-1.5%,-.3%) skewY(-1deg) scale(1.04,1.02)}
.stage-beast.form-speed .evolution-echo,.stage-legend.form-speed .evolution-echo{transform:translate(-2.5%,-.5%) skewY(-1.5deg) scale(1.075,1.03)}
.stage-teen.form-power .evolution-echo{transform:translateY(.4%) scale(1.05,1.01)}
.stage-beast.form-power .evolution-echo,.stage-legend.form-power .evolution-echo{transform:translateY(.5%) scale(1.095,1.02)}
.stage-teen.form-instinct .evolution-echo{transform:translateY(-1.8%) scale(1.01,1.055)}
.stage-beast.form-instinct .evolution-echo,.stage-legend.form-instinct .evolution-echo{transform:translateY(-2.6%) scale(1.02,1.09)}
.stage-teen.form-stamina .evolution-echo{transform:translateY(1%) scale(1.045,1.01)}
.stage-beast.form-stamina .evolution-echo,.stage-legend.form-stamina .evolution-echo{transform:translateY(1.5%) scale(1.075,1.02)}
.stage-beast.form-luck .evolution-echo,.stage-legend.form-luck .evolution-echo,.stage-beast.form-royal .evolution-echo,.stage-legend.form-royal .evolution-echo{filter:blur(6px) drop-shadow(0 0 7px rgba(255,212,90,.65))}
.stage-beast.form-prism .evolution-echo,.stage-legend.form-prism .evolution-echo{filter:blur(6px) drop-shadow(0 0 8px #fff) drop-shadow(0 0 12px rgba(22,200,255,.65))}
.stage-beast.form-eclipse .evolution-echo,.stage-legend.form-eclipse .evolution-echo{background:#7654ff;filter:blur(7px) drop-shadow(0 0 10px rgba(121,84,255,.7))}

/* Only signatures that can remain outside the face are used in fallback art. */
.evolution-rune::before,.evolution-rune::after{position:absolute;pointer-events:none}
.form-speed .evolution-rune::before{content:"";left:7%;top:43%;width:17%;height:2px;border-radius:999px;background:currentColor;box-shadow:8px 9px 0 -1px currentColor,2px 17px 0 -1px currentColor;transform:rotate(-10deg)}
.form-instinct .evolution-rune::before{content:"☾";right:10%;top:15%;font-size:18px;text-shadow:0 0 9px currentColor}
.form-luck .evolution-rune::before,.form-royal .evolution-rune::before{content:"✦";right:9%;top:18%;font-size:17px;text-shadow:-16px 10px 0 currentColor,0 0 9px currentColor}
.form-prism .evolution-rune::before{content:"◇";right:9%;top:16%;font-size:20px;color:#fff;text-shadow:-17px 11px 0 #16c8ff,0 0 11px #ff68bd}
.form-eclipse .evolution-rune::before{content:"◐";right:8%;top:16%;font-size:18px;color:#9a75ff;text-shadow:0 0 10px #7a54ff}
.form-pixel .evolution-rune::before{content:"+ +";left:7%;top:25%;font:1000 11px/1 ui-monospace,monospace;letter-spacing:4px;text-shadow:0 0 7px currentColor}

@keyframes evolutionBreathe{0%,100%{opacity:.2}50%{opacity:.29}}
body.reduce-motion .evolution-echo{animation:none!important;transition:none!important}
body.reduce-motion .evolution-rune{transition:none!important}

/* CANONICAL EVOLUTION FORM MATRIX
   Runtime art now resolves variant × stage before every scene renders. These
   individual transform properties compensate for measured alpha bounds while
   preserving the existing transform animations on actors and images. */
.pet-actor img,.mini-pet img{
  translate:var(--rizo-offset-x,0%) var(--rizo-offset-y,0%);
  scale:var(--rizo-image-scale,1);
  transform-origin:50% 78%;
}
.body-shadow,.mini-pet-shadow{
  translate:var(--rizo-shadow-x,0%) var(--rizo-shadow-y,0%);
  scale:var(--rizo-shadow-scale,1);
  opacity:var(--rizo-shadow-opacity,1);
  transform-origin:50% 50%;
}
.accessory-layer{transform-origin:50% 50%}
.accessory-layer.anchor-head{translate:var(--anchor-head-x,0%) var(--anchor-head-y,0%);scale:var(--anchor-head-scale,1)}
.accessory-layer.anchor-face{translate:var(--anchor-face-x,0%) var(--anchor-face-y,0%);scale:var(--anchor-face-scale,1)}
.accessory-layer.anchor-upper{translate:var(--anchor-upper-x,0%) var(--anchor-upper-y,0%);scale:var(--anchor-upper-scale,1)}
.accessory-layer.anchor-center{translate:var(--anchor-center-x,0%) var(--anchor-center-y,0%);scale:var(--anchor-center-scale,1)}
.accessory-layer.anchor-back{translate:var(--anchor-back-x,0%) var(--anchor-back-y,0%);scale:var(--anchor-back-scale,1)}
.accessory-layer.anchor-lower{translate:var(--anchor-lower-x,0%) var(--anchor-lower-y,0%);scale:var(--anchor-lower-scale,1)}
.accessory-layer.anchor-ground{translate:var(--anchor-ground-x,0%) var(--anchor-ground-y,0%);scale:var(--anchor-ground-scale,1)}
.accessory-layer.anchor-effects{translate:var(--anchor-effects-x,0%) var(--anchor-effects-y,0%);scale:var(--anchor-effects-scale,1)}

/* Dedicated stage sprites carry the silhouette change. The echo remains only
   as a quiet form signature, never as substitute anatomy. */
.stage-teen .evolution-echo{opacity:.035}
.stage-beast .evolution-echo{opacity:.065}
.stage-legend .evolution-echo{opacity:.11;filter:blur(7px)}

/* Special generated variants keep their identity without applying destructive
   recoloring filters to the finished transparent PNGs. */
[data-rizo-variant="golden"] img{filter:drop-shadow(0 8px 0 rgba(78,50,0,.2)) drop-shadow(0 0 7px rgba(255,214,78,.38))}
[data-rizo-variant="diamond"] img{filter:drop-shadow(0 8px 0 rgba(0,35,49,.17)) drop-shadow(0 0 8px rgba(220,251,255,.48))}
[data-rizo-variant="shadow"] img{filter:drop-shadow(0 8px 0 rgba(0,0,0,.3)) drop-shadow(0 0 7px rgba(121,84,255,.32))}
[data-rizo-variant="aurora"] img{filter:drop-shadow(0 8px 0 rgba(0,27,38,.18)) drop-shadow(0 0 7px rgba(125,244,255,.35))}

body.reduce-motion .pet-actor img,body.reduce-motion .mini-pet img,
body.reduce-motion .body-shadow,body.reduce-motion .mini-pet-shadow,
body.reduce-motion .accessory-layer{transition:none!important}

/* ========================================================================
   CHARACTER IDENTITY / NATURAL AGE / LAYERED WEARABLE PASS — SAVE v8
   ======================================================================== */

/* The same canonical silhouette grows through presence and proportion. */
.pet-actor.stage-spark{transform:scale(.38)}
.pet-actor.stage-kid{transform:scale(.54)}
.pet-actor.stage-teen{transform:scale(.71)}
.pet-actor.stage-beast{transform:scale(.86)}
.pet-actor.stage-legend{transform:scale(1)}
.pet-actor.stage-spark.sleeping{transform:translateY(19px) scale(.38) rotate(-6deg)}
.pet-actor.stage-kid.sleeping{transform:translateY(19px) scale(.54) rotate(-6deg)}
.pet-actor.stage-teen.sleeping{transform:translateY(19px) scale(.71) rotate(-6deg)}
.pet-actor.stage-beast.sleeping{transform:translateY(19px) scale(.86) rotate(-6deg)}
.pet-actor.stage-legend.sleeping{transform:translateY(19px) scale(1) rotate(-6deg)}
.pet-actor.stage-spark.sad{transform:translateY(7px) scale(.37)}
.pet-actor.stage-kid.sad{transform:translateY(7px) scale(.52)}
.pet-actor.stage-teen.sad{transform:translateY(7px) scale(.68)}
.pet-actor.stage-beast.sad{transform:translateY(7px) scale(.83)}
.pet-actor.stage-legend.sad{transform:translateY(7px) scale(.97)}
.pet-actor img,.mini-pet img{translate:var(--rizo-offset-x,0%) var(--rizo-offset-y,0%);scale:var(--rizo-scale-x,1) var(--rizo-scale-y,1);transform-origin:50% 84%;z-index:4}
.mini-pet.stage-spark{width:72px;height:72px}.mini-pet.stage-kid{width:94px;height:94px}.mini-pet.stage-teen{width:115px;height:115px}.mini-pet.stage-beast{width:135px;height:135px}.mini-pet.stage-legend{width:148px;height:148px}

/* Power paths stay outside the anatomy: restrained aura and emblem only. */
.evolution-echo{opacity:.025!important;transform:none!important;filter:blur(8px)!important}
.stage-teen .evolution-echo{opacity:.035!important}.stage-beast .evolution-echo{opacity:.05!important}.stage-legend .evolution-echo{opacity:.075!important}
.form-speed .evolution-rune,.form-power .evolution-rune,.form-instinct .evolution-rune,.form-stamina .evolution-rune,.form-luck .evolution-rune,.form-pixel .evolution-rune,.form-eclipse .evolution-rune,.form-royal .evolution-rune,.form-prism .evolution-rune{opacity:.23!important;transform:scale(.78)!important}

/* The wrapper does not create a stacking context. Its three children can sit
   behind, against, and in front of the canonical sprite in every scene. */
.accessory-layer.wearable{position:absolute;inset:0;z-index:auto!important;translate:none!important;scale:none!important;transform:none!important;filter:none!important;animation:none!important;pointer-events:none;overflow:visible}
.accessory-layer.wearable::before,.accessory-layer.wearable::after{content:none!important;display:none!important}
.wearable-back,.wearable-body,.wearable-front{position:absolute;inset:0;pointer-events:none;transform-origin:50% 58%;translate:var(--wear-x,0%) var(--wear-y,0%);scale:var(--wear-anchor-scale,1);transform:rotate(var(--wearable-rotate,0deg)) scale(var(--wearable-scale,1)) scale(var(--gear-scale-x,1),var(--gear-scale-y,1)) translate(var(--gear-shift-x,0%),var(--gear-shift-y,0%));will-change:transform}
.wearable-back{z-index:2}.wearable-body{z-index:5}.wearable-front{z-index:8}
.wearable.anchor-head{--wear-x:var(--anchor-head-x,0%);--wear-y:var(--anchor-head-y,0%);--wear-anchor-scale:var(--anchor-head-scale,1)}
.wearable.anchor-face{--wear-x:var(--anchor-face-x,0%);--wear-y:var(--anchor-face-y,0%);--wear-anchor-scale:var(--anchor-face-scale,1)}
.wearable.anchor-upper{--wear-x:var(--anchor-upper-x,0%);--wear-y:var(--anchor-upper-y,0%);--wear-anchor-scale:var(--anchor-upper-scale,1)}
.wearable.anchor-center{--wear-x:var(--anchor-center-x,0%);--wear-y:var(--anchor-center-y,0%);--wear-anchor-scale:var(--anchor-center-scale,1)}
.wearable.anchor-lower{--wear-x:var(--anchor-lower-x,0%);--wear-y:var(--anchor-lower-y,0%);--wear-anchor-scale:var(--anchor-lower-scale,1)}
.wearable.anchor-left{--wear-x:var(--anchor-left-x,0%);--wear-y:var(--anchor-left-y,0%);--wear-anchor-scale:var(--anchor-left-scale,1)}
.wearable.anchor-right{--wear-x:var(--anchor-right-x,0%);--wear-y:var(--anchor-right-y,0%);--wear-anchor-scale:var(--anchor-right-scale,1)}
.wearable.anchor-back{--wear-x:var(--anchor-back-x,0%);--wear-y:var(--anchor-back-y,0%);--wear-anchor-scale:var(--anchor-back-scale,1)}
.wearable.anchor-ground{--wear-x:var(--anchor-ground-x,0%);--wear-y:var(--anchor-ground-y,0%);--wear-anchor-scale:var(--anchor-ground-scale,1)}
.wearable.anchor-effects{--wear-x:var(--anchor-effects-x,0%);--wear-y:var(--anchor-effects-y,0%);--wear-anchor-scale:var(--anchor-effects-scale,1)}
.wearable.none>span{display:none}

/* Shared flat, hand-cut material language. */
.wearable>span::before,.wearable>span::after{position:absolute;box-sizing:border-box;content:"";border-style:solid;border-color:#080b0f;filter:drop-shadow(0 3px 0 rgba(0,0,0,.22))}

/* BANDANA — wrap, seam, knot and two independently trailing tails. */
.wearable-bandana .wearable-back::before{left:66%;top:57%;width:18%;height:27%;background:#e94152;border-width:5px;clip-path:polygon(12% 0,100% 10%,72% 100%,0 80%);transform:rotate(-17deg);transform-origin:12% 8%}
.wearable-bandana .wearable-back::after{left:61%;top:56%;width:16%;height:23%;background:#ff5968;border-width:5px;clip-path:polygon(8% 0,100% 12%,76% 100%,0 75%);transform:rotate(12deg);transform-origin:15% 10%}
.wearable-bandana .wearable-body::before{left:24%;top:55%;width:53%;height:15%;background:#ef4658;border-width:5px;border-radius:48% 52% 43% 48%/38% 40% 62% 58%;transform:rotate(-1.5deg);box-shadow:inset 0 -4px 0 #be2638}
.wearable-bandana .wearable-body::after{left:29%;top:60%;width:42%;height:3px;border:0;background:#ffb2b9;border-radius:50%;opacity:.8;transform:rotate(-1deg)}
.wearable-bandana .wearable-front::before{left:64%;top:57%;width:12%;height:12%;background:#ff5968;border-width:5px;border-radius:44% 56% 48% 52%;transform:rotate(12deg)}
.wearable-bandana .wearable-front::after{left:38%;top:58.5%;width:17%;height:7%;border:0;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;filter:none;opacity:.72;transform:rotate(-2deg)}
.pet-actor:not(.sleeping) .wearable-bandana .wearable-body::before,.mini-pet .wearable-bandana .wearable-body::before{animation:bandanaBreathe 2.3s ease-in-out infinite}
.walk-rizo .wearable-bandana .wearable-back::before,.behavior-wander-left .wearable-bandana .wearable-back::before,.behavior-wander-right .wearable-bandana .wearable-back::before,.behavior-zoomies .wearable-bandana .wearable-back::before,.rhythm-rizo .wearable-bandana .wearable-back::before{animation:tailLagA .48s ease-in-out infinite alternate}
.walk-rizo .wearable-bandana .wearable-back::after,.behavior-wander-left .wearable-bandana .wearable-back::after,.behavior-wander-right .wearable-bandana .wearable-back::after,.behavior-zoomies .wearable-bandana .wearable-back::after,.rhythm-rizo .wearable-bandana .wearable-back::after{animation:tailLagB .56s ease-in-out infinite alternate}
@keyframes bandanaBreathe{50%{transform:rotate(-1.5deg) scale(1.018,1.035)}}
@keyframes tailLagA{to{transform:rotate(-27deg) translate(-3px,2px)}}@keyframes tailLagB{to{transform:rotate(3deg) translate(-4px,3px)}}

/* HEAD / FACE ITEMS */
.wearable-beanie .wearable-body::before{left:28%;top:10%;width:45%;height:31%;background:#191d25;border-width:6px;border-radius:52% 50% 24% 24%;transform:rotate(-4deg);box-shadow:inset 0 -8px 0 #303744}
.wearable-beanie .wearable-front::before{left:42%;top:23%;width:16%;height:9%;border-width:3px;background:#16c8ff url("./assets/rizo-full-mark.png") center/85% auto no-repeat;border-radius:3px;transform:rotate(-4deg)}
.wearable-shades .wearable-front::before{left:25%;top:44%;width:23%;height:15%;background:#0b1017;border-width:6px;border-radius:9px;box-shadow:58px 0 0 -6px #0b1017,58px 0 0 0 #080b0f;transform:skew(-4deg)}
.wearable-shades .wearable-front::after{left:46%;top:49%;width:15%;height:5px;background:#080b0f;border:0;filter:none}
.wearable-flower .wearable-front::before{right:23%;top:15%;width:23%;height:23%;background:#fff19a;border-width:5px;border-radius:50%;box-shadow:-11px 4px 0 -4px #fff19a,-11px 4px 0 0 #080b0f,10px 5px 0 -4px #fff19a,10px 5px 0 0 #080b0f,0 -10px 0 -4px #fff19a,0 -10px 0 0 #080b0f}
.wearable-flower .wearable-front::after{right:30%;top:22%;width:9%;height:9%;background:#ffb643;border-width:3px;border-radius:50%}
.wearable-eyepatch .wearable-front::before{left:25%;top:43%;width:24%;height:19%;background:#11151b;border-width:5px;border-radius:48%;transform:rotate(7deg)}
.wearable-eyepatch .wearable-front::after{left:24%;top:39%;width:51%;height:5px;background:#080b0f;border:0;filter:none;transform:rotate(-8deg)}
.wearable-headphones .wearable-body::before{left:22%;top:30%;width:57%;height:31%;background:transparent;border-width:8px;border-bottom:0;border-radius:55% 55% 0 0}
.wearable-headphones .wearable-front::before{left:18%;top:49%;width:19%;height:24%;background:#ff63bd;border-width:6px;border-radius:10px;box-shadow:157px 0 0 -6px #ff63bd,157px 0 0 0 #080b0f}
.wearable-headphones .wearable-front::after{left:23%;top:54%;width:8%;height:11%;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;border:0;filter:none;box-shadow:157px 0 0 0 rgba(0,0,0,0)}
.wearable-cap .wearable-body::before{left:27%;top:10%;width:47%;height:27%;background:#171c27;border-width:6px;border-radius:56% 52% 25% 24%;transform:rotate(-6deg);box-shadow:inset 0 -7px 0 #2b3444}
.wearable-cap .wearable-front::before{left:51%;top:30%;width:31%;height:10%;background:#16c8ff;border-width:5px;border-radius:15% 65% 60% 15%;transform:rotate(-9deg);transform-origin:0 50%}
.wearable-bow .wearable-front::before{left:22%;top:14%;width:28%;height:24%;background:#ff68bd;border-width:6px;clip-path:polygon(0 4%,100% 50%,0 96%);transform:rotate(-5deg)}
.wearable-bow .wearable-front::after{right:22%;top:14%;width:28%;height:24%;background:#ff68bd;border-width:6px;clip-path:polygon(100% 4%,0 50%,100% 96%);transform:rotate(5deg)}
.wearable-goggles .wearable-front::before{left:24%;top:42%;width:25%;height:19%;background:#7eeeff;border-width:6px;border-radius:50%;box-shadow:57px 0 0 -6px #7eeeff,57px 0 0 0 #080b0f}
.wearable-goggles .wearable-front::after{left:45%;top:49%;width:18%;height:5px;background:#080b0f;border:0;filter:none}
.wearable-visor .wearable-front::before{left:23%;top:41%;width:55%;height:21%;background:#22d7ef;border-width:7px;border-radius:48% 48% 35% 35%;transform:rotate(-2deg);box-shadow:inset 0 -6px 0 #0b6c85}
.wearable-mask .wearable-front::before{left:24%;top:43%;width:52%;height:20%;background:#171b26;border-width:6px;clip-path:polygon(0 0,48% 27%,100% 0,90% 100%,54% 72%,10% 100%)}
.wearable-earmuffs .wearable-body::before{left:21%;top:31%;width:59%;height:31%;background:transparent;border-width:8px;border-bottom:0;border-radius:55% 55% 0 0}
.wearable-earmuffs .wearable-front::before{left:17%;top:49%;width:21%;height:25%;background:#d9f9ff;border-width:6px;border-radius:50%;box-shadow:166px 0 0 -6px #d9f9ff,166px 0 0 0 #080b0f}
.wearable-bucket .wearable-body::before{left:25%;top:8%;width:51%;height:31%;background:#4e86a6;border-width:6px;border-radius:52% 52% 26% 26%;clip-path:polygon(15% 0,85% 0,100% 100%,0 100%)}
.wearable-bucket .wearable-front::before{left:19%;top:32%;width:63%;height:11%;background:#4e86a6;border-width:5px;border-radius:50%;transform:rotate(-2deg)}

/* TOP CONTOUR ITEMS */
.wearable-horns .wearable-back::before{left:23%;top:9%;width:23%;height:30%;background:#ef4c58;border-width:6px;clip-path:polygon(50% 0,100% 100%,0 76%);transform:rotate(-17deg)}
.wearable-horns .wearable-back::after{right:22%;top:9%;width:23%;height:30%;background:#ef4c58;border-width:6px;clip-path:polygon(50% 0,100% 76%,0 100%);transform:rotate(17deg)}
.wearable-halo .wearable-back::before{left:30%;top:2%;width:42%;height:15%;background:transparent;border-width:7px;border-color:#fff0a2;border-radius:50%;filter:drop-shadow(0 0 7px #ffe368)}
.wearable-crown .wearable-front::before{left:31%;top:3%;width:40%;height:30%;background:#ffd64e;border-width:6px;clip-path:polygon(0 100%,0 35%,24% 62%,42% 6%,63% 61%,100% 26%,91% 100%);filter:drop-shadow(0 4px 0 #7a5500)}
.wearable-antenna .wearable-back::before{left:48%;top:-1%;width:7px;height:29%;background:#11151c;border-width:3px;border-radius:8px;transform:rotate(-5deg)}
.wearable-antenna .wearable-front::before{left:42%;top:-5%;width:19%;height:13%;background:#16c8ff;border-width:5px;border-radius:50%;filter:drop-shadow(0 0 9px #16c8ff)}
.wearable-leafcrown .wearable-front::before{left:25%;top:8%;width:23%;height:20%;background:#81dd65;border-width:5px;border-radius:90% 0 90% 0;transform:rotate(-22deg);box-shadow:32px -7px 0 -5px #81dd65,32px -7px 0 0 #080b0f,62px 1px 0 -5px #81dd65,62px 1px 0 0 #080b0f}
.wearable-starclip .wearable-front::before{right:23%;top:13%;width:27%;height:27%;background:#ffd45a;border-width:5px;clip-path:polygon(50% 0,61% 35%,100% 38%,69% 59%,80% 100%,50% 76%,20% 100%,31% 59%,0 38%,39% 35%)}

/* LOWER / FULL BODY ITEMS */
.wearable-chain .wearable-front::before{left:28%;top:57%;width:45%;height:23%;background:transparent;border-width:8px;border-top:0;border-color:#f2c946;border-radius:0 0 52% 52%;filter:drop-shadow(0 3px 0 #725500)}
.wearable-chain .wearable-front::after{left:44%;top:72%;width:14%;height:14%;background:#f2c946 url("./assets/rizo-full-mark.png") center/78% auto no-repeat;border-width:4px;border-radius:50%;filter:drop-shadow(0 3px 0 #725500)}
.walk-rizo .wearable-chain .wearable-front,.rhythm-rizo .wearable-chain .wearable-front,.behavior-dance .wearable-chain .wearable-front{animation:chainSettle .48s ease-in-out infinite alternate}
@keyframes chainSettle{to{translate:var(--wear-x,0%) calc(var(--wear-y,0%) + 1.5%);transform:rotate(calc(var(--wearable-rotate,0deg) + 1.5deg)) scale(var(--wearable-scale,1))}}
.wearable-scarf .wearable-back::before{right:23%;top:57%;width:15%;height:31%;background:#16bfe9;border-width:5px;clip-path:polygon(0 0,100% 5%,70% 100%,10% 82%);transform:rotate(-17deg);transform-origin:20% 0}
.wearable-scarf .wearable-body::before{left:25%;top:55%;width:52%;height:16%;background:#16c8ff;border-width:6px;border-radius:50%;transform:rotate(1deg);box-shadow:inset 0 -4px 0 #0a7590}
.walk-rizo .wearable-scarf .wearable-back::before,.behavior-zoomies .wearable-scarf .wearable-back::before,.rhythm-rizo .wearable-scarf .wearable-back::before{animation:scarfTrail .5s ease-in-out infinite alternate}@keyframes scarfTrail{to{transform:rotate(-29deg) translate(-5px,2px)}}
.wearable-wings .wearable-back::before{left:-3%;top:39%;width:38%;height:38%;background:#151a22;border-width:7px;clip-path:polygon(100% 44%,60% 0,55% 35%,10% 15%,30% 55%,0 90%,58% 76%,75% 100%);transform:rotate(-11deg)}
.wearable-wings .wearable-back::after{right:-3%;top:39%;width:38%;height:38%;background:#151a22;border-width:7px;clip-path:polygon(0 44%,40% 0,45% 35%,90% 15%,70% 55%,100% 90%,42% 76%,25% 100%);transform:rotate(11deg)}
.walk-rizo .wearable-wings .wearable-back,.rhythm-rizo .wearable-wings .wearable-back,.behavior-zoomies .wearable-wings .wearable-back{animation:wingTrail .62s ease-in-out infinite alternate}@keyframes wingTrail{to{transform:rotate(-2deg) scale(.97)}}
.wearable-cape .wearable-back::before{right:4%;top:39%;width:43%;height:50%;background:#ec4558;border-width:7px;clip-path:polygon(0 0,100% 13%,76% 100%,18% 82%);transform:rotate(-10deg);transform-origin:8% 5%}
.walk-rizo .wearable-cape .wearable-back::before,.behavior-zoomies .wearable-cape .wearable-back::before,.rhythm-rizo .wearable-cape .wearable-back::before{animation:capeTrail .5s ease-in-out infinite alternate}@keyframes capeTrail{to{transform:rotate(-20deg) skewY(4deg) translate(-4px,2px)}}
.wearable-backpack .wearable-back::before{right:1%;top:39%;width:38%;height:42%;background:#745630;border-width:7px;border-radius:22% 42% 38% 20%;box-shadow:inset 0 10px 0 #916f43}
.wearable-backpack .wearable-body::before{right:28%;top:43%;width:19%;height:38%;background:transparent;border-width:5px;border-left:0;border-radius:0 50% 50% 0}

/* Settling: hats compress on landings/hits, but remain physically anchored. */
.rhythm-hit .wearable-beanie .wearable-body::before,.rhythm-hit .wearable-cap .wearable-body::before,.rhythm-hit .wearable-bucket .wearable-body::before,.rush-rizo:not(.rush-hurt) .wearable-beanie .wearable-body::before{animation:hatSettle .22s ease-out}@keyframes hatSettle{45%{transform:translateY(3px) scale(1.04,.89) rotate(-4deg)}100%{transform:none}}

/* Controlled brand-mark placements. */
.face-mark-icon{display:block;width:31px;height:20px;object-fit:contain;filter:none!important}
.den-face-mark{position:absolute;left:8%;top:24%;width:54px;height:32px;object-fit:contain;opacity:.12;transform:rotate(-8deg);z-index:2;pointer-events:none}
.rizo-origin-stamp{padding-left:25px!important}.rizo-origin-stamp::before{content:"";position:absolute;left:7px;top:50%;width:15px;height:10px;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;transform:translateY(-50%)}
.season-card::after{content:""!important;width:112px;height:68px;right:2px;top:-2px;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;opacity:.055;transform:rotate(8deg)}
.face-mark-stage{width:42px;height:27px;display:grid;place-items:center}.face-mark-stage img{display:block;width:100%;height:100%;object-fit:contain;filter:none!important}
.shop-item.rarity-card-legendary::before{content:"";width:18px;height:12px;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;opacity:.58;position:absolute;right:5px;top:5px}.shop-item{position:relative}

/* Ember Beat song identity and feedback. */
.rhythm-stage{background:#111923!important;border-color:#263746!important}.rhythm-face-mark{position:absolute!important;left:50%!important;top:48%!important;width:82px!important;height:50px!important;object-fit:contain!important;translate:-50% -50%!important;scale:1!important;opacity:.28;filter:none!important}
.rhythm-track-intro{position:absolute;left:50%;top:20px;z-index:30;min-width:190px;translate:-50% 0;text-align:center;border:2px solid #16c8ff;background:#0a1119;padding:8px 14px;border-radius:12px;box-shadow:5px 5px 0 #000;animation:trackCardIn .35s ease-out both}.rhythm-track-intro small,.rhythm-track-intro span{display:block;font-size:7px;color:#8ba0b4;letter-spacing:.14em}.rhythm-track-intro b{display:block;color:#fff;font-size:13px;margin:3px 0}.rhythm-track-intro.leave{animation:trackCardOut .28s ease-in forwards}@keyframes trackCardIn{from{opacity:0;transform:translateY(-18px) scale(.88)}}@keyframes trackCardOut{to{opacity:0;transform:translateY(-14px) scale(.92)}}
.rhythm-note.hit{animation:beatHit .15s ease-out forwards}@keyframes beatHit{to{opacity:0;transform:scale(1.8)}}
.song-result{border-color:#16c8ff;background:#0b3f4f;color:#bff6ff}

/* Motion accessibility keeps attached geometry without secondary sway. */
body.reduce-motion .wearable>span,body.reduce-motion .wearable>span::before,body.reduce-motion .wearable>span::after{animation:none!important;transition:none!important}
body.reduce-motion .rhythm-track-intro{animation:none!important}

@media(max-width:350px){.den-face-mark{width:42px}.rhythm-track-intro{min-width:160px;top:14px;padding:6px 10px}}
/* Final identity calibration: the bandana sits below the facial band instead
   of reading as a forehead sticker. */
.wearable-bandana .wearable-back::before{top:72%}
.wearable-bandana .wearable-back::after{top:71%}
.wearable-bandana .wearable-body::before{top:70%;height:13%}
.wearable-bandana .wearable-body::after{top:74%}
.wearable-bandana .wearable-front::before{top:72%}
.wearable-bandana .wearable-front::after{top:73.5%}
.view-hero::after{content:""!important;right:2px;bottom:-2px;width:152px;height:92px;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;opacity:.045;transform:rotate(-10deg)}
/* The canonical PNGs carry generous transparent padding. These canvas-space
   positions put the wrap under the X-mouth instead of at the eye line. */
.wearable-bandana{--band-top:92%}
.stage-beast .wearable-bandana{--band-top:94%}
.stage-teen .wearable-bandana{--band-top:96%}
.stage-kid .wearable-bandana{--band-top:97%}
.stage-spark .wearable-bandana{--band-top:98%}
.wearable-bandana .wearable-back::before{top:calc(var(--band-top) + 2%)}
.wearable-bandana .wearable-back::after{top:calc(var(--band-top) + 1%)}
.wearable-bandana .wearable-body::before{top:var(--band-top);height:11%}
.wearable-bandana .wearable-body::after{top:calc(var(--band-top) + 4%)}
.wearable-bandana .wearable-front::before{top:calc(var(--band-top) + 2%)}
.wearable-bandana .wearable-front::after{top:calc(var(--band-top) + 3.5%)}
/* Mature art has a taller internal face panel than Baby. Keep the wrap beneath
   the complete X-band at every age instead of using one canvas percentage. */
.wearable-bandana{--band-top:110%}
.stage-beast .wearable-bandana{--band-top:108%}
.stage-teen .wearable-bandana{--band-top:105%}
.stage-kid .wearable-bandana{--band-top:102%}
.stage-spark .wearable-bandana{--band-top:98%}
.result-track-title{display:inline-flex;align-items:center;justify-content:center;margin:2px auto 8px;padding:5px 10px;border:1px solid #16c8ff;border-radius:999px;background:#0b1520;color:#eafcff;font-size:8px;letter-spacing:.12em;box-shadow:3px 3px 0 #000}
/* ========================================================================
   ART-DIRECTED WEARABLE LIBRARY — V17
   Local edited SVG layers replace the earlier CSS primitive drawings while
   preserving the central wearable-back/body/front renderer and save IDs.
   ======================================================================== */
.wearable>span::before,.wearable>span::after{content:none!important;display:none!important}
.wearable>span{background-repeat:no-repeat!important;background-position:center!important;background-size:100% 100%!important}
.wearable-item-icon{display:block;width:42px;height:42px;max-width:92%;max-height:92%;object-fit:contain;margin:auto;filter:none!important;transform:none!important}
.shop-item-icon:has(.wearable-item-icon){background:#202832;border:1px solid #35404d;overflow:hidden}

.wearable-antenna .wearable-back{background-image:url("./assets/wearables/antenna-back.svg")}
.wearable-antenna .wearable-front{background-image:url("./assets/wearables/antenna-front.svg")}
.wearable-backpack .wearable-back{background-image:url("./assets/wearables/backpack-back.svg")}
.wearable-backpack .wearable-body{background-image:url("./assets/wearables/backpack-body.svg")}
.wearable-backpack .wearable-front{background-image:url("./assets/wearables/backpack-front.svg")}
.wearable-bandana .wearable-back{background-image:url("./assets/wearables/bandana-back.svg")}
.wearable-bandana .wearable-body{background-image:url("./assets/wearables/bandana-body.svg")}
.wearable-bandana .wearable-front{background-image:url("./assets/wearables/bandana-front.svg")}
.wearable-beanie .wearable-body{background-image:url("./assets/wearables/beanie-body.svg")}
.wearable-beanie .wearable-front{background-image:url("./assets/wearables/beanie-front.svg")}
.wearable-bow .wearable-front{background-image:url("./assets/wearables/bow-front.svg")}
.wearable-bucket .wearable-body{background-image:url("./assets/wearables/bucket-body.svg")}
.wearable-bucket .wearable-front{background-image:url("./assets/wearables/bucket-front.svg")}
.wearable-cap .wearable-body{background-image:url("./assets/wearables/cap-body.svg")}
.wearable-cap .wearable-front{background-image:url("./assets/wearables/cap-front.svg")}
.wearable-cape .wearable-back{background-image:url("./assets/wearables/cape-back.svg")}
.wearable-cape .wearable-front{background-image:url("./assets/wearables/cape-front.svg")}
.wearable-chain .wearable-front{background-image:url("./assets/wearables/chain-front.svg")}
.wearable-crown .wearable-front{background-image:url("./assets/wearables/crown-front.svg")}
.wearable-earmuffs .wearable-body{background-image:url("./assets/wearables/earmuffs-body.svg")}
.wearable-earmuffs .wearable-front{background-image:url("./assets/wearables/earmuffs-front.svg")}
.wearable-eyepatch .wearable-back{background-image:url("./assets/wearables/eyepatch-back.svg")}
.wearable-eyepatch .wearable-front{background-image:url("./assets/wearables/eyepatch-front.svg")}
.wearable-flower .wearable-back{background-image:url("./assets/wearables/flower-back.svg")}
.wearable-flower .wearable-front{background-image:url("./assets/wearables/flower-front.svg")}
.wearable-goggles .wearable-back{background-image:url("./assets/wearables/goggles-back.svg")}
.wearable-goggles .wearable-front{background-image:url("./assets/wearables/goggles-front.svg")}
.wearable-halo .wearable-back{background-image:url("./assets/wearables/halo-back.svg")}
.wearable-headphones .wearable-body{background-image:url("./assets/wearables/headphones-body.svg")}
.wearable-headphones .wearable-front{background-image:url("./assets/wearables/headphones-front.svg")}
.wearable-horns .wearable-back{background-image:url("./assets/wearables/horns-back.svg")}
.wearable-horns .wearable-front{background-image:url("./assets/wearables/horns-front.svg")}
.wearable-leafcrown .wearable-back{background-image:url("./assets/wearables/leafcrown-back.svg")}
.wearable-leafcrown .wearable-front{background-image:url("./assets/wearables/leafcrown-front.svg")}
.wearable-mask .wearable-back{background-image:url("./assets/wearables/mask-back.svg")}
.wearable-mask .wearable-front{background-image:url("./assets/wearables/mask-front.svg")}
.wearable-scarf .wearable-back{background-image:url("./assets/wearables/scarf-back.svg")}
.wearable-scarf .wearable-body{background-image:url("./assets/wearables/scarf-body.svg")}
.wearable-scarf .wearable-front{background-image:url("./assets/wearables/scarf-front.svg")}
.wearable-shades .wearable-back{background-image:url("./assets/wearables/shades-back.svg")}
.wearable-shades .wearable-front{background-image:url("./assets/wearables/shades-front.svg")}
.wearable-starclip .wearable-back{background-image:url("./assets/wearables/starclip-back.svg")}
.wearable-starclip .wearable-front{background-image:url("./assets/wearables/starclip-front.svg")}
.wearable-visor .wearable-back{background-image:url("./assets/wearables/visor-back.svg")}
.wearable-visor .wearable-front{background-image:url("./assets/wearables/visor-front.svg")}
.wearable-wings .wearable-back{background-image:url("./assets/wearables/wings-back.svg")}

/* Layer-level secondary motion: small enough to feel attached, strong enough
   to communicate fabric, weight, and settling. */
@keyframes gearTailLag{from{transform:rotate(calc(var(--wearable-rotate,0deg) - 1deg)) scale(var(--wearable-scale,1)) translateX(0)}to{transform:rotate(calc(var(--wearable-rotate,0deg) + 2.5deg)) scale(var(--wearable-scale,1)) translateX(-3px)}}
@keyframes gearSoftBreathe{0%,100%{transform:rotate(var(--wearable-rotate,0deg)) scale(var(--wearable-scale,1))}50%{transform:rotate(var(--wearable-rotate,0deg)) scale(calc(var(--wearable-scale,1) * 1.008),calc(var(--wearable-scale,1) * 1.018)) translateY(-1px)}}
@keyframes gearChainWeight{from{transform:rotate(calc(var(--wearable-rotate,0deg) - .6deg)) scale(var(--wearable-scale,1)) translateY(0)}to{transform:rotate(calc(var(--wearable-rotate,0deg) + .8deg)) scale(var(--wearable-scale,1)) translateY(3px)}}
@keyframes gearWingTrail{from{transform:rotate(calc(var(--wearable-rotate,0deg) - .8deg)) scale(var(--wearable-scale,1))}to{transform:rotate(calc(var(--wearable-rotate,0deg) + .8deg)) scale(calc(var(--wearable-scale,1) * .985),calc(var(--wearable-scale,1) * 1.012)) translateX(-2px)}}
@keyframes gearHatSettle{0%{transform:rotate(var(--wearable-rotate,0deg)) scale(var(--wearable-scale,1))}45%{transform:rotate(calc(var(--wearable-rotate,0deg) - 1deg)) scale(calc(var(--wearable-scale,1) * 1.025),calc(var(--wearable-scale,1) * .94)) translateY(3px)}100%{transform:rotate(var(--wearable-rotate,0deg)) scale(var(--wearable-scale,1))}}
@keyframes gearClipBob{from{transform:rotate(calc(var(--wearable-rotate,0deg) - .5deg)) scale(var(--wearable-scale,1))}to{transform:rotate(calc(var(--wearable-rotate,0deg) + .8deg)) scale(var(--wearable-scale,1)) translateY(-1px)}}
.pet-actor:not(.sleeping) .wearable-bandana .wearable-body,.pet-actor:not(.sleeping) .wearable-scarf .wearable-body{animation:gearSoftBreathe 2.4s ease-in-out infinite}
.walk-rizo .wearable-bandana .wearable-back,.behavior-wander-left .wearable-bandana .wearable-back,.behavior-wander-right .wearable-bandana .wearable-back,.behavior-zoomies .wearable-bandana .wearable-back,.rhythm-rizo .wearable-bandana .wearable-back,
.walk-rizo .wearable-scarf .wearable-back,.behavior-zoomies .wearable-scarf .wearable-back,.rhythm-rizo .wearable-scarf .wearable-back,
.walk-rizo .wearable-cape .wearable-back,.behavior-zoomies .wearable-cape .wearable-back,.rhythm-rizo .wearable-cape .wearable-back{animation:gearTailLag .48s ease-in-out infinite alternate}
.walk-rizo .wearable-backpack .wearable-back,.behavior-zoomies .wearable-backpack .wearable-back,.rhythm-rizo .wearable-backpack .wearable-back{animation:gearTailLag .62s ease-in-out infinite alternate-reverse}
.walk-rizo .wearable-wings .wearable-back,.behavior-zoomies .wearable-wings .wearable-back,.rhythm-rizo .wearable-wings .wearable-back{animation:gearWingTrail .58s ease-in-out infinite alternate}
.walk-rizo .wearable-chain .wearable-front,.behavior-dance .wearable-chain .wearable-front,.rhythm-rizo .wearable-chain .wearable-front{animation:gearChainWeight .46s ease-in-out infinite alternate}
.behavior-dance .wearable-bow .wearable-front,.behavior-dance .wearable-flower .wearable-front,.behavior-dance .wearable-starclip .wearable-front,.rhythm-rizo .wearable-bow .wearable-front,.rhythm-rizo .wearable-flower .wearable-front,.rhythm-rizo .wearable-starclip .wearable-front{animation:gearClipBob .54s ease-in-out infinite alternate}
.rhythm-hit .wearable-beanie .wearable-body,.rhythm-hit .wearable-beanie .wearable-front,.rhythm-hit .wearable-cap .wearable-body,.rhythm-hit .wearable-cap .wearable-front,.rhythm-hit .wearable-bucket .wearable-body,.rhythm-hit .wearable-bucket .wearable-front,.rush-rizo:not(.rush-hurt) .wearable-beanie .wearable-body,.rush-rizo:not(.rush-hurt) .wearable-cap .wearable-body,.rush-rizo:not(.rush-hurt) .wearable-bucket .wearable-body{animation:gearHatSettle .22s ease-out}
body.reduce-motion .wearable>span{animation:none!important;transition:none!important}


/* ========================================================================
   PROPORTION + GEAR FIT AUDIT — V19
   Life stages use the exact canonical silhouette at uniform scale. Gear stays
   in canonical local coordinates, with only small stage-specific reductions
   for bulky pieces that would visually bury the smallest Rizo.
   ======================================================================== */
.wearable-shades{--gear-scale-x:.90;--gear-scale-y:.85;--gear-shift-y:4%}
.stage-spark .wearable-shades{--gear-scale-x:.87;--gear-scale-y:.82;--gear-shift-y:4.5%}
.stage-kid .wearable-shades{--gear-scale-x:.88;--gear-scale-y:.83;--gear-shift-y:4.25%}
.stage-teen .wearable-shades{--gear-scale-x:.89;--gear-scale-y:.84;--gear-shift-y:4%}
.stage-beast .wearable-shades{--gear-scale-x:.90;--gear-scale-y:.85;--gear-shift-y:4%}

/* The canonical Rizo PNGs now share one normalized silhouette. Keep the
   headphone cups outside both eyes at every age instead of shrinking them
   inward on smaller stages. */
.wearable-headphones{--gear-scale-x:1.06;--gear-scale-y:.90;--gear-shift-y:4%}
.stage-spark .wearable-headphones,
.stage-kid .wearable-headphones,
.stage-teen .wearable-headphones,
.stage-beast .wearable-headphones,
.stage-legend .wearable-headphones{--gear-scale-x:1.06;--gear-scale-y:.90;--gear-shift-y:4%}

.wearable-bandana,.wearable-scarf{--gear-scale-x:.96;--gear-scale-y:.92;--gear-shift-y:-1%}
.stage-spark .wearable-bandana,.stage-spark .wearable-scarf{--gear-scale-x:.91;--gear-scale-y:.88;--gear-shift-y:-1.5%}
.stage-kid .wearable-bandana,.stage-kid .wearable-scarf{--gear-scale-x:.93;--gear-scale-y:.89;--gear-shift-y:-1.25%}
.stage-teen .wearable-bandana,.stage-teen .wearable-scarf{--gear-scale-x:.94;--gear-scale-y:.90;--gear-shift-y:-1%}
.stage-beast .wearable-bandana,.stage-beast .wearable-scarf{--gear-scale-x:.95;--gear-scale-y:.91;--gear-shift-y:-1%}

.stage-spark .wearable-chain{--gear-scale-x:.90;--gear-scale-y:.90;--gear-shift-y:-1%}
.stage-kid .wearable-chain{--gear-scale-x:.93;--gear-scale-y:.93;--gear-shift-y:-1%}
.stage-spark .wearable-crown,.stage-spark .wearable-horns,.stage-spark .wearable-bow{--gear-scale-x:.90;--gear-scale-y:.90}
.stage-spark .wearable-wings,.stage-spark .wearable-cape,.stage-spark .wearable-backpack{--gear-scale-x:.88;--gear-scale-y:.88}
.stage-spark .wearable-goggles,.stage-spark .wearable-visor,.stage-spark .wearable-mask{--gear-scale-x:.90;--gear-scale-y:.90;--gear-shift-y:-1%}
.stage-spark .wearable-beanie,.stage-spark .wearable-cap,.stage-spark .wearable-bucket{--gear-scale-x:.91;--gear-scale-y:.91}
.stage-spark .wearable-earmuffs{--gear-scale-x:.89;--gear-scale-y:.91}
.stage-spark .wearable-flower,.stage-spark .wearable-starclip,.stage-spark .wearable-antenna,.stage-spark .wearable-leafcrown{--gear-scale-x:.92;--gear-scale-y:.92}

@keyframes headphoneSettle{0%,100%{translate:var(--wear-x,0%) var(--wear-y,0%)}45%{translate:var(--wear-x,0%) calc(var(--wear-y,0%) + 1.5%)}}
.rhythm-hit .wearable-headphones,.rush-rizo:not(.rush-hurt) .wearable-headphones,.behavior-zoomies .wearable-headphones{animation:headphoneSettle .24s ease-out}
body.reduce-motion .wearable-headphones{animation:none!important}


/* ========================================================================
   VISUAL COHESION + TRUE ATTACHMENT PASS — V21
   The body sprite and every wearable now live inside one transform owner.
   Primary breath/bob/lean/squash can no longer drift between sibling layers.
   ======================================================================== */
.rizo-motion-shell{position:absolute;inset:0;display:block;transform-origin:50% 84%;pointer-events:none;z-index:4;animation:rizoLivingBreath 2.35s cubic-bezier(.45,.05,.55,.95) infinite;will-change:transform}
.rizo-motion-shell>img{position:absolute!important;inset:0;width:100%!important;height:100%!important;object-fit:contain;animation:none!important}
.rizo-motion-shell>.accessory-layer{position:absolute;inset:0}
.pet-actor>.rizo-motion-shell,.mini-pet>.rizo-motion-shell{z-index:4}
.pet-actor>.rizo-motion-shell .wearable-back,.mini-pet>.rizo-motion-shell .wearable-back{z-index:2}
.pet-actor>.rizo-motion-shell>img,.mini-pet>.rizo-motion-shell>img{z-index:4}
.pet-actor>.rizo-motion-shell .wearable-body,.mini-pet>.rizo-motion-shell .wearable-body{z-index:5}
.pet-actor>.rizo-motion-shell .wearable-front,.mini-pet>.rizo-motion-shell .wearable-front{z-index:8}
@keyframes rizoLivingBreath{
  0%,100%{transform:translateY(0) rotate(-.55deg) scale(1,1)}
  48%{transform:translateY(-6px) rotate(.45deg) scale(.992,1.016)}
  58%{transform:translateY(-6.5px) rotate(.5deg) scale(.99,1.019)}
}
.pet-actor.sleeping .rizo-motion-shell,.mini-pet.sleeping .rizo-motion-shell{animation:sleepLivingBreath 2.8s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes sleepLivingBreath{0%,100%{transform:translateY(1px) scale(1,.965)}50%{transform:translateY(5px) scale(1.018,.91)}}

/* Existing action animations move the same shell, so body and gear stay locked. */
.pet-actor.behavior-dance .rizo-motion-shell{animation:petDance .42s ease-in-out 7!important}
.pet-actor.behavior-stretch .rizo-motion-shell{animation:petStretch 1.1s ease-in-out 3!important}
.rhythm-rizo .rizo-motion-shell{animation:rhythmIdle .7s ease-in-out infinite}
.rhythm-rizo.rhythm-hit .rizo-motion-shell{animation:rhythmDance .24s ease-out}
[data-rizo-variant="retro"] .rizo-motion-shell{animation:retroIdle 2.1s steps(4,end) infinite}
[data-rizo-variant="glitch"] .rizo-motion-shell{animation:rizoLivingBreath 2.35s ease-in-out infinite,glitchIdle 3.9s steps(1,end) infinite}

/* Contact and material language: attached first, secondary motion second. */
.wearable-body,.wearable-front{filter:drop-shadow(0 2px 0 rgba(3,5,9,.34))}
.wearable-chain .wearable-front,.wearable-crown .wearable-front,.wearable-headphones .wearable-front{filter:drop-shadow(0 2px 0 rgba(3,5,9,.42)) drop-shadow(0 0 2px rgba(255,255,255,.12))}
.wearable-scarf .wearable-back,.wearable-bandana .wearable-back,.wearable-cape .wearable-back{transform-origin:39% 46%}

/* Canonical brand mark. No R! substitute survives in branded UI. */
.brand-face{display:grid!important;place-items:center!important}
.brand-face img{display:block;width:72%;height:72%;object-fit:contain;filter:drop-shadow(0 2px 0 rgba(0,0,0,.45))}
.brand-sheet-icon img{display:block;width:28px;height:28px;object-fit:contain;margin:auto}
.ember-coin{font-family:inherit}

body.reduce-motion .rizo-motion-shell{animation:none!important;transform:none!important;will-change:auto}

/* ===== RIZO HOUSE: passive multi-room storage ===== */
.house-section{margin-top:13px;display:grid;gap:12px}
.house-room-rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:5px;border:1px solid #252e39;border-radius:15px;background:#0e1319}
.house-room-chip{min-width:0;border:1px solid transparent;border-radius:11px;background:#171d26;color:#fff;padding:8px 3px;display:grid;justify-items:center;gap:2px}
.house-room-chip span{font-size:16px}.house-room-chip b{font-size:6.8px;white-space:nowrap}.house-room-chip small{font-size:6px;color:var(--muted)}
.house-room-chip.active{border-color:#16c8ff;background:#182832;box-shadow:0 0 18px rgba(22,200,255,.13)}
.house-room-chip.locked{background:#12151b;color:#6d7682;border-style:dashed}.house-room-chip.locked small{color:#d8b45a}
.house-room-head{display:grid;grid-template-columns:38px 1fr 38px;gap:9px;align-items:center;border:1px solid #2c3643;background:#11171e;border-radius:17px;padding:10px}
.house-room-head>button{width:38px;height:46px;border:1px solid #354150;border-radius:12px;background:#1d2630;color:#fff;font-size:24px;font-weight:900}.house-room-head>button:disabled{opacity:.22}
.house-room-head small{font-size:7px;color:var(--muted);letter-spacing:.08em}.house-room-head h2{font-size:15px;margin:3px 0}.house-room-head p{font-size:7px;line-height:1.45;color:var(--muted);margin:0}
.house-scene{position:relative;height:330px;border-radius:23px;border:1px solid #35404d;overflow:hidden;isolation:isolate;background:#101821;box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 17px 40px rgba(0,0,0,.22)}
.house-sky,.house-floor,.house-room-light,.house-resident-link,.house-wall-mark,.house-window,.house-prop{position:absolute;pointer-events:none}
.house-sky{inset:0 0 34%;z-index:-5;background:linear-gradient(180deg,#263b4b,#182731)}
.house-floor{left:0;right:0;bottom:0;height:36%;z-index:-3;background:repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 44px),linear-gradient(#27323a,#171d22)}
.house-floor:before{content:"";position:absolute;left:8%;right:8%;top:18%;bottom:10%;border-radius:50%;background:radial-gradient(ellipse,rgba(22,200,255,.14),transparent 66%);filter:blur(2px)}
.house-window{left:50%;top:25px;width:42%;height:105px;transform:translateX(-50%);border:8px solid #101820;border-radius:18px;background:linear-gradient(#5f8498,#1d3a4c);box-shadow:0 0 0 1px #435160,0 13px 30px rgba(0,0,0,.25);overflow:hidden}
.house-window:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 48%,rgba(8,15,21,.65) 49% 52%,transparent 53%),linear-gradient(transparent 55%,rgba(8,15,21,.62) 56% 60%,transparent 61%)}
.house-window i{position:absolute;inset:-20%;background:repeating-linear-gradient(104deg,transparent 0 13px,rgba(220,245,255,.28) 14px 16px,transparent 17px 30px);animation:houseRain 1.3s linear infinite}
.house-wall-mark{left:7%;top:21%;width:46px;height:26px;opacity:.08;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;transform:rotate(-9deg)}
.house-prop-left{left:4%;bottom:18%;width:56px;height:52px;border-radius:8px 8px 4px 4px;background:linear-gradient(90deg,#1c242b 0 18%,#394653 19% 81%,#1c242b 82%);box-shadow:0 7px 0 rgba(0,0,0,.18)}
.house-prop-left:before{content:"";position:absolute;left:11px;right:11px;top:-16px;height:20px;border:4px solid #2d3944;border-bottom:0;border-radius:10px 10px 0 0}
.house-prop-right{right:5%;bottom:16%;width:48px;height:68px;border-radius:16px 16px 7px 7px;background:radial-gradient(circle at 50% 23%,#9eff75 0 8px,transparent 9px),linear-gradient(90deg,#28341f,#43512c);box-shadow:0 7px 0 rgba(0,0,0,.18)}
.house-room-light{left:50%;top:5px;width:130px;height:230px;transform:translateX(-50%);background:linear-gradient(180deg,rgba(255,244,190,.15),transparent 78%);clip-path:polygon(42% 0,58% 0,100% 100%,0 100%);z-index:-1;animation:houseLight 4.4s ease-in-out infinite}
.house-resident-link{left:25%;right:25%;bottom:26%;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);z-index:1}
.house-resident{position:absolute;left:var(--resident-x);top:var(--resident-y);width:116px;height:150px;transform:translate(-50%,-58%);border:0;background:transparent;padding:0;z-index:6;display:block;touch-action:manipulation;filter:drop-shadow(0 8px 0 rgba(0,0,0,.12))}
.house-resident:focus-visible{outline:2px solid var(--resident-color);outline-offset:2px;border-radius:18px}.house-resident:active{scale:.95}
.house-resident-life{position:absolute;inset:0;display:grid;place-items:end center;pointer-events:none;animation:houseResidentIdle 3.4s ease-in-out infinite;animation-delay:var(--resident-delay)}
.house-resident-pet{position:absolute!important;left:50%!important;top:49%!important;bottom:auto!important;transform:translate(-50%,-50%) scale(.72)!important;pointer-events:none}
.house-resident-name{position:relative;z-index:20;margin-bottom:7px;max-width:104px;overflow:hidden;text-overflow:ellipsis;font-style:normal;font-size:6.5px;font-weight:1000;letter-spacing:.06em;color:#fff;border:1px solid var(--resident-color);background:rgba(7,10,14,.82);border-radius:999px;padding:4px 7px;white-space:nowrap}
.house-thought{position:absolute;left:50%;top:-5px;transform:translate(-50%,-7px);width:max-content;max-width:145px;background:#fffdf4;border:2px solid #081217;color:#081217;border-radius:10px;padding:7px 8px;font-size:6.3px;font-weight:1000;line-height:1.35;opacity:0;pointer-events:none;box-shadow:3px 3px 0 rgba(0,0,0,.16);animation:houseThought 12s ease-in-out infinite;animation-delay:calc(var(--resident-delay) - 1s)}
.house-thought:after{content:"";position:absolute;left:50%;bottom:-6px;width:9px;height:9px;background:#fffdf4;border-right:2px solid #081217;border-bottom:2px solid #081217;transform:translateX(-50%) rotate(45deg)}.resident-left .house-thought{left:58%}.resident-right .house-thought{left:42%}
.house-empty{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:7px;text-align:center;color:var(--muted);padding:20px}.house-empty b{font-size:12px;color:#fff}.house-empty span{font-size:7.5px;line-height:1.5}
.house-room-loft .house-sky{background:linear-gradient(180deg,#34204c,#171126)}.house-room-loft .house-window{background:linear-gradient(135deg,#16c8ff,#ff68bd);box-shadow:0 0 34px rgba(255,104,189,.22)}.house-room-loft .house-floor{background:repeating-linear-gradient(90deg,rgba(22,200,255,.08) 0 1px,transparent 1px 38px),linear-gradient(#282039,#15121d)}
.house-room-rooftop .house-sky{background:radial-gradient(circle at 72% 20%,#dffbff 0 8px,transparent 9px),radial-gradient(circle at 18% 24%,#fff 0 1px,transparent 2px),linear-gradient(#11142e,#26204b)}.house-room-rooftop .house-window{left:50%;top:0;width:100%;height:66%;border:0;border-radius:0;background:linear-gradient(transparent,rgba(8,11,24,.3));box-shadow:none}.house-room-rooftop .house-floor{height:39%;background:repeating-linear-gradient(90deg,#262c37 0 34px,#20252e 34px 68px);border-top:4px solid #434c59}.house-room-rooftop .house-prop-right{background:linear-gradient(#3d4650,#232a31)}
.house-room-penthouse .house-sky{background:radial-gradient(circle at 50% 50%,rgba(255,213,74,.18),transparent 24%),linear-gradient(#2e2418,#17130f)}.house-room-penthouse .house-window{background:linear-gradient(#be8d45,#3a2616);border-color:#1a130b;box-shadow:0 0 32px rgba(255,213,74,.2)}.house-room-penthouse .house-floor{background:repeating-linear-gradient(90deg,rgba(255,213,74,.08) 0 1px,transparent 1px 38px),linear-gradient(#473824,#211a12)}.house-room-penthouse .house-prop-left,.house-room-penthouse .house-prop-right{filter:saturate(.8) sepia(.25)}
.house-hint{margin:0;text-align:center;color:var(--muted);font-size:7.3px;line-height:1.55;padding:0 10px}
.house-adoption-card,.house-expand-card{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;border:1px solid #313c49;background:linear-gradient(130deg,#151d25,#10151b);border-radius:17px;padding:12px}.house-adoption-card small,.house-expand-card small{font-size:6.5px;color:var(--muted);letter-spacing:.09em}.house-adoption-card h3,.house-expand-card h3{font-size:11px;margin:4px 0}.house-adoption-card p,.house-expand-card p{font-size:7px;line-height:1.45;color:var(--muted);margin:0}.house-adoption-card button,.house-expand-card button{min-height:43px;border:0;border-radius:12px;background:#168aa8;color:#fff;font-size:7.5px;font-weight:1000;padding:0 12px}.house-expand-card button{background:#65501c;color:#ffe07a}.house-adoption-card button.short-on-embers{background:#2a2024;color:#ff9cac}.house-expand-card.complete{grid-template-columns:1fr;border-color:#5e5129;background:linear-gradient(130deg,#211c11,#12100b)}
.house-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.house-stat-row span{display:grid;justify-items:center;gap:3px;border:1px solid #2d3743;background:#11161d;border-radius:12px;padding:9px 5px;color:var(--muted);font-size:6.5px}.house-stat-row b{color:#fff;font-size:12px}
.house-detail-pet{position:relative!important;left:auto!important;top:auto!important;bottom:auto!important;margin:auto;transform:scale(.85)!important}.house-detail-note{font-size:8px!important;color:var(--muted)!important;line-height:1.5!important}
.release-scene .release-line{font-size:10px;line-height:1.7;color:var(--muted);font-style:italic;margin:4px 0}.release-scene h2{margin-top:6px}
@keyframes houseRain{to{transform:translate(-28px,48px)}}
@keyframes houseLight{0%,100%{opacity:.55}50%{opacity:.9}}
@keyframes houseResidentIdle{0%,100%{margin-top:0}50%{margin-top:-7px}}
@keyframes houseThought{0%,68%,100%{opacity:0;transform:translate(-50%,-7px)}73%,86%{opacity:1;transform:translate(-50%,0)}91%{opacity:0;transform:translate(-50%,4px)}}
body.reduce-motion .house-window i,body.reduce-motion .house-room-light,body.reduce-motion .house-resident-life,body.reduce-motion .house-thought{animation:none!important}.house-thought{opacity:0}
@media(max-width:370px){.house-scene{height:300px}.house-resident{width:96px;height:132px}.house-resident-pet{transform:translate(-50%,-50%) scale(.62)!important}.house-room-chip b{font-size:5.9px}.house-adoption-card,.house-expand-card{grid-template-columns:1fr}.house-adoption-card button,.house-expand-card button{width:100%}}

/* Arcade readiness feedback: buttons explain blockers instead of appearing dead. */
.game-card button.game-blocked{background:#2a2024!important;border-color:#56313a!important;color:#ff9cac!important;box-shadow:none!important}


/* ===== V28 LIVING HOUSE + GUIDED CARE ===== */
.bottom-nav button{position:relative}
.bottom-nav button.feature-locked{color:#717b87}
.bottom-nav button.feature-locked:after{content:attr(data-lock-label);position:absolute;right:4px;top:4px;border:1px solid #65572c;background:#241f13;color:#ffe07a;border-radius:999px;padding:2px 4px;font-size:5px;font-weight:1000;letter-spacing:.06em}
.tutorial-focus{position:relative;z-index:16;outline:2px solid #16c8ff!important;outline-offset:3px;animation:tutorialFocus 1.4s ease-in-out infinite}
@keyframes tutorialFocus{50%{filter:drop-shadow(0 0 12px rgba(22,200,255,.72))}}

.keeper-guide-modal{max-width:440px}
.keeper-guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}
.keeper-guide-grid article{display:grid;grid-template-columns:28px 1fr;gap:2px 7px;align-items:center;text-align:left;border:1px solid #313c49;background:#121820;border-radius:14px;padding:10px}
.keeper-guide-grid article>span{grid-row:1/3;font-size:23px}.keeper-guide-grid b{font-size:9px}.keeper-guide-grid p{margin:0!important;font-size:7px!important;line-height:1.4!important;color:var(--muted)!important}
.keeper-warning{display:grid;gap:4px;border:1px solid #61323a;background:#24161a;border-radius:13px;padding:11px;text-align:left}.keeper-warning b{color:#ff8b98;font-size:8px}.keeper-warning span{color:#d4b4ba;font-size:7.5px;line-height:1.45}

body.feed-mode .sheet-backdrop{background:rgba(0,0,0,.18);backdrop-filter:none;pointer-events:none}
body.feed-mode .bottom-sheet.feed-sheet{max-height:245px;background:rgba(13,18,25,.96);border-color:#4d3b2d;box-shadow:0 -18px 55px rgba(0,0,0,.56)}
body.feed-mode .bottom-sheet.feed-sheet header{margin-bottom:7px}
body.feed-mode .bottom-sheet.feed-sheet .sheet-body{display:block}
.feed-instruction{display:flex;align-items:center;gap:9px;border:1px solid #624733;background:#281c15;border-radius:12px;padding:8px 10px;margin-bottom:8px}.feed-instruction b{font-size:7px;color:#ffba7f;white-space:nowrap}.feed-instruction span{font-size:6.5px;color:#cdbbae;line-height:1.35}
.feed-drag-tray{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;padding:2px 2px 8px;scroll-snap-type:x proximity}
.feed-drag-card{flex:0 0 112px;min-height:118px;scroll-snap-align:start;border:1px solid #3b4652;border-radius:15px;background:linear-gradient(150deg,#202832,#131920);color:#fff;padding:9px;display:grid;justify-items:center;align-content:start;gap:5px;text-align:center;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 5px 0 #080a0e}
.feed-drag-card:active,.feed-drag-card.drag-source{transform:translateY(3px);box-shadow:0 2px 0 #080a0e;border-color:#ffb16f}.feed-drag-card:disabled{opacity:.35;filter:grayscale(1)}.feed-drag-card.short-on-embers em{color:#ff8b98}
.feed-drag-icon{width:48px;height:48px;border-radius:15px;background:#35271f;display:grid;place-items:center;font-size:28px}.feed-drag-icon img{max-width:38px;max-height:38px;pointer-events:none}
.feed-drag-card b{display:block;font-size:7.5px;line-height:1.2}.feed-drag-card small{display:block;font-size:5.8px;line-height:1.3;color:var(--muted);max-height:24px;overflow:hidden}.feed-drag-card em{font-style:normal;font-size:7px;color:#ffcf9f;border:1px solid #554033;border-radius:999px;padding:3px 7px}
.feed-drag-ghost{position:fixed;z-index:500;width:68px;height:68px;transform:translate(-50%,-50%) rotate(-7deg);border:2px solid #fff;border-radius:20px;background:#3a291f;display:grid;place-items:center;font-size:38px;pointer-events:none;filter:drop-shadow(0 12px 16px rgba(0,0,0,.4));animation:feedGhost .65s ease-in-out infinite alternate}.feed-drag-ghost img{max-width:54px;max-height:54px}
@keyframes feedGhost{to{transform:translate(-50%,-56%) rotate(7deg) scale(1.05)}}
.pet-tap-target.feed-target-ready:after{content:"DROP FOOD HERE";position:absolute;left:50%;top:52%;transform:translate(-50%,-50%) scale(.9);z-index:35;border:2px dashed rgba(255,255,255,.78);background:rgba(20,12,8,.72);color:#fff;border-radius:999px;padding:10px 14px;font-size:8px;font-weight:1000;letter-spacing:.08em;opacity:.38;pointer-events:none;transition:.16s}
.pet-tap-target.feed-drop-over:after{opacity:1;transform:translate(-50%,-50%) scale(1.08);border-color:#ffba7f;background:#4a2d1d;box-shadow:0 0 30px rgba(255,176,111,.45)}

.house-lock-screen{margin-top:9px;display:grid;gap:12px;text-align:center;border:1px solid #2d3743;background:radial-gradient(circle at 50% 13%,rgba(22,200,255,.13),transparent 34%),linear-gradient(#121922,#0b0f14);border-radius:25px;padding:14px;overflow:hidden;box-shadow:var(--shadow)}
.house-lock-kicker{justify-self:center;color:#16c8ff;font-size:7px;font-weight:1000;letter-spacing:.15em;border:1px solid #24495a;background:#11232c;border-radius:999px;padding:6px 9px}
.house-locked-scene{position:relative;height:285px;border:1px solid #34404d;border-radius:21px;overflow:hidden;background:linear-gradient(#203746 0 63%,#192027 63%);box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.house-lock-rain{position:absolute;inset:-20%;background:repeating-linear-gradient(103deg,transparent 0 17px,rgba(215,244,255,.18) 18px 20px,transparent 21px 39px);animation:houseRain 1.3s linear infinite}
.house-lock-door{position:absolute;left:50%;bottom:0;width:145px;height:224px;transform:translateX(-50%);border:9px solid #0d151c;border-bottom:0;border-radius:16px 16px 0 0;background:linear-gradient(90deg,#1b252d,#34444f 48%,#172129 51%);box-shadow:0 0 0 1px #4b5964,0 0 42px rgba(22,200,255,.13)}
.house-lock-door i{position:absolute;right:15px;top:50%;width:10px;height:10px;border-radius:50%;background:#ffe07a;box-shadow:0 0 12px #ffe07a}.house-lock-door b{position:absolute;left:50%;top:54px;transform:translateX(-50%);font-size:42px;opacity:.16}.house-lock-door span{position:absolute;left:50%;top:112px;transform:translateX(-50%);font-size:8px;letter-spacing:.18em;color:#9ca9b3}
.house-lock-shadow{position:absolute;bottom:25px;width:68px;height:92px;border-radius:55% 55% 46% 46%;background:#0a1117;filter:blur(3px);opacity:.45}.house-lock-shadow:before{content:"";position:absolute;left:50%;top:-24px;width:28px;height:46px;background:#0a1117;transform:translateX(-50%) rotate(17deg);clip-path:polygon(50% 0,100% 100%,0 100%)}.shadow-one{left:9%}.shadow-two{right:8%;transform:scale(.82)}
.house-lock-screen h1{font-size:25px;line-height:.96;margin:2px 0}.house-lock-screen>p{margin:0 auto;max-width:330px;color:var(--muted);font-size:8px;line-height:1.55}
.house-unlock-checklist{display:grid;gap:7px;text-align:left}.house-unlock-checklist article{display:grid;grid-template-columns:32px 1fr;gap:9px;align-items:center;border:1px solid #303a46;background:#11171e;border-radius:14px;padding:10px}.house-unlock-checklist article>span{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#252d37;color:#9aa5af;font-size:8px;font-weight:1000}.house-unlock-checklist article.done{border-color:#31553d;background:#132019}.house-unlock-checklist article.done>span{background:#9eff75;color:#102014}.house-unlock-checklist b{font-size:8px}.house-unlock-checklist small{display:block;margin-top:3px;font-size:6.5px;color:var(--muted)}
.house-lock-progress{height:9px;border:1px solid #35404d;background:#080b0f;border-radius:999px;overflow:hidden}.house-lock-progress i{display:block;height:100%;background:linear-gradient(90deg,#16c8ff,#9eff75);box-shadow:0 0 12px #16c8ff}
.house-lock-screen>button{min-height:45px;border:0;border-radius:13px;background:#1c6f86;color:#fff;font-size:8px;font-weight:1000}

.house-section{margin-top:9px;display:grid;gap:11px}
.house-den-shell{border:1px solid #303b48;background:#0d1218;border-radius:26px;padding:7px;box-shadow:var(--shadow)}
.house-scene{position:relative;height:455px;border-radius:21px;border:1px solid #3a4654;overflow:hidden;isolation:isolate;background:#101821;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.house-sky,.house-floor,.house-room-light,.house-wall-mark,.house-window,.house-prop,.house-city,.house-ambient{position:absolute;pointer-events:none}
.house-sky{inset:0 0 32%;z-index:-5;background:linear-gradient(180deg,#2b475a,#162833)}
.house-floor{left:0;right:0;bottom:0;height:38%;z-index:-3;background:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 52px),linear-gradient(#2d3942,#171d22)}
.house-floor:before{content:"";position:absolute;left:8%;right:8%;top:13%;bottom:8%;border-radius:50%;background:radial-gradient(ellipse,rgba(22,200,255,.19),transparent 66%);filter:blur(2px)}
.house-window{left:50%;top:61px;width:47%;height:132px;transform:translateX(-50%);border:9px solid #101820;border-radius:19px;background:linear-gradient(#6a93a8,#214256);box-shadow:0 0 0 1px #4b5a68,0 15px 34px rgba(0,0,0,.28);overflow:hidden}.house-window:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 48%,rgba(8,15,21,.65) 49% 52%,transparent 53%),linear-gradient(transparent 55%,rgba(8,15,21,.62) 56% 60%,transparent 61%)}.house-window i{position:absolute;inset:-20%;background:repeating-linear-gradient(104deg,transparent 0 13px,rgba(220,245,255,.28) 14px 16px,transparent 17px 30px);animation:houseRain 1.3s linear infinite}
.house-city{left:24%;right:24%;top:138px;height:50px;z-index:-2;background:linear-gradient(90deg,#13212b 0 10%,transparent 10% 14%,#101b24 14% 24%,transparent 24% 29%,#162832 29% 42%,transparent 42% 47%,#101b24 47% 58%,transparent 58% 65%,#14232d 65% 80%,transparent 80% 84%,#101a22 84%);opacity:.65}
.house-wall-mark{left:5%;top:26%;width:62px;height:36px;opacity:.07;background:url("./assets/rizo-full-mark.png") center/contain no-repeat;transform:rotate(-9deg)}
.house-prop-left{left:4%;bottom:16%;width:72px;height:61px;border-radius:9px 9px 4px 4px;background:linear-gradient(90deg,#1c242b 0 18%,#43525f 19% 81%,#1c242b 82%);box-shadow:0 8px 0 rgba(0,0,0,.18)}.house-prop-left:before{content:"";position:absolute;left:13px;right:13px;top:-19px;height:23px;border:4px solid #34434f;border-bottom:0;border-radius:11px 11px 0 0}
.house-prop-right{right:5%;bottom:15%;width:60px;height:82px;border-radius:19px 19px 8px 8px;background:radial-gradient(circle at 50% 23%,#9eff75 0 10px,transparent 11px),linear-gradient(90deg,#28341f,#4d6032);box-shadow:0 8px 0 rgba(0,0,0,.18)}
.house-room-light{left:50%;top:8px;width:180px;height:320px;transform:translateX(-50%);background:linear-gradient(180deg,rgba(255,244,190,.17),transparent 78%);clip-path:polygon(43% 0,57% 0,100% 100%,0 100%);z-index:-1;animation:houseLight 4.4s ease-in-out infinite}.house-ambient{inset:0;background:radial-gradient(circle at 14% 42%,rgba(255,255,255,.28) 0 1px,transparent 2px),radial-gradient(circle at 83% 37%,rgba(255,255,255,.2) 0 1px,transparent 2px);background-size:83px 79px;opacity:.4;animation:houseAmbient 8s linear infinite}
.house-scene-top{position:absolute;left:11px;right:11px;top:10px;z-index:30;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;pointer-events:none}.house-scene-top>div{display:grid;gap:3px}.house-scene-top small{font-size:6px;color:#b6c5cf;letter-spacing:.13em}.house-scene-top b{font-size:13px}.house-scene-top>span{display:flex;align-items:center;gap:5px;border:1px solid rgba(255,255,255,.19);background:rgba(6,10,14,.65);border-radius:999px;padding:6px 8px;font-size:6px;font-weight:1000;letter-spacing:.08em}.house-scene-top>span i{width:7px;height:7px;border-radius:50%;background:#9eff75;box-shadow:0 0 10px #9eff75}
.house-scene-arrow{position:absolute;top:48%;z-index:40;width:38px;height:54px;transform:translateY(-50%);border:1px solid rgba(255,255,255,.18);background:rgba(9,14,19,.72);color:#fff;border-radius:13px;font-size:25px;font-weight:1000;backdrop-filter:blur(6px)}.house-scene-arrow.previous{left:8px}.house-scene-arrow.next{right:8px}.house-scene-arrow:disabled{opacity:.18}
.house-scene-bottom{position:absolute;left:10px;right:10px;bottom:9px;z-index:32;display:flex;justify-content:space-between;align-items:end;gap:12px;border:1px solid rgba(255,255,255,.16);background:rgba(7,10,14,.74);border-radius:13px;padding:9px 10px;backdrop-filter:blur(7px);pointer-events:none}.house-scene-bottom>div{display:grid;gap:3px;min-width:0}.house-scene-bottom strong{font-size:8px}.house-scene-bottom span{font-size:6px;line-height:1.35;color:#aab6bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.house-scene-bottom>b{font-size:7px;color:#16c8ff;white-space:nowrap}
.house-resident{position:absolute;left:var(--resident-x);top:var(--resident-y);width:32%;max-width:138px;height:192px;transform:translate(-50%,-55%);border:0;background:transparent;padding:0;z-index:12;display:block;touch-action:manipulation;filter:drop-shadow(0 9px 0 rgba(0,0,0,.13))}.house-resident:focus-visible{outline:2px solid var(--resident-color);outline-offset:2px;border-radius:20px}.house-resident:active{scale:.96}
.house-resident-life{position:absolute;inset:0;display:grid;place-items:end center;pointer-events:none;animation:houseResidentIdle 3.4s ease-in-out infinite;animation-delay:var(--resident-delay)}
.house-resident-pet{position:absolute!important;left:50%!important;top:49%!important;bottom:auto!important;transform:translate(-50%,-50%)!important;pointer-events:none}
.house-resident-name{position:relative;z-index:20;margin-bottom:8px;max-width:110px;overflow:hidden;text-overflow:ellipsis;font-style:normal;font-size:6.5px;font-weight:1000;letter-spacing:.06em;color:#fff;border:1px solid var(--resident-color);background:rgba(7,10,14,.84);border-radius:999px;padding:5px 8px;white-space:nowrap}
.house-thought{position:absolute;left:50%;top:-8px;transform:translate(-50%,-7px);width:max-content;max-width:140px;background:#fffdf4;border:2px solid #081217;color:#081217;border-radius:11px;padding:7px 8px;font-size:6.1px;font-weight:1000;line-height:1.35;opacity:0;pointer-events:none;box-shadow:3px 3px 0 rgba(0,0,0,.16);animation:houseThought 13s ease-in-out infinite;animation-delay:calc(var(--resident-delay) - 1s)}
.house-thought:after{content:"";position:absolute;left:50%;bottom:-6px;width:9px;height:9px;background:#fffdf4;border-right:2px solid #081217;border-bottom:2px solid #081217;transform:translateX(-50%) rotate(45deg)}.resident-left .house-thought{left:63%}.resident-right .house-thought{left:37%}
.house-empty{position:absolute;inset:58px 42px 54px;z-index:8;display:grid;place-content:center;justify-items:center;gap:7px;text-align:center;color:var(--muted);padding:20px}.house-empty .empty-rug{width:170px;height:66px;border:1px dashed rgba(255,255,255,.18);border-radius:50%;background:radial-gradient(ellipse,rgba(22,200,255,.14),transparent 68%)}.house-empty b{font-size:11px;color:#fff}.house-empty span{max-width:230px;font-size:7px;line-height:1.5}
.house-room-rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:6px;border:1px solid #252e39;border-radius:16px;background:#0e1319}.house-room-chip{min-width:0;min-height:59px;border:1px solid transparent;border-radius:11px;background:#171d26;color:#fff;padding:7px 3px;display:grid;justify-items:center;align-content:center;gap:2px}.house-room-chip span{font-size:15px}.house-room-chip b{font-size:6.4px;white-space:nowrap}.house-room-chip small{font-size:5.5px;color:var(--muted);white-space:nowrap}.house-room-chip.active{border-color:#16c8ff;background:#182832;box-shadow:0 0 18px rgba(22,200,255,.13)}.house-room-chip.locked{background:#12151b;color:#6d7682;border-style:dashed}.house-room-chip.locked small{color:#d8b45a}
.house-room-loft .house-sky{background:linear-gradient(180deg,#41245a,#181126)}.house-room-loft .house-window{background:linear-gradient(135deg,#16c8ff,#ff68bd);box-shadow:0 0 38px rgba(255,104,189,.26)}.house-room-loft .house-floor{background:repeating-linear-gradient(90deg,rgba(22,200,255,.09) 0 1px,transparent 1px 42px),linear-gradient(#302441,#17131f)}.house-room-loft .house-prop-right{background:radial-gradient(circle at 50% 22%,#ff68bd 0 10px,transparent 11px),linear-gradient(90deg,#2b1e38,#503264)}
.house-room-rooftop .house-sky{background:radial-gradient(circle at 76% 18%,#e8fbff 0 12px,transparent 13px),radial-gradient(circle at 18% 24%,#fff 0 1px,transparent 2px),linear-gradient(#11142e,#29204d)}.house-room-rooftop .house-window{left:50%;top:44px;width:100%;height:61%;border:0;border-radius:0;background:linear-gradient(transparent,rgba(8,11,24,.25));box-shadow:none}.house-room-rooftop .house-city{left:0;right:0;top:170px;height:110px;opacity:.9}.house-room-rooftop .house-floor{height:39%;background:repeating-linear-gradient(90deg,#2c333e 0 38px,#222831 38px 76px);border-top:4px solid #4a5562}.house-room-rooftop .house-prop-right{background:linear-gradient(#4b5661,#252d34)}
.house-room-penthouse .house-sky{background:radial-gradient(circle at 50% 50%,rgba(255,213,74,.2),transparent 26%),linear-gradient(#3a2c1b,#17130f)}.house-room-penthouse .house-window{background:linear-gradient(#d4a257,#442b16);border-color:#1a130b;box-shadow:0 0 36px rgba(255,213,74,.24)}.house-room-penthouse .house-floor{background:repeating-linear-gradient(90deg,rgba(255,213,74,.09) 0 1px,transparent 1px 44px),linear-gradient(#51402a,#241b12)}.house-room-penthouse .house-prop-left,.house-room-penthouse .house-prop-right{filter:saturate(.8) sepia(.25)}.house-room-penthouse .house-scene-top>span i{background:#ffe07a;box-shadow:0 0 10px #ffe07a}
.house-hint{margin:0;text-align:center;color:var(--muted);font-size:7px;line-height:1.55;padding:0 12px}.house-property-actions{display:grid;gap:8px}.house-adoption-card,.house-expand-card{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;border:1px solid #313c49;background:linear-gradient(130deg,#151d25,#10151b);border-radius:17px;padding:12px}.house-adoption-card small,.house-expand-card small{font-size:6.4px;color:var(--muted);letter-spacing:.09em}.house-adoption-card h3,.house-expand-card h3{font-size:10px;margin:4px 0}.house-adoption-card p,.house-expand-card p{font-size:6.7px;line-height:1.45;color:var(--muted);margin:0}.house-adoption-card button,.house-expand-card button{min-height:43px;border:0;border-radius:12px;background:#168aa8;color:#fff;font-size:7.3px;font-weight:1000;padding:0 12px}.house-expand-card button{background:#65501c;color:#ffe07a}.house-adoption-card button.short-on-embers{background:#2a2024;color:#ff9cac}.house-expand-card.complete{grid-template-columns:1fr;border-color:#5e5129;background:linear-gradient(130deg,#211c11,#12100b)}
.house-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.house-stat-row span{display:grid;justify-items:center;gap:3px;border:1px solid #2d3743;background:#11161d;border-radius:12px;padding:9px 5px;color:var(--muted);font-size:6.2px}.house-stat-row b{color:#fff;font-size:11px}
.house-network-locked{border-style:dashed}.house-network-locked .house-lock-progress{margin:15px 0 8px}
.house-unlock-modal .house-unlock-door{position:relative;margin:10px auto 15px;width:100px;height:125px;border:7px solid #101820;border-bottom:0;border-radius:13px 13px 0 0;background:linear-gradient(90deg,#1e2932,#40525f 48%,#1b252d 51%);box-shadow:0 0 28px rgba(22,200,255,.2)}.house-unlock-modal .house-unlock-door i{position:absolute;right:12px;top:55%;width:8px;height:8px;border-radius:50%;background:#ffe07a;box-shadow:0 0 12px #ffe07a}.house-unlock-modal .house-unlock-door b{position:absolute;left:50%;top:35px;transform:translateX(-50%);font-size:30px;opacity:.22}
@keyframes houseAmbient{to{background-position:83px 79px}}
body.reduce-motion .house-lock-rain,body.reduce-motion .house-ambient,body.reduce-motion .feed-drag-ghost,body.reduce-motion .tutorial-focus{animation:none!important}
@media(max-width:370px){.keeper-guide-grid{grid-template-columns:1fr}.house-scene{height:405px}.house-resident{height:170px}.house-room-chip b{font-size:5.8px}.house-room-chip small{font-size:4.9px}.house-adoption-card,.house-expand-card{grid-template-columns:1fr}.house-adoption-card button,.house-expand-card button{width:100%}.feed-drag-card{flex-basis:104px}.house-scene-bottom span{max-width:190px}}

/* V28 locked-house contrast polish: mysterious, not unreadable. */
.house-lock-screen{color:#f5f1e8}
.house-lock-screen h1{color:#f7f2e8;text-shadow:0 2px 18px rgba(22,200,255,.12)}
.house-lock-screen>p{color:#aeb9c4}
.house-unlock-checklist article{background:rgba(18,27,36,.9);border-color:#3a4653}
.house-unlock-checklist article b{color:#f3eee5}
.house-unlock-checklist article small{color:#aab5bf}
.house-locked-scene{background:linear-gradient(#294858 0 63%,#1f2931 63%)}
.house-lock-door{filter:brightness(1.15)}
.house-lock-screen>button{background:linear-gradient(180deg,#1785a3,#11657c);box-shadow:0 5px 0 #07161c;color:#fff}


/* ======================================================================
   V30 — RIZO DEFENSE
   Endless Arcade strategy using the central pet renderer and animated CSS
   Gloom Balloons. No GIF payload or second character art path required.
   ====================================================================== */
.defense-card{position:relative;overflow:hidden;border-color:#ff6d7e;background:radial-gradient(circle at 88% 14%,rgba(255,91,104,.17),transparent 35%),linear-gradient(145deg,#1b171f,#111820)}
.defense-card::after{content:"ENDLESS";position:absolute;right:-13px;top:10px;rotate:12deg;padding:4px 18px;background:#ff5b68;color:#fff;font-size:6px;font-weight:1000;letter-spacing:.12em;box-shadow:0 3px 0 #5e1720}
.defense-art{background:linear-gradient(160deg,#6ebd9a 0 60%,#273c31 60%);overflow:hidden}.defense-art img{z-index:2}.defense-card-balloon{position:absolute;right:8px;top:8px;width:31px;height:39px;border:3px solid #080b0f;border-radius:52% 48% 48% 52%;background:#ff5b68;box-shadow:inset 6px 5px 0 rgba(255,255,255,.25);animation:defenseCardFloat 1.6s ease-in-out infinite}.defense-card-balloon::before{content:"";position:absolute;left:50%;bottom:-8px;border:5px solid transparent;border-top-color:#080b0f;translate:-50% 0}.defense-card-balloon i{position:absolute;left:50%;top:46%;width:4px;height:4px;border-radius:50%;background:#080b0f;box-shadow:10px 0 #080b0f;translate:-7px -50%}.defense-card-balloon i::after{content:"×××";position:absolute;left:-5px;top:6px;font:1000 5px monospace;letter-spacing:-1px;color:#080b0f;white-space:nowrap}@keyframes defenseCardFloat{50%{transform:translateY(-5px) rotate(4deg)}}
.defense-world{position:absolute;inset:0;background:linear-gradient(#6b9fb1 0 52%,#3d6845 52%);overflow:hidden;isolation:isolate;touch-action:none;user-select:none}
.defense-sky{position:absolute;inset:0 0 42%;background:radial-gradient(circle at 79% 22%,#ffefb5 0 26px,rgba(255,239,181,.24) 27px 43px,transparent 44px),linear-gradient(#729fb1,#abc5b4)}.defense-sky i{position:absolute;width:74px;height:20px;border-radius:50%;background:rgba(255,255,255,.35);filter:blur(1px);animation:defenseCloud 16s linear infinite}.defense-sky i:nth-child(1){left:-20%;top:18%}.defense-sky i:nth-child(2){left:38%;top:30%;animation-duration:22s;animation-delay:-8s;scale:.7}.defense-sky i:nth-child(3){left:78%;top:11%;animation-duration:19s;animation-delay:-13s;scale:.5}@keyframes defenseCloud{to{translate:560% 0}}
.defense-hills{position:absolute;left:-8%;right:-8%;top:34%;height:28%;background:radial-gradient(ellipse at 10% 100%,#416d50 0 34%,transparent 35%),radial-gradient(ellipse at 43% 100%,#315f46 0 37%,transparent 38%),radial-gradient(ellipse at 78% 100%,#4b7957 0 35%,transparent 36%);z-index:1}.defense-trees{position:absolute;inset:37% 0 18%;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 8% 38%,#1c4934 0 28px,transparent 30px),linear-gradient(88deg,transparent 0 7%,#173323 7.2% 8.8%,transparent 9%),radial-gradient(ellipse at 94% 46%,#1c4934 0 35px,transparent 37px),linear-gradient(92deg,transparent 0 92%,#173323 92.2% 94%,transparent 94.2%)}
.defense-road{position:absolute;inset:0;z-index:3;overflow:visible}.defense-road-shadow{fill:none;stroke:#1a261e;stroke-width:104;stroke-linecap:round;stroke-linejoin:round;opacity:.5}.defense-road-line{fill:none;stroke:#7c725e;stroke-width:82;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 -4px 0 rgba(238,221,175,.22));stroke-dasharray:8 3}
.defense-gate{position:absolute;right:0;bottom:19%;width:56px;height:78px;z-index:9;display:grid;place-items:center;background:linear-gradient(90deg,#222b2a,#43554d);border:4px solid #09100d;border-right:0;border-radius:18px 0 0 18px;box-shadow:-7px 8px 0 rgba(0,0,0,.22)}.defense-gate i{position:absolute;left:-13px;top:12px;width:25px;height:48px;border:5px solid #09100d;border-right:0;border-radius:20px 0 0 20px;background:#16c8ff;box-shadow:0 0 20px #16c8ff}.defense-gate b{font-size:7px;line-height:1.1;text-align:center;color:#dbe9e2}.defense-gate span{font-size:13px;color:#ff5b68}
.defense-hud{position:absolute;left:8px;right:8px;top:8px;z-index:36;display:flex;gap:6px;pointer-events:none}.defense-hud span{min-width:62px;padding:6px 8px;border:2px solid #0b1110;border-radius:10px;background:rgba(8,15,16,.88);color:#879aa0;font-size:6px;letter-spacing:.1em;box-shadow:3px 3px 0 rgba(0,0,0,.3)}.defense-hud b{display:block;margin-top:2px;color:#fff;font-size:12px}
.defense-layer{position:absolute;inset:0;z-index:12;pointer-events:none}.defense-projectiles{z-index:21}.defense-effects{z-index:25}.defense-tower{position:absolute;width:76px;height:76px;translate:-50% -64%;border:0;background:transparent;padding:0;pointer-events:auto;touch-action:none;z-index:16}.defense-tower .mini-pet{position:absolute!important;inset:0!important;width:76px!important;height:76px!important;transform:none!important}.defense-tower .defense-rizo{animation:defenseRizoIdle 1.2s ease-in-out infinite}.defense-tower .defense-range{position:absolute;left:50%;top:65%;width:var(--tower-range);aspect-ratio:1;border-radius:50%;border:1px solid rgba(22,200,255,.26);background:rgba(22,200,255,.055);translate:-50% -50%;opacity:0;transition:opacity .16s;pointer-events:none}.defense-tower.selected .defense-range{opacity:1}.defense-tower.selected{filter:drop-shadow(0 0 9px #16c8ff)}.defense-level{position:absolute;right:2px;bottom:2px;width:18px;height:18px;border:2px solid #080b0f;border-radius:50%;display:grid;place-items:center;background:#ffd45a;color:#141006;font:1000 8px monospace;z-index:15}.defense-tower.firing .defense-rizo{animation:defenseAttack .13s ease-out}@keyframes defenseRizoIdle{50%{transform:translateY(-3px) rotate(1.5deg)}}@keyframes defenseAttack{50%{transform:translateY(-6px) scale(1.08) rotate(-5deg)}}
.defense-enemy{position:absolute;width:42px;height:60px;translate:-50% -50%;z-index:18;pointer-events:none;filter:drop-shadow(0 7px 5px rgba(0,0,0,.28));animation:defenseBalloonDrift .72s ease-in-out infinite alternate}.balloon-body{position:absolute;left:4px;top:0;width:34px;height:43px;border:4px solid #080b0f;border-radius:52% 48% 48% 52%;background:var(--balloon-color);box-shadow:inset 7px 6px 0 rgba(255,255,255,.22);transform-origin:50% 100%}.balloon-shine{position:absolute;left:7px;top:7px;width:8px;height:12px;border-radius:50%;background:rgba(255,255,255,.34);rotate:24deg}.balloon-face{position:absolute;left:50%;top:55%;width:24px;height:16px;translate:-50% -50%;color:#080b0f}.balloon-face u{position:absolute;top:0;width:4px;height:5px;border-radius:50%;background:#080b0f}.balloon-face u:first-child{left:3px}.balloon-face u:nth-child(2){right:3px}.balloon-face em{position:absolute;left:50%;bottom:0;translate:-50% 0;font:1000 5px monospace;letter-spacing:-1px;white-space:nowrap}.balloon-knot{position:absolute;left:50%;top:39px;border:7px solid transparent;border-top-color:#080b0f;translate:-50% 0}.balloon-string{position:absolute;left:50%;top:47px;width:2px;height:13px;background:#171a1b;transform-origin:top;animation:defenseString .5s ease-in-out infinite alternate}.balloon-health{position:absolute;left:4px;right:4px;bottom:0;height:4px;border-radius:99px;background:#15191c;overflow:hidden;border:1px solid #080b0f}.balloon-health i{display:block;width:var(--enemy-health);height:100%;background:#9eff75;transition:width .08s linear}.defense-enemy.hit .balloon-body{filter:brightness(1.8);transform:scale(.9,1.08)}.defense-enemy.slowed{filter:drop-shadow(0 0 7px #a9f4ff) drop-shadow(0 7px 5px rgba(0,0,0,.28))}.defense-enemy.burning .balloon-body::after{content:"";position:absolute;inset:-9px;background:radial-gradient(circle at 50% 90%,#ffec78 0 3px,#ff5b37 4px 8px,transparent 9px);animation:defenseBurn .42s steps(2) infinite}.defense-enemy.poisoned .balloon-body{box-shadow:inset 7px 6px 0 rgba(255,255,255,.22),0 0 0 4px rgba(126,255,76,.28)}.balloon-fleet{scale:.82}.balloon-fleet .balloon-body{border-radius:58% 42% 56% 44%;rotate:4deg}.balloon-shell{scale:1.08}.balloon-shell .balloon-body{background:repeating-linear-gradient(90deg,var(--balloon-color) 0 7px,#5d4d7a 7px 13px);border-width:6px}.balloon-split .balloon-body::before{content:"";position:absolute;right:-7px;top:10px;width:14px;height:17px;border:3px solid #080b0f;border-radius:50%;background:#ffb5e1}.balloon-boss{scale:1.65;z-index:20}.balloon-boss .balloon-body{background:radial-gradient(circle at 40% 25%,#53446b,transparent 23%),#171421}.balloon-boss .balloon-body::before{content:"♛";position:absolute;left:50%;top:-18px;translate:-50% 0;color:#ffd45a;font-size:20px;text-shadow:0 3px #080b0f}.defense-enemy.popped{animation:defensePop .24s ease-out forwards}.defense-enemy.popped .balloon-string{display:none}@keyframes defenseBalloonDrift{to{transform:translateY(-6px) rotate(3deg)}}@keyframes defenseString{to{transform:rotate(8deg)}}@keyframes defensePop{to{opacity:0;transform:scale(1.8,.25) rotate(18deg);filter:brightness(2)}}@keyframes defenseBurn{50%{translate:0 -4px;scale:1.2}}
.defense-shot{position:absolute;width:10px;height:10px;border:2px solid #080b0f;border-radius:50%;translate:-50% -50%;background:#16c8ff;box-shadow:0 0 9px currentColor}.shot-ember{background:#ff5b37}.shot-toxic{background:#8dff45}.shot-void{background:#b27aff}.shot-moss{background:#48c46f}.shot-bubble{background:#ff68bd;width:15px;height:15px}.shot-frost{background:#d9f9ff}.shot-glitch{background:conic-gradient(#16c8ff,#ff68bd,#9eff75,#16c8ff);border-radius:2px}.shot-stone{background:#4c5574;width:14px;height:14px}.shot-aurora{background:#7df4ff}.shot-gold{background:#ffd45a}.shot-diamond{background:#e5fbff;rotate:45deg;border-radius:2px}.shot-shadow{background:#171421;box-shadow:0 0 10px #a46cff}.shot-retro{background:#16c8ff;border-radius:0;width:7px;height:7px}
.defense-impact{position:absolute;width:12px;height:12px;translate:-50% -50%;border-radius:50%;border:3px solid #fff;box-shadow:0 0 14px #16c8ff;animation:defenseImpact .4s ease-out forwards;animation-delay:var(--impact-delay,0s)}.impact-pop{border-color:#ff7f90;box-shadow:0 0 16px #ff5b68}.impact-boss{width:30px;height:30px;border-color:#ffd45a;box-shadow:0 0 24px #ffd45a}.impact-gate{border-color:#ff5b68;box-shadow:0 0 20px #ff5b68}@keyframes defenseImpact{to{opacity:0;transform:scale(3)}}
.defense-message{position:absolute;left:8px;right:8px;top:45px;z-index:34;text-align:center;pointer-events:none;text-shadow:0 2px 0 #000}.defense-message b{display:block;color:#fff;font-size:8px;letter-spacing:.09em}.defense-message span{display:block;margin-top:2px;color:#d9e5df;font-size:6px}.defense-message.flash{animation:defenseMessage .55s ease-out}@keyframes defenseMessage{0%{opacity:0;transform:translateY(-8px)}40%{opacity:1;transform:none}}
.defense-wave-button{position:absolute;right:8px;bottom:91px;z-index:40;min-height:39px;border:2px solid #07100d;border-radius:12px;padding:8px 11px;background:#9eff75;color:#0b160d;font:1000 7px monospace;letter-spacing:.05em;box-shadow:3px 4px 0 rgba(0,0,0,.4)}.defense-wave-button:disabled{background:#25312c;color:#718078;opacity:.7}.defense-roster{position:absolute;left:0;right:0;bottom:0;height:84px;z-index:42;display:flex;gap:7px;overflow-x:auto;padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:linear-gradient(rgba(7,12,13,.9),#080d0f);border-top:2px solid #273b34;scroll-snap-type:x proximity}.defense-roster-pet{position:relative;flex:0 0 108px;height:68px;border:2px solid #243c35;border-radius:12px;background:linear-gradient(145deg,#18241f,#0b1210);color:#fff;padding:3px;display:grid;grid-template-columns:52px 1fr;align-items:center;text-align:left;scroll-snap-align:start;touch-action:none;overflow:hidden}.defense-roster-pet::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 50%,var(--roster-color),transparent 36%);opacity:.15}.defense-roster-pet .mini-pet{position:relative!important;width:52px!important;height:58px!important;inset:auto!important;transform:none!important}.defense-roster-pet span{position:relative;z-index:4;min-width:0}.defense-roster-pet b{display:block;font-size:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.defense-roster-pet small{display:block;margin-top:4px;color:#9eff75;font-size:5px;line-height:1.2}.defense-roster-pet:disabled{opacity:.42}.defense-roster-pet.placed{filter:grayscale(.65)}
.defense-drag-ghost{position:fixed;left:0;top:0;width:84px;height:84px;translate:-50% -65%;z-index:9999;pointer-events:none;filter:drop-shadow(0 8px 5px rgba(0,0,0,.35))}.defense-drag-ghost .mini-pet{position:absolute!important;inset:0!important;width:84px!important;height:84px!important;transform:none!important}.defense-drag-ghost.valid{filter:drop-shadow(0 0 12px #9eff75)}.defense-drag-ghost.invalid{filter:grayscale(1) drop-shadow(0 0 10px #ff5b68)}.defense-world.placement-valid::after,.defense-world.placement-invalid::after{content:"";position:absolute;inset:0 0 84px;z-index:35;pointer-events:none;border:3px solid #9eff75;box-shadow:inset 0 0 35px rgba(158,255,117,.12)}.defense-world.placement-invalid::after{border-color:#ff5b68;box-shadow:inset 0 0 35px rgba(255,91,104,.12)}
.defense-tower-panel{position:absolute;left:7px;right:7px;bottom:88px;z-index:48;min-height:55px;border:2px solid #31483f;border-radius:12px;background:rgba(8,14,13,.95);padding:7px;display:grid;grid-template-columns:minmax(0,1fr) auto auto 32px;gap:5px;align-items:center;box-shadow:0 9px 24px rgba(0,0,0,.44)}.defense-tower-panel[hidden]{display:none}.defense-tower-panel small{display:block;color:#9eff75;font-size:5px}.defense-tower-panel b{display:block;color:#fff;font-size:8px;margin:2px 0}.defense-tower-panel span{display:block;color:#91a39a;font-size:5px}.defense-tower-panel button{min-height:34px;border:1px solid #43594f;border-radius:8px;background:#1c2a24;color:#fff;padding:6px;font:1000 6px monospace}.defense-tower-panel button:disabled{opacity:.4}
.defense-result .defense-result-balloon{position:relative;margin-inline:auto;width:58px;height:70px;background:#ff5b68;border:5px solid #080b0f;border-radius:52% 48% 48% 52%;box-shadow:inset 10px 8px rgba(255,255,255,.22);animation:defenseCardFloat 1.5s ease-in-out infinite}.defense-result-balloon::after{content:"";position:absolute;left:50%;bottom:-24px;width:2px;height:24px;background:#080b0f}.defense-result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}.defense-result-grid span{padding:8px 5px;border:1px solid #34443e;border-radius:10px;background:#0d1512;color:#84968d;font-size:6px}.defense-result-grid b{display:block;margin-top:4px;color:#fff;font-size:13px}
body.reduce-motion .defense-sky i,body.reduce-motion .defense-card-balloon,body.reduce-motion .defense-enemy,body.reduce-motion .balloon-string,body.reduce-motion .defense-rizo{animation:none!important}
@media(max-width:350px){.defense-tower{width:66px;height:66px}.defense-tower .mini-pet{width:66px!important;height:66px!important}.defense-roster-pet{flex-basis:98px;grid-template-columns:46px 1fr}.defense-roster-pet .mini-pet{width:46px!important}.defense-tower-panel{grid-template-columns:minmax(0,1fr) auto auto}.defense-tower-panel>[data-defense-close-panel]{display:none}}
@media(max-height:620px){.defense-roster{height:72px}.defense-roster-pet{height:57px}.defense-roster-pet .mini-pet{height:48px!important}.defense-wave-button,.defense-tower-panel{bottom:76px}.defense-world.placement-valid::after,.defense-world.placement-invalid::after{inset:0 0 72px}}

/* V30 requested wearable micro-fit and tiny-card preview corrections. */
.wearable-shades{--gear-shift-x:-1.8%}
.wearable-eyepatch{--gear-shift-x:-1.7%;--gear-shift-y:1.4%}
.wearable-earmuffs{--gear-scale-x:1.05;--gear-scale-y:1.05}
.stage-spark .wearable-earmuffs{--gear-scale-x:.95;--gear-scale-y:.98}
.wearable-headphones,
.stage-spark .wearable-headphones,
.stage-kid .wearable-headphones,
.stage-teen .wearable-headphones,
.stage-beast .wearable-headphones,
.stage-legend .wearable-headphones{--gear-scale-x:1.42;--gear-scale-y:.92;--gear-shift-y:5%}
/* Only the 56px shop cards get these stronger corrections; the Den/Closet fit
   remains governed by the canonical wearable transforms above. */
.shop-preview-pet .wearable-shades{--gear-scale-x:1.04;--gear-scale-y:.98;--gear-shift-x:-2.6%;--gear-shift-y:3.2%}
.shop-preview-pet .wearable-eyepatch{--gear-scale-x:1.10;--gear-scale-y:1.10;--gear-shift-x:-2.8%;--gear-shift-y:2.4%}
.shop-preview-pet .wearable-chain{--gear-scale-x:1.18;--gear-scale-y:1.18;--gear-shift-y:-1.5%}

/* ===== V31 EMBER BEAT — four-lane Guitar-Hero-style chart ===== */
.rhythm-world{background:radial-gradient(circle at 50% -5%,rgba(255,104,189,.32),transparent 35%),linear-gradient(180deg,#251638 0 58%,#101421 58% 100%)}
.rhythm-world::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(22,200,255,.06),transparent 24%,transparent 76%,rgba(255,104,189,.07));pointer-events:none;z-index:1}
.rhythm-lights{opacity:.75;animation-duration:1.35s}
.rhythm-stage{height:26%!important;opacity:.72}
.rhythm-rizo{left:auto!important;right:-28px!important;bottom:42px!important;z-index:3!important;opacity:.28;filter:saturate(.8);animation:rhythmIdle .76s ease-in-out infinite}
.rhythm-rizo.rhythm-hit{opacity:.52;filter:saturate(1.15) brightness(1.1)}
.rhythm-board{position:absolute;left:10px;right:10px;top:57px;bottom:59px;z-index:15;overflow:hidden;border:2px solid #304459;border-radius:17px;background:linear-gradient(180deg,rgba(4,8,16,.89),rgba(11,9,24,.94));box-shadow:inset 0 0 35px rgba(22,200,255,.08),0 10px 30px rgba(0,0,0,.32)}
.rhythm-board::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 27px,rgba(255,255,255,.035) 28px 29px);pointer-events:none}
.rhythm-lane-columns{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr)}
.rhythm-column{position:relative;border-right:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,rgba(255,255,255,.015),rgba(255,255,255,.045));opacity:.85}
.rhythm-column:last-child{border-right:0}
.rhythm-column::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;translate:-50% 0;background:linear-gradient(transparent,currentColor 38%,currentColor 80%,transparent);opacity:.13}
.rhythm-column.lane-0{color:#ff68bd}.rhythm-column.lane-1{color:#16c8ff}.rhythm-column.lane-2{color:#9eff75}.rhythm-column.lane-3{color:#ffd45a}
.rhythm-hit-line{position:absolute;left:0;right:0;bottom:51px;height:5px;background:#f8fcff;box-shadow:0 0 0 7px rgba(22,200,255,.11),0 0 20px #16c8ff;z-index:5}
.rhythm-hit-line::after{content:"HIT";position:absolute;right:6px;top:-15px;color:#dffaff;font:1000 6px ui-monospace,monospace;letter-spacing:.13em}
#rhythmNotes{position:absolute;inset:0;z-index:8;pointer-events:none}
.rhythm-note{position:absolute!important;top:-48px;left:12.5%!important;width:clamp(35px,12vw,52px)!important;height:clamp(35px,12vw,52px)!important;translate:-50% 0;border-radius:13px!important;display:grid;place-items:center;border:3px solid #fff!important;color:#fff!important;font:1000 clamp(17px,5.4vw,24px) ui-monospace,monospace!important;box-shadow:0 0 18px currentColor,0 5px 0 rgba(0,0,0,.34)!important;will-change:top,opacity,scale;transform:none!important}
.rhythm-note.lane-0{left:12.5%!important;background:linear-gradient(145deg,#ff77c6,#a82a77)!important;color:#ffd6ec!important}
.rhythm-note.lane-1{left:37.5%!important;background:linear-gradient(145deg,#3de2ff,#087eaa)!important;color:#ddfaff!important}
.rhythm-note.lane-2{left:62.5%!important;background:linear-gradient(145deg,#baff91,#3d8a31)!important;color:#efffe6!important}
.rhythm-note.lane-3{left:87.5%!important;background:linear-gradient(145deg,#ffe37a,#b27608)!important;color:#fff9d9!important}
.rhythm-note.hit{animation:v31BeatHit .16s ease-out forwards!important}.rhythm-note.missed{animation:v31BeatMiss .2s ease-out forwards!important}
.rhythm-note.perfect{filter:brightness(1.4)}
@keyframes v31BeatHit{to{opacity:0;scale:1.8;filter:brightness(2.4)}}
@keyframes v31BeatMiss{to{opacity:0;translate:-50% 18px;rotate:18deg;filter:grayscale(1)}}
.rhythm-pads{position:absolute;left:10px;right:10px;bottom:7px;height:44px;z-index:31;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.rhythm-pad{min-width:0;border:2px solid #081018;border-radius:12px;color:#fff;font:1000 19px ui-monospace,monospace;box-shadow:0 5px 0 rgba(0,0,0,.42);touch-action:manipulation;transition:translate .08s,filter .08s,box-shadow .08s}
.rhythm-pad.lane-0{background:linear-gradient(#f46bb7,#8f245f)}.rhythm-pad.lane-1{background:linear-gradient(#25d2f3,#08799a)}.rhythm-pad.lane-2{background:linear-gradient(#a6ee77,#3c7d31)}.rhythm-pad.lane-3{background:linear-gradient(#f8d45d,#a56c0a)}
.rhythm-pad.pressed{translate:0 4px;box-shadow:0 1px 0 rgba(0,0,0,.42);filter:brightness(1.28)}
.rhythm-pad.perfect{translate:0 4px;box-shadow:0 0 18px #fff;filter:brightness(1.7)}
.rhythm-pad.wrong{animation:rhythmPadWrong .14s steps(2)}
@keyframes rhythmPadWrong{50%{translate:4px 0;filter:grayscale(1) brightness(.72)}}
.rhythm-status{position:absolute;left:11px;right:11px;top:8px;z-index:24;display:flex;justify-content:space-between;gap:8px;pointer-events:none}
.rhythm-status span{border:1px solid #344756;border-radius:999px;background:rgba(5,10,16,.82);padding:5px 8px;color:#8fa2b3;font:1000 6px ui-monospace,monospace;letter-spacing:.07em}
.rhythm-status b{margin-left:4px;color:#fff;font-size:8px}
.rhythm-callout{bottom:54px!important;z-index:26!important;min-height:17px;color:#fff!important;text-shadow:0 2px 0 #000,0 0 10px rgba(22,200,255,.7)}
.rhythm-track-intro{top:39px!important;min-width:210px!important;z-index:35!important;padding:7px 13px!important}
.rhythm-track-intro small{color:#8ceeff!important}.rhythm-track-intro span{color:#d0b9df!important}
.rhythm-result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0}
.rhythm-result-grid span{display:grid;gap:4px;border:1px solid #344756;border-radius:11px;background:#0b1118;padding:8px 4px;color:#8293a3;font-size:6px;text-align:center}
.rhythm-result-grid b{color:#fff;font-size:11px}
body.reduce-motion .rhythm-lights,body.reduce-motion .rhythm-rizo{animation:none!important}
body.reduce-motion .rhythm-note{transition:none!important}
@media(max-width:350px){.rhythm-board{left:6px;right:6px;top:53px}.rhythm-pads{left:6px;right:6px;gap:4px}.rhythm-note{width:34px!important;height:34px!important}.rhythm-track-intro{min-width:174px!important}.rhythm-result-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-height:620px){.rhythm-board{top:48px;bottom:52px}.rhythm-pads{height:38px;bottom:5px}.rhythm-pad{font-size:16px}.rhythm-callout{bottom:46px!important}.rhythm-track-intro{top:30px!important;padding:5px 10px!important}.rhythm-status{top:5px}.rhythm-rizo{bottom:31px!important}}

/* ========================================================================
   V32 FINAL GAMEPLAY POLISH — MAPS, ABILITIES, SPECIAL BALLOONS, BUG FIXES
   ======================================================================== */

/* A newly created/reborn egg is always centered inside the Den interaction
   area. `translate` stays separate from the idle animation's transform. */
.pet-tap-target>.egg-actor{position:absolute!important;left:50%!important;top:50%!important;right:auto!important;bottom:auto!important;translate:-50% -50%!important;margin:0!important}

/* Closet-only calibration: the edited SVG already contains the correct
   canonical neck placement, so the large preview should not inherit the
   slightly compressed gameplay-stage bandana transform. */
.preview-actor .wearable-bandana{--gear-scale-x:1;--gear-scale-y:1;--gear-shift-x:0%;--gear-shift-y:0%}
/* Tiny face nudges requested after physical-device review. */
.wearable-shades{--gear-shift-x:-2.35%}
.stage-spark .wearable-shades{--gear-shift-x:-2.1%}
.shop-preview-pet .wearable-shades{--gear-shift-x:-3.1%}

/* Ember Beat gives the player a real three-count before any chart input. */
.rhythm-countdown{position:absolute;inset:0;z-index:80;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at 50% 48%,rgba(255,104,189,.23),rgba(3,6,13,.86) 48%,rgba(3,6,13,.96));pointer-events:none;transition:opacity .28s,scale .28s}
.rhythm-countdown b{display:block;color:#fff;font-size:74px;line-height:.9;text-shadow:0 5px 0 #080b0f,0 0 28px #16c8ff;font-family:monospace;font-weight:1000}
.rhythm-countdown b.pulse{animation:rhythmCountdownPulse .42s cubic-bezier(.2,.9,.25,1)}
.rhythm-countdown span{display:block;margin-top:14px;color:#c9f8ff;font:1000 8px monospace;letter-spacing:.14em}
.rhythm-countdown.leave{opacity:0;scale:1.18}
@keyframes rhythmCountdownPulse{0%{scale:.52;opacity:.2}65%{scale:1.14}100%{scale:1;opacity:1}}
body.reduce-motion .rhythm-countdown b{animation:none!important}

/* Exact illustrated trail. The balloons use the same normalized points as
   these four polyline strokes, so the artwork and collision route cannot
   drift apart. */
.defense-road{position:absolute;inset:0;width:100%;height:100%;z-index:7;overflow:visible;pointer-events:none}
.defense-road polyline{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.defense-road-shadow{stroke:rgba(2,7,7,.48);stroke-width:82px;translate:0 8px}
.defense-road-border{stroke:#17251f;stroke-width:72px}
.defense-road-fill{stroke:#9c7651;stroke-width:58px;filter:drop-shadow(0 2px 0 rgba(255,255,255,.15))}
.defense-road-stitch{stroke:rgba(255,232,177,.62);stroke-width:3px;stroke-dasharray:14 18}
.defense-road-stones circle{fill:#6d543e;stroke:#17251f;stroke-width:4px;opacity:.92}
.map-ember .defense-road-fill{stroke:#7c4938}.map-ember .defense-road-stitch{stroke:#ffc36b}
.map-moon .defense-road-fill{stroke:#5f5b79}.map-moon .defense-road-stitch{stroke:#d7c9ff}
.map-storm .defense-road-fill{stroke:#485d68}.map-storm .defense-road-stitch{stroke:#d4fbff}

/* Four maps reuse the Den-like scene language while feeling genuinely
   different. No external art pipeline is needed. */
.defense-world.map-grove{background:linear-gradient(#7dc8b3 0 58%,#355b3c 58% 100%)}
.defense-world.map-ember{background:linear-gradient(#f29269 0 55%,#713a2d 55% 100%)}
.defense-world.map-moon{background:radial-gradient(circle at 76% 14%,#fbf0b5 0 20px,transparent 22px),linear-gradient(#342d63 0 58%,#242d3f 58% 100%)}
.defense-world.map-storm{background:linear-gradient(#536f82 0 57%,#253c3c 57% 100%)}
.map-ember .defense-sky{filter:hue-rotate(310deg) saturate(1.35)}
.map-moon .defense-sky{filter:hue-rotate(55deg) brightness(.66)}
.map-storm .defense-sky{filter:grayscale(.2) brightness(.7)}
.map-moon .defense-hills,.map-storm .defense-hills{filter:brightness(.68) saturate(.8)}
.defense-map-props{position:absolute;inset:0;z-index:5;pointer-events:none}
.defense-map-props i{position:absolute;border:4px solid #07100d;background:#294b37;box-shadow:inset -7px -6px rgba(0,0,0,.14)}
.defense-map-props i:nth-child(1){left:3%;bottom:22%;width:28px;height:55px;border-radius:50% 50% 16% 16%;rotate:-8deg}
.defense-map-props i:nth-child(2){right:4%;top:18%;width:35px;height:62px;border-radius:50% 50% 20% 20%;rotate:9deg}
.defense-map-props i:nth-child(3){left:46%;top:9%;width:22px;height:38px;border-radius:50%;rotate:4deg}
.map-ember .defense-map-props i{background:#913d2b;box-shadow:inset -7px -6px #5d241e,0 0 12px rgba(255,113,63,.38)}
.map-moon .defense-map-props i{background:#4b4a78;box-shadow:inset -7px -6px #262744,0 0 12px rgba(197,156,255,.35)}
.map-storm .defense-map-props i{background:#365460;box-shadow:inset -7px -6px #24363d,0 0 12px rgba(85,223,255,.25)}

.defense-map-select{position:absolute;left:7px;right:7px;top:44px;z-index:45;display:flex;gap:5px;overflow-x:auto;padding:2px;scrollbar-width:none;transition:opacity .2s,translate .2s}
.defense-map-select::-webkit-scrollbar{display:none}.defense-map-select.locked{opacity:.25;pointer-events:none;translate:0 -5px}
.defense-map-select button{flex:0 0 72px;min-height:38px;border:1px solid #314b42;border-radius:10px;background:rgba(7,14,12,.9);color:#fff;padding:4px;display:grid;grid-template-columns:18px 1fr;text-align:left;align-items:center;box-shadow:2px 3px 0 rgba(0,0,0,.35)}
.defense-map-select button b{grid-row:1/3;font-size:15px;text-align:center}.defense-map-select button span{font:1000 6px monospace;letter-spacing:.05em}.defense-map-select button small{font:700 4.5px monospace;color:#9eb1a8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.defense-map-select button.active{border-color:#9eff75;background:#173328;color:#dfffd2}.defense-map-select button.locked{opacity:.42;filter:grayscale(1)}
.defense-map-label{position:absolute;left:9px;top:90px;z-index:23;border-left:3px solid #9eff75;padding-left:6px;color:#fff;text-shadow:0 2px #07100d;pointer-events:none}.defense-map-label small{display:block;font:1000 5px monospace;color:#9eff75}.defense-map-label b{display:block;font:1000 8px monospace;letter-spacing:.08em}

/* Special balloon identities. Every one visibly moves/reacts rather than
   behaving like a recolored static circle. */
.balloon-fire .balloon-body{background:radial-gradient(circle at 50% 85%,#ffe27a 0 12%,#ff713f 34%,#c62f24 76%);animation:fireBalloonBody .38s steps(2) infinite}
.balloon-fire .balloon-body::before{content:"";position:absolute;left:5px;right:5px;top:-13px;height:20px;background:linear-gradient(55deg,transparent 12%,#ffef75 13% 30%,#ff5c31 31% 55%,transparent 56%),linear-gradient(110deg,transparent 25%,#ff934f 26% 54%,transparent 55%);clip-path:polygon(0 100%,15% 15%,34% 72%,51% 0,68% 72%,88% 22%,100% 100%);filter:drop-shadow(0 0 5px #ff7b39)}
.balloon-frost .balloon-body{background:linear-gradient(145deg,#f2ffff,#78dce9);box-shadow:inset 7px 6px #fff,0 0 10px #baf8ff}
.balloon-frost .balloon-body::before{content:"";position:absolute;inset:-7px;clip-path:polygon(50% 0,59% 13%,74% 2%,76% 20%,96% 18%,84% 36%,100% 48%,82% 58%,94% 78%,73% 76%,68% 100%,51% 84%,36% 100%,31% 77%,7% 82%,19% 61%,0 50%,19% 39%,5% 18%,28% 22%,28% 2%,43% 15%);background:#d9fcff;z-index:-1;animation:frostBalloonShiver .48s steps(2) infinite}
.balloon-storm .balloon-body{background:repeating-linear-gradient(135deg,#ffe66b 0 7px,#55dfff 8px 14px);animation:stormBalloonPulse .5s ease-in-out infinite alternate}
.balloon-storm .balloon-body::before{content:"ϟ";position:absolute;left:50%;top:48%;translate:-50% -50%;font:1000 25px monospace;color:#fff;text-shadow:0 2px #07100d,0 0 9px #fff}
.balloon-ghost{opacity:.86}.balloon-ghost .balloon-body{background:radial-gradient(circle,#d8c1ff,#72579c);animation:ghostBalloonPhase 1.15s ease-in-out infinite}.balloon-ghost.phased{opacity:.34;filter:drop-shadow(0 0 12px #c59cff)}.balloon-ghost.phased .balloon-body{scale:.9 1.08}
@keyframes fireBalloonBody{50%{filter:brightness(1.22);transform:translateY(-2px)}}
@keyframes frostBalloonShiver{50%{rotate:5deg;scale:1.04}}
@keyframes stormBalloonPulse{to{filter:brightness(1.35);scale:1.06}}
@keyframes ghostBalloonPhase{50%{filter:blur(.7px);transform:translateX(3px)}}

/* Multiple copies, active ability panel and visible attack identities. */
.defense-copy{position:absolute;left:1px;bottom:1px;z-index:18;min-width:18px;height:15px;padding:0 3px;border:2px solid #080b0f;border-radius:8px;background:#18251f;color:#9eff75;font:1000 6px monospace;display:grid;place-items:center}
.defense-tower-panel{grid-template-columns:minmax(0,1fr) auto auto auto 30px;min-height:77px}
.defense-panel-copy em{display:block;margin-top:3px;color:#a8bab1;font:600 4.5px monospace;font-style:normal;line-height:1.25}.defense-panel-copy em strong{color:#9eff75;margin-right:4px;font-size:4.5px}.defense-tower-panel>[data-defense-ability]{background:#31204a;border-color:#9d6ad0;min-width:62px}.defense-tower-panel>[data-defense-ability]:not(:disabled){box-shadow:0 0 10px rgba(197,156,255,.35);color:#efe2ff}
.defense-tower.ability-cast{z-index:29}.defense-tower.ability-cast .defense-rizo{animation:defenseAbilityCast .62s cubic-bezier(.2,.9,.25,1)!important}.defense-tower.attack-ember .defense-rizo{filter:drop-shadow(0 0 9px #ff713f)}.defense-tower.attack-frost .defense-rizo{filter:drop-shadow(0 0 9px #a8f3ff)}.defense-tower.attack-toxic .defense-rizo{filter:drop-shadow(0 0 9px #7eff4c)}.defense-tower.attack-shadow .defense-rizo{filter:drop-shadow(0 0 11px #8a64ff)}.defense-tower.attack-diamond .defense-rizo{filter:drop-shadow(0 0 11px #d9fbff)}
@keyframes defenseAbilityCast{0%{transform:translateY(0) scale(1)}35%{transform:translateY(-15px) scale(.88) rotate(-8deg)}68%{transform:translateY(-5px) scale(1.23) rotate(7deg)}100%{transform:none}}
.defense-ability-fx{position:absolute;width:36px;height:36px;translate:-50% -50%;border:4px solid currentColor;border-radius:50%;z-index:40;pointer-events:none;animation:defenseAbilityBurst .82s ease-out forwards;color:#9eff75;box-shadow:0 0 18px currentColor}
.ability-fx-ember{color:#ff713f}.ability-fx-toxic{color:#7eff4c}.ability-fx-violet,.ability-fx-shadow{color:#c59cff}.ability-fx-moss{color:#75d376}.ability-fx-bubblegum{color:#ff83ce}.ability-fx-frost{color:#a8f3ff}.ability-fx-glitch{color:#55dfff;border-style:dashed}.ability-fx-obsidian{color:#686d91}.ability-fx-aurora,.ability-fx-diamond{color:#d7fbff}.ability-fx-golden{color:#ffe66b}.ability-fx-retro{color:#16c8ff;border-radius:0}
@keyframes defenseAbilityBurst{0%{opacity:1;scale:.3}75%{opacity:.7;scale:5}100%{opacity:0;scale:6.5}}

@media(max-width:390px){.defense-map-select button{flex-basis:66px}.defense-tower-panel{grid-template-columns:minmax(0,1fr) auto auto}.defense-tower-panel>[data-defense-sell]{display:none}.defense-tower-panel>[data-defense-close-panel]{display:none}.defense-panel-copy em{display:none}}
@media(max-height:620px){.defense-map-select{top:38px}.defense-map-label{top:80px}.defense-tower-panel{min-height:58px}.defense-panel-copy em{display:none}.rhythm-countdown b{font-size:58px}}
body.reduce-motion .balloon-fire .balloon-body,body.reduce-motion .balloon-frost .balloon-body::before,body.reduce-motion .balloon-storm .balloon-body,body.reduce-motion .balloon-ghost .balloon-body,body.reduce-motion .defense-tower.ability-cast .defense-rizo{animation:none!important}
/* Once placement begins, map selection gets entirely out of the battlefield. */
.defense-map-select.locked{opacity:0!important;visibility:hidden;translate:0 -9px}
/* Variant-colored active casts make the Rizo—not only the projectile—sell the effect. */
.defense-tower.ability-ember .defense-rizo{filter:drop-shadow(0 0 14px #ff713f) brightness(1.15)}
.defense-tower.ability-toxic .defense-rizo{filter:drop-shadow(0 0 14px #7eff4c) saturate(1.35)}
.defense-tower.ability-violet .defense-rizo,.defense-tower.ability-shadow .defense-rizo{filter:drop-shadow(0 0 16px #c59cff) brightness(.9)}
.defense-tower.ability-moss .defense-rizo{filter:drop-shadow(0 0 14px #75d376)}
.defense-tower.ability-bubblegum .defense-rizo{filter:drop-shadow(0 0 14px #ff83ce)}
.defense-tower.ability-frost .defense-rizo{filter:drop-shadow(0 0 16px #a8f3ff) brightness(1.2)}
.defense-tower.ability-glitch .defense-rizo{filter:drop-shadow(4px 0 #ff68bd) drop-shadow(-4px 0 #16c8ff)}
.defense-tower.ability-obsidian .defense-rizo{filter:drop-shadow(0 9px 4px #080b0f) contrast(1.3)}
.defense-tower.ability-aurora .defense-rizo,.defense-tower.ability-diamond .defense-rizo{filter:drop-shadow(0 0 18px #d7fbff) brightness(1.25)}
.defense-tower.ability-golden .defense-rizo{filter:drop-shadow(0 0 18px #ffe66b) brightness(1.2)}
.defense-tower.ability-retro .defense-rizo{filter:drop-shadow(0 0 13px #16c8ff);animation-timing-function:steps(4)!important}
/* V32 map gates sit on the actual final illustrated waypoint. The enemies,
   SVG trail and gate now terminate at one shared map coordinate. */
.defense-gate{left:var(--gate-x,86%);top:var(--gate-y,66%);right:auto;bottom:auto;transform:translate(-10%,-50%)}
/* Keep the first playable row clear of the HUD, and retire the map name once
   the player commits to placement so towers never hide behind setup labels. */
.defense-map-select.locked + .defense-map-label{opacity:0;visibility:hidden;translate:0 -5px}


/* V33 RELEASE AUDIO + STAGE-SAFE PET TAP */
.volume-setting{align-items:center}.volume-control{display:grid;grid-template-columns:minmax(92px,150px) 38px;align-items:center;gap:8px;flex:0 1 190px}.volume-control input[type="range"]{width:100%;accent-color:var(--cyan);touch-action:pan-x}.volume-control b{font-size:8px;color:var(--cyan);text-align:right;font-variant-numeric:tabular-nums}
.pet-actor.boing{animation:none!important}.pet-actor.boing .rizo-motion-shell{animation:rizoTapBoing .22s ease-out!important}@keyframes rizoTapBoing{0%{transform:scale(1)}55%{transform:scale(1.08,.90)}100%{transform:scale(1)}}
body.reduce-motion .pet-actor.boing .rizo-motion-shell{animation:none!important}
@media(max-width:350px){.volume-setting{align-items:flex-start;flex-direction:column}.volume-control{width:100%;grid-template-columns:minmax(0,1fr) 38px;flex:auto}}
