/* ===================================================================
   eFormei — Cadastro público de aluno/formando
   Wizard standalone (fora do painel) — Liquid Glass 2025
   ================================================================= */

:root {
    --caw-primary:        #18338f;
    --caw-primary-600:    #14297a;
    --caw-primary-50:     #eef2fb;
    --caw-primary-100:    #dee6f5;
    --caw-accent:         #4d6cd6;
    --caw-text:           #1c2433;
    --caw-text-muted:     #5b6478;
    --caw-text-soft:      #8892a6;
    --caw-bg:             #f4f6fb;
    --caw-card:           #ffffff;
    --caw-card-soft:      #fbfcff;
    --caw-border:         rgba(24, 51, 143, .12);
    --caw-border-strong:  rgba(24, 51, 143, .24);
    --caw-success:        #1f8a5a;
    --caw-success-bg:     #e8f7f0;
    --caw-warning:        #b9742a;
    --caw-warning-bg:     #fff7e6;
    --caw-warning-border: #f3c764;
    --caw-danger:         #c0392b;
    --caw-danger-bg:      #fdecea;
    --caw-radius-sm:      8px;
    --caw-radius:         14px;
    --caw-radius-lg:      20px;
    --caw-shadow-sm:      0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);
    --caw-shadow:         0 8px 24px rgba(24, 51, 143, .08), 0 1px 2px rgba(24, 51, 143, .04);
    --caw-shadow-lg:      0 24px 56px rgba(24, 51, 143, .14), 0 2px 8px rgba(24, 51, 143, .06);
    --caw-transition:     .25s cubic-bezier(.4, 0, .2, 1);
}

/* Dark mode */
[data-theme="dark"] {
    --caw-text:           #e6eaf2;
    --caw-text-muted:     #aab3c5;
    --caw-text-soft:      #7c869c;
    --caw-bg:             #0e1320;
    --caw-card:           #1a2233;
    --caw-card-soft:      #1f2a3f;
    --caw-border:         rgba(150, 175, 230, .14);
    --caw-border-strong:  rgba(150, 175, 230, .28);
    --caw-primary-50:     rgba(77, 108, 214, .12);
    --caw-primary-100:    rgba(77, 108, 214, .22);
    --caw-warning-bg:     rgba(243, 199, 100, .10);
    --caw-success-bg:     rgba(31, 138, 90, .14);
    --caw-danger-bg:      rgba(192, 57, 43, .14);
}

/* -------------------------------------------------------------------
   Page shell
   ----------------------------------------------------------------- */
