/* Flattastic Pro UI - Modern & Clean - Customized Palette */

:root {
    /* User Defined Palette */
    /* Erro/Cancelado (Red) */
    --theme-danger-bg: #fff5f5;
    --theme-danger-strong: #f78b8b;
    --theme-danger-rgb: 247, 139, 139;

    /* Sucesso/Efetivado (Green) */
    --theme-success-bg: #f0f9ef;
    --theme-success-strong: #7ebb7a;
    --theme-success-rgb: 126, 187, 122;

    /* Alerta/Notificação (Orange/Yellow) */
    --theme-warning-bg: #fff9f0;
    --theme-warning-strong: #ffc848;
    --theme-warning-rgb: 255, 200, 72;

    /* Primary/Confirmado (Blue) - User Preference: #0dcaf0 */
    --theme-primary-bg: #f0fcff; /* Calculated Light */
    --theme-primary-strong: #0dcaf0;
    --theme-primary-rgb: 13, 202, 240;

    /* Secondary/Pending (Gray) - Suggested */
    --theme-secondary-bg: #f8f9fa;
    --theme-secondary-strong: #a0a0a0;
    --theme-secondary-rgb: 160, 160, 160;

    /* Info/Extra (Purple) - Suggested */
    --theme-info-bg: #f8f4ff;
    --theme-info-strong: #9b7adb;
    --theme-info-rgb: 155, 122, 219;

    /* Neutrals */
    --gray-light: #F5F7FA;
    --gray-medium: #AAB2BD;
    --gray-dark: #656D78;
    --gray-darker: #333333;

    /* Semantic Mappings for Bootstrap */
    --bs-primary: var(--theme-primary-strong);
    --bs-primary-rgb: var(--theme-primary-rgb);
    
    --bs-success: var(--theme-success-strong);
    --bs-success-rgb: var(--theme-success-rgb);
    
    --bs-danger: var(--theme-danger-strong);
    --bs-danger-rgb: var(--theme-danger-rgb);
    
    --bs-warning: var(--theme-warning-strong);
    --bs-warning-rgb: var(--theme-warning-rgb);
    
    --bs-info: var(--theme-info-strong); /* Mapping Purple to Info for variety or keep Cyan? User said Blue is 0dcaf0. Let's map Info to Purple for distinctness or stick to Blue? Standard BS Info is Cyan. Let's make Info = Primary (Cyan) and add Purple as extra. */
    /* Actually, let's map Info to the same Cyan or slightly different. */
    /* Let's map Info to Purple to give an extra color option in standard classes */
    --bs-info-rgb: var(--theme-info-rgb);
    
    --bs-secondary: var(--theme-secondary-strong);
    --bs-secondary-rgb: var(--theme-secondary-rgb);

    --bs-body-bg: var(--gray-light);
    --bs-body-color: var(--gray-darker);
}

/* Typography */
body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    line-height: 1.5;
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 700;
    color: var(--gray-darker);
    letter-spacing: -0.02em;
}

/* Text Colors Overrides */
.text-primary { color: var(--theme-primary-strong) !important; }
.text-success { color: var(--theme-success-strong) !important; }
.text-danger  { color: var(--theme-danger-strong) !important; }
.text-warning { color: var(--theme-warning-strong) !important; }
.text-info    { color: var(--theme-info-strong) !important; }
.text-secondary { color: var(--theme-secondary-strong) !important; }
.text-muted   { color: var(--gray-dark) !important; }

