/* Assets.zip: tokens e iconos originales; adaptación a los componentes Bootstrap existentes. */
:root {
    --navy: #263d5a;
    --navy-deep: #1d304b;
    --accent: #bd5460;
    --accent-hover: #a53c49;
    --focus-ring: #5286cd;
    --action: #263d5a;
    --action-hover: #334e6e;
    --link-hover: #334e6e;
    --action-text: #fff;
    --correct: #375f8b;
    --wrong: #b82036;
    --warning-text: #8c4a1f;
    --info-text: #375f8b;
    --bg: #f7f8fa;
    --surface: #fff;
    --surface-muted: #fafbfc;
    --text: #22324c;
    --text-strong: #0c1e3a;
    --text-secondary: #5e6e86;
    --border: #e4ebf4;
    --border-strong: #dce4f0;
    --selection-bg: #eff3f8;
    --blue-soft: #eff3f8;
    --rose-soft: #fff0f2;
    --amber-soft: #fff5eb;
    --nav-active: #edf1f6;
    --shadow-sm: 0 2px 5px rgba(7, 22, 47, .04);
    --shadow-md: 0 8px 22px rgba(7, 22, 47, .08);
    --shadow-lg: 0 28px 70px -22px rgba(0, 8, 28, .5);
    --correct-bg: var(--selection-bg);
    --wrong-bg: var(--rose-soft);
    --ink: var(--text-strong);
    --ink-soft: var(--text);
    --muted: var(--text-secondary);
    --paper: var(--bg);
    --line: var(--border-strong);
    --bs-font-sans-serif: var(--font);
    --bs-body-font-family: var(--font);
    --bs-body-bg: var(--bg);
    --bs-body-color: var(--text);
    --bs-secondary-color: var(--text-secondary);
    --bs-border-color: var(--border-strong);
    --bs-border-radius: .75rem;
    --bs-border-radius-sm: .5rem;
    --bs-border-radius-lg: 1rem;
    --bs-primary: var(--action);
    --bs-primary-rgb: 38, 61, 90;
    --bs-success-rgb: 55, 95, 139;
    --bs-danger-rgb: 184, 32, 54;
    --bs-link-color: var(--correct);
    --bs-link-hover-color: var(--link-hover);
}
[data-theme="dark"] {
    --bg: #101721;
    --surface: #172230;
    --surface-muted: #1b293a;
    --text: #e5edff;
    --text-strong: #fff;
    --text-secondary: #adbed6;
    --border: #21334e;
    --border-strong: #2a3d5b;
    --selection-bg: #23354b;
    --blue-soft: #23354b;
    --rose-soft: #391d30;
    --amber-soft: #33283a;
    --nav-active: #1d3250;
    --action: #3b567b;
    --action-hover: #48678e;
    --link-hover: #d8e6ff;
    --action-text: #fff;
    --focus-ring: #8bb8ff;
    --correct: #b6d2ff;
    --wrong: #ff9aa5;
    --warning-text: #ffd3ad;
    --info-text: #b6d2ff;
    --shadow-sm: 0 2px 5px rgba(0, 0, 0, .14);
    --shadow-lg: 0 28px 70px -22px rgba(0, 0, 0, .7);
    --bs-body-bg: var(--bg);
    --bs-body-color: var(--text);
    --bs-secondary-color: var(--text-secondary);
    --bs-border-color: var(--border-strong);
    --bs-link-color: var(--correct);
    --bs-link-hover-color: var(--link-hover);
}
body { font-family: var(--font); font-size: .9rem; color: var(--text); background: var(--bg); line-height: 1.6; }
h1, h2, h3, h4, h5, h6 { color: var(--text-strong); font-weight: 700; letter-spacing: -.025em; }
h1.h4 { font-size: 1.55rem; }
h1.h5 { font-size: 1.35rem; }
h2.h5 { font-size: 1.15rem; }
a { color: var(--correct); text-underline-offset: 3px; }
a:hover { color: var(--link-hover); }
:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
[hidden] { display: none !important; }
.icon { display: inline-block; width: 1.15em; height: 1.15em; flex: 0 0 auto; background-color: currentColor; -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat; vertical-align: -.15em; }
.theme-icon-sun { display: none; }
[data-theme="dark"] .theme-icon-moon { display: none; }
[data-theme="dark"] .theme-icon-sun { display: inline-block; }
.skip-link { position: fixed; left: 1rem; top: -6rem; z-index: 1100; background: var(--surface); color: var(--text); border: 1px solid var(--border-strong); padding: .7rem 1rem; border-radius: .5rem; }
.skip-link:focus { top: 1rem; }
.icon-btn { display: inline-grid; place-items: center; flex-shrink: 0; width: 2.5rem; height: 2.5rem; border: 1px solid var(--border-strong); border-radius: 50%; background: var(--surface); color: var(--text-secondary); box-shadow: var(--shadow-sm); }
.icon-btn:hover { background: var(--surface-muted); color: var(--text-strong); }
.app-shell { display: flex; min-height: 100vh; }
.app-sidebar { --bs-offcanvas-width: 16rem; --bs-offcanvas-bg: var(--surface); --bs-offcanvas-color: var(--text); background: var(--surface); width: var(--sidebar); border-right: 1px solid var(--border-strong); }
.sidebar-body { display: flex !important; flex-direction: column; padding: 1.25rem 1rem !important; background: var(--surface); }
.app-brand { display: flex; align-items: center; gap: .75rem; text-decoration: none; color: var(--text-strong); }
.app-brand:hover { color: var(--text-strong); }
.app-brand strong { display: block; font-size: 1.15rem; font-weight: 700; letter-spacing: -.025em; }
.app-brand small { display: block; color: var(--text-secondary); font-size: .7rem; }
.brand-mark { display: inline-grid; place-items: center; width: 2.6rem; height: 2.6rem; flex-shrink: 0; border-radius: .85rem; background: var(--navy-deep); color: #fff; font-size: 1.4rem; }
.sidebar-body > .app-brand { padding: .4rem .7rem 1.7rem; }
.nav-caption { margin: .75rem 1rem .7rem; font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; color: var(--text-secondary); }
.app-nav { display: flex; flex-direction: column; gap: .35rem; }
.app-nav-link { display: flex; align-items: center; gap: .8rem; padding: .85rem 1rem; color: var(--text-secondary); border-radius: var(--radius); font-size: .85rem; font-weight: 500; text-decoration: none; border: 1px solid transparent; }
.app-nav-link .icon { font-size: 1.15rem; }
.app-nav-link:hover { background: var(--nav-active); color: var(--text-strong); }
.app-nav-link.is-active { background: var(--selection-bg); color: var(--correct); font-weight: 650; border-color: color-mix(in srgb, var(--correct) 13%, transparent); }
.sidebar-bottom { margin-top: auto; padding: 2rem .4rem .25rem; }
.sidebar-note { display: flex; align-items: center; justify-content: center; gap: .5rem; color: var(--text-secondary); font-size: .7rem; margin-bottom: 1rem; }
.app-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.app-topbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 2rem; min-height: 5rem; border-bottom: 1px solid var(--border-strong); }
.topbar-title { display: flex; align-items: center; gap: .75rem; color: var(--text-secondary); font-weight: 500; font-size: .8rem; min-width: 0; }
.topbar-actions { display: flex; align-items: center; gap: 1rem; }
.profile-pill { display: flex; align-items: center; gap: .65rem; border: 1px solid var(--border-strong); background: var(--surface); padding: .35rem 1rem .35rem .35rem; border-radius: 2rem; }
.avatar { display: grid; place-items: center; flex-shrink: 0; width: 2rem; height: 2rem; border-radius: 50%; background: var(--navy); color: #fff; font-size: .7rem; font-weight: 700; }
.profile-meta { line-height: 1.4; max-width: 18rem; }
.profile-meta strong { display: block; font-size: .72rem; overflow-wrap: anywhere; }
.profile-meta span { display: block; color: var(--text-secondary); font-size: .65rem; }
.app-content { width: 100%; max-width: 1600px; margin: 0 auto; padding: 2rem; flex: 1; }
.app-content > .d-flex.justify-content-between, .card-header.d-flex { gap: 1rem; flex-wrap: wrap; }
.app-content > .d-flex.justify-content-between { margin-bottom: 1.5rem !important; }
.app-footer { color: var(--text-secondary); font-size: .7rem; padding: 0 2rem 1.5rem; }
.app-footer span { margin: 0 .4rem; }
.page-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-heading p { color: var(--text-secondary); font-size: .83rem; margin: .4rem 0 0; }
.page-eyebrow { color: var(--correct); font-weight: 700; text-transform: uppercase; letter-spacing: .14em; font-size: .65rem; margin-bottom: .45rem; }
.card { --bs-card-bg: var(--surface); --bs-card-border-color: var(--border-strong); --bs-card-cap-bg: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm) !important; }
.card-header, .card-footer { padding: 1rem 1.3rem; border-color: var(--border-strong); background: var(--surface) !important; }
.card-header:first-child { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.card-footer:last-child { border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.card-body { padding: 1.4rem; }
.card > .table-responsive:first-child { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.card > .table-responsive:last-child { border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.card > .table-responsive:only-child { border-radius: var(--radius-lg); }
.card-header .small { margin-top: .35rem; }
.table { --bs-table-color: var(--text); --bs-table-bg: transparent; --bs-table-striped-color: var(--text); --bs-table-striped-bg: var(--surface-muted); --bs-table-hover-color: var(--text-strong); --bs-table-hover-bg: var(--nav-active); --bs-table-active-color: var(--text-strong); --bs-table-active-bg: var(--blue-soft); --bs-table-border-color: var(--border-strong); font-size: .83rem; vertical-align: middle; }
.table-light { --bs-table-bg: var(--surface-muted); --bs-table-color: var(--text-secondary); }
.table > :not(caption) > * > * { padding: .95rem 1.2rem; }
.table thead th { background: var(--surface-muted); color: var(--text-secondary); font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 650; white-space: nowrap; }
.table tbody tr:last-child td { border-bottom: 0; }
.table td.text-end { min-width: 11rem; }
.table td .btn { margin: .12rem; }
.table td { max-width: 36rem; overflow-wrap: anywhere; }
.table td[colspan] { padding: 2.5rem 1rem !important; }
.table .form-control, .table .form-select { min-width: 10rem; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border-radius: var(--radius); font-size: .85rem; font-weight: 600; padding: .68rem 1rem; line-height: 1.4; --bs-btn-focus-shadow-rgb: 82, 134, 205; }
.btn-sm { padding: .45rem .7rem; font-size: .75rem; border-radius: .6rem; }
.btn-lg { padding: .9rem 1.1rem; font-size: .95rem; }
.btn-primary, .btn-success { --bs-btn-color: var(--action-text); --bs-btn-bg: var(--action); --bs-btn-border-color: var(--action); --bs-btn-hover-color: var(--action-text); --bs-btn-hover-bg: var(--action-hover); --bs-btn-hover-border-color: var(--action-hover); --bs-btn-active-color: var(--action-text); --bs-btn-active-bg: var(--action-hover); --bs-btn-active-border-color: var(--action-hover); --bs-btn-disabled-color: var(--action-text); --bs-btn-disabled-bg: var(--action); --bs-btn-disabled-border-color: var(--action); box-shadow: var(--shadow-sm); }
.btn-outline-secondary, .btn-outline-light, .btn-secondary { --bs-btn-color: var(--text); --bs-btn-bg: var(--surface); --bs-btn-border-color: var(--border-strong); --bs-btn-hover-color: var(--text-strong); --bs-btn-hover-bg: var(--nav-active); --bs-btn-hover-border-color: var(--border-strong); --bs-btn-active-color: var(--text-strong); --bs-btn-active-bg: var(--nav-active); --bs-btn-active-border-color: var(--border-strong); --bs-btn-disabled-color: var(--text-secondary); --bs-btn-disabled-border-color: var(--border-strong); }
.btn-outline-primary, .btn-outline-success { --bs-btn-color: var(--correct); --bs-btn-bg: var(--surface); --bs-btn-border-color: color-mix(in srgb, var(--correct) 35%, var(--surface)); --bs-btn-hover-color: var(--action-text); --bs-btn-hover-bg: var(--action); --bs-btn-hover-border-color: var(--action); --bs-btn-active-color: var(--action-text); --bs-btn-active-bg: var(--action); --bs-btn-active-border-color: var(--action); }
.btn-outline-danger { --bs-btn-color: var(--wrong); --bs-btn-bg: transparent; --bs-btn-border-color: color-mix(in srgb, var(--wrong) 32%, var(--surface)); --bs-btn-hover-bg: var(--accent-hover); --bs-btn-hover-border-color: var(--accent-hover); --bs-btn-hover-color: #fff; }
.btn-danger { --bs-btn-bg: var(--accent-hover); --bs-btn-border-color: var(--accent-hover); --bs-btn-hover-bg: #981b2d; --bs-btn-hover-border-color: #981b2d; }
.btn-outline-warning { --bs-btn-color: var(--warning-text); --bs-btn-border-color: color-mix(in srgb, var(--warning-text) 40%, var(--surface)); --bs-btn-hover-bg: var(--amber-soft); --bs-btn-hover-color: var(--warning-text); }
.form-label, legend.form-label { font-size: .8rem !important; color: var(--text); font-weight: 600; margin-bottom: .45rem; }
.form-control, .form-select { background-color: var(--surface-muted); border-color: var(--border-strong); color: var(--text); border-radius: var(--radius); padding: .7rem .9rem; font-size: .87rem; }
.form-select { padding-right: 2.4rem; }
.form-control::placeholder { color: var(--text-secondary); opacity: .85; }
.form-control:focus, .form-select:focus { background-color: var(--surface); color: var(--text); border-color: var(--correct); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--focus-ring) 18%, transparent); }
.form-control:disabled, .form-select:disabled { background-color: var(--nav-active); color: var(--text-secondary); }
.form-control.is-invalid, .form-select.is-invalid { border-color: var(--wrong); }
.invalid-feedback, .text-danger { color: var(--wrong) !important; }
.form-text, .text-muted { color: var(--text-secondary) !important; }
.form-text { font-size: .75rem; }
.form-check-input { background-color: var(--surface); border-color: var(--text-secondary); }
.form-check-input:checked { background-color: var(--action); border-color: var(--action); }
.form-check-input:focus { border-color: var(--correct); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--focus-ring) 18%, transparent); }
.form-check-label { cursor: pointer; }
.input-group-text { background: var(--surface-muted); border-color: var(--border-strong); color: var(--text-secondary); font-size: .8rem; }
.text-success { color: var(--correct) !important; }
.bg-white { background-color: var(--surface) !important; }
.bg-light { background-color: var(--surface-muted) !important; }
.bg-success-subtle { background-color: var(--selection-bg) !important; }
.alert { padding: 1rem 1.2rem; border-radius: var(--radius); font-size: .84rem; border: 1px solid transparent; line-height: 1.65; }
.alert-dismissible { padding-right: 3.25rem; }
.alert-success { background: var(--selection-bg); color: var(--correct); border-color: color-mix(in srgb, var(--correct) 15%, transparent); }
.alert-danger { background: var(--rose-soft); color: var(--wrong); border-color: color-mix(in srgb, var(--wrong) 15%, transparent); }
.alert-info { background: var(--blue-soft); color: var(--info-text); border-color: color-mix(in srgb, var(--info-text) 12%, transparent); }
.alert-warning { background: var(--amber-soft); color: var(--warning-text); border-color: color-mix(in srgb, var(--warning-text) 12%, transparent); }
.alert a { color: inherit; }
.badge { font-size: .68rem; font-weight: 600; padding: .4rem .65rem; border-radius: 999px; letter-spacing: 0; line-height: 1.2; }
.badge.text-bg-success { background: var(--selection-bg) !important; color: var(--correct) !important; }
.badge.text-bg-danger { background: var(--rose-soft) !important; color: var(--wrong) !important; }
.badge.text-bg-primary, .badge.text-bg-info { background: var(--blue-soft) !important; color: var(--info-text) !important; }
.badge.text-bg-warning { background: var(--amber-soft) !important; color: var(--warning-text) !important; }
.badge.text-bg-secondary, .badge.text-bg-light { background: var(--nav-active) !important; color: var(--text-secondary) !important; }
.breadcrumb { --bs-breadcrumb-divider: '›'; font-size: .78rem; }
.breadcrumb-item.active, .breadcrumb-item + .breadcrumb-item::before { color: var(--text-secondary); }
.breadcrumb a { text-decoration: none; }
.pagination { --bs-pagination-color: var(--text); --bs-pagination-bg: var(--surface); --bs-pagination-border-color: var(--border-strong); --bs-pagination-hover-color: var(--correct); --bs-pagination-hover-bg: var(--surface-muted); --bs-pagination-hover-border-color: var(--border-strong); --bs-pagination-active-color: var(--action-text); --bs-pagination-active-bg: var(--action); --bs-pagination-active-border-color: var(--action); --bs-pagination-disabled-color: var(--text-secondary); --bs-pagination-disabled-bg: var(--surface-muted); --bs-pagination-disabled-border-color: var(--border-strong); font-size: .8rem; }
.pagination .page-link { font-size: .8rem; padding: .5rem .8rem; }
.modal { --bs-modal-bg: var(--surface); --bs-modal-color: var(--text); --bs-modal-border-color: var(--border-strong); --bs-modal-header-border-color: var(--border-strong); --bs-modal-footer-border-color: var(--border-strong); --bs-modal-border-radius: 1.5rem; }
.modal-content { box-shadow: var(--shadow-lg); overflow: hidden; }
.modal-header, .modal-body, .modal-footer { padding: 1.25rem 1.5rem; }
.modal-header { background: var(--surface-muted); }
.modal-header h2 { font-size: 1.15rem; }
.modal-body dl { padding: 1rem; background: var(--surface-muted); border-radius: var(--radius); font-size: .85rem; }
.modal-body dd { overflow-wrap: anywhere; }
.modal-body dt { color: var(--text-secondary); font-weight: 500; }
.modal-body .alert { font-size: .82rem; }
.auth-page { min-height: 100vh; display: flex; flex-direction: column; background: var(--bg); }
.auth-topbar { display: flex; align-items: center; justify-content: space-between; padding: 1.5rem 2rem; gap: 1rem; }
.auth-content { width: 100%; max-width: 46rem; margin: auto; padding: 1.5rem; }
.auth-card { width: 100%; max-width: 28rem; margin: 0 auto; background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-2xl); box-shadow: var(--shadow-lg); overflow: hidden; }
.auth-card--register { max-width: 44rem; }
.auth-header { padding: 1.8rem 2rem; text-align: center; background: var(--surface); color: var(--text); }
.auth-header h1 { font-size: 1.65rem; color: #fff; margin-bottom: .4rem; }
.auth-header > p:last-child { margin: 0; font-size: .8rem; color: #dce7fa; }
.auth-symbol { display: inline-grid; place-items: center; width: 2.7rem; height: 2.7rem; border: 1px solid #ffffff30; border-radius: .85rem; background: #ffffff12; color: #fff; font-size: 1.6rem; margin-bottom: .8rem; }
.auth-kicker { color: #fff; font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .17em; margin: 0 0 .4rem; }
.auth-body { padding: 1.75rem 2rem; }
.auth-intro { margin-bottom: 1.4rem; }
.auth-intro h2 { font-size: 1.15rem; margin-bottom: .3rem; }
.auth-intro p { font-size: .8rem; color: var(--text-secondary); margin-bottom: 0; }
.auth-input { position: relative; }
.auth-input > .form-control { padding-left: 2.75rem; }
.auth-input .input-symbol { position: absolute; left: 1rem; top: .95rem; color: var(--text-secondary); z-index: 2; pointer-events: none; }
.form-control.has-password-toggle { padding-right: 3rem; background-image: none; }
.password-toggle { position: absolute; right: .25rem; top: .2rem; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; background: transparent; color: var(--text-secondary); border: 0; border-radius: .5rem; }
.password-toggle:hover { background: var(--nav-active); color: var(--text); }
.auth-card-footer { border-top: 1px solid var(--border-strong); padding: 1.1rem; font-size: .8rem; text-align: center; color: var(--text-secondary); }
.auth-card-footer a { font-weight: 600; }
.auth-footer { text-align: center; padding: 1.5rem; color: var(--text-secondary); font-size: .7rem; }
.course-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: 1rem; }
.course-choice { display: flex; align-items: center; gap: 1rem; border: 1px solid var(--border-strong); border-radius: 1rem; padding: 1.25rem; background: var(--surface); color: var(--text); text-decoration: none; transition: border-color .15s ease, background .15s ease; }
.course-choice:hover { border-color: var(--correct); background: var(--selection-bg); color: var(--text-strong); }
.choice-symbol { flex-shrink: 0; display: grid; place-items: center; background: var(--blue-soft); color: var(--info-text); width: 2.75rem; height: 2.75rem; border-radius: .8rem; font-size: 1.2rem; }
.course-choice strong { display: block; font-size: .9rem; }
.course-choice small { display: block; color: var(--text-secondary); font-size: .75rem; margin-top: .3rem; }
.course-choice > .icon:last-child { margin-left: auto; color: var(--correct); }
.registration-choice { padding: .75rem .75rem .75rem 2.35rem; background: var(--surface-muted); border: 1px solid var(--border-strong); border-radius: .75rem; }
.registration-choice:has(input:checked) { background: var(--selection-bg); border-color: var(--correct); }
.serie-banner { background: var(--surface); color: var(--text); padding: 1.75rem; margin-bottom: 1.25rem; border-radius: var(--radius-lg); }
.serie-banner__row { display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; }
.serie-banner__kicker { font-size: .65rem; text-transform: uppercase; letter-spacing: .13em; color: #fff; margin-bottom: .55rem; }
.serie-banner__title { font-size: 1.65rem; line-height: 1.2; font-weight: 700; margin-bottom: .65rem; overflow-wrap: anywhere; }
.serie-banner__meta { font-size: .95rem; }
.serie-banner__general { margin-top: .6rem; color: #d5e2f7; font-size: .8rem; }
.examen-reloj { flex-shrink: 0; min-width: 12rem; text-align: center; border: 1px solid #ffffff30; padding: 1rem; border-radius: var(--radius); background: #ffffff0c; }
.examen-reloj__label { font-size: .65rem; text-transform: uppercase; letter-spacing: .1em; color: #d5e2f7; }
.examen-reloj__valor { font-size: 2.2rem; font-weight: 650; font-variant-numeric: tabular-nums; line-height: 1.2; margin: .35rem 0; }
.examen-reloj__hint { font-size: .7rem; color: #d5e2f7; max-width: 13rem; }
.examen-reloj--alerta { border-color: #fda4af; background: #88133755; }
.examen-reloj--alerta .examen-reloj__valor { color: #fecdd3; }
.progress { --bs-progress-bg: var(--border-strong); --bs-progress-bar-bg: var(--action); border-radius: 1rem; overflow: hidden; }
#form-pregunta .card-header { font-size: 1.1rem; font-weight: 600; line-height: 1.65; white-space: pre-wrap; }
#form-pregunta .form-check { position: relative; border: 1px solid var(--border-strong); border-radius: var(--radius); padding: 0; background: var(--surface); }
#form-pregunta .form-check-input { position: absolute; margin: 0; top: 1.1rem; left: 1rem; width: 1.1rem; height: 1.1rem; }
#form-pregunta .form-check-label { display: block; padding: .9rem 1rem .9rem 2.85rem; min-height: 3rem; white-space: pre-wrap; overflow-wrap: anywhere; }
#form-pregunta .form-check:hover { background: var(--surface-muted); }
#form-pregunta .form-check:has(input:checked) { background: var(--selection-bg); border-color: var(--correct); box-shadow: 0 0 0 1px var(--correct); }
#form-pregunta .form-check:has(input:focus-visible) { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
.examen-protegido, .examen-protegido * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-user-drag: none; }
.examen-protegido #respuesta_texto { -webkit-user-select: text; user-select: text; }
.pregunta-card__enunciado { white-space: pre-wrap; font-size: 1rem; line-height: 1.65; }
.question-types { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.question-type-choice { display: flex; align-items: flex-start; gap: .75rem; padding: 1rem; border: 1px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); cursor: pointer; }
.question-type-choice > input { flex-shrink: 0; margin-top: .3rem; }
.question-type-choice:has(input:checked) { border-color: var(--correct); background: var(--selection-bg); box-shadow: 0 0 0 1px var(--correct); }
.question-type-choice:has(input:focus-visible) { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
.question-type-choice__content { min-width: 0; }
.question-type-choice__title { display: flex; align-items: center; gap: .5rem; font-size: .85rem; }
.question-type-choice__description { display: block; margin-top: .5rem; font-size: .75rem; color: var(--text-secondary); }
.question-type-choice--upcoming { background: var(--surface-muted); cursor: default; }
.question-type-choice__status { display: inline-block; margin-top: .5rem; font-size: .65rem; font-weight: 600; color: var(--text-secondary); }
.question-type-badge { display: inline-flex; align-items: center; gap: .45rem; font-size: .75rem; font-weight: 600; color: var(--text-secondary); white-space: normal; }
.question-type-badge__number { flex-shrink: 0; display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: .4rem; background: var(--blue-soft); color: var(--info-text); font-size: .75rem; font-weight: 700; }
@media (max-width: 575.98px) { .question-types { grid-template-columns: 1fr; } }
/* Identidad minimalista: superficies blancas, azul discreto y acentos rojos puntuales. */
.app-sidebar { --bs-offcanvas-bg: var(--surface); --bs-offcanvas-color: var(--text); background: var(--surface); border-right-color: var(--border-strong); }
.sidebar-body { background: var(--surface); }
.brand-mark { position: relative; background: var(--navy); color: #fff; }
.brand-mark::after { content: ''; position: absolute; right: -.08rem; bottom: -.08rem; width: .45rem; height: .45rem; border-radius: 50%; background: #bd5460; border: 2px solid var(--surface); }
.app-nav-link.is-active { color: var(--text-strong); background: var(--selection-bg); border-color: transparent; box-shadow: inset 2px 0 #bd5460; }
.app-nav-link.is-active .icon { color: var(--correct); }
.sidebar-bottom { border-top: 1px solid var(--border); padding-top: 1.25rem; }
.app-topbar { background: var(--surface); border-bottom-color: var(--border-strong); }
.topbar-title { color: var(--text-secondary); }
.profile-pill { background: var(--surface-muted); border-color: var(--border-strong); }
.page-heading { background: transparent; padding: 0; border: 0; box-shadow: none; }
.page-eyebrow { color: var(--text-secondary); }
.page-eyebrow::before { content: ''; display: inline-block; width: .85rem; height: 2px; background: #bd5460; vertical-align: middle; margin-right: .55rem; }
.card { box-shadow: 0 1px 3px rgba(7, 22, 47, .025) !important; }
.auth-topbar .app-brand { color: var(--text-strong); }
.auth-card { border-color: var(--border-strong); box-shadow: 0 12px 35px -18px rgba(23, 42, 69, .18); }
.auth-header { border-bottom: 1px solid var(--border); padding-bottom: 1.5rem; }
.auth-header h1 { color: var(--text-strong); font-size: 1.5rem; }
.auth-header > p:last-child, .auth-kicker { color: var(--text-secondary); }
.auth-symbol { background: var(--selection-bg); color: var(--correct); border-color: transparent; }
.auth-footer { color: var(--text-secondary); }
.serie-banner { border: 1px solid var(--border-strong); box-shadow: none; }
.serie-banner__title { color: var(--text-strong); }
.serie-banner__kicker, .serie-banner__general { color: var(--text-secondary); }
.examen-reloj { background: var(--surface-muted); border-color: var(--border-strong); }
.examen-reloj__valor { color: var(--text-strong); }
.examen-reloj__label, .examen-reloj__hint { color: var(--text-secondary); }
.examen-reloj--alerta { background: var(--rose-soft); border-color: var(--wrong); }
.examen-reloj--alerta .examen-reloj__valor { color: var(--wrong); }
.progress-bar { background: var(--action); }

@media (min-width: 992px) {
    .app-sidebar.offcanvas-lg { position: fixed; inset: 0 auto 0 0; z-index: 1030; width: var(--sidebar); height: 100vh; background: var(--surface) !important; }
    .app-sidebar .offcanvas-body { width: 100%; height: 100%; overflow-y: auto; }
    .app-main { margin-left: var(--sidebar); }
}
@media (max-width: 1199.98px) { .app-content { padding: 1.5rem; } .app-topbar { padding-inline: 1.5rem; } }
@media (max-width: 991.98px) { .app-sidebar .offcanvas-header { padding-bottom: 0; } .app-topbar { min-height: 4.5rem; padding: .85rem 1rem; } .app-content { padding: 1.5rem 1rem; } }
@media (max-width: 575.98px) {
    .profile-meta { display: none; }
    .profile-pill { padding: .25rem; }
    .topbar-actions { gap: .5rem; }
    .topbar-title { font-size: .75rem; }
    .auth-topbar { padding: 1rem; }
    .auth-content { padding: 1rem; }
    .auth-header { padding: 1.5rem; }
    .auth-body { padding: 1.5rem; }
    .auth-footer { font-size: .65rem; }
    .card-body { padding: 1rem; }
    .form-control, .form-select { font-size: 1rem; }
    .card-header, .card-footer { padding: 1rem; }
    .table > :not(caption) > * > * { padding: .75rem .85rem; }
    .modal-header, .modal-body, .modal-footer { padding: 1rem; }
    .modal-footer form, .modal-footer form .btn { width: 100%; }
    .serie-banner { padding: 1.25rem; }
    .serie-banner__row { flex-direction: column; align-items: stretch; }
    .examen-reloj { min-width: 0; width: 100%; display: grid; grid-template-columns: 1fr auto; align-items: center; text-align: left; gap: .3rem .75rem; padding: .75rem 1rem; }
    .examen-reloj__valor { font-size: 1.7rem; margin: 0; }
    .examen-reloj__hint { max-width: none; grid-column: 1 / -1; }
    .app-footer { padding-inline: 1rem; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; } }
@media print { .app-sidebar, .app-topbar, .app-footer, .skip-link, .auth-topbar { display: none !important; } .app-main { margin: 0; } .app-content { padding: 0; max-width: none; } .table-responsive { overflow: visible; } body { background: white; } }
.respuesta-escrita {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    min-width: 12rem;
    max-width: 42rem;
}

.tabla-respuestas { table-layout: fixed; width: 100%; min-width: 36rem; }
.tabla-respuestas .col-pregunta { width: 34%; }
.tabla-respuestas .col-calificacion { width: 10.5rem; }
.tabla-respuestas > :not(caption) > * > * { padding: .7rem .85rem; vertical-align: top; }
.tabla-respuestas .form-select { min-width: 0; padding: .4rem 1.8rem .4rem .6rem; font-size: .82rem; border-radius: .5rem; }
.calificacion-en-fila { margin: 0; }
.estado-calificacion { display: block; margin-top: .2rem; line-height: 1.3; }
.estado-calificacion:empty { display: none; }
