/* Visible slide choreography; no navigation interception, delayed form submit or fake data. */
.fleet-page-enter { animation:fleet-page-in .65s cubic-bezier(.16,.8,.22,1) backwards; }
.app { overflow-x:clip; }
.fleet-enter { animation:fleet-enter .7s cubic-bezier(.16,.8,.22,1) var(--fleet-enter-delay,0ms) backwards; }
.fleet-menu-enter { animation:fleet-menu-in .6s cubic-bezier(.16,.8,.22,1) var(--fleet-menu-delay,0ms) backwards; }
@keyframes fleet-enter { from { opacity:.12; translate:0 44px; } to { opacity:1; translate:0 0; } }
@keyframes fleet-page-in { from { opacity:.2; translate:80px 0; } to { opacity:1; translate:0 0; } }
@keyframes fleet-menu-in { from { opacity:.1; translate:-36px 0; } to { opacity:1; translate:0 0; } }
.side .tree-folder.is-folder-opening > .tree-children > * { animation:fleet-menu-in .5s cubic-bezier(.16,.8,.22,1) backwards; }
.side .tree-folder.is-folder-opening > .tree-children > :nth-child(2) { animation-delay:60ms; }
.side .tree-folder.is-folder-opening > .tree-children > :nth-child(3) { animation-delay:120ms; }
.side .tree-folder.is-folder-opening > .tree-children > :nth-child(n+4) { animation-delay:180ms; }
/* Keep the approved entry slides above. Native cross-document snapshots produced
   InvalidStateError on the live host; ordinary document navigation stays intact. */
@view-transition { navigation:none; }
@media (hover:hover) and (pointer:fine) {
    .main .btn,.login-wrap .btn,.chart-switch button,.registry-tabs button { transition:background-color .16s,border-color .16s,box-shadow .16s,translate .16s; }
    .main .btn:hover,.login-wrap .btn:hover { translate:0 -1px; box-shadow:0 5px 12px #6e5de71c; }
    .main .btn:active,.login-wrap .btn:active { translate:0 0; }
    .main tbody tr { transition:background-color .16s; }
    .main tbody tr:hover { background-color:#6e5de706; }
}
.main :is(a,button,input,select,textarea,summary):focus-visible,.login-wrap :is(a,button,input):focus-visible { outline:3px solid #aa9ef0; outline-offset:3px; }
.top-menu.open .top-popup { animation:fleet-enter .18s ease-out; }
.fleet-is-pending { position:relative; }
.fleet-is-pending > :not([data-fleet-skeleton]) { visibility:hidden; }
.fleet-skeleton { position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; align-items:stretch; justify-content:center; gap:18px; padding:22px; box-sizing:border-box; background:#fcfbff; border:1px solid #e9e5f4; border-radius:12px; overflow:hidden; }
.fleet-skeleton-shapes { display:grid; gap:12px; }
.fleet-skeleton-shapes span { display:block; height:14px; border-radius:6px; background:#eae6f4; position:relative; overflow:hidden; }
.fleet-skeleton-shapes span::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,transparent,#ffffffba,transparent); translate:-100% 0; animation:fleet-shimmer 1.5s ease-in-out infinite; }
.fleet-skeleton--rows .fleet-skeleton-shapes span:nth-child(3n+1) { width:65%; }
.fleet-skeleton--rows .fleet-skeleton-shapes span:nth-child(3n+2) { width:90%; }
.fleet-skeleton--bars .fleet-skeleton-shapes { grid-template-columns:repeat(6,1fr); align-items:end; height:65%; border-bottom:1px solid #ddd6ed; padding:0 6px 8px; }
.fleet-skeleton--bars .fleet-skeleton-shapes span { height:55%; border-radius:7px 7px 2px 2px; }
.fleet-skeleton--bars .fleet-skeleton-shapes span:nth-child(2n) { height:85%; }
.fleet-skeleton--bars .fleet-skeleton-shapes span:nth-child(3n) { height:40%; }
.fleet-skeleton--ring .fleet-skeleton-shapes { place-items:center; }
.fleet-skeleton--ring .fleet-skeleton-shapes span { width:150px; height:150px; border-radius:50%; background:conic-gradient(#ece8f6,#ded7ee,#ece8f6); }
.fleet-skeleton--ring .fleet-skeleton-shapes span::before { content:''; position:absolute; inset:32px; border-radius:50%; background:#fcfbff; z-index:1; }
.fleet-skeleton-label { text-align:center; color:#777084; font-size:13px; line-height:1.5; }
@keyframes fleet-shimmer { to { translate:100% 0; } }
.fleet-navigation-status { position:fixed; right:24px; bottom:24px; z-index:130; display:flex; align-items:center; gap:10px; max-width:calc(100vw - 32px); padding:12px 18px; box-sizing:border-box; border:1px solid #ddd6f5; border-radius:12px; color:#54428c; background:#fff; box-shadow:0 6px 24px #33265716; font-size:14px; pointer-events:none; }
.fleet-navigation-status[hidden] { display:none; }
.fleet-navigation-status::before,.fleet-button-pending::before { content:''; display:inline-block; width:15px; height:15px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:fleet-spin .75s linear infinite; flex-shrink:0; vertical-align:middle; }
.fleet-button-pending::before { margin-right:8px; }
@keyframes fleet-spin { to { rotate:360deg; } }
img[loading="lazy"] { background-color:#f1eef7; }
#vehicle-repair-history.fleet-is-pending { min-height:250px; }
.analytics-retry { display:block; margin:12px auto 0; }
@media(max-width:900px) { .fleet-navigation-status { right:16px; bottom:calc(88px + env(safe-area-inset-bottom)); font-size:13px; } }
@media(prefers-reduced-motion:reduce) {
    @view-transition { navigation:none; }
    .fleet-enter,.fleet-page-enter,.fleet-menu-enter,.fleet-skeleton-shapes span::after,.fleet-navigation-status::before,.fleet-button-pending::before,.top-menu.open .top-popup,.is-loading .system-rail::after { animation:none!important; }
    .fleet-enter { opacity:1; translate:none; }
    .fleet-skeleton-shapes span::after { display:none; }
    .main .btn,.login-wrap .btn,.main .metric-card,.main tbody tr,.chart-switch button,.registry-tabs button,.side,.tree-folder>.tree-children,.tree-folder summary,.tree-folder .folder-icon,.tree-folder .folder-icon::before,.performance-ring circle,.performance-arc,.chart-bar,.fleet-bar { transition:none!important; }
    .tree-folder.is-folder-opening>.tree-children>* { animation:none!important; }
    .main .btn:hover,.login-wrap .btn:hover { translate:none; }
    .is-loading .system-rail::after { transform:none; width:100%; opacity:1; }
}
@media print {
    .fleet-enter,.fleet-page-enter,.fleet-menu-enter { animation:none!important; opacity:1; translate:none; }
    .fleet-skeleton,.fleet-navigation-status,.analytics-retry { display:none!important; }
    .fleet-is-pending > :not([data-fleet-skeleton]) { visibility:visible; }
}
