*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{background:#04060f;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}.page{position:fixed;top:0;right:0;bottom:0;left:0;background:#04060f;overflow:hidden}.sky-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;cursor:grab}.sky-canvas:active{cursor:grabbing}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;z-index:20;pointer-events:none}.loading-star{font-size:30px;color:#cfd9ff;animation:pulse 1.6s ease-in-out infinite}.loading-text{font-size:14px;color:#ffffff73;letter-spacing:2px}@keyframes pulse{0%,to{opacity:.35;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}.top-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:center;padding:calc(env(safe-area-inset-top,0px) + 14px) 16px 0;z-index:10;pointer-events:none}.loc-wrap{position:relative;pointer-events:auto}.loc-text{display:inline-block;font-size:15px;color:#ffffffd9;letter-spacing:1px;padding:8px 18px;cursor:pointer}.loc-text:after{content:" ▾";opacity:.6}.loc-select{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.fs-btn{position:absolute;right:16px;top:calc(env(safe-area-inset-top,0px) + 12px);width:36px;height:36px;border:none;border-radius:50%;background:#ffffff14;color:#ffffffbf;font-size:17px;cursor:pointer;pointer-events:auto;transition:opacity .2s}.fs-btn:hover{opacity:.65}.star-label{position:absolute;transform:translate(-50%,-160%);padding:5px 14px;background:#141a32d1;border:1px solid rgba(160,180,255,.35);border-radius:15px;z-index:8;pointer-events:none;font-size:13px;color:#cfd9ff;letter-spacing:1px;white-space:nowrap;animation:labelIn .25s ease-out}@keyframes labelIn{0%{opacity:0;transform:translate(-50%,-120%)}to{opacity:1;transform:translate(-50%,-160%)}}.bottom-area{position:absolute;left:0;right:0;bottom:0;padding:0 24px calc(env(safe-area-inset-bottom,0px) + 26px);z-index:10;pointer-events:none}.controls{display:flex;align-items:center;justify-content:center;gap:14px}.music-orb{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border:1px solid rgba(255,255,255,.14);border-radius:50%;background:#ffffff12;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;pointer-events:auto;transition:border-color .5s,box-shadow .5s}.music-orb:hover{border-color:#ffffff4d}.music-orb.on{border-color:#8ca5ff80;animation:orbBreathe 4s ease-in-out infinite}@keyframes orbBreathe{0%,to{box-shadow:0 0 10px #6e8cff2e}50%{box-shadow:0 0 22px #6e8cff6b}}.eq{display:flex;align-items:flex-end;gap:3px;height:16px}.eq i{width:3px;height:5px;border-radius:2px;background:#cfd9ff8c;transition:height .4s}.music-orb.on .eq i{background:#cfd9ff;animation:eqDance 1.6s ease-in-out infinite}.music-orb.on .eq i:nth-child(2){animation-delay:.35s}.music-orb.on .eq i:nth-child(3){animation-delay:.7s}@keyframes eqDance{0%,to{height:5px}50%{height:15px}}.wx-chips{display:flex;align-items:center;gap:2px;padding:4px;border:1px solid rgba(255,255,255,.1);border-radius:20px;background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:auto}.wx-chip{height:30px;padding:0 13px;border:none;border-radius:15px;background:transparent;font-size:12px;color:#ffffff8c;letter-spacing:1px;cursor:pointer;transition:color .3s,background .3s}.wx-chip:hover{color:#ffffffd9}.wx-chip.on{color:#cfd9ff;background:#6e8cff33}.hint-text{text-align:center;margin-top:16px;font-size:11px;color:#ffffff4d;letter-spacing:1px}.toast{position:absolute;left:50%;bottom:32%;transform:translate(-50%);padding:10px 22px;background:#141a32e6;border:1px solid rgba(160,180,255,.3);border-radius:22px;color:#dfe7ff;font-size:14px;letter-spacing:1px;z-index:40;pointer-events:none;animation:labelIn2 .25s ease-out}@keyframes labelIn2{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}
