
/* =========================================================
   PADRÃO GLOBAL DEFINITIVO DOS FORMULÁRIOS
   Aplica o mesmo visual em todos os campos do sistema.
   ========================================================= */

:root{
    --form-field-height: 44px;
    --form-field-radius: 13px;
    --form-icon-width: 48px;
    --form-border: #dbe3ef;
    --form-bg-icon: #f8fafc;
    --form-text: #0f172a;
}

/* Estrutura base */
form .input-group{
    display:flex!important;
    flex-wrap:nowrap!important;
    align-items:stretch!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:var(--form-field-height)!important;
    min-height:var(--form-field-height)!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    border:1px solid var(--form-border)!important;
    border-radius:var(--form-field-radius)!important;
    overflow:hidden!important;
    box-shadow:none!important;
    box-sizing:border-box!important;
}

/* Ícone do campo */
form .input-group > .input-group-text{
    flex:0 0 var(--form-icon-width)!important;
    width:var(--form-icon-width)!important;
    min-width:var(--form-icon-width)!important;
    max-width:var(--form-icon-width)!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    border:0!important;
    border-right:1px solid #edf2f7!important;
    border-radius:0!important;
    background:var(--form-bg-icon)!important;
    color:var(--cor-botao, #4b0082)!important;
    box-shadow:none!important;
    line-height:1!important;
    box-sizing:border-box!important;
}

form .input-group > .input-group-text i,
form .input-group > .input-group-text svg{
    display:block!important;
    width:16px!important;
    height:16px!important;
    font-size:16px!important;
    line-height:1!important;
    margin:0!important;
    padding:0!important;
    color:var(--cor-botao, #4b0082)!important;
}

/* Campo input/select/textarea dentro de input-group */
form .input-group > .form-control,
form .input-group > .form-select,
form .input-group > input,
form .input-group > select,
form .input-group > textarea{
    flex:1 1 auto!important;
    width:auto!important;
    min-width:0!important;
    max-width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    padding:9px 13px!important;
    border:0!important;
    border-radius:0!important;
    background-color:#fff!important;
    box-shadow:none!important;
    outline:0!important;
    color:var(--form-text)!important;
    font-size:14px!important;
    line-height:1.2!important;
    box-sizing:border-box!important;
}

form .input-group > textarea,
form .input-group > textarea.form-control{
    height:auto!important;
    min-height:110px!important;
    padding-top:11px!important;
}

form .input-group:has(textarea){
    height:auto!important;
    min-height:110px!important;
}

/* Campos sem input-group também seguem o mesmo padrão */
form > .form-control,
form > .form-select,
form input.form-control:not(.input-group .form-control),
form select.form-select:not(.input-group .form-select),
form textarea.form-control:not(.input-group .form-control){
    min-height:var(--form-field-height)!important;
    border:1px solid var(--form-border)!important;
    border-radius:var(--form-field-radius)!important;
    box-shadow:none!important;
    outline:0!important;
    background:#fff!important;
    color:var(--form-text)!important;
    font-size:14px!important;
}

/* Foco */
form .input-group:focus-within{
    border-color:var(--cor-botao, #4b0082)!important;
    box-shadow:0 0 0 3px rgba(75,0,130,.10)!important;
}

form .input-group > .form-control:focus,
form .input-group > .form-select:focus,
form .input-group > input:focus,
form .input-group > select:focus,
form .input-group > textarea:focus,
form input.form-control:focus,
form select.form-select:focus,
form textarea.form-control:focus{
    border:0!important;
    box-shadow:none!important;
    outline:0!important;
}

/* Select com seta padronizada */
form select,
form .form-select,
form select.form-select,
form select.custom-select-arrow{
    appearance:none!important;
    -webkit-appearance:none!important;
    -moz-appearance:none!important;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='%230f172a' viewBox='0 0 16 16'%3E%3Cpath d='M3.204 5h9.592L8 10.481 3.204 5z'/%3E%3C/svg%3E")!important;
    background-repeat:no-repeat!important;
    background-position:right 13px center!important;
    background-size:16px 16px!important;
    padding-right:42px!important;
}

/* Labels padronizados */
form label,
form .form-label,
form label.fw-bold{
    display:block!important;
    margin:0 0 7px!important;
    color:var(--cor-titulo, #0f172a)!important;
    font-size:13px!important;
    line-height:1.15!important;
    font-weight:900!important;
}

/* Mensagens */
.form-alert-small{
    display:block!important;
    min-height:14px!important;
    margin-top:5px!important;
    font-size:12px!important;
    line-height:1.1!important;
    font-weight:800!important;
}
.form-alert-small.ok{color:#16a34a!important;}
.form-alert-small.error{color:#dc2626!important;}

.campo-obrigatorio-msg{
    display:none;
    margin-top:5px!important;
    color:#dc2626!important;
    font-size:12px!important;
    line-height:1.1!important;
    font-weight:800!important;
}
.campo-obrigatorio-msg.show{display:block!important;}

/* Estado de erro */
form .input-group:has(.is-invalid){
    border-color:#dc2626!important;
    box-shadow:0 0 0 3px rgba(220,38,38,.10)!important;
}

form .is-invalid{
    border:0!important;
    box-shadow:none!important;
}

/* Evita inputs de número deformarem o campo */
form input[type="number"]::-webkit-outer-spin-button,
form input[type="number"]::-webkit-inner-spin-button{
    margin:0!important;
}

/* Cards de formulário padronizados */
.form-card,
.card-premium form,
.form-card-modelo,
.form-card-padronizado{
    box-sizing:border-box!important;
}

.form-card-modelo{
    background:#fff!important;
    border:0!important;
    border-radius:16px!important;
    box-shadow:0 18px 45px rgba(15,23,42,.08)!important;
    overflow:visible!important;
}

/* Botão de ação do formulário */
.form-actions-modelo,
.form-actions-padronizado,
form .form-actions{
    display:flex!important;
    justify-content:flex-end!important;
    margin-top:22px!important;
    padding-top:18px!important;
    border-top:1px solid #eef2f7!important;
}

.form-actions-modelo .btn,
.form-actions-padronizado .btn,
form .form-actions .btn{
    min-width:180px!important;
    min-height:44px!important;
    border-radius:12px!important;
    font-size:16px!important;
    font-weight:900!important;
}

/* Mobile */
@media(max-width:768px){
    :root{
        --form-field-height:40px;
        --form-field-radius:11px;
        --form-icon-width:42px;
    }

    form label,
    form .form-label,
    form label.fw-bold{
        font-size:12px!important;
        margin-bottom:5px!important;
    }

    form .input-group > .input-group-text i,
    form .input-group > .input-group-text svg{
        width:14px!important;
        height:14px!important;
        font-size:14px!important;
    }

    form .input-group > .form-control,
    form .input-group > .form-select,
    form .input-group > input,
    form .input-group > select,
    form .input-group > textarea,
    form input.form-control,
    form select.form-select,
    form textarea.form-control{
        font-size:13px!important;
        padding:8px 10px!important;
    }

    form select,
    form .form-select,
    form select.form-select,
    form select.custom-select-arrow{
        background-position:right 10px center!important;
        padding-right:34px!important;
    }

    .form-actions-modelo,
    .form-actions-padronizado,
    form .form-actions{
        justify-content:stretch!important;
        margin-top:16px!important;
        padding-top:14px!important;
    }

    .form-actions-modelo .btn,
    .form-actions-padronizado .btn,
    form .form-actions .btn{
        width:100%!important;
        min-width:0!important;
        min-height:42px!important;
        font-size:15px!important;
    }
}
