/* =============================================================================
   AYAL TOURS AND TRAVEL — DESIGN TOKENS & GLOBAL BASE STYLES
   Built by Vanquish Brand Design | vanquish.co.ke
   
   HOW TO USE THIS FILE
   ─────────────────────────────────────────────────────────────────────────────
   Enqueue via functions.php as the first stylesheet — before any template CSS.
   All component/template files inherit these tokens via CSS custom properties.
   Never hardcode colours or fonts in component files; always use var(--token).
   ============================================================================= */


/* =============================================================================
   1. GOOGLE FONTS IMPORT
   ============================================================================= */

@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400;1,9..40,500&family=Literata:ital,opsz,wght@0,7..72,300;0,7..72,400;0,7..72,500;0,7..72,600;1,7..72,300;1,7..72,400;1,7..72,500&display=swap');


/* =============================================================================
   2. DESIGN TOKENS
   ============================================================================= */

:root {

    /* ── Colour: Brand ───────────────────────────────────────────────────────── */
    --ayal-green:           #4B5D3A;   /* Army Green — primary brand */
    --ayal-green-deep:      #343F28;   /* Deeper green for hover, dark accents */
    --ayal-green-hover:     #3D4D2F;   /* Mid hover state */
    --ayal-green-muted:     rgba(75, 93, 58, 0.08);   /* Tinted section bg */
    --ayal-green-border:    rgba(75, 93, 58, 0.18);   /* Subtle green borders */
    --ayal-green-light:     #C8D5B9;   /* Light sage — icon backgrounds, tags */

    --ayal-sand:            #D8C7A1;   /* Sand Beige — secondary accent */
    --ayal-sand-light:      #EDE6D3;   /* Lighter beige for section backgrounds */
    --ayal-sand-muted:      rgba(216, 199, 161, 0.30); /* Tinted overlays */
    --ayal-sand-border:     rgba(216, 199, 161, 0.50); /* Dividers on dark bg */

    /* ── Colour: Neutrals ────────────────────────────────────────────────────── */
    --ayal-charcoal:        #1F1F1F;   /* Primary text */
    --ayal-charcoal-2:      #3A3A3A;   /* Secondary text */
    --ayal-charcoal-3:      #6B6B6B;   /* Muted text, captions, placeholders */
    --ayal-charcoal-4:      #9A9A9A;   /* Disabled states, metadata */

    --ayal-ivory:           #F7F5EF;   /* Primary page background */
    --ayal-ivory-2:         #EDE9DF;   /* Alternating section background */
    --ayal-ivory-3:         #E5E0D4;   /* Deeper ivory — borders, dividers */
    --ayal-white:           #FFFFFF;

    /* ── Colour: Overlays & UI ───────────────────────────────────────────────── */
    --ayal-overlay-dark:    rgba(10, 14, 8, 0.52);    /* Hero image overlay */
    --ayal-overlay-deeper:  rgba(10, 14, 8, 0.72);    /* CTA section overlay */
    --ayal-overlay-subtle:  rgba(10, 14, 8, 0.28);    /* Card hover overlay */
    --ayal-border:          #E0D9CC;                   /* Default UI border */
    --ayal-border-light:    #EDEAE3;                   /* Lighter divider */

    /* ── Colour: Status ──────────────────────────────────────────────────────── */
    --ayal-success:         #3A6B47;
    --ayal-error:           #8B2E2E;
    --ayal-warning:         #8B6B2E;

    /* ── Typography: Families ────────────────────────────────────────────────── */
    --font-heading:         'Literata', Georgia, serif;
    --font-body:            'DM Sans', 'Helvetica Neue', Arial, sans-serif;

    /* ── Typography: Scale (fluid) ───────────────────────────────────────────── */
    --text-hero:            clamp(44px, 7.5vw, 55px);  /* Hero headline */
    --text-display:         clamp(34px, 4.5vw, 56px);  /* Section centrepieces */
    --text-h1:              clamp(28px, 3.5vw, 44px);  /* Page H1 */
    --text-h2:              clamp(24px, 2.8vw, 33px);  /* Section titles */
    --text-h3:              clamp(18px, 2vw, 26px);    /* Card titles, sub-heads */
    --text-h4:              clamp(15px, 1.4vw, 20px);  /* Labels, tight headings */
    --text-body-lg:         17px;                       /* Lead paragraphs */
    --text-body:            15px;                       /* Default body */
    --text-body-sm:         14px;                       /* Secondary body */
    --text-caption:         13px;                       /* Captions, metadata */
    --text-eyebrow:         10px;                       /* Uppercase eyebrow labels */
    --text-micro:           11px;                       /* Fine print, legal */

    /* ── Typography: Weight ──────────────────────────────────────────────────── */
    --weight-light:         300;
    --weight-regular:       400;
    --weight-medium:        500;
    --weight-semibold:      600;
    --weight-bold:          700;

    /* ── Typography: Line Height ─────────────────────────────────────────────── */
    --leading-tight:        1.1;
    --leading-snug:         1.3;
    --leading-normal:       1.5;
    --leading-relaxed:      1.7;
    --leading-loose:        1.85;

    /* ── Typography: Letter Spacing ──────────────────────────────────────────── */
    --tracking-tight:      -0.02em;
    --tracking-normal:      0em;
    --tracking-wide:        0.04em;
    --tracking-wider:       0.10em;
    --tracking-widest:      0.22em;   /* Eyebrow labels */

    /* ── Spacing ─────────────────────────────────────────────────────────────── */
    --space-2:              2px;
    --space-4:              4px;
    --space-8:              8px;
    --space-12:             12px;
    --space-16:             16px;
    --space-20:             20px;
    --space-24:             24px;
    --space-32:             32px;
    --space-40:             40px;
    --space-48:             48px;
    --space-56:             56px;
    --space-64:             64px;
    --space-80:             80px;
    --space-96:             96px;
    --space-120:            120px;
    --space-160:            160px;

    /* ── Section Padding (responsive via clamp) ──────────────────────────────── */
    --section-pad-y:        clamp(72px, 10vw, 128px);
    --section-pad-x:        clamp(20px, 5vw, 80px);

    /* ── Layout ──────────────────────────────────────────────────────────────── */
    --container-max:        1280px;
    --container-narrow:     860px;
    --container-wide:       1480px;
    --grid-gap:             clamp(20px, 2.5vw, 40px);

    /* ── Borders & Radius ────────────────────────────────────────────────────── */
    --radius-none:          0px;
    --radius-sm:            2px;
    --radius-md:            4px;
    --radius-lg:            8px;
    --radius-pill:          999px;

    /* ── Shadows ─────────────────────────────────────────────────────────────── */
    --shadow-sm:            0 1px 4px rgba(31, 31, 31, 0.06);
    --shadow-md:            0 4px 16px rgba(31, 31, 31, 0.08);
    --shadow-lg:            0 12px 40px rgba(31, 31, 31, 0.10);
    --shadow-xl:            0 24px 64px rgba(31, 31, 31, 0.12);
    --shadow-green:         0 8px 28px rgba(75, 93, 58, 0.18);
    --shadow-green-lg:      0 16px 48px rgba(75, 93, 58, 0.22);

    /* ── Motion ──────────────────────────────────────────────────────────────── */
    --ease:                 cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --ease-out:             cubic-bezier(0.0, 0.0, 0.2, 1.0);
    --ease-in-out:          cubic-bezier(0.42, 0, 0.58, 1.0);
    --duration-fast:        180ms;
    --duration-base:        300ms;
    --duration-slow:        500ms;
    --duration-slower:      800ms;

    /* ── Z-Index ─────────────────────────────────────────────────────────────── */
    --z-base:               1;
    --z-above:              10;
    --z-nav:                100;
    --z-sticky:             200;
    --z-modal:              900;
    --z-toast:              1000;

}


