/*!
 * 4six Redesign v3 — FX Core
 * Namespace: .fx-*
 * Builds on tokens.css.
 */

/* ── Reset & body ─────────────────────────────────────────── */
.fx-redesign {
    background: var(--fx-bg);
    color: var(--fx-text);
    font-family: var(--fx-font-body);
    font-size: var(--fx-fs-base);
    line-height: var(--fx-lh-body);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.fx-redesign a {
    color: var(--fx-accent);
    text-decoration: none;
    transition: color var(--fx-dur-fast) var(--fx-ease-out);
}
.fx-redesign a:hover { color: var(--fx-accent-hover); }

.fx-redesign h1,
.fx-redesign h2,
.fx-redesign h3,
.fx-redesign h4,
.fx-redesign h5 {
    font-family: var(--fx-font-display);
    letter-spacing: var(--fx-tracking-tight);
    line-height: var(--fx-lh-tight);
    color: var(--fx-text);
    font-weight: 700;
    margin: 0;
}

.fx-redesign img,
.fx-redesign picture { max-width: 100%; height: auto; display: block; }

/* ── Buttons ──────────────────────────────────────────────── */
.fx-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 48px;
    padding: 0 24px;
    border-radius: var(--fx-radius-pill);
    font-family: var(--fx-font-display);
    font-weight: 700;
    font-size: 0.9375rem;
    line-height: 1;
    letter-spacing: 0.01em;
    cursor: pointer;
    border: 1px solid transparent;
    text-decoration: none;
    isolation: isolate;
    overflow: hidden;
    transition:
        transform var(--fx-dur-fast) var(--fx-ease-out),
        background var(--fx-dur-base) var(--fx-ease-out),
        border-color var(--fx-dur-base) var(--fx-ease-out),
        box-shadow var(--fx-dur-base) var(--fx-ease-out),
        color var(--fx-dur-base) var(--fx-ease-out);
}
.fx-btn:hover { transform: translateY(-2px); }
.fx-btn:active { transform: translateY(0); }
.fx-btn:focus-visible {
    outline: 2px solid var(--fx-green-400);
    outline-offset: 3px;
}

/* Primary — deep emerald with bright white text (overrides theme anchor colors) */
.fx-btn.fx-btn--primary,
a.fx-btn.fx-btn--primary,
a.fx-btn.fx-btn--primary:link,
a.fx-btn.fx-btn--primary:visited {
    background: linear-gradient(180deg, #00C085 0%, #008055 100%);
    color: #FFFFFF;
    font-weight: 800;
    letter-spacing: 0.015em;
    border-color: rgba(0, 160, 110, 0.95);
    text-shadow: 0 1px 2px rgba(0, 60, 36, 0.55);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.22) inset,
        0 -1px 0 rgba(0, 0, 0, 0.22) inset,
        0 10px 28px -10px rgba(0, 192, 133, 0.7),
        0 2px 6px -1px rgba(0, 0, 0, 0.35);
}
.fx-btn.fx-btn--primary:hover,
a.fx-btn.fx-btn--primary:hover {
    background: linear-gradient(180deg, #00D492 0%, #009268 100%);
    color: #FFFFFF;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.28) inset,
        0 -1px 0 rgba(0, 0, 0, 0.22) inset,
        0 14px 36px -8px rgba(0, 212, 146, 0.85),
        0 2px 6px -1px rgba(0, 0, 0, 0.35);
}

/* Ghost — glassy, high-contrast white text, clear border */
.fx-btn.fx-btn--ghost,
a.fx-btn.fx-btn--ghost,
a.fx-btn.fx-btn--ghost:link,
a.fx-btn.fx-btn--ghost:visited {
    background: rgba(255, 255, 255, 0.04);
    color: #FFFFFF;
    font-weight: 700;
    border-color: rgba(255, 255, 255, 0.28);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05) inset;
}
.fx-btn.fx-btn--ghost:hover,
a.fx-btn.fx-btn--ghost:hover {
    background: rgba(0, 212, 146, 0.12);
    color: #FFFFFF;
    border-color: var(--fx-green-400);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.08) inset,
        0 0 0 1px rgba(0, 212, 146, 0.4),
        0 8px 24px -10px rgba(0, 212, 146, 0.5);
}

