/* ==========================================================================
   Página de Programação — IDOMED 34:895 (desktop 1440) · 34:976 (mobile 390)
   Componentes: Dia 34:805 · Filtro 34:824 · Atividade 34:829
   (original nos wireframes vUVXnbuRbYHpxsceFLdUTR: 61:287 / 61:526 / 60:275 / 60:280 / 60:384).
   Estrutura e medidas do wireframe, visual da página. Conteúdo gerado por
   js/modules/programacao.js a partir de js/data/programacao.js + pessoas.js.
   ========================================================================== */

.cn-page-prog main { padding-top: var(--ih-h); }

/* ---------- Topo (emendado ao header roxo) ---------- */
.cn-prog-hero {
  position: relative; isolation: isolate; overflow: hidden;
  padding-block: var(--space-48) var(--space-80);
  background: radial-gradient(45% 80% at 85% 0%, color-mix(in srgb, var(--purple-500) 35%, transparent), transparent 70%), var(--purple-900);
  color: var(--white);
}
.cn-prog-hero__inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-16); }
.cn-prog-hero .t-h2 { margin-top: var(--space-4); }
.cn-prog-hero__lead { max-width: 720px; color: color-mix(in srgb, var(--white) 82%, transparent); }
.cn-prog-hero__meta { display: flex; flex-wrap: wrap; gap: var(--space-8) var(--space-24); margin-top: var(--space-8); }
.cn-prog-hero__meta li { display: inline-flex; align-items: center; gap: var(--space-8); font: var(--fw-semibold) var(--fs-body-s)/1.5 var(--font-sans); }
.cn-prog-hero__meta svg { color: var(--lilac-400); }
.cn-prog-hero__butterfly {
  position: absolute; z-index: -1; right: max(-40px, calc((100% - var(--container)) / 2 - 120px)); bottom: -70px;
  width: 300px; height: 262px; color: color-mix(in srgb, var(--lilac-400) 14%, transparent); rotate: -12deg;
}
@media (prefers-reduced-motion: no-preference) {
  .cn-prog-hero__butterfly { animation: cn-flutter 7s ease-in-out infinite alternate; }
}

/* ---------- Corpo: coluna dos dias + linha do tempo ---------- */
.cn-prog { padding-block: var(--space-64) var(--space-96); background: var(--white); }
.cn-prog__inner { display: grid; grid-template-columns: var(--prog-side-w) minmax(0, 1fr); gap: var(--space-48); align-items: start; }
.cn-prog__side {
  position: sticky; top: calc(var(--ih-h-compact) + var(--space-24));
  display: flex; flex-direction: column; gap: var(--space-14);
}
.cn-prog__label { color: var(--text-muted); }

/* Dia (componente 34:805, Size L) */
.cn-prog__days { display: flex; flex-direction: column; gap: var(--space-14); }
.cn-day {
  display: flex; align-items: center; gap: var(--space-20); width: 100%;
  padding: var(--space-24) var(--space-24) var(--space-24) 26px;
  border: 1px solid var(--card-border); border-radius: var(--radius-tile);
  background: var(--white); color: var(--purple-900); text-align: left;
  transition: transform .3s var(--ease-out), border-color .3s, box-shadow .3s var(--ease-out), background-color .3s, color .3s;
}
.cn-day__num { flex: none; font: var(--fw-semibold) 64px/1 var(--font-sans); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.cn-day__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.cn-day__kicker { font: var(--fw-semibold) var(--fs-caption)/1 var(--font-sans); letter-spacing: var(--ls-label); text-transform: uppercase; }
.cn-day__tema { font: var(--fw-regular) var(--fs-small)/1.5 var(--font-sans); color: var(--text-body); }
.cn-day__wd-s, .cn-filter__s { display: none; }
.cn-day__resumo { font: var(--fw-regular) var(--fs-week)/1.3 var(--font-sans); color: var(--text-muted); }
.cn-day { position: relative; isolation: isolate; overflow: hidden; }
/* ativo: gradiente + brilhos */
.cn-day[aria-selected="true"] {
  background: var(--glow-day-active), var(--grad-day-active);
  border-color: transparent; color: var(--white);
  box-shadow: 0 16px 34px color-mix(in srgb, var(--purple-900) 26%, transparent), inset 0 1px 0 color-mix(in srgb, var(--white) 18%, transparent);
}
.cn-day::after { content: ""; position: absolute; z-index: -1; pointer-events: none; opacity: 0; transition: opacity .5s var(--ease-out), transform 1.2s var(--ease-out); }
/* faixa de brilho diagonal (passa uma vez ao ativar e no hover) */
.cn-day::after {
  top: -50%; bottom: -50%; left: 0; width: 40%;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--white) 16%, transparent), transparent);
  transform: translateX(-160%) rotate(18deg);
}
.cn-day[aria-selected="true"]::after { opacity: 1; transform: translateX(360%) rotate(18deg); }
@media (prefers-reduced-motion: reduce) { .cn-day::after { display: none; } }
.cn-day[aria-selected="true"] .cn-day__num { text-shadow: 0 2px 18px color-mix(in srgb, var(--lilac-500) 55%, transparent); }
.cn-day[aria-selected="true"] .cn-day__kicker { color: var(--lilac-150); }
.cn-day[aria-selected="true"] .cn-day__tema { color: color-mix(in srgb, var(--white) 85%, transparent); }
.cn-day[aria-selected="true"] .cn-day__resumo { color: color-mix(in srgb, var(--white) 60%, transparent); }
.cn-day.is-today .cn-day__kicker::after { content: " · hoje"; color: var(--lime-500); }
@media (hover: hover) {
  .cn-day:not([aria-selected="true"]):hover { border-color: var(--purple-700); transform: translateY(-2px); box-shadow: var(--card-shadow-hover); }
}

