body { font-family: 'Inter Tight', sans-serif; }
.mono { font-family: 'IBM Plex Mono', monospace; }
.serif { font-family: 'Cormorant Garamond', serif; letter-spacing: -0.01em; }

@keyframes heroDrift { 0% { transform: scale(1.02) translateX(0); } 100% { transform: scale(1.1) translateX(-1.5%); } }
.hero-drift { animation: heroDrift 24s ease-out forwards; }

@keyframes clipUp { from { clip-path: inset(100% 0 0 0); transform: translateY(24px); } to { clip-path: inset(0 0 0 0); transform: translateY(0); } }
.clip-reveal { animation: clipUp 0.9s cubic-bezier(0.16,1,0.3,1) forwards; opacity: 1; }
.clip-reveal.d1 { animation-delay: 0.1s; clip-path: inset(100% 0 0 0); }
.clip-reveal.d2 { animation-delay: 0.25s; clip-path: inset(100% 0 0 0); }
.clip-reveal.d3 { animation-delay: 0.4s; clip-path: inset(100% 0 0 0); }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1); }
.reveal.in { opacity: 1; transform: translateY(0); }

@keyframes pulseDot { 0%,100% { opacity: 1; } 50% { opacity: 0.25; } }
.pulse-dot { animation: pulseDot 1.4s ease-in-out infinite; }

.panel-img { transition: transform 8s ease-out; }
.panel:hover .panel-img { transform: scale(1.06); }

.beam-v { overflow: visible; }
.beam-v::after { content:''; position:absolute; left:-1px; width:3px; height:22%; top:-25%;
  background:linear-gradient(to bottom,transparent,rgba(217,47,36,0.9),transparent);
  animation:beamV 6s linear infinite;
  filter:drop-shadow(0 0 4px rgba(217,47,36,0.6)); }
.beam-h::after { content:''; position:absolute; top:-1px; height:3px; width:14%; left:-15%;
  background:linear-gradient(to right,transparent,rgba(217,47,36,0.9),transparent);
  animation:beamH 6s linear infinite;
  filter:drop-shadow(0 0 4px rgba(217,47,36,0.6)); }
@keyframes beamV { 0% { top:-25%; } 100% { top:125%; } }
@keyframes beamH { 0% { left:-15%; } 100% { left:115%; } }
.beam-d1::after { animation-delay: 2s; }
.beam-d2::after { animation-delay: 4s; }

.wchar { display: inline-block; transition: font-weight 0.15s linear; }
.word { display: inline-block; white-space: nowrap; }
.gsap-on .reveal { transition: none; }
#scrollProgress { transform-origin: left; }
.panel { will-change: clip-path; }

details[open] > summary .plus-h { transform: rotate(90deg); }
details > summary::-webkit-details-marker { display: none; }
details > summary { list-style: none; }

@media (prefers-reduced-motion: reduce) {
  .hero-drift, .clip-reveal, .pulse-dot { animation: none !important; clip-path: none !important; transform: none !important; }
  .reveal { transform: none; transition: opacity 0.4s ease; }
  .panel-img { transition: none; }
  .beam-v::after, .beam-h::after { display: none; }
  .wchar { transition: none; }
  #scrollProgress { display: none; }
}
