/**
 * CADMasters Digital Platform — Global Card System
 * Design tokens are injected via /theme.css from Theme Manager.
 */

/* ── Base card shell ───────────────────────────────────────────────────── */

.card,
.cm-card,
.admin-card,
.portal-card,
.stat-card {
    background: var(--theme-card, #fff);
    border-radius: var(--card-radius);
    box-shadow: var(--card-shadow);
    border: 1px solid transparent;
    overflow: hidden;
    transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.theme-card-border .card,
.theme-card-border .cm-card,
.theme-card-border .admin-card,
.theme-card-border .portal-card,
.theme-card-border .stat-card {
    box-shadow: none;
    border-color: var(--theme-border, #e2e8f0);
}

.card .card-body,
.cm-card .card-body,
.card-content,
.admin-card .card-body,
.portal-card .card-body {
    padding: var(--card-padding);
}

/* ── Hover lift ────────────────────────────────────────────────────────── */

.card:not(.card-flat):hover,
.cm-card:hover,
.stat-card:hover,
.portal-card:hover {
    transform: var(--card-hover-transform);
    box-shadow: var(--card-shadow-hover);
}

.theme-card-border .cm-card:hover,
.theme-card-border .card:hover {
    box-shadow: none;
    border-color: color-mix(in srgb, var(--theme-primary, #0b3d91) 25%, var(--theme-border, #e2e8f0));
}

.theme-card-hover-none .card:hover,
.theme-card-hover-none .cm-card:hover,
.theme-card-hover-none .stat-card:hover,
.theme-card-hover-none .portal-card:hover {
    transform: none;
    box-shadow: var(--card-shadow);
}

.theme-card-hover-scale .card:hover,
.theme-card-hover-scale .cm-card:hover {
    transform: scale(1.02);
}

/* ── Card media (16:9) ─────────────────────────────────────────────────── */

.card-image,
.cm-card__media,
.card .card-img-top,
.cm-card .card-img-top {
    aspect-ratio: var(--card-image-ratio);
    overflow: hidden;
    position: relative;
    width: 100%;
}

.card-image img,
.cm-card__media img,
.cm-card__media .cm-media__img,
.card .card-img-top,
.cm-card .card-img-top {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.35s ease;
}

.cm-card:hover .card-image img,
.cm-card:hover .cm-card__media img,
.cm-card:hover .cm-card__media .cm-media__img,
.card:hover .card-img-top,
.cm-card:hover .card-img-top {
    transform: scale(1.04);
}

.theme-card-hover-none .cm-card:hover .cm-card__media img,
.theme-card-hover-none .cm-card:hover .card-img-top {
    transform: none;
}

/* Icon placeholder area matches image ratio on service cards */
.cm-card-icon-wrap {
    aspect-ratio: var(--card-image-ratio);
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(145deg, var(--theme-surface, #f8fafc), #eef2f7);
    padding: var(--card-padding);
}

.cm-card--service .cm-card-icon-wrap,
.cm-card--industry .cm-card-icon-wrap {
    padding-bottom: var(--card-padding);
}

/* ── Card layout & typography ──────────────────────────────────────────── */

.cm-card,
.card {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.cm-card .card-body,
.card .card-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

.cm-card .card-text,
.card .card-text {
    flex: 1 1 auto;
    color: var(--theme-text-secondary, #475569);
    line-height: 1.65;
}

.cm-card .card-title,
.card .card-title {
    font-family: var(--font-heading, "Manrope", sans-serif);
    font-weight: 700;
    font-size: 1.125rem;
    color: var(--theme-text-primary, #0f172a);
    margin-bottom: 0.5rem;
}

.cm-card .card-link,
.card .card-link {
    margin-top: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--font-navigation, "Manrope", sans-serif);
    font-weight: 600;
    font-size: 0.9375rem;
    color: var(--theme-primary, #0b3d91);
    text-decoration: none;
}

.cm-card .card-link:hover,
.card .card-link:hover {
    color: var(--theme-secondary, #0057b8);
}

.cm-card .card-link i {
    transition: transform 0.2s ease;
}

.cm-card:hover .card-link i {
    transform: translateX(3px);
}

/* ── Card variants ─────────────────────────────────────────────────────── */

.cm-card--content,
.cm-card--article {
    /* Knowledge / blog content cards */
}

.cm-card--service {
    /* Engineering service cards */
}

.cm-card--resource {
    /* Downloads / templates */
}

.cm-card--dashboard,
.stat-card {
    /* KPI / analytics widgets */
}

.cm-card--project .cm-card__media,
.cm-card--project .card-img-top {
    aspect-ratio: var(--card-image-ratio);
}

/* ── Responsive card grids ─────────────────────────────────────────────── */

.card-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: 1fr;
}

@media (min-width: 768px) {
    .card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .card-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .card-grid--wide {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* ── Reduced motion ────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .card,
    .cm-card,
    .stat-card,
    .portal-card {
        transition: none;
    }

    .card:hover,
    .cm-card:hover,
    .stat-card:hover,
    .portal-card:hover {
        transform: none;
    }

    .cm-card:hover .cm-card__media img,
    .cm-card:hover .card-img-top {
        transform: none;
    }
}

/* ── Align legacy engineering UI with global tokens ────────────────────── */

.cm-engineering-ui .cm-card,
.cm-engineering-ui .team-card {
    border-radius: var(--card-radius);
    box-shadow: var(--card-shadow);
    transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.cm-engineering-ui .cm-card .card-body {
    padding: var(--card-padding);
}

.cm-engineering-ui .cm-card:hover {
    transform: var(--card-hover-transform);
    box-shadow: var(--card-shadow-hover);
}

.cm-engineering-ui .cm-card .card-img-top,
.cm-engineering-ui .cm-card .cm-card__media .cm-media__img {
    height: auto;
    aspect-ratio: var(--card-image-ratio);
}

.cm-engineering-ui .cm-card--project .card-img-top,
.cm-engineering-ui .cm-card--project .cm-card__media .cm-media__img {
    height: auto;
}

.cm-engineering-ui .cm-card-icon-wrap {
    aspect-ratio: var(--card-image-ratio);
    height: auto;
}
