@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

:root {
    color-scheme: dark;
    --bg-color-1: #09090b; 
    --bg-secondary: #18181b;
    --card: rgba(20, 20, 24, 0.4);
    --border: #27272a; 
    --text: #fafafa;
    --text-muted: #a1a1aa;
    --primary: #ffffff; 
    --input-bg: #131316; 
    --highlight-bg: rgba(255, 255, 255, 0.05);
    --drop-shadow: 0 10px 40px rgba(0,0,0,0.8);
}

html.light-mode {
    color-scheme: light;
    --bg-color-1: #f4f4f5; 
    --bg-secondary: #e4e4e7;
    --card: rgba(255, 255, 255, 0.8);
    --border: #d4d4d8; 
    --text: #18181b; 
    --text-muted: #52525b;
    --primary: #000000;
    --input-bg: #ffffff;
    --highlight-bg: rgba(0, 0, 0, 0.05);
    --drop-shadow: 0 10px 30px rgba(0,0,0,0.15);
}

html, body {
    min-height: 100vh;
    background-color: var(--bg-color-1);
    font-family: 'Inter', sans-serif;
    color: var(--text);
    margin: 0; padding: 0;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

body {
    background-image: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.03) 0%, transparent 50%), radial-gradient(circle at 100% 100%, rgba(255, 255, 255, 0.02) 0%, transparent 50%);
    background-attachment: fixed; background-size: cover;
    /* PROTEÇÃO SAFE AREA IPHONE/ANDROID */
    padding-bottom: env(safe-area-inset-bottom);
    padding-top: env(safe-area-inset-top);
    padding-left: env(safe-area-inset-left);
    padding-right: env(safe-area-inset-right);
}
html.light-mode body { background-image: radial-gradient(circle at 0% 0%, rgba(0, 0, 0, 0.03) 0%, transparent 50%), radial-gradient(circle at 100% 100%, rgba(0, 0, 0, 0.02) 0%, transparent 50%); }

input, button, select, textarea { font-family: 'Inter', sans-serif !important; outline: none !important; }

/* Cards e Paineis */
.card-panel { background: var(--card); backdrop-filter: blur(24px); border: 1px solid var(--border); border-radius: 1.25rem; }
.card-stat { background: var(--card); backdrop-filter: blur(20px); border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; transition: border-color 0.2s ease; }
.card-stat:hover { border-color: var(--text-muted); }

/* Inputs Corrigidos */
.input-field { 
    width: 100%; height: 48px; padding: 0 1rem; background-color: var(--input-bg); 
    border: 1px solid var(--border); border-radius: 0.75rem; color: var(--text); 
    transition: all 0.2s ease; font-size: 14px; box-sizing: border-box;
    display: block; line-height: 46px; 
}
.input-field:focus { border-color: var(--primary); background-color: var(--bg-color-1); }
.input-field::placeholder { 
    color: var(--text-muted) !important; 
    font-weight: 500 !important; 
    opacity: 1 !important; 
    letter-spacing: normal !important; 
    font-size: 14px !important; 
}
select.input-field { cursor: pointer; appearance: none; -webkit-appearance: none; }

/* =======================================================
   EFEITOS DE INPUT E CALENDÁRIO (Idêntico ao Dropdown)
======================================================= */
.flatpickr-input { 
    background-color: var(--input-bg) !important; 
    color: var(--text-muted) !important; 
    border: 1px solid var(--border) !important; 
    cursor: pointer !important;
    transition: all 0.2s ease !important;
}
.flatpickr-input::placeholder { color: var(--text-muted) !important; }

/* Hover e Foco apenas alteram a borda e clareiam o texto, sem fundo */
.flatpickr-input:hover,
.flatpickr-input:focus, 
.flatpickr-input.active { 
    border-color: var(--text-muted) !important; 
    color: var(--text) !important;
}

/* Faz o ícone de calendário acompanhar o Hover do input suavemente */
i.ph-calendar-blank { transition: color 0.2s ease !important; }
.relative:has(.flatpickr-input:hover) i.ph-calendar-blank,
.relative:has(.flatpickr-input:focus) i.ph-calendar-blank,
.relative:has(.flatpickr-input.active) i.ph-calendar-blank {
    color: var(--text) !important;
}

/* Botões Padronizados */
.btn-primary, .btn-secondary, .tab-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    font-weight: 700; border-radius: 0.75rem; transition: all 0.2s ease;
    text-transform: uppercase; letter-spacing: 0.05em; font-size: 11px;
    height: 48px; padding: 0 1.2rem; cursor: pointer; border: 1px solid transparent;
}
.btn-primary { background: var(--primary); color: var(--bg-color-1); border-color: var(--primary); }
.btn-primary:hover:not(:disabled) { opacity: 0.85; }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }

