:root{--radar-navy:#061a2e;--radar-cyan:#24d2eb;--radar-green:#42d392}
.adsb-hero{padding:32px 0;background:radial-gradient(circle at 80% 20%,rgba(36,210,235,.18),transparent 28%),linear-gradient(130deg,#04182c,#083f67);color:#fff}.adsb-hero .shell{display:flex;align-items:center;justify-content:space-between;gap:30px}.adsb-kicker,.details-kicker{color:#69e5f3;font-size:11.8px;font-weight:800;letter-spacing:.15em}.adsb-hero h1{margin:5px 0 7px;font-size:49.6px}.adsb-hero p{max-width:780px;margin:0;color:#c8dce9;font-size:15.3px;line-height:1.6}.receiver-pill{display:flex;align-items:center;gap:12px;min-width:190px;padding:12px 15px;border:1px solid rgba(255,255,255,.16);border-radius:9px;background:rgba(255,255,255,.08)}.receiver-pill i{width:12px;height:12px;border-radius:50%;background:#f0ad4e;box-shadow:0 0 0 5px rgba(240,173,78,.13)}.receiver-pill.online i{background:var(--radar-green);box-shadow:0 0 0 5px rgba(66,211,146,.15)}.receiver-pill.offline i{background:#ff6370}.receiver-pill span{display:flex;flex-direction:column}.receiver-pill small{margin-top:3px;color:#bad0df;font-size:11.8px}
.adsb-dashboard{padding:18px 0 38px;background:#edf3f7}.adsb-stats{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:12px;border:1px solid #d9e5ed;border-radius:8px;background:#fff;box-shadow:0 4px 13px rgba(7,41,71,.06)}.adsb-stats>div{padding:13px 18px;border-right:1px solid #e2eaf0}.adsb-stats>div:last-child{border:0}.adsb-stats span{display:block;color:#6f8293;font-size:10.6px;font-weight:800;text-transform:uppercase}.adsb-stats strong{display:block;margin-top:3px;color:#073c78;font-size:23.6px}
.radar-toolbar{display:flex;align-items:end;gap:8px;margin-bottom:12px;padding:10px;border:1px solid #d6e2eb;border-radius:8px;background:#fff}.radar-toolbar label{display:flex;flex-direction:column;gap:4px}.radar-toolbar label>span{color:#62798d;font-size:9.4px;font-weight:800;text-transform:uppercase}.radar-toolbar input,.radar-toolbar select,.radar-control{height:36px;border:1px solid #c9d8e3;border-radius:6px;background:#fff;color:#16456e;font-size:13px;font-weight:700}.radar-toolbar input,.radar-toolbar select{padding:0 10px}.radar-search{flex:1}.radar-search input{width:100%}.radar-control{padding:0 12px;cursor:pointer}.radar-control:hover,.radar-control.active{border-color:#1388ba;background:#e8f8fc;color:#08769d}
.radar-workspace{display:grid;grid-template-columns:300px minmax(0,1fr);height:min(690px,72vh);min-height:520px;overflow:hidden;border:1px solid #cbdbe6;border-radius:9px;background:var(--radar-navy);box-shadow:0 12px 32px rgba(3,29,52,.16)}.flight-sidebar{display:flex;min-width:0;flex-direction:column;background:#fff}.sidebar-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:13px 12px;border-bottom:1px solid #dce6ed}.sidebar-title>div{display:flex;flex-direction:column}.sidebar-title strong{color:#073c78;font-size:15.3px}.sidebar-title small{margin-top:3px;color:#778b9c;font-size:10.6px}.sidebar-title button{border:1px solid #cfdee8;border-radius:5px;padding:6px 8px;background:#f6fafc;color:#275a82;font-size:10.6px;font-weight:800;cursor:pointer}.flight-list{overflow-y:auto;overscroll-behavior:contain}.flight-row{display:grid;grid-template-columns:34px 1fr auto;gap:8px;width:100%;padding:11px 10px;border:0;border-bottom:1px solid #e8eef2;background:#fff;text-align:left;cursor:pointer}.flight-row:hover,.flight-row.selected{background:#eaf7fb}.flight-row .plane-arrow{display:grid;place-items:center;color:#078aaf;font-size:24.8px}.flight-row b{display:block;color:#092f50;font-size:14.2px}.flight-row small{display:block;margin-top:3px;color:#6d8191;font-size:10.6px}.flight-row>strong{align-self:center;color:#174e79;font-size:11.8px}.radar-empty{padding:35px 18px;color:#73889a;font-size:13px;line-height:1.6;text-align:center}
.radar-map-wrap{position:relative;min-width:0;overflow:hidden}.radar-map-wrap #adsbMap{position:absolute;inset:0}.radar-sweep{position:absolute;left:50%;top:50%;z-index:1;width:min(72vw,700px);height:min(72vw,700px);border:1px solid rgba(55,216,235,.08);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.radar-sweep:before,.radar-sweep:after{position:absolute;content:"";background:rgba(55,216,235,.07)}.radar-sweep:before{left:50%;top:0;width:1px;height:100%}.radar-sweep:after{left:0;top:50%;width:100%;height:1px}.map-status{position:absolute;left:10px;top:10px;z-index:5;padding:7px 10px;border:1px solid rgba(255,255,255,.2);border-radius:5px;background:rgba(4,24,44,.86);color:#d5edf5;font-size:10.6px;font-weight:700}.adsb-plane{position:relative;width:34px;height:34px;border:0;background:transparent;color:#fff;cursor:pointer;filter:drop-shadow(0 2px 3px rgba(0,0,0,.7))}.adsb-plane span{display:grid;width:34px;height:34px;place-items:center;font-size:27.1px;transition:transform .25s linear}.adsb-plane b{position:absolute;left:28px;top:7px;padding:3px 5px;border:1px solid rgba(50,210,235,.45);border-radius:3px;background:rgba(3,27,48,.87);color:#ecfbff;font:700 9px Inter,sans-serif;white-space:nowrap}.labels-off .adsb-plane b{display:none}.adsb-plane.selected{color:#ffe55c}.aircraft-details{position:absolute;right:12px;bottom:12px;z-index:6;display:none;width:310px;padding:16px;border:1px solid rgba(88,217,235,.35);border-radius:8px;background:rgba(4,25,45,.94);color:#fff;box-shadow:0 9px 28px rgba(0,0,0,.32);backdrop-filter:blur(8px)}.aircraft-details.open{display:block}.aircraft-details h2{margin:3px 0 5px;font-size:29.5px}.details-ident{display:flex;gap:6px;flex-wrap:wrap;color:#b8cfdb;font-size:10.6px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:13px 0}.details-grid div{padding:8px;border:1px solid rgba(255,255,255,.1);border-radius:5px;background:rgba(255,255,255,.05)}.details-grid span{display:block;color:#96afbf;font-size:9.4px;text-transform:uppercase}.details-grid strong{display:block;margin-top:3px;font-size:14.2px}.details-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.details-actions button{border:0;border-radius:5px;padding:8px 10px;background:#1ab4ce;color:#04223a;font-size:11.8px;font-weight:800;cursor:pointer}.details-actions button.active{background:#ffe55c}.details-actions small{color:#a8c0cf;font-size:9.4px}.radar-close-details{position:absolute;right:18px;bottom:251px;z-index:7;display:none;width:25px;height:25px;border:0;border-radius:50%;background:#fff;color:#0a3e63;font-weight:800;cursor:pointer}.radar-close-details.open{display:block}.radar-workspace:fullscreen{width:100%;height:100%;border:0;border-radius:0}.radar-workspace:fullscreen .radar-map-wrap{height:100%}
.radar-sweep{overflow:hidden;border:2px solid rgba(65,238,255,.72);background:repeating-radial-gradient(circle,transparent 0 24.35%,rgba(65,238,255,.52) 24.65% 25.05%,transparent 25.35% 49.35%,rgba(65,238,255,.52) 49.65% 50.05%,transparent 50.35% 74.35%,rgba(65,238,255,.52) 74.65% 75.05%,transparent 75.35%),linear-gradient(90deg,transparent calc(50% - 1px),rgba(65,238,255,.42) calc(50% - .5px),rgba(65,238,255,.42) calc(50% + .5px),transparent calc(50% + 1px)),linear-gradient(transparent calc(50% - 1px),rgba(65,238,255,.42) calc(50% - .5px),rgba(65,238,255,.42) calc(50% + .5px),transparent calc(50% + 1px));box-shadow:inset 0 0 28px rgba(36,210,235,.12),0 0 10px rgba(36,210,235,.18)}.radar-sweep:before{inset:0;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 308deg,rgba(36,210,235,.04) 314deg,rgba(36,210,235,.16) 330deg,rgba(36,210,235,.42) 350deg,rgba(153,249,255,.95) 357.8deg,#e5fdff 359.2deg,transparent 360deg);filter:drop-shadow(0 0 5px rgba(83,239,255,.9));transform-origin:50% 50%;animation:militaryRadarSweep 3.2s linear infinite}.radar-sweep:after{left:50%;top:50%;width:10px;height:10px;border:2px solid #e7feff;border-radius:50%;background:#36e1f1;box-shadow:0 0 8px #fff,0 0 18px #24d2eb;transform:translate(-50%,-50%)}@keyframes militaryRadarSweep{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.radar-sweep:before{animation-duration:8s}}
.radar-sweep{border-color:rgba(65,255,112,.78);background:repeating-radial-gradient(circle,transparent 0 24.35%,rgba(65,255,112,.55) 24.65% 25.05%,transparent 25.35% 49.35%,rgba(65,255,112,.55) 49.65% 50.05%,transparent 50.35% 74.35%,rgba(65,255,112,.55) 74.65% 75.05%,transparent 75.35%),linear-gradient(90deg,transparent calc(50% - 1px),rgba(65,255,112,.46) calc(50% - .5px),rgba(65,255,112,.46) calc(50% + .5px),transparent calc(50% + 1px)),linear-gradient(transparent calc(50% - 1px),rgba(65,255,112,.46) calc(50% - .5px),rgba(65,255,112,.46) calc(50% + .5px),transparent calc(50% + 1px));box-shadow:inset 0 0 28px rgba(46,229,98,.14),0 0 10px rgba(46,229,98,.22);transition:opacity .2s ease}.radar-sweep:before{background:conic-gradient(from 0deg,transparent 0 308deg,rgba(50,255,102,.04) 314deg,rgba(50,255,102,.17) 330deg,rgba(50,255,102,.44) 350deg,rgba(162,255,184,.96) 357.8deg,#effff2 359.2deg,transparent 360deg);filter:drop-shadow(0 0 5px rgba(63,255,108,.95))}.radar-sweep:after{border-color:#effff2;background:#3cff71;box-shadow:0 0 8px #fff,0 0 18px #35f36a}.radar-sweep.is-off{display:none}.radar-control.radar-power{border-color:#79b98a;color:#287b3e}.radar-control.radar-power:hover,.radar-control.radar-power.active{border-color:#2e9449;background:#2e9449;color:#fff}
.adsb-plane.radar-hit{z-index:20;color:#7dff98;animation:radarAircraftHit .95s ease-out}.adsb-plane.radar-hit b{border-color:#72ff91;background:rgba(13,105,44,.96);color:#fff;box-shadow:0 0 12px rgba(66,255,107,.95)}@keyframes radarAircraftHit{0%,100%{opacity:1;filter:drop-shadow(0 2px 3px rgba(0,0,0,.7))}18%,52%{opacity:.18;filter:drop-shadow(0 0 4px #fff) drop-shadow(0 0 14px #38ff69)}35%,72%{opacity:1;filter:drop-shadow(0 0 7px #fff) drop-shadow(0 0 20px #38ff69)}}
.altitude-profile{margin-top:14px;overflow:hidden;border:1px solid #cbdce7;border-radius:9px;background:#071c30;box-shadow:0 9px 25px rgba(3,29,52,.13)}.altitude-profile-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 16px;border-bottom:1px solid rgba(126,207,227,.18);background:linear-gradient(90deg,#082641,#0a3854);color:#fff}.altitude-profile-head>div:first-child{display:flex;flex-direction:column}.altitude-profile-head span{color:#6ee3ef;font-size:9.4px;font-weight:800;letter-spacing:.1em}.altitude-profile-head h2{margin:3px 0 0;font-size:18.9px}.altitude-legend{display:flex;align-items:center;gap:15px}.altitude-legend span{display:flex;align-items:center;gap:6px;color:#cde2ec;font-size:10.6px;letter-spacing:0}.altitude-legend i{display:inline-block;width:20px;height:0;border-top:2px solid #5de792}.altitude-legend .aircraft-key{border-top:2px dashed #ffe45c}.altitude-chart-wrap{width:100%;height:320px;background:linear-gradient(#071a2c,#0a263c)}.altitude-chart{display:block;width:100%;height:100%;font-family:Inter,Arial,sans-serif}.altitude-chart .profile-grid{stroke:rgba(159,208,225,.17);stroke-width:1;stroke-dasharray:5 6}.altitude-chart .profile-axis{fill:#8eafbf;font-size:11.8px}.altitude-chart .profile-terrain{fill:none;stroke:#5de792;stroke-width:3;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(93,231,146,.45))}.altitude-chart .profile-ground{stroke:#5de792;stroke-width:1;opacity:.45}.altitude-chart .profile-air-line{stroke:#ffe45c;stroke-width:1.5;stroke-dasharray:6 5;opacity:.8}.altitude-chart .profile-plane{fill:#fff;font-size:24.8px;filter:drop-shadow(0 0 4px #25cce2)}.altitude-chart .profile-plane.selected{fill:#ffe45c;filter:drop-shadow(0 0 5px #ffe45c)}.altitude-chart .profile-label{fill:#e9f8fc;font-size:11.8px;font-weight:800}.altitude-chart .profile-sub{fill:#9fc1cf;font-size:9.4px}.altitude-chart .profile-waiting{fill:#9ab9c7;font-size:14.2px}.altitude-note{margin:0;padding:8px 14px;border-top:1px solid rgba(126,207,227,.13);color:#94b3c1;font-size:9.4px;line-height:1.45}
.radar-workspace{grid-template-rows:minmax(430px,1fr) 190px;height:min(780px,84vh);min-height:620px}.altitude-profile{grid-column:1/-1;margin-top:0;border:0;border-top:1px solid rgba(126,207,227,.22);border-radius:0;box-shadow:none}.altitude-profile-head{height:28px;padding:0 13px;border-bottom:1px solid rgba(126,207,227,.14)}.altitude-profile-head h2{margin:0;color:#6ee3ef;font-size:11.8px;letter-spacing:.1em}.altitude-chart-wrap{height:162px}
.receiver-explainer{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.receiver-explainer article{display:flex;gap:13px;padding:17px;border:1px solid #d8e4ec;border-radius:8px;background:#fff}.receiver-explainer article>span{color:#13a5c0;font-size:27.1px;font-weight:800}.receiver-explainer h2{margin:0 0 6px;color:#073c78;font-size:17.7px}.receiver-explainer p{margin:0;color:#5d7284;font-size:11.8px;line-height:1.6}.receiver-explainer code{color:#08789e}.adsb-disclaimer{margin:12px 0 0;color:#718495;font-size:10.6px;text-align:center}
@media(max-width:900px){.adsb-hero .shell{align-items:flex-start;flex-direction:column}.receiver-pill{width:100%}.adsb-stats{grid-template-columns:1fr 1fr}.adsb-stats>div:nth-child(2){border-right:0}.adsb-stats>div:nth-child(-n+2){border-bottom:1px solid #e2eaf0}.radar-toolbar{align-items:stretch;flex-wrap:wrap}.radar-toolbar label{flex:1 1 200px}.radar-control{flex:1 1 120px}.radar-workspace{grid-template-columns:1fr;grid-template-rows:auto auto auto;height:auto;min-height:0}.radar-map-wrap{order:1;height:60vh;min-height:440px}.flight-sidebar{order:2;max-height:280px}.altitude-profile{order:3;grid-column:1}.receiver-explainer{grid-template-columns:1fr}.altitude-profile-head{align-items:center;flex-direction:row;gap:0}.altitude-chart-wrap{height:150px}}
.altitude-chart .profile-terrain{fill:none;stroke:#63f29b;stroke-width:4;filter:drop-shadow(0 0 4px rgba(93,231,146,.65))}
.profile-zoom{display:flex;align-items:center;gap:5px}.profile-zoom button{display:grid;width:22px;height:22px;padding:0;border:1px solid rgba(110,227,239,.45);border-radius:4px;place-items:center;background:rgba(4,28,48,.7);color:#dffcff;font-size:18.9px;font-weight:800;line-height:1;cursor:pointer}.profile-zoom button:hover{border-color:#63f29b;background:#176342}.profile-zoom span{min-width:25px;color:#fff;font-size:10.6px;font-weight:800;text-align:center}.altitude-chart .profile-air-line{stroke:#ffe45c;stroke-width:3;stroke-dasharray:8 6;opacity:1;filter:drop-shadow(0 0 3px rgba(255,228,92,.7))}
.altitude-chart .profile-altitude-trail{fill:none;stroke:#ffe45c;stroke-width:3;stroke-dasharray:9 6;stroke-linecap:round;stroke-linejoin:round;opacity:.92;filter:drop-shadow(0 0 3px rgba(255,228,92,.55))}.altitude-chart .profile-altitude-trail.selected{stroke:#fff176;stroke-width:5;opacity:1;filter:drop-shadow(0 0 6px rgba(255,241,118,.9))}
.altitude-chart{touch-action:none;user-select:none;-webkit-user-select:none;will-change:transform;cursor:grab}.altitude-chart:active{cursor:grabbing}.altitude-chart-wrap{position:relative;overflow:hidden}
.fullscreen-close{display:none;position:absolute;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:100;width:44px;height:44px;padding:0;border:2px solid rgba(255,255,255,.8);border-radius:50%;background:rgba(4,25,45,.92);color:#fff;box-shadow:0 4px 18px rgba(0,0,0,.38);font-size:35.4px;font-weight:400;line-height:1;cursor:pointer}.radar-workspace:fullscreen{position:relative}
.fullscreen-close{left:max(12px,env(safe-area-inset-left));right:auto}.altitude-chart{transform:none!important;will-change:auto}
.adsb-stats>div{min-width:0;overflow:hidden}.adsb-stats strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.altitude-chart .profile-terrain{stroke:#71f5a3;stroke-width:5;opacity:1;vector-effect:non-scaling-stroke}
.altitude-chart .profile-compass{fill:#b9d7e3;font-size:10.6px;font-weight:800}
.flight-row{border-left:5px solid var(--aircraft-color,#078aaf)}.flight-row .plane-arrow{color:var(--aircraft-color,#078aaf)}.adsb-plane b{border-color:var(--aircraft-color,#27d5e9);box-shadow:0 0 7px color-mix(in srgb,var(--aircraft-color,#27d5e9) 45%,transparent)}.adsb-plane.selected{color:var(--aircraft-color,#ffe55c)}
.flight-row.following{position:relative;z-index:1;background:color-mix(in srgb,var(--aircraft-color,#ffe55c) 20%,#fff);box-shadow:inset 0 0 0 2px var(--aircraft-color,#ffe55c),0 0 13px color-mix(in srgb,var(--aircraft-color,#ffe55c) 70%,transparent);animation:followRowGlow 1.5s ease-in-out infinite}.flight-row.following b,.flight-row.following>strong{color:#072f50}.flight-row.following .plane-arrow{filter:drop-shadow(0 0 5px var(--aircraft-color,#ffe55c))}@keyframes followRowGlow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.14)}}
.details-grid .detail-signal{grid-column:1/-1;background:linear-gradient(90deg,rgba(46,207,137,.13),rgba(46,207,137,.04));border-color:rgba(88,225,163,.28)}.detail-signal strong{color:#77efad}
.profile-landmark line{stroke:#ff4f4f;stroke-width:2}.profile-landmark path{fill:#ff4f4f;filter:drop-shadow(0 0 3px rgba(255,79,79,.8))}.profile-landmark text{fill:#fff;font-size:13px;font-weight:800;paint-order:stroke;stroke:#071c30;stroke-width:3px}.profile-landmark .profile-landmark-sub{fill:#ffd0d0;font-size:10.6px;stroke-width:2px}
@media(max-width:520px){.adsb-hero{padding:23px 0}.adsb-hero h1{font-size:40.1px}.adsb-stats strong{font-size:18.9px}.adsb-stats>div{padding:11px}.radar-map-wrap{height:58vh;min-height:390px}.aircraft-details{left:8px;right:8px;bottom:8px;width:auto}.radar-close-details{right:13px;bottom:247px}.radar-toolbar select{width:100%}.adsb-plane b{font-size:9.4px}.altitude-chart-wrap{height:190px}.altitude-profile-head{height:36px;padding:0 10px}.profile-zoom button{width:28px;height:28px;font-size:22.4px}.profile-zoom span{font-size:11.8px}.altitude-chart .profile-axis{font-size:14.2px}.altitude-chart .profile-label{font-size:14.2px}.altitude-chart .profile-sub{font-size:11.8px}}
@media(max-width:900px),(hover:none) and (pointer:coarse){.radar-workspace:fullscreen .fullscreen-close,.radar-workspace:-webkit-full-screen .fullscreen-close{display:grid;place-items:center}}
@media(max-width:900px){.altitude-chart .profile-plane{font-size:calc(25px * var(--profile-zoom,1))}.altitude-chart .profile-label{font-size:calc(13px * var(--profile-zoom,1))}.altitude-chart .profile-sub{font-size:calc(10px * var(--profile-zoom,1))}.profile-landmark text{font-size:15.3px}.profile-landmark .profile-landmark-sub{font-size:13px}}
.radar-workspace{grid-template-rows:minmax(430px,1fr) 240px;height:min(830px,88vh)}.altitude-chart-wrap{height:212px}.altitude-chart .profile-plane{font-size:calc(21px * min(var(--profile-zoom,1),2))}.altitude-chart .profile-label{font-size:calc(10px * min(var(--profile-zoom,1),1.7))}.altitude-chart .profile-sub{font-size:calc(8px * min(var(--profile-zoom,1),1.7))}
@media(max-width:900px){.radar-workspace{grid-template-rows:auto auto auto;height:auto}.altitude-chart-wrap{height:220px}.altitude-chart .profile-plane{font-size:calc(25px * min(var(--profile-zoom,1),2.4))}.altitude-chart .profile-label{font-size:calc(13px * min(var(--profile-zoom,1),2))}.altitude-chart .profile-sub{font-size:calc(10px * min(var(--profile-zoom,1),2))}}
.altitude-chart .profile-plot-frame{fill:none;stroke:rgba(159,208,225,.48);stroke-width:1;pointer-events:none}
.profile-zoom .profile-reset{margin-left:3px;border-color:#63f29b;color:#63f29b;font-size:20.1px}.profile-zoom .profile-reset:hover{background:#176342;color:#fff}
.details-actions{flex-wrap:wrap}.details-actions .external-flight{border:1px solid rgba(110,227,239,.55);border-radius:5px;padding:7px 9px;background:rgba(110,227,239,.1);color:#9cecf3;font-size:10.6px;font-weight:800;white-space:nowrap}.details-actions .external-flight:hover{background:#1ab4ce;color:#04223a}.details-actions small{margin-left:auto}
.details-actions #followAircraft.active{border:1px solid #fff3a0;background:#ffe55c;color:#3b3100;box-shadow:0 0 0 2px rgba(255,229,92,.22),0 0 16px rgba(255,229,92,.85);animation:followGlow 1.5s ease-in-out infinite}@keyframes followGlow{0%,100%{box-shadow:0 0 0 2px rgba(255,229,92,.2),0 0 10px rgba(255,229,92,.55)}50%{box-shadow:0 0 0 3px rgba(255,229,92,.32),0 0 20px rgba(255,229,92,.95)}}