/* =============================================================================
   3. RESET & BASE
   ============================================================================= */

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

html {
    font-size: 16px;
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    font-family: var(--font-body);
    font-size: var(--text-body);
    font-weight: var(--weight-regular);
    line-height: var(--leading-relaxed);
    color: var(--ayal-charcoal);
    background-color: var(--ayal-ivory);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

img,
video {
    display: block;
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color var(--duration-base) var(--ease);
}

ul,
ol {
    list-style: none;
}

button {
    cursor: pointer;
    border: none;
    background: none;
    font-family: inherit;
}

input,
textarea,
select {
    font-family: var(--font-body);
    font-size: var(--text-body);
    color: var(--ayal-charcoal);
}

/* Remove animations for reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}


/* =============================================================================
   4. TYPOGRAPHY BASE
   ============================================================================= */

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: var(--weight-regular);
    line-height: var(--leading-snug);
    color: var(--ayal-charcoal);
    letter-spacing: var(--tracking-tight);
}

h1 { font-size: var(--text-h1); }
h2 { font-size: var(--text-h2); }
h3 { font-size: var(--text-h3); }
h4 { font-size: var(--text-h4); font-weight: var(--weight-medium); }

p {
    font-family: var(--font-body);
    font-size: var(--text-body);
    line-height: var(--leading-loose);
    color: var(--ayal-charcoal-2);
    margin-bottom: var(--space-20);
}