body.caw-page {
    margin: 0;
    background: var(--caw-bg);
    color: var(--caw-text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    line-height: 1.55;
    min-height: 100vh;
    position: relative;
    overflow-x: hidden;
}

.caw-bg-decor {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.caw-blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: .45;
}

.caw-blob--1 {
    width: 520px;
    height: 520px;
    top: -180px;
    left: -200px;
    background: radial-gradient(circle, rgba(77, 108, 214, .35), transparent 70%);
}

.caw-blob--2 {
    width: 620px;
    height: 620px;
    bottom: -260px;
    right: -200px;
    background: radial-gradient(circle, rgba(24, 51, 143, .25), transparent 70%);
}

.caw-shell {
    position: relative;
    z-index: 1;
    max-width: 880px;
    margin: 0 auto;
    padding: 32px 16px 80px;
}

/* -------------------------------------------------------------------
   Brand header
   ----------------------------------------------------------------- */
.caw-brand {
    text-align: center;
    padding: 8px 0 24px;
}

.caw-brand__logo {
    max-height: 72px;
    max-width: 240px;
    object-fit: contain;
}

.caw-brand__powered {
    margin-top: 12px;
    font-size: 12px;
    color: var(--caw-text-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.caw-brand__powered img {
    height: 14px;
    opacity: .8;
}

/* -------------------------------------------------------------------
   Card base
   ----------------------------------------------------------------- */
.caw-card {
    background: var(--caw-card);
    border: 1px solid var(--caw-border);
    border-radius: var(--caw-radius-lg);
    box-shadow: var(--caw-shadow);
    padding: 28px;
    margin-bottom: 20px;
}

.caw-card--soft {
    background: var(--caw-card-soft);
    box-shadow: var(--caw-shadow-sm);
}

.caw-card__head {
    margin-bottom: 20px;
}

.caw-card__head h1,
.caw-card__head h2 {
    font-size: 22px;
    font-weight: 700;
    margin: 0 0 6px;
    color: var(--caw-text);
    line-height: 1.25;
}

.caw-card__head p {
    margin: 0;
    color: var(--caw-text-muted);
    font-size: 14px;
}

.caw-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--caw-primary-50);
    color: var(--caw-primary);
    padding: 4px 12px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 8px;
}

/* -------------------------------------------------------------------
   Wizard progress
   ----------------------------------------------------------------- */
.caw-progress {
    margin: 0 0 28px;
}

/* Sprint 4: meta (Etapa X de N · Turma) — visível só no mobile */
.caw-progress__meta {
    display: none;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: var(--caw-text-soft);
    margin-bottom: 8px;
    line-height: 1.3;
}

.caw-progress__meta-step {
    color: var(--caw-primary);
    font-weight: 700;
    white-space: nowrap;
}

.caw-progress__meta-sep {
    color: var(--caw-border-strong);
    flex-shrink: 0;
}

.caw-progress__meta-turma {
    color: var(--caw-text);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.caw-progress__bar {
    height: 6px;
    background: var(--caw-border);
    border-radius: 999px;
    overflow: hidden;
    margin-bottom: 14px;
}

.caw-progress__fill {
    height: 100%;
    background: linear-gradient(90deg, var(--caw-primary), var(--caw-accent));
    border-radius: 999px;
    transition: width var(--caw-transition);
    width: 0%;
}

.caw-progress__steps {
    display: flex;
    justify-content: space-between;
    gap: 4px;
    font-size: 12px;
    color: var(--caw-text-soft);
}

.caw-progress__step {
    flex: 1;
    text-align: center;
    transition: color var(--caw-transition);
}

.caw-progress__step--active {
    color: var(--caw-primary);
    font-weight: 700;
}

.caw-progress__step--done {
    color: var(--caw-success);
}

.caw-progress__step .num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 1.5px solid currentColor;
    margin-right: 4px;
    font-weight: 700;
    font-size: 11px;
    line-height: 1;
}

.caw-progress__step--done .num::before {
    content: "\f00c";
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 10px;
}

.caw-progress__step--done .num {
    color: var(--caw-success);
    background: var(--caw-success-bg);
}

.caw-progress__step--done .num > span {
    display: none;
}

@media (max-width: 600px) {
    .caw-progress__steps .label {
        display: none;
    }
    .caw-progress__step .num {
        margin-right: 0;
    }

    /* Sprint 4: header sticky no mobile com Etapa X de N · turma */
    .caw-progress {
        position: sticky;
        top: 0;
        z-index: 50;
        background: var(--caw-card);
        margin: -8px -28px 18px;
        padding: 10px 28px 12px;
        border-bottom: 1px solid var(--caw-border);
        box-shadow: 0 2px 8px rgba(0, 0, 0, .04);
    }
    .caw-progress__meta {
        display: flex;
    }
    .caw-progress__bar {
        margin-bottom: 10px;
    }
}

/* -------------------------------------------------------------------
   Step content
   ----------------------------------------------------------------- */
.caw-step {
    display: none;
}

.caw-step.is-active {
    display: block;
    animation: caw-fade-in .25s ease;
}

@keyframes caw-fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.caw-step__intro {
    background: var(--caw-primary-50);
    border-left: 3px solid var(--caw-primary);
    padding: 12px 16px;
    border-radius: var(--caw-radius-sm);
    margin-bottom: 22px;
    font-size: 14px;
    color: var(--caw-text);
}

.caw-step__intro strong {
    color: var(--caw-primary);
}

.caw-section {
    margin-bottom: 24px;
}

.caw-section__title {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--caw-text-soft);
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--caw-border);
}

/* -------------------------------------------------------------------
   Form controls (override bootstrap visual)
   ----------------------------------------------------------------- */
.caw-form-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 14px;
}

.caw-col-12 { grid-column: span 12; }
.caw-col-11 { grid-column: span 11; }
.caw-col-10 { grid-column: span 10; }
.caw-col-9  { grid-column: span 9; }
.caw-col-8  { grid-column: span 8; }
.caw-col-7  { grid-column: span 7; }
.caw-col-6  { grid-column: span 6; }
.caw-col-5  { grid-column: span 5; }
.caw-col-4  { grid-column: span 4; }
.caw-col-3  { grid-column: span 3; }
.caw-col-2  { grid-column: span 2; }

