:root{--bg-main:#f4f6f9;--bg-sidebar:#343a40;--bg-sidebar-hover:rgba(255,255,255,0.1);--text-sidebar:#c2c7d0;--text-sidebar-active:#ffffff;--primary-color:#0d6efd;--success-color:#198754;--danger-color:#dc3545;--border-color:#dee2e6;--text-primary:#212529;--brand-color:#3f252a;--brand-color-soft:#f4edef;--focus-ring:rgba(13,110,253,0.28);--card-bg:#ffffff;--primary:var(--primary-color);--text-secondary:#6c757d}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Source Sans\ 3,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-main);color:var(--text-primary);font-size:1rem;line-height:1.5}a{text-decoration:none;color:inherit}button{cursor:pointer;font-family:inherit;border:none;background:none}ul{list-style:none}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:radial-gradient(circle at top left,rgba(63,37,42,.12),transparent 36%),linear-gradient(145deg,#f8f9fa,#e9ecef)}.login-card{background:#fff;width:100%;max-width:400px;border-top:4px solid var(--brand-color);box-shadow:0 1rem 2.5rem rgba(33,37,41,.14);border-radius:.75rem;padding:2rem;text-align:center}.login-logo-icon{font-size:2.5rem}.login-school-name{font-size:1.3rem;font-weight:300;color:#495057;margin-bottom:1.5rem}.form-group{margin-bottom:1rem;text-align:left}.form-label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:#495057}.login-card .form-label{display:none}.form-input{width:100%;padding:.625rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease,box-shadow .15s ease}.form-input:focus{border-color:#5b9cff;outline:0;box-shadow:0 0 0 .2rem var(--focus-ring)}.form-hint{display:block;font-size:.75rem;color:#6c757d;margin-bottom:.35rem}.btn{display:inline-block;font-weight:400;text-align:center;vertical-align:middle;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;color:#fff;transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease}.btn-primary{background-color:var(--primary-color);border-color:var(--primary-color)}.btn-primary:hover{background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 .25rem .75rem rgba(13,110,253,.22)}.btn-success{background-color:var(--success-color);border-color:var(--success-color)}.btn-block{width:100%;display:block}.btn:disabled{cursor:not-allowed;opacity:.65;transform:none;box-shadow:none}.btn:focus-visible,.sidebar-link:focus-visible,.toast-close:focus-visible{outline:3px solid #80bdff;outline-offset:2px}.login-error{color:#842029;background:#f8d7da;border:1px solid #f1aeb5;border-radius:.375rem;font-size:.875rem;margin-bottom:1rem;padding:.75rem;text-align:left}.login-recovery{text-align:center;margin:1.5rem 0 1rem}.login-access-block{background:var(--brand-color-soft);border:1px solid #d8bec4;border-radius:.625rem;padding:1.25rem;text-align:left}.login-access-icon{width:2.5rem;height:2.5rem;display:grid;place-items:center;margin:0 auto .75rem;border-radius:50%;background:var(--brand-color);color:#fff;font-size:1.35rem;font-weight:700}.login-access-block h2{margin-bottom:.5rem;color:var(--brand-color);font-size:1.15rem;text-align:center}.login-access-block p{margin-bottom:1rem;color:#5d454a;font-size:.925rem}.login-access-block .btn-primary{background:var(--brand-color);border-color:var(--brand-color)}.login-access-block .btn-primary:hover{background:#2f1c20;border-color:#2f1c20}.layout{min-width:0}.layout,.layout-loading{display:flex;min-height:100vh}.layout-loading{align-items:center;justify-content:center}.sidebar{width:260px;flex:0 0 260px;background-color:var(--brand-color);color:#e0e0e0;display:flex;flex-direction:column;transition:width .3s cubic-bezier(.4,0,.2,1),flex .3s cubic-bezier(.4,0,.2,1),transform .3s ease,left .3s ease;z-index:1000;box-shadow:2px 0 10px rgba(0,0,0,.3);overflow-x:hidden;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}@media (min-width:769px){.sidebar{width:74px;flex:0 0 74px;white-space:nowrap}.sidebar:hover{width:260px;flex:0 0 260px}.sidebar-brand-text,.sidebar-link-label,.sidebar-user-info{opacity:0;transition:opacity .2s ease}.sidebar:hover .sidebar-brand-text,.sidebar:hover .sidebar-link-label,.sidebar:hover .sidebar-user-info{opacity:1;transition:opacity .3s ease .1s}.sidebar-brand{justify-content:flex-start;padding-left:17px}.sidebar-user{justify-content:flex-start;padding-left:12px}.sidebar-link,.sidebar-logout{justify-content:flex-start;padding-left:24px}}.sidebar-brand{padding:.8125rem .5rem;display:flex;align-items:center;gap:.5rem;border-bottom:1px solid rgba(255,255,255,.1);justify-content:center;background-color:rgba(0,0,0,.2)}.sidebar-logo{font-size:1.5rem}.sidebar-title{color:#fff;font-size:1.25rem;font-weight:300}.sidebar-user{padding:1rem .5rem;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:1rem;margin:0 .5rem}.sidebar-user-avatar{width:35px;height:35px;min-width:35px;border-radius:50%;background:#6c757d;color:white;display:flex;align-items:center;justify-content:center;font-weight:700}.sidebar-user-name{color:#d0d4db;font-size:.9rem}.sidebar-user-role{display:none}.sidebar-nav{padding:0 .5rem;margin-top:1rem;flex-grow:1}.sidebar-link{display:flex;align-items:center;gap:.8rem;padding:.5rem 1rem;color:var(--text-sidebar);border-radius:.25rem;margin-bottom:.2rem;width:100%}.sidebar-link:hover{background-color:var(--bg-sidebar-hover);color:#fff}.sidebar-link.active{background-color:rgba(255,255,255,.2);color:#fff;font-weight:500;border-left:3px solid #fff}.sidebar-footer{padding:1rem}.sidebar-logout{background:#dc3545;color:#fff;justify-content:center}.main-content{flex:1 1 auto;flex-direction:column}.header,.main-content{min-width:0;display:flex}.header{background:#fff;padding:.5rem 1rem;justify-content:space-between;align-items:center;gap:.75rem;border-bottom:1px solid var(--border-color)}.header-title{min-width:0;font-size:1.1rem;font-weight:400;color:#333;margin:0}.dashboard{padding:1rem}.data-table-wrapper{background:#fff;border:1px solid var(--border-color);border-radius:.25rem;overflow-x:auto;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2)}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.data-table th{background-color:#212529;color:#fff;border:1px solid #373b3e;font-weight:600}.data-table td,.data-table th{padding:.75rem;white-space:nowrap}.data-table td{border:1px solid var(--border-color);color:#212529}.data-table tr:nth-child(odd){background-color:rgba(0,0,0,.05)}.stat-cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1rem}.stat-card{background:#fff;padding:1.5rem;border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:flex;align-items:center;gap:1rem}.stat-card-value{font-size:1.5rem;font-weight:700;color:#333}.stat-card-title{font-size:1rem;color:#666}.quick-links-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:1rem;gap:1rem}.card{background:#fff;padding:1.25rem;border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);min-width:0}.card-title{margin-top:0;font-size:1.1rem}.card-link:hover{box-shadow:0 0 1px rgba(0,0,0,.125),0 4px 6px rgba(0,0,0,.2)}.badge{padding:.25em .4em;font-size:75%;font-weight:700;border-radius:.25rem}.badge-info{background:#17a2b8;color:#fff}.badge-success{background:#28a745;color:#fff}.badge-danger{background:#dc3545;color:#fff}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1050;width:min(380px,calc(100vw - 2rem))}.toast{display:flex;align-items:flex-start;gap:.625rem;background:#fff;border:1px solid rgba(0,0,0,.1);border-left:4px solid #6c757d;border-radius:.5rem;padding:.875rem;margin-bottom:.5rem;box-shadow:0 .5rem 1.5rem rgba(0,0,0,.14)}.toast-success{border-left-color:var(--success-color)}.toast-error{border-left-color:var(--danger-color)}.toast-info{border-left-color:var(--primary-color)}.toast-message{flex:1 1;line-height:1.35}.toast-close{flex:0 0 auto;color:#6c757d;font-size:1rem;line-height:1;padding:.125rem}.profile-page{width:100%;max-width:1180px;margin:0 auto;padding:1.25rem}.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1.5rem;gap:1.5rem;align-items:start}.profile-card{padding:0;overflow:hidden;border:1px solid rgba(63,37,42,.1);border-radius:.625rem}.profile-card-header{background:linear-gradient(135deg,var(--brand-color),#5d3940);color:#fff;padding:1rem 1.25rem;font-weight:600;letter-spacing:.01em}.profile-card-body{padding:1.5rem}.profile-card-body .form-group{margin-bottom:1.25rem}.profile-security-field{margin-bottom:1.25rem;padding:1rem;background:#fff8e1;border:1px solid #ffe08a;border-radius:.5rem}.profile-security-field small{display:block;margin-top:.5rem;color:#6d5a21}.profile-card-actions{display:flex;justify-content:flex-end;margin:1.5rem -1.5rem -1.5rem;padding:1rem 1.5rem;background:#f8f9fa;border-top:1px solid var(--border-color)}.profile-submit-btn{background:var(--brand-color);border-color:var(--brand-color);color:#fff}.profile-submit-btn:hover{background:#2f1c20;border-color:#2f1c20;box-shadow:0 .25rem .75rem rgba(63,37,42,.2)}.page-content{padding:1rem}.page-toolbar{margin-bottom:1rem}.page-filters,.page-toolbar{display:flex;gap:1rem;flex-wrap:wrap}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.welcome-card{background:#fff;padding:1.5rem;margin-bottom:1rem;border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2)}.welcome-title{font-size:1.25rem;font-weight:400;color:#333;margin-bottom:.5rem}.welcome-subtitle{color:#6c757d;font-style:italic}.welcome-curso{margin-top:.75rem}.materias-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:1rem;gap:1rem}.materia-card{display:flex;align-items:center;gap:1rem}.materia-card-name{font-size:1rem;margin:0}.materia-card-curso{color:#6c757d;font-size:.875rem;margin:0}.grade-input{width:80px;text-align:center;padding:.25rem .5rem}.grade-student-name{font-weight:500;white-space:nowrap}.grade-nota-final{font-weight:700;text-align:center}.grade-good{color:#198754}.grade-warning{color:#ffc107}.grade-danger{color:#dc3545}.promedio-card{background:#fff;padding:1rem 1.5rem;margin-top:1rem;border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:flex;align-items:center;gap:1rem}.promedio-label{font-size:1.1rem;color:#333}.promedio-value{font-size:1.5rem;font-weight:700}.attendance-controls{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.attendance-controls .form-group{flex:1 1;min-width:200px}.attendance-controls .form-label{margin-bottom:.5rem;font-weight:500;color:#333}.attendance-summary{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.attendance-badge{padding:.5rem 1rem;border-radius:.25rem;font-weight:500}.attendance-present{background:#d1e7dd;color:#0f5132}.attendance-absent{background:#f8d7da;color:#842029}.attendance-total{background:#e2e3e5;color:#41464b}.attendance-list{display:flex;flex-direction:column;gap:.5rem}.attendance-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:#fff;border:1px solid var(--border-color);border-radius:.25rem;cursor:pointer;transition:background .15s}.attendance-row:hover{background:#f8f9fa}.attendance-row-present{border-left:3px solid #198754}.attendance-row-absent{border-left:3px solid #dc3545}.attendance-student-name{font-weight:500}.attendance-student-ci{color:#6c757d;font-size:.875rem;margin-left:1rem}.attendance-actions{margin-top:1.5rem;display:flex;justify-content:center}.attendance-clickable-row{cursor:pointer}.attendance-clickable-row:hover{background:#e9ecef!important}.expand-icon{margin-right:.5rem;font-size:.75rem}.attendance-detail-row td{padding:0!important;background:#f8f9fa}.attendance-detail-table-wrapper{padding:1rem}.attendance-detail-loading,.attendance-no-detail{padding:1rem;text-align:center;color:#6c757d}.data-table-nested{font-size:.875rem}.data-table-nested th{background:#6c757d}.percentage-cell{display:flex;align-items:center;gap:.75rem}.percentage-bar-bg{flex:1 1;height:8px;background:#e9ecef;border-radius:4px;overflow:hidden}.percentage-bar-fill{height:100%;border-radius:4px;transition:width .3s}.percentage-text{font-weight:600;min-width:45px;text-align:right}.percentage-good{color:#198754}.percentage-warning{color:#ffc107}.percentage-danger{color:#dc3545}.btn-danger{background-color:#dc3545;border-color:#dc3545;color:#fff}.btn-secondary{background-color:#6c757d;border-color:#6c757d;color:#fff}.btn-sm{padding:.25rem .5rem;font-size:.875rem}.btn-lg{padding:.5rem 1.5rem;font-size:1.125rem}.modal-backdrop,.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1050;padding:1rem}.modal,.modal-content{background:#fff;border-radius:.25rem;width:100%;max-width:500px;max-height:calc(100dvh - 2rem);display:flex;flex-direction:column;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--border-color)}.modal-header h2,.modal-header h3{font-size:1.25rem;font-weight:400;margin:0}.modal-close{font-size:1.5rem;background:none;border:none;cursor:pointer;color:#6c757d}.modal-body{padding:1rem;min-height:0;overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--border-color)}.confirm-dialog-actions{display:flex;gap:.5rem;margin-top:1rem}.app-footer{text-align:center;padding:1rem;color:#6c757d;font-size:.875rem;border-top:1px solid var(--border-color);margin-top:auto}.sidebar-backdrop,.sidebar-toggle{display:none}@media (max-width:768px){.sidebar{position:fixed;left:-270px;top:0;bottom:0;transition:left .3s cubic-bezier(.4,0,.2,1);z-index:1040;box-shadow:none}.sidebar-open{left:0;box-shadow:2px 0 15px rgba(0,0,0,.5)}.sidebar-toggle{display:block;position:fixed;top:.5rem;left:.5rem;z-index:1041;background:var(--brand-color);color:#fff;padding:.5rem .75rem;border-radius:.25rem;font-size:1.25rem;box-shadow:0 2px 5px rgba(0,0,0,.2);border:none;cursor:pointer}.sidebar-backdrop{display:block;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:1039;opacity:1;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.quick-links-grid,.stat-cards-grid{grid-template-columns:1fr}.attendance-controls{flex-direction:column}.header-title{font-size:.95rem;margin-left:3rem}.profile-page{padding:.875rem}.profile-grid{grid-template-columns:minmax(0,1fr);gap:1rem}.profile-card-body{padding:1.125rem}.profile-card-actions{margin:1.25rem -1.125rem -1.125rem;padding:.875rem 1.125rem}.profile-submit-btn{width:100%}.toast-container{top:.75rem;right:.75rem;width:calc(100vw - 1.5rem)}}@media (max-width:420px){.login-card{padding:1.35rem}.login-logo img{width:112px!important;height:112px!important}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.login-demo-hint{color:#6c757d}.login-demo-hint,.login-footer{margin-top:1.5rem;font-size:.8rem}.login-footer{color:#adb5bd}.login-motto{font-size:.95rem;color:#6c757d;margin-top:.5rem}.login-school-subtitle{font-size:.9rem;color:#6c757d}.login-bg-animation{display:none}.form-select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.form-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.data-table-empty{text-align:center;padding:2rem!important;color:#6c757d;font-style:italic}.toast-warning{border-left-color:#ffc107}.modal-sm{max-width:350px!important}.quick-links-2col{grid-template-columns:repeat(2,1fr)!important}.header-user{display:flex;align-items:center;gap:.5rem;min-width:0}.header-user-name{max-width:36vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:.95rem;color:#333}.badge-admin{background:var(--brand-color);color:white}.badge-profesor{background:#6f42c1;color:white}.badge-alumno{background:#0d6efd;color:white}.stat-card-blue{border-top:3px solid #0d6efd}.stat-card-green{border-top:3px solid #198754}.stat-card-orange{border-top:3px solid #fd7e14}.stat-card-purple{border-top:3px solid #6f42c1}.card-icon{font-size:2.2rem;opacity:.85;margin-right:.5rem}.card-desc{color:#6c757d;font-size:.95rem;margin-bottom:1rem}.section-title{font-size:1.15rem;margin-bottom:1.25rem;font-weight:600;border-bottom:2px solid var(--border-color);padding-bottom:.5rem}.sidebar-brand-text{display:flex;flex-direction:column;line-height:1.2}.sidebar-subtitle{font-size:.75rem;color:#a1a1a1;font-weight:400}.sidebar-user-info{display:flex;flex-direction:column;line-height:1.2}.import-instructions{background-color:#f8f9fa;border-left:4px solid var(--primary-color)}.import-format{display:block;padding:1rem;background:#212529;color:#00ff00;border-radius:4px;font-family:monospace;margin:1rem 0}.import-example{background:#e9ecef;padding:1rem;border-radius:4px}.import-dropzone{border:2px dashed #adb5bd;border-radius:8px;padding:3rem 2rem;text-align:center;background:#fff;cursor:pointer;transition:all .2s;margin-bottom:2rem;position:relative}.import-dropzone-active,.import-dropzone:hover{border-color:var(--primary-color);background:#f8f9fa}.import-file-input{position:absolute;width:100%;height:100%;top:0;left:0;opacity:0;cursor:pointer}.import-dropzone-icon{font-size:3rem;margin-bottom:1rem;display:block}.import-dropzone-text{font-size:1.2rem;font-weight:500;margin-bottom:.5rem;color:#333}.import-dropzone-hint{color:#6c757d;font-size:.9rem}.import-preview{margin-top:2rem}.import-preview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.import-preview-actions{display:flex;gap:.5rem}.import-result{margin-top:2rem;padding:1.5rem;border-radius:8px}.import-result-success{background:#d1e7dd;border:1px solid #a3cfbb;color:#0f5132}.import-result-error{background:#f8d7da;border:1px solid #f1aeb5;color:#842029}.import-result-message{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.import-result-errors{max-height:200px;overflow-y:auto;background:rgba(255,255,255,.5);padding:1rem;border-radius:4px}@media (max-width:768px){.data-table{font-size:.825rem}.data-table td,.data-table th{padding:.4rem .5rem}}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.content-panel{overflow:hidden;background:#fff;border:1px solid var(--border-color);border-radius:.5rem;box-shadow:0 1px 3px rgba(0,0,0,.12)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border-color)}.panel-title{margin:0;font-size:1.25rem;font-weight:600}.panel-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.parents-panel-actions{min-width:min(100%,28rem);justify-content:flex-end}.parents-search{width:auto;min-width:0;flex:1 1 16rem}.parents-create-button{flex:0 0 auto;white-space:nowrap}.parents-table-wrapper{border:0;border-radius:0;box-shadow:none}.parents-table{min-width:760px;table-layout:fixed}.parents-table th:first-child{width:30%}.parents-table th:nth-child(2){width:12%}.parents-table th:nth-child(3){width:32%}.parents-table th:nth-child(4){width:12%}.parents-table th:nth-child(5){width:14%;text-align:right}.parents-table td,.parents-table th{overflow:hidden}.parents-table td{vertical-align:middle}.parents-table td:nth-child(2),.parents-table td:nth-child(4){white-space:nowrap}.parents-identity{min-width:0;max-width:100%;display:flex;flex-direction:column}.parents-name{color:#212529;font-weight:600}.parents-email,.parents-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.parents-email{margin-top:.25rem}.parents-email,.parents-muted{color:#6c757d;font-size:.875rem}.parents-badge-list{display:flex;flex-wrap:wrap;gap:.3rem}.parents-child-badge{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.parents-actions-cell{text-align:right}.parents-row-actions{display:flex;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}.parents-icon-button{width:2.25rem;height:2.25rem;display:inline-grid;place-items:center;padding:0}.parents-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:0 1rem;gap:0 1rem}.parents-student-option{display:flex;align-items:center;gap:.75rem;padding:.625rem;border-bottom:1px solid var(--border-color);cursor:pointer}.parents-student-option:last-child{border-bottom:0}.parents-student-option.is-selected,.parents-student-option:hover{background:#eef5ff}.parents-student-option input{flex:0 0 auto}.parents-student-meta{color:#6c757d;font-size:.8rem;overflow-wrap:anywhere}.admin-entity-detail,.admin-entity-list{min-width:0;width:100%}.diagnostics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:.75rem}.diagnostics-card{display:flex;align-items:center;gap:1rem;padding:1.25rem;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}.diagnostics-card:hover{transform:translateY(-2px);box-shadow:0 .25rem .75rem rgba(0,0,0,.14)}.diagnostics-icon{font-size:1.75rem;line-height:1}.diagnostics-count{font-size:1.75rem;font-weight:700;line-height:1.1}.diagnostics-label{font-size:.875rem;color:#6c757d;margin-top:.15rem}.diagnostics-card.has-alert{border-left:4px solid #dc3545;background:#fff8f8}.diagnostics-card.has-alert .diagnostics-count{color:#dc3545}.diagnostics-card.ok{border-left:4px solid #198754}.diagnostics-card.ok .diagnostics-count{color:#198754}.diagnostics-all-ok{padding:.75rem 1rem;background:#e9f7ef;border:1px solid #b6e4cd;border-radius:.5rem;color:#198754;font-weight:500;margin-bottom:1.5rem}.calendar-page{width:100%;max-width:100%;margin:0 auto;padding:20px;box-sizing:border-box;overflow-x:hidden}.calendar-page-header{text-align:center;margin-bottom:2rem;padding:0;word-break:normal;overflow-wrap:break-word}.calendar-page-title{font-size:2.8rem;color:#2c3e50;margin-bottom:15px;font-weight:800;letter-spacing:-1px;line-height:1.2;white-space:normal}.calendar-page-subtitle{font-size:1.3rem;color:#7f8c8d;font-weight:500}.calendar-tabs-container{display:flex;gap:.5rem;overflow-x:auto;padding:.25rem .125rem .75rem;margin-bottom:1.75rem;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.calendar-tab-btn{flex:0 0 auto;padding:.55rem 1.1rem;border:1px solid var(--border-color);border-radius:999px;background:#fff;color:#495057;font-size:.9rem;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease}.calendar-tab-btn:hover{background:#f1f3f5}.calendar-tab-btn.active{background:var(--brand-color);border-color:var(--brand-color);color:#fff;box-shadow:0 3px 10px rgba(63,37,42,.28)}.calendar-tab-btn:focus-visible{outline:3px solid #80bdff;outline-offset:2px}.calendar-month-section{animation:calendario-fade-in .3s ease}@keyframes calendario-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.calendar-month-title{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.75rem;background:linear-gradient(135deg,#3f252a,#2c1a1d);color:#fff;padding:8px 24px;border-radius:30px;margin:0 0 1.5rem;font-size:1.5rem;font-weight:600;box-shadow:0 4px 15px rgba(63,37,42,.2)}.calendar-month-count{background:rgba(255,255,255,.16);border-radius:999px;padding:.15rem .6rem;font-size:.85rem;font-weight:600;white-space:nowrap}.calendar-events-list{display:flex;flex-direction:column;gap:20px}.calendar-card{display:flex;align-items:center;gap:24px;background:#fff;border-radius:16px;box-shadow:0 4px 20px rgba(0,0,0,.06);padding:24px;transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1)}.calendar-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(0,0,0,.1)}.calendar-card-icon{flex:0 0 auto;font-size:3rem;min-width:80px;height:80px;display:flex;align-items:center;justify-content:center;border-radius:20px}.calendar-card-body{flex:1 1;min-width:0}.calendar-card-type{font-weight:700;text-transform:uppercase;font-size:.85rem;letter-spacing:1.5px;margin-bottom:8px}.calendar-card-title{font-size:1.4rem;color:#2d3436;margin-bottom:8px;font-weight:700;line-height:1.3}.calendar-card-date{color:#636e72;font-size:1rem;display:flex;align-items:center;gap:6px}.calendar-card-date-icon{opacity:.7}.calendar-card-date-text{text-transform:capitalize}.calendar-card-nota{display:inline-flex;align-items:center;gap:6px;background:#f8f9fa;padding:6px 12px;border-radius:8px;font-size:.9rem;color:#495057;border:1px solid #e9ecef;font-weight:500;margin-top:.75rem}.calendar-empty{text-align:center;padding:60px;color:#636e72;background:#fff;border-radius:16px;box-shadow:0 4px 20px rgba(0,0,0,.06)}.calendar-empty-icon{font-size:4rem;margin-bottom:20px;opacity:.5}.calendar-empty-text{font-size:1.3rem;font-weight:500}@media (max-width:768px){.calendar-page{padding:12px}.calendar-page-title{font-size:1.8rem;letter-spacing:-.5px}.calendar-page-subtitle{font-size:1.05rem}.calendar-tabs-container{padding:.5rem;margin-left:-12px;margin-right:-12px}.calendar-tab-btn{padding:.5rem .9rem;font-size:.85rem}.calendar-month-title{font-size:1.15rem;padding:8px 16px;width:100%;box-sizing:border-box}.calendar-month-count{font-size:.8rem}.calendar-card{padding:14px;gap:14px;border-radius:14px}.calendar-card-icon{min-width:50px;height:50px;font-size:1.6rem;border-radius:14px}.calendar-card-type{font-size:.75rem;letter-spacing:1px;margin-bottom:6px}.calendar-card-title{font-size:1.1rem}.calendar-card-date{font-size:.875rem}.calendar-card-nota{font-size:.8rem;padding:5px 10px}.calendar-empty{padding:40px 20px}.calendar-empty-text{font-size:1.05rem}}@media (max-width:480px){.calendar-page-title{font-size:1.4rem}.calendar-month-title{font-size:1.05rem;padding:6px 12px;gap:.5rem}.calendar-card{padding:12px;gap:12px}.calendar-card-icon{min-width:44px;height:44px;font-size:1.4rem;border-radius:12px}.calendar-card-title{font-size:1rem}.calendar-card-date{font-size:.8rem;flex-wrap:wrap}}.initial-reports-grid{display:grid;grid-template-columns:minmax(280px,350px) minmax(0,1fr);grid-gap:1.5rem;gap:1.5rem;align-items:start;min-width:0}.initial-reports-card{min-width:0;height:calc(100dvh - 120px);overflow-y:auto}.initial-reports-students-card{display:flex;flex-direction:column}.initial-student-list{flex:1 1;margin-top:.5rem}.initial-student-row{display:block;width:100%;padding:1rem;border-left:4px solid transparent;color:#333;text-align:left;white-space:normal}.initial-student-row.is-selected{background:rgba(13,110,253,.06);border-left-color:#0d6efd;color:#0d6efd}.initial-review-item:focus-visible,.initial-student-row:focus-visible{outline:3px solid #80bdff;outline-offset:2px}.initial-student-status{display:block;margin-top:.25rem;color:#6c757d;font-size:.8rem}.initial-reports-card .attendance-student-name,.initial-reports-card .form-label,.initial-reports-card textarea{min-width:0;overflow-wrap:anywhere}.initial-review-page{min-width:0}.initial-review-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);grid-gap:1.5rem;gap:1.5rem;align-items:start;min-width:0;padding:1rem}.initial-review-detail-card,.initial-review-list-card{min-width:0;max-height:calc(100dvh - 110px);overflow-y:auto}.initial-review-message{color:#6c757d;font-size:.9rem;text-align:center;padding:1rem}.initial-review-items{display:flex;flex-direction:column;gap:.5rem}.initial-review-item{display:block;width:100%;padding:.75rem;color:#212529;background:#fff;border:1px solid var(--border-color);border-radius:.375rem;text-align:left}.initial-review-item:hover{background:#f8f9fa}.initial-review-item.is-selected{border-color:#0d6efd;background:#eef5ff;box-shadow:0 0 0 1px #0d6efd}.initial-review-name{display:block;font-weight:600;overflow-wrap:anywhere}.initial-review-meta{display:block;margin-top:.2rem;color:#6c757d;font-size:.875rem;overflow-wrap:anywhere}.initial-review-item-footer{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-top:.45rem;color:#6c757d;font-size:.75rem}.initial-review-status{display:inline-flex;flex:0 0 auto;padding:.25rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700}.initial-review-status.status-revision{color:#664d03;background:#fff3cd}.initial-review-status.status-publicado{color:#0f5132;background:#d1e7dd}.initial-review-status.status-borrador{color:#41464b;background:#e2e3e5}.initial-review-detail-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.initial-review-detail-header>div{min-width:0}.initial-review-detail-header h2{font-size:1.25rem;overflow-wrap:anywhere}.initial-review-detail-header p{margin-top:.25rem;color:#6c757d;overflow-wrap:anywhere}.initial-review-professor{font-size:.875rem}.initial-review-sections{display:flex;flex-direction:column;gap:1.5rem;margin-top:1.25rem}.initial-review-section-title{padding:.6rem .75rem;color:#495057;background:#f8f9fa;border-left:4px solid #0d6efd;border-radius:.25rem;font-size:.9rem;overflow-wrap:anywhere}.initial-review-section-title.learning{border-left-color:#6f42c1}.initial-review-copy{min-height:100px;margin-top:.5rem;padding:.75rem;border:1px solid var(--border-color);border-radius:.375rem;white-space:pre-wrap;overflow-wrap:anywhere}.initial-review-copy.compact{min-height:60px}.initial-review-missing{color:#adb5bd;font-style:italic}.initial-review-actions{display:flex;flex-wrap:wrap;gap:.75rem;padding-top:1.25rem;border-top:1px solid var(--border-color)}.initial-review-empty{min-height:18rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:#6c757d;text-align:center}.initial-review-empty>span{font-size:3rem}@media (max-width:1000px){.initial-reports-grid,.initial-review-grid{grid-template-columns:minmax(0,1fr)}.initial-reports-card{height:auto;overflow:visible}.initial-reports-students-card{max-height:55dvh;overflow-y:auto}.initial-review-list-card{max-height:55dvh}.initial-review-detail-card{max-height:none;overflow:visible}}@media (max-width:768px){.header{min-height:3.25rem}.header-title{flex:1 1 auto;margin-left:3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-user{flex:0 0 auto}.header-user-name{display:none}.sidebar{max-width:calc(100vw - 2rem);overflow-y:auto}.quick-links-2col{grid-template-columns:minmax(0,1fr)!important}.parents-panel-header{align-items:stretch;flex-direction:column}.parents-panel-actions{min-width:0;width:100%}.parents-search{width:100%;max-width:none;flex-basis:100%}.parents-create-button{width:100%}.parents-form-grid{grid-template-columns:minmax(0,1fr)}.initial-reports-page,.initial-review-grid{padding:.75rem}.initial-reports-page .form-actions,.initial-review-actions{align-items:stretch;flex-direction:column}.initial-reports-page .form-actions .btn,.initial-review-actions .btn{width:100%}.admin-entity-detail{position:static!important;top:auto!important}}@media (max-width:480px){.modal-backdrop,.modal-overlay{align-items:stretch;padding:.5rem}.modal,.modal-content{max-height:calc(100dvh - 1rem)}.confirm-dialog-actions,.modal .form-actions{align-items:stretch;flex-direction:column}.confirm-dialog-actions .btn,.modal .form-actions .btn{width:100%}.initial-review-item-footer{align-items:flex-start;flex-direction:column}.form-row{flex-direction:column;gap:0!important}.attendance-row:not(.initial-student-row){align-items:stretch;flex-direction:column;gap:.75rem}.attendance-row:not(.initial-student-row) .attendance-student-ci{display:block;margin-left:0}.attendance-row:not(.initial-student-row) .btn{width:100%}}.grades-desktop-view{display:none}.grades-mobile-view{display:flex;flex-direction:column;gap:.75rem}@media (min-width:768px){.grades-desktop-view{display:block}.grades-mobile-view{display:none}}.sgc-card{background:var(--card-bg,#fff);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.04);overflow:hidden;border:1px solid var(--border-color,#dee2e6)}.sgc-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.85rem 1rem;border:none;background:transparent;cursor:pointer;gap:.75rem;text-align:left;font-family:inherit;font-size:inherit;color:inherit}.sgc-header:active{background:var(--brand-color-soft,#f4edef)}.sgc-header-info{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1 1}.sgc-name{font-weight:600;font-size:.95rem;color:var(--text-primary,#212529);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sgc-ci{font-size:.78rem;color:var(--text-secondary,#6c757d)}.sgc-header-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.sgc-pill{font-weight:700;font-size:.82rem;padding:.2rem .6rem;border-radius:20px;border:1.5px solid;white-space:nowrap}.sgc-chevron{font-size:.65rem;color:var(--text-secondary,#6c757d);transition:transform .2s ease}.sgc-chevron-up{transform:rotate(180deg)}.sgc-body{padding:0 1rem 1rem;border-top:1px solid var(--border-color,#dee2e6)}.sgc-activity{padding:.75rem 0;border-bottom:1px solid rgba(0,0,0,.06)}.sgc-activity:last-child{border-bottom:none}.sgc-activity-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.sgc-activity-name{display:flex;align-items:baseline;gap:.35rem;font-weight:500;font-size:.9rem;color:var(--text-primary,#212529)}.sgc-activity-max{font-weight:400;font-size:.78rem}.sgc-activity-max,.sgc-indicadores{color:var(--text-secondary,#6c757d)}.sgc-indicadores{display:block;font-size:.75rem;margin-bottom:.35rem;line-height:1.3}.sgc-delete-btn{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:.2rem;color:#dc3545;opacity:.7}.sgc-delete-btn:active,.sgc-delete-btn:hover{opacity:1}.sgc-activity-actions{display:flex;align-items:center;gap:.15rem;flex-shrink:0}.sgc-edit-btn{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:.2rem;color:var(--primary-color,#0d6efd);opacity:.7}.sgc-edit-btn:active,.sgc-edit-btn:hover{opacity:1}.sgc-activity-controls{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.sgc-input-wrapper{display:flex;align-items:center;gap:.4rem}.sgc-input-label{font-size:.8rem;color:var(--text-secondary,#6c757d);white-space:nowrap}.sgc-grade-input{width:56px!important;text-align:center!important;padding:.3rem .25rem!important;font-size:.95rem!important;font-weight:600;border-radius:6px}.sgc-input-max{font-size:.78rem}.sgc-input-max,.sgc-obs-btn{color:var(--text-secondary,#6c757d)}.sgc-obs-btn{background:none;border:none;cursor:pointer;font-size:.82rem;opacity:.6;white-space:nowrap;padding:.25rem .4rem;border-radius:4px}.sgc-obs-btn:active,.sgc-obs-btn:hover{opacity:1;background:rgba(0,0,0,.04)}.sgc-obs-btn-active{color:var(--primary-color,#0d6efd);opacity:1;font-weight:500}.sgc-summary{display:flex;justify-content:space-between;align-items:center;padding-top:.75rem;margin-top:.25rem;border-top:1px solid var(--border-color,#dee2e6);font-size:.85rem;color:var(--text-secondary,#6c757d)}.sgc-summary strong{color:var(--text-primary,#212529)}