/* ==========================================================================
   NACS Show 2026 - Numbered Picture Card Component
   Card with optional image, large number, title, description, and arrow link
   Tokens: NACSShow2026Tokens.css
   ========================================================================== */

/* --------------------------------------------------------------------------
   Widget Wrapper
   -------------------------------------------------------------------------- */
.npc {
    margin-bottom: 32px;
}

/* --------------------------------------------------------------------------
   Card Wrapper
   -------------------------------------------------------------------------- */
.npc__card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
    max-width: 629px;
    border-radius: 4px;
    overflow: hidden;
    box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   Equal-height cards on desktop. When multiple cards share a flex row
   (Bootstrap columns), the row stretches each column to the tallest card,
   and these rules let the card and its body fill that height so all cards
   match. A solo card has no taller sibling, so the column stays natural
   height and the card looks unchanged.
   -------------------------------------------------------------------------- */
@media screen and (min-width: 769px) {
    .npc,
    .npc__card {
        height: 100%;
    }

    .npc__body {
        flex: 1;
    }
}

/* --------------------------------------------------------------------------
   Image (Desktop Only)
   -------------------------------------------------------------------------- */
.npc__image {
    width: 100%;
    position: relative;
}

.npc__image img {
    width: 100%;
    aspect-ratio: 629 / 257;
    object-fit: cover;
    display: block;
}

/* --------------------------------------------------------------------------
   Text Body Container
   -------------------------------------------------------------------------- */
.npc__body {
    display: flex;
    flex-direction: column;
    gap: 36px;
    padding: 40px 20px;
    width: 100%;
    box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   Color Variations (applied on .npc__card to color the body container)
   -------------------------------------------------------------------------- */
.npc__card.npc--blue .npc__body {
    background: #004C97;
}

.npc__card.npc--green .npc__body {
    background: #00A82D;
}

.npc__card.npc--cyan .npc__body {
    background: #009FDF;
}

.npc__card.npc--pink .npc__body {
    background: #D40F7C;
}

.npc__card.npc--orange .npc__body {
    background: #ED8B00;
}

/* --------------------------------------------------------------------------
   Header Row (Number + Arrow)
   -------------------------------------------------------------------------- */
.npc__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-width: 0;
    gap: 16px;
}

/* --------------------------------------------------------------------------
   Display Number
   -------------------------------------------------------------------------- */
.npc__number {
    font-family: var(--nacs-font-gotham);
    font-weight: 700;
    font-size: 80px;
    line-height: 88px;
    letter-spacing: 0;
    text-transform: capitalize;
    color: #FFFFFF;
}

/* --------------------------------------------------------------------------
   Arrow Link
   -------------------------------------------------------------------------- */
.npc__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 96px;
    height: 96px;
    text-decoration: none;
    transition: transform 0.2s ease;
}

.npc__arrow:hover {
    transform: scale(1.05);
}

.npc__arrow svg {
    width: 96px;
    height: 96px;
}

/* --------------------------------------------------------------------------
   Title
   -------------------------------------------------------------------------- */
.npc__title {
    font-family: var(--nacs-font-gotham);
    font-weight: 700;
    line-height: 48px;
    letter-spacing: 0;
    text-transform: capitalize;
    color: #FFFFFF;
    margin: 0;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    overflow-wrap: break-word;
    word-wrap: break-word;
}

/* --------------------------------------------------------------------------
   Description
   -------------------------------------------------------------------------- */
.npc__desc {
    font-family: var(--nacs-font-gotham);
    font-weight: 325;
    font-size: 20px;
    line-height: 24px;
    letter-spacing: 0;
    color: #FFFFFF;
    margin: 0;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    overflow-wrap: break-word;
    word-wrap: break-word;
}

/* --------------------------------------------------------------------------
   Tablet / iPad (769px – 1199px)
   Single-card component. Desktop uses an 80px display number, 96px arrow,
   24/48 title and 20/24 body — all sized for ~530-630px column widths.
   At iPad widths (cards typically end up at 320-560px in 2-up grids) those
   feel oversized. Interpolate between desktop and mobile (≤768px) values
   so the card stays balanced. Image stays visible (mobile hides it; we
   keep it for iPad). The (min-width: 769px) equal-height rule above
   continues to apply — leaving it untouched. Desktop and mobile rules
   are intentionally left untouched.
   -------------------------------------------------------------------------- */
@media screen and (min-width: 769px) and (max-width: 1199px) {
    .npc__body {
        gap: 28px;
        padding: 32px 24px;
    }

    .npc__number {
        font-size: 68px;
        line-height: 76px;
    }

    .npc__arrow,
    .npc__arrow svg {
        width: 88px;
        height: 88px;
    }

    .npc__title {
        font-size: 24px;
        line-height: 36px;
    }

    .npc__desc {
        font-size: 18px;
        line-height: 24px;
    }
}

/* --------------------------------------------------------------------------
   Mobile Styles (max-width: 768px)
   -------------------------------------------------------------------------- */
@media screen and (max-width: 768px) {
    .npc {
        margin-bottom: 20px;
    }

    .npc__card {
        width: 100%;
    }

    .npc__image {
        display: none;
    }

    .npc__body {
        gap: 16px;
        padding: 20px;
        border-radius: 4px;
    }

    .npc__header {
        gap: 6px;
        justify-content: center;
    }

    .npc__number {
        font-size: 56px;
        line-height: 64px;
        flex: 1 0 0;
    }

    .npc__arrow {
        width: 80px;
        height: 80px;
    }

    .npc__arrow svg {
        width: 80px;
        height: 80px;
    }

    .npc__title {
        font-size: 24px;
        line-height: 32px;
    }

    .npc__desc {
        font-size: 16px;
        line-height: 22px;
    }
}
