:root {
    --oxford-navy: #102a43;
    --oxford-green: #18864b;
    --oxford-white: #fff;
    --oxford-bg: #f3f7f6;
    --oxford-surface: #fff;
    --oxford-border: #d8e2df;
    --oxford-text: #172b35;
    --oxford-muted: #607079;
    --oxford-warning: #a85d00;
    --oxford-danger: #a32222;
    --oxford-success: #137a45;
}

/* Private-messaging UI only; Moodle notifications remain visible. */
.local-oxford-messaging-restricted [data-region="popover-region-messages"],
.local-oxford-messaging-restricted [data-region="message-drawer"] {
    display: none !important;
}

.local-oxford-teacher-dashboard {
    max-width: 1440px;
    margin: 0 auto;
    padding-bottom: 3rem;
}

.local-oxford-dashboard-header {
    margin-bottom: 1.5rem;
}

.local-oxford-dashboard-header h2 {
    margin-bottom: .25rem;
}

.local-oxford-dashboard-header p {
    margin: 0;
    color: var(--bs-secondary-color, #5c6670);
}

.local-oxford-dashboard-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.local-oxford-dashboard-stat {
    display: flex;
    flex-direction: column;
    padding: 1rem 1.25rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-body-bg, #fff);
}

.local-oxford-dashboard-stat span,
.local-oxford-course-metrics span {
    color: var(--bs-secondary-color, #5c6670);
    font-size: .875rem;
}

.local-oxford-dashboard-stat strong {
    font-size: 1.75rem;
    line-height: 1.2;
}

.local-oxford-dashboard-stat-pending,
.local-oxford-course-card-pending {
    border-inline-start: .3rem solid var(--bs-warning, #ffc107);
}

.local-oxford-course-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
    gap: 1.25rem;
}

.local-oxford-course-card {
    padding: 1.25rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-body-bg, #fff);
    box-shadow: 0 .125rem .35rem rgba(0, 0, 0, .06);
}

.local-oxford-course-card-header h3 {
    margin: 0 0 1rem;
    font-size: 1.15rem;
}

.local-oxford-course-metrics {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .75rem;
}

.local-oxford-course-metrics > div {
    display: flex;
    flex-direction: column;
    padding: .65rem;
    border-radius: var(--bs-border-radius, .375rem);
    background: var(--bs-tertiary-bg, #f4f5f6);
}

.local-oxford-course-metrics strong {
    font-size: 1.35rem;
}

.local-oxford-metric-pending strong {
    color: var(--bs-warning-text-emphasis, #664d03);
}

.local-oxford-course-section {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--bs-border-color, #dee2e6);
}

.local-oxford-course-section h4 {
    margin-bottom: .75rem;
    font-size: 1rem;
}

.local-oxford-activity-list,
.local-oxford-event-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.local-oxford-activity-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .65rem 0;
}

.local-oxford-activity-list li + li,
.local-oxford-event-list li + li {
    border-top: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, .1));
}

.local-oxford-activity-list li div,
.local-oxford-event-list li {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.local-oxford-activity-list span,
.local-oxford-event-list time {
    color: var(--bs-secondary-color, #5c6670);
    font-size: .875rem;
}

.local-oxford-event-list li {
    padding: .55rem 0;
}

.local-oxford-dashboard-empty {
    padding: 2rem;
    border: 1px dashed var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    text-align: center;
    background: var(--bs-tertiary-bg, #f4f5f6);
}

@media (max-width: 575.98px) {
    .local-oxford-dashboard-summary {
        grid-template-columns: 1fr;
    }

    .local-oxford-activity-list li {
        align-items: flex-start;
        flex-direction: column;
    }
}

.local-oxford-student-dashboard {
    max-width: 1440px;
    margin: 0 auto;
    padding-bottom: 3rem;
}

.local-oxford-student-header {
    margin-bottom: 1.5rem;
}

.local-oxford-student-header h2 {
    margin-bottom: .25rem;
}

.local-oxford-student-header p,
.local-oxford-student-course-body > span,
.local-oxford-student-event-list span,
.local-oxford-student-event-list time {
    color: var(--bs-secondary-color, #5c6670);
}

.local-oxford-student-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}

.local-oxford-student-stat {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 7rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-body-bg, #fff);
}

.local-oxford-student-stat span {
    color: var(--bs-secondary-color, #5c6670);
    font-size: .875rem;
}

.local-oxford-student-stat strong {
    font-size: 1.75rem;
}

.local-oxford-student-stat-action {
    align-items: flex-start;
    gap: .6rem;
}

.local-oxford-student-section {
    margin-top: 2rem;
}

.local-oxford-student-section-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}

.local-oxford-student-section h2 {
    margin-bottom: 1rem;
    font-size: 1.35rem;
}

.local-oxford-student-event-list {
    margin: 0;
    padding: 0;
    list-style: none;
    border-block: 1px solid var(--bs-border-color, #dee2e6);
}

.local-oxford-student-event-list li {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(10rem, .5fr) auto;
    gap: 1rem;
    align-items: center;
    padding: .8rem .25rem;
}

.local-oxford-student-event-list li + li {
    border-top: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, .1));
}

.local-oxford-student-event-scroll {
    max-height: 23rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.local-oxford-student-event-scroll:focus-visible {
    outline: .2rem solid currentColor;
    outline-offset: .2rem;
}

.local-oxford-student-today {
    padding: 1.25rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-body-bg, #fff);
}

.local-oxford-student-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 1.5rem;
}

.local-oxford-student-course-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
}

.local-oxford-student-course-card {
    overflow: hidden;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-body-bg, #fff);
    box-shadow: 0 .125rem .35rem rgba(0, 0, 0, .06);
}

.local-oxford-student-course-image {
    display: block;
    aspect-ratio: 16 / 7;
    overflow: hidden;
    background: var(--bs-tertiary-bg, #f4f5f6);
}

.local-oxford-student-course-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.local-oxford-student-course-body {
    padding: 1rem;
}

.local-oxford-student-course-body h3 {
    margin: .25rem 0 0;
    font-size: 1.05rem;
}

.local-oxford-student-empty {
    padding: 1.25rem;
    border: 1px dashed var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-tertiary-bg, #f4f5f6);
}

.local-oxford-student-dashboard a:focus-visible {
    outline: .2rem solid currentColor;
    outline-offset: .2rem;
}

@media (max-width: 991.98px) {
    .local-oxford-student-summary,
    .local-oxford-student-course-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .local-oxford-student-summary,
    .local-oxford-student-course-grid {
        grid-template-columns: 1fr;
    }

    .local-oxford-student-event-list li {
        grid-template-columns: 1fr;
        gap: .2rem;
    }
}
.local-oxford-admin-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.local-oxford-admin-stats > div {
    display: flex;
    flex-direction: column;
    padding: 1rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: .75rem;
    background: var(--bs-body-bg, #fff);
}

.local-oxford-admin-stats strong {
    font-size: 1.75rem;
}

.local-oxford-admin-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1.5rem;
}

.local-oxford-admin-search {
    max-width: 48rem;
    margin-bottom: 2rem;
}

/* Oxford UX components. */
.local-oxford-teacher-dashboard,
.local-oxford-student-dashboard,
.local-oxford-admin-console,
.local-oxford-grades { color: var(--oxford-text); }

.local-oxford-teacher-dashboard :focus-visible,
.local-oxford-student-dashboard :focus-visible,
.local-oxford-admin-console :focus-visible,
.local-oxford-grades :focus-visible { outline: 3px solid rgba(24, 134, 75, .35); outline-offset: 3px; }

.local-oxford-dashboard-tools { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.local-oxford-dashboard-tools .form-control { max-width: 28rem; }
.local-oxford-course-card[hidden] { display: none; }
details.local-oxford-course-card { padding: 0; overflow: clip; }
.local-oxford-course-card-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.15rem 1.25rem; cursor: pointer; list-style: none; }
.local-oxford-course-card-header::-webkit-details-marker { display: none; }
.local-oxford-course-card-header::after { content: "+"; color: var(--oxford-muted); font-size: 1.35rem; }
details[open] > .local-oxford-course-card-header::after { content: "−"; }
.local-oxford-course-title { flex: 1; font-size: 1.08rem; font-weight: 750; }
.local-oxford-course-progress,
.local-oxford-course-metrics,
.local-oxford-course-section,
.local-oxford-course-footer { margin-inline: 1.25rem; }
.local-oxford-course-progress { padding-bottom: 1rem; }
.local-oxford-course-progress > div:first-child { display: flex; justify-content: space-between; gap: .75rem; margin-bottom: .45rem; color: var(--oxford-muted); }
.local-oxford-course-progress strong { color: var(--oxford-text); }
.local-oxford-course-progress .progress-bar { background: var(--oxford-green); }
.local-oxford-row-link { display: flex; justify-content: space-between; gap: 1rem; min-width: 8rem; padding: .55rem .7rem; border-radius: .5rem; }
.local-oxford-row-link:hover { background: #eaf4ef; text-decoration: none; }
.local-oxford-course-footer { display: flex; justify-content: flex-end; gap: 1rem; margin-top: 1rem; padding: 1rem 0 1.2rem; border-top: 1px solid var(--oxford-border); }

.local-oxford-student-header { padding: 1.5rem; border-radius: 1rem; color: var(--oxford-white); background: linear-gradient(120deg, var(--oxford-navy), #164a52 68%, var(--oxford-green)); }
.local-oxford-student-header h2,
.local-oxford-student-header p { color: inherit; }
.local-oxford-student-course-card { transition: transform .18s ease, border-color .18s ease; }
.local-oxford-student-course-card:hover { transform: translateY(-2px); border-color: var(--oxford-green); }

.local-oxford-admin-hero { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; padding: 1.5rem; border-radius: 1rem; color: #fff; background: linear-gradient(120deg, var(--oxford-navy), #164a52 70%, var(--oxford-green)); }
.local-oxford-admin-hero h2 { margin: 0 0 .35rem; color: inherit; }
.local-oxford-admin-hero p { margin: 0; opacity: .88; }
.local-oxford-admin-nav { display: flex; gap: .35rem; overflow-x: auto; margin-bottom: 1.5rem; padding: .4rem; border: 1px solid var(--oxford-border); border-radius: .8rem; background: var(--oxford-surface); }
.local-oxford-admin-nav a { flex: 0 0 auto; padding: .6rem .8rem; border-radius: .55rem; color: var(--oxford-text); font-weight: 650; }
.local-oxford-admin-nav a:hover { background: #eaf4ef; text-decoration: none; }
.local-oxford-admin-section { margin-top: 2rem; padding: 1.25rem; border: 1px solid var(--oxford-border); border-radius: 1rem; background: var(--oxford-surface); }
.local-oxford-admin-section > h2 { margin-bottom: 1rem; font-size: 1.25rem; }
.local-oxford-system-ok { color: var(--oxford-success); font-weight: 750; }
.local-oxford-system-warning { color: var(--oxford-warning); font-weight: 750; }

.local-oxford-grades-toolbar { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.local-oxford-grade-tabs { display: flex; gap: .45rem; overflow-x: auto; margin-bottom: 1rem; }
.local-oxford-grade-panel { margin-bottom: 1rem; border: 1px solid var(--oxford-border); border-radius: 1rem; overflow: hidden; background: var(--oxford-surface); }
.local-oxford-grade-panel summary { padding: 1rem 1.2rem; cursor: pointer; font-size: 1.08rem; font-weight: 750; background: #f7faf9; }
.local-oxford-grade-table td,
.local-oxford-grade-table th { vertical-align: middle; white-space: nowrap; }
.local-oxford-grade-value { display: inline-flex; min-width: 3.25rem; justify-content: center; padding: .25rem .45rem; border-radius: .45rem; background: #eef3f2; font-weight: 700; }
.local-oxford-grade-low::after { content: " · Bajo 7"; font-size: .72rem; color: var(--oxford-danger); }
.local-oxford-period-nav { display: flex; gap: .4rem; overflow-x: auto; margin-bottom: 1rem; padding: .45rem; border-radius: .75rem; background: #edf4f2; }
.local-oxford-period-nav a { flex: 0 0 auto; padding: .45rem .7rem; border-radius: .5rem; color: var(--oxford-navy); font-weight: 750; }
.local-oxford-period-nav a:hover { color: #fff; background: var(--oxford-green); text-decoration: none; }
.local-oxford-course-view .local-oxford-section { margin-bottom: .85rem; border: 1px solid var(--oxford-border); border-radius: .8rem; overflow: clip; background: var(--oxford-surface); }
.local-oxford-course-view .local-oxford-section .sectionname { padding-inline-start: .5rem; }
.local-oxford-section-icon { display: inline-flex; align-items: center; justify-content: center; width: 1.8rem; height: 1.8rem; margin-inline-end: .45rem; border-radius: .45rem; color: var(--oxford-navy); background: #eaf4ef; font-size: .88rem; }
.local-oxford-calendar-event { border-inline-start: .28rem solid var(--oxford-event-color, var(--oxford-green)) !important; }
.local-oxford-calendar-icon { margin-inline-end: .35rem; font-weight: 800; color: var(--oxford-event-color, var(--oxford-green)); }

@media (max-width: 767.98px) {
    .local-oxford-dashboard-tools { align-items: stretch; flex-direction: column; }
    .local-oxford-dashboard-tools .form-control { max-width: none; }
    .local-oxford-admin-hero { align-items: flex-start; flex-direction: column; }
    .local-oxford-admin-section { padding: .85rem; }
}

@media (prefers-reduced-motion: reduce) {
    .local-oxford-student-course-card { transition: none; }
}
/* ===== UEO GLOBAL VISUAL SYSTEM 2026 ===== */

:root {
    --ueo-navy: #153453;
    --ueo-navy-deep: #0b2338;
    --ueo-navy-soft: #294c6a;

    --ueo-green: #72b62e;
    --ueo-green-dark: #5a941f;
    --ueo-green-soft: #edf6e5;

    --ueo-white: #ffffff;

    --ueo-bg: #f4f7f8;
    --ueo-surface: #ffffff;
    --ueo-surface-soft: #f8fafb;

    --ueo-border: #dce5e9;
    --ueo-border-soft: #e9eef1;

    --ueo-text: #142532;
    --ueo-muted: #687986;

    --ueo-danger: #be3e3e;
    --ueo-warning: #c98519;
    --ueo-success: #4b8d28;

    --ueo-radius-sm: .65rem;
    --ueo-radius: 1rem;
    --ueo-radius-lg: 1.35rem;

    --ueo-shadow:
        0 12px 32px rgba(12, 39, 60, .08);

    --ueo-shadow-hover:
        0 18px 42px rgba(12, 39, 60, .13);
}


/* =========================================================
   BASE
   ========================================================= */

body:not(.pagelayout-login) {
    background: var(--ueo-bg);
    color: var(--ueo-text);
}

body:not(.pagelayout-login) #page {
    background:
        linear-gradient(
            180deg,
            rgba(21, 52, 83, .025),
            transparent 18rem
        ),
        var(--ueo-bg);
}

body:not(.pagelayout-login) a {
    color: var(--ueo-navy);
}

body:not(.pagelayout-login) a:hover {
    color: var(--ueo-green-dark);
}


/* =========================================================
   NAVBAR
   ========================================================= */

body:not(.pagelayout-login) .navbar.fixed-top {
    background: rgba(255,255,255,.97) !important;

    border-bottom:
        1px solid rgba(21,52,83,.08);

    box-shadow:
        0 5px 18px rgba(12,39,60,.055);

    backdrop-filter:
        blur(14px);
}

body:not(.pagelayout-login) .navbar .nav-link {
    position: relative;

    color: var(--ueo-text) !important;

    font-weight: 620;

    border-radius: .6rem;

    transition:
        background .18s ease,
        color .18s ease;
}

body:not(.pagelayout-login) .navbar .nav-link:hover {
    background:
        rgba(21,52,83,.055);

    color:
        var(--ueo-navy) !important;
}

body:not(.pagelayout-login) .navbar .nav-link.active {
    color:
        var(--ueo-navy) !important;
}

body:not(.pagelayout-login) .navbar .nav-link.active::after {
    content: "";

    position: absolute;

    left: .8rem;
    right: .8rem;
    bottom: -.05rem;

    height: 3px;

    border-radius: 999px;

    background:
        linear-gradient(
            90deg,
            var(--ueo-navy),
            var(--ueo-green)
        );
}


/* =========================================================
   PAGE HEADER
   ========================================================= */

body:not(.pagelayout-login) #page-header {
    margin-bottom: 1.35rem;
}

body:not(.pagelayout-login) #page-header .page-header-headings h1 {
    color: var(--ueo-navy);

    font-weight: 780;
    letter-spacing: -.025em;
}

body:not(.pagelayout-login) .breadcrumb {
    font-size: .86rem;
}


/* =========================================================
   CARDS / BLOCKS
   ========================================================= */

body:not(.pagelayout-login) .card,
body:not(.pagelayout-login) .block,
body:not(.pagelayout-login) .dashboard-card {
    border:
        1px solid var(--ueo-border-soft);

    border-radius:
        var(--ueo-radius-lg);

    background:
        var(--ueo-surface);

    box-shadow:
        var(--ueo-shadow);

    overflow: hidden;
}

body:not(.pagelayout-login) .card {
    transition:
        transform .2s ease,
        box-shadow .2s ease,
        border-color .2s ease;
}

body:not(.pagelayout-login) .dashboard-card:hover {
    transform:
        translateY(-3px);

    box-shadow:
        var(--ueo-shadow-hover);

    border-color:
        rgba(114,182,46,.28);
}

body:not(.pagelayout-login) .card-header,
body:not(.pagelayout-login) .block .card-title {
    color:
        var(--ueo-navy);

    font-weight: 720;
}


/* =========================================================
   ÁREA PERSONAL
   ========================================================= */

.path-my #page-header {
    position: relative;

    padding:
        clamp(1.4rem, 3vw, 2.25rem);

    border:
        1px solid rgba(21,52,83,.08);

    border-radius:
        var(--ueo-radius-lg);

    background:
        linear-gradient(
            115deg,
            rgba(21,52,83,.07),
            rgba(114,182,46,.07)
        ),
        var(--ueo-white);

    box-shadow:
        var(--ueo-shadow);
}

.path-my #page-header::before {
    content: "";

    position: absolute;

    top: 0;
    left: 0;

    width: 5px;
    height: 100%;

    background:
        linear-gradient(
            180deg,
            var(--ueo-navy),
            var(--ueo-green)
        );
}

.path-my .block_myoverview .nav-tabs {
    gap: .35rem;

    border-bottom: 0;
}

.path-my .block_myoverview .nav-link {
    border: 0 !important;

    border-radius: 999px !important;

    padding:
        .55rem 1rem;

    background:
        var(--ueo-surface-soft);

    color:
        var(--ueo-muted);

    font-weight: 650;
}

.path-my .block_myoverview .nav-link.active {
    background:
        var(--ueo-navy);

    color:
        var(--ueo-white) !important;
}


/* =========================================================
   BOTONES
   ========================================================= */

body:not(.pagelayout-login) .btn {
    border-radius:
        .72rem;

    font-weight:
        650;

    transition:
        transform .16s ease,
        box-shadow .16s ease,
        background .16s ease;
}

body:not(.pagelayout-login) .btn:hover {
    transform:
        translateY(-1px);
}

body:not(.pagelayout-login) .btn-primary {
    border-color:
        var(--ueo-navy) !important;

    background:
        var(--ueo-navy) !important;

    color:
        var(--ueo-white) !important;

    box-shadow:
        0 7px 15px rgba(21,52,83,.15);
}

body:not(.pagelayout-login) .btn-primary:hover {
    border-color:
        var(--ueo-navy-soft) !important;

    background:
        var(--ueo-navy-soft) !important;
}

body:not(.pagelayout-login) .btn-success {
    border-color:
        var(--ueo-green-dark) !important;

    background:
        var(--ueo-green-dark) !important;
}

body:not(.pagelayout-login) .btn-outline-primary {
    border-color:
        var(--ueo-navy);

    color:
        var(--ueo-navy);
}

body:not(.pagelayout-login) .btn-outline-primary:hover {
    background:
        var(--ueo-navy);

    color:
        var(--ueo-white);
}


/* =========================================================
   FORMS
   ========================================================= */

body:not(.pagelayout-login) .form-control,
body:not(.pagelayout-login) .custom-select,
body:not(.pagelayout-login) .form-select {
    border:
        1.5px solid #ccd8de;

    border-radius:
        .72rem;

    background:
        var(--ueo-white);

    transition:
        border-color .16s ease,
        box-shadow .16s ease;
}

body:not(.pagelayout-login) .form-control:focus,
body:not(.pagelayout-login) .custom-select:focus,
body:not(.pagelayout-login) .form-select:focus {
    border-color:
        var(--ueo-green);

    box-shadow:
        0 0 0 4px
        rgba(114,182,46,.13);
}


/* =========================================================
   BADGES
   ========================================================= */

body:not(.pagelayout-login) .badge {
    border-radius:
        999px;

    padding:
        .38em .7em;

    font-weight:
        700;
}


/* =========================================================
   PROGRESS
   ========================================================= */

body:not(.pagelayout-login) .progress {
    height:
        .65rem;

    border-radius:
        999px;

    background:
        #e7edef;

    overflow:
        hidden;
}

body:not(.pagelayout-login) .progress-bar {
    border-radius:
        999px;

    background:
        linear-gradient(
            90deg,
            var(--ueo-navy),
            var(--ueo-green)
        );
}


/* =========================================================
   TABS
   ========================================================= */

body:not(.pagelayout-login) .nav-tabs {
    gap:
        .25rem;

    border-bottom:
        1px solid var(--ueo-border);
}

body:not(.pagelayout-login) .nav-tabs .nav-link {
    border:
        0;

    border-radius:
        .7rem .7rem 0 0;

    color:
        var(--ueo-muted);

    font-weight:
        650;
}

body:not(.pagelayout-login) .nav-tabs .nav-link.active {
    background:
        var(--ueo-white);

    color:
        var(--ueo-navy);

    box-shadow:
        inset 0 -3px 0 var(--ueo-green);
}


/* =========================================================
   TABLES
   ========================================================= */

body:not(.pagelayout-login) .table {
    --bs-table-bg:
        transparent;

    color:
        var(--ueo-text);
}

body:not(.pagelayout-login) .table thead th {
    border-bottom:
        1px solid var(--ueo-border);

    background:
        #f4f7f8;

    color:
        var(--ueo-navy);

    font-size:
        .78rem;

    font-weight:
        780;

    letter-spacing:
        .025em;
}

body:not(.pagelayout-login) .table tbody tr {
    transition:
        background .15s ease;
}

body:not(.pagelayout-login) .table tbody tr:hover {
    background:
        rgba(21,52,83,.025);
}


/* =========================================================
   ADMIN OXFORD
   ========================================================= */

.path-local-oxford .oxford-admin-shell,
.path-local-oxford .oxford-admin-panel,
.path-local-oxford .oxford-grade-shell {
    border-radius:
        var(--ueo-radius-lg);
}

.path-local-oxford .oxford-admin-metric,
.path-local-oxford .oxford-stat-card {
    position:
        relative;

    overflow:
        hidden;

    border:
        1px solid var(--ueo-border-soft);

    border-radius:
        var(--ueo-radius-lg);

    background:
        var(--ueo-white);

    box-shadow:
        var(--ueo-shadow);
}

.path-local-oxford .oxford-admin-metric::after,
.path-local-oxford .oxford-stat-card::after {
    content: "";

    position:
        absolute;

    left: 0;
    right: 0;
    bottom: 0;

    height:
        3px;

    background:
        linear-gradient(
            90deg,
            var(--ueo-navy),
            var(--ueo-green)
        );
}


/* =========================================================
   CURSOS
   ========================================================= */

.path-course-view .course-section {
    margin-bottom:
        1rem;

    border:
        1px solid var(--ueo-border-soft) !important;

    border-radius:
        var(--ueo-radius-lg) !important;

    background:
        var(--ueo-white);

    box-shadow:
        0 8px 24px rgba(12,39,60,.055);

    overflow:
        hidden;

    transition:
        box-shadow .2s ease,
        transform .2s ease;
}

.path-course-view .course-section:hover {
    box-shadow:
        0 12px 30px rgba(12,39,60,.085);
}

.path-course-view .course-section-header {
    padding:
        .35rem .55rem;
}

.path-course-view .course-section-header h3,
.path-course-view .course-section-header h4 {
    color:
        var(--ueo-navy);

    font-weight:
        740;
}

.path-course-view .activity-item {
    border-radius:
        .8rem;

    transition:
        background .16s ease,
        transform .16s ease;
}

.path-course-view .activity-item:hover {
    background:
        rgba(21,52,83,.025);

    transform:
        translateX(2px);
}


/* =========================================================
   COURSE INDEX
   ========================================================= */

.courseindex .courseindex-item {
    border-radius:
        .65rem;

    transition:
        background .15s ease,
        color .15s ease;
}

.courseindex .courseindex-item:hover {
    background:
        rgba(21,52,83,.055);
}

.courseindex .courseindex-item.pageitem {
    background:
        rgba(114,182,46,.11);

    color:
        var(--ueo-navy);

    font-weight:
        680;
}


/* =========================================================
   OXFORD DASHBOARDS
   ========================================================= */

.path-local-oxford .oxford-course-card,
.path-local-oxford .oxford-dashboard-card {
    border:
        1px solid var(--ueo-border-soft);

    border-radius:
        var(--ueo-radius-lg);

    background:
        var(--ueo-white);

    box-shadow:
        var(--ueo-shadow);

    transition:
        transform .2s ease,
        box-shadow .2s ease;
}

.path-local-oxford .oxford-course-card:hover,
.path-local-oxford .oxford-dashboard-card:hover {
    transform:
        translateY(-2px);

    box-shadow:
        var(--ueo-shadow-hover);
}


/* =========================================================
   SECONDARY NAVIGATION
   ========================================================= */

.secondary-navigation .navigation {
    border-radius:
        .85rem;

    background:
        rgba(255,255,255,.82);

    box-shadow:
        0 5px 18px rgba(12,39,60,.045);
}


/* =========================================================
   FOCUS / ACCESSIBILITY
   ========================================================= */

body:not(.pagelayout-login)
:is(a, button, input, select, textarea):focus-visible {
    outline:
        3px solid rgba(114,182,46,.42);

    outline-offset:
        2px;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 767.98px) {

    body:not(.pagelayout-login) #page {
        padding-bottom:
            env(safe-area-inset-bottom);
    }

    .path-my #page-header {
        padding:
            1.3rem 1rem;
    }

    body:not(.pagelayout-login) .card,
    body:not(.pagelayout-login) .block,
    body:not(.pagelayout-login) .dashboard-card {
        border-radius:
            1rem;
    }

    .path-course-view .course-section {
        border-radius:
            1rem !important;
    }

    body:not(.pagelayout-login) .table-responsive {
        border-radius:
            .85rem;

        border:
            1px solid var(--ueo-border-soft);
    }
}


/* =========================================================
   REDUCED MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    body:not(.pagelayout-login) *,
    body:not(.pagelayout-login) *::before,
    body:not(.pagelayout-login) *::after {
        scroll-behavior:
            auto !important;

        transition-duration:
            .01ms !important;

        animation-duration:
            .01ms !important;
    }
}


/* ===== UEO NATIVE AUTH MIRROR 2026 ===== */

/*
 * Personal/Admin: misma identidad visual del login Oxford.
 * Solamente cambia el contenido funcional del formulario.
 */

body.pagelayout-login:not(.path-local-oxford) {
    --ueo-navy: #153453;
    --ueo-navy-dark: #0b2338;
    --ueo-green: #72b62e;
    --ueo-green-dark: #5a941f;
    --ueo-white: #fff;
    --ueo-bg: #f5f7f8;
    --ueo-text: #142532;
    --ueo-muted: #687986;

    margin: 0;
    overflow-x: hidden;
    background: var(--ueo-bg) !important;
}


/* ---------------------------------------------------------
   ESTRUCTURA GENERAL — IGUAL AL LOGIN PRINCIPAL
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) #page,
body.pagelayout-login:not(.path-local-oxford) #page-content {
    margin: 0 !important;
    padding: 0 !important;
    min-height: 100vh !important;
    background: transparent !important;
}

body.pagelayout-login:not(.path-local-oxford) #page-content {
    display: grid !important;
    grid-template-columns: minmax(0, 62fr) minmax(390px, 38fr) !important;
}


/* ---------------------------------------------------------
   HERO IZQUIERDO
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) .login-layout-left {
    position: relative !important;
    display: flex !important;

    width: 100% !important;
    max-width: none !important;
    min-height: 100vh !important;

    align-items: flex-end !important;

    padding:
        clamp(3rem, 5vw, 5.4rem) !important;

    overflow: hidden !important;

    background-image:
        radial-gradient(
            circle at 92% 4%,
            rgba(114,182,46,.23),
            transparent 31rem
        ),
        radial-gradient(
            circle at 5% 98%,
            rgba(255,255,255,.08),
            transparent 30rem
        ),
        linear-gradient(
            145deg,
            #0b2338 0%,
            #153453 54%,
            #687f61 100%
        ) !important;

    background-size: cover !important;
    background-position: center !important;
}


/*
 * Mata cualquier pseudo-elemento del theme antiguo.
 * Esto elimina también atribuciones/fondos agregados por Boost.
 */
body.pagelayout-login:not(.path-local-oxford) .login-layout-left::before,
body.pagelayout-login:not(.path-local-oxford) .login-layout-left::after {
    content: none !important;
    display: none !important;
}


/*
 * Cualquier hijo directo distinto del contenido principal
 * desaparece, incluida la atribución "Imagen generada por IA".
 */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-left > :not(.login-layout-left-content) {
    display: none !important;
}


/* ---------------------------------------------------------
   QUITAR LA CAJA OSCURA HEREDADA
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) .login-layout-left-content {
    position: relative !important;

    display: block !important;

    width: 100% !important;
    max-width: 44rem !important;

    margin: 0 !important;
    padding: 0 !important;

    border: 0 !important;
    border-radius: 0 !important;

    background: transparent !important;

    box-shadow: none !important;
    backdrop-filter: none !important;

    color: #fff !important;
    text-align: left !important;
}


/* ---------------------------------------------------------
   KICKER + TITULAR
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content h1 {
    margin: 0 0 1rem !important;
    padding: 0 !important;

    font-size: 0 !important;

    background: transparent !important;
    color: transparent !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content h1::before {
    content: "UNIDAD EDUCATIVA OXFORD";

    display: block;

    margin-bottom: 1.25rem;

    color: rgba(255,255,255,.84);

    font-size: .76rem;
    font-weight: 800;

    letter-spacing: .14em;
    text-transform: uppercase;
}


body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content h1::after {
    content: "Aprende. Crea. Avanza.";

    display: block;

    max-width: 10ch;

    padding-top: 1.05rem;

    border-top: 3px solid var(--ueo-green);

    color: #fff;

    font-size:
        clamp(3.8rem, 6vw, 6.5rem);

    font-weight: 790;
    line-height: .94;

    letter-spacing: -.055em;
}


/* ---------------------------------------------------------
   COPY
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content
.mx-auto.mb-4.text-start {
    max-width: 35rem !important;

    margin:
        0 0 1.9rem !important;

    padding: 0 !important;

    font-size: 0 !important;
    background: transparent !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content
.mx-auto.mb-4.text-start::after {
    content:
        "Un espacio educativo conectado para descubrir, desarrollar el talento y avanzar juntos.";

    display: block;

    color: rgba(255,255,255,.82);

    font-size:
        clamp(1rem, 1.3vw, 1.15rem);

    line-height: 1.65;
}


/* Desaparece el párrafo promocional de Moodle. */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-left-content > p {
    display: none !important;
}


/* ---------------------------------------------------------
   APRENDE · CREA · AVANZA
   Reutilizamos los tres slots de estadísticas.
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) .login-layout-stats {
    display: grid !important;

    grid-template-columns:
        repeat(3, minmax(0,1fr));

    gap: .8rem !important;

    width: 100% !important;
    max-width: 34rem !important;

    margin: 1.8rem 0 0 !important;
}


body.pagelayout-login:not(.path-local-oxford) .login-layout-stat {
    display: flex !important;

    flex-direction: column !important;
    align-items: flex-start !important;

    min-height: 4.7rem !important;

    padding: .9rem 1rem !important;

    border:
        1px solid rgba(255,255,255,.18) !important;

    border-radius: 1rem !important;

    background:
        rgba(255,255,255,.07) !important;

    box-shadow: none !important;

    text-align: left !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat-value,

body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat span {
    font-size: 0 !important;
}


/* Aprende */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(1)
.login-layout-stat-value::after {
    content: "Aprende";

    display: block;

    color: #fff;

    font-size: .95rem;
    font-weight: 760;
}

body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(1)
span::after {
    content: "con propósito";

    color: rgba(255,255,255,.70);

    font-size: .79rem;
}


/* Crea */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(2)
.login-layout-stat-value::after {
    content: "Crea";

    display: block;

    color: #fff;

    font-size: .95rem;
    font-weight: 760;
}

body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(2)
span::after {
    content: "con confianza";

    color: rgba(255,255,255,.70);

    font-size: .79rem;
}


/* Avanza */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(3)
.login-layout-stat-value::after {
    content: "Avanza";

    display: block;

    color: #fff;

    font-size: .95rem;
    font-weight: 760;
}

body.pagelayout-login:not(.path-local-oxford)
.login-layout-stat:nth-child(3)
span::after {
    content: "hacia tu futuro";

    color: rgba(255,255,255,.70);

    font-size: .79rem;
}


/* ---------------------------------------------------------
   DERECHA
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) .login-layout-right {
    position: relative !important;

    display: flex !important;

    width: 100% !important;
    max-width: none !important;
    min-height: 100vh !important;

    align-items: center !important;
    justify-content: center !important;

    padding:
        clamp(2rem, 4vw, 4rem) !important;

    background:
        radial-gradient(
            circle at 93% 2%,
            rgba(114,182,46,.10),
            transparent 24rem
        ),
        radial-gradient(
            circle at 2% 95%,
            rgba(21,52,83,.055),
            transparent 23rem
        ),
        var(--ueo-bg) !important;
}


/* Ningún pseudo antiguo aquí tampoco. */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-right::before,

body.pagelayout-login:not(.path-local-oxford)
.login-layout-right::after {
    content: none !important;
}


/* ---------------------------------------------------------
   WRAPPERS DE BOOST = TRANSPARENTES
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-layout-right-content,

body.pagelayout-login:not(.path-local-oxford)
#region-main-box {
    display: block !important;

    width: 100% !important;
    max-width: none !important;

    min-height: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    border: 0 !important;

    background: transparent !important;

    box-shadow: none !important;
}


/* ---------------------------------------------------------
   CONTENEDOR DE AUTENTICACIÓN
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford) .login-container {
    position: relative !important;

    display: block !important;

    width: min(100%, 30rem) !important;
    max-width: 30rem !important;

    margin: 0 auto !important;

    /*
     * Reserva exacta para:
     * logo + MOODLE UEO + slogan.
     */
    padding: 9.6rem 0 0 !important;

    border: 0 !important;
    border-radius: 0 !important;

    background: transparent !important;

    box-shadow: none !important;
    overflow: visible !important;
}


/* ---------------------------------------------------------
   LOGO
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container::before {
    content: "";

    position: absolute;

    top: 0;
    left: 50%;

    transform:
        translateX(-50%);

    width: 11rem;
    height: 4.5rem;

    background:
        url("pix/branding/ueo-logo.png")
        center / contain
        no-repeat;
}


/* ---------------------------------------------------------
   MOODLE UEO
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container::after {
    content: "MOODLE UEO";

    position: absolute;

    top: 4.85rem;
    left: 0;

    width: 100%;

    color: var(--ueo-navy);

    text-align: center;

    font-size:
        clamp(2rem, 2.8vw, 2.55rem);

    font-weight: 850;
    line-height: 1;

    letter-spacing: -.04em;
}


/* ---------------------------------------------------------
   UNA SOLA TARJETA
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container > div[role="main"] {
    position: relative !important;

    width: 100% !important;

    margin: 0 !important;

    padding:
        2.1rem 2rem 2rem !important;

    border:
        1px solid rgba(21,52,83,.08) !important;

    border-radius:
        1.55rem !important;

    background:
        rgba(255,255,255,.98) !important;

    box-shadow:
        0 24px 60px rgba(10,35,56,.11) !important;

    overflow: hidden !important;
}


/* Línea azul/verde superior. */
body.pagelayout-login:not(.path-local-oxford)
.login-container > div[role="main"]::after {
    content: "";

    position: absolute;

    top: 0;
    left: 1.7rem;
    right: 1.7rem;

    height: 3px;

    border-radius:
        0 0 999px 999px;

    background:
        linear-gradient(
            90deg,
            var(--ueo-navy),
            var(--ueo-green)
        );
}


/* ---------------------------------------------------------
   SLOGAN — FUERA DE LA TARJETA
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-heading::before {
    content:
        "Formando hoy los líderes del mañana";

    position: absolute;

    top: 7.1rem;
    left: 0;

    width: 100%;

    color: var(--ueo-muted);

    text-align: center;

    font-size: .86rem;
    font-weight: 560;
    line-height: 1.3;
}


/* ---------------------------------------------------------
   HEADING NATIVO
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container h1,

body.pagelayout-login:not(.path-local-oxford)
.login-container h2 {
    margin-top: 0 !important;

    color: var(--ueo-text) !important;

    font-weight: 780 !important;

    letter-spacing: -.025em;
}


/* ---------------------------------------------------------
   INPUTS
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container .form-control {
    min-height: 3.2rem !important;

    padding: .75rem 1rem !important;

    border:
        1.5px solid #ccd8de !important;

    border-radius:
        .82rem !important;

    background: #fff !important;

    box-shadow: none !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-container .form-control:focus {
    border-color:
        var(--ueo-green) !important;

    box-shadow:
        0 0 0 4px
        rgba(114,182,46,.14) !important;
}


/* ---------------------------------------------------------
   BOTÓN
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container .btn-primary {
    min-height: 3.2rem !important;

    border: 0 !important;

    border-radius:
        .82rem !important;

    background:
        linear-gradient(
            100deg,
            var(--ueo-navy-dark),
            var(--ueo-navy)
        ) !important;

    color: #fff !important;

    font-weight: 760 !important;

    box-shadow:
        0 10px 22px rgba(21,52,83,.18) !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-container .btn-primary:hover {
    transform:
        translateY(-1px);

    box-shadow:
        0 14px 27px rgba(21,52,83,.23) !important;
}


/* ---------------------------------------------------------
   LINKS
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
.login-container a {
    color: var(--ueo-navy) !important;

    font-weight: 600;

    text-decoration: none;
}


body.pagelayout-login:not(.path-local-oxford)
.login-container a:hover {
    color: var(--ueo-green-dark) !important;
}


/* ---------------------------------------------------------
   OCULTAR CUALQUIER ATRIBUCIÓN RESTANTE
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
[class*="attribution"],

body.pagelayout-login:not(.path-local-oxford)
[class*="image-credit"],

body.pagelayout-login:not(.path-local-oxford)
[class*="background-credit"],

body.pagelayout-login:not(.path-local-oxford)
[class*="background-image-credit"] {
    display: none !important;
}


/* ---------------------------------------------------------
   TABLET
   --------------------------------------------------------- */

@media (max-width: 991.98px) {

    body.pagelayout-login:not(.path-local-oxford) #page-content {
        grid-template-columns:
            1fr !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left {
        min-height: 19rem !important;

        padding:
            2.5rem 2rem !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left-content h1::after {
        font-size:
            clamp(2.8rem, 9vw, 4.4rem);
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-right {
        min-height: auto !important;

        padding:
            3rem 1.5rem 4rem !important;
    }
}


/* ---------------------------------------------------------
   MÓVIL
   --------------------------------------------------------- */

@media (max-width: 575.98px) {

    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left {
        min-height: 13rem !important;

        padding:
            1.8rem 1.25rem !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left-content h1::before {
        margin-bottom: .65rem;

        font-size: .64rem;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left-content h1::after {
        padding-top: .7rem;

        font-size: 2.55rem;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-left-content
    .mx-auto.mb-4.text-start,

    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-stats {
        display: none !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-layout-right {
        padding:
            2rem 1rem 3rem !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-container {
        padding-top:
            8.8rem !important;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-container::before {
        width: 9.5rem;
        height: 4rem;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-container::after {
        top: 4.35rem;

        font-size: 1.75rem;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-heading::before {
        top: 6.65rem;

        font-size: .78rem;
    }


    body.pagelayout-login:not(.path-local-oxford)
    .login-container > div[role="main"] {
        padding:
            1.6rem 1.3rem !important;

        border-radius:
            1.25rem !important;
    }
}


/* ---------------------------------------------------------
   ACCESIBILIDAD
   --------------------------------------------------------- */

body.pagelayout-login:not(.path-local-oxford)
:is(a,button,input,select):focus-visible {
    outline:
        3px solid rgba(114,182,46,.45);

    outline-offset:
        3px;
}


@media (prefers-reduced-motion: reduce) {
    body.pagelayout-login:not(.path-local-oxford) *,
    body.pagelayout-login:not(.path-local-oxford) *::before,
    body.pagelayout-login:not(.path-local-oxford) *::after {
        transition: none !important;
        animation: none !important;
    }
}



/* ===== UEO AUTH ALL FLOWS 2026 ===== */

/*
 * Todas las pantallas nativas de autenticación Moodle
 * comparten ahora la misma experiencia UEO:
 *
 * - login personal
 * - MFA
 * - recuperación de contraseña
 * - restablecimiento
 * - cambio de contraseña
 * - pasos adicionales de autenticación
 *
 * Se excluye local_oxford porque tiene su login propio.
 */


/* Garantizar que jamás reaparezca el fondo promocional antiguo. */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-left {
    background-image:
        radial-gradient(
            circle at 92% 4%,
            rgba(114,182,46,.23),
            transparent 31rem
        ),
        radial-gradient(
            circle at 5% 98%,
            rgba(255,255,255,.08),
            transparent 30rem
        ),
        linear-gradient(
            145deg,
            #0b2338 0%,
            #153453 54%,
            #687f61 100%
        ) !important;
}


/* Ninguna atribución de la imagen anterior debe sobrevivir. */
body.pagelayout-login:not(.path-local-oxford)
.login-layout-left
:is(
    small,
    .image-credit,
    .background-image-credit,
    .login-image-credit,
    [class*="credit"],
    [class*="attribution"]
) {
    display: none !important;
}


/* MFA y formularios similares utilizan distintos wrappers Moodle. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
:is(
    form,
    .mform,
    .mfaform,
    [data-region="mfa"]
) {
    width: 100%;
}


/* Campos MFA coherentes con el login. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
input[type="text"],
body.pagelayout-login:not(.path-local-oxford)
.login-container
input[type="password"],
body.pagelayout-login:not(.path-local-oxford)
.login-container
input[type="email"],
body.pagelayout-login:not(.path-local-oxford)
.login-container
input[type="tel"],
body.pagelayout-login:not(.path-local-oxford)
.login-container
input[type="number"] {
    min-height: 3.2rem;

    border:
        1.5px solid #ccd8de !important;

    border-radius:
        .82rem !important;

    background:
        #fff !important;

    color:
        #142532 !important;

    box-shadow:
        none !important;
}


body.pagelayout-login:not(.path-local-oxford)
.login-container
input:focus {
    border-color:
        #72b62e !important;

    box-shadow:
        0 0 0 4px
        rgba(114,182,46,.14) !important;
}


/* Todos los botones principales de autenticación. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
:is(
    .btn-primary,
    button[type="submit"],
    input[type="submit"]
) {
    min-height:
        3.2rem;

    border:
        0 !important;

    border-radius:
        .82rem !important;

    background:
        linear-gradient(
            100deg,
            #0b2338,
            #153453
        ) !important;

    color:
        #fff !important;

    font-weight:
        760 !important;

    box-shadow:
        0 10px 22px
        rgba(21,52,83,.18) !important;
}


/* Mensajes explicativos MFA más limpios. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
:is(
    .alert,
    .notification,
    .login-instructions
) {
    border-radius:
        .85rem;
}


/* Ayuda y enlaces secundarios. */
body.pagelayout-login:not(.path-local-oxford)
.login-container a {
    color:
        #153453 !important;

    font-weight:
        600;
}


body.pagelayout-login:not(.path-local-oxford)
.login-container a:hover {
    color:
        #5a941f !important;
}


/* El logo / marca nunca deben duplicarse por wrappers internos. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
.login-logo,

body.pagelayout-login:not(.path-local-oxford)
.login-container
.logo-area {
    display:
        none !important;
}


/* Mejor respiración en MFA. */
body.pagelayout-login:not(.path-local-oxford)
.login-container
form {
    margin-bottom:
        0 !important;
}


/* Responsive consistente para todos los pasos. */
@media (max-width: 575.98px) {

    body.pagelayout-login:not(.path-local-oxford)
    .login-container
    :is(
        .btn-primary,
        button[type="submit"],
        input[type="submit"]
    ) {
        width:
            100%;
    }
}



/* ===== UEO NAVBAR LOGO 2026 ===== */

/*
 * Sustituye visualmente el texto "UEOxford"
 * por el logo institucional.
 *
 * El enlace conserva su funcionalidad original.
 */

body:not(.pagelayout-login)
.navbar .navbar-brand {
    display: inline-flex !important;

    align-items: center;
    justify-content: center;

    flex: 0 0 auto;

    width: 7.6rem;
    min-width: 7.6rem;
    height: 2.65rem;

    margin-right: 1rem !important;
    padding: 0 !important;

    overflow: hidden;

    font-size: 0 !important;
    line-height: 0 !important;

    color: transparent !important;

    background-image:
        url("pix/branding/ueo-logo.png") !important;

    background-repeat:
        no-repeat !important;

    background-position:
        left center !important;

    background-size:
        contain !important;

    border-radius:
        .35rem;

    transition:
        transform .18s ease,
        opacity .18s ease;
}


body:not(.pagelayout-login)
.navbar .navbar-brand:hover {
    transform:
        translateY(-1px);

    opacity:
        .86;
}


/* Evita que hijos internos vuelvan a mostrar el texto. */
body:not(.pagelayout-login)
.navbar .navbar-brand > * {
    visibility:
        hidden !important;
}


/* Mantiene foco accesible mediante teclado. */
body:not(.pagelayout-login)
.navbar .navbar-brand:focus-visible {
    outline:
        3px solid rgba(114,182,46,.42);

    outline-offset:
        3px;
}


/* Tablet */
@media (max-width: 991.98px) {

    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width:
            6.5rem;

        min-width:
            6.5rem;

        height:
            2.35rem;

        margin-right:
            .65rem !important;
    }
}


/* Móvil */
@media (max-width: 575.98px) {

    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width:
            5.5rem;

        min-width:
            5.5rem;

        height:
            2rem;
    }
}


/* ===== AJUSTE LOGO NAVBAR UEO GRANDE ===== */

body:not(.pagelayout-login)
.navbar .navbar-brand {
    width: 10rem !important;
    min-width: 10rem !important;
    height: 3.4rem !important;

    margin-right: 1.2rem !important;

    background-size: contain !important;
}


/* Tablet */
@media (max-width: 991.98px) {

    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width: 8rem !important;
        min-width: 8rem !important;
        height: 2.8rem !important;
    }
}


/* Móvil */
@media (max-width: 575.98px) {

    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width: 6.5rem !important;
        min-width: 6.5rem !important;
        height: 2.35rem !important;
    }
}


/* ===== LOGO NAVBAR UEO FINAL ===== */

/*
 * Logo institucional grande y compacto.
 * Reduce el espacio entre logo y navegación.
 */

body:not(.pagelayout-login)
.navbar.fixed-top {
    min-height: 5rem !important;
    padding-top: .2rem !important;
    padding-bottom: .2rem !important;
}


/* Logo UEO */
body:not(.pagelayout-login)
.navbar .navbar-brand {
    width: 13.5rem !important;
    min-width: 13.5rem !important;
    height: 4.5rem !important;

    margin-left: 0 !important;
    margin-right: .15rem !important;

    padding: 0 !important;

    background-image:
        url("pix/branding/ueo-logo.png") !important;

    background-repeat:
        no-repeat !important;

    background-position:
        left center !important;

    /*
     * Lo hacemos más grande dentro del propio espacio
     * para que se pueda leer "Unidad Educativa".
     */
    background-size:
        12.8rem auto !important;

    flex-shrink: 0 !important;
}


/* Eliminar espacio entre marca y navegación principal */
body:not(.pagelayout-login)
.navbar .primary-navigation {
    margin-left: 0 !important;
    padding-left: 0 !important;

    flex: 0 1 auto !important;
}


body:not(.pagelayout-login)
.navbar .primary-navigation .navbar-nav {
    margin-left: 0 !important;
    padding-left: 0 !important;

    gap: 0 !important;
}


/* Primer elemento: Área personal */
body:not(.pagelayout-login)
.navbar .primary-navigation
.navbar-nav
.nav-item:first-child {
    margin-left: 0 !important;
}


/* Mantener el menú relativamente compacto */
body:not(.pagelayout-login)
.navbar .primary-navigation
.nav-link {
    padding-left: .8rem !important;
    padding-right: .8rem !important;
}


/* Evitar espacios de Bootstrap alrededor del logo */
body:not(.pagelayout-login)
.navbar .container-fluid {
    column-gap: 0 !important;
}


/* Tablet */
@media (max-width: 991.98px) {

    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width: 10.5rem !important;
        min-width: 10.5rem !important;
        height: 3.8rem !important;

        background-size:
            10rem auto !important;

        margin-right:
            .1rem !important;
    }
}


/* Móvil */
@media (max-width: 575.98px) {

    body:not(.pagelayout-login)
    .navbar.fixed-top {
        min-height: 4rem !important;
    }


    body:not(.pagelayout-login)
    .navbar .navbar-brand {
        width: 8rem !important;
        min-width: 8rem !important;
        height: 3.2rem !important;

        background-size:
            7.6rem auto !important;
    }
}

/* ===== OXFORD ASSIGNMENT NEW ATTEMPT ===== */

.oxford-attempt-grant {
    margin-top: 1.25rem;
    padding: 1.15rem 1.25rem;

    border: 1px solid rgba(114,182,46,.22);
    border-radius: 1rem;

    background:
        linear-gradient(
            115deg,
            rgba(21,52,83,.035),
            rgba(114,182,46,.08)
        );
}

.oxford-attempt-grant__content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
}

.oxford-attempt-grant strong {
    color: var(--ueo-navy);
    font-size: 1rem;
}

.oxford-attempt-grant p {
    margin: .25rem 0 0;
    color: var(--ueo-muted);
    font-size: .88rem;
}

.oxford-attempt-grant form {
    flex: 0 0 auto;
    margin: 0;
}

@media (max-width: 767.98px) {

    .oxford-attempt-grant__content {
        align-items: stretch;
        flex-direction: column;
    }

    .oxford-attempt-grant .btn {
        width: 100%;
    }
}
