/* ============================================
   HOLO FRAMEWORK – Main Styles
   ============================================ */

:root {
  --accent: #004953;
  --accent-mid: #2a6f7a;
  --accent-soft: #3f8a96;
  --accent-light: #5ca0ab;
  --silver: #a5acaf;
  --silver-bright: #cdd3d6;
  --silver-pure: #e2e8f0;
  --obsidian: #000000;
  --obsidian-soft: #030508;
  --bvg-yellow: #f0d722;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #000;
  font-family: 'Space Grotesk', sans-serif;
  color: var(--silver-bright);
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}

@media (hover: hover) and (pointer: fine) {
  html, body { cursor: none; }
  body.modal-open { cursor: auto; }
  body.modal-open * { cursor: auto; }
}

#stage {
  position: fixed;
  inset: 0;
  z-index: 5;
  overflow: hidden;
}

.module-slot {
  position: absolute;
  inset: 0;
  transform-origin: 50% 50%;
  will-change: transform, opacity;
  pointer-events: none;
}

.module-slot > .module-inner {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: auto;
  transition:
    transform 0.85s cubic-bezier(0.22, 1, 0.32, 1),
    opacity 0.7s ease,
    filter 0.7s ease;
  transform-origin: 50% 50%;
  will-change: transform, opacity;
}

/* ---------- MODUL-SLOTS ----------
   Die ModuleRegistry setzt .is-active auf den fokussierten Slot.
   visibility (verzögert) sorgt dafür, dass Inhalte inaktiver Module
   nicht per Tab erreichbar sind, während man sie nicht sieht. */

.module-slot:not(.is-active) { z-index: 5; }

.module-slot:not(.is-active) > .module-inner {
  transform: translate3d(0, 0, 0) scale(0.2);
  opacity: 0;
  filter: blur(20px);
  pointer-events: none;
  visibility: hidden;
  transition:
    transform 0.85s cubic-bezier(0.22, 1, 0.32, 1),
    opacity 0.7s ease,
    filter 0.7s ease,
    visibility 0s linear 0.85s;
}

.module-slot.is-active { z-index: 100; }

.module-slot.is-active > .module-inner {
  transform: translate3d(0, 0, 0) scale(1);
  opacity: 1;
  filter: none;
  visibility: visible;
  animation: openFromCenter 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.02s backwards;
}
