/* 核心布局文件 - 负责定位与容器结构 */
#fm-container { position: relative; width: 100%; height: 650px; background: #fff; border-radius: 16px; overflow: hidden; margin-bottom: 20px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }
#fm-map { width: 100%; height: 100%; opacity: 0; visibility: hidden; transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1); }
#fm-map.visible { opacity: 1; visibility: visible; }
#fm-intro { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #ffffff; z-index: 9999; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; transition: opacity 1s ease-out; }
#fm-intro.vanish { opacity: 0; }
#fm-globe-canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.fm-header { position: absolute; top: 30px; left: 30px; z-index: 10; pointer-events: none; opacity: 0; transform: translateY(-10px); transition: 0.8s ease 0.5s; }
.fm-header.show { opacity: 1; transform: translateY(0); }
.fm-switch { position: absolute; top: 30px; right: 30px; z-index: 10; display: flex; opacity: 0; transform: translateY(-10px); transition: 0.8s ease 0.6s; }
.fm-switch.show { opacity: 1; transform: translateY(0); }
.fm-legend { position: absolute; bottom: 30px; right: 30px; z-index: 10; text-align: right; display: none; pointer-events: none; opacity: 0; transition: opacity 0.5s; }
.fm-legend.show { opacity: 1; }
.fm-footer { position: absolute; bottom: 15px; right: 20px; pointer-events: none; opacity: 0; transition: 1s ease 1s; }
.fm-footer.show { opacity: 1; }
@media (max-width: 768px) { #fm-map { height: 450px; } }