/* =====================================================
   TranslateXYZ — Base
   Reset, typography, container, utilities, animations
   ===================================================== */

/* ---------- RESET ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body, h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img, video, canvas, svg { display: block; max-width: 100%; height: auto; }
/* <picture> is just a wrapper — make it transparent to layout so existing
   img sizing rules (width:100%; aspect-ratio etc) keep working unchanged. */
picture { display: contents; }
button, input, textarea, select { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; }
table { border-collapse: collapse; border-spacing: 0; }
:focus-visible { outline: none; box-shadow: var(--sh-focus); border-radius: var(--r-sm); }
::selection { background: var(--green-200); color: var(--green-900); }

/* ---------- HTML / BODY ---------- */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
body {
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    line-height: var(--lh-base);
    color: var(--text-on-light);
    background: var(--bg-light);
    min-height: 100vh;
    overflow-x: hidden;
}

/* ---------- TYPOGRAPHY ---------- */
h1, h2, h3, h4, h5, h6 {
    color: var(--text-on-light-strong);
    font-weight: var(--fw-bold);
    line-height: var(--lh-tight);
    letter-spacing: var(--ls-tighter);
}
h1 { font-size: clamp(var(--fs-3xl), 4.4vw, var(--fs-5xl)); font-weight: var(--fw-extra); }
h2 { font-size: clamp(var(--fs-2xl), 3.3vw, var(--fs-4xl)); }
h3 { font-size: clamp(var(--fs-2xl), 2.2vw, var(--fs-3xl)); }
h4 { font-size: var(--fs-xl); font-weight: var(--fw-semibold); }
h5 { font-size: var(--fs-lg); font-weight: var(--fw-semibold); }
h6 { font-size: var(--fs-md); font-weight: var(--fw-semibold); letter-spacing: var(--ls-wide); text-transform: uppercase; }

p { line-height: var(--lh-relaxed); }
p + p { margin-top: var(--sp-4); }

a { color: var(--color-link); transition: color var(--t-fast); }
a:hover { color: var(--color-link-hover); }

strong, b { font-weight: var(--fw-semibold); color: var(--text-on-light-strong); }
small { font-size: var(--fs-sm); }

code, kbd, samp {
    font-family: var(--font-mono);
    font-size: 0.92em;
    background: var(--bg-light-muted);
    padding: 2px 6px;
    border-radius: var(--r-xs);
    color: var(--green-700);
}

hr { border: 0; border-top: 1px solid var(--border-light); margin: var(--sp-7) 0; }

blockquote {
    border-left: 3px solid var(--green-500);
    padding-left: var(--sp-4);
    color: var(--text-on-light-strong);
    font-style: italic;
}

/* ---------- CONTAINER ---------- */
.container {
    max-width: var(--container-max);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--container-pad);
    padding-right: var(--container-pad);
    width: 100%;
}
.container-narrow { max-width: 880px; margin: 0 auto; padding: 0 var(--container-pad); }
.container-wide   { max-width: 1360px; margin: 0 auto; padding: 0 var(--container-pad); }

/* ---------- SECTIONS ---------- */
.section { padding: var(--section-py) 0; }
.section-sm { padding: var(--section-py-sm) 0; }
.section-tight { padding: var(--sp-9) 0; }

