/* v540 — controles de escolha touch-first (radio/checkbox visual)
   Mantém inputs reais para submit/validação e troca o alvo visual para card clicável. */
.pf-choice-stack,
.pf-choice-inline,
.pf-choice-grid {
    gap: .625rem;
}

.pf-choice-stack {
    display: grid;
}

.pf-choice-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
}

.pf-choice-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
}

.pf-choice {
    position: relative;
    margin: 0;
    min-height: 0;
    padding: 0;
}

.pf-choice-inline .pf-choice {
    flex: 1 1 12rem;
}

.pf-choice .pf-choice-input.form-check-input {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    border: 0 !important;
    overflow: hidden !important;
}

.pf-choice-card {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    width: 100%;
    min-height: 3rem;
    margin: 0;
    padding: .72rem .82rem;
    border: 1px solid var(--form-border-color, var(--border-base, rgba(148, 163, 184, .45)));
    border-radius: var(--form-border-radius, .85rem);
    background: var(--form-bg, var(--frame-bg, var(--bs-body-bg, #fff)));
    color: var(--form-text, var(--text-color, var(--bs-body-color, #212529)));
    cursor: pointer;
    user-select: none;
    touch-action: manipulation;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease, transform .12s ease;
}

.pf-choice-card:hover {
    border-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
    background: var(--form-hover-bg, var(--accent-light, rgba(13, 110, 253, .06)));
}

.pf-choice-card:active {
    transform: translateY(1px);
}

.pf-choice-mark {
    position: relative;
    flex: 0 0 1.28rem;
    width: 1.28rem;
    height: 1.28rem;
    margin-top: .08rem;
    border: 2px solid var(--form-border-color, var(--border-base, rgba(148, 163, 184, .8)));
    border-radius: 999px;
    background: var(--surface-1, #fff);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    box-shadow: inset 0 0 0 2px rgba(255,255,255,.65);
}

.pf-choice-input[type="checkbox"] + .pf-choice-card .pf-choice-mark {
    border-radius: .38rem;
}

.pf-choice-content {
    display: block;
    min-width: 0;
}

.pf-choice-title {
    display: block;
    font-weight: 700;
    line-height: 1.2;
}

.pf-choice-text,
.pf-choice-help {
    display: block;
    margin-top: .16rem;
    line-height: 1.35;
}

.pf-choice-input:checked + .pf-choice-card {
    border-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
    background: var(--accent-light, rgba(13, 110, 253, .08));
    box-shadow: 0 0 0 .16rem rgba(13, 110, 253, .10);
}

.pf-choice-input:checked + .pf-choice-card .pf-choice-mark {
    border-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
    background: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
}

.pf-choice-input[type="radio"]:checked + .pf-choice-card .pf-choice-mark::after {
    content: "";
    width: .48rem;
    height: .48rem;
    border-radius: 999px;
    background: #fff;
}

.pf-choice-input[type="checkbox"]:checked + .pf-choice-card .pf-choice-mark::after {
    content: "✓";
    color: #fff;
    font-size: .86rem;
    font-weight: 800;
    line-height: 1;
}

.pf-choice-input:focus-visible + .pf-choice-card,
.pf-choice-card:focus-visible {
    outline: 3px solid var(--color-focus-outline, var(--focus-ring, var(--accent, #0d6efd)));
    outline-offset: 2px;
    box-shadow: var(--shadow-focus-medium, 0 0 0 .22rem rgba(13, 110, 253, .16));
}

.pf-choice-input:disabled + .pf-choice-card,
.pf-choice-input[aria-disabled="true"] + .pf-choice-card {
    cursor: not-allowed;
    opacity: .58;
    background: rgba(148, 163, 184, .10);
    box-shadow: none;
}

.pf-choice-input.is-invalid + .pf-choice-card,
.was-validated .pf-choice-input:invalid + .pf-choice-card {
    border-color: var(--bs-danger, #dc3545);
}

.pf-choice-stack--compact .pf-choice-card {
    min-height: 2.65rem;
    padding: .55rem .68rem;
}

.pf-choice--confirm .pf-choice-card {
    min-height: 2.85rem;
}

/* Fallback para controles Bootstrap nativos que ainda existirem fora do componente visual. */
.form-check-input[type="radio"],
.form-check-input[type="checkbox"] {
    accent-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
}

.form-check-input[type="radio"]:checked,
.form-check-input[type="checkbox"]:checked {
    background-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
    border-color: var(--form-link, var(--accent, var(--bs-primary, #0d6efd)));
}

@media (max-width: 575.98px) {
    .pf-choice-inline,
    .pf-choice-grid {
        display: grid;
        grid-template-columns: 1fr;
    }

    .pf-choice-inline .pf-choice {
        flex-basis: auto;
    }

    .pf-choice-card {
        min-height: 3.25rem;
        padding: .82rem .86rem;
    }
}
