.video-player{height:100%;display:flex;flex-direction:column}.video-container{flex:1;display:flex;flex-direction:column}.video-wrapper{flex:1;position:relative;background:linear-gradient(180deg,#1a1a2e,#16162a);min-height:300px}.video-element{width:100%;height:100%;position:absolute;top:0;left:0;object-fit:contain;background:#000}.fullscreen-btn{position:absolute;bottom:12px;right:12px;background:#0009;border:none;border-radius:4px;padding:8px;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .2s ease;z-index:10}.fullscreen-btn:hover{background:#e10600cc}.video-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000000b3;color:var(--text-secondary)}.video-overlay.error{background:#e1060033}.video-overlay .loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--f1-red);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.video-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(180deg,#1a1a2e,#16162a);min-height:300px;position:relative}.video-placeholder.empty{background:linear-gradient(180deg,#1a1a2e,#16162a)}.placeholder-icon{width:80px;height:80px;border-radius:50%;background:#e106001a;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;color:var(--f1-red)}.video-placeholder p{color:var(--text-secondary);font-size:1rem}.status-badge{position:absolute;top:1rem;right:1rem;padding:.25rem .75rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px}.status-badge.live{background:var(--f1-red);color:#fff;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.video-info{padding:1rem;background:var(--bg-card);border-top:1px solid var(--border-color)}.video-info h3{font-size:1.1rem;margin-bottom:.25rem}.video-info p{color:var(--text-secondary);font-size:.85rem}.stream-pending{color:var(--text-secondary);font-style:italic}.stream-url{color:#4ade80}.camera-list{padding:1rem;border-top:1px solid var(--border-color)}.camera-list h4{font-size:.85rem;color:var(--text-secondary);margin-bottom:.75rem;text-transform:uppercase;letter-spacing:1px}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem;max-height:200px;overflow-y:auto}.camera-thumb{background:var(--bg-dark);border-radius:6px;border:2px solid transparent;cursor:pointer;transition:all .2s ease;overflow:hidden;padding:.5rem .75rem}.camera-thumb:hover{border-color:var(--f1-red);background:#e106001a}.camera-thumb.active{border-color:var(--f1-red);background:#e1060026;box-shadow:0 0 12px #e1060066}.thumb-placeholder{width:100%;display:flex;align-items:center;gap:.5rem}.thumb-placeholder span{font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.camera-thumb.active .thumb-placeholder span{color:var(--text-primary)}.track-map{height:100%;display:flex;flex-direction:column;padding:1rem}.track-map.loading,.track-map.error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--f1-red);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.map-header h3{font-size:1.1rem;font-weight:600}.track-info{color:var(--text-secondary);font-size:.85rem}.track-svg{flex:1;width:100%;min-height:0}.track-path{filter:drop-shadow(0 0 8px rgba(225,6,0,.5))}.camera-marker .marker-bg{fill:#e106004d;transition:fill .2s ease,r .2s ease;r:12px}.camera-marker .marker-inner{r:8px}.camera-marker:hover .marker-bg,.camera-marker.selected .marker-bg{fill:#e1060099}.camera-marker .marker-inner{fill:var(--f1-red);stroke:#fff;stroke-width:2;transition:all .2s ease}.camera-marker.selected .marker-inner{fill:#fff;stroke:var(--f1-red);stroke-width:3}.camera-tooltip{opacity:0;pointer-events:none;transition:opacity .2s ease}.camera-marker:hover .camera-tooltip{opacity:1}.tooltip-text{fill:#fff;font-size:11px;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.8),0 0 8px rgba(0,0,0,.6)}.map-legend{display:flex;gap:1.5rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-secondary)}.legend-dot{width:12px;height:12px;border-radius:50%}.legend-dot.camera{background:var(--f1-red);border:2px solid #fff}.legend-line{width:20px;height:4px;background:var(--f1-red);border-radius:2px}@media (max-width: 768px),(pointer: coarse){.camera-marker .marker-bg{r:20px}.camera-marker .marker-inner{r:14px}}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.header{background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-dark) 100%);padding:1rem 2rem;display:flex;align-items:center;gap:1rem;border-bottom:3px solid var(--f1-red)}.header h1{font-size:1.5rem;font-weight:700;letter-spacing:.5px}.header .subtitle{color:var(--text-secondary);font-size:.9rem;padding-left:1rem;border-left:1px solid var(--border-color)}.main-content{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;padding:1.5rem;min-height:0}.video-section{background:var(--bg-card);border-radius:12px;overflow:hidden;border:1px solid var(--border-color)}.map-section{background:var(--bg-card);border-radius:12px;overflow:hidden;border:1px solid var(--border-color);min-height:0}@media (max-width: 1024px){.main-content{grid-template-columns:1fr}}*{margin:0;padding:0;box-sizing:border-box}:root{--f1-red: #e10600;--f1-red-dark: #b80500;--bg-dark: #15151e;--bg-card: #1e1e2d;--bg-card-hover: #2a2a3d;--text-primary: #ffffff;--text-secondary: #a0a0a0;--border-color: #2d2d3d}body{font-family:Titillium Web,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-dark);color:var(--text-primary);min-height:100vh;overflow-x:hidden}#root{min-height:100vh}
