/* Shared public-page improvements, independent of the selected design. */
:focus-visible { outline: 3px solid var(--primary-color, #2563eb); outline-offset: 4px; }
.zin-dialog-close { position: absolute; top: 1rem; right: 1rem; z-index: 70; border: 2px solid #fff; border-radius: .5rem; background: #111827; color: #fff; padding: .5rem 1rem; }
#sponsorModal { overflow-y: auto; overscroll-behavior: contain; }
#sponsorModal > div { max-height: calc(100dvh - 2rem); overflow-y: auto; }
.zin-hero-media { position: absolute; inset: 0; }
.zin-hero-media picture { display: contents; }
.zin-hero-media img, .zin-hero-media video { width: 100%; height: 100%; object-fit: cover; }
.zin-hero-media video { position: absolute; inset: 0; }
.zin-hero-media [hidden] { display: none !important; }
.zin-video-toggle { position: absolute; right: 1rem; bottom: 1rem; z-index: 20; border: 1px solid #fff; border-radius: .5rem; color: #fff; background: rgba(0,0,0,.75); padding: .5rem .75rem; pointer-events: auto; }
/* Video controls must remain above the hero's scrim. */
.zin-hero-media { pointer-events: none; }
.zin-hero-media .zin-video-toggle { pointer-events: auto; }
[data-zin-video-toggle][hidden] { display:none !important; }
/* Enhanced reveal transitions only opt in after script initialization. */
.scroll-reveal:not(.zin-reveal-ready), .a2-reveal:not(.zin-reveal-ready), .c2-reveal:not(.zin-reveal-ready) { opacity: 1 !important; transform: none !important; }
.zin-contact-topic { margin-bottom: 1rem; }
.zin-form-errors:empty { display: none; }
.zin-form-errors { color: #991b1b; background: #fef2f2; border: 1px solid #fecaca; padding: 1rem; border-radius: .5rem; margin-bottom: 1rem; }
.zin-event-summary { display: block; margin-top: 1.5rem; font-size: .95rem; }
.zin-event-summary a { text-decoration: underline; text-underline-offset: 3px; }
/* Solid brand buttons always receive a contrasting foreground. */
body.zin-public .bg-primary, body.zin-public .btn-primary, body.zin-public .c2-submit, body.zin-public .t3-btn--primary { color: var(--zin-primary-ink) !important; }
body.zin-public .btn-accent { color: var(--zin-secondary-ink) !important; }
@media (max-width: 767px) {
    body.zin-public main > section.py-24, body.zin-public main > section.py-32 { padding-top: 3.5rem; padding-bottom: 3.5rem; }
    body.zin-public #heroSection.hero-section-mobile { min-height: 0 !important; padding-top: 5rem; padding-bottom: 5rem; }
    body.zin-public #heroSection h1 { font-size: clamp(2.25rem, 9vw, 3.25rem); }
    body.zin-public #heroSection > .absolute.bottom-10 { display: none; }
    .hero-circle, .hero-glow, .hero-dot-grid { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    body.zin-public *, body.zin-public *::before, body.zin-public *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
    .scroll-reveal, .reveal, .a2-reveal, .c2-reveal, .t3-reveal { opacity: 1 !important; transform: none !important; }
}
/* The main headline and actions should paint immediately. */
#heroSection h1, #heroSection .animate-fade-in-up { animation: none !important; opacity: 1 !important; transform: none !important; }
body.zin-public .hero-circle { animation: none !important; }
body.zin-public .hero-glow { display: none; }

/* Foreground contrast is calculated for these solid button backgrounds. */
body.zin-public .btn-primary { background: var(--primary-color) !important; }
body.zin-public .btn-accent { background: var(--secondary-color) !important; }
/* Visibility must switch immediately so keyboard focus can enter the lightbox. */
body.zin-public .lightbox { transition: opacity .3s ease; }
