/* A shared rail keeps its DOM while the page content loads independently. */
.sidebar{overflow:hidden;transition:width 240ms cubic-bezier(.4,0,.2,1)}
.main-shell{transition:margin-left 240ms cubic-bezier(.4,0,.2,1)}
.sidebar .brand-mark{flex-shrink:0}
.sidebar .brand,.sidebar .nav-link,.sidebar .settings-toggle,.sidebar .user-profile{transition:padding 240ms cubic-bezier(.4,0,.2,1),gap 240ms cubic-bezier(.4,0,.2,1),background-color 130ms,color 130ms}
.sidebar .brand>div:last-child,.sidebar .nav-link>span,.sidebar .user-copy,.sidebar .settings-toggle>span{display:block;min-width:0;max-width:230px;opacity:1;overflow:hidden;white-space:nowrap;transition:max-width 240ms ease,opacity 160ms ease,transform 240ms ease}
.sidebar .nav-group{display:block;max-height:48px;opacity:1;overflow:hidden;white-space:nowrap;transition:opacity 160ms ease,max-height 240ms ease,padding 240ms ease}
.sidebar .settings-toggle>.chev{display:block;max-width:18px;opacity:1;transition:transform 200ms ease,opacity 160ms ease,max-width 240ms ease}
.sidebar .settings-toggle[aria-expanded=true]>.chev{transform:rotate(180deg)}
.sidebar .user-profile>.icon-btn{display:inline-flex;max-width:30px;opacity:1;overflow:hidden;transition:max-width 240ms ease,opacity 160ms ease}
.sidebar .nav-sub{display:block;max-height:0;opacity:0;visibility:hidden;overflow:hidden;transition:max-height 220ms ease,opacity 160ms ease,visibility 0s linear 220ms}
.sidebar .nav-sub.open{max-height:640px;opacity:1;visibility:visible;transition-delay:0s}
.sidebar-close,.sidebar-backdrop{display:none}
@media(min-width:851px){
 .nav-collapsed .sidebar{width:64px}
 .nav-collapsed .main-shell{margin-left:64px}
 .nav-collapsed .sidebar .brand>div:last-child,.nav-collapsed .sidebar .nav-link>span,.nav-collapsed .sidebar .user-copy,.nav-collapsed .sidebar .settings-toggle>span{display:block;max-width:0;opacity:0;transform:translateX(-6px);pointer-events:none}
 .nav-collapsed .sidebar .nav-group{display:block;opacity:0;max-height:0;padding-top:0;padding-bottom:0;pointer-events:none}
 .nav-collapsed .sidebar .user-profile>.icon-btn{display:inline-flex;width:0;max-width:0;opacity:0;pointer-events:none}
 .nav-collapsed .sidebar .settings-toggle>.chev{display:block;max-width:0;opacity:0;pointer-events:none}
 .nav-collapsed .sidebar .nav-sub{display:block;max-height:0;opacity:0;visibility:hidden;pointer-events:none}
 .nav-collapsed .sidebar .brand,.nav-collapsed .sidebar .user-profile{gap:0;justify-content:center}
 .nav-collapsed .sidebar .nav-link,.nav-collapsed .sidebar .settings-toggle{gap:0;justify-content:flex-start;padding-left:10px;padding-right:10px}
}
@media(max-width:850px){
 .sidebar,.nav-collapsed .sidebar{display:flex;width:256px;max-width:calc(100vw - 48px);transform:translateX(-100%);opacity:0;visibility:hidden;box-shadow:none;transition:transform 240ms cubic-bezier(.4,0,.2,1),opacity 180ms ease,visibility 0s linear 240ms;padding-top:48px}
 .sidebar.mobile-open,.nav-collapsed .sidebar.mobile-open{display:flex;transform:translateX(0);opacity:1;visibility:visible;box-shadow:4px 0 16px #0002;transition-delay:0s}
 .sidebar-close{display:inline-flex;position:absolute;right:12px;top:10px}
 .sidebar-backdrop{display:block;position:fixed;inset:0;z-index:29;border:0;background:#0006;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 220ms ease,visibility 0s linear 240ms}
 .sidebar-mobile-open .sidebar-backdrop{visibility:visible;opacity:1;pointer-events:auto;transition-delay:0s}
 body.sidebar-mobile-open{overflow:hidden}
 .main-shell,.nav-collapsed .main-shell{margin-left:0;transition:none}
 .nav-collapsed .sidebar .brand>div:last-child,.nav-collapsed .sidebar .nav-link>span,.nav-collapsed .sidebar .nav-group,.nav-collapsed .sidebar .user-copy,.nav-collapsed .sidebar .settings-toggle>span,.nav-collapsed .sidebar .settings-toggle>.chev{display:block;max-width:230px;opacity:1;transform:none;pointer-events:auto}
 .nav-collapsed .sidebar .user-profile>.icon-btn{display:inline-flex;max-width:30px;opacity:1;pointer-events:auto}
 .nav-collapsed .sidebar .brand{padding:0 10px 24px;gap:11px}
 .nav-collapsed .sidebar .brand-mark{width:34px}
 .nav-collapsed .sidebar .nav-link,.nav-collapsed .sidebar .settings-toggle{justify-content:flex-start;gap:10px;padding:8px 16px}
 .nav-collapsed .sidebar .user-profile{justify-content:flex-start;gap:10px;padding:12px 8px 0}
 .nav-collapsed .sidebar .nav-sub{display:block}
}
.route-loading{min-height:440px;animation:route-loading-in 140ms ease both;position:relative}
.route-loading-label{display:flex;align-items:center;gap:10px;position:absolute;right:0;top:6px;color:var(--muted);font-size:13px;line-height:20px}
.route-loading-label .spinner{height:16px;width:16px}
.route-skeleton{display:flex;flex-direction:column;gap:16px;padding-top:2px}
.route-skeleton-heading,.route-skeleton-caption,.route-skeleton-toolbar,.route-skeleton-card{border-radius:6px;background:var(--hover);position:relative;overflow:hidden}
.route-skeleton-heading{width:150px;height:28px;margin-bottom:-10px}
.route-skeleton-caption{width:38%;height:18px}
.route-skeleton-toolbar{width:65%;height:32px;margin-top:10px;margin-bottom:8px}
.route-skeleton-card{width:100%;height:100px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.route-skeleton-card:before{content:'';position:absolute;left:20px;top:20px;width:32%;height:14px;background:var(--hover);box-shadow:0 26px 0 var(--hover);border-radius:4px}
.route-skeleton>div:after{content:'';position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--muted) 7%,transparent),transparent);animation:route-shimmer 1.3s ease-in-out infinite}
.main-shell:has(#page[aria-busy=true])>.topbar:after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,transparent,var(--blue),transparent) no-repeat;background-size:36% 100%;animation:route-progress 1.2s cubic-bezier(.4,0,.2,1) infinite;pointer-events:none}
@keyframes route-loading-in{from{opacity:0}to{opacity:1}}
@keyframes route-shimmer{to{transform:translateX(100%)}}
@keyframes route-progress{0%{background-position:-60% 0;opacity:0}20%{opacity:1}100%{background-position:160% 0;opacity:0}}
@media(max-width:600px){.route-loading-label{position:static;margin-bottom:20px}.route-skeleton-caption{width:70%}.route-skeleton-toolbar{width:100%}}
@media(prefers-reduced-motion:reduce){
 .sidebar,.main-shell,.sidebar *,.sidebar-backdrop{transition:none!important}
 .route-loading,.route-skeleton>div:after,.main-shell:has(#page[aria-busy=true])>.topbar:after{animation:none!important}
 .route-skeleton>div:after{display:none}
}
