:root{--ink:#142c3b;--muted:#61727c;--paper:#f5f7f6;--line:#dfe7e5;--navy:#102b3c;--mint:#14ba9a;--lime:#d8ef8b;--red:#b8434a;--ok:#12664f}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;background:var(--paper);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.page{max-width:460px;margin:0 auto;padding:48px 16px}
.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px 24px;box-shadow:0 18px 48px rgba(21,49,57,.08)}
.brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.brand-symbol{width:42px;height:42px;border-radius:12px;background:var(--lime);color:var(--navy);display:grid;place-items:center;font-weight:800;font-size:20px}
.brand strong{display:block}
.brand small{display:block;color:var(--muted);font-size:13px}
/* El nombre de la escuela y del portal llegan después de cargar: se reserva su alto para que el diseño no salte. */
.brand strong,.brand small{min-height:1.5em}
/* El símbolo (inicial de la escuela) también llega después: vacío conserva su espacio, pero no se ve un cuadro sin letra. */
.brand-symbol:empty{visibility:hidden}
h1{font-size:26px;line-height:1.2;margin:0 0 8px}
h1:focus{outline:none}
.intro{color:var(--muted);margin:0 0 18px}
label{display:block;font-weight:700;font-size:14px;margin:14px 0 6px}
input[type=password],input[type=text],input[type=email]{width:100%;height:46px;border:1px solid #cfdcd9;border-radius:10px;padding:0 12px;font:inherit;color:var(--ink);background:#fbfdfc}
input:focus{outline:0;border-color:#18a88d;box-shadow:0 0 0 3px rgba(20,186,154,.18)}
.check{display:flex;align-items:center;gap:8px;font-weight:400}
.hint{color:var(--muted);font-size:13px;margin:8px 0 0}
.error{color:var(--red);font-weight:700;font-size:14px;margin:12px 0 0}
.button{display:inline-flex;align-items:center;justify-content:center;width:100%;height:48px;margin-top:18px;border:0;border-radius:10px;background:var(--navy);color:#fff;font:inherit;font-weight:700;cursor:pointer;text-decoration:none}
.button:hover{background:#1d4658}
.button[disabled]{opacity:.6;cursor:wait}
.message{border-radius:12px;padding:13px 16px;margin:0 0 6px;background:#ebf8f4;border:1px solid #cee9df;color:var(--ok)}
.message.warn{background:#fff4ef;border-color:#f3d8cc;color:#8c3b2a}
.links{margin:18px 0 0;font-size:14px}
.links a{color:#0d6a58;font-weight:700}
/* Acción con aspecto de enlace (p. ej. "Reintentar"): no navega, vuelve a consultar. */
.link-button{padding:0;border:0;background:none;font:inherit;color:#0d6a58;font-weight:700;text-decoration:underline;cursor:pointer}
.link-button[disabled]{opacity:.6;cursor:wait}
.footnote{text-align:center;color:var(--muted);font-size:13px;margin-top:18px}
.footnote + .footnote{margin-top:6px}
.footnote a{color:inherit;text-underline-offset:2px}
.footnote a:hover{color:var(--ink)}
[hidden]{display:none!important}
