.calendar-header { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-4); margin-bottom: var(--space-5); } /* Sem text-transform: capitalize (deixava "Setembro De 2026"); a maiúscula inicial vem do JS. */ .calendar-header__title { font-size: 1.1rem; font-weight: 700; min-width: 180px; } .calendar-nav { display: flex; gap: var(--space-2); } .calendar-header__action { margin-left: auto; } .calendar-filters { display: flex; flex-wrap: wrap; gap: var(--space-2); } .filter-chip { padding: var(--space-2) var(--space-4); border-radius: var(--radius-pill); border: 1px solid var(--border-subtle); font-size: 0.8rem; font-weight: 600; color: var(--text-secondary); background: var(--bg-surface); transition: border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast); } .filter-chip:hover { border-color: var(--accent); color: var(--text-primary); } .filter-chip.is-active { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); } /* Cada chip usa, quando ativo, a mesma cor do pill de compromisso que ele filtra — o próprio filtro funciona como legenda das cores do calendário. */ .filter-chip[data-filter="departamento"].is-active { background: var(--gold); border-color: var(--gold); color: #1a1721; } .filter-chip[data-filter="todos"].is-active { background: var(--teal); border-color: var(--teal); color: #1a1721; } .filter-chip[data-filter="equipe"].is-active { background: var(--slate); border-color: var(--slate); color: #1a1721; } .filter-chip[data-filter="evento"].is-active { background: var(--coral); border-color: var(--coral); color: #1a1721; } .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: var(--border-subtle); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; } .calendar-grid__weekday { background: var(--bg-surface-raised); padding: var(--space-2) var(--space-3); font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); text-align: center; } .calendar-day { background: var(--bg-surface); height: 108px; min-height: 0; overflow: hidden; padding: var(--space-2); display: flex; flex-direction: column; gap: var(--space-1); } .calendar-day__events { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: var(--space-1); overflow-y: auto; } .calendar-day.is-feriado { background: rgba(var(--danger-rgb), 0.1); } .calendar-day__holiday { flex-shrink: 0; font-size: 0.68rem; font-weight: 600; padding: 2px 6px; border-radius: var(--radius-sm); background: var(--danger); color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; } .calendar-day.is-outside { background: var(--bg-canvas); } .calendar-day.is-outside .calendar-day__number { color: var(--text-muted); } .calendar-day.is-today .calendar-day__number { background: var(--accent); color: var(--accent-contrast); } .calendar-day__header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; } .calendar-day__number { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 0.8rem; font-weight: 600; color: var(--text-primary); cursor: pointer; transition: background var(--transition-fast); } .calendar-day__number:hover { background: var(--bg-surface-raised); } .calendar-day.is-today .calendar-day__number:hover { background: var(--accent-hover); } .day-modal-list { display: flex; flex-direction: column; gap: var(--space-2); max-height: 360px; overflow-y: auto; } .day-modal-list .calendar-event, .day-modal-list .calendar-day__holiday { white-space: normal; } .calendar-day__add { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); color: var(--text-muted); opacity: 0; transition: opacity var(--transition-fast), color var(--transition-fast), background var(--transition-fast); } .calendar-day:hover .calendar-day__add { opacity: 1; } /* Tela de toque não tem hover: o "+" fica sempre visível. */ @media (hover: none) { .calendar-day__add { opacity: 1; } } .calendar-day__add:hover { color: var(--accent); background: var(--bg-surface-raised); } .calendar-event { flex-shrink: 0; font-size: 0.68rem; font-weight: 600; padding: 2px 6px; border-radius: var(--radius-sm); color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; } /* Cor por categoria de visibilidade (ver "Calendário Individual e Widgets" no CLAUDE.md) — cada uma tem sua própria cor fixa pra dar pra diferenciar várias categorias ao mesmo tempo no calendário; "Somente eu" é a exceção (usa --accent, o tema de cor escolhido pelo usuário). Todo pill é clicável — o próprio abre pra editar, os demais abrem um popup só leitura com todos os detalhes (tipo de visibilidade, departamento, responsável). */ .calendar-event--somente-eu { background: var(--accent); color: var(--accent-contrast); } .calendar-event--departamento { background: var(--gold); color: #1a1721; } .calendar-event--todos { background: var(--teal); color: #1a1721; } .calendar-event--equipe { background: var(--slate); color: #1a1721; } /* Evento (`eh_evento`) é sempre visibilidade "todos", mas ganha um bucket próprio (distinto do "todos" genérico) pra dar pra filtrar/reconhecer só os eventos corporativos formais entre os compromissos compartilhados com todo mundo — ver pidEventoCategoria() em calendar-individual.js. */ .calendar-event--evento { background: var(--coral); color: #1a1721; } /* Campo "Categoria" do modal de compromisso: select + botão inline de "nova categoria" (só visível com a permissão), lado a lado. */ .ic-inline-field { display: flex; align-items: center; gap: var(--space-2); } .ic-inline-field select { flex: 1; } /* Bolinha de cor no popup de detalhes — a cor é escolhida livremente por quem cadastra a categoria, por isso via `style` inline no JS, não uma classe por categoria (ver "Acessos Gerais/Calendário Individual" no CLAUDE.md). */ .ic-view-categoria-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: var(--space-2); vertical-align: middle; } @media (max-width: 720px) { .calendar-day { height: 76px; } .calendar-event { font-size: 0.6rem; } } /* Descrição no popup de detalhes: mantém as quebras de linha digitadas e quebra palavra/URL comprida em vez de estourar o modal. */ .ic-view-descricao { white-space: pre-wrap; overflow-wrap: anywhere; }