* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #0a0a0a; color: #fff; min-height: 100vh; } .header { background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 15px 30px; border-bottom: 2px solid #0f3460; display: flex; justify-content: space-between; align-items: center; } .header h1 { font-size: 20px; color: #e94560; } .nav-links { display: flex; gap: 15px; } .nav-links a { color: #fff; text-decoration: none; padding: 8px 16px; border-radius: 6px; background: #0f3460; font-size: 13px; transition: all 0.3s; } .nav-links a:hover, .nav-links a.active { background: #e94560; } .container { display: flex; height: calc(100vh - 65px); } .sidebar { width: 300px; background: #1a1a2e; border-right: 1px solid #0f3460; padding: 20px; overflow-y: auto; } .stream-list { margin-top: 15px; } .stream-item { padding: 12px; background: #16213e; border-radius: 8px; margin-bottom: 10px; cursor: pointer; transition: all 0.3s; border: 2px solid transparent; } .stream-item:hover { background: #0f3460; } .stream-item.active { border-color: #e94560; background: #0f3460; } .stream-name { font-size: 14px; font-weight: 600; margin-bottom: 5px; } .stream-info { font-size: 12px; color: #888; } .main-content { flex: 1; display: flex; flex-direction: column; } .toolbar { padding: 15px 20px; background: #16213e; border-bottom: 1px solid #0f3460; display: flex; gap: 15px; align-items: center; } .btn { padding: 8px 20px; border: none; border-radius: 6px; cursor: pointer; font-size: 13px; transition: all 0.3s; display: flex; align-items: center; gap: 8px; } .btn-primary { background: #e94560; color: #fff; } .btn-primary:hover { background: #c73e54; } .btn-secondary { background: #0f3460; color: #fff; } .btn-secondary:hover { background: #1a4a7a; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .video-area { flex: 1; display: flex; justify-content: center; align-items: center; padding: 20px; background: #0a0a0a; position: relative; } .video-wrapper { position: relative; max-width: 100%; max-height: 100%; background: #000; border-radius: 8px; overflow: hidden; } .video-wrapper img { display: block; max-width: 100%; max-height: calc(100vh - 200px); } .roi-canvas { position: absolute; top: 0; left: 0; cursor: crosshair; } .roi-canvas.drawing { cursor: crosshair; } .roi-canvas.editing { cursor: move; } .instructions { padding: 15px 20px; background: #1a1a2e; border-top: 1px solid #0f3460; font-size: 13px; } .instructions h3 { font-size: 14px; margin-bottom: 10px; color: #e94560; } .instruction-list { display: flex; gap: 20px; flex-wrap: wrap; } .instruction-item { display: flex; align-items: center; gap: 8px; color: #888; } .key { padding: 2px 8px; background: #0f3460; border-radius: 4px; font-family: monospace; color: #fff; } .point-marker { position: absolute; width: 12px; height: 12px; background: #e94560; border: 2px solid #fff; border-radius: 50%; transform: translate(-50%, -50%); cursor: move; z-index: 10; } .point-marker:hover { background: #fff; border-color: #e94560; transform: translate(-50%, -50%) scale(1.2); } .toast { position: fixed; top: 80px; right: 20px; padding: 12px 20px; background: #28a745; color: #fff; border-radius: 6px; font-size: 13px; opacity: 0; transform: translateX(100px); transition: all 0.3s; z-index: 1000; } .toast.show { opacity: 1; transform: translateX(0); } .toast.error { background: #dc3545; } .empty-state { text-align: center; color: #666; padding: 60px; } .coord-display { position: absolute; bottom: 10px; left: 10px; background: rgba(0,0,0,0.7); padding: 5px 10px; border-radius: 4px; font-size: 11px; font-family: monospace; color: #fff; }