/* =============================================================
   Componentes do Design System
   ============================================================= */

/* ---------- Botões ---------- */
.btn { --btn-bg: var(--c-purple-700); --btn-fg: #fff; --btn-bd: var(--c-purple-700); display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem; padding: 0.85rem 1.6rem; min-height: 48px; font: 600 var(--fs-sm)/1 var(--f-text); letter-spacing: 0.02em; color: var(--btn-fg); background: var(--btn-bg); border: 1.5px solid var(--btn-bd); border-radius: var(--r-pill); text-decoration: none; cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); will-change: transform; }
.btn svg { width: 18px; height: 18px; flex: none; transition: transform var(--dur-base) var(--ease-out); }
.btn:hover { --btn-bg: var(--c-purple-500); --btn-bd: var(--c-purple-500); color: #fff; transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn:hover svg { transform: translateX(3px); }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn:focus-visible { outline-offset: 4px; }
.btn[disabled], .btn.is-disabled { opacity: 0.45; pointer-events: none; }
.btn--secondary { --btn-bg: transparent; --btn-fg: var(--c-purple-700); --btn-bd: var(--c-purple-700); }
.btn--secondary:hover { --btn-bg: var(--c-purple-700); --btn-bd: var(--c-purple-700); }
.btn--ghost { --btn-bg: transparent; --btn-fg: var(--c-purple-700); --btn-bd: transparent; padding-inline: 1rem; }
.btn--ghost:hover { --btn-bg: var(--c-purple-050); --btn-bd: transparent; color: var(--c-purple-900); box-shadow: none; }
.btn--accent { --btn-bg: var(--c-cyan-500); --btn-fg: var(--c-purple-900); --btn-bd: var(--c-cyan-500); }
.btn--accent:hover { --btn-bg: #5CC3EE; --btn-bd: #5CC3EE; color: var(--c-purple-900); }
.btn--light { --btn-bg: #fff; --btn-fg: var(--c-purple-900); --btn-bd: #fff; }
.btn--light:hover { --btn-bg: var(--c-purple-050); --btn-bd: var(--c-purple-050); color: var(--c-purple-900); }
.btn--outline-light { --btn-bg: transparent; --btn-fg: #fff; --btn-bd: rgba(255,255,255,0.6); }
.btn--outline-light:hover { --btn-bg: rgba(255,255,255,0.12); --btn-bd: #fff; color: #fff; }
.btn--sm { min-height: 40px; padding: 0.6rem 1.1rem; font-size: var(--fs-xs); }
.btn--lg { min-height: 56px; padding: 1rem 2.1rem; font-size: var(--fs-base); }
.btn--block { width: 100%; }
.link-arrow { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 600; font-size: var(--fs-sm); text-decoration: none; color: var(--c-purple-700); }
.link-arrow svg { width: 18px; height: 18px; transition: transform var(--dur-base) var(--ease-out); }
.link-arrow:hover svg { transform: translateX(4px); }
.link-arrow--sm { font-size: var(--fs-xs); gap: 0.35rem; }
.link-arrow--sm svg { width: 14px; height: 14px; }

/* ---------- Badges e tags ---------- */
.badge { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.3rem 0.7rem; border-radius: var(--r-sm); font: 700 var(--fs-xs)/1 var(--f-text); letter-spacing: 0.08em; text-transform: uppercase; background: var(--c-purple-100); color: var(--c-purple-700); }
.badge--year { background: var(--c-purple-900); color: #fff; font-family: var(--f-display); font-weight: 600; font-size: 0.95rem; letter-spacing: 0.04em; padding: 0.4rem 0.8rem; border-radius: var(--r-sm); }
.badge--year.is-upcoming { background: var(--c-purple-500); color: #fff; }
.badge--cyan { background: var(--c-cyan-100); color: var(--c-cyan-700); }
.badge--live { background: var(--c-purple-500); color: #fff; }
.badge--lock { background: var(--c-warning-bg); color: var(--c-warning); }
.tag { display: inline-flex; align-items: center; padding: 0.35rem 0.8rem; border-radius: var(--r-pill); font: 500 var(--fs-xs)/1 var(--f-text); background: var(--c-bg-alt); color: var(--c-ink-soft); border: 1px solid var(--c-line); text-decoration: none; transition: all var(--dur-fast) var(--ease-out); }
.tag:hover, .tag.is-active { background: var(--c-purple-700); border-color: var(--c-purple-700); color: #fff; }
.tag--cat { background: var(--c-purple-050); color: var(--c-purple-700); border-color: transparent; }
.tag--private { background: var(--c-warning-bg); color: var(--c-warning); border-color: transparent; }
.tag--private::before { content: '🔒'; font-size: 0.8em; margin-right: 0.35rem; }

/* ---------- Cards ---------- */
.card { --card-pad: 1.4rem; position: relative; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--c-line); border-radius: var(--r-lg); overflow: hidden; text-decoration: none; color: inherit; transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); transform-style: preserve-3d; will-change: transform; }
.card:hover { transform: translateY(calc(var(--lift) * -1)); box-shadow: var(--shadow-lg); border-color: var(--c-purple-100); }
.card__media { position: relative; overflow: hidden; aspect-ratio: 16 / 10; background: var(--c-purple-100); }
.card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform calc(var(--dur-slow) * 1.5) var(--ease-out); }
.card:hover .card__media img { transform: scale(var(--zoom-img)); }
.card__media--portrait { aspect-ratio: 4 / 5; }
.card__media--square { aspect-ratio: 1; }
.card__badge { position: absolute; top: 1rem; left: 1rem; z-index: 2; }
.card__body { padding: var(--card-pad); display: flex; flex-direction: column; gap: 0.5rem; flex: 1; }
.card__title { font-family: var(--f-display); font-size: var(--fs-lg); font-weight: 650; line-height: 1.25; letter-spacing: -0.02em; color: var(--c-purple-900); margin: 0; }
.card__meta { font-size: var(--fs-sm); color: var(--c-mute); display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.5rem 1rem; }
.card__meta > span { display: inline-flex; align-items: center; gap: 0.3rem; }
.card__meta svg { width: 15px; height: 15px; flex: none; }
.card__text { color: var(--c-ink-soft); font-size: var(--fs-sm); }
.card__footer { margin-top: auto; padding-top: 0.75rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.card--event .card__media { aspect-ratio: 3 / 2; }
.card--event.is-upcoming { border-color: var(--c-purple-700); box-shadow: 0 0 0 3px var(--c-purple-100); }
.card--post .card__media { aspect-ratio: 16 / 9; }
.card--post.is-locked .card__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(var(--rgb-deep),0.15), rgba(var(--rgb-deep),0.65)); }
.card--post.is-locked .card__lock { position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; color: #fff; text-align: center; padding: 1rem; }
.card--post.is-locked .card__lock svg { width: 36px; height: 36px; margin-bottom: 0.5rem; }
.card--person { text-align: center; align-items: center; padding-bottom: 0; }
.card--person .card__media { width: 100%; aspect-ratio: 4 / 5; }
.card--person .card__body { align-items: center; }
.card--person .card__role { color: var(--c-purple-700); font-weight: 600; font-size: var(--fs-sm); }
.card--speaker { text-align: center; border: 0; background: transparent; box-shadow: none; overflow: visible; }
.card--speaker:hover { box-shadow: none; }
.card--speaker .card__media { width: 132px; aspect-ratio: 1; border-radius: 50%; margin: 0 auto 0.5rem; box-shadow: var(--shadow-sm); border: 4px solid #fff; outline: 1px solid var(--c-line); transition: box-shadow var(--dur-base) var(--ease-out), outline-color var(--dur-base) var(--ease-out); }
.card--speaker:hover .card__media { box-shadow: var(--shadow-md); outline-color: var(--c-purple-700); }
.card--speaker .card__body { padding: 0.25rem 0.5rem; gap: 0.15rem; align-items: center; }
.card--speaker .card__title { font-size: var(--fs-base); font-family: var(--f-text); font-weight: 600; }
.card--speaker .card__text { font-size: var(--fs-xs); }
.card--member { flex-direction: row; align-items: center; gap: 1rem; padding: 1rem; }
.card--member .card__media { width: 72px; height: 72px; aspect-ratio: 1; border-radius: 50%; flex: none; }
.card--member .card__body { padding: 0; }
.avatar-fallback { display: grid; place-items: center; width: 100%; height: 100%; background: linear-gradient(135deg, var(--c-purple-700), var(--c-purple-500)); color: #fff; font-family: var(--f-display); font-size: 1.4rem; font-weight: 600; }
.card--stat { align-items: flex-start; padding: 1.6rem; gap: 0.25rem; }
.card--stat .stat__num { font-family: var(--f-display); font-size: clamp(2.4rem, 4vw, 3.4rem); line-height: 1; letter-spacing: -0.04em; color: var(--c-purple-700); font-weight: 700; font-variant-numeric: tabular-nums; }
.card--stat .stat__label { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.card--cta { transform-style: preserve-3d; justify-content: space-between; padding: clamp(1.6rem, 3vw, 2.5rem); gap: 1rem; background: var(--c-purple-700); color: var(--c-on-dark); border: 0; }
.card--cta h3 { color: #fff; }
.card--cta p { color: var(--c-on-dark-soft); }
.card--cta .eyebrow { color: var(--c-cyan-500); }
.card--cta.is-cyan .eyebrow { color: rgba(255,255,255,0.8); }
.card--cta.is-cyan { background: linear-gradient(135deg, var(--c-purple-500), var(--c-purple-700)); color: #fff; }
.card--cta.is-cyan h3 { color: #fff; }
.card--cta.is-cyan p { color: rgba(255,255,255,0.82); }
.card--flat { border: 0; background: var(--c-bg-alt); }

/* Foto com hover (uso genérico) */
.photo { position: relative; overflow: hidden; border-radius: var(--r-lg); background: var(--c-purple-100); }
.photo img { width: 100%; height: 100%; object-fit: cover; transition: transform calc(var(--dur-slow) * 1.5) var(--ease-out), filter var(--dur-slow) var(--ease-out); }
.photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(var(--rgb-deep),0.55)); opacity: 0; transition: opacity var(--dur-base) var(--ease-out); }
.photo:hover img, .photo:focus-within img { transform: scale(var(--zoom-img)); }
.photo:hover::after { opacity: 1; }
.photo__caption { position: absolute; left: 1rem; right: 1rem; bottom: 1rem; z-index: 2; color: #fff; font-size: var(--fs-sm); transform: translateY(8px); opacity: 0; transition: all var(--dur-base) var(--ease-out); }
.photo:hover .photo__caption { transform: none; opacity: 1; }

/* ---------- Breadcrumb ---------- */
.breadcrumb { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; font-size: var(--fs-xs); color: var(--c-mute); list-style: none; padding: 0; margin: 0 0 1.25rem; }
.breadcrumb a { color: var(--c-ink-soft); text-decoration: none; }
.breadcrumb a:hover { color: var(--c-purple-700); }
.breadcrumb li + li::before { content: '/'; margin-right: 0.35rem; color: var(--c-line); }
.on-dark .breadcrumb, .on-dark .breadcrumb a { color: var(--c-on-dark-soft); }

/* ---------- Paginação ---------- */
.pagination { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; justify-content: center; list-style: none; padding: 0; margin: var(--block-y) 0 0; }
.pagination a, .pagination span { display: grid; place-items: center; min-width: 42px; height: 42px; padding: 0 0.8rem; border-radius: var(--r-pill); font-size: var(--fs-sm); font-weight: 600; text-decoration: none; color: var(--c-ink-soft); border: 1px solid var(--c-line); transition: all var(--dur-fast) var(--ease-out); }
.pagination a:hover { border-color: var(--c-purple-700); color: var(--c-purple-700); }
.pagination .is-active span { background: var(--c-purple-700); border-color: var(--c-purple-700); color: #fff; }

/* ---------- Alertas ---------- */
.alert { padding: 1rem 1.2rem; border-radius: var(--r-md); border: 1px solid; font-size: var(--fs-sm); display: flex; gap: 0.75rem; align-items: flex-start; margin-bottom: 1.25rem; }
.alert svg { width: 20px; height: 20px; flex: none; }
.alert--info { background: var(--c-cyan-100); border-color: #C5EAF9; color: var(--c-cyan-700); }
.alert--success { background: var(--c-success-bg); border-color: #BFE5D1; color: var(--c-success); }
.alert--error { background: var(--c-error-bg); border-color: #F1C1BE; color: var(--c-error); }
.alert--warning { background: var(--c-warning-bg); border-color: #F0D9A8; color: var(--c-warning); }
.alert--note { background: var(--c-bg-alt); border-color: var(--c-line); color: var(--c-ink-soft); }

/* ---------- Formulários ---------- */
/* O rótulo fica bem mais perto do seu campo do que do campo anterior: 7px contra 20px. */
.form { display: grid; gap: 1.25rem; }
.form__row { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .form__row--2 { grid-template-columns: 1fr 1fr; } .form__row--3 { grid-template-columns: 1fr 1fr 1fr; } }
.form-field { display: grid; gap: 0.45rem; }
.form-field > label, .form-label { font-size: var(--fs-sm); font-weight: 500; line-height: 1.15; color: var(--c-purple-900); }
.form-field .required, .form-label .required { color: var(--c-error); margin-left: 0.15rem; }
.form-field .form-field__help, .form-help { font-size: var(--fs-xs); color: var(--c-mute); }
.form-control, .form-input, .form-select, .form-textarea, .form input[type="text"], .form input[type="email"], .form input[type="tel"], .form input[type="password"], .form input[type="number"], .form input[type="url"], .form select, .form textarea { width: 100%; min-height: 40px; padding: 0.5rem 0.75rem; font: 400 var(--fs-sm)/1.45 var(--f-text); color: var(--c-ink); background: #fff; border: 1px solid var(--c-line); border-radius: var(--r-md); transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); appearance: none; }
/* No celular o texto volta a 16px: abaixo disso o iOS dá zoom ao focar o campo. */
@media (max-width: 700px) { .form-control, .form-input, .form-select, .form-textarea, .form input, .form select, .form textarea { font-size: var(--fs-base); min-height: 44px; } }
.form textarea, .form-textarea { min-height: 80px; resize: vertical; }
.form select, .form-select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236A6A6A' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.75rem center; padding-right: 2.25rem; }
.form input:hover, .form select:hover, .form textarea:hover, .form-control:hover { border-color: var(--c-purple-200); }
.form input:focus-visible, .form select:focus-visible, .form textarea:focus-visible, .form-control:focus-visible { outline: 2px solid var(--c-purple-500); outline-offset: 2px; border-color: var(--c-purple-500); }
.form input:focus, .form select:focus, .form textarea:focus, .form-control:focus { border-color: var(--c-purple-500); }
.form input[aria-invalid="true"], .form .is-invalid input, .form .is-invalid select, .form-control.is-invalid { border-color: var(--c-error); box-shadow: 0 0 0 3px var(--c-error-bg); }
.form input:disabled, .form-control:disabled { background: var(--c-bg-alt); color: var(--c-mute); cursor: not-allowed; }
.form input[type="checkbox"], .form input[type="radio"] { width: 16px; height: 16px; min-height: 0; padding: 0; accent-color: var(--c-purple-700); flex: none; margin-top: 0.1rem; }
.form-check { display: flex; gap: 0.7rem; align-items: flex-start; font-size: var(--fs-sm); color: var(--c-ink-soft); }
.form-check label { font-weight: 400; }
.form-field .form-check { display: flex; }
.form-error, .form-field__error { font-size: var(--fs-xs); color: var(--c-error); font-weight: 500; }
.form-success { font-size: var(--fs-xs); color: var(--c-success); font-weight: 500; }
.form-upload { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.4rem; min-height: 130px; padding: 1.25rem; border: 2px dashed var(--c-purple-200); border-radius: var(--r-md); background: var(--c-purple-050); color: var(--c-ink-soft); font-size: var(--fs-sm); text-align: center; cursor: pointer; transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out); }
.form-upload:hover, .form-upload.is-drag { border-color: var(--c-purple-700); background: var(--c-purple-100); }
.form-upload input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.form-upload strong { color: var(--c-purple-700); }
.form-upload svg { width: 28px; height: 28px; color: var(--c-purple-700); }
.form__actions { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin-top: 0.5rem; }
.form-honeypot { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }
/* Compatibilidade com o plugin Form do Grav */
.form-group { display: grid; gap: 0.4rem; margin-bottom: 1.25rem; }
.form-group .form-label { font-size: var(--fs-sm); font-weight: 600; color: var(--c-purple-900); }
.form-group .form-data { display: block; }
.form-group .form-data .form-input-wrapper { display: block; }
.form-group .form-input-file, .form-group .dz-default { }
.form-group .checkboxes label { font-weight: 400; display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.75rem; font-size: var(--fs-sm); line-height: 1.45; color: var(--c-ink-soft);
  border: 1px solid var(--c-line); border-radius: var(--r-md); cursor: pointer; transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
.form-group .checkboxes label:hover { background: var(--c-purple-050); border-color: var(--c-purple-200); }
.form-group .checkboxes label:has(input:checked) { background: var(--c-purple-050); border-color: var(--c-purple-500); }
.form-group .checkboxes input { width: 16px; height: 16px; min-height: 0; margin-top: 0.18rem; accent-color: var(--c-purple-700); flex: none; }
.form-group .form-input-addon { display: none; }
.form-group.form-buttons { display: flex; gap: 1rem; margin-top: 0.5rem; }
.form-group .button, .form-group button, .buttons .button, .buttons button { display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem; padding: 0.85rem 1.6rem; min-height: 48px; font: 600 var(--fs-sm)/1 var(--f-text); letter-spacing: 0.02em; color: #fff; background: var(--c-purple-700); border: 1.5px solid var(--c-purple-700); border-radius: var(--r-pill); cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out); }
.form-group .button:hover, .form-group button:hover, .buttons .button:hover, .buttons button:hover { background: var(--c-purple-500); border-color: var(--c-purple-500); transform: translateY(-2px); }
.form-errors, .form-messages { margin-bottom: 1.25rem; }
.form-errors { padding: 1rem 1.2rem; border-radius: var(--r-md); background: var(--c-error-bg); border: 1px solid #F1C1BE; color: var(--c-error); font-size: var(--fs-sm); }
.form-errors ul { margin: 0; padding-left: 1.2em; }
.form-message.notice, .form-message.error, .form-message.info, .form-message.success { padding: 1rem 1.2rem; border-radius: var(--r-md); font-size: var(--fs-sm); margin-bottom: 1rem; }
.form-message.error { background: var(--c-error-bg); color: var(--c-error); border: 1px solid #F1C1BE; }
.form-message.info, .form-message.notice { background: var(--c-cyan-100); color: var(--c-cyan-700); border: 1px solid #C5EAF9; }
.form-message.success { background: var(--c-success-bg); color: var(--c-success); border: 1px solid #BFE5D1; }
.form-group input[type="text"], .form-group input[type="email"], .form-group input[type="tel"], .form-group input[type="password"], .form-group input[type="number"], .form-group input[type="url"], .form-group select, .form-group textarea { width: 100%; min-height: 50px; padding: 0.75rem 1rem; font: 400 var(--fs-base)/1.4 var(--f-text); color: var(--c-ink); background: #fff; border: 1.5px solid var(--c-line); border-radius: var(--r-md); transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); appearance: none; }
.form-group select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%234C1880' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.6rem; }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--c-purple-700); box-shadow: 0 0 0 4px var(--c-purple-100); }
.form-group input[type="file"] { padding: 0.6rem; }
.form-group .form-input-file { min-height: 110px; padding: 1.25rem; border: 2px dashed var(--c-purple-200); border-radius: var(--r-md); background: var(--c-purple-050); color: var(--c-ink-soft); font-size: var(--fs-sm); text-align: center; display: grid; place-items: center; gap: .5rem; }
.form-group .form-input-file input[type="file"] { width: 100%; font-size: var(--fs-sm); }
.form-group .form-input-file .dz-message { color: var(--c-mute); }
.form-group .dropzone.dz-drag-hover { border-color: var(--c-purple-700); }
.form-group .form-input-file .dz-preview { display: inline-block; margin: 0.5rem; }
.form-group .form-input-file .dz-image img { border-radius: var(--r-md); }
.form-group.form-required .form-label::after { content: ' *'; color: var(--c-error); }
.form-group .required { color: var(--c-error); }
.form-group .form-input-wrapper .form-checkbox { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.75rem; font-size: var(--fs-sm); line-height: 1.45; color: var(--c-ink-soft);
  border: 1px solid var(--c-line); border-radius: var(--r-md); cursor: pointer; transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
.form-group .form-input-wrapper .form-checkbox:hover { background: var(--c-purple-050); border-color: var(--c-purple-200); }
.form-group .form-input-wrapper .form-checkbox:has(input:checked) { background: var(--c-purple-050); border-color: var(--c-purple-500); }
.form-group .form-input-wrapper .form-checkbox:has(input:focus-visible) { outline: 2px solid var(--c-purple-500); outline-offset: 2px; }
.form-group .form-input-wrapper .form-checkbox input { width: 16px; height: 16px; min-height: 0; margin-top: 0.18rem; accent-color: var(--c-purple-700); flex: none; }
.form-group .form-input-wrapper .form-checkbox label { font-weight: 400; }
.form-group .form-data .form-input-help, .form-group .form-help { font-size: var(--fs-xs); color: var(--c-mute); }
.form-group .form-tabs, .form-group .form-tab { display: block; }
.form-columns { display: grid; gap: 0 1.25rem; }
@media (min-width: 640px) { .form-columns { grid-template-columns: 1fr 1fr; } .form-column--full { grid-column: 1 / -1; } }
.form-honeypot-field, .form-honeybear, .form-group:has(> .form-data > .form-input-wrapper > .form-honeybear), .form-group:has(.form-honeybear) { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; margin: 0; }

/* ---------- Acordeão (programação) ---------- */
.accordion { display: grid; gap: 0.75rem; }
.accordion__item { border: 1px solid var(--c-line); border-radius: var(--r-md); background: #fff; overflow: hidden; }
.accordion__btn { width: 100%; display: flex; align-items: center; gap: 1rem; padding: 1.1rem 1.25rem; background: none; border: 0; text-align: left; cursor: pointer; font-family: var(--f-text); color: var(--c-purple-900); }
.accordion__btn:hover { background: var(--c-purple-050); }
.accordion__time { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--c-purple-700); font-size: var(--fs-sm); min-width: 6.5rem; }
.accordion__title { flex: 1; font-family: var(--f-display); font-size: var(--fs-md); font-weight: 650; letter-spacing: -0.015em; line-height: 1.3; }
.accordion__title small { display: block; font-family: var(--f-text); font-size: var(--fs-xs); color: var(--c-mute); font-weight: 400; margin-top: 0.2rem; }
.accordion__icon { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--c-purple-100); color: var(--c-purple-700); flex: none; transition: transform var(--dur-base) var(--ease-out), background var(--dur-fast) var(--ease-out); }
.accordion__icon svg { width: 16px; height: 16px; }
.accordion__item.is-open .accordion__icon { transform: rotate(180deg); background: var(--c-purple-700); color: #fff; }
.accordion__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur-base) var(--ease-out); }
.accordion__item.is-open .accordion__panel { grid-template-rows: 1fr; }
.accordion__panel > div { overflow: hidden; opacity: 0; transition: opacity var(--dur-base) var(--ease-out); }
.accordion__item.is-open .accordion__panel > div { opacity: 1; }
.program { list-style: none; margin: 0; padding: 0.25rem 1.25rem 1.25rem; border-top: 1px solid var(--c-line-soft); }
.program li { display: grid; grid-template-columns: 6.5rem 1fr; gap: 0.75rem; padding: 0.7rem 0; border-bottom: 1px dashed var(--c-line-soft); font-size: var(--fs-sm); margin: 0; }
.program li:last-child { border: 0; }
.program__time { color: var(--c-purple-700); font-weight: 600; font-variant-numeric: tabular-nums; }
.program__topic { color: var(--c-ink); }
.program__speaker { display: block; color: var(--c-mute); font-size: var(--fs-xs); margin-top: 0.15rem; }
.program__chairs { padding: 0.75rem 0 0.25rem; font-size: var(--fs-xs); color: var(--c-mute); }
.program li.is-break { grid-template-columns: 6.5rem 1fr; color: var(--c-mute); font-style: italic; background: var(--c-bg-alt); margin-inline: -1.25rem; padding-inline: 1.25rem; }
@media (max-width: 560px) { .program li { grid-template-columns: 1fr; gap: 0.1rem; } .accordion__time { min-width: 0; } }

/* ---------- Galeria + lightbox ---------- */
.gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: 0.75rem; }
.gallery__item { position: relative; aspect-ratio: 4 / 3; border-radius: var(--r-md); overflow: hidden; background: var(--c-purple-100); border: 0; padding: 0; cursor: zoom-in; display: block; width: 100%; }
.gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform calc(var(--dur-slow) * 1.5) var(--ease-out), filter var(--dur-base) var(--ease-out); }
.gallery__item:hover img { transform: scale(var(--zoom-img)); filter: brightness(1.05); }
.gallery__item:focus-visible { outline-offset: 2px; }
.gallery__item.is-portrait { grid-row: span 1; }
.lightbox { position: fixed; inset: 0; z-index: 2000; display: none; align-items: center; justify-content: center; background: rgba(12, 6, 32, 0.92); padding: 2rem; }
.lightbox.is-open { display: flex; }
.lightbox__img { max-width: min(92vw, 1400px); max-height: 86vh; border-radius: var(--r-md); box-shadow: var(--shadow-lg); transform-origin: center; }
.lightbox__btn { position: absolute; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.25); color: #fff; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; cursor: pointer; transition: background var(--dur-fast) var(--ease-out); }
.lightbox__btn:hover { background: rgba(255,255,255,0.25); }
.lightbox__btn svg { width: 22px; height: 22px; }
.lightbox__close { top: 1.25rem; right: 1.25rem; }
.lightbox__prev { left: 1.25rem; top: 50%; transform: translateY(-50%); }
.lightbox__next { right: 1.25rem; top: 50%; transform: translateY(-50%); }
.lightbox__count { position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,0.7); font-size: var(--fs-xs); letter-spacing: 0.1em; }
@media (max-width: 640px) { .lightbox { padding: 0.5rem; } .lightbox__prev, .lightbox__next { top: auto; bottom: 3rem; transform: none; } }

/* ---------- Patrocinadores ---------- */
.sponsors { display: flex; flex-wrap: wrap; gap: 1.25rem; align-items: center; }
.sponsors__item { display: grid; place-items: center; background: #fff; border: 1px solid var(--c-line); border-radius: var(--r-md); padding: 0.9rem 1.1rem; min-width: 200px; flex: 1 1 200px; max-width: 300px; transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
.sponsors__item:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
/* Os logos vêm de theme://images/logos já padronizados num gabarito 2:1, com o peso
   óptico equalizado, então o ladrilho só precisa dar a largura. */
.sponsors__item img { width: 100%; height: auto; object-fit: contain; }
.sponsors__item.is-placeholder { min-height: 96px; border-style: dashed; color: var(--c-mute); font-size: var(--fs-xs); text-align: center; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.sponsors--sm .sponsors__item { min-width: 150px; max-width: 210px; padding: 0.9rem 1.1rem; }


/* ---------- Números ---------- */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 1rem; }

/* ---------- Timeline de anos ---------- */
.timeline { position: relative; padding-left: 2.25rem; }
.timeline::before { content: ''; position: absolute; left: 10px; top: 0; bottom: 0; width: 2px; background: var(--c-line); }
.timeline__line { position: absolute; left: 10px; top: 0; width: 2px; height: 0; background: linear-gradient(180deg, var(--c-purple-500), var(--c-purple-700)); transition: height var(--dur-slow) var(--ease-out); }
.timeline__item { position: relative; padding-bottom: 2.5rem; }
.timeline__item::before { content: ''; position: absolute; left: -2.25rem; top: 0.35rem; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 3px solid var(--c-purple-700); box-shadow: 0 0 0 4px #fff; }
.timeline__item.is-upcoming::before { border-color: var(--c-purple-500); background: var(--c-purple-500); }
.timeline__year { display: inline-block; margin-bottom: 0.5rem; }

/* ---------- Compartilhar ---------- */
.share { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.share__label { font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--c-mute); margin-right: 0.5rem; }
.share a, .share button { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--c-line); background: #fff; color: var(--c-purple-700); text-decoration: none; cursor: pointer; transition: all var(--dur-fast) var(--ease-out); }
.share a:hover, .share button:hover { background: var(--c-purple-700); color: #fff; border-color: var(--c-purple-700); transform: translateY(-2px); }
.share svg { width: 18px; height: 18px; }

/* ---------- Ícones ---------- */
.icon { display: inline-block; vertical-align: -0.15em; width: 1em; height: 1em; fill: currentColor; stroke: none; }



/* ---------- Mapa dos centros (Consórcio) ---------- */
.map-block { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 900px) { .map-block { grid-template-columns: 1.1fr 1fr; } }
.map-block svg { width: 100%; height: auto; max-height: 560px; }
.map-block .centro { cursor: default; }
.map-block .centro circle:last-of-type { transition: r var(--dur-fast) var(--ease-out); }
.map-block .centro:hover circle:last-of-type { r: 8; }
.centros-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.centros-list li { display: flex; gap: 0.9rem; align-items: baseline; padding: 0.7rem 0; border-bottom: 1px solid var(--c-line-soft); font-size: var(--fs-sm); }
.centros-list li::before { content: ''; flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--c-purple-700); box-shadow: 0 0 0 4px var(--c-purple-100); transform: translateY(-1px); }
.centros-list strong { color: var(--c-purple-900); }
.centros-list span { color: var(--c-mute); }
.centros-list small { margin-left: auto; color: var(--c-purple-700); font-weight: 600; }
.video__thumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.85; }
.video__play { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; }
.video__play svg { width: 56px; height: 56px; filter: drop-shadow(0 4px 12px rgba(0,0,0,.4)); }
/* Mapa dos centros: massa em roxo primário sobre o fundo lavanda. */
.map-block__map { position: relative; }
.map-block svg path { fill: var(--c-purple-700); stroke: var(--c-purple-200); stroke-width: 1.2; }
.map-block .centro { cursor: pointer; }
.map-block .centro circle:first-of-type { fill: #fff; fill-opacity: 0.28; }
.map-block .centro circle:last-of-type { fill: var(--c-cyan-500); stroke: #fff; transition: r var(--dur-fast) var(--ease-out); }
.map-block .centro:hover circle:last-of-type, .map-block .centro:focus-visible circle:last-of-type { r: 8; }
.map-block .centro:focus-visible { outline: none; }
.map-block .centro:focus-visible circle:first-of-type { fill-opacity: 0.55; }
/* Cartão que abre sobre o mapa enquanto o mouse está no marcador. */
.map-tip { position: absolute; z-index: 5; min-width: 11rem; max-width: 16rem; padding: 0.6rem 0.75rem; border-radius: var(--r-md); background: var(--c-purple-900); color: #fff; box-shadow: var(--shadow-lg); pointer-events: none; translate: -50% calc(-100% - 14px); }
.map-tip::after { content: ''; position: absolute; top: 100%; left: 50%; margin-left: -6px; border: 6px solid transparent; border-top-color: var(--c-purple-900); }
.map-tip strong { display: block; font-size: var(--fs-sm); letter-spacing: -0.01em; }
.map-tip span { display: block; margin-top: 0.15rem; font-size: var(--fs-xs); color: var(--c-on-dark-soft); }
.map-tip em { display: block; margin-top: 0.35rem; font-size: var(--fs-xs); font-style: normal; font-weight: 600; color: var(--c-cyan-500); }
/* Lista de centros sobre o lavanda. */
.section--lavanda .centros-list li { border-color: rgba(var(--rgb-deep), 0.18); }
.section--lavanda .centros-list strong { color: var(--c-purple-900); }
.section--lavanda .centros-list span { color: var(--c-ink-soft); }
.section--lavanda .centros-list small { color: var(--c-purple-700); }
.section--lavanda .centros-list li::before { background: var(--c-purple-700); box-shadow: 0 0 0 4px rgba(255,255,255,0.55); }

/* Campos do plugin Form: a estrutura real é .form-field > .form-data[data-grav-field].
   Caixa de seleção vira linha com borda, como no componente de origem. */
.form-field:has(label:empty) > .form-label { display: none; }
.form [data-grav-field="checkbox"] .form-input-wrapper,
.form [data-grav-field="toggle"] .form-input-wrapper { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.75rem;
  border: 1px solid var(--c-line); border-radius: var(--r-md); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
.form [data-grav-field="checkbox"] .form-input-wrapper:hover { background: var(--c-purple-050); border-color: var(--c-purple-200); }
.form [data-grav-field="checkbox"] .form-input-wrapper:has(input:checked) { background: var(--c-purple-050); border-color: var(--c-purple-500); }
.form [data-grav-field="checkbox"] .form-input-wrapper:has(input:focus-visible) { outline: 2px solid var(--c-purple-500); outline-offset: 2px; }
.form [data-grav-field="checkbox"] .form-input-wrapper label { margin: 0; font-size: var(--fs-sm); font-weight: 400; line-height: 1.45; color: var(--c-ink-soft); cursor: pointer; }
.form [data-grav-field="checkbox"] input[type="checkbox"] { margin-top: 0.18rem; }

/* Envio de arquivo: área tracejada, no lugar do input cru do navegador. */
.form .form-input-file { display: grid; gap: 0.6rem; place-items: center; min-height: 104px; padding: 1.1rem;
  border: 1px dashed var(--c-purple-200); border-radius: var(--r-md); background: var(--c-purple-050);
  font-size: var(--fs-sm); color: var(--c-ink-soft); text-align: center; }
.form .form-input-file input[type="file"] { width: auto; min-height: 0; padding: 0; border: 0; background: none; font-size: var(--fs-sm); }
.form .form-input-file .dz-message { color: var(--c-mute); font-size: var(--fs-xs); }
.form .form-input-file .dz-preview { display: inline-block; margin: 0.4rem; }
.form .form-input-file .dz-image img { border-radius: var(--r-sm); }
