@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url('assets/roboto-regular.ttf') format('truetype')}
@font-face{font-family:Roboto;font-style:normal;font-weight:500 700;font-display:swap;src:url('assets/roboto-medium.ttf') format('truetype')}
:root{--red:#ee3825;--ink:#212326;--muted:#777b80;--line:#e9e9e9;--white:#fff}*{box-sizing:border-box}body{margin:0;background:#fff;color:var(--ink);font-family:Roboto,Arial,sans-serif;font-size:14px}button,input{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);transition:background .15s,box-shadow .15s}button:hover{background:#f8f8f8}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #ee382568;outline-offset:3px}button:disabled{cursor:default;opacity:.35}button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.header{height:88px;display:flex;align-items:center;padding:0 30px;gap:26px;border-bottom:1px solid var(--line);background:#fff}.logo{width:98px;height:54px;object-fit:contain}.header-rule{height:36px;width:1px;background:var(--line)}h1{margin:0;font-size:21px;letter-spacing:-.5px;font-weight:600}.title p{font-size:12px;color:var(--muted);margin:7px 0 0}.title p span{margin:0 8px;color:#b7b7b7}.header-tag{margin-left:auto;display:flex;gap:9px;align-items:center;font-size:12px;color:#666}.live-dot{display:inline-block;width:6px;height:6px;background:var(--red);border-radius:100%}.icon-button{height:30px;width:30px;border-radius:50%;font-size:16px;color:#74777b}main{display:grid;grid-template-columns:316px 1fr;height:calc(100dvh - 88px);min-height:540px}.sidebar{padding:29px 24px 20px;overflow:auto;display:flex;flex-direction:column;background:#fff;z-index:3;border-right:1px solid var(--line)}.sidebar-heading{display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:600;color:#8a8c90}.model-badge{font-size:10px;letter-spacing:.3px;color:var(--red);border:1px solid #ee38253b;border-radius:4px;padding:5px 7px}h2{font-size:22px;font-weight:500;letter-spacing:-.65px;margin:20px 0 7px}.intro{font-size:12px;color:var(--muted);margin:0 0 30px}.length-section>label{font-weight:500;font-size:12px}.length-control{display:flex;align-items:center;justify-content:space-between;margin:15px 0 12px}.length-control button{width:38px;height:38px;border-radius:8px;font-size:24px;line-height:1}.length-control>div{display:flex;align-items:baseline;gap:7px}#length{font-size:45px;line-height:1;letter-spacing:-2px;font-weight:500;font-variant-numeric:tabular-nums}.unit{color:#898c91;font-size:19px}.section-caption{display:flex;justify-content:space-between;color:#8a8c90;font-size:10px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;padding:24px 0;border-bottom:1px solid var(--line);gap:17px}.stat-grid>div+div{border-left:1px solid var(--line);padding-left:18px}.stat-label{font-size:11px;color:#777b80;display:flex;align-items:center;gap:6px}.stat-grid strong{font-weight:500;font-size:24px;letter-spacing:-.7px;display:block;margin:10px 0 3px;font-variant-numeric:tabular-nums}.stat-grid em{font-size:12px;color:#8a8c90;font-style:normal;letter-spacing:0}.stat-grid small{color:#8a8c90;font-size:10px}.dot{width:8px;height:8px;display:inline-block;border-radius:100%;flex-shrink:0}.yellow{background:#ffd334;border:1px solid #d7a700}.orange{background:#ff851c;border:1px solid #e87915}.route-section{padding:23px 0;border-bottom:1px solid var(--line)}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}h3{font-size:12px;font-weight:500;margin:0}.small-tag{font-size:10px;color:#898c91;border:1px solid var(--line);border-radius:4px;padding:4px 7px}.route-point{display:flex;gap:12px;min-height:48px}.route-point b{display:block;font-size:11px;font-weight:500;margin-bottom:6px}.route-point span{display:block;font-size:10px;color:#888c90;font-variant-numeric:tabular-nums;letter-spacing:.1px}.route-track{position:relative;width:10px;display:flex;justify-content:center;padding-top:2px}.route-track:after{content:'';position:absolute;top:14px;bottom:4px;width:1px;background:#ddd}.route-track.last:after{display:none}.corner-dot{width:6px;height:6px;border:1px solid #93979b;border-radius:50%;margin-top:1px}.button-row{display:flex;gap:8px;margin-top:5px}.secondary{height:36px;border-radius:6px;font-size:11px;font-weight:500;flex:1}.secondary span{font-size:16px;margin-right:7px;color:#6d7074}.secondary.compact{flex:0 0 36px;font-size:19px;color:#6d7074}.display-section{padding:23px 0 17px}.display-section h3{margin-bottom:12px}.toggle-row{display:flex;align-items:center;justify-content:space-between;position:relative;min-height:33px;cursor:pointer;font-size:11px}.toggle-row small{display:block;color:#999da1;font-size:9px;margin-top:3px}.toggle-row input{position:absolute;right:0;opacity:0;width:30px;height:18px}.switch{height:17px;width:29px;border:1px solid #d3d5d6;background:#fff;border-radius:12px;position:relative;pointer-events:none}.switch:after{content:'';width:11px;height:11px;position:absolute;left:2px;top:2px;background:#b8bbbe;border-radius:50%;transition:.15s}input:checked+.switch{background:var(--red);border-color:var(--red)}input:checked+.switch:after{background:#fff;transform:translateX(12px)}input:focus-visible+.switch{outline:3px solid #ee382568;outline-offset:3px}.specs{border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px}.specs summary{list-style:none;display:flex;justify-content:space-between;cursor:pointer;padding:17px 0;font-weight:500}.specs summary::-webkit-details-marker{display:none}.spec-body{padding-bottom:18px}.spec-row{display:flex;justify-content:space-between;margin-bottom:10px;color:#898c91;font-size:10px}.spec-row b{font-weight:400;color:#4b4e51}.input-label{display:flex;justify-content:space-between;font-size:10px;margin:18px 0 8px}.input-label span,.input-label output{color:#999}.spec-body input[type=number]{width:100%;height:33px;border:1px solid var(--line);border-radius:5px;padding:0 10px}.spec-body input[type=range]{width:100%;accent-color:var(--red)}.range-labels{display:flex;justify-content:space-between;font-size:9px;color:#999}.model-note{font-size:10px;line-height:1.6;color:#888}.spec-body a{font-size:10px;color:var(--red);text-decoration:none}.sidebar-bottom{padding-top:23px;margin-top:auto}.status-label{display:flex;gap:7px;align-items:center;font-size:10px;color:#62666b}.sidebar-bottom p{font-size:10px;color:#9a9da1;margin:7px 0 0}.map-shell{position:relative;min-width:0;overflow:hidden;background:#fff}#map{position:absolute;inset:0;background:#fff;z-index:0}#hose-canvas{position:absolute;inset:0;z-index:450;pointer-events:none;width:100%;height:100%;outline:none}.map-location{position:absolute;z-index:500;top:24px;left:24px;display:flex;gap:11px;align-items:center;background:#fff;padding:13px 17px;border-radius:8px;box-shadow:0 2px 10px #00000015;pointer-events:none}.location-pin{font-size:26px;color:var(--red)}.map-location strong{display:block;font-size:12px;font-weight:500}.map-location span:not(.location-pin){display:block;font-size:10px;color:#909397;margin-top:4px}.map-location i{margin:0 6px;font-style:normal}.map-actions{position:absolute;z-index:500;top:24px;right:24px;display:flex;gap:8px}.map-button{height:38px;border:0;border-radius:6px;box-shadow:0 2px 10px #00000015;display:flex;align-items:center;gap:7px;padding:0 13px;font-size:11px}.primary{background:var(--red);color:#fff;border:0}.primary:hover{background:#d93020}.view-controls{position:absolute;z-index:500;right:24px;top:92px;display:flex;flex-direction:column;align-items:center;gap:0;background:#fff;border-radius:8px;box-shadow:0 2px 10px #00000015;overflow:hidden}.view-controls button{width:38px;height:36px;border:0;border-top:1px solid var(--line);font-size:22px}.north{display:flex;align-items:center;flex-direction:column;padding:9px 0;gap:2px}.north svg{width:18px;height:18px;fill:var(--red)}.north b{font-size:9px}.legend{position:absolute;z-index:500;left:24px;bottom:63px;display:flex;align-items:center;gap:16px;background:#fff;border-radius:6px;padding:10px 13px;box-shadow:0 2px 10px #00000015}.legend span{display:flex;align-items:center;gap:6px;font-size:10px;color:#686c70}.line-icon{width:15px;height:3px;background:#151515;border-radius:2px}.map-instruction{position:absolute;z-index:500;bottom:65px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;background:#fff;border-radius:8px;padding:13px 14px 13px 16px;box-shadow:0 2px 14px #0002;white-space:nowrap}.map-instruction>svg{width:23px;height:23px;fill:none;stroke:var(--red);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.map-instruction b{display:block;font-size:11px;font-weight:500}.map-instruction span span{display:block;font-size:9px;margin-top:5px;color:#92969a}.map-instruction button{font-size:18px;margin-left:8px;border:0;color:#999;padding:0 4px}.map-bottom{position:absolute;z-index:500;bottom:0;left:0;right:0;height:30px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:9px;color:#96999c;border-top:1px solid var(--line)}.leaflet-bottom{bottom:30px!important}.leaflet-control-scale{margin-bottom:8px!important;margin-left:24px!important}.leaflet-control-scale-line{background:#fffffff2!important;border-color:#555!important;color:#444!important;font:10px Roboto,sans-serif!important}.leaflet-control-attribution{font:9px Roboto,sans-serif!important;background:#ffffffed!important;padding:3px 7px!important}.leaflet-control-attribution a{color:#555}.toast{position:absolute;z-index:550;top:92px;left:50%;transform:translateX(-50%);padding:10px 16px;border-radius:6px;background:#fff;box-shadow:0 2px 12px #0002;font-size:11px;opacity:0;transition:opacity .2s;pointer-events:none}.toast.visible{opacity:1}.tile-error{position:absolute;z-index:520;top:92px;left:24px;background:#fff;border:1px solid #ee38253b;padding:12px;border-radius:6px;font-size:11px;max-width:350px}.tile-error button{margin-left:8px;padding:4px 8px;border-radius:4px;color:var(--red)}dialog{border:1px solid var(--line);border-radius:14px;background:#fff;padding:26px;max-width:510px;width:calc(100% - 40px);max-height:85dvh;box-shadow:0 24px 80px #0003}dialog::backdrop{background:#20252a66;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center}dialog h2{font-size:23px;line-height:1.25;margin:22px 0 15px}dialog h3{font-size:13px;margin-top:24px}dialog p{font-size:12px;line-height:1.8;color:#74787d}.full{width:100%;border-radius:6px;height:40px;font-weight:500;font-size:12px;margin-top:12px}
@media(min-width:1450px){main{grid-template-columns:336px 1fr}.sidebar{padding:32px 28px}.header{height:92px}main{height:calc(100dvh - 92px)}}@media(max-width:1200px){.map-instruction{left:auto;right:24px;transform:none}.map-location{max-width:300px}.map-location strong{font-size:11px}.map-actions .map-button span{display:none}.map-actions .map-button{padding:0 10px}}@media(max-width:950px){main{grid-template-columns:280px 1fr}.sidebar{padding:24px 20px}.map-location{left:16px;top:16px;max-width:245px;padding:10px 12px}.map-location strong{font-size:10px}.map-actions{top:86px;right:16px;flex-direction:column}.view-controls{top:185px;right:16px}.legend{bottom:112px;left:16px}.map-instruction{bottom:61px;left:16px;right:auto}.header{padding:0 22px}.map-bottom span:last-child{display:none}}@media(max-width:650px){.header{height:74px;padding:0 16px;gap:14px}.logo{width:69px;height:42px}.header-rule{height:29px}.title h1{font-size:16px;letter-spacing:-.4px}.title p{font-size:9px;margin-top:5px}.header-tag{display:none}.header .icon-button{margin-left:auto;flex-shrink:0;width:26px;height:26px}.header-rule{display:none}main{display:flex;flex-direction:column;height:calc(100dvh - 74px);min-height:640px}.sidebar{flex-shrink:0;order:2;max-height:230px;display:block;padding:15px 18px;border-right:0;border-top:1px solid var(--line)}.sidebar-heading,.sidebar h2,.intro,.section-caption,.display-section,.sidebar-bottom{display:none}.length-section{display:inline-block;width:49%;vertical-align:top;border-right:1px solid var(--line);padding-right:16px}.length-control{margin:10px 0 0}.length-control button{height:30px;width:30px}#length{font-size:32px}.unit{font-size:14px}.stat-grid{display:inline-grid;vertical-align:top;width:49%;padding:3px 0 0 16px;border:0;gap:8px}.stat-grid>div+div{padding-left:8px}.stat-grid strong{font-size:19px}.stat-label{font-size:9px}.stat-grid small{font-size:8px}.stat-grid em{font-size:9px}.specs{margin-top:15px}.map-shell{flex:1;min-height:400px}.map-location{max-width:calc(100% - 82px);top:16px;left:16px}.map-actions{top:16px}.map-button{height:34px}.view-controls{top:108px}.legend{bottom:58px;gap:11px}.map-instruction{display:none}.map-bottom{font-size:8px}.tile-error{top:86px;max-width:calc(100% - 90px)}.leaflet-control-attribution{font-size:7px!important}.sidebar .spec-body{padding-bottom:16px}}
.aircraft-section{padding:21px 0 17px;border-bottom:1px solid var(--line)}.aircraft-section .section-title{margin-bottom:11px}.aircraft-dimensions{font-size:10px;color:#8a8c90;margin:0 0 14px}.aircraft-dimensions span{padding:0 5px;color:#bbb}.heading-label{display:flex;align-items:center;justify-content:space-between;font-size:11px}.heading-label>span{display:flex;align-items:center;gap:6px;color:#8a8c90}.heading-label input{width:72px;border:1px solid var(--line);border-radius:5px;padding:7px 8px;color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums}.aircraft-coordinates{font-size:10px;color:#8a8c90;font-variant-numeric:tabular-nums;margin:12px 0}.aircraft-hint{font-size:10px;line-height:1.6;color:#8a8c90;margin:11px 0 0}#aircraft-model{position:absolute;z-index:430;pointer-events:none;width:60.3px;height:63.66px;transform-origin:center;filter:drop-shadow(0 1px 1px #0007);user-select:none}#aircraft-ring{position:absolute;z-index:460;pointer-events:none;transform:translate(-50%,-50%)}.rotation-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.rotation-ring circle{fill:none;stroke:#ee3825b3;stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:crosshair;filter:drop-shadow(0 0 1px #fff)}.aircraft-north{position:absolute;left:50%;top:-8px;transform:translateX(-50%);font-size:9px;font-weight:600;color:#ee3825;text-shadow:0 0 3px #fff,0 0 3px #fff}#rotation-handle{position:absolute;left:50%;top:50%;border:2px solid #fff;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:var(--red);color:#fff;pointer-events:auto;touch-action:none;box-shadow:0 1px 5px #0005;cursor:grab;display:flex;align-items:center;justify-content:center;padding:0}#rotation-handle:active{cursor:grabbing}.rotation-grip{font-size:20px;line-height:1}#rotation-value{position:absolute;top:28px;left:50%;transform:translateX(-50%);font-size:10px;line-height:18px;background:white;border:1px solid #ee382540;padding:0 5px;border-radius:4px;color:#d52e1d;font-variant-numeric:tabular-nums;white-space:nowrap}#aircraft-ring.is-dragging .rotation-ring circle{stroke:var(--red);stroke-dasharray:none}.stat-grid em{font-size:10px}.stat-grid strong{white-space:nowrap}dialog a{color:var(--red)}@media(max-width:650px){.aircraft-section{margin-top:15px}.stat-grid strong{font-size:17px}.stat-grid em{font-size:8px}.aircraft-section .button-row{max-width:280px}}
.sidebar-heading{margin-bottom:28px}.spacing-section{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid var(--line)}.spacing-section>label{font-size:11px;font-weight:500}.spacing-control{display:flex;align-items:center;gap:9px}.spacing-control>button{width:28px;height:28px;border-radius:5px;font-size:19px;padding:0}.spacing-control>span{font-size:11px;color:#898c91;white-space:nowrap}.spacing-control input{width:44px;height:28px;border:1px solid var(--line);border-radius:5px;text-align:center;padding:3px;color:var(--ink);font-size:12px;appearance:textfield}.spacing-control input::-webkit-inner-spin-button,.spacing-control input::-webkit-outer-spin-button{appearance:none;margin:0}@media(max-width:650px){.spacing-section{margin-top:14px}.sidebar-heading{margin:0}}