/* Resumo do dia */
.cn-prog__stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-10); }
.cn-prog__stat { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: var(--space-14); border: 1px solid var(--card-border); border-radius: var(--radius-sm); background: var(--lilac-50); text-align: left; }
/* mesmo tile do Sobre (.cn-tile--glow, 64px), reduzido para o box */
.cn-prog__stat dd { font: var(--fw-semibold) 24px/1.25 var(--font-sans); color: var(--purple-900); font-variant-numeric: tabular-nums; }
.cn-prog__stat dt { font: var(--fw-regular) var(--fs-caption)/1.3 var(--font-sans); color: var(--text-muted); }

/* Baixar PDF */
.cn-prog__pdf {
  display: flex; align-items: center; justify-content: center; gap: var(--space-10);
  min-height: 48px; padding: 0 var(--space-24);
  border: 1.5px solid var(--purple-900); border-radius: var(--radius-pill);
  font: var(--fw-semibold) var(--fs-nav)/1 var(--font-sans); color: var(--purple-900);
  transition: background-color var(--dur-base), color var(--dur-base);
}
.cn-prog__pdf:hover { background: var(--purple-900); color: var(--white); }
.cn-prog__pdf svg { transition: transform var(--dur-base) var(--ease-out); }
.cn-prog__pdf:hover svg { transform: translateY(2px); }
.cn-prog__pdf--mobile { display: none; }

/* ---------- Coluna direita ---------- */
.cn-prog__main { display: flex; flex-direction: column; gap: var(--space-24); min-width: 0; outline: none; }
.cn-prog__main.is-switching .cn-prog__swap { opacity: 0; transform: translateY(10px); }
.cn-prog__swap { transition: opacity .35s var(--ease-out), transform .45s var(--ease-out); }

/* Tema do dia: lilás com detalhe lateral roxo */

/* Filtros (componente 34:824) */
.cn-prog__filters { display: flex; flex-wrap: wrap; gap: var(--space-10); }

