/* ══════════════════════════════════════════════════
   Pré-Cadastro Semente da Vida — CSS Público
   PA3CS | http://pa3cs.com.br
   ══════════════════════════════════════════════════ */

.psv-widget-wrap {
    --psv-primary:  #1d6b3e;
    --psv-bg:       #ffffff;
    --psv-radius:   12px;
    --psv-shadow:   0 2px 16px rgba(0,0,0,.08);
    --psv-ease:     cubic-bezier(0.23, 1, 0.32, 1);
    font-family: inherit;
    max-width: 820px;
    margin: 0 auto;
}

/* ── Ícone decorativo ── */
.psv-form-icone-topo {
    font-size: 48px;
    text-align: center;
    margin-bottom: 12px;
    animation: psv-bounce 2s ease-in-out infinite;
}
@keyframes psv-bounce {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(-6px); }
}

/* ── Cabeçalho ── */
.psv-form-titulo {
    font-size: clamp(22px, 3.5vw, 32px);
    font-weight: 800;
    color: #1a1a1a;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}
.psv-form-subtitulo {
    font-size: 15px;
    color: #666;
    text-align: center;
    margin: 0 0 32px;
    line-height: 1.6;
}

/* ── Formulário ── */
.psv-form {
    background: var(--psv-bg);
    border-radius: var(--psv-radius);
    box-shadow: var(--psv-shadow);
    overflow: hidden;
}

/* ── Seções ── */
.psv-secao {
    padding: 24px 28px;
    border-bottom: 1px solid #f0f0f0;
}
.psv-secao:last-of-type { border-bottom: none; }

.psv-secao-titulo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 15px;
    font-weight: 700;
    color: #1a1a1a;
    margin-bottom: 18px;
}
.psv-secao-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background: var(--psv-primary);
    color: #fff;
    border-radius: 50%;
    font-size: 13px;
    font-weight: 800;
    flex-shrink: 0;
}

/* ── Grade de campos ── */
.psv-campos-grid {
    display: grid;
    gap: 16px;
}
@media (max-width: 600px) {
    .psv-campos-grid { grid-template-columns: 1fr !important; }
}
.psv-col-full { grid-column: 1 / -1; }

/* ── Campo individual ── */
.psv-campo {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.psv-campo label {
    font-size: 13px;
    font-weight: 600;
    color: #444;
}
.psv-obrig { color: #e53e3e; margin-left: 2px; }

.psv-campo input,
.psv-campo select,
.psv-campo textarea {
    padding: 10px 14px;
    border: 1.5px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    color: #333;
    background: #fafafa;
    transition: border-color 180ms var(--psv-ease), box-shadow 180ms var(--psv-ease), background 180ms;
    outline: none;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
}
.psv-campo input:focus,
.psv-campo select:focus,
.psv-campo textarea:focus {
    border-color: var(--psv-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--psv-primary) 15%, transparent);
    background: #fff;
}
.psv-campo input.psv-invalido,
.psv-campo select.psv-invalido,
.psv-campo textarea.psv-invalido {
    border-color: #e53e3e;
    box-shadow: 0 0 0 3px rgba(229,62,62,.12);
}
.psv-campo input.psv-valido,
.psv-campo select.psv-valido {
    border-color: #38a169;
}
.psv-campo textarea { resize: vertical; min-height: 80px; }
.psv-campo select { cursor: pointer; }

/* ── Mensagem de erro do campo ── */
.psv-erro {
    font-size: 11px;
    color: #e53e3e;
    font-weight: 600;
    min-height: 14px;
    display: block;
}

/* ── LGPD ── */
.psv-lgpd {
    padding: 20px 28px;
    background: #f8fdf8;
    border-top: 1px solid #e8f5e9;
}
.psv-lgpd-label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
    font-size: 13px;
    color: #555;
    line-height: 1.5;
}
.psv-lgpd-label input[type=checkbox] {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    margin-top: 1px;
    accent-color: var(--psv-primary);
    cursor: pointer;
}