p:last-child {
    margin-bottom: 0;
}

strong, b {
    font-weight: var(--weight-bold);
    color: var(--ayal-charcoal);
}

em, i {
    font-style: italic;
}

blockquote {
    font-family: var(--font-heading);
    font-size: var(--text-h3);
    font-weight: var(--weight-light);
    font-style: italic;
    line-height: var(--leading-relaxed);
    color: var(--ayal-charcoal-2);
    border-left: 2px solid var(--ayal-sand);
    padding-left: var(--space-32);
    margin: var(--space-40) 0;
}


/* =============================================================================
   5. GLOBAL UTILITY CLASSES
   ============================================================================= */

/* ── Layout ── */
.ayal-container {
    width: 100%;
    max-width: var(--container-max);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--section-pad-x);
    padding-right: var(--section-pad-x);
}

.ayal-container--narrow {
    max-width: var(--container-narrow);
}

.ayal-container--wide {
    max-width: var(--container-wide);
}

.ayal-section {
    padding-top: var(--section-pad-y);
    padding-bottom: var(--section-pad-y);
}

.ayal-section--ivory     { background-color: var(--ayal-ivory); }
.ayal-section--ivory-2   { background-color: var(--ayal-ivory-2); }
.ayal-section--white     { background-color: var(--ayal-white); }
.ayal-section--green     { background-color: var(--ayal-green); }
.ayal-section--charcoal  { background-color: var(--ayal-charcoal); }

/* ── Eyebrow / Overline ── */
.ayal-eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: var(--text-eyebrow);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-widest);
    text-transform: uppercase;
    color: var(--ayal-green);
    margin-bottom: var(--space-12);
}

.ayal-eyebrow--sand {
    color: var(--ayal-sand);
}

.ayal-eyebrow--muted {
    color: var(--ayal-charcoal-3);
}

/* ── Section Header Block ── */
.ayal-section-header {
    margin-bottom: clamp(40px, 6vw, 72px);
}

.ayal-section-header--center {
    text-align: center;
    max-width: var(--container-narrow);
    margin-left: auto;
    margin-right: auto;
    margin-bottom: clamp(40px, 6vw, 72px);
}

.ayal-section-title {
    font-family: var(--font-heading);
    font-size: var(--text-h2);
    font-weight: var(--weight-regular);
    color: var(--ayal-charcoal);
    letter-spacing: var(--tracking-tight);
    line-height: var(--leading-snug);
    margin-bottom: var(--space-20);
}

