/* MORE OF EVERYTHING — effects & motion tokens
   The system uses almost no easing/motion vocabulary by design: "the header
   doesn't animate or parallax; it simply ends on a diagonal cut" (Bible §3.3).
   These tokens exist for the few places motion IS used (scroll cues, hover). */

:root {
  --grain-opacity: 0.13; /* @kind other */          /* fixed full-viewport SVG turbulence overlay, multiply blend */
  --ghost-opacity: 0.12; /* @kind other */          /* ghost glyph / unassigned catalog letters */
  --ghost-opacity-bg: 0.28; /* @kind other */       /* background fragment images, faint */
  --fragment-opacity-bg-faint: 0.16; /* @kind other */
  --hairline-opacity: 0.28; /* @kind other */       /* diagonal rule lines between numbered blocks */
  --ease-standard: cubic-bezier(.4,0,.2,1); /* @kind other */
  --duration-hover: 160ms; /* @kind other */
  --scroll-cue-duration: 2.2s; /* @kind other */    /* moeScrollCue keyframe loop */
}

@keyframes moeScrollCue { 0%, 100% { transform: translateY(0); opacity: .5; } 50% { transform: translateY(7px); opacity: 1; } }

/* Hover: darken/brighten by opacity shift, never a color swap — matches the
   shipped page's link treatment (opacity .5 -> .7-.8 on hover). */
.moe-link-fade { transition: opacity var(--duration-hover) var(--ease-standard); }
.moe-link-fade:hover { opacity: 1 !important; }
