:root {
    --app-content-max-width: 1440px;
}

html,
body {
    min-height: 100%;
}

body {
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}

main {
    width: 100%;
    max-width: var(--app-content-max-width);
    flex: 1;
}

.required-label::after {
    color: var(--bs-danger);
    content: " *";
}

.branding-logo { display: block; height: 2rem; max-width: 14rem; object-fit: contain; }
.branding-logo-auth { height: 4rem; margin-inline: auto; max-width: 20rem; }
.branding-current-asset { align-items: center; display: flex; gap: 1rem; min-height: 5rem; }
.branding-resource-preview { height: 4rem; max-width: 12rem; object-fit: contain; }
.branding-favicon-preview { height: 2rem; object-fit: contain; width: 2rem; }
.branding-preview { font-family: var(--preview-font-family); }
.branding-preview-header { background-color: var(--preview-primary); color: var(--preview-primary-contrast); }

/* Configuración de identidad */
.branding-admin-page { margin-inline: auto; max-width: 92rem; }
.branding-admin-page .app-page-eyebrow { color: var(--bs-primary); display: block; font-size: 0.7rem; font-weight: 750; letter-spacing: 0.12em; margin-bottom: 0.45rem; text-transform: uppercase; }
.branding-admin-page .app-panel { background: #fff; border: 1px solid #e2e6ea; border-radius: 0.95rem; box-shadow: 0 0.35rem 1.1rem rgb(25 35 45 / 4%); overflow: hidden; }
.branding-admin-page .app-panel-header { border-bottom: 1px solid #e8ebee; min-height: 4.25rem; padding: 0.9rem 1.25rem; }
.branding-admin-page .app-panel-header h2 { color: #29313a; font-size: 0.98rem; font-weight: 700; margin: 0; }
.branding-admin-page .app-panel-header p { color: #858e98; font-size: 0.76rem; margin: 0.2rem 0 0; }
.branding-admin-page .app-field-label { color: #47515b; font-size: 0.76rem; font-weight: 650; }
.branding-admin-header { align-items: flex-end; display: flex; gap: 2rem; justify-content: space-between; margin-bottom: 1.75rem; }
.branding-admin-header h1 { color: #20262d; font-size: 2rem; font-weight: 750; letter-spacing: -0.03em; margin: 0; }
.branding-admin-header p { color: #75808b; margin: 0.4rem 0 0; }
.branding-scope-nav { background: #eef1f3; border-radius: 0.7rem; display: inline-flex; padding: 0.25rem; }
.branding-scope-nav a { border-radius: 0.5rem; color: #66717c; font-size: 0.78rem; font-weight: 650; padding: 0.55rem 0.8rem; text-decoration: none; }
.branding-scope-nav a.active { background: #fff; box-shadow: 0 0.15rem 0.5rem rgb(25 35 45 / 8%); color: var(--bs-primary); }
.branding-settings-card { margin-bottom: 1.25rem; }
.branding-settings-body { padding: 1.25rem; }
.branding-color-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.branding-color-field { min-width: 0; }
.branding-color-control {
    align-items: center;
    background: #f8f9fa;
    border: 1px solid #e0e4e8;
    border-radius: 0.7rem;
    display: grid;
    gap: 0.55rem;
    grid-template-columns: 2.5rem minmax(6.5rem, 1fr) auto;
    min-height: 3.25rem;
    padding: 0.4rem 0.45rem;
    transition: border-color 160ms ease, box-shadow 160ms ease;
}
.branding-color-control:focus-within {
    border-color: rgb(var(--bs-primary-rgb) / 55%);
    box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 11%);
}
.branding-color-control.is-invalid { border-color: var(--bs-danger); }
.branding-color-swatch {
    background: #dfe3e6;
    border: 0.2rem solid #fff;
    border-radius: 0.55rem;
    box-shadow: 0 0 0 1px #d8dde1;
    cursor: pointer;
    display: block;
    height: 2.3rem;
    overflow: hidden;
    position: relative;
    width: 2.3rem;
}
.branding-color-swatch:hover { transform: scale(1.03); }
.branding-color-swatch:focus-within { box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 18%); }
.branding-color-swatch input[type="color"] {
    cursor: pointer;
    height: 100%;
    inset: 0;
    opacity: 0;
    position: absolute;
    width: 100%;
}
.branding-color-swatch img,
.branding-color-swatch svg,
.branding-color-swatch canvas { display: none !important; }
.branding-color-swatch > :not(input):not(.visually-hidden) { display: none !important; }
.branding-color-hex {
    background: transparent;
    border: 0;
    color: #414b55;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    min-width: 0;
    outline: 0;
    padding: 0.4rem 0.25rem;
    text-transform: uppercase;
}
.branding-color-hex:invalid { color: var(--bs-danger); }
.admin-content .branding-color-control .branding-color-reset {
    background: transparent;
    border: 0;
    box-shadow: none;
    color: #78838d;
    font-size: 0.68rem;
    font-weight: 650;
    min-height: 0;
    padding: 0.4rem 0.35rem;
    text-decoration: none;
}
.admin-content .branding-color-control .branding-color-reset:hover { color: var(--bs-primary); text-decoration: underline; }
.admin-content .branding-color-control .branding-color-reset:focus-visible { border-radius: 0.35rem; box-shadow: 0 0 0 0.15rem rgb(var(--bs-primary-rgb) / 20%); outline: 0; }
.branding-asset-grid { display: grid; gap: 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.branding-asset-field { background: #fafbfc; border: 1px solid #e5e8eb; border-radius: 0.75rem; padding: 1rem; }
.branding-current-asset { background: #fff; border: 1px solid #e3e7ea; border-radius: 0.6rem; margin-bottom: 0.65rem; padding: 0.65rem; }
.branding-current-asset-dark { background: #20252a; }
.branding-current-asset-dark span { color: #c8cdd2; }
.branding-current-asset span { color: #77818c; font-size: 0.7rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.branding-empty-asset { align-items: center; background: #f0f2f4; border-radius: 0.6rem; color: #8b949d; display: flex; font-size: 0.72rem; margin-bottom: 0.65rem; min-height: 4.5rem; padding: 0.75rem; }
.branding-save-button { border-radius: 0.65rem; font-weight: 650; min-height: 2.75rem; padding-inline: 1.2rem; }
.branding-admin-preview { font-family: var(--preview-font-family); overflow: hidden; position: sticky; top: calc(var(--admin-topbar-height) + 1.5rem); }
.branding-admin-preview-bar { align-items: center; background: #20252a; color: #fff; display: flex; gap: 0.65rem; padding: 1rem; }
.branding-preview-mark { background: var(--preview-primary); border-radius: 0.45rem; height: 1.8rem; width: 1.8rem; }
.branding-admin-preview-body { padding: 1.25rem; }
.branding-admin-preview-body > span { color: #7f8993; font-size: 0.7rem; text-transform: uppercase; }
.branding-admin-preview-body > div { background: #edf0f2; border-radius: 0.4rem; height: 0.65rem; margin-top: 0.8rem; }
.branding-admin-preview-body > div:nth-of-type(2) { margin-bottom: 1.2rem; width: 72%; }
.branding-login-preview { border-top: 1px solid #e4e8eb; display: grid; grid-template-columns: 62% 38%; min-height: 10rem; }
.branding-login-preview-visual { background: linear-gradient(135deg, var(--preview-primary), #20252a); min-width: 0; overflow: hidden; position: relative; }
.branding-login-preview-image { height: 100%; object-fit: cover; position: absolute; width: 100%; }
.branding-login-preview-form { background: var(--preview-secondary, #20252a); color: var(--preview-secondary-contrast, #fff); display: flex; flex-direction: column; gap: 0.5rem; justify-content: center; padding: 0.85rem; }
.branding-login-preview-form small { color: rgb(255 255 255 / 55%); font-size: 0.5rem; letter-spacing: 0.1em; }
.branding-login-preview-form strong { font-size: 0.75rem; }
.branding-login-preview-form span { background: rgb(255 255 255 / 15%); border-radius: 0.25rem; height: 1rem; }
.branding-login-preview-form .btn { font-size: 0.6rem; margin-top: 0.25rem; }
.branding-hero-field { background: #fafbfc; border: 1px solid #e4e8eb; border-radius: 0.75rem; padding: 1rem; }
.branding-hero-field p { color: #7d8791; font-size: 0.72rem; margin: -0.25rem 0 0.75rem; }
.branding-hero-gallery { display: grid; gap: 0.85rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.branding-hero-slot { background: #fff; border: 1px solid #e2e6e9; border-radius: 0.7rem; min-width: 0; overflow: hidden; padding: 0.75rem; }
.branding-hero-slot:first-child { grid-column: 1 / -1; }
.branding-hero-slot-heading { align-items: center; display: flex; justify-content: space-between; margin-bottom: 0.55rem; }
.branding-hero-slot-heading strong { color: #414b55; font-size: 0.76rem; }
.branding-hero-slot-heading span { color: #8a939c; font-size: 0.64rem; }
.branding-hero-slot > img,
.branding-hero-slot-upload-preview { border-radius: 0.5rem; display: block; height: 6.5rem; margin-bottom: 0.65rem; object-fit: cover; width: 100%; }
.branding-hero-slot:first-child > img,
.branding-hero-slot:first-child .branding-hero-slot-upload-preview { height: 9rem; }
.branding-hero-slot-empty { align-items: center; background: #eef1f3; border-radius: 0.5rem; color: #929ba3; display: flex; font-size: 0.68rem; height: 6.5rem; justify-content: center; margin-bottom: 0.65rem; }
.branding-hero-slot:first-child .branding-hero-slot-empty { height: 9rem; }
.branding-hero-field > img,
.branding-hero-upload-preview { background: #e9edef; border-radius: 0.6rem; display: block; height: 10rem; margin-bottom: 0.75rem; object-fit: cover; width: 100%; }
.branding-empty-hero { align-items: center; background: linear-gradient(120deg, rgb(var(--bs-primary-rgb) / 80%), var(--bs-primary)); border-radius: 0.6rem; color: var(--branding-primary-contrast, #fff); display: flex; font-size: 0.75rem; justify-content: center; margin-bottom: 0.75rem; min-height: 8rem; padding: 1rem; text-align: center; }
.branding-public-preview { background: var(--preview-primary); color: var(--preview-primary-contrast); font-family: var(--preview-font-family); min-height: 24rem; overflow: hidden; position: relative; }
.branding-public-preview-image { height: 18rem; inset: 0 0 auto; object-fit: cover; opacity: 0.48; position: absolute; width: 100%; }
.branding-public-preview-overlay { background: linear-gradient(90deg, rgb(0 0 0 / 64%), rgb(0 0 0 / 20%)); min-height: 18rem; padding: 2rem 1.5rem; position: relative; z-index: 1; }
.branding-public-preview-overlay small { color: rgb(255 255 255 / 75%); }
.branding-public-preview-overlay h2 { color: #fff; font-size: 1.7rem; font-weight: 750; margin: 1rem 0 0.5rem; }
.branding-public-preview-overlay p { color: rgb(255 255 255 / 82%); font-size: 0.8rem; }
.branding-public-preview footer { background: #fff; color: #77818b; font-size: 0.7rem; padding: 1rem 1.25rem; position: relative; z-index: 2; }

/* Acceso */
.auth-page { background: var(--bs-secondary); display: block; min-height: 100vh; }
.auth-shell { display: grid; grid-template-columns: minmax(0, 62fr) minmax(25rem, 38fr); max-width: none; min-height: 100vh; width: 100%; }
.auth-visual { background: linear-gradient(135deg, var(--bs-primary), var(--branding-primary-hover) 45%, var(--bs-secondary)); min-width: 0; overflow: hidden; position: relative; }
.auth-visual > img { height: 100%; inset: 0; object-fit: cover; position: absolute; width: 100%; }
.auth-visual-shade { background: linear-gradient(120deg, rgb(0 0 0 / 8%), rgb(0 0 0 / 34%)); inset: 0; position: absolute; }
.auth-panel { align-items: center; background: var(--bs-secondary); color: var(--branding-secondary-contrast); display: flex; justify-content: center; min-width: 0; padding: clamp(2rem, 5vw, 5rem); }
.auth-panel-inner { max-width: 29rem; width: 100%; }
.auth-brand { align-items: center; display: flex; justify-content: center; margin-bottom: 2rem; min-height: 4.5rem; }
.auth-brand > span { font-size: 1.35rem; font-weight: 750; }
.branding-logo-auth { height: 4.75rem; margin-inline: auto; max-width: 22rem; }
.auth-card { border: 0; border-radius: 1.1rem; box-shadow: 0 1.25rem 3.5rem rgb(0 0 0 / 24%); overflow: hidden; }
.auth-card .card-body { padding: clamp(1.75rem, 3vw, 2.5rem); }
.auth-eyebrow { color: var(--bs-primary); display: block; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.12em; margin-bottom: 0.65rem; text-transform: uppercase; }
.auth-card h1 { color: #20262d; font-size: 2rem; font-weight: 750; letter-spacing: -0.035em; margin: 0 0 0.45rem; }
.auth-intro { color: #727d87; margin: 0 0 1.75rem; }
.auth-card .form-label { color: #46515b; font-size: 0.8rem; font-weight: 650; }
.auth-card .form-control { border-color: #dce1e5; border-radius: 0.65rem; min-height: 3rem; }
.auth-card .form-control:focus { border-color: var(--bs-primary); box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 14%); }
.auth-submit { border-radius: 0.65rem; font-weight: 700; min-height: 3rem; }
.auth-footer { color: color-mix(in srgb, var(--branding-secondary-contrast) 58%, transparent); font-size: 0.72rem; margin: 1.5rem 0 0; text-align: center; }

/* Portal público */
.public-shell { background: #fff; display: flex; flex-direction: column; min-height: 100vh; }
.public-header { background: #fff; border-bottom: 1px solid #e7eaed; box-shadow: 0 0.2rem 0.8rem rgb(25 35 45 / 5%); position: relative; z-index: 10; }
.public-header-inner { align-items: stretch; display: flex; flex-direction: column; justify-content: center; min-height: 10.25rem; padding-top: 1rem; }
.public-header-top { align-items: center; display: flex; justify-content: space-between; }
.public-brand { align-self: flex-start; color: #20262d; display: inline-flex; font-size: 1.1rem; font-weight: 750; margin-bottom: 0.7rem; text-decoration: none; }
.public-brand .branding-logo { height: 5rem; max-width: 24rem; }
.public-header-search { color: #727a81; position: relative; width: min(18rem, 32vw); }
.public-header-search svg { height: 1rem; left: 0.9rem; pointer-events: none; position: absolute; top: 50%; transform: translateY(-50%); width: 1rem; }
.public-header-search .form-control { background: #fff; border: 0; border-bottom: 1px solid #aeb4b9; border-radius: 0; box-shadow: none; font-size: 0.9rem; min-height: 2.65rem; padding-left: 2.4rem; }
.public-header-search .form-control:focus { border-bottom-color: var(--branding-primary-hover); box-shadow: 0 1px 0 var(--branding-primary-hover); }
.public-navigation { align-items: center; display: flex; gap: clamp(1.25rem, 2vw, 2rem); justify-content: center; min-height: 3.15rem; overflow-x: auto; scrollbar-width: thin; }
.public-navigation a,
.public-navigation a:visited { color: #242424; font-size: 1rem; font-weight: 400; letter-spacing: 0.01em; padding: 0.85rem 0 0.75rem; text-decoration: none; text-transform: uppercase; transition: color 0.18s ease; white-space: nowrap; }
.public-navigation a:hover,
.public-navigation a:focus-visible,
.public-navigation a[aria-current="page"] { color: var(--branding-primary-hover); }
.public-main { flex: 1 0 auto; }
.public-offer-hero { background: linear-gradient(110deg, var(--bs-primary), var(--branding-primary-hover)); color: var(--branding-primary-contrast); margin-left: calc(50% - 50vw); margin-top: -1.5rem; min-height: calc(22rem + 50px); position: relative; width: 100vw; }
.public-offer-hero > img { height: 100%; inset: 0; object-fit: cover; position: absolute; width: 100%; }
.public-hero-carousel { inset: 0; position: absolute; }
.public-hero-carousel .carousel-inner,
.public-hero-carousel .carousel-item { height: 100%; }
.public-hero-carousel .carousel-item img { height: 100%; object-fit: cover; width: 100%; }
.public-offer-hero-overlay { align-items: center; background: linear-gradient(90deg, rgb(8 18 28 / 76%), rgb(8 18 28 / 34%)); display: flex; inset: 0; min-height: calc(22rem + 50px); pointer-events: none; position: absolute; text-align: center; z-index: 2; }
.public-offer-hero-overlay h1 { color: #fff; font-size: clamp(2.4rem, 5vw, 4rem); font-weight: 500; letter-spacing: 0.14em; margin: 0 0 0.65rem; text-transform: uppercase; }
.public-offer-hero-overlay p { color: rgb(255 255 255 / 82%); font-size: 1rem; margin: 0 auto; max-width: 48rem; }
.public-offer-intro { margin: 3rem auto 1.75rem; max-width: 55rem; text-align: center; }
.public-section-eyebrow { color: var(--bs-primary); font-size: 0.68rem; font-weight: 750; letter-spacing: 0.12em; text-transform: uppercase; }
.public-offer-intro h2 { color: #27303a; font-size: 1.65rem; font-weight: 750; margin: 0.45rem 0; }
.public-offer-intro p { color: #66727d; margin: 0; }
.public-course-filters { align-items: end; background: #fff; border: 1px solid #e1e5e8; border-radius: 0.85rem; box-shadow: 0 0.35rem 1.2rem rgb(25 35 45 / 6%); display: grid; gap: 1rem; grid-template-columns: minmax(14rem, 1.5fr) repeat(3, minmax(8.5rem, 0.7fr)) auto; margin-bottom: 2.5rem; padding: 1rem; }
.public-course-filters label { color: #505a64; display: block; font-size: 0.72rem; font-weight: 650; margin-bottom: 0.4rem; }
.public-course-filters .form-control,
.public-course-filters .form-select { border-color: #dce1e5; border-radius: 0.55rem; min-height: 2.7rem; }
.public-search-field > div { position: relative; }
.public-search-field svg { color: #8b949c; height: 1rem; left: 0.85rem; pointer-events: none; position: absolute; top: 50%; transform: translateY(-50%); width: 1rem; }
.public-search-field input { padding-left: 2.35rem; }
.public-filter-actions { align-items: center; display: flex; gap: 0.65rem; }
.public-filter-actions .btn { border-radius: 0.55rem; font-weight: 650; min-height: 2.7rem; padding-inline: 1rem; }
.public-results-summary { align-items: center; color: #69747e; display: flex; font-size: 0.82rem; gap: 0.45rem; justify-content: flex-end; margin: -1.15rem 0 1rem; scroll-margin-top: 1rem; }
.public-results-summary span { align-items: center; background: #eef1f3; border-radius: 999px; color: #303941; display: inline-flex; font-weight: 700; justify-content: center; min-height: 1.8rem; min-width: 1.8rem; padding-inline: 0.5rem; }
.public-filter-actions > a { color: #717c86; font-size: 0.74rem; text-decoration: none; }
.public-results-heading { align-items: end; display: flex; justify-content: space-between; margin-bottom: 1.25rem; }
.public-results-heading span { color: var(--bs-primary); font-size: 0.67rem; font-weight: 750; letter-spacing: 0.1em; text-transform: uppercase; }
.public-results-heading h2 { color: #27303a; font-size: 1.8rem; font-weight: 750; margin: 0.2rem 0 0; }
.public-results-heading p { color: #7d8791; font-size: 0.78rem; margin: 0; }
.public-course-grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.public-course-card { background: #fff; border: 1px solid #e1e5e8; border-radius: 0.85rem; box-shadow: 0 0.35rem 1rem rgb(25 35 45 / 6%); min-width: 0; overflow: hidden; position: relative; transition: box-shadow 180ms ease, transform 180ms ease; }
.public-course-card:hover,
.public-course-card:focus-within { box-shadow: 0 0.7rem 1.6rem rgb(25 35 45 / 11%); transform: translateY(-0.2rem); }
.public-course-card-media { aspect-ratio: 16 / 9; background: #e9edef; overflow: hidden; }
.public-course-card-media img { height: 100%; object-fit: cover; transition: transform 300ms ease; width: 100%; }
.public-course-card:hover .public-course-card-media img { transform: scale(1.025); }
.public-course-card-media > div { align-items: center; background: linear-gradient(135deg, rgb(var(--bs-primary-rgb) / 16%), rgb(var(--bs-primary-rgb) / 35%)); color: var(--bs-primary); display: flex; font-size: 3rem; font-weight: 750; height: 100%; justify-content: center; }
.public-course-card-body { padding: 1.1rem; }
.public-course-card-meta { display: flex; gap: 0.4rem; margin-bottom: 0.75rem; }
.public-course-card-meta span { background: var(--bs-primary); border-radius: 999px; color: var(--branding-primary-contrast, #fff); font-size: 0.64rem; font-weight: 700; padding: 0.3rem 0.5rem; }
.public-course-card-meta span + span { background: #eef1f3; color: #66717c; }
.public-course-card h3 { font-size: 1.08rem; font-weight: 750; line-height: 1.35; margin: 0; }
.public-course-card h3 a { color: #27303a; text-decoration: none; }
.public-course-card h3 a:hover { color: #27303a; }
.public-course-card h3 a:focus-visible { outline: 0; }
.public-course-card-body > p { -webkit-box-orient: vertical; -webkit-line-clamp: 3; color: #67727c; display: -webkit-box; font-size: 0.78rem; line-height: 1.6; margin: 0.7rem 0 1rem; min-height: 3.75rem; overflow: hidden; }
.public-course-card-footer { align-items: center; border-top: 1px solid #edf0f2; display: flex; justify-content: space-between; padding-top: 0.8rem; }
.public-course-card-footer > div { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.public-course-card-footer > div span { color: #77818b; font-size: 0.66rem; }
.public-course-card-footer > span { color: var(--bs-primary); font-size: 1.1rem; }
.public-empty-results { background: #f7f9fa; border: 1px dashed #d7dde2; border-radius: 0.85rem; padding: 3rem 1rem; text-align: center; }
.public-empty-results h3 { color: #303943; font-size: 1.2rem; }
.public-empty-results p { color: #78828c; }

/* Detalle público de Cursos */
.public-course-detail {
    --public-course-accent: var(--branding-primary-hover, var(--bs-primary));
    --public-course-accent-rgb: var(--branding-primary-hover-rgb, var(--bs-primary-rgb));
    --public-course-accent-contrast: var(--branding-primary-hover-contrast, #fff);
}
.public-course-detail-hero {
    display: grid;
    grid-template-columns: minmax(0, 65fr) minmax(20rem, 35fr);
    height: 500px;
    margin-left: calc(50% - 50vw);
    margin-top: -1.5rem;
    width: 100vw;
}
.public-course-detail-media { background: #e9edef; min-width: 0; overflow: hidden; }
.public-course-detail-media > img { display: block; height: 100%; object-fit: cover; width: 100%; }
.public-course-detail-placeholder {
    align-items: center;
    background: linear-gradient(135deg, #e9edef, #dce2e6);
    color: #7a858e;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    height: 100%;
    justify-content: center;
}
.public-course-detail-placeholder svg { height: 3.5rem; width: 3.5rem; }
.public-course-detail-placeholder span { font-size: 0.78rem; font-weight: 650; }
.public-course-detail-identity {
    align-items: center;
    background: linear-gradient(145deg, var(--bs-primary), var(--branding-primary-hover));
    color: var(--branding-primary-contrast, #fff);
    display: flex;
    min-width: 0;
    padding: clamp(2rem, 4vw, 5rem);
}
.public-course-detail-identity > div { max-width: 34rem; }
.public-course-detail-identity h1 {
    color: inherit;
    font-size: clamp(2.5rem, 4vw, 4.75rem);
    font-weight: 750;
    letter-spacing: -0.045em;
    line-height: 1.02;
    margin: 0;
    overflow-wrap: anywhere;
}
.public-course-detail-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 2rem; }
.public-course-detail-meta span {
    border: 1px solid color-mix(in srgb, var(--branding-primary-contrast, #fff) 30%, transparent);
    border-radius: 999px;
    color: inherit;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.4rem 0.7rem;
}
.public-course-detail-content { align-items: start; padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.public-course-detail-main { display: grid; gap: 1.15rem; }
.public-course-info-section {
    border-bottom: 1px solid #e5e9ec;
    padding: 1.4rem 0 1.7rem;
}
.public-course-info-section:first-child { padding-top: 0; }
.public-course-info-section header { margin-bottom: 0.9rem; }
.public-course-info-section header > span {
    color: var(--public-course-accent);
    display: block;
    font-size: 0.68rem;
    font-weight: 750;
    letter-spacing: 0.09em;
    margin-bottom: 0.25rem;
    text-transform: uppercase;
}
.public-course-info-section h2 {
    color: #252d35;
    font-size: clamp(1.35rem, 2vw, 1.65rem);
    font-weight: 720;
    letter-spacing: -0.025em;
    margin: 0;
}
.public-course-info-section .course-rich-text {
    border-left: 2px solid #edf0f2;
    color: #46515b;
    font-size: 0.94rem;
    line-height: 1.75;
    margin-left: 0.3rem;
    max-width: 50rem;
    padding-left: 1.25rem;
}
.public-course-info-section .course-rich-text h2,
.public-course-info-section .course-rich-text h3 { color: #303943; font-size: 1.05rem; font-weight: 700; margin-top: 1.3rem; }
.public-course-info-section .course-rich-text ul,
.public-course-info-section .course-rich-text ol { display: grid; gap: 0.35rem; padding-left: 1.25rem; }
.public-course-info-section.is-intro {
    background: linear-gradient(110deg, color-mix(in srgb, var(--public-course-accent) 7%, #fff), #fff 72%);
    border: 1px solid color-mix(in srgb, var(--public-course-accent) 16%, #e5e9ec);
    border-radius: 0.9rem;
    overflow: hidden;
    padding: 1.4rem 1.5rem;
    position: relative;
}
.public-course-info-section.is-intro::before { background: var(--public-course-accent); content: ""; inset: 0 auto 0 0; position: absolute; width: 0.3rem; }
.public-course-info-section.is-intro header > span {
    background: rgb(var(--public-course-accent-rgb) / 10%);
    border-radius: 999px;
    display: inline-flex;
    margin-bottom: 0.55rem;
    padding: 0.3rem 0.55rem;
}
.public-course-info-section.is-intro .course-rich-text { border-left-color: rgb(var(--public-course-accent-rgb) / 18%); color: #35404a; font-size: 1rem; }
.public-course-program {
    align-items: center;
    background: #f7f9fa;
    border: 1px solid #e1e6e9;
    border-radius: 0.9rem;
    display: grid;
    gap: 1rem;
    grid-template-columns: auto minmax(0, 1fr) auto;
    margin-top: 0.35rem;
    padding: 1rem 1.1rem;
}
.public-course-program-icon { align-items: center; background: rgb(var(--public-course-accent-rgb) / 10%); border-radius: 0.7rem; color: var(--public-course-accent); display: flex; height: 2.8rem; justify-content: center; width: 2.8rem; }
.public-course-program-icon svg { height: 1.35rem; width: 1.35rem; }
.public-course-program > div { display: grid; gap: 0.08rem; }
.public-course-program > div > span { color: var(--public-course-accent); font-size: 0.63rem; font-weight: 750; letter-spacing: 0.07em; text-transform: uppercase; }
.public-course-program > div > strong { color: #303943; font-size: 0.9rem; }
.public-course-program > div > small { color: #7a858f; font-size: 0.72rem; }
.public-course-program-download {
    background: var(--public-course-accent);
    border-color: var(--public-course-accent);
    color: var(--public-course-accent-contrast);
    font-weight: 700;
}
.public-course-program-download:hover,
.public-course-program-download:focus-visible { background: color-mix(in srgb, var(--public-course-accent) 84%, #000); border-color: color-mix(in srgb, var(--public-course-accent) 84%, #000); color: var(--public-course-accent-contrast); }
.public-course-edition-card {
    background: #fff;
    border: 1px solid #dfe4e8;
    border-radius: 1rem;
    box-shadow: 0 0.7rem 2rem rgb(35 45 55 / 8%);
    overflow: hidden;
    position: sticky;
    top: 1.5rem;
}
.public-course-edition-card > header { border-bottom: 1px solid #e6eaed; padding: 1.2rem 1.3rem; }
.public-course-edition-card > header span { color: var(--public-course-accent); display: block; font-size: 0.65rem; font-weight: 750; letter-spacing: 0.09em; text-transform: uppercase; }
.public-course-edition-card > header h2 { color: #29323a; font-size: 1.35rem; font-weight: 720; letter-spacing: -0.025em; margin: 0.2rem 0 0; }
.public-course-edition-date {
    align-items: center;
    background: linear-gradient(135deg, var(--public-course-accent), color-mix(in srgb, var(--public-course-accent) 82%, #000));
    color: var(--public-course-accent-contrast);
    display: grid;
    gap: 0.5rem;
    grid-template-columns: auto 1fr auto;
    padding: 1rem 1.3rem;
}
.public-course-edition-date > strong { font-size: 2.65rem; font-weight: 750; letter-spacing: -0.06em; line-height: 1; }
.public-course-edition-date > span { font-size: 0.9rem; font-weight: 750; line-height: 1.05; }
.public-course-edition-date > span small { display: block; font-size: 0.68rem; font-weight: 600; margin-top: 0.2rem; opacity: 0.72; }
.public-course-edition-date > em { font-size: 0.66rem; font-style: normal; font-weight: 700; letter-spacing: 0.05em; opacity: 0.78; text-transform: uppercase; }
.public-course-edition-facts { display: grid; margin: 0; padding: 0.35rem 1.3rem; }
.public-course-edition-facts > div { border-bottom: 1px solid #edf0f2; padding: 0.85rem 0; }
.public-course-edition-facts dt { color: #7a858f; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.04em; margin-bottom: 0.22rem; text-transform: uppercase; }
.public-course-edition-facts dd { color: #303a43; font-size: 0.86rem; font-weight: 600; margin: 0; }
.public-course-edition-facts ul { display: grid; gap: 0.15rem; list-style: none; margin: 0; padding: 0; }
.public-course-edition-price { background: #f7f9fa; display: grid; gap: 0.15rem; padding: 0.9rem 1.3rem; }
.public-course-edition-price span { color: #7a858f; font-size: 0.66rem; font-weight: 700; text-transform: uppercase; }
.public-course-edition-price strong { color: #252e36; font-size: 1.2rem; font-weight: 750; }
.public-course-edition-teachers { border-top: 1px solid #e5e9ec; padding: 1rem 1.1rem 1.15rem; }
.public-course-edition-teachers h3 { color: #303943; font-size: 0.82rem; font-weight: 720; margin: 0 0 0.55rem 0.2rem; }
.public-course-edition-teachers p { color: #7a858f; font-size: 0.8rem; margin: 0 0 0 0.2rem; }
.public-course-edition-card .public-course-teacher:hover { background: rgb(var(--public-course-accent-rgb) / 8%); }
.public-course-edition-card .public-course-teacher small { color: var(--public-course-accent); }
.public-course-edition-empty { padding: 1.5rem 1.3rem; }
.public-course-edition-empty strong { color: #303943; display: block; font-size: 1.15rem; margin-bottom: 0.4rem; }
.public-course-edition-empty p { color: #56616b; margin-bottom: 0.6rem; }
.public-course-edition-empty small { color: #858f98; }

/* Estructura administrativa */
.admin-shell {
    --admin-sidebar-width: 16.5rem;
    --admin-topbar-height: 4.5rem;
    display: block;
    min-height: 100vh;
}

.admin-topbar {
    background: linear-gradient(110deg, #171a1d 0%, #252a2f 100%);
    box-shadow: 0 0.25rem 1rem rgb(0 0 0 / 14%);
    height: var(--admin-topbar-height);
    z-index: 1040;
}

.admin-topbar-start { min-width: 0; }
.admin-brand { color: #fff; min-width: 0; }
.admin-brand:hover { color: #fff; }
.admin-brand-logo { height: 2.75rem; max-width: 12rem; object-fit: contain; }
.admin-brand-symbol,
.admin-user-avatar {
    align-items: center;
    background: var(--bs-primary);
    border-radius: 0.75rem;
    color: var(--branding-primary-contrast, #fff);
    display: inline-flex;
    flex: 0 0 auto;
    font-weight: 700;
    justify-content: center;
}
.admin-brand-symbol { height: 2.5rem; width: 2.5rem; }
.admin-brand-name { font-size: 1rem; font-weight: 650; line-height: 1.15; }
.admin-brand-caption { color: rgb(255 255 255 / 58%); font-size: 0.7rem; letter-spacing: 0.025em; }

.admin-user-button {
    border: 0;
    color: #fff;
    padding: 0.35rem 0.55rem;
}
.admin-user-button:hover,
.admin-user-button:focus,
.admin-user-button.show { background: rgb(255 255 255 / 8%); color: #fff; }
.admin-user-avatar { border-radius: 50%; height: 2.35rem; width: 2.35rem; }
.admin-user-name { font-size: 0.82rem; font-weight: 600; line-height: 1.15; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-user-role { color: rgb(255 255 255 / 55%); font-size: 0.68rem; }
.admin-user-menu { border-radius: 0.8rem; min-width: 14rem; }

.admin-sidebar {
    --bs-offcanvas-width: var(--admin-sidebar-width);
    background: #f8f9fb;
}
.admin-sidebar .admin-sidebar-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow-y: auto;
    padding: 1.5rem 1.15rem 2rem;
}
.admin-sidebar-body > nav { flex: 0 0 auto; }
.admin-nav-section { padding: 0.25rem 0 0.9rem; }
.admin-nav-section + .admin-nav-section {
    border-top: 1px solid #e6e9ed;
    padding-top: 0.9rem;
}
.admin-nav-section:last-child { padding-bottom: 0; }
.admin-nav-heading {
    align-items: center;
    color: #89919c;
    cursor: pointer;
    display: flex;
    font-size: 0.66rem;
    font-weight: 750;
    justify-content: space-between;
    letter-spacing: 0.11em;
    margin: 0 0 0.55rem;
    min-height: 2rem;
    padding: 0 0.7rem;
    text-transform: uppercase;
}
.admin-nav-section:not([open]) .admin-nav-heading { margin-bottom: 0; }
.admin-nav-heading-active { color: var(--bs-primary); }
.admin-nav-heading::-webkit-details-marker,
.admin-nav-group-trigger::-webkit-details-marker { display: none; }
.admin-nav-heading::marker,
.admin-nav-group-trigger::marker { content: ''; }
.admin-nav-heading:focus-visible,
.admin-nav-group-trigger:focus-visible { border-radius: 0.5rem; outline: 2px solid var(--bs-primary); outline-offset: 2px; }
.admin-nav-chevron {
    border-bottom: 1.5px solid currentColor;
    border-right: 1.5px solid currentColor;
    display: inline-block;
    flex: 0 0 auto;
    height: 0.45rem;
    transform: rotate(45deg);
    transition: transform 160ms ease;
    width: 0.45rem;
}
.admin-nav-section[open] > .admin-nav-heading .admin-nav-chevron,
.admin-nav-group[open] > .admin-nav-group-trigger .admin-nav-chevron { transform: rotate(225deg); }
.admin-nav-link {
    align-items: center;
    border: 1px solid transparent;
    border-radius: 0.7rem;
    color: #4f5863;
    display: flex;
    font-size: 0.88rem;
    font-weight: 500;
    gap: 0.8rem;
    min-height: 2.55rem;
    padding: 0.5rem 0.75rem;
    position: relative;
    transition: background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, color 160ms ease, transform 160ms ease;
}
.admin-nav-link:hover {
    background: #fff;
    border-color: #e7eaee;
    box-shadow: 0 0.18rem 0.65rem rgb(26 35 45 / 6%);
    color: #20262d;
    transform: translateY(-1px);
}
.admin-nav-link:focus-visible {
    box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 20%);
    outline: 0;
}
.admin-nav-link.active,
.admin-nav-link.active:hover {
    background: var(--bs-primary);
    border-color: var(--bs-primary);
    box-shadow: 0 0.3rem 0.85rem rgb(var(--bs-primary-rgb) / 20%);
    color: var(--branding-primary-contrast, #fff);
    font-weight: 650;
    transform: none;
}
.admin-nav-icon {
    align-items: center;
    color: #77818c;
    display: inline-flex;
    flex: 0 0 auto;
    height: 1.35rem;
    justify-content: center;
    transition: color 160ms ease, transform 160ms ease;
    width: 1.35rem;
}
.admin-nav-icon svg { height: 1.25rem; width: 1.25rem; }
.admin-nav-link:hover .admin-nav-icon { color: var(--bs-primary); transform: scale(1.05); }
.admin-nav-link.active .admin-nav-icon,
.admin-nav-link.active:hover .admin-nav-icon { color: inherit; transform: none; }
.admin-nav-link > span:nth-child(2) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.admin-nav-group-trigger { cursor: pointer; }
.admin-nav-group-trigger .admin-nav-chevron { margin-left: auto; }
.admin-nav-group-trigger.active,
.admin-nav-group-trigger.active:hover {
    background: rgb(var(--bs-primary-rgb) / 9%);
    border-color: transparent;
    box-shadow: none;
    color: var(--bs-primary);
}
.admin-nav-submenu {
    border-left: 1px solid #dfe3e8;
    gap: 0.15rem;
    margin: 0.2rem 0 0.3rem 1.4rem;
    padding-left: 0.55rem;
}
.admin-nav-submenu .admin-nav-link { font-size: 0.8rem; min-height: 2.25rem; padding-inline: 0.7rem; }
.admin-sidebar-footer {
    background: #f8f9fb;
    border-top: 1px solid #e2e6ea;
    display: flex;
    flex: 0 0 auto;
    flex-direction: column;
    margin-top: auto;
    padding: 1.15rem 0.7rem 0;
}
.admin-sidebar-system-name {
    color: #303740;
    font-size: 0.82rem;
    font-weight: 700;
    line-height: 1.25;
}
.admin-sidebar-system-caption {
    color: #8a939d;
    font-size: 0.7rem;
    margin-top: 0.15rem;
}

.admin-main {
    max-width: none;
    min-height: 100vh;
    padding-top: var(--admin-topbar-height);
    width: 100%;
}
.admin-content { max-width: 100rem; }
.admin-content > :first-child { scroll-margin-top: calc(var(--admin-topbar-height) + 1rem); }

/* Sistema visual compartido de la administración */
.admin-content > * { margin-inline: auto; max-width: 92rem; }
.admin-content h1.h3 {
    color: #20262d;
    font-size: clamp(1.75rem, 2.5vw, 2.15rem);
    font-weight: 700;
    letter-spacing: -0.025em;
}
.admin-content h1.h3 + .text-secondary,
.admin-content .h3 + .text-secondary { color: #707983 !important; margin-top: 0.4rem; }
.admin-content > .d-flex.mb-4,
.admin-content > .d-flex.flex-wrap.mb-4 { gap: 1.25rem; margin-bottom: 2rem !important; }
.admin-content > .d-flex.mb-4 > .d-flex,
.admin-content > .d-flex.flex-wrap.mb-4 > .d-flex { flex-wrap: wrap; }
.admin-content .card {
    background: #fff;
    border: 1px solid #e2e6ea;
    border-radius: 0.95rem;
    box-shadow: 0 0.35rem 1.1rem rgb(25 35 45 / 4%) !important;
    overflow: hidden;
}
.admin-content .card-header {
    align-items: center;
    background: #fff;
    border-bottom: 1px solid #e8ebee;
    display: flex;
    min-height: 4.35rem;
    padding: 1rem 1.35rem;
}
.admin-content .card-header h2,
.admin-content .card-header .h5 {
    color: #29313a;
    font-size: 1rem;
    font-weight: 700;
}
.admin-content .card-body { padding: 1.35rem; }
.admin-content form.card.card-body { background: #fbfcfd; margin-bottom: 1.5rem !important; }
.admin-content .form-label,
.admin-content legend.h6 {
    color: #47515b;
    font-size: 0.78rem;
    font-weight: 650;
    margin-bottom: 0.45rem;
}
.admin-content .form-control,
.admin-content .form-select,
.admin-content .input-group-text {
    border-color: #d9dee4;
    border-radius: 0.62rem;
    min-height: 2.8rem;
}
.admin-content input[type="file"].form-control {
    line-height: calc(2.8rem - 2px);
    padding: 0;
}
.admin-content input[type="file"].form-control::file-selector-button {
    height: calc(2.8rem - 2px);
    margin: 0 0.75rem 0 0;
    padding: 0 0.85rem;
    vertical-align: top;
}
.admin-content textarea.form-control { line-height: 1.55; min-height: 6.5rem; }
.admin-content .form-control:focus,
.admin-content .form-select:focus {
    background-color: #fff;
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 20%);
    outline: 0;
}
.admin-content .ts-wrapper.form-select.focus {
    background-color: #fff;
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 20%);
    outline: 0;
}
.admin-content .ts-wrapper.form-select.focus .ts-control { box-shadow: none; }
.admin-content [data-person-form] .card { overflow: visible; }
.admin-content [data-person-form] .ts-wrapper.dropdown-active { z-index: 1055; }
.admin-content [data-person-form] .ts-dropdown {
    border-color: #d9dee4;
    border-radius: 0.62rem;
    box-shadow: 0 0.8rem 1.8rem rgb(25 35 45 / 16%);
    margin-top: 0.4rem;
    overflow: hidden;
}
.admin-content [data-person-form] .ts-dropdown .active {
    background: rgb(var(--bs-primary-rgb) / 9%);
    color: #29313a;
}
.admin-content .form-control:disabled,
.admin-content .form-select:disabled { background-color: #eef1f4; color: #65707b; }
.admin-content .form-text { color: #818b95; font-size: 0.72rem; line-height: 1.45; }
.admin-content .form-check {
    align-items: center;
    background: #f8fafb;
    border: 1px solid #e3e7ea;
    border-radius: 0.65rem;
    display: flex;
    gap: 0.65rem;
    margin-bottom: 0.55rem !important;
    min-height: 2.8rem;
    padding: 0.65rem 0.8rem 0.65rem 2.35rem;
}
.admin-content .form-check-input { margin-top: 0; }
.admin-content .form-check-label { color: #46505a; font-size: 0.84rem; font-weight: 550; }
.btn {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    line-height: 1;
    text-align: center;
    vertical-align: middle;
}

.btn > svg,
.btn > span { flex: 0 0 auto; }

.admin-content .btn {
    border-radius: 0.62rem;
    font-weight: 600;
    min-height: 2.6rem;
    padding-inline: 0.9rem;
}
.admin-content .btn-sm { border-radius: 0.5rem; min-height: 2.1rem; padding-inline: 0.7rem; }
.admin-content .btn-primary { box-shadow: 0 0.3rem 0.75rem rgb(var(--bs-primary-rgb) / 14%); }
.admin-content .btn-group { flex-wrap: wrap; gap: 0.35rem; justify-content: flex-end; }
.admin-content .btn-group > .btn { border-radius: 0.5rem !important; margin-left: 0 !important; }
.admin-content .table-responsive { scrollbar-color: #cbd2d8 transparent; }
.admin-content .table { --bs-table-bg: transparent; margin: 0; }
.admin-content .table thead th {
    background: #f8f9fb;
    border-bottom-color: #e1e5e9;
    color: #69737e;
    font-size: 0.7rem;
    font-weight: 750;
    letter-spacing: 0.045em;
    padding: 0.85rem 1rem;
    text-transform: uppercase;
    white-space: nowrap;
}
.admin-content .table tbody td {
    border-bottom-color: #edf0f2;
    color: #414a54;
    font-size: 0.86rem;
    padding: 0.95rem 1rem;
    vertical-align: middle;
}
.admin-content .table tbody tr:last-child td { border-bottom: 0; }
.admin-content .table-hover > tbody > tr:hover > * { --bs-table-bg-state: rgb(var(--bs-primary-rgb) / 3.5%); }
.admin-content .table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: #fbfcfd; }
.admin-content .table a:not(.btn) { color: #252c34; font-weight: 650; text-decoration: none; }
.admin-content .table a:not(.btn):hover { color: var(--bs-primary); }
.admin-content .badge { border-radius: 999px; font-size: 0.67rem; font-weight: 700; padding: 0.4rem 0.62rem; }
.admin-content .table td.text-center.text-secondary { color: #7c8791 !important; padding-block: 2.5rem !important; }
.admin-content dl dt { color: #77818b; font-size: 0.76rem; font-weight: 650; }
.admin-content dl dd { color: #37414a; font-size: 0.86rem; }
.admin-content .card-body > dl.row > dt,
.admin-content .card-body > dl.row > dd { border-bottom: 1px solid #edf0f2; margin: 0; padding-block: 0.72rem; }
.admin-content .card-body > dl.row > dt:last-of-type,
.admin-content .card-body > dl.row > dd:last-of-type { border-bottom: 0; }
.admin-content .alert { border: 0; border-radius: 0.75rem; box-shadow: inset 0 0 0 1px rgb(0 0 0 / 5%); }
.admin-content .pagination { gap: 0.25rem; justify-content: flex-end; }
.admin-content .page-link { border-color: #dde2e6; border-radius: 0.5rem !important; color: #5e6973; }
.admin-content .page-item.active .page-link { background: var(--bs-primary); border-color: var(--bs-primary); color: var(--branding-primary-contrast); }

/* Detalle de personas */
.person-detail-page { padding-bottom: 1rem; }
.person-detail-header { align-items: flex-end; display: flex; gap: 2rem; justify-content: space-between; margin-bottom: 1.75rem; }
.person-detail-heading { min-width: 0; }
.person-detail-kicker,
.person-card-heading span,
.person-documents-heading > div > span { color: var(--bs-primary); display: block; font-size: 0.65rem; font-weight: 750; letter-spacing: 0.09em; text-transform: uppercase; }
.person-detail-header h1 { color: #242b33; font-size: clamp(1.8rem, 3vw, 2.35rem); font-weight: 750; letter-spacing: -0.035em; margin: 0.15rem 0 0.35rem; }
.person-detail-heading-meta { align-items: center; color: #727c86; display: flex; flex-wrap: wrap; font-size: 0.78rem; gap: 0.6rem; }
.person-detail-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 0.5rem; }
.person-detail-layout { align-items: start; display: grid; gap: 1.35rem; grid-template-columns: minmax(0, 3fr) minmax(22rem, 2fr); }
.person-information-column,
.person-documents-column { min-width: 0; }
.person-information-column { display: grid; gap: 1rem; }
.admin-content .person-information-card,
.admin-content .person-document-card { border-radius: 1rem; }
.person-card-heading { align-items: center; border-bottom: 1px solid #e9ecef; display: flex; justify-content: space-between; padding: 1.1rem 1.25rem 0.95rem; }
.person-card-heading h2,
.person-documents-heading h2 { color: #29313a; font-size: 1.1rem; font-weight: 720; margin: 0.15rem 0 0; }
.person-data-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.person-data-item { border-bottom: 1px solid #edf0f2; min-width: 0; padding: 1rem 1.25rem; }
.person-data-item:nth-last-child(-n + 2) { border-bottom: 0; }
.person-data-item:nth-child(odd) { border-right: 1px solid #edf0f2; }
.person-data-item span,
.person-activity-grid span { color: #818b95; display: block; font-size: 0.67rem; font-weight: 650; margin-bottom: 0.3rem; }
.person-data-item strong,
.person-activity-grid strong { color: #36404a; display: block; font-size: 0.86rem; font-weight: 620; line-height: 1.45; overflow-wrap: anywhere; }
.person-data-item a { color: #36404a; text-decoration: none; }
.person-data-item a:hover { color: var(--bs-primary); text-decoration: underline; }
.person-activity-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 0.35rem 0.6rem; }
.person-activity-grid > div { padding: 0.8rem 0.65rem; }
.person-documents-column { background: #f1f3f5; border: 1px solid #e0e4e8; border-radius: 1rem; padding: 1rem; }
.person-documents-heading { align-items: flex-start; display: flex; gap: 1rem; justify-content: space-between; padding: 0.2rem 0.15rem 1rem; }
.person-documents-heading p { color: #77828c; font-size: 0.72rem; line-height: 1.5; margin: 0.35rem 0 0; max-width: 28rem; }
.person-documents-heading > .badge { flex: 0 0 auto; margin-top: 0.15rem; }
.person-document-stack { display: grid; gap: 0.85rem; }
.person-document-card { padding: 1rem; }
.person-document-card-header { align-items: flex-start; display: flex; gap: 0.75rem; justify-content: space-between; margin-bottom: 0.85rem; }
.person-document-card-header h3 { color: #303943; font-size: 0.92rem; font-weight: 720; margin: 0; }
.person-document-card-header p { color: #818b95; font-size: 0.67rem; line-height: 1.4; margin: 0.2rem 0 0; overflow-wrap: anywhere; }
.person-document-card-header .badge { flex: 0 0 auto; }
.person-document-preview { align-items: center; aspect-ratio: 16 / 10; background: #eef1f3; border: 1px solid #e1e5e8; border-radius: 0.7rem; display: flex; justify-content: center; margin-bottom: 0.8rem; overflow: hidden; }
.person-document-preview img { height: 100%; object-fit: contain; width: 100%; }
.person-document-preview > div { height: 100%; width: 100%; }
.person-document-preview > div > div { align-items: center; color: #77818b; display: flex; font-size: 0.72rem; height: 100%; justify-content: center; padding: 1rem; }
.person-document-actions,
.person-document-upload-actions { display: flex; flex-wrap: wrap; gap: 0.45rem; }
.person-document-actions { margin-bottom: 0.85rem; }
.person-document-review { background: #f7f9fa; border: 1px solid #e5e9ec; border-radius: 0.75rem; margin-bottom: 0.85rem; padding: 0.85rem; }
.person-document-review.is-aprobada { background: #f3faf6; border-color: #cfe8d9; }
.person-document-review.is-rechazada { background: #fff7f7; border-color: #f1d4d7; }
.person-document-review-state { margin-bottom: 0.75rem; }
.person-document-review-state h4 { color: #3e4852; font-size: 0.78rem; font-weight: 720; margin: 0; }
.person-document-review-state p { color: #77818b; font-size: 0.67rem; line-height: 1.45; margin: 0.25rem 0 0; }
.person-document-review-state p span { white-space: nowrap; }
.person-document-review-actions { align-items: flex-start; display: flex; flex-wrap: wrap; gap: 0.45rem; }
.person-document-reject-details { min-width: 0; }
.person-document-reject-details[open] { flex-basis: 100%; }
.person-document-reject-details > summary { display: inline-flex; list-style: none; }
.person-document-reject-details > summary::-webkit-details-marker { display: none; }
.person-document-reject-details[open] > summary { margin-bottom: 0.75rem; }
.person-document-reject-form { border-top: 1px solid #e2e6e9; padding-top: 0.8rem; }
.person-document-review textarea.form-control { min-height: 5rem; }
.person-document-notification { border: 1px solid #e5e9ec; border-radius: 0.7rem; margin-bottom: 0.85rem; padding: 0.75rem; }
.person-document-notification > div { align-items: center; display: flex; gap: 0.5rem; justify-content: space-between; }
.person-document-notification strong { color: #47515b; font-size: 0.68rem; }
.person-document-notification p,
.person-document-help { color: #818b95; font-size: 0.65rem; line-height: 1.45; margin: 0.35rem 0 0; }
.admin-content > .person-document-viewer { margin: 0; max-width: none; }
.person-document-viewer .modal-dialog { max-width: min(76rem, calc(100vw - 2rem)); }
.person-document-viewer .modal-content { border: 0; border-radius: 1rem; box-shadow: 0 1.5rem 4rem rgb(15 23 31 / 28%); overflow: hidden; }
.person-document-viewer .modal-header { align-items: center; border-bottom-color: #e5e9ec; padding: 1rem 1.25rem; }
.person-document-viewer .modal-header > div > span { color: var(--bs-primary); display: block; font-size: 0.62rem; font-weight: 750; letter-spacing: 0.09em; text-transform: uppercase; }
.person-document-viewer .modal-title { color: #2e3740; font-size: 1rem; font-weight: 720; margin-top: 0.12rem; overflow-wrap: anywhere; }
.person-document-viewer .modal-body { background: #20262d; padding: 0; }
.person-document-viewer-content { align-items: center; color: #d4d9de; display: flex; height: min(72vh, 52rem); justify-content: center; min-height: 24rem; overflow: hidden; }
.person-document-viewer-content > img { height: 100%; object-fit: contain; width: 100%; }
.person-document-viewer-content > object,
.person-document-viewer-content > div { height: 100%; width: 100%; }
.person-document-viewer-content > div { align-items: center; display: flex; justify-content: center; padding: 1rem; }
.person-document-viewer .modal-footer { border-top: 0; padding: 0.85rem 1.25rem; }

/* Alta y edición de docentes */
.teacher-create-page { margin-inline: auto; max-width: 100rem; padding-bottom: 1rem; }
.teacher-create-header { align-items: flex-end; display: flex; gap: 2rem; justify-content: space-between; margin-bottom: 1.5rem; }
.teacher-page-kicker,
.teacher-panel-heading > div > span { color: var(--bs-primary); display: block; font-size: 0.64rem; font-weight: 750; letter-spacing: 0.1em; text-transform: uppercase; }
.teacher-create-header h1 { color: #242b33; font-size: clamp(1.8rem, 3vw, 2.25rem); font-weight: 750; letter-spacing: -0.035em; margin: 0.15rem 0 0.3rem; }
.teacher-create-header p { color: #727d87; margin: 0; }
.teacher-create-requirements { align-items: center; background: #f4f8fa; border: 1px solid #dce7ec; border-radius: 0.9rem; display: grid; gap: 1rem; grid-template-columns: auto minmax(13rem, 1fr) auto; margin-bottom: 1rem; padding: 0.9rem 1.1rem; }
.teacher-create-requirements-icon { align-items: center; background: var(--bs-primary); border: 1px solid var(--bs-primary); border-radius: 0.65rem; box-shadow: 0 0.3rem 0.8rem rgb(var(--bs-primary-rgb) / 18%); color: var(--branding-primary-contrast, #fff); display: flex; height: 2.5rem; justify-content: center; width: 2.5rem; }
.teacher-create-requirements-icon svg { height: 1.2rem; width: 1.2rem; }
.teacher-create-requirements > div:nth-child(2) strong { color: #33414b; display: block; font-size: 0.78rem; }
.teacher-create-requirements > div:nth-child(2) p { color: #74818a; font-size: 0.69rem; margin: 0.12rem 0 0; }
.teacher-create-requirement-files { display: flex; flex-wrap: wrap; gap: 0.45rem; justify-content: flex-end; }
.teacher-create-requirement-files span { background: #fff; border: 1px solid #dce5e9; border-radius: 999px; color: #66747e; font-size: 0.65rem; padding: 0.35rem 0.6rem; }
.teacher-lookup-panel,
.teacher-profile-main,
.teacher-profile-files { background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; box-shadow: 0 0.35rem 1rem rgb(25 35 45 / 4%); overflow: hidden; }
.teacher-lookup-panel { margin-bottom: 1rem; }
.teacher-panel-heading { align-items: flex-start; border-bottom: 1px solid #e8ecef; display: flex; justify-content: space-between; padding: 1rem 1.25rem; }
.teacher-panel-heading h2 { color: #303943; font-size: 1rem; font-weight: 720; margin: 0.12rem 0 0; }
.teacher-panel-heading p { color: #7d8791; font-size: 0.69rem; line-height: 1.45; margin: 0.25rem 0 0; }
.teacher-lookup-form { align-items: end; display: grid; gap: 0.8rem; grid-template-columns: minmax(10rem, 0.8fr) minmax(14rem, 1.5fr) auto; padding: 1rem 1.25rem 1.15rem; }
.teacher-lookup-form .btn { align-items: center; display: inline-flex; gap: 0.45rem; justify-content: center; min-height: 2.75rem; }
.teacher-lookup-form .btn svg { height: 1rem; width: 1rem; }
.teacher-person-confirmation { align-items: center; background: #fff; border: 1px solid #dce7e1; border-left: 0.25rem solid var(--bs-success); border-radius: 0.9rem; display: grid; gap: 0.9rem; grid-template-columns: auto minmax(0, 1fr) auto; margin-bottom: 1rem; padding: 1rem 1.15rem; }
.teacher-person-icon { align-items: center; background: rgb(var(--bs-success-rgb) / 9%); border-radius: 999px; color: var(--bs-success); display: flex; height: 2.8rem; justify-content: center; width: 2.8rem; }
.teacher-person-icon svg { height: 1.3rem; width: 1.3rem; }
.teacher-person-confirmation > div:nth-child(2) > span { color: var(--bs-success); display: block; font-size: 0.62rem; font-weight: 750; letter-spacing: 0.08em; text-transform: uppercase; }
.teacher-person-confirmation h2 { color: #2e3740; font-size: 1rem; font-weight: 720; margin: 0.12rem 0; }
.teacher-person-confirmation p { color: #7a858e; font-size: 0.7rem; margin: 0; overflow-wrap: anywhere; }
.teacher-person-status { align-items: center; background: #f2f8f4; border-radius: 999px; color: #39734f; display: inline-flex; font-size: 0.65rem; font-weight: 700; gap: 0.35rem; padding: 0.38rem 0.65rem; }
.teacher-person-status > span { background: var(--bs-success); border-radius: 50%; height: 0.42rem; width: 0.42rem; }
.teacher-create-profile-form > .card { border: 1px solid #e1e5e8; border-radius: 0.9rem; }
.teacher-profile-grid { align-items: start; display: grid; gap: 1rem; grid-template-columns: minmax(0, 3fr) minmax(20rem, 2fr); }
.teacher-profile-main-body,
.teacher-profile-files-body { padding: 1.15rem 1.25rem; }
.teacher-biography-field textarea.form-control { min-height: 10rem; resize: vertical; }
.teacher-field-heading { align-items: baseline; display: flex; gap: 1rem; justify-content: space-between; }
.teacher-field-heading > span { color: #8a949d; font-size: 0.64rem; }
.teacher-profile-files { position: sticky; top: calc(var(--admin-topbar-height) + 1.25rem); }
.teacher-profile-files-body { display: grid; gap: 0.8rem; }
.teacher-upload-card { align-items: center; background: #f7f9fa; border: 1px solid #e2e6e9; border-radius: 0.8rem; display: grid; gap: 0.9rem; grid-template-columns: 5.5rem minmax(0, 1fr); padding: 0.8rem; }
.teacher-photo-preview { align-items: center; aspect-ratio: 1; background: #e9edef; border: 1px solid #dde2e6; border-radius: 0.7rem; display: flex; justify-content: center; overflow: hidden; }
.teacher-photo-preview > div { align-items: center; color: #86919a; display: flex; flex-direction: column; font-size: 0.6rem; gap: 0.3rem; }
.teacher-photo-preview svg { height: 1.5rem; width: 1.5rem; }
.teacher-photo-preview img { height: 100%; object-fit: cover; width: 100%; }
.teacher-upload-content { align-items: flex-start; display: flex; flex-wrap: wrap; gap: 0.65rem; justify-content: space-between; min-width: 0; }
.teacher-upload-content > div:first-child { min-width: 0; }
.teacher-upload-content strong { color: #37414a; display: block; font-size: 0.77rem; }
.teacher-upload-content span { color: #84909a; display: block; font-size: 0.62rem; margin-top: 0.18rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.teacher-upload-error { color: var(--bs-danger); flex-basis: 100%; font-size: 0.68rem; }
.teacher-cv-upload { grid-template-columns: 3.2rem minmax(0, 1fr); }
.teacher-upload-file-icon { align-items: center; background: rgb(var(--bs-primary-rgb) / 8%); border-radius: 0.65rem; color: var(--bs-primary); display: flex; height: 3.2rem; justify-content: center; width: 3.2rem; }
.teacher-upload-file-icon svg { height: 1.45rem; width: 1.45rem; }
.teacher-create-actions { align-items: center; background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; display: flex; gap: 2rem; justify-content: space-between; margin-top: 1rem; padding: 0.85rem 1rem; }
.teacher-create-actions > div:first-child strong { color: #36404a; display: block; font-size: 0.75rem; }
.teacher-create-actions > div:first-child span { color: #87919a; display: block; font-size: 0.65rem; margin-top: 0.1rem; }
.teacher-create-actions > div:last-child { display: flex; gap: 0.5rem; }
.teacher-links { border-top: 1px solid #e8ecef; margin-top: 1.2rem; padding-top: 1.1rem; }
.teacher-links-heading { align-items: flex-start; display: flex; gap: 1rem; justify-content: space-between; margin-bottom: 0.8rem; }
.teacher-links-heading h3 { color: #3a444d; font-size: 0.88rem; font-weight: 720; margin: 0; }
.teacher-links-heading p { color: #87919a; font-size: 0.65rem; line-height: 1.45; margin: 0.2rem 0 0; max-width: 38rem; }
.teacher-links-empty { align-items: center; background: #f7f9fa; border: 1px dashed #d8dee3; border-radius: 0.7rem; color: #8b959e; display: flex; font-size: 0.69rem; gap: 0.5rem; justify-content: center; padding: 1rem; }
.teacher-links-empty svg { height: 1rem; width: 1rem; }
.teacher-link-list { display: grid; gap: 0.65rem; }
.teacher-link-row { align-items: end; background: #f8f9fa; border: 1px solid #e2e6e9; border-radius: 0.7rem; display: grid; gap: 0.65rem; grid-template-columns: minmax(9rem, 0.8fr) minmax(14rem, 1.4fr) auto; padding: 0.75rem; }
.teacher-link-actions > .form-label { display: block; }

/* Ficha de docentes */
.teacher-detail-page { margin-inline: auto; max-width: 100rem; padding-bottom: 1rem; }
.teacher-detail-header { align-items: flex-end; display: flex; gap: 2rem; justify-content: space-between; margin-bottom: 1.5rem; }
.teacher-detail-kicker,
.teacher-record-card > span,
.teacher-detail-panel-heading > div > span { color: var(--bs-primary); display: block; font-size: 0.64rem; font-weight: 750; letter-spacing: 0.1em; text-transform: uppercase; }
.teacher-detail-title-line { align-items: center; display: flex; flex-wrap: wrap; gap: 0.7rem; margin: 0.15rem 0 0.25rem; }
.teacher-detail-title-line h1 { color: #242b33; font-size: clamp(1.9rem, 3vw, 2.45rem); font-weight: 760; letter-spacing: -0.04em; line-height: 1.08; margin: 0; }
.teacher-detail-title-line .badge { font-size: 0.65rem; }
.teacher-detail-header > div:first-child > p { color: #727d87; margin: 0; }
.teacher-detail-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: flex-end; }
.teacher-detail-layout { align-items: start; display: grid; gap: 1rem; grid-template-columns: minmax(18rem, 0.85fr) minmax(0, 2.15fr); }
.teacher-detail-sidebar { display: grid; gap: 1rem; position: sticky; top: calc(var(--admin-topbar-height) + 1.25rem); }
.teacher-portrait-card,
.teacher-record-card,
.teacher-detail-panel { background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; box-shadow: 0 0.35rem 1rem rgb(25 35 45 / 4%); overflow: hidden; }
.teacher-portrait-media { aspect-ratio: 4 / 5; background: #eef1f3; overflow: hidden; }
.teacher-portrait-media img { height: 100%; object-fit: cover; width: 100%; }
.teacher-portrait-placeholder { align-items: center; color: #7d8992; display: flex; flex-direction: column; gap: 0.65rem; height: 100%; justify-content: center; }
.teacher-portrait-placeholder svg { height: 3rem; width: 3rem; }
.teacher-portrait-placeholder span { font-size: 0.72rem; font-weight: 650; }
.teacher-portrait-info { padding: 1rem 1.15rem 1.15rem; }
.teacher-portrait-info > span { color: var(--bs-primary); display: block; font-size: 0.62rem; font-weight: 750; letter-spacing: 0.09em; text-transform: uppercase; }
.teacher-portrait-info h2 { color: #303943; font-size: 1.05rem; font-weight: 740; margin: 0.15rem 0 0.15rem; }
.teacher-portrait-info p { color: #7b8690; font-size: 0.72rem; margin: 0 0 0.85rem; overflow-wrap: anywhere; }
.teacher-record-card { padding: 1rem 1.15rem; }
.teacher-record-card h2 { color: #303943; font-size: 1rem; font-weight: 720; margin: 0.12rem 0 0.75rem; }
.teacher-record-card dl { margin: 0; }
.teacher-record-card dl > div { align-items: baseline; border-top: 1px solid #edf0f2; display: flex; gap: 1rem; justify-content: space-between; padding: 0.62rem 0; }
.teacher-record-card dt { color: #7d8892; font-size: 0.66rem; font-weight: 650; }
.teacher-record-card dd { color: #3b454e; font-size: 0.69rem; margin: 0; text-align: right; }
.teacher-detail-content { display: grid; gap: 1rem; min-width: 0; }
.teacher-detail-panel-heading { align-items: center; border-bottom: 1px solid #e8ecef; display: flex; gap: 1rem; justify-content: space-between; padding: 1rem 1.2rem; }
.teacher-detail-panel-heading h2 { color: #303943; font-size: 1rem; font-weight: 720; margin: 0.12rem 0 0; }
.teacher-biography-copy { color: #414b54; font-size: 0.84rem; line-height: 1.75; padding: 1.25rem 1.35rem; }
.teacher-biography-copy p { margin: 0 0 1rem; }
.teacher-biography-copy p:last-child { margin-bottom: 0; }
.teacher-biography-copy strong { color: #252d35; font-weight: 720; }
.teacher-resources-grid { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1.15fr) minmax(20rem, 0.85fr); }
.teacher-resource-count { align-items: center; background: #f1f4f6; border-radius: 999px; color: #66727c; display: inline-flex; font-size: 0.65rem; font-weight: 700; height: 1.65rem; justify-content: center; min-width: 1.65rem; padding-inline: 0.45rem; }
.teacher-detail-resource-body { padding: 1rem 1.15rem; }
.teacher-detail-empty { background: #f7f9fa; border: 1px dashed #d9dfe3; border-radius: 0.7rem; color: #7f8a93; font-size: 0.7rem; padding: 1rem; text-align: center; }
.teacher-detail-empty.is-warning { background: #fff9ed; border-color: #ead9b6; color: #806731; }
.teacher-professional-links { display: grid; gap: 0.6rem; }
.teacher-professional-links > a { align-items: center; background: #f8fafb; border: 1px solid #e4e8eb; border-radius: 0.7rem; color: #39434c; display: grid; gap: 0.75rem; grid-template-columns: auto minmax(0, 1fr) auto; padding: 0.72rem 0.8rem; text-decoration: none; transition: background-color 140ms ease, border-color 140ms ease, transform 140ms ease; }
.teacher-professional-links > a:hover { background: rgb(var(--bs-primary-rgb) / 5%); border-color: rgb(var(--bs-primary-rgb) / 22%); color: #252d35; transform: translateY(-1px); }
.teacher-link-icon { align-items: center; background: rgb(var(--bs-primary-rgb) / 9%); border-radius: 0.55rem; color: var(--bs-primary); display: flex; height: 2.2rem; justify-content: center; width: 2.2rem; }
.teacher-link-icon svg { height: 1rem; width: 1rem; }
.teacher-professional-links strong,
.teacher-professional-links small { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.teacher-professional-links strong { font-size: 0.74rem; }
.teacher-professional-links small { color: #818c95; font-size: 0.62rem; margin-top: 0.1rem; }
.teacher-link-external { color: #89949c; height: 0.95rem; width: 0.95rem; }
.teacher-cv-resource { align-items: center; background: #f8fafb; border: 1px solid #e4e8eb; border-radius: 0.7rem; display: grid; gap: 0.75rem; grid-template-columns: auto minmax(0, 1fr) auto; padding: 0.8rem; }
.teacher-cv-icon { align-items: center; background: rgb(var(--bs-primary-rgb) / 9%); border-radius: 0.6rem; color: var(--bs-primary); display: flex; height: 2.5rem; justify-content: center; width: 2.5rem; }
.teacher-cv-icon svg { height: 1.2rem; width: 1.2rem; }
.teacher-cv-resource strong,
.teacher-cv-resource span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.teacher-cv-resource strong { color: #36404a; font-size: 0.72rem; }
.teacher-cv-resource span { color: #84909a; font-size: 0.62rem; margin-top: 0.12rem; }

/* Especialización visual de Cursos */
.courses-page {
    margin-inline: auto;
    max-width: 92rem;
}
.courses-page .app-page-header {
    align-items: center;
    display: flex;
    gap: 2rem;
    justify-content: space-between;
    margin-bottom: 2rem;
}
.courses-page .app-page-header h1 {
    color: #20262d;
    font-size: clamp(1.75rem, 2.5vw, 2.15rem);
    font-weight: 700;
    letter-spacing: -0.025em;
    margin: 0;
}
.courses-page .app-page-header p {
    color: #707983;
    margin: 0.4rem 0 0;
}
.courses-page .app-primary-action {
    align-items: center;
    border-radius: 0.7rem;
    box-shadow: 0 0.35rem 0.8rem rgb(var(--bs-primary-rgb) / 16%);
    display: inline-flex;
    flex: 0 0 auto;
    font-weight: 600;
    gap: 0.45rem;
    min-height: 2.75rem;
    padding-inline: 1rem;
}
.courses-page .app-primary-action svg,
.courses-page .app-filter-actions svg {
    height: 1.05rem;
    width: 1.05rem;
}
.courses-page .app-panel {
    background: #fff;
    border: 1px solid #e2e6ea;
    border-radius: 0.95rem;
    box-shadow: 0 0.35rem 1.1rem rgb(25 35 45 / 4%);
    margin-bottom: 1.5rem;
    overflow: hidden;
}
.courses-page .app-panel-header {
    align-items: center;
    border-bottom: 1px solid #e8ebee;
    display: flex;
    justify-content: space-between;
    min-height: 4.5rem;
    padding: 1rem 1.35rem;
}
.courses-page .app-panel-heading {
    align-items: center;
    display: flex;
    gap: 0.85rem;
}
.courses-page .app-panel-icon {
    align-items: center;
    background: rgb(var(--bs-primary-rgb) / 9%);
    border-radius: 0.65rem;
    color: var(--bs-primary);
    display: inline-flex;
    flex: 0 0 auto;
    height: 2.35rem;
    justify-content: center;
    width: 2.35rem;
}
.courses-page .app-panel-icon svg { height: 1.2rem; width: 1.2rem; }
.courses-page .app-panel-header h2 {
    color: #29313a;
    font-size: 0.98rem;
    font-weight: 700;
    margin: 0;
}
.courses-page .app-panel-header p {
    color: #858e98;
    font-size: 0.78rem;
    margin: 0.2rem 0 0;
}
.courses-page .app-filter-form {
    background: #fbfcfd;
    padding: 1.35rem;
}
.app-filter-collapse > summary { cursor: pointer; list-style: none; }
.app-filter-collapse > summary::-webkit-details-marker { display: none; }
.app-filter-collapse > summary:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: -3px; }
.app-filter-collapse:not([open]) > summary { border-bottom: 0; }
.app-filter-toggle:hover { background: rgb(var(--bs-primary-rgb) / 3%); }
.app-filter-chevron {
    border-bottom: 2px solid #697586;
    border-right: 2px solid #697586;
    display: inline-block;
    flex: 0 0 auto;
    height: 0.55rem;
    margin-left: auto;
    transform: rotate(45deg);
    transition: transform 160ms ease;
    width: 0.55rem;
}
.app-filter-collapse[open] > summary .app-filter-chevron { transform: rotate(225deg); }
.app-filter-collapse > .card-header { align-items: center; display: flex; gap: 0.75rem; min-height: 3.5rem; }
.courses-page .app-field-label {
    color: #47515b;
    font-size: 0.78rem;
    font-weight: 650;
    margin-bottom: 0.45rem;
}
.courses-page .form-control,
.courses-page .form-select {
    border-color: #d9dee4;
    border-radius: 0.62rem;
    min-height: 2.8rem;
}
.courses-page .form-control:focus,
.courses-page .form-select:focus {
    border-color: rgb(var(--bs-primary-rgb) / 55%);
    box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 11%);
}
.courses-page .app-search-control { position: relative; }
.courses-page .app-search-control > svg {
    color: #8a949f;
    height: 1.1rem;
    left: 0.9rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 1.1rem;
    z-index: 2;
}
.courses-page .app-search-control .form-control { padding-left: 2.65rem; }
.courses-page .app-filter-actions .btn {
    align-items: center;
    border-radius: 0.62rem;
    display: inline-flex;
    font-weight: 600;
    gap: 0.4rem;
    justify-content: center;
    min-height: 2.8rem;
    padding-inline: 1rem;
}
.courses-page .app-filter-actions .btn-light {
    background: #fff;
    border-color: #d9dee4;
    color: #5f6872;
}
.courses-page .app-filter-actions .btn-light:hover {
    background: #f2f4f6;
    border-color: #cdd3d9;
    color: #303840;
}
.courses-page .app-results-header { background: #fff; }
.courses-page .app-result-count {
    background: #f1f3f5;
    border-radius: 999px;
    color: #68727d;
    font-size: 0.75rem;
    font-weight: 650;
    padding: 0.4rem 0.7rem;
}
.courses-page .app-data-table thead th {
    background: #f8f9fb;
    border-bottom-color: #e1e5e9;
    color: #69737e;
    font-size: 0.7rem;
    font-weight: 750;
    letter-spacing: 0.045em;
    padding: 0.85rem 1rem;
    text-transform: uppercase;
    white-space: nowrap;
}
.courses-page .app-data-table tbody td {
    border-bottom-color: #edf0f2;
    color: #414a54;
    font-size: 0.88rem;
    padding: 1rem;
}
.courses-page .app-data-table tbody tr:last-child td { border-bottom: 0; }
.courses-page .app-data-table.table-hover > tbody > tr:hover > * {
    --bs-table-bg-state: #e9ecef;
}
.courses-page .app-data-table > tbody > .course-list-row:focus-visible > * { background-color: #e9ecef; }
.courses-page .course-list-row { cursor: pointer; transition: background-color 150ms ease; }
.courses-page .course-list-row:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: -2px; }
.courses-page .course-list-next-edition { display: grid; gap: 0.12rem; min-width: 8rem; }
.courses-page .course-list-next-edition strong { color: #303943; font-size: 0.82rem; }
.courses-page .course-list-next-edition span { color: var(--bs-primary); font-size: 0.74rem; font-weight: 700; }
.courses-page .course-list-next-edition small,
.courses-page .course-list-no-edition { color: #87919a; font-size: 0.68rem; }
.courses-page .course-list-actions { display: flex; gap: 0.4rem; justify-content: flex-end; white-space: nowrap; }
.courses-page .app-table-primary-link {
    color: #252c34;
    text-decoration: none;
}
.courses-page .app-table-primary-link:hover { color: var(--bs-primary); }
.courses-page .app-status-badge {
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    padding: 0.42rem 0.65rem;
}
.courses-page .pagination { justify-content: flex-end; }
.courses-page .page-link { border-radius: 0.5rem; margin-inline: 0.12rem; }

/* Detalle administrativo de Cursos */
.course-detail-toolbar { display: flex; justify-content: flex-end; margin-bottom: 1rem; }
.course-detail-page .course-hero { margin-bottom: 1rem; }
.course-detail-page .course-hero-media {
    background: #eef1f3;
    min-height: 25rem;
    overflow: hidden;
}
.course-detail-page .course-hero-media > img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}
.course-detail-page .course-cover-placeholder {
    align-items: center;
    background: linear-gradient(145deg, #f0f2f4, #e5e9ed);
    color: #8a949e;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    height: 100%;
    justify-content: center;
    min-height: 25rem;
}
.course-detail-page .course-cover-placeholder svg { height: 3rem; width: 3rem; }
.course-detail-page .course-cover-placeholder span { font-size: 0.8rem; font-weight: 600; }
.course-detail-page .course-hero-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(1.5rem, 3vw, 3.25rem);
}
.course-detail-page .course-hero-topline { align-items: center; display: flex; gap: 0.75rem; margin-bottom: 0.9rem; }
.course-detail-page .course-acronym {
    color: #818a94;
    font-size: 0.72rem;
    font-weight: 750;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.course-detail-page .course-hero h1 {
    color: #20262d;
    font-size: clamp(2rem, 3.5vw, 3rem);
    font-weight: 750;
    letter-spacing: -0.035em;
    line-height: 1.08;
    margin: 0;
}
.course-detail-page .course-hero-summary {
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    color: #626d77;
    display: -webkit-box;
    font-size: 0.95rem;
    line-height: 1.65;
    margin: 1rem 0 1.5rem;
    max-width: 50rem;
    overflow: hidden;
}
.course-detail-page .course-quick-facts {
    border-block: 1px solid #e7eaed;
    display: grid;
    gap: 0;
    grid-template-columns: repeat(3, 1fr);
    margin-bottom: 1.5rem;
    padding-block: 1rem;
}
.course-detail-page .course-quick-facts > div { padding-inline: 1rem; }
.course-detail-page .course-quick-facts > div:first-child { padding-left: 0; }
.course-detail-page .course-quick-facts > div + div { border-left: 1px solid #e7eaed; }
.course-detail-page .course-quick-facts span,
.course-detail-page .course-category-block > span {
    color: #8a939d;
    display: block;
    font-size: 0.66rem;
    font-weight: 750;
    letter-spacing: 0.075em;
    margin-bottom: 0.3rem;
    text-transform: uppercase;
}
.course-detail-page .course-quick-facts strong { color: #333b44; font-size: 0.82rem; font-weight: 650; }
.course-detail-page .course-hero-actions { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.course-detail-page .course-hero-actions .btn { border-radius: 0.6rem; font-weight: 600; }
.course-detail-page .course-workflow {
    align-items: center;
    background: #fff;
    border: 1px solid #e2e6ea;
    border-radius: 0.85rem;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: 2rem;
    padding: 0.9rem 1.1rem;
}
.course-detail-page .course-workflow-label { align-items: center; display: flex; gap: 0.75rem; }
.course-detail-page .course-workflow-label > div { display: flex; flex-direction: column; }
.course-detail-page .course-workflow-label strong { color: #303841; font-size: 0.82rem; }
.course-detail-page .course-workflow-label span:not(.course-workflow-icon) { color: #858e98; font-size: 0.72rem; }
.course-detail-page .course-workflow-icon {
    align-items: center;
    background: #f0f2f4;
    border-radius: 50%;
    color: #69737e;
    display: inline-flex;
    height: 2.25rem;
    justify-content: center;
    width: 2.25rem;
}
.course-detail-page .course-workflow-icon svg { height: 1.15rem; width: 1.15rem; }
.course-detail-page .course-workflow-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.course-detail-page .course-workflow-actions form { margin: 0; }
.course-detail-page .course-workflow-actions .btn { border-radius: 0.55rem; font-size: 0.78rem; font-weight: 600; }
.course-detail-page .course-section-heading { margin: 0 0 1rem; }
.course-detail-page .course-section-heading > span {
    color: var(--bs-primary);
    display: block;
    font-size: 0.66rem;
    font-weight: 750;
    letter-spacing: 0.1em;
    margin-bottom: 0.2rem;
    text-transform: uppercase;
}
.course-detail-page .course-section-heading h2 { color: #2b333c; font-size: 1.25rem; font-weight: 700; margin: 0; }
.course-detail-page .course-copy-card { margin-bottom: 1rem; }
.course-detail-page .course-copy-heading { border-bottom: 1px solid #e8ebee; padding: 1rem 1.25rem; }
.course-detail-page .course-copy-heading h3 { color: #303841; font-size: 0.95rem; font-weight: 700; margin: 0; }
.course-detail-page .course-copy-heading p { color: #8a939d; font-size: 0.74rem; margin: 0.2rem 0 0; }
.course-detail-page .course-copy-body { color: #4f5963; font-size: 0.9rem; line-height: 1.75; padding: 1.25rem; }
.course-detail-page .course-empty-copy { color: #9aa2ab; font-style: italic; }
.course-detail-page .course-detail-sidebar { display: grid; gap: 1rem; position: sticky; top: calc(var(--admin-topbar-height) + 1.5rem); }
.course-detail-page .course-facts-body { padding: 0.3rem 1.25rem 1.25rem; }
.course-detail-page .course-facts-body dl { margin: 0; }
.course-detail-page .course-facts-body dl > div { align-items: baseline; border-bottom: 1px solid #edf0f2; display: flex; gap: 1rem; justify-content: space-between; padding: 0.85rem 0; }
.course-detail-page .course-facts-body dt { color: #7d8791; font-size: 0.76rem; font-weight: 600; }
.course-detail-page .course-facts-body dd { color: #333c45; font-size: 0.8rem; margin: 0; text-align: right; }
.course-detail-page .course-facts-body code { color: var(--bs-primary); font-size: 0.75rem; }
.course-detail-page .course-category-block { padding-top: 1rem; }
.course-detail-page .course-category-pill {
    background: rgb(var(--bs-primary-rgb) / 9%);
    border: 1px solid rgb(var(--bs-primary-rgb) / 12%);
    border-radius: 999px;
    color: var(--bs-primary);
    display: inline-flex;
    font-size: 0.68rem;
    font-weight: 650;
    margin: 0.15rem 0.1rem 0.15rem 0;
    padding: 0.35rem 0.55rem;
}
.course-detail-page .course-category-pill.is-muted { background: #f0f2f4; border-color: #e2e5e8; color: #7d8790; }
.course-detail-page .course-editions-card,
.course-detail-page .course-program-card { align-items: flex-start; display: flex; gap: 0.9rem; padding: 1.15rem; }
.course-detail-page .course-sidebar-card-icon {
    align-items: center;
    background: rgb(var(--bs-primary-rgb) / 9%);
    border-radius: 0.7rem;
    color: var(--bs-primary);
    display: flex;
    flex: 0 0 auto;
    height: 2.65rem;
    justify-content: center;
    width: 2.65rem;
}
.course-detail-page .course-sidebar-card-icon svg { height: 1.3rem; width: 1.3rem; }
.course-detail-page .course-editions-card h2,
.course-detail-page .course-program-card h2 { color: #303841; font-size: 0.9rem; font-weight: 700; margin: 0; }
.course-detail-page .course-editions-card p,
.course-detail-page .course-program-card p { color: #7e8791; font-size: 0.75rem; line-height: 1.5; margin: 0.3rem 0 0.6rem; overflow-wrap: anywhere; }
.course-detail-page .course-editions-card a,
.course-detail-page .course-program-card a { color: var(--bs-primary); font-size: 0.75rem; font-weight: 700; text-decoration: none; }
.course-detail-page .course-sidebar-card-content { min-width: 0; width: 100%; }
.course-detail-page .course-next-edition-facts { border-block: 1px solid #edf0f2; margin: 0.8rem 0; padding-block: 0.35rem; }
.course-detail-page .course-next-edition-facts > div { align-items: baseline; display: flex; gap: 0.75rem; justify-content: space-between; padding: 0.35rem 0; }
.course-detail-page .course-next-edition-facts dt { color: #7d8791; font-size: 0.69rem; }
.course-detail-page .course-next-edition-facts dd { color: #303943; font-size: 0.75rem; font-weight: 700; margin: 0; text-align: right; }
.course-detail-page .course-admin-heading { margin-top: 1.5rem; }
.course-detail-page .course-resources-card .app-panel-header { min-height: 3.8rem; padding-block: 0.75rem; }
.course-detail-page .course-resource-list { padding-inline: 1.1rem; }
.course-detail-page .course-resource-item {
    margin-block: 1rem;
}
.course-detail-page .course-resource-item.is-cover {
    background: #f8f9fa;
    border: 1px solid #e3e7ea;
    border-radius: 0.85rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: hidden;
}
.course-detail-page .course-cover-resource-media {
    align-items: center;
    background: #edf0f2;
    display: flex;
    justify-content: center;
    min-height: 16rem;
    padding: 1rem;
}
.course-detail-page .course-cover-resource-media > a { align-items: center; display: flex; height: 100%; justify-content: center; width: 100%; }
.course-detail-page .course-cover-resource-media img { display: block; height: 100%; max-height: 15rem; object-fit: contain; width: 100%; }
.course-detail-page .course-cover-resource-empty { align-items: center; color: #8b949e; display: flex; flex-direction: column; font-size: 0.74rem; font-weight: 600; gap: 0.5rem; }
.course-detail-page .course-cover-resource-empty svg { height: 2.5rem; width: 2.5rem; }
.course-detail-page .course-resource-item.is-cover .course-resource-content { display: flex; flex-direction: column; justify-content: center; padding: 1.15rem; }
.course-detail-page .course-resource-item.is-program {
    border-top: 1px solid #e7eaed;
    padding-top: 1rem;
}
.course-detail-page .course-resource-item.is-program .course-resource-content {
    align-items: center;
    display: grid;
    gap: 1.25rem;
    grid-template-columns: minmax(13rem, 0.8fr) minmax(0, 1.5fr);
}
.course-detail-page .course-resources-card.is-readonly .course-resource-item.is-program .course-resource-content { grid-template-columns: 1fr; }
.course-detail-page .course-resource-summary { align-items: center; display: flex; gap: 0.75rem; min-width: 0; }
.course-detail-page .course-resource-icon {
    align-items: center;
    background: #f0f2f4;
    border-radius: 0.6rem;
    color: #707b86;
    display: inline-flex;
    flex: 0 0 auto;
    height: 2.4rem;
    justify-content: center;
    width: 2.4rem;
}
.course-detail-page .course-resource-icon svg { height: 1.2rem; width: 1.2rem; }
.course-detail-page .course-resource-meta { min-width: 0; }
.course-detail-page .course-resource-summary h3 { color: #303841; font-size: 0.88rem; font-weight: 700; margin: 0; }
.course-detail-page .course-resource-summary p { color: #8a939c; font-size: 0.7rem; margin: 0.15rem 0 0.35rem; }
.course-detail-page .course-resource-summary a { display: inline-block; font-size: 0.74rem; font-weight: 600; max-width: 100%; overflow: hidden; text-decoration: none; text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; }
.course-detail-page .course-file-size { color: #929aa3; font-size: 0.68rem; margin-left: 0.4rem; }
.course-detail-page .course-file-missing { color: #929aa3; font-size: 0.74rem; }
.course-detail-page .course-resource-controls { background: #f8f9fb; border-radius: 0.65rem; margin: 0; padding: 0.7rem; }
.course-detail-page .course-resource-item.is-cover .course-resource-controls { background: transparent; padding: 0; margin-top: 1rem; }
.course-detail-page .course-resource-item.is-cover .course-resource-controls .row > div { width: 100%; }
.course-detail-page .course-resource-controls form { margin: 0; }
.course-detail-page .course-resource-controls .form-control { background-color: #fff; min-height: 2.5rem; }
.course-detail-page .course-resource-buttons { display: inline-flex; margin-top: 0.65rem; }
.course-detail-page .course-resource-controls > form + form { display: inline-flex; }
.course-detail-page .course-resource-controls .btn-link { font-size: 0.74rem; text-decoration: none; }
.course-detail-page .course-timeline { list-style: none; margin: 0; padding: 1.25rem; }
.course-detail-page .course-timeline li { display: grid; gap: 0.8rem; grid-template-columns: 0.7rem 1fr; padding-bottom: 1.25rem; position: relative; }
.course-detail-page .course-timeline li:last-child { padding-bottom: 0; }
.course-detail-page .course-timeline li::before { background: #e1e5e9; content: ""; height: 100%; left: 0.31rem; position: absolute; top: 0.6rem; width: 1px; }
.course-detail-page .course-timeline li:last-child::before { display: none; }
.course-detail-page .course-timeline li > span { background: var(--bs-primary); border: 0.18rem solid #fff; border-radius: 50%; box-shadow: 0 0 0 1px rgb(var(--bs-primary-rgb) / 25%); height: 0.65rem; margin-top: 0.2rem; position: relative; width: 0.65rem; z-index: 1; }
.course-detail-page .course-timeline li.is-danger > span { background: var(--bs-danger); }
.course-detail-page .course-timeline strong { color: #333b44; display: block; font-size: 0.78rem; }
.course-detail-page .course-timeline time { color: #7d8791; display: block; font-size: 0.72rem; margin-top: 0.15rem; }
.course-detail-page .course-timeline p { color: #555f69; font-size: 0.74rem; margin: 0.3rem 0 0; }
.course-detail-page .course-timeline p span { color: #969ea7; display: block; font-size: 0.68rem; }

/* Editor administrativo de Cursos */
.course-form-page { max-width: 82rem; }
.course-form-page .course-form-header { margin-bottom: 1.5rem; }
.course-form-page .course-form-section { margin-bottom: 1.25rem; }
.course-form-page .course-form-section-body { padding: 1.35rem; }
.course-form-page .form-text { color: #8a939d; font-size: 0.7rem; margin-top: 0.4rem; }
.course-form-page .course-locked-control { position: relative; }
.course-form-page .course-locked-control svg {
    color: #8d969f;
    height: 1rem;
    left: 0.9rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 1rem;
    z-index: 2;
}
.course-form-page .course-locked-control .form-control { padding-left: 2.55rem; }
.course-form-page .course-category-options {
    display: grid;
    gap: 0.65rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.course-form-page .course-category-option { cursor: pointer; margin: 0; position: relative; }
.course-form-page .course-category-option input {
    height: 1px;
    opacity: 0;
    position: absolute;
    width: 1px;
}
.course-form-page .course-category-option > span {
    align-items: center;
    background: #fff;
    border: 1px solid #dce1e5;
    border-radius: 0.65rem;
    color: #4f5963;
    display: flex;
    font-size: 0.78rem;
    font-weight: 600;
    justify-content: space-between;
    min-height: 2.8rem;
    padding: 0.6rem 0.8rem 0.6rem 2.35rem;
    position: relative;
    transition: background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease, color 150ms ease;
}
.course-form-page .course-category-option > span::before {
    align-items: center;
    border: 1.5px solid #bdc5cc;
    border-radius: 0.35rem;
    color: #fff;
    content: "";
    display: flex;
    height: 1.05rem;
    justify-content: center;
    left: 0.8rem;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 1.05rem;
}
.course-form-page .course-category-option input:checked + span {
    background: rgb(var(--bs-primary-rgb) / 7%);
    border-color: rgb(var(--bs-primary-rgb) / 40%);
    color: var(--bs-primary);
}
.course-form-page .course-category-option input:checked + span::before {
    background: var(--bs-primary);
    border-color: var(--bs-primary);
    content: "✓";
    font-size: 0.7rem;
    font-weight: 800;
}
.course-form-page .course-category-option input:focus-visible + span { box-shadow: 0 0 0 0.2rem rgb(var(--bs-primary-rgb) / 14%); }
.course-form-page .course-category-option.is-unavailable > span { background: #f5f6f7; color: #727c86; }
.course-form-page .course-category-option small { color: #9aa2aa; font-size: 0.62rem; font-weight: 600; }
.course-form-page .course-category-options.is-invalid .course-category-option > span { border-color: var(--bs-danger); }
.course-form-page .course-content-fields { display: grid; gap: 1.25rem; }
.course-form-page .course-editor-field + .course-editor-field { border-top: 1px solid #eaedef; padding-top: 1.25rem; }
.course-form-page .course-editor-field textarea { line-height: 1.6; min-height: 9.5rem; resize: vertical; }
.course-form-page .tox-tinymce { border-color: #d9dfe4; border-radius: 0.65rem; }
.course-form-page .is-invalid + .tox-tinymce { border-color: var(--bs-danger); }
.course-copy-body > :last-child,
.course-rich-text > :last-child { margin-bottom: 0; }
.course-copy-body img,
.course-rich-text img { border-radius: 0.5rem; height: auto; max-width: 100%; }
.course-copy-body blockquote,
.course-rich-text blockquote { border-left: 0.25rem solid var(--bs-primary); color: var(--bs-secondary-color); margin-left: 0; padding-left: 1rem; }
.course-form-page .course-form-sidebar { position: sticky; top: calc(var(--admin-topbar-height) + 1.5rem); }
.course-form-page .course-save-card { overflow: hidden; }
.course-form-page .course-save-card-body { padding: 1.35rem; }
.course-form-page .course-save-eyebrow {
    color: var(--bs-primary);
    display: block;
    font-size: 0.65rem;
    font-weight: 750;
    letter-spacing: 0.1em;
    margin-bottom: 0.35rem;
    text-transform: uppercase;
}
.course-form-page .course-save-card h2 { color: #29313a; font-size: 1.15rem; font-weight: 700; margin: 0; }
.course-form-page .course-save-acronym { color: #8a939c; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.08em; margin: 0.25rem 0 1rem; text-transform: uppercase; }
.course-form-page .course-save-card dl { border-block: 1px solid #e8ebee; margin: 0; padding-block: 0.35rem; }
.course-form-page .course-save-card dl > div { display: flex; gap: 1rem; justify-content: space-between; padding: 0.55rem 0; }
.course-form-page .course-save-card dt { color: #818a94; font-size: 0.72rem; font-weight: 600; }
.course-form-page .course-save-card dd { color: #3b444d; font-size: 0.72rem; font-weight: 600; margin: 0; max-width: 65%; overflow: hidden; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.course-form-page .course-save-note { align-items: flex-start; color: #7e8790; display: flex; font-size: 0.7rem; gap: 0.5rem; line-height: 1.45; margin-top: 1rem; }
.course-form-page .course-save-note svg { flex: 0 0 auto; height: 1rem; margin-top: 0.05rem; width: 1rem; }
.course-form-page .course-save-actions { background: #f8f9fb; border-top: 1px solid #e5e9ec; display: grid; gap: 0.55rem; padding: 1rem 1.35rem; }
.course-form-page .course-save-actions .btn { border-radius: 0.6rem; font-weight: 600; width: 100%; }
.course-form-page .course-save-actions .btn-light { background: #fff; border-color: #d9dee3; color: #5f6973; }
.course-form-page .course-save-actions .btn-light:hover { background: #f0f2f4; border-color: #cdd3d9; }

.course-resource-form-grid { display: grid; gap: 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.course-resource-form-grid.is-stacked { gap: 0.75rem; grid-template-columns: 1fr; }
.course-resource-form-grid.is-stacked .course-resource-form-card { align-items: center; grid-template-columns: minmax(11rem, 15rem) minmax(0, 1fr); padding: 0.75rem; }
.course-resource-form-grid.is-stacked .course-resource-form-preview { height: 10rem; min-height: 0; }
.course-resource-form-grid.is-stacked .course-resource-form-card.is-program { grid-template-columns: minmax(0, 1fr); padding: 0.75rem 1rem; }
.course-resource-form-grid.is-stacked .course-resource-form-card.is-program .course-resource-form-file-icon { display: none; }
.course-resource-form-grid.is-stacked .course-resource-program-content { align-items: end; display: grid; gap: 0.75rem 1rem; grid-template-columns: minmax(10rem, 0.7fr) minmax(18rem, 1.4fr) minmax(13rem, 1fr); }
.course-resource-form-grid.is-stacked .course-resource-program-heading { align-self: center; }
.course-resource-form-grid.is-stacked .course-resource-program-heading p { margin-bottom: 0; }
.course-resource-form-grid.is-stacked .course-resource-program-actions { align-items: flex-start; align-self: center; display: grid; gap: 0.45rem; }
.course-resource-form-grid.is-stacked .course-resource-program-actions .form-check { margin: 0; }
.course-resource-form-grid.is-stacked .course-resource-form-file-icon { height: 3rem; width: 3rem; }
.course-resource-form-grid.is-stacked .course-resource-form-file-icon svg { height: 1.35rem; width: 1.35rem; }
.course-resource-form-card { background: #f8f9fa; border: 1px solid #e3e7ea; border-radius: 0.85rem; display: grid; gap: 1rem; grid-template-columns: minmax(10rem, 0.85fr) minmax(0, 1.15fr); overflow: hidden; padding: 1rem; }
.course-resource-form-card.is-program { align-items: center; grid-template-columns: 4rem minmax(0, 1fr); }
.course-resource-form-preview { align-items: center; background: #e9edef; border-radius: 0.65rem; display: flex; justify-content: center; min-height: 12rem; overflow: hidden; }
.course-resource-form-preview img { display: block; height: 100%; object-fit: cover; width: 100%; }
.course-resource-form-preview > div { color: #87919a; font-size: 0.72rem; padding: 1rem; text-align: center; }
.course-resource-form-card h3 { color: #303943; font-size: 0.95rem; font-weight: 720; margin: 0; }
.course-resource-form-card h3 + p { color: #7f8992; font-size: 0.7rem; margin: 0.25rem 0 0.85rem; }
.course-resource-program-content { min-width: 0; }
.course-resource-form-file-icon { align-items: center; background: rgb(var(--bs-primary-rgb) / 9%); border-radius: 0.75rem; color: var(--bs-primary); display: flex; height: 4rem; justify-content: center; width: 4rem; }
.course-resource-form-file-icon svg { height: 1.8rem; width: 1.8rem; }
.course-current-file { align-items: center; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.course-current-file a { font-size: 0.74rem; font-weight: 650; text-decoration: none; }
.course-current-file span { color: #8b949d; font-size: 0.68rem; }
.course-resource-form-note { color: #818b94; font-size: 0.7rem; margin-top: 1rem; }

/* Ediciones de cursos */
.admin-content .course-edition-list-row { cursor: pointer; }
.admin-content .table-hover > tbody > .course-edition-list-row:hover > *,
.admin-content .course-edition-list-row:focus-visible > * { --bs-table-bg-state: #e9ecef; background-color: #e9ecef; }
.admin-content .course-edition-list-row:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: -2px; }
.course-edition-list-actions { display: flex; gap: 0.4rem; justify-content: flex-end; white-space: nowrap; }

.course-edition-form-page { margin-inline: auto; max-width: 100rem; }
.course-edition-form-overview { display: grid; gap: 1rem; grid-template-columns: minmax(0, 3fr) minmax(18rem, 2fr); margin-bottom: 1rem; }
.course-edition-form-page .card { border: 1px solid #e1e5e8; border-radius: 0.9rem; overflow: hidden; }
.course-edition-form-page .card-header { background: #fff; padding: 1rem 1.25rem; }
.course-edition-form-page .card-header:not(.d-flex) { align-items: flex-start; display: block; }
.course-edition-form-page .card-header h2 { color: #303943; font-size: 1rem; font-weight: 720; }
.course-edition-form-page .card-header p { color: #7e8892; font-size: 0.7rem; line-height: 1.45; margin-top: 0.3rem; }
.course-edition-form-price .card-body { display: flex; flex-direction: column; gap: 1.25rem; justify-content: space-between; }
.course-edition-currency { align-items: center; background: #f4f6f8; border: 1px solid #e4e8eb; border-radius: 0.7rem; display: grid; gap: 0.1rem; grid-template-columns: 1fr auto; padding: 0.85rem 1rem; }
.course-edition-currency span { color: #7e8892; font-size: 0.68rem; font-weight: 650; }
.course-edition-currency strong { color: #303943; font-size: 1rem; grid-row: 1 / 3; grid-column: 2; }
.course-edition-currency small { color: #5d6872; font-size: 0.75rem; }
.course-edition-teacher-form { overflow: visible !important; }
.course-edition-teacher-body { align-items: center; display: grid; gap: 1.25rem; grid-template-columns: minmax(18rem, 2fr) minmax(15rem, 1fr); }
.course-edition-teacher-control { max-width: 48rem; }
.course-edition-teacher-form .ts-wrapper.dropdown-active { z-index: 1055; }
.course-edition-teacher-form .ts-dropdown { border-color: #d9dee4; border-radius: 0.62rem; box-shadow: 0 0.8rem 1.8rem rgb(25 35 45 / 16%); margin-top: 0.4rem; overflow: hidden; }
.course-edition-teacher-form .ts-dropdown .active { background: rgb(var(--bs-primary-rgb) / 9%); color: #29313a; }
.course-edition-teacher-note { align-items: center; background: #f5f7f9; border: 1px solid #e5e9ed; border-radius: 0.75rem; display: flex; gap: 0.75rem; padding: 0.8rem 0.9rem; }
.course-edition-teacher-note > span { align-items: center; background: #fff; border: 1px solid #e1e5e8; border-radius: 50%; color: var(--bs-primary); display: inline-flex; flex: 0 0 2.4rem; height: 2.4rem; justify-content: center; }
.course-edition-teacher-note svg { height: 1.2rem; width: 1.2rem; }
.course-edition-teacher-note p { color: #6f7a84; display: grid; font-size: 0.7rem; line-height: 1.4; margin: 0; }
.course-edition-teacher-note strong { color: #38424c; font-size: 0.75rem; }

.course-edition-detail-page { margin-inline: auto; max-width: 100rem; padding-bottom: 1rem; }
.course-edition-detail-header { align-items: flex-end; display: flex; gap: 2rem; justify-content: space-between; margin-bottom: 1.5rem; }
.course-edition-title-line { align-items: center; display: flex; flex-wrap: wrap; gap: 0.65rem; }
.course-edition-title-line h1 { color: #242b33; font-size: clamp(1.8rem, 3vw, 2.25rem); font-weight: 750; letter-spacing: -0.035em; margin: 0; }
.course-edition-detail-header p { color: #68737e; margin: 0.35rem 0 0; }
.course-edition-detail-header p span { color: #8b949d; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.05em; }
.course-edition-detail-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 0.5rem; }
.course-edition-state-panel { align-items: center; background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; box-shadow: 0 0.35rem 1rem rgb(25 35 45 / 4%); display: flex; gap: 1.5rem; justify-content: space-between; margin-bottom: 1rem; padding: 1rem 1.25rem; }
.course-edition-state-copy > span,
.course-edition-panel-heading span,
.course-edition-trace > div > span { color: var(--bs-primary); display: block; font-size: 0.62rem; font-weight: 750; letter-spacing: 0.1em; text-transform: uppercase; }
.course-edition-state-copy h2 { color: #303943; font-size: 1rem; font-weight: 720; margin: 0.1rem 0 0.1rem; }
.course-edition-state-copy p { color: #818b95; font-size: 0.7rem; margin: 0; }
.course-edition-state-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: flex-end; }
.course-edition-state-actions form { margin: 0; }
.course-edition-cancel-details { position: relative; }
.course-edition-cancel-details > summary { align-items: center; display: inline-flex; list-style: none; }
.course-edition-cancel-details > summary::-webkit-details-marker { display: none; }
.course-edition-cancel-details[open] > summary { background: var(--bs-danger); color: #fff; }
.course-edition-cancel-details > form { background: #fff; border: 1px solid #dde2e6; border-radius: 0.8rem; box-shadow: 0 1rem 2.4rem rgb(26 34 42 / 16%); padding: 1rem; position: absolute; right: 0; top: calc(100% + 0.55rem); width: min(26rem, calc(100vw - 3rem)); z-index: 20; }
.course-edition-cancel-details textarea.form-control { min-height: 4.5rem; resize: vertical; }
.course-edition-cancel-actions { display: flex; justify-content: flex-end; margin-top: 0.85rem; }
.course-edition-overview-grid { align-items: stretch; display: grid; gap: 1rem; grid-template-columns: minmax(0, 3fr) minmax(18rem, 2fr); margin-bottom: 1rem; }
.course-edition-panel { background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; box-shadow: 0 0.35rem 1rem rgb(25 35 45 / 4%); overflow: hidden; }
.course-edition-panel-heading { align-items: center; border-bottom: 1px solid #e8ecef; display: flex; gap: 1rem; justify-content: space-between; padding: 1rem 1.25rem; }
.course-edition-panel-heading h2 { color: #303943; font-size: 1rem; font-weight: 720; margin: 0.12rem 0 0; }
.course-edition-facts-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.course-edition-facts-grid > div { border-bottom: 1px solid #edf0f2; padding: 1.15rem 1.25rem; }
.course-edition-facts-grid > div:nth-child(odd) { border-right: 1px solid #edf0f2; }
.course-edition-facts-grid > div:nth-last-child(-n + 2) { border-bottom: 0; }
.course-edition-facts-grid span { color: #818b95; display: block; font-size: 0.68rem; font-weight: 650; margin-bottom: 0.3rem; }
.course-edition-facts-grid strong { color: #303943; font-size: 0.98rem; font-weight: 700; }
.course-edition-commercial { display: flex; flex-direction: column; }
.course-edition-price { background: linear-gradient(145deg, rgb(var(--bs-primary-rgb) / 8%), rgb(var(--bs-primary-rgb) / 3%)); border-bottom: 1px solid #e7ebee; padding: 1.25rem; }
.course-edition-price span { color: #747f89; display: block; font-size: 0.68rem; font-weight: 650; }
.course-edition-price h2 { color: #252d35; font-size: clamp(1.35rem, 2.4vw, 1.8rem); font-weight: 750; margin: 0.3rem 0 0; }
.course-edition-availability { padding: 1rem 1.25rem; }
.course-edition-availability > div { align-items: center; display: flex; justify-content: space-between; }
.course-edition-availability > div > span:first-child { color: #626d77; font-size: 0.72rem; font-weight: 700; }
.course-edition-availability > p { color: #818b95; font-size: 0.69rem; line-height: 1.45; margin: 0.4rem 0 0.75rem; }
.course-edition-availability dl { border-top: 1px solid #edf0f2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; padding-top: 0.75rem; }
.course-edition-availability dl > div + div { border-left: 1px solid #edf0f2; padding-left: 1rem; }
.course-edition-availability dt { color: #8a949d; font-size: 0.64rem; font-weight: 650; }
.course-edition-availability dd { color: #303943; font-size: 0.9rem; font-weight: 720; margin: 0.2rem 0 0; }
.course-edition-schedule-panel { margin-bottom: 1rem; }
.course-edition-schedule-panel thead th { background: #f7f8fa; color: #68737d; font-size: 0.66rem; letter-spacing: 0.05em; text-transform: uppercase; }
.course-edition-schedule-panel tbody td { color: #48525c; font-size: 0.8rem; }
.course-edition-trace { align-items: center; background: #f4f6f8; border: 1px solid #e1e5e8; border-radius: 0.9rem; display: flex; gap: 2rem; justify-content: space-between; padding: 1rem 1.25rem; }
.course-edition-trace h2 { color: #39434d; font-size: 0.9rem; font-weight: 720; margin: 0.12rem 0 0; }
.course-edition-trace dl { display: flex; gap: 2.5rem; margin: 0; }
.course-edition-trace dt { color: #818b95; font-size: 0.64rem; font-weight: 650; }
.course-edition-trace dd { color: #424c56; font-size: 0.76rem; font-weight: 650; margin: 0.15rem 0 0; }

.course-edition-schedules { border: 1px solid #e1e5e8; border-radius: 0.9rem; overflow: hidden; }
.course-edition-schedules .card-header { background: #fff; padding: 1rem 1.25rem; }
.course-edition-schedules .card-body { background: #f8f9fa; padding: 1rem; }
.course-edition-schedule-list { display: grid; gap: 0.75rem; }
.course-edition-schedule-row { align-items: end; background: #fff; border: 1px solid #e1e5e8; border-radius: 0.75rem; display: grid; gap: 0.75rem; grid-template-columns: minmax(8rem, 0.8fr) minmax(7rem, 0.65fr) minmax(7rem, 0.65fr) minmax(12rem, 1.4fr) auto; padding: 0.9rem; }
.course-edition-schedule-row .form-label { color: #535e68; font-size: 0.7rem; font-weight: 650; margin-bottom: 0.35rem; }
.course-edition-schedule-row .form-control,
.course-edition-schedule-row .form-select { min-height: 2.6rem; }
.course-edition-schedule-remove { align-self: end; min-height: 2.6rem; text-decoration: none; }

@media (min-width: 992px) {
    .admin-topbar-start { width: calc(var(--admin-sidebar-width) - 3rem); }
    .admin-brand { width: 100%; }
    .admin-sidebar {
        border-right: 1px solid #e2e6ea;
        bottom: 0;
        box-shadow: 0.35rem 0 1.4rem rgb(20 28 38 / 3%);
        display: flex !important;
        flex-direction: column;
        left: 0;
        overflow: hidden;
        position: fixed;
        top: var(--admin-topbar-height);
        transform: none !important;
        visibility: visible !important;
        width: var(--admin-sidebar-width);
        z-index: 1020;
    }
    .admin-main { margin-left: var(--admin-sidebar-width); width: calc(100% - var(--admin-sidebar-width)); }
    .admin-main-full { margin-left: 0; width: 100%; }
}

@media (max-width: 1199.98px) {
    .person-detail-layout { grid-template-columns: 1fr; }
    .teacher-profile-grid { grid-template-columns: 1fr; }
    .teacher-profile-files { position: static; }
    .teacher-detail-layout { grid-template-columns: minmax(16rem, 0.75fr) minmax(0, 2fr); }
    .teacher-resources-grid { grid-template-columns: 1fr; }
}

@media (max-width: 991.98px) {
    .auth-shell { grid-template-columns: 1fr; }
    .auth-visual { display: none; }
    .auth-panel { min-height: 100vh; }
    .branding-admin-header { align-items: flex-start; flex-direction: column; }
    .branding-admin-preview { position: static; }
    .public-course-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-course-detail-hero { grid-template-columns: 60% 40%; height: 31rem; }
    .public-course-detail-identity { padding: 2rem; }
    .public-course-edition-card { position: static; }
    .teacher-create-requirements { grid-template-columns: auto 1fr; }
    .teacher-create-requirement-files { grid-column: 1 / -1; justify-content: flex-start; }
    .teacher-lookup-form { grid-template-columns: 1fr 1.5fr; }
    .teacher-lookup-form .btn { grid-column: 1 / -1; }
    .teacher-detail-layout { grid-template-columns: 1fr; }
    .teacher-detail-sidebar { grid-template-columns: minmax(15rem, 0.8fr) minmax(0, 1.2fr); position: static; }
    .course-resource-form-grid { grid-template-columns: 1fr; }
    .course-edition-form-overview,
    .course-edition-overview-grid { grid-template-columns: 1fr; }
    .course-edition-schedule-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .course-edition-schedule-observation { grid-column: 1 / 3; }
}

/* Flujo público de inscripción */
.enrollment-steps ol {
    display: grid;
    grid-template-columns: repeat(var(--enrollment-step-count, 4), minmax(0, 1fr));
}
.enrollment-steps li {
    align-items: center;
    color: #8a949d;
    display: flex;
    flex-direction: column;
    gap: .55rem;
    min-width: 0;
    position: relative;
    text-align: center;
}
.enrollment-steps li:not(:last-child)::after {
    background: #dfe4e8;
    content: "";
    height: 2px;
    left: calc(50% + 1.2rem);
    position: absolute;
    right: calc(-50% + 1.2rem);
    top: 1rem;
}
.enrollment-step-marker {
    align-items: center;
    background: #fff;
    border: 2px solid #d8dee3;
    border-radius: 50%;
    display: grid;
    font-size: .72rem;
    font-weight: 600;
    height: 2rem;
    line-height: 1;
    place-items: center;
    position: relative;
    width: 2rem;
    z-index: 1;
}
.enrollment-step-label { font-size: .72rem; font-weight: 500; }
.enrollment-steps li.is-active { color: #29323a; }
.enrollment-steps li.is-active .enrollment-step-marker {
    background: var(--branding-primary-hover, var(--bs-primary));
    border-color: var(--branding-primary-hover, var(--bs-primary));
    color: var(--branding-primary-hover-contrast, #fff);
    box-shadow: 0 0 0 .3rem rgb(var(--branding-primary-hover-rgb, var(--bs-primary-rgb)) / 10%);
}
.enrollment-steps li.is-done { color: #55616b; }
.enrollment-steps li.is-done .enrollment-step-marker { border-color: var(--branding-primary-hover, var(--bs-primary)); color: var(--branding-primary-hover, var(--bs-primary)); }
.enrollment-steps li.is-done::after { background: color-mix(in srgb, var(--branding-primary-hover, var(--bs-primary)) 45%, #dfe4e8); }

@media (max-width: 575.98px) {
    .enrollment-step-label { font-size: .64rem; }
    .enrollment-steps li:not(:last-child)::after { left: calc(50% + 1rem); right: calc(-50% + 1rem); }
}

@media (max-width: 767.98px) {
    .branding-hero-gallery { grid-template-columns: 1fr; }
    .branding-hero-slot:first-child { grid-column: auto; }
    .branding-hero-slot:first-child > img,
    .branding-hero-slot:first-child .branding-hero-slot-upload-preview,
    .branding-hero-slot:first-child .branding-hero-slot-empty { height: 7rem; }
    .admin-content .card-body { padding: 1.1rem; }
    .admin-content .card-header { padding-inline: 1.1rem; }
    .admin-content form.card .d-flex.gap-2 { flex-wrap: wrap; }
    .admin-content .table thead th,
    .admin-content .table tbody td { padding-inline: 0.8rem; }
    .course-detail-page .course-resource-item.is-cover,
    .course-detail-page .course-resource-item.is-program .course-resource-content { grid-template-columns: 1fr; }
    .course-detail-page .course-cover-resource-media { min-height: 13rem; }
    .branding-color-grid,
    .branding-asset-grid { grid-template-columns: 1fr; }
    .person-detail-header { align-items: stretch; flex-direction: column; gap: 1rem; }
    .person-detail-actions .btn { flex: 1 1 auto; }
    .person-data-grid { grid-template-columns: 1fr; }
    .person-data-item,
    .person-data-item:nth-child(odd),
    .person-data-item:nth-last-child(-n + 2) { border-bottom: 1px solid #edf0f2; border-right: 0; }
    .person-data-item:last-child { border-bottom: 0; }
    .person-activity-grid { grid-template-columns: 1fr; }
    .person-documents-heading { align-items: flex-start; flex-direction: column; }
    .person-document-viewer .modal-dialog { margin: 0.5rem; max-width: calc(100vw - 1rem); }
    .person-document-viewer-content { height: 72vh; min-height: 18rem; }
    .person-document-viewer .modal-footer .btn { flex: 1 1 auto; }
    .teacher-create-header,
    .teacher-create-actions { align-items: stretch; flex-direction: column; }
    .teacher-person-confirmation { align-items: flex-start; grid-template-columns: auto 1fr; }
    .teacher-person-status { grid-column: 2; justify-self: start; }
    .teacher-link-row { grid-template-columns: 1fr 1.5fr; }
    .teacher-link-actions { grid-column: 1 / -1; }
    .teacher-detail-header { align-items: flex-start; flex-direction: column; gap: 1rem; }
    .teacher-detail-actions { justify-content: flex-start; }
    .teacher-detail-sidebar { grid-template-columns: 1fr; }
    .teacher-portrait-card { display: grid; grid-template-columns: minmax(11rem, 0.7fr) minmax(0, 1.3fr); }
    .teacher-portrait-media { aspect-ratio: 4 / 5; }
    .teacher-portrait-info { align-self: center; }
    .course-resource-form-card,
    .course-resource-form-card.is-program { grid-template-columns: 1fr; }
    .course-resource-form-grid.is-stacked .course-resource-form-card,
    .course-resource-form-grid.is-stacked .course-resource-form-card.is-program { grid-template-columns: 1fr; }
    .course-resource-form-grid.is-stacked .course-resource-form-preview { height: 9rem; }
    .course-resource-form-grid.is-stacked .course-resource-program-content { align-items: stretch; grid-template-columns: 1fr; }
    .public-course-info-section.is-intro { padding: 1.15rem; }
    .public-course-info-section .course-rich-text { margin-left: 0; padding-left: 0.85rem; }
    .public-course-program { grid-template-columns: auto minmax(0, 1fr); }
    .public-course-program .btn { grid-column: 1 / -1; width: 100%; }
    .course-edition-detail-header,
    .course-edition-state-panel,
    .course-edition-trace { align-items: stretch; flex-direction: column; }
    .course-edition-detail-actions .btn { flex: 1 1 auto; }
    .course-edition-state-actions { justify-content: flex-start; }
    .course-edition-cancel-details > form { left: 0; right: auto; }
    .course-edition-trace dl { gap: 1.25rem; justify-content: space-between; }
    .course-edition-schedule-row { grid-template-columns: 1fr 1fr; }
    .course-edition-schedule-row > div:first-of-type,
    .course-edition-schedule-observation { grid-column: 1 / -1; }
}

@media (prefers-reduced-motion: reduce) {
    .public-hero-carousel .carousel-item { transition: none; }
}

@media (max-width: 575.98px) {
    .auth-panel { align-items: flex-start; padding: 2rem 1rem; }
    .auth-brand { margin-bottom: 1.5rem; }
    .branding-logo-auth { height: 3.75rem; max-width: 17rem; }
    .auth-card .card-body { padding: 1.5rem; }
    .admin-content > .d-flex.justify-content-between.mb-4,
    .admin-content > .d-flex.flex-wrap.justify-content-between.mb-4 {
        align-items: stretch !important;
        flex-direction: column;
    }
    .admin-content > .d-flex.mb-4 > .d-flex .btn,
    .admin-content > .d-flex.flex-wrap.mb-4 > .d-flex .btn { flex: 1 1 auto; }
    .admin-content form > .d-flex.gap-2:last-child { flex-direction: column; }
    .admin-content form > .d-flex.gap-2:last-child .btn { width: 100%; }
    .admin-topbar { --admin-topbar-height: 4rem; }
    .admin-brand-logo { height: 2.35rem; max-width: 9.5rem; }
    .admin-content { padding-top: 1.5rem !important; }
    .courses-page .app-page-header { align-items: stretch; flex-direction: column; gap: 1rem; margin-bottom: 1.5rem; }
    .courses-page .app-primary-action { justify-content: center; width: 100%; }
    .courses-page .app-panel-header { align-items: flex-start; gap: 0.75rem; padding: 1rem; }
    .courses-page .app-filter-form { padding: 1rem; }
    .courses-page .app-filter-actions { flex-direction: column; }
    .courses-page .app-filter-actions .btn { width: 100%; }
    .courses-page .app-results-header { align-items: flex-start; flex-direction: column; }
    .courses-page .pagination { justify-content: center; }
    .course-detail-page .course-hero-media,
    .course-detail-page .course-cover-placeholder { min-height: 14rem; }
    .course-detail-page .course-hero-content { padding: 1.25rem; }
    .course-detail-page .course-quick-facts { grid-template-columns: 1fr; }
    .course-detail-page .course-quick-facts > div { padding: 0.55rem 0; }
    .course-detail-page .course-quick-facts > div + div { border-left: 0; border-top: 1px solid #e7eaed; }
    .course-detail-page .course-workflow { align-items: stretch; flex-direction: column; }
    .course-detail-page .course-workflow-actions { align-items: stretch; flex-direction: column; }
    .course-detail-page .course-workflow-actions .btn { width: 100%; }
    .course-detail-page .course-hero-actions { align-items: stretch; flex-direction: column; }
    .course-detail-page .course-hero-actions .btn { width: 100%; }
    .course-form-page .course-category-options { grid-template-columns: 1fr; }
    .teacher-lookup-form { grid-template-columns: 1fr; }
    .teacher-lookup-form .btn { grid-column: auto; width: 100%; }
    .teacher-create-requirements { align-items: flex-start; grid-template-columns: auto 1fr; }
    .teacher-create-requirement-files { flex-direction: column; }
    .teacher-create-requirement-files span { border-radius: 0.6rem; }
    .teacher-link-row { grid-template-columns: 1fr; }
    .teacher-link-actions { grid-column: auto; }
    .teacher-links-heading { align-items: stretch; flex-direction: column; }
    .teacher-links-heading .btn { align-self: flex-start; }
    .teacher-upload-card,
    .teacher-cv-upload { grid-template-columns: 4.5rem minmax(0, 1fr); }
    .teacher-create-actions > div:last-child { flex-direction: column-reverse; }
    .teacher-create-actions .btn { width: 100%; }
    .teacher-detail-actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
    .teacher-detail-actions .btn { width: 100%; }
    .teacher-portrait-card { display: block; }
    .teacher-portrait-media { aspect-ratio: 4 / 3; }
    .teacher-resources-grid { grid-template-columns: 1fr; }
    .teacher-cv-resource { align-items: stretch; grid-template-columns: auto minmax(0, 1fr); }
    .teacher-cv-resource .btn { grid-column: 1 / -1; }
    .branding-scope-nav { width: 100%; }
    .branding-scope-nav a { flex: 1; text-align: center; }
    .public-header-inner { min-height: 7.5rem; padding-top: 0.65rem; }
    .public-header-top { align-items: stretch; flex-direction: column; }
    .public-brand { margin-bottom: 0.25rem; }
    .public-brand .branding-logo { height: 3.25rem; max-width: 15rem; }
    .public-header-search { margin-bottom: 0.35rem; width: 100%; }
    .public-navigation { gap: 1.15rem; justify-content: flex-start; margin-inline: calc(var(--bs-gutter-x) * -0.5); min-height: 2.85rem; padding-inline: calc(var(--bs-gutter-x) * 0.5); }
    .public-navigation a { font-size: 0.78rem; padding-block: 0.7rem; }
    .public-offer-hero,
    .public-offer-hero-overlay { min-height: calc(18rem + 50px); }
    .public-offer-hero-overlay h1 { font-size: 2rem; letter-spacing: 0.08em; }
    .public-offer-intro { margin-top: 2rem; }
    .public-course-filters,
    .public-course-grid { grid-template-columns: 1fr; }
    .public-filter-actions { justify-content: space-between; }
    .public-results-heading { align-items: flex-start; flex-direction: column; gap: 0.4rem; }
    .public-course-detail-hero { grid-template-columns: 1fr; height: auto; }
    .public-course-detail-media { height: 19rem; }
    .public-course-detail-identity { min-height: 16rem; padding: 2rem 1.25rem; }
    .public-course-detail-identity h1 { font-size: clamp(2.1rem, 10vw, 3.2rem); }
    .public-course-detail-meta { margin-top: 1.5rem; }
}

/* Related administrative records */
.detail-kicker {
    color: var(--bs-primary);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .14em;
    margin-bottom: .35rem;
    text-transform: uppercase;
}
.catalog-detail-page .card { border-color: #dfe4e8; border-radius: 1rem; overflow: hidden; }
.catalog-metadata { display: grid; gap: 0; }
.catalog-metadata > div { border-top: 1px solid #e8ecef; padding: .9rem 0; }
.catalog-metadata > div:first-child { border-top: 0; padding-top: 0; }
.catalog-metadata dt { color: #7a8691; font-size: .72rem; font-weight: 700; margin-bottom: .2rem; }
.catalog-metadata dd { color: #29323a; font-weight: 650; margin: 0; }
.related-course-row { align-items: center; display: flex; gap: 1rem; justify-content: space-between; padding: 1rem 1.5rem; }
.related-course-row > span:first-child { display: grid; gap: .16rem; min-width: 0; }
.related-course-row strong { color: #273039; }
.related-course-row small { color: #7a8691; font-size: .74rem; }
.person-teacher-profile { overflow: hidden; }
.person-teacher-summary { align-items: center; display: flex; gap: 1rem; padding: 1.25rem; }
.person-teacher-summary p { color: #6f7b85; font-size: .82rem; margin: .15rem 0 .75rem; }
.person-teacher-photo { align-items: center; background: #edf1f4; border-radius: .85rem; color: #687580; display: flex; flex: 0 0 5rem; font-size: 1.2rem; font-weight: 800; height: 5rem; justify-content: center; overflow: hidden; }
.person-teacher-photo img { height: 100%; object-fit: cover; width: 100%; }

@media (max-width: 575.98px) {
    .related-course-row { align-items: flex-start; }
    .person-teacher-summary { align-items: flex-start; }
}

.user-access-page .admin-page-heading {
    align-items: center;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.user-access-page .admin-page-heading h1 { font-size: 2rem; font-weight: 700; margin: 0.15rem 0; }
.user-access-page .admin-page-heading p { color: var(--bs-secondary-color); margin: 0; }
.user-access-page .admin-page-kicker,
.user-access-page .admin-section-kicker { color: var(--bs-primary); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }

.user-access-page .admin-card {
    background: #fff;
    border: 1px solid #dfe4e9;
    border-radius: 1rem;
    box-shadow: 0 0.4rem 1.25rem rgb(31 42 55 / 4%);
    overflow: hidden;
}

.user-access-page .admin-card-header { border-bottom: 1px solid #e5e9ed; padding: 1rem 1.25rem; }
.user-access-page .admin-card-body { padding: 1.15rem 1.25rem; }

.user-access-principle {
    background: color-mix(in srgb, var(--bs-success) 12%, white);
    border: 1px solid color-mix(in srgb, var(--bs-success) 28%, white);
    border-radius: 999px;
    color: #17653c;
    flex: 0 0 auto;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.45rem 0.75rem;
}

.user-access-group {
    border: 0;
    margin: 0;
    min-width: 0;
    padding: 0;
}

.user-access-group legend {
    font-size: 0.9rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}

.user-access-option {
    align-items: flex-start;
    border: 1px solid #e1e6eb;
    border-radius: 0.75rem;
    cursor: pointer;
    display: flex;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
    padding: 0.8rem;
    transition: background-color 150ms ease, border-color 150ms ease;
}

.user-access-option:hover { background: #f7f9fb; border-color: #cdd5dd; }
.user-access-option .form-check-input { flex: 0 0 auto; margin-top: 0.15rem; }
.user-access-option span { display: grid; font-size: 0.86rem; gap: 0.15rem; }
.user-access-option small { color: var(--bs-secondary-color); line-height: 1.35; }
.user-access-areas { display: grid; gap: 0.85rem; }

.user-access-area {
    border: 1px solid #dfe4e9;
    border-radius: 0.85rem;
    overflow: hidden;
}

.user-access-area-heading {
    align-items: center;
    background: #f7f9fb;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    padding: 0.9rem 1rem;
}

.admin-content .user-access-toggle {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: 0;
    display: flex;
    gap: 0.8rem;
    min-height: auto;
    padding: 0;
}

.admin-content .user-access-toggle .form-check-input {
    background-color: #c7cdd3;
    border-color: #c7cdd3;
    box-shadow: none;
    cursor: pointer;
    flex: 0 0 auto;
    height: 1.5rem;
    margin: 0;
    width: 2.75rem;
}

.admin-content .user-access-toggle .form-check-input:checked {
    background-color: var(--bs-success);
    border-color: var(--bs-success);
}

.admin-content .user-access-toggle .form-check-input:focus-visible {
    box-shadow: 0 0 0 0.22rem color-mix(in srgb, var(--bs-primary) 25%, transparent);
}

.admin-content .user-access-toggle .form-check-label { cursor: pointer; }
.user-access-area-heading .form-check-label { display: grid; gap: 0.1rem; padding-left: 0.25rem; }
.user-access-area-heading .form-check-label small { color: var(--bs-secondary-color); font-size: 0.72rem; }
.user-access-area-heading .form-check-label small.is-active { color: var(--bs-success); font-weight: 700; }
.user-access-area.is-enabled { border-color: color-mix(in srgb, var(--bs-success) 32%, #dfe4e9); }
.user-access-preset { max-width: 13rem; }
.user-access-area-options { display: grid; gap: 0.5rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 0.85rem 1rem; }
.user-access-option-compact { margin: 0; padding: 0.65rem 0.7rem; }
.user-access-area:not(.is-enabled) .user-access-area-options { display: none; }

.course-edition-teacher-panel { margin-bottom: 1rem; }
.course-edition-teacher-profile { align-items: center; display: flex; gap: 0.9rem; padding: 1rem 1.25rem; }
.course-edition-teacher-profile img,
.course-edition-teacher-avatar { border-radius: 50%; flex: 0 0 4.5rem; height: 4.5rem; object-fit: cover; width: 4.5rem; }
.course-edition-teacher-avatar { align-items: center; background: #edf0f2; color: #68737d; display: inline-flex; font-size: 1.35rem; font-weight: 750; justify-content: center; }
.course-edition-teacher-profile > div { display: grid; gap: 0.15rem; }
.course-edition-teacher-profile > div strong { color: #303943; }
.course-edition-teacher-profile > div span { color: #7e8892; font-size: 0.75rem; }
.course-edition-teacher-list { display: flex !important; flex: 1 1 auto; flex-wrap: wrap; gap: 0.75rem; }
.course-edition-teacher-item { align-items: center; background: #f7f9fa; border: 1px solid #e5e9ed; border-radius: 0.75rem; display: flex; gap: 0.7rem; min-width: 15rem; padding: 0.65rem 0.8rem; }
.course-edition-teacher-item img,
.course-edition-teacher-item .course-edition-teacher-avatar { flex-basis: 3.5rem; height: 3.5rem; width: 3.5rem; }
.course-edition-teacher-item > div { display: grid; }
.course-next-edition-teacher { align-items: center; display: flex; gap: 0.65rem; margin: 0.8rem 0; }
.course-next-edition-teacher > img,
.course-next-edition-teacher > span { align-items: center; background: #edf0f2; border-radius: 50%; display: inline-flex; flex: 0 0 2.75rem; height: 2.75rem; justify-content: center; object-fit: cover; width: 2.75rem; }
.course-next-edition-teacher > div { display: grid; }
.course-next-edition-teacher small { color: #7e8892; font-size: 0.65rem; }
.course-next-edition-teacher strong { color: #303943; font-size: 0.78rem; }
.public-course-teacher { align-items: center; display: flex; gap: 0.65rem; margin-top: 0.3rem; }
.public-course-teacher-list { display: grid; gap: 0.55rem; }
.public-course-teacher { border-radius: 0.75rem; color: inherit; padding: 0.45rem; text-decoration: none; transition: background-color 150ms ease, transform 150ms ease; }
.public-course-teacher:hover { background: rgb(var(--bs-primary-rgb) / 8%); color: inherit; transform: translateX(0.15rem); }
.public-course-teacher strong, .public-course-teacher small { display: block; }
.public-course-teacher small { color: var(--bs-primary); font-size: 0.72rem; margin-top: 0.15rem; }
.public-course-teacher img,
.public-course-teacher > span:first-child { align-items: center; background: #edf0f2; border-radius: 50%; display: inline-flex; flex: 0 0 3.5rem; height: 3.5rem; justify-content: center; object-fit: cover; width: 3.5rem; }

.app-clickable-row { cursor: pointer; }
.app-clickable-row > * { transition: background-color 150ms ease; }
.app-clickable-row:hover > *, .app-clickable-row:focus-visible > * { background-color: #eef1f3 !important; }
.app-clickable-row:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: -2px; }
.teacher-edit-page .teacher-profile-main, .teacher-edit-page .teacher-profile-files { align-self: start; }
.teacher-edit-page .teacher-profile-main { background: #fff; border: 1px solid #e1e5e8; border-radius: 0.9rem; overflow: hidden; }
.teacher-edit-submit { align-items: center; border-top: 1px solid #e8ecef; display: flex; gap: 0.5rem; justify-content: flex-end; padding: 0.85rem 1rem; }
.teacher-edit-photo-card .teacher-photo-preview img { height: 100%; object-fit: cover; width: 100%; }
.teacher-link-row { grid-template-columns: minmax(9rem, .65fr) minmax(10rem, .75fr) minmax(15rem, 1.4fr) auto; }
.teacher-link-destination { min-width: 0; }
.teacher-link-row .form-text { min-height: 1rem; }

.public-teacher-profile { background: #fff; color: #242b33; }
.public-teacher-hero { display: grid; grid-template-columns: minmax(20rem, 42%) 1fr; min-height: 34rem; }
.public-teacher-photo { background: #e9edef; min-height: 34rem; overflow: hidden; }
.public-teacher-photo > img { height: 100%; object-fit: cover; width: 100%; }
.public-teacher-photo-placeholder { align-items: center; color: #fff; display: flex; font-size: 8rem; font-weight: 750; height: 100%; justify-content: center; background: linear-gradient(145deg, var(--bs-secondary), var(--bs-primary)); }
.public-teacher-intro { align-items: flex-start; background: rgb(var(--bs-primary-rgb) / 8%); display: flex; flex-direction: column; justify-content: center; padding: clamp(2rem, 6vw, 6rem); }
.public-teacher-kicker, .public-teacher-section-kicker { color: var(--bs-primary); font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.public-teacher-intro h1 { font-size: clamp(2.4rem, 5vw, 5rem); font-weight: 800; letter-spacing: -.045em; line-height: .98; margin: .7rem 0 1rem; max-width: 12ch; }
.public-teacher-intro > p { color: #68747e; font-size: 1.05rem; }
.public-teacher-socials { display: flex; flex-wrap: wrap; gap: .55rem; margin: 1.2rem 0 1.6rem; }
.public-teacher-socials a { align-items: center; background: #fff; border: 1px solid #dce2e6; border-radius: 999px; color: #35414a; display: flex; font-size: .78rem; gap: .4rem; padding: .45rem .7rem; text-decoration: none; }
.public-teacher-socials a:hover { border-color: var(--bs-primary); color: var(--bs-primary); }
.public-teacher-socials svg { height: 1rem; width: 1rem; }
.public-teacher-content { margin: 0 auto; max-width: 82rem; padding: clamp(2.5rem, 6vw, 5rem) 1.25rem; }
.public-teacher-biography { margin-bottom: 4rem; max-width: 58rem; }
.public-teacher-biography h2, .public-teacher-courses h2 { font-size: clamp(1.7rem, 3vw, 2.4rem); font-weight: 750; margin: .35rem 0 1.25rem; }
.public-teacher-section-heading { align-items: end; display: flex; justify-content: space-between; margin-bottom: 1.5rem; }
.public-teacher-section-heading h2 { margin-bottom: 0; }
.public-teacher-section-heading > span { color: #7b858e; font-size: .82rem; }
.public-teacher-course-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.public-teacher-course-card { background: #fff; border: 1px solid #dfe4e7; border-radius: 1rem; color: inherit; overflow: hidden; text-decoration: none; transition: box-shadow 160ms ease, transform 160ms ease; }
.public-teacher-course-card:hover { box-shadow: 0 .8rem 2rem rgb(26 36 44 / 12%); color: inherit; transform: translateY(-.2rem); }
.public-teacher-course-card > img, .public-teacher-course-placeholder { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
.public-teacher-course-placeholder { background: linear-gradient(145deg, #e9edef, #dce2e6); }
.public-teacher-course-card > div:last-child { padding: 1rem; }
.public-teacher-course-meta { display: flex; gap: .4rem; }
.public-teacher-course-meta span { background: #eef1f3; border-radius: 999px; font-size: .66rem; font-weight: 700; padding: .25rem .5rem; }
.public-teacher-course-card h3 { font-size: 1.05rem; font-weight: 750; margin: .8rem 0 .5rem; }
.public-teacher-course-card p, .public-teacher-empty { color: #6f7b84; font-size: .8rem; margin: 0; }

@media (max-width: 991.98px) {
    .public-teacher-hero { grid-template-columns: 1fr; }
    .public-teacher-photo { min-height: 26rem; }
    .public-teacher-course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .teacher-link-row { grid-template-columns: 1fr 1fr; }
    .teacher-link-destination { grid-column: 1 / -1; }
}
@media (max-width: 575.98px) {
    .public-teacher-course-grid { grid-template-columns: 1fr; }
    .public-teacher-photo { min-height: 21rem; }
    .teacher-link-row { grid-template-columns: 1fr; }
    .teacher-link-destination { grid-column: auto; }
}

/* Ajustes del editor y perfil público de docentes */
.teacher-profile-main-body .tox-tinymce {
    border-color: #d9dfe4;
    border-radius: .7rem;
    min-height: 19rem;
}
.teacher-profile-main-body .is-invalid + .tox-tinymce { border-color: var(--bs-danger); }
.teacher-link-row {
    align-items: start;
    grid-template-columns: minmax(9.5rem, .7fr) minmax(9.5rem, .75fr) minmax(12rem, 2fr) max-content;
    padding: 1rem;
}
.teacher-link-type { grid-column: 1; }
.teacher-link-custom-label { grid-column: 2; }
.teacher-link-destination { grid-column: 3; }
.teacher-link-custom-label.d-none + .teacher-link-destination { grid-column: 2 / 4; }
.teacher-link-actions { align-self: start; grid-column: 4; }
.teacher-link-actions > .form-label { margin-bottom: .5rem; }
.teacher-link-actions .btn-group { display: inline-flex; flex-wrap: nowrap; white-space: nowrap; }
.teacher-link-actions .btn-group > .btn {
    flex: 0 0 2.55rem;
    height: 2.55rem;
    padding: 0;
    width: 2.55rem;
}

.public-teacher-profile {
    margin: 0 auto;
    max-width: 82rem;
}
.public-teacher-hero {
    background: #fff;
    border: 1px solid #e2e6e9;
    border-radius: 1.25rem;
    box-shadow: 0 1.2rem 3.2rem rgb(26 36 44 / 8%);
    grid-template-columns: minmax(20rem, 38%) minmax(0, 62%);
    min-height: 31rem;
    overflow: hidden;
}
.public-teacher-photo { min-height: 31rem; }
.public-teacher-intro {
    background: linear-gradient(135deg, rgb(var(--bs-primary-rgb) / 9%), #fff 72%);
    padding: clamp(2rem, 5vw, 4.5rem);
}
.public-teacher-intro h1 {
    font-size: clamp(2.5rem, 4.5vw, 4.35rem);
    max-width: 15ch;
}
.public-teacher-intro > p { margin-bottom: .25rem; max-width: 34rem; }
.public-teacher-socials {
    display: grid;
    gap: .65rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 1.5rem 0;
    max-width: 36rem;
    width: 100%;
}
.public-teacher-socials .public-teacher-social {
    align-items: center;
    background: #fff;
    border: 1px solid #dfe4e7;
    border-radius: .85rem;
    color: #303a43;
    display: grid;
    font-size: .8rem;
    gap: .7rem;
    grid-template-columns: auto minmax(0, 1fr) auto;
    min-height: 4.1rem;
    padding: .65rem .75rem;
    text-decoration: none;
    transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}
.public-teacher-socials .public-teacher-social:hover {
    border-color: rgb(var(--bs-primary-rgb) / 35%);
    box-shadow: 0 .55rem 1.25rem rgb(25 35 45 / 9%);
    color: #202830;
    transform: translateY(-2px);
}
.public-teacher-social-icon {
    align-items: center;
    background: #eef2f5;
    border-radius: .65rem;
    color: #42515c;
    display: flex;
    height: 2.55rem;
    justify-content: center;
    width: 2.55rem;
}
.public-teacher-social--linkedin .public-teacher-social-icon { background: #0a66c2; color: #fff; }
.public-teacher-social--instagram .public-teacher-social-icon { background: linear-gradient(145deg, #833ab4, #fd1d1d, #fcb045); color: #fff; }
.public-teacher-social--facebook .public-teacher-social-icon { background: #1877f2; color: #fff; }
.public-teacher-social--x .public-teacher-social-icon { background: #111; color: #fff; }
.public-teacher-social--youtube .public-teacher-social-icon { background: #f00; color: #fff; }
.public-teacher-social--whatsapp .public-teacher-social-icon { background: #25d366; color: #fff; }
.public-teacher-social-icon svg { height: 1.25rem; width: 1.25rem; }
.public-teacher-social span:nth-child(2) { min-width: 0; }
.public-teacher-social small,
.public-teacher-social strong { display: block; }
.public-teacher-social small { color: #8a949c; font-size: .62rem; font-weight: 500; }
.public-teacher-social strong { font-size: .78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.public-teacher-social-arrow { color: #919ba3; height: 1rem; width: 1rem; }
.public-teacher-cv { align-items: center; display: inline-flex; gap: .55rem; }
.public-teacher-cv svg { height: 1.05rem; width: 1.05rem; }
.public-teacher-content { padding: clamp(2.75rem, 5vw, 4.5rem) .75rem; }
.public-teacher-biography {
    border-bottom: 1px solid #e5e9ec;
    margin-bottom: 3rem;
    max-width: none;
    padding-bottom: 3rem;
}
.public-teacher-biography .course-rich-text { color: #414b54; columns: 2 24rem; column-gap: 3rem; font-size: .95rem; line-height: 1.75; }
.public-teacher-biography .course-rich-text > :first-child { margin-top: 0; }
.public-teacher-course-grid { grid-template-columns: repeat(3, minmax(15rem, 1fr)); }

@media (max-width: 991.98px) {
    .teacher-link-row { grid-template-columns: minmax(10rem, .8fr) minmax(0, 1.8fr) auto; }
    .teacher-link-type { grid-column: 1; }
    .teacher-link-custom-label { grid-column: 1 / -1; }
    .teacher-link-destination,
    .teacher-link-custom-label.d-none + .teacher-link-destination { grid-column: 2; }
    .teacher-link-actions { grid-column: 3; }
    .public-teacher-hero { grid-template-columns: minmax(18rem, 42%) minmax(0, 58%); }
    .public-teacher-socials { grid-template-columns: 1fr; }
}

@media (max-width: 767.98px) {
    .teacher-link-row { grid-template-columns: 1fr; }
    .teacher-link-type,
    .teacher-link-custom-label,
    .teacher-link-destination,
    .teacher-link-custom-label.d-none + .teacher-link-destination,
    .teacher-link-actions { grid-column: 1; }
    .public-teacher-hero { grid-template-columns: 1fr; min-height: 0; }
    .public-teacher-photo { aspect-ratio: 4 / 3; min-height: 0; }
    .public-teacher-intro { padding: 2rem 1.4rem; }
    .public-teacher-biography .course-rich-text { columns: auto; }
    .public-teacher-course-grid { grid-template-columns: 1fr; }
}

@media (max-width: 991.98px) {
    .course-edition-teacher-body { grid-template-columns: 1fr; }
    .course-edition-teacher-control { max-width: none; }
    .user-access-area-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 575.98px) {
    .user-access-page .admin-page-heading { align-items: stretch; flex-direction: column; }
    .user-access-page .admin-page-heading .btn { align-self: flex-start; }
    .user-access-area-heading { align-items: stretch; flex-direction: column; }
    .user-access-preset { max-width: none; }
    .user-access-area-options { grid-template-columns: 1fr; }
}
