:root{font-family:'DM Sans',sans-serif;color:#263832;background:#f5f5f1;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.topbar{height:74px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #e9ece7}.brand{display:flex;align-items:center;gap:11px;font-family:Manrope,sans-serif;font-weight:800;font-size:17px;letter-spacing:-.8px;line-height:1}.brand-icon{width:38px;height:38px;background:#244d42;border-radius:10px;color:#fff;display:grid;place-items:center}.brand-icon svg{width:27px}.brand-light{font-weight:500}.brand small{display:block;margin-top:5px;font:700 8px 'DM Sans',sans-serif;letter-spacing:1.6px;color:#98a59e}.header-right{display:flex;align-items:center;gap:22px}.header-status{font-size:9px;letter-spacing:1.2px;font-weight:700;color:#708078}.header-status i,.footer-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#a1ba85;margin-right:7px}.header-divider{height:25px;width:1px;background:#e6eae5}.header-help{font-size:12px;color:#9aa59e}.workspace{display:flex;height:calc(100vh - 74px);min-height:650px}.sidebar{width:390px;flex-shrink:0;background:#fff;display:flex;flex-direction:column;border-right:1px solid #e8ebe5;z-index:3}.side-heading{padding:32px 30px 26px;display:flex;justify-content:space-between;border-bottom:1px solid #eef0ed}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.6px;color:#d67d51}h1,h2,p{margin:0}h1{font:800 27px Manrope,sans-serif;letter-spacing:-1.2px;margin:9px 0 5px}h1 span{color:#db8155}.side-heading p,.section-heading p{color:#9ba8a1;font-size:12px}.heading-icon{color:#b8c6bc;font-size:20px}.side-content{overflow-y:auto;flex:1}.panel-section{padding:23px 30px;border-bottom:1px solid #eef0ed}.section-heading{display:flex;align-items:flex-start;gap:12px;margin-bottom:21px}.number{font-size:10px;font-weight:700;color:#d98358;padding-top:4px}.section-heading h2{font:700 15px Manrope,sans-serif;letter-spacing:-.3px;margin-bottom:5px}.field-label,.radius-row label{font-size:9px;color:#83938a;letter-spacing:1px;font-weight:700}.field-label{display:block;margin-bottom:8px}select,input,button{font:inherit}select{cursor:pointer}#taskType{width:100%;height:43px;border:1px solid #e2e8e2;border-radius:6px;background:#fff;color:#34483e;padding:0 13px;font-size:12px;font-weight:600}.info-note{background:#f3f7f2;color:#71877a;border-radius:5px;display:flex;gap:9px;padding:11px 12px;margin-top:12px;font-size:11px;line-height:1.45}.info-note span{font-size:14px;color:#87a58d}.radius-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.input-unit{border:1px solid #e3e9e4;border-radius:5px;display:flex;align-items:center;height:32px;padding:0 9px}.input-unit input{width:45px;border:0;outline:0;text-align:right;color:#42574b;font-size:12px;font-weight:700}.input-unit span,.point-radius span{color:#a7b2aa;font-size:10px;margin-left:5px}.empty-route{border:1px dashed #dce5dd;border-radius:6px;display:flex;align-items:center;gap:12px;padding:18px 14px;color:#566c5e}.empty-icon{width:33px;height:33px;display:grid;place-items:center;background:#f0f5ef;border-radius:50%;font-size:20px;color:#8ca893}.empty-route strong{font-size:11px}.empty-route p{font-size:11px;color:#a2afa5;margin-top:4px}.text-button{border:0;background:none;padding:15px 0 0;color:#96a69b;font-size:11px;cursor:pointer}.point-row{display:flex;align-items:center;gap:9px;border-bottom:1px solid #eff2ed;padding:9px 0}.point-index{background:#ed8b5b;color:#fff;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;font-size:9px;font-weight:700}.point-info{flex:1;min-width:0}.point-info strong,.point-info small{display:block}.point-info strong{font-size:11px}.point-info small{color:#9eaaa1;font-size:10px;margin-top:3px}.point-radius{display:flex;align-items:center}.point-radius input{width:47px;border:1px solid #e4ebe5;border-radius:4px;padding:4px;font-size:10px;text-align:right}.remove-point{border:0;background:none;color:#a1afa5;cursor:pointer;font-size:18px}.upload-box{border:1px dashed #cbdace;border-radius:6px;background:#f9fbf8;display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer}.upload-box:hover{background:#f0f6ef}.upload-icon{background:#e5eee5;color:#668976;width:33px;height:33px;border-radius:50%;display:grid;place-items:center;font-size:19px}.upload-box strong,.upload-box small{display:block}.upload-box strong{font-size:11px}.upload-box small{font-size:10px;color:#a0ada3;margin-top:5px}.upload-arrow{margin-left:auto;color:#a0b1a3}.sidebar-footer{padding:18px 30px;color:#a7b4aa;font-size:9px;letter-spacing:1.1px;font-weight:700}.sidebar-footer>span:last-child{float:right;font-size:16px;color:#cad7c8}.map-area{position:relative;flex:1;min-width:0;background:#e9eee4;overflow:hidden}#map{position:absolute;inset:0;background:#e7ede2}.map-top{position:absolute;z-index:500;top:24px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.map-title,.map-actions{pointer-events:auto}.map-title{background:#fff;border-radius:7px;padding:11px 15px;display:flex;gap:11px;align-items:center;box-shadow:0 3px 18px #344b3517}.map-title-icon{width:31px;height:31px;background:#e9f0e8;color:#71927b;display:grid;place-items:center;border-radius:5px;font-size:20px}.map-title strong,.map-title small{display:block}.map-title strong{font:700 12px Manrope,sans-serif}.map-title small{font-size:10px;color:#a1ada3;margin-top:4px}.map-actions{display:flex;gap:8px}.layer-control,.icon-button,.map-tools button,.map-tools label{background:#fff;border:0;border-radius:6px;box-shadow:0 3px 16px #344b351a;height:42px}.layer-control{display:flex;align-items:center;padding:0 10px;gap:7px;color:#6a8172}.layer-control select{border:0;outline:0;color:#41584a;background:#fff;font-size:11px;font-weight:700}.icon-button{width:42px;color:#698370;font-size:20px;cursor:pointer}.map-bottom{position:absolute;left:28px;bottom:27px;z-index:500}.map-hint{display:flex;gap:11px;align-items:center;background:#fff;border-radius:7px;padding:14px 16px;box-shadow:0 4px 20px #344b3517;max-width:410px}.hint-icon{background:#fdf1e9;color:#df8a59;border-radius:50%;width:32px;height:32px;display:grid;place-items:center}.map-hint strong,.map-hint small{display:block}.map-hint strong{font-size:11px}.map-hint small{font-size:10px;color:#9eaba1;margin-top:4px}.hint-close{color:#c3cdc3;margin-left:14px}.map-legend{display:flex;gap:16px;margin:15px 0 0 3px;color:#667c6d;font-size:10px;text-shadow:0 1px 3px #fff}.map-legend span{display:flex;align-items:center;gap:6px}.legend-point{width:8px;height:8px;background:#e78455;border-radius:50%}.legend-line,.legend-track{width:16px;border-top:2px dashed #e78455}.legend-track{border-top:2px solid #287a73}.map-tools{position:absolute;z-index:500;right:28px;top:82px;display:flex;gap:6px}.map-tools button,.map-tools label{padding:0 12px;display:flex;align-items:center;gap:6px;color:#698370;font-size:15px;cursor:pointer}.map-tools span{font-size:10px;font-weight:700;color:#50695a}.map-stats{position:absolute;z-index:500;right:28px;bottom:28px;background:#fff;border-radius:7px;box-shadow:0 3px 18px #344b3517;display:flex;align-items:center;padding:14px 17px;gap:23px}.map-stats>div+div:not(.stats-mark){border-left:1px solid #edf0ec;padding-left:22px}.map-stats small{display:block;font-size:8px;font-weight:700;letter-spacing:.8px;color:#a2aea5;margin-bottom:5px}.map-stats strong{font:800 19px Manrope,sans-serif;letter-spacing:-.8px}.map-stats em{font:500 10px 'DM Sans',sans-serif;color:#9eaaa1}.stats-mark{color:#cfdfcd;font-size:25px}.leaflet-control-zoom{margin-right:28px!important;margin-bottom:100px!important;border:0!important;box-shadow:0 3px 18px #344b3517!important}.leaflet-control-zoom a{border:0!important;color:#668274!important}.leaflet-control-attribution{font-size:9px!important}.point-marker{background:#e87e4b;border:3px solid white;color:#fff;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;box-shadow:0 2px 8px #344b3555}.result-head{display:flex;justify-content:space-between;align-items:center;margin-top:17px}.result-head span:first-child{display:block;color:#94a399;font-size:9px;letter-spacing:1px;font-weight:700}.result-head strong{display:block;font:800 20px Manrope,sans-serif;margin-top:4px}.result-head strong small{font:500 10px 'DM Sans',sans-serif;color:#9ba9a0}.result-badge{background:#edf5ed;color:#6a8b70;border-radius:4px;padding:6px;font-size:10px}.result-file{color:#a0ada3;font-size:10px;margin:8px 0}.result-row{display:flex;gap:7px;align-items:center;font-size:10px;padding:7px 0;border-bottom:1px solid #eff2ed}.result-row>span:last-child{margin-left:auto;color:#95a49a}.result-dot{border-radius:50%;width:17px;height:17px;text-align:center;line-height:17px}.hit{background:#e7f3e8;color:#548b60}.miss{background:#fbece4;color:#d67d51}.result-note,.loading{font-size:10px;line-height:1.5;color:#9ba9a0;margin-top:11px}#toast{position:fixed;z-index:9999;top:88px;left:50%;transform:translate(-50%,-10px);background:#263f35;color:white;border-radius:6px;padding:12px 18px;font-size:12px;opacity:0;pointer-events:none;transition:.2s}#toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:850px){.workspace{height:auto;min-height:0;display:flex;flex-direction:column-reverse}.sidebar{width:100%;border:0}.map-area{height:62vh;min-height:440px;flex:auto}.side-content{overflow:visible}.sidebar-footer{display:none}.topbar{height:65px;padding:0 18px}.header-help,.header-divider{display:none}.map-hint{display:none}.map-legend{background:#ffffffe8;padding:8px;border-radius:5px;gap:9px}.map-stats{right:15px;bottom:55px}.map-top{left:15px;right:15px;top:15px}.map-tools{right:15px;top:70px}.map-bottom{left:15px;bottom:15px}.leaflet-control-zoom{margin-right:15px!important;margin-bottom:135px!important}}
@media (min-width:851px) and (max-width:1200px){.map-hint{display:none}.map-legend{background:#ffffffe8;padding:8px;border-radius:5px;gap:9px}.map-stats{bottom:60px}}
.generator-section{padding-top:18px;padding-bottom:18px}.generator-section summary{display:flex;gap:12px;cursor:pointer;list-style:none;align-items:flex-start}.generator-section summary::-webkit-details-marker{display:none}.generator-section summary::after{content:'⌄';margin-left:auto;color:#8ca092}.generator-section details[open] summary::after{content:'⌃'}.generator-section summary strong,.generator-section summary small{display:block}.generator-section summary strong{font:700 14px Manrope,sans-serif}.generator-section summary small{font-size:11px;color:#9ba8a1;margin-top:4px}.generator-body{padding-top:16px}.generator-body p{font-size:11px;color:#6c8073;line-height:1.45;margin:10px 0 7px}.generator-actions{display:flex;gap:6px}.generator-actions button{flex:1;background:#f5f8f4;border:1px solid #dfe9df;border-radius:5px;color:#557461;padding:9px 5px;font-size:10px;font-weight:700;cursor:pointer}.generator-actions button.active{background:#dcece0;border-color:#85a98e;color:#264f3c}.generator-status{background:#f5f8f4;padding:8px;border-radius:5px}.generate-button{width:100%;border:0;border-radius:5px;padding:12px;background:#285543;color:#fff;font-weight:700;font-size:12px;cursor:pointer}.generator-body>small{display:block;color:#98a79c;font-size:10px;line-height:1.4;margin-top:8px}.corridor-settings{margin:15px 0 0}.generator-marker{border-radius:50%;background:#416d52;color:white;border:2px solid white;display:grid;place-items:center;font-size:12px;font-weight:bold}.area-marker{border-radius:50%;background:#659577;border:2px solid white}.leaflet-interactive:focus{outline-offset:2px}
[hidden]{display:none!important}

/* Print map dimensions are the paper dimensions less two 10 mm margins. */
:root{--print-map-width:277mm;--print-map-height:190mm}
:root[data-print-paper="A3"]{--print-map-width:400mm;--print-map-height:277mm}
/* Keep the on-screen and paper scales graphical so browser scaling preserves accuracy. */
.leaflet-bottom.leaflet-left .leaflet-control-scale{margin-left:28px;margin-bottom:145px}
.leaflet-control-scale-line{background:rgba(255,255,255,.9)!important;color:#263832!important;border-color:#263832!important;font-size:11px!important}
@media(max-width:850px){.leaflet-bottom.leaflet-left .leaflet-control-scale{margin-left:15px;margin-bottom:55px}}
@media screen{body.print-preparing .map-area{position:fixed;top:0;left:-10000px;width:var(--print-map-width);height:var(--print-map-height);min-height:0}}
@page{size:A4 landscape;margin:10mm}
@media print{
 html,body{margin:0;padding:0;width:var(--print-map-width);height:var(--print-map-height);overflow:hidden;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 .topbar,.sidebar,.map-top,.map-tools,.map-bottom,.map-stats,.leaflet-control-zoom,#toast{display:none!important}
 .workspace{display:block;height:var(--print-map-height);min-height:0}
 .map-area,body.print-preparing .map-area{position:relative;left:auto;top:auto;width:var(--print-map-width);height:var(--print-map-height);min-height:0;overflow:hidden}
 .leaflet-bottom.leaflet-left .leaflet-control-scale{margin-left:10px;margin-bottom:14px}
 .leaflet-control-attribution{display:block!important}
}

.numeric-scale{display:inline-block;margin-top:4px;padding:2px 5px;background:rgba(255,255,255,.92);color:#263832;font:700 11px 'DM Sans',sans-serif;white-space:nowrap}
.numeric-scale .scale-note{font-weight:400;color:#5c6e63}
@media print{.numeric-scale .scale-note{display:none}}

#printPaper,#printScale{width:100%;height:43px;border:1px solid #e2e8e2;border-radius:6px;background:#fff;color:#34483e;padding:0 13px;font-size:12px;font-weight:600}.print-scale-label{margin-top:16px}.custom-scale{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;font-weight:700}.custom-scale input{width:100%;height:36px;border:1px solid #e2e8e2;border-radius:5px;padding:0 10px;color:#34483e}.print-note{font-size:10px;line-height:1.5;color:#8b9b91;margin-top:10px}

#printWarning{max-width:420px;border:0;border-radius:10px;padding:24px;color:#263832;box-shadow:0 12px 50px #1a322b55}#printWarning::backdrop{background:#1c3129a6}#printWarning h2{font:700 17px Manrope,sans-serif;margin:0 0 10px}#printWarning p{font-size:13px;line-height:1.5;color:#62776a}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.dialog-actions button{border:1px solid #d8e3d9;border-radius:5px;background:#fff;color:#3f5e4c;padding:10px 12px;font-size:12px;font-weight:700;cursor:pointer}.dialog-actions #printPartial{background:#285543;border-color:#285543;color:#fff}
.snake-control-marker{background:#a83132;border:2px solid #fff;box-shadow:0 1px 5px #344b3555}.snake-endpoint{background:#a83132;font-size:9px}.shape-label{font-size:10px;color:#9aaba0}.leaflet-interactive.snake-control-marker{cursor:grab}
@media print{.snake-control-marker,.snake-corridor,.generator-area,.generator-marker,.checkpoint-radius{display:none!important}}
.snake-endpoint span{letter-spacing:-.35px;font-size:8px}

.route-actions{display:flex;gap:20px}.route-actions #undo{color:#416d52;font-weight:700}.route-actions #undo:disabled{color:#b8c4bb;cursor:default}

#printContrast{width:100%;height:43px;border:1px solid #e2e8e2;border-radius:6px;background:#fff;color:#34483e;padding:0 13px;font-size:12px;font-weight:600}.print-contrast-label{margin-top:16px}.print-preview-control{display:flex;align-items:center;gap:8px;margin-top:12px;color:#50695a;font-size:11px;cursor:pointer}.print-preview-control input{accent-color:#285543}
#map{--print-map-filter:none}
#map[data-print-contrast="enhanced"]{--print-map-filter:contrast(1.3) saturate(1.2) brightness(.92)}
#map[data-print-contrast="strong"]{--print-map-filter:contrast(1.55) saturate(1.35) brightness(.88)}
@media screen{#map.preview-print-contrast .leaflet-tile{filter:var(--print-map-filter)}}
@media print{#map .leaflet-tile{filter:var(--print-map-filter);opacity:1!important}}

.airspace-section .section-heading{margin-bottom:14px}
.airspace-section #fetchOpenAIP{width:100%;border:0;border-radius:5px;padding:12px;background:#285543;color:#fff;font-size:11px;font-weight:700;cursor:pointer}
.airspace-section .upload-box{margin-top:12px}
.airspace-control{display:flex;align-items:center;gap:8px;margin-top:12px;color:#50695a;font-size:11px;cursor:pointer}
.airspace-control input{accent-color:#794aa6}
.airspace-status,.airspace-note{font-size:10px;line-height:1.5;color:#667a6e;margin-top:10px;overflow-wrap:anywhere}
.airspace-status{background:#f5f8f4;border-radius:5px;padding:8px}
.airspace-section a{color:#416d52;font-size:10px;font-weight:700}
.airspace-popup{max-height:260px;overflow:auto;overflow-wrap:anywhere}
.airspace-popup dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;margin:0;font-size:12px;border-left:3px solid transparent;padding-left:9px}
.airspace-popup dl+dl{border-top:1px solid #dfe5df;margin-top:10px;padding-top:10px}
.airspace-popup dt{font-weight:700}
.airspace-popup dd{margin:0;white-space:pre-wrap}
.airspace-print-note{display:none}
@media print{.airspace-print-note:not([hidden]){display:block;position:absolute;z-index:700;top:5px;right:5px;max-width:52%;padding:5px 7px;background:#fff;color:#263832;border:1px solid #794aa6;font:10px/1.3 sans-serif;overflow-wrap:anywhere}.leaflet-popup{display:none!important}}

.airspace-height{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:11px;color:#50695a}.airspace-height input{width:85px;border:1px solid #dfe8df;border-radius:5px;padding:7px;color:#34483e}.airspace-height span{font-weight:700}
.airspace-filter-warning{background:#fff1e8;color:#784329;border-left:3px solid #d98358;border-radius:3px;padding:9px 10px}
.airspace-legend{margin-top:12px;border:1px solid #dfe8df;border-radius:6px;padding:10px;color:#50695a;font-size:11px}
.airspace-legend h3{font-size:11px;margin:0 0 9px}
.airspace-legend ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;padding:0;margin:0;max-height:180px;overflow:auto}
.airspace-legend li{display:flex;align-items:flex-start;gap:7px;min-width:0;overflow-wrap:anywhere;line-height:1.4}
.airspace-legend small{color:#667a6e}
.airspace-swatch{display:inline-block;flex:none;width:16px;height:12px;margin-top:2px;border:2px solid var(--airspace-colour);background:color-mix(in srgb,var(--airspace-colour) 13%,white);border-radius:2px}
