body {
    font-size: 16px;
}

.left-layout {
    max-width: 100%;
    max-height: 100%;
}

.logo-head {
    height: 50px;
    width: 120px;
}

.initial {
    width: 40px;
    height: 40px;
    font-size: 20px;
}

.stacked-menu {
    padding-top: 0px !important;
}

.app-aside {
    width: 240px;
}

.dropdown-menu {
    top: 100% !important;
    margin-top: 0.25rem;
}

.menu-item {
    padding: 8px;
    transition: background-color .3s;
    cursor: pointer;
}

    .menu-item.has-active {
        font-weight: 700;
    }

    .menu-item.disabled {
        color: gray !important;
        cursor: not-allowed;
    }

.offcanvas-body {
    padding: 0px;
}

    .offcanvas-body .menu-item a {
        color: white;
    }


.aside-footer .btn {
    color: white !important;
}

.student-tab {
    height: 50px !important;
    color: black !important;
}

    .student-tab.active {
        color: white !important;
        background-color: #346cb0 !important;
    }


.login-page {
    display: flex;
    min-height: 100vh;
    flex-direction: row;
}

.login-container {
    flex: 7;
    display: flex;
    align-items: center;
    justify-content: center;
    border-top-right-radius: 50px;
    border-bottom-right-radius: 50px;
    z-index: 2;
    padding: 20px;
}

.banner-container {
    flex: 5;
    display: flex;
    justify-content: center;
    align-items: center;
}

.vertical-landing-banner {
    height: 100vh;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
    padding: 2rem;
    overflow: hidden;
}

.logo-v {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.option-card {
    transition: box-shadow 0.3s ease;
    cursor: pointer;
}

    .option-card:hover {
        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    }

.social-icons i {
    font-size: 1.5rem;
    margin: 0 0.5rem;
    color: white;
}

.icon-circle {
    border-radius: 50%;
    padding: 10px;
    color: white;
    min-width: 42px;
    min-height: 42px;
    text-align: center;
}

.link-force {
    cursor: pointer !important;
    text-decoration: underline !important;
}

.password-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.btn-show-password {
    position: absolute;
    right: 0.75rem;
    background: none;
    border: none;
    color: #555;
    cursor: pointer;
    padding: 0.5rem;
}

    .btn-show-password:hover {
        color: #000;
    }

.password-strength small {
    font-weight: 600;
}

.pdf-viewer {
    border: none;
    height: 400px;
    width: 100%;
}

.center-select-container {
    background: white;
    border-radius: 15px;
    padding: 20px;
}

.hover-pointer:hover {
    background-color: #f8f9fa;
    transform: scale(1.01);
    transition: transform 0.2s ease, background-color 0.2s ease;
}


.consultant-top {
    background-color: white;
    border-radius: 15px;
    padding: 15px;
}

.consultant-tab-content {
    background-color: white;
    padding: 15px;
}

.asterisk {
    color: red;
    font-weight: bolder;
    position: absolute;
    margin-left: 2px;
}

.filter-content {
    background-color: white;
    margin: 0;
}

.input-validation-error {
    border: 1px solid red !important;
    background-color: #ffe6e6;
}

.validation-message {
    color: red;
    font-size: 0.9rem;
}

.bg-bluba {
    background-color: #c2edff !important;
}

.stat-card {
    border: 1px solid #e9ecef;
    border-radius: var(--card-radius);
    background: #fff;
    transition: transform .08s ease, box-shadow .2s ease;
    height: 100%;
}

    .stat-card:hover {
        transform: translateY(-2px);
        box-shadow: 0 8px 22px rgba(0,0,0,.06);
    }

.stat-body {
    padding: 1.25rem 1.25rem 1rem;
}

.stat-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
}

.icon-neutral {
    background: #f1f3f5;
    color: #212529;
}

.icon-primary {
    background: #e7f1ff;
    color: #0d6efd;
}

.icon-warning {
    background: #fff3cd;
    color: #b58100;
}

.icon-info {
    background: #e7f5ff;
    color: #0aa2c0;
}

.stat-title {
    margin: 0;
    font-weight: 700;
    line-height: 1.2;
    font-size: 1.05rem;
}

.stat-subtitle {
    color: #6c757d;
    font-size: .95rem;
}

.stat-value {
    font-size: 2.25rem;
    font-weight: 800;
    letter-spacing: .5px;
}

.status-dot {
    width: .75rem; /* 12px aprox */
    height: .75rem;
    border-radius: 9999px;
    display: inline-block;
    box-shadow: 0 0 0 2px rgba(0,0,0,.05); /* borde sutil */
}

/* === Paleta personalizada Bootstrap extendida === */

/* Turquesa */
.btn-turquoise {
    background-color: #4dd0e1;
    color: #fff;
}

    .btn-turquoise:hover {
        background-color: #26c6da;
        color: #fff;
    }

