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

.cadastro-body {
    font-family: var(--fonte-base);
    background:
        radial-gradient(ellipse 120% 80% at 50% -20%, rgba(26, 107, 87, 0.18), transparent 55%),
        linear-gradient(180deg, var(--verde-050) 0%, var(--cinza-050) 45%, var(--branco) 100%);
    color: var(--cinza-800);
    min-height: 100vh;
    line-height: 1.5;
}

.cadastro-shell {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    max-width: 480px;
    margin: 0 auto;
    padding: var(--space-4);
}

.cadastro-header {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) 0 var(--space-5);
}

.cadastro-logo {
    width: 48px;
    height: 48px;
    object-fit: cover;
    border-radius: var(--radius-md);
    background: #000;
    box-shadow: 0 0 0 1px rgba(230, 190, 80, 0.35);
}

.cadastro-brand {
    font-size: var(--text-lg);
    font-weight: 700;
    color: var(--verde-900);
    letter-spacing: 0.02em;
}

.cadastro-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

.cadastro-card {
    background: var(--branco);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    padding: var(--space-5) var(--space-4);
}

.cadastro-sucesso {
    margin: auto 0;
    text-align: center;
}

.cadastro-sucesso-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin-bottom: var(--space-4);
    border-radius: 50%;
    background: var(--verde-050);
    color: var(--verde-700);
    font-size: 2rem;
    font-weight: 700;
}

.cadastro-sucesso .cadastro-token-hint {
    text-align: left;
}

.cadastro-home {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: auto 0;
    padding: var(--space-6) var(--space-4);
    text-align: center;
}

.cadastro-home-logo {
    display: block;
    width: min(180px, 58vw);
    height: auto;
    margin-bottom: var(--space-5);
}

.cadastro-home-titulo {
    max-width: 22rem;
    margin: 0;
    color: var(--verde-900);
    font-size: var(--text-lg);
    font-weight: 600;
    line-height: 1.45;
}

.cadastro-home-acoes {
    display: grid;
    width: 100%;
    gap: var(--space-3);
    margin-top: var(--space-5);
}

.cadastro-home-acoes form {
    margin: 0;
}

.cadastro-home-alerta {
    width: 100%;
    margin-top: var(--space-4);
    margin-bottom: 0;
    text-align: left;
}

.cadastro-title {
    font-size: var(--text-xl);
    font-weight: 700;
    color: var(--verde-900);
    margin-bottom: var(--space-3);
}

.cadastro-subtitle {
    font-size: var(--text-base);
    color: var(--cinza-600);
}

.cadastro-subtitle-compact {
    margin-bottom: var(--space-4);
    font-size: var(--text-sm);
}

.cadastro-etapa-meta {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-3);
    border-bottom: 1px solid var(--cinza-100);
}

.cadastro-etapa-meta span {
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cinza-400);
}

.cadastro-etapa-meta strong {
    font-size: var(--text-lg);
    color: var(--verde-900);
}

.cadastro-alerta {
    margin-bottom: var(--space-4);
    padding: var(--space-3);
    border-radius: var(--radius-sm);
    background: var(--vermelho-100);
    color: var(--vermelho-600);
    font-size: var(--text-sm);
}

.cadastro-campo {
    margin-bottom: var(--space-4);
}

.cadastro-campo label {
    display: block;
    margin-bottom: var(--space-2);
    font-size: var(--text-sm);
    font-weight: 500;
    color: var(--cinza-800);
}

.obrigatorio {
    color: var(--vermelho-500);
    font-weight: 700;
    margin-left: 2px;
}

.cadastro-busca {
    position: relative;
}

.cadastro-busca-lista {
    position: absolute;
    z-index: 20;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    max-height: 220px;
    overflow-y: auto;
    margin: 0;
    padding: 0;
    list-style: none;
    background: var(--branco);
    border: 1px solid var(--cinza-200);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-md);
}

.cadastro-busca-lista li {
    padding: var(--space-3);
    font-size: var(--text-sm);
    color: var(--cinza-800);
    cursor: pointer;
}

.cadastro-busca-lista li:hover {
    background: var(--verde-050);
    color: var(--verde-900);
}

.cadastro-busca-lista .cadastro-busca-vazio {
    color: var(--cinza-400);
    cursor: default;
}

.cadastro-busca-lista .cadastro-busca-vazio:hover {
    background: transparent;
    color: var(--cinza-400);
}

.cadastro-check {
    display: flex;
    align-items: flex-start;
    gap: var(--space-2);
    margin-top: var(--space-3);
    font-size: var(--text-sm);
    font-weight: 400;
    color: var(--cinza-600);
    cursor: pointer;
}

.cadastro-check input {
    margin-top: 3px;
    flex-shrink: 0;
}

.cadastro-campo .form-control,
.cadastro-campo .form-select {
    min-height: 48px;
    border-radius: var(--radius-sm);
    border-color: var(--cinza-200);
    font-size: var(--text-base);
}

