h1{margin:.15rem 0;font-size:2rem;line-height:1.2}h2{margin:0 0 1rem;font-size:1.15rem}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.page-heading p{margin:.25rem 0;color:#64748b}.eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#4f46e5!important}.action-row{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.btn-secondary,.btn-danger{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-weight:600;text-decoration:none;cursor:pointer}.btn-secondary{border:1px solid #cbd5e1;background:#fff;color:#334155}.btn-secondary:hover{background:#f8fafc}.btn-danger{border:0;background:#b91c1c;color:#fff}.btn-link-danger{border:0;background:none;color:#b91c1c;cursor:pointer}.card{margin-top:1rem;border:1px solid #e2e8f0;border-radius:.75rem;background:#fff;padding:1.5rem;box-shadow:0 1px 2px #0000000d}.alert{margin:1rem 0;border:1px solid #a7f3d0;border-radius:.5rem;background:#ecfdf5;padding:1rem;color:#065f46}.alert-error{border-color:#fecaca;background:#fef2f2;color:#991b1b}.alert ul{margin:.5rem 0 0;padding-left:1.25rem}.form-stack{display:grid;gap:1.25rem}.form-section{margin:0;border:0;border-top:1px solid #e2e8f0;padding:1.25rem 0 0}.form-section:first-of-type{border-top:0;padding-top:0}.form-section legend{padding-right:.75rem;font-weight:700;font-size:1.05rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-stack label span,.filter-grid label span,.search-row label span{display:block;font-size:.875rem;font-weight:600}.form-stack small,.member-row small,.table-title+small{display:block;color:#64748b}.check-row{display:flex!important;align-items:center;gap:.5rem;margin-top:1rem}.filter-grid{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:.75rem;align-items:end}.filter-actions{display:flex;gap:.5rem;grid-column:1/-1}.table-wrap{margin-top:1rem;overflow-x:auto;border:1px solid #e2e8f0;border-radius:.75rem;background:#fff}table{width:100%;border-collapse:collapse;text-align:left}th,td{padding:.8rem 1rem;border-bottom:1px solid #e2e8f0;vertical-align:top}th{background:#f8fafc;color:#475569;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}tbody tr:last-child td{border-bottom:0}.table-title{font-weight:700;color:#0f172a;text-decoration:none}.table-title:hover{color:#4f46e5}.empty-state{padding:2rem;text-align:center;color:#64748b}.badge{display:inline-flex;border-radius:999px;padding:.2rem .55rem;font-size:.75rem;font-weight:700}.badge-active{background:#dcfce7;color:#166534}.badge-suspended{background:#fef3c7;color:#92400e}.badge-graduated{background:#e2e8f0;color:#475569}.pagination{display:flex;gap:.35rem;margin-top:1rem}.pagination a{min-width:2.25rem;border:1px solid #cbd5e1;border-radius:.4rem;padding:.35rem;text-align:center;text-decoration:none;color:#334155}.pagination a.current{border-color:#4f46e5;background:#4f46e5;color:#fff}.profile-heading{display:flex;align-items:center;gap:1rem}.student-photo{width:5rem;height:5rem;border-radius:1rem;object-fit:cover}.student-initials{display:flex;align-items:center;justify-content:center;background:#e0e7ff;color:#3730a3;font-weight:800;font-size:1.4rem}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.detail-list{margin:0}.detail-list div{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid #f1f5f9}.detail-list div:last-child{border-bottom:0}.detail-list dt{color:#64748b}.detail-list dd{margin:0;text-align:right;font-weight:600}.note-box{border-radius:.5rem;background:#f8fafc;padding:1rem;color:#475569}.history-section{margin-top:1rem}.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.5rem;border:1px solid #fecaca;border-radius:.75rem;background:#fff;padding:1.25rem}.danger-zone p{margin:.15rem 0;color:#64748b}.narrow-page{max-width:54rem;margin:0 auto}.narrow-page code{background:#f1f5f9;padding:.1rem .3rem;border-radius:.25rem}.search-row{display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:.75rem}.member-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid #e2e8f0}.member-row:last-child{border-bottom:0}
.full-row{grid-column:1/-1}
@media(max-width:900px){.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-search{grid-column:1/-1}}
@media(max-width:640px){.page-heading,.danger-zone{flex-direction:column}.form-grid,.detail-grid,.filter-grid,.search-row{grid-template-columns:1fr}.filter-search,.filter-actions{grid-column:auto}main{padding-top:2rem!important}.student-photo{width:4rem;height:4rem}nav{align-items:flex-start!important;gap:1rem}nav>div{flex-wrap:wrap;justify-content:flex-end}}

/* Utilidades y componentes compartidos */
.stack{display:grid;gap:1rem}
.stack-form{display:grid;gap:.7rem;margin-top:.75rem}
.stack-form label{display:block;font-size:.9rem;font-weight:500;color:#334155}
.stack-form input:not([type=checkbox]),.stack-form select{display:block;width:100%;margin-top:.3rem;border:1px solid #cbd5e1;border-radius:.5rem;padding:.5rem .75rem;background:#fff;font:inherit}
.stack-form input:focus,.stack-form select:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #e0e7ff}
.form-error{color:#b91c1c;font-size:.85rem;margin:.25rem 0}
.pin-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}

/* Mensajería del panel (portal-messages) */
.msg-layout{display:grid;grid-template-columns:minmax(15rem,20rem) minmax(0,1fr);gap:1.25rem;align-items:start;margin-top:1.25rem}
.msg-threads{display:grid;gap:.5rem;align-content:start}
.msg-thread{display:block;border:1px solid #e2e8f0;border-radius:.65rem;background:#fff;padding:.8rem .9rem;color:inherit;text-decoration:none;transition:border-color .15s,background-color .15s}
.msg-thread:hover{border-color:#c7ccff;background:#f8fafc;text-decoration:none}
.msg-thread.is-active{border-color:#4f46e5;background:#eef1ff}
.msg-thread strong{display:block;font-size:.92rem;color:#0f172a}
.msg-thread small{display:block;margin-top:.25rem;color:#64748b;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-thread .badge{margin-top:.4rem}
.msg-panel{display:flex;flex-direction:column;min-height:22rem;border:1px solid #e2e8f0;border-radius:.9rem;background:#fff;padding:1.25rem}
.msg-list{display:flex;flex-direction:column;gap:.7rem;flex:1}
.msg-bubble{border:1px solid #eef1f6;border-radius:.7rem;background:#f8fafc;padding:.7rem .85rem}
.msg-bubble strong{font-size:.9rem;color:#0f172a}
.msg-bubble p{margin:.3rem 0;color:#334155}
.msg-bubble small{color:#94a3b8;font-size:.78rem}
.msg-reply{margin-top:1rem;display:grid;gap:.6rem}
.msg-reply label span{display:block;font-weight:600;font-size:.9rem;margin-bottom:.3rem}
@media(max-width:800px){.msg-layout{grid-template-columns:1fr}}

/* Tarjetas de acceso rápido (dashboard) */
.quick-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin-top:1.5rem}
.quick-card{display:flex;flex-direction:column;border:1px solid #e6e8f0;border-radius:.9rem;background:#fff;padding:1.25rem;box-shadow:0 1px 2px rgba(15,23,42,.06);color:inherit;text-decoration:none;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.quick-card:hover{transform:translateY(-2px);border-color:#c7ccff;box-shadow:0 14px 28px -18px rgba(15,23,42,.35);text-decoration:none}
.quick-card h2{font-size:1.05rem;margin:0}
.quick-card p{margin:.4rem 0 0;color:#64748b;font-size:.9rem;flex:1}
.quick-card__go{margin-top:.7rem;color:#4f46e5;font-weight:600;font-size:.9rem}
.danger-details summary{font-weight:700;color:#b91c1c;cursor:pointer}
.danger-details[open]{border-color:#fecaca}
.danger-details[open] summary{margin-bottom:.5rem}
.danger-details p{color:#64748b}
