@keyframes blink{ 50%{ opacity:0; } }

@keyframes bootLiftAway{
  0%{ transform: translateY(0); }
  100%{ transform: translateY(-100%); }
}

@keyframes engrave{
  0%{ opacity:0; letter-spacing: 0.3em; text-shadow: 0 0 0 rgba(199,214,223,0); }
  60%{ opacity:1; }
  100%{ opacity:1; letter-spacing: 0.01em; text-shadow: 0 1px 0 rgba(0,0,0,.4), 0 0 14px rgba(199,214,223,.18); }
}

@keyframes runPulse{
  0%{ opacity:1; offset-distance: 0%; }
  95%{ opacity:1; }
  100%{ opacity:0; offset-distance: 100%; }
}

@keyframes ledPulse{
  0%, 100%{ opacity:.3; }
  50%{ opacity:1; }
}

/* progressive hero reveal, timed after boot rather than scroll-triggered */
.boot-reveal{
  opacity:0; transform: translateY(8px);
  transition: opacity .5s ease, transform .5s cubic-bezier(.2,.7,.15,1);
}
.boot-reveal.in{ opacity:1; transform:none; }

/* break the grid: pegboard tools sit at slightly uneven heights, like real pegs */
.pegboard .tool-label{ transition: transform .2s, border-color .2s, color .2s; }
.pegboard .tool-label:hover, .pegboard .tool-label.active{ transform: translateY(-2px); }

/* break the grid: papers sit slightly askew until opened, like a real shelf */
.paper{ transition: transform .3s ease; }
.paper:nth-child(odd){ transform: rotate(-0.5deg); }
.paper:nth-child(even){ transform: rotate(0.4deg); }
.paper.open{ transform: rotate(0deg); }
.paper-face{ position:relative; }
.paper-face::after{
  content:''; position:absolute; top:0; right:0; width:0; height:0;
  border-style: solid; border-width: 0 14px 14px 0;
  border-color: transparent var(--paper) transparent transparent;
  filter: drop-shadow(-1px 1px 1px rgba(0,0,0,.15));
  transition: border-width .2s;
}
.paper.open .paper-face::after{ border-width: 0 20px 20px 0; }

/* generic scroll-reveal: a mechanical slide-and-lock, not a fade/float */
.reveal{
  opacity:0;
  transform: translateY(18px);
  transition: transform .55s cubic-bezier(.2,.7,.15,1), opacity .55s linear;
}
.reveal.in{ opacity:1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