.cadastro-campo .form-control.is-invalid,
.cadastro-campo .form-select.is-invalid {
    border-color: var(--vermelho-500);
    box-shadow: 0 0 0 3px rgba(220, 68, 55, 0.14);
}

.cadastro-campo .form-control.is-invalid:focus,
.cadastro-campo .form-select.is-invalid:focus {
    border-color: var(--vermelho-600);
    box-shadow: 0 0 0 3px rgba(220, 68, 55, 0.2);
}

.cadastro-campo-erro {
    display: block;
    margin-top: var(--space-2);
    color: var(--vermelho-600);
    font-size: var(--text-xs);
    font-weight: 500;
}

.cadastro-campo .form-control.is-consultando {
    opacity: 0.75;
}

.cadastro-campo-ajuda {
    display: block;
    margin-top: var(--space-2);
    font-size: var(--text-xs);
    color: var(--cinza-500);
}

.cadastro-campo-ajuda.is-loading {
    color: var(--verde-700);
}

.cadastro-campo-ajuda.is-ok {
    color: var(--verde-700);
}

.cadastro-campo-ajuda.is-erro {
    color: #b42318;
}

.cadastro-campo-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
}

.cadastro-btn-secundario {
    background: var(--verde-050);
    color: var(--verde-900);
    border: 1px solid var(--verde-100);
}

.cadastro-btn-secundario:hover:not(:disabled) {
    background: var(--verde-100);
}

.cadastro-doc {
    margin-bottom: var(--space-5);
    padding-bottom: var(--space-4);
    border-bottom: 1px solid var(--cinza-100);
}

.cadastro-doc:last-of-type {
    border-bottom: none;
    margin-bottom: var(--space-4);
}

.cadastro-doc-titulo {
    font-size: var(--text-base);
    font-weight: 600;
    color: var(--verde-900);
    margin-bottom: var(--space-1);
}

.cadastro-doc-ajuda {
    font-size: var(--text-sm);
    color: var(--cinza-600);
    margin-bottom: var(--space-3);
}

.cadastro-doc-acoes {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-2);
}

.cadastro-doc-status {
    margin-top: var(--space-3);
    font-size: var(--text-sm);
    color: var(--cinza-600);
}

.cadastro-doc-status.is-ok {
    color: var(--verde-700);
    font-weight: 500;
}

.cadastro-doc-preview {
    margin-top: var(--space-3);
}

.cadastro-doc-preview img {
    display: block;
    width: 100%;
    max-height: 180px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    border: 1px solid var(--cinza-200);
}

body.sem-obrigatorios .obrigatorio {
    display: none !important;
}

.cadastro-camera-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-4);
    background: rgba(4, 61, 49, 0.72);
}

.cadastro-camera-modal[hidden] {
    display: none !important;
}

.cadastro-camera-dialog {
    width: 100%;
    max-width: 480px;
    background: var(--branco);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: var(--space-4);
}

.cadastro-camera-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    margin-bottom: var(--space-3);
}

.cadastro-camera-topo h2 {
    font-size: var(--text-lg);
    color: var(--verde-900);
}

.cadastro-camera-fechar {
    border: none;
    background: transparent;
    font-size: 1.75rem;
    line-height: 1;
    color: var(--cinza-600);
    cursor: pointer;
}

.cadastro-camera-status {
    font-size: var(--text-sm);
    color: var(--cinza-600);
    margin-bottom: var(--space-3);
    min-height: 1.25rem;
}

.cadastro-camera-viewport {
    position: relative;
    width: 100%;
    aspect-ratio: 3 / 4;
    max-height: 55vh;
    overflow: hidden;
    border-radius: var(--radius-md);
    background: #111;
}

.cadastro-camera-viewport video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.cadastro-camera-acoes {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2);
    margin-top: var(--space-4);
}

.cadastro-link-secundario {
    display: block;
    text-align: center;
    color: var(--cinza-600);
    font-size: var(--text-sm);
    text-decoration: none;
}

.cadastro-link-secundario:hover {
    color: var(--verde-700);
    text-decoration: underline;
}

@media (min-width: 480px) {
    .cadastro-campo-grid {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-3);
    }
}

.cadastro-token-hint {
    margin-top: var(--space-4);
    font-size: var(--text-sm);
    color: var(--verde-700);
    background: var(--verde-050);
    border-radius: var(--radius-sm);
    padding: var(--space-3);
}

.cadastro-acoes {
    margin-top: var(--space-5);
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.cadastro-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 48px;
    padding: var(--space-3) var(--space-4);
    border: none;
    border-radius: var(--radius-md);
    font-family: var(--fonte-base);
    font-size: var(--text-base);
    font-weight: 600;
    cursor: pointer;
    transition: background-color var(--transition), opacity var(--transition), transform var(--transition);
}

.cadastro-btn:disabled,
.cadastro-btn.is-loading {
    opacity: 0.7;
    cursor: not-allowed;
}

.cadastro-btn-primario {
    background: var(--verde-700);
    color: var(--branco);
}

.cadastro-btn-primario:hover:not(:disabled) {
    background: var(--verde-900);
}

