*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;height:100%;overflow-x:hidden;font-family:Inter,Segoe UI,Roboto,sans-serif;background-color:var(--background);color:var(--text);transition:background-color .3s ease,color .3s ease}.app-main{width:100%;height:100%;position:fixed;left:0;top:0;overflow:hidden}svg{display:block}:root{--background: #0d1117;--text: #e6edf3;--panel-bg: rgba(255, 255, 255, .05);--popup-bg: rgb(24, 18, 18);--panel-border: rgba(255, 255, 255, .1);--button-border: #ffffff;--button-bg: #1a1a1a;--button-text: #ffffff;--button-hover-bg: #32A4CE;--button-hover-text: #ffffff;--input-bg: #1a1a1a;--input-text: #ffffff}@media(prefers-color-scheme:light){:root{--background: #f9f9f9;--text: #213547;--panel-bg: rgba(255, 255, 255, .05);--popup-bg: rgba(255, 255, 255);--panel-border: rgba(0, 0, 0, .1);--button-border: #213547;--button-bg: #ffffff;--button-text: #213547;--button-hover-bg: #32A4CE;--button-hover-text: #ffffff;--input-bg: #ffffff;--input-text: #213547}}.map-controls,.route-path-input{position:fixed;padding:12px;border-radius:12px;background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:0 4px 12px #00000040;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .3s ease,border .3s ease;max-width:90%}.bottom-panel{position:fixed;bottom:5%;left:5%;padding:12px;border-radius:12px;background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:0 4px 12px #00000040;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .3s ease,border .3s ease;max-width:90%}.map-controls{top:5%;left:5%;display:flex;flex-direction:column;gap:10px}.map-controls .app-icon{width:40px;height:40px;object-fit:contain;border-radius:6px;background:#ffffff05;padding:4px;box-shadow:0 2px 6px #00000059}.map-controls .map-controls-buttons{display:flex;flex-direction:column;gap:8px}.map-legend-bottom{position:fixed;left:50%;transform:translate(-50%);bottom:5%;display:flex;gap:12px;align-items:center;z-index:1200;background:var(--panel-bg);border:1px solid var(--panel-border);padding:8px 12px;border-radius:10px;flex-wrap:nowrap;white-space:nowrap}.map-legend-bottom .legend-item{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-size:.95em}.map-legend-bottom .swatch{width:14px;height:14px;border-radius:3px;display:inline-block}.map-legend-bottom .route-swatch{background:#32a0ce}.map-legend-bottom .ring-swatch{background:#32a0ce99;border:1px solid rgba(255,255,255,.08)}.map-legend-bottom .marker-swatch{background:#ffffffe6;border:1px solid rgba(0,0,0,.2)}.loading-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:2000}.loading-box{background:var(--panel-bg);padding:16px 20px;border-radius:12px;border:1px solid var(--panel-border);display:flex;gap:12px;align-items:center}.spinner{width:28px;height:28px;border-radius:50%;border:4px solid rgba(255,255,255,.08);border-top-color:var(--button-hover-bg);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media screen and (max-width:600px){:root{--mobile-bottom-panel-h: 10vh;--mobile-route-panel-h: 50vh;--mobile-zoom-h: 6vh;--mobile-legend-h: 6vh;--mobile-legend-gap: 1vh;--mobile-controls-gap: 1vh}.map-controls{position:fixed;top:3%;left:50%;transform:translate(-50%);bottom:auto;display:flex;flex-direction:row;align-items:center;gap:8px;padding:6px;border-radius:12px;z-index:1400;height:auto;min-width:120px}.map-controls .app-icon{width:36px;height:36px;margin-right:4px}.map-controls .map-controls-buttons{flex-direction:row;display:flex;gap:8px}.route-path-input{padding-bottom:56px}.route-path-input .controls-toggle{position:absolute;left:12px;right:12px;bottom:8px;width:calc(100% - 24px);z-index:1301}.route-path-input.closed{height:56px;padding-bottom:8px}.map-canvas{margin-top:calc(var(--mobile-zoom-h) + 12px);height:calc(100vh - (var(--mobile-route-panel-h) + var(--mobile-bottom-panel-h) + var(--mobile-zoom-h) + var(--mobile-legend-h) + 3vh));max-height:70vh}.map-legend-bottom,body.airport-open .map-controls,body.airport-open .route-path-input,body.airport-open .mobile-bottom-stack,body.airport-open .bottom-panel{display:none!important}.route-path-input{position:relative;left:auto;right:auto;bottom:auto;height:var(--mobile-route-panel-h);max-height:50vh;width:calc(100% - 12px);max-width:none;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px;z-index:1250;overflow-y:auto;transform:none;transition:height .2s ease,padding .2s ease,opacity .2s ease}.route-path-input.closed{height:56px;max-height:56px;padding-top:8px;padding-bottom:8px;overflow:visible}.bottom-panel{position:fixed;left:0;right:0;bottom:0;height:var(--mobile-bottom-panel-h);border-radius:0;padding:8px;display:flex;flex-direction:column;gap:8px;z-index:1200}.map-legend-bottom{left:50%;bottom:calc(var(--mobile-bottom-panel-h) + var(--mobile-route-panel-h) + var(--mobile-zoom-h) + var(--mobile-legend-gap));transform:translate(-50%);z-index:1300}.app-main,svg,#root,html,body{height:100vh}.map-canvas{height:calc(100vh - (var(--mobile-route-panel-h) + var(--mobile-bottom-panel-h) + var(--mobile-zoom-h) + var(--mobile-legend-h) + 3vh));max-height:70vh}.desktop-only{display:none!important}.mobile-only{display:block!important}.mobile-bottom-stack{position:fixed;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 6px 12px;z-index:1500;pointer-events:auto}.mobile-bottom-stack .map-legend-bottom,.mobile-bottom-stack .route-path-input,.mobile-bottom-stack .bottom-panel{position:relative;width:calc(100% - 12px);max-width:720px;left:auto;right:auto;transform:none;border-radius:12px;margin:0 auto;box-sizing:border-box}.mobile-bottom-stack .map-controls{display:flex;flex-direction:row;justify-content:center;gap:12px;padding:8px;align-items:center}.mobile-bottom-stack .map-controls .map-controls-buttons{flex-direction:row}}@media screen and (min-width:601px){.mobile-only{display:none!important}.desktop-only{display:block!important}}.map-canvas{width:100%;height:56.25%}.route-example-text{font-size:.9em;color:var(--text);opacity:.9;margin-top:6px}.pairs-list{max-height:180px;overflow-y:auto;background:var(--button-bg);border:1px solid var(--panel-border);border-radius:8px;margin-top:10px;padding:8px;font-size:.95em;color:var(--text)}.parse-errors{margin-top:8px;color:#ffcccb;font-size:.9em}.unit-select-wrapper{margin-top:10px}@media screen and (min-width:601px){.route-path-input{position:fixed;top:5%;right:5%;display:flex;flex-direction:column;gap:10px;width:25%;max-width:420px;z-index:1000}.bottom-panel{position:fixed;left:5%;bottom:5%;width:24%;min-width:260px;max-width:340px;display:flex;flex-direction:column;gap:10px;z-index:1000}}.bottom-panel-tabs{display:flex;gap:8px;margin-bottom:8px}.bottom-panel-tabs button{flex:1;padding:8px 0;border-radius:8px 8px 0 0;background:var(--button-bg);color:var(--button-text);border:none;font-weight:700;cursor:pointer;transition:background .2s,color .2s}.bottom-panel-tabs button.active{background:var(--button-hover-bg);color:var(--button-hover-text)}.bottom-panel-content{background:var(--panel-bg);border-radius:0 0 8px 8px;padding:10px;display:flex;flex-direction:column;gap:12px}.file-tab button{width:100%;border-radius:8px;margin-bottom:8px;background-color:var(--button-bg);color:var(--button-text);border:none;font-size:1em;font-weight:700;cursor:pointer;transition:background .2s,color .2s}.file-tab button:hover{background-color:var(--button-hover-bg);color:var(--button-hover-text)}.style-tab label{display:flex;align-items:center;gap:8px;font-size:1em;margin-bottom:6px}.style-tab input[type=color]{width:32px;height:32px;border:none;background:none;cursor:pointer}.style-tab input[type=range]{width:100px}.bottom-panel-toggle{margin-top:8px;width:100%;border-radius:8px;background-color:var(--button-bg);color:var(--button-text);border:none;font-size:1em;font-weight:700;cursor:pointer;transition:background .2s,color .2s}.bottom-panel-toggle:hover{background-color:var(--button-hover-bg);color:var(--button-hover-text)}@media screen and (max-width:768px)and (orientation:landscape){.route-path-input{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:500px;border-radius:12px;background:var(--panel-bg);padding:16px;box-shadow:0 4px 12px #00000040;overflow-y:auto}.route-path-input textarea,.route-path-input select{width:100%}.bottom-panel{left:0;right:0;bottom:0;width:100%;min-width:unset;max-width:unset;border-radius:0;flex-direction:column;justify-content:flex-start;align-items:center}.route-path-input button{width:95%}.bottom-panel{left:0;right:0;bottom:0;width:100%;min-width:unset;max-width:unset;border-radius:0;flex-direction:column;justify-content:flex-start;align-items:center;z-index:10}}button,.map-controls button,.route-path-input button,.bottom-panel-tabs button,.file-tab button,.airports-header button{background-color:var(--button-bg);color:var(--button-text);border:1px solid var(--panel-border);padding:8px 12px;border-radius:8px;box-shadow:0 6px 16px #00000047;cursor:pointer;transition:transform .08s ease,background-color .12s ease,box-shadow .12s ease}button:focus{outline:none;box-shadow:0 0 0 4px #32a0ce1f,0 6px 16px #00000047}button[disabled]{opacity:.55;cursor:not-allowed}.map-controls button{width:44px;height:44px;border-radius:50%;font-size:1.2em;font-weight:700;background-color:var(--button-bg);color:var(--button-text);border:1px solid var(--panel-border);cursor:pointer;transition:background-color .18s,transform .12s,box-shadow .12s}.route-path-input button{width:100%;border-radius:8px;font-size:1em;font-weight:700;background-color:var(--button-bg);color:var(--button-text);border:none;cursor:pointer;transition:background-color .25s,transform .2s,color .25s;margin-top:8px}.map-controls button:hover,.airports-header button:hover,.route-path-input button:hover,.airports-list button:hover{background-color:var(--button-hover-bg);color:var(--button-hover-text)}.route-path-input textarea,.route-path-input select{padding:10px;border-radius:8px;border:1px solid var(--panel-border);background-color:var(--input-bg);color:var(--input-text);font-size:1em;width:100%;height:80%;display:block;margin:0 auto}.route-path-input input:focus{outline:none;border:1px solid var(--button-hover-bg)}.airports-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--panel-bg);z-index:1000;display:flex;align-items:stretch;justify-content:stretch;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.airports-popup{background:var(--panel-bg);color:var(--text);width:100%;height:100%;overflow-y:auto;display:flex;flex-direction:column;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.airports-header{position:sticky;top:0;background:var(--popup-bg);padding:16px;border-bottom:1px solid var(--panel-border);z-index:10}.airports-header button{border-radius:8px;font-size:1em;font-weight:700;background-color:var(--button-bg);color:var(--button-text);border:none;cursor:pointer;transition:background-color .25s,transform .2s,color .25s;margin-top:8px}.airports-header-top{display:flex;background:var(--popup-bg);justify-content:space-between;align-items:center}.airports-search{margin-top:12px;display:flex;flex-wrap:wrap;background:var(--popup-bg);gap:8px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.airports-search input{flex:1 1 200px;padding:6px}.airports-list{padding:16px;flex:1}.airports-list ul{list-style:none;padding:0;margin:0}.airports-list li{margin-bottom:10px;padding-bottom:6px;background-color:transparent;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.airports-list button{background:var(--button-bg);color:var(--button-text);border:none;border-radius:6px;padding:8px 12px;cursor:pointer;width:100%;text-align:left;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