/* ---------- Linha do tempo ---------- */
.cn-tl { --rail-x: calc(var(--prog-time-w) + var(--space-16) + 6px); position: relative; }
/* trilho contínuo + preenchimento conforme a rolagem (--fill de 0 a 1, js) */
.cn-tl::before, .cn-tl::after {
  content: ""; position: absolute; left: var(--rail-x); top: 12px; bottom: 24px; width: 2px; border-radius: 2px;
}
.cn-tl::before { background: color-mix(in srgb, var(--lilac-400) 60%, transparent); }
.cn-tl::after { background: var(--purple-700); transform-origin: top; transform: scaleY(var(--fill, 0)); }
.cn-tl__item { position: relative; display: grid; grid-template-columns: var(--prog-time-w) 14px minmax(0, 1fr); column-gap: var(--space-16); padding-bottom: var(--space-20); }
.cn-tl__item[hidden] { display: none; }
.cn-tl__time { padding-top: 4px; text-align: right; display: flex; flex-direction: column; gap: 2px; }
.cn-tl__start { font: var(--fw-semibold) 17px/1.55 var(--font-sans); color: var(--purple-900); font-variant-numeric: tabular-nums; }
.cn-tl__end { font: var(--fw-regular) var(--fs-caption)/1 var(--font-sans); color: var(--text-muted); }
.cn-tl__time-m { display: none; }
.cn-tl__dot {
  position: relative; z-index: 1; margin-top: 10px; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid var(--purple-700); background: var(--white);
  transition: background-color .35s, transform .35s var(--ease-out), box-shadow .35s;
}
.cn-tl__item.is-passed .cn-tl__dot { background: var(--purple-700); }
.cn-tl__item--magna .cn-tl__dot { border-color: var(--purple-900); background: var(--lime-500); }
.cn-tl__item.is-live .cn-tl__dot { background: var(--lime-500); border-color: var(--purple-900); box-shadow: 0 0 0 5px color-mix(in srgb, var(--lime-500) 35%, transparent); }
/* degradê no último visível quando a lista está recolhida */
.cn-tl__item.is-fade { -webkit-mask-image: linear-gradient(to bottom, black 20%, transparent 95%); mask-image: linear-gradient(to bottom, black 20%, transparent 95%); pointer-events: none; }
.cn-tl__item.is-past { opacity: .55; }

/* ---------- Card de atividade (componente 34:829) ---------- */
.cn-act {
  display: flex; flex-direction: column; gap: var(--space-12);
  padding: var(--space-20) var(--space-24);
  border: 1px solid var(--card-border); border-radius: var(--radius-tile);
  background: var(--white); color: var(--purple-900);
  scroll-margin-top: calc(var(--ih-h-compact) + var(--space-24));
  transition: border-color .3s, box-shadow .3s var(--ease-out), transform .3s var(--ease-out);
}
@media (hover: hover) { .cn-act:hover { border-color: color-mix(in srgb, var(--purple-700) 55%, transparent); box-shadow: var(--card-shadow-hover); } }
.cn-act.is-open { border-color: var(--purple-700); box-shadow: 0 0 0 1px var(--purple-700), var(--card-shadow-hover); }
.cn-act.is-target { animation: cn-act-flash 1.6s var(--ease-out); }
@keyframes cn-act-flash { 0%, 30% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--lime-500) 70%, transparent); } }

.cn-act__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-12); flex-wrap: wrap; }
.cn-act__tags { display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; }
.cn-tag {
  display: inline-flex; align-items: center; padding: 5px var(--space-10); border-radius: var(--radius-xs);
  font: var(--fw-semibold) var(--fs-week)/1 var(--font-sans); letter-spacing: var(--ls-label); text-transform: uppercase;
  background: var(--tag-neutro-bg); color: var(--tag-neutro-ink); white-space: nowrap;
}
.cn-tag--mesa { background: var(--tag-mesa-bg); color: var(--tag-mesa-ink); }
.cn-tag--palestra { background: var(--tag-palestra-bg); color: var(--tag-palestra-ink); }
.cn-tag--oficina { background: var(--tag-oficina-bg); color: var(--tag-oficina-ink); }
.cn-tag--cinetanatus { background: var(--tag-cine-bg); color: var(--tag-cine-ink); }
.cn-tag--trabalhos { background: var(--tag-trabalhos-bg); color: var(--tag-trabalhos-ink); box-shadow: inset 0 0 0 1px var(--card-border); }
.cn-tag--magna { background: var(--lime-500); color: var(--purple-900); }
.cn-tag--live { gap: 6px; background: var(--lime-500); color: var(--purple-900); }
.cn-tag--live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--purple-900); animation: cn-live-dot 1.4s ease-in-out infinite; }
@keyframes cn-live-dot { 50% { opacity: .25; } }
.cn-tag--next { background: transparent; color: var(--purple-700); box-shadow: inset 0 0 0 1px var(--purple-700); }
.cn-act__dur { display: inline-flex; align-items: center; gap: 6px; font: var(--fw-regular) var(--fs-small)/1 var(--font-sans); color: var(--text-muted); }
.cn-act__title { font: var(--fw-semibold) 20px/1.25 var(--font-sans); color: var(--purple-900); text-wrap: pretty; }
.cn-act__sub { font: var(--fw-regular) var(--fs-body-s)/1.5 var(--font-sans); color: var(--text-muted); }