/* Backgrounds */
.bg-primary { background-color: var(--theme-primary-strong) !important; color: #fff; }
.bg-success { background-color: var(--theme-success-strong) !important; color: #fff; }
.bg-danger  { background-color: var(--theme-danger-strong) !important; color: #fff; }
.bg-warning { background-color: var(--theme-warning-strong) !important; color: var(--gray-darker); }
.bg-info    { background-color: var(--theme-info-strong) !important; color: #fff; }
.bg-secondary { background-color: var(--theme-secondary-strong) !important; color: #fff; }

/* Subtle Backgrounds (The "Theme" look) */
.bg-primary-subtle { background-color: var(--theme-primary-bg) !important; color: var(--theme-primary-strong) !important; }
.bg-success-subtle { background-color: var(--theme-success-bg) !important; color: var(--theme-success-strong) !important; }
.bg-danger-subtle  { background-color: var(--theme-danger-bg) !important; color: var(--theme-danger-strong) !important; }
.bg-warning-subtle { background-color: var(--theme-warning-bg) !important; color: var(--theme-warning-strong) !important; }
.bg-info-subtle    { background-color: var(--theme-info-bg) !important; color: var(--theme-info-strong) !important; }
.bg-secondary-subtle { background-color: var(--theme-secondary-bg) !important; color: var(--theme-secondary-strong) !important; }

/* Alerts - User requested specific look */
.alert-primary { background-color: var(--theme-primary-bg); border-color: var(--theme-primary-strong); color: var(--theme-primary-strong); }
.alert-success { background-color: var(--theme-success-bg); border-color: var(--theme-success-strong); color: var(--theme-success-strong); }
.alert-danger  { background-color: var(--theme-danger-bg); border-color: var(--theme-danger-strong); color: var(--theme-danger-strong); }
.alert-warning { background-color: var(--theme-warning-bg); border-color: var(--theme-warning-strong); color: var(--theme-warning-strong); }
.alert-info    { background-color: var(--theme-info-bg); border-color: var(--theme-info-strong); color: var(--theme-info-strong); }
.alert-secondary { background-color: var(--theme-secondary-bg); border-color: var(--theme-secondary-strong); color: var(--theme-secondary-strong); }

/* Buttons - Flat Style & Standardized */
.btn {
    border: none;
    border-radius: 8px; /* Match Cards */
    font-weight: 600;
    padding: 0.6rem 1.2rem; /* Default Size */
    transition: all 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.08); /* Soft Shadow */
    letter-spacing: 0.02em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem; /* Space between icon and text */
}

.btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0,0,0,0.12);
}

.input-group .btn:hover {
    transform: none; /* Desabilita o "pulo" dentro de input-groups */
    box-shadow: none; /* Opcional: remove shadow extra se desejado, ou mantém */
}

.btn:active, .btn.show {
    transform: translateY(0);
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}

/* Size Variants */
.btn-sm {
    padding: 0.4rem 0.8rem;
    font-size: 0.85rem;
    border-radius: 6px;
}

.btn-lg {
    padding: 0.8rem 1.6rem;
    font-size: 1.1rem;
    border-radius: 10px;
}

/* Color Variants - Using Theme Variables */
.btn-primary { background-color: var(--theme-primary-strong); color: #fff; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background-color: #0b9ec2 !important; color: #fff; }

.btn-success { background-color: var(--theme-success-strong); color: #fff; }
.btn-success:hover, .btn-success:focus, .btn-success:active { background-color: #65a662 !important; color: #fff; }

.btn-danger { background-color: var(--theme-danger-strong); color: #fff; }
.btn-danger:hover, .btn-danger:focus, .btn-danger:active { background-color: #e66a6a !important; color: #fff; }

.btn-warning { background-color: var(--theme-warning-strong); color: #fff; }
.btn-warning:hover, .btn-warning:focus, .btn-warning:active { background-color: #eebb33 !important; color: #fff; }

.btn-info { background-color: var(--theme-info-strong); color: #fff; }
.btn-info:hover, .btn-info:focus, .btn-info:active { background-color: #8463c5 !important; color: #fff; }

.btn-secondary { background-color: var(--theme-secondary-strong); color: #fff; }
.btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active { background-color: #8a8a8a !important; color: #fff; }

.btn-light { 
    background-color: #fff; 
    color: var(--gray-darker); 
    border: 1px solid #E6E9ED !important; /* Explicit border for light buttons */
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.btn-light:hover { 
    background-color: var(--gray-light); 
    border-color: #D1D5D8 !important;
}

/* Inputs */
.form-control, .form-select {
    border-radius: 8px; /* Match Buttons */
    border: 2px solid #E6E9ED;
    padding: 0.6rem 1rem;
    background-color: #fff;
    color: var(--gray-darker);
    font-weight: 500;
    transition: border-color 0.2s;
}

.form-control:focus, .form-select:focus {
    border-color: var(--theme-primary-strong);
    box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.15);
    background-color: #fff;
}

/* Fix Input Groups Borders to Match Custom Theme */
.input-group-text {
    background-color: #fff;
    border: 2px solid #E6E9ED; /* Matches .form-control */
    color: var(--gray-dark);
    transition: border-color 0.2s; /* Sincroniza a animação com o input */
    position: relative; /* Para garantir z-index correto se necessário */
    z-index: 2;
}

/* Ensure focus ring covers the group properly or adjust z-index */
.input-group:focus-within .input-group-text {
    border-color: var(--theme-primary-strong);
}

.input-group:focus-within {
    box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.15);
    border-radius: 8px; /* Mantém a forma arredondada */
    z-index: 3;
}

.input-group:focus-within .form-control {
    box-shadow: none !important; /* Remove shadow individual para usar a do grupo */
}

.form-label {
    font-weight: 600;
    color: var(--gray-dark);
    font-size: 0.85rem;
    margin-bottom: 0.5rem;
}

/* Cards */
.card {
    border: none;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
    background-color: #fff;
    margin-bottom: 1.5rem;
}

.card-header {
    background-color: #fff;
    border-bottom: 2px solid var(--gray-light);
    padding: 1.25rem;
    font-weight: 700;
}

/* Tables */
.table-responsive {
    border-radius: 8px;
    overflow: hidden;
}

.table {
    margin-bottom: 0;
    background-color: #fff;
}

.table thead th {
    background-color: var(--gray-light);
    color: var(--gray-dark);
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    border-bottom: 2px solid #CCD1D9;
    padding: 1rem;
}

.table tbody td {
    padding: 1rem;
    vertical-align: middle;
    color: var(--gray-darker);
    border-bottom: 1px solid #D1D5D8;
    font-size: 0.9rem;
}

.table-hover tbody tr:hover {
    background-color: #FAFBFC;
}

/* Badges */
.badge {
    padding: 0.5em 0.8em;
    font-weight: 700;
    border-radius: 4px;
    letter-spacing: 0.5px;
}

/* Modals */
.modal-content {
    border: none;
    border-radius: 12px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.1);
}
.modal-header {
    border-bottom: 2px solid var(--gray-light);
    padding: 1.5rem;
}
.modal-footer {
    border-top: 2px solid var(--gray-light);
    padding: 1.5rem;
}

/* KPI Cards - Updated to use new vars */
.kpi-card {
    border-left: 5px solid transparent;
    transition: transform 0.2s;
    background-color: #fff;
}
.kpi-card:hover { transform: translateY(-3px); }

.kpi-card.primary { border-color: var(--theme-primary-strong); }
.kpi-card.success { border-color: var(--theme-success-strong); }
.kpi-card.warning { border-color: var(--theme-warning-strong); }
.kpi-card.danger  { border-color: var(--theme-danger-strong); }
.kpi-card.secondary { border-color: var(--theme-secondary-strong); }
.kpi-card.info    { border-color: var(--theme-info-strong); }
.kpi-card.purple  { border-color: var(--theme-info-strong); } /* Mapping purple to info */

/* Sidebar & Nav */
.sidebar {
    background-color: #fff;
    border-right: 1px solid #E6E9ED;
}
.nav-link {
    color: var(--gray-dark);
    font-weight: 600;
    padding: 0.8rem 1rem;
    border-radius: 6px;
    transition: all 0.2s;
}
.nav-link:hover {
    background-color: var(--gray-light);
    color: var(--theme-primary-strong);
}
.nav-link.active {
    background-color: var(--theme-primary-bg);
    color: var(--theme-primary-strong);
}
.nav-link i { margin-right: 0.75rem; font-size: 1.1em; }

/* List Group Active State */
.list-group-item.active {
    background-color: var(--theme-primary-strong);
    border-color: var(--theme-primary-strong);
    color: #fff;
}

/* Utilities */
.text-small { font-size: 0.85rem; }
.fw-bold { font-weight: 700 !important; }
.shadow-sm { box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; }

/* Scrollbar */
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
::-webkit-scrollbar-track {
    background: #f1f1f1; 
}
::-webkit-scrollbar-thumb {
    background: #c1c1c1; 
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: #a8a8a8; 
}

/* Form Validation Overrides - Custom Palette */
.invalid-feedback {
    color: var(--theme-danger-strong) !important;
}

.valid-feedback {
    color: var(--theme-success-strong) !important;
}

.form-control.is-invalid, .form-select.is-invalid {
    border-color: var(--theme-danger-strong) !important;
    padding-right: calc(1.5em + 0.75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23f78b8b'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f78b8b' stroke='none'/%3e%3c/svg%3e") !important;
    background-repeat: no-repeat;
    background-position: right calc(0.375em + 0.1875rem) center;
    background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

.form-control.is-invalid:focus, .form-select.is-invalid:focus {
    border-color: var(--theme-danger-strong) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--theme-danger-rgb), 0.25) !important;
}

.form-control.is-valid, .form-select.is-valid {
    border-color: var(--theme-success-strong) !important;
    padding-right: calc(1.5em + 0.75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%237ebb7a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") !important;
    background-repeat: no-repeat;
    background-position: right calc(0.375em + 0.1875rem) center;
    background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

.form-control.is-valid:focus, .form-select.is-valid:focus {
    border-color: var(--theme-success-strong) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--theme-success-rgb), 0.25) !important;
}

/* Checkbox & Radio Custom Colors */
.form-check-input:checked {
    background-color: var(--theme-primary-strong) !important;
    border-color: var(--theme-primary-strong) !important;
}

.form-check-input:focus {
    border-color: var(--theme-primary-strong) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--theme-primary-rgb), 0.25) !important;
}

.form-check-input.is-invalid:checked {
    background-color: var(--theme-danger-strong) !important;
    border-color: var(--theme-danger-strong) !important;
}

.form-check-input.is-invalid:focus {
    box-shadow: 0 0 0 0.25rem rgba(var(--theme-danger-rgb), 0.25) !important;
}

.form-check-input.is-valid:checked {
    background-color: var(--theme-success-strong) !important;
    border-color: var(--theme-success-strong) !important;
}

.form-check-input.is-valid:focus {
    box-shadow: 0 0 0 0.25rem rgba(var(--theme-success-rgb), 0.25) !important;
}

/* FullCalendar Customization */
.fc-event { 
    cursor: pointer; 
    white-space: normal !important;
    height: auto !important;
    min-height: auto !important;
    overflow: hidden;
    /* Remove default borders and background */
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
}
.fc-event-main { 
    padding: 1px 3px !important; 
    height: 100%;
    display: flex; 
    flex-direction: column; 
    justify-content: space-between;
}

/* Custom Tooltip Styling */
.custom-tooltip .tooltip-inner {
    background-color: #f8f9fa !important;
    color: #212529 !important;
    border: 2px dotted #6c757d;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    max-width: 280px;
    text-align: left;
    font-family: 'Inter', sans-serif;
}
.custom-tooltip .tooltip-arrow::before {
    border-top-color: #6c757d; /* Match border color */
}

/* Weekend Styling */
.fc-day-sat, .fc-day-sun {
    background-color: #f8f9fa !important;
}

/* Custom Scrollbar for Wall & Dropdowns */
.custom-scrollbar::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}
.custom-scrollbar::-webkit-scrollbar-track {
    background: transparent;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
    background: #d1d5d8;
    border-radius: 10px;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
    background: #aab2bd;
}

/* Firefox Support */
.custom-scrollbar {
    scrollbar-width: thin;
    scrollbar-color: #d1d5d8 transparent;
}

/* Mobile Adjustments */
@media (max-width: 768px) {
    .fc-toolbar { flex-direction: column; gap: 10px; }
    .fc-toolbar-title { font-size: 1.2rem !important; }
}
