/* ================================================================
   CCB Forms — Design System único de formulários/modais
   Paleta: primary #2D9CDB | dark #1A7CC5 | darker #1570C4 | Nunito
   Classes reutilizáveis: .ccb-modal / .ccb-control / .ccb-section / .ccb-btn
   ================================================================ */

:root {
    --ccbf-ink:      #2b2d33;
    --ccbf-muted:    #8a8f9c;
    --ccbf-line:     #e9edf3;
    --ccbf-field-bg: #f8fafc;
    --ccbf-primary:  #2D9CDB;
    --ccbf-dark:     #1A7CC5;
    --ccbf-darker:   #1570C4;
    --ccbf-danger:   #e74a3b;
}

/* ---------- Estrutura do modal ---------- */
.modal-content.ccb-modal {
    border: none;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 24px 70px rgba(9, 30, 66, 0.28);
}

.ccb-modal__header {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px;
    border-bottom: 1px solid var(--ccbf-line);
    background: #fff;
}
.ccb-modal__icon {
    width: 46px;
    height: 46px;
    border-radius: 14px;
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--ccbf-primary) 0%, var(--ccbf-darker) 100%);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.15rem;
    box-shadow: 0 6px 16px rgba(45, 156, 219, 0.35);
}
/* Variantes de cor do ícone conforme a natureza da ação */
.ccb-modal__icon--warning { background: linear-gradient(135deg, #f6a609 0%, #e08c00 100%); box-shadow: 0 6px 16px rgba(246,166,9,.35); }
.ccb-modal__icon--success { background: linear-gradient(135deg, #34b37e 0%, #1f8a5c 100%); box-shadow: 0 6px 16px rgba(52,179,126,.35); }
.ccb-modal__icon--danger  { background: linear-gradient(135deg, #e74a3b 0%, #c0392b 100%); box-shadow: 0 6px 16px rgba(231,74,59,.35); }

.ccb-modal__ttl { min-width: 0; }
.ccb-modal__ttl h5 {
    margin: 0;
    font-weight: 800;
    font-size: 1.12rem;
    color: var(--ccbf-ink);
    line-height: 1.2;
}
.ccb-modal__ttl small {
    color: var(--ccbf-muted);
    font-weight: 600;
    font-size: 0.78rem;
}
.ccb-modal__x {
    margin-left: auto;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    border: none;
    background: #f1f3f8;
    color: #6b7280;
    font-size: 1rem;
    cursor: pointer;
    transition: background .15s, color .15s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.ccb-modal__x:hover { background: #fde8e8; color: var(--ccbf-danger); }

.ccb-modal__body { padding: 20px 22px 6px; background: #fff; }

.ccb-modal__footer {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    padding: 15px 22px;
    background: #f8f9fc;
    border-top: 1px solid var(--ccbf-line);
    margin-top: 14px;
}

/* ---------- Seções ---------- */
.ccb-section {
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    color: #a2a8b4;
    margin: 4px 0 14px;
    display: flex;
    align-items: center;
    gap: 7px;
}
.ccb-section::after { content: ""; flex: 1; height: 1px; background: var(--ccbf-line); }

/* ---------- Campos ---------- */
.ccb-field { margin-bottom: 16px; }
.ccb-field label {
    display: block;
    font-weight: 700;
    font-size: 0.82rem;
    color: #4a4d57;
    margin-bottom: 6px;
}
.ccb-field label .req, .ccb-req { color: var(--ccbf-danger); }

.ccb-control {
    width: 100%;
    border: 1.5px solid #e3e6ef;
    border-radius: 11px;
    padding: 0.6rem 0.85rem;
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--ccbf-ink);
    background: var(--ccbf-field-bg);
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.ccb-control::placeholder { color: #aab0bd; }
.ccb-control:focus {
    border-color: var(--ccbf-primary);
    background: #fff;
    outline: none;
    box-shadow: 0 0 0 4px rgba(45, 156, 219, 0.15);
}
.ccb-control:disabled, .ccb-control[readonly] { background: #eef1f6; color: #6b7280; }
.ccb-control.is-invalid { border-color: var(--ccbf-danger); }
.ccb-control.is-invalid:focus { box-shadow: 0 0 0 4px rgba(231, 74, 59, 0.15); }

select.ccb-control {
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a8f9c' stroke-width='2.5'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 34px;
}
textarea.ccb-control { resize: vertical; min-height: 96px; }

.ccb-hint { font-size: 0.72rem; color: var(--ccbf-muted); margin-top: 5px; }
.ccb-invalid-msg { font-size: 0.75rem; color: var(--ccbf-danger); margin-top: 5px; display: none; }
.ccb-control.is-invalid ~ .ccb-invalid-msg { display: block; }

/* Grid responsivo */
.ccb-grid { display: grid; gap: 14px; }
.ccb-grid-2 { grid-template-columns: 1fr 1fr; }
.ccb-grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 576px) {
    .ccb-grid-2, .ccb-grid-3 { grid-template-columns: 1fr; }
}

/* ---------- Botões ---------- */
.ccb-btn {
    border: none;
    border-radius: 11px;
    padding: 0.6rem 1.15rem;
    font-weight: 700;
    font-size: 0.88rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    transition: box-shadow .15s, background .15s, transform .1s;
    font-family: inherit;
}
.ccb-btn:active { transform: translateY(1px); }
.ccb-btn:disabled { opacity: .65; cursor: default; }
.ccb-btn-ghost { background: #fff; border: 1.5px solid #e3e6ef; color: #5a5c69; }
.ccb-btn-ghost:hover { background: #f1f3f8; color: #5a5c69; }
.ccb-btn-primary {
    background: linear-gradient(135deg, var(--ccbf-primary) 0%, var(--ccbf-dark) 100%);
    color: #fff;
    box-shadow: 0 6px 16px rgba(45, 156, 219, 0.32);
}
.ccb-btn-primary:hover { box-shadow: 0 8px 20px rgba(45, 156, 219, 0.42); color: #fff; }
.ccb-btn-success { background: linear-gradient(135deg, #34b37e 0%, #1f8a5c 100%); color: #fff; box-shadow: 0 6px 16px rgba(52,179,126,.32); }
.ccb-btn-success:hover { color: #fff; box-shadow: 0 8px 20px rgba(52,179,126,.42); }
.ccb-btn-danger { background: linear-gradient(135deg, #e74a3b 0%, #c0392b 100%); color: #fff; box-shadow: 0 6px 16px rgba(231,74,59,.32); }
.ccb-btn-danger:hover { color: #fff; box-shadow: 0 8px 20px rgba(231,74,59,.42); }

/* ================================================================
   Modernização GLOBAL suave — aplica o visual novo também aos modais
   Bootstrap que ainda não foram migrados para as classes .ccb-*.
   Escopo restrito a .modal para não afetar o resto da UI.
   ================================================================ */
.modal .form-control,
.modal .custom-select {
    border-radius: 10px;
    border: 1.5px solid #e3e6ef;
    background: var(--ccbf-field-bg);
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.modal .form-control:focus,
.modal .custom-select:focus {
    border-color: var(--ccbf-primary);
    background: #fff;
    box-shadow: 0 0 0 4px rgba(45, 156, 219, 0.15);
}
.modal .modal-content { border: none; border-radius: 16px; }
.modal .modal-footer { background: #f8f9fc; }
