:root {
    --blue: #0868d8;
    --purple: #743bd1;
    --magenta: #c22fb6;
    --ink: #111827;
    --muted: #667085;
    --line: #e6eaf0;
    --soft: #f5f8fc;
    --white: #ffffff;
}

* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    color: var(--ink);
    background: var(--white);
}
a { color: var(--blue); text-decoration: none; }
.site-header {
    min-height: 74px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 6vw;
    border-bottom: 1px solid var(--line);
    background: rgba(255,255,255,.96);
    position: sticky;
    top: 0;
    z-index: 20;
}
.brand { font-weight: 800; letter-spacing: .02em; color: var(--ink); }
.site-header nav { display: flex; gap: 26px; align-items: center; }
.primary-link, .primary-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: var(--blue);
    color: #fff;
    padding: 13px 24px;
    border-radius: 8px;
    font-weight: 700;
    cursor: pointer;
}
.secondary-btn {
    display: inline-flex;
    border: 1px solid var(--blue);
    color: var(--blue);
    padding: 12px 24px;
    border-radius: 8px;
    font-weight: 700;
}
.light-btn {
    display: inline-flex;
    background: #fff;
    color: var(--blue);
    padding: 13px 26px;
    border-radius: 8px;
    font-weight: 800;
}
.hero {
    min-height: 560px;
    padding: 90px 8vw;
    display: grid;
    align-items: center;
    background: linear-gradient(90deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.84) 52%, rgba(239,247,255,.85) 100%);
}
.hero h1 {
    max-width: 850px;
    font-size: clamp(38px, 5vw, 76px);
    line-height: .98;
    margin: 0 0 22px;
    letter-spacing: -.04em;
}
.hero p { max-width: 620px; color: var(--muted); font-size: 19px; line-height: 1.55; }
.eyebrow { color: var(--blue); text-transform: uppercase; font-size: 13px; font-weight: 800; letter-spacing: .08em; }
.hero-actions { display: flex; gap: 18px; margin-top: 34px; }
.section { padding: 92px 8vw; }
.section-soft { background: var(--soft); }
.section h2 { font-size: 38px; margin: 0 0 32px; }
.benefit-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 28px;
}
.benefit-grid article {
    border: 1px solid var(--line);
    border-radius: 18px;
    padding: 34px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(11,33,65,.05);
}
.cta-band {
    margin: 72px 8vw;
    padding: 44px 56px;
    border-radius: 18px;
    color: #fff;
    background: linear-gradient(100deg, var(--blue), var(--purple), var(--magenta));
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}
.site-footer {
    padding: 42px 8vw;
    border-top: 1px solid var(--line);
    display: flex;
    justify-content: space-between;
    color: var(--muted);
}
.auth-page {
    min-height: calc(100vh - 74px);
    padding: 60px 6vw;
    background: var(--soft);
    display: flex;
    justify-content: center;
    align-items: flex-start;
}
.auth-card {
    width: min(980px, 100%);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 22px;
    padding: 42px;
    box-shadow: 0 18px 60px rgba(11,33,65,.08);
}
.auth-card--small { width: min(520px, 100%); }
.auth-card__intro h1 { font-size: 42px; margin: 8px 0; }
.form-grid {
    margin-top: 32px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 22px;
}
.form-grid label { display: grid; gap: 8px; font-weight: 700; }
.form-grid input, .form-grid select {
    width: 100%;
    border: 1px solid #cad3df;
    border-radius: 10px;
    min-height: 48px;
    padding: 12px 14px;
    font-size: 16px;
}
.full-row { grid-column: 1 / -1; }
.checkbox-label { display: flex !important; grid-template-columns: auto 1fr; align-items: flex-start; font-weight: 400 !important; }
.checkbox-label input { width: 18px; min-height: 18px; margin-top: 2px; }
.password-row { display: flex; gap: 10px; }
.ghost-btn { border: 1px solid var(--line); background: #fff; border-radius: 10px; padding: 0 16px; cursor: pointer; }
.form-actions { display: flex; align-items: center; gap: 24px; }
.alert { padding: 14px 16px; border-radius: 12px; margin-top: 18px; }
.alert-error { background: #fff1f0; color: #a8071a; }
.alert-success { background: #eefbe8; color: #237804; }
.hp-field { display: none; }
.content-page { max-width: 900px; margin: 70px auto; padding: 0 24px; line-height: 1.7; }

@media (max-width: 800px) {
    .site-header { padding: 18px 22px; flex-wrap: wrap; gap: 14px; }
    .site-header nav { gap: 14px; flex-wrap: wrap; }
    .hero { padding: 70px 24px; }
    .hero-actions, .cta-band, .site-footer, .form-actions { flex-direction: column; align-items: stretch; }
    .section { padding: 70px 24px; }
    .benefit-grid, .form-grid { grid-template-columns: 1fr; }
    .auth-card { padding: 28px; }
}

/* Portal usuario */
.portal-body {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 260px 1fr;
    background: #f5f8fc;
}
.portal-sidebar {
    min-height: 100vh;
    padding: 28px 22px;
    background: #062044;
    color: #fff;
    display: flex;
    flex-direction: column;
    gap: 28px;
}
.portal-logo {
    color: #fff;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
    line-height: 1.15;
}
.portal-nav {
    display: grid;
    gap: 8px;
}
.portal-nav a,
.portal-logout {
    color: rgba(255,255,255,.82);
    padding: 12px 14px;
    border-radius: 10px;
    font-weight: 700;
}
.portal-nav a:hover,
.portal-nav a.active,
.portal-logout:hover {
    color: #fff;
    background: rgba(255,255,255,.12);
}
.portal-logout {
    margin-top: auto;
}
.portal-main {
    padding: 34px 42px 54px;
}
.portal-topbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
    margin-bottom: 28px;
}
.portal-topbar h1 {
    margin: 6px 0 0;
    font-size: clamp(28px, 4vw, 44px);
}
.portal-user-pill {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 10px 16px 10px 10px;
    box-shadow: 0 8px 24px rgba(11,33,65,.05);
}
.portal-user-pill span {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #fff;
    background: var(--blue);
    font-weight: 900;
    text-transform: uppercase;
}
.portal-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
}
.portal-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    padding: 28px;
    box-shadow: 0 12px 34px rgba(11,33,65,.06);
}
.portal-card h2 {
    margin: 10px 0;
}
.portal-card p {
    color: var(--muted);
    line-height: 1.6;
}
.portal-card--wide {
    grid-column: span 2;
}
.portal-card--activity {
    margin-top: 22px;
}
.primary-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
}
.auth-note {
    color: var(--muted);
    margin: 0;
}
.form-grid--single {
    grid-template-columns: 1fr;
}