/* Gold — premium highlight, dark text for contrast */
.fx-btn.fx-btn--gold,
a.fx-btn.fx-btn--gold,
a.fx-btn.fx-btn--gold:link,
a.fx-btn.fx-btn--gold:visited {
    background: linear-gradient(180deg, #FFD247 0%, #D99A00 100%);
    color: #1A1200;
    font-weight: 800;
    border-color: rgba(190, 135, 0, 0.95);
    text-shadow: 0 1px 0 rgba(255, 220, 130, 0.45);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.4) inset,
        0 -1px 0 rgba(0, 0, 0, 0.22) inset,
        0 10px 28px -10px rgba(245, 183, 0, 0.7),
        0 2px 6px -1px rgba(0, 0, 0, 0.35);
}
.fx-btn.fx-btn--gold:hover,
a.fx-btn.fx-btn--gold:hover {
    background: linear-gradient(180deg, #FFE066 0%, #F5B700 100%);
    color: #1A1200;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.45) inset,
        0 -1px 0 rgba(0, 0, 0, 0.22) inset,
        0 14px 36px -8px rgba(245, 183, 0, 0.8),
        0 2px 6px -1px rgba(0, 0, 0, 0.35);
}

/* Small variant — for dense areas like odds cards */
.fx-btn--sm {
    min-height: 38px;
    padding: 0 16px;
    font-size: 0.8125rem;
}

/* ── Cards ────────────────────────────────────────────────── */
.fx-card {
    background: var(--fx-bg-raised);
    border: 1px solid var(--fx-border);
    border-radius: var(--fx-radius-lg);
    padding: var(--fx-sp-6);
    transition:
        transform var(--fx-dur-base) var(--fx-ease-out),
        border-color var(--fx-dur-base) var(--fx-ease-out),
        box-shadow var(--fx-dur-base) var(--fx-ease-out);
}
.fx-card:hover {
    transform: translateY(-4px);
    border-color: var(--fx-border-strong);
    box-shadow: var(--fx-shadow-md);
}
.fx-card--glow:hover {
    border-color: var(--fx-accent);
    box-shadow: var(--fx-glow-green);
}

/* ── Sections ─────────────────────────────────────────────── */
.fx-section {
    padding-block: var(--fx-sp-16);
    position: relative;
}
.fx-section--lg { padding-block: var(--fx-sp-20); }
.fx-section--sm { padding-block: var(--fx-sp-12); }

@media (max-width: 768px) {
    .fx-section        { padding-block: var(--fx-sp-12); }
    .fx-section--lg    { padding-block: var(--fx-sp-16); }
    .fx-section--sm    { padding-block: var(--fx-sp-10); }
}

.fx-section__head {
    display: flex;
    flex-direction: column;
    gap: var(--fx-sp-3);
    margin-block-end: var(--fx-sp-8);
    max-width: 720px;
}
.fx-section__head--center { align-items: center; text-align: center; margin-inline: auto; }
.fx-section__title { font-size: var(--fx-fs-3xl); margin: 0; }
.fx-section__desc { color: var(--fx-text-muted); font-size: var(--fx-fs-md); margin: 0; }

/* ── Grids (opinionated column counts with responsive steps) ─ */
.fx-grid { display: grid; gap: var(--fx-sp-6); }
.fx-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fx-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fx-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 1100px) {
    .fx-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
    .fx-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .fx-grid--2,
    .fx-grid--3,
    .fx-grid--4 { grid-template-columns: minmax(0, 1fr); }
}

/* ── Reveal (IntersectionObserver-driven) ─────────────────── */
.fx-motion-on [data-fx="fade-up"] {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity .7s cubic-bezier(.2,.8,.2,1), transform .7s cubic-bezier(.2,.8,.2,1);
    will-change: opacity, transform;
}
.fx-motion-on [data-fx="fade-up"].fx-in-view {
    opacity: 1;
    transform: none;
}

.fx-motion-on [data-fx="stagger"] > * {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity .6s cubic-bezier(.2,.8,.2,1), transform .6s cubic-bezier(.2,.8,.2,1);
    transition-delay: calc(var(--fx-stagger-i, 0) * 80ms);
    will-change: opacity, transform;
}
.fx-motion-on [data-fx="stagger"].fx-in-view > * {
    opacity: 1;
    transform: none;
}

.fx-motion-off [data-fx="fade-up"],
.fx-motion-off [data-fx="stagger"] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
}