.ayal-section-title--light {
    color: var(--ayal-white);
}

.ayal-section-intro {
    font-family: var(--font-body);
    font-size: var(--text-body-lg);
    line-height: var(--leading-loose);
    color: var(--ayal-charcoal-3);
    max-width: 680px;
}

.ayal-section-header--center .ayal-section-intro {
    margin-left: auto;
    margin-right: auto;
}

.ayal-section-intro--light {
    color: rgba(247, 245, 239, 0.78);
}

/* ── Divider ── */
.ayal-divider {
    width: 48px;
    height: 1px;
    background-color: var(--ayal-sand);
    margin: var(--space-24) 0;
}

.ayal-divider--center {
    margin-left: auto;
    margin-right: auto;
}

.ayal-divider--green {
    background-color: var(--ayal-green);
}


/* =============================================================================
   6. BUTTON SYSTEM
   ============================================================================= */

/* Base button reset */
.ayal-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-8);
    font-family: var(--font-body);
    font-size: var(--text-body-sm);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    border: none;
    transition:
        background-color var(--duration-base) var(--ease),
        color            var(--duration-base) var(--ease),
        border-color     var(--duration-base) var(--ease),
        transform        var(--duration-base) var(--ease),
        box-shadow       var(--duration-base) var(--ease);
    white-space: nowrap;
    -webkit-user-select: none;
    user-select: none;
}

/* Primary — solid army green */
.ayal-btn--primary {
    background-color: var(--ayal-green);
    color: var(--ayal-ivory);
    padding: 16px 36px;
    border: 2px solid var(--ayal-green);
}

.ayal-btn--primary:hover {
    background-color: var(--ayal-green-deep);
    border-color: var(--ayal-green-deep);
    color: var(--ayal-white);
    transform: translateY(-2px);
    box-shadow: var(--shadow-green);
}

/* Secondary — outlined green */
.ayal-btn--secondary {
    background-color: transparent;
    color: var(--ayal-green);
    padding: 14px 34px;
    border: 2px solid var(--ayal-green);
}

.ayal-btn--secondary:hover {
    background-color: var(--ayal-green);
    color: var(--ayal-ivory);
    transform: translateY(-2px);
    box-shadow: var(--shadow-green);
}

