:root:has(.app-shell){--shell-topbar-h:76px;--shell-banner-h:0px;--shell-bar-h:0px;--shell-safe-bottom:0px;--shell-rail-w:0px;--shell-gap-bottom:0px;--shell-frame-top:calc(var(--shell-topbar-h) + var(--shell-banner-h));--shell-frame-bottom:calc(var(--shell-bar-h) + var(--shell-safe-bottom));--shell-viewport-h:calc(100dvh - var(--shell-frame-top) - var(--shell-frame-bottom))}:root:has(.shell-has-banner){--shell-banner-h:52px}.app-shell{isolation:isolate;min-height:100dvh;padding:var(--shell-frame-top) 0 var(--shell-frame-bottom) var(--shell-rail-w);background:var(--background)}@media (hover:none),(max-width:1023px){:root:has(.app-shell){--shell-topbar-h:64px;--shell-bar-h:64px;--shell-safe-bottom:env(safe-area-inset-bottom,0px);--shell-gap-bottom:16px}:root:has(.shell-has-banner){--shell-banner-h:64px}.shell-rail,.shell-wide-only{display:none!important}}@media (min-width:1024px) and (hover:hover){:root:has(.app-shell){--shell-rail-w:56px}.shell-bar{display:none!important}.dispatch-tab-shell{display:none}}.main-area{min-width:0;min-height:var(--shell-viewport-h);display:flex;flex-direction:column;padding-bottom:var(--shell-gap-bottom)}.main-area>.page{flex:1 0 auto}.main-area>:not(.app-ambient){position:relative;z-index:0}.main-area:has(.fleet-page),.main-area:has(.organization-page),.main-area:has(.portal-page){height:var(--shell-viewport-h);min-height:0;padding-bottom:0;overflow:hidden}.main-area:has(.portal-page){display:block}.main-area:has(.organization-page) .organization-page{flex:1 1;min-height:0;height:auto;margin-inline:auto}.shell-topbar{position:fixed;top:0;left:0;right:0;z-index:40;height:var(--shell-topbar-h);gap:12px;padding:0 max(18px,env(safe-area-inset-right)) 0 max(18px,env(safe-area-inset-left));border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35)}.shell-logo,.shell-topbar{display:flex;align-items:center}.shell-logo{flex:0 1 auto;min-width:0;height:100%;overflow:hidden;border-radius:8px;transition:opacity .16s ease}.shell-logo:active{opacity:.8}.shell-logo .brand-lockup{height:44px}.shell-topbar-tools{flex:none;margin-left:auto;display:flex;align-items:center;gap:8px}.shell-topbar-profile{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text-primary);transition:background-color .16s ease}.shell-topbar-profile:hover{background:var(--surface-elevated)}.shell-topbar-tlc{height:44px;display:inline-flex;align-items:center;gap:8px;padding:0 16px;border:1px solid var(--accent);border-radius:10px;background:var(--accent);color:#ffffff;font-weight:800;text-decoration:none;transition:background-color .16s ease,border-color .16s ease}.shell-topbar-tlc:hover{background:var(--accent-hover);border-color:var(--accent-hover)}@media (hover:none),(max-width:1023px){.shell-topbar{gap:8px;padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}.shell-logo .brand-lockup{height:clamp(24px,calc((100vw - 190px) / 4.3),40px);gap:8px}.shell-topbar-tools{gap:6px}.shell-topbar .topbar-search-morph.open{position:absolute;top:50%;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));z-index:2;width:auto;transform:translateY(-50%)}}.shell-banner{position:fixed;top:var(--shell-topbar-h);left:0;right:0;z-index:39;height:var(--shell-banner-h);display:flex;align-items:center;justify-content:center;padding:0 16px;border-bottom:1px solid color-mix(in srgb,var(--warning) 40%,var(--border));background:color-mix(in srgb,var(--warning) 12%,var(--surface));color:var(--text-primary)}.shell-banner-visitor{border-bottom-color:color-mix(in srgb,var(--accent) 35%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.shell-banner-inner{min-width:0;max-width:760px;display:flex;align-items:center;justify-content:center;gap:14px}.shell-banner-text{min-width:0;display:-webkit-box;overflow:hidden;font-size:.92rem;font-weight:800;line-height:1.25;-webkit-line-clamp:2;-webkit-box-orient:vertical}.shell-banner-action{flex:none;min-height:38px;display:inline-flex;align-items:center;gap:8px;padding:0 16px;background:var(--surface);white-space:nowrap}.shell-banner-error{color:var(--danger);font-size:.82rem;font-weight:700}@media (hover:none),(max-width:1023px){.shell-banner{padding:0 12px}.shell-banner-inner{gap:10px}.shell-banner-text{font-size:.82rem}.shell-banner-action{min-height:36px;padding:0 12px;font-size:.82rem}}.shell-count{position:absolute;top:4px;left:calc(50% + 5px);min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border-radius:999px;background:var(--accent);color:#ffffff;font-size:.62rem;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1;pointer-events:none}.shell-count-dot{min-width:8px;width:8px;height:8px;padding:0}.shell-rail{position:fixed;top:var(--shell-frame-top);left:0;bottom:0;z-index:35;width:56px;display:flex;flex-direction:column;justify-content:space-between;padding:12px 8px;border-right:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--surface) 85%,transparent);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);overflow:hidden;transition:width .2s cubic-bezier(.22,.9,.3,1),box-shadow .22s ease}.shell-rail:focus-within:not(.shell-rail-suppressed),.shell-rail:hover:not(.shell-rail-suppressed){width:232px;box-shadow:24px 0 48px -32px color-mix(in srgb,var(--text-primary) 45%,transparent)}.shell-rail-items{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.shell-rail-items::-webkit-scrollbar{display:none}.shell-rail-section{display:flex;flex-direction:column;gap:2px}.shell-rail-section+.shell-rail-section{margin-top:8px;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.shell-rail-bottom{display:flex;flex-direction:column;gap:2px;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.shell-rail-item{position:relative;width:100%;min-height:40px;display:flex;align-items:center;gap:12px;padding:0 10px;border:0;border-radius:10px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.9rem;font-weight:700;text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .16s ease,color .16s ease}.shell-rail-item svg{flex:none;width:19px;height:19px}.shell-rail-item:hover{background:color-mix(in srgb,var(--text-primary) 6%,transparent);color:var(--text-primary)}.shell-rail-item.active{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)}.shell-rail-item .shell-count{top:2px;left:18px;max-width:23px;min-width:14px;height:14px;padding:0 3px;font-size:.58rem}.shell-rail-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .16s ease 40ms}.shell-rail-chevron{flex:none;opacity:0;transition:transform .18s ease,opacity .16s ease 40ms}.shell-rail-chevron.open{transform:rotate(180deg)}.shell-rail:focus-within:not(.shell-rail-suppressed) :is(.shell-rail-label,.shell-rail-chevron),.shell-rail:hover:not(.shell-rail-suppressed) :is(.shell-rail-label,.shell-rail-chevron){opacity:1}.shell-rail-children{display:none;flex-direction:column;gap:1px;padding:2px 0 4px 31px}.shell-rail:focus-within:not(.shell-rail-suppressed) .shell-rail-children,.shell-rail:hover:not(.shell-rail-suppressed) .shell-rail-children{display:flex}.shell-rail-child{min-height:34px;display:flex;align-items:center;gap:8px;padding:0 10px;border-radius:8px;color:var(--text-secondary);font-size:.86rem;font-weight:650;text-decoration:none;white-space:nowrap}.shell-rail-child:hover{background:color-mix(in srgb,var(--text-primary) 6%,transparent);color:var(--text-primary)}.shell-rail-child.active{color:var(--accent)}.shell-bar{position:fixed;left:0;right:0;bottom:0;z-index:36;height:calc(var(--shell-bar-h) + var(--shell-safe-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:4px;gap:4px;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + var(--shell-safe-bottom)) max(8px,env(safe-area-inset-left));border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3)}.shell-bar-item{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;border-radius:12px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.68rem;font-weight:700;line-height:1.1;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .16s ease,color .16s ease}.shell-bar-item svg{flex:none}.shell-bar-tlc{color:var(--accent)}.shell-bar-item.active{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)}.shell-bar-item:active{background:color-mix(in srgb,var(--text-primary) 8%,transparent)}.shell-bar-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:360px){.shell-bar-item{font-size:.62rem}}.shell-more-layer{position:fixed;inset:0;z-index:90}.shell-more-backdrop{position:absolute;inset:0;background:rgb(0 0 0/.38);animation:shell-fade-in .16s ease}.shell-more-sheet{position:absolute;left:0;right:0;bottom:0;width:min(560px,100vw);max-height:min(84dvh,680px);margin-inline:auto;overflow-y:auto;overscroll-behavior:contain;padding:6px 14px calc(16px + env(safe-area-inset-bottom));border:1px solid var(--border);border-bottom:0;border-radius:20px 20px 0 0;background:var(--surface-elevated);box-shadow:0 -18px 48px -24px rgb(0 0 0/.45);animation:shell-sheet-up .22s cubic-bezier(.22,.9,.3,1)}.shell-more-head{position:-webkit-sticky;position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:8px 2px 4px;background:var(--surface-elevated)}.shell-more-head h2{margin:0;font-size:1.05rem}.shell-more-section h3{margin:14px 12px 4px;color:var(--text-secondary);font-size:.76rem;font-weight:800}.shell-more-row{position:relative;width:100%;min-height:48px;display:flex;align-items:center;gap:12px;padding:0 12px;border:0;border-radius:12px;background:transparent;color:var(--text-primary);font:inherit;font-size:.95rem;font-weight:700;text-align:left;text-decoration:none;cursor:pointer}.shell-more-row svg{flex:none;color:var(--text-secondary)}.shell-more-row:hover{background:color-mix(in srgb,var(--text-primary) 6%,transparent)}.shell-more-row.active,.shell-more-row.active svg{color:var(--accent)}.shell-more-row.active{background:color-mix(in srgb,var(--accent) 9%,transparent)}.shell-more-label{flex:1 1;min-width:0}.shell-more-row .shell-count{position:static;margin-left:auto}.shell-more-end{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.shell-more-signout,.shell-more-signout svg{color:var(--danger)}@keyframes shell-fade-in{0%{opacity:0}}@keyframes shell-sheet-up{0%{transform:translateY(100%)}}.theme-toggle{width:40px;height:40px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-secondary);cursor:pointer}.theme-toggle:hover{background:var(--surface-elevated);color:var(--text-primary)}.theme-toggle .theme-icon-sun,:root[data-theme=dark] .theme-toggle .theme-icon-moon{display:none}:root[data-theme=dark] .theme-toggle .theme-icon-sun{display:block}.theme-toggle.shell-more-row,.theme-toggle.shell-rail-item{width:100%;height:auto;justify-content:flex-start;border:0;background:transparent}.theme-toggle.shell-rail-item{min-height:40px;border-radius:10px;color:var(--text-secondary)}.theme-toggle.shell-more-row{min-height:48px;border-radius:12px;color:var(--text-primary)}.theme-toggle.shell-more-row:hover,.theme-toggle.shell-rail-item:hover{background:color-mix(in srgb,var(--text-primary) 6%,transparent)}@media (prefers-reduced-motion:reduce){.shell-more-backdrop,.shell-more-sheet,.shell-rail,.shell-rail-chevron,.shell-rail-label{animation:none;transition:none}}@media print{.shell-banner,.shell-bar,.shell-rail,.shell-topbar{display:none!important}.app-shell{padding:0;background:#ffffff}.main-area,.main-area:has(.organization-page){height:auto;min-height:0;padding:0;overflow:visible}}