@media (max-width: 900px) {
    .portal-body {
        grid-template-columns: 1fr;
    }
    .portal-sidebar {
        min-height: auto;
    }
    .portal-main {
        padding: 28px 22px 42px;
    }
    .portal-topbar {
        align-items: flex-start;
        flex-direction: column;
    }
    .portal-grid {
        grid-template-columns: 1fr;
    }
    .portal-card--wide {
        grid-column: auto;
    }
}

/* Perfil usuario */
.portal-form-card {
    max-width: 980px;
}
.portal-form-card .form-grid {
    margin-top: 26px;
}
.portal-form-card input:disabled {
    background: #f3f5f8;
    color: var(--muted);
    cursor: not-allowed;
}

/* Admin + agenda */
.form-grid textarea {
    width: 100%;
    border: 1px solid #cad3df;
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 16px;
    font-family: inherit;
    resize: vertical;
}
.table-wrap {
    width: 100%;
    overflow-x: auto;
}
.admin-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 760px;
}
.admin-table th,
.admin-table td {
    padding: 14px 12px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: top;
}
.admin-table th {
    color: var(--muted);
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.agenda-module h2 {
    margin-bottom: 22px;
}
.agenda-list {
    display: grid;
    gap: 16px;
}
.agenda-item {
    display: grid;
    grid-template-columns: 90px 1fr auto;
    gap: 22px;
    padding: 20px;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fff;
}
.agenda-date {
    display: grid;
    align-content: start;
    gap: 4px;
    color: var(--muted);
}
.agenda-date strong {
    font-size: 26px;
    color: var(--blue);
}
.agenda-info h3 {
    margin: 5px 0 8px;
    font-size: 22px;
}
.agenda-info p {
    margin: 6px 0;
}
.agenda-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}
@media (max-width: 800px) {
    .agenda-item {
        grid-template-columns: 1fr;
    }
    .agenda-actions {
        align-items: stretch;
        flex-direction: column;
    }
}
.hero-public {
    grid-template-columns: minmax(0, 1.4fr) minmax(320px, .6fr);
    gap: 44px;
}
.next-class-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 18px 60px rgba(11,33,65,.08);
}
.next-class-card h2 {
    margin: 10px 0 12px;
    font-size: 28px;
}
.public-agenda-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
}
@media (max-width: 900px) {
    .hero-public,
    .public-agenda-grid {
        grid-template-columns: 1fr;
    }
}