@media (max-width: 720px) {
    .caw-col-11, .caw-col-10, .caw-col-9, .caw-col-8, .caw-col-7,
    .caw-col-6, .caw-col-5, .caw-col-4, .caw-col-3, .caw-col-2 {
        grid-column: span 12;
    }
}

/* -------------------------------------------------------------------
   Banner "menor de idade" — destaca claramente quem é pagador vs. formando
   ----------------------------------------------------------------- */
.caw-pagador-banner {
    display: none;
    background: linear-gradient(135deg, #fff8e1 0%, #fff3cd 100%);
    border: 1px solid #f0c674;
    border-left: 4px solid #f59e0b;
    border-radius: 10px;
    padding: 12px 16px;
    margin: 14px 0 4px;
    font-size: 0.92rem;
    line-height: 1.45;
    color: #6b4f00;
}
.caw-pagador-banner.is-active { display: block; }
.caw-pagador-banner strong { color: #4a3700; }
.caw-pagador-banner i { color: #f59e0b; margin-right: 6px; }

/* Quando menor de idade ativo, reforça visualmente a seção do pagador */
.caw-form-grid.is-menor {
    background: rgba(245, 158, 11, 0.04);
    border: 1px dashed #f59e0b;
    border-radius: 10px;
    padding: 12px;
    margin-top: 4px;
}
.caw-form-grid.is-menor .caw-menor-detail {
    background: #eaf6ff;
    border: 1px solid #b6dcfb;
    border-radius: 8px;
    padding: 10px 12px;
}
.caw-form-grid.is-menor .caw-menor-detail label {
    color: #0c5391;
    font-weight: 600;
}

.caw-field {
    display: flex;
    flex-direction: column;
}

.caw-field label {
    font-size: 13px;
    font-weight: 600;
    color: var(--caw-text);
    margin-bottom: 6px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.caw-field label .req {
    color: var(--caw-danger);
}

.caw-field label .hint-icon {
    color: var(--caw-text-soft);
    cursor: help;
    font-size: 12px;
}

.caw-field .help {
    font-size: 12px;
    color: var(--caw-text-soft);
    margin-top: 4px;
}

.caw-field input.form-control,
.caw-field select.form-control,
.caw-field textarea.form-control {
    height: auto;
    padding: 10px 12px;
    border: 1px solid var(--caw-border);
    border-radius: var(--caw-radius-sm);
    background: var(--caw-card);
    color: var(--caw-text);
    font-size: 14px;
    transition: border-color var(--caw-transition), box-shadow var(--caw-transition);
    width: 100%;
    box-shadow: none;
}

.caw-field input.form-control:focus,
.caw-field select.form-control:focus,
.caw-field textarea.form-control:focus {
    border-color: var(--caw-primary);
    box-shadow: 0 0 0 3px rgba(24, 51, 143, .12);
    outline: 0;
}

.caw-field textarea.form-control {
    min-height: 80px;
    resize: vertical;
}

/* Password with toggle */
.caw-pwd {
    position: relative;
}

.caw-pwd input {
    padding-right: 40px;
}

.caw-pwd__toggle {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    background: transparent;
    border: 0;
    color: var(--caw-text-soft);
    cursor: pointer;
    padding: 6px 8px;
    border-radius: 6px;
}

.caw-pwd__toggle:hover {
    color: var(--caw-primary);
    background: var(--caw-primary-50);
}

/* -------------------------------------------------------------------
   Toggle / checkbox cards
   ----------------------------------------------------------------- */
.caw-switch {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--caw-border);
    border-radius: var(--caw-radius);
    background: var(--caw-card-soft);
    cursor: pointer;
    transition: border-color var(--caw-transition), background var(--caw-transition);
}

.caw-switch:hover {
    border-color: var(--caw-border-strong);
}

.caw-switch input[type="checkbox"] {
    margin-top: 3px;
    flex-shrink: 0;
}

.caw-switch__label strong {
    display: block;
    font-size: 14px;
    color: var(--caw-text);
    margin-bottom: 2px;
}

.caw-switch__label small {
    color: var(--caw-text-muted);
    font-size: 12.5px;
}

/* -------------------------------------------------------------------
   Plan cards (radios)
   ----------------------------------------------------------------- */
.caw-plan {
    display: block;
    border: 1.5px solid var(--caw-border);
    border-radius: var(--caw-radius);
    padding: 16px 18px;
    margin-bottom: 12px;
    cursor: pointer;
    transition: all var(--caw-transition);
    background: var(--caw-card);
}

.caw-plan:hover {
    border-color: var(--caw-border-strong);
    transform: translateY(-1px);
    box-shadow: var(--caw-shadow-sm);
}

.caw-plan input[type="radio"] {
    display: none;
}

.caw-plan__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.caw-plan__title {
    font-weight: 700;
    color: var(--caw-text);
    font-size: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.caw-plan__title::before {
    content: "";
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid var(--caw-border-strong);
    border-radius: 50%;
    flex-shrink: 0;
    transition: all var(--caw-transition);
}

.caw-plan input[type="radio"]:checked ~ .caw-plan__head .caw-plan__title::before {
    border-color: var(--caw-primary);
    background: var(--caw-primary);
    box-shadow: inset 0 0 0 3px var(--caw-card);
}

.caw-plan input[type="radio"]:checked ~ .caw-plan__head .caw-plan__title {
    color: var(--caw-primary);
}

.caw-plan:has(input[type="radio"]:checked) {
    border-color: var(--caw-primary);
    background: var(--caw-primary-50);
}

.caw-plan__deadline {
    font-size: 12px;
    color: var(--caw-text-soft);
}

.caw-plan__toggle {
    margin-top: 10px;
    font-size: 12.5px;
    color: var(--caw-primary);
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
    font-weight: 600;
}

.caw-plan__toggle:hover {
    text-decoration: underline;
}

.caw-plan__details {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px dashed var(--caw-border);
    display: none;
}

.caw-plan__details.is-open {
    display: block;
}

.caw-plan__details table {
    width: 100%;
    font-size: 13px;
    border-collapse: collapse;
}

.caw-plan__details th,
.caw-plan__details td {
    padding: 6px 8px;
    text-align: left;
    border-bottom: 1px solid var(--caw-border);
}

.caw-plan__details th {
    color: var(--caw-text-soft);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: .04em;
}

.caw-plan__total {
    margin-top: 10px;
    padding: 10px 12px;
    background: var(--caw-primary-50);
    color: var(--caw-primary);
    border-radius: var(--caw-radius-sm);
    font-weight: 700;
    font-size: 14px;
    display: flex;
    justify-content: space-between;
}

.caw-plan--disabled {
    opacity: .55;
    cursor: not-allowed;
}

.caw-plan--disabled:hover {
    transform: none;
    box-shadow: none;
}

/* -------------------------------------------------------------------
   Alerts (inline)
   ----------------------------------------------------------------- */
.caw-alert {
    padding: 12px 16px;
    border-radius: var(--caw-radius-sm);
    font-size: 13.5px;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0 0 16px;
}

.caw-alert i {
    flex-shrink: 0;
    margin-top: 2px;
}

.caw-alert--info {
    background: var(--caw-primary-50);
    color: var(--caw-primary);
    border-left: 3px solid var(--caw-primary);
}

.caw-alert--warning {
    background: var(--caw-warning-bg);
    color: var(--caw-warning);
    border-left: 3px solid var(--caw-warning-border);
}

.caw-alert--danger {
    background: var(--caw-danger-bg);
    color: var(--caw-danger);
    border-left: 3px solid var(--caw-danger);
}

.caw-alert--success {
    background: var(--caw-success-bg);
    color: var(--caw-success);
    border-left: 3px solid var(--caw-success);
}

/* -------------------------------------------------------------------
   Terms box (scrollable)
   ----------------------------------------------------------------- */
.caw-terms {
    border: 1px solid var(--caw-border);
    border-radius: var(--caw-radius-sm);
    background: var(--caw-card-soft);
    padding: 16px;
    max-height: 200px;
    overflow-y: auto;
    font-size: 13px;
    line-height: 1.6;
    color: var(--caw-text-muted);
    margin-bottom: 14px;
    white-space: pre-wrap;
}

/* -------------------------------------------------------------------
   Buttons
   ----------------------------------------------------------------- */
.caw-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid var(--caw-border);
}

.caw-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 11px 22px;
    font-size: 14px;
    font-weight: 600;
    border-radius: var(--caw-radius-sm);
    border: 1px solid transparent;
    cursor: pointer;
    transition: all var(--caw-transition);
    text-decoration: none;
    line-height: 1.2;
}

.caw-btn--primary {
    background: var(--caw-primary);
    color: #fff;
    box-shadow: 0 4px 12px rgba(24, 51, 143, .25);
}

.caw-btn--primary:hover:not(:disabled) {
    background: var(--caw-primary-600);
    box-shadow: 0 6px 18px rgba(24, 51, 143, .32);
    color: #fff;
    text-decoration: none;
    transform: translateY(-1px);
}

.caw-btn--ghost {
    background: transparent;
    color: var(--caw-text-muted);
    border-color: var(--caw-border);
}

.caw-btn--ghost:hover:not(:disabled) {
    background: var(--caw-card-soft);
    border-color: var(--caw-border-strong);
    color: var(--caw-text);
    text-decoration: none;
}

.caw-btn--success {
    background: var(--caw-success);
    color: #fff;
    box-shadow: 0 4px 12px rgba(31, 138, 90, .25);
}

.caw-btn--success:hover:not(:disabled) {
    background: #176b46;
    color: #fff;
    text-decoration: none;
    transform: translateY(-1px);
}

.caw-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
}

.caw-btn .spinner {
    display: none;
}

.caw-btn.is-loading .spinner {
    display: inline-block;
}

.caw-btn.is-loading .label {
    opacity: .7;
}

/* -------------------------------------------------------------------
   Summary list (step final)
   ----------------------------------------------------------------- */
.caw-summary {
    background: var(--caw-card-soft);
    border: 1px solid var(--caw-border);
    border-radius: var(--caw-radius);
    padding: 16px 18px;
    margin-bottom: 18px;
}

.caw-summary__title {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--caw-text-soft);
    margin: 0 0 10px;
}

