/*
 * AulaCore canonical theme layer.
 *
 * Effective backend cascade: vendor/plugin utilities, dynamic branding from
 * theme.css, then this canonical normalizer. Keep functional views structural
 * and visual decisions here.
 */

@import url("aulacore-core/typography.css?v=20260926-1");
@import url("aulacore-core/tokens.css?v=20260926-1");
@import url("aulacore-core/compat.css?v=20260915-2");
@import url("aulacore-topbar.css?v=20260926-1");
@import url("aulacore-student-sidebar.css?v=20260926-1");
@import url("aulacore-core/shell.css?v=20260925-2");
@import url("aulacore-components/surfaces.css?v=20260926-2");
@import url("aulacore-components/forms.css?v=20260930-1");
@import url("aulacore-components/controls.css?v=20260926-3");
@import url("aulacore-components/calendar.css?v=20260923-1");
@import url("aulacore-components/tables-base.css?v=20260930-1");
@import url("aulacore-components/datatables-controls.css?v=20260926-2");
@import url("aulacore-components/datatables-layout.css?v=20260827-1");
@import url("aulacore-components/datatables-buttons.css?v=20260925-2");
@import url("aulacore-components/datatables-pagination.css?v=20260925-1");
@import url("aulacore-components/navigation.css?v=20260926-3");
@import url("aulacore-components/modals.css?v=20260926-2");
@import url("aulacore-components/screens.css?v=20260930-1");
@import url("aulacore-components/responsive.css?v=20260926-2");
@import url("aulacore-core/icons.css?v=20260926-7");

:root {
    --font-default: "Roboto", "Helvetica Neue", Helvetica, sans-serif;
    --font-primary: var(--font-default);
    --font-regular: var(--font-default);
    --font-medium: var(--font-default);
    --ss-body-size: 13px;
    --ss-body-line-height: 1.38;
    --ss-title-size: 14px;
    --ss-title-size-lg: 15px;
    --ss-small-size: 12px;
    --ss-font-weight-normal: 400;
    --ss-font-weight-title: 500;
    --ss-font-weight-emphasis: 500;
    --ss-font-weight-strong: 500;
    --ss-text-shadow: none;
    --ss-table-head-size: 13px;
    --ss-table-cell-size: 14px;
    --ss-table-row-height: 44px;
    --ss-control-height: 34px;
    --ss-action-button-size: 24px;
}

