:root{--bg: #07101a;--panel: rgba(7, 13, 22, .78);--panel-solid: #0d1725;--line: rgba(164, 190, 222, .2);--text: #eef6ff;--muted: #93a7c0;--accent: #61d8ff;--scene-bg: #050a10;--glow-color: rgba(97, 216, 255, .12);--glow-color-strong: rgba(97, 216, 255, .35);--route-stroke: rgba(97, 216, 255, .08);--crosshair-color: rgba(97, 216, 255, .12);--bracket-color: rgba(97, 216, 255, .18);--scan-color: rgba(97, 216, 255, .06);--fab-bg: rgba(7, 16, 28, .6);--fab-border: rgba(97, 216, 255, .25);--fab-hover-bg: rgba(97, 216, 255, .12);--fab-color: #c0deff;--map-border: rgba(97, 216, 255, .12);--map-bg: #0a0f16;--map-shadow: 0 0 80px rgba(97, 216, 255, .06), 0 32px 80px rgba(0, 0, 0, .5);--map-glow: 0 0 60px rgba(97, 216, 255, .08);--map-ctrl-panel-bg: rgba(7, 13, 22, .78);--map-ctrl-panel-border: rgba(171, 197, 231, .18);--map-ctrl-panel-item-bg: rgba(14, 25, 42, .62);--map-ctrl-btn-bg: rgba(14, 25, 42, .82);--map-ctrl-btn-border: rgba(171, 197, 231, .24);--map-ctrl-btn-hover-bg: rgba(20, 41, 62, .9);--map-ctrl-btn-hover-border: rgba(113, 221, 255, .56);--map-ctrl-text: #dbeaff;--map-ctrl-muted: #9fb3cc;--map-ctrl-label: #a8bad3;--map-ctrl-select-bg: rgba(14, 25, 42, .92);--map-ctrl-select-color: #edf4ff;--map-ctrl-seg-bg: rgba(7, 13, 22, .42);--map-ctrl-seg-btn-color: #7f91aa;--map-ctrl-seg-active-bg: rgba(97, 216, 255, .16);--map-ctrl-seg-active-color: #eaf8ff;--map-ctrl-legend-color: #dbeaff;--map-ctrl-legend-item-color: #dbeaff;--map-ctrl-legend-item-off: #6f8198;--map-ctrl-collapse-color: #a8bad3;--map-ctrl-offline-bg: rgba(14, 25, 42, .62);--map-ctrl-download-bg: rgba(18, 37, 58, .88);--map-ctrl-download-hover: rgba(25, 52, 78, .95);--map-ctrl-timeline-bg: rgba(7, 13, 22, .78);--map-ctrl-timeline-border: rgba(171, 197, 231, .18);--map-ctrl-timeline-select-bg: rgba(10, 20, 34, .78);--map-ctrl-timeline-slider-track: rgba(255, 255, 255, .2);--map-ctrl-timeline-tick: rgba(220, 236, 255, .48);--map-ctrl-timeline-status: #fbbf24;--map-ctrl-timeline-text: var(--map-ctrl-text)}.visually-hidden{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}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}button:focus:not(:focus-visible){outline:none}html,body,.map-scroll-content,.control-panel,.flight-plan-panel,.flight-plan-list,.airport-search-results,.offline-weather-detail,.airport-weather-report,.maplibregl-popup,.maplibregl-popup-content,.typhoon-popup-note{overscroll-behavior:contain}html,body{height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{background:var(--scene-bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,select,input,a{font:inherit;touch-action:manipulation}select{cursor:pointer}button,.control-button,.icon-button,.collapse-btn,.segment,select,.swatch{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}img,svg{-webkit-user-drag:none;-webkit-touch-callout:none}.map-stage,.map-frame,.map-scroll-content,.map-canvas,.maplibregl-canvas-container,.maplibregl-canvas,.location-point-picker,.wind-readout-popup,.hud,.control-dock,.control-panel,.airport-search-toggle,.airport-search-results,.airport-search-result,.airport-search-code,.airport-search-name,.legend-section,.legend-header,.legend-item,.legend-subgroup,.legend-actions,.timestamp,.weather-layer-status,.segmented-control,.segmented-control button,.offline-weather-panel,.offline-weather-main,.offline-weather-title,#offline-weather-status,.fps-debug,.map-actions,.timeline-panel,.timeline-select,.timeline-slider-wrapper,#timeline-slider,.timeline-ticks,.timeline-tick,.timeline-separator,.timeline-info,.timeline-status,.timeline-time-container,#timeline-time,#timeline-loading,.map-floating-controls,.wind-height-control,.wind-height-options,.wind-height-panel,.wind-height-header,.wind-height-body,.wind-height-scale,#wind-height-slider,.wind-height-ticks,.wind-height-source,.wind-height-value,#wind-height-loading,.forecast-overlay-control,.forecast-overlay-header,.forecast-overlay-title,.forecast-overlay-toggle,.forecast-overlay-body,.forecast-surface-segmented,.forecast-isobars-toggle,.location-points-panel,.location-point-row,.location-point-name,.location-point-collapse,.location-point-bearing-mode,.location-point-remove,.location-point-position-actions,.location-point-position-actions button,.location-point-actions,.add-location-point-btn,#location-points-count,#location-points-help-btn,.flight-plan-header,.flight-plan-title-row,.flight-plan-actions,.flight-plan-help,.flight-plan-departure-zone,.flight-plan-departure-input-wrap,.flight-plan-departure-display,.flight-plan-departure-icon,.flight-plan-list,.flight-plan-item,.flight-plan-delete,.flight-plan-delete-menu,.airport-popup-header,.airport-popup-title,.airport-popup-close,.airport-cloud-hint,.airport-weather-time-header,.airport-weather-time-badges,.airport-flight-category,.airport-report-time-ago,.airport-weather-line-divider,.airport-weather-divider,.airport-weather-empty,.toast-container,.toast{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}input:not([type=range]):not([type=button]):not([type=submit]):not([type=reset]),textarea,[contenteditable=true],.airport-weather-report,.airport-weather-raw,.airport-weather-decoded,.location-points-help-popover,.typhoon-popup-note,.flight-plan-details{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.airport-search-results::-webkit-scrollbar,.control-panel::-webkit-scrollbar,.flight-plan-list::-webkit-scrollbar{display:none}.offline-weather-detail,.airport-weather-report,.flight-plan-details,.flight-plan-table-wrap{scrollbar-width:thin;scrollbar-color:rgba(164,190,222,.24) transparent}.offline-weather-detail::-webkit-scrollbar,.airport-weather-report::-webkit-scrollbar,.flight-plan-details::-webkit-scrollbar,.flight-plan-table-wrap::-webkit-scrollbar{width:8px;height:8px}.offline-weather-detail::-webkit-scrollbar-track,.airport-weather-report::-webkit-scrollbar-track,.flight-plan-details::-webkit-scrollbar-track,.flight-plan-table-wrap::-webkit-scrollbar-track{background:transparent}.offline-weather-detail::-webkit-scrollbar-thumb,.airport-weather-report::-webkit-scrollbar-thumb,.flight-plan-details::-webkit-scrollbar-thumb,.flight-plan-table-wrap::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#a4bede3d;background-clip:content-box}@media(hover:hover){.offline-weather-detail::-webkit-scrollbar-thumb:hover,.airport-weather-report::-webkit-scrollbar-thumb:hover,.flight-plan-details::-webkit-scrollbar-thumb:hover,.flight-plan-table-wrap::-webkit-scrollbar-thumb:hover{background:#a4bede57;background-clip:content-box}}.flight-plan-details::-webkit-scrollbar-corner,.flight-plan-table-wrap::-webkit-scrollbar-corner{background:transparent}.airport-search-code,.airport-search-name,.offline-weather-row span:first-child,.location-point-name,.typhoon-legend-item strong,.typhoon-legend-item small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loading-shimmer[hidden],#timeline-time[hidden],.wind-height-control[hidden],.location-points-help-popover[hidden],.legend.collapsed,.location-points-panel.collapsed,.location-point-picker[hidden],.offline-weather-panel.collapsed .offline-weather-body,.offline-weather-detail[hidden],.utc-clock-capsule[hidden]{display:none}.map-stage{position:fixed;inset:0;z-index:1;overflow:hidden;overscroll-behavior:none}.map-frame{position:relative;width:100%;height:100%;container:map-frame / inline-size;overflow:hidden;overscroll-behavior:none;background:var(--map-bg)}.map-scroll-content,.map-canvas{position:absolute;inset:0}.map-scroll-content{min-width:360px;min-height:240px}.maplibregl-canvas:focus,.maplibregl-canvas:focus-visible{outline:none}.utc-clock-capsule{position:absolute;top:18px;left:50%;transform:translate(-50%);z-index:30;display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 12px;border-radius:9999px;border:1px solid var(--map-ctrl-btn-border, rgba(171, 197, 231, .24));background:var(--map-ctrl-panel-bg, rgba(7, 13, 22, .78));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 2px 12px #00000059;color:var(--map-ctrl-text, #dbeaff);font-family:inherit;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-size:13px;font-weight:700;letter-spacing:.2px;line-height:1;white-space:nowrap;user-select:none;pointer-events:none}.utc-clock-capsule[hidden]{display:none!important}.flight-hud{position:absolute;z-index:35;box-sizing:border-box;background:var(--map-ctrl-panel-bg, rgba(7, 13, 22, .84));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--map-ctrl-btn-border, rgba(171, 197, 231, .24));box-shadow:0 4px 16px #0006;color:var(--map-ctrl-text, #dbeaff);user-select:none;pointer-events:auto;transition:opacity .18s ease,transform .18s ease,top .16s ease,left .16s ease}.flight-hud[hidden]{display:none!important}.flight-hud-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;border-radius:6px;transition:background-color .14s ease;box-sizing:border-box;padding:3px 2px 2px}@media(hover:hover){.flight-hud-item:hover{background-color:#ffffff14}}.flight-hud-item:active{background-color:#ffffff29}.flight-hud-popover{position:absolute;z-index:45;box-sizing:border-box;background:var(--map-ctrl-panel-bg, rgba(7, 13, 22, .92));backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--map-ctrl-btn-border, rgba(171, 197, 231, .28));box-shadow:0 6px 20px #00000080;border-radius:9999px;padding:4px 6px;pointer-events:auto;user-select:none;animation:hud-popover-in .14s cubic-bezier(.16,1,.3,1);overflow:hidden;max-width:calc(100vw - 20px)}.flight-hud-popover[hidden]{display:none!important}.flight-hud-popover-options{display:flex;align-items:center;gap:4px;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;touch-action:pan-x}.flight-hud-popover-options::-webkit-scrollbar{display:none;width:0;height:0}.flight-hud-popover-options>*{flex-shrink:0}.flight-hud-popover-btn{appearance:none;border:1px solid transparent;border-radius:9999px;background:transparent;color:#94a3b8;font-family:inherit;font-size:11px;font-weight:700;line-height:1;padding:4px 2px;width:44px;min-width:44px;box-sizing:border-box;text-align:center;display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease;white-space:nowrap}@media(hover:hover){.flight-hud-popover-btn:not([aria-pressed=true]):hover{background:#ffffff14;color:#e2e8f0}}.flight-hud-popover-btn[aria-pressed=true]{background:#0e7490d9;border-color:#38bdf899;color:#f0f9ff;box-shadow:0 0 8px #0e749066}.flight-hud-popover-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:auto}@keyframes hud-popover-in{0%{opacity:0}to{opacity:1}}.flight-hud-label{font-size:9.5px;font-weight:700;letter-spacing:.3px;color:#94a3b8;display:flex;align-items:baseline;gap:2.5px;line-height:1}.flight-hud-unit{font-size:inherit;font-weight:600;color:#7d90a6}.flight-hud-value{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-weight:700;line-height:1.1;color:#f8fafc}@media(min-height:501px){.flight-hud{top:13px;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center;height:40px;padding:0 8px;border-radius:8px;gap:6px}.flight-hud-item{width:56px;min-width:56px;flex:0 0 56px;box-sizing:border-box;padding:3.5px 2px 2.5px}.flight-hud-value{font-size:15px}.flight-hud-divider{width:1px;height:22px;background:#abc5e72e;flex-shrink:0}.has-flight-hud .utc-clock-capsule{left:58px;top:18px;transform:none;padding:0 9px;transition:left .2s ease,top .2s ease,transform .2s ease}@media(max-width:760px){.flight-hud{top:9px}.has-flight-hud .utc-clock-capsule{left:54px;top:15px;padding:0 8px}}@media(max-width:590px){.flight-hud{top:9px;height:40px;padding:0 7px;gap:5px}.flight-hud-item{width:52px;min-width:52px;flex:0 0 52px;box-sizing:border-box;padding:3px 2px 2px}.flight-hud-value{font-size:15px}.flight-hud-label{font-size:9.5px;letter-spacing:normal;gap:2px}.flight-hud-divider{height:22px}.has-flight-hud.has-clock-capsule .utc-clock-capsule,.has-flight-hud .utc-clock-capsule:not([hidden]){top:6px;left:50%;transform:translate(-50%)}.has-flight-hud.has-clock-capsule .flight-hud,.has-flight-hud .utc-clock-capsule:not([hidden])~.flight-hud{top:38px}.has-flight-hud:not(.has-clock-capsule) .flight-hud,.has-flight-hud .utc-clock-capsule[hidden]~.flight-hud{top:9px}}}.hud{position:absolute;inset:14px;z-index:130;pointer-events:none}.airport-search{position:absolute;top:0;left:0;width:38px;height:38px;pointer-events:auto;z-index:3;transition:width .16s ease}.airport-search:before{content:"";position:absolute;inset:0;border:1px solid var(--map-ctrl-btn-border);border-radius:8px;background:var(--map-ctrl-btn-bg);backdrop-filter:blur(14px);pointer-events:none;transition:border-color .16s ease,background .16s ease;z-index:0}.airport-search.open{width:min(265px,calc(100% - 58px))}.airport-search.open.has-results:before,.airport-search.closing.has-results:before{border-bottom-right-radius:0;border-bottom-left-radius:0}.airport-search .airport-search-toggle{appearance:none;position:absolute;top:0;left:0;display:grid;place-items:center;width:38px;height:38px;padding:0;border:0;background:transparent;box-shadow:none;color:var(--map-ctrl-text);cursor:pointer;z-index:2}.airport-search .airport-search-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.airport-search-panel{position:absolute;top:0;right:0;left:38px;height:38px;border:0;background:transparent;pointer-events:none;z-index:1}.airport-search.open .airport-search-panel,.airport-search.closing .airport-search-panel{pointer-events:auto}.airport-search input{width:100%;height:38px;padding:0 9px 0 0;border:0;border-radius:8px;background:transparent;color:var(--map-ctrl-text);font-size:13px;font-weight:700;outline:none;text-transform:uppercase}.airport-search input::-webkit-search-cancel-button{appearance:none;width:16px;height:16px;margin-left:8px;background:currentColor;cursor:pointer;opacity:.72;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 4l8 8M12 4l-8 8' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / 14px 14px no-repeat}@media(hover:hover){.airport-search input::-webkit-search-cancel-button:hover{opacity:1}.airport-search:not(.closing):hover:before{border-color:var(--map-ctrl-btn-hover-border)}.airport-search-result:hover{background:var(--map-ctrl-btn-hover-bg)}}.airport-search:not(.closing):active:before{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.airport-search.open:focus-within:before{border-color:var(--map-ctrl-btn-hover-border)}.airport-search input::-webkit-search-decoration{appearance:none}.airport-search:not(.open):not(.closing) input{pointer-events:none;color:transparent}.airport-search-results{position:absolute;top:37px;left:0;width:100%;margin-top:0;max-height:calc(var(--map-frame-height, 100dvh) - 65px);overflow-y:auto;scrollbar-width:none;border:1px solid var(--map-ctrl-panel-border);border-top-color:var(--map-ctrl-btn-hover-border);border-radius:0 0 8px 8px;background:#070d16db;backdrop-filter:blur(14px);pointer-events:auto;z-index:2}.airport-search-result{display:block;width:100%;padding:9px 10px;border:0;border-bottom:1px solid rgba(171,197,231,.12);background:transparent;color:var(--map-ctrl-text);text-align:left;cursor:pointer}.airport-search-result:last-child{border-bottom:0}.airport-search-result:focus-visible{background:var(--map-ctrl-btn-hover-bg)}.airport-search-code{display:block;font-size:13px;font-weight:800;line-height:1.2}.airport-search-name{display:block;margin-top:2px;color:var(--map-ctrl-muted);font-size:12px;line-height:1.25}.control-dock{display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;margin-left:auto;width:min(820px,calc(max(360px,100vw) - 74px));max-height:calc(100% - 46px);position:relative}.control-dock>*{pointer-events:auto}.control-button,.icon-button,.segment{appearance:none;border:1px solid var(--map-ctrl-btn-border);border-radius:8px;background:var(--map-ctrl-btn-bg);color:var(--map-ctrl-text);cursor:pointer}.control-button{min-height:34px;padding:9px 12px;font-size:13px;font-weight:760;line-height:1}@media(hover:hover){.control-button:hover,.icon-button:hover,.segment:hover{border-color:var(--map-ctrl-btn-hover-border)}}.control-button:active,.icon-button:active,.segment:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.control-panel{position:absolute;top:0;right:46px;display:grid;align-content:start;width:265px;max-height:calc(var(--map-frame-height, 100dvh) - 28px);gap:10px;overflow:auto;overflow-x:hidden;min-height:0;flex:1 1 auto;scrollbar-width:none;padding:12px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:var(--map-ctrl-panel-bg);backdrop-filter:blur(14px);z-index:2}.panel-collapsed .control-panel{display:none}.flight-plan-toggle.active{color:#60a5fa}.flight-plan-panel{position:absolute;top:0;right:46px;display:flex;flex-direction:column;width:min(820px,calc(max(360px,100vw) - 74px));max-width:calc(max(360px,100vw) - 74px);height:calc(var(--map-frame-height, 100dvh) - 28px);overflow:hidden;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:var(--map-ctrl-panel-bg);color:var(--map-ctrl-text);box-shadow:0 18px 50px #00000057;backdrop-filter:blur(14px);pointer-events:auto;z-index:4}.flight-plan-panel[hidden]{display:none}.flight-plan-title-row,.flight-plan-detail-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.flight-plan-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px;border-bottom:1px solid var(--map-ctrl-panel-border)}.flight-plan-header .flight-plan-title-row{display:contents}.flight-plan-header .flight-plan-title-row>strong{grid-column:1;grid-row:1;align-self:center;white-space:nowrap}.flight-plan-detail-heading>div{min-width:0}.flight-plan-title-row>strong{flex-shrink:0}.flight-plan-title-row strong,.flight-plan-detail-heading strong{display:block;font-size:14px}.flight-plan-detail-heading span{display:block;margin-top:2px;color:var(--map-ctrl-muted);font-size:11px}.flight-plan-help{grid-column:1;grid-row:2;min-width:0;margin:0;overflow-wrap:anywhere;color:var(--map-ctrl-muted);font-size:11px;line-height:1.35}.flight-plan-actions{grid-column:2;grid-row:1 / span 2;display:flex;align-items:flex-start;gap:8px;flex-shrink:0}.flight-plan-actions .icon-button{width:34px;min-width:34px;height:34px;padding:0}.flight-plan-actions .icon-button svg{width:16px;height:16px}.flight-plan-list-toggle{padding-inline:10px}.flight-plan-import{display:inline-flex;align-items:center}.flight-plan-import.is-busy{opacity:.55;pointer-events:none}.flight-plan-departure{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;min-width:0;box-sizing:border-box;margin:4px 10px 12px 0;padding:8px 0;border-top:1px solid var(--map-ctrl-panel-border);border-bottom:1px solid var(--map-ctrl-panel-border)}.flight-plan-departure-label{flex-shrink:0;font-size:12px;font-weight:700}.flight-plan-departure-zone{display:flex;align-items:center;gap:2px;padding:2px;border-radius:6px;background:#0f172a73}.flight-plan-departure-zone button{height:22px;width:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--map-ctrl-text);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background-color .12s ease,border-color .12s ease}@media(hover:hover){.flight-plan-departure-zone button:hover{background:#ffffff14}.flight-plan-departure-input-wrap:hover{border-color:var(--map-ctrl-btn-hover-border)}}.flight-plan-departure-input-wrap:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.flight-plan-departure-zone button.active{border-color:#38bdf899;background:#0e7490d9;color:#f0f9ff;font-weight:700}.flight-plan-departure-input-wrap{position:relative;display:inline-flex;align-items:center;width:155px;flex:0 0 155px;height:28px;padding:0 26px 0 8px;border:1px solid var(--map-ctrl-btn-border);border-radius:6px;background:var(--map-ctrl-panel-item-bg);cursor:pointer;box-sizing:border-box;transition:border-color .12s ease,background-color .12s ease;user-select:none;-webkit-user-select:none}.flight-plan-departure-input-wrap:focus-within{outline:none;border-color:#38bdf8b3;box-shadow:0 0 0 2px #0e749059}.flight-plan-departure-input-wrap input[type=datetime-local]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;margin:0;padding:0;z-index:2;color:transparent!important;background:transparent!important;appearance:none;-webkit-appearance:none}.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;display:block!important}.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit-fields-wrapper,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit-text,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit-month-field,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit-day-field,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-datetime-edit-year-field,.flight-plan-departure-input-wrap input[type=datetime-local]::-webkit-date-and-time-value{color:transparent!important;opacity:0!important}.flight-plan-departure-display{position:relative;z-index:1;color:var(--map-ctrl-text);font-size:12px;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap}.flight-plan-departure-display.is-placeholder{color:var(--map-ctrl-muted)}.flight-plan-departure-icon{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1;width:14px;height:14px;fill:none;stroke:var(--map-ctrl-muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.flight-plan-departure-eta{display:inline-flex;align-items:center;gap:6px;margin-left:2px;cursor:pointer;user-select:none}.flight-plan-departure-eta.is-disabled{opacity:.45;cursor:not-allowed}.flight-plan-departure-eta.is-disabled *{cursor:not-allowed}.flight-plan-departure-eta input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none;margin:0}.flight-plan-departure-eta-switch{position:relative;display:inline-block;width:28px;height:16px;background:#94a3b859;border-radius:9999px;transition:background-color .15s ease,box-shadow .15s ease;flex-shrink:0}.flight-plan-departure-eta-switch:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform .15s ease}.flight-plan-departure-eta input:checked~.flight-plan-departure-eta-switch{background:#2563eb}.flight-plan-departure-eta input:checked~.flight-plan-departure-eta-switch:after{transform:translate(12px)}.flight-plan-departure-eta input:focus-visible~.flight-plan-departure-eta-switch{outline:2px solid var(--accent);outline-offset:1px}.flight-plan-departure-eta-text{font-size:11px;font-weight:600;color:var(--map-ctrl-text);white-space:nowrap}.flight-plan-departure-hint{flex:1 1 100%;width:100%;margin-top:2px;color:var(--map-ctrl-muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}.flight-plan-body{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:0;flex:1}.flight-plan-panel.list-collapsed .flight-plan-body{grid-template-columns:minmax(0,1fr)}.flight-plan-panel.list-collapsed .flight-plan-list{display:none}.flight-plan-panel.list-collapsed .flight-plan-table-wrap,.flight-plan-panel.list-collapsed .flight-plan-table{width:100%}.flight-plan-list{min-height:120px;padding:8px;overflow:auto;scrollbar-width:none;border-right:1px solid var(--map-ctrl-panel-border);-webkit-user-select:none;user-select:none}.flight-plan-item{display:grid;grid-template-columns:minmax(0,1fr) auto;margin-bottom:6px}.flight-plan-item>button{appearance:none;min-width:0;padding:8px;border:1px solid var(--map-ctrl-btn-border);border-radius:7px;background:var(--map-ctrl-panel-item-bg);color:var(--map-ctrl-text);text-align:left;cursor:pointer;transition:background-color .14s ease,border-color .14s ease}.flight-plan-item>button:first-child{touch-action:pan-y}@media(hover:hover){.flight-plan-item>button:first-child:hover{border-color:var(--map-ctrl-btn-hover-border)}.flight-plan-item .flight-plan-delete:hover{border-color:#ef444499;background:#ef444461}.flight-plan-delete-menu button:hover{background:#ffffff14}.flight-plan-table tbody tr:hover{background:#60a5fa14}.flight-plan-table tbody tr:hover td.flight-plan-shear-high{background:#eab3087a}}.flight-plan-item>button:first-child:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.flight-plan-item.active>button:first-child{border-color:#60a5fab3;background:#2563eb38}.flight-plan-item strong,.flight-plan-item span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flight-plan-item strong{font-size:12px}.flight-plan-item span{margin-top:3px;color:var(--map-ctrl-muted);font-size:10px}.flight-plan-item .flight-plan-delete{display:grid;width:34px;margin-left:5px;place-items:center;padding:0;border:1px solid rgba(239,68,68,.35);border-radius:7px;background:#ef444438;color:#fff;text-align:center;transition:background-color .14s ease,border-color .14s ease}.flight-plan-item .flight-plan-delete[hidden]{display:none}.flight-plan-item .flight-plan-delete svg,.flight-plan-delete-menu svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.flight-plan-item .flight-plan-delete svg{width:16px;height:16px}.flight-plan-delete-menu svg{width:14px;height:14px}.flight-plan-delete-menu{position:absolute;z-index:8;min-width:auto;padding:3px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:#111c2b;box-shadow:0 12px 28px #00000061}.flight-plan-delete-menu[hidden]{display:none}.flight-plan-delete-menu button{display:flex;width:100%;align-items:center;gap:5px;padding:5px 8px;border:0;border-radius:6px;background:transparent;color:#fca5a5;font-size:11px;line-height:1.2;white-space:nowrap;cursor:pointer}.flight-plan-delete-menu button:focus-visible{outline:none;background:#ffffff14}.flight-plan-details{min-width:0;min-height:180px;padding:0 0 10px 10px;overflow:auto;overscroll-behavior-x:none;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}.flight-plan-detail-heading{margin:10px 10px 8px 0}.flight-plan-empty{display:grid;min-height:90px;place-items:center;color:var(--map-ctrl-muted);font-size:12px;text-align:center}.flight-plan-route-table{width:100%}.flight-plan-route-table+.flight-plan-route-table{margin-top:12px}.flight-plan-route-table h3{margin:0 10px 6px 0;color:#bfdbfe;font-size:12px}.flight-plan-table-wrap{display:flex;width:100%}.flight-plan-table-wrap:after{content:"";display:block;width:10px;min-width:10px;flex-shrink:0}.flight-plan-table{flex:1;width:100%;min-width:550px;table-layout:fixed;border-collapse:separate;border-spacing:0;border:1px solid var(--map-ctrl-panel-border);border-radius:7px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:10px;white-space:nowrap}.flight-plan-table th,.flight-plan-table td{padding:6px 4px;border-right:1px solid rgba(148,163,184,.12);border-bottom:1px solid rgba(148,163,184,.12);text-align:center}.flight-plan-table th:nth-child(1),.flight-plan-table td:nth-child(1){width:8.5%}.flight-plan-table th:nth-child(2),.flight-plan-table td:nth-child(2){width:7%}.flight-plan-table th:nth-child(3),.flight-plan-table td:nth-child(3){width:8%}.flight-plan-table th:nth-child(4),.flight-plan-table td:nth-child(4){width:6.5%}.flight-plan-table th:nth-child(5),.flight-plan-table td:nth-child(5){width:8%}.flight-plan-table th:nth-child(6),.flight-plan-table td:nth-child(6){width:7%}.flight-plan-table th:nth-child(7),.flight-plan-table td:nth-child(7){width:9.5%}.flight-plan-table th:nth-child(8),.flight-plan-table td:nth-child(8){width:9.5%}.flight-plan-table th:nth-child(9),.flight-plan-table td:nth-child(9){width:8%}.flight-plan-table th:nth-child(10),.flight-plan-table td:nth-child(10){width:8%}.flight-plan-table th:nth-child(11),.flight-plan-table td:nth-child(11){width:24%}.flight-plan-table th:last-child,.flight-plan-table td:last-child{border-right:none}.flight-plan-table tbody tr:last-child td{border-bottom:none}.flight-plan-table th{position:sticky;top:0;z-index:2;background:#111c2b;color:#bfdbfe;font-weight:800}.flight-plan-table:not(.header-stuck) th:first-child{border-top-left-radius:6px}.flight-plan-table:not(.header-stuck) th:last-child{border-top-right-radius:6px}.flight-plan-table tbody tr:last-child td:first-child{border-bottom-left-radius:6px}.flight-plan-table tbody tr:last-child td:last-child{border-bottom-right-radius:6px}.flight-plan-table td.flight-plan-shear-high{background:#eab30859;color:#fef9c3;font-weight:800}.flight-plan-toggle svg circle{fill:none}.timeline-panel{position:absolute;bottom:14px;left:50%;transform:translate(-50%);width:min(500px,calc(100% - 28px));z-index:110;display:flex;align-items:center;gap:12px;background:var(--map-ctrl-timeline-bg);border:1px solid var(--map-ctrl-timeline-border);border-radius:20px;padding:8px 12px 8px 8px;box-shadow:0 4px 20px #0006;backdrop-filter:blur(12px);color:var(--map-ctrl-timeline-text);font-size:14px;font-weight:500}.timeline-select{appearance:none;-webkit-appearance:none;width:108px;flex:0 1 108px;height:30px;border-radius:15px;border:1px solid var(--map-ctrl-timeline-border);background:var(--map-ctrl-timeline-select-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8bad3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='7 14.5 12 9.5 17 14.5'/%3E%3C/svg%3E") no-repeat right 6px center;background-size:14px;color:var(--map-ctrl-timeline-text);padding:0 22px 0 8px;font-size:12px;font-weight:700;outline:none;cursor:pointer;text-align:center;text-align-last:center;-webkit-text-align-last:center}@media(hover:hover){.timeline-select:hover{border-color:var(--map-ctrl-btn-hover-border)}}.timeline-select:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.timeline-select option{text-align:center}.timeline-slider-wrapper{position:relative;flex:1;display:flex;align-items:center;min-width:200px}#timeline-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;background:var(--map-ctrl-timeline-slider-track);border-radius:3px;outline:none;margin:0;cursor:pointer;z-index:2;position:relative}#timeline-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;box-shadow:0 1px 3px #00000080}#timeline-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;box-shadow:0 1px 3px #00000080}.timeline-ticks{position:absolute;inset:0;z-index:1;pointer-events:none}.timeline-tick{position:absolute;top:50%;width:2px;height:14px;transform:translateY(-50%);border-radius:1px;background:var(--map-ctrl-timeline-tick)}.timeline-separator{position:absolute;top:50%;transform:translateY(-50%);width:3px;height:36px;background-color:#fbbf24;border-radius:2px;z-index:1;pointer-events:none}.timeline-info{display:flex;flex-direction:column;align-items:center;flex:0 0 auto;padding:0 4px;white-space:nowrap}.timeline-status{font-size:12px;color:var(--map-ctrl-timeline-status);text-transform:uppercase;letter-spacing:.5px;line-height:1;margin-bottom:2px;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:center}.loading-shimmer{display:inline-block;width:100%;text-align:center;background-color:transparent;background-image:linear-gradient(90deg,#d6e6fc73,#dceafd87,#eaf2feb3,#f8fbffde,#fffffff2,#f8fbffde,#eaf2feb3,#dceafd87,#d6e6fc73,#dceafd87,#eaf2feb3,#f8fbffde,#fffffff2,#f8fbffde,#eaf2feb3,#dceafd87,#d6e6fc73);background-size:200% 100%;background-repeat:repeat-x;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;will-change:background-position;contain:layout paint;animation:loading-shimmer 2s linear infinite}.wind-height-loading.loading-shimmer{background-image:linear-gradient(90deg,#e7f9ee73,#ebfaf187,#f2fdf6b3,#fafefbde,#fffffff2,#fafefbde,#f2fdf6b3,#ebfaf187,#e7f9ee73,#ebfaf187,#f2fdf6b3,#fafefbde,#fffffff2,#fafefbde,#f2fdf6b3,#ebfaf187,#e7f9ee73)}.timeline-time-container{display:inline-grid;grid-template-columns:1fr;align-items:center;justify-items:center}#timeline-time,.timeline-time-loading{grid-area:1 / 1;width:100%;font-variant-numeric:tabular-nums;text-align:center;line-height:1;white-space:nowrap}.timeline-time-container>[hidden]{display:block!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}@keyframes loading-shimmer{0%{background-position:200% center}to{background-position:0% center}}#timeline-play-btn svg{fill:currentColor}.map-floating-controls{position:absolute;left:14px;right:14px;bottom:14px;z-index:120;display:flex;flex-direction:column;align-items:flex-start;gap:5px;transition:bottom .16s ease;pointer-events:none}.wind-height-control,.forecast-overlay-control{pointer-events:auto}.wind-height-control{width:60px;display:flex;flex-direction:column;align-items:center;gap:5px}.wind-height-source{position:relative;display:grid;grid-template-columns:1fr 1fr;width:calc(100% + 12px);height:24px;box-sizing:border-box;margin:0 -6px;border-top:1px solid var(--map-ctrl-timeline-border);flex:0 0 24px}.wind-height-source:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translate(-50%);background:var(--map-ctrl-timeline-border);pointer-events:none;z-index:2}.wind-height-source[hidden]{display:none}.wind-height-source button{min-width:0;width:100%;height:100%;box-sizing:border-box;margin:0;padding:0;border:0;border-radius:0;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--map-ctrl-timeline-text);font-size:11px;font-weight:700;line-height:1;text-align:center;cursor:pointer;transition:background .12s ease,color .12s ease}.wind-height-source button[data-height-source=forecast]{border-bottom-left-radius:7px}.wind-height-source button[data-height-source=wafs]{font-size:9px;border-bottom-right-radius:7px}.wind-height-source button[aria-pressed=true]{background:#0e7490d9;color:#f0f9ff}@media(hover:hover){.wind-height-source button:not([aria-pressed=true]):hover{background:#ffffff14}.wind-height-options button:not([aria-pressed=true]):hover{border-color:var(--map-ctrl-btn-hover-border)}}.wind-height-options button:not([aria-pressed=true]):active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.wind-height-source button:focus-visible,.wind-height-options button:focus-visible{outline:1px solid var(--accent);outline-offset:-1px;z-index:1}.wind-height-options{display:grid;grid-template-columns:1fr 1fr;gap:3px;width:60px;flex:0 0 auto}.wind-height-options[hidden]{display:none}.wind-height-options button{min-width:0;width:100%;height:22px;padding:0;border:1px solid var(--map-ctrl-timeline-border);border-radius:4px;background:var(--map-ctrl-timeline-bg);color:var(--map-ctrl-timeline-text);font-size:10px;font-weight:700;cursor:pointer;transition:border-color .12s ease}.wind-height-options button[aria-pressed=true]{border-color:#4ade80f2;background:#166534db;color:#f0fff4}.wind-height-panel{width:60px;height:250px;box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:5px 5px 6px;border:1px solid var(--map-ctrl-timeline-border);border-radius:8px;background:var(--map-ctrl-timeline-bg);box-shadow:0 4px 20px #00000059;backdrop-filter:blur(12px);color:var(--map-ctrl-timeline-text);overflow:hidden;transition:height .16s ease}.wind-height-panel:not(.is-collapsed):has(.wind-height-source:not([hidden])){padding-bottom:0}.wind-height-panel.is-collapsed{height:38px;padding-bottom:6px}.wind-height-panel.is-collapsed .wind-height-body{display:none}.wind-height-header{display:flex;flex:0 0 25px;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:25px;width:100%;cursor:pointer;user-select:none}.wind-height-body{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;gap:5px;min-height:0;overflow:visible}.wind-height-value{width:100%;margin:0;font-size:11px;font-weight:700;line-height:1;text-align:center;white-space:nowrap;color:var(--map-ctrl-timeline-text)}.wind-height-toggle{position:relative;width:30px;height:10px;flex:0 0 10px;margin:0;padding:0;border:0;background:transparent;cursor:pointer}.wind-height-toggle span{position:absolute;left:50%;top:50%;width:0;height:0;transform:translate(-50%,-50%);border-left:10px solid transparent;border-right:10px solid transparent;border-top:7px solid rgba(226,232,240,.72)}.wind-height-toggle[aria-expanded=false] span{border-top:0;border-bottom:7px solid rgba(226,232,240,.72)}.forecast-overlay-control{height:38px;width:var(--expanded-width, 320px);max-width:100%;box-sizing:border-box;display:flex;align-items:center;gap:0;padding:0 8px 0 0;border:1px solid var(--map-ctrl-timeline-border);border-radius:8px;background:var(--map-ctrl-timeline-bg);box-shadow:0 4px 20px #00000059;backdrop-filter:blur(12px);color:var(--map-ctrl-timeline-text);overflow:hidden;white-space:nowrap;transition:width .16s ease;z-index:125}.forecast-overlay-control[hidden]{display:none!important}.forecast-overlay-control.is-collapsed{width:60px;padding:0}.forecast-overlay-header{display:flex;align-items:center;justify-content:flex-start;gap:3px;height:100%;width:60px;padding:0 6px 0 12px;box-sizing:border-box;cursor:pointer;user-select:none;flex-shrink:0}.forecast-overlay-toggle{position:relative;width:12px;height:12px;border:0;background:transparent;cursor:pointer;padding:0;flex-shrink:0;pointer-events:none}.forecast-overlay-toggle span{position:absolute;left:50%;top:50%;width:0;height:0;transform:translate(-50%,-50%)}.forecast-overlay-control.is-collapsed .forecast-overlay-toggle span{border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:5px solid var(--map-ctrl-timeline-text);border-right:0}.forecast-overlay-control:not(.is-collapsed) .forecast-overlay-toggle span{border-top:4px solid transparent;border-bottom:4px solid transparent;border-right:5px solid var(--map-ctrl-timeline-text);border-left:0}.forecast-overlay-title{display:inline-block;width:24px;text-align:center;font-size:11px;font-weight:700;line-height:1;color:var(--map-ctrl-timeline-text);white-space:nowrap}.forecast-overlay-body{display:flex;align-items:center;gap:6px;height:100%;flex-shrink:1;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none}.forecast-overlay-body::-webkit-scrollbar{display:none;width:0;height:0}.forecast-overlay-body>*{flex-shrink:0}.forecast-surface-segmented{display:flex;align-items:center;gap:2px;background:#0f172a73;border-radius:6px;padding:2px}.forecast-surface-segmented button{height:22px;padding:0 8px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--map-ctrl-timeline-text);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .12s ease}@media(hover:hover){.forecast-surface-segmented button:not(.active):not([aria-checked=true]):hover{background:#ffffff14}.forecast-isobars-toggle:not([aria-pressed=true]):hover{background:#ffffff14}}.forecast-surface-segmented button.active,.forecast-surface-segmented button[aria-checked=true]{border-color:#38bdf899;background:#0e7490d9;color:#f0f9ff;box-shadow:0 1px 4px #0000004d;font-weight:700}.forecast-overlay-divider{width:1px;height:16px;background:var(--map-ctrl-timeline-border);opacity:.7}.forecast-overlay-divider[hidden]{display:none!important}.forecast-isobars-toggle{display:flex;align-items:center;gap:4px;height:24px;padding:0 8px;border:1px solid var(--map-ctrl-timeline-border);border-radius:6px;background:transparent;color:var(--map-ctrl-timeline-text);font-size:11px;font-weight:600;cursor:pointer;transition:all .12s ease}.forecast-isobars-toggle[hidden]{display:none!important}.forecast-isobars-toggle[aria-pressed=true]{border-color:#4ade80e6;background:#166534d9;color:#f0fff4;box-shadow:0 1px 4px #0000004d;font-weight:700}.forecast-isobars-toggle svg{flex-shrink:0;opacity:.85}.forecast-isobars-toggle[aria-pressed=true] svg{opacity:1;stroke:#86efac}.wind-height-toggle:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.wind-height-scale{position:relative;width:48px;flex:1 1 auto;min-height:0;margin:0;--wind-height-track-x: 10px;overflow:hidden}#wind-height-slider{position:absolute;top:50%;left:var(--wind-height-track-x);z-index:2;-webkit-appearance:none;appearance:none;width:180px;height:6px;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;margin:0;border-radius:3px;outline:none;background:var(--map-ctrl-timeline-slider-track);cursor:pointer}#wind-height-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border:none;border-radius:50%;background:var(--accent);box-shadow:0 1px 3px #00000080;cursor:pointer}#wind-height-slider::-moz-range-thumb{width:16px;height:16px;border:none;border-radius:50%;background:var(--accent);box-shadow:0 1px 3px #00000080;cursor:pointer}.wind-height-ticks{position:absolute;inset:0;z-index:1;pointer-events:none}.wind-height-tick{position:absolute;left:0;right:0;height:2px}.wind-height-tick i{position:absolute;left:calc(var(--wind-height-track-x) - 7px);width:14px;height:2px;border-radius:1px;background:var(--map-ctrl-timeline-tick)}.wind-height-tick button{position:absolute;top:1px;left:calc(var(--wind-height-track-x) + 10px);z-index:3;transform:translateY(-50%);margin:0;padding:4px 2px;border:0;background:transparent;color:#e2e8f094;font-size:8px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;pointer-events:auto}.wind-height-tick button:focus-visible,.wind-height-tick.active button{color:#bbf7d0}@media(hover:hover){.wind-height-tick button:hover{color:#bbf7d0}}.wind-speed-legend,.forecast-axis{padding-right:18px}.wind-speed-gradient,.forecast-gradient{display:block;width:100%;height:6px;border-radius:2px;border:0}.wind-speed-gradient{background:linear-gradient(90deg,#305c9c,#2d9cdb,#22c59f 14%,#a3d64b,#facc15 34%,#f97316,#ef4444 62%,#d946ef 80%,#c084fc)}.wind-speed-ticks{position:relative;height:11px;margin-top:2px;color:#e2e8f09e;font-size:9px;font-variant-numeric:tabular-nums}.wind-speed-ticks span{position:absolute;top:0;left:var(--wind-speed-position);transform:translate(-50%);padding-top:4px;white-space:nowrap}.wind-speed-tick,.forecast-gradient-tick{position:absolute;top:-2px;left:50%;width:1px;height:4px;transform:translate(-.5px);background:#e2e8f08f;pointer-events:none}.wind-speed-tick{left:var(--wind-speed-position)}.forecast-gradient-tick{left:var(--label-position)}.wind-speed-tick-start,.forecast-gradient-tick-start{transform:none}.wind-speed-tick-end,.forecast-gradient-tick-end{transform:translate(-1px)}.wind-particle-canvas{position:absolute;inset:0;z-index:20;opacity:1;transition:opacity .12s linear;pointer-events:none;transform-origin:0 0}.wind-particle-canvas.is-paused{opacity:.28}.wind-readout-popup{pointer-events:none}.wind-readout-popup .maplibregl-popup-content{min-width:0;padding:0;background:transparent;box-shadow:none;border-radius:8px}.forecast-readout-table{border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden;border:1px solid var(--map-ctrl-timeline-border);background:var(--map-ctrl-timeline-bg);box-shadow:0 4px 20px #0006;backdrop-filter:blur(12px);color:var(--map-ctrl-timeline-text);font-size:11px;margin:0}.forecast-readout-cell{padding:6px 12px;text-align:center;vertical-align:middle;white-space:nowrap}.forecast-readout-table tr:not(:last-child) .forecast-readout-cell{border-bottom:1px solid var(--map-ctrl-timeline-border)}.forecast-readout-table tr .forecast-readout-cell:not(:last-child){border-right:1px solid var(--map-ctrl-timeline-border)}.forecast-readout-label-cell{color:#94a3b8;font-weight:600;background:#ffffff0a}.forecast-readout-value-cell{color:#f1f5f9;font-weight:700;font-variant-numeric:tabular-nums}.forecast-model-controls{display:grid;gap:2px;margin-bottom:4px}.segmented-control.forecast-model-switch{width:100%;grid-template-columns:repeat(4,1fr)}.segmented-control.forecast-model-switch button{padding:3px 1px;font-size:10px;letter-spacing:-.2px}[data-group-title=forecast]{white-space:nowrap}.forecast-extra-controls{display:none}.legend-item-row{display:flex;align-items:center;gap:4px;min-width:0}.legend-item-row>.legend-item{flex:1 1 auto;min-width:0}.forecast-product-legend{margin:-2px 8px 8px 24px}.wafs-product-legend{color:#e2e8f0b8}.wafs-legend-scale{min-width:0;padding-right:18px}.wafs-legend-title{margin-bottom:3px;color:#e2e8f0ad;font-size:9px;line-height:1.2;white-space:nowrap}.wafs-legend-swatches{position:relative;display:flex;width:100%;height:8px;overflow:hidden;box-shadow:inset 0 0 0 1px #0f172ab8;border-radius:2px}.wafs-legend-swatch{flex:1 1 0;min-width:0;background:var(--wafs-swatch)}.wafs-legend-separator,.wafs-legend-tick{position:absolute;left:var(--wafs-label-position);width:1px;transform:translate(-.5px);background:#0f172ab3;pointer-events:none}.wafs-legend-separator{top:0;bottom:0}.wafs-legend-tick{top:-2px;height:4px;background:#e2e8f08f}.wafs-legend-tick-start{transform:none}.wafs-legend-tick-end{transform:translate(-1px)}.wafs-legend-labels{position:relative;height:12px;margin-top:2px;color:#e2e8f09e;font-size:9px;font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap}.wafs-legend-label{position:absolute;left:var(--wafs-label-position);padding-top:4px;transform:translate(-50%)}.forecast-gradient-labels{position:relative;display:block;height:11px;margin-top:2px;color:#e2e8f09e;font-size:9px;font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap}.forecast-gradient-labels>span{position:absolute;top:0;left:var(--label-position, 0%);transform:translate(-50%);padding-top:4px}.forecast-gradient-labels.forecast-gradient-labels-scaled{display:block}.forecast-pressure-gradient-labels{padding-right:0;font-size:8px;letter-spacing:-.01em}.forecast-temperature-gradient{background:linear-gradient(90deg,#072691,#1646c8,#1e54d0 16.8%,#2862d4,#3c7dd6 31.6%,#4e9ee6,#68c0f0 44.2%,#94dcf8 49.5%,#e8f7fb 52.6%,#cef0ea,#baeed8 63.2%,#ace8be 68.4%,#a8e2a0 73.7%,#b0de96 77.9%,#e8e48a 80%,#fcc86e 83.2%,#fa9646 86.3%,#ee462d 89.5%,#d72319 93.7%,#9b0505)}.forecast-pressure-gradient{background:linear-gradient(90deg,#18367e,#14469d,#1089c8 31.6%,#08b5d0 37.9%,#19cfb1,#69e6a8 54.7%,#c2f3be 61.1%,#e2f9d7 63.2%,#fffff6 66.3%,#fff0bc 69.5%,#ffd57e 71.6%,#ff9938,#f5522b 84.2%,#d31f39 92.6%,#8e1231)}.forecast-rain-gradient{background:linear-gradient(90deg,#16a34a,#4ade80 14%,#facc15 30%,#f97316 52%,#dc2626,#7f1d1d)}.forecast-snow-gradient{background:linear-gradient(90deg,#7dd3fc,#38bdf8 14%,#0284c7 30%,#2563eb 52%,#4338ca,#312e81)}.forecast-precipitation-scales{display:grid;gap:5px}.forecast-precipitation-scale{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:6px}.forecast-precipitation-kind{padding-top:1px;font-size:10px;font-weight:800;line-height:6px}.forecast-rain-kind{color:#facc15}.forecast-snow-kind{color:#38bdf8}.offline-weather-panel{display:grid;gap:7px;padding:8px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:var(--map-ctrl-offline-bg)}.offline-weather-main{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer}.offline-weather-title{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px;flex:1 1 auto;min-width:0}.offline-weather-title>div{display:grid;gap:5px;min-width:0}.offline-weather-toggle{align-self:center}.offline-weather-main strong{color:var(--map-ctrl-text);font-size:13px;line-height:1.1}.offline-weather-main span,.offline-weather-panel p,.offline-weather-detail{margin:0;color:var(--map-ctrl-muted);font-size:11px;line-height:1.35}.offline-weather-download{flex:0 0 auto;min-width:62px;padding-inline:10px;border-color:var(--map-ctrl-btn-border);background:var(--map-ctrl-download-bg)}@media(hover:hover){.offline-weather-download:hover{background:var(--map-ctrl-download-hover)}.offline-weather-layer-update:hover{color:#fff}}.offline-weather-body{display:grid;gap:7px}.offline-weather-progress{position:relative;height:4px;overflow:hidden;border-radius:999px;background:#94a3b838}.offline-weather-layer-progress{position:relative;grid-column:1 / -1;height:3px;overflow:hidden;border-radius:999px;background:#94a3b82e}.offline-weather-progress-bar,.offline-weather-layer-progress>div{width:0%;height:100%;border-radius:inherit;background:#61d8ff;transition:width .12s linear}.offline-weather-detail{display:grid;gap:3px;max-height:96px;overflow:auto;padding-right:2px}.offline-weather-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:5px;min-width:0}.offline-weather-row span:nth-child(2){color:#c6d8ee;font-variant-numeric:tabular-nums;white-space:nowrap}.offline-weather-layer-update{display:grid;place-items:center;width:24px;min-width:24px;height:22px;padding:0;border:0;background:transparent;color:#c6d8ee;cursor:pointer;transition:opacity .2s ease,transform .15s ease}.offline-weather-layer-update:active{transform:scale(.92)}.offline-weather-layer-update svg{width:14px;height:14px}.offline-weather-layer-update[aria-busy=true],.offline-weather-layer-update[aria-busy=true]:disabled{cursor:wait;opacity:1}.offline-weather-layer-update[aria-busy=true] svg{animation:refresh-spin .8s linear infinite;transform-origin:center center}.offline-weather-layer-update:disabled{cursor:default;opacity:.45}.legend-subgroup{color:var(--map-ctrl-label);font-size:11px;font-weight:800;line-height:1;text-transform:uppercase}.select{appearance:none;width:100%;height:42px;border:1px solid var(--map-ctrl-btn-border);border-radius:8px;background:var(--map-ctrl-select-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8bad3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='7 9.5 12 14.5 17 9.5'/%3E%3C/svg%3E") no-repeat right 9px center;background-size:16px;color:var(--map-ctrl-select-color);padding:7px 30px 7px 16px;font-size:13px;font-weight:700;cursor:pointer}@media(hover:hover){.select:hover{border-color:var(--map-ctrl-btn-hover-border)}}.select:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border)}.select:focus{outline:none}.legend-section{display:grid;gap:7px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:var(--map-ctrl-panel-item-bg);padding:8px}.legend-header{display:flex;align-items:center;color:var(--map-ctrl-legend-color);font-size:12px;font-weight:760;min-height:24px;cursor:pointer;user-select:none}.legend-header.space-between{justify-content:space-between}.location-points-section{position:relative}.header-left{display:flex;align-items:center;gap:4px}.collapse-btn,.location-point-collapse,.location-point-remove{background:transparent;border:none;color:var(--map-ctrl-collapse-color);cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center;transition:color .2s}.collapse-btn svg{transition:transform .2s ease}@media(hover:hover){.collapse-btn:hover,.location-point-remove:hover{color:#fff}.legend-actions .icon-button:hover{background:transparent;border:none;color:#fff}}.collapse-btn[aria-expanded=false] svg,.offline-weather-panel.collapsed .offline-weather-toggle svg{transform:rotate(-90deg)}.legend-header input{accent-color:var(--accent);cursor:pointer}.legend-actions{display:flex;align-items:center;gap:8px}.legend-actions .icon-button{width:20px;height:20px;padding:0;border:none;border-radius:0;background:transparent;backdrop-filter:none;box-shadow:none;color:var(--map-ctrl-label);display:flex;align-items:center;justify-content:center;transition:all .2s ease;cursor:pointer}.legend-actions .icon-button[hidden]{display:none!important}.legend-actions .icon-button:active{transform:scale(.95)}.legend-actions .icon-button[aria-busy=true] svg,.icon-button[aria-busy=true] svg{animation:refresh-spin .8s linear infinite;transform-origin:center center}.legend-actions .icon-button:disabled,.icon-button:disabled{cursor:wait;opacity:.62}@keyframes refresh-spin{to{transform:rotate(360deg)}}.category-status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0;vertical-align:middle;transition:opacity .2s ease;cursor:pointer}.timestamp[data-has-detail=true]{cursor:pointer}.category-status-dot[hidden]{display:none}.category-status-dot.status-amber{background-color:#f59e0b;box-shadow:0 0 5px #f59e0ba6}.category-status-dot.status-red{background-color:#ef4444;box-shadow:0 0 5px #ef4444a6}.panel-toggle.has-status-amber:after,.panel-toggle.has-status-red:after{content:"";position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;border:1.5px solid rgba(11,21,38,.85);pointer-events:none;z-index:2}.panel-toggle.has-status-amber:after{background-color:#f59e0b;box-shadow:0 0 6px #f59e0bb3}.panel-toggle.has-status-red:after{background-color:#ef4444;box-shadow:0 0 6px #ef4444b3}#location-points-help-btn svg{width:18px;height:18px}.location-points-help-popover{position:absolute;top:32px;right:8px;z-index:15;display:grid;gap:5px;width:min(236px,calc(100% - 16px));padding:9px 10px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:#070d16f0;color:var(--map-ctrl-text);font-size:11px;line-height:1.35;backdrop-filter:blur(14px);box-shadow:0 12px 28px #00000061}.location-points-help-popover strong{font-size:12px}.location-points-help-popover span{color:var(--map-ctrl-muted)}.timestamp{font-size:10px;color:var(--map-ctrl-label);font-variant-numeric:tabular-nums;text-align:right;line-height:1.2}.timestamp[hidden]{display:none!important}.day-diff-pre{font-size:8.5px;font-weight:700;color:#ef4444;margin-right:2px;vertical-align:.5px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}.legend{display:grid;gap:6px}.legend-item{appearance:none;display:grid;grid-template-columns:12px 1fr;align-items:center;gap:7px;min-height:24px;padding:3px 5px;border:0;background:transparent;color:var(--map-ctrl-legend-item-color);text-align:left;font-size:12px;font-weight:740;cursor:pointer}.legend-item[aria-pressed=false]{color:var(--map-ctrl-legend-item-off)}.legend-item[aria-disabled=true]{cursor:not-allowed;opacity:.55}.legend-item[data-weather-layer],.legend-item[data-sigwx-type]{grid-template-columns:12px minmax(0,1fr) auto}.weather-layer-status{justify-self:end;color:#dbeafe9e;font-size:10px;font-weight:650;white-space:nowrap}.legend-subgroup{margin:5px 0 1px;padding:3px 5px 2px;font-size:10px}.segmented-control{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px;border:1px solid var(--map-ctrl-panel-border);border-radius:6px;background:var(--map-ctrl-seg-bg)}.segmented-control-two{grid-template-columns:repeat(2,1fr)}.segmented-control-four{grid-template-columns:repeat(4,1fr)}.segmented-control button:disabled{opacity:.35;cursor:not-allowed;pointer-events:auto}.legend-item-label{margin:6px 0 2px 2px;font-size:11px;font-weight:600;color:var(--map-ctrl-muted, #94a3b8)}.segmented-control button{min-width:0;min-height:24px;padding:3px 4px;border:0;border-radius:4px;background:transparent;color:var(--map-ctrl-seg-btn-color);font-size:11px;font-weight:800;cursor:pointer}.segmented-control button[aria-pressed=true]{background:var(--map-ctrl-seg-active-bg);color:var(--map-ctrl-seg-active-color)}.location-points-panel{display:grid;gap:8px;margin-top:4px}.location-point-form{display:grid;gap:7px}.location-point-input{width:100%;min-width:0;height:26px;border:1px solid var(--map-ctrl-btn-border);border-radius:6px;background:var(--map-ctrl-select-bg);color:var(--map-ctrl-select-color);padding:3px 6px;font-size:12px;font-weight:720;outline:none;text-transform:uppercase}.location-point-input[data-field=position]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace}.location-point-position-field{position:relative}.location-point-position-field .location-point-input{padding-right:76px}.location-point-position-actions{position:absolute;top:3px;right:4px;display:flex;gap:3px}.location-point-position-actions button{display:flex;align-items:center;justify-content:center;width:32px;height:20px;padding:0;border:0;border-radius:4px;background:#abc5e71f;color:var(--map-ctrl-text);font-size:9px;font-weight:850;cursor:pointer}@media(hover:hover){.location-point-position-actions button:hover{background:#71ddff2e;color:#fff}}.location-point-position-actions button:disabled{cursor:default;opacity:.55}.location-point-input:focus{border-color:var(--map-ctrl-btn-hover-border)}.location-radial-grid{display:grid;grid-template-columns:1.15fr .7fr 1.15fr;gap:5px}.location-radial-grid .location-point-input{text-align:center}.location-point-list{display:grid;gap:5px}.location-point-item{border:1px solid rgba(171,197,231,.12);border-radius:6px;background:#abc5e705;overflow:hidden}.location-point-row{display:grid;grid-template-columns:20px 1fr 48px 20px;align-items:center;gap:4px;min-width:0;padding:5px 6px;color:var(--map-ctrl-legend-item-color);font-size:11px;font-weight:760}.location-point-collapse,.location-point-remove{width:20px;height:20px;color:var(--map-ctrl-label)}.location-point-collapse svg{width:12px;height:12px}.location-point-name{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;min-width:0;cursor:pointer}.location-point-bearing-mode{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;width:48px;height:22px;padding:1px;border:1px solid var(--map-ctrl-btn-border);border-radius:999px;background:var(--map-ctrl-seg-bg);color:var(--map-ctrl-seg-btn-color);cursor:pointer;font-size:11px;font-weight:850;line-height:1}.location-point-bearing-mode:before{content:"";position:absolute;top:2px;left:2px;width:20px;height:16px;border-radius:999px;background:var(--map-ctrl-seg-active-bg);transition:transform .16s ease}.location-point-bearing-mode[aria-pressed=true]:before{transform:translate(22px)}.location-point-bearing-mode span{position:relative;z-index:1;text-align:center}.location-point-bearing-mode[aria-pressed=false] span:first-child,.location-point-bearing-mode[aria-pressed=true] span:last-child{color:var(--map-ctrl-seg-active-color)}.location-point-remove svg{width:10px;height:10px;display:block}.location-point-edit-panel{padding:8px;border-top:1px dashed rgba(171,197,231,.12);background:#0000001f}.location-point-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:4px}.location-point-actions .control-button{height:26px;min-width:56px;padding:0 12px;font-size:11px;border-radius:6px}.location-point-actions .control-button[type=submit].is-modified{background:var(--map-ctrl-download-bg);border-color:#61d8ff6b;color:#fff;transition:background-color .15s ease,border-color .15s ease}@media(hover:hover){.location-point-actions .control-button[type=submit].is-modified:hover{background:var(--map-ctrl-download-hover);border-color:#61d8ffa6}}.add-location-point-btn{display:flex;align-items:center;justify-content:center;width:100%;height:30px;border:1px dashed var(--map-ctrl-btn-border);border-radius:6px;background:var(--map-ctrl-select-bg);color:var(--map-ctrl-label);cursor:pointer;font-size:16px;line-height:1;transition:all .2s ease;padding:0}@media(hover:hover){.add-location-point-btn:hover{border-color:var(--map-ctrl-btn-hover-border);color:#fff}}.add-location-point-btn:active{transition:none!important;border-color:var(--map-ctrl-btn-hover-border);color:#fff}.location-point-picker{position:absolute;inset:0;z-index:125;pointer-events:none}.location-point-picker-crosshair{position:absolute;top:50%;left:50%;width:36px;height:36px;transform:translate(-50%,-50%)}.location-point-picker-crosshair svg{display:block;width:36px;height:36px}.location-point-picker-crosshair path{fill:#fffffff5;stroke:#070d16b8;stroke-width:1.2;stroke-linejoin:round}.location-point-picker-actions{position:absolute;top:calc(50% + 28px);left:50%;display:flex;gap:6px;padding:5px;border:1px solid var(--map-ctrl-panel-border);border-radius:8px;background:var(--map-ctrl-panel-bg);backdrop-filter:blur(14px);transform:translate(-50%);pointer-events:auto}.location-point-picker-actions .control-button{height:26px;min-width:48px;padding:0 10px;font-size:11px}.swatch{width:10px;height:10px;border-radius:999px;background:var(--swatch);box-shadow:0 0 0 1px #ffffff38;transition:all .2s ease}.legend-item[aria-pressed=false] .swatch{background:transparent;box-shadow:inset 0 0 0 2px var(--swatch);opacity:.6}.legend-empty{padding:8px 10px;color:var(--map-ctrl-muted);font-size:12px;font-weight:700}.typhoon-legend-item>span:last-child{display:grid;gap:2px;min-width:0}.typhoon-legend-item strong{font-size:12px}.typhoon-legend-item small{color:var(--map-ctrl-muted);font-size:11px}.map-actions{position:absolute;right:14px;bottom:14px;z-index:110;display:flex;gap:8px}.icon-button{position:relative;display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;padding:0;backdrop-filter:blur(14px)}.icon-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.location-button.is-locating{color:#38bdf8}.icon-button .icon-exit,.icon-button.is-fullscreen .icon-enter{display:none}.icon-button.is-fullscreen .icon-exit{display:block}.fps-debug{position:absolute;left:14px;top:58px;z-index:2;padding:7px 9px;border:1px solid rgba(171,197,231,.2);border-radius:8px;background:#050a12b8;color:#dcecff;font-size:11px;font-weight:800;backdrop-filter:blur(14px)}.maplibregl-popup{z-index:60;overscroll-behavior:contain}.maplibregl-popup-content{min-width:220px;max-width:min(360px,calc(100vw - 24px));box-sizing:border-box;max-height:max(160px,calc(var(--map-frame-height, 100dvh) - 32px));overflow:hidden;border:1px solid rgba(177,203,232,.24);border-radius:8px;background:#0b1421;color:#edf4ff;box-shadow:0 14px 36px #00000061;overscroll-behavior:contain}.maplibregl-popup-content strong{display:block;margin-bottom:5px;font-size:13px}.maplibregl-popup-content span{display:block;color:#9fb2ca;font-size:12px;line-height:1.45}.wxr-alerts-popup .maplibregl-popup-content{padding:0;max-width:min(380px,calc(100vw - 24px))}.wxr-alerts-popup-container{display:flex;flex-direction:column;max-height:min(440px,calc(var(--map-frame-height, 100dvh) - 72px));box-sizing:border-box;width:100%}.wxr-alerts-popup-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px 7px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0;background:#0f172a66}.wxr-alerts-popup-title{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#f8fafc}.wxr-alerts-popup-title span{display:inline!important;color:#f8fafc!important;font-size:12.5px!important;font-weight:700!important}.wxr-alerts-icon{width:15px;height:15px;color:#f59e0b;flex-shrink:0}.wxr-alerts-popup-close{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease;flex-shrink:0}.wxr-alerts-popup-close svg{width:14px;height:14px}.wxr-alerts-popup-close:hover{background:#ffffff1f;color:#f8fafc}.wxr-alerts-popup-scroll{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:8px 10px 10px;display:flex;flex-direction:column;gap:8px}.wxr-alerts-popup-scroll::-webkit-scrollbar{width:4px}.wxr-alerts-popup-scroll::-webkit-scrollbar-track{background:transparent}.wxr-alerts-popup-scroll::-webkit-scrollbar-thumb{background:#94a3b847;border-radius:2px}.wxr-alerts-popup-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b873}.wxr-alert-card{display:flex;flex-direction:column;gap:4px;padding:8px 10px;background:#0f172aa6;border:1px solid rgba(255,255,255,.1);border-radius:6px;box-sizing:border-box}.wxr-alert-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px}.wxr-alert-badge{display:inline-block!important;padding:1px 6px;border-radius:3px;font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.03em;line-height:1.4}.wxr-alert-source{display:inline-block!important;color:#64748b!important;font-size:10px!important;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.wxr-alert-card-title{font-size:12.5px;font-weight:700;color:#f1f5f9;line-height:1.4}.wxr-alert-card-meta{font-size:11px;color:#7dd3fc;line-height:1.4}.wxr-alert-card-desc{font-size:11.5px;color:#cbd5e1;line-height:1.45;white-space:pre-wrap;word-break:break-word}.airport-popup-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;touch-action:none;user-select:none;-webkit-user-select:none}.airport-popup-title{min-width:0;flex:1}.airport-popup-close{display:none}.airport-weather-section{margin-top:8px;padding-top:8px;border-top:1px solid rgba(177,203,232,.18)}.airport-weather-time-header{display:flex!important;align-items:center;justify-content:space-between;margin-bottom:6px;touch-action:none;user-select:none;-webkit-user-select:none}.airport-weather-time-header>span{display:inline!important;color:#9fb2ca;font-size:11px;font-weight:600}.airport-weather-time-badges{display:inline-flex;align-items:center;gap:5px;margin-left:auto}.airport-weather-time-header .airport-flight-category{display:inline-block!important;box-sizing:border-box;padding:1px 5px;border-radius:4px;font-size:10px;font-weight:700;line-height:1.4;letter-spacing:.3px;white-space:nowrap}.airport-flight-category.is-vfr{background:#22c55e2e;color:#4ade80;border:1px solid rgba(74,222,128,.38)}.airport-flight-category.is-mvfr{background:#3b82f62e;color:#60a5fa;border:1px solid rgba(96,165,250,.38)}.airport-flight-category.is-ifr{background:#f59e0b2e;color:#fbbf24;border:1px solid rgba(251,191,36,.38)}.airport-flight-category.is-lifr{background:#ef444438;color:#f87171;border:1px solid rgba(248,113,113,.42)}.airport-weather-time-header .airport-report-time-ago{display:inline-block!important;box-sizing:border-box;margin-left:auto;padding:1px 5px;border-radius:4px;border:1px solid rgba(148,163,184,.28);background:#94a3b82e;color:#cbd5e1;font-size:10px;font-weight:500;line-height:1.4;white-space:nowrap}.airport-weather-report{max-height:max(120px,min(560px,calc(100dvh - 190px),calc(var(--map-frame-height, 100dvh) - 120px)));margin:0;padding:0;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;color:#dbeafe;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.airport-weather-raw{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.45}.airport-weather-report span,.airport-weather-raw span,.airport-weather-decoded span{display:inline!important}.airport-weather-line-divider{display:block!important;color:#b1cbe866;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important;font-size:11px!important;line-height:1.35!important;letter-spacing:0;white-space:pre!important;overflow:hidden;user-select:none}.airport-weather-divider{border:0;height:1px;background:#b1cbe838;margin:8px 0}.airport-weather-decoded{color:#dbeafe;font-size:11px;line-height:1.55;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans SC,PingFang SC,sans-serif;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.pair{display:inline!important;padding:0 1px;margin:0}.pair.is-report-type,.airport-weather-type-bold,.airport-weather-raw .is-report-type,.airport-weather-decoded .is-report-type{font-weight:700!important}.pair.color-green{color:#4ade80;font-weight:650}.pair.color-blue{color:#60a5fa;font-weight:650}.pair.color-amber{color:#fbbf24;font-weight:650}.pair.color-red{color:#dc2626;font-weight:650}.pair.is-highlight{background:#fde047eb;color:#0b1421}.pair.is-highlight.color-red{color:#dc2626;font-weight:750}.pair.is-highlight.color-amber{color:#c2410c;font-weight:750}.pair.is-highlight.color-blue{color:#1d4ed8;font-weight:750}.pair.is-highlight.color-green{color:#15803d;font-weight:750}.pair.is-incomplete{background:#f59e0b59}.airport-weather-empty,.airport-cloud-hint,.typhoon-popup-note{margin-top:8px;padding-top:8px;border-top:1px solid rgba(177,203,232,.18)}.airport-cloud-hint{display:block;color:#a7f3d0;white-space:nowrap}.maplibregl-popup-content .airport-cloud-hint strong{display:inline;font-size:inherit;margin-bottom:0}.typhoon-popup-note{overflow:auto;overscroll-behavior:contain;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;color:#dbeafe;font:11px/1.4 ui-sans-serif,system-ui,sans-serif;white-space:pre-wrap}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:#0b1421}.maplibregl-popup-anchor-top .maplibregl-popup-tip,.maplibregl-popup-anchor-top-left .maplibregl-popup-tip,.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-bottom-color:#0b1421}.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:#0b1421}.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:#0b1421}.maplibregl-popup-tip{filter:drop-shadow(0 4px 8px rgba(0,0,0,.22))}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right{z-index:1}.load-error{display:grid;place-items:center;min-height:100%;padding:28px;color:#ffd4d4;background:#170b0d;font-weight:760}.webgl-lost-overlay{position:fixed;inset:0;z-index:2147483646;display:grid;place-items:center;background:#080d168c;backdrop-filter:blur(3px);pointer-events:auto}.webgl-lost-box{max-width:min(420px,calc(100vw - 40px));padding:22px 24px;border-radius:12px;background:#141924f5;color:#f8fafc;box-shadow:0 18px 48px #00000080;font-size:14px;line-height:1.5;text-align:center}.webgl-lost-box>div:first-child{font-weight:760;font-size:16px;margin-bottom:10px}.webgl-lost-box>div:nth-child(2){color:#cbd5e1;margin-bottom:16px}.webgl-lost-reload{padding:9px 18px;border:none;border-radius:8px;background:#1d4ed8;color:#fff;font-weight:650;cursor:pointer}.webgl-lost-reload:active{background:#1e40af}.toast-container{position:fixed;top:14px;left:50%;z-index:2147483647;display:grid;gap:8px;justify-items:center;pointer-events:none;transform:translate(-50%)}.toast{min-width:180px;max-width:min(340px,calc(100vw - 36px));padding:10px 12px;border:none;border-radius:8px;background:#141924f0;color:#f8fafc;box-shadow:0 14px 36px #00000047;font-size:13px;line-height:1.35;text-align:center;animation:toast-enter .18s ease-out both;backdrop-filter:blur(10px)}.toast-exit{animation:toast-exit .2s ease-in both}@keyframes toast-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@container map-frame (max-width: 1060px){.timeline-active .control-dock{max-height:calc(100% - 58px)}}@container map-frame (max-width: 760px){.timeline-active .control-dock{max-height:calc(100% - 55px)}}@media(max-width:760px){.hud{inset:10px}.utc-clock-capsule{top:15px;height:28px;font-size:12px;padding:0 10px}.airport-search-results{max-height:calc(var(--map-frame-height, 100dvh) - 57px)}.control-panel{width:min(250px,calc(max(360px,100vw) - 76px));max-height:calc(var(--map-frame-height, 100dvh) - 20px);padding:8px;gap:6px}.flight-plan-panel{right:0;width:calc(max(360px,100vw) - 20px);max-width:none;height:calc(var(--map-frame-height, 100dvh) - 20px)}.flight-plan-help{grid-column:1 / -1;margin-top:6px}.flight-plan-actions{grid-row:1}.flight-plan-body{grid-template-columns:1fr}.flight-plan-list{max-height:132px;border-right:0;border-bottom:1px solid var(--map-ctrl-panel-border)}.flight-plan-departure{min-width:0;gap:6px 10px}.flight-plan-departure-eta{flex-basis:100%;margin-left:0;margin-top:2px}.airport-search.open{width:min(250px,calc(100% - 58px))}.map-actions{right:10px;bottom:10px}.timeline-panel{bottom:10px;left:50%;right:auto;transform:translate(-50%);width:min(470px,calc(100% - 20px));gap:6px;padding:6px 10px 6px 6px}.map-floating-controls{left:10px;right:10px;bottom:10px}.timeline-select{width:clamp(78px,24vw,100px);flex-basis:clamp(78px,24vw,102px);min-width:0;font-size:11px}.timeline-slider-wrapper{min-width:64px}.timeline-info{padding:0 4px;font-size:12px}.fps-debug{left:10px;top:56px}}@media(max-width:610px){.map-floating-controls{bottom:67px}}@media(max-width:560px){.maplibregl-popup.airport-weather-popup{position:fixed!important;inset:50% 10px auto!important;transform:translateY(-50%)!important;width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;margin:0!important;z-index:150!important;pointer-events:auto!important}.maplibregl-popup.airport-weather-popup .maplibregl-popup-tip{display:none!important}.maplibregl-popup.airport-weather-popup .maplibregl-popup-content{width:100%!important;max-width:100%!important;max-height:calc(var(--map-frame-height, 100dvh) - 20px)!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;padding:12px 14px 14px!important;border:1px solid var(--map-ctrl-panel-border, rgba(177, 203, 232, .24))!important;border-radius:8px!important;background:var(--map-ctrl-panel-bg, rgba(11, 20, 33, .94))!important;box-shadow:0 18px 50px #00000073!important;backdrop-filter:blur(14px)!important;-webkit-backdrop-filter:blur(14px)!important;touch-action:pan-y}.maplibregl-popup.airport-weather-popup .airport-popup-close{display:inline-flex!important;align-items:center;justify-content:center;flex-shrink:0;width:26px;height:26px;margin:-3px -3px 0 0;border-radius:6px;color:#9fb2ca;background:transparent;border:none;cursor:pointer;padding:3px}.maplibregl-popup.airport-weather-popup .airport-popup-close:hover,.maplibregl-popup.airport-weather-popup .airport-popup-close:active{color:#f8fafc;background:#94a3b829}.maplibregl-popup.airport-weather-popup .airport-popup-close svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;stroke-linecap:round;fill:none}.maplibregl-popup.airport-weather-popup .airport-weather-section{display:flex!important;flex-direction:column!important;min-height:0!important;flex:1 1 auto!important;margin-top:8px;padding-top:8px;border-top:1px solid rgba(177,203,232,.18)}.maplibregl-popup.airport-weather-popup .airport-weather-report{max-height:calc(var(--map-frame-height, 100dvh) - 130px)!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;touch-action:pan-y}}@media(max-height:500px){.flight-hud{top:50px;left:6px;transform:none;display:flex;flex-direction:column;align-items:stretch;width:60px;border-radius:8px;padding:3px 0;gap:1px}.flight-hud-item{width:100%;min-width:0;flex:none;box-sizing:border-box;padding:2px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.flight-hud-label{width:100%;display:flex;align-items:baseline;justify-content:center;font-size:9px;letter-spacing:normal;gap:2px;line-height:1;color:#94a3b8}.flight-hud-value{width:100%;font-size:14.5px;text-align:center;line-height:1.1;letter-spacing:normal}.flight-hud-divider{width:44px;height:1px;margin:1px auto;background:#abc5e729;flex-shrink:0}.utc-clock-capsule{top:11px!important;left:50%!important;transform:translate(-50%)!important;height:28px!important}.hud{inset:6px!important}.map-floating-controls{left:6px!important;bottom:6px!important}.timeline-panel{bottom:6px!important}.control-dock{gap:6px!important}}
