*{box-sizing:border-box}.traffic-chat{color:var(--ui-ink)}.traffic-chat-panel{min-height:0;max-height:max(160px, calc(100dvh - var(--workspace-timeline-bottom) - var(--workspace-bottom) - 24px));flex-direction:column;padding:8px 16px 12px;display:flex;overflow:hidden}.traffic-chat-panel .toolbox-heading{flex-shrink:0}.traffic-chat-note,.traffic-chat-footer small{color:var(--ui-muted);font-size:12px;line-height:1.5}.traffic-chat-note{margin:10px 0}.traffic-chat-log{overscroll-behavior:contain;flex:1;min-height:0;padding:4px 1px 12px;overflow-y:auto}.traffic-chat button,.traffic-chat textarea{font:inherit;color:inherit}.traffic-chat-message{background:color-mix(in srgb, var(--ui-ink) 6%, transparent);border-radius:16px;margin:10px 0;padding:12px;font-size:13px}.traffic-chat-message>strong{color:var(--ui-muted);font-size:11px}.traffic-chat-message p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;line-height:1.6}.traffic-chat-examples p{font-size:14px}.traffic-chat-examples button{text-align:left;border:1px solid color-mix(in srgb, var(--ui-muted) 20%, transparent);cursor:pointer;background:0 0;border-radius:12px;width:100%;margin:8px 0;padding:10px 12px;font-size:12px;line-height:1.5;display:block}.traffic-chat-proposals{border-top:1px solid color-mix(in srgb, var(--ui-muted) 20%, transparent);margin-top:12px;padding-top:10px}.traffic-chat-proposals small{margin:5px 0 12px;line-height:1.5;display:block}.traffic-chat-panel form{flex-shrink:0}.traffic-chat-panel textarea{resize:vertical;border:1px solid color-mix(in srgb, var(--ui-muted) 30%, transparent);background:color-mix(in srgb, var(--glass-panel-tint) 70%, transparent);border-radius:14px;width:100%;min-height:72px;max-height:160px;margin-top:6px;padding:12px;font-size:13px;display:block}.traffic-chat-panel textarea::placeholder{color:var(--ui-muted)}.traffic-chat-footer{justify-content:space-between;align-items:center;gap:10px;margin-top:10px;display:flex}.traffic-chat-footer button,.traffic-chat-proposals button{background:var(--ui-accent);color:var(--glass-panel-tint);cursor:pointer;border:0;border-radius:12px;padding:9px 14px;font-weight:600}.traffic-chat-footer button{font-family:inherit;font-size:12px;font-weight:600}.traffic-chat button:disabled{opacity:.5;cursor:default}.traffic-chat :is(button,textarea):focus-visible{outline:2px solid var(--ui-accent);outline-offset:3px}.traffic-chat textarea:focus-visible{outline-offset:-3px}.traffic-chat-error{color:var(--ui-ink);border:1px solid #bc735980;border-radius:12px;padding:8px 12px;font-size:12px;line-height:1.5}@keyframes chat-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.traffic-chat-panel{animation:none}}@property --ui-ink{syntax:"<color>";inherits:true;initial-value:#25465d}@property --ui-muted{syntax:"<color>";inherits:true;initial-value:#365268}@property --ui-accent{syntax:"<color>";inherits:true;initial-value:#1d5378}@property --glass-tint{syntax:"<color>";inherits:true;initial-value:#eff8fff0}@property --glass-panel-tint{syntax:"<color>";inherits:true;initial-value:#f2f9fff5}@property --glass-border{syntax:"<color>";inherits:true;initial-value:#ffffffdb}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ui-ink:#25465d;--ui-muted:#365268;--ui-accent:#1d5378;--glass-tint:#eff8fff0;--glass-panel-tint:#f2f9fff5;--glass-border:#ffffffdb;--glass-blur:10px;--glass-shadow:0 8px 28px #264e691f, 0 2px 5px #264e690d, inset 0 1px 0 #fffffff2, inset 0 -1px 0 #5e98bb24;--glass-inner:inset 0 1px 0 #ffffffe6, inset 0 -1px 0 #49799a1a;transition:--ui-ink 2.5s,--ui-muted 2.5s,--ui-accent 2.5s,--glass-tint 2.5s,--glass-panel-tint 2.5s,--glass-border 2.5s}@media (prefers-reduced-motion:reduce){:root{transition:none}}html,body{width:100%;height:100%;margin:0}body{color:var(--ui-ink);-webkit-font-smoothing:antialiased;background:#edf5fa;font-family:Avenir Next,Segoe UI,sans-serif}.glass-filter-definitions{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}:is(.map-message,.map-view-toggle,.map-zoom-controls,.map-provider-notice,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help,.closure-notice,:where(.closure-ghost>span,.closure-ghost small)),.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib){isolation:isolate;border:1px solid var(--glass-border);background:var(--glass-tint);box-shadow:var(--glass-shadow)}:is(.map-message,.map-view-toggle,.map-zoom-controls,.map-provider-notice,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help,.closure-notice,:where(.closure-ghost>span,.closure-ghost small)):before,.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib):before{z-index:-1;border-radius:inherit;pointer-events:none;content:"";background:linear-gradient(135deg,#ffffff1f,#0000 45%,#c1e1f80f);position:absolute;inset:0}.toolbox-panel,.closure-ghost>span,.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib){position:relative}.toolbox-panel,.closure-preview,.map-message,.map-provider-notice,.closure-placement-help,.closure-notice,.closure-ghost small,.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib){background:var(--glass-panel-tint)}button{-webkit-tap-highlight-color:transparent}:is(.map-view-toggle,.map-zoom-controls,.closure-toolbox,.closure-preview,.closure-placement-help,.map-error) button{transition:background-color .16s,border-color .16s,color .16s,transform .16s}.map-page,.map-container{width:100%;height:100%;position:absolute;inset:0}.map-message{z-index:1;max-width:min(420px,100% - 80px);color:var(--ui-ink);overflow-wrap:anywhere;border-radius:16px;margin:0;padding:12px 16px;font-size:13px;line-height:1.5;position:absolute;top:16px;left:50%;transform:translate(-50%)}.map-error{border-color:#be5b4a6b}.map-view-controls{z-index:3;position:absolute;top:16px;left:16px}.map-view-toggle{border-radius:17px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;height:48px;padding:5px;display:grid}.map-view-toggle button{width:100%;height:36px;color:var(--ui-ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:11px;place-items:center;padding:0;font:600 13px Avenir Next,Segoe UI,sans-serif;display:grid}.map-view-toggle button[aria-pressed=true]{box-shadow:0 2px 6px #34678c1a, var(--glass-inner);color:var(--ui-accent);background:#bfe2fa8c;border-color:#ffffffe6}.map-view-toggle button:not([aria-pressed=true]):hover{background:#ffffff59}.map-view-toggle button:disabled{opacity:.45;cursor:wait}.map-view-toggle button:focus-visible,.map-zoom-controls button:focus-visible{outline-offset:-3px;outline:2px solid #4384b1}.map-navigation-controls{z-index:3;position:absolute;top:16px;right:16px}.map-zoom-controls{border-radius:17px;display:grid;overflow:hidden}.map-zoom-controls button{width:100%;height:44px;color:var(--ui-ink);cursor:pointer;touch-action:manipulation;background:0 0;border:0;place-items:center;padding:0;display:grid}.map-zoom-controls button+button{border-top:1px solid #4d7d9d2b}.map-zoom-controls button:hover:not(:disabled){background:#ffffff61}.map-zoom-controls button:active:not(:disabled){background:#bfe2fa8c}.map-zoom-controls button:disabled{opacity:.35;cursor:default}.map-error p{margin:0 0 8px}.map-error button{box-shadow:var(--glass-inner);color:inherit;font:inherit;cursor:pointer;background:#ffffff80;border:1px solid #fffc;border-radius:9px;padding:6px 10px}.map-provider-notice{z-index:1;width:min(380px,100% - 32px);color:var(--ui-ink);border-radius:18px;padding:12px 16px;font-size:12px;line-height:1.6;position:absolute;bottom:40px;left:16px}.map-provider-notice p{margin:6px 0}.map-provider-notice code{overflow-wrap:anywhere;font-size:11px}.map-provider-notice a{color:#28628f;text-underline-offset:3px}.closure-toolbox{z-index:3;top:var(--workspace-tools-top,144px);color:var(--ui-ink);align-items:flex-start;gap:12px;width:48px;height:48px;display:flex;position:absolute;left:16px}.closure-toolbox .toolbox-morph{pointer-events:none;max-width:calc(100vw - 88px);position:absolute;top:0;left:60px}.closure-toolbox .toolbox-morph[data-open=true]{pointer-events:auto}.closure-toolbox .toolbox-morph>.toolbox-panel{max-width:calc(100vw - 88px)}.weather-menu{z-index:3;top:calc(var(--workspace-tools-top,144px) + 60px);width:48px;color:var(--ui-ink);position:absolute;left:16px}.weather-menu .weather-panel{width:min(282px,100vw - 88px);max-height:calc(100dvh - 200px);position:absolute;top:0;left:60px;overflow-y:auto}.closure-toolbox>.toolbox-floating-panel{max-width:calc(100vw - 88px);position:absolute;top:0;left:60px}.weather-active-dot{background:var(--ui-accent);pointer-events:none;border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}:is(.weather-menu,.weather-panel) button,.weather-panel input{color:inherit;font:inherit}:is(.weather-menu,.weather-panel) button{cursor:pointer}:is(.weather-menu,.weather-panel) :is(button,input):focus-visible{outline:2px solid var(--ui-accent);outline-offset:3px}.weather-summary{color:var(--ui-accent);margin:12px 0 20px;font-size:12px;font-weight:600}.weather-mode{margin-top:16px}.weather-mode button{flex:1}.weather-mode button:disabled{opacity:.45;cursor:default}.weather-current-details{color:var(--ui-muted);gap:5px;margin:-10px 0 20px;font-size:11px;line-height:1.5;display:grid}.weather-current-details p{margin:0}.weather-current-details a{color:var(--ui-accent);text-underline-offset:3px}.weather-current-details button{float:right;min-height:28px;color:var(--ui-accent);background:0 0;border:0;padding:0 4px;font-weight:600}.weather-current-details button:disabled{cursor:default}.weather-slider-group+.weather-slider-group{margin-top:20px}.weather-slider-heading,.weather-slider-heading label,.weather-slider-scale{justify-content:space-between;align-items:center;gap:8px;display:flex}.weather-slider-heading label{font-size:14px;font-weight:600}.weather-slider-heading output{color:var(--ui-muted);text-align:right;font-size:11px}.weather-slider-heading output span{color:var(--ui-accent);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;display:block}.weather-slider-group input{width:100%;height:36px;accent-color:var(--ui-accent);cursor:pointer;margin:4px 0 0;display:block}.weather-slider-scale{color:var(--ui-muted);font-size:10px}.weather-panel .weather-clear{border:1px solid var(--glass-border);background:color-mix(in srgb, var(--ui-accent) 9%, transparent);width:100%;min-height:40px;color:var(--ui-accent);border-radius:12px;margin-top:24px;font-size:12px;font-weight:600}.weather-panel .weather-clear:disabled{opacity:.5;cursor:default}.weather-note{color:var(--ui-muted);margin:12px 0 0;font-size:11px;line-height:1.6}.weather-atmosphere,.weather-precipitation{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.weather-atmosphere{z-index:1}.closure-toolbox button,.toolbox-panel button,.closure-preview button,.closure-placement-help button{font:inherit;cursor:pointer}.toolbox-glass-shell{isolation:isolate;flex-shrink:0;position:relative}.toolbox-glass-button{border-radius:17px;width:48px;height:48px}.toolbox-glass-panel{border-radius:24px;width:282px}.toolbox-glass-view{border-radius:17px;width:114px;height:48px}.toolbox-glass-navigation{border-radius:17px;width:48px}.toolbox-glass-shell>:is(.toolbox-toggle,.toolbox-panel,.toolbox-morph,.map-view-toggle,.map-zoom-controls){z-index:1;width:100%;position:relative}.toolbox-glass-shell[data-enhanced=true]>:is(.toolbox-toggle,.toolbox-panel,.toolbox-morph,.map-view-toggle,.map-zoom-controls):before,.toolbox-glass-shell[data-enhanced=true]>:is(.toolbox-toggle,.toolbox-panel,.toolbox-morph,.map-view-toggle,.map-zoom-controls):after{display:none}.toolbox-glass-optics{z-index:0;border-radius:inherit;pointer-events:none;position:absolute;inset:0;overflow:hidden}.toolbox-glass-optics>.bg-black{display:none}.toolbox-glass-optics .toolbox-liquid-lens>.glass{width:100%;height:100%;box-shadow:none!important;display:block!important}.toolbox-glass-optics *{transition:none!important}.toolbox-toggle{width:48px;height:48px;color:var(--ui-ink);border-radius:17px;place-items:center;padding:0;display:grid;position:relative}.toolbox-toggle[aria-expanded=true]{color:var(--ui-accent);background:#bfe2fa8c;border-color:#fffffff2}.toolbox-toggle:hover{transform:translateY(-1px)}.toolbox-toggle:active{transform:scale(.96)}.toolbox-count{z-index:2;color:#fff;font-variant-numeric:tabular-nums;pointer-events:none;background:#b84439;border:2px solid #ffffffe6;border-radius:12px;place-items:center;min-width:19px;height:19px;padding:0 4px;font-size:10px;font-weight:700;line-height:1;display:grid;position:absolute;top:-5px;right:-5px;box-shadow:0 2px 5px #a13a2f2e}.toolbox-panel,.closure-preview{border-radius:24px;width:282px;padding:20px;animation:.18s ease-out glass-reveal}.toolbox-panel{scrollbar-width:thin;scrollbar-color:#5482a159 transparent;max-height:calc(100dvh - 120px);overflow-y:auto}.toolbox-heading,.closure-preview-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.toolbox-eyebrow{color:var(--ui-muted);letter-spacing:.1em;font-size:10px;font-weight:700;line-height:1.5}.toolbox-heading h2{letter-spacing:-.035em;margin:4px 0 0;font-size:19px;font-weight:650}.toolbox-close{width:32px;height:32px;color:var(--ui-muted);background:0 0;border:0;border-radius:11px;flex-shrink:0;place-items:center;padding:0;display:grid}.toolbox-close:hover{color:var(--ui-ink);background:#ffffff94}.disruption-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px;display:grid}[data-kind=closure]{--disruption-color:#c75044;--disruption-ink:#8c392f;--disruption-rgb:199 80 68}[data-kind=event]{--disruption-color:#7454b6;--disruption-ink:#56388f;--disruption-rgb:116 84 182}[data-kind=accident]{--disruption-color:#c03e59;--disruption-ink:#972b43;--disruption-rgb:192 62 89}[data-kind=construction]{--disruption-color:#ae671b;--disruption-ink:#7c4a12;--disruption-rgb:174 103 27}.closure-drag-tool{background:linear-gradient(125deg, rgb(var(--disruption-rgb) / 10%), #fff3);width:100%;box-shadow:var(--glass-inner), 0 3px 12px #264e690d;color:var(--disruption-ink);text-align:left;touch-action:none;-webkit-user-select:none;user-select:none;border:1px solid #ffffffdb;border-radius:17px;flex-direction:column;align-items:flex-start;gap:0;margin:0;padding:12px;display:flex;position:relative;cursor:grab!important}.closure-drag-tool:hover,.closure-drag-tool[aria-pressed=true]{border-color:rgb(var(--disruption-rgb) / 45%);background:linear-gradient(125deg, rgb(var(--disruption-rgb) / 18%), #fff6)}.closure-drag-tool:active{cursor:grabbing!important}.closure-drag-tool:disabled{opacity:.55;cursor:wait!important}.closure-tool-icon{background:linear-gradient(135deg, #ffffffa6, rgb(var(--disruption-rgb,199 80 68) / 20%));width:36px;height:36px;box-shadow:var(--glass-inner);color:var(--disruption-ink,#a24132);border:1px solid #ffffffbf;border-radius:12px;flex-shrink:0;place-items:center;display:grid}.closure-drag-tool strong,.closure-drag-tool small{display:block}.closure-drag-tool strong{margin-top:10px;font-size:12px;font-weight:650;line-height:1.4}.closure-drag-tool small{color:var(--ui-muted);margin-top:5px;font-size:10px}.closure-grip{color:var(--disruption-ink);opacity:.6;font-size:21px;position:absolute;top:10px;right:10px}.toolbox-help{color:var(--ui-muted);margin:11px 0 17px;font-size:11px;line-height:1.65}.toolbox-loading{color:var(--ui-muted);margin:0 0 12px;font-size:11px}.toolbox-coverage{color:var(--ui-muted);border-top:1px solid #5984a22b;justify-content:space-between;align-items:center;gap:6px;padding-top:13px;font-size:11px;display:flex}.toolbox-coverage button,.toolbox-load-error button{color:var(--ui-accent);background:0 0;border:0;padding:5px 0;font-size:11px}.toolbox-load-error{color:#9a4338;font-size:12px}.closure-list{border-top:1px solid #5984a22b;margin-top:18px;padding-top:15px}.closure-list>button{width:100%;color:var(--ui-ink);text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:9px;margin-top:6px;padding:9px 6px;font-size:12px;display:flex}.closure-list>button:hover{background:#ffffff80}.closure-list>button>span:nth-child(2){overflow-wrap:anywhere;flex:1;min-width:0}.disruption-list-icon{width:22px;color:var(--disruption-ink);flex-shrink:0;place-items:center;display:grid}.disruption-list-icon svg{width:18px;height:18px}.closure-list small{color:var(--ui-muted);margin-top:4px;font-size:11px;display:block}.closure-list-dot,.closure-status-dot{background:var(--disruption-color,#da594b);border-radius:50%;flex-shrink:0;width:7px;height:7px}.disruption-markers{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.disruption-marker{visibility:hidden;background:var(--disruption-color);color:#fff;pointer-events:auto;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border:1px solid #fffffff2;border-radius:13px;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:0;left:0;box-shadow:0 4px 12px #264e6938,inset 0 1px #ffffff59}.disruption-marker:after{background:var(--disruption-color);pointer-events:none;content:"";border-bottom:1px solid #fffffff2;border-right:1px solid #fffffff2;width:8px;height:8px;position:absolute;bottom:-5px;left:17px;transform:rotate(45deg)}.disruption-marker:active{cursor:grabbing}.disruption-marker:focus-visible{outline-offset:4px;outline:2px solid #215c83}.disruption-marker.is-preview{pointer-events:none;border-style:dashed}.disruption-markers[data-models=true] .disruption-marker{color:var(--disruption-ink);background:#f2f9ffe0;border-color:#ffffffe6;box-shadow:0 3px 10px #264e6929}.disruption-markers[data-models=true] .disruption-marker:after{background:linear-gradient(var(--disruption-color), transparent);border:0;width:1px;height:27px;bottom:-28px;left:21px;transform:none}.disruption-markers.is-placing .disruption-marker{opacity:.6;pointer-events:none}.closure-preview{z-index:4;width:320px;color:var(--ui-ink);position:absolute;bottom:32px;left:76px}.closure-preview-heading>div{flex:1;min-width:0}.closure-preview h2{overflow-wrap:anywhere;letter-spacing:-.025em;margin:3px 0 0;font-size:16px;font-weight:650;line-height:1.35}.closure-preview p{color:var(--ui-muted);margin:18px 0 0;font-size:12px;line-height:1.5}.closure-preview .closure-direction{color:var(--ui-muted);margin-top:4px;font-size:11px}.disruption-editor{scrollbar-width:thin;max-height:calc(100dvh - 112px);overflow-y:auto}.disruption-editor .disruption-location{margin-top:14px;font-size:11px}.disruption-field{min-width:0;color:var(--ui-ink);gap:6px;margin-top:12px;font-size:12px;font-weight:600;display:grid}.disruption-field input,.disruption-field select{width:100%;min-width:0;min-height:38px;box-shadow:var(--glass-inner);color:var(--ui-ink);background:#ffffff80;border:1px solid #ffffffe6;border-radius:10px;padding:9px 10px;font:400 12px Avenir Next,Segoe UI,sans-serif}.disruption-select{min-width:0;display:block;position:relative}.disruption-select select{appearance:none;padding-inline-end:40px}.disruption-select>svg{top:50%;pointer-events:none;width:16px;height:16px;position:absolute;inset-inline-end:12px;transform:translateY(-50%)rotate(90deg)}.disruption-field input:focus-visible,.disruption-field select:focus-visible{outline-offset:1px;outline:2px solid #4384b1}.disruption-optional{color:var(--ui-muted);font-size:10px;font-weight:400}.disruption-schedule{border:0;margin:16px 0 0;padding:0}.disruption-schedule legend{color:var(--ui-ink);padding:0;font-size:12px;font-weight:600}.disruption-schedule .disruption-field{margin-top:9px;font-size:11px}.disruption-editor .disruption-form-error{color:#963e33;margin-top:12px;font-size:12px}.closure-preview-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.closure-preview-actions button{min-height:38px;box-shadow:var(--glass-inner);color:var(--ui-ink);background:#ffffff7a;border:1px solid #ffffffd9;border-radius:12px;padding:9px 12px;font-size:12px;font-weight:600}.closure-preview-actions .closure-apply{color:#fff;background:linear-gradient(145deg,#b55243,#a63f34);border-color:#ffdacda6;box-shadow:inset 0 1px #ffffff40,0 3px 8px #a13a2f26}.closure-preview-actions .closure-remove{color:#963e33;border-color:#be5b4a3d}.disruption-editor .closure-apply{background:var(--disruption-ink);border-color:#ffffffa6}.closure-preview-actions button:hover{transform:translateY(-1px)}.closure-preview-actions button:active{transform:scale(.97)}.closure-placement-help{z-index:4;width:max-content;max-width:calc(100% - 32px);color:var(--ui-ink);border-radius:18px;align-items:center;gap:10px;padding:10px 12px 10px 16px;font-size:12px;display:flex;position:absolute;bottom:32px;left:50%;transform:translate(-50%)}.closure-placement-help button{box-shadow:var(--glass-inner);color:var(--ui-muted);background:#fff6;border:1px solid #ffffffb3;border-radius:10px;flex-shrink:0;padding:7px 8px;font-size:11px}.closure-placement-help kbd{opacity:.7;margin-left:5px;font-family:inherit;font-size:10px}.closure-ghost{z-index:10;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;transform:translate(-50%,-50%)}.closure-ghost>span{width:42px;height:42px;color:var(--ui-muted);border-radius:14px;place-items:center;display:grid}.closure-ghost.is-snapped>span{background:var(--disruption-color,#b54435);color:#fff}.closure-ghost small{width:max-content;max-width:220px;color:var(--ui-ink);text-align:center;border-radius:10px;padding:6px 9px;font-size:11px;line-height:1.4;position:absolute;top:49px}.closure-announcement{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.closure-notice{z-index:2;max-width:min(440px,100% - 32px);color:var(--ui-ink);border-radius:16px;margin:0;padding:12px 16px;font-size:12px;line-height:1.5;position:absolute;bottom:32px;left:50%;transform:translate(-50%)}.closure-toolbox button:focus-visible,.toolbox-panel button:focus-visible,.closure-preview button:focus-visible,.closure-placement-help button:focus-visible{outline-offset:3px;outline:2px solid #4384b1}.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib){max-width:calc(100vw - 24px);color:var(--ui-muted);border-radius:8px;margin:0 8px 6px 0;padding:2px 7px;font-family:inherit;font-size:9px;line-height:14px}.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib) a{color:var(--ui-ink)}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root{--glass-tint:#ecf7ff73;--glass-panel-tint:#f2f9ffa3}:is(.map-message,.map-view-toggle,.map-zoom-controls,.map-provider-notice,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help,.closure-notice,:where(.closure-ghost>span,.closure-ghost small)):before,.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib):before{-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.35);backdrop-filter:blur(var(--glass-blur)) saturate(1.35)}}@supports ((-webkit-backdrop-filter:url("#radio-glass")) or (backdrop-filter:url("#radio-glass"))){:is(.map-view-toggle,.map-zoom-controls,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help):after{z-index:-1;border-radius:inherit;-webkit-backdrop-filter:url(#radio-glass);backdrop-filter:url(#radio-glass);-webkit-mask-composite:xor;pointer-events:none;content:"";padding:6px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}}@keyframes glass-reveal{0%{opacity:0;transform:translateY(5px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.toolbox-panel,.closure-preview{animation:none}:is(.map-view-toggle,.map-zoom-controls,.closure-toolbox,.closure-preview,.closure-placement-help,.map-error) button{transition:none}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){:root{--glass-tint:#edf6fc;--glass-panel-tint:#f4f9fd;--glass-border:#9ebdd2}:is(.map-message,.map-view-toggle,.map-zoom-controls,.map-provider-notice,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help,.closure-notice,:where(.closure-ghost>span,.closure-ghost small)):before,:is(.map-view-toggle,.map-zoom-controls,.toolbox-toggle,.toolbox-panel,.toolbox-morph,.closure-preview,.closure-placement-help):after,.map-page :is(.mapboxgl-ctrl-attrib,.maplibregl-ctrl-attrib):before{display:none}.toolbox-toggle[aria-expanded=true]{background:#cce8fa}.closure-ghost.is-snapped>span{background:var(--disruption-ink,#ac4135)}}@media (max-width:520px){:root{--glass-blur:8px}.map-message{z-index:5;width:calc(100% - 32px);max-width:none;top:142px}.closure-toolbox{gap:8px}.toolbox-panel{width:min(282px,100vw - 88px);padding:14px}.toolbox-glass-panel{width:min(282px,100vw - 88px)}.closure-preview{width:auto;bottom:62px;left:12px;right:12px}.disruption-editor{max-height:calc(100dvh - 150px)}.closure-placement-help{font-size:11px;bottom:62px}.closure-notice{bottom:62px}}.traffic-ui{z-index:3;pointer-events:none;position:absolute;inset:0}.traffic-ui [data-map-ui],.traffic-status{pointer-events:auto}.traffic-controls-shell{width:min(740px,100% - 180px);position:absolute;bottom:44px;left:50%;translate:-50%}.traffic-legend-shell,.road-panel-shell{width:282px;position:absolute;top:86px;right:20px}.traffic-ui .toolbox-glass-panel{width:100%}:is(.traffic-controls,.traffic-legend,.road-panel){z-index:1;isolation:isolate;border:1px solid var(--glass-border);background:var(--glass-panel-tint);box-shadow:var(--glass-shadow);color:var(--ui-ink);border-radius:24px;margin:0;padding:16px 18px;font-size:12px;line-height:1.5;position:relative}:is(.traffic-controls,.traffic-legend,.road-panel):before{z-index:-1;border-radius:inherit;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.35);backdrop-filter:blur(var(--glass-blur)) saturate(1.35);pointer-events:none;content:"";position:absolute;inset:0}.toolbox-glass-shell[data-enhanced=true]>:is(.traffic-controls,.traffic-legend,.road-panel):before{display:none}:is(.traffic-ui,.traffic-controls,.road-panel) button,.traffic-controls input{font:inherit}:is(.traffic-ui,.traffic-controls,.road-panel) button{color:inherit;cursor:pointer}.traffic-ui button:focus-visible,.traffic-ui input:focus-visible{outline-offset:3px;outline:2px solid #4384b1}.traffic-controls-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.traffic-play{background:#b6dbf380;border:1px solid #fffc;border-radius:15px;flex:none;place-items:center;width:44px;height:44px;padding:13px;display:grid}.traffic-play svg{fill:currentColor;width:16px;height:16px}.traffic-clock{flex-direction:column;flex:1;min-width:170px;display:flex}.traffic-clock-group{flex:1;align-items:center;gap:12px;display:flex}.traffic-clock-group .traffic-clock{min-width:120px}.simulation-date-trigger{border:1px solid var(--glass-border);white-space:nowrap;background:#badaef42;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:7px;min-height:44px;padding:8px 10px;display:inline-flex}.simulation-date-trigger span{font-size:12px;font-weight:600}.simulation-date-trigger:hover,.simulation-date-trigger[aria-expanded=true]{background:color-mix(in srgb, var(--ui-accent) 12%, var(--glass-panel-tint))}.simulation-calendar{z-index:10;border:1px solid var(--glass-border);background:var(--glass-panel-tint);width:min(320px,100vw - 24px);max-height:calc(100dvh - 24px);box-shadow:var(--glass-shadow);color:var(--ui-ink);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border-radius:24px;padding:12px;position:fixed;overflow-y:auto}.simulation-calendar button,.simulation-calendar select{min-height:40px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;font-size:13px}.simulation-calendar button:hover,.simulation-calendar select:hover{background:color-mix(in srgb, var(--ui-accent) 10%, transparent)}.simulation-calendar :is(button,select):focus-visible{outline:2px solid var(--ui-accent);outline-offset:-2px}.simulation-calendar-heading,.simulation-calendar-navigation,.simulation-calendar-footer{justify-content:space-between;align-items:center;gap:4px;display:flex}.simulation-calendar-heading>span{color:var(--ui-muted);letter-spacing:.08em;padding-left:6px;font-size:10px;font-weight:700}.simulation-calendar .simulation-calendar-close{width:40px;font-size:22px}.simulation-calendar-navigation>button{flex:none;width:40px;font-size:24px}.simulation-calendar-month{align-items:center;min-width:0;display:flex}.simulation-calendar-month select{max-width:130px;padding:0 4px;font-weight:600}.simulation-calendar-month option{background:var(--glass-panel-tint);color:var(--ui-ink)}.simulation-calendar-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;display:grid}.simulation-calendar-week [role=columnheader]{color:var(--ui-muted);text-align:center;padding:8px 0;font-size:11px}.simulation-calendar-week button{font-variant-numeric:tabular-nums;padding:0}.simulation-calendar-week [data-outside=true]{color:color-mix(in srgb, var(--ui-muted) 60%, transparent)}.simulation-calendar-week [aria-current=date]{box-shadow:inset 0 0 0 1px var(--ui-accent);font-weight:700}.simulation-calendar-week [aria-selected=true]{background:var(--ui-accent);color:var(--glass-panel-tint);font-weight:700}.simulation-calendar-week [aria-selected=true]:hover{background:var(--ui-ink)}.simulation-calendar-footer{border-top:1px solid var(--glass-border);color:var(--ui-muted);margin-top:8px;padding-top:6px;font-size:11px}.simulation-calendar-footer button{color:var(--ui-accent);padding:0 10px;font-weight:600}.simulation-calendar-note{color:var(--ui-muted);margin:4px 6px 0;font-size:10px;line-height:1.5}.traffic-clock strong{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:22px;line-height:1.2}.traffic-clock span,.traffic-estimate{color:var(--ui-muted);font-size:11px}.traffic-estimate{margin:9px 0 0}.traffic-segmented{background:#badaef42;border-radius:12px;flex-wrap:wrap;gap:2px;padding:3px;display:flex}.traffic-segmented button{background:0 0;border:0;border-radius:9px;min-height:34px;padding:5px 8px;font-size:11px;font-weight:600}.traffic-segmented button[aria-pressed=true]{background:#fffc;box-shadow:0 1px 4px #264e691a}.traffic-timeline{margin-top:10px;position:relative}.traffic-profile{pointer-events:none;width:100%;height:30px;position:absolute;inset:4px 0 auto}.traffic-profile path{fill:#71b1d959}.traffic-timeline input[type=range]{cursor:pointer;appearance:none;background:0 0;width:100%;height:38px;margin:0;position:relative}.traffic-timeline input[type=range]::-webkit-slider-runnable-track{background:0 0;border-bottom:2px solid #8fb9d4;height:32px}.traffic-timeline input[type=range]::-moz-range-track{background:0 0;border-bottom:2px solid #8fb9d4;height:32px}.traffic-timeline input[type=range]::-webkit-slider-thumb{appearance:none;background:#36799f;border:3px solid #f0f8fe;border-radius:8px;width:14px;height:32px;box-shadow:0 1px 5px #264e6933}.traffic-timeline input[type=range]::-moz-range-thumb{background:#36799f;border:3px solid #f0f8fe;border-radius:8px;width:9px;height:26px}.traffic-ticks,.road-panel-axis{color:var(--ui-muted);justify-content:space-between;font-size:10px;display:flex}.traffic-legend-toggle{text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:32px;padding:0;display:flex;font-weight:650!important}.traffic-legend-toggle small{color:var(--ui-muted);margin-left:5px;font-size:10px;font-weight:500}.traffic-legend ul{margin:10px 0;padding:0;list-style:none}.traffic-legend li{align-items:center;gap:9px;margin:6px 0;display:flex}.traffic-legend li i{border-radius:3px;width:22px;height:5px}.traffic-legend p,.road-panel p{color:var(--ui-muted);margin:10px 0 0}.traffic-link{text-underline-offset:3px;background:0 0;border:0;min-height:36px;margin-top:6px;padding:0;text-decoration:underline}.traffic-method{max-height:min(340px,40dvh);overflow:auto}.traffic-method .traffic-sources{padding-left:16px;list-style:outside}.traffic-method .traffic-sources li{display:list-item}.traffic-method a{color:var(--ui-accent)}.traffic-licence{font-size:10px}.road-panel{max-height:calc(100dvh - 300px);overflow:auto}.road-panel header{justify-content:space-between;gap:12px;display:flex}.road-panel h2{letter-spacing:-.025em;margin:0;font-size:17px;line-height:1.3}.road-panel header p,.road-panel-source,.road-panel-note{font-size:11px}.road-panel-close{background:#badaef4d;border:0;border-radius:50%;flex:none;width:32px;height:32px;padding:0;font-size:22px!important}.road-panel-level{border-left:3px solid;flex-wrap:wrap;align-items:center;gap:5px;padding-left:10px;display:flex}.road-panel-level i{border-radius:50%;width:7px;height:7px}.road-panel-level span{width:100%;font-size:11px}.road-panel-stats{grid-template-columns:1fr 1fr;gap:14px 8px;margin:18px 0;display:grid}.road-panel-stats dt{color:var(--ui-muted);font-size:10px}.road-panel-stats dd{font-variant-numeric:tabular-nums;margin:3px 0 0;font-size:21px;line-height:1.2}.road-panel-stats small{font-size:10px}.road-panel-chart{margin:18px 0}.road-panel-chart figcaption{color:var(--ui-muted);margin-bottom:8px;font-size:10px}.road-panel-chart svg{width:100%;display:block;overflow:visible}.road-panel-capacity{stroke:#809eb1;stroke-dasharray:3 4}.road-panel-area{fill:#599cc52b}.road-panel-line{fill:none;stroke:#4b88af;stroke-width:1.5px}.road-panel-now{stroke:#25465d;stroke-width:1.5px}.traffic-status{border:1px solid var(--glass-border);background:var(--glass-panel-tint);border-radius:14px;max-width:calc(100% - 40px);margin:0;padding:10px 14px;font-size:12px;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.traffic-status-error{top:20px;bottom:auto}.traffic-status button{background:0 0;border:0;text-decoration:underline}.map-provider-dismiss{float:right;width:30px;height:30px;color:var(--ui-ink);cursor:pointer;background:#badaef4d;border:0;border-radius:50%;margin:-4px -4px 4px 8px;font-size:20px}@media (max-width:1050px){.traffic-controls-shell{width:min(660px,100% - 40px)}.traffic-controls-row .traffic-segmented:last-child{flex:1 0 auto}}@media (max-width:680px){.traffic-controls-shell{width:calc(100% - 24px);bottom:44px}.traffic-controls{padding:12px 14px}.traffic-controls-row{gap:7px}.traffic-clock{min-width:140px}.traffic-clock strong{font-size:20px}.traffic-clock span{font-size:10px}.traffic-segmented button{min-height:36px}.traffic-legend-shell,.road-panel-shell{width:min(250px,100% - 90px);top:80px;right:12px}.road-panel{max-height:calc(100dvh - 350px)}.map-page:has(.toolbox-toggle[aria-expanded=true]) .traffic-legend-shell{display:none}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){:is(.traffic-controls,.traffic-legend,.road-panel):before{display:none}}:root[data-sim-theme=night]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ui-ink:#e1edf6;--ui-muted:#aac2d5;--ui-accent:#a0d3f4;--glass-tint:#132739f0;--glass-panel-tint:#14283bf5;--glass-border:#9ac0db3b;--glass-shadow:0 8px 28px #00091347, 0 2px 5px #00091333, inset 0 1px 0 #c4e0f424, inset 0 -1px 0 #04132066;--glass-inner:inset 0 1px 0 #b9d9ef1f, inset 0 -1px 0 #020e1947}:root[data-sim-theme=night] body{background:#101d2b}:root[data-sim-theme=night] [data-kind=closure]{--disruption-ink:#ffb2a7}:root[data-sim-theme=night] [data-kind=event]{--disruption-ink:#d2b9ff}:root[data-sim-theme=night] [data-kind=accident]{--disruption-ink:#ffafc0}:root[data-sim-theme=night] [data-kind=construction]{--disruption-ink:#f6ce97}:root[data-sim-theme=night] :is(.map-view-toggle button[aria-pressed=true],.toolbox-toggle[aria-expanded=true],.traffic-segmented button[aria-pressed=true]){color:var(--ui-ink);background:#5991b94d;border-color:#9ac7e64d}:root[data-sim-theme=night] :is(.map-error button,.toolbox-close,.road-panel-close,.map-provider-dismiss,.closure-placement-help button,.closure-preview-actions button){border-color:var(--glass-border);color:var(--ui-ink);background:#6a9fc424}:root[data-sim-theme=night] .closure-drag-tool{border-color:var(--glass-border);background:linear-gradient(125deg, rgb(var(--disruption-rgb) / 23%), #203a4f59)}:root[data-sim-theme=night] .closure-drag-tool:is(:hover,[aria-pressed=true]){border-color:rgb(var(--disruption-rgb) / 65%);background:linear-gradient(125deg, rgb(var(--disruption-rgb) / 35%), #304e6466)}:root[data-sim-theme=night] .closure-tool-icon{border-color:rgb(var(--disruption-rgb,199 80 68) / 35%);background:linear-gradient(135deg, #3752688c, rgb(var(--disruption-rgb,199 80 68) / 25%))}:root[data-sim-theme=night] :is(.disruption-field input,.disruption-field select){border-color:var(--glass-border);color:var(--ui-ink);background:#0b1d2ca6}:root[data-sim-theme=night] :is(){color:var(--ui-muted)}:root[data-sim-theme=night] .disruption-field option{color:var(--ui-ink);background:#152b3e}:root[data-sim-theme=night] .disruption-editor .closure-apply{background:var(--disruption-color);color:#f5faff}:root[data-sim-theme=night] :is(.closure-preview-actions .closure-remove,.disruption-editor .disruption-form-error,.toolbox-load-error){color:#ffb2a7}:root[data-sim-theme=night] .disruption-markers[data-models=true] .disruption-marker{border-color:var(--glass-border);color:var(--disruption-ink);background:#14283beb}:root[data-sim-theme=night] :is(.closure-list button,.toolbox-coverage){border-color:var(--glass-border)}:root[data-sim-theme=night] :is(.closure-list>button:hover,.toolbox-close:hover,.road-panel-close:hover){background:#70a5ca33}:root[data-sim-theme=night] :is(.toolbox-coverage button,.toolbox-load-error button,.map-provider-notice a){color:var(--ui-accent)}:root[data-sim-theme=night] .traffic-play{border-color:var(--glass-border);background:#4f8bb44d}:root[data-sim-theme=night] .traffic-segmented{background:#07172459}:root[data-sim-theme=night] .traffic-profile path{fill:#6aaeda52}:root[data-sim-theme=night] .traffic-timeline input[type=range]::-webkit-slider-thumb{background:#b4dcf6;border-color:#294960}:root[data-sim-theme=night] .traffic-timeline input[type=range]::-moz-range-thumb{background:#b4dcf6;border-color:#294960}:root[data-sim-theme=night] .road-panel-now{stroke:#c0dff3}:root[data-sim-theme=night] .road-panel-line{stroke:#8bc3e7}:root[data-sim-theme=night] .road-panel-area{fill:#7fbae12e}:root[data-sim-theme=night] .map-zoom-controls button:hover:not(:disabled),:root[data-sim-theme=night] .map-view-toggle button:hover:not(:disabled){background:#70a5ca33}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root[data-sim-theme=night]{--glass-tint:#112436a8;--glass-panel-tint:#14283bcc}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){:root[data-sim-theme=night]{--glass-tint:#142b3e;--glass-panel-tint:#183247;--glass-border:#64849c}}.rerouting-status{max-width:min(520px,100% - 32px);bottom:170px}.rerouting-status span{opacity:.7;margin-top:4px;display:block}.toolbox-panel .scenario-reset{border:1px solid var(--glass-border);background:var(--glass-panel-tint);width:100%;color:var(--ui-ink);border-radius:10px;padding:10px 14px;font:650 12px Avenir Next,Segoe UI,sans-serif}.scenario-reset:disabled{opacity:.45;cursor:default}.sliding-control{isolation:isolate;position:relative}.sliding-control-highlight{z-index:0;pointer-events:none;outline-offset:-1px;background:#fffc;border-radius:9px;outline:1px solid #6497b940;transition:transform .5s cubic-bezier(.4,0,.2,1),width .5s cubic-bezier(.4,0,.2,1),height .5s cubic-bezier(.4,0,.2,1);position:absolute;top:0;left:0;box-shadow:0 1px 4px #264e691a}.map-view-toggle .sliding-control-highlight{box-shadow:0 2px 6px #34678c1a, var(--glass-inner);background:#bfe2fa8c;border:1px solid #ffffffe6;border-radius:11px}.sliding-control>button{z-index:1;transition:color .18s;position:relative}:root .sliding-control[data-measured=true]>button[aria-pressed=true]{box-shadow:none;background:0 0;border-color:#0000}:root[data-sim-theme=night] .sliding-control-highlight{background:#5991b94d;border-color:#9ac7e64d}.traffic-time-indicator-track{z-index:2;pointer-events:none;height:32px;position:absolute;top:3px;left:7px;right:7px}.traffic-time-indicator{background:#36799f;border:3px solid #f0f8fe;border-radius:8px;width:14px;height:32px;transition:left .22s ease-out;position:absolute;transform:translate(-50%);box-shadow:0 1px 5px #264e6933}.traffic-timeline input[type=range]::-webkit-slider-thumb{opacity:0}.traffic-timeline input[type=range]::-moz-range-thumb{box-sizing:border-box;opacity:0;width:14px}.traffic-timeline[data-scrubbing=true] .traffic-time-indicator{transition:none}:root[data-sim-theme=night] .traffic-time-indicator{background:#b4dcf6;border-color:#294960}@media (prefers-reduced-motion:reduce){.sliding-control-highlight,.sliding-control>button,.traffic-time-indicator{transition:none}}.closure-notice{top:20px;bottom:auto}.traffic-estimate-retry{color:var(--ui-accent);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.traffic-compare{float:right;margin:6px 0 0 8px}.toolbox-morph{will-change:width, height;border-radius:17px;width:48px;height:48px;transition:background-color .3s;position:relative;overflow:hidden}.toolbox-morph[data-open=true]{background:var(--glass-panel-tint)}.closure-toolbox .toolbox-morph>:is(.toolbox-toggle,.toolbox-panel){position:absolute;top:0;left:0}.closure-toolbox .toolbox-morph[data-open=false]>.toolbox-panel{pointer-events:none}.closure-toolbox .toolbox-morph>:is(.toolbox-toggle,.toolbox-panel){box-shadow:none;background:0 0;border-color:#0000}.closure-toolbox .toolbox-morph>:is(.toolbox-toggle,.toolbox-panel):before,.closure-toolbox .toolbox-morph>:is(.toolbox-toggle,.toolbox-panel):after{display:none}.closure-toolbox .toolbox-morph>.toolbox-panel{width:282px}.traffic-minimize{border:1px solid var(--glass-border);background:var(--glass-panel-tint);border-radius:12px;place-items:center;width:36px;height:30px;padding:0;display:grid;position:absolute;top:-15px;right:18px;box-shadow:0 2px 6px #264e691a}.traffic-controls-shell[data-minimized=false]{width:min(796px,100% - 24px)}.traffic-controls-shell{border-radius:24px;overflow:hidden}.traffic-controls-shell>.toolbox-glass-panel,.traffic-controls-shell .traffic-controls{height:100%}.traffic-controls-shell[data-minimized=false] .traffic-controls{padding-right:68px}.traffic-controls-shell[data-minimized=false] .traffic-minimize{top:16px;right:14px}.traffic-controls-shell[data-minimized=true]{width:min(280px,100% - 24px)}.traffic-controls-shell[data-minimized=true] .traffic-controls{border-radius:20px;padding:10px 56px 10px 12px}.traffic-controls-shell[data-minimized=true] .traffic-minimize{top:50%;right:12px;transform:translateY(-50%)}.traffic-controls-shell[data-minimized=true] :is(.traffic-segmented,.traffic-estimate,.traffic-timeline,.traffic-clock span){display:none}.traffic-controls-shell[data-minimized=true] .traffic-clock{min-width:0}.traffic-controls-shell[data-minimized=true] .traffic-clock strong{font-size:20px}.traffic-controls-shell[data-minimized=true] .traffic-clock-group{gap:6px}.traffic-controls-shell[data-minimized=true] .simulation-date-trigger{background:0 0;border:0;width:36px;min-height:40px;padding:0}.traffic-controls-shell[data-minimized=true] .simulation-date-trigger :is(span,.simulation-date-chevron){display:none}@media (max-width:680px){.traffic-controls-shell[data-minimized=false] .traffic-clock-group{flex-direction:column;align-items:flex-start;gap:6px}.traffic-controls-shell[data-minimized=false] .simulation-date-trigger{min-height:36px;padding:4px 8px}}.disruption-endpoints{z-index:4;pointer-events:none;position:absolute;inset:0}.disruption-endpoint{cursor:grab;touch-action:none;pointer-events:auto;background:0 0;border:0;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:0;left:0}.disruption-endpoint span{border:3px solid var(--disruption-color);background:var(--glass-panel-tint);width:18px;height:18px;box-shadow:0 0 0 4px rgb(var(--disruption-rgb) / 16%), 0 2px 6px #0f283c3d;border-radius:50%}.disruption-endpoint:is(:hover,:focus-visible,[data-dragging=true]) span{box-shadow:0 0 0 7px rgb(var(--disruption-rgb) / 24%), 0 2px 6px #0f283c3d}.disruption-endpoint:focus-visible{outline:2px solid var(--ui-accent);outline-offset:-4px;border-radius:50%}.disruption-endpoint[data-dragging=true]{cursor:grabbing}.disruption-endpoint[data-invalid=true] span{border-style:dashed}.road-extent-help{color:var(--ui-muted);margin:10px 0 0;font-size:11px;line-height:1.5}.workspace-layout{--workspace-bottom:calc(36px + env(safe-area-inset-bottom,0px));--workspace-timeline-bottom:96px;--workspace-tools-top:max(144px, calc(var(--workspace-timeline-bottom) + 16px));--workspace-assistant-height:112px;z-index:3;pointer-events:none;position:absolute;inset:0}.workspace-layout :is(.closure-toolbox,.weather-menu){pointer-events:auto}.workspace-dock,.workspace-notices{width:min(744px,100% - 112px);color:var(--ui-ink);position:absolute;left:50%;transform:translate(-50%)}.workspace-dock{z-index:3;pointer-events:auto}.workspace-timeline{width:min(796px,100% - 304px);top:16px;container-type:inline-size}.workspace-assistant{bottom:var(--workspace-bottom)}.workspace-dock>.toolbox-glass-panel{width:100%}.workspace-dock-content{border:1px solid var(--glass-border);background:var(--glass-panel-tint);max-height:calc(100dvh - 96px);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.35);border-radius:24px;overflow:hidden}.traffic-chat-toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.traffic-chat-toggle{cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;min-height:32px;padding:4px;font-size:12px;font-weight:600;display:inline-flex}.traffic-chat-date{color:var(--ui-muted);font-variant-numeric:tabular-nums;font-size:11px}.workspace-dock :is(button,textarea):focus-visible,.workspace-resume:focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px}.workspace-dock-pane{min-height:0}#workspace-timeline-pane{max-height:min(360px,100dvh - 180px);overflow-y:auto}.workspace-dock-pane[hidden],.workspace-side-panel[hidden]{display:none}.workspace-dock .traffic-controls-shell{border-radius:0;width:100%;position:relative;inset:auto;overflow:visible;translate:none}.workspace-dock .traffic-controls-shell .traffic-controls{height:auto;box-shadow:none;background:0 0;border:0;border-radius:0}.workspace-dock .traffic-controls:before{display:none}.workspace-dock .traffic-controls-shell[data-minimized=true] .traffic-controls{padding:12px 64px 12px 20px}.workspace-dock .traffic-controls-shell[data-minimized=true] .simulation-date-trigger{width:auto;padding:4px 8px}.workspace-dock .traffic-controls-shell[data-minimized=true] .simulation-date-trigger span{display:inline}.workspace-dock .traffic-controls-shell[data-minimized=true] .traffic-clock-group{flex-flow:wrap;align-items:center;gap:12px}.workspace-side-panel{z-index:2;top:82px;bottom:var(--workspace-bottom);pointer-events:none;align-items:flex-start;width:336px;min-height:0;display:flex;position:absolute;left:76px}.workspace-layout[data-panel=road] .workspace-side-panel{width:min(300px,100% - 88px);top:max(168px, calc(var(--workspace-timeline-bottom) + 16px));left:auto;right:16px}.workspace-layout:is([data-panel=toolbox],[data-panel=editor]) .workspace-side-panel{top:var(--workspace-tools-top)}.workspace-layout[data-panel=weather] .workspace-side-panel{top:calc(var(--workspace-tools-top) + 60px)}.workspace-panel-content{align-items:flex-start;width:100%;height:100%;min-height:0;max-height:100%;display:flex}.workspace-side-panel :is(.toolbox-panel,.closure-preview,.road-panel-shell){overscroll-behavior:contain;scrollbar-width:thin;pointer-events:auto;width:100%;max-width:100%;min-height:0;max-height:100%;position:relative;inset:auto;overflow-y:auto}.workspace-side-panel .road-panel{max-height:none}.workspace-side-panel .disruption-editor{flex-direction:column;padding:0;display:flex;overflow:hidden}.disruption-editor-header{border-bottom:1px solid var(--glass-border);flex-shrink:0;padding:20px 20px 16px}.disruption-editor>form{flex-direction:column;min-height:0;margin:0;display:flex}.disruption-editor-body{overscroll-behavior:contain;scrollbar-width:thin;min-height:0;padding:16px 20px;scroll-padding-block:16px;overflow-y:auto}.workspace-side-panel :is(input,select){min-width:0;max-width:100%}.workspace-side-panel .closure-preview-actions{border-top:1px solid var(--glass-border);background:var(--glass-panel-tint);flex-shrink:0;margin:0;padding:16px 20px}.workspace-resume{border:1px solid color-mix(in srgb, var(--ui-accent) 24%, transparent);background:color-mix(in srgb, var(--ui-accent) 8%, transparent);width:100%;color:var(--ui-accent);text-align:left;font:inherit;cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin:16px 0 0;padding:12px;font-size:12px;display:flex}.workspace-resume svg{flex-shrink:0}.workspace-notices{z-index:4;bottom:calc(var(--workspace-bottom) + var(--workspace-assistant-height) + 12px);flex-direction:column;align-items:center;gap:8px;display:flex}.workspace-notices :is(.closure-placement-help,.closure-notice,.traffic-status){pointer-events:auto;width:fit-content;max-width:100%;margin:0;position:relative;inset:auto;transform:none}.workspace-notices .closure-notice{align-items:center;gap:12px;display:flex}.workspace-notice-dismiss{width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;flex-shrink:0;place-items:center;padding:4px;display:grid}.traffic-chat-toolbar{flex-shrink:0;margin-bottom:8px}.traffic-chat-toolbar .traffic-chat-note{margin:0}.traffic-chat-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.traffic-chat-panel[data-expanded=true]{height:min(480px, max(160px, calc(100dvh - var(--workspace-timeline-bottom) - var(--workspace-bottom) - 24px)))}.traffic-chat-panel[data-expanded=true] .traffic-chat-log{max-height:none}.traffic-chat-log[hidden],.traffic-chat-footer[hidden]{display:none}.traffic-chat-history{cursor:pointer;background:0 0;border:0;border-radius:8px;flex-shrink:0;min-height:32px;padding:4px 8px;font-size:12px}.traffic-chat-log{scrollbar-width:thin;min-height:0;max-height:320px}.traffic-chat-examples{gap:8px;display:flex}.traffic-chat-examples button{flex:1 0 0;margin:0;padding:8px 12px}.traffic-chat-message{background:0 0;border-radius:0;margin:0 0 8px;padding:0 0 8px}.traffic-chat-message[data-role=user]{background:0 0;margin-left:0}.traffic-chat-composer{border:1px solid color-mix(in srgb, var(--ui-muted) 24%, transparent);background:color-mix(in srgb, var(--glass-panel-tint) 70%, transparent);border-radius:16px;align-items:flex-end;gap:8px;margin-top:6px;padding:8px;display:flex}.traffic-chat-composer textarea{resize:none;background:0 0;border:0;border-radius:8px;flex:1;min-width:0;min-height:40px;max-height:120px;margin:0;padding:4px;line-height:1.5}.traffic-chat-composer>button{background:var(--ui-accent);width:36px;height:36px;color:var(--glass-panel-tint);cursor:pointer;border:0;border-radius:12px;flex-shrink:0;place-items:center;padding:0;display:grid}.traffic-chat-footer{margin-top:8px}.traffic-chat-footer small{font-size:10px}.simulation-calendar{overscroll-behavior:contain;overflow-y:auto}@container (min-width:640px){.traffic-controls-shell[data-minimized=true] .traffic-controls-row>.traffic-segmented{display:flex}}@media (min-width:1180px){.workspace-layout{--workspace-center-left:416px;--workspace-center-right:332px;--workspace-tools-top:144px}.workspace-dock,.workspace-notices{left:calc(var(--workspace-center-left) + (100% - var(--workspace-center-left) - var(--workspace-center-right)) / 2);width:min(760px, calc(100% - var(--workspace-center-left) - var(--workspace-center-right)))}.workspace-side-panel{width:320px;left:80px}.workspace-layout[data-panel=road] .workspace-side-panel{top:168px}}@media (max-width:899px){.workspace-timeline{width:calc(100% - 152px);top:82px;left:76px;transform:none}.workspace-side-panel{top:calc(var(--workspace-timeline-bottom) + 12px);bottom:calc(var(--workspace-bottom) + 144px)}}@media (max-width:680px){.traffic-chat-toolbar{flex-wrap:wrap;align-items:flex-start;gap:4px 12px}.workspace-assistant,.workspace-notices{width:calc(100% - 24px);left:12px;transform:none}.workspace-side-panel{width:min(336px,100% - 88px)}.workspace-timeline{width:calc(100% - 88px);left:76px}.workspace-timeline .traffic-clock-group{min-width:0}.workspace-dock .traffic-controls-row .traffic-segmented{flex-basis:100%}.workspace-dock .traffic-controls-shell[data-minimized=true] .simulation-date-trigger{padding-inline:0;font-size:11px}.workspace-dock .traffic-controls-shell[data-minimized=true] .traffic-clock-group{gap:4px 8px}.traffic-chat-examples{scroll-snap-type:x proximity;overflow-x:auto}.traffic-chat-examples button{scroll-snap-align:start;flex:0 0 85%}.traffic-chat-footer small:last-child{display:none}}@media (max-height:650px){.workspace-dock .traffic-controls-shell[data-minimized=false] .traffic-timeline{margin-top:8px}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.workspace-dock-content{-webkit-backdrop-filter:none;background:#eff8ff}:root[data-sim-theme=night] .workspace-dock-content{background:#102c40}}.traffic-chat-location-choice{text-align:left;width:100%;margin:8px 0;display:block}.traffic-chat-proposals>button:not(.traffic-chat-location-choice)+button:not(.traffic-chat-location-choice){margin-left:8px}.results-menu{z-index:3;top:calc(var(--workspace-tools-top,144px) + 120px);width:48px;color:var(--ui-ink);pointer-events:auto;position:absolute;left:16px}.results-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:20px;height:20px}.dashboard-panel{--series-1:#2a78d6;--series-2:#eb6834;--viz-grid:color-mix(in srgb, var(--ui-muted) 18%, transparent);width:100%;max-height:100%;overflow-y:auto}:root[data-sim-theme=night] .dashboard-panel{--series-1:#3987e5;--series-2:#d95926}.dashboard-note{color:var(--ui-muted);margin:10px 0;font-size:12px;line-height:1.5}.dashboard-note code{font-size:11px}.dashboard-link{color:var(--ui-accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.dashboard-tiles{grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;display:grid}.dashboard-tiles>div{background:color-mix(in srgb, var(--ui-ink) 6%, transparent);border-radius:14px;flex-direction:column;min-width:0;padding:10px 12px;display:flex}.dashboard-tiles span,.dashboard-tiles small{color:var(--ui-muted);font-size:11px}.dashboard-tiles strong{color:var(--ui-ink);font-variant-numeric:tabular-nums;font-size:22px;line-height:1.2}.dashboard-tiles .dashboard-tile-text{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.dashboard-section{border-top:1px solid var(--viz-grid);margin-top:14px;padding-top:12px}.dashboard-section h3,.dashboard-chart figcaption{color:var(--ui-ink);margin:0 0 8px;font-size:13px;font-weight:600}.dashboard-chart{margin:12px 0 0}.dashboard-legend{color:var(--ui-muted);gap:14px;margin-bottom:4px;font-size:11px;display:flex}.dashboard-legend span:before{vertical-align:middle;content:"";border-radius:1px;width:14px;height:2px;margin-right:6px;display:inline-block}.dashboard-legend [data-series="1"]:before,.dashboard-tooltip [data-series="1"]:before{background:var(--series-1)}.dashboard-legend [data-series="2"]:before,.dashboard-tooltip [data-series="2"]:before{background:var(--series-2)}.dashboard-chart-plot{position:relative}.dashboard-chart svg{width:100%;height:auto;display:block;overflow:visible}.dashboard-grid{stroke:var(--viz-grid);stroke-width:1px}.dashboard-axis{fill:var(--ui-muted);font-variant-numeric:tabular-nums;font-size:9px}.dashboard-direct{fill:var(--ui-muted);font-size:9px}.dashboard-now{stroke:var(--ui-muted);stroke-width:1px;stroke-dasharray:3 3}.dashboard-crosshair{stroke:var(--ui-ink);stroke-width:1px;opacity:.4}.dashboard-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.dashboard-line[data-series="1"]{stroke:var(--series-1)}.dashboard-line[data-series="2"]{stroke:var(--series-2)}.dashboard-dot{stroke:var(--glass-panel-tint);stroke-width:2px}.dashboard-dot[data-series="1"]{fill:var(--series-1)}.dashboard-dot[data-series="2"]{fill:var(--series-2)}.dashboard-tooltip{z-index:1;border:1px solid var(--glass-border);background:var(--glass-panel-tint);box-shadow:var(--glass-shadow);color:var(--ui-ink);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;border-radius:10px;flex-direction:column;gap:2px;padding:6px 8px;font-size:11px;display:flex;position:absolute;top:0;transform:translate(-50%)}.dashboard-tooltip span:before{content:"";border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.dashboard-table{color:var(--ui-muted);margin-top:6px;font-size:11px}.dashboard-table summary{cursor:pointer}.dashboard-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:6px}.dashboard-table :is(th,td){text-align:right;padding:2px 4px}.dashboard-table :is(th,td):first-child{text-align:left}.dashboard-bars{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.dashboard-bars :is(button,div){width:100%;color:var(--ui-ink);font:inherit;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name value""track track";gap:3px 8px;padding:6px 8px;display:grid}.dashboard-bars button{cursor:pointer}.dashboard-bars button:hover,.dashboard-bars button:focus-visible{background:color-mix(in srgb, var(--ui-ink) 6%, transparent)}.dashboard-bars button:focus-visible{outline:2px solid var(--ui-accent);outline-offset:1px}.dashboard-bar-name{text-overflow:ellipsis;white-space:nowrap;grid-area:name;font-size:12px;overflow:hidden}.dashboard-bar-name small{color:var(--ui-muted);margin-left:6px;font-size:11px}.dashboard-bar-value{color:var(--ui-muted);font-variant-numeric:tabular-nums;grid-area:value;font-size:11px}.dashboard-bar-track{background:var(--viz-grid);border-radius:3px;grid-area:track;height:6px}.dashboard-bar{background:var(--series-1);border-radius:3px;height:100%;display:block}.dashboard-save{margin-bottom:8px}.dashboard-save label{color:var(--ui-muted);margin-bottom:4px;font-size:11px;display:block}.dashboard-save>div{gap:6px;display:flex}.dashboard-save input{border:1px solid color-mix(in srgb, var(--ui-muted) 30%, transparent);background:color-mix(in srgb, var(--glass-panel-tint) 70%, transparent);min-width:0;color:var(--ui-ink);font:inherit;border-radius:10px;flex:1;padding:8px 10px;font-size:12px}.dashboard-save button{background:var(--ui-accent);color:var(--glass-panel-tint);font:inherit;cursor:pointer;border:0;border-radius:10px;padding:8px 12px;font-size:12px;font-weight:600}.dashboard-save button:disabled{opacity:.6}.dashboard-save :is(input,button):focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px}.dashboard-columns{align-items:flex-end;gap:2px;height:64px;display:flex}.dashboard-columns span{flex:1;align-items:flex-end;height:100%;display:flex}.dashboard-columns i{background:var(--series-1);border-radius:3px 3px 0 0;width:100%;display:block}.dashboard-columns-axis{color:var(--ui-muted);justify-content:space-between;margin-top:4px;font-size:9px;display:flex}.traffic-controls-shell[data-minimized=true] .traffic-controls,.traffic-chat-panel[data-expanded=false]{cursor:pointer}.workspace-layout{--workspace-rail-count:3;--workspace-tools-top:max(80px, calc(50% - (var(--workspace-rail-count) * 60px - 12px) / 2))}.workspace-layout:is([data-panel=toolbox],[data-panel=editor],[data-panel=weather],[data-panel=results]) .workspace-side-panel{top:calc(var(--workspace-timeline-bottom) + 16px);bottom:calc(var(--workspace-timeline-bottom) + 16px)}.workspace-layout:is([data-panel=toolbox],[data-panel=editor],[data-panel=weather],[data-panel=results]) .workspace-panel-content{align-items:center}@keyframes road-panel-pop{0%{opacity:0;transform:translateY(-6px)scale(.94)}60%{opacity:1;transform:translateY(0)scale(1.012)}to{opacity:1;transform:translateY(0)scale(1)}}.road-panel-shell{transform-origin:100% 0;animation:.26s cubic-bezier(.22,1,.36,1) both road-panel-pop}@media (prefers-reduced-motion:reduce){.road-panel-shell{animation:none}}