.cn-act__people { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-10) var(--space-16); }
.cn-act__who { display: flex; align-items: center; gap: var(--space-12); min-width: 0; }
.cn-act__avatars { display: flex; flex: none; }
.cn-act__avatars .cn-avatar + .cn-avatar { margin-left: -9px; }
.cn-act__resumo { font: var(--fw-regular) var(--fs-body-s)/1.5 var(--font-sans); color: var(--text-muted); }
.cn-act__toggle {
  display: inline-flex; align-items: center; gap: 4px; margin-left: auto;
  padding: 6px 2px; border-radius: var(--radius-xs);
  font: var(--fw-semibold) var(--fs-small)/1.55 var(--font-sans); color: var(--purple-900);
}
.cn-act__toggle svg { transition: transform .3s var(--ease-out); }
.cn-act__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.cn-act__toggle:hover { color: var(--purple-700); }

/* painel (acordeão por grid-template-rows) */
.cn-act__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s var(--ease-out); }
.cn-act.is-open .cn-act__panel { grid-template-rows: 1fr; }
.cn-act__panel > div { min-height: 0; overflow: hidden; }
.cn-act__list { display: flex; flex-direction: column; gap: var(--space-4); margin-top: var(--space-4); padding-top: var(--space-14); border-top: 1px dashed var(--card-border); }
.cn-person {
  display: flex; align-items: center; gap: var(--space-12); width: 100%;
  padding: var(--space-6) var(--space-8); margin-inline: calc(-1 * var(--space-8));
  border-radius: var(--radius-sm); text-align: left;
  transition: background-color var(--dur-base);
}
.cn-person:hover { background: var(--lilac-50); }
.cn-person__txt { display: flex; flex-direction: column; min-width: 0; }
.cn-person__name { font: var(--fw-semibold) var(--fs-nav)/1.45 var(--font-sans); color: var(--purple-900); }
.cn-person__inst { font: var(--fw-regular) var(--fs-small)/1.35 var(--font-sans); color: var(--text-muted); }
.cn-person__role { align-self: flex-start; margin-bottom: 4px; padding: 3px 6px; font-size: 10px; }
.cn-person__go { flex: none; color: var(--purple-700); opacity: 0; transform: translateX(-4px); transition: opacity var(--dur-base), transform var(--dur-base) var(--ease-out); }
.cn-person:hover .cn-person__go, .cn-person:focus-visible .cn-person__go { opacity: 1; transform: none; }
.cn-act__note { font: var(--fw-regular) var(--fs-body-s)/1.5 var(--font-sans); color: var(--text-body); }
.cn-act__actions { display: flex; flex-wrap: wrap; gap: var(--space-8); margin-top: var(--space-10); }
.cn-act__action {
  display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 var(--space-12);
  border-radius: var(--radius-pill); border: 1px solid var(--card-border);
  font: var(--fw-semibold) var(--fs-small)/1 var(--font-sans); color: var(--purple-900);
  transition: background-color var(--dur-base), border-color var(--dur-base);
}
.cn-act__action:hover { background: var(--lilac-50); border-color: var(--purple-700); }

/* compacta: credenciamento, intervalos */
.cn-act--compact { flex-direction: row; align-items: center; gap: var(--space-12); padding: var(--space-14) var(--space-20); background: var(--gray-50); border-style: dashed; }
.cn-act--compact .cn-act__title { font-size: var(--fs-body); line-height: 1.55; }
.cn-act--compact:hover { box-shadow: none; }

/* palestra magna: card escuro em destaque */
.cn-act--magna {
  position: relative; overflow: hidden; isolation: isolate;
  background: radial-gradient(70% 90% at 100% 0%, color-mix(in srgb, var(--purple-500) 40%, transparent), transparent 70%), var(--purple-900);
  border-color: var(--purple-900); color: var(--white);
}
.cn-act--magna .cn-act__title { color: var(--white); font-size: var(--fs-card-title); }
.cn-act--magna .cn-act__dur, .cn-act--magna .cn-act__sub { color: color-mix(in srgb, var(--white) 70%, transparent); }
.cn-act--magna .cn-person:hover { background: color-mix(in srgb, var(--white) 8%, transparent); }
.cn-act--magna .cn-person__name { color: var(--white); font-size: var(--fs-body-l); }
.cn-act--magna .cn-person__inst { color: color-mix(in srgb, var(--white) 70%, transparent); }
.cn-act--magna .cn-person__go, .cn-act--magna .cn-act__toggle { color: var(--lime-500); }
.cn-act--magna .cn-act__action { color: var(--white); border-color: color-mix(in srgb, var(--white) 25%, transparent); }
.cn-act--magna .cn-act__action:hover { background: color-mix(in srgb, var(--white) 10%, transparent); border-color: var(--white); }
.cn-act--magna .cn-act__list { border-top-color: color-mix(in srgb, var(--white) 20%, transparent); }
.cn-act--magna.is-open { border-color: var(--lime-500); box-shadow: 0 0 0 1px var(--lime-500); }
.cn-act__butterfly { position: absolute; z-index: -1; right: -40px; bottom: -50px; width: 190px; height: 166px; color: color-mix(in srgb, var(--lilac-400) 14%, transparent); rotate: -14deg; }

