body {
    margin: 0;
    font-family: 'Inter', sans-serif;
    background: #ffffff;
    color: #4B6274;
}
*,*::before, *::after{
    box-sizing: border-box;
}
:root{
    --letras:#132635;
    --letras-2:#4B6274;
    --papel:#F5F8F7;
    --carta:#FFFFFF;
    --linea:#E1E9E7;
    --deep:#0f5c2d;
    --deep-2:#164C71;
    --verde:#86C11E;
    --verde-2:#DFEFC5;
    --amarillo-p:#F8C301;
    --amarillo-2:#FCF0DC;
    --rojo:#C4534A;
    --rojo-2:#FBEAE8;
    --radius:10px;

    /* Compatibilidad con estilos anteriores */
    --shadow:0 4px 14px rgba(19, 38, 53, 0.06);
    --green:#86C11E;
    --green-dark:#0f5c2d;
    --border-light:#E1E9E7;
    --yellow-light:#FCF0DC;
    --red-light:#FBEAE8;
}

/* GENERAL */
.page {
    max-width: 1440px;
    margin: 20px;
    padding: 36px;
}
.page-head {
    margin: 0 0 28px;
}
.eyebrow {
    color: var(--verde);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    margin-bottom: 7px;
}
.page-title {
    margin: 0 0 8px;
    font-size: 30px;
    line-height: 1.15;
    font-weight: 600;
    color: var(--letras);
}
.page-sub {
    margin: 0;
    max-width: 850px;
    color: var(--letras-2);
    font-size: 14px;
    line-height: 1.5;
}
.card {
    background: var(--papel);
    border: 1px solid var(--verde);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    margin: 0;
}
.page-title,
.record-date strong {
    font-family: 'Sora', sans-serif;
}



/* INICIAR SESION */
.header2 {
    height: 100vh;
    background-color: var(--amarillo-p);
    background-size: cover;
    background-position: center;
    display: flex;
    justify-content: center;
    align-items: center;
}
.login-container {
    padding: 30px;
    border-radius: 10px;
    border: 1px solid var(--carta);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    max-width: 400px;
}
.login-container p {
    text-align: center;
    margin-bottom: 25px;
    color: var(--carta);
}
.login_logo{
    display: flex;
}
.login-form .input-group {
    margin-bottom: 20px;
}
.login-form label {
    margin-bottom: 5px;
    color: var(--carta);
}
.login-form input {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 5px;
    box-sizing: border-box;
}
.login-form input:focus {
    border-color: #EE7D00;
    outline: none;
}
.login-btn {
    width: 100%;
    padding: 10px;
    background-color: var(--verde);
    color: var(--carta);
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px;
}
.login-btn:hover {
    background-color: #5f8d10;
}
.options {
    margin-top: 20px;
}
.options a {
    color: white;
    text-decoration: none;
    text-align: center;
}
.options a:hover {
    text-decoration: underline;
}
.alert {
    width: 100%;
    margin: 0 0 18px;
    padding: 11px 13px;
    display: flex;
    align-items: flex-start;
    gap: 9px;
    background: #FBEAE8;
    color: #C4534A;
    border: 1px solid #f1cfcc;
    border-radius: 6px;
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    line-height: 1.5;
    font-weight: 600;
    box-sizing: border-box;
}
.alert i {
    flex-shrink: 0;
    margin-top: 2px;
    font-size: 13px;
}
.alert.error {
    background: #FBEAE8;
    color: #C4534A;
    border-color: #f1cfcc;
}

