*,*: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}.country:hover{fill:#289fd6!important}: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;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.airports-modal{background:var(--popup-bg);border-radius:8px;width:90%;max-width:900px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;border:1px solid var(--panel-border)}.airports-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--panel-border)}.airports-modal-header h2{margin:0;font-size:1.5rem;color:var(--button-hover-bg)}.airports-modal-header .close-button{background:none;border:none;font-size:28px;cursor:pointer;color:var(--text);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color .2s}.airports-modal-header .close-button:hover{color:var(--button-hover-bg)}.airports-modal-content{flex:1;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:12px}.airports-route-display textarea{padding:10px;border:1px solid var(--panel-border);border-radius:6px;background:var(--input-bg);color:var(--input-text);font-family:monospace;font-size:.9rem;resize:vertical}.new-leg-btn{padding:10px 20px;background-color:var(--button-hover-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;transition:all .2s}.new-leg-btn:hover{background-color:#2563eb;box-shadow:0 2px 4px #0000001a}.airports-search{display:flex;flex-direction:column;gap:8px}.airports-search input{padding:10px 12px;border:1px solid var(--panel-border);border-radius:6px;background:var(--input-bg);color:var(--input-text);font-size:.95rem;font-family:inherit}.airports-search input:focus{outline:none;border-color:var(--button-hover-bg);box-shadow:0 0 0 3px #32a4ce1a}.airports-modal-list{border:1px solid var(--panel-border);border-radius:6px;overflow-y:auto;max-height:300px}.airports-modal-list ul{list-style:none;padding:0;margin:0}.airports-modal-list li{border-bottom:1px solid var(--panel-border)}.airports-modal-list li:last-child{border-bottom:none}.airports-modal-list button{background:transparent;color:var(--text);border:none;border-radius:0;padding:12px;cursor:pointer;width:100%;text-align:left;transition:background-color .2s;font-size:.95rem}.airports-modal-list button:hover{background-color:var(--panel-bg)}.airports-modal-list button strong{color:var(--button-hover-bg)}.airports-modal-list button span{display:block;font-size:.85rem;color:var(--text);opacity:.8;margin-top:4px}.airports-modal-list .empty-state{text-align:center;padding:40px 20px;color:var(--text)}@media(max-width:768px){.airports-modal{width:95%;max-width:100%;max-height:90vh}.airports-modal-header{padding:16px}.airports-modal-header h2{font-size:1.3rem}.airports-modal-content{padding:16px;gap:10px}.airports-modal-list{max-height:250px}.new-leg-btn{width:100%}}#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}.info-modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.info-modal{width:90%;max-width:960px;height:80%;background:var(--popup-bg);border-radius:8px;box-shadow:0 8px 30px #00000040;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--panel-border)}.info-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid var(--panel-border);background:var(--popup-bg);color:var(--text)}.info-modal-header h2{margin:0;font-size:1.5rem;color:var(--button-hover-bg)}.info-modal-header button{background:none;border:none;color:var(--text);font-size:1rem;font-weight:700;cursor:pointer;padding:8px 12px;border-radius:4px;transition:all .2s}.info-modal-header button:hover{color:var(--button-hover-bg)}.info-modal-iframe{border:0;width:100%;height:100%;background:var(--popup-bg)}@media(max-width:640px){.info-modal{height:92%;width:96%}}.flight-logger-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.flight-logger-modal{background:var(--popup-bg);border-radius:8px;width:90%;max-width:1200px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;border:1px solid var(--panel-border)}.flight-logger-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--panel-border)}.flight-logger-header h2{margin:0;font-size:1.5rem;color:var(--button-hover-bg)}.close-button{background:none;border:none;font-size:28px;cursor:pointer;color:var(--text);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-button:hover{color:var(--button-hover-bg)}.flight-logger-content{flex:1;overflow:auto;padding:20px}.flight-table-wrapper{border:1px solid var(--panel-border);border-radius:6px;overflow:auto}.flight-table{width:100%;border-collapse:collapse;font-size:.9rem}.flight-table thead{background-color:var(--button-bg);position:sticky;top:0}.flight-table th{padding:12px;text-align:left;font-weight:600;color:var(--button-hover-bg);border-bottom:2px solid var(--panel-border)}.flight-table td{padding:12px;border-bottom:1px solid var(--panel-border);color:var(--text)}.flight-table tbody tr:hover{background-color:var(--panel-bg)}.flight-table tbody tr:nth-child(2n){background-color:#ffffff05}.edit-btn,.remove-btn{padding:4px 8px;margin-right:4px;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s}.edit-btn{background-color:#3b82f6;color:#fff}.edit-btn:hover{background-color:#2563eb}.remove-btn{background-color:#ef4444;color:#fff}.remove-btn:hover{background-color:#dc2626}.empty-state{text-align:center;padding:40px 20px;color:var(--text)}.flight-logger-actions{display:flex;gap:10px;padding:20px;border-top:1px solid var(--panel-border);flex-wrap:wrap;justify-content:center}.action-btn{padding:10px 20px;background-color:var(--button-hover-bg);color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;transition:all .2s}.action-btn:hover:not(:disabled){background-color:#2563eb;box-shadow:0 2px 4px #0000001a}.action-btn:disabled{opacity:.5;cursor:not-allowed}.plot-btn{background-color:#16a34a}.plot-btn:hover:not(:disabled){background-color:#15803d}.close-btn{align-self:center;padding:10px 30px;background-color:#6b7280;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;margin-bottom:10px;transition:all .2s}.close-btn:hover{background-color:#4b5563}@media(max-width:768px){.flight-logger-modal{width:95%;max-height:90vh}.flight-table{font-size:.8rem}.flight-table th,.flight-table td{padding:8px}.action-btn{padding:8px 12px;font-size:.9rem}}.flight-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1100}.flight-modal{background:var(--popup-bg);border-radius:8px;width:90%;max-width:500px;max-height:90vh;overflow:auto;box-shadow:0 10px 25px #0003;border:1px solid var(--panel-border)}.flight-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--panel-border);position:sticky;top:0;background:var(--popup-bg)}.flight-modal-header h3{margin:0;font-size:1.3rem;color:var(--button-hover-bg)}.flight-form{padding:20px;display:flex;flex-direction:column;gap:16px}.form-row{display:flex;flex-direction:column;gap:6px}.form-label{font-weight:600;color:var(--text);font-size:.95rem}.form-input{padding:10px 12px;border:1px solid var(--panel-border);border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;background:var(--input-bg);color:var(--input-text)}.form-input:focus{outline:none;border-color:var(--button-hover-bg);box-shadow:0 0 0 3px #32a4ce1a}.form-input::placeholder{color:#0000004d}@media(prefers-color-scheme:dark){.form-input::placeholder{color:#ffffff80}}.flight-modal-actions{display:flex;gap:10px;justify-content:center;padding:0;margin-top:10px}.submit-btn{flex:1;padding:12px 20px;background-color:#16a34a;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:1rem;transition:all .2s}.submit-btn:hover{background-color:#15803d;box-shadow:0 2px 4px #0000001a}.submit-btn:active{transform:scale(.98)}.cancel-btn{flex:1;padding:12px 20px;background-color:#6b7280;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:1rem;transition:all .2s}.cancel-btn:hover{background-color:#4b5563;box-shadow:0 2px 4px #0000001a}.cancel-btn:active{transform:scale(.98)}@media(max-width:600px){.flight-modal{width:95%;max-width:100%}.flight-form{padding:15px;gap:12px}.flight-modal-actions{flex-direction:column}.submit-btn,.cancel-btn{width:100%}}
