/* Acceso Esmedic: estilos locales; formulario y validación conservados. */
body.esmedic-login {
  --login-unit: clamp(.8px, .05981vw, 1.15px);
  margin: 0; min-height: 100vh; color: #535e63;
  font-family: 'Nunito', 'Segoe UI', sans-serif;
  background: #f5f9f6 url('../assets/images/esmedic/login-fondo.png') center / cover no-repeat fixed;
}
.esmedic-login *, .esmedic-login *::before, .esmedic-login *::after { box-sizing: border-box; }
.esmedic-login-background { position: fixed; inset: 0; overflow: hidden; pointer-events: none; background: radial-gradient(ellipse 85% 50% at 100% 128%, rgba(155,205,126,.38) 0, rgba(155,205,126,.28) 98%, transparent 100%); }
.esmedic-login-background::before { content: ''; position: absolute; width: 46%; height: 47%; left: -26%; top: -29%; border-radius: 48%; transform: rotate(-36deg); background: rgba(145,194,121,.27); }
.esmedic-login-background::after { content: ''; position: absolute; width: 64%; height: 150%; right: -48%; top: -26%; border: calc(125 * var(--login-unit)) solid rgba(143,199,111,.25); border-radius: 50%; transform: rotate(-28deg); }
.esmedic-login-dots { position: absolute; width: 132px; height: 126px; background: radial-gradient(circle, rgba(78,151,57,.44) 1.5px, transparent 2px) 0 0 / 24px 24px; }
.esmedic-login-dots-top { top: 3.4%; right: 2%; }
.esmedic-login-dots-bottom { bottom: 2.5%; left: .45%; width: 72px; }
.esmedic-login-layout { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,calc(600 * var(--login-unit))); align-items: center; column-gap: calc(260 * var(--login-unit)); width: 84.6%; max-width: 1624px; min-height: 100vh; margin: 0 auto; padding: calc(64 * var(--login-unit)) 0; }
.esmedic-login-intro { min-width: 0; }
.esmedic-login-brand { display: block; width: calc(450 * var(--login-unit)); max-width: 100%; height: auto; margin-bottom: calc(48 * var(--login-unit)); }
.esmedic-login-intro h1 { margin: 0 0 calc(12 * var(--login-unit)); color: #084a2e; font: 800 calc(44 * var(--login-unit))/1.12 'Nunito','Segoe UI',sans-serif; letter-spacing: -.025em; }
.esmedic-login-subtitle { max-width: calc(475 * var(--login-unit)); margin: 0; font-size: calc(24 * var(--login-unit)); line-height: 1.3; }
.esmedic-login-benefits { list-style: none; margin: calc(26 * var(--login-unit)) 0 calc(36 * var(--login-unit)); padding: 0; }
.esmedic-login-benefits li { display: flex; align-items: center; gap: calc(22 * var(--login-unit)); margin: calc(14 * var(--login-unit)) 0; max-width: calc(390 * var(--login-unit)); font-size: calc(20 * var(--login-unit)); line-height: 1.25; }
.esmedic-login-benefits span { display: flex; align-items: center; justify-content: center; flex: 0 0 calc(74 * var(--login-unit)); height: calc(74 * var(--login-unit)); border: 2px solid rgba(255,255,255,.95); border-radius: 50%; background: linear-gradient(145deg,#fff,#e5f2e1); box-shadow: 0 4px 10px rgba(64,114,47,.16); color: #509c37; font-size: calc(32 * var(--login-unit)); }
.esmedic-login-indicators { display: flex; gap: calc(12 * var(--login-unit)); margin: 0 0 calc(28 * var(--login-unit)); }
.esmedic-login-indicators span { width: calc(12 * var(--login-unit)); height: calc(10 * var(--login-unit)); border-radius: 6px; background: #d3d8d5; }
.esmedic-login-indicators span:first-child { width: calc(68 * var(--login-unit)); background: linear-gradient(90deg,#509e37,#84b66b); }
.esmedic-login-motto { border-left: calc(4 * var(--login-unit)) solid #94cc32; margin: 0; padding: 0 calc(17 * var(--login-unit)); font-size: calc(20 * var(--login-unit)); line-height: 1.35; }
.esmedic-login-card { min-width: 0; padding: calc(62 * var(--login-unit)) calc(48 * var(--login-unit)) calc(34 * var(--login-unit)); border-radius: calc(24 * var(--login-unit)); background: rgba(255,255,255,.98); box-shadow: 0 18px 42px rgba(44,83,37,.12); }
.esmedic-login-header { text-align: center; }
.esmedic-login-header .esmedic-login-logo { display: block; width: calc(370 * var(--login-unit)); max-width: 100%; height: auto; margin: 0 auto; }
.esmedic-login-header h2 { margin: calc(28 * var(--login-unit)) 0 2px; font: 800 calc(36 * var(--login-unit))/1.2 'Nunito','Segoe UI',sans-serif; color: #084a2e; letter-spacing: -.02em; }
.esmedic-login-header p { margin: 0 auto calc(32 * var(--login-unit)); max-width: calc(375 * var(--login-unit)); font-size: calc(22 * var(--login-unit)); line-height: 1.25; color: #5b656b; }
.esmedic-login-form #signupForm { margin-top: 0 !important; }
.esmedic-login-form .form-group { margin: 0 0 calc(18 * var(--login-unit)); }
.esmedic-login-form .form-group:last-child { margin-bottom: 0; margin-top: calc(28 * var(--login-unit)); }
.esmedic-login-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.esmedic-login-field { --login-field-height: max(52px, calc(66 * var(--login-unit))); position: relative; }
.esmedic-login-field > .fa { position: absolute; top: calc(var(--login-field-height) / 2); left: calc(28 * var(--login-unit)); transform: translateY(-50%); color: #4d9d30; font-size: calc(26 * var(--login-unit)); pointer-events: none; }
.esmedic-login-field .form-control { width: 100%; height: var(--login-field-height); min-height: 52px; padding: 12px calc(60 * var(--login-unit)) 12px calc(74 * var(--login-unit)); border: 1.5px solid #dce4ed; border-radius: calc(12 * var(--login-unit)); background: #f0f4fc; color: #263134; font: 400 calc(22 * var(--login-unit))/1.4 'Nunito','Segoe UI',sans-serif; box-shadow: none; transition: border-color 150ms ease, background-color 150ms ease; }
.esmedic-login-field .form-control::placeholder { color: #68737a; opacity: 1; }
.esmedic-login-field .form-control:hover { border-color: #adc9a3; }
.esmedic-login-field .form-control:focus { border-color: #4e9f2d; outline: 1px solid #4e9f2d; outline-offset: -1px; background: #edf4ff; box-shadow: none; }
.esmedic-login-eye { position: absolute; top: calc(var(--login-field-height) / 2); right: calc(12 * var(--login-unit)); transform: translateY(-50%); width: 44px; height: 44px; border: 0; border-radius: 8px; background: transparent; color: #6c777c; font-size: calc(24 * var(--login-unit)); cursor: pointer; }
.esmedic-login-eye:hover { background: #e2eddf; color: #2f7d13; }
.esmedic-login-eye:active { background: #d9efce; }
.esmedic-login-submit { width: 100%; min-height: calc(68 * var(--login-unit)); border: 0; border-radius: calc(20 * var(--login-unit)); background: linear-gradient(110deg,#73b541,#2f7d13); box-shadow: 0 10px 18px rgba(77,133,43,.15); color: #fff; font: 700 calc(25 * var(--login-unit))/1.2 'Nunito','Segoe UI',sans-serif; cursor: pointer; transition: filter 150ms ease, box-shadow 150ms ease; }
.esmedic-login-submit .fa { margin-right: calc(14 * var(--login-unit)); }
.esmedic-login-submit:hover { filter: brightness(.94); box-shadow: 0 6px 12px rgba(77,133,43,.2); }
.esmedic-login-submit:active { filter: brightness(.86); }
.esmedic-login button:focus-visible { outline: 3px solid #2f7d13; outline-offset: 3px; }
.esmedic-login button:disabled { opacity: .6; cursor: not-allowed; }
.esmedic-login-errors:empty { display: none; }
.esmedic-login-errors { margin-bottom: 18px; padding: 12px; border-left: 3px solid #b42318; background: #fff2f0; color: #9c2017; overflow-wrap: break-word; }
.esmedic-login-errors p { margin: 0 0 5px; }
.esmedic-login-form label.error { display: block; color: #9c2017; margin-top: 6px; font-size: 13px; }
.esmedic-login-divider { display: flex; align-items: center; gap: calc(12 * var(--login-unit)); margin: calc(36 * var(--login-unit)) 0 calc(22 * var(--login-unit)); color: #616b6e; font-size: calc(15 * var(--login-unit)); line-height: 1.25; text-align: center; white-space: nowrap; }
.esmedic-login-divider::before, .esmedic-login-divider::after { content: ''; flex: 1; height: 1px; background: #d0d5d2; }
.esmedic-login-seals { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: calc(24 * var(--login-unit)); list-style: none; margin: 0; padding: 0; text-align: center; color: #5d6669; font-size: calc(15 * var(--login-unit)); line-height: 1.2; }
.esmedic-login-seals .fa { display: block; margin-bottom: calc(8 * var(--login-unit)); font-size: calc(26 * var(--login-unit)); color: #4c9934; }
@media (max-width: 991px) {
  body.esmedic-login { --login-unit: 1px; background-attachment: scroll; }
  .esmedic-login-layout { display: flex; justify-content: center; width: 100%; padding: 24px 16px; }
  .esmedic-login-intro { display: none; }
  .esmedic-login-card { width: 100%; max-width: 540px; padding: 40px 32px 30px; border-radius: 24px; }
  .esmedic-login-header h2 { font-size: 32px; }
  .esmedic-login-header p { font-size: 18px; }
  .esmedic-login-header .esmedic-login-logo { max-width: 300px; }
  .esmedic-login-field { --login-field-height: 60px; }
  .esmedic-login-field .form-control { height: 60px; font-size: 18px; }
  .esmedic-login-submit { min-height: 60px; font-size: 23px; }
}
@media (max-width: 420px) {
  .esmedic-login-card { padding: 32px 22px 26px; }
  .esmedic-login-header .esmedic-login-logo { max-width: 260px; }
  .esmedic-login-header h2 { margin-top: 24px; }
  .esmedic-login-header p { font-size: 17px; margin-bottom: 28px; }
  .esmedic-login-seals { gap: 10px; font-size: 12px; }
  .esmedic-login-divider { font-size: 12px; gap: 8px; }
  .esmedic-login-field > .fa { left: 19px; font-size: 23px; }
  .esmedic-login-field .form-control { padding-left: 53px; }
}
@media (prefers-reduced-motion: reduce) { .esmedic-login-field .form-control, .esmedic-login-submit { transition: none; } }