/* INDEX */
.main{
    flex:1;
    min-width:0;
    display:flex;
    flex-direction:column;
}
.topbar{
    height:64px;
    background:var(--amarillo-2);
    border-bottom:3px solid var(--amarillo-p);
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 26px;
    position:sticky;
    top:0;z-index:5;
}
.topbar .crumb{
    font-size:13px;
    color:var(--letras-2);
}
.topbar .crumb b{
    color:var(--letras);
    font-weight:600;
}
.topbar .crumb a{
    color:var(--letras);
    font-weight:600;
    /* text-decoration: none; */
}
.user{
    display:flex;
    align-items:center;
    gap:10px;
}
.avatar{
    width:34px;
    height:34px;
    border-radius:50%;
    background:var(--amarillo-p);
    color:var(--letras);
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:700;
    font-size:13px;
    font-family:'Sora',sans-serif;
}
.user .name{
    font-size:13px;
    font-weight:600;
}
.user .role{
    font-size:11.5px;
    color:var(--letras-2);
}
.content{
    padding:20px;
    max-width:1180px;
    width:100%;
    margin:0 auto;
}
.portal-head{
    margin-bottom:24px;
}
.portal-bienvenida{
    font-size:11.5px;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--verde);
    font-weight:700;
    margin-bottom:7px;
}
.portal-titulo{
    font-family:'Sora',sans-serif;
    font-size:26px;
    font-weight:500;
    line-height:1.15;
    margin:0 0 7px;
    color:#111;
}
.portal-subtitulo{
    font-size:13.5px;
    color: var(--letras-2);
    max-width:760px;
    line-height:1.35;
    margin:0;
}
.portal-modulos-titulo{
    font-size:11.5px;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--verde);
    font-weight:700;
    margin:0 0 9px;
}
.modulos-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px 10px;
}
.modulos-card{
    position:relative;
    min-height:155px;
    background: var(--papel);
    border:1px solid #86C11E;
    border-radius:8px;
    padding:17px 14px 17px 13px;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    cursor:pointer;
    text-decoration:none;
    color:inherit;
    transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.modulos-card:hover{
    transform:translateY(-2px);border-color:#66990e;
    box-shadow:0 5px 14px rgba(65,100,20,.08);
}
.modulos-icono{
    width:28px;
    height:28px;
    border-radius:4px;
    display:flex;
    align-items:center;
    justify-content:center;
    margin-bottom:10px;
    flex-shrink:0;
    background: var(--amarillo-2);
    color: var(--amarillo-p);
}
.modulos-icono i{
    font-size: 18px;
}
.modulos-card h3{
    font-family:'Inter',sans-serif;
    font-size:18px;
    font-weight:700;
    line-height:1.2;
    margin:0 0 4px;
    color:var(--letras);
}
.modulos-card p{
    font-size:12.5px;
    line-height:1.35;
    color:var(--letras-2);
    margin:0;
    max-width:290px;
}
.modulos-card .go{
    position:absolute;
    right:13px;
    bottom:12px;
    color:var(--verde);
    display:flex;
    align-items:center;     
    justify-content:center;
}
.modulos-card .go i{
    font-size: 30px;
}

/* REGISTRO DE NOTAS */
/* cabezotes */
.section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 24px;
}
.section-head-d {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 2px;
    border-bottom: 1px solid var(--verde);
}
.section-heading h2,
.section-heading h3 {
    margin: 0 0 5px;
    color: var(--letras);
}
.section-heading h2 {
    font-size: 20px;
}
.section-heading h3 {
    font-size: 16px;
}
.section-heading p {
    margin: 20px;
    color: var(--letras-2);
    font-size: 12px;
    line-height: 1.45;
}
.section-head-d p {
    margin: 20px;
    color: var(--letras-2);
    font-size: 12px;
    line-height: 1.45;
}
.text-link {
    color: var(--verde);
    font-size: 12px;
    font-weight: 700;
}
.text-link:hover {
    text-decoration: underline;
}
.toolbar {
    display: flex;
    align-items: flex-end;
    gap: 18px;
    padding: 22px;
    border-bottom: 1px solid var(--verde);
    /* background: #fff; */
}
.toolbar-spacer {
    flex: 1;
}
.field {
    display: flex;
    flex-direction: column;
    gap: 7px;
}
.field label {
    /* color: #555; */
    font-size: 12px;
    font-weight: 700;
}
.field input,
.field select,
.field textarea {
    width: 100%;
    border: 1px solid #d5d5d5;
    border-radius: 6px;
    /* background: #fff; */
    color: var(--letras);
    font-size: 13px;
    outline: none;
    transition: .15s ease;
}
.field input,
.field select {
    height: 40px;
    padding: 0 12px;
}
.field textarea {
    padding: 11px 12px;
    resize: vertical;
    line-height: 1.5;
}
.field input:focus,
.field select:focus,
.field textarea:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(120,197,27,.12);
}
/* DESPLEGABLE DESEMPEÑOS */
.performance-guide {
    border-bottom: 1px solid var(--verde-2);
    background: #fff;
}
.performance-guide-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 13px 20px;
    border: none;
    color: var(--letras);
    text-align: left;
    font-size: 12px;
    cursor: pointer;
}
.performance-guide-toggle:hover {
    background: #fafcf8;
}
.guide-title {
    display: flex;
    align-items: center;
    gap: 9px;
}
.guide-info {
    width: 14px;
    height: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: 10px;
    font-weight: 700;
    color: var(--letras);
}
.guide-title strong {
    font-weight: 400;
}
.guide-arrow {
    color: #164f76;
    font-size: 14px;
    transition: transform .2s ease;
}
.performance-guide-content {
    display: none;
    padding: 0 20px 16px;
    background: #fff;
}
.performance-guide-content.open {
    display: block;
}
.performance-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 11px 13px;
    margin-top: 9px;
    border: 1px solid #dce3df;
    border-radius: 8px;
    background: #fff;
}
.performance-code {
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    background: var(--verde-2);
    color: var(--verde);
    font-size: 12px;
    font-weight: 800;
}
.performance-info {
    min-width: 0;
}
.performance-category {
    display: block;
    margin-bottom: 3px;
    color: var(--verde);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
}
.performance-info h3 {
    margin: 0 0 3px;
    color: #333;
    font-size: 13px;
    font-weight: 700;
}
.performance-info p {
    margin: 0;
    color: #777;
    font-size: 12px;
    line-height: 1.4;
}
.table-performance-code {
    display: block;
    margin-bottom: 3px;
    color: #168c83;
    font-size: 10px;
    font-weight: 800;
}
.table-performance-name {
    display: block;
    max-width: 145px;
    color: #174c70;
    font-size: 10px;
    font-weight: 500;
    line-height: 1.3;
}

