:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#23384d;background:#f1f5f9;font-size:15px}*{box-sizing:border-box}body{margin:0}a{color:#17679c;text-decoration:none}a:hover{text-decoration:underline}.layout{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(175deg,#15304c,#0b2440);color:#e9f3fa;padding:26px 18px;display:flex;flex-direction:column;min-height:100vh;gap:30px}.brand{display:flex;align-items:center;gap:10px;color:#fff;font-size:21px;font-weight:800;line-height:1.15}.brand img{width:45px;max-height:45px;object-fit:contain}.sidebar nav{display:grid;gap:5px}.sidebar nav a{color:#c6d7e6;padding:11px 13px;border-radius:8px}.sidebar nav a:hover{background:#244862;color:#fff;text-decoration:none}.nav-bottom{margin-top:auto;font-size:12px;color:#cfdeea;line-height:2}.nav-bottom a{color:white}.nav-bottom form{display:inline}.nav-bottom .link{padding:0;background:none;color:#fff;text-decoration:underline;box-shadow:none;width:auto}.content{padding:28px 42px;min-width:0;max-width:1580px;width:100%;margin:auto}.top{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin-bottom:25px;border-bottom:1px solid #dbe4ed;padding-bottom:19px}.top h1{font-size:28px;margin:0;color:#152f48}.top small{color:#58718a}.panel{background:white;border:1px solid #dbe6f0;border-radius:15px;box-shadow:0 4px 14px #213a5410;padding:26px;margin:17px 0}.panel h2{margin:0 0 18px;color:#1a3852;font-size:19px}.panel h3{color:#254461;font-size:15px;margin-top:21px}.toolbar{display:flex;gap:13px;align-items:center;margin:16px 0;flex-wrap:wrap}.toolbar a{background:#e9f2f8;border:1px solid #cfe2ef;border-radius:9px;padding:10px 13px;font-weight:650}label{display:block;margin:16px 0;color:#27415a;font-weight:650;font-size:13px}input,textarea,select{display:block;width:100%;min-width:0;padding:12px 13px;margin-top:7px;border:1px solid #cbd8e4;border-radius:8px;background:white;font:inherit;color:#1e324a;outline-offset:1px}select[multiple]{min-height:145px}textarea{resize:vertical;line-height:1.5}label small{display:block;color:#7a8998;margin-top:6px;font-weight:400}.check{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:500}.check input{margin:0;width:auto}button{background:#136d8c;color:white;padding:12px 19px;border:0;border-radius:9px;cursor:pointer;font:inherit;font-weight:700;box-shadow:0 2px 5px #0d344b15}button:hover{background:#0a5773}table{width:100%;border-collapse:collapse;font-size:14px;table-layout:auto}td,th{text-align:left;border-bottom:1px solid #e4edf3;padding:12px 10px;vertical-align:top}th{color:#557087;background:#f6f9fc}tr:hover td{background:#fafcff}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0}.stats>div{padding:23px;background:#fff;border:1px solid #dfebf4;border-radius:12px;color:#617991}.stats strong{display:block;font-size:32px;color:#1c5275;margin-bottom:5px}.alert{background:#fff3ee;color:#a13221;padding:13px 16px;border-radius:9px;margin:15px 0}.alert.info{color:#31536c;background:#e8f4fb}.success{color:#10634c;background:#e4f7ee;padding:12px;border-radius:8px}.subpanel{border:1px solid #e4ebf0;border-radius:8px;padding:14px;margin:12px 0}.mail-body{white-space:normal;line-height:1.65;border-left:3px solid #89a8be;padding:15px;background:#fafcfd}.auth-page{max-width:1280px;margin:5vh auto;padding:15px}.login-grid{display:grid;grid-template-columns:1.3fr 1fr;background:white;border-radius:19px;overflow:hidden;box-shadow:0 15px 55px #0c30452b;min-height:520px}.login-grid>.panel{box-shadow:none;border:none;align-self:center;margin:0;padding:55px}.login-grid>.panel h2{font-size:29px}.installer{max-width:620px;margin:6vh auto;padding:18px}.installer .panel{padding:30px}.installer h1{font-size:28px}.installer p{line-height:1.5}.slider{height:350px;min-height:350px;position:relative;overflow:hidden;border-radius:14px;background:radial-gradient(circle at 90% 30%,#2b8797,transparent 50%),linear-gradient(125deg,#15324c,#285778);color:white}.login-grid>.slider{height:auto;min-height:520px;border-radius:0}.slide{display:none;position:absolute;inset:0;overflow:hidden}.slide.active{display:block;animation:fadein .55s ease}.slide-bg{position:absolute;inset:0}.slide-bg:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#091d38c9,#0c3a5785)}.slide-bg img{width:100%;height:100%;object-fit:cover}.slide-text{position:absolute;left:6%;bottom:15%;right:10%;text-shadow:0 2px 8px #0c1c3088}.slide-text span{font-size:11px;letter-spacing:.17em;font-weight:700}.slide-text h2{font-size:clamp(22px,3vw,38px);max-width:480px;line-height:1.16;margin:12px 0}.slide-text p{max-width:500px;font-size:15px;line-height:1.6}.slide-controls{position:absolute;right:26px;bottom:20px;display:flex;gap:8px}.slide-controls button{border-radius:50%;width:38px;height:38px;padding:0;background:#ffffff36;border:1px solid #ffffff60;font-size:24px}.slide-controls button:hover{background:#ffffff70}.slide-admin{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.slide-admin .panel{margin:0}.slide-thumbnail{width:100%;height:160px;object-fit:cover;border-radius:9px}@keyframes fadein{from{opacity:0}to{opacity:1}}@media(max-width:950px){.layout{grid-template-columns:1fr}.sidebar{min-height:auto}.sidebar nav{display:flex;flex-wrap:wrap}.content{padding:18px}.login-grid{grid-template-columns:1fr}.login-grid>.slider{height:260px;min-height:260px}.login-grid>.panel{padding:24px}.stats{grid-template-columns:1fr}.slide-admin{grid-template-columns:1fr}.top{display:block}table{display:block;overflow:auto}}

