/* ═══════════════════════════════════════════════════════════════════════════
   page-layout.css — Layout, responsive & UX enhancements (carga ÚLTIMA)
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base global ─────────────────────────────────────────────────────────── */
html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

/* Prevent horizontal overflow on all screens */
.page-container,
.main-content {
    overflow-x: hidden;
}

/* Brand selection color */
::selection {
    background: rgba(160, 82, 45, 0.18);
}

/* ─── Cards ───────────────────────────────────────────────────────────────── */
.main-content .card,
.card.widget-feed {
    border-radius: 18px;
    overflow: hidden;
    transition: box-shadow 0.25s ease;
}

/* Normaliza el padding interno de los cards de contenido para igualar .widget-feed (25px 30px).
   Se excluyen: cards que ya tienen widget-feed y los que contienen card-horizon (layout con imagen al borde). */
.main-content .col > .card:not(.widget-feed):not(:has(> .card-horizon)):not(:has(> .card-block)) {
    padding: 25px 30px;
}

/* ─── Typography ──────────────────────────────────────────────────────────── */
h1.card-title {
    font-size: clamp(1.3rem, 2.5vw, 1.8rem);
    font-weight: 700;
}

/* ─── Info / instruction box ──────────────────────────────────────────────── */
.card-info {
    display: inline-block;
    width: fit-content;
    max-width: 100%;
    background: #f5f7fa;
    border-radius: 12px;
    padding: 8px 14px !important;
    color: #243b53;
    font-size: 0.93rem;
    line-height: 1.5;
}

/* ─── Images ──────────────────────────────────────────────────────────────── */
img {
    max-width: 100%;
    height: auto;
}

/* ─── Navigation buttons ──────────────────────────────────────────────────── */
.btn-group {
    flex-wrap: wrap;
    gap: 4px;
    justify-content: center;
}

.btn-group .btn {
    border-radius: 8px !important;
    min-width: 38px;
}

/* Touch-friendly: prevents double-tap zoom on iOS/Android */
.btn {
    touch-action: manipulation;
    transition:
        transform 0.15s ease,
        box-shadow 0.18s ease,
        background-color 0.2s ease,
        border-color 0.2s ease,
        color 0.15s ease;
}

/* Hover effects only on pointer devices (mouse) — avoids sticky-hover on touch */
@media (hover: hover) and (pointer: fine) {
    .btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 4px 14px rgba(31, 41, 51, 0.16);
    }

    .btn-actual-page:hover {
        background-color: #8b4513;
        border-color: #8b4513;
        color: #fff;
    }

    .main-content .card:hover,
    .card.widget-feed:hover {
        box-shadow: 0 8px 32px rgba(31, 41, 51, 0.12);
    }
}

/* Press feedback on all devices */
.btn:active {
    transform: scale(0.95) !important;
    box-shadow: none !important;
    transition-duration: 0.08s !important;
}

/* ─── Page entrance animation ─────────────────────────────────────────────── */
@keyframes page-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.main-content {
    animation: page-fade-in 0.2s linear both;
}

/* Respect user preference for reduced motion */
@media (prefers-reduced-motion: reduce) {
    .main-content { animation: none; }
    .btn { transition: none; }
    html { scroll-behavior: auto; }
}

/* ─── TABLET (≤ 991.98px) ─────────────────────────────────────────────────── */
@media (max-width: 991.98px) {
    h1.card-title {
        font-size: clamp(1.2rem, 3vw, 1.6rem);
    }
}

