@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@200;300;400;450;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{font-family:DM Sans,Arial,sans-serif;color:#232422;background:#faf9f6;font-synthesis:none;--paper:#faf9f6;--ink:#232422;--muted:#73756e;--rule:#d6d6cf;--orange:#dd5b24;--mono:"IBM Plex Mono",monospace}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{opacity:.3;cursor:default}button{border:0;background:none}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange);outline-offset:5px}button:hover:not(:disabled),a:hover{color:var(--orange)}main{max-width:1512px;margin:auto;padding:0 42px}header{height:122px;display:flex;align-items:center;justify-content:space-between;gap:40px;border-bottom:1px solid #92938e}.brand{display:flex;align-items:center;gap:17px;font-size:25px;font-weight:500;letter-spacing:-1px}.brand svg{color:#55584f}.header-note{font-size:14px;white-space:nowrap}.search-wrap{width:530px;position:relative;z-index:10}.search{height:56px;display:flex;align-items:center;border:1px solid #c7c8c1;border-radius:7px;padding:0 17px;gap:15px;color:var(--muted)}.search.is-open{border-color:#6e7167}.search input{width:100%;border:0;outline:none!important;background:none;font-size:16px;color:var(--ink)}input::placeholder{color:#93958f}.search kbd{font:16px var(--mono);border:1px solid #c7c8c1;padding:0 8px;border-radius:4px}.search button{padding:0;display:flex}.search-results{position:absolute;top:65px;left:0;right:0;background:var(--paper);border:1px solid var(--rule);border-radius:5px;box-shadow:0 14px 28px #282b2010;overflow:hidden;max-height:70vh;overflow-y:auto}.result-caption{font:10px var(--mono);letter-spacing:1px;display:flex;justify-content:space-between;padding:18px;color:var(--muted)}.result-caption span{letter-spacing:0}.search-result{width:100%;display:flex;align-items:center;gap:16px;text-align:left;padding:15px 18px;border-top:1px solid #e7e7df}.search-result.active{background:#f0efe8;color:var(--ink)}.result-code{font:18px var(--mono);width:63px;flex-shrink:0}.result-name{flex:1;font-size:14px;line-height:1.4}.result-name small{display:block;font-size:12px;color:var(--muted);margin-top:3px}.no-results{padding:12px 18px;font-size:14px}.airport-heading{display:flex;align-items:center;gap:42px;padding:34px 14px 10px;min-height:164px}.airport-code{font-size:112px;font-weight:200;line-height:1.08;letter-spacing:-7px}.airport-code.long{font-size:65px;letter-spacing:-3px}.airport-title h1{font-size:30px;font-weight:400;letter-spacing:-1px;margin:0 0 9px}.airport-title p{font-size:16px;margin:0}.airport-title p span{margin:0 4px}.clock{margin-left:auto;text-align:right;white-space:nowrap}.clock time{font:40px var(--mono);letter-spacing:3px;font-weight:400}.clock span{display:block;font:11px var(--mono);letter-spacing:1.6px;margin-top:8px}.map-section{height:680px;position:relative;margin-top:10px}.airport-map{width:100%;height:100%;touch-action:none;cursor:grab;overflow:hidden}.airport-map.dragging{cursor:grabbing}.geometry path{stroke:#d3d3cc;stroke-width:.8px;stroke-linejoin:round;stroke-linecap:round}.geometry.taxiway path{stroke:#cecec6;stroke-width:.9px}.geometry.terminal path{stroke:#747870;stroke-width:1px}.geometry.hangar path{stroke:#afb1a8;stroke-width:.7px}.geometry.runway path{stroke-linecap:butt;stroke:#6d7068}.geometry.runway .runway-inner{stroke:var(--paper)}.geometry.parking_position path{stroke:#d9d9d1;stroke-width:.6px}.map-labels{font-family:var(--mono);fill:#666a60;paint-order:stroke;stroke:var(--paper);stroke-width:12px;stroke-linejoin:round}.aircraft{cursor:pointer;color:#282d25}.aircraft.moving,.aircraft.selected,.aircraft:hover{color:var(--orange)}.north{position:absolute;right:20px;top:25px;display:flex;flex-direction:column;align-items:center;gap:3px;pointer-events:none}.north span{font:13px var(--mono)}.north svg{color:#686b63}.map-controls{position:absolute;right:15px;bottom:64px;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--rule);border-radius:5px;overflow:hidden}.map-controls button{width:36px;height:36px;display:grid;place-items:center}.map-controls button+button{border-top:1px solid var(--rule)}.map-bottom{position:absolute;bottom:10px;left:14px;right:14px;display:flex;justify-content:space-between;gap:20px;pointer-events:none}.coordinates{font:10px var(--mono);color:var(--muted)}.map-status{font-size:11px;color:var(--muted);pointer-events:auto}.map-status button{font-size:11px;text-decoration:underline;margin-left:8px}.map-selection{position:absolute;bottom:58px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:14px 17px;border:1px solid var(--rule);border-radius:5px;background:var(--paper);min-width:330px}.map-selection b{font:13px var(--mono)}.map-selection span{display:block;font-size:12px;margin-top:4px;color:var(--muted)}.map-selection small{font:8px var(--mono);letter-spacing:1px;margin-left:auto;color:var(--orange)}.map-selection button{display:flex;padding:2px}.map-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.map-empty h2{font-size:24px;font-weight:400;margin-bottom:0}.map-empty p{color:var(--muted);font-size:14px}.map-empty button{border-bottom:1px solid var(--ink)}.spin{animation:spin 2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-toolbar{display:flex;align-items:center;padding:28px 14px 35px;border-bottom:1px solid #a2a49b;gap:28px}.legend{display:flex;gap:34px;font-size:13px}.legend span{display:flex;align-items:center;gap:11px}.legend .line{width:34px;height:1px;background:#b3b5ab}.legend .terminal{background:#777c70}.motion-button{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);margin-left:auto;padding:8px 0}.scroll-link{display:flex;align-items:center;gap:7px;font:12px var(--mono)}.flights{padding-top:40px;scroll-margin-top:30px}.flights-heading{display:flex;justify-content:space-between;align-items:center;padding:0 14px}.eyebrow{font:11px var(--mono);letter-spacing:1.5px}.flights h2{font-size:35px;font-weight:400;letter-spacing:-1px;margin:9px 0 12px}.flights-heading p{font-size:15px;margin:0}.data-label{border:1px solid #a4a69d;border-radius:5px;padding:12px 16px;font-size:13px;display:flex;gap:12px;align-items:center}.data-label span{color:var(--muted)}.data-info{margin:25px 14px;padding:15px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);max-width:800px;color:var(--muted);font-size:13px;line-height:1.7}.data-info a{text-decoration:underline}.flight-filter{display:flex;justify-content:space-between;align-items:center;padding:35px 14px 14px}.flight-filter>span{font:10px var(--mono);color:var(--muted)}.flight-filter>div{display:flex;gap:18px}.flight-filter button{font-size:12px;color:var(--muted);padding:5px 0;border-bottom:1px solid transparent}.flight-filter button.active{color:var(--ink);border-color:var(--ink)}table{width:100%;border-collapse:collapse;text-align:left;table-layout:fixed}th{font:10px var(--mono);letter-spacing:1.8px;font-weight:500;padding:14px;border-bottom:1px solid var(--rule)}th:first-child{width:16%}th:nth-child(2){width:29%}th:nth-child(3){width:25%}th:nth-child(4){width:14%}th:last-child{width:16%}td{font-size:16px;padding:18px 14px;border-bottom:1px solid #dddcd5;height:82px}td small{display:block;font-size:13px;margin-top:5px;color:#5e6359}.flight-number{font:18px var(--mono);padding:7px 0;white-space:nowrap}tbody tr:not(.detail-row){cursor:pointer}tbody tr:hover,tbody tr.selected-row{background:#f0efe8}.terminal-cell{font:17px var(--mono)}.flight-status{display:flex;align-items:center;gap:9px;white-space:nowrap;font-size:14px}.flight-status i{display:block;background:var(--orange);width:7px;height:7px;border-radius:50%}.detail-row td{height:auto;padding:20px 14px;background:#f0efe8}.detail-row td>div{display:flex;align-items:center;gap:20px;font-size:12px}.detail-row b{font:12px var(--mono)}.detail-row a{margin-left:auto;display:flex;align-items:center;gap:5px;white-space:nowrap}.empty-flights{padding:40px;text-align:center;color:var(--muted)}footer{display:flex;justify-content:space-between;gap:20px;padding:40px 14px 36px;font-size:12px}footer>span:last-child{color:var(--muted)}footer button{font-size:12px;padding:0}.footer-dot{padding:0 10px}html{scroll-behavior:smooth}@media(min-width:1600px){.map-section{height:760px}}@media(max-width:1050px){main{padding:0 28px}header{gap:24px;height:102px}.header-note{display:none}.search-wrap{width:54%}.airport-heading{gap:25px}.airport-code{font-size:92px}.airport-title h1{font-size:25px}.airport-title p{font-size:14px}.clock time{font-size:30px}.map-section{height:600px}.map-toolbar{gap:20px}.legend{gap:22px}.scroll-link{font-size:10px}.motion-button{font-size:11px}td{font-size:14px}td small{font-size:11px}.flight-number{font-size:15px}.flight-status{font-size:12px}.flights h2{font-size:30px}}@media(max-width:650px){main{padding:0 20px}header{height:auto;flex-wrap:wrap;padding:22px 0 24px;gap:22px}.brand{font-size:23px;gap:11px}.brand svg{width:32px}.search-wrap{width:100%;order:2}.search{height:50px}.search input{font-size:16px}.result-caption{font-size:9px}.airport-heading{padding:26px 0 0;gap:19px;flex-wrap:wrap;min-height:0}.airport-code{font-size:76px;letter-spacing:-5px}.airport-title{flex:1}.airport-title h1{font-size:22px;letter-spacing:-.5px}.airport-title p{font-size:12px;line-height:1.5}.clock{display:none}.map-section{height:390px;margin-top:15px;margin-left:-8px;margin-right:-8px}.north{top:4px;right:5px}.north svg{width:28px}.north span{font-size:10px}.map-controls{right:5px;bottom:48px}.map-controls button{width:32px;height:34px}.map-bottom{left:8px;right:8px;bottom:6px;flex-direction:column;gap:6px}.coordinates{font-size:8px}.map-status{font-size:9px}.map-selection{bottom:70px;min-width:280px;padding:10px;gap:10px}.map-selection small{display:none}.map-toolbar{padding:20px 0 25px;flex-wrap:wrap;gap:20px}.legend{width:100%;justify-content:space-between;gap:12px;font-size:11px}.legend .line{width:25px}.motion-button{margin:0;font-size:11px}.scroll-link{margin-left:auto;font-size:10px}.flights{padding-top:28px}.flights-heading{padding:0;align-items:start;gap:18px}.flights h2{font-size:27px}.flights-heading p{font-size:12px;max-width:190px;line-height:1.5}.eyebrow{font-size:9px}.data-label{font-size:10px;padding:9px;max-width:110px;line-height:1.5;text-align:left}.data-label span{display:none}.flight-filter{padding:26px 0 12px;gap:10px}.flight-filter>span{font-size:8px}.flight-filter>div{gap:12px}.flight-filter button{font-size:10px}th{font-size:8px;letter-spacing:1px;padding:14px 5px}th:first-child{width:23%}th:nth-child(2){width:49%}th:last-child{width:28%}td{padding:15px 5px;height:74px;font-size:13px}th:nth-child(3),th:nth-child(4),td:nth-child(3),td:nth-child(4){display:none}.flight-number{font-size:12px}td small{font-size:10px}.flight-status{font-size:10px;gap:6px}.flight-status i{width:5px;height:5px}.detail-row td>div{flex-wrap:wrap;font-size:11px;gap:12px}.detail-row a{margin-left:0}.detail-row td{padding:16px 5px}footer{flex-direction:column;font-size:10px;padding:27px 0;gap:14px}footer button{font-size:10px}.data-info{margin:20px 0;font-size:12px}.map-empty h2{font-size:19px}.map-empty p{font-size:12px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.spin{animation:none}}@media(min-width:651px)and (max-width:1050px){header{height:92px}.header-note{display:block;font-size:12px}.brand{font-size:20px;gap:13px}.search-wrap{width:46%}.search input{font-size:16px}.airport-heading{min-height:142px;padding:25px 10px 10px}.map-section{height:630px}td{height:62px;padding:12px 14px}.flight-filter{padding-top:25px}}@media(min-width:651px)and (max-width:850px){.header-note{display:none}.search-wrap{width:56%}}.header-actions{display:flex;align-items:center;gap:24px}.theme-toggle{display:flex;align-items:center;justify-content:flex-end;flex:0 0 82px;width:82px;gap:8px;font-size:12px;padding:9px 0;white-space:nowrap}.theme-toggle svg{color:var(--muted)}.night-lights{display:none;pointer-events:none}.night-lights path{stroke-linecap:round;stroke-linejoin:round}.night-lights .runway-lights{stroke:#e3e9da;stroke-width:1.4px;stroke-dasharray:.5 9;filter:drop-shadow(0 0 2px #d2e7dd80)}.night-lights .taxiway-lights{stroke:#67b8a7;stroke-width:1px;stroke-dasharray:.1 10;opacity:.65;filter:drop-shadow(0 0 2px #479eac50)}html,body{transition:background-color .35s ease,color .35s ease}:root[data-theme=night]{color-scheme:dark;--paper:#0c141b;--ink:#d7dfdf;--muted:#8b9ca5;--rule:#2c3a43;--orange:#ed9a5b;color:var(--ink);background:var(--paper)}[data-theme=night] header{border-color:#3b4952}[data-theme=night] .brand svg,[data-theme=night] .north svg{color:#97a9b1}[data-theme=night] .search{border-color:#34444e;background:#0e1820}[data-theme=night] .search.is-open{border-color:#8399a4}[data-theme=night] .search input::placeholder{color:#81919c}[data-theme=night] .search kbd{border-color:#42535d}[data-theme=night] .search-results{box-shadow:0 16px 32px #0003}[data-theme=night] .search-result{border-color:#22303a}[data-theme=night] .search-result.active{background:#182630}[data-theme=night] .airport-code{color:#e3e8e5}[data-theme=night] .clock time{color:#c5d4d8}[data-theme=night] .airport-title p{color:#9babb3}[data-theme=night] .geometry path{stroke:#263a46}[data-theme=night] .geometry.apron path{stroke:#20303b}[data-theme=night] .geometry.taxiway path{stroke:#334d59;stroke-width:.7px}[data-theme=night] .geometry.hangar path{stroke:#425963}[data-theme=night] .geometry.terminal path{fill:#1b252a;stroke:#a69777;filter:drop-shadow(0 0 2px #d4b78035)}[data-theme=night] .geometry.runway path{stroke:#6e827f}[data-theme=night] .geometry.runway .runway-inner{stroke:#111e25}[data-theme=night] .geometry.parking_position path{stroke:#2e424d}[data-theme=night] .night-lights{display:block}[data-theme=night] .map-labels{fill:#a1b4bc;stroke:#0c141b;stroke-width:8px}[data-theme=night] .aircraft{color:#d6dfdc;filter:drop-shadow(0 0 2px #c5e0e340)}[data-theme=night] .aircraft.moving,[data-theme=night] .aircraft.selected{color:var(--orange);filter:drop-shadow(0 0 3px #faaa6855)}[data-theme=night] .map-controls,[data-theme=night] .map-selection{background:#101c25}[data-theme=night] .map-toolbar{border-color:#3b4952}[data-theme=night] .legend .line{background:#768e92}[data-theme=night] .legend .terminal{background:#a69777}[data-theme=night] .data-label{border-color:#50616b}[data-theme=night] tbody tr:hover,[data-theme=night] tbody tr.selected-row,[data-theme=night] .detail-row td{background:#15232d}[data-theme=night] td{border-color:#263640}[data-theme=night] td small{color:#94a6af}[data-theme=night] .flight-status i{box-shadow:0 0 6px #e8914f35}[data-theme=night] .theme-toggle{color:#c5d0d4}@media(max-width:1200px)and (min-width:651px){.header-actions{gap:16px}.header-actions .header-note{display:none}}@media(max-width:650px){.header-actions{margin-left:auto;gap:0;order:1}.theme-toggle{font-size:12px;padding:10px 0}.theme-toggle svg{width:18px}}@media(prefers-reduced-motion:reduce){html,body{transition:none}}.model-silhouette{pointer-events:none;overflow:visible}.aircraft-dimensions{font-size:10px!important}.map-selection{min-width:370px}[data-theme=night] .aircraft{filter:none}[data-theme=night] .aircraft.moving,[data-theme=night] .aircraft.selected{filter:drop-shadow(0 0 1px #faaa6830)}@media(max-width:650px){.map-selection{min-width:290px}.aircraft-dimensions{font-size:9px!important}}.traffic-health{display:flex;justify-content:space-between;gap:16px;margin:24px 14px 0;font:10px var(--mono);color:var(--muted);line-height:1.6}.ground-vehicle{color:#698c83}.vehicle-key{display:inline-block;width:6px;height:9px;border-radius:1px;background:#698c83}[data-theme=night] .ground-vehicle{color:#80b5a7}.legend{gap:22px}.flight-number{max-width:100%;overflow-wrap:anywhere;white-space:normal}.detail-row td>div{flex-wrap:wrap}@media(max-width:650px){.traffic-health{margin:20px 0 0;flex-direction:column;gap:4px;font-size:9px}.legend{gap:8px;font-size:10px}.legend span{gap:6px}.legend .line{width:16px}.flight-filter{flex-wrap:wrap}.flight-filter>div{gap:14px}.flight-filter button{font-size:10px}}.orientation-unknown{opacity:.65}.unknown-heading-ring{opacity:.6}.flight-filter>div{flex-wrap:wrap}@media(max-width:650px){.flight-filter>div{gap:10px}.map-selection small{max-width:75px;line-height:1.6}.map-section{height:clamp(180px,calc(100svh - 320px),390px)}}.coverage-note{margin:10px 14px 0;color:var(--muted);font-size:11px;line-height:1.6;max-width:780px}@media(max-width:650px){.coverage-note{margin:10px 0 0;font-size:10px}}.map-reveal{width:100%;height:100%;animation:map-arrive .7s ease-out both}.list-reveal{animation:map-arrive .55s ease-out both}.traffic-presence{animation:traffic-arrive .45s ease-out both}.traffic-presence.is-leaving{animation:traffic-leave .35s ease-in both;pointer-events:none}.map-section[aria-busy=true] .north{opacity:.35}@keyframes map-arrive{0%{opacity:0}to{opacity:1}}@keyframes traffic-arrive{0%{opacity:0}to{opacity:1}}@keyframes traffic-leave{0%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.map-reveal,.list-reveal,.traffic-presence{animation:none}.traffic-presence.is-leaving{opacity:0}}
