/**
 * Auth surface shell — shared by login.php and public portal (convocatorias.php).
 * SSOT: layout card/panel. Portal MUST NOT load login.css (tri-audit Grok #6).
 */

/* ======================================
   LOGIN / AUTH SURFACES
====================================== */

:where(:root) {
  --nft-s06-c0a7f6333b2d: linear-gradient(
    180deg,
    rgb(255 255 255 / 86%),
    rgb(243 246 251 / 94%)
  );
  --nft-s06-309dd318685c: linear-gradient(160deg, rgb(8 17 29 / 98%), rgb(23 57 94 / 94%)),
    var(--gradient-mesh);
  --nft-s06-629fc6b78075: #f3f8ff;
  --nft-s06-5580aae82466: linear-gradient(160deg, rgb(16 36 63 / 98%), rgb(45 95 143 / 92%)),
    var(--gradient-mesh);
  --nft-s06-136bef11b7ef: linear-gradient(160deg, rgb(67 17 17 / 98%), rgb(152 37 37 / 92%)),
    radial-gradient(circle at top left, rgb(255 255 255 / 8%), transparent 35%);
  --nft-s06-b76089b5a7cf: rgb(243 248 255 / 72%);
  --nft-s06-7043583a952b: rgb(243 248 255 / 82%);
  --nft-s06-c3eb6a13b0d3: rgb(255 255 255 / 10%);
  --nft-s06-87c38934062e: linear-gradient(180deg, rgb(12 20 33 / 92%), rgb(15 25 39 / 96%));
  --nft-s06-e1d7f155aa03: rgb(19 30 49 / 85%);
  --nft-s06-3e50075c8852: rgb(21 128 61);
  --nft-s06-3955e8b621f6: rgb(22 163 74);
  --nft-s06-d2301af1c6a1: rgb(185 28 28);
  --nft-s06-9e4bef748467: rgb(220 38 38);
  --nft-s06-83fc59e5527b: rgb(30 41 59);
  --nft-s06-f32a807a8ceb: rgb(51 65 85);
  --nft-s06-ea5286f5eec2: rgb(203 213 225);
}

.auth-layout .root-content {
  width: 100%;
}

.login-content {
  width: min(1120px, 100%);
  margin: 0 auto;
}

.login-card {
  display: grid;
  grid-template-columns: minmax(280px, 0.92fr) minmax(0, 1.08fr);
  overflow: hidden;
  border-radius: 34px;
  border: 1px solid var(--color-border-strong);
  background: var(--nft-s06-c0a7f6333b2d);
  box-shadow: var(--shadow-xl);
}

.auth-panel {
  position: relative;
  min-height: 100%;
}

.auth-panel-brand {
  padding: 2.1rem;
  background:
    var(--nft-s06-309dd318685c);
  color: var(--nft-s06-629fc6b78075);
}

.auth-panel-brand-secondary {
  background:
    var(--nft-s06-5580aae82466);
}

.auth-panel-brand-danger {
  background:
    var(--nft-s06-136bef11b7ef);
}

.auth-kicker {
  display: inline-flex;
  margin-bottom: 0.9rem;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--nft-s06-b76089b5a7cf);
}

.auth-title {
  margin: 0 0 1rem;
  font-size: clamp(2rem, 3.5vw, 3rem);
  line-height: 1.03;
  color: var(--color-white);
  -webkit-text-fill-color: initial;
  background: none;
}

.auth-description {
  margin: 0 0 1.35rem;
  color: var(--nft-s06-7043583a952b);
  font-size: 1rem;
  line-height: 1.75;
}

.auth-highlights {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
}

.auth-highlight {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 0.55rem 0.8rem;
  border-radius: 999px;
  background: var(--nft-s06-c3eb6a13b0d3);
  border: 1px solid rgb(255 255 255 / 15%);
  color: var(--color-white);
  font-size: 0.76rem;
  font-weight: 700;
}

