  html,body{margin:0;height:100%;overflow:hidden;background:#000;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#dde6f2;}
  #app{position:fixed;inset:0;z-index:0;}
  #app canvas{display:block;touch-action:none;}
  #aspInteriorTint{position:absolute;inset:0;z-index:1;pointer-events:none;background:#000;opacity:0;will-change:background-color,opacity;}
  .glass{background:rgba(10,16,28,.74);backdrop-filter:blur(10px);border:1px solid rgba(120,160,220,.18);border-radius:12px;}
  #title{position:fixed;top:16px;left:18px;padding:10px 16px;pointer-events:none;}
  #title h1{margin:0;font-size:17px;font-weight:600;letter-spacing:.5px;}
  #title p{margin:2px 0 0;font-size:11.5px;color:#8fa3c0;}
  #panel{position:fixed;top:16px;right:16px;width:238px;padding:13px 16px;font-size:13px;user-select:none;}
  #panel .row{margin:9px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;}
  #panel label{color:#b9c7dc;}
  #panel input[type=range]{width:94px;accent-color:#4d9fff;}
  #panel .val{color:#9fb4d6;font-variant-numeric:tabular-nums;min-width:34px;text-align:right;font-size:11px;}
  /* 空域菜单（航空风格 + iOS 拨动开关） */
  #airMenu{position:fixed;top:70px;left:18px;width:232px;max-height:78vh;overflow-y:auto;padding:12px 14px;font-size:13px;user-select:none;z-index:7;}
  #airMenu .amTitle{font-size:12px;font-weight:700;letter-spacing:2px;color:#dbe6f5;margin:0 0 8px;display:flex;align-items:center;gap:7px;}
  #airMenu .amTitle:before{content:"";width:9px;height:9px;border-radius:50%;background:#34c759;box-shadow:0 0 8px #34c759;}
  #airMenu .amGrp{font-size:10px;font-weight:600;letter-spacing:1.4px;color:#6f86a8;margin:11px 0 5px;text-transform:uppercase;}
  #airMenu .amRow{display:flex;align-items:center;gap:9px;margin:7px 0;cursor:pointer;}
  #airMenu .amLabelOption{display:flex;align-items:center;gap:9px;min-height:22px;margin:5px 0;padding:4px 2px;}
  #airMenu .amLabelOption .nm{flex:1;color:#c4d2e6;}
  #airMenu .amRow .dot{width:11px;height:11px;border-radius:2px;flex:none;}
  #airMenu .amRow .nm{flex:1;color:#c4d2e6;}
  #airMenu .amRow .nm small{color:#7f93b0;font-size:10.5px;}
  #airMenu .pressureSurfaceRow{cursor:default;}
  #airMenu .pressureSurfaceRow select{width:82px;padding:3px 5px;border:1px solid rgba(120,160,220,.25);border-radius:6px;background:#101a2c;color:#dce8f6;font-size:10.5px;font-variant-numeric:tabular-nums;cursor:pointer;}
  #airMenu .amS{margin:8px 0 2px;color:#9fb0cc;font-size:12px;}
  #airMenu .amS .rr{display:flex;align-items:center;gap:8px;margin-top:3px;}
  #airMenu .amS input[type=range]{flex:1;accent-color:#4d9fff;}
  #airMenu .amS .val{color:#9fb4d6;font-variant-numeric:tabular-nums;min-width:36px;text-align:right;font-size:11px;}
  #airMenu .airSubFilters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 5px;margin:2px 1px 7px 21px;}
  #airMenu .airSubFilters label{display:flex;align-items:center;gap:4px;min-width:0;padding:4px 5px;border:1px solid rgba(120,160,220,.14);border-radius:6px;background:rgba(255,255,255,.025);color:#8498b7;font-size:9.5px;cursor:pointer;}
  #airMenu .airSubFilters label:has(input:checked){border-color:rgba(77,159,255,.34);background:rgba(77,159,255,.1);color:#c8d9ef;}
  #airMenu .airSubFilters input{width:11px;height:11px;margin:0;accent-color:#4d9fff;flex:none;}
  #airMenu .airSubFilters span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  #airMenu .wxProductHead{display:flex;align-items:center;gap:9px;margin:13px 0 4px;padding-top:9px;border-top:1px solid rgba(120,150,190,.16);}
  #airMenu .wxProductName{flex:1;color:#e4edf9;font-size:11px;font-weight:700;letter-spacing:.7px;}
  #airMenu .wxProductHead .sw{transform:scale(.78);transform-origin:right center;}
  #airMenu .layerTimeAvailability{display:block;color:#ff827a;font-size:8.5px;font-weight:600;line-height:1.15;white-space:nowrap;}
  #airMenu .wxProductHead .layerTimeAvailability{margin-left:auto;}
  #airMenu .wxHazardList{margin-left:9px;padding-left:8px;border-left:1px solid rgba(120,150,190,.13);}
  #airMenu .wxHazardList .amRow{min-height:25px;}
  #airMenu .wxSubhead{margin:8px 0 2px 17px;color:#7890b1;font-size:9.5px;font-weight:650;letter-spacing:.3px;}
  #airMenu .wxPresetBar{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:5px 0 8px 17px;}
  #airMenu .wxPresetLabel{width:100%;color:#7085a4;font-size:9px;letter-spacing:.5px;text-transform:uppercase;}
  #airMenu .wxPresetBar button{appearance:none;min-height:24px;padding:3px 7px;border:1px solid rgba(120,160,220,.2);border-radius:7px;background:rgba(120,140,170,.09);color:#9cafc9;font:600 9.5px/1 system-ui,-apple-system,sans-serif;cursor:pointer;}
  #airMenu .wxPresetBar button:hover{background:rgba(77,159,255,.16);border-color:rgba(77,159,255,.35);color:#d9e9ff;}
  #airMenu .wxPresetBar button.on{background:rgba(10,132,255,.3);border-color:rgba(85,175,255,.72);color:#f0f8ff;}
  #airMenu .wxPresetBar button.mixed{background:linear-gradient(90deg,rgba(10,132,255,.3) 50%,rgba(120,140,170,.09) 50%);border-color:rgba(85,175,255,.5);color:#d9e9ff;}
  #airMenu .wxPresetBar button[data-wx-action="all"]{color:#aee9bd;}
  #airMenu .wxPresetBar button[data-wx-action="none"]{color:#e6b4b4;}
  #airMenu .wxStandaloneRow{margin-top:13px!important;padding-top:6px!important;border-top:1px solid rgba(120,150,190,.16);}
  #airMenu .airLiveStatus{display:flex;align-items:center;gap:8px;margin:5px 1px;padding:7px 8px;border:1px solid rgba(120,160,220,.15);border-radius:8px;background:rgba(255,255,255,.025);color:#9fb2cd;text-decoration:none;}
  #airMenu .airLiveStatus:hover{background:rgba(255,255,255,.06);}
  #airMenu .airLiveStatus>span{display:grid;gap:2px;min-width:0;flex:1;}
  #airMenu .airLiveStatus b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:600;color:#b9c9df;}
  #airMenu .airLiveStatus em{font-size:9px;font-style:normal;color:#7086a6;}
  #airMenu .airLiveStatus>i{font-size:12px;font-style:normal;color:#4d9fff;}
  #airMenu:is(.mapActive,.wxActive,.wmActive) .airEl{display:none;}
  .sw{position:relative;display:inline-block;width:38px;height:22px;flex:none;}
  .sw input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;z-index:1;}
  .sw b{position:absolute;inset:0;background:rgba(120,140,170,.3);border-radius:11px;transition:background .22s;}
  .sw b:after{content:"";position:absolute;width:18px;height:18px;left:2px;top:2px;background:#fff;border-radius:50%;transition:transform .22s;box-shadow:0 1px 3px rgba(0,0,0,.5);}
  .sw input:checked ~ b{background:var(--c,#34c759);}
  .sw input:checked ~ b:after{transform:translateX(16px);}
  .sw input:indeterminate ~ b{background:color-mix(in srgb,var(--c,#34c759) 62%,rgba(120,140,170,.3));}
  .sw input:indeterminate ~ b:after{transform:translateX(8px);box-shadow:0 1px 3px rgba(0,0,0,.5),inset 0 0 0 5px var(--c,#34c759);}
  #panel select{background:#101a2c;color:#dde6f2;border:1px solid rgba(120,160,220,.25);border-radius:6px;padding:3px 6px;font-size:12px;max-width:130px;}
  #panel input[type=checkbox]{accent-color:#4d9fff;width:15px;height:15px;}
  #panel button{width:100%;margin-top:4px;padding:6px 0;background:#1b304f;color:#dde6f2;border:1px solid rgba(120,160,220,.3);border-radius:7px;cursor:pointer;font-size:12.5px;}
  #panel button:hover{background:#25406a;}
  #stats{margin-top:8px;font-size:10.5px;color:#748aa8;line-height:1.6;font-variant-numeric:tabular-nums;}
  #fps{position:fixed;top:16px;right:298px;z-index:10;min-width:58px;padding:7px 12px;text-align:center;font-size:12px;color:#b9c9df;font-variant-numeric:tabular-nums;cursor:pointer;pointer-events:auto;}
  #loadStatus{position:fixed;right:16px;bottom:16px;width:200px;padding:9px 12px;font-size:11.5px;z-index:6;pointer-events:none;display:none;}
  #loadStatus .lsRow{display:flex;align-items:center;gap:8px;margin:5px 0;}
  #loadStatus .lsName{flex:none;width:60px;color:#c4d2e6;}
  #loadStatus .lsBar{flex:1;height:6px;border-radius:3px;background:rgba(120,140,170,.25);overflow:hidden;}
  #loadStatus .lsBar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3d7dff,#20d0b0);border-radius:3px;transition:width .18s;}
  #loadStatus .lsRow.loadIndeterminate .lsBar i{width:42%!important;animation:layerLoadSweep 1.05s ease-in-out infinite;}
  #loadStatus .lsN{flex:none;min-width:22px;text-align:right;color:#9fb4d6;font-variant-numeric:tabular-nums;}
  #airMenu .amRow,#airMenu .mapRow,#airMenu .wmRow{position:relative;}
  #airMenu .layerLoadBar{position:absolute;left:2px;right:2px;bottom:-1px;height:2px;border-radius:999px;background:rgba(120,140,170,.18);overflow:hidden;opacity:0;pointer-events:none;transition:opacity .16s ease;}
  #airMenu .layerLoadBar i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#3d7dff,#20d0b0);box-shadow:0 0 6px rgba(61,125,255,.5);transition:width .18s ease;}
  #airMenu .layerLoading .layerLoadBar{opacity:1;}
  #airMenu .layerLoadIndeterminate .layerLoadBar i{width:42%!important;animation:layerLoadSweep 1.05s ease-in-out infinite;}
  @keyframes layerLoadSweep{0%{transform:translateX(-115%)}50%{transform:translateX(115%)}100%{transform:translateX(245%)}}
  @media(prefers-reduced-motion:reduce){
    #loadStatus .lsRow.loadIndeterminate .lsBar i,#airMenu .layerLoadIndeterminate .layerLoadBar i{animation-duration:2.4s;}
  }
  /* 开发者设置菜单 + 齿轮按钮 */
  #devMenu{position:fixed;top:16px;right:270px;width:250px;max-height:88vh;overflow-y:auto;padding:13px 16px;font-size:13px;user-select:none;z-index:8;display:none;}
  #devMenu.show{display:block;}
  #devMenu .dvTitle{font-size:12px;font-weight:700;letter-spacing:2px;color:#dbe6f5;margin:0 0 4px;}
  #devMenu .dvGrp{font-size:10px;font-weight:600;letter-spacing:1.4px;color:#6f86a8;margin:12px 0 5px;text-transform:uppercase;border-top:1px solid rgba(120,160,220,.14);padding-top:9px;}
  #devMenu .row{margin:8px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;}
  #devMenu label{color:#b9c7dc;}
  #devMenu select{background:#101a2c;color:#dde6f2;border:1px solid rgba(120,160,220,.25);border-radius:6px;padding:3px 6px;font-size:12px;max-width:140px;}
  #devMenu input[type=checkbox]{accent-color:#4d9fff;width:15px;height:15px;}
  #devMenu input[type=color]{width:44px;height:26px;padding:2px;border:1px solid rgba(255,255,255,.14);border-radius:7px;background:rgba(255,255,255,.07);cursor:pointer;}
  #devMenu input[type=color]::-webkit-color-swatch-wrapper{padding:0}#devMenu input[type=color]::-webkit-color-swatch{border:0;border-radius:4px;}
  #devMenu .amRow,.devSubPanel .amRow{display:flex;align-items:center;gap:9px;margin:7px 0;cursor:pointer;}
  #devMenu .amRow .nm,.devSubPanel .amRow .nm{flex:1;color:#c4d2e6;}
  #devMenu .amS,.devSubPanel .amS{margin:9px 0 2px;color:#9fb0cc;font-size:12px;}
  #devMenu .amS .rr,.devSubPanel .amS .rr{display:flex;align-items:center;gap:8px;margin-top:3px;}
  #devMenu .amS input[type=range],.devSubPanel .amS input[type=range]{flex:1;accent-color:#4d9fff;}
  #devMenu .amS .val,.devSubPanel .amS .val{color:#9fb4d6;font-variant-numeric:tabular-nums;min-width:48px;text-align:right;font-size:11px;}
  #menuTooltip{position:fixed;left:0;top:0;z-index:30;box-sizing:border-box;max-width:min(270px,calc(100vw - 20px));padding:8px 10px;border:1px solid rgba(130,174,232,.28);border-radius:9px;background:rgba(12,18,29,.96);color:#dce7f5;box-shadow:0 8px 24px rgba(0,0,0,.38);font-size:11px;line-height:1.45;letter-spacing:.05px;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s ease;}
  #menuTooltip.show{opacity:1;visibility:visible;}
  .devSubPanel input[type=color]{width:44px;height:26px;padding:2px;border:1px solid rgba(255,255,255,.14);border-radius:7px;background:rgba(255,255,255,.07);cursor:pointer;}
  .devSubPanel select{max-width:140px;padding:4px 7px;border:1px solid rgba(120,160,220,.25);border-radius:7px;background:#101a2c;color:#dde6f2;font-size:12px;}
  .aspEdgeColorsHead,.aspEdgeColorRow{display:grid;grid-template-columns:minmax(0,1fr) 44px 44px;align-items:center;gap:8px;}
  .aspEdgeColorsHead{margin:8px 0 3px;color:var(--ui-tertiary);font-size:10.5px;text-align:center;}
  .aspEdgeColorsHead span:first-child{text-align:left;}
  .aspEdgeColorRow{min-height:30px;border-top:1px solid rgba(255,255,255,.055);color:var(--ui-secondary);}
  .aspEdgeColorRow .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  #devMenu button{width:100%;margin-top:4px;padding:6px 0;background:#1b304f;color:#dde6f2;border:1px solid rgba(120,160,220,.3);border-radius:7px;cursor:pointer;font-size:12.5px;}
  /* 双钮距离滑杆：单轨、两钮、中间填充 */
  .dvLab{color:#9fb0cc;font-size:12px;display:flex;justify-content:space-between;align-items:baseline;margin-top:9px;}
  .dvLab .dnum{color:#9fb4d6;font-variant-numeric:tabular-nums;font-size:11px;}
  .dual{position:relative;height:24px;margin-top:2px;--dc:#4d9fff;}
  .dual .dtrk{position:absolute;left:2px;right:2px;top:10px;height:4px;border-radius:2px;background:rgba(120,140,170,.28);}
  .dual .dfil{position:absolute;top:10px;height:4px;border-radius:2px;background:var(--dc);}
  .dual input[type=range]{position:absolute;left:0;right:0;top:0;width:100%;height:24px;margin:0;background:none;-webkit-appearance:none;appearance:none;pointer-events:none;}
  .dual input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none;height:24px;background:none;border:none;}
  .dual input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;margin-top:4.5px;width:15px;height:15px;border-radius:50%;background:#eef4fc;border:2px solid var(--dc);cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.5);}
  .dual input[type=range]::-moz-range-track{height:24px;background:none;border:none;}
  .dual input[type=range]::-moz-range-thumb{pointer-events:auto;width:15px;height:15px;border-radius:50%;background:#eef4fc;border:2px solid var(--dc);cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.5);}
  #compass{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:68px;height:68px;padding:2px;border:none;background:none;cursor:pointer;z-index:6;opacity:.82;transition:opacity .15s;}
  #compass:hover{opacity:1;}
  #compassRose{transform-box:view-box;transform-origin:50% 50%;}
  #weatherTimeline{position:fixed;z-index:7;left:50%;bottom:14px;width:min(880px,calc(100vw - 360px));box-sizing:border-box;
    padding:9px 12px 8px;transform:translateX(-50%);border-radius:15px;background:rgba(20,27,38,.82);
    color:var(--ui-text,#f5f7fb);user-select:none;-webkit-user-select:none;}
  #weatherTimeline[hidden]{display:none!important;}
  .weatherTimeHeader{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:9px;height:25px;}
  .weatherTimeAssist{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
  .weatherTimeCurrent{justify-self:start;min-width:0;overflow:hidden;color:rgba(245,247,251,.84);text-overflow:ellipsis;white-space:nowrap;
    font:650 11px/1.2 ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.12px;}
  .weatherTimeIcon,.weatherTimeNowButton{display:grid;width:25px;height:25px;min-width:25px;padding:0;border:1px solid rgba(255,255,255,.14);border-radius:50%;
    place-items:center;background:rgba(255,255,255,.09);color:#fff;font-size:10px;cursor:pointer;}
  .weatherTimeCenter{position:relative;width:25px;height:25px;justify-self:center;}
  .weatherTimeNowButton{position:absolute;top:0;left:29px;color:rgba(245,247,251,.76);}
  .weatherTimeNowButton[hidden]{display:none!important;}
  .weatherTimeNowButton svg{width:14px;height:14px;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;}
  .weatherTimeNowButton svg circle{fill:currentColor;stroke:none;}
  .weatherTimeDetails{position:relative;justify-self:end;}
  .weatherTimeDetailsToggle{display:grid;width:28px;height:25px;box-sizing:border-box;padding:0;border:1px solid rgba(255,255,255,.12);border-radius:8px;
    place-items:center;background:rgba(255,255,255,.08);color:rgba(245,247,251,.76);font-size:0;cursor:pointer;list-style:none;}
  .weatherTimeDetailsToggle:after{content:"•••";font:700 9px/1 system-ui,sans-serif;letter-spacing:1px;}
  .weatherTimeDetails.open .weatherTimeDetailsToggle{background:rgba(10,132,255,.2);border-color:rgba(99,183,255,.42);color:#b7dcff;}
  .weatherTimeDetailsPanel{position:absolute;z-index:8;right:0;bottom:34px;width:min(420px,calc(100vw - 24px));box-sizing:border-box;padding:10px 11px;
    border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#141d2a;box-shadow:0 12px 38px rgba(0,0,0,.42);}
  .weatherTimeDetailsPanel[hidden]{display:none!important;}
  .weatherTimeZoneRow{display:flex;align-items:center;justify-content:space-between;gap:12px;color:rgba(220,230,242,.68);font-size:10px;}
  .weatherTimeZone{height:27px;max-width:190px;padding:0 24px 0 9px;border:1px solid rgba(255,255,255,.12);border-radius:8px;
    background:rgba(255,255,255,.08);color:rgba(245,247,251,.88);font-size:10px;cursor:pointer;}
  .weatherTimeZone option{background:#182131;color:#f5f7fb;}
  .weatherTimeTrack{position:relative;height:calc(38px + var(--weather-time-range-height,0px));margin:22px 2px 0;}
  .weatherTimeTrack:before{content:"";position:absolute;z-index:1;top:9px;right:7px;left:7px;height:4px;border-radius:999px;
    background:linear-gradient(to right,#63b7ff 0,#63b7ff var(--weather-time-progress,50%),rgba(225,235,247,.22) var(--weather-time-progress,50%),rgba(225,235,247,.22) 100%);pointer-events:none;}
  .weatherTimeAvailability{position:absolute;z-index:2;top:16px;right:7px;left:7px;height:var(--weather-time-range-height,0px);pointer-events:none;}
  .weatherTimeAvailability i{position:absolute;min-width:1px;border-radius:999px;background:var(--range-color);box-shadow:0 0 4px color-mix(in srgb,var(--range-color) 55%,transparent);}
  .weatherTimeTicks{position:absolute;z-index:3;left:7px;right:7px;top:8px;height:8px;pointer-events:none;}
  .weatherTimeTicks i{position:absolute;top:0;width:1px;height:8px;transform:translateX(-.5px);background:rgba(225,235,247,.28);}
  #weatherTimeSlider{position:absolute;z-index:5;inset:4px 0 auto;width:100%;height:14px;margin:0;background:transparent;cursor:pointer;
    -webkit-appearance:none;appearance:none;}
  #weatherTimeSlider::-webkit-slider-runnable-track{height:4px;border:0;background:transparent;}
  #weatherTimeSlider::-webkit-slider-thumb{box-sizing:border-box;width:14px;height:14px;margin-top:-5px;border:2px solid #63b7ff;border-radius:50%;
    background:#eef6ff;box-shadow:0 1px 4px rgba(0,0,0,.48);cursor:pointer;-webkit-appearance:none;appearance:none;}
  #weatherTimeSlider::-moz-range-track,#weatherTimeSlider::-moz-range-progress{height:4px;border:0;background:transparent;}
  #weatherTimeSlider::-moz-range-thumb{box-sizing:border-box;width:14px;height:14px;border:2px solid #63b7ff;border-radius:50%;
    background:#eef6ff;box-shadow:0 1px 4px rgba(0,0,0,.48);cursor:pointer;}
  #weatherTimeNowMarker{position:absolute;z-index:4;top:0;height:calc(21px + var(--weather-time-range-height,0px));width:2px;transform:translateX(-1px);border-radius:2px;
    background:#ff453a;box-shadow:0 0 0 1px rgba(0,0,0,.25),0 0 7px rgba(255,69,58,.55);pointer-events:none;}
  #weatherTimeNowMarker[data-outside="true"]{opacity:.35;}
  #weatherTimeNowMarker span{position:absolute;top:calc(23px + var(--weather-time-range-height,0px));left:50%;padding:1px 4px;transform:translateX(-50%);border-radius:4px;
    background:#ff453a;color:#fff;white-space:nowrap;font:700 9px/1.3 ui-monospace,"SF Mono",Menlo,monospace;}
  .weatherTimeSelected{position:absolute;z-index:6;top:-17px;left:40%;padding:1px 4px;transform:translateX(-50%);border-radius:4px;
    background:rgba(8,13,21,.78);color:rgba(238,244,252,.86);pointer-events:none;white-space:nowrap;font:650 10.5px/1.3 ui-monospace,"SF Mono",Menlo,monospace;}
  .weatherTimeFooter{display:flex;min-height:11px;align-items:flex-end;gap:10px;margin:0 3px;}
  .weatherTimeRangeLegend{display:flex;min-width:0;flex:1;flex-wrap:wrap;align-items:center;gap:3px 10px;color:rgba(220,230,242,.68);font:600 8.5px/1.2 ui-monospace,"SF Mono",Menlo,monospace;}
  .weatherTimeRangeLegend:empty{display:none;}
  .weatherTimeRangeLegend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;}
  .weatherTimeRangeLegend i{width:13px;height:3px;border-radius:999px;background:var(--range-color);box-shadow:0 0 4px color-mix(in srgb,var(--range-color) 55%,transparent);}
  .weatherTimeRangeLegend span[data-available="false"] i{opacity:.32;}
  .weatherTimeRangeLegend small{color:rgba(255,173,94,.86);font-size:8px;font-weight:600;line-height:1.2;}
  .weatherTimeMeta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;margin-top:8px;padding-top:8px;
    border-top:1px solid rgba(255,255,255,.07);color:rgba(220,230,242,.58);font:9px/1.25 ui-monospace,"SF Mono",Menlo,monospace;}
  .weatherTimeMeta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  #weatherTimeFreshness,#weatherTimeLayers{grid-column:1/-1;}
  #weatherTimeClock{text-align:right;}
  #weatherTimeValidity[data-unavailable="true"],#weatherTimeFreshness[data-stale="true"]{color:#ff827a;}
  .weatherTimeWarning{min-width:0;max-width:52%;margin-left:auto;overflow:hidden;color:#ff9a91;text-align:right;font:600 9px/1.25 ui-monospace,"SF Mono",Menlo,monospace;
    text-overflow:ellipsis;white-space:nowrap;}
  .weatherTimeWarning[data-state="stale"]{color:#ffc261;}
  .weatherTimeWarning[hidden]{display:none!important;}
  body.weatherTimelineVisible #compass{bottom:calc(128px + var(--weather-time-range-height,0px));}
  body.weatherTimelineVisible #credit,body.weatherTimelineVisible #hint{bottom:calc(132px + var(--weather-time-range-height,0px));}
  #cityLabels{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:4;-webkit-user-select:none;user-select:none;}
  .cityL{position:absolute;left:0;top:0;display:none;box-sizing:border-box;padding:2px 5px 2px 13px;
    color:#f3f7fc;white-space:nowrap;font:600 11px/1.15 system-ui,-apple-system,"Segoe UI",sans-serif;
    letter-spacing:.1px;text-shadow:-1px -1px 1px rgba(3,8,15,.95),1px -1px 1px rgba(3,8,15,.95),-1px 1px 1px rgba(3,8,15,.95),1px 1px 1px rgba(3,8,15,.95),0 0 5px rgba(0,0,0,.9);
    will-change:transform,opacity;}
  .cityL:before{content:"";position:absolute;left:4px;top:50%;width:4px;height:4px;transform:translateY(-50%);border-radius:50%;
    background:#f7fbff;box-shadow:0 0 0 1px rgba(6,13,22,.9),0 0 5px rgba(130,200,255,.75);}
  .cityL[data-align="left"]{padding-left:5px;padding-right:13px;text-align:right;}
  .cityL[data-align="left"]:before{left:auto;right:4px;}
  .cityL[data-rank="1"]{font-size:12px;font-weight:700;color:#fff;}
  .cityL[data-rank="4"]{font-size:10px;font-weight:550;color:#dbe7f5;}
  #aptLabels{position:fixed;inset:0;pointer-events:none;z-index:5;}  /* z-index:5 → 在画布及机场图/空域数字层之上、所有 UI 面板(z≥6)之下：机场标签始终画在机场图前面 */
  .aptL{position:absolute;left:0;top:0;pointer-events:auto;cursor:pointer;font-size:11px;line-height:1;
    padding:3px 7px;border-radius:6px;background:rgba(10,18,30,.72);border:1px solid rgba(120,150,190,.35);
    color:#dbe6f4;white-space:nowrap;will-change:transform;
    user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
  #aptLabels{-webkit-user-select:none;user-select:none;}
  #amLabels{position:fixed;inset:0;pointer-events:none;overflow:hidden;}  /* 机场图跑道/滑行道号 */
  .amL{position:absolute;left:0;top:0;font:700 12px/1 ui-monospace,"SF Mono",Menlo,monospace;white-space:nowrap;letter-spacing:.5px;text-shadow:0 0 3px rgba(0,0,0,var(--am-shadow-a1,1)),0 0 3px rgba(0,0,0,var(--am-shadow-a1,1)),0 1px 2px rgba(0,0,0,var(--am-shadow-a1,1)),0 0 5px rgba(0,0,0,var(--am-shadow-a2,0)),0 0 7px rgba(0,0,0,var(--am-shadow-a3,0)),0 0 9px rgba(0,0,0,var(--am-shadow-a4,0)),0 0 12px rgba(0,0,0,var(--am-shadow-a5,0));will-change:transform;}
  #aspLabels{position:fixed;inset:0;pointer-events:none;overflow:hidden;}  /* 空域高度数字层：在画布之上、UI 之下 */
  /* 仪表风：等宽数字 + 类别色边框 + 中缝分隔 + 底部小三角指向该块，明显区别于机场胶囊标签 */
  .aspAlt{position:absolute;left:0;top:0;pointer-events:auto;cursor:pointer;text-align:center;white-space:nowrap;will-change:transform;user-select:none;-webkit-user-select:none;
    font:700 13px/1.1 ui-monospace,"SF Mono",Menlo,monospace;color:#fff;
    background:rgba(6,10,18,.86);border:2px solid var(--ac,#7aa0dc);border-radius:4px;
    padding:3px 9px;letter-spacing:.3px;text-shadow:0 1px 2px rgba(0,0,0,.9);
    box-shadow:0 0 0 1px rgba(0,0,0,.4), 0 2px 8px rgba(0,0,0,.5), 0 0 10px -2px var(--ac,#7aa0dc);}
  .aspAlt b{display:block;font-weight:700;font-size:13px;}
  .aspAlt i{font-style:normal;display:block;border-top:1px solid var(--ac,#7aa0dc);margin-top:3px;padding-top:3px;font-weight:700;opacity:.95;font-size:13px;color:var(--ac,#cfe0ff);}
  .aspAlt u{text-decoration:none;font-size:11px;font-weight:600;opacity:.82;margin-left:3px;letter-spacing:.2px;}
  .aptL:hover{background:rgba(24,40,62,.92);border-color:rgba(150,190,235,.6);}
  #credit{position:fixed;left:18px;bottom:14px;font-size:10.5px;color:#5c7089;pointer-events:none;max-width:58vw;line-height:1.5;}
  #banner{position:fixed;top:70px;left:50%;transform:translateX(-50%);padding:8px 16px;font-size:12.5px;color:#ffb4b4;background:rgba(60,16,20,.85);border:1px solid rgba(255,120,120,.3);border-radius:9px;display:none;z-index:9;}
  #loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#000;z-index:10;transition:opacity .4s;}
  #loading.hide{opacity:0;pointer-events:none;}
  .spin{width:34px;height:34px;border-radius:50%;border:3px solid rgba(77,159,255,.2);border-top-color:#4d9fff;animation:sp 1s linear infinite;}
  @keyframes sp{to{transform:rotate(360deg)}}
  #loading span{font-size:13px;color:#8fa3c0;}
  #hint{position:fixed;right:18px;bottom:14px;font-size:10.5px;color:#5c7089;pointer-events:none;text-align:right;line-height:1.5;}
  @media (max-width:640px){
    #title{top:10px;left:12px;padding:8px 12px;}
    #title h1{font-size:15px}
    #title p{display:none}
    #panel{top:62px;right:12px;width:205px;padding:10px 12px;font-size:12px}
    #hint{display:none}
  }

  /* ================= macOS-style application shell ================= */
  :root{
    --ui-text:#f5f7fb;--ui-secondary:rgba(225,232,242,.68);--ui-tertiary:rgba(210,220,235,.42);
    --ui-surface:rgba(24,29,39,.68);--ui-surface-strong:rgba(27,33,44,.86);
    --ui-stroke:rgba(255,255,255,.14);--ui-separator:rgba(255,255,255,.095);
    --ui-blue:#0a84ff;--ui-green:#30d158;--ui-red:#ff453a;--ui-orange:#ff9f0a;
    --ui-shadow:0 18px 50px rgba(0,0,0,.34),0 2px 12px rgba(0,0,0,.2);
  }
  html,body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC",system-ui,sans-serif;color:var(--ui-text);}
  button,select,input{font:inherit;}
  .glass{background:var(--ui-surface);-webkit-backdrop-filter:saturate(165%) blur(28px);backdrop-filter:saturate(165%) blur(28px);border:1px solid var(--ui-stroke);border-radius:16px;box-shadow:var(--ui-shadow);}
  #title{top:14px;left:14px;height:42px;box-sizing:border-box;padding:7px 13px 7px 12px;display:flex;flex-direction:column;justify-content:center;border-radius:13px;}
  #title h1{font-size:13px;font-weight:650;letter-spacing:-.1px;}
  #title p{font-size:9.5px;line-height:1.2;color:var(--ui-tertiary);}
  #fps{top:14px;right:14px;box-sizing:border-box;width:76px;min-width:76px;padding:6px 10px;border-radius:12px;color:var(--ui-secondary);box-shadow:0 8px 24px rgba(0,0,0,.22);text-align:center;transition:background .16s ease,color .16s ease,transform .1s ease;}
  #fps:hover,#fps[aria-expanded="true"]{background:rgba(255,255,255,.14);color:#fff;}
  #fps:focus-visible{outline:2px solid rgba(10,132,255,.9);outline-offset:2px;}
  #fps:active{transform:scale(.96);}
  #langToggle{position:fixed;z-index:10;top:14px;right:98px;box-sizing:border-box;width:30px;min-width:30px;height:30px;padding:0;border:1px solid var(--ui-stroke);border-radius:50%;background:var(--ui-surface);color:var(--ui-text);box-shadow:0 8px 24px rgba(0,0,0,.22);display:grid;place-items:center;cursor:pointer;-webkit-backdrop-filter:saturate(165%) blur(28px);backdrop-filter:saturate(165%) blur(28px);transition:background .16s ease,color .16s ease,transform .1s ease;}
  #langToggle svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;}
  #langToggle:hover{background:rgba(255,255,255,.14);color:#fff;}
  #langToggle:focus-visible{outline:2px solid rgba(10,132,255,.9);outline-offset:2px;}
  #langToggle:active{transform:scale(.96);}
  #languageMenu{position:fixed;z-index:21;top:52px;right:98px;box-sizing:border-box;width:188px;padding:6px;direction:ltr;}
  #languageMenu[hidden]{display:none!important;}
  #languageMenu button{box-sizing:border-box;width:100%;min-height:34px;margin:0;padding:6px 9px;border:0;border-radius:9px;background:transparent;color:var(--ui-secondary);display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:start;cursor:pointer;font-size:12px;}
  #languageMenu button:hover,#languageMenu button[aria-selected="true"]{background:rgba(255,255,255,.11);color:#fff;}
  #languageMenu button:focus-visible{outline:2px solid rgba(10,132,255,.9);outline-offset:-2px;}
  #languageMenu .languageCheck{width:14px;color:var(--ui-blue);text-align:center;font-weight:700;}
  /* Cyrillic labels are substantially wider than CJK labels. Keep Russian
     words intact and let rows wrap only at natural word boundaries. */
  html[lang="ru"] body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;}
  html[lang="ru"] :is(#airMenu,#panel,#devMenu,.devSubPanel,#perfPanel,#dataMon) :is(.nm,label,small,.amNote,.sub,.uiHeaderText,.uiSectionTitle){
    word-break:normal;overflow-wrap:normal;hyphens:none;
  }
  html[lang="ru"] #airMenu .amTab{flex:1 1 auto!important;min-width:0;padding-inline:4px!important;font-size:10.5px!important;letter-spacing:0!important;white-space:nowrap;}
  html[lang="ru"] #airMenu :is(.amRow,.mapRow,.wmRow) .nm{min-width:0;line-height:1.28;}
  html[lang="ru"] .uiHeaderText small{line-height:1.35;}
  @media(min-width:861px){html[lang="ru"] #airMenu{width:310px;}}
  #appDock{position:fixed;z-index:9;top:14px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:3px;padding:4px;border-radius:14px;user-select:none;}
  .dockBtn{height:34px;min-width:72px;padding:0 11px;border:0;border-radius:10px;background:transparent;color:var(--ui-secondary);display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-size:12px;font-weight:560;transition:background .16s ease,color .16s ease,transform .1s ease;}
  .dockBtn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
  .dockBtn:hover{background:rgba(255,255,255,.08);color:var(--ui-text);}
  .dockBtn:active{transform:scale(.97);}
  .dockBtn.active{background:rgba(255,255,255,.14);color:#fff;box-shadow:inset 0 0 0 .5px rgba(255,255,255,.08),0 1px 2px rgba(0,0,0,.28);}
  .uiDrawer{display:none;box-sizing:border-box;z-index:8;overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent;}
  .uiDrawer.show{display:block;animation:drawerIn .18s cubic-bezier(.2,.8,.2,1);}
  @keyframes drawerIn{from{opacity:0;transform:translateY(-5px) scale(.985)}to{opacity:1;transform:none}}
  .rightDrawer{position:fixed;top:68px;right:14px;width:292px;max-height:calc(100vh - 86px);padding:0 12px 12px;font-size:13px;}
  #panel{top:68px;right:14px;width:292px;padding:0 12px 12px;font-size:13px;}
  #airMenu{top:68px;right:14px;left:auto;width:270px;max-height:calc(100vh - 86px);padding:10px 12px 12px;border-radius:16px;}
  #devMenu{top:68px;right:14px;width:318px;max-height:calc(100vh - 86px);padding:0 14px 14px;font-size:13px;}
  #devMenu .fovRow{display:flex;align-items:center;justify-content:space-between;}
  #devMenu .rangeField{display:flex;align-items:center;gap:8px;min-width:0;}
  #devMenu .rangeField input[type=range]{width:112px;accent-color:var(--ui-blue);}
  #devMenu .rangeValue{min-width:28px;color:var(--ui-secondary);font-size:11px;font-variant-numeric:tabular-nums;text-align:right;}
  .devSubPanel{position:fixed;right:14px;bottom:50px;z-index:11;display:none;box-sizing:border-box;width:292px;max-height:82vh;overflow-y:auto;padding:0 12px 12px;color:var(--ui-text);font:12px/1.4 system-ui,-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC",sans-serif;background:var(--ui-surface-strong);border:1px solid var(--ui-stroke);border-radius:16px;box-shadow:var(--ui-shadow);-webkit-backdrop-filter:saturate(165%) blur(28px);backdrop-filter:saturate(165%) blur(28px);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
  .devSubPanel .subHd{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:9px;margin:0 -12px 8px;padding:12px;background:linear-gradient(180deg,rgba(34,40,52,.98) 72%,rgba(34,40,52,.88));cursor:move;touch-action:none;user-select:none;}
  .devSubPanel .subGrip{width:28px;height:4px;border-radius:999px;background:rgba(255,255,255,.2);flex:none;}
  .devSubPanel .subHd h4{min-width:0;flex:1;margin:0;color:var(--ui-text);font-size:13px;font-weight:650;}
  .devSubPanel .subClose{width:28px;height:28px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.09);color:var(--ui-secondary);font-size:18px;line-height:28px;cursor:pointer;}
  .devSubPanel .subClose:hover{background:rgba(255,255,255,.16);color:#fff;}
  .uiHeader{position:sticky;top:0;z-index:2;margin:0 -12px 8px;padding:12px 12px 10px;display:flex;align-items:center;gap:10px;background:linear-gradient(180deg,rgba(34,40,52,.96) 72%,rgba(34,40,52,0));border-radius:16px 16px 0 0;}
  #devMenu .uiHeader{margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px;}
  .uiHeaderIcon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(145deg,rgba(10,132,255,.95),rgba(55,95,220,.9));box-shadow:inset 0 0 0 .5px rgba(255,255,255,.22),0 3px 10px rgba(0,88,220,.28);font-size:15px;}
  .uiHeaderText{min-width:0;flex:1;}
  .uiHeaderText b{display:block;font-size:13px;line-height:1.2;font-weight:650;letter-spacing:-.1px;}
  .uiHeaderText small{display:block;margin-top:2px;color:var(--ui-tertiary);font-size:10px;line-height:1.2;}
  .drawerClose{width:26px!important;height:26px!important;min-width:26px;padding:0!important;margin:0!important;border:0!important;border-radius:50%!important;background:rgba(255,255,255,.09)!important;color:var(--ui-secondary)!important;display:grid!important;place-items:center;font-size:17px!important;line-height:1;cursor:pointer;}
  .drawerClose:hover{background:rgba(255,255,255,.16)!important;color:#fff!important;}
  #airMenu>.drawerClose{position:absolute;float:none;top:10px;right:10px;z-index:8;margin:0!important;}
  /* 所有菜单关闭按钮统一锁定正圆，避免标题栏 flex 空间不足时被压成椭圆。 */
  .drawerClose,.devSubPanel .subClose,#windPanel .wpClose,#fplFxMenu .fxClose,#fplRouteStyleMenu .fxClose,#perfPanel .pmClose,#dataMon .hd .x{
    box-sizing:border-box!important;appearance:none!important;-webkit-appearance:none!important;
    flex:0 0 28px!important;width:28px!important;min-width:28px!important;max-width:28px!important;
    height:28px!important;min-height:28px!important;max-height:28px!important;aspect-ratio:1/1!important;
    margin:0!important;padding:0!important;border:1px solid rgba(255,95,95,.44)!important;border-radius:50%!important;
    background:rgba(255,70,70,.14)!important;color:#ffb8b3!important;display:grid!important;place-items:center!important;
    font-size:18px!important;font-weight:500!important;line-height:1!important;text-align:center!important;cursor:pointer!important;
    transition:background .15s ease,border-color .15s ease,color .15s ease,transform .1s ease!important;
  }
  .drawerClose:hover,.devSubPanel .subClose:hover,#windPanel .wpClose:hover,#fplFxMenu .fxClose:hover,#fplRouteStyleMenu .fxClose:hover,#perfPanel .pmClose:hover,#dataMon .hd .x:hover{
    background:rgba(255,70,70,.3)!important;border-color:rgba(255,125,120,.75)!important;color:#fff!important;
  }
  .drawerClose:active,.devSubPanel .subClose:active,#windPanel .wpClose:active,#fplFxMenu .fxClose:active,#fplRouteStyleMenu .fxClose:active,#perfPanel .pmClose:active,#dataMon .hd .x:active{transform:scale(.93)!important;}
  .drawerClose:focus-visible,.devSubPanel .subClose:focus-visible,#windPanel .wpClose:focus-visible,#fplFxMenu .fxClose:focus-visible,#fplRouteStyleMenu .fxClose:focus-visible,#perfPanel .pmClose:focus-visible,#dataMon .hd .x:focus-visible{outline:2px solid rgba(255,120,115,.9)!important;outline-offset:2px!important;}
  .sheetExpand{display:none;}
  .legendPortrait,#aspLegendHide,#aspLegendRestore{display:none;}
  #aspLegend{display:none;position:fixed;left:12px;bottom:112px;z-index:6;max-width:210px;padding:10px 12px;font-size:12px;line-height:1.75;pointer-events:none;}
  #aspLegend .aspLegendTitle{margin-right:0;white-space:nowrap;}
  #aspLegend .aspLegendRow{white-space:nowrap;}
  #aspLegend .aspLegendSwatch{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:6px;vertical-align:middle;}
  #aspLegend .aspLegendNote{opacity:.6;margin-top:4px;}
  #pressureLegend{position:fixed;top:68px;left:14px;z-index:6;box-sizing:border-box;width:192px;padding:10px 12px;pointer-events:none;color:var(--ui-text);font-size:11px;}
  #pressureLegend[hidden]{display:none!important;}
  #pressureLegend b{display:block;margin-bottom:2px;font-size:12px;font-weight:680;}
  #pressureLegend .pressureLegendMetric{display:block;color:var(--ui-secondary);font-size:10px;}
  #pressureLegend .pressureLegendRamp{display:block;height:7px;margin:7px 0 3px;border-radius:999px;background:linear-gradient(90deg,#342c8e,#247fc4,#8de5f2);box-shadow:0 0 0 1px rgba(255,255,255,.12),0 0 10px rgba(55,175,220,.25);}
  #pressureLegend .pressureLegendScale{display:flex;justify-content:space-between;color:var(--ui-secondary);font:9.5px/1.2 ui-monospace,"SF Mono",Menlo,monospace;}
  #pressureLegend small{display:block;margin-top:5px;color:var(--ui-tertiary);font-size:9.5px;}
  .uiSection{margin-top:8px;padding:10px 10px 8px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.055);}
  .uiSectionTitle{margin:0 0 5px;color:var(--ui-tertiary);font-size:10px;font-weight:650;letter-spacing:.7px;text-transform:uppercase;}
  #panel .row,#devMenu .row{min-height:30px;margin:2px 0;gap:10px;}
  #panel label,#devMenu label{color:var(--ui-text);font-size:12.5px;}
  #panel .row small,#devMenu .row small{color:var(--ui-tertiary);}
  .row>input[type=checkbox]{position:relative;width:36px!important;height:21px!important;flex:none;margin:0;appearance:none;-webkit-appearance:none;border:0;border-radius:999px;background:rgba(120,126,138,.5);cursor:pointer;transition:background .2s ease;box-shadow:inset 0 0 0 .5px rgba(255,255,255,.11);}
  .row>input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.45);transition:transform .2s cubic-bezier(.2,.8,.2,1);}
  .row>input[type=checkbox]:checked{background:var(--ui-green);}
  .row>input[type=checkbox]:checked:after{transform:translateX(15px);}
  #panel select,#devMenu select{height:28px;padding:0 26px 0 9px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.08);color:var(--ui-text);font-size:11.5px;outline:none;}
  #panel select:focus,#devMenu select:focus{border-color:rgba(10,132,255,.75);box-shadow:0 0 0 3px rgba(10,132,255,.16);}
  .uiButton,#panel button,#devMenu button{box-sizing:border-box;min-height:32px;width:100%;margin-top:6px;padding:6px 10px;border:1px solid rgba(255,255,255,.11);border-radius:9px;background:rgba(255,255,255,.08);color:var(--ui-text);font-size:12px;font-weight:560;cursor:pointer;transition:background .15s ease,transform .1s ease;}
  .uiButton:hover,#panel button:hover,#devMenu button:hover{background:rgba(255,255,255,.14);}
  .uiButton:active,#panel button:active,#devMenu button:active{transform:scale(.985);}
  .uiButton.primary{background:var(--ui-blue);border-color:rgba(255,255,255,.18);box-shadow:0 2px 8px rgba(0,100,220,.28);}
  .uiButton.primary:hover{background:#2491ff;}
  .uiButton.danger,#clearCache{color:#ffd1cc!important;background:rgba(255,69,58,.11)!important;border-color:rgba(255,69,58,.2)!important;}
  .uiButtonRow{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
  .uiButtonRow button{margin-top:6px!important;}
  .cloudSourceSwitch{display:grid;grid-template-columns:1fr 1.25fr;gap:3px;min-width:190px;padding:3px;border-radius:9px;background:rgba(0,0,0,.2);box-shadow:inset 0 0 0 .5px rgba(255,255,255,.08);}
  #cloudPanel .cloudSourceSwitch button{min-height:26px;margin:0!important;padding:4px 7px;border:0;border-radius:7px;background:transparent;color:var(--ui-secondary);font-size:11px;box-shadow:none;}
  #cloudPanel .cloudSourceSwitch button[aria-pressed="true"]{background:var(--ui-blue);color:#fff;box-shadow:0 1px 4px rgba(0,75,180,.35);}
  #cloudPanel .cloudSourceSwitch button:disabled{cursor:wait;opacity:.55;}
  .statusPill{display:inline-flex;align-items:center;gap:5px;color:var(--ui-secondary);font-size:10.5px;font-variant-numeric:tabular-nums;}
  .statusPill:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ui-tertiary);}
  .statusPill[data-state="hrrr"]:before,.statusPill[data-state="live"]:before,.statusPill[data-state="cache"]:before,.statusPill[data-state="test"]:before{background:#30d158;box-shadow:0 0 7px rgba(48,209,88,.65);}
  .statusPill[data-state="loading"]:before,.statusPill[data-state="refreshing"]:before{background:#0a84ff;box-shadow:0 0 7px rgba(10,132,255,.65);}
  .statusPill[data-state="stale"]:before,.statusPill[data-state="cooling"]:before{background:#ffd60a;box-shadow:0 0 7px rgba(255,214,10,.55);}
  .statusPill[data-state="error"]:before{background:#ff453a;box-shadow:0 0 7px rgba(255,69,58,.55);}
  #airMenu .amTabs{margin:0 36px 9px 0!important;padding:3px!important;border-radius:10px!important;background:rgba(255,255,255,.07)!important;}
  #airMenu .amTab{padding:5px 0!important;border-radius:7px!important;font-size:12px!important;color:var(--ui-secondary)!important;}
  #airMenu .amTab.on{color:#fff!important;background:rgba(255,255,255,.16)!important;box-shadow:0 1px 3px rgba(0,0,0,.28)!important;}
  #airMenu .amGrp,#devMenu .dvGrp{margin:12px 0 5px;padding-top:9px;border-top:1px solid var(--ui-separator);color:var(--ui-tertiary);font-size:9.5px;letter-spacing:.8px;}
  #airMenu .amRow{min-height:27px;margin:2px 0;padding:1px 2px;border-radius:7px;}
  #airMenu .amRow:hover,#airMenu .wmRow:hover{background:rgba(255,255,255,.055);}
  #airMenu .amRow .nm,#airMenu .wmRow .nm{color:var(--ui-text);font-size:12px;}
  #airMenu .amRow .nm small,#airMenu .wmRow .nm small{color:var(--ui-tertiary);}
  #airMenu .sw{transform:scale(.88);transform-origin:right center;}
  #devMenu .dvTitle{display:none;}
  #stats{padding:6px 2px 0;color:var(--ui-tertiary);}
  #loadStatus{border-radius:13px;}
  #credit,#hint{color:rgba(200,214,232,.34);}

  @media(max-width:860px){
    #title{display:none;}
    .devSubPanel{left:10px;right:10px;bottom:62px;width:auto;max-height:min(70vh,620px);border-radius:18px;}
    #fps{top:10px;right:10px;}
    #langToggle{top:10px;right:94px;}
    #languageMenu{top:48px;right:94px;}
    #appDock{top:auto;bottom:10px;width:calc(100vw - 20px);box-sizing:border-box;justify-content:space-around;padding:5px;}
    .dockBtn{min-width:0;flex:1;height:40px;padding:0 6px;flex-direction:column;gap:1px;font-size:9px;}
    .dockBtn svg{width:16px;height:16px;}
    .rightDrawer,#panel,#devMenu{top:auto;left:10px;right:10px;bottom:62px;width:auto;max-height:min(58vh,520px);border-radius:18px;}
    #airMenu{top:58px;right:10px;bottom:auto;left:auto;width:min(270px,calc(100vw - 20px));max-height:calc(100dvh - 130px);padding:14px 12px;border-radius:18px;transition:max-height .24s cubic-bezier(.2,.8,.2,1);}
    #airMenu.expanded{max-height:calc(100dvh - 76px);}
    #airMenu:before{content:"";position:sticky;display:block;z-index:6;top:0;width:36px;height:4px;margin:-8px auto 7px;border-radius:999px;background:rgba(255,255,255,.22);}
    #airMenu>.drawerClose{position:absolute;float:none;top:12px;right:12px;z-index:8;margin:0!important;}
    #airMenu .sheetExpand{display:grid!important;position:absolute;float:none;top:12px;right:44px;z-index:8;width:26px!important;height:26px!important;min-width:26px;padding:0!important;margin:0!important;border:0!important;border-radius:50%!important;background:rgba(255,255,255,.09)!important;color:var(--ui-secondary)!important;place-items:center;font-size:13px!important;cursor:pointer;}
    #airMenu .amTabs{margin-right:70px!important;}
    #compass{bottom:68px;}
    #weatherTimeline{left:10px;right:10px;bottom:70px;width:auto;transform:none;padding:8px 10px 7px;}
    .weatherTimeHeader{grid-template-columns:minmax(92px,1fr) 25px minmax(28px,1fr);gap:6px;}
    .weatherTimeCurrent{font-size:10px;}
    .weatherTimeDetailsPanel{right:-1px;}
    body.weatherTimelineVisible #compass{bottom:calc(174px + var(--weather-time-range-height,0px));}
    #pressureLegend{top:max(58px,calc(env(safe-area-inset-top) + 50px));left:max(10px,env(safe-area-inset-left));width:174px;padding:8px 10px;border-radius:12px;}
    #credit,#hint{display:none;}
  }
  @media(max-width:600px) and (orientation:portrait){
    .devSubPanel{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:calc(68px + env(safe-area-inset-bottom));max-height:min(68dvh,580px);}
    .devSubPanel .subClose{width:32px;height:32px;font-size:20px;line-height:32px;}
    .drawerClose,.devSubPanel .subClose,#windPanel .wpClose,#fplFxMenu .fxClose,#fplRouteStyleMenu .fxClose,#perfPanel .pmClose,#dataMon .hd .x{
      flex-basis:32px!important;width:32px!important;min-width:32px!important;max-width:32px!important;
      height:32px!important;min-height:32px!important;max-height:32px!important;font-size:20px!important;
    }
    #fps{top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));font-size:11px;padding:5px 9px;}
    #langToggle{top:max(10px,env(safe-area-inset-top));right:calc(max(10px,env(safe-area-inset-right)) + 84px);}
    #languageMenu{top:calc(max(10px,env(safe-area-inset-top)) + 38px);right:calc(max(10px,env(safe-area-inset-right)) + 84px);width:min(188px,calc(100vw - 20px));}
    #appDock{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));width:auto;transform:none;height:52px;border-radius:16px;}
    .dockBtn{height:42px;min-height:42px;font-size:9.5px;border-radius:11px;}
    .dockBtn svg{width:17px;height:17px;}
    .rightDrawer,#panel,#devMenu{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:calc(68px + env(safe-area-inset-bottom));max-height:min(56dvh,480px);touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
    #airMenu{top:calc(max(10px,env(safe-area-inset-top)) + 42px);right:max(8px,env(safe-area-inset-right));bottom:auto;left:auto;width:min(270px,calc(100vw - 16px));max-height:calc(100dvh - 130px);touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
    #airMenu.expanded{max-height:calc(100dvh - 76px);}
    .uiHeader{padding-top:10px;padding-bottom:8px;margin-bottom:5px;}
    .uiHeaderIcon{width:29px;height:29px;}
    .drawerClose{width:32px!important;height:32px!important;min-width:32px!important;font-size:20px!important;}
    #airMenu .sheetExpand{right:46px;}
    #airMenu .amTabs{margin-right:76px!important;}
    .uiSection{margin-top:6px;padding:8px 10px 7px;}
    #panel .row,#devMenu .row{min-height:36px;margin:1px 0;}
    #panel label,#devMenu label{font-size:13px;}
    #panel select,#devMenu select{min-height:34px;max-width:58vw;font-size:16px;}
    .row>input[type=checkbox]{width:40px!important;height:24px!important;}
    .row>input[type=checkbox]:after{width:20px;height:20px;}
    .row>input[type=checkbox]:checked:after{transform:translateX(16px);}
    .uiButton,#panel button,#devMenu button{min-height:38px;font-size:13px;}
    #airMenu .amRow,#airMenu .wmRow{min-height:34px;margin:1px 0;}
    #airMenu .sw{transform:scale(.96);}
    #aspLegend{box-sizing:border-box;left:max(10px,env(safe-area-inset-left));bottom:calc(76px + env(safe-area-inset-bottom));width:154px;max-width:154px;padding:8px 9px;border-radius:12px;font-size:10px;line-height:1.42;}
    #aspLegend .legendDesktop{display:none!important;}
    #aspLegend .legendPortrait{display:inline!important;}
    #aspLegend .aspLegendTitle{margin-right:40px;margin-bottom:3px;font-size:10.5px;}
    #aspLegend .aspLegendSwatch{width:8px;height:8px;margin-right:5px;}
    #aspLegend .aspLegendNote{margin-top:3px;font-size:9px;}
    #aspLegendHide{display:grid;position:absolute;top:6px;right:6px;width:36px;height:22px;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.12);color:var(--ui-secondary);place-items:center;font-size:9px;font-weight:650;cursor:pointer;pointer-events:auto;}
    #aspLegendRestore.visible{position:fixed;display:flex;z-index:7;left:max(10px,env(safe-area-inset-left));bottom:calc(76px + env(safe-area-inset-bottom));height:30px;padding:0 10px;border:1px solid var(--ui-stroke);border-radius:999px;align-items:center;gap:6px;background:var(--ui-surface-strong);color:#fff;box-shadow:var(--ui-shadow);font-size:10px;font-weight:650;cursor:pointer;pointer-events:auto;}
    #aspLegendRestore:before{content:"";width:7px;height:7px;border-radius:2px;background:var(--ui-blue);box-shadow:0 0 8px rgba(10,132,255,.5);}
    #compass{bottom:calc(68px + env(safe-area-inset-bottom));width:62px;height:62px;}
    #weatherTimeline{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));
      bottom:calc(68px + env(safe-area-inset-bottom));}
    body.weatherTimelineVisible #compass{bottom:calc(172px + env(safe-area-inset-bottom) + var(--weather-time-range-height,0px));}
  }