/* estudiantes */
.student-cell {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 190px;
}
.student-cell strong {
    display: block;
    color: #333;
    font-size: 12px;
}
.student-cell small {
    display: block;
    margin-top: 3px;
    color: #999;
    font-size: 10px;
}
.student-avatar {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #edf5df;
    color: var(--verde);
    font-size: 11px;
    font-weight: 800;
}
.student-avatar.large {
    width: 48px;
    height: 48px;
    flex-basis: 48px;
    font-size: 14px;
}
.student-avatar.piar {
    background: #e8f1dc;
    color: var(--verde);
}
/* tablas */
.table-wrap {
    width: 100%;
    overflow-x: auto;
}
.data-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 900px;
}
.data-table thead {
    background: #f8f9f6;
}
.data-table th {
    padding: 14px 15px;
    border-bottom: 1px solid #dedede;
    color: #777;
    font-size: 10px;
    font-weight: 700;
    text-align: left;
    vertical-align: bottom;
}
.data-table td {
    padding: 13px 15px;
    border-bottom: 1px solid #eeeeee;
    font-size: 12px;
    vertical-align: middle;
}
.data-table tbody tr:hover {
    background: #fcfdf9;
}
.data-table tbody tr:last-child td {
    border-bottom: none;
}
.th-code {
    display: inline-block;
    margin-right: 5px;
    color: var(--green-dark);
    font-weight: 800;
}
/* botones */
.btn {
    min-height: 40px;
    padding: 0 16px;
    border: 1px solid transparent;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    transition: .15s ease;
}
.btn-primary {
    background: var(--verde);
    color: #fff;
}
.btn-primary:hover {
    background: var(--deep);
}
.btn-secondary {
    background: #fff;
    border-color: #d5d5d5;
    color: #555;
}
.btn-secondary:hover {
    background: #ceff8f;
}
.btn-gold {
    background:#e7bd3c;
    color: #5c4b0d;
}
.btn-gold:hover {
    background: #caa124;
}
.back-dashboard {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    font-weight: 700;
    transition: .15s ease;
    border: 1px solid #d7dfe3;
    background-color: var(--verde);
    color: white;
    text-decoration: none;
    padding: 8px;
    margin: 20px 0 0 20px;
    border-radius: 8px;
}
.back-dashboard:hover {
    background-color: var(--deep);
}
.btn-logout {
    text-decoration: none;
    color: white;
    padding: 5px;
    margin: 5px;
    border-radius: 8px;
    background-color: var(--verde);
}
.btn-logout:hover {
    background-color: var(--deep);
}
/* notas */
.grade-input {
    width: 64px;
    height: 34px;
    padding: 0 7px;
    border: 1px solid #d7d7d7;
    border-radius: 5px;
    text-align: center;
    font-size: 12px;
    font-weight: 700;
    outline: none;
}
.grade-input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(120,197,27,.1);
}
.grade-good {
    background: #f1f8e8;
    border-color: #cde3ae;
    color: var(--verde);
}
.grade-low {
    background: #fff4e9;
    border-color: #f0d0ad;
    color: #b87532;
}
.average {
    color: var(--green-dark);
    font-size: 13px;
}
.card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 17px 22px;
    border-top: 1px solid var(--border-light);
    background: #fafbf9;
}
.card-footer > div {
    display: flex;
    gap: 8px;
}
.save-status {
    color: var(--verde);
    font-size: 11px;
}
.module-summary {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 1px;
    background: var(--border-light);
    border-bottom: 1px solid var(--verde);
}
.module-summary > div {
    /* background: #fff; */
    padding: 17px 22px;
}
.summary-label {
    display: block;
    margin-bottom: 5px;
    color: #999;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .07em;
}
.module-summary strong {
    font-size: 13px;
}
.badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 9px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}
.badge-ok {
    background: #eaf6df;
    color: var(--verde);
}
.badge-warn {
    background: var(--yellow-light);
    color: #927411;
}
.badge-danger {
    background: var(--red-light);
    color: var(--rojo);
}
.grades-table .observation-column {
    width: 260px;
    min-width: 240px;
}
.observation-cell {
    padding: 8px 10px !important;
    vertical-align: middle !important;
}
.observation-input {
    width: 100%;
    min-width: 220px;
    min-height: 42px;
    max-height: 100px;
    padding: 8px 10px;
    border: 1px solid #d8d8d8;
    border-radius: 6px;
    background: #fff;
    color: #444;
    font-size: 11px;
    line-height: 1.4;
    resize: vertical;
    outline: none;
    transition: .15s ease;
}
.observation-input::placeholder {
    color: #aaa;
}
.observation-input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(120,197,27,.10);
}



