/* =============================================
   DESIGN SYSTEM — AromaLand
   style.css: CSS Variables, Reset, Base, Buttons, Utilities
   ============================================= */

/* ---- Reset ---- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; }
body {
  font-family: var(--font-primary);
  font-size: var(--text-base);
  color: var(--color-text);
  background: var(--color-bg);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
button { font-family: inherit; }

/* ---- CSS Variables ---- */
:root {
  /* Colors */
  --color-primary:        #4A7C59;
  --color-primary-light:  #6B9E79;
  --color-primary-dark:   #2F5740;
  --color-secondary:      #F5E6C8;
  --color-accent:         #D4A853;
  --color-accent-dark:    #B8903D;
  --color-bg:             #FAFAF7;
  --color-surface:        #FFFFFF;
  --color-text:           #2C2C2C;
  --color-text-muted:     #6B6B6B;
  --color-border:         #E8E3DA;

  /* Typography */
  --font-primary: 'Be Vietnam Pro', 'Inter', sans-serif;
  --text-xs:   0.75rem;
  --text-sm:   0.875rem;
  --text-base: 1rem;
  --text-lg:   1.125rem;
  --text-xl:   1.25rem;
  --text-2xl:  1.5rem;
  --text-3xl:  1.875rem;
  --text-4xl:  2.25rem;
  --text-5xl:  3rem;
  --font-regular:  400;
  --font-medium:   500;
  --font-semibold: 600;
  --font-bold:     700;

  /* Spacing (8px base) */
  --space-1:  0.25rem;
  --space-2:  0.5rem;
  --space-3:  0.75rem;
  --space-4:  1rem;
  --space-5:  1.25rem;
  --space-6:  1.5rem;
  --space-8:  2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;

  /* Radius */
  --radius-sm:   6px;
  --radius-md:   12px;
  --radius-lg:   20px;
  --radius-xl:   32px;
  --radius-full: 9999px;

  /* Shadows */
  --shadow-sm:    0 1px 3px rgba(0,0,0,0.08);
  --shadow-md:    0 4px 16px rgba(0,0,0,0.10);
  --shadow-lg:    0 8px 32px rgba(0,0,0,0.12);
  --shadow-hover: 0 8px 24px rgba(74,124,89,0.22);

  /* Transitions */
  --transition: all 0.3s ease;
}

/* ---- Layout ---- */
.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

/* ---- Section Common ---- */
.section-header {
  text-align: center;
  margin-bottom: var(--space-12);
}
.section-title {
  font-size: var(--text-3xl);
  font-weight: var(--font-bold);
  color: var(--color-text);
  margin-bottom: var(--space-3);
  line-height: 1.25;
}
.section-desc {
  font-size: var(--text-lg);
  color: var(--color-text-muted);
  max-width: 560px;
  margin: 0 auto;
}

/* ---- Buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: calc(var(--space-3) + 2px) var(--space-6);
  border-radius: var(--radius-full);
  font-family: var(--font-primary);
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
  cursor: pointer;
  border: 2px solid transparent;
  transition: var(--transition);
  white-space: nowrap;
  min-height: 48px;
  min-width: 44px;
}
.btn--primary { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.btn--primary:hover { background: var(--color-primary-dark); border-color: var(--color-primary-dark); transform: translateY(-2px); box-shadow: var(--shadow-hover); }

.btn--accent { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
.btn--accent:hover { background: var(--color-accent-dark); border-color: var(--color-accent-dark); transform: translateY(-2px); }

.btn--outline { background: transparent; color: var(--color-primary); border-color: var(--color-primary); }
.btn--outline:hover { background: var(--color-primary); color: #fff; transform: translateY(-2px); }

.btn--outline-white { background: transparent; color: #fff; border-color: rgba(255,255,255,0.7); }
.btn--outline-white:hover { background: rgba(255,255,255,0.15); transform: translateY(-2px); }

.btn--white { background: #fff; color: var(--color-primary-dark); border-color: #fff; }
.btn--white:hover { background: var(--color-secondary); transform: translateY(-2px); }

.btn--sm  { padding: var(--space-2) var(--space-4); font-size: var(--text-sm); min-height: 36px; }
.btn--lg  { padding: var(--space-4) var(--space-10); font-size: var(--text-lg); min-height: 56px; }

/* ---- Scroll Animation ----
   Only hide elements when JS is loaded (html.js class added by inline script).
   Without JS: elements always visible (no flash, SEO-safe).
   ---- */
html.js .animate {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s ease-out, transform 0.65s ease-out;
}
html.js .animate.is-visible { opacity: 1; transform: translateY(0); }

/* stagger helpers */
html.js .animate[data-delay="1"] { transition-delay: 0.08s; }
html.js .animate[data-delay="2"] { transition-delay: 0.16s; }
html.js .animate[data-delay="3"] { transition-delay: 0.24s; }
html.js .animate[data-delay="4"] { transition-delay: 0.32s; }
html.js .animate[data-delay="5"] { transition-delay: 0.40s; }
html.js .animate[data-delay="6"] { transition-delay: 0.48s; }
html.js .animate[data-delay="7"] { transition-delay: 0.56s; }

@media (prefers-reduced-motion: reduce) {
  html.js .animate,
  html.js .animate.is-visible { opacity: 1; transform: none; transition: none; }
}
