/* ============================================================
   AOX TOWN — LIVE HOUSE（ステージ/客席/照明/カメラ）と LIVE関連UI
   ============================================================ */
/* ---- 追加ポーズ（ステージ・客席・エモート用） ---- */
.p-wave .arm.r{rotate:-150deg;animation:waveA .5s ease-in-out infinite;transform-origin:50% 3px}
@keyframes waveA{0%,100%{rotate:-135deg}50%{rotate:-175deg}}
.p-clap .arm.l{rotate:-60deg;animation:clapL .3s ease-in-out infinite}.p-clap .arm.r{rotate:60deg;animation:clapR .3s ease-in-out infinite}
@keyframes clapL{0%,100%{rotate:-70deg}50%{rotate:-30deg}}@keyframes clapR{0%,100%{rotate:70deg}50%{rotate:30deg}}
.p-bow{transform-origin:50% 100%;animation:bowA 2.2s ease-in-out 1 both}
@keyframes bowA{0%{rotate:0deg}40%,70%{rotate:34deg;translate:0 3px}100%{rotate:0deg}}
.p-cheer .arm.l{rotate:155deg;animation:cheerL .44s ease-in-out infinite}.p-cheer .arm.r{rotate:-155deg;animation:cheerR .44s ease-in-out infinite}
@keyframes cheerL{0%,100%{rotate:150deg}50%{rotate:175deg}}@keyframes cheerR{0%,100%{rotate:-150deg}50%{rotate:-175deg}}
.p-cheer{animation:dj .44s ease-in-out infinite}
.p-heart .arm.l{rotate:140deg}.p-heart .arm.r{rotate:-140deg}
.p-point .arm.r{rotate:-120deg}.p-point{animation:sway 1.6s ease-in-out infinite}