/* DESEMPEÑOS*/
.moment-tabs {
    display: flex;
    padding: 0 22px;
    border-bottom: 1px solid var(--linea);
    background: #fff;
}
.moment-tab {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 15px 13px;
    /* margin-top: 8px; */
    color: #888;
    font-size: 12px;
    font-weight: 700;
    border: none;
    cursor: pointer;
}
.moment-tab:hover {
    color: var(--letras);
}
.moment-tab.active {
    color: var(--deep);
}
.moment-tab.active::after {
    content: "";
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: -1px;
    height: 3px;
    background: var(--verde);
    border-radius: 3px 3px 0 0;
}
.status-banner {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 0;
    padding: 8px;
    border-top: 1px solid var(--letras-2);
}
.status-open {
    background: var(--verde-2);
}
.status-icon {
    flex: 0 0 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--letras);
    font-size: 12px;
}
.status-banner p {
    margin: 0;
    color: var(--letras-2);
    font-size: 12px;
    line-height: 1.45;
}
.content-section {
    padding: 0 22px;
}
.desem-row {
    display: grid;
    grid-template-columns: 48px 1fr auto;
    gap: 12px;
    padding: 11px 13px;
    border: 1px solid #dce3df;
    border-radius: 8px;
    margin-top: 9px;
}
.desem-code {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 5px;
    background: var(--verde-2);
    color: var(--verde);
    font-size: 12px;
    font-weight: 800;
}
.desem-content .area {
    color: var(--verde);
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.desem-content h3 {
    margin: 5px 0 6px;
    color: #333;
    font-size: 14px;
}
.desem-content p {
    margin: 0;
    max-width: 700px;
    color: #777;
    font-size: 12px;
    line-height: 1.5;
}
.desem-actions {
    display: flex;
    align-items: flex-start;
    gap: 5px;
}
.icon-btn {
    width: 31px;
    height: 31px;
    border: 1px solid #ddd;
    border-radius: 5px;
    color: #777;
    font-size: 12px;
}
.icon-btn:hover {
    background: #bebebe;
}
.icon-btn.danger {
    color: var(--rojo);
}
.icon-btn.danger:hover {
    background: var(--rojo-2);
}
.add-desem {
    margin: 20px 22px 22px;
    padding: 20px;
    border: 1px dashed #cfd9c2;
    border-radius: 8px;
    background: #fbfcf9;
}
.add-desem h3 {
    margin: 0 0 17px;
    font-size: 14px;
}
.form-row {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 15px;
    margin-bottom: 15px;
}
/* HISTORIAL */
.history-content {
    padding-bottom: 25px;
}
.history-intro {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 22px;
    border-bottom: 1px solid var(--border-light);
}
.history-intro h3 {
    margin: 0 0 5px;
    color: #333;
    font-size: 16px;
}
.history-intro p {
    margin: 0;
    color: #888;
    font-size: 11px;
}
.history-label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 10px;
    border-radius: 5px;
    background: var(--linea);
    color: var(--deep);
    font-size: 10px;
    font-weight: 700;
}
.history-selected {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 20px 22px 5px;
    color: #888;
    font-size: 11px;
}
.history-selected strong {
    color: var(--verde);
    font-size: 13px;
}
.history-row {
    margin: 20px;
    padding: 15px;
}
.history-period {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    min-width: 85px;
}
.history-period span {
    padding: 6px 9px;
    border-radius: 5px;
    background: var(--linea);
    color: var(--deep);
    font-size: 9px;
    font-weight: 700;
}
.history-year {
    min-width: 110px;
}