@media screen {
    body:not([class*="ac-font-"]),
    .wrapper:not([class*="ac-font-"]),
    .content-wrapper:not([class*="ac-font-"]),
    .right-side:not([class*="ac-font-"]),
    .main-header:not([class*="ac-font-"]),
    .main-sidebar:not([class*="ac-font-"]),
    .modal:not([class*="ac-font-"]),
    .popover:not([class*="ac-font-"]),
    .tooltip:not([class*="ac-font-"]),
    .box:not([class*="ac-font-"]),
    .panel:not([class*="ac-font-"]),
    .card:not([class*="ac-font-"]),
    .well:not([class*="ac-font-"]),
    .form-control:not([class*="ac-font-"]),
    .select2-container:not([class*="ac-font-"]),
    .bootstrap-select:not([class*="ac-font-"]),
    .table:not([class*="ac-font-"]),
    table.dataTable:not([class*="ac-font-"]),
    .dt-container:not([class*="ac-font-"]) {
        font-family: var(--font-default) !important;
        font-weight: var(--ss-font-weight-normal);
        letter-spacing: 0;
        text-shadow: var(--ss-text-shadow) !important;
    }

    body:not(.loginbg) .content-wrapper,
    body:not(.loginbg) .right-side,
    body:not(.loginbg) .main-header,
    body:not(.loginbg) .main-sidebar,
    body:not(.loginbg) .modal,
    body:not(.loginbg) .popover,
    body:not(.loginbg) .tooltip,
    body:not(.loginbg) .content-wrapper *,
    body:not(.loginbg) .right-side *,
    body:not(.loginbg) .main-header *,
    body:not(.loginbg) .main-sidebar *,
    body:not(.loginbg) .modal *,
    body:not(.loginbg) .popover *,
    body:not(.loginbg) .tooltip * {
        text-shadow: var(--ss-text-shadow) !important;
    }

    .content-wrapper h1:not([class*="ac-font-"]),
    .right-side h1:not([class*="ac-font-"]),
    .content-wrapper h2:not([class*="ac-font-"]),
    .right-side h2:not([class*="ac-font-"]),
    .content-wrapper h3:not([class*="ac-font-"]),
    .right-side h3:not([class*="ac-font-"]),
    .content-wrapper h4:not([class*="ac-font-"]),
    .right-side h4:not([class*="ac-font-"]),
    .content-wrapper h5:not([class*="ac-font-"]),
    .right-side h5:not([class*="ac-font-"]),
    .content-wrapper h6:not([class*="ac-font-"]),
    .right-side h6:not([class*="ac-font-"]),
    .content-wrapper .box-title:not([class*="ac-font-"]),
    .right-side .box-title:not([class*="ac-font-"]),
    .content-wrapper .panel-title:not([class*="ac-font-"]),
    .right-side .panel-title:not([class*="ac-font-"]),
    .content-wrapper .card-title:not([class*="ac-font-"]),
    .right-side .card-title:not([class*="ac-font-"]),
    .content-wrapper .profile-username:not([class*="ac-font-"]),
    .right-side .profile-username:not([class*="ac-font-"]) {
        font-family: var(--font-primary) !important;
        font-weight: var(--ss-font-weight-title) !important;
        letter-spacing: 0 !important;
        text-shadow: var(--ss-text-shadow) !important;
    }

    .content-wrapper .staffinfo-box,
    .right-side .staffinfo-box {
        border: 1px solid var(--ss-surface-border) !important;
        border-radius: var(--ss-radius-md, 8px) !important;
        box-shadow: var(--ss-component-shadow-soft) !important;
    }

    .content-wrapper .profile-user-img,
    .right-side .profile-user-img {
        box-shadow: none !important;
    }

    .content-wrapper h1:not([class*="ac-font-"]),
    .right-side h1:not([class*="ac-font-"]) {
        font-size: 18px !important;
        line-height: 1.28 !important;
    }

    .content-wrapper h2:not([class*="ac-font-"]),
    .right-side h2:not([class*="ac-font-"]) {
        font-size: 16px !important;
        line-height: 1.3 !important;
    }

    .content-wrapper h3:not([class*="ac-font-"]),
    .right-side h3:not([class*="ac-font-"]),
    .content-wrapper .box-title:not([class*="ac-font-"]),
    .right-side .box-title:not([class*="ac-font-"]),
    .content-wrapper .panel-title:not([class*="ac-font-"]),
    .right-side .panel-title:not([class*="ac-font-"]),
    .content-wrapper .card-title:not([class*="ac-font-"]),
    .right-side .card-title:not([class*="ac-font-"]) {
        font-size: var(--ss-title-size-lg) !important;
        line-height: 1.32 !important;
    }

    .content-wrapper h4:not([class*="ac-font-"]),
    .right-side h4:not([class*="ac-font-"]),
    .content-wrapper h5:not([class*="ac-font-"]),
    .right-side h5:not([class*="ac-font-"]),
    .content-wrapper h6:not([class*="ac-font-"]),
    .right-side h6:not([class*="ac-font-"]) {
        font-size: var(--ss-title-size) !important;
        line-height: 1.35 !important;
    }

    .content-wrapper b,
    .right-side b,
    .content-wrapper strong,
    .right-side strong,
    .content-wrapper label,
    .right-side label,
    .content-wrapper th,
    .right-side th,
    .content-wrapper .label,
    .right-side .label,
    .content-wrapper .badge,
    .right-side .badge,
    .content-wrapper .progress-bar,
    .right-side .progress-bar {
        font-weight: var(--ss-font-weight-emphasis) !important;
    }

    .content-wrapper .small-box h3,
    .right-side .small-box h3 {
        font-size: 30px !important;
        font-weight: var(--ss-font-weight-normal) !important;
        line-height: 1.12 !important;
    }

    .content-wrapper:not([class*="ac-font-"]),
    .right-side:not([class*="ac-font-"]),
    .content-wrapper .box-body,
    .right-side .box-body,
    .content-wrapper .panel-body,
    .right-side .panel-body,
    .content-wrapper .card-body,
    .right-side .card-body {
        font-size: var(--ss-table-cell-size);
    }

    .content-wrapper .table > thead > tr > th,
    .right-side .table > thead > tr > th,
    .content-wrapper table.dataTable thead th,
    .right-side table.dataTable thead th {
        font-size: var(--ss-table-head-size) !important;
    }

    .content-wrapper .table > tbody > tr > td,
    .right-side .table > tbody > tr > td,
    .content-wrapper table.dataTable tbody td,
    .right-side table.dataTable tbody td,
    .content-wrapper .table > tfoot > tr > td,
    .right-side .table > tfoot > tr > td {
        font-size: var(--ss-table-cell-size) !important;
    }

    .content-wrapper input.form-control,
    .right-side input.form-control,
    .content-wrapper select.form-control,
    .right-side select.form-control,
    .content-wrapper .bootstrap-select > .dropdown-toggle,
    .right-side .bootstrap-select > .dropdown-toggle,
    .content-wrapper .select2-container .select2-selection--single,
    .right-side .select2-container .select2-selection--single {
        height: var(--ss-control-height) !important;
        min-height: var(--ss-control-height) !important;
    }

    .content-wrapper .table .ss-actions,
    .right-side .table .ss-actions,
    .content-wrapper table.dataTable .ss-actions,
    .right-side table.dataTable .ss-actions,
    .content-wrapper .action-buttons,
    .right-side .action-buttons,
    .content-wrapper .fee-action-buttons,
    .right-side .fee-action-buttons {
        align-items: center;
        display: inline-flex;
        gap: 4px;
        justify-content: flex-end;
        white-space: nowrap;
    }

    .content-wrapper .table .btn.btn-xs:not(.ac-icon-action),
    .right-side .table .btn.btn-xs:not(.ac-icon-action),
    .content-wrapper table.dataTable .btn.btn-xs:not(.ac-icon-action),
    .right-side table.dataTable .btn.btn-xs:not(.ac-icon-action),
    .content-wrapper .ss-actions .btn.btn-xs:not(.ac-icon-action),
    .right-side .ss-actions .btn.btn-xs:not(.ac-icon-action),
    .content-wrapper .ss-action-btn.btn.btn-xs:not(.ac-icon-action),
    .right-side .ss-action-btn.btn.btn-xs:not(.ac-icon-action) {
        align-items: center;
        display: inline-flex;
        font-size: 11.5px !important;
        height: var(--ss-action-button-size);
        justify-content: center;
        line-height: 1 !important;
        min-height: var(--ss-action-button-size);
        min-width: var(--ss-action-button-size);
        padding: 4px 7px !important;
    }

    .content-wrapper .ss-action-view,
    .right-side .ss-action-view {
        order: 10;
    }

    .content-wrapper .ss-action-edit,
    .right-side .ss-action-edit {
        order: 20;
    }

    .content-wrapper .ss-action-print,
    .right-side .ss-action-print {
        order: 30;
    }

    .content-wrapper .ss-action-delete,
    .right-side .ss-action-delete {
        order: 40;
    }

    .content-wrapper .dt-container .dt-layout-row,
    .right-side .dt-container .dt-layout-row {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        justify-content: space-between;
        width: 100%;
    }

    .content-wrapper .dt-container .dt-layout-cell,
    .right-side .dt-container .dt-layout-cell {
        align-items: center;
        display: inline-flex;
        flex-wrap: wrap;
        gap: 6px;
    }

    .content-wrapper .dt-container .dt-layout-start,
    .right-side .dt-container .dt-layout-start {
        justify-content: flex-start;
    }

    .content-wrapper .dt-container .dt-layout-end,
    .right-side .dt-container .dt-layout-end {
        justify-content: flex-end;
        margin-left: auto;
    }

    .content-wrapper .dt-container .dt-layout-cell > *,
    .right-side .dt-container .dt-layout-cell > * {
        margin: 0 !important;
    }

    .content-wrapper .box [style*="font-family"]:not([class*="ac-font-"]),
    .right-side .box [style*="font-family"]:not([class*="ac-font-"]),
    .content-wrapper .panel [style*="font-family"]:not([class*="ac-font-"]),
    .right-side .panel [style*="font-family"]:not([class*="ac-font-"]),
    .content-wrapper .card [style*="font-family"]:not([class*="ac-font-"]),
    .right-side .card [style*="font-family"]:not([class*="ac-font-"]) {
        font-family: var(--font-default) !important;
    }

    .content-wrapper table [style*="font-size"],
    .right-side table [style*="font-size"],
    .content-wrapper .form-group [style*="font-size"],
    .right-side .form-group [style*="font-size"] {
        font-size: var(--ss-table-cell-size) !important;
    }
}