/* Coral */
.btn-coral {
    background-color: #ff6f61;
    color: #fff;
}

    .btn-coral:hover {
        background-color: #e85c50;
        color: #fff;
    }

/* Lavanda */
.btn-lavender {
    background-color: #ba68c8;
    color: #fff;
}

    .btn-lavender:hover {
        background-color: #ab47bc;
        color: #fff;
    }

/* Verde menta */
.btn-mint {
    background-color: #81c784;
    color: #fff;
}

    .btn-mint:hover {
        background-color: #66bb6a;
        color: #fff;
    }

/* Amarillo mostaza */
.btn-mustard {
    background-color: #ffd54f;
    color: #000;
}

    .btn-mustard:hover {
        background-color: #ffca28;
        color: #000;
    }

/* Azul cielo */
.btn-sky {
    background-color: #64b5f6;
    color: #fff;
}

    .btn-sky:hover {
        background-color: #42a5f5;
        color: #fff;
    }

/* Naranja */
.btn-orange {
    background-color: #ffb74d;
    color: #fff;
}

    .btn-orange:hover {
        background-color: #ffa726;
        color: #fff;
    }

/* Fucsia */
.btn-fuchsia {
    background-color: #f06292;
    color: #fff;
}

    .btn-fuchsia:hover {
        background-color: #ec407a;
        color: #fff;
    }

/* Verde lima */
.btn-lime {
    background-color: #dce775;
    color: #000;
}

    .btn-lime:hover {
        background-color: #d4e157;
        color: #000;
    }

/* Azul marino */
.btn-navy {
    background-color: #5c6bc0;
    color: #fff;
}

    .btn-navy:hover {
        background-color: #3f51b5;
        color: #fff;
    }

/* Rosa pastel */
.btn-rose {
    background-color: #f8bbd0;
    color: #000;
}

    .btn-rose:hover {
        background-color: #f48fb1;
        color: #000;
    }

/* Verde bosque */
.btn-forest {
    background-color: #388e3c;
    color: #fff;
}

    .btn-forest:hover {
        background-color: #2e7d32;
        color: #fff;
    }

/* Azul petróleo */
.btn-teal {
    background-color: #26a69a;
    color: #fff;
}

    .btn-teal:hover {
        background-color: #00897b;
        color: #fff;
    }

/* Rojo vino */
.btn-wine {
    background-color: #8e244d;
    color: #fff;
}

    .btn-wine:hover {
        background-color: #6a1b3a;
        color: #fff;
    }

/* Gris humo */
.btn-smoke {
    background-color: #90a4ae;
    color: #fff;
}

    .btn-smoke:hover {
        background-color: #78909c;
        color: #fff;
    }

.maxtextarea-wrapper {
    position: relative;
}

/* Botón de maximizar dentro del textarea “normal” */
.maxtextarea-btn {
    position: absolute;
    top: .5rem;
    right: .5rem;
    padding: .25rem .5rem;
    border-radius: .5rem;
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
}

/* Overlay fullscreen */
.maxtextarea-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.6); /* slate-900/60 */
    z-index: 1080; /* por encima de modals estándar */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

.maxtextarea-modal {
    width: min(1200px, 100%);
    height: min(90vh, 100%);
    display: flex;
    flex-direction: column;
    border-radius: 1rem;
    overflow: hidden;
}

    .maxtextarea-modal .card-body {
        display: flex;
        flex: 1 1 auto;
    }

    .maxtextarea-modal textarea {
        flex: 1 1 auto;
        resize: none;
        padding: 1rem;
        font-size: 1rem;
        line-height: 1.5;
    }


@media (min-width: 1470px) {
    .login-container {
        flex: 6;
    }

    .banner-container {
        flex: 4;
    }

    .vertical-landing-banner {
        height: 90vh !important;
    }

    .logo-v {
        max-width: 70% !important;
    }

    .login-form {
        max-width: 550px;
        padding: 2rem 1.5rem;
        background-color: white;
        border-radius: 15px;
    }
}

.form-check {
    padding-left: 0 !important;
}

.form-switch {
    margin-left: 0 !important;
}

    .form-switch .form-check-input {
        margin-left: 0 !important;
        padding-left: 0 !important;
    }

    .form-switch .form-check-label {
        padding-left: 25px;
    }

.btn {
    height: 100%;
}

.centro-card {
    width: 220px;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    border-radius: 1rem;
}

    .centro-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    }

.card.border {
    padding: 0px !important;
}

.cal-event {
    position: relative; /* relativo al TD */
    width: 100%;
    border-radius: .5rem;
    padding: .25rem .5rem;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
    overflow: hidden;
}

    .cal-event.attended {
        background: rgba(25,135,84,.2);
        border-left: 4px solid #198754;
    }

        .cal-event.attended .accordion-button {
            background: rgba(25,135,84,0);
        }

    .cal-event.missed {
        background: rgba(220,53,69,.2);
        border-left: 4px solid #dc3545;
    }

        .cal-event.missed .accordion-button {
            background: rgba(220,53,69,0);
        }

    .cal-event.is-new {
        background: rgba(68,102,227,.2) !important;
        border-left: 4px solid #3559dc !important;
    }

        .cal-event.is-new .accordion-button {
            background: rgba(68,102,227,0);
        }

        .cal-event.is-new .accordion-button {
            background: rgba(68,102,227,0);
        }