/* OBSERVACIONES */
.observation-module {
    overflow: hidden;
}
.student-profile {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 25px;
    padding: 18px 22px;
    border-bottom: 1px solid var(--linea);
    background: #fff;
}
.student-profile-main {
    display: flex;
    align-items: center;
    gap: 12px;
}
.student-profile-name {
    color: var(--letras);
    font-size: 15px;
    font-weight: 700;
}
.student-profile-meta {
    margin-top: 3px;
    color: var(--letras-2);
    font-size: 11px;
}
.student-profile-info {
    display: flex;
    gap: 30px;
    color: var(--letras);
    font-size: 11px;
}
.student-profile-info div {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.student-profile-info span {
    color: #999;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .05em;
}
.observation-tabs {
    display: flex;
    padding: 0 22px;
    border-bottom: 1px solid var(--linea);
    background: #fff;
}
.observation-tab {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 15px 13px;
    border: none;
    background: transparent;
    color: #888;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}
.observation-tab:hover {
    color: var(--letras);
}
.observation-tab.active {
    color: var(--deep);
}
.observation-tab.active::after {
    content: "";
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: -1px;
    height: 3px;
    background: var(--verde);
    border-radius: 3px 3px 0 0;
}
.observation-tab i {
    font-size: 13px;
}
.observation-content {
    padding-bottom: 25px;
}
.observation-content[hidden] {
    display: none !important;
}
.observation-content-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 25px;
    padding: 23px 22px;
    border-bottom: 1px solid var(--linea);
}
.observation-content-head .eyebrow {
    margin-bottom: 5px;
}
.observation-content-head h2 {
    margin: 0 0 5px;
    color: var(--letras);
    font-size: 19px;
}
.observation-content-head p {
    max-width: 650px;
    margin: 0;
    color: var(--letras-2);
    font-size: 11.5px;
    line-height: 1.45;
}
.observation-form {
    margin: 18px 22px 25px;
    padding: 20px;
    border: 1px solid #dce3df;
    border-radius: 9px;
    background: #fbfcf9;
}
.observation-form[hidden] {
    display: none !important;
}
.form-title {
    display: flex;
    justify-content: space-between;
    margin-bottom: 18px;
}
.form-title h3 {
    margin: 0 0 4px;
    color: var(--letras);
    font-size: 15px;
}
.form-title p {
    margin: 0;
    color: var(--letras-2);
    font-size: 11px;
}
.obs-form-grid {
    display: grid;
    grid-template-columns: 190px 1fr;
    gap: 15px;
    margin-bottom: 15px;
}
.observation-form > .field {
    margin-bottom: 15px;
}
.observation-form .field label {
    color: #666;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .04em;
}
.observation-form textarea,
.observation-form input,
.observation-form select {
    background: #fff;
}
.observation-form textarea {
    min-height: 70px;
}
/* FIRMAS */
.signature-section {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 20px;
}
.signature-box {
    padding: 15px;
    border: 1px solid #dce3df;
    border-radius: 8px;
    background: #fff;
}
.signature-box-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 15px;
}
.signature-box-head strong {
    display: block;
    color: var(--letras);
    font-size: 12px;
}
.signature-box-head span:not(.signature-status) {
    display: block;
    margin-top: 4px;
    color: #888;
    font-size: 10px;
    line-height: 1.4;
}
.signature-status {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 8px;
    border-radius: 20px;
    white-space: nowrap;
    font-size: 9px;
    font-weight: 700;
}
.signature-status.pending {
    background: #fdf3df;
    color: #94721b;
}
.signature-status.confirmed {
    background: var(--verde-2);
    color: var(--deep);
}
.signature-button {
    width: 100%;
    min-height: 42px;
    margin-top: 15px;
    border: 1px dashed #bfcdb0;
    border-radius: 6px;
    background: #fbfcf9;
    color: var(--deep);
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
    transition: .15s ease;
}
.signature-button:hover {
    border-color: var(--verde);
    background: #f2f8e8;
}
.teacher-signature {
    background: #f8faf7;
}
.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid #e2e8e1;
}
.observation-history,
.conflict-history {
    margin: 0 22px;
}
.history-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 13px;
}
.history-heading h3 {
    margin: 0 0 4px;
    color: var(--letras);
    font-size: 15px;
}
.history-heading p {
    margin: 0;
    color: #888;
    font-size: 10.5px;
}
.history-count {
    padding: 5px 9px;
    border-radius: 20px;
    background: var(--verde-2);
    color: var(--deep);
    font-size: 9px;
    font-weight: 700;
}
.observation-record {
    display: grid;
    grid-template-columns: 55px 1fr;
    gap: 14px;
    padding: 16px 0;
    border-top: 1px solid var(--linea);
}
.record-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding-top: 2px;
}
.record-date strong {
    color: var(--letras);
    font-family: 'Sora', sans-serif;
    font-size: 19px;
    line-height: 1;
}
.record-date span {
    margin-top: 4px;
    color: var(--verde);
    font-size: 9px;
    font-weight: 800;
}
.record-date small {
    margin-top: 2px;
    color: #aaa;
    font-size: 8px;
}
.record-body {
    min-width: 0;
}
.record-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}
.record-type {
    display: inline-flex;
    padding: 4px 8px;
    border-radius: 20px;
    font-size: 9px;
    font-weight: 700;
}
.record-type.academic {
    background: #e8f2e8;
    color: var(--deep);
}
.record-type.attendance {
    background: #fcf0dc;
    color: #8c6c18;
}
.record-type.convivencia {
    background: #e8f0f5;
    color: var(--deep-2);
}
.record-status {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--deep);
    font-size: 9px;
    font-weight: 700;
}
.record-body h4 {
    margin: 8px 0 5px;
    color: var(--letras);
    font-size: 13px;
}
.record-body > p {
    max-width: 800px;
    margin: 0;
    color: #777;
    font-size: 11.5px;
    line-height: 1.5;
}
.record-footer {
    display: flex;
    align-items: center;
    gap: 17px;
    margin-top: 12px;
    color: #999;
    font-size: 9px;
}
.record-footer span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.record-link {
    margin-left: auto;
    border: none;
    background: transparent;
    color: var(--deep-2);
    font-size: 9px;
    font-weight: 700;
    cursor: pointer;
}
.record-link:hover {
    text-decoration: underline;
}
.conflict-info {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 18px 22px;
    padding: 13px 15px;
    border: 1px solid #d8e3e9;
    border-radius: 7px;
    background: #f4f8fa;
}
.conflict-info-icon {
    color: var(--deep-2);
    font-size: 14px;
}
.conflict-info strong {
    display: block;
    margin-bottom: 3px;
    color: var(--letras);
    font-size: 11px;
}
.conflict-info p {
    margin: 0;
    color: #71818a;
    font-size: 10.5px;
    line-height: 1.45;
}
/* TABLA CONFLICTOS  */
.conflict-table-wrap {
    overflow-x: auto;
}
.conflict-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 850px;
}
.conflict-table th {
    padding: 11px 12px;
    border-bottom: 1px solid #dfe5e3;
    background: #f8faf8;
    color: #777;
    font-size: 9px;
    font-weight: 800;
    text-align: left;
}
.conflict-table td {
    padding: 13px 12px;
    border-bottom: 1px solid #eeeeee;
    color: #555;
    font-size: 10.5px;
    line-height: 1.4;
    vertical-align: top;
}
.conflict-table td:first-child {
    width: 70px;
    color: var(--letras);
}
.conflict-table td:nth-child(2) {
    min-width: 160px;
    color: var(--letras);
    font-weight: 600;
}
.conflict-table td:nth-child(3) {
    min-width: 250px;
    color: #777;
}
.conflict-table td small {
    display: block;
    margin-top: 2px;
    color: #aaa;
    font-size: 8px;
}
.table-status {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--deep);
    font-size: 9px;
    font-weight: 700;
}
.table-view-btn {
    width: 28px;
    height: 28px;
    border: 1px solid #ddd;
    border-radius: 5px;
    background: #fff;
    color: #777;
    cursor: pointer;
}
.table-view-btn:hover {
    background: var(--verde-2);
    color: var(--deep);
}
/* FIRMA */
.signature-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.signature-modal[hidden] {
    display: none !important;
}
.signature-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(19, 38, 53, .48);
    backdrop-filter: blur(3px);
}
.signature-modal-box {
    position: relative;
    z-index: 2;
    width: min(760px, 100%);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 18px 50px rgba(0,0,0,.18);
    overflow: hidden;
}
.signature-modal-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: 22px 24px;
    border-bottom: 1px solid var(--linea);
}
.signature-modal-head .eyebrow {
    margin-bottom: 5px;
}
.signature-modal-head h2 {
    margin: 0 0 5px;
    color: var(--letras);
    font-size: 19px;
}
.signature-modal-head p {
    max-width: 600px;
    margin: 0;
    color: var(--letras-2);
    font-size: 11px;
    line-height: 1.45;
}
.signature-close {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    border: 1px solid #ddd;
    border-radius: 5px;
    background: #fff;
    color: #777;
    cursor: pointer;
}
.signature-close:hover {
    background: #f4f4f4;
}
.signature-canvas-wrap {
    position: relative;
    margin: 20px 24px;
    border: 1px solid #d8dfdc;
    border-radius: 7px;
    background: linear-gradient(#fff, #fff);
    overflow: hidden;
}
#signatureCanvas {
    display: block;
    width: 100%;
    height: 260px;
    cursor: crosshair;
    touch-action: none;
}
.signature-line {
    position: absolute;
    left: 8%;
    right: 8%;
    bottom: 62px;
    border-bottom: 1px dashed #c9d2ce;
    pointer-events: none;
}
.signature-placeholder {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 37px;
    text-align: center;
    color: #b8c0bd;
    font-size: 9px;
    pointer-events: none;
}
.signature-modal-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 15px 24px;
    border-top: 1px solid var(--linea);
    background: #fafbf9;
}
.signature-modal-footer > div {
    display: flex;
    gap: 8px;
}