/* v1.7: enlaces de acceso evidentes y resumen de expedientes adaptable */
.stats .stat-link{display:block;padding:23px;background:#fff;border:1px solid #cfe0ee;border-radius:12px;color:#546f86;box-shadow:0 3px 9px #1835540a}
.stats .stat-link:hover,.stats .stat-link:focus-visible{background:#e8f5fc;border-color:#136d8c;text-decoration:none;outline:2px solid #136d8c;outline-offset:1px}
.stats .stat-link span{display:block;margin-top:10px;color:#14628a;font-size:13px;font-weight:700}
.stats>div{overflow-wrap:anywhere}.stats strong{font-size:clamp(18px,2.5vw,30px);overflow-wrap:anywhere}
.table-scroll{overflow-x:auto;width:100%}.table-scroll table{min-width:750px}
.table-scroll td a{font-weight:650;text-decoration:underline;text-decoration-color:#b7cdda;text-underline-offset:3px}
.table-scroll td a:hover,.table-scroll td a:focus-visible{color:#094c70;text-decoration-color:currentColor}
.muted{color:#61788f;font-size:13px;line-height:1.5}.table-scroll td .muted{display:block;margin-top:3px}
.participant-list{border:1px solid #d4e4ee;border-radius:12px;padding:8px;max-height:420px;overflow-y:auto;background:#f8fbfe}
.participant-row{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(170px,1fr);align-items:center;gap:12px;border-bottom:1px solid #e1eaf2;padding:8px}
.participant-row:last-child{border-bottom:0}.participant-row .participant-name{display:flex;align-items:center;gap:9px;margin:5px 0}.participant-row input[type=checkbox]{width:19px;height:19px;margin:0;flex:0 0 19px}.participant-row>label{margin:5px 0}.participant-row>label select{margin-top:4px;padding:8px}
@media(max-width:680px){.participant-row{grid-template-columns:1fr}.content{padding:12px}.panel{padding:16px}.toolbar a{display:inline-block}.table-scroll table{min-width:650px}}

.participant-row{grid-template-columns:minmax(0,1.3fr) minmax(150px,.8fr) minmax(220px,1.4fr)}.participant-row .participant-summary textarea{margin:4px 0 0;min-height:68px;font-size:12px}.participant-row>p{margin:4px 0}@media(max-width:850px){.participant-row{grid-template-columns:1fr}}

.participant-row{grid-template-columns:repeat(2,minmax(0,1fr))}.participant-row .participant-summary textarea,.participant-row .participant-agreement textarea{font-size:12px;min-height:66px;margin:4px 0 0}.participant-row .participant-name{align-self:center}@media(max-width:650px){.participant-row{grid-template-columns:1fr}}

.participant-row[hidden]{display:none!important}.participant-row textarea:disabled,.participant-row select:disabled{background:#eff3f6;opacity:.65}.participant-list{max-height:550px}
/* Resumen de los meses en que efectivamente hubo atención o incidencias. */
.month-highlights{display:flex;flex-wrap:wrap;gap:9px;margin:12px 0 18px}.month-highlights>div{border:1px solid #cde1ec;background:#eff8fd;border-radius:10px;padding:10px 13px;display:grid;gap:4px;min-width:178px}.month-highlights b{color:#204966}.month-highlights span{font-size:12px;color:#48677f}

/* v1.9: filtro combinado de estudiantes por nombre/código, grado y sección. */
.student-filters{display:grid;grid-template-columns:minmax(210px,2fr) repeat(2,minmax(125px,1fr));column-gap:14px;row-gap:4px;align-items:end;margin-bottom:12px}
.student-filters label{margin:5px 0}.student-filters input,.student-filters select{margin-top:6px}
.student-filter-actions{grid-column:1/-1;display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin:6px 0}
@media(max-width:760px){.student-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.student-filters .student-search{grid-column:1/-1}}
@media(max-width:430px){.student-filters{grid-template-columns:1fr}.student-filters .student-search{grid-column:auto}}

/* v1.10: biblioteca y lector de manuales institucionales */
.manual-search{display:flex;align-items:end;gap:14px;flex-wrap:wrap}.manual-search label{flex:1;min-width:220px}.manual-search button{margin-bottom:16px}.manual-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin-top:16px}.manual-card{border:1px solid #d8e7f0;background:#f9fcff;border-radius:12px;padding:20px;display:flex;align-items:start;gap:14px;min-width:0}.manual-card h3{font-size:19px;margin:0 0 9px}.manual-card p{font-size:14px;overflow-wrap:anywhere;line-height:1.5}.manual-icon{display:inline-block;background:#156c89;color:white;border-radius:8px;padding:11px 9px;font-weight:800;font-size:12px;letter-spacing:.05em}.manual-card .toolbar{gap:8px}.manual-reader{width:100%;height:min(78vh,980px);min-height:560px;border:1px solid #d5e3ef;border-radius:10px;background:#eaf0f5}@media(max-width:650px){.manual-reader{min-height:450px;height:68vh}.manual-grid{grid-template-columns:1fr}}

/* v1.11: acceso institucional, slider legible y autoría visible sin tocar expedientes. */
.auth-page{width:min(1170px,100%);max-width:1170px;min-height:100vh;min-height:100svh;margin:0 auto;padding:clamp(18px,3vw,38px);display:flex;flex-direction:column;justify-content:center;gap:18px}
.auth-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 4px}
.auth-identity{display:flex;align-items:center;gap:13px;min-width:0}
.auth-logo,.auth-emblem{flex:0 0 48px;width:48px;height:48px;object-fit:contain;border-radius:13px}
.auth-emblem{display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#146785,#183b60);font-size:30px;font-family:Georgia,serif;box-shadow:0 3px 14px #17466924}
.auth-eyebrow{margin:0 0 4px;color:#45647b;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}
.auth-name{margin:0;font-size:clamp(17px,2vw,24px);line-height:1.2;font-weight:800;color:#19384f}
.auth-pill{flex-shrink:0;border:1px solid #cbdfe9;border-radius:99px;background:#e8f3f8;color:#23546e;font-size:12px;font-weight:750;padding:9px 13px}
.auth-page .login-grid{width:100%;min-height:510px;grid-template-columns:minmax(0,1.1fr) minmax(350px,.9fr);border:1px solid #e0e9ef;box-shadow:0 16px 52px #143c5b17}
.auth-page .login-grid>.slider{height:auto;min-height:510px}
.auth-page .login-grid>.panel{padding:clamp(28px,4vw,54px)}
.auth-page .login-grid>.panel h2{font-size:clamp(25px,2.7vw,34px);letter-spacing:-.025em;margin-bottom:9px}
.auth-lead{margin:0 0 23px;color:#62778b;line-height:1.5;font-size:14px}
.auth-page .login-grid label{font-size:13px;margin:17px 0}
.auth-page .login-grid input{padding:13px 14px;min-height:48px;border-color:#cbdde8}
.auth-page .login-grid input:focus-visible{outline:2px solid #207b9d;outline-offset:2px}
.auth-page .login-grid button[type=submit]{width:100%;min-height:48px;margin-top:9px}
.auth-page .slide-bg:after{background:linear-gradient(0deg,rgba(7,25,46,.74) 0%,rgba(8,33,55,.24) 61%,rgba(10,41,64,.07) 100%),linear-gradient(90deg,rgba(8,34,57,.40),rgba(8,34,57,.05) 82%)}
.auth-page .slide-text{left:7%;right:7%;bottom:15%;text-shadow:0 2px 12px #082037a6}
.auth-page .slide-text span{font-size:11px;letter-spacing:.13em;color:#e7f4fc}
.auth-page .slide-text h2{font-size:clamp(24px,2.8vw,37px);line-height:1.15;max-width:495px;margin:14px 0 12px}
.auth-page .slide-text p{font-size:clamp(14px,1.4vw,16px);line-height:1.55;max-width:465px;margin:0}
.auth-page .slide-controls{right:20px;bottom:18px}
.auth-page .slide-controls button{width:42px;height:42px;background:#ffffff33;backdrop-filter:blur(4px);border:1px solid #ffffff9c}
.auth-page .slide-controls button:focus-visible{outline:2px solid #fff;outline-offset:3px}
.site-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px 18px;margin-top:36px;padding:20px 0 5px;border-top:1px solid #d7e3eb;color:#58718a;font-size:12px;line-height:1.5}
.site-footer a{color:#146785;font-weight:800;text-decoration:none;white-space:nowrap}
.site-footer a:hover,.site-footer a:focus-visible{text-decoration:underline}
.auth-page .site-footer{margin-top:0;padding:13px 4px 0}
@media(max-width:950px){
 .auth-page{padding:18px;gap:15px;justify-content:flex-start}
 .auth-page .login-grid{grid-template-columns:1fr;min-height:0}
 .auth-page .login-grid>.slider{height:clamp(285px,48vw,380px);min-height:285px}
 .auth-page .login-grid>.panel{padding:26px 28px 30px}
 .auth-page .slide-text{left:6%;right:7%;bottom:17%}
 .auth-page .slide-text h2{font-size:clamp(23px,4vw,30px);max-width:550px}
 .auth-page .slide-text p{font-size:14px;max-width:530px;padding-right:34px}
 .auth-page .site-footer{margin-top:auto}
}
@media(max-width:480px){
 .auth-page{padding:13px;gap:13px}
 .auth-logo,.auth-emblem{width:40px;height:40px;flex-basis:40px}
 .auth-pill{font-size:10px;padding:7px 9px}
 .auth-eyebrow{font-size:9px;letter-spacing:.09em}
 .auth-name{font-size:17px}
 .auth-page .login-grid>.slider{height:320px;min-height:320px}
 .auth-page .slide-text{bottom:19%;left:6%;right:5%}
 .auth-page .slide-text h2{font-size:24px;max-width:95%;margin:9px 0}
 .auth-page .slide-text p{font-size:13px;line-height:1.45;max-width:96%;padding-right:0}
 .auth-page .slide-text span{font-size:9px}
 .auth-page .slide-controls{bottom:9px;right:13px;gap:6px}
 .auth-page .slide-controls button{width:34px;height:34px;font-size:20px}
 .auth-page .login-grid>.panel{padding:25px 21px 27px}
 .auth-page .site-footer{justify-content:center;text-align:center;font-size:11px;gap:5px}
}
@media(prefers-reduced-motion:reduce){.slide.active{animation:none}}


/* v1.12: pantalla de acceso: SIN logotipo ni cabecera fuera de la tarjeta.
   El logotipo interior del panel privado sigue intacto. */
.auth-page{justify-content:center;gap:14px}
.auth-page .login-grid{margin:0 auto;max-width:100%;min-width:0}
.auth-page .login-grid>.panel{min-width:0}
.auth-page .site-footer{width:100%;max-width:100%;margin-top:0}
@media(max-width:950px){.auth-page{justify-content:center}}
@media(max-width:480px){.auth-page{justify-content:flex-start}}


/* v1.13: restaurar la presentación amplia de v1.11 sin cabecera ni logotipo externo.
   Afecta únicamente al acceso público; el resto del sistema no cambia. */
@media (min-width:951px){
  .auth-page{
    width:calc(100% - 48px);
    max-width:1480px;
    min-height:100vh;
    min-height:100svh;
    padding:20px 0;
    margin:0 auto;
    gap:18px;
    justify-content:center;
  }
  .auth-page .login-grid{
    width:100%;
    max-width:none;
    min-height:clamp(610px,76vh,790px);
    grid-template-columns:minmax(0,1.18fr) minmax(400px,.82fr);
  }
  .auth-page .login-grid>.slider{
    min-height:clamp(610px,76vh,790px);
    height:auto;
  }
  .auth-page .login-grid>.panel{padding:clamp(42px,4vw,74px);}
  .auth-page .login-grid>.panel h2{font-size:clamp(32px,2.55vw,40px);}
  .auth-page .slide-text h2{font-size:clamp(32px,3.1vw,46px);}
  .auth-page .slide-text p{font-size:clamp(15px,1.25vw,18px);}
  .auth-page .login-grid label{font-size:15px;}
  .auth-page .login-grid input{min-height:54px;font-size:16px;}
  .auth-page .login-grid button[type=submit]{min-height:54px;font-size:16px;}
}
@media (max-width:950px){
  .auth-page{width:100%;max-width:850px;padding:18px;}
  .auth-page .login-grid{width:100%;min-height:0;grid-template-columns:1fr;}
  .auth-page .login-grid>.slider{height:clamp(300px,45vw,410px);min-height:300px;}
  .auth-page .login-grid>.panel{padding:clamp(26px,5vw,45px);}
  .auth-page .login-grid>.panel h2{font-size:clamp(27px,4vw,34px);}
}
@media (max-width:480px){
  .auth-page{padding:12px;gap:12px;justify-content:flex-start;}
  .auth-page .login-grid>.slider{height:305px;min-height:305px;}
  .auth-page .login-grid>.panel{padding:25px 22px 29px;}
  .auth-page .login-grid label{font-size:14px;}
  .auth-page .login-grid input{min-height:48px;}
  .auth-page .login-grid button[type=submit]{min-height:49px;}
}
/* Texto y controles siempre encima de la capa de contraste fotográfico. */
.auth-page .slide-bg{z-index:0}
.auth-page .slide-text{z-index:1;color:#fff}
.auth-page .slide-controls{z-index:2}


/* v1.14 - Pantalla de acceso definitiva (sin logo externo).
   Soluciona tarjeta diminuta cuando el navegador usa zoom reducido: ancho,
   altura y tipografia se calculan respecto al viewport, sin topes fijos de 1480px. */
@media (min-width:951px){
  .auth-page{
    width:min(94vw,3000px);
    max-width:none;
    min-height:100vh;
    min-height:100svh;
    margin:0 auto;
    padding:2vh 0;
    gap:clamp(13px,1vw,36px);
    justify-content:center;
    font-size:clamp(15px,1.05vw,40px);
  }
  .auth-page .login-grid{
    width:100%;
    max-width:none;
    min-height:76vh;
    min-height:76svh;
    grid-template-columns:minmax(0,58%) minmax(0,42%);
  }
  .auth-page .login-grid>.slider{
    height:auto;
    min-height:76vh;
    min-height:76svh;
  }
  .auth-page .login-grid>.panel{
    align-self:stretch;
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:clamp(32px,4.1vw,154px);
    min-width:0;
  }
  .auth-page .login-grid>.panel h2{
    font-size:clamp(29px,2.55vw,98px);
    line-height:1.18;
    margin-bottom:0.25em;
  }
  .auth-page .auth-lead{
    font-size:clamp(13px,1vw,39px);
    line-height:1.45;
    margin:0 0 1.35em;
  }
  .auth-page .login-grid label{
    font-size:clamp(14px,1vw,40px);
    margin:1.1em 0;
  }
  .auth-page .login-grid input{
    min-height:3.3vw;
    padding:.8em .95em;
    margin-top:.42em;
    font-size:clamp(15px,1.04vw,42px);
  }
  .auth-page .login-grid button[type=submit]{
    min-height:3.4vw;
    margin-top:.7em;
    padding:.7em 1.2em;
    font-size:clamp(15px,1.04vw,42px);
  }
  .auth-page .slide-text{left:6.5%;right:7%;bottom:14%}
  .auth-page .slide-text span{font-size:clamp(11px,.78vw,32px)}
  .auth-page .slide-text h2{
    font-size:clamp(28px,2.65vw,105px);
    max-width:37vw;
    line-height:1.12;
    margin:.35em 0 .28em;
  }
  .auth-page .slide-text p{
    font-size:clamp(14px,1.13vw,45px);
    max-width:36vw;
    line-height:1.5;
  }
  .auth-page .slide-controls{
    right:1.7vw;
    bottom:1.4vw;
    gap:.5vw;
  }
  .auth-page .slide-controls button{
    width:2.7vw;
    height:2.7vw;
    min-width:36px;
    min-height:36px;
    font-size:clamp(21px,1.7vw,70px);
  }
  .auth-page .site-footer{
    font-size:clamp(12px,.82vw,32px);
    padding:1vw .3vw 0;
  }
}
/* En pantallas pequenas, el panel se apila y ocupa la anchura disponible. */
@media (max-width:950px){
  .auth-page{width:100%;max-width:none;min-height:100svh;margin:0 auto;padding:clamp(12px,2vw,20px)}
  .auth-page .login-grid{width:100%;max-width:none;min-height:0;grid-template-columns:1fr}
  .auth-page .login-grid>.slider{height:clamp(300px,44vw,420px);min-height:300px}
  .auth-page .login-grid>.panel{padding:clamp(24px,4.5vw,42px)}
}
@media (max-width:480px){
  .auth-page{padding:12px;justify-content:flex-start}
  .auth-page .login-grid>.slider{height:305px;min-height:305px}
  .auth-page .login-grid>.panel{padding:25px 22px 29px}
}

/* v1.15 · Escala consistente en TODAS las pantallas del panel.
   En un navegador con zoom reducido, su viewport CSS se hace muy ancho.
   Dimensionamos el panel completo respecto a ese viewport para que
   Manuales, Estudiantes, Incidencias, etc. no queden diminutos mientras
   el acceso se mantiene amplio. No afecta a PDF ni impresión. */
@media screen and (min-width:2100px) {
  .layout {
    grid-template-columns:16vw minmax(0,1fr);
    font-size:1vw;
    min-height:100vh;
  }
  .layout .sidebar {
    padding:1.75vw 1.1vw;
    gap:2vw;
    min-width:0;
  }
  .layout .brand {font-size:1.35vw;gap:.75vw;overflow-wrap:anywhere;}
  .layout .brand img {width:3.3vw;height:3.3vw;max-height:3.3vw;flex-shrink:0;}
  .layout .sidebar nav {gap:.36vw;}
  .layout .sidebar nav a {font-size:1vw;line-height:1.4;padding:.78vw .9vw;}
  .layout .nav-bottom,.layout .nav-bottom .link {font-size:.91vw;line-height:1.6;}
  .layout .content {width:100%;max-width:none;margin:0;padding:2vw 2.5vw;min-width:0;}
  .layout .top {align-items:center;gap:1.2vw;margin-bottom:1.4vw;padding-bottom:1.2vw;}
  .layout .top h1 {font-size:1.75vw;line-height:1.2;}
  .layout .top small {font-size:.88vw;}
  .layout .panel {padding:1.65vw;margin:1.1vw 0;border-radius:1vw;}
  .layout .panel h2 {font-size:1.38vw;margin-bottom:1.1vw;}
  .layout .panel h3 {font-size:1.14vw;}
  .layout p,.layout li,.layout .muted {font-size:.99vw;line-height:1.5;}
  .layout label,.layout .check {font-size:.96vw;margin:.85vw 0;}
  .layout label small,.layout .month-highlights span {font-size:.86vw;}
  .layout input,.layout textarea,.layout select {
    font-size:1vw;line-height:1.35;padding:.8vw .9vw;
    margin-top:.45vw;border-radius:.5vw;
  }
  .layout button,.layout .toolbar a,.layout .manual-card .toolbar a {
    font-size:.96vw;padding:.72vw 1vw;border-radius:.55vw;
  }
  .layout .toolbar {gap:.9vw;margin:1vw 0;}
  .layout table {font-size:.95vw;}
  .layout th,.layout td {padding:.8vw .7vw;line-height:1.4;}
  .layout .stats {gap:1vw;margin:1.3vw 0;}
  .layout .stats>div,.layout .stats .stat-link {padding:1.5vw;}
  .layout .stats strong {font-size:2.1vw;}
  .layout .stats .stat-link span {font-size:.93vw;}
  .layout .manual-search {gap:1vw;}
  .layout .manual-search label {min-width:0;}
  .layout .manual-search button {margin-bottom:.85vw;}
  .layout .manual-grid {grid-template-columns:repeat(auto-fit,minmax(min(100%,23vw),1fr));gap:1.2vw;}
  .layout .manual-card {gap:1vw;padding:1.35vw;}
  .layout .manual-card h3 {font-size:1.22vw;}
  .layout .manual-card p {font-size:.96vw;}
  .layout .manual-icon {font-size:.87vw;padding:.8vw;}
  .layout .manual-reader {height:70vh;min-height:450px;}
  .layout .site-footer {font-size:.83vw;gap:1vw;margin-top:1.7vw;padding-top:1vw;}
  .layout .student-filters {gap:.8vw;}
  .layout .month-highlights {gap:.7vw;}
  .layout .month-highlights>div {min-width:11vw;padding:.8vw;}
  .layout .participant-row .participant-summary textarea,
  .layout .participant-row .participant-agreement textarea {font-size:.9vw;min-height:4.3vw;}
}
.inline-form{display:inline-block;margin:0}
.inline-form button{margin:0}

/* v1.19 · Invitaciones externas */
.public-response-wrap{width:min(920px,94vw);margin:clamp(24px,6vh,70px) auto}
.public-response-card{padding:clamp(24px,4vw,48px)}
.public-form-head{margin-bottom:24px;border-bottom:1px solid #d9e4ec;padding-bottom:18px}
.public-form-head>span{font-size:.78rem;font-weight:800;letter-spacing:.14em;color:#42637d}
.public-form-head h1{margin:.45rem 0 .5rem;font-size:clamp(1.65rem,3vw,2.5rem)}
.external-question{border:1px solid #d8e3eb;border-radius:12px;padding:16px;margin:18px 0;background:#f9fbfc}
.external-question legend{font-weight:800;padding:0 6px}
.external-confirm{margin-top:22px!important;padding:15px;border-radius:10px;background:#eef6f8}
.review-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
.review-actions form{margin:0}
.review-actions .secondary{background:#5f6e79}
#invite-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
@media(max-width:700px){.public-response-wrap{width:100%;margin:0;padding:12px}.public-response-card{padding:22px 18px}.review-actions{display:grid}.review-actions button{width:100%}}

/* v1.21 · Formularios externos más claros para docentes, familias y estudiantes */
.respondent-guidance{margin:0 0 20px;padding:15px 17px;border:1px solid #cfe1ec;border-left:4px solid #167b98;border-radius:10px;background:#f4f9fc;color:#28465f}
.respondent-guidance strong{display:block;font-size:1rem;color:#173c57;margin-bottom:4px}
.respondent-guidance p{margin:0;line-height:1.45;font-size:.92rem;color:#526d82}
.external-confirm-box{margin:24px 0 18px;padding:17px 18px;border:1px solid #bfd7e4;border-radius:12px;background:#eef7fa}
.external-confirm-heading{font-weight:800;color:#173c57;margin-bottom:11px;font-size:1rem}
.external-confirm{display:grid!important;grid-template-columns:24px minmax(0,1fr);align-items:start!important;gap:12px!important;margin:0!important;padding:0!important;background:transparent!important;border-radius:0!important;color:#203d55!important;line-height:1.4}
.external-confirm input[type=checkbox]{width:22px!important;height:22px!important;margin:2px 0 0!important;accent-color:#136d8c;cursor:pointer}
.external-confirm span{display:block;min-width:0}
.external-confirm strong{display:block;font-size:.98rem;color:#17384f;margin-bottom:3px}
.external-confirm small{display:block;font-weight:400;color:#526d82;font-size:.9rem;line-height:1.45}
.external-submit{min-width:190px}
@media(max-width:600px){.respondent-guidance,.external-confirm-box{padding:14px}.external-confirm{grid-template-columns:23px minmax(0,1fr)}.external-submit{width:100%}}


/* v1.22 · Resumen de expediente más claro y QR local de invitaciones */
.student-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.invite-qr{display:flex;align-items:center;gap:18px;margin:20px 0;padding:16px;border:1px solid #d5e3ec;border-radius:12px;background:#f8fbfd}
.invite-qr>div{width:180px;max-width:42vw;flex:0 0 auto;background:#fff;padding:8px;border:1px solid #dbe6ed;border-radius:10px}
.invite-qr-svg{display:block;width:100%;height:auto}
.invite-qr p{margin:0;line-height:1.5}
@media(max-width:1100px){.student-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.student-stats{grid-template-columns:1fr}.invite-qr{display:block}.invite-qr>div{width:190px;max-width:70vw;margin:0 auto 14px}}


/* v1.23 · formularios externos organizados por destinatario */
.field-help{margin:.85rem 0 .25rem;line-height:1.35}.field-help+.field-help{margin-top:.4rem}
select optgroup{font-weight:700}.public-response-card fieldset.external-question{margin:1rem 0}
[data-student-instrument-wrap][hidden]{display:none!important}
/* v1.25 · formulario externo docente compacto */
.respondent-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-bottom:18px}
.respondent-grid label{margin:0}
.respondent-grid label:last-of-type{grid-column:1/-1}
@media(max-width:760px){.respondent-grid{grid-template-columns:1fr}.respondent-grid label:last-of-type{grid-column:auto}}

/* v1.30 · Identificación visible del estudiante en formularios externos */
.assigned-student-card{margin:18px 0 14px;padding:16px 18px;border:1px solid #c7dce8;border-left:5px solid #167b98;border-radius:12px;background:#f4f9fc;display:grid;gap:4px}
.assigned-student-card>span{font-size:.76rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:#527189}
.assigned-student-card>strong{font-size:clamp(1.55rem,2.6vw,2.15rem);line-height:1.12;color:#17384f;letter-spacing:-.015em;overflow-wrap:anywhere}
.assigned-student-card>small{font-size:1rem;font-weight:700;color:#5c7488}
.external-privacy-note{margin-top:12px!important}
@media(max-width:600px){.assigned-student-card{padding:14px 15px}.assigned-student-card>strong{font-size:1.48rem}}

/* v1.31 · Inicio claro de incidencias */
.incident-start-form{display:grid;grid-template-columns:minmax(280px,1fr) auto;gap:14px;align-items:end}
.incident-start-form label{margin:0}.incident-start-form select{min-height:46px}.incident-start-form button{min-height:46px;white-space:nowrap}
@media(max-width:720px){.incident-start-form{grid-template-columns:1fr}.incident-start-form button{width:100%}}
.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row-actions>a{white-space:nowrap}.inline-form{display:inline;margin:0}.inline-form button{margin:0;padding:7px 10px;font-size:12px}.danger-button{background:#b83a32!important}.danger-button:hover{background:#922b25!important}.archived-student-row{padding:10px 0;border-bottom:1px solid #e4edf3}.archived-student-row>strong{min-width:260px}.archived-student-row>span{color:#617991}

/* v1.35 · Matrícula editable separada por 6.º A / 6.º B */
.student-roster-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.roster-filters{display:grid;grid-template-columns:minmax(260px,1fr) minmax(180px,240px) auto;gap:14px;align-items:end;margin:18px 0}
.roster-filters label{margin:0}.roster-filters .student-filter-actions{display:flex;gap:10px;align-items:center;min-height:46px}
.roster-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 18px}
.roster-tabs a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 14px;border:1px solid #cfdce6;border-radius:999px;text-decoration:none;font-weight:750;background:#fff;color:#294b63}
.roster-tabs a.active{background:#173c57;color:#fff;border-color:#173c57}
.roster-section{margin:20px 0 28px;border:1px solid #d6e1e8;border-radius:14px;overflow:hidden;background:#fff}
.roster-section-head{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px 18px;background:#f4f8fb;border-bottom:1px solid #d6e1e8}
.roster-section-head h3{margin:0 0 3px;font-size:1.15rem}.roster-section-head p{margin:0;color:#61788b}.roster-section-head>strong{white-space:nowrap;color:#294b63}
.roster-table{margin:0;border:0;border-radius:0}.roster-table th,.roster-table td{vertical-align:middle}.roster-table td:nth-child(2)>a{font-weight:800;font-size:1rem}.roster-table td:nth-child(2)>small{display:block;margin-top:3px}
.roster-no{width:62px;text-align:center!important}.roster-no strong{font-size:1rem}
.participant-group-title{margin:18px 0 8px;padding:9px 12px;border-left:4px solid #167b98;background:#f4f9fc;font-weight:800;color:#294b63}
@media(max-width:900px){.student-roster-stats{grid-template-columns:1fr 1fr}.student-roster-stats>div:first-child{grid-column:1/-1}.roster-filters{grid-template-columns:1fr 1fr}.roster-filters .student-filter-actions{grid-column:1/-1}}
@media(max-width:620px){.student-roster-stats,.roster-filters{grid-template-columns:1fr}.student-roster-stats>div:first-child,.roster-filters .student-filter-actions{grid-column:auto}.roster-section-head{align-items:flex-start;flex-direction:column;gap:6px}.roster-section-head>strong{white-space:normal}.roster-tabs a{flex:1 1 auto}}


/* v1.37 · edición clara de docentes guía por sección */
.roster-teachers-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:end}
.roster-teachers-form label{margin:0}
@media(max-width:760px){.roster-teachers-form{grid-template-columns:1fr}}

/* v1.38 · expedientes, incidencias, seguimiento, evaluaciones y panel operativo */
.dashboard-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:18px 0 24px}
.dashboard-kpi{display:flex;flex-direction:column;gap:5px;min-height:118px;padding:18px;border:1px solid #d6e2e9;border-radius:14px;background:#fff;text-decoration:none;color:#294b63;box-shadow:0 2px 9px #173c5710}
.dashboard-kpi span{font-size:.84rem;font-weight:800;text-transform:uppercase;letter-spacing:.035em;color:#61788b}.dashboard-kpi strong{font-size:2rem;line-height:1;color:#173c57}.dashboard-kpi small{margin-top:auto;color:#61788b}.dashboard-kpi-alert{border-color:#d99b95;background:#fff8f7}.dashboard-kpi-alert strong{color:#9b2f29}
.global-student-search{display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:12px;align-items:end}.global-student-search label{margin:0}.global-student-search button{min-height:46px;white-space:nowrap}
.student-kind{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:.82rem;font-weight:800;white-space:nowrap}.student-kind.roster{background:#eaf4f8;color:#175c76}.student-kind.external{background:#f2f0ea;color:#6f5a25}
.student-profile-grid{display:grid;grid-template-columns:minmax(170px,220px) minmax(0,1fr);gap:24px;align-items:start}.student-photo-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:16px;border:1px solid #d6e2e9;border-radius:14px;background:#f8fbfd}.student-photo-card img,.student-photo-placeholder{width:138px;height:138px;border-radius:16px;object-fit:cover}.student-photo-placeholder{display:grid;place-items:center;background:#dbe8ef;color:#173c57;font-size:3.2rem;font-weight:900}.student-photo-card strong{font-size:1.04rem;color:#173c57}.student-photo-card span{color:#61788b;font-weight:700}.student-profile-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.student-profile-data p{margin:0;padding:9px 0;border-bottom:1px solid #e6edf2}.student-photo-edit{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:end}
.participant-row{border:1px solid #d8e3ea;border-radius:12px;background:#fff;margin:9px 0;overflow:hidden}.participant-row .participant-name{display:flex;align-items:center;gap:10px;margin:0;padding:13px 14px;font-weight:800;color:#294b63;cursor:pointer}.participant-row .participant-name input{flex:0 0 auto}.participant-details{display:none;grid-template-columns:minmax(160px,.55fr) minmax(260px,1fr) minmax(260px,1fr);gap:12px;padding:0 14px 14px;border-top:1px solid #e5edf2;background:#f9fbfc}.participant-row.selected{border-color:#9fc6d7;box-shadow:0 0 0 2px #e4f2f7}.participant-row.selected .participant-name{background:#eef7fa}.participant-row.selected .participant-details{display:grid}.participant-details label{margin:12px 0 0}.participant-detail-row td{background:#f8fbfd;font-size:.91rem;line-height:1.45}.incident-summary-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.timeline{position:relative;margin:8px 0}.timeline:before{content:"";position:absolute;left:93px;top:4px;bottom:4px;width:2px;background:#d7e4eb}.followup-entry{display:grid;grid-template-columns:82px minmax(0,1fr);gap:24px;position:relative;padding:11px 0}.followup-entry:before{content:"";position:absolute;left:88px;top:18px;width:12px;height:12px;border-radius:50%;background:#167b98;border:3px solid #fff;box-shadow:0 0 0 1px #9fc6d7}.followup-date{font-weight:800;color:#526d82;text-align:right;padding-top:3px}.followup-entry>div:last-child{padding:12px 14px;border:1px solid #dce6ec;border-radius:12px;background:#fff}.followup-entry p{margin:7px 0}.followup-entry small{color:#6a7d8c}
.assessment-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.assessment-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.assessment-card{display:flex;flex-direction:column;min-height:220px;padding:17px;border:1px solid #d8e3ea;border-radius:13px;background:#fff}.assessment-card>span{font-size:.75rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#167b98}.assessment-card h3{margin:7px 0 8px;color:#173c57}.assessment-card p{margin:0 0 12px;line-height:1.48;color:#526d82}.assessment-card small{margin-top:auto;color:#667d8e}.assessment-card .toolbar{margin-top:12px}.assessment-question{padding:14px 16px}.assessment-option-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:7px 12px;margin-top:9px}.assessment-option-grid .check{margin:0;padding:8px 9px;border:1px solid #e0e8ed;border-radius:9px;background:#fff}
@media(max-width:980px){.student-profile-grid{grid-template-columns:1fr}.student-photo-card{max-width:320px}.student-profile-data{grid-template-columns:1fr}.participant-details{grid-template-columns:1fr 1fr}.participant-details label:first-child{grid-column:1/-1}.incident-summary-stats{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.global-student-search{grid-template-columns:1fr}.global-student-search button{width:100%}.participant-details{grid-template-columns:1fr}.participant-details label:first-child{grid-column:auto}.incident-summary-stats,.assessment-stats{grid-template-columns:1fr 1fr}.timeline:before{left:12px}.followup-entry{grid-template-columns:1fr;padding-left:32px;gap:5px}.followup-entry:before{left:7px;top:17px}.followup-date{text-align:left}.student-photo-edit{grid-template-columns:1fr}}
@media(max-width:480px){.incident-summary-stats,.assessment-stats{grid-template-columns:1fr}}
.student-photo-edit img{width:110px;height:110px;object-fit:cover;border-radius:12px;border:1px solid #d6e2e9}

/* v1.39 · Formularios de incidencia más claros */
.advanced-fields{margin:18px 0;border:1px solid #d6e0e7;border-radius:10px;background:#f8fafb;overflow:hidden}
.advanced-fields summary{cursor:pointer;padding:13px 15px;font-weight:800;color:#173c57;background:#eef3f6}
.advanced-fields-body{padding:14px 15px 4px}
.participant-details.compact{grid-template-columns:minmax(220px,420px)}
.danger-zone{margin:18px 0;padding:14px;border:1px solid #e2b3b3;border-radius:10px;background:#fff7f7}
.danger-zone p{margin-top:0}
.response-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #e5edf2}.response-row:last-child{border-bottom:0}.response-row>span{min-width:0;overflow-wrap:anywhere}@media(max-width:700px){.response-row{align-items:flex-start;flex-direction:column}}
