*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --surface:     #0b0e14;
      --surface-c:   #161a21;
      --surface-h:   #1c2028;
      --primary:     #a1faff;
      --on-surface:  #ecedf6;
      --muted:       #a9abb3;
      --danger:      #ff7166;
    }

    body {
      background: var(--surface);
      color: var(--on-surface);
      font-family: 'Inter', system-ui, sans-serif;
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 24px;
      -webkit-font-smoothing: antialiased;
    }

    /* ── Brand ── */
    .login-brand {
      text-align: center;
      margin-bottom: 28px;
    }
    .login-brand-name {
      font-family: 'Plus Jakarta Sans', sans-serif;
      font-size: 42px;
      font-weight: 900;
      letter-spacing: 0.06em;
      color: var(--primary);
      line-height: 1;
    }
    .login-brand-sub {
      font-family: 'Manrope', sans-serif;
      font-size: 10px;
      font-weight: 700;
      color: var(--muted);
      opacity: 0.6;
      text-transform: uppercase;
      letter-spacing: 0.22em;
      margin-top: 6px;
    }

    /* ── Card ── */
    .login-card {
      background: var(--surface-c);
      border-radius: 20px;
      padding: 32px 36px;
      width: 100%;
      max-width: 420px;
    }

    .login-card h2 {
      font-family: 'Plus Jakarta Sans', sans-serif;
      font-size: 20px;
      font-weight: 800;
      color: var(--on-surface);
      margin-bottom: 20px;
    }

    /* ── Banner info ── */
    .login-banner {
      display: flex;
      align-items: center;
      gap: 10px;
      background: rgba(74,222,128,0.1);
      border: 1px solid rgba(74,222,128,0.2);
      border-radius: 10px;
      padding: 11px 14px;
      font-family: 'Manrope', sans-serif;
      font-size: 12px;
      font-weight: 600;
      color: #16a34a;
      margin-bottom: 22px;
    }

    .login-banner-error {
      background: rgba(255,113,102,0.1);
      border-color: rgba(255,113,102,0.25);
      color: var(--danger);
      display: none;
    }

    /* ── Labels ── */
    .field-label {
      display: flex;
      align-items: center;
      gap: 8px;
      font-family: 'Manrope', sans-serif;
      font-size: 10px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.1em;
      color: var(--muted);
      margin-bottom: 7px;
    }

    /* ── Inputs ── */
    .field-wrap {
      margin-bottom: 18px;
    }

    .field-input {
      width: 100%;
      background: rgba(255,255,255,0.05);
      border: 1px solid rgba(255,255,255,0.09);
      border-radius: 10px;
      color: var(--on-surface);
      font-family: 'Inter', sans-serif;
      font-size: 14px;
      padding: 11px 14px;
      transition: border-color 0.2s, box-shadow 0.2s;
      outline: none;
    }
    .field-input:focus {
      border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(161,250,255,0.12);
    }
    .field-input::placeholder { color: var(--muted); opacity: 0.4; }

    .field-pw-wrap { position: relative; }
    .field-pw-toggle {
      position: absolute; top: 50%; right: 12px;
      transform: translateY(-50%);
      background: none; border: none; cursor: pointer;
      color: var(--muted); font-size: 14px; padding: 4px; line-height: 1;
    }

    /* ── Botón login ── */
    .btn-login {
      width: 100%;
      padding: 13px;
      background: linear-gradient(135deg, #7c3aed, #a78bfa);
      border: none;
      border-radius: 12px;
      color: #fff;
      font-family: 'Manrope', sans-serif;
      font-size: 14px;
      font-weight: 700;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      margin-top: 24px;
      transition: filter 0.2s, transform 0.1s;
    }
    .btn-login:hover:not(:disabled) { filter: brightness(1.1); }
    .btn-login:active:not(:disabled) { transform: scale(0.98); }
    .btn-login:disabled { opacity: 0.65; cursor: not-allowed; }

    /* ── Footer ── */
    .login-footer {
      margin-top: 28px;
      font-family: 'Manrope', sans-serif;
      font-size: 10px;
      color: rgba(169,171,179,0.4);
      text-transform: uppercase;
      letter-spacing: 0.1em;
      text-align: center;
    }

    .spinner-sm {
      width: 16px; height: 16px;
      border: 2px solid rgba(255,255,255,0.3);
      border-top-color: white;
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
      display: inline-block;
    }
    @keyframes spin { to { transform: rotate(360deg); } }