/* ---- LIVE 画面 ---- */
.lvroot{position:absolute;inset:0;overflow:hidden;background:var(--lv-sky,#222);color:#fff;font-family:inherit;touch-action:manipulation;user-select:none}
.lvroot[data-theme=day]{--lv-sky:linear-gradient(#7cc8ff,#d9f1ff 55%,#f7e7c4);--lv-floor:#c9a97a;--lv-beam:255,255,255}
.lvroot[data-theme=sunset]{--lv-sky:linear-gradient(#ff8a4d,#c25b8c 50%,#5b3a86);--lv-floor:#6a4468;--lv-beam:255,190,110}
.lvroot[data-theme=night]{--lv-sky:linear-gradient(#070824,#1a2170 55%,#2a2f8a);--lv-floor:#161a52;--lv-beam:150,190,255}
.lv-cam{position:absolute;inset:0;transform-origin:50% 45%;transition:transform 3.2s cubic-bezier(.45,.05,.3,1);will-change:transform}
.lvroot[data-lite="1"] .lv-cam{transition-duration:0s}
.lv-wall{position:absolute;left:0;right:0;top:0;height:56%;background:linear-gradient(rgba(0,0,0,.12),rgba(0,0,0,.35))}
.lv-stagebase{position:absolute;left:4%;right:4%;top:20%;height:40%;border-radius:10px 10px 4px 4px;background:linear-gradient(#3a3a5e,#22223e);box-shadow:0 8px 0 rgba(0,0,0,.25), inset 0 0 0 2px rgba(255,255,255,.12)}
.lv-stagebase::after{content:"";position:absolute;left:0;right:0;top:0;height:100%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 2px,transparent 2px 24px)}
.lv-aoxsign{position:absolute;left:50%;top:6.5%;translate:-50% 0;font-weight:900;letter-spacing:.3em;font-size:13px;opacity:.9;text-shadow:0 0 10px rgba(var(--lv-beam),.9)}
.lv-stage{position:absolute;left:4%;right:4%;top:20%;height:40%}
.lv-m{position:absolute;translate:-50% -100%;transition:left 1.5s ease-in-out,top 1.5s ease-in-out;will-change:left,top}
.lv-m.noglide{transition:none}
.lv-m .lv-b{transform-origin:50% 100%}
.lv-m .rig{scale:1.25;transform-origin:50% 100%}
.lv-m .tag{position:absolute;left:50%;bottom:-17px;translate:-50% 0;font-size:10px;font-weight:900;padding:1px 6px;border-radius:9px;background:rgba(0,0,0,.45);color:#fff;white-space:nowrap}
.lv-m .lead{position:absolute;left:50%;top:-24px;translate:-50% 0;font-size:12px}
.lv-m.hide{opacity:0;transition:opacity 1.2s}
.lv-m .bub{position:absolute;left:50%;top:-34px;translate:-50% 0;font-size:16px}
.lv-aud{position:absolute;left:0;right:0;top:60%;bottom:0;background:linear-gradient(rgba(0,0,0,.0),rgba(0,0,0,.45)),var(--lv-floor)}
.lv-fan{position:absolute;width:15px;height:20px;translate:-50% -100%;--c:#f4b69a}
.lv-fan i{position:absolute;left:2.5px;top:0;width:10px;height:9px;border-radius:50%;background:#f6d0b0}
.lv-fan b{position:absolute;left:1px;top:8px;width:13px;height:11px;border-radius:5px 5px 2px 2px;background:var(--c)}
.lv-fan.up{animation:fanUp .44s ease-in-out infinite}
@keyframes fanUp{50%{translate:-50% calc(-100% - 5px)}}
.lv-me,.lv-peer{position:absolute;translate:-50% -100%}
.lv-me .rig,.lv-peer .rig{scale:1.15;transform-origin:50% 100%}
.lv-me .tag,.lv-peer .tag{position:absolute;left:50%;bottom:-15px;translate:-50% 0;font-size:10px;font-weight:900;padding:1px 6px;border-radius:9px;background:rgba(0,0,0,.5);color:#fff;white-space:nowrap;max-width:86px;overflow:hidden;text-overflow:ellipsis}
.lv-me .tag{background:#ff8c42}
.lv-em{position:absolute;left:50%;top:-30px;translate:-50% 0;font-size:22px;pointer-events:none;animation:emUp 1.6s ease-out forwards}
@keyframes emUp{0%{opacity:0;translate:-50% 8px;scale:.6}15%{opacity:1;scale:1.2}100%{opacity:0;translate:-50% -26px;scale:1}}
.lv-say{position:absolute;left:50%;top:-44px;translate:-50% 0;background:#fff;color:#2b2858;font-size:11px;font-weight:900;padding:3px 8px;border-radius:10px;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.2);animation:emUp 3.2s ease-out forwards;z-index:9}
/* 照明 */
.lv-lights{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen}
.lv-beam{position:absolute;top:14%;width:34%;height:62%;transform-origin:50% 0;background:linear-gradient(rgba(var(--lv-beam),.55),rgba(var(--lv-beam),0));clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);opacity:.0;transition:opacity .6s}
.lv-beam.b1{left:6%;rotate:-14deg}.lv-beam.b2{left:26%;rotate:-5deg}.lv-beam.b3{left:40%;rotate:5deg}.lv-beam.b4{left:60%;rotate:14deg}
.lvroot[data-light=warm] .lv-beam,.lvroot[data-light=build] .lv-beam,.lvroot[data-light=soft] .lv-beam{opacity:.35}
.lvroot[data-light=flash] .lv-beam,.lvroot[data-light=spot] .lv-beam{opacity:.6}
.lvroot[data-lite="0"][data-light=build] .lv-beam{animation:beamSwing 2.2s ease-in-out infinite alternate}
.lvroot[data-lite="0"][data-light=flash] .lv-beam{animation:beamSwing 1.7s ease-in-out infinite alternate}
.lv-beam.b2,.lv-beam.b4{animation-direction:alternate-reverse!important}
@keyframes beamSwing{from{transform:rotate(-12deg)}to{transform:rotate(12deg)}}
.lvroot[data-light=dim] .lv-wall{background:rgba(0,0,0,.55)}
.lv-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.lv-flash.fl{animation:flashA .22s ease-out}
@keyframes flashA{0%{opacity:.35}100%{opacity:0}}
.lv-spot{position:absolute;width:40%;height:50%;top:22%;left:30%;border-radius:50%;background:radial-gradient(rgba(255,255,255,.4),rgba(255,255,255,0) 68%);opacity:0;transition:left 1.2s,opacity .5s;mix-blend-mode:screen}
.lvroot[data-light=spot] .lv-spot{opacity:1}
.lv-black{position:absolute;inset:0;background:#000;opacity:0;transition:opacity 1s;pointer-events:none;z-index:20}
.lvroot[data-phase=black] .lv-black{opacity:1}
.lvroot[data-phase=pre] .lv-stagebase{filter:brightness(.45)}
.lvroot[data-phase=pre] .lv-wall{background:rgba(0,0,0,.6)}
.lvroot[data-phase=after] .lv-lights{opacity:.4}
/* HUD */
.lv-top{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;padding:6px 10px 6px 112px;font-weight:900;font-size:13px;z-index:25;background:linear-gradient(rgba(0,0,0,.4),transparent);pointer-events:none}
.lv-top b{font-size:14px}.lv-top small{opacity:.9}
.lv-live-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#ff3b5c;margin-right:5px;animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.3}}
.lv-bar{position:absolute;left:0;right:0;bottom:0;z-index:25;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px)*0);display:flex;gap:6px;justify-content:center;flex-wrap:wrap;background:linear-gradient(transparent,rgba(0,0,0,.55))}
.lv-bar button{min-width:44px;min-height:44px;border:0;border-radius:22px;background:rgba(255,255,255,.18);color:#fff;font-size:22px;backdrop-filter:blur(3px)}
.lv-bar button:active{scale:.92}
.lv-bar .txt{font-size:13px;font-weight:900;padding:0 12px}
.lv-combo{position:absolute;left:50%;top:15%;translate:-50% 0;z-index:24;font-weight:900;font-size:22px;color:#ffe066;text-shadow:0 2px 0 #b45309,0 0 12px rgba(255,200,80,.8);opacity:0;transition:opacity .3s;pointer-events:none}
.lv-combo.on{opacity:1}
.lv-msg{position:absolute;left:50%;top:38%;translate:-50% -50%;z-index:30;text-align:center;font-weight:900;text-shadow:0 2px 6px rgba(0,0,0,.6);width:84%}
.lv-msg .big{font-size:26px;display:block;margin-bottom:6px}
.lv-msg .count{font-size:40px;letter-spacing:.05em}
.lv-playbtn{display:block;margin:10px auto 0;min-height:56px;padding:0 22px;border:0;border-radius:28px;background:linear-gradient(#ff5a7a,#e0285a);color:#fff;font-size:18px;font-weight:900;box-shadow:0 5px 0 #8f1038;animation:pulse 1.2s infinite}
.lv-lock{position:absolute;right:5%;top:22%;z-index:6;font-size:11px;font-weight:900;padding:4px 7px;border-radius:8px;background:rgba(0,0,0,.55)}
.lv-presets{position:absolute;left:0;right:0;bottom:62px;z-index:26;display:flex;gap:6px;flex-wrap:wrap;justify-content:center;padding:0 8px}
.lv-presets button{min-height:40px;padding:0 12px;border:0;border-radius:20px;background:rgba(255,255,255,.92);color:#2b2858;font-weight:900;font-size:14px}
/* HUD チップ（次のLIVE） */
#liveChip{position:absolute;left:50%;top:6px;translate:-50% 0;z-index:12;border:0;border-radius:16px;padding:4px 12px;min-height:30px;background:rgba(35,38,82,.78);color:#fff;font-size:12px;font-weight:900;white-space:nowrap}
#liveChip.hot{min-height:38px;font-size:14px;background:linear-gradient(#ff5a7a,#e0285a);box-shadow:0 3px 0 #8f1038;animation:pulse 1.6s infinite}
#liveChip.on{background:#e0285a;animation:pulse 1s infinite}
.livecard{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:14px;background:#f4f1ff;margin:8px 0}
.livecard b{font-size:17px}.livecard .t{font-size:24px;font-weight:900;color:#4b3fa8}
.livecard.now{background:#ffe3ea}
.row2 .btn.live{background:#6d5ce8;color:#fff}
@media (prefers-reduced-motion:reduce){.lv-cam{transition-duration:0s}.lv-beam{animation:none!important}}