/* Ghost — for use on dark/image backgrounds */
.ayal-btn--ghost {
    background-color: transparent;
    color: var(--ayal-white);
    padding: 14px 34px;
    border: 1px solid rgba(247, 245, 239, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.ayal-btn--ghost:hover {
    background-color: rgba(247, 245, 239, 0.12);
    border-color: rgba(247, 245, 239, 0.80);
    color: var(--ayal-white);
    transform: translateY(-2px);
}

/* Sand — for alternating sections */
.ayal-btn--sand {
    background-color: var(--ayal-sand);
    color: var(--ayal-charcoal);
    padding: 14px 34px;
    border: 2px solid var(--ayal-sand);
}

.ayal-btn--sand:hover {
    background-color: var(--ayal-charcoal);
    border-color: var(--ayal-charcoal);
    color: var(--ayal-ivory);
    transform: translateY(-2px);
}

/* Glass — frosted "liquid glass" style for secondary CTAs sitting directly
   on bright or busy photography (e.g. the hero), where a plain text link
   loses contrast. Keeps the site's sharp corners; the glass comes from the
   blur + translucency + inset highlight, not from rounding. */
.ayal-btn--glass {
    background-color: rgba(255, 255, 255, 0.16);
    color: var(--ayal-white);
    padding: 14px 34px;
    border: 1px solid rgba(255, 255, 255, 0.42);
    backdrop-filter: blur(20px) saturate(180%);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.45),
        inset 0 0 0 1px rgba(255, 255, 255, 0.06),
        0 8px 24px rgba(10, 14, 8, 0.20);
}

.ayal-btn--glass:hover {
    background-color: rgba(255, 255, 255, 0.28);
    border-color: rgba(255, 255, 255, 0.65);
    color: var(--ayal-white);
    transform: translateY(-2px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.55),
        inset 0 0 0 1px rgba(255, 255, 255, 0.08),
        0 10px 28px rgba(10, 14, 8, 0.26);
}

/* Text link with arrow */
.ayal-btn--text {
    background: none;
    border: none;
    padding: 0;
    color: var(--ayal-green);
    font-size: var(--text-body-sm);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    gap: var(--space-8);
}

.ayal-btn--text::after {
    content: '→';
    display: inline-block;
    transition: transform var(--duration-base) var(--ease);
}

.ayal-btn--text:hover {
    color: var(--ayal-green-deep);
}

.ayal-btn--text:hover::after {
    transform: translateX(5px);
}

.ayal-btn--text--light {
    color: var(--ayal-sand);
}

.ayal-btn--text--light:hover {
    color: var(--ayal-white);
}

/* Size modifier — large */
.ayal-btn--lg {
    font-size: var(--text-body);
    padding: 18px 44px;
}

/* Icon reveal — icon is collapsed to width:0 and slides/fades in on hover.
   Pair the .ayal-btn-icon modifier with any .ayal-btn variant. Different
   buttons use different icons (paper-plane, compass, arrow, camera, map-pin)
   depending on the action — see ayal_btn_icon() in functions.php. */
.ayal-btn-icon {
    overflow: hidden;
}

.ayal-btn-icon .ayal-btn__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 0;
    opacity: 0;
    transform: translateX(-8px) rotate(-8deg) scale(0.6);
    overflow: hidden;
    transition:
        width     var(--duration-base) var(--ease),
        opacity   var(--duration-base) var(--ease),
        transform var(--duration-base) var(--ease),
        margin-left var(--duration-base) var(--ease);
}

.ayal-btn-icon:hover .ayal-btn__icon {
    width: 16px;
    opacity: 1;
    transform: translateX(0) rotate(0) scale(1);
    margin-left: 2px;
}

.ayal-btn-icon.ayal-btn--text .ayal-btn__icon {
    width: 0;
}

.ayal-btn-icon.ayal-btn--text:hover .ayal-btn__icon {
    width: 14px;
}

/* When the new SVG icon-reveal is used on a .ayal-btn--text element, drop
   the old CSS-generated "→" content so it doesn't double up. */
.ayal-btn-icon.ayal-btn--text::after {
    content: none;
}


/* =============================================================================
   7. FORM ELEMENTS
   ============================================================================= */

.ayal-field {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
}

.ayal-label {
    font-family: var(--font-body);
    font-size: var(--text-caption);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--ayal-charcoal-2);
}

.ayal-input,
.ayal-textarea,
.ayal-select {
    width: 100%;
    font-family: var(--font-body);
    font-size: var(--text-body);
    color: var(--ayal-charcoal);
    background-color: var(--ayal-white);
    border: 1px solid var(--ayal-border);
    padding: 14px 16px;
    border-radius: var(--radius-none);
    transition:
        border-color var(--duration-base) var(--ease),
        box-shadow   var(--duration-base) var(--ease);
    -webkit-appearance: none;
    appearance: none;
}

.ayal-input::placeholder,
.ayal-textarea::placeholder {
    color: var(--ayal-charcoal-4);
}

.ayal-input:focus,
.ayal-textarea:focus,
.ayal-select:focus {
    outline: none;
    border-color: var(--ayal-green);
    box-shadow: 0 0 0 3px var(--ayal-green-muted);
}

.ayal-textarea {
    min-height: 120px;
    resize: vertical;
    line-height: var(--leading-relaxed);
}

.ayal-select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236B6B6B' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    padding-right: 40px;
    cursor: pointer;
}


/* =============================================================================
   8. ANIMATION UTILITIES — CINEMATIC SCROLL SYSTEM
   ============================================================================= */

