  *,
  *::before,
  *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
  }

  body {
      font-family: 'Inter', sans-serif;
      background: #f0f4f8;
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
  }

  /* ── Card wrapper ── */
  .login-card {
      display: flex;
      width: min(920px, 95vw);
      border-radius: 18px;
      overflow: hidden;
      box-shadow: 0 20px 60px rgba(0, 0, 0, .14);
      background: #fff;
  }

  /* ── Left panel – image ── */
  .panel-image {
      flex: 0 0 48%;
      position: relative;
      background: url('https://images.unsplash.com/photo-1586773860418-d37222d8fce3?w=900&q=80') center/cover no-repeat;
      min-height: 460px;
  }

  .panel-image::after {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(160deg, rgba(10, 40, 100, .35) 0%, rgba(5, 20, 60, .70) 100%);
  }

  .panel-image-content {
      position: absolute;
      bottom: 36px;
      left: 36px;
      z-index: 1;
      color: #fff;
  }

  .panel-image-content .brand {
      font-size: 2rem;
      font-weight: 700;
      letter-spacing: -.5px;
      margin-bottom: 8px;
  }

  .panel-image-content p {
      font-size: .92rem;
      line-height: 1.5;
      opacity: .88;
      max-width: 280px;
  }

  /* ── Right panel – form ── */
  .panel-form {
      flex: 1;
      padding: 52px 48px;
      display: flex;
      flex-direction: column;
      justify-content: center;
  }

  .form-title {
      display: flex;
      align-items: center;
      gap: 10px;
      color: #1a4ed8;
      font-size: 1.55rem;
      font-weight: 700;
      margin-bottom: 32px;
  }

  .form-title .icon-wrap {
      width: 36px;
      height: 36px;
      background: #1a4ed8;
      border-radius: 8px;
      display: flex;
      align-items: center;
      justify-content: center;
  }

  .form-title .icon-wrap svg {
      width: 20px;
      height: 20px;
      fill: #fff;
  }

  .form-label {
      font-size: .72rem;
      font-weight: 600;
      letter-spacing: .08em;
      text-transform: uppercase;
      color: #374151;
      margin-bottom: 6px;
  }

  .input-group-custom {
      display: flex;
      align-items: center;
      border: 1.5px solid #d1d5db;
      border-radius: 8px;
      background: #f9fafb;
      transition: border-color .2s, box-shadow .2s;
      overflow: hidden;
  }

  .input-group-custom:focus-within {
      border-color: #1a4ed8;
      box-shadow: 0 0 0 3px rgba(26, 78, 216, .12);
      background: #fff;
  }

  .input-group-custom .input-icon {
      padding: 0 12px;
      color: #9ca3af;
      display: flex;
      align-items: center;
      flex-shrink: 0;
  }

  .input-group-custom input {
      border: none;
      background: transparent;
      padding: 11px 12px 11px 0;
      font-size: .93rem;
      color: #111827;
      width: 100%;
      outline: none;
  }

  .input-group-custom input::placeholder {
      color: #9ca3af;
  }

  .form-check-label {
      font-size: .88rem;
      color: #374151;
  }

  .form-check-input:checked {
      background-color: #1a4ed8;
      border-color: #1a4ed8;
  }

  .btn-ingresar {
      background: #1a4ed8;
      color: #fff;
      border: none;
      border-radius: 8px;
      padding: 12px;
      font-size: .97rem;
      font-weight: 600;
      letter-spacing: .02em;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      cursor: pointer;
      transition: background .2s, transform .1s, box-shadow .2s;
      box-shadow: 0 4px 14px rgba(26, 78, 216, .35);
  }

  .btn-ingresar:hover {
      background: #1740b0;
      box-shadow: 0 6px 18px rgba(26, 78, 216, .45);
  }

  .btn-ingresar:active {
      transform: scale(.98);
  }

  .divider {
      display: flex;
      align-items: center;
      gap: 12px;
      margin: 24px 0 18px;
      color: #d1d5db;
      font-size: .82rem;
  }

  .divider::before,
  .divider::after {
      content: '';
      flex: 1;
      height: 1px;
      background: #e5e7eb;
  }

  .new-patient-label {
      text-align: center;
      font-size: .87rem;
      color: #6b7280;
      margin-bottom: 12px;
  }

  .btn-register {
      display: block;
      width: 100%;
      border: 1.5px solid #1a4ed8;
      border-radius: 8px;
      padding: 11px;
      font-size: .93rem;
      font-weight: 600;
      color: #1a4ed8;
      background: transparent;
      text-align: center;
      cursor: pointer;
      transition: background .2s, color .2s;
  }

  .btn-register:hover {
      background: #eff3ff;
  }

  /* ── Footer ── */
  .footer-text {
      margin-top: 28px;
      font-size: .78rem;
      color: #9ca3af;
      text-align: center;
  }

  @media (max-width: 900px) {
      .login-card {
          flex-direction: column;
          width: min(100%, 95vw);
      }

      .panel-image {
          flex: 0 0 auto;
          width: 100%;
          min-height: 280px;
      }

      .panel-image-content {
          left: 24px;
          bottom: 24px;
      }

      .panel-form {
          padding: 36px 24px;
      }

      .form-title {
          font-size: 1.35rem;
      }

      .input-group-custom input {
          padding-left: 0;
      }
  }

  @media (max-width: 600px) {
      .login-card {
          width: min(100%, 98vw);
      }

      .panel-form {
          padding: 30px 18px;
      }

      .panel-image-content .brand {
          font-size: 1.75rem;
      }

      .panel-image-content p {
          max-width: 100%;
          font-size: 0.9rem;
      }

      .form-title {
          gap: 8px;
      }

      .btn-ingresar,
      .btn-register {
          padding: 12px 14px;
      }
  }