/* Videos públicos y portal */
.section-header-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 28px;
    margin-bottom: 30px;
}
.section-lead {
    max-width: 680px;
    color: var(--muted);
    line-height: 1.6;
}
.year-filter-form label {
    display: grid;
    gap: 8px;
    color: var(--muted);
    font-weight: 700;
}
.year-filter-form select {
    min-width: 150px;
    min-height: 44px;
    border: 1px solid #cad3df;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 15px;
    background: #fff;
}
.video-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}
.video-grid--portal {
    grid-template-columns: repeat(2, 1fr);
}
.video-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 12px 34px rgba(11,33,65,.06);
}
.video-embed {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #0b1220;
}
.video-embed iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}
.video-card-body {
    padding: 22px;
}
.video-card-body h3 {
    margin: 8px 0 10px;
    font-size: 20px;
}
.video-card-body p {
    color: var(--muted);
    line-height: 1.5;
}
@media (max-width: 900px) {
    .section-header-row {
        align-items: flex-start;
        flex-direction: column;
    }
    .video-grid,
    .video-grid--portal {
        grid-template-columns: 1fr;
    }
}

/* v8 - videos privados / multi idioma */
.video-language-box {
    display: grid;
    gap: 18px;
    background: #f7f9fc;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 22px;
}
.video-language-box h3 {
    margin: 0;
}
.muted-text {
    color: var(--muted);
    line-height: 1.55;
}
.video-card--locked .video-locked-cover {
    min-height: 170px;
    display: grid;
    place-items: center;
    text-align: center;
    gap: 10px;
    padding: 24px;
    background: linear-gradient(135deg, rgba(20,2,50,.95), rgba(44,68,190,.9));
    color: #fff;
}
.video-lock-icon {
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255,255,255,.15);
    font-size: 24px;
}
.video-card--locked .secondary-btn {
    margin-top: 12px;
    display: inline-flex;
}
.video-language-pill {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    border-radius: 999px;
    padding: 6px 10px;
    background: #eef4ff;
    color: var(--blue) !important;
    font-weight: 800;
    font-size: 13px;
}

/* v9 - Contenido multilenguaje */
.translation-box,
.video-language-box {
    border: 1px solid rgba(20, 2, 50, .10);
    background: #f8fafc;
    border-radius: 18px;
    padding: 20px;
    display: grid;
    gap: 16px;
}

.translation-box h3,
.video-language-box h3 {
    margin: 0;
}

.translation-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 8px 0 4px;
}

.translation-tab {
    border: 1px solid rgba(20, 2, 50, .15);
    background: #ffffff;
    color: #140232;
    border-radius: 999px;
    padding: 8px 14px;
    font-weight: 700;
    cursor: pointer;
}

.translation-tab.active {
    background: #140232;
    color: #ffffff;
    border-color: #140232;
}

.translation-panel {
    display: none;
    gap: 14px;
}

.translation-panel.active {
    display: grid;
}

.translation-panel label {
    display: grid;
    gap: 6px;
}

.video-language-pill {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    border-radius: 999px;
    background: rgba(20, 2, 50, .08);
    color: #140232;
    padding: 6px 10px;
    font-size: .85rem;
    font-weight: 700;
}

/* =========================================================
   v12b - CSS consolidado portal/admin
   ========================================================= */
:root {
    --sb-blue: #0868d8;
    --sb-purple: #743bd1;
    --sb-magenta: #c22fb6;
    --sb-green: #40a635;
    --sb-ink: #111827;
    --sb-muted: #667085;
    --sb-line: #e6eaf0;
    --sb-soft: #f5f8fc;
    --sb-white: #ffffff;
}

