
    :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);
    }

    /* static/css/base/tema-escuro.css carrega DEPOIS deste arquivo e
       tem uma regra genérica ".btn-tema-toggle { position: relative }"
       (usada nos portais, onde o botão fica inline na barra de
       cabeçalho) -- como o botão daqui tem as DUAS classes
       (btn-tema-toggle-login E btn-tema-toggle), a regra genérica
       empatava em especificidade e vencia por ordem de carregamento,
       jogando o botão fixo pra dentro do fluxo normal da página (bug
       real -- ele aparecia colado no canto superior esquerdo em vez de
       fixo no canto superior direito). Seletor composto (2 classes)
       tem especificidade maior, então SEMPRE vence, direto aqui. */
    .btn-tema-toggle-login.btn-tema-toggle {
      position: fixed;
    }

    .btn-voltar-login {
      position: fixed;
      top: 1.25rem;
      left: 1.25rem;
      z-index: 1000;
      height: 42px;
      padding: 0 1rem;
      border-radius: 10px;
      border: 1px solid #eef5f1;
      background: #fff;
      color: #17362b;
      display: flex;
      align-items: center;
      gap: .45rem;
      font-size: .82rem;
      font-weight: 700;
      text-decoration: none;
      box-shadow: 0 4px 14px rgba(15, 46, 36, .08);
      transition: border-color .15s, color .15s;
    }

    .btn-voltar-login:hover {
      border-color: var(--perspicaz-green);
      color: var(--perspicaz-green);
      text-decoration: none;
    }

    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 (hidden on mobile) ===== */
    .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;
    }

    .badge-nr i {
      font-size: 0.85rem;
    }

    .left-panel h1 {
      font-size: 2.35rem;
      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: 2.25rem;
      max-width: 480px;
    }

    .stats-row {
      display: flex;
      flex-wrap: wrap;
      gap: 1.75rem;
    }

    .stat-item {
      display: flex;
      align-items: center;
      gap: 0.75rem;
    }

    .stat-icon {
      width: 42px;
      height: 42px;
      border-radius: 12px;
      background: var(--perspicaz-green-light);
      color: var(--perspicaz-green);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.15rem;
      flex-shrink: 0;
    }

    .stat-text strong {
      display: block;
      font-size: 1.15rem;
      font-weight: 700;
      color: #0f2e24;
      line-height: 1.2;
    }

    .stat-text span {
      font-size: 0.8rem;
      color: #5a7369;
      font-weight: 500;
    }

    .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 (FORM) — full screen on mobile ===== */
    .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 brand */
    .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;
    }

    .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;
    }

    .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;
    }

    .input-group-text {
      background: #fafcfb;
      border: 1.5px solid #d8e8e1;
      border-right: none;
      border-radius: 12px 0 0 12px;
      color: #6b8178;
      padding: 0 0.9rem;
      min-height: 50px;
    }

    .input-group .form-control {
      border-left: none;
      border-radius: 0 12px 12px 0;
    }

    .input-group:focus-within .input-group-text {
      border-color: var(--perspicaz-green);
      color: var(--perspicaz-green);
    }

    .input-group:focus-within .form-control {
      border-color: var(--perspicaz-green);
    }

    .btn-login {
      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-login:hover,
    .btn-login:focus {
      background: var(--perspicaz-green-dark);
      color: #fff;
      box-shadow: 0 6px 20px rgba(13, 107, 79, 0.3);
    }

    .btn-login:active {
      transform: scale(0.98);
    }

    .forgot-link {
      font-size: 0.85rem;
      color: var(--perspicaz-green);
      text-decoration: none;
      font-weight: 500;
    }

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

    .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.75rem;
        padding-top: 0;
      }
    }

    .security-note i {
      font-size: 0.9rem;
      color: #5a7369;
    }

    /* Safe area for notched phones */
    @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));
      }
    }