.caw-summary dl {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 6px 16px;
    margin: 0;
    font-size: 13px;
}

.caw-summary dt {
    color: var(--caw-text-muted);
    font-weight: 500;
}

.caw-summary dd {
    margin: 0;
    color: var(--caw-text);
    font-weight: 600;
    word-break: break-word;
}

/* Rows geradas via JS (buildSummary) */
.caw-summary__row {
    display: grid;
    grid-template-columns: 160px 1fr auto;
    gap: 6px 16px;
    align-items: center;
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 13px;
    transition: background .15s ease;
}
.caw-summary__row + .caw-summary__row {
    border-top: 1px solid var(--caw-border);
}
.caw-summary__label {
    color: var(--caw-text-muted);
    font-weight: 500;
}
.caw-summary__value {
    color: var(--caw-text);
    font-weight: 600;
    word-break: break-word;
}
.caw-summary__row.is-clickable {
    cursor: pointer;
}
.caw-summary__row.is-clickable:hover {
    background: var(--caw-card-soft);
}
.caw-summary__edit {
    color: var(--caw-text-muted);
    opacity: 0;
    transition: opacity .15s ease;
    font-size: 12px;
    padding: 4px 8px;
    border-radius: 6px;
    background: var(--caw-card);
    border: 1px solid var(--caw-border);
}
.caw-summary__row.is-clickable:hover .caw-summary__edit {
    opacity: 1;
}
@media (max-width: 540px) {
    .caw-summary__row {
        grid-template-columns: 1fr auto;
    }
    .caw-summary__label {
        grid-column: 1 / -1;
        font-size: 12px;
    }
    .caw-summary__edit {
        opacity: 1;
    }
}

