﻿.stage-mini{isolation:isolate;overflow:hidden;color:#fff;background:#211630}
.stage-backdrop{position:absolute;inset:0;background:center/cover url('assets/stage/dance-stage.png');z-index:-3}
.guitar-mini .stage-backdrop{background-image:url('assets/stage/guitar-stage.png')}
.stage-mini:after{content:'';position:absolute;inset:0;background:linear-gradient(#160e3899,transparent 27%,transparent 78%,#190d3988);pointer-events:none;z-index:-1}
.stage-floor-shadow{position:absolute;left:29%;width:42%;height:3%;top:86%;border-radius:50%;background:#17102266;filter:blur(5px);z-index:-2}
.stage-actor{position:absolute;left:13%;top:28%;width:74%;height:60%;pointer-events:none;transform-origin:50% 95%;z-index:-2}
.stage-actor>.art-fit{position:absolute;inset:0;width:100%;height:100%}
.stage-mini .mini-header{z-index:5}
.stage-mini .mini-energy{z-index:5}
.stage-mini .mini-wallet,.stage-mini .mini-rate{background:#281f42e8;color:#fff3e1;border:1px solid #d9bd8a;border-radius:7px;font-size:3.7cqw;padding:1cqw;transform:none;top:6%;width:26%}
.stage-mini .mini-rate{left:52%}
.guitar-mini .mini-wallet{left:33%;width:34%}
.stage-mini canvas{z-index:2;touch-action:none;outline:none}
.stage-mini .mini-tutorial{inset:auto 6% 3%;z-index:6;padding:4cqw;border:1px solid #d3b1e16b;border-radius:18px;background:#241634ed;box-shadow:0 10px 30px #0d092466;backdrop-filter:blur(12px)}
.stage-mini .mini-tutorial h2{font-size:6cqw;margin:0 0 2cqw;color:#ffe7ed}
.stage-mini .mini-tutorial p{font-size:3.6cqw;line-height:1.5;margin:0}
.stage-mini #mini-start{margin-top:3cqw;min-width:55%;padding:2.5cqw 5cqw}
.stage-legend{display:flex;justify-content:space-around;margin-top:2cqw;gap:2cqw}
.stage-legend>span{display:flex;align-items:center;gap:1cqw;font-size:2.8cqw}
.stage-legend .ui-icon{width:7cqw;height:7cqw;flex:none}
.stage-mini .mini-keys{letter-spacing:.3em;margin-top:2cqw;color:#cbd9fa;font-size:3cqw}
.stage-performance{position:absolute;top:18%;left:15%;width:70%;text-align:center;z-index:1;pointer-events:none;text-shadow:0 2px 6px #1b113a}
.stage-performance strong{display:block;font-size:5.5cqw;color:#ffe5ef}
.stage-performance span{display:block;margin-top:1cqw;font-size:3cqw;color:#ded3f6}
.stage-performance[data-level='2'] strong{color:#fff1a4}
.stage-mini.performing .stage-actor{animation:stage-dance .65s ease-in-out infinite alternate}
.guitar-mini.performing .stage-actor{animation:stage-strum .3s ease-in-out infinite alternate}
@keyframes stage-dance{from{transform:translateX(-1.4%) rotate(-1deg)}to{transform:translateX(1.4%) rotate(1deg) translateY(-.5%)}}
@keyframes stage-strum{from{transform:rotate(-.4deg)}to{transform:rotate(.4deg) translateY(-.5%)}}
@media(prefers-reduced-motion:reduce){.stage-mini.performing .stage-actor{animation:none}}
/* Flying invitations and compacting reward slots. Trajectory is authored; see OFFER-VISUAL-AUDIT. */
#game .floating-invite[hidden],#game .timed-reward[hidden]{display:none}
#game .floating-invite{display:block;position:absolute;left:5%;top:70%;bottom:auto;right:auto;width:18%;height:8%;padding:0;border:0;background:none;box-shadow:none;overflow:visible;animation:offer-flight 22s ease-in-out infinite;z-index:8}
#game .floating-invite>.ui-icon{display:block;width:100%;height:100%}
#game .timed-reward{border:0;background:transparent;box-shadow:none;padding:2px}
@keyframes offer-flight{0%,100%{left:5%;top:70%;transform:rotate(-8deg)}22%{left:42%;top:43%;transform:rotate(8deg)}45%{left:59%;top:27%;transform:rotate(-5deg)}68%{left:30%;top:34%;transform:rotate(9deg)}85%{left:58%;top:59%;transform:rotate(-8deg)}}
#game.reduce-motion .floating-invite{animation:none;left:61%;top:59%}
@media(prefers-reduced-motion:reduce){#game .floating-invite{animation:none;left:61%;top:59%}}
.room-prop[data-slot=records]{left:83%;top:71%;width:13%;height:3%;z-index:6}
.room-prop[data-slot=cans][data-art='42']{left:62%;top:46%;width:4%;height:3%;z-index:3}
.room-prop[data-slot=screen]{left:0%;top:50%;width:22%;height:21%;z-index:4}
.room-prop[data-slot=mixer]{left:0%;top:39%;width:20%;height:6%;z-index:6}
.stage-mini:not(.stage-ready) .stage-actor{visibility:hidden}
.stage-mini:not(.stage-ready) .mini-tutorial{background:#241634}
#game .floating-invite span{background:none;padding:0;border:0;border-radius:0}
#idol.has-hero-video{animation:none}
#idol>.hero-motion{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;background:transparent;pointer-events:none}
.stage-mini .stage-actor.has-hero-video{animation:none}
.stage-actor>.hero-motion{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;background:transparent;pointer-events:none;filter:none}
#game #cheat-button{flex:none;position:relative;width:auto;min-height:30px;padding:4px 9px;border:1px solid #e8c1ed;border-radius:8px;background:#41264f;color:#fff0fa;font-size:12px;font-weight:700;pointer-events:auto}
.settings-title{font-size:15px;margin:16px 0 2px}.settings-title:first-child{margin-top:0}.volume-setting{display:grid;grid-template-columns:1fr auto;gap:8px;font-size:12px;margin:4px 0 15px;color:#67466f}.volume-setting input{grid-column:1/-1;width:100%;accent-color:#b16aae}.volume-setting output{font-weight:700;font-variant-numeric:tabular-nums}.setting-line input[type=checkbox]{cursor:pointer}
#game .setting-line label{font-size:14px;line-height:1.4}