.cn-act--magna .cn-avatar { border-color: var(--lime-500); }

/* ---------- Estado vazio, ver mais ---------- */
.cn-prog__empty { display: flex; flex-direction: column; align-items: center; gap: var(--space-14); padding: var(--space-40) var(--space-24); border: 1.5px dashed var(--card-border); border-radius: var(--radius-tile); background: var(--lilac-50); text-align: center; color: var(--text-body); }
.cn-prog__empty strong { display: block; color: var(--purple-900); }
.cn-prog__empty-btn { min-height: 42px; padding: 0 var(--space-20); border-radius: var(--radius-pill); background: var(--purple-900); color: var(--white); font: var(--fw-semibold) var(--fs-body-s)/1 var(--font-sans); }
.cn-prog__empty[hidden] { display: none; }
.cn-prog__more { display: flex; flex-direction: column; align-items: center; gap: var(--space-8); }
.cn-prog__more[hidden] { display: none; }
.cn-prog__more-btn {
  display: inline-flex; align-items: center; gap: var(--space-10); min-height: 50px; padding: 0 var(--space-28);
  border: 1.5px solid var(--purple-900); border-radius: var(--radius-pill);
  font: var(--fw-semibold) var(--fs-nav)/1 var(--font-sans); color: var(--purple-900);
  transition: background-color var(--dur-base), color var(--dur-base);
}
.cn-prog__more-btn:hover { background: var(--purple-900); color: var(--white); }
.cn-prog__more-btn svg { transition: transform .3s var(--ease-out); }
.cn-prog__more-btn[aria-expanded="true"] svg { transform: rotate(180deg); }
.cn-prog__more-hint { font: var(--fw-regular) var(--fs-caption)/1 var(--font-sans); color: var(--text-muted); }

/* ---------- Minibio ---------- */
.cn-person-modal { --modal-w: 560px; }
.cn-person-modal__card { display: flex; flex-direction: column; gap: var(--space-16); }
.cn-person-modal__head { display: flex; align-items: center; gap: var(--space-20); padding-right: var(--space-40); }
.cn-person-modal__name { font: var(--fw-semibold) var(--fs-card-title)/var(--lh-card-title) var(--font-sans); color: var(--purple-900); }
.cn-person-modal__inst { margin-top: 4px; font: var(--fw-regular) var(--fs-body-s)/1.5 var(--font-sans); color: var(--text-muted); }
.cn-person-modal__bio { font: var(--fw-regular) var(--fs-body)/var(--lh-body) var(--font-sans); color: var(--text-body); white-space: pre-line; }
.cn-person-modal__bio.is-empty { color: var(--text-muted); font-style: italic; }
.cn-person-modal__label { margin-top: var(--space-8); color: var(--text-muted); }
.cn-person-modal__acts { display: flex; flex-direction: column; gap: var(--space-8); }
.cn-person-modal__acts a {
  display: flex; flex-direction: column; gap: 2px; padding: var(--space-12) var(--space-14);
  border: 1px solid var(--card-border); border-radius: var(--radius-sm);
  font: var(--fw-semibold) var(--fs-body-s)/1.4 var(--font-sans); color: var(--purple-900);
  transition: border-color var(--dur-base), background-color var(--dur-base);
}
.cn-person-modal__acts a:hover { border-color: var(--purple-700); background: var(--lilac-50); }
.cn-person-modal__acts small { font: var(--fw-regular) var(--fs-caption)/1.4 var(--font-sans); color: var(--text-muted); }

