body.loading{overflow:hidden}#loading-overlay{position:fixed;inset:0;z-index:999999;background-color:#050505;color:#e0e0e0;display:flex;align-items:center;justify-content:center;opacity:1;visibility:visible;transition:opacity 0.8s cubic-bezier(0.22,1,0.36,1),visibility 0.8s;pointer-events:auto;user-select:none;overflow:hidden}#loading-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}#loading-overlay.hidden .log-entry,#loading-overlay.hidden .done-entry,#loading-overlay.hidden .char{will-change:auto}#loading-overlay::before{content:'';position:absolute;top:50%;left:50%;width:120vmax;height:120vmax;transform:translate(-50%,-50%);background:radial-gradient(circle at center,rgba(43,123,217,0.035) 0%,transparent 60%);pointer-events:none;z-index:0;animation:ambientPulse 9s ease-in-out infinite alternate}@keyframes ambientPulse{0%{opacity:0.5;transform:translate(-50%,-50%) scale(1)}100%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}}#loading-content{position:relative;z-index:2;width:100%;max-width:1120px;height:480px;padding:0 24px;box-sizing:border-box;text-align:center}.loading-title{position:absolute;top:50%;left:50%;margin:0;font-family:var(--font-display);font-size:clamp(2.2rem,8vw,3.6rem);font-weight:700;letter-spacing:0.06em;line-height:1.1;color:#ffffff;text-shadow:0 0 40px rgba(255,255,255,0.12);white-space:nowrap;transform:translate(-50%,-50%) scale(1);transform-origin:center center;opacity:1;transition:transform 1s cubic-bezier(0.34,1.15,0.64,1),opacity 0.6s cubic-bezier(0.4,0,0.6,1),letter-spacing 1s cubic-bezier(0.34,1.15,0.64,1),text-shadow 1s ease}#loading-content.updated .loading-title{transform:translate(-50%,calc(-50% - 180px)) scale(0.55);opacity:0.55;letter-spacing:0.16em;text-shadow:0 0 20px rgba(255,255,255,0.05)}.loading-log{position:absolute;right:calc(50% + 230px);top:50%;transform:translateY(-50%);width:320px;display:flex;flex-direction:column;justify-content:center;gap:5px;text-align:right;pointer-events:none;z-index:1;font-family:var(--font-mono);font-size:0.72rem;line-height:1.5;overflow:visible}.loading-done{position:absolute;left:calc(50% + 230px);top:50%;transform:translateY(-50%);width:280px;display:flex;flex-direction:column;justify-content:center;gap:5px;text-align:left;pointer-events:none;z-index:1;font-family:var(--font-mono);font-size:0.72rem;line-height:1.5;overflow:visible}.log-entry{flex-shrink:0;white-space:nowrap;overflow:hidden;color:rgba(255,255,255,0.85);text-shadow:0 0 10px rgba(0,0,0,0.5);will-change:transform,opacity}.log-time{opacity:0.55;margin-right:6px;font-size:0.85em}.log-module-name{font-weight:700;margin-right:6px;opacity:0.9}.log-module-System{color:rgba(200,200,200,0.9)}.log-module-Data{color:rgba(100,210,255,0.95);text-shadow:0 0 8px rgba(100,210,255,0.3)}.log-module-Version{color:rgba(var(--accent-rgb),1);font-weight:600;text-shadow:0 0 12px rgba(var(--accent-rgb),0.4)}.log-module-UI{color:rgba(255,100,200,0.95);text-shadow:0 0 8px rgba(255,100,200,0.3)}.log-module-Player{color:rgba(80,250,123,0.95);text-shadow:0 0 8px rgba(80,250,123,0.3)}.log-module-Chart{color:rgba(255,180,80,0.95);text-shadow:0 0 8px rgba(255,180,80,0.3)}.done-entry{flex-shrink:0;white-space:nowrap;overflow:hidden;color:#50fa7b;text-shadow:0 0 8px rgba(80,250,123,0.35);letter-spacing:0.01em;will-change:transform,opacity}.log-entry .char,.done-entry .char{display:inline-block;will-change:transform,opacity;backface-visibility:hidden}@media (max-width:1024px){.loading-log,.loading-done{display:none}}.update-info{position:absolute;top:50%;left:50%;width:calc(100% - 48px);max-width:420px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;transform:translate(-50%,calc(-50% + 28px)) scale(0.96);transition:opacity 0.7s cubic-bezier(0.22,1,0.36,1) 1s,transform 0.9s cubic-bezier(0.34,1.18,0.64,1) 1s}#loading-content.updated .update-info{opacity:1;transform:translate(-50%,calc(-50% + 30px)) scale(1)}.version-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:100px;font-size:0.74rem;font-weight:500;color:rgba(255,255,255,0.72);letter-spacing:0.06em}.welcome-message{font-size:1.05rem;font-weight:400;color:#ffffff;line-height:1.5;margin:0;opacity:0.92}.changes-container{width:100%;margin:6px 0 2px;text-align:left;padding:12px 4px;border-top:1px solid rgba(255,255,255,0.055);border-bottom:1px solid rgba(255,255,255,0.055)}.changes-container h4{font-size:0.66rem;text-transform:uppercase;letter-spacing:0.14em;color:rgba(255,255,255,0.35);margin:0 0 10px 0;font-weight:600}.changes-list{list-style:none;padding:0;margin:0;max-height:150px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.16) transparent}.changes-list li{font-size:0.82rem;color:rgba(255,255,255,0.68);padding:5px 0;display:flex;gap:8px;line-height:1.5;opacity:0;transform:translateY(6px);animation:changeItemIn 0.5s cubic-bezier(0.34,1.18,0.64,1) forwards}.changes-list li:nth-child(1){animation-delay:1.35s}.changes-list li:nth-child(2){animation-delay:1.41s}.changes-list li:nth-child(3){animation-delay:1.47s}.changes-list li:nth-child(4){animation-delay:1.53s}.changes-list li:nth-child(5){animation-delay:1.59s}.changes-list li:nth-child(6){animation-delay:1.65s}.changes-list li:nth-child(7){animation-delay:1.71s}.changes-list li:nth-child(8){animation-delay:1.77s}@keyframes changeItemIn{to{opacity:1;transform:translateY(0)}}.change-type{font-family:var(--font-mono);font-size:0.64rem;color:var(--accent-color);background:rgba(var(--accent-rgb),0.12);padding:2px 6px;border-radius:4px;min-width:42px;text-align:center;flex-shrink:0;align-self:flex-start}.version-item{padding-bottom:10px;margin-bottom:10px}.version-item:not(:last-child){border-bottom:1px solid rgba(255,255,255,0.045)}.version-item:last-child{padding-bottom:0;margin-bottom:0}.version-item-label{font-size:0.72rem;font-weight:600;color:var(--accent-color);margin-bottom:6px;letter-spacing:0.03em;opacity:0;transform:translateX(-4px);animation:versionLabelIn 0.5s cubic-bezier(0.34,1.18,0.64,1) 1.28s forwards}@keyframes versionLabelIn{to{opacity:1;transform:translateX(0)}}.click-hint{margin-top:24px;font-size:0.72rem;color:rgba(255,255,255,0.28);letter-spacing:0.14em;opacity:0;animation:hintEnter 0.6s cubic-bezier(0.22,1,0.36,1) 2.1s forwards,hintFade 2.4s ease-in-out 2.7s infinite}@keyframes hintEnter{to{opacity:0.35}}@keyframes hintFade{0%,100%{opacity:0.28}50%{opacity:0.62}}