.observation-toolbar {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
}

.observation-toolbar .field:first-child {
    width: 180px;
}

.observation-toolbar .student-selector {
    flex: 1;
    min-width: 240px;
}

.observation-toolbar .field:last-child {
    width: 150px;
}

.observation-toolbar select {
    width: 100%;
}



/* FOOTER SIFE */
.page-footer {
    width: 100%;
    box-sizing: border-box;
    margin-top: auto;
    padding: 18px 25px 10px;

    display: flex;
    flex-direction: column;
    gap: 22px;

    background: var(--carta, #fff);
    border-top: 1px solid var(--linea, #E1E9E7);

    font-family: "Inter", sans-serif;
    color: var(--letras-2, #4B6274);
}
.footer-total {
    display: flex;
    justify-content: space-between;
}
.footer-identidad {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.footer-identidad img{
    width: 190px;
}
.footer-descripcion {
    font-size: 11px;
    color: var(--letras-2, #4B6274);
}
.footer-organizacion {
    margin-top: 2px;
    font-size: 10px;
    color: var(--texto-muted, #718078);
}
.footer-accesos {
    /*display: flex;*/
    align-items: center;
    flex-wrap: wrap;
    gap: 22px;
}
.footer-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--letras-2, #4B6274);
    font-size: 11px;
    text-decoration: none;
    transition: color .2s ease;
}
.footer-link:hover {
    color: var(--deep, #0F5C2D);
}
.footer-flecha {
    color: var(--deep, #0F5C2D);
    font-size: 12px;
    transition: transform .2s ease;
}
.footer-link:hover .footer-flecha {
    transform: translate(2px, -2px);
}
.footer-copy {
    width: 100%;
    box-sizing: border-box;
    padding-top: 14px;
    border-top: 1px solid var(--linea, #E1E9E7);

    text-align: center;
    font-size: 10px;
    line-height: 1.6;
    color: var(--texto-muted, #718078);
}





/* ---------- RESPONSIVE ---------- */

@media (max-width: 800px) {

    .student-profile {
        align-items: flex-start;
        flex-direction: column;
    }

    .student-profile-info {
        width: 100%;
    }

    .signature-section {
        grid-template-columns: 1fr;
    }

    .observation-content-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .obs-form-grid {
        grid-template-columns: 1fr;
    }

}


@media (max-width: 600px) {

    .observation-tabs {
        overflow-x: auto;
    }

    .observation-tab {
        white-space: nowrap;
    }

    .signature-modal-footer {
        align-items: stretch;
        flex-direction: column;
    }

    .signature-modal-footer > div {
        justify-content: flex-end;
    }

}





[hidden] {
    display: none !important;
}