html { font-size: 14px; }

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

:root{--school-blue:#07539a;--school-blue-dark:#063f79;--school-bright:#096bd2;--school-green:#159447;--ink:#14233b;--muted:#607087;--line:#dce4ee;--surface:#fff;--page:#f5f8fb}
body{margin:0;min-height:100vh;background:var(--page);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.app-navbar{background:linear-gradient(90deg,var(--school-blue-dark),var(--school-blue));box-shadow:0 2px 8px rgba(12,45,80,.18);min-height:70px;margin-bottom:28px}
.school-brand{display:flex;align-items:center;gap:11px;line-height:1.05}.school-brand strong{display:block;font-size:1rem}.school-brand small{display:block;font-size:.68rem;margin-top:5px;opacity:.9}.brand-shield{display:block;width:44px;height:50px;object-fit:contain;filter:drop-shadow(0 1px 2px rgba(0,0,0,.18))}
.navbar-nav{align-items:center}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.92);padding:.85rem .75rem;border-bottom:2px solid transparent;font-size:.88rem}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#fff;border-color:#fff}.role-chip{color:#dcfce7;border:1px solid #22a85a;border-radius:4px;padding:.32rem .55rem;font-size:.75rem}.user-email{font-size:.78rem}.app-content{min-height:calc(100vh - 150px)}
h1,h2,h3{color:var(--ink);font-weight:650}.h3{font-size:1.55rem;margin-bottom:1rem}.text-primary{color:var(--school-blue)!important}
.card{border:1px solid var(--line);border-radius:7px;background:var(--surface);box-shadow:0 1px 2px rgba(15,42,70,.03)}.card-body{padding:1.25rem}
.btn{border-radius:5px;font-weight:600;padding:.52rem .9rem}.btn-sm{padding:.32rem .6rem}.btn-primary,.bg-primary{background:var(--school-blue)!important;border-color:var(--school-blue)!important}.btn-primary:hover{background:var(--school-blue-dark)!important}.btn-success{background:var(--school-green);border-color:var(--school-green)}
.form-control,.form-select{border-color:#cfd9e5;border-radius:5px;min-height:40px;color:var(--ink)}.form-control:focus,.form-select:focus{border-color:#3d8ee0;box-shadow:0 0 0 .2rem rgba(9,107,210,.12)}.form-label{font-weight:600;font-size:.83rem;margin-bottom:.42rem}
.table-responsive{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 2px 8px rgba(20,35,59,.035)}.table{margin-bottom:0;color:var(--ink);--bs-table-bg:transparent}.table thead{background:#edf3f8}.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.025em;color:#42536a;padding:.85rem .8rem;border-bottom:1px solid #ced9e5;white-space:nowrap}.table td{padding:.8rem;border-color:#e3e9f0;vertical-align:middle;font-size:.86rem}.table tbody tr:nth-child(even){background:#f7f9fc}.table-hover tbody tr:hover{background:#eaf4ff}.table td:last-child,.table th:last-child{text-align:right}.table .form-control,.table .form-select{min-height:36px;padding:.35rem .55rem}
.badge{font-weight:600;padding:.38em .65em;border-radius:4px}.bg-secondary{background:#e7f5eb!important;color:#15743a}.alert{border-radius:6px;border-width:1px}.alert-info{background:#edf7ff;border-color:#c7e3fb;color:#07539a}
.nav-tabs{border-bottom-color:var(--line)}.nav-tabs .nav-link{color:var(--ink);border:0;border-bottom:2px solid transparent}.nav-tabs .nav-link.active{color:var(--school-blue);border-bottom-color:var(--school-blue);font-weight:600;background:transparent}.tab-content{background:#fff;border-color:var(--line)!important;border-radius:0 0 7px 7px}
.dropdown-menu{border:1px solid var(--line);box-shadow:0 8px 24px rgba(20,35,59,.12);border-radius:6px}.dropdown-item{font-size:.87rem;padding:.55rem 1rem}.app-footer{border-top:1px solid var(--line);padding:20px 0;margin-top:35px;background:#fff;font-size:.8rem;text-align:center}
.stat-card{display:flex;align-items:center;gap:14px;min-height:112px}.stat-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#eaf4ff;color:var(--school-blue);font-size:1.45rem}.stat-value{font-size:1.7rem;font-weight:700;line-height:1}.table td.empty-state{padding:2.25rem;text-align:center!important;color:var(--muted);font-style:italic;background:#fff}
.login-page{background:linear-gradient(135deg,#f8fbff,#eaf5ff);margin:0}.login-header{height:70px;background:linear-gradient(90deg,var(--school-blue-dark),var(--school-blue));display:flex;align-items:center;box-shadow:0 2px 8px rgba(12,45,80,.18)}.login-label{color:#fff;font-size:.82rem}.login-stage{min-height:calc(100vh - 70px);padding:35px 0}.login-card{box-shadow:0 10px 30px rgba(22,61,99,.1)}.login-emblem{display:block;object-fit:contain;margin:0 auto 12px;width:86px;height:86px;filter:drop-shadow(0 3px 5px rgba(20,35,59,.15))}.login-card-footer{text-align:center;border-top:1px solid var(--line);padding:18px;color:var(--muted);font-size:.75rem}
.home-hero{display:flex;align-items:center;gap:24px}.home-school-crest{width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 4px 8px rgba(20,35,59,.14))}
.page-heading{margin-bottom:22px}.student-card{display:flex;align-items:center;gap:12px;padding:13px;border:1px solid var(--line);border-radius:6px;color:var(--ink);text-decoration:none;transition:.15s}.student-card:hover,.student-card.active{border-color:var(--school-bright);background:#f4f9ff;color:var(--school-blue)}.student-card small{display:block;color:var(--muted)}.student-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--school-blue);color:white;font-size:.72rem;font-weight:700}.announcement{display:flex;gap:15px;padding:17px;border-bottom:1px solid var(--line)}.announcement:last-child{border:0}.announcement-icon{display:grid;place-items:center;flex:0 0 46px;height:46px;border-radius:50%;background:#eaf4ff;color:var(--school-blue)}
.btn::before{display:inline-block;margin-right:.38rem;font-weight:700}.btn-sm::before{margin-right:.28rem}.app-content a.btn-primary[href*="Create"]::before,.app-content a.btn-primary[href*="Create/"]::before{content:"＋"}.app-content a.btn-outline-primary[href*="Edit"]::before,.app-content a.btn-outline-primary[href*="Editar"]::before{content:"✎"}.app-content a.btn-success::before{content:"▣"}.app-content form .btn-primary[type="submit"]::before{content:"✓"}.app-content .btn-outline-secondary::before{content:"←"}.app-content form[method="get"] button::before{content:"⌕"}.app-content form.d-inline button::before{content:"◉"}.icon-only{width:34px;height:34px;padding:0!important;display:inline-grid;place-items:center}.icon-only::before{margin:0!important}.action-group{display:flex;justify-content:flex-end;gap:.35rem;white-space:nowrap}
.card-header{border-bottom:1px solid var(--line);padding:.85rem 1.15rem}.list-group-item{border-color:var(--line);padding:.9rem 1rem}.list-group-item:nth-child(even){background:#f8fafc}.text-danger.field-validation-error{display:block;font-size:.75rem;margin-top:.25rem}
.table-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin:12px 0 24px;color:var(--muted);font-size:.8rem}.page-size-control{display:flex;align-items:center;gap:.45rem}.page-size-control .form-select{width:70px;min-height:32px;padding-top:.2rem;padding-bottom:.2rem}.page-summary{text-align:center}.page-buttons{display:flex;justify-content:flex-end;gap:.3rem}.page-button{display:grid;place-items:center;min-width:32px;height:32px;padding:0 .45rem;border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--school-blue);font-weight:600;transition:.15s}.page-button:hover:not(:disabled){border-color:var(--school-bright);background:#edf6ff}.page-button.active{background:var(--school-blue);border-color:var(--school-blue);color:#fff}.page-button:disabled{color:#a8b2be;background:#f4f6f8;cursor:not-allowed}
@media(max-width:991px){.navbar-nav{align-items:stretch;padding-top:12px}.role-chip,.user-email{display:none}.app-navbar{min-height:62px}.navbar-dark .navbar-nav .nav-link{border-bottom:0;padding:.6rem 0}.dropdown-menu{box-shadow:none}.app-content{padding-left:14px;padding-right:14px}}
@media(max-width:575px){.h3{font-size:1.3rem}.card-body{padding:1rem}.d-flex.justify-content-between{gap:10px;align-items:flex-start!important}.table td,.table thead th{padding:.65rem .55rem}.btn{font-size:.85rem}.app-content>.d-flex>.btn-primary{white-space:nowrap}.table-responsive{border-radius:6px}.table-pagination{grid-template-columns:1fr auto;gap:.7rem}.page-summary{grid-column:1/-1;grid-row:1;text-align:left}.page-size-control{grid-column:1}.page-buttons{grid-column:2}}

/* Adaptación integral para tabletas y teléfonos */
img,svg{max-width:100%;height:auto}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.nav-tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.nav-tabs .nav-link{white-space:nowrap}.form-check{padding-top:.25rem}.card textarea{max-width:100%}
@media(max-width:767.98px){.app-navbar{margin-bottom:18px}.app-content{padding-left:12px!important;padding-right:12px!important}.school-brand small{max-width:190px}.table{min-width:620px}.table-responsive .table{width:max-content;min-width:100%}.table td{max-width:260px;white-space:normal}.table td:last-child{white-space:nowrap}.row.g-2>div,.row.mb-3>div{margin-bottom:.35rem}.row.g-2 .btn,.row.mb-3 .btn{width:100%}.card form>.mt-3,.card form>.mt-4,form.card>.mt-3,form.card>.mt-4{display:flex;flex-wrap:wrap;gap:.5rem}.card form>.mt-3 .btn,.card form>.mt-4 .btn,form.card>.mt-3 .btn,form.card>.mt-4 .btn{flex:1 1 auto}.display-6{font-size:1.65rem}.stat-card{min-height:90px}.announcement{padding:14px 4px}.announcement-icon{flex-basis:40px;height:40px}.app-footer{margin-top:24px;padding:16px 12px}.login-stage{padding:18px 0;min-height:calc(100vh - 70px)}.login-card .p-5{padding:1.5rem!important}}
@media(max-width:390px){.school-brand small{display:none}.brand-shield{width:36px;height:40px}.home-hero{gap:14px}.home-school-crest{width:76px;height:76px}.app-content>.d-flex.justify-content-between{flex-direction:column}.app-content>.d-flex.justify-content-between>.btn{width:100%}.page-size-control span{display:none}.page-buttons{gap:.18rem}.page-button{min-width:29px;height:30px}.student-card{padding:10px}}

/* Footer al final de la ventana sin superponerse al contenido. */
body{display:flex;flex-direction:column}
.app-content{flex:1 0 auto;min-height:0;width:100%}
.app-footer{flex-shrink:0}
.login-page{display:block}
