/* Canal Calendário. A grade é FullCalendar v7 com o tema oficial Classic vendorizado:
   na v7 as classes do vendor são hasheadas por build (`fc-classic-i9F`) e não há mais a
   classe `fc`, então seletor de classe de terceiro aqui é letra morta que o próximo
   `vendor` renomeia. Todo gancho desta folha é do domínio — `.calendar-grid`,
   `.calendar-evento`, `.calendar-ocupado` —, e a adaptação ao Hub acontece só pelas
   variáveis `--fc-classic-*`, que são a API pública do tema (CALENDAR-024). */
.calendar-channel { gap:0; }
.calendar-channel-header { flex:0 0 auto; }
.calendar-search .calendar-search-input { flex:1 1 auto; min-width:0; max-width:720px; }
.calendar-corpo { display:flex; flex-direction:column; flex:1 1 auto; gap:var(--chat-space-4); min-height:0; overflow:auto; padding:var(--chat-space-5); }
.calendar-grid { flex:0 0 auto; padding:var(--chat-space-3); border:1px solid var(--chat-color-border); border-radius:var(--chat-radius-lg); background:var(--chat-color-surface-solid); }
.calendar-error,.calendar-form-error { margin:0; color:var(--chat-color-error); }
.calendar-event-dialog { width:min(680px, 94vw); }
.calendar-dialog .hub-dialog-body { display:grid; gap:var(--chat-space-3); }
.calendar-event-dialog .hub-tabpanel { display:grid; gap:var(--chat-space-3); }
.calendar-event-dialog .hub-tabpanel.is-hidden { display:none; }

/* Neutralização da paleta do tema Classic: cada variável que `classic-palette.css`
   declara com literal de cor é redeclarada aqui em token M3, no elemento que o próprio
   canal cria. Assim nenhum `#rrggbb` de terceiro pinta dentro do canal e a grade segue
   a marca gerada por contratante. */
.calendar-channel .calendar-grid { --fc-classic-background:var(--chat-color-surface); --fc-classic-faint:var(--chat-color-surface-muted); --fc-classic-muted:var(--chat-color-surface-pressed); --fc-classic-strong:var(--chat-color-surface-raised); --fc-classic-foreground:var(--chat-color-text-primary); --fc-classic-faint-foreground:var(--chat-color-text-muted); --fc-classic-muted-foreground:var(--chat-color-text-secondary); --fc-classic-border:var(--chat-color-border); --fc-classic-strong-border:var(--chat-color-focus); --fc-classic-button:var(--chat-color-primary); --fc-classic-button-border:var(--chat-color-primary); --fc-classic-button-strong:var(--chat-color-primary-dark); --fc-classic-button-strong-border:var(--chat-color-primary-dark); --fc-classic-button-outline:var(--chat-color-focus); --fc-classic-button-foreground:var(--chat-color-on-primary); --fc-classic-primary:var(--chat-color-primary); --fc-classic-primary-foreground:var(--chat-color-on-primary); --fc-classic-event:var(--chat-color-primary); --fc-classic-event-contrast:var(--chat-color-on-primary); --fc-classic-background-event:var(--chat-color-success); --fc-classic-highlight:var(--chat-color-primary-soft); --fc-classic-today:var(--chat-color-primary-soft); --fc-classic-now:var(--chat-color-accent); color:var(--chat-color-text-primary); }

/* Ocorrência: a classe vem de `className` por evento (§7), que é o gancho estável da v7.
   `busy` não é evento clicável para editar, mas abre o aviso — o cursor é o mesmo. */
.calendar-channel .calendar-evento { cursor:pointer; }

.calendar-form-hint { color:var(--chat-color-text-secondary); }
.calendar-scope .hub-dialog-footer { flex-wrap:wrap; gap:var(--chat-space-2); }
.calendar-scope-warning { margin:0 0 var(--chat-space-3); padding:0 var(--chat-space-4); color:var(--chat-color-text-secondary); font:var(--md-sys-typescale-body-small); }
.calendar-reminders { display:flex; align-items:flex-start; gap:var(--chat-space-2); padding:var(--chat-space-3); border:1px solid var(--chat-color-border); border-radius:var(--chat-radius-lg); background:var(--chat-color-primary-soft); color:var(--chat-color-text-primary); }
.calendar-reminders ul { margin:0; padding-inline-start:var(--chat-space-4); font:var(--md-sys-typescale-body-small); }
.calendar-share-lista { display:flex; flex-direction:column; gap:var(--chat-space-2); margin:0; padding:0; list-style:none; }
.calendar-share-item { display:flex; align-items:center; gap:var(--chat-space-2); justify-content:space-between; }
.calendar-share-nivel,.calendar-share-vazio { color:var(--chat-color-text-secondary); font:var(--md-sys-typescale-label-medium); }
.calendar-attendees-editor,.calendar-attendees-detail { display:grid; gap:var(--chat-space-2); margin:0; padding:var(--chat-space-3); border:1px solid var(--chat-color-border); border-radius:var(--chat-radius-lg); }
.calendar-attendees-detail h4 { padding:0 var(--chat-space-1); margin:0; font:var(--md-sys-typescale-title-small); }
.calendar-attendee-list { display:flex; flex-direction:column; gap:var(--chat-space-2); margin:0; padding:0; list-style:none; }
.calendar-attendee-item { display:flex; align-items:center; justify-content:space-between; gap:var(--chat-space-2); }
.calendar-attendee-item small,.calendar-attendee-empty,.calendar-attendee-or { color:var(--chat-color-text-secondary); font:var(--md-sys-typescale-label-small); }
.calendar-attendee-inputs { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) minmax(8rem,auto) auto; align-items:end; gap:var(--chat-space-2); }
.calendar-invite-actions { display:flex; align-items:center; flex-wrap:wrap; gap:var(--chat-space-2); font:var(--md-sys-typescale-label-medium); }
.calendar-loading { color:var(--chat-color-text-secondary); }
/* Editor rico da descricao: a lib e o tema `snow` vem da base (`assets/app.css`); aqui so o
   tema em tokens, no mesmo desenho de `.projects-quill`. */
.calendar-description-field { gap:var(--chat-space-2); }
.calendar-quill { display:grid; width:100%; min-width:0; min-height:96px; gap:var(--chat-space-2); background:var(--md-sys-color-surface); color:var(--md-sys-color-on-surface); }
.calendar-quill .ql-toolbar,.calendar-quill .ql-container { border-color:var(--md-sys-color-outline-variant); border-radius:var(--chat-radius-sm); }
.calendar-quill .ql-toolbar + .ql-container { border-top:1px solid var(--md-sys-color-outline-variant); }
.calendar-quill .ql-editor { min-height:72px; color:var(--md-sys-color-on-surface); }
.calendar-quill .ql-stroke { stroke:var(--md-sys-color-on-surface-variant); }
.calendar-quill .ql-fill { fill:var(--md-sys-color-on-surface-variant); }
/* Detalhe: a mesma marcacao em leitura, sem moldura de campo. */
.calendar-quill--leitura { min-height:0; background:transparent; }
.calendar-quill--leitura .ql-container { border:0; }
.calendar-quill--leitura .ql-editor { min-height:0; padding:0; }
@media (max-width:900px) { .calendar-search .calendar-search-input { max-width:none; } }
@media (max-width:600px) { .calendar-corpo { gap:var(--chat-space-3); padding:var(--chat-space-3); } .calendar-grid { padding:var(--chat-space-2); border-radius:var(--chat-radius-md); } .calendar-attendee-inputs { grid-template-columns:1fr; } .calendar-attendee-or { text-align:center; } }
