@font-face{font-family:Jakarta;src:url('/fonts/plus-jakarta-sans-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Jakarta;src:url('/fonts/plus-jakarta-sans-medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Jakarta;src:url('/fonts/plus-jakarta-sans-semibold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Jakarta;src:url('/fonts/plus-jakarta-sans-bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Jakarta;src:url('/fonts/plus-jakarta-sans-extrabold.woff2') format('woff2');font-weight:800;font-display:swap}
:root{color-scheme:light;--primary:#ff6b1a;--primary-hover:#e2540b;--primary-tint:#fff0e6;--primary-ink:#a43b05;--ink:#16181d;--muted:#5c6270;--surface:#fff;--background:#f5f6f8;--border:#e7e9ee;--hover:#f3f4f6;--route:#1e88e5;--shadow:0 8px 32px #1b1b2214,0 2px 8px #1b1b2208;--map-bg:#efeee8;--map-land:#e8e5d9;--map-campus:#e2e8db;--map-green:#cde1c4;--map-sport:#c5ddca;--map-water:#aed3e2;--map-parking:#dcdcd8;--map-building:#dad3ca;--map-building-outline:#beb5a9;--map-casing:#d0ccc3;--map-major:#fcf7eb;--map-minor:#f7f4ed;--map-pedestrian:#e1dacf;--map-label:#4c4e4e;--map-halo:#fff}
:root[data-theme=dark]{color-scheme:dark;--primary:#ff7d33;--primary-hover:#ff985b;--primary-tint:#3a2419;--primary-ink:#ffb68c;--ink:#f3f5f8;--muted:#b1b8c4;--surface:#181b21;--background:#0f1115;--border:#2c313b;--hover:#20242c;--shadow:0 8px 32px #0004,0 2px 8px #0002;--map-bg:#0a0c0f;--map-land:#121619;--map-campus:#121e1a;--map-green:#14271d;--map-sport:#192b24;--map-water:#16303e;--map-parking:#1b1e22;--map-building:#1c2024;--map-building-outline:#30363c;--map-casing:#121417;--map-major:#32373c;--map-minor:#262b30;--map-pedestrian:#2d3134;--map-label:#bec2c6;--map-halo:#080a0c}
*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--ink);font:400 14px/1.5 Jakarta,system-ui,sans-serif}button,select,input{font:inherit}button,select{color:inherit}button,select,summary,a,input{touch-action:manipulation}button,summary,select,input[type=checkbox]{cursor:pointer}button{border:0}a{color:inherit;text-underline-offset:3px}button:disabled,select:disabled{cursor:wait;opacity:.5}::selection{background:var(--primary-tint);color:var(--primary-ink)}:focus-visible{outline:3px solid var(--primary);outline-offset:3px}button,select,summary{transition:background-color .16s ease,color .16s ease}button svg{pointer-events:none}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}.icon{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.skip-link{position:fixed;z-index:30;left:12px;top:-70px;background:var(--surface);padding:12px;border-radius:12px}.skip-link:focus{top:12px}.app-header{height:76px;padding:0 28px;display:flex;align-items:center;gap:24px;background:var(--surface);border-bottom:1px solid var(--border);position:relative;z-index:5}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:25px;letter-spacing:-.8px;font-weight:800}.brand img{border-radius:10px}.header-divider{height:28px;width:1px;background:var(--border)}.header-location{display:flex;flex-direction:column;gap:1px;font-size:13px;font-weight:600}.header-location span+span{font-size:12px;color:var(--muted);font-weight:400}.header-actions{margin-left:auto;display:flex;align-items:center;gap:20px}.simulation-badge{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--primary-ink);background:var(--primary-tint);padding:7px 12px;border-radius:8px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--primary);display:inline-block;flex-shrink:0}.icon-button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface);flex-shrink:0}.icon-button:hover{background:var(--hover)}.theme-button{width:40px;height:40px}.workspace{position:relative;height:calc(100svh - 76px);min-height:540px;overflow:hidden;background:var(--map-bg)}.map-container,.campus-map{position:absolute;width:100%;height:100%;inset:0}.campus-map{touch-action:none;cursor:grab;user-select:none;background:var(--map-bg)}.campus-map:active{cursor:grabbing}.campus-map:focus-visible{outline-offset:-4px}.map-world path{stroke-linejoin:round;stroke-linecap:round}.map-building{fill:var(--map-building);stroke:var(--map-building-outline);stroke-width:1.1}.map-label{font:500 12px Jakarta,system-ui,sans-serif;fill:var(--map-label);stroke:var(--map-halo);stroke-width:3px;paint-order:stroke;stroke-linejoin:round;text-anchor:middle;pointer-events:none}.map-label.major-label{font-size:12px;font-weight:600}.route-halo{fill:none;stroke:var(--surface);stroke-width:8;opacity:.8;vector-effect:non-scaling-stroke}.route-line{fill:none;stroke:var(--route);stroke-width:5;vector-effect:non-scaling-stroke}.route-arrow{fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.9;pointer-events:none}.bus-marker{cursor:pointer}.bus-marker:focus-visible{outline:none}.bus-marker .bus-halo{fill:var(--surface);stroke:var(--primary);stroke-width:2;opacity:0}.bus-marker[aria-pressed=true] .bus-halo,.bus-marker:focus-visible .bus-halo{opacity:.92}.bus-marker:hover .bus-halo{opacity:.7}.stop-marker circle{fill:var(--surface);stroke:var(--route);stroke-width:2}.stop-marker text{font:800 12px Jakarta,system-ui,sans-serif;text-anchor:middle;dominant-baseline:central;fill:var(--ink)}.map-poi{pointer-events:none}.simulation-panel{position:absolute;top:24px;left:24px;width:324px;max-height:calc(100% - 70px);display:flex;flex-direction:column;background:var(--surface);border-radius:24px;box-shadow:var(--shadow);z-index:2;overflow:hidden}.panel-heading{padding:24px 24px 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-heading h1{margin:0;font-size:20px;line-height:1.3;letter-spacing:-.55px;font-weight:800}.panel-heading p{margin:6px 0 0;font-size:12px;color:var(--muted)}.mobile-toggle{display:none}.route-facts{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:23px 24px 0;font-size:12px;color:var(--muted)}.route-facts>span:first-child{display:flex;align-items:center;gap:7px}.route-key{display:inline-block;width:16px;height:4px;border-radius:4px;background:var(--route)}#route-length{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.playback-controls{display:flex;align-items:center;gap:10px;padding:18px 24px 22px}.primary-button{height:44px;padding:0 20px;border-radius:24px;background:var(--primary);color:#21150e;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary-button:hover{background:var(--primary-hover)}.primary-button:active{transform:translateY(1px)}.playback-controls>.primary-button{min-width:119px}.primary-button .icon{width:18px;height:18px;stroke-width:2.4}.reset-button{width:38px;height:38px;border:1px solid var(--border)}.speed-control{margin-left:auto;display:flex;flex-direction:column;align-items:center;gap:3px}.speed-control label{font-size:12px;color:var(--muted)}select{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 8px;min-height:34px;font-size:12px;font-weight:600}.speed-control select{border:0;background:var(--hover);font-size:13px;padding:3px 4px 3px 8px;min-height:28px}.panel-details{border-top:1px solid var(--border);overflow:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent;min-height:0}.fleet-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:19px 24px 8px}.fleet-heading h2{font-size:12px;font-weight:600;margin:0}.fleet-heading select{font-size:12px;min-height:28px;padding:4px}.bus-list{padding:0 12px}.bus-row{display:flex;align-items:center;text-align:left;gap:10px;width:100%;padding:10px 12px;background:transparent;border-radius:12px;min-height:62px}.bus-row:hover{background:var(--hover)}.bus-row[aria-pressed=true]{background:var(--primary-tint)}.bus-symbol{display:grid;place-items:center;background:var(--hover);border-radius:12px;width:35px;height:38px;flex-shrink:0}.bus-row[aria-pressed=true] .bus-symbol{background:var(--surface)}.bus-symbol img{width:35px;height:35px;object-fit:contain;transform:rotate(90deg)}.bus-row-copy{min-width:0;flex:1}.bus-row-copy strong{display:block;font-size:12px;font-weight:700}.bus-row-copy small{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px;margin-top:3px}.bus-row-eta{font-size:12px;white-space:nowrap;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.bus-row[aria-pressed=true] .bus-row-eta{color:var(--primary-ink)}.selected-detail{padding:19px 24px 20px}.selected-detail>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);align-items:center}.selected-detail>div:first-child strong{font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}.selected-detail h3{font-size:17px;line-height:1.3;font-weight:800;margin:7px 0 16px;letter-spacing:-.35px}.trip-progress{height:4px;border-radius:4px;background:var(--border);overflow:hidden}.trip-progress>span{display:block;background:var(--primary);height:100%;width:0;border-radius:4px}.selected-detail p{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);margin:10px 0 0}.selected-detail p>span:first-child{font-weight:600;color:var(--ink)}.stops-details{border-top:1px solid var(--border)}.stops-details summary{padding:15px 24px;display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;list-style:none}.stops-details summary::-webkit-details-marker{display:none}.stops-details summary:hover{background:var(--hover)}.stops-summary-count{color:var(--muted);display:flex;align-items:center;gap:10px}.stops-summary-count .icon{width:14px;height:14px}.stops-details[open] .icon{transform:rotate(90deg)}.stop-list{list-style:none;margin:0;padding:0 24px 20px;counter-reset:stop}.stop-list li{display:flex;align-items:center;gap:12px;font-size:12px;min-height:33px;color:var(--muted);position:relative;counter-increment:stop}.stop-list li::before{content:counter(stop);display:grid;place-items:center;width:20px;height:20px;background:var(--surface);color:var(--route);border:1px solid var(--border);border-radius:50%;font-size:12px;font-weight:700;flex-shrink:0;z-index:1}.stop-list li+li::after{content:'';position:absolute;top:-10px;left:9px;width:2px;height:24px;background:var(--border)}.stop-list li.current{color:var(--ink);font-weight:700}.stop-list li.current::before{background:var(--route);color:#fff;border-color:var(--route)}.panel-footer{padding:14px 24px;border-top:1px solid var(--border);display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;flex-shrink:0}.panel-footer .status-dot{width:5px;height:5px}.simulation-time{margin-left:auto;font-variant-numeric:tabular-nums}.panel-footer .status-dot.paused{background:var(--muted)}.loading-placeholder{padding:25px 12px;color:var(--muted);font-size:12px}.map-toolbar{position:absolute;right:24px;bottom:70px;display:flex;flex-direction:column;align-items:center;gap:12px;z-index:3}.map-toolbar>.icon-button,.zoom-controls{box-shadow:var(--shadow)}.map-toolbar>.icon-button{width:50px;height:50px}.center-button{color:var(--primary-ink)}.zoom-controls{display:flex;flex-direction:column;background:var(--surface);border-radius:24px;overflow:hidden}.zoom-controls>.icon-button{width:46px;height:43px;border-radius:0}.zoom-controls>.icon-button+button{border-top:1px solid var(--border)}.layers-button[aria-expanded=true]{background:var(--primary);color:#21150e}.layers-panel{position:absolute;right:90px;bottom:70px;width:260px;background:var(--surface);box-shadow:var(--shadow);border-radius:20px;padding:10px 18px 12px;z-index:4}.layers-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.layers-heading h2{font-size:15px;margin:0;font-weight:800}.layers-heading .icon-button{width:36px;height:36px}.layers-heading .icon{width:17px;height:17px}.layers-panel>label{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0;cursor:pointer}.layers-panel>label+label{border-top:1px solid var(--border)}.layers-panel strong,.layers-panel small{display:block}.layers-panel strong{font-size:12px;font-weight:600}.layers-panel small{font-size:12px;color:var(--muted);margin-top:2px}input[type=checkbox]{appearance:none;width:33px;height:20px;margin:0;border:1px solid var(--border);border-radius:12px;background:var(--hover);position:relative;flex-shrink:0}input[type=checkbox]::before{content:'';position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:var(--muted);transition:transform .16s ease}input[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}input[type=checkbox]:checked::before{background:#21150e;transform:translateX(13px)}.map-caption{position:absolute;bottom:17px;left:24px;right:24px;display:flex;justify-content:space-between;gap:16px;align-items:center;pointer-events:none;font-size:12px;color:var(--muted)}.map-caption>span{background:var(--surface);border-radius:7px;padding:4px 9px;pointer-events:auto}.demo-label::before{content:'';display:inline-block;width:5px;height:5px;background:var(--primary);border-radius:50%;margin-right:6px;vertical-align:2px}.map-compass{position:absolute;right:39px;top:26px;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--map-label);font-size:12px;font-weight:800;pointer-events:none}.map-compass .icon{height:18px;width:18px}.mobile-arrival{display:none}.error-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:8;background:var(--surface);box-shadow:var(--shadow);padding:28px;border-radius:24px;width:min(380px,calc(100% - 32px))}.error-panel h2{font-size:20px;margin:0 0 12px}.error-panel p{color:var(--muted);margin:0 0 22px}
@media(min-width:761px) and (max-height:800px){.panel-heading{padding-top:20px}.route-facts{margin-top:16px}.playback-controls{padding-top:14px;padding-bottom:16px}.fleet-heading{padding-top:14px}.bus-row{min-height:54px;padding-top:7px;padding-bottom:7px}.selected-detail{padding-top:14px;padding-bottom:16px}.selected-detail h3{font-size:16px;margin-bottom:12px}}
@media(max-width:760px){.app-header{height:64px;padding:0 16px;gap:12px}.brand{font-size:23px;gap:7px}.brand img{width:32px;height:32px}.header-divider{height:24px}.header-location{font-size:12px}.header-location span+span{display:none}.header-actions{gap:6px}.simulation-badge{font-size:12px;padding:6px 8px;gap:6px}.simulation-badge .status-dot{width:5px;height:5px}.theme-button{width:34px;height:34px}.theme-button .icon{width:18px;height:18px}.workspace{height:calc(100svh - 64px);min-height:490px}.simulation-panel{top:auto;bottom:calc(16px + env(safe-area-inset-bottom));left:12px;right:12px;width:auto;max-height:calc(100% - 120px);border-radius:24px}.panel-heading{padding:18px 20px 0}.panel-heading h1{font-size:17px}.panel-heading p{display:none}.mobile-toggle{display:inline-flex;width:32px;height:32px;transform:rotate(-90deg)}.mobile-toggle[aria-expanded=true]{transform:rotate(90deg)}.route-facts{margin:0 20px;font-size:12px;position:absolute;left:0;top:48px;right:38px}.playback-controls{padding:26px 20px 15px;gap:12px}.playback-controls>.primary-button{min-width:130px;flex:1;max-width:190px;height:40px}.speed-control{flex-direction:row;gap:7px;margin-left:auto}.speed-control label{font-size:12px}.speed-control select{min-height:34px}.reset-button{width:36px;height:36px}.panel-details{display:none}.simulation-panel.expanded .panel-details{display:block}.panel-footer{padding:9px 20px;font-size:12px}.fleet-heading{padding:15px 20px 8px}.bus-list{padding:0 10px}.bus-row{min-height:58px}.bus-row-copy small{max-width:200px}.selected-detail{padding:17px 20px}.stops-details summary{padding:14px 20px}.stop-list{padding-left:20px;padding-right:20px}.mobile-arrival{position:absolute;top:16px;left:16px;right:62px;min-height:66px;display:flex;gap:12px;align-items:center;padding:10px 16px;border-radius:36px;background:var(--surface);box-shadow:var(--shadow);pointer-events:none}.mobile-arrival strong{font-size:16px;font-weight:800;letter-spacing:-.3px}.mobile-arrival p{margin:1px 0 0;font-size:12px;color:var(--muted);max-width:240px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.arrival-bus{color:var(--primary-ink);display:flex;flex-direction:column;align-items:center;font-size:12px;font-weight:800}.arrival-bus .icon{width:22px;height:22px}.map-toolbar{right:16px;bottom:calc(228px + env(safe-area-inset-bottom));gap:10px}.map-toolbar>.icon-button{width:44px;height:44px}.zoom-controls>.icon-button{width:40px;height:38px}.map-caption{bottom:calc(207px + env(safe-area-inset-bottom));left:16px;right:16px;font-size:8px}.map-caption>span{padding:3px 6px}.map-compass{right:29px;top:24px}.layers-panel{right:69px;bottom:calc(228px + env(safe-area-inset-bottom));width:245px;max-height:calc(100% - 248px);overflow:auto}.simulation-panel.expanded{z-index:6}.error-panel{top:35%}}
@media(max-width:540px){.header-divider,.header-location{display:none}}
@media(max-width:380px){.header-divider,.header-location{display:none}.playback-controls{gap:8px;padding-left:16px;padding-right:16px}.speed-control{gap:4px}.playback-controls>.primary-button{min-width:110px}.mobile-arrival p{max-width:200px}}
/* Keep supporting copy readable on the floating panels, including phone screens. */
.header-location span+span,.route-facts,.speed-control label,.fleet-heading h2,.fleet-heading select,.bus-row-copy small,.bus-row-eta,.selected-detail>div:first-child,.selected-detail p,.stops-details summary,.stop-list li,.panel-footer,.map-caption,.layers-panel small,.arrival-bus{font-size:12px}
.bus-row-copy strong,.layers-panel strong{font-size:13px}
.stop-list li::before,.map-compass{font-size:12px}
.bus-row-copy small{max-width:148px}
.fleet-heading{gap:5px}
@media(max-width:760px){.header-location{font-size:12px}.simulation-badge{font-size:12px}.route-facts{font-size:12px}.mobile-arrival p{font-size:12px}.map-caption{font-size:12px}.panel-footer{font-size:12px}.bus-row-copy small{max-width:190px}.speed-control label{font-size:12px}.speed-control{gap:5px}}
.options-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:40px;padding:0 14px;border:1px solid var(--border);border-radius:24px;background:var(--surface);font-size:12px;font-weight:600;white-space:nowrap}
.options-toggle:hover{background:var(--hover)}
.options-toggle[aria-expanded=false]{background:var(--primary-tint);color:var(--primary-ink);border-color:transparent}
.options-toggle .icon{width:19px;height:19px}
@media(max-width:1100px){.options-toggle{width:40px;padding:0}.options-toggle span{display:none}}
@media(max-width:760px){.options-hidden .map-toolbar{bottom:70px}.options-hidden .map-caption{bottom:17px}.options-hidden .layers-panel{bottom:70px;max-height:calc(100% - 110px)}}
@media(max-width:350px){.header-actions{gap:2px}.app-header{gap:8px;padding:0 12px}.options-toggle{min-width:36px;width:36px}.simulation-badge{padding:6px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Collection adaptation: retain the simulator's palette, floating panels and controls. */
.brand-truck{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:var(--primary);color:#21150e}.brand-truck .icon{width:27px;height:27px}
.route-facts select{width:100%;min-height:42px;font-size:14px;padding:8px 10px}.route-facts .route-key{flex-shrink:0;width:8px;height:8px;border-radius:50%}
.service-actions{padding-top:16px;padding-bottom:18px}.service-actions .primary-button{flex:1;max-width:none}.more-button{border:1px solid var(--border)}
.panel-details{border-top:0}.selected-detail>div:first-child strong{font-size:17px;color:var(--primary-ink);text-align:right}.selected-detail p.arrival-note{display:block;font-size:12px;margin-top:12px;font-weight:400;color:var(--muted)}
.street-settings{padding:0 24px 14px;font-size:13px}.street-settings label{display:block;color:var(--muted)}.street-settings select{width:100%;margin-top:6px;font-size:13px;min-height:40px}.street-settings p{color:var(--muted);line-height:1.7}
.quiet-button{padding:9px 0;min-height:40px;text-align:left;background:transparent;color:var(--primary-ink);font-weight:600}.quiet-button:hover{text-decoration:underline}.truck-caption{fill:var(--ink);font:700 12px Jakarta,system-ui,sans-serif;paint-order:stroke;stroke:var(--surface);stroke-width:4px}.bus-marker[data-stale=true]{opacity:.6}
/* Dialogs reuse the rounded white surface and existing row/button components. */
dialog{width:min(540px,calc(100% - 28px));max-height:calc(100svh - 32px);overflow:auto;overscroll-behavior:contain;padding:24px;border:1px solid var(--border);border-radius:24px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font:inherit}dialog::backdrop{background:#0b10177a;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.dialog-heading h2{font-size:20px;line-height:1.3;letter-spacing:-.55px;margin:0;font-weight:800}.dialog-heading .icon-button{width:36px;height:36px}.muted{color:var(--muted);font-size:13px;line-height:1.6}.option-list{margin:0 -12px}.option-list .bus-row{padding:14px 12px}.option-list .bus-row-copy small{white-space:normal;max-width:none}.option-list .bus-row-copy strong{font-size:14px}.option-list .icon,.report-row>.icon{width:16px;height:16px;color:var(--muted)}
dialog label{display:block;font-size:13px;font-weight:600;margin:16px 0}dialog select,dialog textarea{display:block;width:100%;margin-top:6px;min-height:44px;font:400 14px/1.5 Jakarta,system-ui,sans-serif;color:var(--ink);padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}dialog textarea{resize:vertical;min-height:100px}dialog .primary-button{margin-top:6px;min-height:44px;height:auto;padding-top:12px;padding-bottom:12px}dialog h3{font-size:16px;margin:12px 0}.report-description{overflow-wrap:anywhere}.plain-row{padding:16px 0;border-top:1px solid var(--border)}.plain-row p{color:var(--muted);font-size:13px;margin:6px 0;line-height:1.7}.state-label{font-size:12px;color:var(--primary-ink);font-weight:600}.report-row{min-height:76px;border-bottom:1px solid var(--border);border-radius:0}.report-row .bus-row-copy small{max-width:none}.report-row .bus-row-copy strong{white-space:normal}.report-row>.state-label{max-width:80px;text-align:right}.filter-label{display:flex!important;align-items:center;justify-content:space-between;gap:20px}.filter-label select{width:170px;margin:0}.section-picker{margin:0 0 16px;font-weight:700;font-size:15px;background:var(--hover)}.municipal-content{margin:0 -8px}.municipal-content .bus-row-copy small{max-width:260px;white-space:normal}.municipal-content .bus-row>.icon{width:16px;height:16px}.route-number{color:var(--primary-ink);font-size:14px;font-weight:700;width:24px;flex-shrink:0}.switch-label{display:flex!important;align-items:center;justify-content:space-between;min-height:44px}.summary-values{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 8px}.summary-values strong{display:block;font-size:28px;line-height:1.4}.summary-values span{font-size:12px;color:var(--muted);display:block}.summary-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 8px;border-bottom:1px solid var(--border);font-size:13px}.municipal-content>.muted,.municipal-content>.primary-button{margin-left:8px}.demo-playback{display:flex;gap:12px;align-items:center;margin-bottom:20px}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:30;background:var(--ink);color:var(--surface);box-shadow:var(--shadow);padding:14px 20px;border-radius:16px;font-size:14px;line-height:1.5;width:max-content;max-width:calc(100% - 32px)}
@media(max-width:760px){.brand-truck{width:32px;height:32px;border-radius:9px}.brand-truck .icon{width:24px;height:24px}.route-facts{position:static;margin:12px 20px 0}.route-facts select{font-size:14px;min-height:42px}.service-actions{padding:12px 20px 14px}.service-actions>.primary-button{max-width:none;min-height:44px}.selected-detail{padding-bottom:14px}.street-settings{padding-left:20px;padding-right:20px}.simulation-panel.expanded .panel-details{overflow:auto}.map-caption{bottom:calc(225px + env(safe-area-inset-bottom));font-size:10px}.map-toolbar{bottom:calc(245px + env(safe-area-inset-bottom))}.layers-panel{bottom:calc(245px + env(safe-area-inset-bottom))}.mobile-arrival{right:60px}.mobile-arrival p{max-width:210px}.simulation-panel{max-height:calc(100% - 100px)}dialog{padding:20px}.dialog-heading h2{font-size:18px}.municipal-content .bus-row-copy small{max-width:200px}.report-row .state-label{max-width:68px}.toast{bottom:20px}.options-hidden .map-caption{bottom:17px}}
/* Home location uses the same compact panel and controls. */
.home-location-button{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--hover);text-align:left;font-size:14px;font-weight:600}.home-location-button>span{flex:1}.home-location-button>.icon:last-child{width:15px;height:15px;color:var(--muted)}.home-location-button:hover{background:var(--primary-tint)}.home-choices>.primary-button{width:100%;margin:6px 0 14px}.home-choices>.bus-row{border:1px solid var(--border)}.home-choices .bus-row-copy strong{font-size:14px}.home-marker{pointer-events:none}.home-marker>circle{fill:var(--surface);stroke:var(--primary);stroke-width:3}.home-marker>path{stroke:var(--ink);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;fill:none}.campus-map.picking-home{cursor:crosshair}.location-picker{z-index:7}.location-picker .panel-heading h2{margin:0;font-size:18px;line-height:1.3;letter-spacing:-.4px;font-weight:800}.location-status{font-size:13px;line-height:1.6;color:var(--muted);margin:14px 24px 0}.location-picker .playback-controls{padding-top:14px}.location-picker .primary-button{min-width:0;font-size:13px;flex:1;white-space:normal}.location-picker .quiet-button{flex-shrink:0;font-size:13px}.location-picker .panel-heading p{display:block}.location-picker .playback-controls{gap:12px}
@media(max-width:760px){.location-picker .panel-heading{padding-top:18px}.location-picker .panel-heading h2{font-size:17px}.location-status{margin:10px 20px 0}.location-picker .playback-controls{padding:14px 20px 18px}.location-picker .primary-button{max-width:none;min-height:44px}.location-picker .panel-heading p{font-size:12px}.location-picker{max-height:calc(100% - 90px);overflow:auto}}

/* Mobile: keep the map and controls inside the visible screen, including short phones. */
@media (max-width:760px){
  .workspace{min-height:0;height:calc(100dvh - 64px)}
  .simulation-panel{overflow-y:auto;overscroll-behavior:contain}
  .mobile-arrival>div:last-child{min-width:0;flex:1}
  .mobile-arrival strong{display:block;overflow-wrap:anywhere;line-height:1.25}
  .mobile-arrival p{max-width:100%}
  .theme-button,.mobile-toggle,.dialog-heading .icon-button{width:44px;height:44px}
  dialog select,dialog textarea,.street-settings select{font-size:16px}
  .location-picker .quiet-button{min-height:44px;padding-left:8px;padding-right:8px}
}
@media (max-width:760px) and (max-height:650px){
  .map-toolbar{top:94px;bottom:auto;right:12px;flex-direction:row;align-items:center;gap:8px}
  .zoom-controls{display:flex;flex-direction:row}
  .zoom-controls>.icon-button{width:44px;height:44px}
  .layers-panel{top:146px;bottom:auto;right:12px;max-height:calc(100% - 160px)}
  .options-hidden .map-toolbar{top:auto;bottom:70px}
  .options-hidden .layers-panel{top:auto;bottom:70px;max-height:calc(100% - 110px)}
}
@media (max-width:760px){
  .map-caption{bottom:calc(250px + env(safe-area-inset-bottom))}
  .map-toolbar,.layers-panel{bottom:calc(275px + env(safe-area-inset-bottom))}
  .options-hidden .map-caption{bottom:17px}
  .options-hidden .map-toolbar,.options-hidden .layers-panel{bottom:70px}
}
@media (max-width:760px) and (max-height:650px){
  .map-toolbar,.layers-panel{bottom:auto}
  .options-hidden .map-toolbar,.options-hidden .layers-panel{bottom:70px}
}
/* In landscape the map keeps a compact side panel instead of extending below the screen. */
@media (orientation:landscape) and (max-height:500px){
  .app-header{height:60px;padding:0 16px}
  .workspace{height:calc(100dvh - 60px);min-height:0}
  .simulation-panel{top:12px;bottom:12px;left:12px;right:auto;width:min(300px,42vw);max-height:none;overflow-y:auto;overscroll-behavior:contain}
  .mobile-arrival{display:none}
  .map-toolbar{top:12px;right:12px;bottom:auto;flex-direction:row;align-items:center;gap:8px}
  .zoom-controls{display:flex;flex-direction:row}
  .zoom-controls>.icon-button,.map-toolbar>.icon-button{width:44px;height:44px}
  .layers-panel{top:64px;right:12px;bottom:auto;max-height:calc(100% - 76px);overflow:auto}
  .map-caption{left:calc(min(300px, 42vw) + 24px);right:12px;bottom:8px;font-size:10px}
  .map-compass{display:none}
  .options-hidden .map-toolbar{top:12px;bottom:auto}
  .options-hidden .layers-panel{top:64px;bottom:auto;max-height:calc(100% - 76px)}
  .options-hidden .map-caption{left:12px;bottom:8px}
}

/* A single view switch keeps citizen and municipal tools distinct. */
.view-switch{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:40px;padding:0 10px;border-radius:10px;background:var(--primary-tint);color:var(--primary-ink);font-size:12px;font-weight:700;white-space:nowrap}
.home-arrival-alert{display:flex;align-items:center;gap:9px;margin:12px 24px 0;padding:11px 12px;border-radius:12px;background:var(--primary-tint);color:var(--primary-ink);font-size:13px;font-weight:700;line-height:1.35}
.home-arrival-alert .icon{width:20px;height:20px}
@media(max-width:760px){.home-arrival-alert{margin:10px 20px 0}}
@media(max-width:760px) and (orientation:portrait){
  .home-arrival-visible:not(.options-hidden) .map-caption{bottom:calc(300px + env(safe-area-inset-bottom))}
  .home-arrival-visible:not(.options-hidden) .map-toolbar,.home-arrival-visible:not(.options-hidden) .layers-panel{bottom:calc(325px + env(safe-area-inset-bottom))}
}
@media(max-width:760px) and (orientation:portrait) and (max-height:650px){
  .home-arrival-visible:not(.options-hidden) .map-caption{top:145px;bottom:auto}
  .home-arrival-visible:not(.options-hidden) .map-toolbar,.home-arrival-visible:not(.options-hidden) .layers-panel{bottom:auto}
}
.bus-marker .bus-badge{fill:var(--surface);stroke:var(--border);stroke-width:1.5}
.bus-marker[aria-pressed=true] .bus-badge,.bus-marker:focus-visible .bus-badge{stroke:var(--primary);stroke-width:2.5}
.view-switch .icon{width:13px;height:13px;transform:rotate(90deg)}
.admin-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:18px 24px 0}
.admin-summary strong,.admin-summary span{display:block}
.admin-summary strong{font-size:22px;line-height:1.2;font-weight:800}
.admin-summary span{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:760px){.view-switch{min-height:40px;padding:0 8px}.admin-summary{padding:12px 20px 0}.admin-summary strong{font-size:19px}.admin-panel .service-actions{padding-top:12px}}
@media(max-width:380px){.brand{font-size:20px}.app-header{gap:6px;padding:0 10px}.header-actions{gap:2px}.view-switch{font-size:11px;padding:0 6px}.view-switch .icon{width:11px}}

/* Cartography: distinguish water, main roads and pilot areas at city scale. */
:root{--map-bg:#efeee8;--map-land:#eae9df;--map-sea:#d8e5e5;--map-water:#c6dfe2;--map-green:#d1dfcb;--map-casing:#e7e4d8;--map-major:#beb69d;--map-minor:#fffefa;--map-label:#505d58;--map-area:#52635e;--map-boundary:#a3b1a5}
:root[data-theme=dark]{--map-bg:#141b1d;--map-land:#202724;--map-sea:#172d34;--map-water:#284550;--map-green:#253c30;--map-casing:#252b28;--map-major:#6e7565;--map-minor:#46504a;--map-label:#d0dad3;--map-area:#cadbd1;--map-boundary:#647b70}
.municipal-outline{stroke:var(--map-boundary);stroke-width:1;stroke-dasharray:5 5;opacity:.8;pointer-events:none}
.map-area-label{font:700 12px Jakarta,system-ui,sans-serif;letter-spacing:.04em;fill:var(--map-area);stroke:var(--map-land);stroke-width:3px;paint-order:stroke;stroke-linejoin:round;text-anchor:middle;pointer-events:none}

/* Keep the municipal name and description visible on narrow screens. */
@media(max-width:760px){
  .header-location{display:flex;min-width:0;line-height:1.2}
  .header-location span+span{display:block;font-size:10px;line-height:1.2}
  .header-actions{flex-shrink:0}
}
/* Keep expanded home details readable inside the compact mobile panel. */
.street-settings p{margin:8px 0;line-height:1.45}
.street-settings select{margin-top:4px}
.home-choices>.bus-row+.bus-row{margin-top:8px}
dialog input[type=search]{display:block;width:100%;min-height:44px;margin-top:6px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font:400 16px/1.5 Jakarta,system-ui,sans-serif}
#search-results{max-height:min(42svh,320px);overflow:auto;overscroll-behavior:contain}
.focus-controls{display:flex;gap:8px}
.focus-controls .icon-button{width:50px;height:50px;box-shadow:var(--shadow)}
@media(max-width:760px){.focus-controls .icon-button{width:44px;height:44px}}
.next-service{margin:10px 24px 0;color:var(--muted);font-size:12px;line-height:1.4}
.zone-notice{display:flex;align-items:flex-start;gap:8px;margin:12px 24px 0;padding:10px 12px;border-radius:12px;background:var(--primary-tint);color:var(--primary-ink);font-size:12px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.zone-notice .icon{width:18px;height:18px}
.demo-phases{display:flex;flex-wrap:wrap;gap:8px}.demo-phases .quiet-button{border:1px solid var(--border);border-radius:12px;padding:8px 12px;min-height:44px}
.notice-list .plain-row p{overflow-wrap:anywhere}
@media(max-width:760px){.next-service{margin:8px 20px 0}.zone-notice{margin:10px 20px 0}}
@media(max-width:760px) and (orientation:portrait) and (min-height:651px){
  .home-schedule-visible:not(.options-hidden) .map-toolbar,.home-schedule-visible:not(.options-hidden) .layers-panel{bottom:calc(320px + env(safe-area-inset-bottom))}
  .home-schedule-visible:not(.options-hidden) .map-caption{bottom:calc(295px + env(safe-area-inset-bottom))}
  .home-schedule-visible.home-arrival-visible:not(.options-hidden) .map-toolbar,.home-schedule-visible.home-arrival-visible:not(.options-hidden) .layers-panel{bottom:calc(370px + env(safe-area-inset-bottom))}
  .home-schedule-visible.zone-notice-visible:not(.options-hidden) .map-toolbar,.home-schedule-visible.zone-notice-visible:not(.options-hidden) .layers-panel{bottom:calc(375px + env(safe-area-inset-bottom))}
  .home-schedule-visible.home-arrival-visible.zone-notice-visible:not(.options-hidden) .map-toolbar,.home-schedule-visible.home-arrival-visible.zone-notice-visible:not(.options-hidden) .layers-panel{bottom:calc(425px + env(safe-area-inset-bottom))}
}
#search-results .bus-row-copy small{white-space:normal;max-width:none}
.search-street{stroke:#ff6b1a;stroke-width:4;stroke-dasharray:7 4;stroke-linecap:round;pointer-events:none}