/* ---------- Toast ---------- */
.cn-toast {
  position: fixed; z-index: var(--z-modal); left: 50%; bottom: var(--space-24); translate: -50% 16px;
  padding: var(--space-12) var(--space-20); border-radius: var(--radius-pill);
  background: var(--purple-900); color: var(--white); box-shadow: var(--shadow-panel);
  font: var(--fw-semibold) var(--fs-body-s)/1 var(--font-sans);
  opacity: 0; pointer-events: none; transition: opacity var(--dur-base), translate .35s var(--ease-out);
}
.cn-toast.is-on { opacity: 1; translate: -50% 0; }

/* ---------- ≤1023: frame mobile 34:976 ---------- */
@media (max-width: 1023px) {
  .cn-page-prog main { padding-top: var(--header-h-m); }
  .cn-prog-hero { padding-block: var(--space-32) var(--space-48); }
  .cn-prog { padding-block: var(--space-32) var(--space-64); }
  /* filtros sangram até a borda da tela: o painel recorta só além do gutter */
  .cn-prog__inner { width: 100%; padding-inline: var(--gutter); }
  .cn-prog__main { overflow: clip; overflow-clip-margin: var(--gutter); }
  .cn-act__foot .cn-act__people { flex-basis: 100%; }
  .cn-prog__inner { grid-template-columns: minmax(0, 1fr); gap: var(--space-24); }
  .cn-prog__side { position: static; gap: var(--space-10); }
  .cn-prog__label, .cn-prog__stats, .cn-prog__side > .cn-prog__pdf { display: none; }
  /* abas (Size S) */
  .cn-prog__days { flex-direction: row; gap: var(--space-10); }
  .cn-day { flex: 1; flex-direction: column; justify-content: center; gap: var(--space-4); padding: var(--space-12) var(--space-8); text-align: center; border-width: 1.5px; }
  .cn-day__num { font-size: 28px; }
  .cn-day__text { align-items: center; gap: 0; }
  .cn-day__kicker { font-size: var(--fs-week); }
  .cn-day__tema, .cn-day__resumo, .cn-day__wd-l, .cn-filter__l { display: none; }
  .cn-day__wd-s, .cn-filter__s { display: inline; }
  .cn-day.is-today .cn-day__kicker::after { content: ""; }

  .cn-prog__main { gap: var(--space-20); }
  /* filtros: rolagem lateral, sangrando pela borda */
  .cn-prog__filters { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); scroll-padding-inline: var(--gutter); }
  .cn-prog__filters::-webkit-scrollbar { display: none; }
  .cn-filter { flex: none; }

  /* linha do tempo: trilho à esquerda, horário acima do card */
  .cn-tl { --rail-x: 9px; }
  .cn-tl::before, .cn-tl::after { top: 8px; }
  .cn-tl__item { grid-template-columns: 20px minmax(0, 1fr); column-gap: var(--space-12); padding-bottom: var(--space-16); }
  .cn-tl__time { display: none; }
  .cn-tl__dot { margin: 6px auto 0; }
  .cn-tl__body { display: flex; flex-direction: column; gap: var(--space-8); min-width: 0; }
  .cn-tl__time-m { display: block; font: var(--fw-semibold) var(--fs-nav)/1.55 var(--font-sans); color: var(--purple-900); font-variant-numeric: tabular-nums; }
  .cn-act { padding: var(--space-20) 18px; }
  .cn-act__title { font-size: var(--fs-body-l); }
  .cn-act--compact { flex-wrap: wrap; }
  .cn-act__toggle { margin-left: 0; }
  .cn-prog__more-btn { padding: 0 var(--space-20); font-size: var(--fs-body-s); }
  .cn-prog__pdf--mobile { display: flex; }
  .cn-prog-hero__butterfly { width: 200px; height: 175px; right: -50px; bottom: -40px; }
}

/* rodapé do card: pessoas à esquerda, "Ver participantes" à direita */
.cn-act__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-10) var(--space-16); flex-wrap: wrap; }
.cn-act__foot .cn-act__people { flex: 1 1 auto; min-width: 0; }


/* avatares do resumo: 32px, sobreposição menor (iniciais legíveis) */
.cn-act__avatars .cn-avatar { --s: 32px; }
.cn-act__avatars .cn-avatar + .cn-avatar { margin-left: -7px; }
/* painel fechado não soma o gap do card */
.cn-act__panel { margin-top: calc(-1 * var(--space-12)); }
.cn-act__panel > div > :first-child { margin-top: var(--space-12); }

