:root { --hud-bg: rgba(17, 26, 36, 0.72); --hud-border: rgba(255, 255, 255, 0.16); --hud-text: #f8fafc; --hud-muted: #cbd5e1; --accent: #2bb3a9; --accent-hover: #38c9be; } * { box-sizing: border-box; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; overflow: hidden; background: #10212b; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; color: var(--hud-text); user-select: none; } #canvas-wrap { position: fixed; inset: 0; width: 100%; height: 100%; } #canvas-wrap canvas { display: block; width: 100%; height: 100%; } .loading-overlay { position: fixed; inset: 0; z-index: 30; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; background: radial-gradient(circle at 50% 42%, #1d3b4c 0%, #0e1e28 100%); transition: opacity 0.45s ease, visibility 0.45s ease; } .loading-overlay.hidden { opacity: 0; visibility: hidden; pointer-events: none; } .spinner { width: 36px; height: 36px; border: 3px solid rgba(255, 255, 255, 0.18); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.85s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .hud-header { position: fixed; top: 20px; left: 22px; z-index: 10; padding: 12px 16px; border-radius: 14px; background: var(--hud-bg); border: 1px solid var(--hud-border); backdrop-filter: blur(12px); pointer-events: none; } .badge { display: inline-block; font-size: 11px; font-weight: 600; letter-spacing: 1.4px; color: #7ce8df; margin-bottom: 4px; } .hud-header h1 { font-size: 18px; font-weight: 600; letter-spacing: 0.5px; } .hud-header p { font-size: 12px; color: var(--hud-muted); margin-top: 3px; } .hud-Dock { position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%); z-index: 10; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px; padding: 10px 14px; border-radius: 16px; background: var(--hud-bg); border: 1px solid var(--hud-border); backdrop-filter: blur(14px); box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28); max-width: calc(100vw - 24px); } .control-group { display: flex; align-items: center; gap: 6px; } .control-group.cameras { padding-left: 10px; border-left: 1px solid var(--hud-border); } .hud-btn, .cam-btn { appearance: none; border: 1px solid rgba(255, 255, 255, 0.14); background: rgba(255, 255, 255, 0.08); color: var(--hud-text); font-size: 12px; font-weight: 500; padding: 7px 12px; border-radius: 9px; cursor: pointer; transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease; white-space: nowrap; } .hud-btn:hover, .cam-btn:hover { background: rgba(255, 255, 255, 0.16); border-color: rgba(255, 255, 255, 0.3); } .hud-btn:active, .cam-btn:active { transform: scale(0.97); } .hud-btn.primary, .cam-btn.active { background: var(--accent); border-color: var(--accent-hover); color: #062624; font-weight: 600; } @media (max-width: 720px) { .hud-header { top: 12px; left: 12px; right: 12px; padding: 10px 13px; } .hud-header h1 { font-size: 15px; } .control-group.cameras { padding-left: 0; border-left: none; } }