.tracker-header {
background: #1a5276;
color: #fff;
padding: 0.75rem 1.25rem;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
.tracker-header h2 {
font-size: 1rem;
font-weight: 700;
margin: 0;
}
.tracker-header p {
font-size: 0.75rem;
color: rgba(255,255,255,0.78);
margin: 0.15rem 0 0;
}
.live-badge {
display: flex;
align-items: center;
gap: 0.35rem;
font-size: 0.7rem;
font-weight: 600;
color: rgba(255,255,255,0.9);
}
.live-dot {
width: 8px;
height: 8px;
background: #2ecc71;
border-radius: 50%;
animation: tracker-pulse 1.5s infinite;
}
@keyframes tracker-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.5; transform: scale(0.85); }
}
.tracker-updated {
font-size: 0.65rem;
color: rgba(255,255,255,0.75);
} .tracker-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
border-bottom: 1px solid #e2e8f0;
background: #fff;
}
.tracker-stat {
padding: 0.6rem 1rem;
text-align: center;
border-right: 1px solid #e2e8f0;
}
.tracker-stat:last-child { border-right: none; }
.tracker-stat__num {
font-size: 1.5rem;
font-weight: 700;
font-family: monospace;
line-height: 1;
}
.tracker-stat__label {
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #6b7a8d;
margin-top: 0.15rem;
}
.tracker-stat--registered .tracker-stat__num { color: #1a5276; }
.tracker-stat--waiting .tracker-stat__num    { color: #d68910; }
.tracker-stat--enroute .tracker-stat__num    { color: #2980b9; }
.tracker-stat--arrived .tracker-stat__num    { color: #27ae60; } .tracker-map {
min-height: 350px;
height: 50vh;
max-height: 600px;
width: 100%;
border-bottom: 1px solid #e2e8f0;
background: #eaf4fb;
}
.tracker-map .leaflet-container {
height: 100%;
width: 100%;
}
.plane-icon {
background: none !important;
border: none !important;
line-height: 1;
text-align: center;
}
.plane-icon svg {
display: block;
}
.dest-marker {
width: 14px;
height: 14px;
background: #c0392b;
border: 2px solid #fff;
border-radius: 50%;
box-shadow: 0 0 6px rgba(192, 57, 43, 0.5);
}
.dest-label {
font-size: 0.7rem;
font-weight: 700;
color: #c0392b;
white-space: nowrap;
} .tracker-table-wrap {
overflow-x: auto;
background: #fff;
}
.tracker-table {
width: 100%;
border-collapse: collapse;
font-size: 0.875rem;
}
.tracker-table th {
background: #f8f9fa;
padding: 0.5rem 0.75rem;
text-align: left;
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #5a6a7a;
border-bottom: 2px solid #e2e8f0;
white-space: nowrap;
}
.tracker-table td {
padding: 0.5rem 0.75rem;
border-bottom: 1px solid #f0f0f0;
vertical-align: middle;
}
.tracker-table tr:hover td {
background: #fafbfc;
}
.tracker-table .tail {
font-family: monospace;
font-weight: 600;
font-size: 0.82rem;
}
.tracker-table .pilot {
font-weight: 600;
}
.tracker-table .aircraft-type {
color: #666;
font-size: 0.75rem;
}
.tracker-table .data-num {
font-family: monospace;
font-size: 0.78rem;
text-align: right;
} .status-badge {
display: inline-block;
padding: 0.15rem 0.5rem;
border-radius: 999px;
font-size: 0.65rem;
font-weight: 700;
white-space: nowrap;
}
.status-badge--arrived  { background: #e6f4ec; color: #27ae60; }
.status-badge--enroute  { background: #eaf4fb; color: #2980b9; }
.status-badge--waiting  { background: #fef5e4; color: #8a6d3b; } .progress-bar {
width: 80px;
height: 6px;
background: #e2e8f0;
border-radius: 3px;
overflow: hidden;
}
.progress-bar__fill {
height: 100%;
border-radius: 3px;
transition: width 0.5s ease;
}
.progress-bar__fill--arrived  { background: #27ae60; }
.progress-bar__fill--enroute  { background: #2980b9; }
.progress-bar__fill--waiting  { background: #e2e8f0; } .eta {
font-family: monospace;
font-size: 0.78rem;
font-weight: 600;
}
.eta--arrived { color: #27ae60; }
.eta--enroute { color: #2980b9; }
.eta--waiting { color: #a0aec0; } .tracker-legend {
position: absolute;
bottom: 10px;
right: 10px;
background: rgba(255,255,255,0.92);
border: 1px solid #ccc;
border-radius: 4px;
padding: 6px 10px;
font-size: 0.7rem;
z-index: 400;
line-height: 1.6;
}
.tracker-legend__item {
display: flex;
align-items: center;
gap: 5px;
}
.tracker-legend__dot {
width: 10px;
height: 10px;
border-radius: 50%;
display: inline-block;
flex-shrink: 0;
} .tracker-table tr[data-tail]:focus-visible {
outline: 2px solid #2980b9;
outline-offset: -2px;
} .trail-pulse {
animation: trail-ring 1.5s ease-in-out infinite;
}
@keyframes trail-ring {
0%, 100% { stroke-opacity: 0.8; }
50% { stroke-opacity: 0.3; }
} .tracker-row--selected {
background: #eaf4fb !important;
outline: 2px solid #2980b9;
outline-offset: -2px;
}
.tracker-row--selected .tail {
color: #2980b9;
}
.tracker-table tr:hover {
cursor: pointer;
}
.plane-icon--selected {
filter: drop-shadow(0 0 6px #2980b9) drop-shadow(0 0 12px #2980b9);
} .tracker-loading {
text-align: center;
padding: 3rem 1rem;
color: #a0aec0;
font-size: 0.9rem;
}
.tracker-error {
text-align: center;
padding: 2rem 1rem;
color: #c0392b;
font-size: 0.85rem;
} @media (max-width: 768px) {
.tracker-stats {
grid-template-columns: repeat(2, 1fr);
}
.tracker-stat {
border-bottom: 1px solid #e2e8f0;
}
.tracker-map {
min-height: 250px;
height: 40vh;
max-height: 350px;
}
.tracker-table {
font-size: 0.78rem;
}
.progress-bar {
width: 50px;
}
.leaflet-control-layers {
font-size: 0.7rem;
}
.leaflet-control-layers-expanded {
max-width: 140px;
}
}