/* Generated by scripts/build_web_assets.py; edit apps/server/ui. */

/* server: foundation. Canonical feature styles; shared controls live in apps/ui-core/src. */
:root{--ink:var(--brand-dark-green);--muted:color-mix(in srgb,var(--ink) 68%,white);--green:var(--brand-green);--green-dark:var(--brand-dark-green);--soft:color-mix(in srgb,var(--green) 11%,white);--neutral:var(--brand-warm-neutral);--paper:var(--ui-paper);--line:color-mix(in srgb,var(--ink) 18%,transparent);--danger:var(--semantic-danger);--warning:var(--semantic-warning);color-scheme:light}
html{width:100%;height:100%;margin:0;overflow:hidden;touch-action:pan-x pan-y;color:var(--ink);background:var(--neutral)}
body{width:100%;height:100%;margin:0;overflow:hidden;touch-action:pan-x pan-y;color:var(--ink)}
button:focus-visible{outline:2px solid var(--green);outline-offset:2px}
input:focus-visible{outline:2px solid var(--green);outline-offset:2px}
main{flex:1;min-height:0;display:grid;gap:12px;padding-top:12px}
h1{margin-top:0}
h2{margin-top:0}
p{margin-top:0}
h1{margin-bottom:0}
h2{margin-bottom:0}
h1 span{color:var(--muted);font-size:var(--font-md)}
@keyframes connectionPulse{50%{opacity:.35}}
input{width:100%}
@keyframes loginCheckSpin{to{transform:rotate(360deg)}}
@media(max-width:800px){main{grid-template-columns:1fr;grid-template-rows:150px minmax(0,1fr);gap:8px}}
@media(max-width:480px){main{grid-template-rows:112px minmax(0,1fr);gap:6px;padding-top:6px}}
@media(max-width:480px){h1{font-size:var(--font-xl)}}
@media(pointer:coarse){html{overflow-x:hidden;overflow-y:auto}}
@media(pointer:coarse){body{overflow-x:hidden;overflow-y:auto}}
main{grid-template-columns:344px minmax(0,1fr)}
@media(max-width:800px){html{overflow:hidden}}
@media(max-width:800px){body{overflow:hidden}}
@media(max-width:800px){main{position:relative;display:block;min-height:0;padding-top:8px}}
:root{--accent:var(--green);--theme-menu:rgba(255,255,255,.98)}
html[data-theme="dark"]{--ink:#fff;--muted:color-mix(in srgb,white 70%,#1d2b29);--green:#1e5246;--green-dark:#263f3a;--accent:#bcbca9;--soft:color-mix(in srgb,#1e5246 34%,#1d2b29);--neutral:#1d2b29;--paper:var(--ui-paper);--line:rgba(255,255,255,.18);--danger:#da8f77;--warning:#e5a961;--theme-menu:color-mix(in srgb,#1d2b29 94%,transparent);color-scheme:dark}
html[data-theme="dark"] button:focus-visible{outline-color:var(--accent)}
html[data-theme="dark"] input:focus-visible{outline-color:var(--accent)}
html[data-theme="dark"] ::selection{color:white;background:var(--green)}
html[data-theme="dark"] *{scrollbar-color:#41534d var(--neutral)}
#fleetSelectedCount{min-width:0;overflow-wrap:anywhere}
#fleetFilteredCount{min-width:0;overflow-wrap:anywhere}
#lastPosition{min-width:0;overflow-wrap:anywhere}
#lastSeen{min-width:0;overflow-wrap:anywhere}
#speed{min-width:0;overflow-wrap:anywhere}
#gpsQuality{min-width:0;overflow-wrap:anywhere}
#connection{min-width:0;overflow-wrap:anywhere}
#software{min-width:0;overflow-wrap:anywhere}
#historyCount{min-width:0;overflow-wrap:anywhere}
#historyRange{min-width:0;overflow-wrap:anywhere}
#historyRangeState{min-width:0;overflow-wrap:anywhere}
#mapFallback{min-width:0;overflow-wrap:anywhere}
#software[data-update-tone="working"]{color:var(--warning);font-weight:700}
#software[data-update-tone="error"]{color:var(--danger);font-weight:700}
#softwareDialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}
:root{--atlas-shadow:0 18px 48px rgba(29,43,41,.07);--section-surface:var(--ui-section);--work-surface:var(--paper)}
html{font-size:var(--font-md);line-height:1.4}
body{font-size:var(--font-md);line-height:1.4}
body{background:var(--ui-canvas)}
button{font-family:inherit}
button{word-break:normal;hyphens:none}
a{word-break:normal;hyphens:none}
input{word-break:normal;hyphens:none}
select{word-break:normal;hyphens:none}
textarea{word-break:normal;hyphens:none}
button{line-height:1.2}
h1{word-break:normal;overflow-wrap:normal;hyphens:none}
h2{word-break:normal;overflow-wrap:normal;hyphens:none}
h3{word-break:normal;overflow-wrap:normal;hyphens:none}
h1{color:var(--ink);font-weight:500;letter-spacing:-.035em}
h2{color:var(--ink);font-weight:500;letter-spacing:-.035em}
h3{color:var(--ink);font-weight:500;letter-spacing:-.035em}
h1{font-size:var(--font-hero);line-height:1}
h2{font-size:var(--font-xl);line-height:1.08}
h3{font-size:var(--font-lg);line-height:1.15}

/* server: auth. Canonical feature styles; shared controls live in apps/ui-core/src. */
.brand-link{color:inherit;text-decoration:none}
.brand{display:flex;align-items:center;gap:11px}
.brand-mark{display:grid;place-items:center;width:39px;height:39px;color:white;background:var(--green);border-radius:13px;font-size:var(--font-md);font-weight:700;letter-spacing:-.04em}
.brand div{display:grid}
.brand strong{font-size:var(--font-lg)}
.brand small{color:var(--muted);font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.12em}
.remote-admin-link{justify-self:start;margin-top:7px;padding:5px 8px;color:white;background:var(--green);border-radius:8px;font-size:var(--font-xs);font-weight:700;text-decoration:none}
.remote-admin-link.offline{color:var(--muted);background:rgba(101,113,111,.12);pointer-events:none}
.login-card label{display:grid;gap:6px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.login-page{display:grid;place-items:center;padding:20px;overflow:auto}
.login-page .login-card{flex:none;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto;gap:0;width:min(420px,100%);padding:30px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:24px;box-shadow:0 20px 70px rgba(29,43,41,.14)}
.login-brand{display:flex;align-items:center;gap:11px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.login-brand .brand-mark{flex:0 0 42px;width:42px;height:42px}
.login-brand>div{display:grid}
.login-brand strong{font-size:var(--font-lg)}
.login-brand small{margin-top:2px;color:var(--muted);font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.12em}
.login-intro{padding:27px 0 20px}
.login-card h1{font-size:var(--font-hero);line-height:1;letter-spacing:-.05em}
.login-copy{margin:8px 0 0;color:var(--muted);font-size:var(--font-md)}
.login-gate{min-height:210px}
.login-session-check{display:grid;place-items:center;align-content:center;gap:12px;min-height:210px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.login-session-check i{width:24px;height:24px;border:2px solid rgba(30,82,70,.18);border-top-color:var(--green);border-radius:50%;animation:loginCheckSpin .75s linear infinite}
.login-noscript{display:block;color:var(--danger);font-size:var(--font-sm);font-weight:600}
.login-card form{display:grid;gap:13px}
.login-card input{min-height:var(--control-target);padding:11px 12px}
.login-card .primary{margin-top:2px}
@media(prefers-reduced-motion:reduce){.login-session-check i{animation:none}}
.remote-error-state{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:11px;padding:14px;color:var(--ink);background:var(--neutral);border:1px solid var(--line);border-radius:14px}
.remote-error-state i{width:10px;height:10px;margin-top:3px;background:var(--danger);border-radius:50%;box-shadow:0 0 0 5px rgba(165,67,52,.12)}
.remote-error-state div{min-width:0;display:grid;gap:4px}
.remote-error-state strong{font-size:var(--font-md);line-height:1.25}
.remote-error-state span{color:var(--muted);font-size:var(--font-sm);line-height:1.4;overflow-wrap:anywhere}
.remote-error-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}
.remote-error-actions .action-link{display:flex;align-items:center;justify-content:center;min-height:46px;text-align:center}
.remote-error-card .login-intro{padding-bottom:18px}
@media(max-width:480px){.brand{gap:8px}}
@media(max-width:480px){.brand-mark{width:34px;height:34px;border-radius:11px}}
@media(max-width:480px){.brand strong{font-size:var(--font-md)}}
@media(max-width:480px){.login-page{padding:12px}}
@media(max-width:480px){.login-page .login-card{padding:22px;border-radius:20px}}
@media(max-width:480px){.login-brand{padding-bottom:18px}}
@media(max-width:480px){.login-intro{padding:18px 0 15px}}
@media(max-width:480px){.login-card h1{font-size:var(--font-2xl)}}
@media(max-width:360px){.brand strong{font-size:var(--font-md)}}
@media(max-width:360px){.brand small{font-size:var(--font-xs)}}
html[data-theme="dark"] .login-session-check i{border-color:rgba(120,200,178,.2);border-top-color:var(--accent)}
html[data-theme="dark"] .login-page .login-card{background:rgba(24,33,30,.94);box-shadow:0 18px 46px rgba(0,0,0,.24)}
@media(max-width:480px){.settings-shell .brand-link{min-height:var(--control-target)}}
.login-card .form-state{min-width:0;overflow-wrap:anywhere}
.login-session-check span{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){.login-page{padding:8px}}
@media(max-width:600px){.login-page .login-card{width:min(400px,100%);padding:16px;border-radius:18px}}
@media(max-width:600px){.login-brand{padding-bottom:12px}}
@media(max-width:600px){.login-brand .brand-mark{flex-basis:38px;width:38px;height:38px;border-radius:12px}}
@media(max-width:600px){.login-intro{padding:12px 0 11px}}
@media(max-width:600px){.login-card h1{font-size:var(--font-2xl);line-height:1.05}}
@media(max-width:600px){.login-copy{margin-top:5px;font-size:var(--font-sm);line-height:1.35}}
@media(max-width:600px){.login-gate{min-height:176px}}
@media(max-width:600px){.login-session-check{min-height:176px}}
@media(max-width:600px){.login-card form{gap:10px}}
@media(max-width:480px){body:not(.login-page):not(.settings-page) main{padding-top:5px}}
.nuanu-logo{position:relative;display:grid;place-items:center;flex:0 0 88px;width:88px;height:44px}
.nuanu-logo img{grid-area:1/1;width:100%;height:100%;object-fit:contain}
.nuanu-logo-white{display:none}
html[data-theme="dark"] .nuanu-logo-green{display:none}
html[data-theme="dark"] .nuanu-logo-white{display:block}
.nuanu-symbol{position:relative;display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;overflow:hidden}
.nuanu-symbol img{grid-area:1/1;width:100%;height:100%;object-fit:contain;transform:scale(1.65)}
.nuanu-symbol-white{display:none}
html[data-theme="dark"] .nuanu-symbol-green{display:none}
html[data-theme="dark"] .nuanu-symbol-white{display:block}
.brand>div{padding-left:12px;border-left:1px solid var(--line)}
.login-brand .nuanu-logo{flex-basis:108px;width:108px;height:44px}
.login-brand>div{padding-left:14px;border-left:1px solid var(--line)}
@media(max-width:480px){.login-brand{gap:0}}
@media(max-width:480px){.login-brand .nuanu-logo{flex-basis:92px;width:92px;height:40px}}
@media(max-width:480px){.login-brand>div{padding-left:10px}}

/* server: common. Canonical feature styles; shared controls live in apps/ui-core/src. */
.header-link{text-decoration:none}
.header-link{color:var(--green);border:1px solid var(--line);background:rgba(255,255,255,.58)}
.header-link:hover{color:white;background:var(--green);border-color:var(--green)}
.header-actions{display:flex;align-items:center;gap:10px}
.server-state{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--font-sm)}
.server-state i{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 0 5px rgba(30,82,70,.1)}
body[data-server-connection="reconnecting"] .server-state i{background:var(--warning);box-shadow:0 0 0 5px rgba(220,139,43,.12)}
body[data-server-connection="connecting"] .server-state i{background:var(--warning);box-shadow:0 0 0 5px rgba(220,139,43,.12)}
body[data-server-connection="offline"] .server-state i{background:var(--danger);box-shadow:0 0 0 5px rgba(165,67,52,.12)}
.screen-wake{display:flex;align-items:center;gap:7px;padding:7px 10px;color:var(--muted);background:rgba(255,255,255,.55);border:1px solid var(--line);border-radius:999px;font-size:var(--font-sm);font-weight:600;line-height:1.1;text-align:center}
.screen-wake i{flex:0 0 7px;width:7px;height:7px;background:var(--warning);border-radius:50%}
.screen-wake.active{color:var(--green);background:var(--soft)}
.screen-wake.active i{background:var(--green);box-shadow:0 0 0 4px rgba(30,82,70,.12)}
.screen-wake.retry{color:var(--danger);background:rgba(165,67,52,.07);border-color:rgba(165,67,52,.3)}
.screen-wake.retry i{background:var(--danger)}
.screen-wake:disabled{cursor:default;opacity:.65}
.panel-head{display:flex;align-items:center;justify-content:space-between;min-height:0;padding:8px 12px;border-bottom:1px solid var(--line)}
.eyebrow{margin:0 0 3px;text-transform:uppercase}
.empty{display:grid;place-items:center;height:100%;min-height:160px;color:var(--muted);font-size:var(--font-md);text-align:center}
.dialog-body{display:grid;gap:14px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-grid label{display:grid;gap:6px;color:var(--muted);font-weight:600}
.created-key{display:grid;gap:7px;padding:12px;background:var(--soft);border-radius:13px}
.created-key small{font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.08em}
.created-key>div{display:grid;grid-template-columns:1fr auto;gap:8px}
.created-key p{margin:0;color:var(--muted);font-size:var(--font-sm)}
.form-state{min-height:16px;color:var(--green);font-size:var(--font-sm);font-weight:600}
.form-state.error{color:var(--danger)}
.toast{position:fixed;padding:12px 15px;color:white;background:var(--green);opacity:0;transform:translateY(14px);transition:.2s;pointer-events:none}
.toast.show{opacity:1;transform:none}
.wide{width:100%}
@media(max-width:800px){.text-button{display:none}}
@media(max-width:800px){.screen-wake{padding:6px 9px;font-size:var(--font-xs)}}
@media(max-width:800px){.panel-head{min-height:58px;padding:10px 12px}}
@media(max-width:800px){.manage-bus-link{padding:7px 9px;font-size:var(--font-xs)}}
@media(max-width:800px){.form-grid{grid-template-columns:1fr}}
@media(max-width:480px){.screen-wake{max-width:128px;padding:6px 8px;font-size:var(--font-xs)}}
@media(max-width:480px){.screen-wake span{line-height:1.1;overflow-wrap:anywhere}}
@media(max-width:480px){.panel-head{min-height:48px;padding:7px 10px}}
@media(max-width:480px){.manage-bus-link{padding:6px 8px;font-size:var(--font-xs)}}
.action-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.settings-page .form-state{margin-top:9px;color:var(--muted);font-size:var(--font-sm);line-height:1.3}
.empty.compact{min-height:70px;height:auto;padding:18px;background:var(--neutral);border-radius:12px}
@media(max-width:480px){.header-actions{gap:6px}}
@media(max-width:480px){.header-link{padding:6px 8px;font-size:var(--font-xs)}}
@media(max-width:360px){.screen-wake{display:flex;min-width:50px;width:auto;height:44px;padding:0 6px;gap:4px}}
@media(max-width:360px){.screen-wake span{display:block;font-size:0}}
@media(max-width:360px){.screen-wake span::after{content:attr(data-mobile-text);font-size:var(--font-xs)}}
html[data-theme="dark"] .header-link{color:var(--accent)}
html[data-theme="dark"] .screen-wake.active{color:var(--accent)}
html[data-theme="dark"] .eyebrow{color:var(--accent)}
html[data-theme="dark"] .form-state{color:var(--accent)}
html[data-theme="dark"] .header-link{background:rgba(31,43,39,.88)}
html[data-theme="dark"] .screen-wake{background:rgba(31,43,39,.88)}
html[data-theme="dark"] .theme-trigger{background:rgba(31,43,39,.88)}
@media(max-width:480px){.screen-wake{min-height:var(--control-target)}}
@media(max-width:480px){.header-link{min-height:var(--control-target)}}
@media(max-width:480px){.header-link{display:inline-flex;align-items:center;justify-content:center}}
@media(max-width:480px){.settings-page .action-link{min-height:var(--control-target)}}
.settings-page .form-state{min-width:0;overflow-wrap:anywhere}
.created-key p{min-width:0;overflow-wrap:anywhere}
.toast{max-height:min(40dvh,240px);overflow:auto;line-height:1.3;overflow-wrap:anywhere}
@media(max-width:480px){.dialog-body{gap:10px}}
@media(max-width:480px){.dialog-actions button{min-height:var(--control-target)}}
@media(max-width:480px){.screen-wake span::after{font-size:var(--font-xs)}}
.media-kind{min-width:48px;padding:0 7px;white-space:nowrap}
.card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}
.card-heading>small{color:var(--muted);font-size:var(--font-sm)}
.card-heading button{min-height:var(--control-target)}
.count-pill{color:white;background:var(--green)}
.type-chip{display:inline-flex;align-items:center;min-height:20px;padding:3px 7px;color:var(--ink);background:color-mix(in srgb,var(--chip) 16%,var(--paper));border-left:3px solid var(--chip);border-radius:7px;font-size:var(--font-xs);font-weight:700}
.type-chip.all{--chip:var(--muted)}
.type-chip.unrouted{--chip:#8b6f47}
.fleet-config-page dialog>form .dialog-scroll{flex:1;min-height:0}
.fleet-config-page dialog .dialog-actions{flex:0 0 auto}
.dialog-scroll{max-height:calc(100dvh - 165px);overflow:auto}
.wide-field{grid-column:auto}
.toggle-field{display:flex!important;align-items:center;gap:9px;align-self:end;min-height:var(--control-target);padding:8px 10px;color:var(--ink)!important;background:var(--neutral);border:1px solid var(--line);border-radius:11px}
.toggle-field input{flex:0 0 auto;width:18px;min-height:18px;margin:0}
.icon-button.small{width:44px;height:44px;padding:0;font-size:var(--font-xl)}
.icon-button.small:disabled{opacity:.25;cursor:default}
.silence-setting{display:flex;align-items:center;gap:10px;margin:12px 14px;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:12px;cursor:pointer}
.silence-setting input{flex:0 0 auto;width:19px;min-height:19px;margin:0}
.silence-setting span{display:grid;gap:3px}
.silence-setting strong{font-size:var(--font-sm)}
.silence-setting small{color:var(--muted);font-size:var(--font-xs)}
.media-kind{display:grid;place-items:center;width:31px;height:31px;color:var(--green);background:var(--soft);border-radius:9px;font-size:var(--font-xs);font-weight:800}
html[data-theme="dark"] .silence-setting{background:var(--paper)}
@media(min-width:801px){.card-heading{min-height:58px;padding:8px 13px}}
@media(min-width:801px){.card-heading h2{font-size:var(--font-xl)}}
@media(max-width:800px){.wide-field{grid-column:1/-1}}
@media(max-width:600px){.card-heading h2{font-size:var(--font-xl)}}
@media(max-width:600px){.dialog-scroll{max-height:calc(100dvh - 142px)}}
@media(max-width:600px){.wide-field{grid-column:auto}}
@media(max-width:480px){.dialog-actions .danger-button{grid-column:1/-1}}
.eyebrow{word-break:normal;overflow-wrap:normal;hyphens:none}
.count-pill{word-break:normal;overflow-wrap:normal;hyphens:none}
.eyebrow{margin-bottom:5px;color:var(--green);font-size:11px;font-weight:700;line-height:1.2;letter-spacing:.14em}
.header-link{min-height:var(--control-target);padding:var(--control-padding);border-radius:var(--radius-control);font-size:var(--font-sm);font-weight:600}
.action-link{min-height:var(--control-target);padding:var(--control-padding);border-radius:var(--radius-control);font-size:var(--font-sm);font-weight:600}
.theme-trigger{border-radius:12px;box-shadow:none}
.partner-card{background:var(--paper);border-color:color-mix(in srgb,var(--ink) 14%,transparent);border-radius:var(--radius-card);box-shadow:var(--atlas-shadow)}
.panel-head{border-color:color-mix(in srgb,var(--ink) 12%,transparent)}
.card-heading{border-color:color-mix(in srgb,var(--ink) 12%,transparent)}
.partner-main{padding-top:22px}
.partner-hero{padding:12px}
.partner-hero h1{font-size:var(--font-2xl);line-height:1}
.partner-hero p:not(.eyebrow){max-width:720px;margin-top:9px;font-size:15px;line-height:1.45}
.card-heading{min-height:0;padding:8px 12px}
.card-heading h2{font-size:var(--font-lg)}
.dialog-scroll{padding:12px}
.partner-dialog-body{padding:12px}
.form-grid label{font-size:13px}
.toast{right:18px;bottom:18px;max-width:min(420px,calc(100% - 36px));border-radius:12px;font-size:14px}
html[data-theme="dark"] .partner-card{background:var(--paper)}
@media(max-width:800px){.server-state{display:none}}
@media(max-width:600px){.partner-main{padding-top:10px}}
@media(max-width:600px){.partner-hero{padding:14px 3px 8px}}
@media(max-width:600px){.partner-hero h1{font-size:var(--font-2xl)}}
@media(max-width:600px){.partner-hero p:not(.eyebrow){font-size:14px}}
@media(max-width:600px){.partner-card{border-radius:17px}}
@media(max-width:600px){.card-heading{min-height:0;align-items:flex-start;padding:13px}}
@media(max-width:600px){.dialog-scroll{padding:14px}}
@media(max-width:600px){.partner-dialog-body{padding:14px}}

/* server: monitoring. Canonical feature styles; shared controls live in apps/ui-core/src. */
.map-head{display:flex;flex:none;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.map-title{min-width:0;flex:1 1 240px}
.map-title h2{font-size:var(--font-lg);line-height:1.1}
.map-title small{display:block;margin-top:2px;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.map-head-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
@media(max-width:800px){.map-head{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:8px}}
@media(max-width:800px){.map-head-actions{display:contents}}
.map-panel{min-height:0;overflow:auto;border:1px solid var(--line)}
.map-panel{display:flex;flex-direction:column}
.map{position:relative;isolation:isolate;flex:1;min-height:max(180px,var(--fleet-map-required-height,0px));overflow:hidden;background:linear-gradient(rgba(30,82,70,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(30,82,70,.07) 1px,transparent 1px),var(--soft);background-size:32px 32px;cursor:grab;touch-action:none;overscroll-behavior:contain;user-select:none}
.connection-notice{position:absolute;z-index:6;top:56px;left:50%;display:flex;align-items:flex-start;gap:8px;max-width:calc(100% - 150px);min-height:36px;padding:8px 12px;color:#6f4314;background:rgba(255,246,229,.96);border:1px solid rgba(220,139,43,.45);border-radius:14px;box-shadow:0 7px 20px rgba(29,43,41,.15);font-weight:700;line-height:1.3;transform:translateX(-50%);pointer-events:none}
.connection-notice i{flex:0 0 8px;width:8px;height:8px;margin-top:2px;background:var(--warning);border-radius:50%;animation:connectionPulse 1s ease-in-out infinite}
.connection-notice span{overflow-wrap:anywhere}
body[data-server-connection="offline"] .connection-notice{color:var(--danger);background:rgba(255,244,241,.97);border-color:rgba(165,67,52,.4)}
body[data-server-connection="offline"] .connection-notice i{background:var(--danger)}
.map.following{cursor:default}
.map.interacting{cursor:grabbing}
.map-tiles{position:absolute;z-index:0;inset:0}
.map-tiles img{position:absolute;width:256px;height:256px;user-select:none}
.fleet-tile-layer{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.map-fallback{position:absolute;inset:0;display:grid;place-items:center;padding:30px;color:var(--muted);font-size:var(--font-md)}
@media(max-width:800px){.map-fallback{padding:16px 48px 100px}}
.map.ready .map-fallback{display:none}
.trail{position:absolute;z-index:1;inset:0;width:100%;height:100%;pointer-events:none}
.trail{overflow:visible}
.trail path{fill:none;stroke:var(--trail-color,var(--green));stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.78}
.stop-markers{position:absolute;z-index:2;inset:0;pointer-events:none}
.map-markers{position:absolute;z-index:3;inset:0;pointer-events:none}
#stopLabelLines{z-index:1}
@media(prefers-reduced-motion:reduce){.connection-notice i{animation:none}}
.history-range-form label{display:grid;gap:6px;color:var(--muted);font-weight:600}
.history-range-form{grid-template-columns:1fr 1fr}
.history-range-form .form-state{grid-column:1/-1}
@media(max-width:480px){.history-range-form{grid-template-columns:1fr}}
@media(max-width:480px){.history-range-form .form-state{grid-column:auto}}
@media(pointer:coarse){.map{touch-action:none}}
@media(max-width:800px){.map-panel{height:100%}}
html[data-theme="dark"] .trail path{stroke-width:5;filter:drop-shadow(0 0 2px #fff);opacity:1}
html[data-theme="dark"] .map-panel{box-shadow:0 18px 46px rgba(0,0,0,.24)}
html[data-theme="dark"] .map{background:linear-gradient(rgba(120,200,178,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(120,200,178,.07) 1px,transparent 1px),var(--soft);background-size:32px 32px}
html[data-theme="dark"] .map-tiles img{filter:brightness(.66) contrast(1.16) saturate(.7)}
html[data-theme="dark"] .connection-notice{color:#f2bf78;background:rgba(62,44,24,.96);border-color:rgba(226,161,83,.48);box-shadow:0 7px 22px rgba(0,0,0,.34)}
html[data-theme="dark"] body[data-server-connection="offline"] .connection-notice{color:#f19b8f;background:rgba(65,31,28,.97);border-color:rgba(208,107,93,.5)}
#selectedBusId{min-width:0;word-break:normal;overflow-wrap:break-word}
#selectedBusName{min-width:0;word-break:normal;overflow-wrap:break-word}
#mapSelectionSummary{min-width:0;word-break:normal;overflow-wrap:break-word}
.software-diagnostics{grid-template-columns:1fr 1fr}
.software-diagnostics>div{min-width:0;padding:12px;background:var(--neutral);border:1px solid var(--line);border-radius:12px}
.software-diagnostics dt{color:var(--muted);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.software-diagnostics dd{margin:6px 0 0;font-size:var(--font-md);line-height:1.4;overflow-wrap:anywhere}
.software-diagnostics .software-error{grid-column:1/-1;color:var(--danger);background:rgba(165,67,52,.07)}
#softwareDialog .software-diagnostics{overflow:auto;padding-bottom:18px}
.software-action-state{align-self:center;color:var(--muted);font-size:var(--font-sm);line-height:1.3;overflow-wrap:anywhere}
@media(max-width:480px){.software-diagnostics{grid-template-columns:1fr}}
@media(max-width:480px){.software-diagnostics .software-error{grid-column:auto}}
@media(max-width:480px){#softwareDialog .software-action-state{display:block;grid-column:1/-1}}
@media(max-width:480px){.connection-notice{top:59px;left:8px;right:58px;max-width:none;min-height:0;padding:7px 9px;font-size:var(--font-xs);transform:none}}
.map-panel{background:var(--paper);border-color:color-mix(in srgb,var(--ink) 14%,transparent);border-radius:var(--radius-card);box-shadow:var(--atlas-shadow)}
.connection-notice{font-size:13px;overflow-wrap:break-word}
.history-range-form label{font-size:13px}
html[data-theme="dark"] .map-panel{background:var(--paper)}

/* Fleet stop artwork is compact; its separate button retains touch sizing. */
#stopLabelLines{--stop-leader-opacity:25%;--stop-leader-width:1}
.monitoring-stop-marker{position:absolute;z-index:1;display:grid;place-items:center;width:var(--control-target);min-width:var(--control-target);height:var(--control-target);padding:0;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;box-shadow:none;pointer-events:auto}
.monitoring-stop-marker.announcement-point::before{content:"";position:absolute;inset:calc((var(--control-target) - 10px)/2);border:2px solid white;border-radius:50%;background:var(--stop-route-colors);box-shadow:0 1px 3px rgba(29,43,41,.18)}
.monitoring-stop-icon{position:relative;display:flex;align-items:center;gap:4px;box-sizing:border-box;min-width:26px;max-width:90px;min-height:26px;padding:3px 5px;border:2px solid white;background:#4267b2;color:white;border-radius:6px;font-size:12px;font-weight:700;line-height:16px;overflow-wrap:anywhere;pointer-events:none}
.monitoring-stop-icon img{width:14px;height:18px;flex:none;filter:brightness(0) invert(1)}
.monitoring-stop-marker.announcement-point .monitoring-stop-icon{display:none}
.monitoring-stop-marker.announcement-point:not([aria-expanded="true"]) .monitoring-stop-name{display:none}
.monitoring-stop-marker[aria-expanded="true"]{z-index:3}
.monitoring-stop-name{position:absolute;z-index:2;left:32px;top:50%;display:inline-flex;align-items:center;gap:4px;width:max-content;max-width:184px;padding:4px 6px;transform:translateY(-50%);color:var(--ink);background:color-mix(in srgb,var(--paper) 84%,transparent);border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);border-radius:6px;box-shadow:0 1px 3px rgba(29,43,41,.08);font-size:12px;font-weight:500;line-height:1.25;text-align:left;white-space:normal;overflow-wrap:anywhere;pointer-events:none}
.monitoring-stop-code{flex:none;color:var(--ink);font-weight:700}
.monitoring-stop-code:empty,.monitoring-stop-label:empty{display:none}
.monitoring-stop-label{min-width:0}
@media(max-width:600px),(pointer:coarse){.monitoring-stop-marker:not([aria-expanded="true"]) .monitoring-stop-name{display:none}}

/* One detection-zone layer for the read-only fleet and editable route maps. */
.stop-zones{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none}
.stop-zone{vector-effect:non-scaling-stroke;transition:fill-opacity .4s,stroke-opacity .4s}
.stop-zone.approach{fill:var(--warning);fill-opacity:.04;stroke:var(--warning);stroke-opacity:.65;stroke-width:1.25;stroke-dasharray:5 4}
.stop-zone.departure{fill:var(--muted);fill-opacity:.03;stroke:var(--muted);stroke-opacity:.6;stroke-width:1.15;stroke-dasharray:2 3}
.stop-zone.arrival{fill:var(--green);fill-opacity:.08;stroke:var(--green);stroke-opacity:.75;stroke-width:1.4}
.stop-zone.selected{fill-opacity:.16;stroke-opacity:1;stroke-width:2.5}
.stop-zone.triggered{fill-opacity:.23;stroke-opacity:1;stroke-width:2.5;animation:zoneTrigger 1.6s ease-in-out 3}
.stop-zones .disabled{opacity:.3}
@keyframes zoneTrigger{0%,100%{fill-opacity:.14;stroke-opacity:.7}50%{fill-opacity:.3;stroke-opacity:1}}
@media(prefers-reduced-motion:reduce){.stop-zone.triggered{animation:none}}
.map-zone-activity{position:absolute;z-index:4;top:46px;left:8px;max-width:calc(100% - 64px);margin:0;padding:4px 8px;border:1px solid var(--line);border-radius:var(--radius-small,8px);background:var(--paper);color:var(--ink);font-size:var(--font-xs);line-height:1.3;overflow-wrap:anywhere;pointer-events:none}
.zone-legend{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--muted);font-size:var(--font-xs);line-height:1.3}
.zone-legend span{display:inline-flex;align-items:center;gap:5px}
.zone-legend i{width:14px;height:14px;border:1px solid var(--green);border-radius:50%;background:color-mix(in srgb,var(--green) 8%,transparent)}
.zone-legend i.approach{border-color:var(--warning);border-style:dashed;background:transparent}
.zone-legend i.departure{border-color:var(--muted);border-style:dotted;background:transparent}
.zone-editor-toolbar{display:flex;align-items:center;gap:8px;margin:8px 0}
.zone-editor-toolbar select{flex:1;min-width:0}
.route-zone-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin:0;padding:12px;border-right:1px solid var(--line)}
.route-zone-toolbar strong{min-width:0;overflow-wrap:anywhere}
.route-zone-stop{font-size:var(--font-sm);line-height:1.4;overflow-wrap:anywhere}
.route-boundary-note{margin:0;font-size:var(--font-sm);font-weight:400;line-height:1.4;color:var(--muted);overflow-wrap:anywhere}
.route-zone-toolbar>label{display:grid;min-width:0;gap:4px;font-size:var(--font-xs);color:var(--muted)}
.route-zone-toolbar>.zone-radius-field{order:3}
.zone-radius-field input{min-width:0;width:100%}
.route-zone-toolbar .ui-form-state{order:4;margin:0;font-size:var(--font-xs)}
.route-zone-toolbar[hidden],.zone-radius-handle[hidden]{display:none}
/* One timing control layout, shared by the map toolbar and stop editor. */
.route-speed-settings{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:8px 16px;width:100%;min-width:0;padding:12px 0;border-top:1px solid var(--line)}
.route-speed-heading{grid-column:1/-1;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px}
.route-speed-heading h3{margin:0;font-size:var(--font-md);font-weight:600}
.route-speed-heading small{color:var(--muted);font-size:var(--font-xs)}
.route-speed-settings .route-speed-choice{grid-column:1/-1;display:grid;gap:4px;min-width:0;margin:0;color:var(--muted);font-size:var(--font-xs);font-weight:500}
.route-speed-settings [data-route-choice]{width:100%;min-width:0}
.route-speed-settings .route-speed-toggle{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:center;align-self:end;min-height:var(--control-target);margin:0;color:var(--ink);font-size:var(--font-sm);font-weight:500;cursor:pointer}
.route-speed-toggle input[type=checkbox]{width:18px;height:18px;min-height:0;margin:0;accent-color:var(--green)}
.route-speed-values{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}
.route-speed-values>div{min-width:0}
.route-speed-values dt{font-size:var(--font-xs);font-weight:600;color:var(--ink)}
.route-speed-values dd{margin:4px 0 0;font-size:var(--font-sm);font-weight:600;overflow-wrap:anywhere}
.route-speed-values dd>label:not(.route-speed-toggle){display:grid;gap:4px;color:var(--muted);font-size:var(--font-xs);font-weight:500}
.route-speed-values dd small{font-size:var(--font-xs);font-weight:400}
.route-speed-values input[type=number]{width:100%;min-width:0}
.route-speed-values .route-speed-toggle{margin-top:4px;align-self:start}

.route-speed-settings>.editor-explainer{grid-column:1/-1;margin:0;overflow-wrap:anywhere}
.route-speed-settings>button{justify-self:start;grid-column:1/-1}
.route-zone-toolbar .route-speed-settings{display:flex;flex-direction:column;gap:12px;padding:0;border:0}
.route-zone-toolbar .route-speed-choice{order:-1;width:100%}
.zone-phase-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;width:100%}
.zone-phase-controls button{display:grid;gap:2px;min-width:0;padding:6px 4px;font-size:var(--font-xs)}
.zone-phase-controls strong{font-size:var(--font-sm)}
.route-zone-toolbar .route-speed-values{display:block;width:100%}
.route-zone-toolbar .route-speed-values dt{display:none}
.route-zone-toolbar .route-speed-values dd{margin:0}
.route-zone-toolbar .route-speed-values>div[hidden]{display:none}
@media(max-width:900px){
  .route-zone-toolbar:not([hidden]),.route-zone-toolbar .route-speed-settings{display:contents}
  .route-zone-stop{order:0;padding:8px 12px}
  .route-zone-toolbar .route-speed-choice{order:3;padding:8px 12px 0}
  .zone-phase-controls{order:4;padding:8px 12px 0}
  .route-zone-toolbar .route-speed-values{order:5;padding:8px 12px 0}
  .route-zone-toolbar>.zone-radius-field{order:5;padding:8px 12px 0}
  .route-zone-toolbar .editor-explainer,.route-zone-toolbar [data-speed-action]{order:6;margin:8px 12px 0}
  .route-zone-toolbar .ui-form-state{order:7;padding:8px 12px}
}
@media(max-width:600px){.route-speed-settings{grid-template-columns:minmax(0,1fr)}.route-speed-values{grid-template-columns:minmax(0,1fr);gap:12px}}
.zone-radius-handle{position:absolute;z-index:2;transform:translate(-50%,-50%);width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;touch-action:none;cursor:ew-resize;display:grid;place-items:center}
.zone-radius-handle span{width:14px;height:14px;border:2px solid var(--paper);border-radius:50%;background:var(--green);box-shadow:0 0 0 1px var(--ink);pointer-events:none}
.zone-radius-handle[data-phase=approach] span{background:var(--warning)}
.zone-radius-handle[data-phase=departure] span{background:var(--muted)}
.stop-label-leader{stroke:color-mix(in srgb,var(--ink) var(--stop-leader-opacity,48%),transparent);stroke-width:var(--stop-leader-width,1.25);stroke-linecap:round;vector-effect:non-scaling-stroke}

/* Inline editing mode of the Routes map. No second map or modal. */
.road-path-panel{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:8px 12px;border-bottom:1px solid var(--line);overflow-anchor:none}
.road-path-route-name{align-self:center;font-size:var(--font-sm);overflow-wrap:anywhere}
#catalogView:has(.is-road-editing)>.operations-hero{display:none}
.road-path-status{position:absolute;z-index:6;left:8px;bottom:var(--road-feedback-bottom,32px);display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;max-width:calc(100% - 16px);max-height:100px;overflow:auto;padding:8px 12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-control);box-shadow:0 2px 8px #0001}
.road-path-status>.ui-form-state{margin:0;min-height:0;min-width:min(180px,100%);flex:1;font-size:var(--font-xs)}
.road-path-status>button{flex:none}
.road-path-options{margin:0}
.road-path-options>summary{cursor:pointer;display:flex;align-items:center;gap:8px;list-style:none}
.road-path-options-body{position:absolute;z-index:20;top:100%;right:12px;width:360px;max-width:calc(100% - 16px);max-height:min(440px,var(--road-options-height,55dvh));overflow:auto;padding:12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:0 8px 24px #0002}
.road-path-options>summary::after,.road-path-order>summary::after{content:"▾"}
.road-path-options[open]>summary::after,.road-path-order[open]>summary::after{content:"▴"}
.road-path-toolbar .road-path-access{display:flex;align-items:center;gap:8px;min-width:0;min-height:44px;margin-bottom:8px;font-size:var(--font-sm)}
.road-path-access input{flex:none;width:auto;margin:0}
.road-path-panel>.road-path-toolbar>select{width:auto;flex:1;min-width:100px}
.road-path-panel>.road-path-toolbar{align-items:center}
.road-path-toolbar{display:flex;align-items:end;gap:8px;flex-wrap:wrap}
.road-path-toolbar label{display:grid;gap:4px;flex:1;min-width:120px}
.road-path-tools{grid-column:1/-1}
#roadPathOptions{margin-inline-start:auto}
.road-path-section-tools{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.road-path-section-tools>label{display:flex;align-items:center;gap:8px;flex:1;min-width:180px;font-size:var(--font-sm)}
.road-path-section-tools select{min-width:0;width:100%}
.road-path-section-tools>[role="group"]{display:flex;gap:4px}
.road-path-section-tools button{white-space:nowrap}
.road-path-section-tools>[role="group"]>button{flex:1}
.road-path-point-tools{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:var(--font-sm)}
.road-path-point-tools>label{display:grid;gap:4px;flex:1;min-width:120px}
.road-path-point-tools select{width:100%;min-width:0}
.road-path-options-heading{position:sticky;top:-12px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-block:8px;background:var(--paper)}
.stop-map-card:has(.is-road-editing)>:is(.route-map-toolbar,.route-path-status){display:none}
@media (any-pointer:coarse){.road-path-options>summary,.road-path-order>summary{min-height:44px}}
@media (max-width:600px){.road-path-panel{grid-template-columns:minmax(0,1fr);padding:8px}.road-path-primary{grid-column:1/-1}.road-path-tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}.road-path-tools>button{grid-column:span 2}.road-path-tools>.road-path-options{grid-column:span 3;min-width:0}#roadPathOptions{margin-inline-start:0}.road-path-options>summary{white-space:normal;justify-content:center;text-align:center;font-size:var(--font-xs)}.road-path-section-tools>[role="group"]{width:100%}.road-path-options-body{position:fixed;top:var(--road-options-top,220px);bottom:8px;left:8px;right:8px;width:auto;max-width:none;max-height:none}}
.fleet-stop-map:not(.is-road-editing) .road-path-layer{display:none}
.fleet-stop-map.is-road-editing :is(#routeMapLines,#routeMapMarkers,#routeMapZones,#routeMapFallback){display:none}
.stop-map-card:has(.is-road-editing)>.zone-legend{display:none}
.road-path-hint{margin:8px 0;color:var(--muted);font-size:var(--font-xs)}
.road-path-order summary{cursor:pointer;display:flex;align-items:center;gap:8px;list-style:none;margin:8px 0}
.road-path-order ol{list-style:none;margin:0;padding:0}
.road-path-order li{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--line)}
.road-path-order strong{font-size:var(--font-sm);font-weight:600;overflow-wrap:anywhere}
.road-path-order li>div{grid-column:2;display:flex;gap:4px}
.road-path-order .road-stop-name{min-width:0;text-align:left;white-space:normal;overflow-wrap:anywhere}
.road-stop-name small{display:block;margin-top:4px;color:var(--muted);font-weight:400}
.road-path-order>label{display:grid;gap:4px;margin-top:8px}
#roadPathPointControls{display:grid;gap:8px;min-width:0}
.road-announcement-point{z-index:4;pointer-events:none}
.road-announcement-point[aria-pressed="true"]{pointer-events:auto;z-index:5}
.road-announcement-point::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--route-color);border:2px solid var(--paper);box-shadow:0 0 0 1px var(--ink)}
.road-announcement-point span,.stop-approach-auto{position:absolute;pointer-events:none;min-width:20px;min-height:20px;border:1px solid var(--line);border-radius:8px;padding:3px 5px;background:var(--paper);color:var(--ink);font-size:var(--font-xs);font-weight:600;line-height:1.3}
.road-announcement-point span{bottom:34px}
.stop-approach-auto{transform:translate(-50%,-100%);max-width:calc(100% - 16px)}
.road-announcement-point[data-phase="approach_m"] span{bottom:60px}
.road-announcement-point[data-phase="departure_m"] span{bottom:auto;top:34px}
.road-path-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.road-path-line polyline{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.road-path-hit{fill:none;stroke:transparent;stroke-width:24;pointer-events:stroke;cursor:pointer}
@media(any-pointer:coarse){.road-path-hit{stroke-width:44}}
.road-path-casing{stroke:var(--paper);stroke-width:7}
.road-path-stroke{stroke:var(--route-color);stroke-width:4}
.road-path-stroke.is-manual{stroke-dasharray:8 5}
.road-path-gap{stroke:var(--warning);stroke-width:3;stroke-dasharray:6 6}
.road-path-line.has-focus>:is(.road-path-casing,#roadPathSections){opacity:.25}
.road-path-focus-halo{stroke:var(--ink);stroke-width:11;opacity:.5}
.road-path-focus-casing{stroke:var(--paper);stroke-width:8}
.road-path-focus-stroke{stroke:var(--route-color);stroke-width:5}
.road-path-focus-stroke.is-draft{stroke-dasharray:8 5}
.road-path-insert-guide{stroke:var(--ink);stroke-width:2;stroke-dasharray:3 5}
.road-path-insert-preview{fill:var(--paper);stroke:var(--ink);stroke-width:3;vector-effect:non-scaling-stroke}
#roadPathSelection{font-size:var(--font-xs);font-weight:600}
#roadPathStops[data-has-focus="true"] .fleet-stop-marker:not(.is-leg-endpoint){opacity:.4}
#roadPathStops .is-leg-endpoint .fleet-stop-code{outline:3px solid var(--ink);outline-offset:2px}
.road-path-point{position:absolute;z-index:2;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;background:transparent;display:grid;place-items:center;transform:translate(-50%,-50%);touch-action:none;cursor:move}
.road-path-point:not(.road-announcement-point) span{display:grid;place-items:center;width:24px;height:24px;border:2px solid var(--route-color);border-radius:50%;background:var(--paper);color:var(--ink);font-size:11px;font-weight:600;line-height:1;box-shadow:0 0 0 1px var(--paper)}
.road-path-point[aria-pressed=true] span{box-shadow:0 0 0 3px var(--ink)}

@media(max-width:360px){.road-path-primary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.road-path-panel>.road-path-primary>select{grid-column:1/-1;min-width:0;width:100%}}

/* server: settings. Canonical feature styles; shared controls live in apps/ui-core/src. */
.settings-page{min-height:100%;height:100%;overflow-x:hidden;overflow-y:auto}
.settings-main{display:block}
.settings-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.settings-hero p:not(.eyebrow){margin:12px 0 0;color:var(--muted)}
.migration-badge{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:10px 13px;color:var(--green);background:var(--soft);border:1px solid var(--line);border-radius:999px;font-size:var(--font-sm);font-weight:700}
.migration-badge i{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 0 4px rgba(30,82,70,.12)}
.migration-badge.warning{color:var(--danger);background:rgba(165,67,52,.08)}
.migration-badge.warning i{background:var(--danger);box-shadow:0 0 0 4px rgba(165,67,52,.12)}
.settings-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:12px}
.settings-summary article{position:relative;min-width:0;min-height:0;padding:12px;background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:18px}
.settings-summary small{display:block;margin-bottom:11px;color:var(--green);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.12em}
.settings-summary strong{display:block;font-size:var(--font-lg);line-height:1.25;overflow-wrap:anywhere}
.settings-summary span{display:block;margin-top:6px;color:var(--muted);font-size:var(--font-sm);line-height:1.25;overflow-wrap:anywhere}
.commissioning-card{--heading-inset:18px;margin-bottom:12px;padding:var(--heading-inset);border:1px solid var(--line)}
.service-types-card{margin-bottom:12px;padding:18px;border:1px solid var(--line)}
.service-types-head h2{margin:2px 0 5px;font-size:var(--font-xl)}
.service-types-head p:not(.eyebrow){max-width:760px;color:var(--muted);font-size:var(--font-sm);line-height:1.45}
.service-types-list{display:grid;gap:7px;margin-top:14px}
.service-type-editor{display:grid;grid-template-columns:52px minmax(150px,1fr) auto auto;align-items:end;gap:9px;padding:10px;background:var(--section-surface);border:1px solid var(--line);border-radius:14px}
.service-type-editor label{display:grid;gap:5px;color:var(--muted);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.service-type-editor input[type="color"]{width:52px;height:44px;padding:4px}
.service-type-editor input[type="text"]{min-height:var(--control-target)}
.service-type-active{align-self:center;display:flex!important;align-items:center;gap:7px!important;min-height:var(--control-target);text-transform:none!important;letter-spacing:0!important}
.service-type-active input{width:20px;height:20px}
.service-type-create{display:grid;grid-template-columns:minmax(180px,1fr) 90px auto;align-items:end;gap:9px;margin-top:10px;padding-top:12px;border-top:1px solid var(--line)}
.service-type-create label{display:grid;gap:5px;color:var(--muted);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.service-type-create input{min-height:var(--control-target)}
.service-type-create input[type="color"]{width:100%;padding:4px}
.commissioning-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.commissioning-head h2{margin:3px 0 0;font-size:var(--font-xl)}
.commissioning-head p:not(.eyebrow){max-width:720px;margin:7px 0 0;color:var(--muted);font-size:var(--font-sm);line-height:1.45}
.commissioning-count{flex:0 0 auto;padding:8px 11px;color:var(--green);background:var(--soft);border-radius:999px;font-size:var(--font-sm);font-weight:700}
.commissioning-list{display:grid;gap:7px;margin-top:14px}
.commissioning-claim{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px;background:var(--neutral);border:1px solid var(--line);border-radius:13px}
.commissioning-claim>div:first-child{display:grid;min-width:0}
.commissioning-claim strong{font-size:var(--font-md)}
.commissioning-claim span{margin-top:3px;color:var(--muted);font-size:var(--font-xs);line-height:1.35;overflow-wrap:anywhere}
.commissioning-actions{display:flex;align-items:center;gap:7px}
.commissioning-actions button{min-width:74px}
.commissioning-approved{margin:0!important;color:var(--green)!important;font-weight:700}
.inline-copy{position:static;min-height:32px;margin:0;padding:5px 7px;color:var(--muted);background:transparent;border:0;border-radius:9px;font-size:var(--font-xs);font-weight:700}
.address-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:8px;align-content:start;align-items:start}
.address-summary small{grid-column:1/-1}
.address-summary strong{grid-column:1;min-width:0;font-size:var(--font-md)}
.address-summary .inline-copy{grid-column:2;grid-row:2;align-self:start}
.migration-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:12px}
.migration-steps{display:grid;gap:10px}
.migration-step{display:grid;grid-template-columns:48px minmax(0,1fr);gap:16px;padding:22px;background:rgba(255,255,255,.86);border:1px solid var(--line);border-radius:22px;box-shadow:0 14px 38px rgba(29,43,41,.05)}
.step-number{display:grid;place-items:center;width:42px;height:42px;color:white;background:var(--green);border-radius:14px;font-size:var(--font-lg);font-weight:700}
.step-content{min-width:0}
.step-content h2{font-size:var(--font-2xl)}
.cutover-card h2{font-size:var(--font-2xl)}
.step-content>p:not(.eyebrow){max-width:850px;margin:10px 0 14px;color:var(--muted);font-size:var(--font-md);line-height:1.55}
.step-footnote{max-width:850px;margin:10px 0 14px;color:var(--muted);font-size:var(--font-md);line-height:1.55}
.step-content code{padding:2px 5px;overflow-wrap:anywhere;background:var(--neutral);border-radius:5px;font-size:.92em}
.cutover-card code{padding:2px 5px;overflow-wrap:anywhere;background:var(--neutral);border-radius:5px;font-size:.92em}
.code-panel{position:relative;margin-top:14px;color:#eaf3ef;background:#17332d;border-radius:15px;overflow:auto}
.code-panel pre{min-width:620px;margin:0;padding:42px 20px 20px;font:11px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}
.code-copy{position:absolute;top:9px;right:9px;padding:6px 8px;color:#eaf3ef;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);border-radius:8px;font-size:var(--font-xs);font-weight:700}
.warning-note{margin-top:12px;padding:11px 13px;color:var(--ink);background:#fbf3e8;border-left:3px solid var(--warning);border-radius:9px;font-size:var(--font-sm);line-height:1.5}
.server-address-check{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:8px;margin-top:14px}
.server-address-check label{display:grid;gap:6px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.server-address-check input{width:100%;min-height:42px;padding:10px 12px;color:var(--ink);background:var(--neutral);border:1px solid var(--line);border-radius:11px}
.migration-fleet{display:grid;gap:7px;margin:14px 0}
.migration-bus{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;background:var(--neutral);border:1px solid var(--line);border-radius:12px}
.migration-bus>div{display:grid;min-width:0}
.migration-bus strong{font-size:var(--font-md);line-height:1.2}
.migration-bus span{margin-top:3px;color:var(--muted);font-size:var(--font-xs);line-height:1.25}
.migration-bus .action-link{flex:0 0 auto;font-size:var(--font-sm)}
.migration-bus .disabled{opacity:.48;pointer-events:none}
.cutover-card{position:sticky;top:12px;padding:22px;background:var(--green);color:white;border-radius:22px;box-shadow:0 18px 44px rgba(21,63,54,.18)}
.cutover-card .eyebrow{color:#bcd5cc}
.cutover-card ol{display:grid;gap:11px;margin:20px 0;padding-left:20px;font-size:var(--font-sm);line-height:1.45}
.cutover-rule{display:grid;gap:6px;padding:13px;color:var(--ink);background:#f7dfd9;border-radius:12px;font-size:var(--font-sm);line-height:1.45}
.cutover-rule span{opacity:.78}
.release-copy{opacity:.78}
.release-copy{margin:15px 0 0;font-size:var(--font-sm);line-height:1.5}
.cutover-card code{color:var(--ink)}
@media(max-width:960px){.settings-summary{grid-template-columns:1fr 1fr}}
@media(max-width:960px){.migration-layout{grid-template-columns:1fr}}
@media(max-width:960px){.cutover-card{position:static}}
@media(max-width:960px){.settings-page .settings-main{display:block}}
@media(max-width:960px){.settings-page .settings-signout{display:inline-flex}}
@media(max-width:600px){.settings-shell .settings-signout{display:none}}
@media(max-width:600px){.settings-hero{display:grid}}
@media(max-width:600px){.migration-badge{justify-self:start}}
@media(max-width:600px){.address-summary{grid-template-columns:minmax(0,1fr) auto;column-gap:6px}}
@media(max-width:600px){.address-summary small{margin-bottom:4px}}
@media(max-width:600px){.address-summary .inline-copy{align-self:start;margin:0;padding:5px 7px}}
@media(max-width:600px){.server-address-check{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.server-address-check label{grid-column:1/-1}}
@media(max-width:600px){.code-panel pre{min-width:0;padding:42px 14px 16px;font-size:var(--font-xs)}}
@media(max-width:600px){.migration-bus{align-items:flex-start}}
@media(max-width:600px){.migration-bus .action-link{padding:7px}}
@media(max-width:600px){.commissioning-card{--heading-inset:13px}}
@media(max-width:600px){.commissioning-head{display:grid;gap:8px}}
@media(max-width:600px){.commissioning-head h2{font-size:var(--font-xl)}}
@media(max-width:600px){.commissioning-count{justify-self:start}}
@media(max-width:600px){.commissioning-claim{grid-template-columns:1fr}}
@media(max-width:600px){.commissioning-actions{display:grid;grid-template-columns:1fr 1fr}}
@media(max-width:600px){.commissioning-actions button{min-height:var(--control-target)}}
@media(max-width:600px){.commissioning-approved{min-height:var(--control-target);display:flex;align-items:center}}
@media(max-width:600px){.service-types-card{padding:13px}}
@media(max-width:600px){.service-types-head h2{font-size:var(--font-xl)}}
@media(max-width:600px){.service-type-editor{align-items:end}}
@media(max-width:600px){.service-type-editor .service-type-active{min-height:var(--control-target)}}
@media(max-width:600px){.service-type-editor button{min-height:var(--control-target)}}
@media(max-width:600px){.service-type-create{grid-template-columns:minmax(0,1fr) 76px}}
@media(max-width:600px){.service-type-create button{grid-column:1/-1;min-height:var(--control-target)}}
@media(max-width:600px){.service-type-editor{grid-template-columns:52px minmax(0,1fr) 76px}}
@media(max-width:600px){.service-type-editor>label:nth-child(2){grid-column:2/-1}}
@media(max-width:600px){.service-type-editor .service-type-active{grid-column:1/3}}
@media(max-width:600px){.service-type-editor>button{grid-column:3}}
html[data-theme="dark"] .migration-badge{color:var(--accent)}
html[data-theme="dark"] .settings-summary small{color:var(--accent)}
html[data-theme="dark"] .settings-summary article{background:rgba(24,33,30,.94);box-shadow:0 18px 46px rgba(0,0,0,.24)}
html[data-theme="dark"] .migration-step{background:rgba(24,33,30,.94);box-shadow:0 18px 46px rgba(0,0,0,.24)}
html[data-theme="dark"] .commissioning-card{box-shadow:0 18px 46px rgba(0,0,0,.24)}
html[data-theme="dark"] .service-types-card{box-shadow:0 18px 46px rgba(0,0,0,.24)}
html[data-theme="dark"] .warning-note{background:#342a1d}
html[data-theme="dark"] .cutover-rule{background:#3a2421}
html[data-theme="dark"] .code-panel{background:#0c1512;border:1px solid var(--line)}
@media(max-width:480px){.settings-page .inline-copy{min-height:var(--control-target)}}
@media(max-width:480px){.settings-page .code-copy{min-height:var(--control-target)}}
@media(max-width:480px){.settings-page .server-address-check input{min-height:var(--control-target)}}
@media(max-width:480px){.settings-page .code-panel pre{padding-top:60px}}
.migration-bus strong{min-width:0;overflow-wrap:anywhere}
.migration-bus span{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){.settings-hero{gap:8px}}
@media(max-width:600px){.settings-hero h1{line-height:1.05}}
@media(max-width:600px){.settings-hero p:not(.eyebrow){margin-top:6px;line-height:1.4}}
@media(max-width:600px){.migration-badge{max-width:100%;padding:7px 10px;border-radius:12px;font-size:var(--font-xs);line-height:1.25;white-space:normal}}
@media(max-width:600px){.settings-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:8px}}
@media(max-width:600px){.settings-summary article{min-height:0;padding:9px;border-radius:13px}}
@media(max-width:600px){.settings-summary small{margin-bottom:5px;font-size:var(--font-xs);line-height:1.2;letter-spacing:.09em}}
@media(max-width:600px){.settings-summary strong{font-size:var(--font-md);line-height:1.2}}
@media(max-width:600px){.settings-summary span{margin-top:4px;font-size:var(--font-xs);line-height:1.25}}
@media(max-width:600px){.settings-summary .address-summary{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:6px;min-height:0}}
@media(max-width:600px){.address-summary strong{font-size:var(--font-sm);line-height:1.25}}
@media(max-width:600px){.settings-page .inline-copy{min-width:44px}}
@media(max-width:600px){.migration-layout{gap:8px}}
@media(max-width:600px){.migration-steps{gap:8px}}
@media(max-width:600px){.migration-step{grid-template-columns:30px minmax(0,1fr);gap:8px;padding:12px;border-radius:15px}}
@media(max-width:600px){.step-number{width:30px;height:30px;border-radius:10px;font-size:var(--font-md)}}
@media(max-width:600px){.step-content h2{font-size:var(--font-xl);line-height:1.12}}
@media(max-width:600px){.cutover-card h2{font-size:var(--font-xl);line-height:1.12}}
@media(max-width:600px){.step-content>p:not(.eyebrow){margin:6px 0 10px;font-size:var(--font-sm);line-height:1.45}}
@media(max-width:600px){.step-footnote{margin:6px 0 10px;font-size:var(--font-sm);line-height:1.45}}
@media(max-width:600px){.code-panel{margin-top:9px;border-radius:12px}}
@media(max-width:600px){.warning-note{margin-top:8px;padding:9px 10px;font-size:var(--font-sm);line-height:1.4}}
@media(max-width:600px){.server-address-check{gap:6px;margin-top:10px}}
@media(max-width:600px){.migration-fleet{gap:5px;margin:10px 0}}
@media(max-width:600px){.migration-bus{gap:8px;padding:8px 9px}}
@media(max-width:600px){.cutover-card{padding:14px;border-radius:15px}}
@media(max-width:600px){.cutover-card ol{gap:8px;margin:13px 0;padding-left:18px;font-size:var(--font-sm)}}
@media(max-width:600px){.cutover-rule{padding:10px;font-size:var(--font-sm)}}
@media(max-width:600px){.release-copy{margin-top:10px}}
@media(max-width:340px){.settings-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:340px){.migration-bus{display:grid;grid-template-columns:minmax(0,1fr) auto}}
.settings-gear{display:grid;place-items:center;width:44px;height:44px;color:var(--ink);background:rgba(255,255,255,.58);border:1px solid var(--line)}
.settings-gear svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.settings-gear:hover{color:var(--green);background:var(--soft)}
.settings-gear.active{color:white;background:var(--green);border-color:var(--green)}
.settings-subnav{display:flex;gap:4px;width:max-content;max-width:100%;padding:4px;background:color-mix(in srgb,var(--paper) 75%,transparent);border:1px solid var(--line);border-radius:12px}
.settings-subnav a{display:flex;align-items:center;min-height:40px;padding:7px 11px;color:var(--muted);border-radius:9px;font-size:var(--font-sm);font-weight:700;text-decoration:none}
.settings-subnav a.active{color:white;background:var(--green)}
html[data-theme="dark"] .settings-gear{background:rgba(31,43,39,.88)}
.settings-gear svg{stroke-width:2}
@media(max-width:480px){.settings-subnav{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));width:100%}}
@media(max-width:480px){.settings-subnav a{justify-content:center;min-width:0;min-height:var(--control-target);text-align:center}}
@media(max-width:480px){.commissioning-card{min-width:0}}
@media(max-width:480px){.service-types-card{min-width:0}}
.settings-gear{border-radius:12px;box-shadow:none}
.service-types-card{background:var(--paper);border-color:color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:var(--atlas-shadow)}
.commissioning-card{background:var(--paper);border-color:color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:var(--atlas-shadow)}
.settings-hero{padding:12px}
.settings-hero h1{font-size:var(--font-2xl);line-height:1}
.settings-hero p:not(.eyebrow){max-width:720px;margin-top:9px;font-size:15px;line-height:1.45}
html[data-theme="dark"] .service-types-card{background:var(--paper)}
html[data-theme="dark"] .commissioning-card{background:var(--paper)}
@media(max-width:600px){.settings-main{padding-top:10px}}
@media(max-width:600px){.settings-hero{padding:14px 3px 8px}}
@media(max-width:600px){.settings-hero h1{font-size:var(--font-2xl)}}
@media(max-width:600px){.settings-hero p:not(.eyebrow){font-size:14px}}
.settings-main{margin-top:22px;padding-top:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--atlas-shadow)}
.settings-main > .settings-hero{margin:0;padding:12px;border-bottom:1px solid var(--line)}
.settings-body{display:grid;gap:14px;padding:14px;background:var(--section-surface)}
.settings-body .map-settings-card{margin:0;background:var(--work-surface);box-shadow:none}
.settings-body .commissioning-card{margin:0;background:var(--work-surface);box-shadow:none}
@media (max-width: 600px){.settings-main{margin-top:10px}}
@media (max-width: 600px){.settings-main > .settings-hero{padding:12px}}
@media (max-width: 600px){.settings-body{gap:10px;padding:10px}}

.user-create-card,.users-list-card{padding:14px;background:var(--work-surface);border:1px solid var(--line);box-shadow:none}
.user-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.user-card-head h2{margin:2px 0 0;font-size:var(--font-xl)}
.user-card-head p:not(.eyebrow){margin:5px 0 0;color:var(--muted);font-size:var(--font-sm);line-height:1.4}
.user-create-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(220px,1fr);gap:12px;margin-top:12px}
.user-create-form>label,.user-edit-form>label,.user-expiry-field{display:grid;gap:5px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.user-create-form label small,.user-edit-form label small{font-weight:400;line-height:1.35}
.user-access-choice{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0;padding:0;border:0}
.user-access-choice legend{grid-column:1/-1;margin-bottom:5px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.user-access-choice label{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;min-height:var(--control-target);padding:9px;background:var(--section-surface);border:1px solid var(--line);border-radius:var(--radius-control);cursor:pointer}
.user-access-choice input{width:18px;height:18px;margin:1px 0 0}
.user-access-choice span{display:grid;gap:2px;min-width:0}
.user-access-choice small{color:var(--muted);font-size:var(--font-xs);font-weight:400;line-height:1.3}
.user-page-choice{grid-column:1/-1;margin:0;padding:0;border:0}
.user-page-choice legend{margin-bottom:6px;color:var(--muted);font-size:var(--font-sm);font-weight:600}
.user-page-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.user-page-options label{display:flex;align-items:center;gap:8px;min-height:var(--control-target);padding:8px 10px;background:var(--section-surface);border:1px solid var(--line);border-radius:var(--radius-control);cursor:pointer}
.user-page-options input{width:18px;height:18px;margin:0;flex:0 0 auto}
.user-page-choice>small{display:block;margin-top:6px;color:var(--muted);font-size:var(--font-xs);font-weight:400}
.user-create-form .user-expiry-field{align-self:end}
.user-create-form>.ui-form-state{grid-column:1/-1}
.user-create-form>button{grid-column:1/-1;justify-self:start}
.users-list{display:grid;gap:7px;margin-top:12px}
.portal-user-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px;background:var(--section-surface);border:1px solid var(--line);border-radius:var(--radius-control)}
.portal-user-row.expired{opacity:.72}
.portal-user-identity{display:grid;min-width:0}
.portal-user-identity strong{overflow-wrap:anywhere}
.portal-user-identity span,.protected-user-note{margin-top:3px;color:var(--muted);font-size:var(--font-xs);line-height:1.35}
.user-status{padding:5px 8px;color:var(--green);background:var(--soft);border-radius:999px;font-size:var(--font-xs);font-weight:700}
.user-status.expired{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}
.portal-user-actions{display:flex;align-items:center;gap:6px}
.portal-user-actions button{min-height:32px;padding:5px 9px;font-size:var(--font-xs)}
.protected-user-note{justify-self:end;margin:0}
.user-dialog{width:min(520px,calc(100% - 24px))}
.user-edit-form{display:grid;gap:12px}
.user-dialog-login{font-size:var(--font-lg);overflow-wrap:anywhere}
.user-edit-form>.primary{justify-self:start}
@media(max-width:760px){.user-create-form{grid-template-columns:1fr}}
@media(max-width:760px){.user-page-options{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.user-create-form>.ui-form-state,.user-create-form>button{grid-column:1}}
@media(max-width:760px){.portal-user-row{grid-template-columns:minmax(0,1fr) auto}}
@media(max-width:760px){.portal-user-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr auto}}
@media(max-width:760px){.portal-user-actions button{min-height:var(--control-target)}}
@media(max-width:760px){.protected-user-note{grid-column:1/-1;justify-self:start}}
@media(max-width:480px){.user-create-card,.users-list-card{padding:10px}}
@media(max-width:480px){.user-access-choice{grid-template-columns:1fr}}
@media(max-width:480px){.user-card-head{display:grid}}
@media(max-width:480px){.portal-user-row{grid-template-columns:minmax(0,1fr) auto;padding:9px}}
@media(max-width:480px){.portal-user-actions{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.portal-user-actions .danger-button{grid-column:1/-1}}
@media(max-width:480px){.portal-user-actions button{width:100%}}

/* server: setup. Canonical feature styles; shared controls live in apps/ui-core/src. */
.fleet-config-page{overflow:auto;touch-action:pan-x pan-y}
.operations-main{display:flex;flex-direction:column}
.operations-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}
.operations-hero>div:first-child{min-width:0}
.operations-hero p:not(.eyebrow){margin:7px 0 0;color:var(--muted);overflow-wrap:anywhere}
.operations-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.operations-actions button{min-height:var(--control-target)}
.operations-hero>button{min-height:var(--control-target)}
.operations-card{min-width:0;border:1px solid var(--line);overflow:hidden}
.sync-overview{display:grid;align-items:start;align-content:start;grid-auto-rows:max-content}
.sync-portal-card{display:grid;align-content:start;gap:9px}
.sync-portal-card>p{margin:3px 0 0;font-weight:700}
.sync-portal-card>small{color:var(--muted)}
.sync-card-head{display:flex;align-items:flex-start;justify-content:space-between}
.sync-card-head h2{line-height:1.15}
.sync-state{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);background:var(--neutral);border:1px solid var(--line);border-radius:999px;font-weight:800}
.sync-state.ok{color:var(--accent);background:var(--soft)}
.sync-state.working{color:var(--accent);background:var(--soft)}
.sync-state.error{color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,var(--paper))}
.sync-state.local{color:var(--warning)}
.sync-state.portal{color:var(--accent)}
.sync-card-actions{display:flex;justify-content:flex-end;gap:7px}
.sync-card-actions button{min-height:var(--control-target)}
.sync-card-actions .primary{grid-column:1/-1}
.sync-buses-card{display:flex;flex-direction:column}
.sync-buses-card>.sync-card-head{border-bottom:1px solid var(--line)}
.sync-buses-card>.sync-card-head small{display:block;margin-top:4px;color:var(--muted)}
.sync-bus-list{display:grid;align-content:start;padding:7px}
.sync-bus-row{display:grid;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:11px;border-bottom:1px solid var(--line)}
.sync-bus-row:last-child{border-bottom:0}
.sync-dot{width:10px;height:10px;background:var(--muted);border-radius:50%;box-shadow:0 0 0 4px color-mix(in srgb,var(--muted) 14%,transparent)}
.sync-bus-row.ok .sync-dot{background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent)}
.sync-bus-row.working .sync-dot{background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent)}
.sync-bus-row.attention .sync-dot{background:var(--warning);box-shadow:0 0 0 4px color-mix(in srgb,var(--warning) 14%,transparent)}
.sync-bus-row.error .sync-dot{background:var(--danger);box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 14%,transparent)}
.sync-bus-copy{display:grid;min-width:0;gap:4px}
.sync-bus-copy>div{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.sync-bus-copy p{margin:0;color:var(--ink);line-height:1.35}
.sync-bus-copy small{color:var(--muted)}
.sync-bus-actions{display:flex;grid-column:2;flex-wrap:wrap;justify-content:flex-start;gap:6px}
.sync-bus-differences{grid-column:2;min-width:0;display:grid;gap:8px}
.sync-transfer-target{display:grid;gap:8px;min-width:0}
.sync-transfer-target>h3{margin:0;font-size:var(--font-md);overflow-wrap:anywhere}
#publishDifferences{display:grid;gap:16px}
#publishEffect{margin:0;padding:10px;border-left:3px solid var(--warning);background:var(--neutral);font-size:var(--font-sm);line-height:1.4}
.sync-bus-actions button{min-height:var(--control-target);font-size:var(--font-xs)}
.sync-bus-copy .sync-state{max-width:100%;white-space:normal;text-align:center}
.sync-update-dialog{width:min(560px,calc(100% - 24px));max-height:calc(100dvh - 24px)}
.sync-update-dialog[open]{display:flex;flex-direction:column}
.sync-update-dialog .ui-dialog-head,.sync-update-dialog .ui-dialog-actions{flex-shrink:0}
.sync-update-dialog .ui-dialog-body{min-height:0;overflow-y:auto}
#syncUpdateSummary{margin:0 0 12px;font-weight:700}
#syncUpdateBuses{display:grid;gap:12px}
.sync-update-bus{min-width:0;padding:12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper)}
.sync-update-bus header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.sync-update-bus strong{min-width:0;overflow-wrap:anywhere}
.sync-update-bus .sync-state{padding:4px 8px;font-size:var(--font-xs);white-space:normal}
.sync-update-bus p,#syncUpdateHint{margin:8px 0 0;color:var(--muted);font-size:var(--font-sm);line-height:1.4;overflow-wrap:anywhere}
.sync-update-bus summary,.sync-transfer-target summary{display:flex;align-items:center;min-height:var(--control-target);cursor:pointer;color:var(--accent)}
.sync-update-bus summary::before,.sync-transfer-target summary::before{content:'▸';margin-right:8px}
.sync-update-bus details[open]>summary::before,.sync-transfer-target details[open]>summary::before{content:'▾'}
.sync-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:12px 0 0;padding:0;list-style:none;color:var(--muted);font-size:var(--font-xs)}
.sync-progress li{padding-top:6px;border-top:3px solid var(--line);text-align:center;overflow-wrap:anywhere}
.sync-progress li.done,.sync-progress li.active{color:var(--accent);border-top-color:var(--accent)}
.sync-progress li.active{font-weight:700}
.sync-all-clear{justify-items:start;gap:4px;color:var(--green);text-align:left}
.sync-all-clear strong{font-size:var(--font-md)}
.sync-all-clear span{color:var(--muted);font-size:var(--font-sm)}
html[data-theme="dark"] .sync-all-clear{color:var(--accent)}
.sync-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.sync-section-heading p:not(.eyebrow){margin:5px 0 0;color:var(--muted);line-height:1.4}
.stop-map-card{display:flex;flex-direction:column;min-height:0}
.operations-hero.route-page-heading{display:flex;align-items:center;gap:12px}
.route-page-heading h1{margin:0}
.route-page-heading button{max-width:100%;white-space:normal}
.route-map-toolbar{display:flex;align-items:end;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px;border-bottom:1px solid var(--line);flex:none}
.route-map-filters{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:8px;flex:1 1 300px;max-width:440px;min-width:0}
.route-map-filters label{display:grid;gap:4px;min-width:0;font-size:var(--font-xs);color:var(--muted);font-weight:500}
.route-map-filters .ui-field{min-width:0;width:100%}
.route-map-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.route-map-actions button{white-space:normal}
.route-path-status{margin:0;padding:4px 12px 8px;color:var(--muted);font-size:var(--font-xs);overflow-wrap:anywhere}
@media(max-width:600px){.route-map-toolbar{gap:8px;padding:8px}.route-map-filters{flex-basis:100%;max-width:none}.route-map-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:4px 8px}}
.route-settings-body>p{margin:0 0 9px;color:var(--muted);font-size:var(--font-sm)}
.route-list-actions{display:flex;align-items:end;gap:8px}
#routesPanel > .ui-panel-body{flex:1 1 auto}
.route-settings-toolbar{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-top:1px solid var(--line)}
.route-settings-toolbar p{margin:0;color:var(--muted);font-size:13px}
.route-settings-toolbar button{flex:0 0 auto;min-height:var(--control-target)}
.route-settings-body .service-types-list{grid-template-columns:minmax(0,1fr);max-height:none;overflow:visible}
.route-settings-body .service-type-editor{grid-template-columns:44px minmax(0,1fr) auto;gap:8px;align-items:center}
.route-settings-body .route-color-field{grid-column:1;grid-row:1}
.route-settings-body .route-name-field{grid-column:2 / -1;grid-row:1;min-width:0}
.route-settings-body .service-type-active{grid-column:1 / 3;grid-row:2;white-space:normal}
.route-settings-body .service-type-editor > button{grid-column:3;grid-row:2}
.route-settings-body input[type="color"]{width:44px;min-height:var(--control-target)}
.route-settings-body .service-type-create{grid-template-columns:minmax(0,1fr) 64px}
.route-settings-body .service-type-create > button{grid-column:1 / -1}
.route-create-source{grid-column:1 / -1;min-width:0}
.route-create-source select{width:100%;min-width:0}
.route-create-help{grid-column:1 / -1;margin:0;color:var(--muted);font-size:var(--font-sm);overflow-wrap:anywhere}
.stop-catalog{display:grid;align-content:start;gap:1px;min-height:0;padding:8px}
.fleet-stop-row{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:3px;padding:5px;border-bottom:1px solid var(--line)}
.fleet-stop-row:last-child{border-bottom:0}
.route-number{display:grid;place-items:center;width:36px;height:36px;color:var(--ink);background:var(--neutral);border-radius:12px;font-size:var(--font-md);font-weight:800}
.stop-row-main{display:grid;gap:4px;min-width:0;padding:8px;text-align:left;white-space:normal}
.stop-row-main[aria-pressed="true"]{color:var(--on-accent,var(--brand-white));border-color:var(--green);background:var(--green)}
.stop-row-main strong{font-size:var(--font-md);line-height:1.2;overflow-wrap:anywhere}
.stop-row-main small{color:var(--muted);font-size:var(--font-sm);line-height:1.3;overflow-wrap:anywhere}
.stop-row-main[aria-pressed="true"] small{color:inherit}
.stop-type-chips{display:flex;flex-wrap:wrap;gap:4px}
.fleet-stop-map{position:relative;min-height:180px;overflow:hidden;background:#e8eee8;touch-action:none;cursor:grab}
.fleet-stop-map:active{cursor:grabbing}
@media(max-width:600px),(pointer:coarse){.fleet-stop-map.editing-zones{min-height:320px}}
.route-map-tiles{position:absolute;inset:0}
.route-map-markers{position:absolute;inset:0}
.stop-route-line{position:absolute;inset:0}
.route-map-tiles{z-index:0;overflow:hidden}
.route-map-tiles img{position:absolute;width:256px;height:256px;max-width:none;user-select:none}
.stop-route-line{z-index:1;width:100%;height:100%;overflow:hidden;pointer-events:none}
.stop-route-line polyline{fill:none;stroke:var(--line-color,var(--route-color,var(--green)));stroke-width:4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;paint-order:stroke;filter:drop-shadow(0 1px 1px rgba(255,255,255,.8));opacity:.9}
.route-map-markers{z-index:2;pointer-events:none}
.route-map-markers button{pointer-events:auto}
.route-map-buses{position:absolute;inset:0;z-index:3;pointer-events:none}
.route-map-buses>[data-device-id]{pointer-events:auto;cursor:help}
.fleet-stop-map.editing-stops .route-map-buses>[data-device-id]{pointer-events:none}
.route-bus-update{position:absolute;bottom:calc(50% + 16px);left:50%;transform:translateX(-50%);display:grid;place-items:center;min-width:20px;height:20px;padding:0 3px;background:var(--paper);color:var(--warning);border:1px solid var(--warning);border-radius:50%;font-size:16px;line-height:1}
.route-map-estimates{position:absolute;inset:0;z-index:3;width:100%;height:100%;pointer-events:none}
.route-calculated-point circle{fill:var(--paper);stroke:var(--warning);stroke-width:2;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}
.route-calculated-point text{fill:var(--ink);stroke:var(--paper);stroke-width:3;paint-order:stroke;font-size:12px;font-weight:600}
.route-announcement-handles{position:absolute;inset:0;z-index:2;pointer-events:none}
.route-announcement-handle{position:absolute;transform:translate(-50%,-50%);width:var(--control-target);height:var(--control-target);min-width:var(--control-target);min-height:var(--control-target);padding:0;display:grid;place-items:center;border:0;background:transparent;pointer-events:auto;touch-action:none}
.route-announcement-handle[role="img"]{pointer-events:none}
.route-announcement-handles .stop-announcement-point{pointer-events:auto}
.stop-announcement-point[hidden]{display:none}
.route-announcement-handle i{width:10px;height:10px;border:2px solid var(--paper);border-radius:50%;background:var(--green);box-shadow:0 0 0 1px var(--ink)}
.route-announcement-handle[data-phase="approach"] i{background:var(--warning)}
.route-announcement-handle[data-phase="departure"] i{background:var(--muted)}
.route-live-note{margin:0;padding:4px 12px;font-size:var(--font-xs);color:var(--muted);overflow-wrap:anywhere}
.route-map-controls{position:absolute;z-index:4;top:10px;right:10px;display:grid;grid-template-columns:auto var(--control-target) var(--control-target);gap:4px}
.route-map-controls button{min-width:var(--control-target);height:var(--control-target);padding:0 11px;color:var(--ink);background:color-mix(in srgb,var(--paper) 92%,transparent);border:1px solid var(--line);border-radius:11px;box-shadow:0 5px 16px rgba(29,43,41,.12);font-size:var(--font-lg);font-weight:800}
.route-map-controls button:first-child{font-size:var(--font-xs)}
.stop-move-confirm{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;flex:none;padding:8px 12px;color:var(--ink);background:var(--paper);border-top:1px solid var(--line)}
.stop-move-confirm[hidden]{display:none}
.stop-move-confirm strong{min-width:0;overflow-wrap:anywhere;font-size:var(--font-sm)}
.stop-move-confirm .ui-form-state{grid-column:1;min-width:0;overflow-wrap:anywhere}
.stop-move-confirm>div{grid-column:2;grid-row:1/3;display:flex;gap:6px}
.stop-move-confirm button{min-height:var(--control-target);white-space:nowrap}
.route-map-attribution{position:absolute;z-index:4;right:8px;bottom:6px;padding:3px 6px;color:var(--ink);background:color-mix(in srgb,var(--paper) 90%,transparent);border-radius:6px;font-size:var(--font-xs);text-decoration:none}
.fleet-stop-marker{position:absolute;z-index:2;display:flex;align-items:center;gap:6px;max-width:180px;min-height:var(--control-target);padding:5px 9px 5px 5px;color:var(--ink);background:var(--paper);border:2px solid var(--route-color,var(--green));border-radius:14px;box-shadow:0 8px 26px rgba(29,43,41,.2);transform:translate(-18px,-50%);text-align:left}
.fleet-stop-marker.marker-left{transform:translate(calc(-100% + 18px),-50%)}
.fleet-stop-marker span{flex:0 0 32px;display:grid;place-items:center;width:32px;height:32px;color:white;background:var(--route-color,var(--green));border-radius:10px;font-size:var(--font-sm);font-weight:800}
.fleet-stop-marker strong{min-width:0;font-size:var(--font-sm);line-height:1.15;overflow-wrap:break-word;word-break:normal}
.fleet-stop-marker.compact{width:44px;min-height:var(--control-target);padding:6px;transform:translate(-50%,-50%);background:transparent;border:0;border-radius:14px;box-shadow:none;cursor:grab;touch-action:none}
.fleet-stop-marker.compact::before{position:absolute;inset:4px;background:var(--stop-route-colors,var(--paper));border-radius:12px;box-shadow:0 6px 18px rgba(29,43,41,.2)}
.fleet-stop-marker.compact.dragging{z-index:3;cursor:grabbing;box-shadow:0 10px 30px rgba(29,43,41,.34)}
.fleet-stop-marker.compact.marker-left{transform:translate(-50%,-50%)}
.fleet-stop-marker.compact span{position:relative;z-index:1;width:32px;height:32px;color:var(--ink);background:var(--paper);border-radius:10px}
.fleet-stop-map:not(.editing-stops) .fleet-stop-marker.compact{cursor:pointer}
.fleet-stop-map.editing-stops .fleet-stop-marker.compact{box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 28%,transparent),0 8px 26px rgba(29,43,41,.2)}
.fleet-stop-marker.compact strong{position:absolute;top:50%;left:calc(100% + 5px);display:block;width:max-content;max-width:clamp(120px,14vw,190px);padding:4px 7px;color:var(--ink);background:color-mix(in srgb,var(--paper) 94%,transparent);border:1px solid var(--line);border-radius:7px;box-shadow:0 2px 7px rgba(29,43,41,.11);font-size:clamp(10px,.72rem,var(--font-xs));font-weight:700;line-height:1.2;white-space:normal;transform:translateY(-50%);pointer-events:none}
.fleet-stop-marker.compact.label-left strong{right:calc(100% + 5px);left:auto;text-align:left}
.fleet-stop-marker.compact.label-above strong{top:auto;right:auto;bottom:calc(100% + 4px);left:50%;text-align:center;transform:translateX(-50%)}
.draft-health{display:grid;gap:4px;padding:14px 17px;border-top:1px solid var(--line)}
.draft-health strong{font-size:var(--font-md)}
.draft-health span{color:var(--muted);font-size:var(--font-sm);line-height:1.4}
.sync-route-issue{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-block:6px;border-top:1px solid var(--line)}
.sync-route-issue>span{flex:1 1 240px;min-width:0;overflow-wrap:anywhere}
.sync-route-issue>button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.fleet-config-page dialog{overflow:hidden}
.fleet-config-page .ui-dialog>form{display:flex;flex-direction:column;max-height:inherit}
.stop-editor-dialog{width:min(1120px,calc(100% - 28px));max-height:calc(100dvh - 24px)}
.stop-editor-dialog>form{max-height:calc(100dvh - 24px)}
.stop-editor-tabs{display:flex;flex:none;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.stop-editor-tabs>button{flex:1}
.stop-physical-grid{display:grid;gap:12px}
.stop-editor-actions>#stopFormState{min-width:0;overflow-wrap:anywhere}
.stop-editor-actions>#stopFormState.error{flex-basis:100%}
.stop-physical-grid .stop-route-membership{margin:0}

.stop-name-row>label,.stop-coordinate-fields>label{display:grid;align-content:start;min-width:0;gap:4px;color:var(--muted);font-size:13px;font-weight:500}
.stop-name-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,220px) auto;align-items:start;gap:12px}
.stop-location-row{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:12px}
.stop-coordinate-fields{display:grid;min-width:0;gap:4px}
.stop-coordinates-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}
.stop-physical-grid .stop-detection-toggle{display:flex;align-items:center;align-self:start;gap:8px;min-height:var(--control-target);margin-top:22px;color:var(--ink);cursor:pointer}
.stop-detection-toggle input{flex:none;width:18px;height:18px;margin:0}
.stop-physical-grid input:not([type="checkbox"]){min-height:var(--control-target)}
.trigger-sequence select{min-height:var(--control-target)}
.programs-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:0}
.programs-heading h3{margin:0;font-size:var(--font-md);font-weight:600}
.programs-heading button{min-height:var(--control-target)}
.editor-explainer{margin:5px 0 12px;color:var(--muted);font-size:var(--font-sm);line-height:1.45}
.stop-route-membership{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;background:var(--neutral);border:1px solid var(--line);border-radius:12px;cursor:pointer}
.stop-route-membership input{flex:0 0 auto;width:19px;min-height:19px;margin:0}
.stop-route-membership span{display:grid;gap:3px}
.stop-route-membership strong{font-size:var(--font-sm)}
.stop-route-membership small{color:var(--muted);font-size:var(--font-xs);line-height:1.35}
.program-editor-list{display:grid;gap:12px}
.program-card{overflow:hidden;background:var(--neutral);border:1px solid var(--line)}
.program-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}
.program-card-head>div{display:grid;gap:3px}
.program-card-head span{color:var(--muted);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em}
.program-card-head strong{font-size:var(--font-md)}
.program-types{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:12px 14px;border:0;border-bottom:1px solid var(--line)}
.program-types legend{width:100%;padding:0;color:var(--muted);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.program-type-chip{position:relative;display:inline-flex;cursor:pointer}
.program-type-chip input{position:absolute;opacity:0;pointer-events:none}
.program-type-chip span{display:flex;align-items:center;gap:7px;min-height:38px;padding:7px 10px;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:10px;font-weight:700}
.program-type-chip:not(.all) span::before{content:"";width:11px;height:11px;background:var(--chip);border:1px solid var(--ink);border-radius:50%}
.program-type-chip input:checked+span{color:var(--ink);background:color-mix(in srgb,var(--chip) 12%,var(--paper));border:2px solid var(--ink);padding:6px 9px;box-shadow:inset 0 0 0 2px var(--paper)}
.program-type-chip input:checked+span::after{content:"✓";display:grid;place-items:center;width:20px;height:20px;margin-left:2px;color:var(--paper);background:var(--ink);border-radius:50%;font-size:var(--font-xs);font-weight:900}
.program-type-chip.all{--chip:var(--green)}
.unrouted-program-note{display:grid;gap:3px;padding:12px 14px;border-bottom:1px solid var(--line)}
.unrouted-program-note strong{font-size:var(--font-sm)}
.unrouted-program-note small{color:var(--muted);font-size:var(--font-xs)}
.trigger-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px;padding:0 12px 12px}
.trigger-sequence{min-width:0;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:13px}
.trigger-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px;border-bottom:1px solid var(--line)}
.trigger-heading strong{font-size:var(--font-sm)}
.trigger-heading span{color:var(--muted);font-size:var(--font-xs)}
.trigger-sequence ol{display:grid;gap:0;margin:0;padding:0;list-style:none}
.trigger-sequence li{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;gap:7px;min-height:54px;padding:6px 7px;border-bottom:1px solid var(--line)}
.trigger-sequence li>div:nth-child(2){display:grid;min-width:0;gap:2px}
.trigger-sequence li strong{font-size:var(--font-xs);line-height:1.25;overflow-wrap:anywhere}
.trigger-sequence li small{color:var(--muted);font-size:var(--font-xs);line-height:1.25;overflow-wrap:anywhere}
.trigger-sequence .sequence-empty{display:flex;min-height:54px;color:var(--muted);font-size:var(--font-xs)}
.sequence-actions{display:flex;gap:2px}
.sequence-actions button{width:31px;height:36px;padding:0;color:var(--ink);background:var(--neutral);border:1px solid var(--line);border-radius:8px}
.sequence-actions button:disabled{opacity:.25}
.add-media-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:5px;padding:7px}
.add-media-row > button{min-height:var(--control-target);padding:7px 9px;font-size:var(--font-xs)}
.fleet-upload-zone{position:relative;display:grid;gap:4px;color:var(--ink);background:var(--soft);border:1px dashed var(--line);cursor:pointer}
.fleet-upload-zone strong{font-size:var(--font-md)}
.fleet-upload-zone span{color:var(--muted);font-size:var(--font-sm)}
.fleet-upload-zone input{position:absolute;width:1px;height:1px;opacity:0}
.upload-progress-list{display:grid;gap:5px;margin:10px 0}
.upload-progress{padding:9px 11px;color:var(--muted);background:var(--neutral);border-radius:10px;font-size:var(--font-xs);overflow-wrap:anywhere}
.upload-progress.complete{color:var(--green)}
.upload-progress.failed{color:var(--danger)}
.fleet-media-list{display:grid;gap:1px}
.fleet-media-row{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 2px;border-bottom:1px solid var(--line)}
.fleet-media-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}
.fleet-media-copy{display:grid;min-width:0;gap:2px}
.fleet-media-row strong{font-size:var(--font-sm);overflow-wrap:anywhere}
.fleet-media-copy>span{color:var(--muted);font-size:var(--font-xs);overflow-wrap:anywhere}
.fleet-media-row small{color:var(--muted);font-size:var(--font-xs);overflow-wrap:anywhere}
.availability{padding:5px 8px;border-radius:999px;font-weight:700}
.availability.available{color:var(--green);background:var(--soft)}
.availability.missing{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}
.media-panel-body{padding:12px}
.media-library-body{display:grid;grid-auto-rows:max-content;align-content:start;gap:10px}
.media-panel-actions{display:flex;flex:none;justify-content:flex-end;padding:8px 12px;border-top:1px solid var(--line)}
.media-playlist-panel{display:flex;flex-direction:column;min-height:0}
#backgroundPlaylistForm{display:flex;flex-direction:column;flex:1;min-height:0}
#backgroundPlaylistForm>.card-heading{flex:none}
.playlist-editor-body{display:grid;align-content:start;gap:14px;flex:1;min-height:80px;overflow:auto;overscroll-behavior:contain}
.playlist-shuffle{display:flex;align-items:center;gap:11px;min-height:58px;padding:10px 12px;background:var(--neutral);border:1px solid var(--line);border-radius:14px}
.playlist-shuffle input{flex:0 0 auto;width:20px;min-height:20px}
.playlist-shuffle span{display:grid;gap:2px}
.playlist-shuffle strong{font-size:var(--font-sm)}
.playlist-shuffle small{color:var(--muted);font-size:var(--font-xs)}
.media-playlist-panel .card-heading>button{flex-shrink:0}
.background-playlist-list{display:block;margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:14px;overflow:visible}
.background-playlist-list li{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;gap:9px;min-height:62px;padding:8px 10px;background:var(--paper);border-bottom:1px solid var(--line)}
.background-playlist-list li:first-child{border-radius:13px 13px 0 0}
.background-playlist-list li:last-child{border-bottom:0;border-radius:0 0 13px 13px}
.background-playlist-list li:only-child{border-radius:13px}
.background-playlist-list li>div:nth-child(2){display:grid;min-width:0;gap:2px}
.background-playlist-list strong{font-size:var(--font-sm);overflow-wrap:anywhere}
.background-playlist-list small{color:var(--muted);font-size:var(--font-xs);overflow-wrap:anywhere}
.background-playlist-list .sequence-empty{display:flex;color:var(--muted);font-size:var(--font-sm)}
.publish-review{display:grid;grid-auto-rows:max-content;align-content:start;gap:14px}
.publish-review fieldset{display:grid;gap:7px;margin:0;padding:12px;border:1px solid var(--line);border-radius:14px}
.publish-review legend{padding:0 6px;font-size:var(--font-sm);font-weight:700}
.publish-review fieldset label{display:flex;align-items:center;gap:8px;min-height:38px;font-size:var(--font-sm)}
.publish-review input{flex:0 0 auto;width:17px;min-height:17px;margin:0}
.target-options{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.target-options>p{grid-column:1/-1;margin:0;color:var(--muted);font-size:var(--font-sm)}
.target-options label{display:flex;align-items:center;gap:8px;min-height:48px;padding:7px 9px;background:var(--neutral);border:1px solid var(--line);border-radius:11px}
.target-options label>span{display:grid;min-width:0;gap:2px}
.target-options strong{font-size:var(--font-sm);overflow-wrap:anywhere}
.target-options small{color:var(--danger);font-size:var(--font-xs)}
.publish-intro{margin:0;color:var(--ink);font-size:var(--font-md);line-height:1.4}
.publish-scope{display:grid;gap:10px}
.publish-review [hidden]{display:none}
html[data-theme="dark"] .fleet-stop-marker{background:var(--paper)}
html[data-theme="dark"] .program-type-chip span{background:var(--paper)}
html[data-theme="dark"] .stop-route-membership{background:var(--paper)}
html[data-theme="dark"] .trigger-sequence{background:var(--paper)}
html[data-theme="dark"] .fleet-stop-map{background:var(--paper)}
html[data-theme="dark"] .route-map-tiles{filter:brightness(.62) saturate(.72)}
@media(min-width:801px){.fleet-config-page{overflow:auto}}
@media(min-width:801px){.operations-main{height:auto;min-height:0;padding-top:8px}}
@media(min-width:801px){.operations-hero{padding:0 3px}}
@media(min-width:801px){.operations-hero h1{font-size:var(--font-2xl)}}
@media(min-width:801px){.operations-hero p:not(.eyebrow){margin-top:2px;line-height:1.2}}
@media(min-width:801px){.sync-overview{gap:8px}}
@media(min-width:801px){.sync-portal-card{gap:2px;padding:8px 10px}}
@media(min-width:801px){.sync-portal-card>p{margin:0}}
@media(min-width:801px){.sync-portal-card>small{line-height:1.2}}
@media(min-width:801px){.sync-card-head h2{font-size:var(--font-lg)}}
@media(min-width:801px){.sync-card-actions{gap:6px;margin-top:3px}}
@media(min-width:801px){.sync-card-actions .primary{grid-column:auto}}
@media(min-width:801px){.sync-buses-card>.sync-card-head{padding:6px 10px}}
@media(min-width:801px){.sync-buses-card>.sync-card-head small{display:none}}
@media(min-width:801px){.sync-bus-list{min-height:0;max-height:none;overflow:auto;padding:2px}}
@media(min-width:801px){.sync-bus-row{min-height:58px;padding:4px 8px}}
@media(min-width:801px){.sync-section-heading{padding:3px 4px 0}}
@media(min-width:801px){.sync-section-heading h2{font-size:var(--font-xl)}}
@media(min-width:801px){.sync-section-heading p:not(.eyebrow){margin-top:2px;line-height:1.25}}
@media(min-width:801px){.draft-health{padding:7px 12px}}
@media(min-width:801px){.stop-catalog{min-height:0;overflow:auto}}
@media(min-width:1600px){.sync-portal-card{column-gap:12px;row-gap:3px;align-items:start}}
@media(min-width:1600px){.sync-portal-card>.sync-card-head{align-items:center}}
@media(min-width:1600px){.sync-portal-card>.sync-card-head>div{min-width:0}}
@media(min-width:1600px){.sync-portal-card>.sync-card-actions{align-self:center;margin:0}}
@media(min-width:1600px){.sync-portal-card>.sync-card-actions button{padding:7px 9px;font-size:var(--font-sm);line-height:1.15}}
@media(min-width:1600px){.route-settings-toolbar{gap:8px}}
@media(min-width:1600px){.route-settings-toolbar button{min-height:34px;padding:5px 9px;font-size:var(--font-xs)}}
.sync-state.attention{color:var(--ink);background:color-mix(in srgb,var(--warning) 30%,var(--paper));border-color:var(--warning)}
@media(max-width:1050px){.trigger-grid{grid-template-columns:1fr}}
@media(max-width:800px){.operations-main{padding-top:10px}}
@media(max-width:800px){.operations-hero{align-items:flex-start}}
@media(max-width:800px){.sync-overview{grid-template-columns:1fr}}
@media(max-width:800px){.target-options{grid-template-columns:1fr}}
@media(max-width:600px){.operations-view{gap:8px}}
@media(max-width:600px){.operations-hero{display:block}}
@media(max-width:600px){.operations-hero p:not(.eyebrow){max-width:none;margin-top:4px}}
@media(max-width:600px){.sync-card-head{align-items:flex-start}}
@media(max-width:600px){.sync-card-actions{grid-template-columns:1fr}}
@media(max-width:600px){.sync-card-actions .primary{grid-column:auto}}
@media(max-width:600px){.sync-bus-list{max-height:min(52dvh,420px);padding:4px}}
@media(max-width:600px){.sync-bus-actions{display:grid;grid-template-columns:1fr;width:100%;justify-content:stretch}}
@media(max-width:600px){.sync-bus-actions button{width:100%}}
@media(max-width:600px){.sync-section-heading{padding:12px 3px 0}}
@media(max-width:600px){.operations-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}}
@media(max-width:600px){.operations-actions .primary{grid-column:1/-1}}
@media(max-width:600px){.route-settings-toolbar{align-items:stretch}}
@media(max-width:600px){.route-settings-toolbar p{align-self:center}}
@media(max-width:600px){.fleet-stop-row{grid-template-columns:36px minmax(0,1fr);padding:3px 0}}
@media(max-width:600px){.route-number{width:32px;height:32px}}
@media(max-width:600px){.stop-row-main{padding:8px 4px}}
@media(max-width:600px){.stop-row-main strong{font-size:var(--font-md)}}
@media(max-width:600px){.fleet-stop-marker{max-width:112px}}
@media(max-width:600px){.fleet-stop-marker strong{font-size:10px;line-height:1.1}}
@media(max-width:600px){.fleet-stop-marker.compact::before{inset:6px;border-radius:10px}}
@media(max-width:600px){.fleet-stop-marker.compact span{width:28px;height:28px;border-radius:8px;font-size:var(--font-xs)}}
@media(max-width:600px){.fleet-stop-marker.compact strong{max-width:112px;padding:3px 5px}}
@media(max-width:600px){.stop-location-row{grid-template-columns:1fr;gap:8px}}
@media(max-width:600px){.stop-coordinates-entry{grid-template-columns:1fr}}
@media(max-width:600px){.stop-name-row{grid-template-columns:1fr;gap:4px}.stop-physical-grid .stop-detection-toggle{margin-top:0}}
@media(max-width:600px){.program-card{border-radius:14px}}
@media(max-width:600px){.program-types{padding:10px}}
@media(max-width:600px){.program-type-chip span{min-height:var(--control-target)}}
@media(max-width:600px){.trigger-grid{padding:0 7px 7px}}
@media(max-width:600px){.trigger-sequence li{grid-template-columns:max-content minmax(0,1fr);min-height:64px}}
@media(max-width:600px){.sequence-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.sequence-actions button{width:auto;height:44px}}
@media(max-width:600px){.add-media-row{grid-template-columns:1fr}}
@media(max-width:600px){.background-playlist-list li{grid-template-columns:max-content minmax(0,1fr)}}
@media(max-width:600px){.fleet-media-row{grid-template-columns:max-content minmax(0,1fr)}}
@media(max-width:600px){.fleet-media-actions{grid-column:2;justify-self:end}}
@media(max-width:360px){.operations-actions{grid-template-columns:1fr}}
@media(max-width:360px){.operations-actions .primary{grid-column:auto}}
@media(max-width:360px){.stop-route-remove{grid-column:2}}
@media(max-width:480px){.route-map-controls{top:8px;right:8px;gap:3px}}
@media(max-width:480px){.route-map-controls button{padding:0 8px}}
@media(max-width:600px){.stop-move-confirm{grid-template-columns:minmax(0,1fr)}.stop-move-confirm>div{grid-column:1;grid-row:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.stop-move-confirm button{min-width:0}}
@media(max-width:360px){
  body[data-section="stops"] .route-map-controls{left:8px;grid-template-columns:auto var(--control-target);grid-template-rows:repeat(2,var(--control-target));justify-content:space-between}
  body[data-section="stops"] .route-map-controls button:first-child{grid-column:1;grid-row:1}
  body[data-section="stops"] .route-map-controls button:nth-child(2){grid-column:2;grid-row:1}
  body[data-section="stops"] .route-map-controls button:nth-child(3){grid-column:2;grid-row:2}
}
@media(max-width:480px){.stop-editor-actions>button{flex:1}.stop-editor-actions>#stopFormState{flex-basis:100%}}
.stop-route-line .route-line-casing{stroke:rgba(255,255,255,.9);stroke-width:10;filter:drop-shadow(0 2px 2px rgba(29,43,41,.24));opacity:1}
.stop-route-line .route-line-color{stroke:var(--line-color,var(--route-color,var(--green)));stroke-width:7;filter:none;opacity:1}
.stop-route-line .route-line-pattern{stroke:rgba(255,255,255,.88);stroke-width:1.5;stroke-dasharray:1 5;filter:none;opacity:1}
.fleet-stop-map .fleet-stop-marker.compact{background:transparent}
.fleet-stop-marker.compact::before{content:none}
.fleet-stop-marker.compact .fleet-stop-callout{position:absolute;top:50%;left:calc(100% + 5px);display:inline-grid;grid-template-columns:auto minmax(0,max-content);align-items:stretch;width:max-content;max-width:clamp(132px,17vw,220px);min-height:28px;padding:0;overflow:hidden;color:#17231f;background:rgba(247,247,245,.97);border:1px solid rgba(23,35,31,.2);border-radius:7px;box-shadow:0 3px 9px rgba(29,43,41,.18);font-size:clamp(10px,.72rem,var(--font-xs));font-weight:700;white-space:normal;transform:translateY(-50%);pointer-events:none}
.fleet-stop-marker.compact .fleet-stop-sign{display:flex;align-items:center;justify-content:center;gap:3px;min-width:34px;padding:4px 5px;color:white;background:#4267b2;font-size:11px;font-style:normal;font-weight:800;white-space:nowrap}
.fleet-stop-marker.compact .fleet-stop-sign svg{flex:0 0 14px;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.fleet-stop-marker.compact .fleet-stop-label{display:flex;align-items:center;min-width:0;max-width:170px;padding:4px 7px;color:#17231f;font-style:normal}
.fleet-stop-map.editing-stops .fleet-stop-marker.compact .fleet-stop-code{box-shadow:0 0 0 4px rgba(66,103,178,.25),0 4px 13px rgba(29,43,41,.34)}
.fleet-stop-marker.compact:has(.fleet-stop-code){display:grid;place-items:center;height:44px;padding:calc((44px - var(--stop-marker-size,36px))/2);background:transparent}
.fleet-stop-marker.compact .fleet-stop-code{display:grid;place-items:center;width:var(--stop-marker-size,36px);height:var(--stop-marker-size,36px);padding:var(--numeral-optical-inset) 0 0;color:var(--ink);background:var(--paper);border:var(--stop-route-ring,4px) solid transparent;border-radius:50%;background-image:linear-gradient(var(--paper),var(--paper)),var(--stop-route-colors);background-origin:padding-box,border-box;background-clip:padding-box,border-box;box-shadow:0 2px 5px rgba(29,43,41,.25);font-size:13px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;pointer-events:none}
body[data-section="stops"] .fleet-stop-map{--stop-marker-size:40px;--stop-route-ring:6px}
.fleet-stop-marker[aria-pressed="true"] .fleet-stop-code{outline:2px solid var(--ink);outline-offset:2px}
.route-map-selection{display:grid;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--paper)}
.route-map-selection strong{font-size:16px;line-height:1.3;overflow-wrap:anywhere}
.route-map-selection>div{display:flex;gap:8px}
.route-map-selection button{min-width:44px;min-height:var(--control-target)}
@media(max-width:480px){.fleet-stop-marker.compact .fleet-stop-callout{max-width:132px;font-size:10px}}
@media(max-width:480px){.fleet-stop-marker.compact .fleet-stop-label{max-width:92px;padding:3px 5px}}
@media(max-width:480px){.fleet-stop-marker.compact .fleet-stop-sign{min-width:32px;padding:3px 4px}}
.sync-state{word-break:normal;overflow-wrap:normal;hyphens:none}
.stop-physical-grid textarea{min-height:var(--control-target);overflow-y:hidden;resize:none;line-height:1.35}
.operations-card{background:var(--paper);border-color:color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:var(--atlas-shadow)}
.fleet-stop-marker.compact .fleet-stop-callout{line-height:1.22}
.fleet-stop-marker.compact .fleet-stop-label{overflow-wrap:break-word;word-break:normal}
.operations-main{padding-top:22px}
.operations-view{gap:0}
.operations-hero{padding:12px}
.operations-hero h1{font-size:var(--font-2xl);line-height:1}
.operations-hero p:not(.eyebrow){max-width:720px;margin-top:9px;font-size:15px;line-height:1.45}
.sync-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ui-panel-workspace:has(> #syncDetailsPanel[open]) .sync-overview{grid-template-columns:1fr}
.sync-comparison{display:grid;gap:10px}
.sync-comparison section{min-width:0;padding:10px;background:var(--neutral);border:1px solid var(--line);border-radius:var(--radius-card)}
.sync-comparison h3{font-size:var(--font-sm);margin:0 0 6px}
.sync-comparison p{margin:4px 0;overflow-wrap:anywhere}
.sync-comparison dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}
.sync-comparison dt{color:var(--muted);font-size:var(--font-xs);margin-bottom:4px}
.sync-comparison dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.sync-buses-card>.sync-card-head{padding:12px}
.sync-portal-card{padding:12px}
.sync-card-head{gap:14px}
.sync-card-head h2{font-size:var(--font-lg);overflow-wrap:break-word}
.sync-buses-card>.sync-card-head small{font-size:13px;line-height:1.35}
.sync-portal-card>small{font-size:13px;line-height:1.35}
.sync-portal-card>p{font-size:15px;line-height:1.3;overflow-wrap:break-word}
.sync-state{min-height:30px;padding:5px 10px;font-size:12px;white-space:normal}
.sync-bus-row{min-height:0;padding:8px 12px}
.sync-bus-copy strong{font-size:15px;overflow-wrap:break-word}
.sync-bus-copy p{font-size:14px;overflow-wrap:break-word}
.sync-bus-copy small{font-size:12px;overflow-wrap:break-word}
.sync-card-actions{margin-top:7px}
.sync-section-heading{padding:18px 4px 0}
.sync-section-heading h2{font-size:var(--font-lg)}
.sync-section-heading p:not(.eyebrow){font-size:13px}
.stop-row{padding:11px 12px}
.stop-row strong{overflow-wrap:break-word;word-break:normal}
.draft-health{font-size:13px}
.program-card{border-radius:16px}
.program-card-head{padding:12px 14px}
.program-card-head strong{overflow-wrap:break-word}
.trigger-heading strong{overflow-wrap:break-word}
.program-type-chip span{font-size:12px}
.fleet-upload-zone{min-height:var(--control-target);align-content:center;padding:12px;border-radius:16px}
html[data-theme="dark"] .operations-card{background:var(--paper)}
@media(min-width:1600px){.sync-portal-card{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;gap:7px}}
@media(min-width:1600px){.sync-portal-card>.sync-card-head{grid-column:1;grid-row:auto}}
@media(min-width:1600px){.sync-portal-card>p{grid-column:1;grid-row:auto}}
@media(min-width:1600px){.sync-portal-card>small{grid-column:1;grid-row:auto}}
@media(min-width:1600px){.sync-portal-card>.sync-card-actions{grid-column:1;grid-row:auto}}
@media(min-width:1600px){.sync-portal-card>.sync-card-actions{margin-top:7px}}
@media(min-width:801px){.sync-overview{min-height:0}}
@media(max-width:900px){.sync-overview{grid-template-columns:1fr}}
@media(max-width:600px){.operations-main{padding-top:10px}}
@media(max-width:600px){.operations-hero{padding:14px 3px 8px}}
@media(max-width:600px){.operations-hero h1{font-size:var(--font-2xl)}}
@media(max-width:600px){.operations-hero p:not(.eyebrow){font-size:14px}}
@media(max-width:600px){.sync-bus-row{grid-template-columns:10px minmax(0,1fr);padding:11px 8px}}
@media(max-width:600px){.sync-section-heading{padding-top:12px}}
@media(max-width:600px){.sync-section-heading h2{font-size:var(--font-lg)}}
@media(max-width:600px){.route-list-actions{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto}}
.operations-view{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--atlas-shadow)}
.operations-view > .operations-hero{flex:none;min-height:0;margin:0;padding:12px;align-items:center;border-bottom:1px solid var(--line)}
.operations-body{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;gap:14px;padding:14px;overflow:auto;background:var(--section-surface)}
.operations-body>.ui-panel-toolbar{flex:none}
.operations-body>.ui-panel-workspace{flex:1;min-height:0;align-items:stretch;grid-template-rows:minmax(0,1fr)}
.operations-body.ui-panel-workspace{display:grid;align-items:stretch;grid-template-rows:minmax(0,1fr)}
.operations-body .ui-disclosure-panel{position:relative;top:auto;max-height:100%}
.operations-body .ui-panel-content{min-height:0;overflow:auto}
.operations-body .stop-map-card{overflow:visible}
.operations-body .ui-disclosure-panel:modal{position:fixed;max-height:calc(100dvh - 16px)}
.operations-body > .operations-card{background:var(--work-surface);box-shadow:none}
.operations-body .operations-card{background:var(--work-surface);box-shadow:none}
.operations-body > .service-types-card{background:var(--work-surface);box-shadow:none}
.sync-bus-list{max-height:none;overflow:visible}
.stop-catalog{max-height:none;overflow:visible}
.stop-map-card{height:100%;max-height:none}
.stop-map-workspace{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}
.stop-map-workspace:has(>.route-zone-toolbar:not([hidden])){display:grid;grid-template-columns:280px minmax(0,1fr);grid-template-rows:minmax(360px,1fr) auto}
.stop-map-workspace>.route-zone-toolbar{grid-row:1/3;grid-column:1}
.stop-map-workspace>.fleet-stop-map{grid-column:2;grid-row:1}
.stop-map-workspace>.announcement-legend-strip{grid-column:2;grid-row:2}
.fleet-stop-map{flex:1;height:auto}
.stop-map-card>:not(.stop-map-workspace){flex-shrink:0}
@media(max-width:900px){
  .stop-map-card:has(.route-zone-toolbar:not([hidden])){height:auto;min-height:min-content}
  .stop-map-workspace:has(>.route-zone-toolbar:not([hidden])){display:flex;min-height:min-content}
  .stop-map-card:has(.stop-move-confirm:not([hidden])){height:auto;min-height:min-content}
  .stop-map-workspace:has(>.stop-move-confirm:not([hidden])){min-height:min-content}
  .stop-map-workspace>.fleet-stop-map{order:1}
  .stop-map-workspace>.stop-move-confirm{order:2}
  .stop-map-workspace>.announcement-legend-strip{order:3}
}
@media (max-width: 900px){.operations-view > .operations-hero{min-height:0;padding:12px}}
@media (max-width: 600px){.operations-view > .operations-hero{padding:12px}}
@media (max-width: 600px){.operations-body{gap:10px;padding:10px}}

.test-bus-shell > .test-bus-workspace { flex: none; overflow: visible; }
.test-bus-workspace { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: none; grid-auto-rows: auto; gap: 12px; padding: 12px; }
.test-bus-controls, .test-bus-audio { padding: 12px; min-width: 0; }
.test-bus-controls h1 { font-size: 22px; margin: 0; }
.test-bus-workspace h2 { font-size: 18px; margin: 0 0 8px; }
.test-bus-toolbar { display: flex; flex-wrap: wrap; align-items: end; gap: 8px; }
.test-bus-toolbar label { display: grid; gap: 4px; flex: 1 1 150px; min-width: 0; }
.test-bus-toolbar input, .test-bus-toolbar select { width: 100%; min-width: 0; }
.test-bus-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; max-width: 480px; margin-top: 12px; }
.test-bus-actions button { min-width: 0; white-space: normal; }
.test-bus-workspace p, .test-bus-workspace small { overflow-wrap: anywhere; }
@media (max-width: 650px) {
  .test-bus-workspace { padding: 8px; gap: 8px; }
  .test-bus-toolbar button, .test-bus-toolbar a, .test-bus-actions button, .test-bus-audio button { min-height: 44px; }
  .test-bus-toolbar input, .test-bus-toolbar select { font-size: 16px; min-height: 44px; }
}

.assistant-shell > .assistant-workspace { display: flex; flex-direction: column; align-self: center; width: 100%; max-width: 920px; min-height: 300px; overflow: visible; padding: 8px 0 0; gap: 8px; }
.assistant-heading, .assistant-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.assistant-heading { flex: none; }
.assistant-heading h1 { font-size: 18px; margin: 0; }
.assistant-thread { flex: 1 1 0; min-height: 120px; overflow: auto; overflow-anchor: none; padding: 12px 8px; scrollbar-gutter: stable; }
.assistant-conversation { display: flex; flex-direction: column; gap: 24px; }
.assistant-message { min-width: 0; max-width: 100%; overflow-wrap: anywhere; line-height: 1.5; }
.assistant-message[data-role="user"] { align-self: flex-end; max-width: min(85%, 680px); padding: 10px 14px; border-radius: 16px; background: var(--paper); border: 1px solid var(--line); }
.assistant-message[data-role="user"] p { white-space: pre-wrap; margin: 0; }
.assistant-markdown > :first-child { margin-top: 0; }
.assistant-markdown > :last-child { margin-bottom: 0; }
.assistant-markdown p, .assistant-markdown ul, .assistant-markdown ol { margin: 8px 0; }
.assistant-markdown ul, .assistant-markdown ol { padding-inline-start: 24px; }
.assistant-markdown h1, .assistant-markdown h2, .assistant-markdown h3, .assistant-markdown h4, .assistant-markdown h5, .assistant-markdown h6 { font-size: 16px; margin: 16px 0 8px; }
.assistant-markdown pre { white-space: pre-wrap; overflow-wrap: anywhere; padding: 12px; background: var(--paper); border: 1px solid var(--line); border-radius: 12px; }
.assistant-markdown blockquote { margin: 8px 0; padding-inline-start: 12px; border-inline-start: 2px solid var(--line); }
.assistant-table-wrap { overflow: auto; max-width: 100%; margin: 12px 0 8px; }
.assistant-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.assistant-table th, .assistant-table td { padding: 8px; border: 1px solid var(--line); text-align: start; vertical-align: top; overflow-wrap: anywhere; min-width: 90px; }
.assistant-table th { background: var(--paper); }
.assistant-approval { margin-top: 16px; padding: 12px; min-width: 0; overflow-wrap: anywhere; background: var(--paper); border: 1px solid var(--line); border-radius: 12px; }
.assistant-approval h2 { font-size: 16px; margin: 0 0 8px; }
.assistant-change p { white-space: pre-wrap; margin: 4px 0 8px; }
.assistant-compose-area { flex: none; padding-bottom: env(safe-area-inset-bottom); }
.assistant-composer { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; }
.assistant-composer textarea { width: 100%; resize: none; min-height: 44px; max-height: 22dvh; overflow: auto; }
.assistant-workspace #chatStatus { margin: 0 0 8px; overflow-wrap: anywhere; }
.assistant-workspace #chatStatus:empty { display: none; }
.assistant-hint { margin: 6px 0 0; font-size: 12px; color: var(--muted); text-align: center; }
.assistant-working, .assistant-welcome { color: var(--muted); }
.assistant-map-button { margin-top: 8px; }
.assistant-map-dialog { --ui-dialog-width: 1100px; height: min(760px, calc(100dvh - 30px)); }
.assistant-map-dialog[open] { display: flex; flex-direction: column; gap: 8px; padding: 12px; overflow: hidden; }
.assistant-map-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.assistant-map-heading h2 { min-width: 0; margin: 0; font-size: 18px; overflow-wrap: anywhere; }
.assistant-map-heading button { flex: none; }
.assistant-map-period, .assistant-map-status, .assistant-map-point { margin: 0; font-size: 12px; overflow-wrap: anywhere; }
.assistant-map-status:empty, .assistant-map-point:empty { display: none; }
.assistant-map-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.assistant-map-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; max-height: 100px; overflow: auto; font-size: 12px; }
.assistant-map-legend span, .assistant-map-legend label { display: inline-flex; align-items: center; gap: 4px; overflow-wrap: anywhere; }
.assistant-map-legend [hidden] { display: none; }
.assistant-map-legend input { appearance: auto; width: 16px; height: 16px; min-height: 0; margin: 0; accent-color: var(--green); }
.assistant-map-route-key { width: 20px; height: 6px; border-radius: 3px; flex: none; }
.assistant-map-track-key { width: 28px; height: 12px; flex: none; }
.assistant-map-review { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 12px; }
.assistant-map-review[hidden] { display: none; }
.assistant-map-review select { flex: 1; min-width: 0; width: 100%; }
.assistant-map-finding-key { width: 20px; height: 6px; border-radius: 3px; flex: none; }
.assistant-map-controls { display: flex; gap: 4px; }
.assistant-map-surface { position: relative; flex: 1 1 0; min-height: 140px; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); touch-action: none; cursor: grab; }
.assistant-map-surface:active { cursor: grabbing; }
.assistant-map-tiles, .assistant-map-drawing { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.assistant-map-tiles img { position: absolute; max-width: none; }
.assistant-map-drawing { z-index: 1; }
.assistant-map-route { fill: none; stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; opacity: .6; }
.assistant-map-track-halo { fill: none; stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; }
.assistant-map-track { fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.assistant-map-endpoint { fill: var(--brand-white); stroke: var(--brand-dark-green); stroke-width: 2; }
.assistant-map-stop { fill: var(--brand-white); stroke: var(--brand-dark-green); stroke-width: 2; }
.assistant-map-finding { fill: none; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.assistant-map-finding-marker { stroke: var(--brand-white); stroke-width: 2; }
.assistant-map-finding-number { fill: var(--brand-white); font-size: 12px; font-weight: 600; text-anchor: middle; }
.assistant-map-label { font-size: 12px; font-weight: 600; fill: var(--brand-dark-green); stroke: var(--brand-white); stroke-width: 3; paint-order: stroke; }
.assistant-map-attribution { position: absolute; z-index: 2; right: 0; bottom: 0; padding: 2px 4px; background: var(--paper); color: var(--ink); font-size: 11px; }
@media (max-width: 650px) {
  .assistant-thread { padding: 8px 0; }
  .assistant-conversation { gap: 20px; }
  .assistant-composer textarea { font-size: 16px; }
}
@media (any-pointer: coarse) {
  .assistant-workspace button { min-width: 44px; min-height: 44px; }
  .assistant-map-dialog button, .assistant-map-legend label { min-height: 44px; }
  .assistant-map-dialog button { min-width: 44px; }
}