.login-card-content {
  padding: 2rem;
}

.login-header {
  margin-bottom: 1.5rem;
  text-align: left;
}

.login-header h1 {
  margin: 0 0 0.4rem;
  font-size: clamp(1.8rem, 2.4vw, 2.3rem);
  line-height: 1.05;
}

.login-subtitle {
  margin: 0;
  color: var(--text-muted);
}

[data-theme="dark"] .login-card {
  background: var(--nft-s06-87c38934062e);
}

[data-theme="dark"] .auth-contact-card,
[data-theme="dark"] .session-expired-notice,
[data-theme="dark"] .auth-message {
  background: var(--nft-s06-e1d7f155aa03);
}

[data-theme="contrast"] .login-card,
[data-theme="contrast"] .session-expired-notice,
[data-theme="contrast"] .auth-message,
[data-theme="contrast"] .auth-contact-card {
  background: var(--contrast-paper);
  border: 2px solid var(--contrast-ink);
  box-shadow: none;
}

@media (max-width: 860px) {
  .login-card {
    grid-template-columns: 1fr;
  }

  .auth-panel-brand {
    min-height: 280px;
  }
}

@media (max-width: 600px) {
  .login-card-content,
.auth-panel-brand {
    padding: 1.35rem;
  }

  .login-options {
    flex-direction: column;
    align-items: flex-start;
  }

  .input-field {
    font-size: 16px;
  }
}

/* ===== Password policy criteria (reset-password; SSOT AuthModel ≥10 + 3/4) ===== */
.auth-password-help {
  color: var(--color-text-secondary, rgb(71 85 105));
  font-size: 0.875rem;
  line-height: 1.4;
  margin: 0.35rem 0 0.75rem;
}

.auth-password-requirements {
  background: var(--color-bg-subtle, rgb(248 250 252));
  border: 1px solid var(--color-border-subtle, rgb(226 232 240));
  border-radius: 0.75rem;
  margin: 0 0 1rem;
  padding: 0.85rem 1rem;
}

.auth-password-requirements__title {
  color: var(--color-text-primary, #0f172a);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  margin: 0 0 0.5rem;
  text-transform: uppercase;
}

.auth-password-requirements__list {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.auth-password-req {
  align-items: center;
  color: var(--color-text-secondary, rgb(100 116 139));
  display: flex;
  font-size: 0.875rem;
  gap: 0.45rem;
  line-height: 1.3;
}

.auth-password-req__mark {
  color: var(--color-text-secondary, rgb(148 163 184));
  flex-shrink: 0;
  font-size: 0.7rem;
  width: 1rem;
}

.auth-password-req.is-valid {
  color: var(--nft-s06-3e50075c8852);
}

.auth-password-req.is-valid .auth-password-req__mark {
  color: var(--nft-s06-3955e8b621f6);
}

.auth-password-req.is-invalid {
  color: var(--nft-s06-d2301af1c6a1);
}

.auth-password-req.is-invalid .auth-password-req__mark {
  color: var(--nft-s06-9e4bef748467);
}

.auth-password-requirements__note {
  color: var(--color-text-secondary, rgb(100 116 139));
  font-size: 0.8rem;
  line-height: 1.4;
  margin: 0.65rem 0 0;
}

.auth-password-match {
  font-size: 0.875rem;
  margin: 0.25rem 0 0.85rem;
  min-height: 1.25rem;
}

.auth-password-match.is-match {
  color: var(--nft-s06-3e50075c8852);
}

.auth-password-match.is-mismatch {
  color: var(--nft-s06-d2301af1c6a1);
}

[data-theme="dark"] .auth-password-requirements {
  background: var(--nft-s06-83fc59e5527b);
  border-color: var(--nft-s06-f32a807a8ceb);
}

[data-theme="dark"] .auth-password-help,
[data-theme="dark"] .auth-password-requirements__note {
  color: var(--nft-s06-ea5286f5eec2);
}
