/**
 * Timeline Block — Static Styles.
 *
 * Static CSS cached by browser. Dynamic CSS (preset, color scheme) inline.
 * BEM: boost-timeline, --style-{dots|cards|bordered}, --layout-{vertical|alternating|horizontal|compact}
 *
 * Features: 4 layouts, 3 styles, per-item icons/images/links/accent, connector animation.
 *
 * @package Boost Theme Framework
 * @since 3.6.0
 */

/* /blocks/timeline/style.css */

/* =============================================================================
   BASE
   ============================================================================= */

.boost-timeline {
    position: relative;
    padding: 3rem 2rem;
    background: var(--boost-bg);
    container-type: inline-size;
}

.boost-timeline__container {
    margin: 0 auto;
    padding: 0 1rem;
}

/* =============================================================================
   TRACK (wrapper for connector + items)
   ============================================================================= */

.boost-timeline__track {
    position: relative;
    margin-top: 3rem;
}

/* =============================================================================
   CONNECTOR LINE
   ============================================================================= */

.boost-timeline__connector {
    position: absolute;
    background: var(--boost-border, #e5e7eb);
}

/* Vertical / Alternating / Compact: vertical line */
.boost-timeline--layout-vertical .boost-timeline__connector,
.boost-timeline--layout-compact .boost-timeline__connector {
    left: 0;
    top: 0;
    bottom: 0;
    width: 2px;
}

.boost-timeline--layout-alternating .boost-timeline__connector {
    left: 50%;
    top: 0;
    bottom: 0;
    width: 2px;
    transform: translateX(-50%);
}

/* Horizontal: horizontal line */
.boost-timeline--layout-horizontal .boost-timeline__connector {
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
}

/* Connector fill (animated) */
.boost-timeline__connector-fill {
    background: var(--boost-accent, var(--boost-primary, #3b82f6));
    width: 100%;
    height: 0;
    transition: height 0.1s linear;
    border-radius: 2px;
}

.boost-timeline--layout-horizontal .boost-timeline__connector-fill {
    height: 100%;
    width: 0;
    transition: width 0.1s linear;
}

/* =============================================================================
   VERTICAL LAYOUT (items stacked, line on left)
   ============================================================================= */

.boost-timeline--layout-vertical .boost-timeline__track {
    padding-left: 2.5rem;
}

.boost-timeline--layout-vertical .boost-timeline__item {
    position: relative;
    padding-bottom: 2.5rem;
}

.boost-timeline--layout-vertical .boost-timeline__item:last-child {
    padding-bottom: 0;
}

/* =============================================================================
   ALTERNATING LAYOUT (items zigzag left/right)
   ============================================================================= */

/* =============================================================================
   CENTER LAYOUT (single column centered, line in center)
   ============================================================================= */

.boost-timeline--layout-center .boost-timeline__connector {
    left: 0;
    top: 0;
    bottom: 0;
    width: 2px;
}

.boost-timeline--layout-center .boost-timeline__track {
    max-width: 700px;
    margin: 0 auto;
    padding-left: 3rem;
}

.boost-timeline--layout-center .boost-timeline__item {
    position: relative;
    padding-bottom: 2.5rem;
}

.boost-timeline--layout-center .boost-timeline__item:last-child {
    padding-bottom: 0;
}

.boost-timeline--layout-center .boost-timeline__dot {
    left: -3rem;
    top: 4px;
    transform: translateX(-50%);
}

/* =============================================================================
   RIGHT LAYOUT (items stacked, line on right)
   ============================================================================= */

.boost-timeline--layout-right .boost-timeline__connector {
    right: 0;
    left: auto;
    top: 0;
    bottom: 0;
    width: 2px;
}

.boost-timeline--layout-right .boost-timeline__track {
    padding-right: 2.5rem;
    text-align: right;
}

.boost-timeline--layout-right .boost-timeline__item {
    position: relative;
    padding-bottom: 2.5rem;
}

.boost-timeline--layout-right .boost-timeline__item:last-child {
    padding-bottom: 0;
}

.boost-timeline--layout-right .boost-timeline__dot {
    right: -2.5rem;
    left: auto;
    top: 4px;
    transform: translateX(50%);
}

.boost-timeline--layout-right .boost-timeline__icon {
    margin-left: auto;
}

/* =============================================================================
   ALTERNATING LAYOUT (items zigzag left/right) — original
   ============================================================================= */

.boost-timeline--layout-alternating .boost-timeline__item {
    position: relative;
    width: 50%;
    padding-bottom: 3rem;
}

.boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd) {
    margin-left: auto;
    padding-left: 2.5rem;
    text-align: left;
}

.boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) {
    padding-right: 2.5rem;
    text-align: right;
}

.boost-timeline--layout-alternating .boost-timeline__item:last-child {
    padding-bottom: 0;
}

/* =============================================================================
   HORIZONTAL LAYOUT (items in a row, scrollable)
   ============================================================================= */

.boost-timeline--layout-horizontal .boost-timeline__container {
    overflow-x: auto;
    scrollbar-width: thin;
}

.boost-timeline--layout-horizontal .boost-timeline__track {
    display: flex;
    gap: 2rem;
    padding-top: 2.5rem;
    padding-bottom: 1rem;
    min-width: max-content;
}

.boost-timeline--layout-horizontal .boost-timeline__item {
    flex: 0 0 280px;
    position: relative;
}

/* =============================================================================
   COMPACT LAYOUT (minimal, no cards, inline)
   ============================================================================= */

.boost-timeline--layout-compact .boost-timeline__track {
    padding-left: 2rem;
}

.boost-timeline--layout-compact .boost-timeline__item {
    position: relative;
    padding-bottom: 1.5rem;
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.boost-timeline--layout-compact .boost-timeline__item:last-child {
    padding-bottom: 0;
}

.boost-timeline--layout-compact .boost-timeline__date {
    flex-shrink: 0;
    min-width: 80px;
}

.boost-timeline--layout-compact .boost-timeline__card {
    background: none !important;
    border: none !important;
    padding: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
}

.boost-timeline--layout-compact .boost-timeline__card-title {
    font-size: 1rem;
    margin-bottom: 0.25rem;
}

.boost-timeline--layout-compact .boost-timeline__card-text {
    font-size: 0.875rem;
}

/* =============================================================================
   DOT MARKER
   ============================================================================= */

.boost-timeline__dot {
    position: absolute;
    width: 14px;
    height: 14px;
    background: var(--boost-accent, var(--boost-primary, #3b82f6));
    border-radius: 50%;
    border: 3px solid var(--boost-bg, #fff);
    box-shadow: 0 0 0 3px var(--boost-accent, var(--boost-primary, #3b82f6));
    z-index: 1;
}

/* Vertical / Compact: dot on the left line */
.boost-timeline--layout-vertical .boost-timeline__dot,
.boost-timeline--layout-compact .boost-timeline__dot {
    left: -2.5rem;
    top: 4px;
    transform: translateX(-50%);
}

.boost-timeline--layout-compact .boost-timeline__dot {
    left: -2rem;
}

/* Alternating: dot on center line */
.boost-timeline--layout-alternating .boost-timeline__dot {
    top: 4px;
}

.boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd) .boost-timeline__dot {
    left: -2.5rem;
    transform: translateX(-50%);
}

.boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__dot {
    right: -2.5rem;
    left: auto;
    transform: translateX(50%);
}

/* Horizontal: dot on top line */
.boost-timeline--layout-horizontal .boost-timeline__dot {
    top: -2.5rem;
    left: 0;
    transform: translateY(-50%);
}

/* =============================================================================
   DATE LABEL
   ============================================================================= */

.boost-timeline__date {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--boost-accent, var(--boost-primary, #3b82f6));
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 0.5rem;
}

/* =============================================================================
   CARD (item content wrapper)
   ============================================================================= */

.boost-timeline__card {
    position: relative;
}

/* Cards style */
.boost-timeline--style-cards .boost-timeline__card {
    background: var(--boost-card-bg, var(--boost-bg-alt, #f9fafb));
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.06);
}

/* Bordered style */
.boost-timeline--style-bordered .boost-timeline__card {
    border: 1px solid var(--boost-border, #e5e7eb);
    border-radius: 12px;
    padding: 1.5rem;
}

/* =============================================================================
   CARD CONTENT
   ============================================================================= */

.boost-timeline__card-image {
    margin-bottom: 1rem;
    border-radius: 8px;
    overflow: hidden;
}

.boost-timeline__card-image img {
    width: 100%;
    height: auto;
    display: block;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.boost-timeline__icon {
    margin-bottom: 0.75rem;
}

/* Alternating even items: align icon to the right */
.boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__icon {
    margin-left: auto;
}

.boost-timeline__icon--fallback {
    width: 40px;
    height: 40px;
    background: var(--boost-icon-bg, rgba(59, 130, 246, 0.1));
    color: var(--boost-icon-color, var(--boost-accent, #3b82f6));
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.boost-timeline__card-title {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--boost-heading, var(--boost-text));
    margin: 0 0 0.5rem;
    line-height: 1.3;
}

.boost-timeline__card-text {
    font-size: 0.95rem;
    color: var(--boost-text-muted, var(--boost-text-muted));
    line-height: 1.65;
    margin: 0;
}

.boost-timeline__card-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--boost-accent, var(--boost-primary, #3b82f6));
    text-decoration: none;
    margin-top: 0.75rem;
    transition: gap 0.2s;
}

.boost-timeline__card-link:hover {
    gap: 0.6rem;
}


/* Section body text (below header). */
.boost-timeline__text {
    text-align: center;
    font-size: 1.05rem;
    color: var(--boost-text-muted, #64748b);
    line-height: 1.7;
    max-width: var(--boost-container-narrow, 700px);
    margin: -0.5rem auto 2rem;
}

/* =============================================================================
   CONTAINER QUERIES — respond to actual container width, not viewport.
   Allows correct layout when block is inside narrow/sidebar layouts.
   container-type is set on .boost-timeline (section) to avoid clipping dots.
   ============================================================================= */

@container (max-width: 768px) {
    /* Alternating → vertical in narrow container */
    .boost-timeline--layout-alternating .boost-timeline__connector {
        left: 0;
        transform: none;
    }

    .boost-timeline--layout-alternating .boost-timeline__item {
        width: 100%;
        padding-left: 3rem;
        padding-right: 0;
        text-align: left;
    }

    .boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd),
    .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) {
        margin-left: 0;
        padding-left: 3rem;
        padding-right: 0;
        text-align: left;
    }

    .boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd) .boost-timeline__dot,
    .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__dot {
        left: -1px;
        right: auto;
        transform: translateX(-50%);
    }

    .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__icon {
        margin-left: 0;
    }

    /* Center → vertical-left in narrow container */
    .boost-timeline--layout-center .boost-timeline__connector {
        left: 0;
        transform: none;
    }

    .boost-timeline--layout-center .boost-timeline__track {
        max-width: none;
        padding-left: 3rem;
    }

    .boost-timeline--layout-center .boost-timeline__dot {
        left: -3rem;
        transform: translateX(-50%);
    }

    /* Right → vertical-left in narrow container */
    .boost-timeline--layout-right .boost-timeline__connector {
        right: auto;
        left: 0;
    }

    .boost-timeline--layout-right .boost-timeline__track {
        padding-right: 0;
        padding-left: 3rem;
        text-align: left;
    }

    .boost-timeline--layout-right .boost-timeline__dot {
        right: auto;
        left: -1px;
        transform: translateX(-50%);
    }

    .boost-timeline--layout-right .boost-timeline__icon {
        margin-left: 0;
    }

    /* Horizontal → vertical in narrow container */
    .boost-timeline--layout-horizontal .boost-timeline__container {
        overflow-x: visible;
    }

    .boost-timeline--layout-horizontal .boost-timeline__track {
        flex-direction: column;
        min-width: 0;
        padding-top: 0;
        padding-left: 3rem;
        gap: 0;
    }

    .boost-timeline--layout-horizontal .boost-timeline__connector {
        width: 2px;
        height: 100%;
        left: 0;
        top: 0;
        right: auto;
    }

    .boost-timeline--layout-horizontal .boost-timeline__item {
        flex: none;
        padding-bottom: 2.5rem;
    }

    .boost-timeline--layout-horizontal .boost-timeline__dot {
        top: 4px;
        left: -3rem;
        transform: translateX(-50%);
    }

    /* Smaller dots */
    .boost-timeline__dot {
        width: 12px;
        height: 12px;
    }

    /* Card images: smaller ratio */
    .boost-timeline__card-image img {
        aspect-ratio: 3 / 2;
    }
}

/* =============================================================================
   VIEWPORT FALLBACK — for browsers without container query support (< 2%)
   ============================================================================= */

@supports not (container-type: inline-size) {
    @media (max-width: 768px) {
        .boost-timeline--layout-alternating .boost-timeline__connector {
            left: 0;
            transform: none;
        }

        .boost-timeline--layout-alternating .boost-timeline__item {
            width: 100%;
            padding-left: 3rem;
            padding-right: 0;
            text-align: left;
        }

        .boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd),
        .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) {
            margin-left: 0;
            padding-left: 3rem;
            padding-right: 0;
            text-align: left;
        }

        .boost-timeline--layout-alternating .boost-timeline__item:nth-child(odd) .boost-timeline__dot,
        .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__dot {
            left: -1px;
            right: auto;
            transform: translateX(-50%);
        }

        .boost-timeline--layout-alternating .boost-timeline__item:nth-child(even) .boost-timeline__icon {
            margin-left: 0;
        }

        .boost-timeline--layout-horizontal .boost-timeline__container {
            overflow-x: visible;
        }

        .boost-timeline--layout-horizontal .boost-timeline__track {
            flex-direction: column;
            min-width: 0;
            padding-top: 0;
            padding-left: 3rem;
            gap: 0;
        }

        .boost-timeline--layout-horizontal .boost-timeline__connector {
            width: 2px;
            height: 100%;
            left: 0;
            top: 0;
            right: auto;
        }

        .boost-timeline--layout-horizontal .boost-timeline__item {
            flex: none;
            padding-bottom: 2.5rem;
        }

        .boost-timeline--layout-horizontal .boost-timeline__dot {
            top: 4px;
            left: -3rem;
            transform: translateX(-50%);
        }

        .boost-timeline__dot {
            width: 12px;
            height: 12px;
        }

        .boost-timeline__card-image img {
            aspect-ratio: 3 / 2;
        }
    }
}