/* ============================================================
   Bewegung: Keyframes, Reveal, reduced-motion
   ============================================================ */
@keyframes led-pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 6px var(--volt), 0 0 12px rgba(var(--volt-rgb), .5); }
  50%      { opacity: .55; box-shadow: 0 0 2px var(--volt); }
}
@keyframes caret-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes scroll-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(5px); } }

/* 3D-Bühne */
@keyframes cube-spin {
  from { transform: translateZ(var(--z)) rotateX(0deg)   rotateY(0deg); }
  to   { transform: translateZ(var(--z)) rotateX(360deg) rotateY(360deg); }
}
@keyframes stage-idle {
  0%, 100% { transform: rotateX(3deg)  rotateY(-6deg); }
  50%      { transform: rotateX(-3deg) rotateY(6deg); }
}
@keyframes sweep {
  0%, 20% { top: -25%; }
  60%, 100% { top: 110%; }
}
@keyframes crt-sweep { 0% { top: -20%; } 100% { top: 110%; } }

/* Leiterbahnen, Knoten, Lichtbogen (Phase 2) */
@keyframes line-in   { to { width: 100%; } }
@keyframes line-down { to { height: 100%; } }
@keyframes node-on {
  to { background: var(--volt); border-color: var(--volt); box-shadow: 0 0 10px var(--volt), 0 0 20px rgba(57, 255, 136, .5); }
}
@keyframes charge {
  0%   { transform: rotate(0deg); }
  60%  { transform: rotate(360deg); border-style: dashed; }
  100% { transform: rotate(360deg); border-style: solid; border-color: var(--volt); background: var(--volt); box-shadow: 0 0 10px var(--volt), 0 0 20px rgba(57, 255, 136, .5); }
}
@keyframes arc-in { 0% { stroke-dashoffset: 3000; opacity: 1; } 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes arc-flicker { 0%, 90%, 100% { opacity: 1; } 92% { opacity: .25; } 94% { opacity: 1; } 97% { opacity: .5; } }

/* Seltener Seiten-Glitch: Überschriften und Status zucken kurz */
@keyframes glitch-jitter {
  0%   { transform: translate(2px, 0);  text-shadow: -2px 0 var(--amber), 2px 0 var(--volt); }
  50%  { transform: translate(-2px, 0); text-shadow: 2px 0 var(--amber), -2px 0 var(--volt); }
  100% { transform: none; text-shadow: none; }
}
.is-glitching .hero__name,
.is-glitching .section-head__title,
.is-glitching .status__sys,
.is-glitching .about__lead,
.is-glitching .hobbies__title,
.is-glitching .contact__lead,
.is-glitching .entry__role,
.is-glitching .act__title,
.is-glitching .goal__title,
.is-glitching .proj-card__name { animation: glitch-jitter .2s steps(3) 1; }
@keyframes card-scan {
  0%   { top: -4%;  opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { top: 104%; opacity: 0; }
}

/* Glitch (RGB-Split) beim Hover auf den Namen */
@keyframes glitch-a {
  0%   { opacity: .9; clip-path: inset(8% 0 62% 0);  transform: translate(-4px, -2px); }
  33%  { clip-path: inset(40% 0 30% 0); transform: translate(3px, 1px); }
  66%  { clip-path: inset(70% 0 5% 0);  transform: translate(-2px, 0); }
  100% { opacity: 0; }
}
@keyframes glitch-b {
  0%   { opacity: .9; clip-path: inset(55% 0 12% 0); transform: translate(4px, 2px); }
  33%  { clip-path: inset(10% 0 70% 0); transform: translate(-3px, -1px); }
  66%  { clip-path: inset(30% 0 45% 0); transform: translate(2px, 0); }
  100% { opacity: 0; }
}

/* Hintergrund: Chrom-Schlieren und Lichtstreifen */
@keyframes bg-drift-1 { to { transform: translate(14vw, 10vh) scale(1.15); } }
@keyframes bg-drift-2 { to { transform: translate(-12vw, 14vh) scale(.9); } }
@keyframes bg-drift-3 { to { transform: translate(10vw, -12vh) scale(1.1); } }
@keyframes streak-drift {
  0%   { transform: rotate(-24deg) translateY(-35vh); opacity: 0; }
  15%  { opacity: 1; }
  85%  { opacity: .9; }
  100% { transform: rotate(-24deg) translateY(45vh); opacity: 0; }
}

/* Einschalten nach dem Boot (Leuchtstoffröhre) */
@keyframes power-flicker {
  0%  { opacity: 0; }
  8%  { opacity: 1; }
  14% { opacity: .3; }
  22% { opacity: 1; }
  30% { opacity: .55; }
  38% { opacity: 1; }
  100% { opacity: 1; }
}
.is-powering main,
.is-powering .nav { animation: power-flicker .9s steps(1) 1; }

/* Scroll-Reveal: Sektion kippt aus der Tiefe hoch, dann Einschalt-Flackern */
[data-reveal] {
  opacity: 0;
  transform: perspective(1200px) rotateX(7deg) translateY(30px);
  transform-origin: 50% 0;
}
[data-reveal].is-visible { animation: power-on .9s var(--ease-out) 1 forwards; }
@keyframes power-on {
  0%   { opacity: 0;   transform: perspective(1200px) rotateX(7deg) translateY(30px); }
  18%  { opacity: .95; transform: perspective(1200px) rotateX(0deg) translateY(0); }
  26%  { opacity: .3; }
  34%  { opacity: 1; }
  46%  { opacity: .6; }
  54%  { opacity: 1; }
  100% { opacity: 1;   transform: none; }
}

/* Karten und Einträge klappen gestaffelt aus der Tiefe auf (--i = Index) */
[data-reveal].is-visible .fact,
[data-reveal].is-visible .hobby,
[data-reveal].is-visible .proj-card,
[data-reveal].is-visible .entry,
[data-reveal].is-visible .act,
[data-reveal].is-visible .goal,
[data-reveal].is-visible .rail {
  animation: card-in .7s var(--ease-out) 1 backwards;
  animation-delay: calc(160ms + var(--i, 0) * 70ms);
}
[data-reveal].is-visible .module {
  animation: card-in .5s var(--ease-out) 1 backwards;
  animation-delay: calc(260ms + var(--i, 0) * 35ms);
}
@keyframes card-in {
  from { opacity: 0; transform: perspective(900px) rotateX(-16deg) translateY(26px); }
  to   { opacity: 1; transform: none; }
}

/* ---------- Bewegung reduzieren (Barrierefreiheit) ---------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .cube, .stage__tilt, .pcard__sweep, .cursor-ring__inner { animation: none !important; }
  .cube { transform: translateZ(var(--z)) rotateX(-20deg) rotateY(35deg); }
  .pcard__sweep { display: none; }
  [data-reveal] { opacity: 1; transform: none; animation: none !important; }
  .fact, .hobby, .proj-card, .entry, .act, .goal, .rail, .module { animation: none !important; }
  .acts::after, .roadmap::after { width: 100% !important; animation: none !important; }
  .act::before, .goal__node { background: var(--volt); border-color: var(--volt); animation: none !important; }
  .lang__fill { width: var(--w, 0%); transition: none; }
  .arc polyline { stroke-dashoffset: 0; opacity: 1; animation: none !important; }
  .circuit::after { transition: none; }
  .proj-card::before { display: none; }
  .crt::after { display: none; }
  .is-glitching * { animation: none !important; }
  .is-powering main, .is-powering .nav { animation: none !important; }
  .caret { animation: none; }
  .bg__streak, .bg__layer { animation: none !important; }
  .bg__streak { display: none; }
}