.section-light       { background: var(--bg-light); color: var(--text-on-light); }
.section-light-subtle{ background: var(--bg-light-subtle); color: var(--text-on-light); }
.section-dark        { background:
        radial-gradient(1200px 700px at 75% -10%, rgba(48,178,48,.20), transparent 60%),
        radial-gradient(900px 500px at 10% 110%, rgba(48,178,48,.16), transparent 65%),
        linear-gradient(180deg, #061206 0%, #0A1A0A 60%, #051005 100%); 
    color: var(--text-on-dark);}
.section-dark h1, .section-dark h2, .section-dark h3,
.section-dark h4, .section-dark h5, .section-dark h6 { color: var(--text-on-dark-strong); }
.section-dark a:not(.btn) { color: var(--color-link-on-dark); }
.section-dark a:not(.btn):hover { color: var(--green-100); }
.section-dark code { background: var(--bg-dark-elev); color: var(--green-300); }
.section-dark hr { border-top-color: var(--border-dark); }

.section-dark-gradient {
    background: radial-gradient(1200px 600px at 50% -10%, rgba(48,178,48,.18), transparent 60%),
                linear-gradient(180deg, #0A1A0A 0%, #051005 100%);
    color: var(--text-on-dark);
}

/* ---------- SECTION HEADER ---------- */
.section-header { text-align: center; max-width: 760px; margin: 0 auto var(--sp-9); }
.section-header .eyebrow { margin-bottom: var(--sp-3); }
.section-header h2 { margin-bottom: var(--sp-3); }
.section-header p  { color: var(--text-on-light-muted); font-size: var(--fs-md); }
.section-dark .section-header p { color: var(--text-on-dark-muted); }

/* ---------- EYEBROW ---------- */
.eyebrow {
    display: inline-block;
    font-size: var(--fs-xs);
    font-weight: var(--fw-semibold);
    letter-spacing: var(--ls-wide);
    color: var(--color-brand);
    background: var(--green-50);
    padding: 6px 12px;
    border-radius: var(--r-pill);
    border: 1px solid var(--green-100);
}
.eyebrow.amber {
    background: var(--amber-100);
    color: var(--amber-700);
    border: 1px solid var(--amber-300);
}
.eyebrow.cyan {
    background: var(--cyan-50);
    color: var(--cyan-700);
    border: 1px solid var(--cyan-100);
}
.section-dark .eyebrow {
    color: var(--green-300);
    background: rgba(48,178,48,0.10);
    border-color: rgba(48,178,48,0.25);
}
/* On the subtle off-white surface, green-50 bg blends in — use white card style instead */
.section-light-subtle .eyebrow {
    border-color: var(--green-300);
}

/* ---------- UTILITIES ---------- */
.text-center { text-align: center; }
.text-left   { text-align: left; }
.text-right  { text-align: right; }

.text-brand   { color: var(--color-brand); }
.text-muted   { color: var(--text-on-light-muted); }
.text-strong  { color: var(--text-on-light-strong); }
.section-dark .text-muted  { color: var(--text-on-dark-muted); }
.section-dark .text-strong { color: var(--text-on-dark-strong); }

.fs-sm { font-size: var(--fs-sm); }
.fs-md { font-size: var(--fs-md); }
.fs-lg { font-size: var(--fs-lg); }

.fw-medium   { font-weight: var(--fw-medium); }
.fw-semibold { font-weight: var(--fw-semibold); }
.fw-bold     { font-weight: var(--fw-bold); }

.mt-0 { margin-top: 0; } .mt-2 { margin-top: var(--sp-2); } .mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: var(--sp-4); } .mt-6 { margin-top: var(--sp-6); } .mt-8 { margin-top: var(--sp-8); }
.mb-0 { margin-bottom: 0; } .mb-2 { margin-bottom: var(--sp-2); } .mb-3 { margin-bottom: var(--sp-3); }
.mb-4 { margin-bottom: var(--sp-4); } .mb-6 { margin-bottom: var(--sp-6); } .mb-8 { margin-bottom: var(--sp-8); }

.flex { display: flex; }
.inline-flex { display: inline-flex; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-2 { gap: var(--sp-2); } .gap-3 { gap: var(--sp-3); }
.gap-4 { gap: var(--sp-4); } .gap-6 { gap: var(--sp-6); }
.flex-wrap { flex-wrap: wrap; }

.sr-only {
    position: absolute !important;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0);
    white-space: nowrap; border: 0;
}

.no-scroll { overflow: hidden; }

/* ---------- ANIMATIONS ---------- */
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}
.animate-fade-up { animation: fadeUp var(--t-slow) both; }

/* ---------- DIVIDER ---------- */
.divider { height: 1px; background: var(--border-light); margin: var(--sp-7) 0; }
.section-dark .divider { background: var(--border-dark); }