/* ── Botão de envio ── */
.psv-submit-wrap {
    padding: 20px 28px 24px;
    text-align: center;
}
.psv-btn-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--psv-primary);
    color: #fff;
    border: none;
    padding: 14px 40px;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 200ms var(--psv-ease), transform 140ms var(--psv-ease), box-shadow 200ms;
    box-shadow: 0 4px 14px color-mix(in srgb, var(--psv-primary) 35%, transparent);
    min-width: 220px;
    font-family: inherit;
}
.psv-btn-submit:hover {
    background: color-mix(in srgb, var(--psv-primary) 85%, #000);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px color-mix(in srgb, var(--psv-primary) 40%, transparent);
}
.psv-btn-submit:active {
    transform: scale(0.97);
}
.psv-btn-submit:disabled {
    opacity: .7;
    cursor: not-allowed;
    transform: none;
}

/* ── Mensagem de erro geral ── */
.psv-msg-erro {
    margin: 0 28px 20px;
    padding: 12px 16px;
    background: #fee2e2;
    border: 1px solid #fca5a5;
    border-radius: 8px;
    color: #991b1b;
    font-size: 14px;
    font-weight: 600;
    text-align: center;
}

/* ── Tela de sucesso ── */
.psv-sucesso {
    background: var(--psv-bg);
    border-radius: var(--psv-radius);
    box-shadow: var(--psv-shadow);
    padding: 48px 32px;
    text-align: center;
    animation: psv-fade-in 400ms var(--psv-ease) both;
}
.psv-sucesso-icone {
    font-size: 64px;
    margin-bottom: 16px;
    animation: psv-pop 500ms var(--psv-ease) both;
}
@keyframes psv-pop {
    from { transform: scale(0.5); opacity: 0; }
    to   { transform: scale(1);   opacity: 1; }
}
.psv-sucesso-titulo {
    font-size: 26px;
    font-weight: 800;
    color: #1a1a1a;
    margin: 0 0 10px;
}
.psv-sucesso-msg {
    font-size: 15px;
    color: #555;
    margin: 0 0 28px;
    line-height: 1.6;
}
.psv-protocolo-box {
    background: #f0f7f0;
    border: 2px solid var(--psv-primary);
    border-radius: 12px;
    padding: 20px 28px;
    margin: 0 auto 28px;
    max-width: 380px;
}
.psv-protocolo-label {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .8px;
    color: #666;
    margin: 0 0 6px;
}
.psv-protocolo-num {
    font-size: 32px;
    font-weight: 900;
    color: var(--psv-primary);
    letter-spacing: 3px;
    margin: 0 0 8px;
    font-family: monospace;
}
.psv-protocolo-info {
    font-size: 12px;
    color: #888;
    margin: 0;
    line-height: 1.5;
}
.psv-btn-novo {
    background: transparent;
    border: 2px solid var(--psv-primary);
    color: var(--psv-primary);
    padding: 10px 28px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: all 180ms var(--psv-ease);
    font-family: inherit;
}
.psv-btn-novo:hover {
    background: var(--psv-primary);
    color: #fff;
}

/* ── Animação de entrada ── */
@media (prefers-reduced-motion: no-preference) {
    @keyframes psv-fade-in {
        from { opacity: 0; transform: translateY(16px); }
        to   { opacity: 1; transform: translateY(0); }
    }
    .psv-secao {
        animation: psv-fade-in 300ms var(--psv-ease) both;
    }
    .psv-secao:nth-child(1) { animation-delay: 0ms; }
    .psv-secao:nth-child(2) { animation-delay: 60ms; }
    .psv-secao:nth-child(3) { animation-delay: 120ms; }
    .psv-secao:nth-child(4) { animation-delay: 180ms; }
}

/* ── Responsivo ── */
@media (max-width: 600px) {
    .psv-secao { padding: 18px 16px; }
    .psv-submit-wrap { padding: 16px; }
    .psv-lgpd { padding: 16px; }
    .psv-btn-submit { width: 100%; }
    .psv-protocolo-num { font-size: 24px; letter-spacing: 2px; }
}
