/* ============================================================================
   Cards — service and project.
   Markup: app/views/components/card-service.php, card-project.php

   Both share the .card shell so hover, media framing and spacing stay
   identical; the modifiers only change what sits in the body.
   ========================================================================== */

.card {
    position: relative;
    display: flex;
    flex-direction: column;
    /* Cards usually sit inside a wrapper div (for .reveal), which is the grid
       item and stretches to the row height. Without this the card itself stops
       at its content, so a card with one line less of text ends short and the
       row looks ragged. */
    height: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
    transition: border-color var(--dur) var(--ease),
                box-shadow var(--dur) var(--ease),
                transform var(--dur) var(--ease);
}
.card:hover {
    border-color: var(--gold-300);
    box-shadow: var(--shadow-lg);
    transform: translateY(-4px);
}

/* A stretched link makes the whole card clickable while keeping one real
   anchor for screen readers and for the keyboard. */
.card__link {
    position: absolute;
    inset: 0;
    z-index: 2;
}
.card__link:focus-visible { outline-offset: -4px; }

.card__media { background: var(--ink-100); }
.card__media img { transition: transform var(--dur-slow) var(--ease-out); }
.card:hover .card__media img { transform: scale(1.04); }

.card__badge {
    position: absolute;
    top: var(--s-4);
    left: var(--s-4);
    padding: 6px 12px;
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--ls-wide);
    text-transform: uppercase;
    color: var(--c-white);
    background: var(--c-gold);
    border-radius: var(--radius-sm);
}

.card__body {
    position: relative;
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: var(--s-6);
}

.card__title {
    font-size: var(--fs-lg);
    transition: color var(--dur) var(--ease);
}
.card:hover .card__title { color: var(--c-gold); }

.card__text {
    margin-top: var(--s-3);
    font-size: var(--fs-sm);
    color: var(--text-muted);
}

/* Pinned to the bottom so cards of different text lengths still line up. */
.card__more {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    margin-top: auto;
    padding-top: var(--s-5);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--ls-wide);
    text-transform: uppercase;
    color: var(--c-gold);
}
.card__more .icon { transition: transform var(--dur) var(--ease); }
.card:hover .card__more .icon { transform: translateX(4px); }

/* ---------------------------------------------------------------- service */
.card--service .card__icon {
    display: grid;
    place-items: center;
    width: 56px;
    height: 56px;
    margin-bottom: var(--s-4);
    color: var(--c-gold);
    background: var(--gold-50);
    border-radius: var(--radius-sm);
    transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.card--service:hover .card__icon { background: var(--c-gold); color: var(--c-white); }

.card--service .card__number {
    position: absolute;
    top: var(--s-5);
    right: var(--s-6);
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    font-weight: 800;
    line-height: 1;
    color: var(--ink-100);
}

/* ---------------------------------------------------------------- project */
.card--project .card__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2);
    margin-bottom: var(--s-3);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--ls-wide);
    text-transform: uppercase;
    color: var(--c-gold);
}
.card__dot { color: var(--ink-300); }

/* ---------------------------------------------------------------- on dark */
.section--dark .card { background: rgba(255, 255, 255, .03); }
.section--dark .card--service .card__number { color: rgba(255, 255, 255, .07); }
.section--dark .card--service .card__icon { background: rgba(255, 255, 255, .06); }
