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

:root {
  --gold:      #c8902a;
  --dark-gold: #8b6914;
  --wood-dark: #2a1a0e;
  --parchment: #f5e6c8;
  --text:      #e8d5b0;
  --black:     #080503;
}

html { scroll-behavior: smooth; }
body {
  background: var(--black);
  color: var(--text);
  font-family: 'Lato', sans-serif;
  overflow-x: hidden;
}

body::before {
  content: '';
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(ellipse 80% 60% at 50% 0%,   rgba(60,30,8,.55)  0%, transparent 70%),
    radial-gradient(ellipse 60% 40% at 20% 100%,  rgba(30,12,3,.6)   0%, transparent 60%),
    radial-gradient(ellipse 50% 50% at 80% 60%,   rgba(20,8,2,.4)    0%, transparent 55%),
    linear-gradient(170deg, #0d0703 0%, #080503 40%, #0a0604 100%);
}

body::after {
  content: '';
  position: fixed; inset: 0; z-index: 999; pointer-events: none;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 200px 200px;
}

section { position: relative; z-index: 10; }

.reveal { opacity: 0; transform: translateY(30px); transition: opacity .9s ease, transform .9s ease; }
.reveal.visible { opacity: 1; transform: none; }

@keyframes fadeUp { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:none; } }
@keyframes scrollPulse { 0%,100%{opacity:1;transform:scaleY(1);transform-origin:top;} 50%{opacity:.25;transform:scaleY(.45);transform-origin:top;} }
