/* Flights world map. Keep map root absolute, overriding MapLibre vendor CSS. */
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:light;}
*{box-sizing:border-box;}
body.fl-body{margin:0;background:#f0f4f5;color:#193642;}
button,select,input{font:inherit;}
button{cursor:pointer;}
a{color:inherit;}
.fl-app{min-height:100vh;display:flex;flex-direction:column;}
.fl-topbar{
 height:70px;padding:0 clamp(17px,2.6vw,45px);background:#fff;
 display:flex;align-items:center;justify-content:space-between;
 border-bottom:1px solid #dce4e6;position:relative;z-index:3;
}
.fl-brand{display:flex;gap:12px;align-items:center;color:#142c38;
 text-decoration:none;font-size:1.3rem;font-weight:850;letter-spacing:.07em;}
.fl-brand-icon{display:grid;place-items:center;width:39px;height:39px;
 border-radius:10px;background:#0b4859;color:#d3fff2;font-size:19px;}
.fl-admin-link{font-size:.84rem;font-weight:700;text-decoration:none;white-space:nowrap;}
.fl-admin-link:hover{color:#067f88;}
.fl-content{min-height:calc(100vh - 70px);display:grid;grid-template-columns:minmax(325px,395px) minmax(0,1fr);}
.fl-panel{background:#fff;display:flex;flex-direction:column;min-width:0;min-height:0;
 max-height:calc(100vh - 70px);border-right:1px solid #dce4e6;z-index:2;}
.fl-sidebar-heading{padding:27px 27px 13px;}
.fl-sidebar-heading h1{font-size:clamp(2rem,2.65vw,2.5rem);letter-spacing:-.05em;
 line-height:1.1;margin:0 0 9px;color:#172d39;}
.fl-accent{color:#13a5ab;}
.fl-code-form{padding:4px 27px 17px;}
.fl-code-form label{display:block;font-size:.7rem;font-weight:800;color:#45616d;margin:0 0 8px;}
.fl-code-row{display:flex;gap:7px;}
.fl-code-row input{min-width:0;flex:1;border:1px solid #cadbde;border-radius:8px;
 background:#fbfdfd;color:#153a49;padding:10px 13px;font-size:.9rem;
 letter-spacing:.07em;text-transform:uppercase;min-height:44px;}
.fl-code-row input:focus-visible{outline:2px solid #267e9a;outline-offset:1px;}
.fl-code-row button{border:0;background:#164e63;color:#fff;font-size:.77rem;
 font-weight:750;border-radius:8px;padding:10px 14px;white-space:nowrap;}
.fl-code-row button:hover{background:#0b667b;}
.fl-code-form small{display:block;font-size:.7rem;color:#758991;margin-top:6px;}
#fl-code-error{font-size:.75rem;color:#9d4330;margin:7px 0 0;line-height:1.45;}
#fl-code-error[hidden]{display:none;}
.fl-alert{margin:0 27px 15px;padding:11px 12px;border-radius:7px;color:#815113;
 background:#fff5df;font-size:.78rem;line-height:1.5;}
.fl-airport-head{padding:15px 27px 14px;border-top:1px solid #e8edee;
 border-bottom:1px solid #e8edee;min-height:79px;transition:background-color .15s;}
.fl-airport-head.has-selection{background:#fff7e9;box-shadow:inset 4px 0 #d48928;}
.fl-selected-label{display:block;color:#99541b;font-size:.66rem;
 letter-spacing:.065em;text-transform:uppercase;font-weight:850;margin-bottom:4px;}
.fl-selected-label[hidden]{display:none;}
.fl-airport-head strong{display:block;color:#1d3b47;font-size:1.02rem;line-height:1.4;}
.fl-airport-head.has-selection strong{color:#783b20;}
.fl-airport-head small{display:block;color:#68818c;font-size:.73rem;margin-top:4px;}
.fl-search{padding:2px 27px 17px;}
.fl-search label{display:block;font-size:.68rem;letter-spacing:.07em;text-transform:uppercase;
 font-weight:800;color:#526b76;margin:12px 0 7px;}
.fl-search select{width:100%;border:1px solid #cfdddf;border-radius:8px;
 min-height:42px;background:#f9fbfb;color:#1f434e;padding:8px 12px;}
.fl-search select:disabled{opacity:.55;cursor:not-allowed;}
.fl-panel-title{padding:14px 27px 10px;border-top:1px solid #e6eded;
 display:flex;align-items:center;justify-content:space-between;}
.fl-panel-title h2{font-size:.9rem;margin:0;font-weight:850;}
.fl-panel-title>span{border-radius:99px;background:#eaf4f5;color:#237d86;
 font-size:.72rem;font-weight:800;padding:4px 9px;}
.fl-selection-status{margin:2px 27px 12px;font-size:.73rem;color:#607d85;line-height:1.5;}
.fl-selection-status[hidden]{display:none;}
.fl-route-list{overflow-y:auto;min-height:80px;flex:1;overscroll-behavior:contain;padding-bottom:10px;}
.fl-route-item{width:100%;display:flex;align-items:center;gap:12px;text-align:left;
 border:0;border-top:1px solid #edf1f2;padding:14px 27px;background:#fff;}
.fl-route-item:hover,.fl-route-item:focus-visible{background:#eff8f8;outline-color:#0f9295;}
.fl-route-item.is-active{background:#fcf0f5;box-shadow:inset 3px 0 #aa4a71;}
.fl-route-item.is-active .fl-route-text strong{color:#873856;}
.fl-route-text{flex:1;min-width:0;}
.fl-route-text strong{display:block;line-height:1.4;color:#214957;font-size:.8rem;font-weight:700;}
.fl-route-text small{display:block;line-height:1.5;font-size:.71rem;color:#718893;margin-top:4px;}
.fl-route-arrow{font-size:1rem;color:#92aeb5;}
.fl-empty{padding:8px 27px;color:#7d9399;font-size:.8rem;line-height:1.6;}
.fl-map-wrap{position:relative;min-width:0;min-height:480px;overflow:hidden;}
.fl-map{background:#dbe7e9;}
.fl-map-wrap > #fl-map{position:absolute;inset:0;width:100%;height:100%;pointer-events:auto;}
.fl-map-top{position:absolute;top:20px;right:20px;display:flex;
 justify-content:flex-end;pointer-events:none;}
.fl-map-buttons{display:flex;gap:8px;pointer-events:auto;}
.fl-map-buttons button{border:1px solid #dae7e8;border-radius:8px;padding:10px 13px;background:#fff;
 box-shadow:0 4px 20px rgba(12,45,55,.08);font-size:.76rem;font-weight:730;color:#174c5a;}
.fl-map-buttons button:hover{background:#eefafa;}
.fl-map-buttons button:disabled{opacity:.55;cursor:not-allowed;}
.fl-map-status{position:absolute;z-index:3;top:50%;left:50%;
 transform:translate(-50%,-50%);width:min(390px,80%);
 border-radius:10px;padding:14px 18px;background:#fff;
 box-shadow:0 4px 18px #43606b33;color:#416371;text-align:center;font-size:.83rem;}
.fl-map-status[hidden]{display:none;}
.fl-map-status.fl-map-status-fallback{top:auto;bottom:65px;left:20px;transform:none;
 width:min(450px,calc(100% - 40px));text-align:left;}
.fl-popup{display:flex;flex-direction:column;gap:6px;color:#214451;max-width:330px;}
.fl-popup strong{font-size:.88rem;line-height:1.4;}
.fl-popup span,.fl-popup small{font-size:.75rem;line-height:1.4;color:#607b83;}
.fl-zoom-controls{position:absolute;right:20px;bottom:43px;z-index:3;display:flex;
 flex-direction:column;gap:1px;border:1px solid #d1dfe1;border-radius:9px;
 box-shadow:0 3px 16px #25495724;overflow:hidden;background:#fff;}
.fl-zoom-controls button{border:0;background:#fff;color:#244653;width:40px;height:39px;
 font:700 23px/1 system-ui,-apple-system,"Segoe UI",sans-serif;cursor:pointer;}
.fl-zoom-controls button+button{border-top:1px solid #e4ecec;}
.fl-zoom-controls button:hover,.fl-zoom-controls button:focus-visible{background:#eef5f6;}
.fl-attribution{position:absolute;bottom:0;right:0;z-index:3;background:#fffffff0;
 color:#465e69;font-size:10px;padding:3px 8px;border-radius:5px 0 0 0;}
.fl-attribution a{text-decoration:none;}
.fl-attribution a:hover{text-decoration:underline;}
.fl-map-wrap .maplibregl-popup-content{border-radius:10px;padding:14px;box-shadow:0 10px 35px #25495744;}
@media(max-width:1050px){
 .fl-content{grid-template-columns:minmax(300px,360px) minmax(0,1fr);}
 .fl-sidebar-heading,.fl-search,.fl-panel-title,.fl-code-form{padding-left:20px;padding-right:20px;}
 .fl-airport-head{padding-left:20px;padding-right:20px;}
 .fl-route-item{padding-left:20px;padding-right:20px;}
}
@media(max-width:700px){
 .fl-topbar{height:63px;padding:0 17px;}
 .fl-content{display:flex;flex-direction:column;min-height:0;}
 .fl-panel{max-height:none;border:0;}
 .fl-sidebar-heading{padding-top:20px;}
 .fl-sidebar-heading h1{font-size:2rem;}
 .fl-route-list{max-height:230px;overflow-y:auto;}
 .fl-map-wrap{height:57vh;min-height:420px;}
 .fl-map-top{top:12px;right:12px;}
 .fl-map-buttons button{padding:9px 10px;}
 .fl-map-buttons span{display:none;}
 .fl-zoom-controls{right:12px;bottom:36px;}
}
.fl-aircraft-icon{pointer-events:none!important}
.fl-aircraft-shape{display:grid;place-items:center;width:28px;height:28px;
 color:#842f53;font-size:25px;line-height:1;pointer-events:none;
 text-shadow:1px 1px #fff,-1px -1px #fff,1px -1px #fff,-1px 1px #fff;
 transform-origin:center center}

.fl-route-entry{border-top:1px solid #edf1f2;background:#fff;}
.fl-route-entry .fl-route-item{border-top:0;padding-bottom:6px;background:transparent;}
.fl-route-entry .fl-route-text small:empty{display:none;}
.fl-route-entry:hover,.fl-route-entry:focus-within{background:#eff8f8;}
.fl-route-entry.is-active,.fl-route-entry.is-active:hover,
.fl-route-entry.is-active:focus-within{background:#fcf0f5;
  box-shadow:inset 3px 0 #aa4a71;}
.fl-route-entry.is-active .fl-route-text strong{color:#873856;}
.fl-route-carriers{padding:0 27px 12px;color:#718893;font-size:.72rem;line-height:1.5;
  overflow-wrap:anywhere;background:transparent;}
.fl-route-entry .fl-route-item.is-active{box-shadow:none;}
.fl-carrier-link{color:#186f82;text-decoration:underline;text-underline-offset:2px;}
.fl-carrier-link:hover,.fl-carrier-link:focus-visible{color:#873856;}
.fl-country-flag{display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:17px;flex:0 0 22px;margin-right:7px;vertical-align:middle;}
.fl-country-emoji{font-size:17px;line-height:1;}
.fl-country-flag-img{width:22px;height:16px;object-fit:cover;border:1px solid #d7e1e3;border-radius:2px;}
.fl-country-flag-img[hidden],.fl-country-emoji[hidden]{display:none;}
@media(max-width:1050px){.fl-route-carriers{padding-left:20px;padding-right:20px;}}

/* A selected airport offers carrier-specific routes without an extra fetch. */
.fl-airline-filter{padding:8px 27px 13px;border-bottom:1px solid #e5eeee;}
.fl-airline-filter[hidden]{display:none;}
.fl-airline-filter label{display:block;margin:0 0 7px;font-size:.7rem;
  font-weight:800;color:#45616d;}
.fl-airline-filter select{display:block;width:100%;min-height:42px;
  border:1px solid #cadbde;border-radius:8px;padding:9px 12px;
  color:#214957;background:#f9fbfb;font-size:.8rem;}
.fl-airline-filter select:disabled{opacity:.55;cursor:not-allowed;}
.fl-airline-filter select:focus-visible{outline:2px solid #0f9295;
  outline-offset:2px;}
@media(max-width:1050px){.fl-airline-filter{padding-left:20px;padding-right:20px;}}

/* The complete route card selects its connection; carrier anchors keep
   their own external navigation and native keyboard focus. */
.fl-route-entry{cursor:pointer;}

.fl-map-aircraft{width:32px;height:32px;pointer-events:none;contain:layout style;}
.fl-map-aircraft svg{display:block;width:100%;height:100%;overflow:visible;fill:#effaff;stroke:#06131c;stroke-width:2.2;stroke-linejoin:round;}
html[data-fl-theme="light"] .fl-map-aircraft svg{fill:#fff9ed;stroke:#762f4d;}