/* -------------------------------------------------------------------
   Dark mode toggle (já tem em dark-mode-init.js)
   ----------------------------------------------------------------- */
.btn-dark-mode-float {
    position: fixed;
    top: 16px;
    right: 16px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--caw-card);
    border: 1px solid var(--caw-border);
    color: var(--caw-text-muted);
    z-index: 100;
    box-shadow: var(--caw-shadow-sm);
    cursor: pointer;
    transition: all var(--caw-transition);
}

.btn-dark-mode-float:hover {
    color: var(--caw-primary);
    border-color: var(--caw-border-strong);
}

/* -------------------------------------------------------------------
   Bootstrap-select override (compatibilidade com selectpicker)
   ----------------------------------------------------------------- */
.caw-field .bootstrap-select > .dropdown-toggle {
    padding: 10px 12px !important;
    border: 1px solid var(--caw-border) !important;
    border-radius: var(--caw-radius-sm) !important;
    background: var(--caw-card) !important;
    color: var(--caw-text) !important;
    font-size: 14px !important;
    height: auto !important;
    box-shadow: none !important;
}

.caw-field .bootstrap-select > .dropdown-toggle:focus {
    border-color: var(--caw-primary) !important;
    box-shadow: 0 0 0 3px rgba(24, 51, 143, .12) !important;
}

