
    :root {
      --perspicaz-green: #0d6b4f;
      --perspicaz-green-dark: #0a5a42;
      --perspicaz-green-light: #e8f5f0;
      --perspicaz-accent: #1a8a66;
    }

    * { box-sizing: border-box; }

    .btn-tema-toggle-login {
      position: fixed;
      top: 1.25rem;
      right: 1.25rem;
      z-index: 1000;
      width: 42px;
      height: 42px;
      border-radius: 10px;
      border: 1px solid #eef5f1;
      background: #fff;
      color: #17362b;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.05rem;
      box-shadow: 0 4px 14px rgba(15, 46, 36, .08);
      transition: border-color .15s, color .15s;
    }

    .btn-tema-toggle-login:hover {
      border-color: var(--perspicaz-green);
      color: var(--perspicaz-green);
    }

    /* tema-escuro.css carrega depois e tem ".btn-tema-toggle {
       position: relative }" genérico (pros portais, onde o botão fica
       inline no cabeçalho) -- empatava em especificidade com a classe
       única acima e vencia por ordem de carregamento, tirando o botão
       do canto fixo. Seletor composto (2 classes) sempre vence. */
    .btn-tema-toggle-login.btn-tema-toggle {
      position: fixed;
    }

    body {
      font-family: 'Inter', system-ui, -apple-system, sans-serif;
      background: linear-gradient(160deg, #f0faf6 0%, #e8f5f0 50%, #f5fbf8 100%);
      min-height: 100vh;
      min-height: 100dvh;
      margin: 0;
      color: #1a2e28;
      -webkit-font-smoothing: antialiased;
    }

    .login-wrapper {
      min-height: 100vh;
      min-height: 100dvh;
      display: flex;
      align-items: stretch;
      justify-content: center;
      padding: 0;
    }

    @media (min-width: 992px) {
      .login-wrapper {
        align-items: center;
        padding: 1.5rem;
      }
    }

    .login-container {
      width: 100%;
      background: #ffffff;
      display: flex;
      flex-direction: column;
      min-height: 100vh;
      min-height: 100dvh;
    }

    @media (min-width: 992px) {
      .login-container {
        max-width: 1100px;
        border-radius: 24px;
        box-shadow: 0 20px 60px rgba(13, 107, 79, 0.12), 0 4px 16px rgba(0, 0, 0, 0.04);
        overflow: hidden;
        flex-direction: row;
        min-height: 580px;
        height: auto;
      }
    }

    /* ===== LEFT PANEL (desktop only) ===== */
    .left-panel {
      display: none;
      flex: 1.1;
      padding: 3.5rem 3rem 3.5rem 3.5rem;
      background: linear-gradient(160deg, #ffffff 0%, #f7fcfa 100%);
      flex-direction: column;
      justify-content: center;
      position: relative;
    }

    @media (min-width: 992px) {
      .left-panel { display: flex; }
    }

    .badge-nr {
      display: inline-flex;
      align-items: center;
      gap: 0.4rem;
      background: var(--perspicaz-green-light);
      color: var(--perspicaz-green);
      font-size: 0.75rem;
      font-weight: 600;
      padding: 0.4rem 0.9rem;
      border-radius: 50px;
      margin-bottom: 1.5rem;
      letter-spacing: 0.02em;
    }

    .left-panel h1 {
      font-size: 2.15rem;
      font-weight: 800;
      line-height: 1.25;
      color: #0f2e24;
      margin-bottom: 1.25rem;
    }

    .left-panel h1 .highlight {
      color: var(--perspicaz-green);
    }

    .left-panel .lead {
      font-size: 0.95rem;
      line-height: 1.65;
      color: #4a635a;
      margin-bottom: 2rem;
      max-width: 460px;
    }

    .steps-list {
      list-style: none;
      padding: 0;
      margin: 0;
    }

    .steps-list li {
      display: flex;
      align-items: flex-start;
      gap: 0.85rem;
      margin-bottom: 1.1rem;
      font-size: 0.9rem;
      color: #3d5a50;
    }

    .step-num {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      background: var(--perspicaz-green-light);
      color: var(--perspicaz-green);
      font-weight: 700;
      font-size: 0.8rem;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
    }

    .left-panel::after {
      content: '';
      position: absolute;
      bottom: -40px;
      right: -40px;
      width: 180px;
      height: 180px;
      background: radial-gradient(circle, rgba(13, 107, 79, 0.06) 0%, transparent 70%);
      border-radius: 50%;
      pointer-events: none;
    }

    /* ===== RIGHT PANEL ===== */
    .right-panel {
      flex: 1;
      padding: 0;
      background: #ffffff;
      display: flex;
      flex-direction: column;
      min-height: 100vh;
      min-height: 100dvh;
    }

    @media (min-width: 992px) {
      .right-panel {
        flex: 0.9;
        padding: 3rem 2.75rem;
        border-left: 1px solid #eef5f1;
        min-height: auto;
        justify-content: center;
      }
    }

    /* Mobile header */
    .mobile-header {
      display: flex;
      flex-direction: column;
      align-items: center;
      padding: 2.25rem 1.5rem 1.5rem;
      text-align: center;
      background: linear-gradient(180deg, #f7fcfa 0%, #ffffff 100%);
      border-bottom: 1px solid #eef5f1;
    }

    @media (min-width: 992px) {
      .mobile-header { display: none; }
    }

    .mobile-logo-img {
      height: 76px;
      width: auto;
      margin-bottom: 0.85rem;
    }

    .left-panel-logo-link {
      display: inline-block;
      margin-bottom: 1.5rem;
    }

    .left-panel-logo {
      height: 84px;
      width: auto;
      display: block;
    }

    .mobile-title {
      font-size: 1.35rem;
      font-weight: 700;
      color: #0f2e24;
      margin: 0;
    }

    .mobile-subtitle {
      font-size: 0.85rem;
      color: #6b8178;
      margin-top: 0.25rem;
      max-width: 280px;
    }

    .form-card {
      width: 100%;
      max-width: 420px;
      margin: 0 auto;
      padding: 1.75rem 1.5rem 2rem;
      flex: 1;
      display: flex;
      flex-direction: column;
    }

    @media (min-width: 992px) {
      .form-card {
        padding: 0;
        max-width: 380px;
        flex: none;
      }
    }

    .form-card .card-header-custom {
      text-align: center;
      margin-bottom: 1.75rem;
      display: none;
    }

    @media (min-width: 992px) {
      .form-card .card-header-custom { display: block; }
    }

    .form-card .card-header-custom .top-bar {
      height: 4px;
      width: 100%;
      background: linear-gradient(90deg, var(--perspicaz-green) 0%, var(--perspicaz-accent) 100%);
      border-radius: 4px 4px 0 0;
      margin-bottom: 1.5rem;
    }

    .form-card h2 {
      font-size: 1.45rem;
      font-weight: 700;
      color: #0f2e24;
      margin-bottom: 0.35rem;
    }

    .form-card .subtitle {
      font-size: 0.875rem;
      color: #6b8178;
      line-height: 1.5;
    }

    .form-label {
      font-size: 0.85rem;
      font-weight: 600;
      color: #2d4a40;
      margin-bottom: 0.4rem;
    }

    .form-control {
      border: 1.5px solid #d8e8e1;
      border-radius: 12px;
      padding: 0.85rem 1rem;
      font-size: 1rem;
      transition: border-color 0.2s, box-shadow 0.2s;
      background: #fafcfb;
      min-height: 50px;
    }

    .form-control:focus {
      border-color: var(--perspicaz-green);
      box-shadow: 0 0 0 3px rgba(13, 107, 79, 0.15);
      background: #fff;
      outline: none;
    }

    .form-control::placeholder { color: #a0b5ab; }

    .form-control.is-invalid {
      border-color: #dc3545;
    }

    .form-control.is-valid {
      border-color: var(--perspicaz-green);
    }

    .invalid-feedback {
      font-size: 0.8rem;
    }

    .btn-primary-action {
      background: var(--perspicaz-green);
      border: none;
      border-radius: 12px;
      padding: 0.95rem 1.5rem;
      font-weight: 600;
      font-size: 1.05rem;
      letter-spacing: 0.01em;
      transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.5rem;
      min-height: 54px;
      color: #fff;
    }

    .btn-primary-action:hover,
    .btn-primary-action:focus {
      background: var(--perspicaz-green-dark);
      color: #fff;
      box-shadow: 0 6px 20px rgba(13, 107, 79, 0.3);
    }

    .btn-primary-action:active { transform: scale(0.98); }
    .btn-primary-action:disabled {
      opacity: 0.75;
      cursor: not-allowed;
    }

    .btn-back {
      display: inline-flex;
      align-items: center;
      gap: 0.4rem;
      font-size: 0.9rem;
      font-weight: 500;
      color: var(--perspicaz-green);
      text-decoration: none;
      margin-top: 1.25rem;
      justify-content: center;
    }

    .btn-back:hover {
      color: var(--perspicaz-green-dark);
      text-decoration: underline;
    }

    .security-note {
      text-align: center;
      margin-top: auto;
      padding-top: 1.5rem;
      font-size: 0.8rem;
      color: #7a9088;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.4rem;
    }

    @media (min-width: 992px) {
      .security-note {
        margin-top: 1.5rem;
        padding-top: 0;
      }
    }

    /* Success state */
    .success-state {
      display: none;
      text-align: center;
      padding: 1rem 0;
    }

    .success-state.active {
      display: block;
    }

    .success-icon {
      width: 72px;
      height: 72px;
      border-radius: 50%;
      background: var(--perspicaz-green-light);
      color: var(--perspicaz-green);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 2rem;
      margin: 0 auto 1.25rem;
    }

    .success-icon-warn {
      background: #fdeeea;
      color: #dc3545;
    }

    .success-state h3 {
      font-size: 1.3rem;
      font-weight: 700;
      color: #0f2e24;
      margin-bottom: 0.5rem;
    }

    .success-state p {
      font-size: 0.9rem;
      color: #4a635a;
      line-height: 1.55;
      margin-bottom: 0.5rem;
    }

    .success-email {
      font-weight: 600;
      color: var(--perspicaz-green);
      word-break: break-all;
    }

    .success-hint {
      font-size: 0.8rem;
      color: #7a9088;
      margin-top: 1rem;
    }

    /* Form state hide when success */
    .form-state.hidden {
      display: none;
    }

    @supports (padding: max(0px)) {
      .mobile-header {
        padding-top: max(2.25rem, env(safe-area-inset-top));
      }
      .form-card {
        padding-bottom: max(2rem, env(safe-area-inset-bottom));
      }
    }
 