.badge.cal-event {
    width: 20px;
}

.input-group .input-group-text.bg-white {
    height: 32px;
}

/* Píldoras */
.tab-chip {
    appearance: none;
    border: 0;
    outline: 0;
    background: #ffffff;
    color: #0a4f64;
    font-weight: 600;
    padding: 0.65rem 1rem;
    border-radius: 0.9rem 0.9rem 0.4rem 0.4rem; /* top más redondo, bottom menos */
    box-shadow: 0 1px 0 rgba(10, 79, 100, 0.08), 0 6px 12px rgba(10, 79, 100, 0.10);
    display: inline-flex;
    align-items: center;
    line-height: 1;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
    position: relative;
}

    /* Hover sutil */
    .tab-chip:hover {
        transform: translateY(-1px);
        box-shadow: 0 2px 0 rgba(10, 79, 100, 0.10), 0 10px 16px rgba(10, 79, 100, 0.14);
    }

    /* Accesibilidad al navegar con teclado */
    .tab-chip:focus-visible {
        box-shadow: 0 0 0 3px rgba(0, 123, 255, .35), 0 6px 12px rgba(10, 79, 100, 0.10);
    }

    .tab-chip[disabled] {
        cursor: no-drop;
    }

@media (min-width: 1025px) and (max-width: 1470px) {
    .login-container {
        flex: 6;
    }

    .banner-container {
        flex: 4;
    }

    .vertical-landing-banner {
        height: 90vh !important;
    }

    .logo-v {
        max-width: 70% !important;
    }

    .login-form {
        max-width: 550px;
        padding: 2rem 1.5rem;
        background-color: white;
        border-radius: 15px;
    }
}

@media (max-width: 1280px) {
    .login-container {
        flex: 7;
        padding: 15px;
    }

    .banner-container {
        flex: 3;
    }

    .vertical-landing-banner {
        height: 85vh !important;
    }

    .logo {
        max-width: 60% !important;
    }
}

@media (max-width: 1024px) {
    .login-page {
        flex-direction: row;
    }

    .login-container {
        flex: 8;
        border-radius: 0;
        padding: 10px;
    }

    .banner-container {
        flex: 2;
    }

    .vertical-landing-banner {
        height: 80vh !important;
    }

    .logo {
        max-width: 50% !important;
    }

    .login-form {
        max-width: 500px;
        padding: 1.8rem 1rem;
        background-color: white;
        border-radius: 15px;
    }
}

@media (max-width: 767px) {
    .banner-container {
        display: none;
    }

    .login-container {
        flex: 1;
        padding: 10px;
    }

    .vertical-landing-banner {
        height: 70vh !important;
    }

    .logo-v {
        max-width: 40% !important;
    }

    .login-form {
        max-width: 100%;
        padding: 1.5rem 1rem;
        background-color: white;
        border-radius: 15px;
    }

    .logo {
        width: 150px;
    }

    .page-inner {
        padding-left: 10px;
        padding-right: 10px;
    }

    .dot-col {
        position: relative;
    }

        .dot-col::after {
            content: "";
            position: absolute;
            left: calc(.75rem/2); /* centro del dot */
            top: 1.25rem; /* después del dot */
            bottom: -1.25rem; /* se une hacia abajo */
            width: 2px;
            background: rgba(0,0,0,.08);
        }

    .row:last-child .dot-col::after {
        display: none;
    }
}

@media (max-width: 576px) {
    .vertical-landing-banner {
        height: 60vh !important;
    }

    .logo-v {
        max-width: 30% !important;
    }

    .centro-card {
        width: 100%;
    }


    .tab-chip span {
        font-size: .9rem;
    }

    .tab-chip i {
        font-size: .95rem;
    }

    .tab-shelf {
        gap: .5rem;
        padding: .5rem;
    }

    .stat-value {
        font-size: 1.9rem;
    }
}

/* ---------------------------------------------------
    LOAD STYLE
----------------------------------------------------- */

#loader-background {
    position: fixed;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.8);
    z-index: 9999999;
    top: 0px;
}

#loader {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 1;
    margin: -75px 0 0 -75px;
    border: 16px solid #f3f3f3;
    border-radius: 50%;
    border-top: 16px solid #3498db;
    width: 120px;
    height: 120px;
    -webkit-animation: spin 2s linear infinite;
    animation: spin 2s linear infinite;
}

@-webkit-keyframes spin {
    0% {
        -webkit-transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(360deg);
    }
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}