/* Fade + rise on scroll — applied via JS IntersectionObserver.
   Bolder than a subtle fade: larger travel distance, slight scale, and a
   longer, more deliberate easing curve for a theatrical feel. */
.ayal-reveal {
    opacity: 0;
    transform: translateY(52px) scale(0.98);
    transition:
        opacity   900ms var(--ease-out),
        transform 900ms var(--ease-out);
    will-change: opacity, transform;
}

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

/* Variant: rise + scale-in — for feature images, big photography moments */
.ayal-reveal--scale {
    opacity: 0;
    transform: scale(0.90);
    transition:
        opacity   1100ms var(--ease-out),
        transform 1100ms var(--ease-out);
    will-change: opacity, transform;
}

.ayal-reveal--scale.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* Variant: slide from left / right — for alternating content blocks */
.ayal-reveal--left {
    opacity: 0;
    transform: translateX(-64px);
    transition:
        opacity   900ms var(--ease-out),
        transform 900ms var(--ease-out);
}

.ayal-reveal--left.is-visible {
    opacity: 1;
    transform: translateX(0);
}

.ayal-reveal--right {
    opacity: 0;
    transform: translateX(64px);
    transition:
        opacity   900ms var(--ease-out),
        transform 900ms var(--ease-out);
}

.ayal-reveal--right.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* Variant: mask / curtain reveal — for big editorial headlines */
.ayal-reveal--mask {
    overflow: hidden;
}

.ayal-reveal--mask > * {
    display: inline-block;
    opacity: 0;
    transform: translateY(100%);
    transition:
        opacity   850ms var(--ease-out),
        transform 850ms var(--ease-out);
}

.ayal-reveal--mask.is-visible > * {
    opacity: 1;
    transform: translateY(0);
}

/* Staggered children — delay is assigned inline by JS per-child
   (element.style.transitionDelay), so groups of any length stagger
   correctly rather than being capped at a fixed nth-child count. */
.ayal-reveal-group > * {
    opacity: 0;
    transform: translateY(44px) scale(0.97);
    transition:
        opacity   800ms var(--ease-out),
        transform 800ms var(--ease-out);
    will-change: opacity, transform;
}

