/* Synced from the Olive Data platform by tools/Sync-Theme.ps1 on 2026-09-24. Edit there, then re-sync. */
/* ==========================================================================
   EXPERIMENT (24 Sep 2026): the sign-in page's art panel behind the sidebar.
   A deep plum radial gradient that slowly breathes, with blurred orbs that
   drift (lavender at the top, lime at the bottom, a plum glow in the middle),
   taken from .auth-art in olive-auth.css and scaled to a 260px column.
   To roll back: delete the <link> to this file in Views/Shared/Partials/_HeadCSS.cshtml
   (or delete this file and that line). Nothing else depends on it.
   ========================================================================== */
.sidenav-menu {
  background:
    radial-gradient(180px 180px at 45% 55%, rgba(var(--om-secondary-rgb), .45), transparent 70%),
    radial-gradient(120% 70% at 20% 5%, var(--om-side-top) 0%, var(--om-side) 55%, var(--om-side-deep) 100%);
  background-color: var(--om-side);
  background-size: 140% 140%;
  animation: ol-side-breathe 14s ease-in-out infinite alternate;
  isolation: isolate;
}
/* The orbs. Clipped to the column in its normal size; hidden when the sidebar is condensed, where its menus fly
   out past its edge and must not be clipped. */
html:not([data-sidenav-size="condensed"]):not([data-sidenav-size="compact"]) .sidenav-menu { overflow: hidden; }
.sidenav-menu::before, .sidenav-menu::after {
  content: ""; position: absolute; border-radius: 50%; filter: blur(40px); pointer-events: none; z-index: 0; will-change: transform;
}
.sidenav-menu::before { width: 260px; height: 260px; background: var(--om-orb-a); top: -70px; right: -120px; opacity: .55; animation: ol-side-drift-a 11s ease-in-out infinite alternate; }
.sidenav-menu::after { width: 240px; height: 240px; background: var(--om-orb-b); bottom: -90px; left: -100px; opacity: .32; animation: ol-side-drift-b 13s ease-in-out infinite alternate; }
html[data-sidenav-size="condensed"] .sidenav-menu::before, html[data-sidenav-size="condensed"] .sidenav-menu::after,
html[data-sidenav-size="compact"] .sidenav-menu::before, html[data-sidenav-size="compact"] .sidenav-menu::after { display: none; }
/* The menu sits above the orbs. */
.sidenav-menu > .scrollbar, .sidenav-menu > .logo, .sidenav-menu > .button-sm-hover, .sidenav-menu > .button-close-offcanvas { position: relative; z-index: 1; }

@keyframes ol-side-breathe { from { background-position: 0% 0%; } to { background-position: 60% 70%; } }
@keyframes ol-side-drift-a {
  from { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(-50px, 180px) scale(1.12); }
  to   { transform: translate(-90px, 60px) scale(.94); }
}
@keyframes ol-side-drift-b {
  from { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(70px, -200px) scale(1.15); }
  to   { transform: translate(30px, -320px) scale(1.04); }
}
@media (prefers-reduced-motion: reduce) {
  .sidenav-menu, .sidenav-menu::before, .sidenav-menu::after { animation: none; }
}
