:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--panel:#11212ac7;--panel-strong:#0d1c25e6;--panel-soft:#182f3bb8;--line:#ace2ef3d;--line-strong:#aaeeff6b;--text:#f4fbfc;--muted:#e6f8fab8;--subtle:#e2f5f885;--accent:#18a8df;--accent-strong:#27d1ff;--accent-soft:#18a8df3d;--ok:#5fe6a2;--warn:#ffd15d;--danger:#ff665f;--shadow:0 18px 46px #00000057;--radius:8px;color:var(--text);font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;background:#071217;font-family:Inter,Microsoft YaHei,PingFang SC,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;min-height:100%;margin:0}body{background:#071217;overflow:hidden}button,select,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,select:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #27d1ff47}h1,h2,p{margin:0}.wind-workbench{isolation:isolate;background:#071217;width:100%;min-width:320px;height:100dvh;position:relative;overflow:hidden}.scene{z-index:0;background:#071217;position:absolute;inset:0}.scene canvas{width:100%;height:100%;display:block}.scene-vignette{z-index:1;pointer-events:none;background:linear-gradient(90deg,#050d1175,#0000 24% 72%,#050d115c),linear-gradient(#050d1180,#0000 20% 74%,#050d1194);position:absolute;inset:0}.frame-error-notice{z-index:9;max-width:min(440px,100vw - 32px);min-height:36px;color:var(--text);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0f1f27f0;border:1px solid #ffd15d75;border-radius:6px;align-items:center;gap:10px;padding:6px 7px 6px 12px;font-size:12px;font-weight:720;display:flex;position:absolute;bottom:98px;left:50%;transform:translate(-50%)}.frame-error-notice>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.frame-error-notice button{height:26px;color:var(--accent-strong);background:#0d313ddb;border:1px solid #74e6ff57;border-radius:5px;flex:none;align-items:center;gap:5px;padding:0 8px;display:inline-flex}.label-renderer{z-index:2;overflow:hidden}.topbar,.operation-panel,.variable-rail,.layer-panel,.timeline-bar,.compass-control{z-index:8;position:absolute}.topbar{pointer-events:none;justify-content:space-between;align-items:flex-start;gap:16px;display:flex;top:16px;left:18px;right:18px}.brand-block,.top-status,.operation-panel,.variable-rail,.layer-panel,.timeline-bar,.compass-control{pointer-events:auto}.brand-block{border:1px solid var(--line);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(90deg,#0c1d26d1,#0c1d2680);align-items:center;gap:10px;padding:10px 12px;display:flex}.brand-mark{border-radius:var(--radius);color:#06141a;background:linear-gradient(135deg,#b9fbff,#22bce9 58%,#44e4a3);border:1px solid #74e6ff5c;flex:none;place-items:center;width:36px;height:36px;display:grid}.brand-block h1{color:var(--text);letter-spacing:0;font-size:20px;font-weight:780;line-height:1.12}.brand-block p{max-width:440px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:12px;line-height:1.35;overflow:hidden}.top-status{flex-wrap:wrap;justify-content:flex-end;gap:8px;min-width:0;display:flex}.session-menu{pointer-events:auto;position:relative}.session-trigger{border:1px solid var(--line);border-radius:var(--radius);min-height:42px;color:var(--text);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0c1d26d6;grid-template-columns:auto minmax(0,116px) auto;align-items:center;gap:7px;padding:0 11px;display:grid;box-shadow:0 12px 30px #00000040}.session-trigger>span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:780;overflow:hidden}.session-trigger>svg:first-child{color:var(--accent-strong)}.session-trigger:hover,.session-trigger[aria-expanded=true]{background:#0d3040eb;border-color:#4be0ff94}.session-popover{border:1px solid var(--line-strong);border-radius:var(--radius);width:226px;color:var(--text);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#091820f7;gap:8px;padding:10px;display:grid;position:absolute;top:calc(100% + 7px);right:118px}.session-identity{grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;padding:2px;display:grid}.session-avatar{width:34px;height:34px;color:var(--accent-strong);background:#16596f6b;border:1px solid #4be0ff5c;border-radius:6px;place-items:center;display:grid}.session-identity>span:last-child{gap:2px;min-width:0;display:grid}.session-identity strong,.session-identity small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-identity strong{font-size:13px}.session-identity small{color:var(--muted);font-size:11px}.session-role{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:7px;padding:7px 8px;font-size:11px;font-weight:720;display:flex}.session-role svg{color:var(--ok)}.session-logout{color:#ffc4c1;background:#62232261;border:1px solid #ff665f4d;border-radius:6px;justify-content:center;align-items:center;gap:7px;min-height:34px;font-size:12px;font-weight:760;display:flex}.session-logout:hover{background:#7e2a288a;border-color:#ff665f94}.status-chip,.module-pill{border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0c1d26c2;align-items:center;min-height:42px;display:inline-grid;box-shadow:0 12px 30px #00000040}.status-chip{color:var(--text);grid-template-columns:auto auto;gap:3px 8px;padding:7px 11px;font-size:12px}.status-chip svg{color:var(--accent-strong);grid-row:span 2}.status-chip .chip-label{color:var(--subtle);font-size:11px;font-weight:700;line-height:1}.status-chip strong{color:var(--text);white-space:nowrap;font-size:13px;font-weight:780;line-height:1.1}.status-chip.strong,.status-chip.accent{background:#0d3040c7;border-color:#4fd5ff57}.module-pill{color:#0b2028;background:#f8fcfbeb;grid-template-columns:auto auto;justify-content:center;gap:8px;min-width:104px;padding:0 14px;font-size:13px;font-weight:780}.module-pill svg{color:#146780}.variable-rail{gap:6px;width:106px;display:grid;top:132px;right:18px}.variable-button,.switch-button,.basemap-switch button,.camera-presets button,.transport button,.route-detail-button{border:1px solid var(--line);color:var(--text);background:var(--panel-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:6px;box-shadow:0 10px 26px #00000038}.variable-button{color:#f5fcfdeb;text-align:left;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:7px;min-height:36px;padding:0 10px;font-size:13px;font-weight:760;display:grid}.variable-button span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.variable-button svg{color:#d9f7fcd1}.variable-button.active{color:#fff;background:linear-gradient(#24acdaf2,#1270a0eb);border-color:#4be0ffb8}.variable-button:disabled{opacity:.48}.operation-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:326px;max-height:calc(100dvh - 194px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);scrollbar-width:thin;scrollbar-color:#4be0ff8c #09171f80;align-content:start;gap:10px;padding:10px;display:grid;top:92px;left:18px;overflow:auto}.operation-panel.collapsed{width:326px;max-height:none;bottom:auto;right:auto;overflow:visible}.operation-panel-header,.operation-heading,.operation-header-actions,.operation-alert-heading,.operation-section-title{align-items:center;display:flex}.operation-panel-header{justify-content:space-between;gap:8px;min-height:38px}.operation-header-actions{gap:6px}.operation-header-route-button{color:#fff;background:#12745ab8;border:1px solid #5fe6a28f;border-radius:6px;flex:none;justify-content:center;align-items:center;gap:5px;min-width:78px;height:28px;font-size:11px;font-weight:820;display:inline-flex}.operation-header-route-button:hover{background:#178e6ad6;border-color:#71f5b8bd}.operation-heading{min-width:0;color:var(--accent-strong);gap:8px}.operation-heading>span{gap:2px;min-width:0;display:grid}.operation-heading strong,.operation-heading small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.operation-heading strong{color:var(--text);font-size:13px;font-weight:820}.operation-heading small{color:var(--muted);font-size:10px;font-weight:720}.operation-header-actions{flex:none;gap:6px}.operation-status{border:1px solid var(--line);min-width:54px;height:26px;color:var(--text);white-space:nowrap;background:#182f3bc2;border-radius:6px;place-items:center;padding:0 8px;font-size:11px;font-weight:820;display:inline-grid}.operation-status.ok{color:var(--ok);background:#195e447a;border-color:#5fe6a27a}.operation-status.warning{color:var(--warn);background:#68531c75;border-color:#ffd15d80}.operation-status.danger{color:var(--danger);background:#702a287a;border-color:#ff665f8f}.operation-panel-body{gap:10px;display:grid}.operation-alert{border:1px solid var(--line);border-left:3px solid var(--warn);background:#09171fa8;border-radius:6px;gap:8px;padding:10px;display:grid}.operation-alert.ok{border-left-color:var(--ok)}.operation-alert.danger{border-left-color:var(--danger)}.operation-alert-heading{justify-content:space-between;gap:8px}.operation-alert-heading span{color:var(--muted);align-items:center;gap:6px;font-size:11px;font-weight:780;display:inline-flex}.operation-alert-heading strong{color:var(--warn);font-size:15px;font-weight:860}.operation-alert.ok .operation-alert-heading strong{color:var(--ok)}.operation-alert.danger .operation-alert-heading strong{color:var(--danger)}.operation-alert p{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:760;line-height:1.4;overflow:hidden}.operation-alert small{color:var(--subtle);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:700;overflow:hidden}.operation-risk-track{background:#aed3db33;border-radius:5px;height:5px;overflow:hidden}.operation-risk-track span{border-radius:inherit;background:linear-gradient(90deg, var(--ok), var(--warn) 58%, var(--danger));height:100%;display:block}.operation-section{border-top:1px solid #ace2ef29;gap:8px;padding-top:10px;display:grid}.operation-section-title{color:var(--accent-strong);gap:6px}.operation-section-title strong{color:var(--muted);font-size:11px;font-weight:820}.risk-driver-list{gap:5px;display:grid}.risk-driver-row{border:1px solid var(--line);background:#09171f94;border-radius:6px;grid-template-columns:6px 42px minmax(62px,.7fr) minmax(88px,1fr);align-items:center;gap:7px;min-height:30px;padding:0 8px;display:grid}.risk-driver-row i{background:var(--ok);border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #5fe6a280}.risk-driver-row.warning i{background:var(--warn);box-shadow:0 0 8px #ffd15d94}.risk-driver-row.danger i{background:var(--danger);box-shadow:0 0 8px #ff665f9e}.risk-driver-row span,.risk-driver-row strong,.risk-driver-row small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.risk-driver-row span{color:var(--muted);font-size:10px;font-weight:740}.risk-driver-row strong{color:var(--text);font-size:11px;font-weight:820}.risk-driver-row.warning strong{color:var(--warn)}.risk-driver-row.danger strong{color:var(--danger)}.risk-driver-row small{color:var(--subtle);text-align:right;font-size:9px;font-weight:700}.route-operation .route-select-row{grid-template-columns:64px minmax(0,1fr)}.route-operation .route-detail-button{width:100%}.observation-validation{gap:7px}.observation-validation-title{min-width:0}.observation-validation-title .observation-status{margin-left:auto}.observation-status{border:1px solid var(--line);color:var(--muted);background:#09171fb8;border-radius:5px;flex:none;padding:3px 7px;font-size:9px;font-weight:820}.observation-status.online{color:var(--ok);background:#195e4461;border-color:#5fe6a27a}.observation-facts{border:1px solid var(--line);background:#09171f7a;border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.observation-facts>div{border-top:1px solid #ace2ef1f;border-left:1px solid #ace2ef1f;min-width:0;padding:7px 8px}.observation-facts>div:nth-child(odd){border-left:0}.observation-facts>div:nth-child(-n+2){border-top:0}.observation-facts span,.observation-facts strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.observation-facts span{color:var(--subtle);font-size:9px;font-weight:720}.observation-facts strong{color:var(--text);margin-top:3px;font-size:10px;font-weight:820}.observation-facts strong.ok{color:var(--ok)}.observation-facts strong.warning{color:var(--warn)}.observation-facts strong.danger{color:var(--danger)}.observation-detail-button{color:#fff;background:#146b8bdb;border:1px solid #4be0ff8f;border-radius:6px;justify-content:center;align-items:center;gap:7px;width:100%;min-height:32px;font-size:11px;font-weight:820;display:flex}.observation-detail-button:hover{background:#188baef0}.analysis-panel{z-index:12;border:1px solid var(--line-strong);border-radius:var(--radius);width:720px;min-height:0;color:var(--text);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0d1f27f5;flex-direction:column;display:flex;position:absolute;top:92px;bottom:102px;left:18px;overflow:hidden;box-shadow:0 24px 64px #00000075}.analysis-panel-lidar{width:min(1040px,100vw - 36px)}.analysis-panel-header{border-bottom:1px solid #ace2ef2e;flex:0 0 68px;align-items:center;gap:10px;min-height:68px;padding:0 14px;display:flex}.analysis-icon-button{border:1px solid var(--line);width:36px;height:36px;color:var(--text);background:#071b22d1;border-radius:6px;flex:none;place-items:center;display:grid}.analysis-icon-button:hover{color:var(--accent-strong);border-color:#4be0ff8f}.analysis-panel-title{gap:3px;min-width:150px;display:grid}.analysis-panel-title strong,.analysis-panel-title small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.analysis-panel-title strong{font-size:16px;font-weight:840}.analysis-panel-title small{color:var(--subtle);font-size:10px;font-weight:700}.analysis-tabs{align-self:stretch;align-items:stretch;min-width:0;margin-left:auto;display:flex}.analysis-tabs button{min-width:116px;color:var(--subtle);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:800;display:flex;position:relative}.analysis-tabs button:after{content:"";background:0 0;border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:0;left:12px;right:12px}.analysis-tabs button.active{color:#fff}.analysis-tabs button.active:after{background:#35dddf;box-shadow:0 0 10px #35dddf73}.lidar-profile-view{overscroll-behavior:contain;scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.lidar-profile-view.view-profile .lidar-analysis-charts{flex:none}.lidar-profile-view.view-profile .lidar-current-profile{overflow:visible}.lidar-summary-strip{background:#071b2280;border-bottom:1px solid #ace2ef24;flex:0 0 64px;grid-template-columns:1.15fr 1.55fr 1.35fr 1.8fr;padding:11px 14px;display:grid}.lidar-summary-strip>div{border-left:1px solid #ace2ef24;min-width:0;padding:3px 10px}.lidar-summary-strip>div:first-child{border-left:0;padding-left:0}.lidar-summary-strip span,.lidar-summary-strip strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.lidar-summary-strip span{color:var(--subtle);font-size:10px;font-weight:720}.lidar-summary-strip strong{color:var(--text);margin-top:5px;font-size:12px;font-weight:820}.lidar-summary-strip .ok strong{color:var(--ok)}.lidar-summary-strip .warning strong{color:var(--warn)}.lidar-summary-strip .danger strong{color:var(--danger)}.lidar-view-toolbar{border-bottom:1px solid #ace2ef24;flex:0 0 50px;justify-content:space-between;align-items:center;gap:10px;min-height:50px;padding:8px 14px;display:flex}.lidar-profile-controls{align-items:center;gap:8px;min-width:0;display:flex}.lidar-segmented{background:#05181fdb;border:1px solid #51a9bc40;border-radius:5px;align-items:center;gap:2px;padding:2px;display:flex}.lidar-refresh-button{width:31px;height:31px;color:var(--text);cursor:pointer;background:#071b229e;border:1px solid #ace2ef38;border-radius:4px;place-items:center;margin-left:5px;display:inline-grid}.lidar-height-cap-control{min-height:33px;color:var(--subtle);white-space:nowrap;background:#05181fdb;border:1px solid #51a9bc40;border-radius:5px;grid-template-columns:auto 82px;align-items:center;gap:6px;padding:2px 3px 2px 9px;font-size:10px;font-weight:760;display:grid}.lidar-height-cap-control select{height:28px;padding:0 7px;font-size:11px}.lidar-color-controls{min-height:33px;color:var(--subtle);background:#05181fdb;border:1px solid #51a9bc40;border-radius:5px;grid-template-columns:auto repeat(3,minmax(58px,68px));align-items:center;gap:5px;padding:3px 6px 3px 8px;font-size:10px;font-weight:760;display:grid}.lidar-color-controls>span{color:#dff7fa}.lidar-color-controls label{grid-template-columns:1fr;gap:1px;min-width:0;display:grid}.lidar-color-controls small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:8px;font-weight:760;line-height:1;overflow:hidden}.lidar-color-controls input{color:#f4fbfc;font-variant-numeric:tabular-nums;background:#020f14cc;border:1px solid #ace2ef33;border-radius:3px;width:100%;height:19px;padding:0 4px;font-size:10px;font-weight:760}.lidar-refresh-button:hover:not(:disabled){color:#fff;border-color:#35dddf94}.lidar-refresh-button:disabled{cursor:wait;opacity:.58}.lidar-refresh-button .spinning{animation:.9s linear infinite lidar-refresh-spin}@keyframes lidar-refresh-spin{to{transform:rotate(360deg)}}.lidar-segmented button{min-height:28px;color:var(--subtle);background:0 0;border:0;border-radius:4px;padding:0 11px;font-size:11px;font-weight:780}.lidar-segmented button.active{color:#fff;background:#137d9a}.lidar-segmented .lidar-static-control{color:var(--muted);opacity:1}.lidar-analysis-charts{flex:1;grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.lidar-chart{flex-direction:column;min-width:0;min-height:0;padding:12px 14px 10px;display:flex;overflow:hidden}.lidar-chart+.lidar-chart{border-left:1px solid #ace2ef29}.lidar-chart-heading{justify-content:space-between;align-items:flex-start;gap:8px;min-height:30px;display:flex}.lidar-chart-heading strong{font-size:13px;font-weight:820}.lidar-chart-heading span{color:var(--subtle);text-align:right;font-size:10px;font-weight:700}.lidar-current-profile{gap:8px}.lidar-selected-status{color:#f6d68c;background:#744d1233;border:1px solid #f4bf5b66;border-radius:5px;padding:7px 10px;font-size:11px;font-weight:760}.vertical-wind-profile-layout{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:100%;min-width:0;max-width:100%;min-height:0;display:grid;overflow:hidden}.profile-panel{background:linear-gradient(#04141dc7,#061e2494);border:1px solid #51a9bc57;border-radius:6px;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden;box-shadow:inset 0 0 0 1px #35dddf0a}.profile-panel-horizontal{border-color:#27d1ff52}.profile-panel-title{box-sizing:border-box;border-bottom:1px solid #ace2ef1f;justify-content:space-between;align-items:center;gap:8px;height:31px;min-height:31px;padding:7px 10px 5px;display:flex}.profile-panel-title strong{color:#f4fbfc;font-size:12px;font-weight:860}.profile-panel-title span{color:var(--subtle);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:760;overflow:hidden}.profile-panel-svg{flex:0 0 clamp(520px,56vh,620px);width:100%;max-width:100%;height:clamp(520px,56vh,620px);min-height:0;display:block;overflow:visible}.profile-panel-svg text{fill:#e2f5f8ad;font-size:10px;font-weight:680}.profile-panel-svg .profile-axis-title{fill:#dffcff;font-size:12px;font-weight:840}.profile-panel-svg .profile-threshold-label{fill:#ff6c72;font-size:10px;font-weight:860}.profile-threshold-line{stroke:#ff6c72;stroke-width:1.6px;stroke-dasharray:6 6;filter:drop-shadow(0 0 7px #ff6c7280);vector-effect:non-scaling-stroke}.profile-marker{stroke:#05181fe6;stroke-width:1.2px;vector-effect:non-scaling-stroke}.profile-marker.measured{fill:#31e2e4;filter:drop-shadow(0 0 4px #31e2e485)}.profile-marker.corrected{fill:#55e3a5;filter:drop-shadow(0 0 4px #55e3a585)}.wind-barb-level{stroke:#ace2ef1a;stroke-width:1px;vector-effect:non-scaling-stroke}.wind-barb-guide{stroke:#27d1ff2e;stroke-width:1px;vector-effect:non-scaling-stroke}.wind-barb-guide.observed{stroke:#31e2e43d}.wind-barb-guide.forecast{stroke:#edf8fa29}.wind-barb-axis{stroke:#edf8fa73;stroke-width:1.2px;vector-effect:non-scaling-stroke}.wind-barb-axis.observed{stroke:#31e2e4c2;filter:drop-shadow(0 0 4px #31e2e473)}.wind-barb-axis.forecast{stroke:#edf8faa8;filter:drop-shadow(0 0 4px #edf8fa52)}.wind-barb-glyph line,.wind-barb-glyph path{fill:none;stroke:#edf8fa;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px #edf8fa59);vector-effect:non-scaling-stroke}.wind-barb-glyph.observed line,.wind-barb-glyph.observed path{stroke:#31e2e4;filter:drop-shadow(0 0 4px #31e2e47a)}.wind-barb-glyph.forecast line,.wind-barb-glyph.forecast path{stroke:#edf8fa}.wind-barb-column-label{fill:#e2f5f8b3;font-size:10px;font-weight:820}.wind-barb-column-label.observed{fill:#31e2e4}.wind-barb-column-label.forecast{fill:#edf8fa}.wind-barb-compass{opacity:.82;pointer-events:none;flex:none;width:30px;height:17px;position:relative}.wind-barb-compass:before{content:"";background:#071e26b8;border:1px solid #48dee16b;border-radius:999px;position:absolute;inset:4px 10px}.wind-barb-compass:after{content:"";background:#c9fbff57;width:16px;height:1px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -5px 0 -.5px #c9fbff42}.wind-barb-compass span{fill:#e2f5f8b8;color:#e2f5f8b8;text-align:center;text-overflow:clip;white-space:nowrap;font-size:7px;font-weight:820;line-height:1;position:absolute;overflow:visible}.wind-barb-compass span:first-child{top:0;left:50%;transform:translate(-50%)}.wind-barb-compass span:nth-child(2){top:50%;right:0;transform:translateY(-50%)}.wind-barb-compass span:nth-child(3){bottom:-1px;left:50%;transform:translate(-50%)}.wind-barb-compass span:nth-child(4){top:50%;left:0;transform:translateY(-50%)}.wind-barb-row-label{fill:#c9fbff;font-size:10px;font-weight:760}.wind-barb-row-label.observed{fill:#31e2e4db}.wind-barb-row-label.forecast{fill:#edf8fad1}.profile-empty-message{fill:var(--muted);font-size:11px;font-weight:760}.profile-chart-canvas{flex:1;min-height:210px;position:relative}.profile-chart-canvas svg{width:100%;height:100%;display:block;overflow:visible}.profile-chart-canvas text{fill:#e2f5f8a3;font-size:10px;font-weight:650}.profile-plot-background{fill:#05181f6b;stroke:#ace2ef2e}.profile-grid-line{stroke:#ace2ef21;stroke-width:1px;vector-effect:non-scaling-stroke}.profile-grid-line.vertical{stroke:#ace2ef17}.route-altitude-band{fill:#ffd15d14;stroke:#ffd15d6b;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}.profile-chart-canvas .route-band-label{fill:var(--warn);font-size:9px}.profile-line{fill:none;stroke-width:3px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.profile-line.measured{stroke:#31e2e4;filter:drop-shadow(0 0 4px #31e2e466)}.profile-line.forecast{stroke:#edf8fa;stroke-dasharray:7 6}.profile-line.corrected{stroke:#55e3a5}.profile-line.difference{stroke:#ffd15deb;stroke-width:2.4px;filter:drop-shadow(0 0 4px #ffd15d57)}.profile-panel-difference,.lidar-difference-profile .profile-series-legend{align-self:center;width:min(560px,100%)}.profile-series-legend{min-height:20px;color:var(--muted);align-items:center;gap:13px;padding-left:38px;font-size:10px;font-weight:700;display:flex}.profile-series-legend span{align-items:center;gap:5px;display:inline-flex}.profile-series-legend i{background:var(--text);width:20px;height:2px}.profile-series-legend i.measured{background:#31e2e4}.profile-series-legend i.forecast{background:repeating-linear-gradient(90deg,#edf8fa 0 6px,#0000 6px 10px)}.profile-series-legend i.corrected{background:#55e3a5}.profile-series-legend i.stronger{background:#ff665f}.profile-series-legend i.weaker{background:#27d1ff}@media (width<=1040px){.vertical-wind-profile-layout{grid-template-columns:minmax(0,1fr)}.profile-panel-svg{flex-basis:clamp(440px,58vh,560px);height:clamp(440px,58vh,560px)}}@media (height<=820px){.analysis-panel{top:76px;bottom:86px}.analysis-panel-header{flex-basis:54px;min-height:54px}.lidar-summary-strip{flex-basis:auto;grid-template-columns:repeat(3,minmax(0,1fr));row-gap:6px;padding-top:8px;padding-bottom:8px}.lidar-summary-strip>div{padding-top:1px;padding-bottom:1px}.profile-panel-svg{flex-basis:420px;height:420px}}.difference-axis{stroke:#ffd15dc2;stroke-width:1.4px;stroke-dasharray:6 5;filter:drop-shadow(0 0 5px #ffd15d47);vector-effect:non-scaling-stroke}.difference-bar{opacity:.62;stroke:#ffffff2e;vector-effect:non-scaling-stroke}.difference-bar.stronger{fill:#ff665f}.difference-bar.weaker{fill:#27d1ff}.difference-marker{stroke:#05181fe6;stroke-width:1.1px;vector-effect:non-scaling-stroke}.difference-marker.stronger{fill:#ff665f;filter:drop-shadow(0 0 3px #ff665f6b)}.difference-marker.weaker{fill:#27d1ff;filter:drop-shadow(0 0 3px #27d1ff6b)}.lidar-heatmap-shell{flex:1;min-height:300px;margin:0 7px 0 32px;position:relative}.lidar-heatmap{background:#05181f8c;border:1px solid #ace2ef38;display:grid;position:absolute;inset:0;overflow:hidden}.lidar-heat-cell{border-bottom:1px solid #05181f14;border-right:1px solid #05181f14;min-width:0;min-height:0}.lidar-heat-cell.low,.lidar-heat-cell.missing{opacity:.42}.lidar-forecast-gap{z-index:3;pointer-events:none;background:repeating-linear-gradient(-45deg,#e2f5f80f 0 6px,#05181f0a 6px 12px);border-bottom:1px dashed #ace2ef52;position:absolute;top:0;left:0;right:0}.lidar-forecast-gap em{color:#e2f5f8d1;background:#05181fb8;border:1px solid #ace2ef33;border-radius:3px;padding:3px 6px;font-size:9px;font-style:normal;font-weight:760;position:absolute;top:7px;right:8px}.lidar-future-zone{z-index:2;pointer-events:none;background:#05181f21;border-left:1px solid #ffffff4d;position:absolute;top:0;bottom:0;right:0}.lidar-no-observation-zone{z-index:3;color:var(--muted);pointer-events:none;background:#05181f52;place-items:center;display:grid;position:absolute;inset:0}.lidar-no-observation-zone em{background:#05181fc7;border:1px solid #ace2ef2e;border-radius:4px;padding:5px 8px;font-size:10px;font-style:normal;font-weight:750}.lidar-future-zone em{color:#f4fbfcd1;font-size:9px;font-style:normal;font-weight:700;position:absolute;bottom:5px;right:5px}.lidar-live-line,.lidar-selected-line{z-index:4;pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.lidar-live-line{background:#ffffffeb;box-shadow:0 0 6px #ffffff80}.lidar-live-line strong{color:#082028;white-space:nowrap;background:#effafcf0;border-radius:3px;padding:3px 5px;font-size:8px;font-weight:840;position:absolute;top:5px;left:5px}.lidar-selected-line{background:var(--accent-strong);width:2px;box-shadow:0 0 7px #27d1ffa3}.lidar-selected-line strong{color:#d7fcff;white-space:nowrap;background:#061c24db;border:1px solid #27d1ff5c;border-radius:3px;padding:2px 5px;font-size:8px;font-weight:820;position:absolute;top:30px;left:5px}.lidar-height-labels{color:var(--subtle);flex-direction:column;justify-content:space-between;font-size:9px;font-weight:700;display:flex;position:absolute;top:0;bottom:0;left:-31px}.lidar-time-labels{min-height:24px;color:var(--subtle);margin:5px 7px 0 32px;font-size:9px;font-weight:700;position:relative}.lidar-time-labels span{white-space:nowrap;justify-items:center;display:grid;position:absolute;top:0;transform:translate(-50%)}.lidar-time-labels span:first-child{justify-items:start;transform:translate(0)}.lidar-time-labels span:last-child{justify-items:end;transform:translate(-100%)}.lidar-time-labels i{background:#e2f5f861;width:1px;height:5px}.lidar-time-labels em{font-style:normal}.heatmap-legend{width:min(230px,100% - 39px);min-height:34px;color:var(--muted);margin:5px 7px 0 32px;font-size:9px;font-weight:700}.heatmap-legend .legend-ramp{background:linear-gradient(90deg,#1a7189,#32d2c6,#6cdda2,#f0df67,#ed7c58,#e85455);border-radius:3px;height:8px;display:block}.heatmap-legend.difference .legend-ramp{background:linear-gradient(90deg,#27d1ff,#eaf7f9,#ff665f)}.heatmap-legend-ticks{height:19px;margin-top:3px;position:relative}.heatmap-legend-ticks span{white-space:nowrap;justify-items:center;display:grid;position:absolute;top:0;transform:translate(-50%)}.heatmap-legend-ticks span:first-child{justify-items:start;transform:translate(0)}.heatmap-legend-ticks span:last-child{justify-items:end;transform:translate(-100%)}.heatmap-legend-ticks b{background:#e2f5f873;width:1px;height:5px}.heatmap-legend-ticks em{font-style:normal}.lidar-empty-state{color:var(--muted);flex:1;place-content:center;justify-items:center;gap:10px;display:grid}.route-analysis-view{scrollbar-width:thin;scrollbar-color:#4be0ff8c #09171f80;flex:1;min-height:0;overflow:auto}.route-analysis-view .route-summary{padding-top:16px}.layer-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(380px,100vw - 154px);max-height:calc(100dvh - 176px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);scrollbar-width:thin;scrollbar-color:#4be0ff8c #09171f80;gap:9px;padding:10px;display:grid;bottom:102px;right:136px;overflow:auto}.layer-panel.collapsed{width:min(380px,100vw - 154px);max-height:none;overflow:visible}.layer-panel-header{justify-content:space-between;align-items:center;gap:10px;min-height:38px;display:flex}.layer-panel-header>div{min-width:0;color:var(--accent-strong);align-items:center;gap:8px;display:flex}.layer-panel-header span{gap:2px;min-width:0;display:grid}.layer-panel-header strong,.layer-panel-header small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.layer-panel-header strong{color:var(--text);font-size:13px;font-weight:820}.layer-panel-header small{color:var(--muted);font-size:11px;font-weight:720}.panel-collapse-button{border:1px solid var(--line);width:34px;height:32px;color:var(--accent-strong);background:#09171fb8;border-radius:6px;flex:none;place-items:center;display:grid}.layer-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;display:grid}.quick-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;display:grid}.base-layer-row{grid-template-columns:repeat(3,minmax(0,1fr))}.window-driver{border:1px solid var(--line);background:#0d1c25b8;border-radius:6px;min-width:0;padding:8px}.window-driver span,.window-driver strong,.window-driver small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.window-driver span{color:var(--subtle);font-size:10px;font-weight:740}.window-driver strong{color:var(--text);margin-top:3px;font-size:13px;font-weight:840}.window-driver small{color:var(--muted);margin-top:2px;font-size:10px;font-weight:700}.window-driver.ok strong{color:var(--ok)}.window-driver.warning strong{color:var(--warn)}.window-driver.danger strong{color:var(--danger)}.layer-panel-body,.layer-section{gap:8px;display:grid}.layer-section{border-top:1px solid #ace2ef29;padding-top:9px}.layer-section-title{color:var(--accent-strong);align-items:center;gap:6px;display:flex}.layer-section-title strong{color:var(--muted);font-size:11px;font-weight:820}.switch-button{min-height:34px;color:var(--muted);text-align:left;grid-template-rows:1fr 9px;grid-template-columns:15px minmax(0,1fr);align-items:center;gap:0 5px;padding:4px 7px;font-size:12px;font-weight:760;display:grid}.switch-button span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.switch-button i{background:#b4d3db52;border-radius:4px;grid-column:1/-1;height:4px;display:block}.switch-button.active{color:#fff;background:#146b8bd6;border-color:#4be0ffa3}.switch-button.active i{background:linear-gradient(90deg,#7dfbff,#42efa7)}.control-range{border:1px solid var(--line);min-height:38px;color:var(--muted);background:#09171f9e;border-radius:6px;grid-template-columns:70px minmax(0,1fr) 42px;align-items:center;gap:8px;padding:0 8px;font-size:12px;font-weight:740;display:grid}.control-range strong{color:var(--text);text-align:right;font-size:11px;font-weight:780}.color-range-control{border:1px solid var(--line);min-height:38px;color:var(--muted);background:#09171f9e;border-radius:6px;grid-template-columns:70px minmax(0,1fr) minmax(0,1fr) 32px;align-items:center;gap:8px;padding:0 8px;font-size:12px;font-weight:740;display:grid}.color-range-control input{width:100%;min-width:0;height:28px;color:var(--text);background:#05161ee0;border:1px solid #80daef38;border-radius:6px;outline:none;padding:0 7px;font-size:12px;font-weight:780}.color-range-control button{width:28px;height:28px;color:var(--muted);place-items:center;display:inline-grid}input[type=range]{width:100%;min-width:0;accent-color:var(--accent-strong)}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg,#1b74a6db,#25e0f6e6,#59eb93db);border-radius:5px;height:5px}input[type=range]::-webkit-slider-thumb{background:var(--accent-strong);appearance:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;margin-top:-5.5px;box-shadow:0 0 16px #27d1ffb3}input[type=range]::-moz-range-track{background:linear-gradient(90deg,#1b74a6db,#25e0f6e6,#59eb93db);border-radius:5px;height:5px}input[type=range]::-moz-range-thumb{background:var(--accent-strong);border:2px solid #fff;border-radius:50%;width:14px;height:14px;box-shadow:0 0 16px #27d1ffb3}.select-row{min-height:38px;color:var(--muted);grid-template-columns:60px 82px minmax(0,1fr);align-items:center;gap:8px;font-size:12px;font-weight:760;display:grid}select{border:1px solid var(--line);width:100%;min-width:0;height:34px;color:var(--text);background:#09171fd1;border-radius:6px;outline:none;padding:0 9px}.basemap-switch,.camera-presets{gap:7px;display:grid}.basemap-switch{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-presets{grid-template-columns:repeat(4,minmax(0,1fr))}.basemap-switch button,.camera-presets button{min-width:0;height:34px;color:var(--muted);justify-content:center;align-items:center;gap:5px;padding:0 6px;font-size:12px;font-weight:760;display:inline-flex}.basemap-switch button span,.camera-presets button span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.basemap-switch button.active,.camera-presets button.active{color:#fff;background:#146b8be0;border-color:#4be0ffa3}.route-select-row{min-height:36px;color:var(--muted);grid-template-columns:46px minmax(0,1fr);align-items:center;gap:8px;font-size:12px;font-weight:760;display:grid}.route-select-row.compact{padding:0}.route-detail-button{color:#fff;background:linear-gradient(#24acdaf2,#1270a0eb);border-color:#4be0ff80;justify-content:center;align-items:center;gap:6px;height:34px;font-size:13px;font-weight:780;display:inline-flex}.compass-control{border:1px solid var(--line);color:#fff;background:var(--panel-strong);width:46px;height:46px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:50%;place-items:center;display:grid;top:78px;right:18px}.north-mark,.north-arrow{grid-area:1/1}.north-mark{color:#fff;align-self:start;margin-top:4px;font-size:10px;font-weight:860;line-height:1}.north-arrow{border:2px solid #ffffffdb;border-radius:50%;width:25px;height:25px;margin-top:9px;position:relative;box-shadow:inset 0 0 10px #4feea42e,0 0 18px #39ff882e}.north-arrow:before{content:"";filter:drop-shadow(0 0 8px #39ff88d1);border-bottom:14px solid #fff;border-left:5px solid #0000;border-right:5px solid #0000;width:0;height:0;position:absolute;top:3px;left:50%;transform:translate(-50%)}.north-arrow:after{content:"";background:#39ff88;border-radius:50%;width:4px;height:4px;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.timeline-bar{border:1px solid var(--line);border-radius:var(--radius);min-height:70px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0e1d26c2;grid-template-columns:360px 238px minmax(420px,1fr) 218px;align-items:center;gap:14px;padding:10px 12px;display:grid;bottom:16px;left:18px;right:18px}.product-selector{align-items:center;gap:8px;width:360px;min-width:0;max-width:100%;display:flex}.product-selector label{min-width:0;color:var(--subtle);flex:0 0 128px;grid-template-columns:auto minmax(92px,1fr);align-items:center;gap:5px;font-size:10px;font-weight:760;display:grid}.product-selector select{min-width:0;height:30px;color:var(--text);background:#05181fe0;border:1px solid #80daef3d;border-radius:6px;padding:0 26px 0 8px;font-size:11px;font-weight:760}.product-date-picker{min-width:0;color:var(--subtle);flex:auto;grid-template-columns:auto minmax(142px,1fr);align-items:center;gap:5px;font-size:10px;font-weight:760;display:grid;position:relative}.product-date-label{white-space:nowrap}.product-date-trigger{min-width:0;height:30px;color:var(--text);text-align:left;background:#05181fe0;border:1px solid #80daef3d;border-radius:6px;grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:6px;padding:0 8px;display:grid}.product-date-trigger strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;font-weight:820;overflow:hidden}.date-state,.product-date-option em{border-radius:999px;place-items:center;min-width:32px;height:18px;font-size:10px;font-style:normal;font-weight:840;display:inline-grid}.date-state.ready,.product-date-option.ready em{color:#062720;background:#5fe6a2eb}.date-state.degraded,.product-date-option.degraded em{color:#241a05;background:#ffd15df2}.date-state.unavailable,.date-state.missing,.product-date-option.unavailable em,.product-date-option.missing em{color:#ffc7c2;background:#753230d1}.product-date-menu{z-index:90;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);scrollbar-width:thin;scrollbar-color:#4be0ff94 #09171f99;background:#0f232cfa;border:1px solid #80daef4d;border-radius:8px;width:min(242px,100vw - 36px);max-height:min(360px,52dvh);padding:6px;display:grid;position:absolute;bottom:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 18px 42px #00000070}.product-date-option{min-height:32px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:8px;padding:0 8px;font-size:12px;font-weight:780;display:grid}.product-date-option span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.product-date-option.current{color:#062229;background:#7ebeffe6}.product-date-option:not(:disabled):hover{background:#4be0ff29}.product-date-option.current:not(:disabled):hover{background:#97cbfff0}.product-date-option:disabled{cursor:not-allowed;opacity:.48}.product-status,.product-date{white-space:nowrap;flex:none}.product-status{min-height:28px;color:var(--ok);background:#18654b42;border:1px solid #5fe6a25c;border-radius:6px;place-items:center;padding:0 9px;font-size:11px;font-weight:820;display:inline-grid}.product-status.degraded{color:var(--warn);background:#78581a4d;border-color:#ffd15d61}.product-status.unavailable{color:#ffaba6;background:#732b284d;border-color:#ff665f57}.product-date{color:var(--muted);font-size:11px;font-weight:760}.date-block{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;min-width:0;display:grid}.date-block span{color:var(--text);white-space:nowrap;font-size:13px;font-weight:780}.date-block strong{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:760;overflow:hidden}.date-block em{color:#fff;background:#146b8bcc;border:1px solid #4be0ff7a;border-radius:6px;place-items:center;min-width:42px;height:24px;font-size:12px;font-style:normal;font-weight:820;display:inline-grid}.transport{justify-content:center;align-items:center;gap:7px;min-width:0;display:flex}.transport button{width:34px;height:34px;color:var(--muted);flex:none;place-items:center;display:inline-grid}.transport .live-button{color:#e2f5f8e0;white-space:nowrap;background:#05181fc7;border-color:#5fe6a24d;justify-content:center;align-items:center;gap:6px;width:86px;padding:0 8px;font-size:10px;font-weight:840;line-height:1;display:inline-flex}.live-dot{background:#ace2ef7a;border-radius:999px;flex:none;width:7px;height:7px;box-shadow:0 0 0 3px #ace2ef14}.transport .live-button.active{color:#061f20;background:#39ff88;border-color:#5fe6a2b8;box-shadow:0 0 0 1px #39ff883d,0 0 18px #39ff8838}.transport .live-button.active .live-dot{background:#062229;box-shadow:0 0 0 3px #06222929}.transport .primary{color:#fff;background:#146b8be6;border-color:#4be0ff9e}.transport button:disabled{cursor:wait;opacity:.58}.transport .spinning{animation:.9s linear infinite lidar-refresh-spin}.timeline{grid-template-rows:20px 18px 16px;gap:2px;min-width:360px;display:grid;position:relative}.timeline-readout{grid-template-columns:minmax(218px,max-content) minmax(120px,max-content);justify-content:center;align-items:center;gap:9px;min-width:0;padding:0 68px 0 10px;display:grid}.current-time{color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap;background:#18a8dfe0;border-radius:6px;justify-self:center;min-width:218px;max-width:100%;padding:3px 8px;font-size:12px;font-weight:820;line-height:1;overflow:hidden}.current-time.live{color:#061f20;background:#39ff88eb;box-shadow:0 0 18px #39ff8838}.timeline-now{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:760;line-height:1;overflow:hidden}.timeline-now.live{color:#5fe6a2e6}.timeline-status{min-width:52px;height:18px;color:var(--muted);white-space:nowrap;background:#05181f9e;border:1px solid #ace2ef2e;border-radius:5px;place-items:center;padding:0 7px;font-size:10px;font-weight:780;line-height:1;display:inline-grid;position:absolute;top:1px;right:0}.timeline-status.live{color:#39ff88;background:#105a3c94;border-color:#5fe6a28a}.timeline-status.loading{color:var(--accent-strong);background:#12607a8f;border-color:#4be0ff7a}.timeline input[type=range]{width:100%;accent-color:var(--accent-strong);margin:0}.time-labels{height:16px;color:var(--muted);font-size:12px;font-weight:700;position:relative}.timeline .time-labels span{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.timeline .time-labels span:first-child{transform:translate(0)}.timeline .time-labels span:last-child{transform:translate(-100%)}.timeline-bar .legend{grid-template-rows:18px 22px;grid-template-columns:minmax(126px,1fr) auto;align-items:start;column-gap:10px;display:grid}.timeline-bar .legend strong,.timeline-bar .legend em{color:var(--text);font-size:12px;font-weight:780}.timeline-bar .legend strong{text-align:right;grid-area:1/2/3;align-self:center}.timeline-bar .legend em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.legend-bar{background:linear-gradient(90deg,#13458e,#09b8d7,#52d968,#f3df51,#f1812d,#c81922);border:1px solid #ffffff6b;border-radius:6px;grid-area:1/1;height:16px;box-shadow:inset 0 0 8px #ffffff2e}.legend-bar.diverging{background:linear-gradient(90deg,#2054a7,#7ccfff,#f4f5ef,#f19a6c,#ad1d2d)}.legend-ticks{grid-area:2/1;height:20px;position:relative}.legend-ticks span{color:var(--text);white-space:nowrap;justify-items:center;font-size:11px;font-weight:780;display:grid;position:absolute;top:0;transform:translate(-50%)}.legend-ticks span:first-child{justify-items:start;transform:translate(0)}.legend-ticks span:last-child{justify-items:end;transform:translate(-100%)}.legend-ticks b{background:#e2f5f880;width:1px;height:5px}.legend-ticks em{color:var(--text);font-style:normal}.map-label-anchor{pointer-events:none;transform-origin:0 0;transition:opacity .16s,filter .16s;position:relative}.map-label-anchor.is-hidden{opacity:0;visibility:hidden}.map-label{white-space:nowrap;letter-spacing:0;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:13px;line-height:1.05;display:inline-flex;position:absolute;top:0;left:0;transform:translate(10px,-30px)}.map-label-copy{gap:2px;display:grid}.map-label-name{color:#fff;text-shadow:0 1px 2px #000000e0,0 0 4px #000000b8;font-weight:800}.map-label-meta{color:#e2fafcd6;text-shadow:0 1px 2px #000c,0 0 4px #0000008f;font-size:10px;font-weight:700}.map-label-dot{background:#fff3a3;border:1px solid #051318d1;border-radius:50%;width:7px;height:7px;display:inline-block;box-shadow:0 0 0 2px #fff3a347,0 2px 6px #00000070}.map-label--major{background:#04141957;border-radius:6px;gap:7px;padding:3px 7px 3px 4px;font-size:15px;box-shadow:0 8px 18px #00000029}.map-label--major .map-label-dot{width:9px;height:9px}.map-label--landmark .map-label-meta{display:none}.map-label--waypoint{border-radius:var(--radius);background:#05141adb;border:1px solid #7becf7a3;min-width:172px;padding:8px 10px;transform:translate(18px,-58px);box-shadow:0 10px 28px #00000052}.map-label--waypoint .map-label-name,.map-label--waypoint .map-label-meta{text-shadow:none}.route-panel-backdrop{z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#050d1185;place-items:center;padding:28px;display:grid;position:fixed;inset:0}.route-panel{border:1px solid var(--line-strong);border-radius:var(--radius);width:min(780px,100vw - 48px);max-height:min(760px,100vh - 48px);color:var(--text);background:#0d1c25f0;overflow:auto;box-shadow:0 28px 80px #00000080}.route-panel header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 18px 12px;display:flex}.route-panel header span{color:var(--accent-strong);font-size:12px;font-weight:780}.route-panel h2{color:var(--text);margin:5px 0 0;font-size:20px;line-height:1.2}.route-panel header button{border:1px solid var(--line);width:34px;height:34px;color:var(--text);background:var(--panel-soft);border-radius:6px;place-items:center;display:grid}.route-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:14px 18px;display:grid}.route-metric{border:1px solid var(--line);border-radius:var(--radius);background:#182f3b9e;min-height:68px;padding:10px}.route-metric span{color:var(--muted);font-size:11px;display:block}.route-metric strong{color:var(--text);margin-top:8px;font-size:17px;line-height:1.1;display:block}.route-metric.ok strong{color:var(--ok)}.route-metric.warning strong{color:var(--warn)}.route-metric.danger strong{color:var(--danger)}.route-driver-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:0 18px 14px;display:grid}.route-policy-settings{border-radius:var(--radius);background:#07161d8c;border:1px solid #80daef33;gap:9px;margin:0 18px 18px;padding:0;display:grid}.route-policy-settings>summary{min-height:42px;color:var(--text);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;list-style:none;display:flex}.route-policy-settings>summary::-webkit-details-marker{display:none}.route-policy-settings>summary span{align-items:center;gap:7px;min-width:0;font-size:12px;font-weight:840;display:inline-flex}.route-policy-settings>summary svg{color:var(--accent-strong)}.route-policy-settings>summary strong{color:var(--muted);font-size:11px;font-weight:780}.route-policy-settings>p{color:var(--subtle);margin:0;padding:0 12px;font-size:10px;font-weight:700;line-height:1.35}.route-policy-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:0 12px 12px;display:grid}.route-policy-row{border:1px solid var(--line);background:#09171f94;border-left:3px solid #80daef57;border-radius:6px;grid-template-columns:minmax(78px,.95fr) minmax(70px,.75fr) minmax(70px,.75fr) 64px;align-items:end;gap:7px;min-width:0;padding:8px;display:grid}.route-policy-row.ok{border-left-color:var(--ok)}.route-policy-row.warning{border-left-color:var(--warn)}.route-policy-row.danger{border-left-color:var(--danger)}.route-policy-label,.route-policy-row label{gap:4px;min-width:0;display:grid}.route-policy-label span,.route-policy-row label span{min-width:0;color:var(--subtle);text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:740;overflow:hidden}.route-policy-label strong{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:840;overflow:hidden}.route-policy-row input{width:100%;min-width:0;height:28px;color:var(--text);background:#05181fc7;border:1px solid #ace2ef33;border-radius:5px;padding:0 7px;font-size:11px;font-weight:760}.route-policy-row input:disabled,.route-policy-row button:disabled{cursor:not-allowed;opacity:.48}.route-policy-row button{color:#fff;background:#12745ac2;border-color:#5fe6a280;justify-content:center;align-items:center;gap:4px;min-width:0;height:28px;padding:0 8px;font-size:10px;font-weight:820;display:inline-flex}.route-policy-error{color:var(--warn);padding:0 12px 12px;font-size:10px;font-weight:760}.route-risk-chart{padding:2px 18px 14px}.chart-title{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.chart-title strong{color:var(--text)}.route-risk-plot{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(#7ef2ff0d,#0000 42%),#182f3b9e;min-height:282px;margin-top:10px}.route-risk-svg{width:100%;height:auto;display:block;overflow:visible}.route-risk-plane{fill:#05161d80;stroke:#80daef38}.route-risk-axis line,.route-risk-x-axis line{stroke:#ccecf21f;stroke-width:1px}.route-risk-axis text,.route-risk-x-axis text,.route-risk-unit{fill:var(--muted);font-size:11px;font-weight:760}.route-risk-unit.y-unit,.route-risk-unit.x-unit{fill:#e2f5f8db;font-weight:840}.route-risk-bar{filter:drop-shadow(0 0 6px #56eadf33)}.route-risk-waypoint line{stroke:#ffee8c94;stroke-dasharray:4 4;stroke-width:1.2px}.route-risk-waypoint circle{fill:#ffe978;stroke:#05161df0;stroke-width:2px}.route-risk-waypoint text{fill:var(--text);paint-order:stroke;stroke:#051218d1;stroke-width:3px;font-size:10px;font-weight:820}.route-risk-plot em{min-height:270px;color:var(--muted);place-items:center;font-size:13px;font-style:normal;display:grid}.route-table{border-collapse:collapse;border:1px solid var(--line);border-radius:var(--radius);width:calc(100% - 36px);color:var(--text);margin:0 18px 18px;font-size:12px;overflow:hidden}.route-table th,.route-table td{border-bottom:1px solid var(--line);text-align:left;padding:9px 10px}.route-table th{color:var(--muted);background:#182f3b9e;font-weight:780}.route-position-cell strong,.route-position-cell small{min-width:0;display:block}.route-position-cell strong{color:var(--text);white-space:nowrap;font-size:12px;font-weight:820}.route-table small{color:var(--muted);margin-top:3px;font-size:10px;line-height:1.25;display:block}.login-view,.loading-shell,.fatal{min-height:100dvh}.login-view{isolation:isolate;background:#071217;place-items:center;width:100%;display:grid;position:relative;overflow:hidden}.login-map,.login-route-glow,.login-shade{position:absolute;inset:0}.login-map{z-index:-2;background-image:var(--login-map-image);filter:saturate(1.12)contrast(1.04)brightness(.82);background-position:50%;background-size:cover;transform:scale(1.015)}.login-map:before{content:"";background:linear-gradient(115deg,#0412172e,#020e127a 54%,#041416bd),radial-gradient(circle at 24% 42%,#39ff882e,#0000 27%),radial-gradient(circle at 70% 28%,#4be0ff26,#0000 30%);position:absolute;inset:0}.login-map:after{content:"";opacity:.28;mix-blend-mode:screen;background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff07 1px,#0000 1px);background-size:86px 86px;position:absolute;inset:0}.login-route-glow{z-index:-1;pointer-events:none}.login-route-glow:before{content:"";transform-origin:0;background:linear-gradient(90deg,#0000,#39ff88 16%,#e9fff2 52%,#39ff88 84%,#0000);border-radius:999px;width:62vw;height:2px;position:absolute;top:58vh;left:18vw;transform:rotate(-19deg);box-shadow:0 0 14px #39ff88d9,0 0 36px #39ff8859}.login-route-glow:after{content:"";background:#39ff88;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50vh;left:31vw;box-shadow:19vw -6.6vw 0 -1px #39ff88,40vw -13.5vw 0 -1px #39ff88,0 0 18px #39ff88b8}.login-shade{z-index:0;pointer-events:none;background:#020d1261;box-shadow:inset 0 0 150px #000000a8,inset 0 -34vh 150px #020b0f9e}.login-brand{z-index:1;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#081921c7;align-items:center;gap:11px;padding:9px 11px;display:flex;position:absolute;top:24px;left:28px}.login-brand h1{letter-spacing:0;font-size:19px;line-height:1.15}.login-brand p{color:var(--muted);margin-top:4px;font-size:11px}.login-panel{z-index:1;border-radius:var(--radius);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#071922eb;border:1px solid #aaeeff57;gap:22px;width:min(390px,100vw - 32px);padding:24px;display:grid;position:relative;box-shadow:0 28px 90px #0000008a}.login-heading{grid-template-columns:42px minmax(0,1fr);align-items:center;gap:12px;display:grid}.login-heading-icon{width:42px;height:42px;color:var(--accent-strong);background:#11637f6b;border:1px solid #4be0ff6b;border-radius:6px;place-items:center;display:grid}.login-heading h2{letter-spacing:0;font-size:20px;line-height:1.2}.login-heading p{color:var(--muted);margin-top:5px;font-size:12px}.login-panel form{gap:15px;display:grid}.login-field{gap:7px;display:grid}.login-field>span{color:var(--muted);font-size:12px;font-weight:760}.login-field>div{border:1px solid var(--line);min-height:42px;color:var(--subtle);background:#041016ad;border-radius:6px;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:8px;padding:0 11px;display:grid}.login-field>div:focus-within{color:var(--accent-strong);border-color:#4be0ffad;box-shadow:0 0 0 3px #27d1ff1a}.login-field input{width:100%;min-width:0;height:40px;color:var(--text);background:0 0;border:0;outline:0;padding:0;font-size:14px}.login-field input::placeholder{color:#e2f5f861}.login-error{border-left:3px solid var(--danger);color:#ffd2d0;background:#6823226b;padding:8px 10px;font-size:12px;line-height:1.45}.login-submit{color:#03141a;background:#6ee7f7;border:1px solid #78ebff9e;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:42px;font-size:14px;font-weight:820;display:flex;box-shadow:0 12px 30px #025a7552}.login-submit:hover:not(:disabled){background:#a1f1f8}.login-submit:disabled{opacity:.56}.login-assurance{color:var(--subtle);align-items:center;gap:7px;font-size:11px;line-height:1.4;display:flex}.login-assurance svg{color:var(--ok);flex:none}.spin{animation:1s linear infinite session-spin}@keyframes session-spin{to{transform:rotate(360deg)}}.loading-shell,.fatal{background:radial-gradient(circle,#173544,#071217 62%);place-items:center;display:grid}.loading-card,.fatal{color:var(--text)}.loading-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-strong);min-width:300px;box-shadow:var(--shadow);text-align:center;gap:9px;padding:22px;display:grid}.loading-card svg{color:var(--accent-strong);justify-self:center}.loading-card strong,.fatal strong{font-size:18px}.loading-card span,.fatal span{color:var(--muted);font-size:13px}.route-editor{z-index:9;border:1px solid var(--line-strong);border-radius:var(--radius);width:420px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0a1b24f0;grid-template-rows:auto minmax(0,1fr);display:grid;position:absolute;top:92px;bottom:102px;left:18px;overflow:hidden}.route-editor-header{border-bottom:1px solid var(--line);background:#12303db8;justify-content:space-between;align-items:center;gap:10px;min-height:52px;padding:8px 10px;display:flex}.route-editor-header>div{gap:2px;min-width:0;display:grid}.route-editor-header span{color:var(--subtle);font-size:10px;font-weight:740}.route-editor-header strong{color:var(--text);font-size:14px;font-weight:840}.icon-button,.route-waypoint-actions button{border:1px solid var(--line);color:var(--muted);background:#0b1f29e0;border-radius:6px;place-items:center;display:grid}.icon-button{flex:none;width:32px;height:32px;padding:0}.icon-button:hover,.route-waypoint-actions button:hover:not(:disabled){color:var(--accent-strong);border-color:#4be0ff94}.route-editor-scroll{scrollbar-width:thin;scrollbar-color:#4be0ff80 #09171f80;align-content:start;gap:11px;min-height:0;padding:10px;display:grid;overflow:auto}.route-library,.route-editor-fields,.route-map-tools,.route-waypoint-editor,.route-version-section{gap:8px;display:grid}.route-editor-section-title{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.route-editor-section-title strong{color:var(--muted);font-size:11px;font-weight:820}.route-editor-section-title span{color:var(--subtle);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.route-library-row{grid-template-columns:minmax(0,1fr) 88px 32px;gap:6px;display:grid}.route-library-row select,.route-editor-fields input,.route-edit-waypoint input{border:1px solid var(--line);min-width:0;height:32px;color:var(--text);background:#07161dd6;border-radius:6px}.route-library-row select{padding:0 8px;font-size:11px;font-weight:720}.route-editor-fields{border-top:1px solid #ace2ef29;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);padding-top:10px}.route-editor-fields label,.route-edit-waypoint label{gap:4px;min-width:0;display:grid}.route-editor-fields label>span,.route-edit-waypoint label>span:first-child{color:var(--subtle);font-size:9px;font-weight:760}.route-editor-fields input,.route-edit-waypoint input{width:100%;padding:0 7px;font-size:11px}.route-new-primary,.route-inline-action{color:#fff;background:#12749ac7;border:1px solid #4be0ff8a;border-radius:6px;justify-content:center;align-items:center;gap:5px;min-width:0;font-size:10px;font-weight:820;display:inline-flex}.route-new-primary{height:32px;padding:0 8px}.route-inline-action{white-space:nowrap;min-height:25px;padding:0 7px}.route-workflow-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;display:grid}.route-workflow-steps span{color:#e2f5f885;text-align:center;white-space:nowrap;background:#0613198a;border:1px solid #ace2ef29;border-radius:5px;min-height:25px;padding:6px 5px;font-size:9px;font-weight:780}.route-workflow-steps span.active{color:#d7fcff;background:#146b8b61;border-color:#4be0ff6b}.route-safety-summary{border:1px solid #5bd3ee3d;border-left:3px solid var(--accent);background:#0b222cad;border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:8px;display:grid}.route-safety-summary>div{min-width:0}.route-safety-summary span,.route-safety-summary strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.route-safety-summary span{color:var(--subtle);font-size:9px;font-weight:720}.route-safety-summary strong{color:var(--text);margin-top:3px;font-size:11px;font-weight:820}.route-safety-summary strong.danger{color:var(--danger)}.route-safety-note{color:var(--accent-strong);grid-column:1/-1;margin:1px 0 0;font-size:10px;font-weight:780;line-height:1.35}.route-safety-note.danger{color:#ffc4c1}.route-safety-summary ul{color:#ffc4c1;border-top:1px solid #ff665f3d;grid-column:1/-1;gap:3px;margin:2px 0 0;padding:6px 6px 6px 22px;font-size:10px;line-height:1.35;display:grid}.route-map-tools{border-top:1px solid #ace2ef29;padding-top:9px}.segmented-route-tools{border:1px solid var(--line);background:#061319ad;border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:3px;display:grid}.segmented-route-tools button:last-child{grid-column:1/-1}.segmented-route-tools button,.route-persist-actions button,.route-version-toggle,.route-version-list button,.route-feedback button{border:1px solid var(--line);min-height:32px;color:var(--muted);background:#102b37b8;border-radius:5px;justify-content:center;align-items:center;gap:6px;font-size:10px;font-weight:780;display:flex}.segmented-route-tools button.active{color:#fff;background:#168bb5c7;border-color:#4be0ffad}.route-map-hint{color:var(--accent-strong);align-items:center;gap:6px;font-size:10px;line-height:1.35;display:flex}.route-map-hint.muted{color:var(--subtle)}.route-map-hint.danger{color:#ffc4c1}.route-edit-waypoint-list{gap:6px;display:grid}.route-edit-waypoint{border:1px solid var(--line);background:#081921ad;border-radius:6px;gap:7px;padding:7px;display:grid}.route-edit-waypoint.selected{background:#312d1cad;border-color:#ffd15d9e;box-shadow:inset 3px 0 #ffd15dcc}.route-waypoint-heading{grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:5px;display:grid}.route-waypoint-heading>svg{color:var(--subtle);cursor:grab}.route-waypoint-heading>svg.dragging{color:var(--warn)}.route-waypoint-heading strong{color:var(--accent-strong);font-size:10px;font-weight:840}.route-waypoint-actions{gap:3px;display:flex}.route-waypoint-actions button{width:25px;height:25px;padding:0}.route-coordinate-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;display:grid}.route-number-input{display:block;position:relative}.route-number-input small{color:var(--subtle);pointer-events:none;font-size:9px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.route-number-input:has(small) input{padding-right:22px}.route-empty-state{border:1px dashed var(--line);color:var(--subtle);text-align:center;border-radius:6px;padding:12px;font-size:10px;line-height:1.5}.route-feedback{border:1px solid var(--line);border-radius:6px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 8px;font-size:10px;line-height:1.35;display:grid}.route-feedback.danger{color:#ffc4c1;background:#6023226b;border-color:#ff665f61}.route-feedback.ok{color:#bcf6d8;background:#19553e61;border-color:#5fe6a257}.route-feedback button{min-height:26px;padding:0 7px}.route-persist-actions{z-index:2;background:linear-gradient(#0000,#0a1b24fa 20%);grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:8px 0 10px;display:grid;position:sticky;bottom:-10px}.route-persist-actions button.primary{color:#06171d;background:#70e7f4;border-color:#4be0ff9e}.route-action-reason{color:var(--warn);background:#392d1142;border:1px solid #ffd15d38;border-radius:6px;margin:-5px 0 0;padding:6px 8px;font-size:10px;font-weight:740;line-height:1.35}.route-persist-actions button:disabled,.segmented-route-tools button:disabled,.route-waypoint-actions button:disabled{opacity:.42}.route-version-section{border-top:1px solid #ace2ef29;padding-top:7px}.route-version-toggle{justify-content:flex-start;width:100%;padding:0 8px}.route-version-toggle span{margin-left:auto}.route-version-list{gap:5px;display:grid}.route-version-list article{border:1px solid var(--line);background:#08192194;border-radius:6px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 7px;display:grid}.route-version-list article>div{gap:2px;min-width:0;display:grid}.route-version-list strong,.route-version-list span,.route-version-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.route-version-list strong{color:var(--text);font-size:11px}.route-version-list span,.route-version-list small{color:var(--subtle);font-size:9px}.route-version-list button{min-height:27px;padding:0 7px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.scene.route-editing canvas{cursor:crosshair}@media (width<=1160px){.timeline-bar{grid-template-columns:minmax(330px,auto) 238px minmax(260px,1fr)}.timeline-bar .legend{display:none}.brand-block p{max-width:320px}}@media (width<=900px){body{overflow:hidden}.topbar{flex-direction:column;align-items:stretch;right:120px}.top-status{justify-content:flex-start}.status-chip{min-height:36px}.module-pill{display:none}.variable-rail{top:136px}.operation-panel{width:300px;max-height:calc(100dvh - 238px);top:142px;left:12px}.layer-panel{width:min(340px,100vw - 448px);bottom:96px;left:auto;right:124px}.timeline-bar{grid-template-columns:1fr 238px;min-height:76px;bottom:12px;left:12px;right:12px}.date-block,.timeline-bar .legend{display:none}.timeline{order:1;min-width:0}.transport{order:2}.route-summary,.route-driver-strip,.route-policy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.route-editor{width:auto;inset:118px 10px 96px}.operation-panel{width:300px;max-height:220px;bottom:auto;right:auto}.layer-panel{width:auto;max-height:174px;left:12px;right:12px}}@media (width<=640px){.login-brand{top:12px;left:12px;right:12px}.login-brand h1{font-size:16px}.login-panel{margin-top:56px;padding:20px}.topbar{top:10px;left:10px;right:10px}.brand-block{padding:9px 10px}.brand-mark{width:32px;height:32px}.brand-block h1{font-size:17px}.brand-block p{max-width:250px;font-size:11px}.top-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.status-chip{grid-template-columns:1fr;gap:3px;min-height:40px;padding:6px}.status-chip svg{display:none}.status-chip .chip-label,.status-chip strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.status-chip strong{font-size:12px}.session-trigger{grid-template-columns:auto minmax(0,1fr) auto;width:100%;min-height:40px;padding:6px}.session-menu{min-width:0}.session-popover{width:min(226px,100vw - 20px);position:fixed;top:112px;right:10px}.compass-control{display:none}.variable-rail{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:auto;inset:auto 10px 246px}.variable-button{min-height:34px;padding:0 8px;font-size:12px}.operation-panel{width:auto;max-height:196px;padding:8px;top:118px;left:10px;right:10px}.route-editor{top:118px}.route-editor-fields,.route-coordinate-grid{grid-template-columns:1fr}.operation-panel.collapsed{width:auto;right:10px}.layer-panel{max-height:142px;padding:8px;bottom:96px;overflow:auto}.layer-row,.quick-row,.basemap-switch,.camera-presets{grid-template-columns:repeat(2,minmax(0,1fr))}.select-row{grid-template-columns:54px minmax(0,1fr) minmax(0,1fr);gap:6px}.route-select-row,.route-operation .route-select-row{grid-template-columns:64px minmax(0,1fr);gap:6px}.control-range{grid-template-columns:60px minmax(0,1fr) 38px}.color-range-control{grid-template-columns:60px minmax(0,1fr) minmax(0,1fr) 30px;gap:6px}.timeline-bar{grid-template-columns:1fr;gap:8px}.transport{display:none}.current-time{min-width:160px}.timeline-readout{grid-template-columns:minmax(160px,max-content);padding:0 58px 0 0}.timeline-now{display:none}.time-labels{font-size:10px}.route-panel-backdrop{padding:12px}.route-panel{width:calc(100vw - 24px)}.route-summary,.route-driver-strip,.route-policy-grid{grid-template-columns:1fr}}.forecast-calendar-picker{min-width:0;color:var(--subtle);align-items:center;gap:5px;font-size:10px;display:flex}.forecast-calendar-trigger{min-width:156px;height:30px;color:var(--text);background:#091e25;border:1px solid #33515a;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:0 8px;display:flex}.forecast-calendar-trigger strong{white-space:nowrap;font-size:11px}.forecast-date-status{border-radius:50%;flex:0 0 6px;width:6px;height:6px}.forecast-date-status.ready{color:#062720;background:#51dca2}.forecast-date-status.degraded{color:#292006;background:#f4cf6c}.forecast-date-status.missing,.forecast-date-status.unavailable{color:#a7b7bd;background:#293c44}.forecast-calendar{z-index:1000;box-sizing:border-box;color:#eff8fb;letter-spacing:0;background:#10252d;border:1px solid #42606a;border-radius:8px;width:min(320px,100vw - 24px);max-height:calc(100dvh - 24px);padding:12px;font-family:inherit;position:fixed;overflow:auto;box-shadow:0 12px 36px #0008}.forecast-calendar header{justify-content:space-between;align-items:center;height:32px;margin-bottom:8px;display:flex}.forecast-calendar header strong{font-size:15px}.forecast-calendar header button{color:#dcebef;background:#162f38;border:1px solid #38545e;border-radius:4px;place-items:center;width:30px;height:30px;padding:0;display:grid}.forecast-calendar-week,.forecast-calendar-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.forecast-calendar-week{text-align:center;color:#acbec5;margin-bottom:5px;font-size:11px;line-height:24px}.forecast-calendar-days{grid-template-rows:repeat(6,40px)}.forecast-calendar-day{color:#a5f3cf;background:#173d37;border:1px solid #0000;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;padding:2px 0;line-height:1;display:flex}.forecast-calendar-day span{font-size:13px;font-weight:700}.forecast-calendar-dot{background:#51dca2;border-radius:50%;width:4px;height:4px}.forecast-calendar-day.degraded .forecast-calendar-dot{background:#f4cf6c}.forecast-calendar-day:disabled .forecast-calendar-dot{visibility:hidden}.forecast-calendar-day[aria-pressed=true] .forecast-calendar-dot{background:#06232e}.forecast-calendar-day:disabled{color:#83969f;opacity:1;cursor:default;background:#172d35}.forecast-calendar-day.degraded{color:#f4cf6c;background:#3b3421}.forecast-calendar-day[aria-pressed=true]{color:#06232e;background:#65cce8;border-color:#b5edff}.forecast-calendar-day:not(:disabled):hover{border-color:#7decd2}.forecast-calendar button:focus-visible,.forecast-calendar-trigger:focus-visible{outline-offset:2px;outline:2px solid #f4cf6c}.forecast-calendar footer{color:#bdcdd3;border-top:1px solid #2f4852;justify-content:center;gap:16px;margin-top:8px;padding-top:10px;font-size:10px;display:flex}.forecast-calendar footer span{align-items:center;gap:5px;display:flex}.forecast-calendar footer i{background:#82949d;border-radius:2px;width:6px;height:6px}.forecast-calendar footer i.ready{background:#51dca2}.forecast-calendar footer i.degraded{background:#f4cf6c}
