/* * Logo da sidebar (`#sidebar-brand-link`, presente em todo shell) — link de * verdade pra `portal.html` (tela Principal). Fora de qualquer tema sazonal: * os olhos do ícone piscam antes de navegar (`.pid-icon-eye`/`pidIconBlink` * em base.css, 200ms), navegação adiada só o suficiente pra a piscada * terminar de tocar. Durante o Halloween (`pidIsHalloweenActive()`, * seasonal-theme.js): o ícone/assinatura viram o vampiro * (`pidApplyVampireIcon`/`pidApplyVampireFull`) e o clique dispara a * animação de "susto" (`pidTriggerVampireScare`, `.is-scaring` em base.css) * em vez da piscada, com a navegação adiada o suficiente pra ela ser vista. * Durante o Aniversário (`pidIsAniversarioActive()`, só 15/10): o * ícone/assinatura ganham os balões (`pidApplyAniversarioIcon`/`Full`) e o * clique dispara o "clique de festa" (`pidTriggerAniversarioParty`, pula + * joga confete + língua-de-sogra) ALÉM da piscada normal — a cara de * repouso não muda nesse tema, então a piscada continua fazendo sentido * (os dois efeitos convivem, ver base.css). As duas janelas nunca coincidem * (15 vs 16-31/10), por isso Halloween é checado primeiro e ganha * prioridade só por clareza de código, não porque possa colidir de verdade. * ctrl/cmd/shift/clique do meio continuam abrindo em nova aba normalmente * (não intercepta esses casos). */ document.addEventListener("DOMContentLoaded", () => { const brand = document.getElementById("sidebar-brand-link"); if (!brand) return; const halloween = typeof pidIsHalloweenActive === "function" && pidIsHalloweenActive(); const aniversario = !halloween && typeof pidIsAniversarioActive === "function" && pidIsAniversarioActive(); if (halloween) { pidApplyVampireIcon(brand.querySelector(".sidebar__logo--icon")); pidApplyVampireFull(brand.querySelector(".sidebar__logo--full")); if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-halloween-icone-escuro.svg"); // Containers só existem em portal.html — no-op nos demais shells. if (typeof pidApplyHalloweenCobwebs === "function") pidApplyHalloweenCobwebs("pw-cobwebs-portal"); } else if (aniversario) { pidApplyAniversarioIcon(brand.querySelector(".sidebar__logo--icon")); pidApplyAniversarioFull(brand.querySelector(".sidebar__logo--full")); if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-aniversario-icone-escuro.svg"); // Container só existe em portal.html (#pid-aniv-cake) — no-op nos demais shells. if (typeof pidApplyAniversarioCake === "function") pidApplyAniversarioCake("pid-aniv-cake"); } brand.addEventListener("click", (event) => { if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; event.preventDefault(); if (halloween) { pidTriggerVampireScare(brand); setTimeout(() => { window.location.href = brand.getAttribute("href"); }, PID_HALLOWEEN_SCARE_MS - 100); return; } if (aniversario) { pidTriggerAniversarioParty(brand); } brand.querySelectorAll(".pid-icon-eye").forEach((eye) => { eye.classList.remove("is-blinking"); void eye.getBoundingClientRect(); eye.classList.add("is-blinking"); }); setTimeout( () => { window.location.href = brand.getAttribute("href"); }, aniversario ? PID_ANIVERSARIO_PARTY_MS - 100 : 260 ); }); });