/* NƠ CONCERT V3 — stage polish and breathing-room improvements */
:root{--v3-rose:#ffa8d2;--v3-cream:#ffefe5;--v3-gold:#ffca91}
.world-label,.camera-label{backdrop-filter:blur(9px);border:1px solid rgba(255,198,230,.19);background:rgba(18,12,30,.74)!important;box-shadow:0 8px 28px rgba(0,0,0,.24)}
.venue{background:#0d0b17}
.venue-vignette{pointer-events:none;background:linear-gradient(180deg,rgba(7,6,15,.23),transparent 23%,transparent 75%,rgba(6,5,13,.53))!important}
.map-panel{box-shadow:0 12px 38px rgba(0,0,0,.42),inset 0 1px rgba(255,236,254,.09)!important;border-color:rgba(255,182,206,.28)!important}
.map-stage-target{font:inherit;cursor:pointer;border:1px solid #fa94c9;color:#ffdbef;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:filter .2s,background .2s}
.map-stage-target:hover{background:rgba(255,133,203,.2);filter:brightness(1.25)}
.map-stage-target small{font-size:8px;opacity:.7;letter-spacing:.7px}
.stage-effects-ticker{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:3;display:flex;gap:6px;align-items:center;justify-content:center;pointer-events:none;max-width:70%;white-space:nowrap}
.stage-effects-ticker span{border:1px solid rgba(255,184,220,.21);background:rgba(23,13,35,.60);backdrop-filter:blur(7px);padding:5px 9px;border-radius:30px;font-size:9px;letter-spacing:1.1px;color:#f7d0e9;font-weight:750;text-shadow:0 0 9px rgba(255,148,203,.26)}
.camera-label:after{content:' · ✦ BAND + CROWD CAM';color:#f8aed2;letter-spacing:.4px}
#three-stage canvas.world-canvas{filter:saturate(1.18) contrast(1.05)}
.hero-title-v2{pointer-events:none;opacity:.89}
.stage-left-banner{box-shadow:0 13px 28px rgba(0,0,0,.25);border:1px solid rgba(255,195,223,.22);backdrop-filter:blur(10px)}
.world-css3d{isolation:isolate}
.chat-panel-heading h2{letter-spacing:2.6px;text-shadow:0 0 22px rgba(255,189,219,.12)}
.sidebar-v2{border-left:1px solid rgba(255,188,223,.22)!important}
.mode-toolbar button:hover,.side-footer button:hover{filter:brightness(1.15)}
.world-label,.camera-label,.mode-toolbar,.map-panel,.sidebar-v2{z-index:6}
@media(max-width:1120px){.stage-effects-ticker{display:none}.camera-label:after{display:none}}
@media(max-width:750px){.world-label,.camera-label{display:none}.stage-effects-ticker{display:none}}
/* Self-contained 2D fallback if WebGL/Three.js cannot load. */
.fall-camera-l,.fall-camera-r{position:absolute;top:39%;width:14%;height:26%;z-index:1;border:5px solid #ad77d3;box-shadow:0 0 26px #aa68ed7a,inset 0 0 18px #ff87c26b;background:radial-gradient(ellipse at bottom,#7454a3,#211831 75%);color:#ffe6f5;text-align:center;font:900 clamp(9px,1vw,15px) Arial;letter-spacing:2px;padding:16px 0;overflow:hidden}
.fall-camera-l{left:12%}.fall-camera-r{right:12%}
.fall-camera-l span,.fall-camera-r span{display:block;position:absolute;top:40%;left:0;right:0;font-size:35px;text-shadow:0 0 22px #ff98d1;animation:fallbackWave 1.3s ease-in-out infinite alternate}
.fall-camera-l small,.fall-camera-r small{display:block;position:absolute;bottom:10px;left:0;right:0;font:700 9px Arial;color:#f8b9dd}
.fall-emcee-name{position:absolute;left:-21px;right:-21px;top:-33px;padding:6px;border:1px solid #ffa9db;background:#2a1235de;box-shadow:0 0 20px #e76bab66;border-radius:30px;text-align:center;font:900 18px Arial;color:#ffe5f8;white-space:nowrap}
.fallback-scene .singer{animation:fallbackSinger 2.5s ease-in-out infinite alternate}
.fall-mic{position:absolute;right:8px;top:112px;width:11px;height:44px;background:#3e314d;border-radius:8px;color:#e6b1eb;transform:rotate(22deg);z-index:4;font-size:12px}
.fall-band{position:absolute;bottom:95%;height:52px;width:80px;display:flex;align-items:center;flex-direction:column;color:#fff;font-size:30px;animation:fallbackWave .65s ease-in-out infinite alternate;text-shadow:0 0 16px #e66fc8a9}
.fall-band span{font:800 10px Arial;letter-spacing:1px}.band-left{left:17%}.band-right{right:17%;animation-delay:-.4s}
@keyframes fallbackSinger{0%{transform:scale(.65) translateX(-12px) rotate(-4deg)}100%{transform:scale(.65) translateX(12px) rotate(4deg)}}
@keyframes fallbackWave{to{transform:translateY(-8px) rotate(4deg)}}
@media(prefers-reduced-motion:reduce){.fallback-scene .singer,.fall-band,.fall-camera-l span,.fall-camera-r span{animation:none}}