/* ---------- Credenciamento: QR code lido → check (loop de 4,8s) ---------- */
.cn-qr { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-sm); background: var(--lilac-100); color: var(--purple-700); }
.cn-qr svg { overflow: visible; }
.cn-qr svg * { transform-box: fill-box; transform-origin: center; }
.cn-qr__code { transform-box: view-box !important; animation: cn-qr-code 4.8s var(--ease-out) infinite; }
.cn-qr__scan { fill: var(--purple-500); opacity: 0; filter: drop-shadow(0 0 3px var(--lilac-500)); animation: cn-qr-scan 4.8s ease-in-out infinite; transform-box: view-box !important; transform-origin: 0 0 !important; }
.cn-qr__disc { fill: var(--lime-500); transform: scale(0); animation: cn-qr-disc 4.8s var(--ease-out) infinite; }
.cn-qr__check { color: var(--purple-900); stroke-dasharray: 1; stroke-dashoffset: 1; animation: cn-qr-check 4.8s var(--ease-out) infinite; }
@keyframes cn-qr-code {
  0%, 42% { opacity: 1; transform: scale(1); }
  52%, 88% { opacity: 0; transform: scale(.6); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes cn-qr-scan {
  0%, 6% { opacity: 0; transform: translateY(0); }
  10% { opacity: 1; }
  24% { transform: translateY(24px); }
  36% { opacity: 1; transform: translateY(0); }
  42%, 100% { opacity: 0; transform: translateY(0); }
}
@keyframes cn-qr-disc {
  0%, 46% { transform: scale(0); }
  56% { transform: scale(1.08); }
  62%, 84% { transform: scale(1); opacity: 1; }
  92%, 100% { transform: scale(.4); opacity: 0; }
}
@keyframes cn-qr-check {
  0%, 54% { stroke-dashoffset: 1; opacity: 1; }
  68%, 84% { stroke-dashoffset: 0; opacity: 1; }
  92%, 100% { stroke-dashoffset: 0; opacity: 0; }
}
/* movimento reduzido: só o check, parado */
@media (prefers-reduced-motion: reduce) {
  .cn-qr__code, .cn-qr__scan { display: none; }
  .cn-qr__disc, .cn-qr__check { animation: none; transform: none; stroke-dashoffset: 0; }
}

/* espaço reservado para o que o JS preenche (evita deslocamento de layout / CLS no carregamento) */
.cn-prog__days { min-height: 429px; }
.cn-prog__stats { min-height: 82px; }
.cn-prog__filters { min-height: 42px; }
.cn-tl { min-height: 560px; }
@media (max-width: 1023px) {
  .cn-prog__days { min-height: 69px; }
  .cn-prog__stats { min-height: 0; }
  .cn-tl { min-height: 900px; }
}

/* ---------- Box do dia (revisão 09/10/2026): gradiente lilás, borboleta 3D sobre o canto ---------- */
.cn-prog__theme.cn-dayhead {
  position: relative; isolation: isolate;
  display: flex; flex-direction: column; gap: var(--space-10);
  padding: var(--space-24) 96px var(--space-24) var(--space-28);
  border-radius: var(--radius-card);
  background: var(--glow-dayhead), var(--grad-dayhead);
  box-shadow: inset 0 0 0 1px var(--lilac-200);
}
.cn-dayhead::before { content: ""; position: absolute; left: 0; top: var(--space-20); bottom: var(--space-20); width: 4px; border-radius: 0 4px 4px 0; background: linear-gradient(180deg, var(--purple-700), var(--violet-glow)); }
/* borboleta pequena "pousada" sobre o canto superior direito, saindo um pouco do card */
.cn-dayhead__borboleta {
  position: absolute; top: -26px; right: -14px; width: 84px; height: auto; pointer-events: none;
  rotate: 14deg; filter: drop-shadow(0 8px 14px color-mix(in srgb, var(--purple-900) 28%, transparent));
}
@media (prefers-reduced-motion: no-preference) {
  .cn-dayhead__borboleta { animation: cn-flutter 6s ease-in-out infinite alternate; }
  .cn-prog__main.is-switching .cn-dayhead__borboleta { animation: none; }
}
.cn-dayhead__kicker { font: var(--fw-semibold) var(--fs-caption)/1.4 var(--font-sans); letter-spacing: var(--ls-label); text-transform: uppercase; color: var(--purple-700); }
.cn-dayhead__title { font: var(--fw-semibold) var(--fs-card-title)/var(--lh-card-title) var(--font-sans); color: var(--purple-900); text-wrap: balance; }
@media (max-width: 1023px) {
  .cn-prog__theme.cn-dayhead { padding: var(--space-20) 64px var(--space-20) var(--space-24); }
  .cn-dayhead__borboleta { width: 64px; top: -20px; right: -8px; }
  .cn-dayhead__title { font-size: var(--fs-body-l); line-height: 1.45; }
}

/* ---------- Resumo do dia com ilustrações (revisão 09/10/2026) ---------- */
.cn-prog__stat--ilu { gap: 0; padding: var(--space-12) var(--space-12) var(--space-14); background: linear-gradient(180deg, var(--white), var(--lilac-50)); }
.cn-prog__ilu { display: grid; place-items: center; width: 60px; height: 60px; margin: -2px 0 var(--space-6) -6px; border-radius: var(--radius-sm); background: radial-gradient(circle at 50% 55%, color-mix(in srgb, var(--lilac-300) 50%, transparent), transparent 70%); }
.cn-prog__ilu svg { width: 54px; height: 54px; overflow: visible; }
.cn-prog__ilu svg * { transform-box: fill-box; }
/* mesa-redonda */
.cn-si__mesa { fill: var(--lilac-300); stroke: var(--purple-500); stroke-width: 1.5; }
.cn-si__pe { stroke: var(--purple-500); stroke-width: 2; stroke-linecap: round; }
.cn-si__cabeca { fill: var(--lilac-200); stroke: var(--purple-500); stroke-width: 1.5; }
.cn-si__cabeca--meio { fill: var(--lilac-400); }
.cn-si__corpo { fill: var(--white); stroke: var(--purple-500); stroke-width: 1.5; }
.cn-si__fala rect { fill: var(--purple-700); }
.cn-si__fala circle { fill: var(--white); }
.cn-si__fala { opacity: 0; }
.cn-si__fala--2 { opacity: 1; } /* um balão de fala visível: quem está falando */
/* palestra */
.cn-si__mic { fill: var(--lilac-200); stroke: var(--purple-700); stroke-width: 1.6; }
.cn-si__grade { stroke: var(--purple-500); stroke-width: 1.2; }
.cn-si__haste { stroke: var(--purple-700); stroke-width: 2; stroke-linecap: round; }
.cn-si__onda { stroke: var(--purple-500); stroke-width: 2; stroke-linecap: round; }
.cn-si__onda--2 { opacity: .45; }
.cn-si__brilho { fill: var(--lime-500); transform-origin: center; }
/* oficina */
.cn-si__caderno { fill: var(--white); stroke: var(--purple-500); stroke-width: 1.6; }
.cn-si__espiral { stroke: var(--purple-700); stroke-width: 2; stroke-linecap: round; }
.cn-si__linha { stroke: var(--lilac-300); stroke-width: 2; stroke-linecap: round; }
.cn-si__escrita { stroke: var(--purple-700); stroke-width: 2.2; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 0; }
.cn-si__lapis path:first-child { fill: var(--lime-500); stroke: var(--purple-900); stroke-width: 1.2; stroke-linejoin: round; }
.cn-si__ponta { fill: var(--lilac-200); stroke: var(--purple-900); stroke-width: 1.2; stroke-linejoin: round; }
.cn-si__claquete rect { fill: var(--purple-900); }
.cn-si__claquete-topo { fill: var(--lilac-400); stroke: var(--purple-900); stroke-width: 1.2; stroke-linejoin: round; transform-origin: 0% 100%; }
/* ilustrações estáticas (sem animação: a página já tem bastante movimento) */

/* celular: o resumo aparece abaixo do box do dia; no desktop fica só na coluna esquerda */
.cn-prog__stats.cn-prog__stats-m { display: none; }
@media (max-width: 1023px) { .cn-prog__stats.cn-prog__stats-m { display: grid; min-height: 0; } }

/* Linhas de luz no desktop: topo com mais respiro embaixo e linhas mais baixas,
   para os fios passarem abaixo da linha de data/local/formato (no mobile ficam como no componente) */
@media (min-width: 1024px) {
  .cn-prog-hero { padding-bottom: var(--space-96); }
  .cn-prog-hero .cn-light-lines { height: 176px; }
}