.btn-secondary { background-color: var(--input-bg); color: var(--text-muted); border-color: var(--border); }
.btn-secondary:hover:not(:disabled) { border-color: var(--text-muted); color: var(--text); }
.btn-secondary:disabled { opacity: 0.5; cursor: not-allowed; }

.tab-btn { background: transparent; border-color: transparent; color: var(--text-muted); }
.tab-btn.active { color: var(--bg-color-1); border-color: var(--primary); background: var(--primary); }
.tab-btn:not(.active):hover { color: var(--text); background: var(--highlight-bg); }

/* Utilitários */
.scroll-mobile { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; margin-bottom: -12px; }
.scroll-mobile::-webkit-scrollbar, .no-scrollbar::-webkit-scrollbar { display: none; }
.fade-in { animation: fadeIn 0.4s ease forwards; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* Toasts */
#toast-container { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); z-index: 9999; display: flex; flex-direction: column; gap: 8px; width: 90%; max-width: 400px; }
.toast { background-color: var(--card); backdrop-filter: blur(20px); border: 1px solid var(--border); color: var(--text); padding: 16px 20px; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.5); font-size: 14px; font-weight: 500; display: flex; align-items: center; gap: 12px; animation: slideDown 0.4s forwards, fadeOut 0.3s 3.5s forwards; }
.toast.error i { color: #ef4444; }
.toast.success i { color: #10b981; }
@keyframes slideDown { from { transform: translateY(-100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes fadeOut { to { opacity: 0; transform: translateY(-20px); } }

#chart { filter: var(--chart-filter, none); }
html.light-mode #chart { --chart-filter: invert(1) hue-rotate(180deg); }


/* =======================================================
   DROPDOWNS E RELATÓRIOS
======================================================= */
/* O Botão que abre o menu */
.drop-btn { 
    background: var(--input-bg) !important; 
    color: var(--text-muted) !important; 
    border: 1px solid var(--border) !important; 
    transition: all 0.2s ease !important;
}
/* Força icones e textos a seguirem o hover */
.drop-btn *, .drop-btn span i { transition: all 0.2s ease !important; color: inherit !important; } 

.drop-btn:hover { 
    border-color: var(--text-muted) !important; 
    color: var(--text) !important;
}
.drop-btn:focus, .drop-btn:focus-within, .drop-btn.active-drop { 
    border-color: var(--text-muted) !important; 
    color: var(--text) !important;
}

/* O Menu Dropdown Flutuante */
.drop-menu { 
    background: var(--input-bg) !important; 
    border: 1px solid var(--border) !important; 
    box-shadow: var(--drop-shadow) !important;
    border-radius: 1rem !important; 
    padding: 6px !important;
}

.drop-menu div { 
    color: var(--text-muted) !important; 
    border-bottom: none !important; 
    border: 1px solid transparent !important; 
    border-radius: 0.5rem !important;
    margin-bottom: 2px !important;
    transition: all 0.2s ease !important; 
}
.drop-menu div:last-child { margin-bottom: 0 !important; }
.drop-menu div:hover, .drop-menu div:hover * { 
    background: var(--highlight-bg) !important; 
    border-color: var(--border) !important;
    color: var(--text) !important; 
}


/* =======================================================
   FLATPICKR: DESIGN SYSTEM PURO E RESPONSIVO
======================================================= */
.flatpickr-calendar { 
    background: var(--input-bg) !important; 
    border: 1px solid var(--border) !important; 
    box-shadow: var(--drop-shadow) !important; 
    font-family: 'Inter', sans-serif !important; 
    border-radius: 1.25rem !important; 
    padding: 16px !important; 
    width: 320px !important; 
    max-width: 100% !important;
    box-sizing: border-box !important;
}

.flatpickr-innerContainer, .flatpickr-rContainer, .flatpickr-weekdays, .flatpickr-days, .dayContainer {
    background: transparent !important;
}

.flatpickr-calendar::before, .flatpickr-calendar::after,
.flatpickr-calendar.arrowTop::before, .flatpickr-calendar.arrowTop::after,
.flatpickr-calendar.arrowBottom::before, .flatpickr-calendar.arrowBottom::after { display: none !important; }

/* --- CABEÇALHO (Mês / Ano perfeitamente centralizados) --- */
.flatpickr-months { 
    position: relative !important; 
    height: 32px !important;
    background: transparent !important; 
    margin-bottom: 16px !important; 
    padding: 0 !important;
}

/* SETAS */
.flatpickr-prev-month, .flatpickr-next-month { 
    position: absolute !important; 
    top: 50% !important;
    transform: translateY(-50%) !important;
    display: flex !important; align-items: center !important; justify-content: center !important; 
    width: 32px !important; height: 32px !important; padding: 0 !important; 
    border-radius: 8px !important; border: 1px solid transparent !important;
    z-index: 10 !important; background: transparent !important; cursor: pointer !important; pointer-events: auto !important;
    transition: all 0.2s ease !important; 
}
.flatpickr-prev-month { left: 0 !important; }
.flatpickr-next-month { right: 0 !important; }

.flatpickr-prev-month svg, .flatpickr-next-month svg { 
    fill: var(--text-muted) !important; width: 14px !important; height: 14px !important; transition: fill 0.2s ease !important;
}

.flatpickr-prev-month:hover, .flatpickr-next-month:hover { 
    background: var(--highlight-bg) !important; 
    border-color: var(--border) !important; 
}
.flatpickr-prev-month:hover svg, .flatpickr-next-month:hover svg { fill: var(--text) !important; }

/* MÊS E ANO */
.flatpickr-month { 
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    transform: translate(-50%, -50%) !important; 
    display: flex !important; align-items: center !important; justify-content: center !important; 
    background: transparent !important; 
    width: max-content !important;
    pointer-events: none !important; 
}

.flatpickr-current-month { 
    position: static !important;
    transform: none !important;
    left: auto !important;
    display: flex !important; align-items: center !important; justify-content: center !important; 
    gap: 6px !important; padding: 0 !important; font-size: 110% !important; 
    color: var(--text) !important;
}

.flatpickr-current-month .numInputWrapper { width: 75px !important; }

/* CORREÇÃO DO TEMA CLARO AQUI: span.cur-month garante que a palavra "Maio" apareça */
.flatpickr-current-month span.cur-month,
.flatpickr-current-month .flatpickr-monthDropdown-months, 
.flatpickr-current-month .numInputWrapper input {
    pointer-events: none !important; appearance: none !important; -webkit-appearance: none !important;
    background: transparent !important; color: var(--text) !important; font-weight: 800 !important; 
    border: none !important; padding: 0 !important; margin: 0 !important;
}

.numInputWrapper span { display: none !important; } 

/* --- CORPO E DIAS DA SEMANA --- */
.flatpickr-weekdays { display: flex !important; margin-bottom: 8px !important; height: auto !important;}
.flatpickr-weekdaycontainer { display: flex !important; flex: 1 !important; }
span.flatpickr-weekday { background: transparent !important; color: var(--text-muted) !important; font-weight: 700 !important; font-size: 11px !important; flex: 1 !important; text-align: center !important; }

/* GRID DE DIAS */
.flatpickr-days { width: 100% !important; display: flex !important; justify-content: center !important; }
.dayContainer { 
    width: 100% !important; min-width: 100% !important; max-width: 100% !important; 
    display: flex !important; flex-wrap: wrap !important; justify-content: space-around !important; 
}

/* ESTILO INDIVIDUAL DO DIA */
.flatpickr-day { 
    flex-basis: 14.2% !important; 
    max-width: 38px !important; height: 38px !important; line-height: 38px !important; margin: 2px 0 !important; 
    display: flex !important; align-items: center !important; justify-content: center !important; 
    color: var(--text-muted) !important; 
    border-radius: 0.5rem !important; border: 1px solid transparent !important; 
    background: transparent !important; box-shadow: none !important; font-size: 14px !important; font-weight: 500 !important;
    transition: all 0.2s ease !important; 
}
.flatpickr-day.today { 
    border-color: var(--border) !important; 
    color: var(--text) !important;
}
.flatpickr-day.flatpickr-disabled { color: var(--text-muted) !important; opacity: 0.3 !important; pointer-events: none !important; }

/* Dias inativos do mês passado/futuro */
.flatpickr-day.nextMonthDay, .flatpickr-day.prevMonthDay { color: var(--text-muted) !important; opacity: 0.3 !important; pointer-events: none !important; }

/* Hover do Dia Refinado */
.flatpickr-day:not(.flatpickr-disabled):not(.selected):hover, 
.flatpickr-day:not(.flatpickr-disabled):not(.selected):focus { 
    background: var(--highlight-bg) !important; 
    border-color: var(--text-muted) !important; 
    color: var(--text) !important;
}

/* SELEÇÃO FINAL DO DIA */
.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, 
.flatpickr-day.selected:focus, .flatpickr-day.selected:hover { 
    background: var(--primary) !important; border-color: var(--primary) !important; color: var(--bg-color-1) !important; font-weight: 800 !important; 
}