/* ExamSys shell interaction timings; IPCGov layout, routes and permissions stay local. */
.admin-shell { --nav-ease: cubic-bezier(.2,0,0,1); --nav-exit: cubic-bezier(.4,0,1,1); }
.admin-sidebar { transition: width 240ms var(--nav-ease),transform 240ms var(--nav-ease),visibility 0ms; }
.admin-workspace { transition: margin 240ms var(--nav-ease); }
.admin-nav .nav-section { margin: 0; flex-shrink: 0; border-bottom: 1px solid rgba(255,255,255,.065); }
.admin-nav .nav-section:last-child { border-bottom: 0; }
.admin-nav .nav-root-section { margin-bottom: 5px; padding-bottom: 5px; }
.admin-nav .nav-section-toggle {
    min-height: 42px; max-height: 48px; margin: 0; padding: 7px 10px; gap: 9px;
    color: #91a9b7; font-size: 11.5px; font-weight: 600; text-align: start; overflow: hidden;
    transition: max-height 240ms var(--nav-ease),min-height 240ms var(--nav-ease),padding 240ms var(--nav-ease),opacity 180ms ease,color 180ms ease;
}
.admin-nav .nav-section-toggle:hover { color: #dce8ed; background: rgba(255,255,255,.035); }
.admin-nav .nav-section.current > .nav-section-toggle { color: #d5e7ec; }
.nav-section-title { min-width: 0; display: flex; align-items: center; gap: 9px; }
.nav-section-title > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-nav .nav-section-title > .icon { width: 17px; height: 17px; color: #7697a8; flex-shrink: 0; }
.admin-nav .nav-section.current .nav-section-title > .icon { color: #61cfc5; }
.nav-section-toggle > .icon,.user-menu > .icon { transition: transform 180ms var(--nav-ease); }
.nav-section-toggle > .icon.expanded,.user-menu > .icon.expanded { transform: rotate(180deg); }
.nav-section-items { display: grid; grid-template-rows: 1fr; opacity: 1; transition: grid-template-rows 240ms var(--nav-ease),opacity 180ms ease; }
.nav-section-items > div { min-height: 0; overflow: hidden; padding: 0 3px; }
.nav-section-items.collapsed { grid-template-rows: 0fr; opacity: 0; pointer-events: none; }
.admin-nav .nav-section a { isolation: isolate; transition: background-color 180ms ease,color 180ms ease,transform 120ms ease; }
.admin-nav .nav-section a::before { content: ''; position: absolute; inset-block: 8px; inset-inline-start: 0; width: 3px; border-radius: 3px; background: #22b6aa; transform: scaleY(0); transition: transform 180ms cubic-bezier(.2,.8,.2,1); }
.admin-nav .nav-section a.active { box-shadow: none; }
.admin-nav .nav-section a.active::before { transform: scaleY(1); }
.admin-nav .nav-chevron { transform: translateX(3px); transition: opacity 180ms ease,transform 180ms var(--nav-ease); }
.admin-nav .nav-section a:hover .nav-chevron { transform: translateX(0); }
.admin-nav a:focus-visible,.sidebar-footer > button:focus-visible,.sidebar-quick-search:focus-visible { outline: 2px solid #63cfc5; outline-offset: -2px; }
.sidebar-footer > button .icon { transition: transform 240ms cubic-bezier(.2,.8,.2,1); }
.sidebar-quick-search { display: none; }
.mobile-overlay { display: none; }
.admin-shell .user-popover { transform-origin: top left; animation: none; transition: opacity 160ms ease,transform 180ms var(--nav-ease),visibility 0ms; }
.admin-shell .user-popover[data-state="open"] { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }
.admin-shell .user-popover[data-state="closed"] { opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-3px) scale(.985); transition: opacity 110ms ease,transform 110ms var(--nav-exit),visibility 0ms 120ms; }
.admin-nav-tooltip { position: fixed; z-index: 900; padding: 6px 9px; border: 1px solid rgba(255,255,255,.1); border-radius: 6px; color: #fff; background: #102f44; box-shadow: 0 8px 22px rgba(4,25,38,.2); font-size: 10.5px; white-space: nowrap; pointer-events: none; transform: translate(-100%,-50%); transform-origin: right center; }
.admin-nav-tooltip[data-state="open"] { animation: admin-tooltip-in 100ms ease backwards; }
.admin-nav-tooltip[data-state="closing"] { animation: admin-tooltip-out 80ms ease both; }
@keyframes admin-tooltip-in { from { opacity: 0; transform: translate(calc(-100% + 4px),-50%); } }
@keyframes admin-tooltip-out { to { opacity: 0; transform: translate(calc(-100% + 3px),-50%); } }

@media (min-width: 981px) {
    /* Keep collapse effective at the existing 1250px breakpoint too. */
    .admin-shell.sidebar-collapsed { --sidebar: 76px; }
    .admin-shell :is(.brand-copy,.nav-section a > span,.nav-chevron,.cycle-mini div,.cycle-mini > .icon,.sidebar-footer > button span) {
        max-width: 210px; opacity: 1; visibility: visible;
        transition: max-width 240ms var(--nav-ease),opacity 180ms ease,transform 240ms var(--nav-ease),visibility 0ms;
    }
    .admin-shell.sidebar-collapsed :is(.brand-copy,.nav-section a > span,.nav-chevron,.cycle-mini div,.cycle-mini > .icon,.sidebar-footer > button span) {
        display: block; max-width: 0; min-width: 0; margin: 0; opacity: 0; overflow: hidden; pointer-events: none; transform: translateX(7px); visibility: hidden; transition-delay: 0ms,0ms,0ms,240ms;
    }
    .admin-shell.sidebar-collapsed .nav-section-toggle { display: flex; min-height: 0; max-height: 0; padding-block: 0; opacity: 0; pointer-events: none; visibility: hidden; }
    .admin-shell.sidebar-collapsed .nav-section { margin-bottom: 3px; }
    .admin-shell.sidebar-collapsed .nav-section a,.admin-shell.sidebar-collapsed .cycle-mini,.admin-shell.sidebar-collapsed .sidebar-footer > button { gap: 0; }
    .admin-shell .nav-section .nav-chevron { opacity: 0; }
    .admin-shell .nav-section a:hover .nav-chevron { opacity: .6; }
    .admin-shell.sidebar-collapsed .cycle-mini { height: 52px; }
}

@media (max-width: 980px) {
    body:has(.admin-shell) { overflow-x: clip; }
    body.admin-navigation-open { overflow: hidden; }
    .admin-sidebar { display: flex; width: min(300px,calc(100vw - 32px)); height: 100dvh; visibility: hidden; transform: translateX(105%); pointer-events: none; transition: transform 240ms var(--nav-ease),visibility 0ms 240ms; }
    .admin-sidebar.mobile-open { display: flex; visibility: visible; transform: translateX(0); pointer-events: auto; transition-delay: 0ms; }
    .admin-shell .admin-brand { padding-inline: 12px; gap: 5px; }
    .admin-brand > a { flex: 1; min-width: 0; gap: 9px; }
    .admin-shell .brand-copy { min-width: 0; }
    .admin-shell .brand-copy strong { font-size: 12px; white-space: normal; }
    .admin-shell .brand-copy small { font-size: 10px; white-space: normal; }
    .admin-shell .mobile-sidebar-close { width: 32px; height: 36px; flex-shrink: 0; }
    .admin-shell.sidebar-collapsed .nav-section-toggle { display: flex; visibility: visible; min-height: 42px; max-height: 48px; padding: 7px 10px; opacity: 1; pointer-events: auto; }
    .admin-shell.sidebar-collapsed .cycle-mini div { display: block; min-width: 0; }
    .admin-shell.sidebar-collapsed .cycle-mini { justify-content: flex-start; }
    .sidebar-quick-search { width: 100%; flex-shrink: 0; min-height: 44px; margin-bottom: 6px; padding: 0 11px; border: 1px solid rgba(187,213,225,.2); border-radius: 8px; color: #b9cbd4; background: rgba(255,255,255,.025); display: flex; align-items: center; gap: 9px; font: inherit; font-size: 11.5px; text-align: start; cursor: pointer; }
    .sidebar-quick-search:hover { color: #fff; background: rgba(255,255,255,.05); border-color: rgba(100,216,206,.36); }
    .sidebar-quick-search .icon { color: #63cfc5; width: 18px; height: 18px; }
    .mobile-overlay { display: block; visibility: hidden; opacity: 0; pointer-events: none; transition: opacity 120ms var(--nav-exit),visibility 0ms 120ms; }
    .mobile-overlay[data-state="open"] { visibility: visible; opacity: 1; pointer-events: auto; transition: opacity 160ms ease,visibility 0ms; }
}

@media (prefers-reduced-motion: reduce) {
    .admin-shell :is(.admin-sidebar,.admin-workspace,.brand-copy,.nav-section-toggle,.nav-section-toggle > .icon,.nav-section-items,.nav-section a,.nav-section a::before,.nav-section a > span,.nav-chevron,.cycle-mini div,.cycle-mini > .icon,.sidebar-footer > button span,.sidebar-footer > button .icon,.user-menu > .icon,.user-popover,.mobile-overlay),.admin-nav-tooltip { animation: none !important; transition: none !important; }
}
