/* ─── RESET & VARIABLES ─── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

:root {
  --forest: #2d6a4f;
  --mid: #40916c;
  --light: #95d5b2;
  --pale: #d8f3dc;
  --cream: #fefcf3;
  --stone: #f5f0e8;
  --gold: #c9a227;
  --gold-lt: #f0d080;
  --gold-pale: #fdf6dc;
  --dark: #22402e;
  --hero-bg: #1a3426;
  --muted: #4a6358;
  --white: #ffffff;
  --border: rgba(45, 106, 79, 0.12);
}

html {
  scroll-behavior: smooth;
  overflow-x: hidden;
}

body {
  font-family: "Lato", sans-serif;
  background: var(--cream);
  color: var(--dark);
  overflow-x: hidden;
}

/* ─── LOGO ANIMATIONS ─── */
@keyframes corePulse {
  0%, 100% { opacity: 0.9; }
  50% { opacity: 1; filter: drop-shadow(0 0 10px #c9a030); }
}
@keyframes traceFlicker {
  0%, 100% { opacity: 0.32; }
  50% { opacity: 0.7; }
}
@keyframes logoFadeIn {
  from { opacity: 0; transform: translateX(-6px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes logoTextReveal {
  from { opacity: 0; transform: translateX(14px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes ruleExpand {
  from { transform: scaleX(0); transform-origin: left; }
  to { transform: scaleX(1); transform-origin: left; }
}

.icon-group { animation: logoFadeIn 0.8s cubic-bezier(0.22,1,0.36,1) both; }
.text-group { animation: logoTextReveal 0.9s 0.2s cubic-bezier(0.22,1,0.36,1) both; }
.rule { animation: ruleExpand 1s 0.45s cubic-bezier(0.22,1,0.36,1) both; }
.core-dot { animation: corePulse 2.8s ease-in-out infinite; }
.tr0 { animation: traceFlicker 3.2s 0s ease-in-out infinite; }
.tr1 { animation: traceFlicker 3.2s 0.5s ease-in-out infinite; }
.tr2 { animation: traceFlicker 3.2s 1s ease-in-out infinite; }
.tr3 { animation: traceFlicker 3.2s 1.5s ease-in-out infinite; }
.tr4 { animation: traceFlicker 3.2s 2s ease-in-out infinite; }
.tr5 { animation: traceFlicker 3.2s 2.5s ease-in-out infinite; }

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

/* ─── REVEAL ANIMATIONS ─── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(22px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-2 { transition-delay: 120ms; }
.reveal-3 { transition-delay: 240ms; }