.portal-body {
    min-height: 100vh;
    margin: 0;
    background: linear-gradient(180deg, #f7faff 0%, #eef4fb 100%);
    color: var(--sb-ink);
    font-family: Arial, Helvetica, sans-serif;
}

.portal-sidebar {
    position: fixed;
    left: 0;
    top: 0;
    bottom: 0;
    width: 250px;
    padding: 28px 22px;
    background: #ffffff;
    border-right: 1px solid var(--sb-line);
    box-shadow: 14px 0 30px rgba(16, 24, 40, .05);
    display: flex;
    flex-direction: column;
    gap: 24px;
    z-index: 20;
}

.portal-logo {
    display: inline-block;
    color: #103b7a;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.05;
    letter-spacing: -.02em;
    text-decoration: none;
}

.portal-nav {
    display: grid;
    gap: 8px;
}

.portal-nav a,
.portal-logout {
    display: flex;
    align-items: center;
    min-height: 42px;
    padding: 10px 13px;
    border-radius: 12px;
    color: #344054;
    font-weight: 800;
    font-size: 14px;
    text-decoration: none;
}

.portal-nav a:hover,
.portal-nav a.active {
    background: #eef5ff;
    color: var(--sb-blue);
    text-decoration: none;
}

.portal-logout {
    margin-top: auto;
    color: #b42318;
    background: #fff4f2;
}

.portal-main {
    margin-left: 250px;
    padding: 40px;
    min-height: 100vh;
}

.portal-topbar {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 28px;
}

.portal-topbar h1 {
    margin: 6px 0 0;
    font-size: 34px;
    line-height: 1.15;
    color: #101828;
}

.portal-topbar p,
.auth-note,
.muted-text {
    color: var(--sb-muted);
    line-height: 1.55;
}

.eyebrow {
    display: inline-block;
    color: var(--sb-blue);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .09em;
}

.portal-user-pill {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: #ffffff;
    border: 1px solid var(--sb-line);
    border-radius: 999px;
    padding: 8px 14px 8px 8px;
    box-shadow: 0 10px 24px rgba(16,24,40,.05);
    white-space: nowrap;
}

.portal-user-pill span {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--sb-blue);
    color: #fff;
    font-weight: 900;
}

.portal-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 22px;
}

.portal-card {
    background: #ffffff;
    border: 1px solid var(--sb-line);
    border-radius: 22px;
    padding: 24px;
    box-shadow: 0 18px 40px rgba(16,24,40,.07);
    margin-bottom: 22px;
}

.portal-card--wide,
.portal-card--activity {
    grid-column: span 3;
}

.portal-card h2,
.portal-card h3 {
    color: #101828;
    margin-top: 8px;
}

.primary-btn,
.secondary-btn,
.ghost-btn,
.danger-btn,
button,
input[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 12px;
    padding: 12px 18px;
    border: 0;
    font-weight: 900;
    font-size: 14px;
    cursor: pointer;
    text-decoration: none !important;
}

.primary-btn,
button.primary-btn,
input[type="submit"] {
    background: var(--sb-blue);
    color: #ffffff !important;
}

.primary-btn:hover,
button.primary-btn:hover,
input[type="submit"]:hover {
    background: #064fa7;
}

.secondary-btn,
.ghost-btn {
    background: #eef5ff;
    color: var(--sb-blue) !important;
    border: 1px solid #d8e8ff;
}

.danger-btn {
    background: #d92d20;
    color: #ffffff !important;
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.form-grid--single {
    grid-template-columns: 1fr;
}

.full-row,
.form-actions {
    grid-column: 1 / -1;
}

.form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-top: 12px;
}

label {
    display: grid;
    gap: 7px;
    color: #344054;
    font-weight: 800;
    font-size: 14px;
}

input,
select,
textarea {
    width: 100%;
    border: 1px solid #d0d5dd;
    border-radius: 12px;
    background: #ffffff;
    padding: 12px 13px;
    color: #101828;
    font-size: 15px;
    font-family: inherit;
    outline: none;
}

input:focus,
select:focus,
textarea:focus {
    border-color: var(--sb-blue);
    box-shadow: 0 0 0 4px rgba(8,104,216,.12);
}

textarea {
    min-height: 110px;
    resize: vertical;
}

.alert {
    border-radius: 16px;
    padding: 14px 16px;
    margin-bottom: 20px;
    font-weight: 800;
}