/* Portal de estudiante: adaptación obligatoria al contrato visual canónico. */
@media screen {
    .ac-student-dashboard,
    .ac-profile-edit {
        background: var(--ss-page-bg) !important;
        color: var(--ss-text) !important;
    }

    .ac-student-dashboard .content,
    .ac-profile-edit .content {
        max-width: none;
        padding: 15px !important;
    }

    .ac-dashboard-hero,
    .ac-profile-edit__hero {
        margin: 0 0 15px !important;
        border: 0 !important;
        border-radius: var(--ss-radius-md) !important;
        background: var(--ss-primary) !important;
        box-shadow: none !important;
    }

    .ac-dashboard-hero::after {
        display: none;
    }

    .ac-dashboard-eyebrow,
    .ac-profile-edit__hero span {
        color: var(--ss-primary-contrast) !important;
        opacity: .82;
    }

    .ac-dashboard-hero__identity h1,
    .ac-profile-edit__hero h1,
    .ac-dashboard-hero__identity p,
    .ac-profile-edit__hero p {
        color: var(--ss-primary-contrast) !important;
    }

    .ac-dashboard-card,
    .ac-metric,
    .ac-dashboard-shortcuts,
    .ac-profile-form__aside,
    .ac-form-section {
        border-radius: var(--ss-radius-md) !important;
        background: var(--ss-surface) !important;
        border-color: var(--ss-surface-border) !important;
        box-shadow: none !important;
        color: var(--ss-text) !important;
    }

    .ac-dashboard-card {
        padding: 0 !important;
    }

    .ac-dashboard-card__header,
    .ac-form-section__heading {
        margin: 0 !important;
        padding: 11px 14px !important;
        border-bottom: 1px solid var(--ss-surface-border) !important;
        background: var(--ss-surface) !important;
    }

    .ac-dashboard-card__header h2,
    .ac-form-section__heading h2,
    .ac-teacher strong,
    .ac-activity strong,
    .ac-metric,
    .ac-progress-item__label span {
        color: var(--ss-text) !important;
    }

    .ac-dashboard-card > .ac-progress-list,
    .ac-dashboard-card > .ac-activity-list,
    .ac-dashboard-card > .ac-teacher-list,
    .ac-form-section > .ac-form-grid {
        padding: 14px !important;
    }

    .ac-progress-track {
        background: var(--ss-surface-muted) !important;
    }

    .ac-progress-track span {
        background: var(--ss-primary) !important;
    }

    .ac-dashboard-card__header > a,
    .ac-dashboard-shortcuts i,
    .ac-dashboard-footerline a,
    .ac-progress-item__label strong {
        color: var(--ss-primary) !important;
    }

    .ac-dashboard-shortcuts a,
    .ac-activity,
    .ac-teacher,
    .ac-profile-note,
    .ac-form-section__heading {
        border-color: var(--ss-surface-border) !important;
    }

    .ac-dashboard-shortcuts a:hover,
    .ac-upload-control {
        background: var(--ss-primary-soft) !important;
        color: var(--ss-primary) !important;
    }

    .ac-dashboard-footerline {
        background: var(--ss-surface-muted) !important;
        border: 1px solid var(--ss-surface-border);
        border-radius: var(--ss-radius-md) !important;
        color: var(--ss-text) !important;
    }

    .ac-form-section {
        padding: 0 !important;
    }

    .ac-profile-form__aside {
        padding: 14px !important;
    }

    .ac-form-section__heading > span,
    .ac-activity__icon,
    .ac-teacher > span,
    .ac-metric__icon {
        background: transparent !important;
        color: var(--ss-primary) !important;
        border-radius: var(--ss-radius-sm) !important;
    }

    .ac-profile-form__actions button {
        background: var(--ss-primary) !important;
        border-color: var(--ss-primary) !important;
        box-shadow: none !important;
    }
}

