/*
 * Divine Status admin navigation transition.
 * Kept separate from page chrome so navigation motion can evolve independently.
 */
html.ds-page-transition-exiting,
html.ds-page-transition-entry,
html.ds-page-transition-hold{
  overflow: hidden !important;
}

:root{
  --ds-transition-x: 50vw;
  --ds-transition-y: 50vh;
  --ds-source-x: 50vw;
  --ds-source-y: 50vh;
  --ds-source-width: 120px;
  --ds-source-height: 48px;
}

.ds-page-transition{
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  margin: 0 !important;
  transform: none !important;
  z-index: 2147483600;
  visibility: hidden;
  opacity: 0;
  transition: opacity 180ms ease;
  overflow: hidden;
  pointer-events: none;
  color: #f3f7ff;
  font-family: inherit;
  isolation: isolate;
}

/* See-through wait dim: shows after the cinematic veil retracts, while the spinner stays. */
.ds-page-transition::before{
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(22, 22, 33, 0.48);
  opacity: 0;
  pointer-events: none;
  transition: opacity 280ms ease 120ms;
}

.ds-page-transition__veil{
  position: absolute;
  inset: 0;
  z-index: 2;
  background-color: #1b1f26;
  background-image:
    url("../images/admin-page-icon-pattern.svg?v=8"),
    linear-gradient(180deg, #1b1f26 0%, #181c23 100%);
  background-position: 0 0, 0 0;
  background-repeat: repeat, no-repeat;
  background-size: 112px 72px, auto;
  background-attachment: fixed, fixed;
  clip-path: circle(0 at var(--ds-transition-x) var(--ds-transition-y));
  transition: clip-path 560ms cubic-bezier(.72,0,.18,1);
  will-change: clip-path;
}

.ds-page-transition__veil::before,
.ds-page-transition__veil::after{
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ds-page-transition__veil::before{
  inset: 0 -20%;
  opacity: .32;
  background-image: linear-gradient(115deg, transparent 0 41%, rgba(95,214,255,.18) 48%, transparent 55%);
  background-size: 180% 100%;
  background-position: 100% 0;
  background-repeat: no-repeat;
  transform: translateX(-12%);
  transition: transform 680ms cubic-bezier(.2,.8,.2,1);
}

.ds-page-transition__veil::after{
  background: radial-gradient(circle at var(--ds-transition-x) var(--ds-transition-y), rgba(79,140,255,.30) 0, rgba(79,140,255,.10) 18%, transparent 42%);
  mix-blend-mode: screen;
}

.ds-page-transition__source{
  position: absolute;
  left: var(--ds-source-x);
  top: var(--ds-source-y);
  width: var(--ds-source-width);
  height: var(--ds-source-height);
  z-index: 3;
  border: 0;
  border-radius: 14px;
  box-shadow: none;
  opacity: 0;
  transform: translate(-50%, -50%) scale(.92);
}

.ds-page-transition__source::after{
  display: none;
}

.ds-page-transition__stage{
  position: absolute;
  inset: 0;
  z-index: 4;
  display: grid;
  place-items: center;
  padding: 24px;
}

.ds-page-transition__brand{
  width: min(420px, calc(100vw - 40px));
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  opacity: 0;
  transform: translateY(-12px) scale(1.025);
  transition:
    opacity 180ms ease 380ms,
    transform 360ms ease 200ms;
}

.ds-page-transition__emblem{
  position: relative;
  width: 336px;
  height: 336px;
  display: grid;
  place-items: center;
}

.ds-page-transition__ring{
  position: absolute;
  inset: 33px;
  border: 1px solid rgba(95,214,255,.34);
  border-radius: 50%;
  box-shadow:
    0 0 44px rgba(79,140,255,.18),
    inset 0 0 35px rgba(47,208,167,.08);
}

.ds-page-transition__ring::before,
.ds-page-transition__ring::after{
  content: "";
  position: absolute;
  border-radius: inherit;
  border: 1px solid transparent;
}

.ds-page-transition__ring::before{
  inset: -24px;
  border-top-color: rgba(95,214,255,.72);
  border-right-color: rgba(95,214,255,.18);
  animation: ds-page-transition-spin 2.2s linear var(--ds-ring-outer-delay, 0ms) infinite;
}

.ds-page-transition__ring::after{
  inset: 20px;
  border-bottom-color: rgba(47,208,167,.64);
  border-left-color: rgba(47,208,167,.14);
  animation: ds-page-transition-spin 1.7s linear var(--ds-ring-inner-delay, 0ms) infinite reverse;
}

.ds-page-transition__monogram{
  position: relative;
  z-index: 2;
  width: 215px;
  height: 215px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.ds-page-transition__monogram img{
  display: block;
  width: 173px;
  max-width: 100%;
  max-height: 128px;
  object-fit: contain;
  filter: drop-shadow(0 6px 15px rgba(0,0,0,.34));
}

html.ds-page-transition-exiting .ds-page-transition,
html.ds-page-transition-entry .ds-page-transition{
  visibility: visible;
  opacity: 1;
  pointer-events: all;
}

html.ds-page-transition-armed .ds-page-transition{
  visibility: visible;
  opacity: 0;
  pointer-events: all;
}

html.ds-page-transition-armed .ds-page-transition__veil{
  clip-path: circle(0 at var(--ds-transition-x) var(--ds-transition-y));
  transition: none;
}

html.ds-page-transition-exiting .ds-page-transition__veil{
  clip-path: circle(155vmax at var(--ds-transition-x) var(--ds-transition-y));
}

html.ds-page-transition-exiting .ds-page-transition__veil::before,
html.ds-page-transition-entry .ds-page-transition__veil::before{
  transform: translateX(12%);
}

html.ds-page-transition-exiting .ds-page-transition__source{
  animation: ds-page-transition-source 480ms cubic-bezier(.2,.8,.2,1) both;
}

html.ds-page-transition-exiting .ds-page-transition__source::after{
  animation: ds-page-transition-ripple 520ms ease-out 70ms both;
}

html.ds-page-transition-exiting .ds-page-transition__brand{
  opacity: 1;
  transform: translateY(0) scale(1);
}

html.ds-page-transition-entry .ds-page-transition__veil{
  clip-path: circle(155vmax at var(--ds-transition-x) var(--ds-transition-y));
}

html.ds-page-transition-entry .ds-page-transition__brand{
  opacity: 1;
  transform: translateY(0) scale(1);
  transition-delay: 0ms;
}

html.ds-page-transition-entry-active .ds-page-transition{
  visibility: visible;
  opacity: 1;
  pointer-events: all;
}

html.ds-page-transition-entry-active .ds-page-transition::before,
html.ds-page-transition-hold .ds-page-transition::before{
  opacity: 1;
}

html.ds-page-transition-entry-active .ds-page-transition__veil{
  clip-path: circle(0 at var(--ds-transition-x) var(--ds-transition-y));
  transition-duration: 560ms;
}

html.ds-page-transition-entry-active .ds-page-transition__brand,
html.ds-page-transition-hold .ds-page-transition__brand{
  opacity: 1;
  transform: translateY(0) scale(1);
  transition: none;
}

html.ds-page-transition-release .ds-page-transition{
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 0s linear 180ms;
}

html.ds-page-transition-release .ds-page-transition::before{
  opacity: 0;
  transition-delay: 0ms;
}

html.ds-page-transition-release .ds-page-transition__brand{
  opacity: 0;
  transform: translateY(-12px) scale(1.025);
  transition: opacity 180ms ease, transform 360ms ease;
}

html.ds-page-transition-entry .blockUI,
html.ds-page-transition-hold .blockUI,
html.ds-page-transition-exiting .blockUI,
html.ds-page-transition-entry .dataTables_wrapper div.dataTables_processing,
html.ds-page-transition-hold .dataTables_wrapper div.dataTables_processing,
html.ds-page-transition-entry .ds-transport-day-loading,
html.ds-page-transition-hold .ds-transport-day-loading,
html.ds-page-transition-entry .clock-transport-day-loading,
html.ds-page-transition-hold .clock-transport-day-loading,
html.ds-page-transition-entry .mobile-transport-day-loading,
html.ds-page-transition-hold .mobile-transport-day-loading{
  display: none !important;
}

.ds-page-transition-source-active{
  position: relative;
  z-index: 2147483500 !important;
  filter: brightness(1.08);
  transition: filter 140ms ease !important;
}

@keyframes ds-page-transition-spin{
  to{ transform: rotate(360deg); }
}

@keyframes ds-page-transition-source{
  0%{ opacity: 0; transform: translate(-50%, -50%) scale(.92); }
  30%{ opacity: 1; }
  100%{ opacity: 0; transform: translate(-50%, -50%) scale(1.16); }
}

@keyframes ds-page-transition-ripple{
  from{ opacity: .9; transform: scale(.82); }
  to{ opacity: 0; transform: scale(1.38); }
}

@media (max-width: 600px){
  .ds-page-transition__stage{ padding: 18px; }
  .ds-page-transition__emblem{
    width: 294px;
    height: 294px;
  }
  .ds-page-transition__monogram{
    width: 188px;
    height: 188px;
  }
  .ds-page-transition__monogram img{
    width: 150px;
    max-height: 110px;
  }
}

@media (prefers-reduced-motion: reduce){
  .ds-page-transition *,
  .ds-page-transition *::before,
  .ds-page-transition *::after,
  .ds-ajax-loader .ds-page-transition__ring::before,
  .ds-ajax-loader .ds-page-transition__ring::after{
    animation: none !important;
    transition-duration: 80ms !important;
    transition-delay: 0ms !important;
  }
  .ds-page-transition__source{ display: none; }
  .ds-page-transition__veil{
    clip-path: none !important;
    opacity: 0;
  }
  html.ds-page-transition-exiting .ds-page-transition__veil,
  html.ds-page-transition-entry .ds-page-transition__veil{
    opacity: 1;
  }
  html.ds-page-transition-entry-active .ds-page-transition__veil{
    opacity: 0;
  }
  html.ds-page-transition-hold .ds-page-transition,
  html.ds-page-transition-entry-active .ds-page-transition{
    opacity: 1;
    visibility: visible;
  }
  html.ds-page-transition-release .ds-page-transition{
    opacity: 0;
    visibility: hidden;
  }
}

/* In-page AJAX / DataTable wait: same emblem as page transitions, see-through veil. */
.ds-ajax-loader{
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  pointer-events: none;
  opacity: 1;
}
.ds-ajax-loader__emblem,
.ds-ajax-loader--inline .ds-ajax-loader__emblem,
.ds-ajax-loader--panel .ds-ajax-loader__emblem{
  transform: none;
}
/* Calendar day-view wait only — keep the full-page overlay at the larger size. */
.ds-ajax-loader--panel .ds-page-transition__emblem{
  width: 202px;
  height: 202px;
}
.ds-ajax-loader--panel .ds-page-transition__ring{
  inset: 20px;
}
.ds-ajax-loader--panel .ds-page-transition__ring::before{
  inset: -14px;
}
.ds-ajax-loader--panel .ds-page-transition__ring::after{
  inset: 12px;
}
.ds-ajax-loader--panel .ds-page-transition__monogram{
  width: 129px;
  height: 129px;
}
.ds-ajax-loader--panel .ds-page-transition__monogram img{
  width: 104px;
  max-height: 77px;
}
.ds-ajax-loader .ds-page-transition__monogram{
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  opacity: 1;
}
.ds-ajax-loader .ds-page-transition__monogram img{
  opacity: 1 !important;
  mix-blend-mode: normal;
  /* PNG alpha stays; visible pixels become solid white like the page overlay. */
  filter: brightness(0) invert(1);
}

body:not(.public) .blockUI.blockOverlay,
body.index .blockUI.blockOverlay{
  background-color: rgba(22, 22, 33, .48) !important;
  opacity: 1 !important;
  cursor: wait !important;
  z-index: 2000 !important;
}
body:not(.public) .blockUI.blockMsg,
body.index .blockUI.blockMsg{
  border: 0 !important;
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  height: 100% !important;
  left: 0 !important;
  top: 0 !important;
  color: inherit !important;
  cursor: wait !important;
  z-index: 2001 !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
  opacity: 1;
}
body:not(.public) .blockUI.blockMsg .ds-ajax-loader,
body:not(.public) #loading.ds-ajax-loader,
body.index .blockUI.blockMsg .ds-ajax-loader,
body.index #loading.ds-ajax-loader{
  position: static;
  width: 100%;
  height: 100%;
  min-height: 0;
  background: transparent !important;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: normal;
  opacity: 1 !important;
}

body:not(.public) .dataTables_wrapper{
  position: relative;
}
body:not(.public) .dataTables_wrapper div.dataTables_processing{
  inset: 0 !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  background: rgba(22, 22, 33, .48) !important;
  border: 0 !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  color: transparent !important;
  font-size: 0 !important;
  z-index: 30 !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
}
