/* Nova Connection · Login v3 · solo afecta la vista de acceso.
   Cargar al final del head, luego de nova-fixes y nova-docs-v2. */
html[data-theme="light"] .nova-login-page {
 --login-fg:#10233f; --login-muted:#475975; --login-label:#21334e;
 --login-field:#ffffff; --login-edge:#bdcbe0; --login-hint:#66758a;
 --login-card:#ffffff; --login-shadow:0 22px 65px rgba(20,43,83,.14);
 background:radial-gradient(circle at 12% 8%,#e2edff 0%,transparent 36%),#f3f7fd;
 color:var(--login-fg);
}
html[data-theme="dark"] .nova-login-page {
 --login-fg:#f2f7ff; --login-muted:#c1cee1; --login-label:#e8f1ff;
 --login-field:#18273e; --login-edge:#49617f; --login-hint:#a9bfd9;
 --login-card:#14233a; --login-shadow:0 25px 70px rgba(0,0,0,.36);
 color:var(--login-fg);
}
/* Fondo, textos y jerarquía contrastados, independientemente del CSS global */
.nova-login-page .nova-login-shell {background:var(--login-card);box-shadow:var(--login-shadow);}
.nova-login-page .nova-login-form-panel {background:var(--login-card);color:var(--login-fg);}
.nova-login-page .nova-login-inner h1 {color:var(--login-fg);font-weight:800;overflow-wrap:anywhere;}
.nova-login-page .nova-login-subtitle,.nova-login-page .nova-login-note {color:var(--login-muted);}
.nova-login-page .nova-login-form label {color:var(--login-label);font-weight:750;}
.nova-login-page .nova-kicker {color:var(--nc-accent);}
.nova-login-page .nova-login-form input {
  appearance:none;-webkit-appearance:none;
  background:var(--login-field);color:var(--login-fg);
  border:1.5px solid var(--login-edge);border-radius:12px;
  opacity:1;-webkit-text-fill-color:var(--login-fg);
}
.nova-login-page .nova-login-form input::placeholder {
 color:var(--login-hint);opacity:1;-webkit-text-fill-color:var(--login-hint);
}
.nova-login-page .nova-login-form input:focus {
 border-color:#287ce4;box-shadow:0 0 0 3px rgba(42,129,235,.18);outline:none;
}
.nova-login-page .nova-login-form .nova-password-field {position:relative;min-width:0;}
.nova-login-page .nova-login-form .nova-password-field input {padding-right:58px;}
.nova-login-page .nova-login-form .nova-password-field #nova-password-toggle {
 position:absolute;inset-block-start:50%;inset-inline-end:6px;inset-inline-start:auto;
 transform:translateY(-50%);display:flex;align-items:center;justify-content:center;
 width:42px;height:38px;min-width:42px;min-height:38px;
 background:transparent;color:var(--login-muted);border:0;box-shadow:none;padding:0;margin:0;line-height:1;
}
.nova-login-page .nova-login-form .nova-password-field #nova-password-toggle:hover,
.nova-login-page .nova-login-form .nova-password-field #nova-password-toggle:focus-visible {
 color:var(--login-fg);background:rgba(104,143,188,.14);outline:2px solid transparent;
}
.nova-login-page .nova-login-form .nova-password-field #nova-password-toggle svg {display:block;flex:none;width:20px;height:20px;}
.nova-login-page .nova-login-form .nova-login-submit {
 color:#ffffff;background:linear-gradient(100deg,#167be3,#254fc5);min-height:48px;
}
.nova-login-page .nova-login-form .nova-login-submit:focus-visible {outline:3px solid #7ebaff;outline-offset:3px;}
.nova-login-page .nova-form-errors:not(:empty) {color:#a82337;background:rgba(241,81,105,.09);border-radius:10px;padding:6px 9px;}
html[data-theme="dark"] .nova-login-page .nova-form-errors:not(:empty) {color:#ffb7c3;}
/* La altura se adapta y no corta controles si falta espacio. */
body:has(.nova-login-page) {overflow-x:hidden;}
body:has(.nova-login-page) .nova-login-page {width:100%;min-height:100dvh;height:auto;overflow:visible;box-sizing:border-box;}
body:has(.nova-login-page) .nova-login-shell {min-height:0;max-width:1120px;}
.nova-login-page .nova-login-form-panel {overflow:visible;}
/* Pantallas pequeñas y tablets: solo formulario; centrado sin cortar al hacer zoom. */
@media (max-width:850px) {
 html:has(.nova-login-page),body:has(.nova-login-page) {height:auto;min-height:100%;}
 body:has(.nova-login-page) {overflow-x:hidden;overflow-y:auto;}
 body:has(.nova-login-page) .nova-login-page {
   height:auto;min-height:100dvh;overflow:visible;display:flex;align-items:center;
   justify-content:center;padding:74px 14px 24px;
 }
 body:has(.nova-login-page) .nova-login-shell {
   display:block;width:min(100%,480px);max-width:480px;height:auto;min-height:0;
   overflow:visible;border-radius:20px;
 }
 .nova-login-page .nova-login-hero {display:none;}
 .nova-login-page .nova-login-form-panel {padding:34px clamp(20px,5.5vw,36px);}
 .nova-login-page .nova-login-brand {height:auto;margin:0 0 16px;}
 .nova-login-page .nova-login-brand img {max-width:245px;max-height:64px;object-position:left;}
 .nova-login-page .nova-login-inner h1 {font-size:clamp(25px,6vw,31px);margin:10px 0;line-height:1.15;}
 .nova-login-page .nova-login-subtitle {font-size:13.5px;line-height:1.5;margin-bottom:18px;}
 .nova-login-page .nova-login-form {gap:8px;}
 .nova-login-page .nova-login-form input {height:48px;min-height:48px;font-size:16px;}
 .nova-login-page .nova-login-submit {margin-top:10px;height:50px;}
 .nova-login-page .nova-login-note {margin:16px 0 0;line-height:1.5;}
 .auth-tools {position:absolute;top:15px;right:15px;left:auto;z-index:6;}
 .auth-tools .theme-toggle {padding:8px 12px;min-height:37px;}
}
@media (max-width:390px) {
 body:has(.nova-login-page) .nova-login-page {padding:66px 9px 12px;}
 body:has(.nova-login-page) .nova-login-shell {border-radius:16px;}
 .nova-login-page .nova-login-form-panel {padding:24px 17px 22px;}
 .nova-login-page .nova-login-brand img {max-width:210px;max-height:54px;}
 .nova-login-page .nova-login-subtitle {margin-bottom:12px;}
 .nova-login-page .nova-login-inner h1 {font-size:24px;}
 .nova-login-page .nova-login-form input {height:46px;min-height:46px;}
 .nova-login-page .nova-login-note {font-size:11px;}
}
@media (max-height:650px) and (min-width:851px) {
 body:has(.nova-login-page) {overflow-y:auto;}
 body:has(.nova-login-page) .nova-login-page {min-height:100dvh;height:auto;padding:14px;}
 body:has(.nova-login-page) .nova-login-shell {height:auto;min-height:0;}
 .nova-login-page .nova-login-form-panel {padding-block:20px;}
}

/* v4 - Contraste explícito del hero: el tema claro no puede oscurecer su título. */
html[data-theme="light"] .nova-login-page .nova-login-hero,
html[data-theme="dark"] .nova-login-page .nova-login-hero {
  color:#f6faff !important;
}
html[data-theme="light"] .nova-login-page .nova-login-hero .nova-hero-content h2,
html[data-theme="dark"] .nova-login-page .nova-login-hero .nova-hero-content h2 {
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
  text-shadow:0 2px 8px rgba(1,10,35,.18);
}
html[data-theme="light"] .nova-login-page .nova-login-hero .nova-hero-content p,
html[data-theme="dark"] .nova-login-page .nova-login-hero .nova-hero-content p {
  color:#dceaff !important;
  -webkit-text-fill-color:#dceaff !important;
}
html[data-theme="light"] .nova-login-page .nova-login-hero .nova-hero-label,
html[data-theme="dark"] .nova-login-page .nova-login-hero .nova-hero-label {
  color:#9edcff !important;
  -webkit-text-fill-color:#9edcff !important;
}
html[data-theme="light"] .nova-login-page .nova-login-hero .nova-hero-footer,
html[data-theme="dark"] .nova-login-page .nova-login-hero .nova-hero-footer {
  color:#bad8f9 !important;
  -webkit-text-fill-color:#bad8f9 !important;
}
/* Evitar barra/rectángulo de errores vacío aunque haya CSS previo. */
.nova-login-page .nova-form-errors:empty,
.nova-login-page .nova-form-errors:not(:has(li)) { display:none !important; }
.nova-login-page .nova-form-errors:has(li) {
  background:#fff1f2;
  border:1px solid #fecdd3;
  color:#9f1239;
  padding:10px 13px;
  border-radius:11px;
  margin:2px 0 7px;
}
html[data-theme="dark"] .nova-login-page .nova-form-errors:has(li) {
  background:#471d2b;
  border-color:#91384e;
  color:#ffe4e6;
}
.nova-login-page .nova-form-errors ul {margin:0;padding-left:18px;}
.nova-login-page .nova-form-errors li {line-height:1.5;}