/* ─── SMALL TABLET / LARGE MOBILE (≤ 767.98px) ───────────────────────────── */
@media (max-width: 767.98px) {
    /* Bottom clearance so the browser's tab/home bar doesn't cover content */
    .page-container .main-content {
        padding-bottom: 72px;
    }

    /* Old-structure add-button rows: stack button above content on mobile */
    .d-flex.flex-row:has(> .p-2 > button > img[src*="add.png"]) {
        flex-direction: column !important;
    }
    .d-flex.flex-row:has(> .p-2 > button > img[src*="add.png"]) > .p-2 {
        width: 100%;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* Horizontal card layout collapses to vertical */
    .card-horizon {
        flex-direction: column !important;
    }

    .image-container {
        width: 100% !important;
        min-height: 200px;
    }

    /* Reduce inner content margins */
    .mrg-left-30,
    .mrg-right-30 {
        margin-left: 16px !important;
        margin-right: 16px !important;
    }

    /* Bigger touch targets for navigation buttons */
    .btn-group .btn {
        min-height: 44px;
    }

    /* Card border-radius reduction */
    .main-content .card,
    .card.widget-feed {
        border-radius: 14px;
    }

    h1.card-title {
        font-size: clamp(1.1rem, 5vw, 1.45rem);
    }
}

/* ─── PHONE (≤ 575.98px) ─────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    /* Compact margins */
    .mrg-left-30,
    .mrg-right-30 {
        margin-left: 12px !important;
        margin-right: 12px !important;
    }

    .pdd-horizon-25,
    .pdd-horizon-30 {
        padding-left: 14px !important;
        padding-right: 14px !important;
    }

    /* Compact top/bottom spacing */
    .mrg-top-20 {
        margin-top: 14px !important;
    }

    .mrg-btm-20 {
        margin-bottom: 14px !important;
    }

    /* Buttons: readable size on small screens */
    .btn-group .btn {
        min-height: 42px;
        padding: 6px 10px;
        font-size: 0.85rem;
        min-width: 36px;
    }

    /* Typography */
    h1.card-title {
        font-size: clamp(1rem, 5.5vw, 1.3rem);
    }

    /* Info box */
    .card-info {
        font-size: 0.88rem;
        padding: 8px 12px !important;
    }

    /* Compact cards */
    .main-content .card,
    .card.widget-feed {
        border-radius: 12px;
    }
}

/* ─── VERY SMALL PHONE (≤ 375px) ─────────────────────────────────────────── */
@media (max-width: 375px) {
    .mrg-left-30,
    .mrg-right-30 {
        margin-left: 8px !important;
        margin-right: 8px !important;
    }

    .btn-group .btn {
        padding: 5px 8px;
        font-size: 0.8rem;
    }

    h1.card-title {
        font-size: clamp(0.95rem, 5.5vw, 1.2rem);
    }
}

/* Tarjeta de fin de curso: imagen sin hueco en móvil */
@media (max-width: 767px) {
    .card .card-horizon .background-holder.final-course-image {
        min-height: 240px;
    }
}

/* Imagen a la izquierda + título y texto a la derecha: el bloque de texto no
   deja margen inferior para que la imagen quede exactamente centrada. */
.row.align-items-center > .col-sm-7 p:last-child,
.row.align-items-center > .col-md-8 p:last-child {
    margin-bottom: 0;
}

/* Sin espacio bajo el footer: panelAnimado.css (raíz) aplica "body { margin: 0 0 1em }" */
body.header-info {
    margin-bottom: 0;
}

/* Mapa conceptual: sin franjas en blanco arriba y abajo y un poco más grande.
   La imagen trae ~13% de margen blanco arriba y ~8% abajo; se recortan con
   object-fit sin modificar el archivo original. */
.mapa-conceptual-wrap {
    width: 100%;
    overflow: hidden;
}

.mapa-conceptual-img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1024 / 630;
    object-fit: cover;
    object-position: 50% 63.7%;
}

/* ─── Márgenes interiores de las tarjetas de contenido: igual que la plantilla ──
   Plantilla: .card sin relleno + .card-block (18px en móvil, 28px desde 576px).
   Aquí el relleno de la tarjeta (25px 30px) se sumaba al margen de 30px del
   contenido (mrg-left-30 / mrg-right-30) y quedaba una sangría de ~61px.
   No afecta al widget de progreso (tiene .feed-title) ni a las tarjetas con
   imagen al borde (.card-horizon). */
.main-content .col > .card:not(:has(.feed-title)):not(:has(> .card-horizon)):has(> .mrg-left-30) {
    padding: 8px 18px;
}

.main-content .col > .card:not(:has(.feed-title)):not(:has(> .card-horizon)):has(> .mrg-left-30) > .mrg-left-30 {
    margin-left: 0 !important;
}

.main-content .col > .card:not(:has(.feed-title)):not(:has(> .card-horizon)):has(> .mrg-left-30) > .mrg-right-30 {
    margin-right: 0 !important;
}

@media (min-width: 576px) {
    .main-content .col > .card:not(:has(.feed-title)):not(:has(> .card-horizon)):has(> .mrg-left-30) {
        padding: 18px 28px;
    }
}

/* Widget de progreso: el contenido empieza donde la plantilla (card 25px 30px, sin relleno extra en la fila).
   Así queda alineado con el título/texto de las tarjetas de contenido. */
.card.widget-feed > .row {
    padding: 0;
}

/* Tarjetas con imagen al borde (card-horizon): en móvil conservan el relleno lateral de la plantilla
   (pdd-horizon-25 = 25px); antes se reducía a 10-14px. */
@media (max-width: 575.98px) {
    .card-horizon .pdd-horizon-25 {
        padding-left: 25px !important;
        padding-right: 25px !important;
    }
}
