/* Apple90 V15 — isolated utility controls and calm loading feedback */
:root{--a90-control-size:46px;--a90-control-gap:10px}
.floating-actions{
 position:fixed!important;left:max(14px,env(safe-area-inset-left))!important;right:auto!important;
 top:50%!important;bottom:auto!important;transform:translateY(-50%)!important;
 z-index:120!important;display:flex!important;flex-direction:column!important;
 gap:var(--a90-control-gap)!important;pointer-events:none!important;
}
.floating-actions .floating-btn{
 pointer-events:auto!important;width:var(--a90-control-size)!important;height:var(--a90-control-size)!important;
 min-width:var(--a90-control-size);border-radius:15px!important;
 background:var(--a90-surface)!important;color:var(--a90-muted)!important;
 border:1px solid var(--a90-border)!important;box-shadow:0 5px 18px rgba(15,23,42,.12)!important;
 backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
 transform:none!important;transition:color 160ms ease,border-color 160ms ease,background 160ms ease,box-shadow 160ms ease!important;
}
.floating-actions .floating-btn:hover,.floating-actions .floating-btn:focus-visible{
 color:var(--a90-brand)!important;border-color:var(--a90-brand)!important;
 background:var(--a90-brand-soft)!important;box-shadow:0 7px 20px rgba(5,150,105,.12)!important;
}
.floating-actions .floating-btn i{font-size:19px;line-height:1}
.floating-actions .notification-badge{
 top:-5px!important;right:-5px!important;width:auto!important;min-width:18px;height:18px;
 padding:0 4px;border:2px solid var(--a90-surface);font-size:10px;font-weight:700;
}
.notifications-panel{
 z-index:125!important;left:calc(max(14px,env(safe-area-inset-left)) + 60px)!important;
 right:auto!important;top:50%!important;bottom:auto!important;
 width:min(370px,calc(100vw - 88px))!important;max-width:calc(100vw - 88px)!important;
 max-height:min(620px,calc(100dvh - 32px))!important;overflow:hidden!important;
 transform:translateY(-50%) translateX(-6px)!important;
 background:var(--a90-surface)!important;color:var(--a90-text)!important;
 border:1px solid var(--a90-border)!important;box-shadow:var(--a90-shadow-hover)!important;
 backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.notifications-panel.show{transform:translateY(-50%) translateX(0)!important}
.notifications-panel .notifications-header{
 background:var(--a90-surface-2)!important;color:var(--a90-text)!important;
 border-bottom:1px solid var(--a90-border)!important;border-radius:18px 18px 0 0!important;
}
.notifications-panel .notifications-list{max-height:min(52vh,480px)!important;overscroll-behavior:contain}
.notifications-panel .notification-item{color:var(--a90-text)!important;border-color:var(--a90-border)!important}
.notifications-panel .notification-item:hover{background:var(--a90-brand-soft)!important}
.notifications-panel .empty-notifications{color:var(--a90-muted)!important}

/* Admin: separate theme switch from the notification launcher to prevent overlap. */
body.admin-panel .theme-toggle-fab{
 position:fixed!important;left:max(24px,env(safe-area-inset-left))!important;
 bottom:max(96px,calc(env(safe-area-inset-bottom) + 88px))!important;
 top:auto!important;right:auto!important;z-index:140!important;
 width:46px!important;height:46px!important;border-radius:15px!important;
 background:var(--a90-surface)!important;color:var(--a90-muted)!important;
 border:1px solid var(--a90-border)!important;box-shadow:0 5px 18px rgba(15,23,42,.12)!important;
 backdrop-filter:none!important;transform:none!important;
}
body.admin-panel .theme-toggle-fab:hover{
 color:var(--a90-brand)!important;border-color:var(--a90-brand)!important;
 background:var(--a90-brand-soft)!important;transform:translateY(-2px)!important;
}
body.admin-panel .floating-notif-btn{
 left:max(24px,env(safe-area-inset-left))!important;right:auto!important;
 bottom:max(28px,env(safe-area-inset-bottom))!important;top:auto!important;
 width:46px!important;height:46px!important;border-radius:15px!important;
 z-index:141!important;background:var(--a90-surface)!important;
 border:1px solid var(--a90-border)!important;box-shadow:0 5px 18px rgba(15,23,42,.12)!important;
}
body.admin-panel .floating-notif-btn i{color:var(--a90-muted)!important;font-size:20px!important}
body.admin-panel .floating-notif-btn:hover{background:var(--a90-brand-soft)!important;border-color:var(--a90-brand)!important}
body.admin-panel .notification-center{
 left:max(24px,env(safe-area-inset-left))!important;right:auto!important;
 top:auto!important;bottom:max(86px,calc(env(safe-area-inset-bottom) + 78px))!important;
 width:min(500px,calc(100vw - 92px))!important;max-width:calc(100vw - 92px)!important;
 max-height:min(76dvh,650px);overflow:auto;z-index:150!important;
}
body.admin-panel .notification-center.show{transform:translateX(0) scale(1)!important}

/* Gentle skeletons: low-contrast shimmer, no large movement or heavy blur. */
.skeleton-card,.skeleton-stat-card,.skeleton-line,.skeleton-title,.skeleton-icon,
.skeleton-button,.skeleton-input-field,.sk-heading,.sk-card,.sk-row,.sk-panel{
 background:linear-gradient(100deg,var(--a90-surface-2) 0%,var(--a90-border) 48%,var(--a90-surface-2) 100%)!important;
 background-size:220% 100%!important;animation:a90SoftSkeleton 1.55s ease-in-out infinite!important;
 border-color:var(--a90-border)!important;box-shadow:none!important;
}
@keyframes a90SoftSkeleton{0%{background-position:100% 0}100%{background-position:-120% 0}}
.admin-skeleton{padding:8px 2px 28px;animation:a90SkeletonIn 140ms ease-out both}
@keyframes a90SkeletonIn{from{opacity:.55}to{opacity:1}}
.admin-skeleton .sk-heading{height:25px;width:min(260px,60%);border-radius:9px;margin:4px 0 18px}
.admin-skeleton .sk-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.admin-skeleton .sk-card{height:112px;border-radius:16px}
.admin-skeleton .sk-row{height:48px;border-radius:10px;margin:8px 0}
.admin-skeleton .sk-panel{min-height:150px;border-radius:16px}
.content-leaving{opacity:.7;transition:opacity 120ms ease}
.section-enter{animation:a90ContentEnter 160ms ease-out both}
@keyframes a90ContentEnter{from{opacity:.78;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:640px){
 :root{--a90-control-size:42px;--a90-control-gap:9px}
 .floating-actions{left:max(10px,env(safe-area-inset-left))!important}
 .floating-actions .floating-btn{border-radius:13px!important}
 .notifications-panel{left:calc(max(10px,env(safe-area-inset-left)) + 54px)!important;
   width:calc(100vw - 72px)!important;max-width:calc(100vw - 72px)!important}
 body:has(#adminSidebar) .theme-toggle-fab{left:max(16px,env(safe-area-inset-left))!important;bottom:max(88px,calc(env(safe-area-inset-bottom) + 78px))!important}
 body.admin-panel .floating-notif-btn{left:max(16px,env(safe-area-inset-left))!important;bottom:max(22px,env(safe-area-inset-bottom))!important}
 body.admin-panel .notification-center{left:10px!important;bottom:140px!important;width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important}
 .admin-skeleton .sk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){
 .skeleton-card,.skeleton-stat-card,.skeleton-line,.skeleton-title,.skeleton-icon,.skeleton-button,
 .skeleton-input-field,.sk-heading,.sk-card,.sk-row,.sk-panel{animation:none!important}
 .admin-skeleton,.section-enter{animation:none!important}
}