.cadastro-btn-primario:active:not(:disabled) {
    transform: scale(0.98);
}

.cadastro-link {
    display: inline-block;
    margin-top: var(--space-4);
    color: var(--verde-700);
    font-weight: 500;
    text-decoration: none;
}

.cadastro-link:hover {
    color: var(--verde-900);
    text-decoration: underline;
}

.cadastro-footer {
    padding: var(--space-5) 0 var(--space-3);
    text-align: center;
    font-size: var(--text-xs);
    color: var(--cinza-400);
}

.cadastro-secao-leitura {
    margin: var(--space-5) 0;
    padding-top: var(--space-4);
    border-top: 1px solid var(--cinza-200);
}

.cadastro-secao-leitura:first-of-type {
    margin-top: var(--space-3);
    padding-top: 0;
    border-top: 0;
}

.cadastro-secao-titulo {
    margin: 0 0 var(--space-3);
    font-size: var(--text-base);
    font-weight: 700;
    color: var(--cinza-800);
}

.cadastro-campo-leitura {
    margin-bottom: var(--space-3);
}

.cadastro-campo-leitura-label {
    display: block;
    margin-bottom: 0.2rem;
    font-size: var(--text-xs);
    font-weight: 500;
    color: var(--cinza-500);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.cadastro-campo-leitura-valor {
    margin: 0;
    padding: 0.65rem 0.85rem;
    font-size: var(--text-sm);
    font-weight: 500;
    color: var(--cinza-900);
    background: var(--cinza-50);
    border: 1px solid var(--cinza-200);
    border-radius: var(--radius-md, 0.5rem);
    word-break: break-word;
}

.cadastro-documentos-confirmacao {
    display: grid;
    gap: var(--space-4);
}

.cadastro-documento-confirmacao {
    padding: var(--space-3);
    background: var(--cinza-50);
    border: 1px solid var(--cinza-200);
    border-radius: var(--radius-md, 0.5rem);
}

.cadastro-documento-confirmacao h3 {
    margin: 0 0 var(--space-1);
    font-size: var(--text-sm);
    color: var(--cinza-800);
}

.cadastro-documento-confirmacao p {
    margin: 0 0 var(--space-3);
    font-size: var(--text-xs);
    color: var(--cinza-500);
    word-break: break-word;
}

.cadastro-documento-confirmacao img,
.cadastro-documento-confirmacao iframe {
    display: block;
    width: 100%;
    border: 1px solid var(--cinza-200);
    border-radius: var(--radius-sm);
    background: var(--branco);
}

.cadastro-documento-confirmacao img {
    max-height: 420px;
    object-fit: contain;
}

.cadastro-documento-confirmacao iframe {
    height: 360px;
}

.cadastro-termo-box {
    max-height: 14rem;
    overflow-y: auto;
    margin-bottom: var(--space-4);
    padding: var(--space-3);
    font-size: var(--text-sm);
    line-height: 1.55;
    color: var(--cinza-700);
    background: var(--cinza-50);
    border: 1px solid var(--cinza-200);
    border-radius: var(--radius-md, 0.5rem);
    -webkit-overflow-scrolling: touch;
}

.cadastro-termo-box p {
    margin: 0 0 var(--space-3);
}

.cadastro-termo-box p:last-child {
    margin-bottom: 0;
}

.cadastro-check-termo {
    align-items: flex-start;
    margin-bottom: var(--space-2);
}

.cadastro-check-termo span {
    line-height: 1.4;
}

/* Retorno visual enquanto o CPF e validado no servidor. */
#formDadosPessoais.is-validando-cpf > :not(#cpfValidando) {
    display: none !important;
}

.cpf-validando {
    min-height: 22rem;
    padding: var(--space-6) var(--space-3);
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    perspective: 900px;
}

.cpf-validando:not([hidden]) {
    display: flex;
}

.cpf-validando-logo {
    display: block;
    width: min(12rem, 62vw);
    height: auto;
    transform-origin: center;
    animation: cpf-validando-movimento 3.2s ease-in-out infinite;
    will-change: transform;
}

.cpf-validando p {
    margin: var(--space-5) 0 0;
    color: var(--cinza-700);
    font-size: var(--text-base);
    font-weight: 600;
}

@keyframes cpf-validando-movimento {
    0% { transform: rotateY(0deg) scale(1); }
    48% { transform: rotateY(360deg) scale(1); }
    60% { transform: rotateY(360deg) scale(1.12); }
    72% { transform: rotateY(360deg) scale(0.92); }
    80% { transform: rotateY(360deg) scale(1); }
    100% { transform: rotateY(720deg) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
    .cpf-validando-logo {
        animation: cpf-validando-pulso 1.5s ease-in-out infinite;
    }

    @keyframes cpf-validando-pulso {
        50% { transform: scale(1.06); }
    }
}

@media (min-width: 768px) {
    .cadastro-shell {
        padding: var(--space-6) var(--space-4);
        justify-content: center;
    }

    .cadastro-main {
        justify-content: center;
    }

    .cadastro-card {
        padding: var(--space-6);
    }
}