.alert-success { background: #ecfdf3; color: #067647; border: 1px solid #abefc6; }
.alert-error, .alert-danger { background: #fef3f2; color: #b42318; border: 1px solid #fecdca; }
.alert-info { background: #eff8ff; color: #175cd3; border: 1px solid #b2ddff; }

.table-wrap {
    width: 100%;
    overflow-x: auto;
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 760px;
}

.admin-table th,
.admin-table td {
    border-bottom: 1px solid var(--sb-line);
    padding: 13px 12px;
    text-align: left;
    vertical-align: top;
}

.admin-table th {
    color: #475467;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .07em;
    background: #f9fafb;
}

.checkbox-label,
.preference-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-weight: 700;
}

.checkbox-label input,
.preference-check input,
input[type="checkbox"],
input[type="radio"] {
    width: auto;
    min-width: 18px;
    margin-top: 2px;
}

@media (max-width: 920px) {
    .portal-sidebar {
        position: static;
        width: auto;
        min-height: auto;
        padding: 18px;
        box-shadow: none;
    }
    .portal-main {
        margin-left: 0;
        padding: 24px 16px 50px;
    }
    .portal-nav {
        display: flex;
        flex-wrap: wrap;
    }
    .portal-topbar {
        display: grid;
    }
    .portal-grid,
    .form-grid {
        grid-template-columns: 1fr;
    }
    .portal-card--wide,
    .portal-card--activity {
        grid-column: auto;
    }
}

/* =========================================================
   v12c - Fix layout admin/portal
   Corrige conflicto de layouts heredados (grid + sidebar fija)
   ========================================================= */
body.portal-body,
body.admin-body {
    display: block !important;
    grid-template-columns: none !important;
}

body.admin-body .portal-sidebar,
body.portal-body .portal-sidebar {
    box-sizing: border-box;
}

body.admin-body .portal-main,
body.portal-body .portal-main {
    box-sizing: border-box;
    width: calc(100% - 250px);
    max-width: none;
    margin-left: 250px;
}

body.admin-body .portal-card,
body.portal-body .portal-card {
    width: 100%;
    max-width: 100%;
}

body.admin-body .portal-topbar,
body.portal-body .portal-topbar {
    width: 100%;
    max-width: 1120px;
}

body.admin-body .portal-card,
body.portal-body .portal-card,
body.admin-body .alert,
body.portal-body .alert {
    max-width: 1120px;
}

body.admin-body select,
body.admin-body input,
body.admin-body textarea,
body.portal-body select,
body.portal-body input,
body.portal-body textarea {
    min-width: 0;
}

@media (max-width: 920px) {
    body.admin-body .portal-main,
    body.portal-body .portal-main {
        width: 100%;
        margin-left: 0;
    }
}

/* =========================================================
   v12d - Restaurar menú admin azul oscuro
   ========================================================= */
.admin-body.portal-body {
    background: #f5f8fc;
}
.admin-body .portal-sidebar {
    background: linear-gradient(180deg, #061b3a 0%, #082a5a 100%) !important;
    color: #ffffff !important;
    border-right: 0 !important;
}
.admin-body .portal-logo {
    color: #ffffff !important;
}
.admin-body .portal-nav a,
.admin-body .portal-logout {
    color: rgba(255,255,255,.82) !important;
}
.admin-body .portal-nav a:hover,
.admin-body .portal-nav a.active {
    color: #ffffff !important;
    background: rgba(255,255,255,.14) !important;
}
.admin-body .portal-logout {
    background: rgba(255,255,255,.10) !important;
}
.admin-body .portal-logout:hover {
    background: rgba(255,255,255,.18) !important;
}

/* v22r - Agenda: emisiones de clase */
.agenda-emissions{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.agenda-emission-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border:1px solid rgba(15,23,42,.08);background:#f8fafc;border-radius:12px;padding:8px 10px;font-size:13px}
.agenda-emission-row strong{color:#0f172a}
.agenda-emission-row span{color:#64748b}
.agenda-emission-row a{margin-left:auto;font-weight:800;color:#0b5fc6;text-decoration:none}
@media(max-width:760px){.agenda-emission-row{display:block}.agenda-emission-row a{display:inline-block;margin-top:6px}}

/* v22s - horarios equivalentes por emisión */
.agenda-emission-row{align-items:flex-start}
.agenda-emission-main{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.agenda-timezones{flex-basis:100%;display:grid;gap:3px;margin-top:4px;color:#475569;font-size:12px;line-height:1.35}
.agenda-timezones__title{font-weight:800;color:#0f172a;text-transform:uppercase;letter-spacing:.05em;font-size:11px}
@media(max-width:760px){.agenda-emission-main{display:block}.agenda-timezones{margin-top:8px}}

/* v22t - horarios equivalentes en agenda pública */
.public-agenda-card .agenda-emissions{margin-top:14px}
.public-agenda-emissions .agenda-emission-row{background:#ffffff;border-color:rgba(15,23,42,.10);padding:10px 12px}
.next-class-card .public-agenda-emissions{margin:16px 0}
.next-class-card .agenda-emission-row{background:#f8fafc}
.next-class-card .agenda-timezones{font-size:12px}

/* =========================================================
   v22y - Portal usuario: información y diseño
   ========================================================= */
.portal-body--refined .portal-sidebar,
.portal-body .portal-sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
}
.portal-dashboard-hero,
.portal-page-hero {
    padding: 28px;
    border: 1px solid rgba(8,104,216,.12);
    border-radius: 22px;
    background:
        radial-gradient(circle at top right, rgba(116,59,209,.12), transparent 32%),
        linear-gradient(135deg, #ffffff 0%, #f7fbff 100%);
    box-shadow: 0 14px 40px rgba(11,33,65,.06);
}
.portal-dashboard-hero p,
.portal-page-hero p {
    max-width: 720px;
    margin: 10px 0 0;
}
.portal-metric-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin: 0 0 22px;
}
.portal-metric-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    padding: 20px;
    box-shadow: 0 10px 26px rgba(11,33,65,.045);
}
.portal-metric-card span,
.portal-info-strip span {
    display: block;
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-weight: 800;
}
.portal-metric-card strong {
    display: block;
    margin: 8px 0 4px;
    font-size: 34px;
    line-height: 1;
    color: var(--ink);
}
.portal-metric-card small {
    color: var(--muted);
    line-height: 1.35;
}
.portal-alert-card,
.portal-info-strip {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: center;
    border-radius: 18px;
    padding: 18px 20px;
    margin: 0 0 22px;
    background: #fff;
    border: 1px solid var(--line);
    box-shadow: 0 10px 26px rgba(11,33,65,.045);
}
.portal-alert-card p {
    margin: 4px 0 0;
    color: var(--muted);
    line-height: 1.45;
}
.portal-alert-card--warning {
    border-color: #ffd591;
    background: #fffaf0;
}
.portal-alert-card--info {
    border-color: #b7d8ff;
    background: #f5f9ff;
}
.portal-info-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.portal-info-strip strong {
    display: block;
    margin-top: 6px;
    font-size: 18px;
}
.portal-profile-strip strong {
    font-size: 16px;
}
.portal-dashboard-grid {
    margin-top: 0;
}
.portal-card-title-row,
.portal-action-row {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
}
.portal-action-row {
    align-items: center;
    margin-top: 18px;
}
.portal-chip,
.portal-status-badge,
.agenda-closed-label,
.agenda-attendance-link {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    border-radius: 999px;
    padding: 7px 11px;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
}
.portal-chip {
    color: var(--blue);
    background: #eef4ff;
    border: 1px solid #d4e4ff;
}
.portal-status-badge.is-upcoming {
    background: #e9f7ef;
    color: #0b7a3a;
}
.portal-status-badge.is-past {
    background: #f2f4f7;
    color: #667085;
}
.portal-timezone-box,
.agenda-timezones {
    display: grid;
    gap: 6px;
    margin-top: 12px;
    padding: 14px;
    border: 1px solid #e1ecff;
    background: #f8fbff;
    border-radius: 14px;
}
.portal-timezone-box span,
.agenda-timezones__title {
    color: var(--blue);
    font-weight: 900;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .06em;
}
.portal-timezone-box small,
.agenda-timezones span:not(.agenda-timezones__title) {
    color: var(--muted);
    line-height: 1.4;
}
.portal-guide-card {
    margin-top: 22px;
}
.portal-guide-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}
.portal-guide-steps div {
    display: flex;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #f8fafc;
}
.portal-guide-steps strong {
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #fff;
    background: var(--blue);
}
.portal-guide-steps span {
    color: var(--muted);
    line-height: 1.35;
}
.portal-empty-card {
    text-align: center;
    padding: 38px;
}
.portal-video-filter-card {
    margin-bottom: 22px;
}
.portal-video-card .video-card-body {
    display: grid;
    gap: 8px;
}
.agenda-emissions {
    display: grid;
    gap: 12px;
    margin-top: 14px;
}
.agenda-emission-row {
    display: grid;
    gap: 10px;
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 14px;
    background: #f9fbfd;
}
.agenda-emission-main {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.agenda-emission-main span {
    color: var(--muted);
}
.agenda-attendance-link {
    background: var(--blue);
    color: #fff;
}
.agenda-closed-label {
    background: #f2f4f7;
    color: #667085;
}
@media (max-width: 1100px) {
    .portal-metric-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 900px) {
    .portal-body--refined .portal-sidebar,
    .portal-body .portal-sidebar {
        position: static;
        height: auto;
    }
    .portal-info-strip,
    .portal-guide-steps {
        grid-template-columns: 1fr;
    }
    .portal-alert-card {
        align-items: stretch;
        flex-direction: column;
    }
}
@media (max-width: 640px) {
    .portal-metric-grid {
        grid-template-columns: 1fr;
    }
    .portal-dashboard-hero,
    .portal-page-hero {
        padding: 22px;
    }
}

/* =========================================================
   v22ab - Fix layout portal usuario
   El menú lateral del portal se fija fuera del flujo normal para evitar
   que el contenido principal quede desplazado una pantalla hacia abajo.
   ========================================================= */
body.portal-body:not(.admin-body) .portal-sidebar {
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 250px !important;
    height: 100vh !important;
    overflow-y: auto !important;
}

body.portal-body:not(.admin-body) .portal-main {
    margin-left: 250px !important;
    width: calc(100% - 250px) !important;
    min-height: 100vh;
    padding-top: 40px;
}

@media (max-width: 900px) {
    body.portal-body:not(.admin-body) .portal-sidebar {
        position: static !important;
        width: 100% !important;
        height: auto !important;
        min-height: auto !important;
    }

    body.portal-body:not(.admin-body) .portal-main {
        margin-left: 0 !important;
        width: 100% !important;
        padding-top: 24px;
    }
}

/* =========================================================
   v22ai - Fix layout admin
   Igual que el fix del portal v22ab: el menú lateral del admin
   queda fijo fuera del flujo normal para que el contenido no arranque
   debajo del menú y no obligue a scrollear una pantalla completa.
   ========================================================= */
:root {
    --admin-sidebar-width-v22ai: 238px;
}

body.admin-body .portal-sidebar.admin-sidebar {
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: var(--admin-sidebar-width-v22ai) !important;
    height: 100vh !important;
    min-height: 100vh !important;
    max-height: 100vh !important;
    overflow: hidden !important;
    z-index: 1000;
}

body.admin-body .portal-main.admin-main {
    margin-left: var(--admin-sidebar-width-v22ai) !important;
    width: calc(100% - var(--admin-sidebar-width-v22ai)) !important;
    min-height: 100vh;
    padding-top: 28px !important;
}

body.admin-body .admin-main > .portal-topbar,
body.admin-body .admin-main > .admin-page-head,
body.admin-body .admin-main > .portal-card,
body.admin-body .admin-main > .alert,
body.admin-body .admin-main > .ux-soft-card,
body.admin-body .admin-main > form,
body.admin-body .admin-main > section,
body.admin-body .admin-main > details {
    max-width: 1180px;
}

@media (max-width: 920px) {
    body.admin-body .portal-sidebar.admin-sidebar {
        position: static !important;
        width: 100% !important;
        height: auto !important;
        min-height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }

    body.admin-body .portal-main.admin-main {
        margin-left: 0 !important;
        width: 100% !important;
        padding-top: 22px !important;
    }
}

/* v22ap - configuración de certificados */
.cert-config-inline-field {
    display: grid;
    gap: 6px;
    min-width: min(100%, 280px);
    font-size: 13px;
    font-weight: 700;
    color: #344054;
}
.cert-config-inline-field input[type="number"] {
    width: 110px;
    border: 1px solid rgba(16,24,40,.14);
    border-radius: 6px;
    padding: 9px 10px;
    font: inherit;
    color: #172033;
    background: #fff;
}
.cert-config-inline-field small {
    max-width: 360px;
    color: #667085;
    font-weight: 500;
    line-height: 1.35;
}
