/* ========================================
   BROADCASTING PAGE - VistaFly

   Page-specific only. The hero, cards, feature row,
   point list, badges and CTA all come from
   components.css.
   ======================================== */

body {
    --scrim: 0.5;
}

.bg-poster {
    background-image: url('/images/herobg-poster.jpg');
    background-size: cover;
    background-position: center;
}

/* Unit suffix inside a hero spec value — smaller and dimmer
   so the number stays the thing you read. */
.spec-unit {
    font-size: 0.5em;
    font-weight: var(--weight-medium);
    letter-spacing: var(--track-wide);
    color: var(--bone-500);
    margin-inline-start: 0.15em;
}


/* ============================================================
   SIGNAL CHAIN
   Four numbered steps with a connecting rule between them.
   ============================================================ */
.chain {
    position: relative;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-5);
    max-width: var(--container);
    margin-inline: auto;
}

/* The through-line. Sits behind the icons, stops short at
   both ends so it reads as a path, not a border. */
.chain::before {
    content: '';
    position: absolute;
    top: 76px;
    left: 12.5%;
    right: 12.5%;
    height: 1px;
    background: linear-gradient(
        to right,
        transparent,
        var(--edge-bone) 8%,
        var(--edge-bone) 92%,
        transparent
    );
    z-index: 0;
}

.chain-step {
    position: relative;
    z-index: var(--z-base);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--space-5) var(--space-4);
}

.chain-index {
    font-family: var(--font-body);
    font-size: var(--fs-micro);
    font-weight: var(--weight-bold);
    font-variant-numeric: tabular-nums;
    letter-spacing: var(--track-micro);
    color: var(--text-faint);
    margin-block-end: var(--space-4);
}

.chain-icon {
    display: grid;
    place-items: center;
    width: 62px;
    height: 62px;
    border-radius: 50%;
    /* Opaque so the through-line passes behind, not through */
    background: var(--ground-300);
    border: 1px solid var(--edge-bone);
    color: var(--bone-300);
    font-size: var(--fs-xl);
    margin-block-end: var(--space-5);
    transition:
        background-color var(--dur-mid) var(--ease-out),
        border-color var(--dur-mid) var(--ease-out),
        transform var(--dur-mid) var(--ease-out);
}

.chain-step:hover .chain-icon {
    background: var(--fill-bone);
    border-color: var(--edge-bone-hot);
    transform: translateY(-3px);
}

.chain-title {
    font-family: var(--font-body);
    font-size: var(--fs-base);
    font-weight: var(--weight-semi);
    letter-spacing: var(--track-label);
    text-transform: uppercase;
    color: var(--text-hi);
    margin-block-end: var(--space-3);
}

.chain-body {
    font-size: var(--fs-sm);
    color: var(--text-lo);
    line-height: var(--leading-body);
    max-width: 32ch;
}

@media (max-width: 900px) {
    .chain {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--space-6);
    }

    .chain::before {
        display: none;
    }
}

@media (max-width: 520px) {
    .chain {
        grid-template-columns: minmax(0, 1fr);
    }

    .chain-step {
        flex-direction: row;
        align-items: flex-start;
        gap: var(--space-5);
        text-align: left;
        padding-inline: 0;
    }

    .chain-index {
        display: none;
    }

    .chain-icon {
        width: 48px;
        height: 48px;
        flex-shrink: 0;
        margin-block-end: 0;
        font-size: var(--fs-lg);
    }

    .chain-body {
        max-width: none;
    }
}


/* ============================================================
   ASSEMBLY ROW — sizing only
   The blend and reflection mask are shared; see .assembly in
   components.css.
   ============================================================ */

/* The exploded view carries a lot of vertical separation, so it
   needs more width than an even split gives it. Widen the row and
   weight it toward the visual. */
.scroll-scene .feature-row {
    max-width: var(--container-wide);
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
    gap: clamp(2rem, 5vw, 4.5rem);
}

@media (max-width: 900px) {
    .scroll-scene .feature-row {
        grid-template-columns: minmax(0, 1fr);
    }
}

.feature-visual.assembly {
    max-width: none;
    margin-inline: auto;
}

/* The blend and reflection mask live in components.css under
   .assembly, since the home teaser uses the same treatment. What
   stays here is only sizing specific to this feature row. */

@media (max-width: 900px) {
    .feature-visual.assembly {
        max-width: 460px;
    }
}