/* -------------------------------------------------------------------
   Sprint 2 — Microvalidações em tempo real
   ----------------------------------------------------------------- */

/* Estado dos inputs (válido/invalido) */
.caw-field .form-control.is-invalid,
.caw-field input.is-invalid,
.caw-field select.is-invalid {
    border-color: var(--caw-danger) !important;
    box-shadow: 0 0 0 3px rgba(220, 53, 69, .10) !important;
}

.caw-field .form-control.is-valid,
.caw-field input.is-valid {
    border-color: var(--caw-success) !important;
}

/* Feedback inline embaixo de um campo */
.caw-field__feedback {
    display: none;
    font-size: 12.5px;
    margin-top: 6px;
    line-height: 1.4;
}

.caw-field__feedback.is-visible {
    display: block;
}

.caw-field__feedback--error {
    color: var(--caw-danger);
}

.caw-field__feedback--ok {
    color: var(--caw-success);
}

.caw-field__feedback i {
    margin-right: 4px;
}

/* Medidor de força de senha */
.caw-pwd-strength {
    margin-top: 8px;
    display: none;
}

.caw-pwd-strength.is-visible {
    display: block;
}

.caw-pwd-strength__bar {
    height: 4px;
    background: var(--caw-border);
    border-radius: 2px;
    overflow: hidden;
    position: relative;
}

.caw-pwd-strength__bar::after {
    content: "";
    position: absolute;
    inset: 0 100% 0 0;
    background: var(--caw-danger);
    transition: right .25s ease, background .25s ease;
}

.caw-pwd-strength[data-score="1"] .caw-pwd-strength__bar::after { right: 75%; background: var(--caw-danger); }
.caw-pwd-strength[data-score="2"] .caw-pwd-strength__bar::after { right: 50%; background: var(--caw-warning-border, #d97706); }
.caw-pwd-strength[data-score="3"] .caw-pwd-strength__bar::after { right: 25%; background: #1e88e5; }
.caw-pwd-strength[data-score="4"] .caw-pwd-strength__bar::after { right: 0%;  background: var(--caw-success); }

.caw-pwd-strength__label {
    display: block;
    font-size: 12px;
    margin-top: 4px;
    color: var(--caw-text-soft, #6c757d);
}

/* CEP status — adiciona spinner + variantes */
#cep_status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

#cep_status.is-loading::before {
    content: "";
    width: 12px;
    height: 12px;
    border: 2px solid var(--caw-border);
    border-top-color: var(--caw-primary);
    border-radius: 50%;
    animation: caw-spin .7s linear infinite;
    display: inline-block;
}

#cep_status.is-error {
    color: var(--caw-danger);
}

#cep_status.is-ok {
    color: var(--caw-success);
}

@keyframes caw-spin {
    to { transform: rotate(360deg); }
}

/* -------------------------------------------------------------------
   Sprint 3 — Destaque "Mais escolhido" no card de plano
   ----------------------------------------------------------------- */
.caw-plan--popular {
    border-color: var(--caw-primary);
    box-shadow: 0 0 0 1px var(--caw-primary), var(--caw-shadow-sm);
    position: relative;
}

.caw-plan--popular::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: var(--caw-radius);
    background: linear-gradient(135deg, var(--caw-primary-50) 0%, transparent 60%);
    pointer-events: none;
    opacity: .55;
}

.caw-plan--popular > * {
    position: relative;
}

.caw-plan__tag--popular {
    background: var(--caw-primary);
    color: #fff;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    box-shadow: 0 2px 6px rgba(24, 51, 143, .25);
}

.caw-plan__tag--popular i {
    font-size: 10px;
}

