/* ===== Design tokens — single source of truth, consumed by Tailwind via var() ===== */
:root {
  --green-dark: #0c2b1f;
  --green-deep: #0f3d2a;
  --green-mid: #1a7a4c;
  --green-bright: #3fbf6f;
  --green-pale: #eafaf0;
  --green-pale-2: #d7f3e2;
  --green-text: #064210;
  --ink: #0d1f17;
  --text-muted: #4a5c52;
  --white: #ffffff;
  --cta: #3dcd58;
  --cta-shadow: rgba(113, 255, 57, 0.4);
  --max-width: 1280px;
  --radius: 16px;
  --font: "Noto Sans Thai", ui-sans-serif, system-ui, sans-serif;
  --line-height: 1;
}

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

body {
  font-family: var(--font);
  color: var(--ink);
  line-height: var(--line-height);
}

img {
  max-width: 100%;
  display: block;
}

@keyframes float-y {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-16px); }
}

html.lenis-smooth {
  scroll-behavior: auto;
}

.reveal-item {
  opacity: 0;
  transform: translateY(40px) scale(0.97);
  filter: blur(6px);
  transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1), transform 0.9s cubic-bezier(0.16, 1, 0.3, 1), filter 0.9s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform, filter;
}

.reveal-item.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

@media (prefers-reduced-motion: reduce) {
  .reveal-item {
    transition: none;
    transition-delay: 0s !important;
  }
}
