/* Apple90 V4 — polished navigation, contextual skeletons and low-cost motion */
:root{--motion-fast:160ms;--motion-ui:240ms;--motion-ease:cubic-bezier(.22,.61,.36,1)}
html{scroll-behavior:auto}
body{ text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased }
/* Avoid animating layout-heavy properties across every element. */
.sidebar-collapse-btn,.sidebar-menu-item,.nav-link,.admin-sidebar,.sidebar,.section-enter,.content-leaving{transition-duration:var(--motion-ui)!important;transition-timing-function:var(--motion-ease)!important}
.sidebar-collapse-btn{width:38px;height:38px;border-radius:13px;background:var(--ui-panel-2,#172338);border:1px solid var(--ui-border,#34445b);box-shadow:0 4px 14px rgba(15,23,42,.08)}
.sidebar-collapse-btn:focus-visible,.sidebar-menu-item:focus-visible,.nav-link:focus-visible{outline:3px solid color-mix(in srgb,var(--ui-primary,#5576e9) 45%,transparent);outline-offset:2px}
.sidebar-collapse-btn:hover{transform:translateY(-1px) scale(1.025)}
.sidebar-collapse-btn i{transition:transform 260ms var(--motion-ease)}
/* User sidebar: fixed geometry, clear spacing and stable icon-only mode. */
@media(min-width:768px){
 #userSidebar{flex:0 0 258px!important;width:258px!important;min-width:258px!important;position:sticky;top:0;height:100vh;align-self:flex-start;overflow-y:auto;overflow-x:hidden;border-inline-start:1px solid var(--ui-border);box-shadow:0 12px 36px rgba(15,23,42,.07)}
 body.user-sidebar-collapsed #userSidebar{flex-basis:78px!important;width:78px!important;min-width:78px!important}
 #userSidebar .nav-link{min-height:48px;border-radius:14px;transition:background var(--motion-ui),color var(--motion-ui),transform var(--motion-ui)}
 #userSidebar .nav-link:hover{transform:translateX(-2px)}
 body.user-sidebar-collapsed #userSidebar .nav-link:hover{transform:translateY(-1px)}
 #userSidebar .user-sidebar-top{min-height:54px}
 #userSidebar .user-collapse-btn{position:absolute;left:0;top:8px}
 body.user-sidebar-collapsed #userSidebar .user-sidebar-top{min-height:70px}
 body.user-sidebar-collapsed #userSidebar .user-collapse-btn{position:static}
 body.user-sidebar-collapsed #userSidebar .user-sidebar-brand{display:none!important}
 body.user-sidebar-collapsed #userSidebar .nav-link{width:52px;height:48px;margin-inline:auto!important}
 body.user-sidebar-collapsed #userSidebar .nav-link:after{right:calc(100% + 12px);z-index:1100;box-shadow:0 8px 24px rgba(0,0,0,.18)}
}
/* Admin sidebar desktop collapse uses the same 78px rail. */
@media(min-width:768px){
 #adminSidebar{width:280px;transition:width 280ms var(--motion-ease),box-shadow 280ms var(--motion-ease);will-change:width}
 body.admin-sidebar-collapsed #adminSidebar{width:78px}
 body.admin-sidebar-collapsed main{margin-right:78px!important}
 #adminSidebar .admin-sidebar-brand{display:flex;flex-direction:column;align-items:stretch;gap:10px}
 #adminSidebar .admin-sidebar-brand .flex.items-center{min-width:0}
 #adminSidebar .admin-collapse-btn{align-self:flex-start;position:static;margin:0}
 #adminSidebar .sidebar-menu-item{position:relative;min-height:48px;margin:5px 12px;border-radius:13px;border-right-width:3px;box-shadow:none;animation:none;transition:background var(--motion-ui),color var(--motion-ui),transform var(--motion-ui)}
 #adminSidebar .sidebar-menu-item:hover{transform:translateX(-2px)}
 body.admin-sidebar-collapsed #adminSidebar .admin-sidebar-brand{align-items:center;padding:15px 8px!important}
 body.admin-sidebar-collapsed #adminSidebar .admin-sidebar-brand .flex.items-center>div:last-child{display:none!important}
 body.admin-sidebar-collapsed #adminSidebar .admin-sidebar-brand .flex.items-center{justify-content:center}
 body.admin-sidebar-collapsed #adminSidebar .admin-collapse-btn{align-self:center;margin-top:4px}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item{width:52px;height:48px;margin:5px auto;padding:0;justify-content:center;gap:0;border-right-width:0}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item span:not(.nav-badge){display:none!important}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item i{width:auto;margin:0;font-size:1.3rem}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item:after{content:attr(data-tooltip);position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%);background:#172338;color:#fff;padding:8px 12px;border-radius:10px;font-size:12px;font-weight:600;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:2000;box-shadow:0 8px 24px rgba(0,0,0,.2);transition:opacity 140ms ease,visibility 140ms ease}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item:hover:after{opacity:1;visibility:visible}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-menu-item .nav-badge{position:absolute;top:2px;left:2px;min-width:8px;height:8px;padding:0;font-size:0}
 body.admin-sidebar-collapsed #adminSidebar nav>div:not(.sidebar-theme-btn){display:none!important}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-theme-btn{width:52px;height:48px;margin:14px auto;padding:0;justify-content:center}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-theme-btn span{display:none!important}
 body.admin-sidebar-collapsed #adminSidebar .sidebar-theme-btn i{width:auto}
}
/* Contextual skeletons for admin AJAX navigation. */
.admin-skeleton{direction:rtl;padding:8px 2px 28px;animation:sk-fade-in 180ms ease both}
.sk-heading,.sk-card,.sk-row,.sk-panel{background:var(--card-bg,#fff);border:1px solid var(--card-border,#e2e8f0);border-radius:16px}
.sk-heading{height:34px;width:220px;margin:4px 0 22px;background:linear-gradient(90deg,var(--card-bg,#fff),var(--input-bg,#f1f5f9),var(--card-bg,#fff));background-size:200% 100%;animation:sk-shimmer 1.25s linear infinite}
.sk-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.sk-card{height:116px;padding:17px;display:flex;flex-direction:column;gap:13px}
.sk-card i,.sk-card b,.sk-card em,.sk-row i,.sk-panel i{display:block;border-radius:9px;background:linear-gradient(90deg,rgba(130,145,165,.10),rgba(130,145,165,.22),rgba(130,145,165,.10));background-size:200% 100%;animation:sk-shimmer 1.25s linear infinite}
.sk-card i{width:38px;height:34px}.sk-card b{width:55%;height:12px}.sk-card em{width:78%;height:10px}
.sk-table,.sk-panel{padding:14px;border-radius:16px;border:1px solid var(--card-border,#e2e8f0);background:var(--card-bg,#fff)}
.sk-row{height:54px;margin:8px 0;display:grid;grid-template-columns:1.1fr 2fr 1fr .7fr;align-items:center;gap:18px;padding:0 14px;border:0;border-bottom:1px solid var(--border-color,#e5e7eb);border-radius:0}
.sk-row i{height:11px;width:100%}.sk-row i:first-child{width:65%}
.sk-panel{height:190px;display:flex;flex-direction:column;justify-content:space-around}.sk-panel i{height:12px;width:90%}.sk-panel i:nth-child(2){width:75%}.sk-panel i:nth-child(3){width:58%}
@keyframes sk-shimmer{to{background-position:-200% 0}}@keyframes sk-fade-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.content-leaving{opacity:.72;transform:translateY(3px);transition:opacity 100ms ease,transform 100ms ease}
#mainContent{min-height:calc(100vh - 40px)}
.admin-load-error{padding:36px;text-align:center;border:1px solid var(--card-border);border-radius:18px;background:var(--card-bg);color:var(--text-primary)}
.admin-load-error button{margin-top:14px;padding:10px 18px;border-radius:10px;background:var(--primary,#4567e8);color:white}
/* User sections already exist in DOM: cross-fade only, no artificial loading pause. */
.section-enter{animation:section-enter 190ms var(--motion-ease) both}
@keyframes section-enter{from{opacity:.55;transform:translateY(5px)}to{opacity:1;transform:none}}
.skeleton-container{contain:content}
/* Loading overlay reserved for true form/navigation submits only. */
.loading-overlay{backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
@media(max-width:767px){.sk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#adminSidebar{width:min(86vw,310px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.jalali-input-wrap{position:relative;display:flex;align-items:stretch;gap:8px;width:100%;direction:rtl}
.jalali-input-wrap .jalali-date-visible{width:100%;min-width:0;padding-inline:12px 42px!important;direction:rtl;text-align:right;font-variant-numeric:tabular-nums}
.jalali-input-wrap .jalali-native-date{position:absolute!important;inset-inline-start:8px!important;top:50%!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;padding:0!important;border:0!important}
.jalali-calendar-button{position:absolute;right:7px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--ui-muted,var(--text-muted,#64748b));background:var(--ui-panel-2,var(--input-bg,#f1f5f9));transition:background 160ms ease,color 160ms ease}
.jalali-calendar-button:hover{background:var(--ui-primary,var(--primary,#4567e8));color:#fff}
@media(min-width:768px){body.admin-sidebar-collapsed main,body:not(.admin-sidebar-collapsed) main{transition:margin-right 280ms var(--motion-ease)}}
