/* Opt in only after checking the page's containing blocks and fixed UI.
   Keep the modal beside the source, never inside the blurred wrapper.
   Static public tools and Vite pages share this same runtime stylesheet. */
[data-modal-blur-source]:not(oojoo-experiment-header),
oojoo-experiment-header[data-modal-blur-source] > .experiment-header {
  filter: var(--modal-source-filter, none);
  transition: filter var(--modal-source-duration, 180ms) cubic-bezier(.22,1,.36,1);
}

body:has(
  > dialog[data-modal-blur][open]:not([inert]):not(.is-closing),
  > [data-modal-blur].on,
  > [data-modal-blur="hidden"]:not([hidden]),
  > [data-modal-blur="class"]:not(.hidden)
) {
  --modal-source-filter: blur(var(--modal-source-blur, 6px));
  --modal-source-duration: 280ms;
}

[data-modal-blur], [data-modal-blur]::backdrop {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

@media (prefers-reduced-motion: reduce) {
  [data-modal-blur-source]:not(oojoo-experiment-header),
  oojoo-experiment-header[data-modal-blur-source] > .experiment-header {
    transition: none;
  }
}