/* Dashboard estudiantil: composición canónica de métricas, agenda y actividad. */
@media screen {
    .ac-student-dashboard .content {
        display: grid;
        gap: 16px;
        padding: 18px !important;
    }

    .ac-student-dashboard .ac-dashboard-notice {
        margin: 0;
    }

    .ac-student-dashboard .ac-dashboard-notice > i {
        margin-right: 7px;
    }

    .ac-student-dashboard .ac-dashboard-hero {
        min-height: 128px;
        margin: 0 !important;
        padding: 25px 28px;
        border: 1px solid var(--ss-surface-border) !important;
        border-radius: var(--ss-radius-lg) !important;
        background: var(--ss-surface) !important;
        box-shadow: var(--ss-component-shadow-soft) !important;
    }

    .ac-student-dashboard .ac-dashboard-eyebrow {
        display: block;
        margin-bottom: 6px;
        color: var(--ss-primary) !important;
        font-size: 11px;
        font-weight: var(--ss-font-weight-title);
        letter-spacing: .05em;
        text-transform: uppercase;
        opacity: 1;
    }

    .ac-student-dashboard .ac-dashboard-hero__identity h1 {
        margin: 0 0 5px;
        color: var(--ss-text) !important;
        font-size: 24px !important;
        line-height: 1.2 !important;
    }

    .ac-student-dashboard .ac-dashboard-hero__identity p {
        margin: 0;
        color: var(--ss-muted-text) !important;
    }

    .ac-dashboard-context {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        margin-top: 13px;
        color: var(--ss-muted-text);
        font-size: var(--ss-small-size);
    }

    .ac-dashboard-context i {
        color: var(--ss-primary);
    }

    .ac-dashboard-metrics {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 14px;
    }

    .ac-student-dashboard .ac-metric {
        display: flex;
        align-items: center;
        min-width: 0;
        min-height: 102px;
        padding: 18px;
        border: 1px solid var(--ss-surface-border) !important;
        border-radius: var(--ss-radius-lg) !important;
        background: var(--ss-surface) !important;
        box-shadow: var(--ss-component-shadow-soft) !important;
        text-decoration: none;
        transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
    }

    .ac-student-dashboard .ac-metric:hover,
    .ac-student-dashboard .ac-metric:focus {
        border-color: var(--ss-primary) !important;
        box-shadow: var(--ss-component-shadow) !important;
        outline: 0;
        transform: translateY(-1px);
    }

    .ac-student-dashboard .ac-metric__icon {
        display: grid;
        flex: 0 0 48px;
        width: 48px;
        height: 48px;
        margin-right: 14px;
        place-items: center;
        border: 0;
        border-radius: 50% !important;
        background: transparent !important;
        font-size: 20px;
    }

    .ac-metric__content {
        min-width: 0;
        flex: 1;
    }

    .ac-metric__content small,
    .ac-metric__content strong {
        display: block;
    }

    .ac-metric__content small {
        overflow: hidden;
        margin-bottom: 4px;
        color: var(--ss-muted-text);
        font-size: 12px;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .ac-student-dashboard .ac-metric__content strong {
        color: var(--ss-text) !important;
        font-size: 25px;
        line-height: 1;
    }

    .ac-metric__arrow {
        margin-left: 8px;
        color: var(--ss-muted-text);
        font-size: 17px;
    }

    .ac-metric--attendance .ac-metric__icon,
    .ac-metric--attendance .ac-metric__content strong { color: var(--ss-primary) !important; }
    .ac-metric--progress .ac-metric__icon,
    .ac-metric--progress .ac-metric__content strong { color: var(--ss-primary) !important; }
    .ac-metric--homework .ac-metric__icon,
    .ac-metric--homework .ac-metric__content strong { color: var(--ss-primary) !important; }
    .ac-metric--notices .ac-metric__icon,
    .ac-metric--notices .ac-metric__content strong { color: var(--ss-primary) !important; }

    .ac-dashboard-grid {
        display: grid;
        grid-template-columns: minmax(0, 1.18fr) minmax(320px, .82fr);
        gap: 16px;
        align-items: start;
    }

    .ac-student-dashboard .ac-dashboard-card,
    .ac-student-dashboard .ac-dashboard-shortcuts {
        overflow: hidden;
        min-width: 0;
        margin: 0;
        border: 1px solid var(--ss-surface-border) !important;
        border-radius: var(--ss-radius-lg) !important;
        background: var(--ss-surface) !important;
        box-shadow: var(--ss-component-shadow-soft) !important;
    }

    .ac-student-dashboard .ac-dashboard-card__header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        min-height: 48px;
        gap: 12px;
        padding: 12px 16px !important;
    }

    .ac-student-dashboard .ac-dashboard-card__header h2 {
        display: flex;
        align-items: center;
        min-width: 0;
        gap: 9px;
        margin: 0;
        color: var(--ss-text) !important;
        font-size: 15px !important;
    }

    .ac-student-dashboard .ac-dashboard-card__header h2 i {
        color: var(--ss-primary);
    }

    .ac-student-dashboard .ac-dashboard-card__header > a {
        flex: 0 0 auto;
        font-size: 12px;
        font-weight: var(--ss-font-weight-title);
        text-decoration: none;
    }

    .ac-dashboard-list,
    .ac-student-dashboard .ac-activity-list,
    .ac-student-dashboard .ac-progress-list {
        padding: 0 !important;
    }

    .ac-class-item,
    .ac-homework-item,
    .ac-student-dashboard .ac-activity {
        display: flex;
        align-items: center;
        min-height: 63px;
        gap: 12px;
        padding: 10px 16px;
        border-bottom: 1px solid var(--ss-surface-border) !important;
        color: var(--ss-text);
    }

    .ac-class-item:last-child,
    .ac-homework-item:last-child,
    .ac-student-dashboard .ac-activity:last-child {
        border-bottom: 0 !important;
    }

    .ac-class-item__icon,
    .ac-homework-item__icon {
        display: grid;
        flex: 0 0 36px;
        width: 36px;
        height: 36px;
        place-items: center;
        border-radius: 50%;
        background: var(--ss-primary-soft);
        color: var(--ss-primary);
        font-size: 13px;
        font-weight: var(--ss-font-weight-title);
    }

    .ac-homework-item__icon {
        border-radius: var(--ss-radius-sm);
        background: var(--ss-surface-muted);
        color: var(--ss-muted-text);
    }

    .ac-class-item__details,
    .ac-homework-item__details,
    .ac-activity__details {
        min-width: 0;
        flex: 1;
    }

    .ac-class-item__details strong,
    .ac-class-item__details small,
    .ac-homework-item__details strong,
    .ac-homework-item__details small,
    .ac-activity__details strong,
    .ac-activity__details small {
        display: block;
    }

    .ac-class-item__details strong,
    .ac-homework-item__details strong,
    .ac-activity__details strong {
        overflow: hidden;
        color: var(--ss-text) !important;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .ac-class-item__details small,
    .ac-homework-item__details small,
    .ac-activity__details small {
        margin-top: 3px;
        color: var(--ss-muted-text);
    }

    .ac-class-item__time {
        flex: 0 0 auto;
        padding: 5px 9px;
        border-radius: var(--ss-radius-sm);
        background: var(--ss-primary-soft);
        color: var(--ss-primary);
        font-weight: var(--ss-font-weight-title);
    }

    .ac-status-chip {
        flex: 0 0 auto;
        padding: 4px 9px;
        border-radius: 999px;
        font-size: 11px;
        font-weight: var(--ss-font-weight-title);
    }

    .ac-status-chip.is-pending { background: var(--ac-icon-amber-soft); color: var(--ac-icon-amber); }
    .ac-status-chip.is-submitted { background: var(--ac-success-soft); color: var(--ac-approved); }
    .ac-status-chip.is-graded { background: var(--ac-icon-blue-soft); color: var(--ac-icon-blue); }

    .ac-student-dashboard .ac-progress-item {
        padding: 13px 16px;
        border-bottom: 1px solid var(--ss-surface-border);
    }

    .ac-student-dashboard .ac-progress-item:last-child {
        border-bottom: 0;
    }

    .ac-student-dashboard .ac-progress-item__label {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        margin-bottom: 8px;
    }

    .ac-student-dashboard .ac-progress-item__label span {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .ac-student-dashboard .ac-progress-track {
        display: block;
        width: 100%;
        height: 7px;
        overflow: hidden;
        border: 0;
        border-radius: 999px;
        background: var(--ss-surface-muted) !important;
        appearance: none;
    }

    .ac-student-dashboard .ac-progress-track::-webkit-progress-bar {
        border-radius: 999px;
        background: var(--ss-surface-muted);
    }

    .ac-student-dashboard .ac-progress-track::-webkit-progress-value {
        border-radius: 999px;
        background: var(--ss-primary);
    }

    .ac-student-dashboard .ac-progress-track::-moz-progress-bar {
        border-radius: 999px;
        background: var(--ss-primary);
    }

    .ac-student-dashboard .ac-activity {
        min-height: 62px;
        text-decoration: none;
    }

    .ac-student-dashboard .ac-activity:hover,
    .ac-student-dashboard .ac-activity:focus {
        background: var(--ss-surface-muted);
        outline: 0;
    }

    .ac-activity__marker {
        flex: 0 0 7px;
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: var(--ss-primary);
    }

    .ac-dashboard-empty {
        display: grid;
        min-height: 126px;
        place-content: center;
        gap: 8px;
        padding: 20px;
        color: var(--ss-muted-text);
        text-align: center;
    }

    .ac-dashboard-empty i {
        color: var(--ss-primary);
        font-size: 24px;
    }

    .ac-dashboard-shortcuts__grid {
        display: grid;
        grid-template-columns: repeat(6, minmax(0, 1fr));
        gap: 12px;
        padding: 14px;
    }

    .ac-student-dashboard .ac-dashboard-shortcuts__grid > a {
        display: flex;
        align-items: center;
        justify-content: center;
        min-width: 0;
        min-height: 90px;
        flex-direction: column;
        gap: 10px;
        padding: 12px 8px;
        border: 1px solid var(--ss-surface-border) !important;
        border-radius: var(--ss-radius-md);
        color: var(--ss-text);
        text-align: center;
        text-decoration: none;
    }

    .ac-student-dashboard .ac-dashboard-shortcuts__grid > a:hover,
    .ac-student-dashboard .ac-dashboard-shortcuts__grid > a:focus {
        border-color: var(--ss-primary) !important;
        background: var(--ss-primary-soft) !important;
        color: var(--ss-primary) !important;
        outline: 0;
    }

    .ac-student-dashboard .ac-dashboard-shortcuts__grid i {
        color: var(--ss-primary) !important;
        font-size: 22px;
    }

    .ac-student-dashboard .ac-dashboard-shortcuts__grid span {
        overflow-wrap: anywhere;
    }

    .ac-student-dashboard .ac-dashboard-shortcuts__grid small {
        display: inline-grid;
        min-width: 18px;
        min-height: 18px;
        margin-left: 3px;
        place-items: center;
        border-radius: 999px;
        background: var(--ss-primary-soft);
        color: var(--ss-primary);
    }
}

@media (max-width: 1199px) {
    .ac-dashboard-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ac-dashboard-shortcuts__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
    .ac-student-dashboard .content { gap: 12px; padding: 12px !important; }
    .ac-student-dashboard .ac-dashboard-hero { min-height: 0; padding: 20px; }
    .ac-student-dashboard .ac-dashboard-hero__identity h1 { font-size: 21px !important; }
    .ac-dashboard-grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .ac-student-dashboard .ac-metric { min-height: 88px; padding: 14px; }
    .ac-student-dashboard .ac-metric__icon { flex-basis: 42px; width: 42px; height: 42px; margin-right: 11px; }
    .ac-student-dashboard .ac-metric__content strong { font-size: 21px; }
}

@media (max-width: 430px) {
    .ac-dashboard-metrics { grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .ac-student-dashboard .ac-metric { min-height: 76px; }
    .ac-dashboard-shortcuts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px; }
    .ac-student-dashboard .ac-dashboard-shortcuts__grid > a { min-height: 82px; }
    .ac-class-item, .ac-homework-item, .ac-student-dashboard .ac-activity { padding-right: 12px; padding-left: 12px; }
    .ac-homework-item { align-items: flex-start; flex-wrap: wrap; }
    .ac-homework-item__details { min-width: calc(100% - 50px); }
    .ac-status-chip { margin-left: 48px; }
}

/* Estado de contenidos académicos dentro del contrato canónico. */
.topicstaus .pull-right { width: auto; text-align: initial; }
.ac-syllabus-chart { width: 100% !important; height: 100% !important; }
.print-canvas { display: inline-block; width: 45%; margin: 2.5%; text-align: center; vertical-align: top; }
.print-canvas img { max-width: 100%; height: auto; }
@media print { .topicstaus .print { display: inline-block; } }
/* Boleta canónica dentro del perfil del estudiante. */
/* Estado de cuenta canónico del portal estudiantil. */
.ac-fees-heading{display:flex;align-items:center;justify-content:space-between;margin:15px 15px 0;padding:22px 26px!important;border-radius:14px;background:linear-gradient(135deg,var(--ss-primary),var(--ac-icon-teal));color:var(--ss-field-bg)}.ac-fees-heading span{font-size:11px;font-weight:var(--ss-font-weight-title);letter-spacing:0}.ac-fees-heading h1{margin:3px 0!important;color:var(--ss-field-bg)!important;font-size:18px}.ac-fees-heading p{margin:0;opacity:.9}.ac-fees-heading>i{font-size:28px;opacity:.8}.ac-student-account{padding-top:15px!important}.ac-account-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.ac-account-summary article{padding:17px 19px;border:1px solid var(--ss-surface-border-soft);border-radius:12px;background:var(--ss-field-bg);box-shadow:var(--ss-component-shadow-soft)}.ac-account-summary span{display:block;margin-bottom:5px;color:var(--ss-muted-text);font-size:11px;font-weight:var(--ss-font-weight-title);letter-spacing:0;text-transform:uppercase}.ac-account-summary strong{color:var(--ss-text);font-size:16px}.ac-account-summary .has-balance{border-color:var(--ac-overdue);background:var(--ac-overdue-soft)}.ac-account-summary .has-balance strong{color:var(--ac-overdue)}.ac-account-card{overflow:hidden;border-radius:12px!important;box-shadow:var(--ss-component-shadow-soft)!important}.ac-account-table{margin:0!important}.ac-account-table thead th{padding:12px 14px!important;background:var(--ss-surface-muted);color:var(--ss-muted-text);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.ac-account-table td{padding:13px 14px!important;vertical-align:middle!important}.ac-account-table td small{display:block;color:var(--ss-muted-text)}.ac-account-table tr.is-overdue{background:var(--ac-overdue-soft)}.ac-account-empty{padding:42px;text-align:center}.ac-account-empty i{color:var(--ac-icon-green);font-size:34px}.ac-account-empty h3{margin:10px 0 4px}@media(max-width:991px){.ac-account-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.ac-fees-heading{margin:10px 10px 0;padding:18px!important}.ac-fees-heading h1{font-size:22px}.ac-fees-heading>i{display:none}.ac-student-account{padding:10px!important}.ac-account-summary{gap:8px}.ac-account-summary article{padding:13px}.ac-account-summary strong{font-size:16px}}
/* Perfil institucional del estudiante. */
.ac-student-profile .content{width:100%;max-width:1200px;margin:0 auto;padding:18px!important}.ac-student-profile .ac-profile-tabs>.tab-content{min-height:350px;padding:22px!important}.ac-student-profile .ac-profile-tabs>.nav-tabs>li>a{display:flex;align-items:center;gap:7px}.ac-student-profile .ac-profile-tabs>.nav-tabs>li>a>i{color:var(--ss-primary)}.ac-student-profile .ac-profile-tabs>.nav-tabs>li.active>a>i{color:inherit}.ac-student-profile .table-responsive{margin:0;border:1px solid var(--ss-surface-border);border-radius:var(--ss-radius-md)}.ac-student-profile .table-responsive>.table{margin:0}.ac-student-profile .tab-pane>.alert{margin-bottom:0}
.ac-profile-hero{display:flex;align-items:center;gap:20px;padding:24px 28px;border-radius:16px;background:linear-gradient(135deg,var(--ss-primary),var(--ss-primary-strong));color:var(--ss-field-bg);box-shadow:var(--ss-component-shadow)}.ac-profile-hero>img{width:92px;height:92px;object-fit:cover;border:4px solid rgba(var(--ac-white-rgb),.7);border-radius:18px}.ac-profile-hero>div{min-width:0;flex:1}.ac-profile-hero span{font-size:11px;font-weight:var(--ss-font-weight-title);letter-spacing:0}.ac-profile-hero h1{margin:4px 0;color:var(--ss-field-bg);font-size:18px}.ac-profile-hero p{margin:0;opacity:.9}.ac-profile-hero .btn{border-color:rgba(var(--ac-white-rgb),.55);background:rgba(var(--ac-white-rgb),.14);color:var(--ss-field-bg)}.ac-profile-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:15px 0}.ac-profile-metrics article{display:flex;align-items:center;gap:12px;padding:15px 17px;border:1px solid var(--ss-surface-border);border-radius:var(--ss-radius-md);background:var(--ss-surface);box-shadow:var(--ss-component-shadow-soft)}.ac-profile-metrics article>span{display:grid;width:40px;height:40px;place-items:center;border-radius:10px;background:var(--ss-primary-soft);color:var(--ss-primary);font-size:18px}.ac-profile-metrics small,.ac-profile-metrics strong{display:block}.ac-profile-metrics small{margin-bottom:3px;color:var(--ss-text-muted);font-size:10px;font-weight:var(--ss-font-weight-title);text-transform:uppercase}.ac-profile-metrics strong{color:var(--ss-text);font-size:14px}.ac-profile-tabs{border-radius:var(--ss-radius-lg)!important;box-shadow:var(--ss-component-shadow)!important}.ac-profile-tabs>.nav-tabs>li>a{font-weight:var(--ss-font-weight-title)}.ac-profile-section-heading{display:flex;align-items:center;gap:13px;margin-bottom:18px}.ac-profile-section-heading>span{display:grid;width:44px;height:44px;place-items:center;border-radius:12px;background:var(--ss-primary-soft);color:var(--ss-primary);font-size:19px}.ac-profile-section-heading h2{margin:0;color:var(--ss-text);font-size:20px}.ac-profile-section-heading p{margin:3px 0 0;color:var(--ss-text-muted)}.ac-profile-data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0;border:1px solid var(--ss-surface-border);border-radius:var(--ss-radius-md);overflow:hidden}.ac-profile-data-grid>div{padding:14px 17px;border-bottom:1px solid var(--ss-surface-border)}.ac-profile-data-grid>div:nth-child(odd){border-right:1px solid var(--ss-surface-border)}.ac-profile-data-grid dt{margin-bottom:4px;color:var(--ss-text-muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.ac-profile-data-grid dd{margin:0;color:var(--ss-text);font-weight:var(--ss-font-weight-title)}.ac-profile-data-grid .ac-profile-span-2{grid-column:1/-1;border-right:0}.ac-profile-codes{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:15px}.ac-profile-codes>article,.ac-profile-codes>aside{padding:20px;border:1px solid var(--ss-surface-border);border-radius:var(--ss-radius-md);background:var(--ss-surface);text-align:center}.ac-profile-codes h3{margin:0 0 14px;color:var(--ss-text);font-size:16px}.ac-profile-codes article img{display:block;max-width:100%;max-height:130px;margin:0 auto 10px}.ac-profile-codes small{color:var(--ss-text-muted);font-weight:var(--ss-font-weight-title)}.ac-profile-codes>aside{text-align:left}.ac-profile-codes aside p{color:var(--ss-text-muted)}.ac-profile-codes aside dl div{display:flex;justify-content:space-between;padding:7px 0;border-top:1px solid var(--ss-surface-border)}.ac-profile-codes aside dd{margin:0;font-weight:var(--ss-font-weight-title)}@media(max-width:991px){.ac-profile-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.ac-profile-codes{grid-template-columns:1fr 1fr}.ac-profile-codes>aside{grid-column:1/-1}}@media(max-width:600px){.ac-profile-hero{align-items:flex-start;flex-wrap:wrap;padding:19px}.ac-profile-hero>img{width:72px;height:72px}.ac-profile-hero h1{font-size:20px}.ac-profile-hero .btn{width:100%}.ac-profile-metrics{grid-template-columns:1fr}.ac-profile-tabs>.nav-tabs{display:flex;overflow-x:auto}.ac-profile-tabs>.nav-tabs>li{flex:0 0 auto}.ac-profile-data-grid,.ac-profile-codes{grid-template-columns:1fr}.ac-profile-data-grid>div:nth-child(odd){border-right:0}.ac-profile-data-grid .ac-profile-span-2,.ac-profile-codes>aside{grid-column:auto}}
@media(max-width:600px){.ac-student-profile .content{padding:12px!important}.ac-student-profile .ac-profile-tabs>.tab-content{min-height:0;padding:16px!important}.ac-student-profile .ac-profile-tabs>.nav-tabs>li>a{white-space:nowrap}.ac-profile-section-heading{align-items:flex-start}.ac-profile-section-heading>span{width:38px;height:38px;flex:0 0 38px}.ac-profile-section-heading p{font-size:12px}}
.ac-student-profile .ac-profile-hero{background:linear-gradient(135deg,var(--ss-primary),var(--ss-primary))}.ac-student-profile .ac-profile-metrics small,.ac-student-profile .ac-profile-section-heading p,.ac-student-profile .ac-profile-data-grid dt,.ac-student-profile .ac-profile-codes small,.ac-student-profile .ac-profile-codes aside p{color:var(--ss-muted-text)}
/* Perfil clásico compacto: tarjeta lateral y pestañas sin duplicar módulos del menú. */
.ac-profile-card,.ac-profile-classic__tabs{box-shadow:var(--ss-component-shadow-soft)!important}.ac-profile-card .box-profile{padding:18px!important}.ac-profile-card .profile-user-img{width:86px;height:86px;object-fit:cover}.ac-profile-card .profile-username{margin:12px 0 4px;font-size:17px}.ac-profile-card__facts{margin-top:14px}.ac-profile-card__facts .list-group-item{min-height:39px;padding:10px 0!important}.ac-profile-card__facts span{max-width:58%;color:var(--ss-primary);font-weight:var(--ss-font-weight-title);text-align:right}.ac-profile-classic__tabs>.nav-tabs>li>a{padding:11px 14px;font-weight:var(--ss-font-weight-title)}.ac-profile-classic__tabs>.tab-content{padding:16px!important}.ac-profile-compact-heading{margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--ss-surface-border)}.ac-profile-compact-heading h3{margin:0;color:var(--ss-text);font-size:17px}.ac-profile-compact-heading p{margin:3px 0 0;color:var(--ss-muted-text);font-size:12px}.ac-profile-compact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;border-top:1px solid var(--ss-surface-border);border-left:1px solid var(--ss-surface-border)}.ac-profile-compact-grid>div{min-height:54px;padding:10px 13px;border-right:1px solid var(--ss-surface-border);border-bottom:1px solid var(--ss-surface-border)}.ac-profile-compact-grid .wide{grid-column:1/-1}.ac-profile-compact-grid dt{margin-bottom:3px;color:var(--ss-muted-text);font-size:10px;letter-spacing:.04em;text-transform:uppercase}.ac-profile-compact-grid dd{margin:0;color:var(--ss-text);font-size:12px;font-weight:var(--ss-font-weight-title)}.ac-profile-compact-codes{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:12px}.ac-profile-compact-codes>article,.ac-profile-compact-codes>dl{min-height:160px;margin:0;padding:14px;border:1px solid var(--ss-surface-border);border-radius:var(--ss-radius-md);text-align:center}.ac-profile-compact-codes h4{margin:0 0 9px;font-size:14px}.ac-profile-compact-codes article img{display:block;max-width:100%;max-height:94px;margin:0 auto 7px}.ac-profile-compact-codes small{color:var(--ss-muted-text)}.ac-profile-compact-codes>dl{text-align:left}.ac-profile-compact-codes>dl div{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--ss-surface-border)}.ac-profile-compact-codes dd{margin:0;font-weight:var(--ss-font-weight-title)}@media(max-width:767px){.ac-profile-classic__tabs>.nav-tabs{display:flex;overflow-x:auto}.ac-profile-classic__tabs>.nav-tabs>li{flex:0 0 auto}.ac-profile-compact-grid,.ac-profile-compact-codes{grid-template-columns:1fr}.ac-profile-compact-grid .wide{grid-column:auto}.ac-profile-compact-codes>article,.ac-profile-compact-codes>dl{min-height:0}}