.ayal-reveal-group.is-visible > * {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* Parallax layer — JS applies a translateY based on scroll position.
   Element needs slight vertical overscan so the shifted image never
   reveals an edge; wrap the actual <img>/bg element and give the
   wrapper overflow:hidden. */
[data-parallax] {
    will-change: transform;
}

/* Respect reduced-motion preference: kill parallax and large-travel
   reveals, keep a simple fade so content still appears without motion. */
@media (prefers-reduced-motion: reduce) {

    .ayal-reveal,
    .ayal-reveal--scale,
    .ayal-reveal--left,
    .ayal-reveal--right,
    .ayal-reveal-group > * {
        transform: none !important;
        transition: opacity 400ms linear !important;
    }

    .ayal-reveal--mask > * {
        transform: none !important;
    }

    [data-parallax] {
        transform: none !important;
    }

    .ayal-hero-zoom::before {
        animation: none !important;
        transform: none !important;
    }

    .ayal-safari-hero__bg-img,
    .ayal-dest-hero__bg,
    .ayal-st-hero__bg {
        animation: none !important;
    }

    .ayal-btn-icon .ayal-btn__icon {
        transition: opacity 200ms linear !important;
        transform: none !important;
    }

}

/* Ken Burns hero image animation — for heroes with a real, separate
   background <img>/div layer (e.g. single-ayal-safari.php). Scale-based;
   safe to use transform here since nothing else animates it. */
@keyframes ayal-ken-burns {
    0%   { transform: scale(1.0); }
    100% { transform: scale(1.14); }
}

/* Applies the Ken Burns creep-in directly to a real, separate background
   <img>/div layer (as opposed to .ayal-hero-zoom, which is for heroes that
   set background-image inline on the section itself). Use this when the
   template already has a dedicated bg element as a sibling of its content
   — single-ayal-safari.php, single-ayal_destination.php, taxonomy-safari_type.php. */
.ayal-kenburns-img {
    animation: ayal-ken-burns 20s var(--ease-out) forwards;
    transform-origin: center;
}
.ayal-hero-zoom {
    position: relative;
    overflow: hidden;
}

.ayal-hero-zoom::before {
    content: '';
    position: absolute;
    inset: -24px;
    background-image: inherit;
    background-position: inherit;
    background-repeat: no-repeat;
    background-size: 100%;
    z-index: 0;
    animation: ayal-hero-zoom-bg 20s var(--ease-out) forwards;
    transform: translateY(var(--ayal-parallax-y, 0px));
}

.ayal-hero-zoom > * {
    position: relative;
    z-index: 1;
}

@keyframes ayal-hero-zoom-bg {
    0%   { background-size: 100%; }
    100% { background-size: 118%; }
}

/* Hero content fade in */
@keyframes ayal-fade-up {
    from { opacity: 0; transform: translateY(28px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Scroll indicator bob */
@keyframes ayal-bob {
    0%, 100% { transform: translateX(-50%) translateY(0); }
    50%       { transform: translateX(-50%) translateY(6px); }
}


/* =============================================================================
   9. GLOBAL COMPONENT PATTERNS
   ============================================================================= */

/* ── Image fill utility ── */
.ayal-img-fill {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* ── Overlay patterns ── */
.ayal-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.ayal-overlay--hero {
    background: linear-gradient(
        to bottom,
        rgba(10, 14, 8, 0.22) 0%,
        rgba(10, 14, 8, 0.48) 55%,
        rgba(10, 14, 8, 0.72) 100%
    );
}

.ayal-overlay--card {
    background: linear-gradient(
        to top,
        rgba(10, 14, 8, 0.80) 0%,
        rgba(10, 14, 8, 0.20) 55%,
        rgba(10, 14, 8, 0.00) 100%
    );
}

.ayal-overlay--cta {
    background: linear-gradient(
        to bottom,
        rgba(10, 14, 8, 0.45) 0%,
        rgba(10, 14, 8, 0.70) 100%
    );
}

/* ── Badge / Tag ── */
.ayal-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-4);
    font-family: var(--font-body);
    font-size: var(--text-eyebrow);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-widest);
    text-transform: uppercase;
    padding: 6px 14px;
    background-color: var(--ayal-green);
    color: var(--ayal-ivory);
}

.ayal-badge--sand {
    background-color: var(--ayal-sand);
    color: var(--ayal-charcoal);
}

.ayal-badge--outline {
    background-color: transparent;
    color: var(--ayal-green);
    border: 1px solid var(--ayal-green-border);
}


/* =============================================================================
   10. RESPONSIVE BREAKPOINTS
   ============================================================================= */

/*
   Breakpoint reference (use in component files as needed):
   ─────────────────────────────────────────────────────────
   Mobile portrait:  < 480px
   Mobile landscape: 480px – 767px
   Tablet:           768px – 1023px
   Desktop:          1024px – 1279px
   Wide:             1280px+
   Ultra-wide:       1600px+

   Usage:
   @media (max-width: 767px)  { ... }   ← mobile
   @media (max-width: 1023px) { ... }   ← tablet and below
   @media (min-width: 1280px) { ... }   ← wide desktop up

   All component files should reference these breakpoints consistently.
*/

@media (max-width: 767px) {

    .ayal-section-header--center .ayal-section-intro {
        font-size: var(--text-body);
    }

    .ayal-btn--primary,
    .ayal-btn--secondary,
    .ayal-btn--ghost {
        padding: 14px 28px;
        width: 100%;
        justify-content: center;
    }

    .ayal-btn--lg {
        padding: 16px 28px;
    }

}


/* =============================================================================
   END OF FILE — ayal-tokens.css
   Next file: ayal-homepage.css / page-homepage.php
   ============================================================================= */
