html, body { min-height: 100%; } body { font-family: var(--font-body, system-ui, sans-serif); margin: 0; line-height: 1.65; color: var(--color-text, #111827); background: var(--color-background, #ffffff); min-height: 100vh; display: flex; flex-direction: column; } h1, h2, h3 { font-family: var(--font-heading, var(--font-body, system-ui, sans-serif)); line-height: 1.15; margin-top: 0; } h1 { margin-bottom: 1.1rem; } h2, h3 { margin-bottom: 0.8rem; } p { line-height: 1.68; margin-top: 0; } .font-size-small { font-size: 0.95rem; } .font-size-medium { font-size: 1rem; } .font-size-large { font-size: 1.12rem; } .font-modern { letter-spacing: 0.01em; } .font-modern h1, .font-modern h2, .font-modern h3 { font-weight: 850; } .font-classic h1, .font-classic h2, .font-classic h3, .font-friendly h1, .font-friendly h2, .font-friendly h3 { font-weight: 700; } .nav-height-small { --nav-height: 56px; } .nav-height-medium { --nav-height: 72px; } .nav-height-large { --nav-height: 96px; } a { color: var(--color-link, #0f766e); } a:hover { color: var(--color-link-hover, #115e59); } .site-main { flex: 1; } .site-header { background: var(--color-header-background, #111827); position: sticky; top: 0; z-index: 100; } .nav-position-static .site-header { position: static; } .nav-wrap { box-sizing: border-box; margin: 0 auto; max-width: none; padding: 0 2rem; width: 100%; min-height: 72px; display: flex; justify-content: center; align-items: center; gap: 1rem; } .site-logo { align-items: center; color: var(--color-header-text, white); display: inline-flex; font-weight: 800; gap: 0.65rem; letter-spacing: 0.02em; line-height: 1; text-decoration: none; white-space: nowrap; } .site-logo:hover { color: var(--color-header-text, white); } .site-logo img { display: block; object-fit: contain; } .site-logo-nav { flex: 0 0 auto; } .site-logo-nav img { height: 54px; max-width: 170px; } .site-logo-nav span { font-size: 1.05rem; } .logo-align-right .site-logo-nav { order: 2; } .nav-align-left .main-nav { justify-content: flex-start; } .nav-align-center .main-nav { justify-content: center; } .nav-align-right .main-nav { justify-content: flex-end; } .logo-align-left .main-nav { margin-left: 1rem; } .logo-align-right .main-nav { margin-right: 1rem; order: 1; } .nav-height-small .nav-wrap { min-height: 56px; } .nav-height-medium .nav-wrap { min-height: 72px; } .nav-height-large .nav-wrap { min-height: 96px; } .nav-height-small .site-logo-nav img { height: 38px; max-width: 140px; } .nav-height-medium .site-logo-nav img { height: 54px; max-width: 170px; } .nav-height-large .site-logo-nav img { height: 78px; max-width: 220px; } .nav-height-small .main-nav a, .nav-height-small .dropdown-label { padding-top: 1rem; padding-bottom: 1rem; } .nav-height-large .main-nav a, .nav-height-large .dropdown-label { padding-top: 1.55rem; padding-bottom: 1.55rem; } .nav-toggle { display: none; } .burger { display: none; color: var(--color-header-text, white); font-size: 2rem; cursor: pointer; line-height: 1; } .main-nav { display: flex; flex: 1 1 auto; justify-content: center; align-items: center; gap: 0.5rem; } .main-nav a, .dropdown-label { appearance: none; background: transparent; border: 0; box-sizing: border-box; color: var(--color-header-text, white); text-decoration: none; font: inherit; font-weight: 600; padding: 1.25rem 1rem; display: block; cursor: pointer; } .dropdown.is-open > .dropdown-label, .main-nav a:focus-visible, .dropdown-label:focus-visible { background: var(--color-header-hover, #1f2937); color: var(--color-header-text, white); } .nav-item { position: relative; } .submenu { display: none; position: absolute; top: 100%; left: 0; min-width: 220px; background: var(--color-header-hover, #1f2937); box-shadow: 0 10px 20px rgba(0,0,0,0.18); } .submenu a { padding: 0.8rem 1rem; white-space: nowrap; } .dropdown.is-open .submenu { display: block; } section { padding: clamp(3rem, 6vw, 6rem) clamp(1.25rem, 10vw, 8rem); } .hero { box-sizing: border-box; min-height: clamp(360px, 48vh, 560px); display: flex; flex-direction: column; justify-content: center; background: var(--color-hero-background, #f1f5f9); position: relative; overflow: hidden; padding-block: clamp(4rem, 8vw, 6rem); } .hero h1 { font-size: clamp(2.25rem, 5vw, 3.45rem); line-height: 1.04; margin-bottom: 0.9rem; } .hero-content { max-width: 680px; position: relative; z-index: 2; } .hero-content p { font-size: clamp(1.02rem, 1.7vw, 1.22rem); line-height: 1.58; max-width: 58ch; } .hero-has-media { color: white; background: var(--color-accent, #111827); } .hero-has-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient( 90deg, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0.54) 46%, rgba(0, 0, 0, 0.34) ); pointer-events: none; z-index: 1; } .hero-color { color: white; } .hero-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; } .hero-youtube-frame { width: 120%; height: 120%; left: -10%; top: -10%; border: 0; pointer-events: none; } .external-placeholder { align-items: center; background: rgba(17, 24, 39, 0.72); display: flex; justify-content: center; padding: 2rem; pointer-events: auto; text-align: center; z-index: 3; } .external-load-button, .gallery-load-button { border: 0; border-radius: 999px; background: var(--color-footer-text, white); color: var(--color-footer-background, #111827); cursor: pointer; font: inherit; font-weight: 800; padding: 0.75rem 1rem; } .text-section { max-width: 70ch; } .text-section, .card, .event-content, .contact-box, .person-card, .footer-column { line-height: 1.65; } .cards { display: flex; flex-direction: column; gap: 1.35rem; } .cards-layout-two .cards, .cards-layout-three .cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .cards-layout-three .cards { grid-template-columns: repeat(3, minmax(0, 1fr)); } .card { padding: 1.65rem; border: 1px solid color-mix(in srgb, var(--color-border, #ddd) 70%, transparent); border-radius: 0.9rem; background: var(--color-surface, white); box-shadow: 0 10px 24px rgba(17, 24, 39, 0.06); } .card h2, .card h3 { margin-bottom: 0.65rem; } .two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; } .two-columns-title { grid-column: 1 / -1; } .timeline { display: flex; flex-direction: column; gap: 1rem; } .timeline-title { margin-bottom: 1rem; } .timeline-item { padding-left: 1.5rem; border-left: 4px solid var(--color-accent, #111827); } .faq { display: flex; flex-direction: column; gap: 1rem; } .faq-title { margin-bottom: 1rem; } .faq-item { padding: 1rem 1.5rem; background: var(--color-surface-alt, #f1f5f9); border-radius: 1rem; } .banner { background: var(--color-accent, #111827); color: white; text-align: center; padding: 2rem 10vw; font-size: 1.25rem; font-weight: 600; } .banner a { color: white; text-decoration: underline; } .quote-section { background: var(--color-surface-alt, #f9fafb); } .quote-box { max-width: 800px; margin: 0 auto; font-size: 1.6rem; font-style: italic; border-left: 6px solid var(--color-accent, #111827); padding-left: 2rem; } .quote-box blockquote { margin: 0; } .contact-section { background: var(--color-surface-alt, #f1f5f9); } .contact-box { max-width: 700px; margin: 0 auto; padding: 2rem; background: var(--color-surface, white); border: 1px solid var(--color-border, #ddd); border-radius: 1rem; } .contact-box p { margin: 0.5rem 0; } .location-section { background: var(--color-surface-alt, #f1f5f9); } .location-content, .location-placeholder { max-width: 900px; margin: 0 auto 1.5rem; } .location-address { font-weight: 800; } .location-map, .location-placeholder { border: 1px solid var(--color-border, #ddd); border-radius: 1rem; } .location-map { display: block; min-height: 360px; width: 100%; } .location-placeholder { background: var(--color-surface, white); padding: 2rem; } .gallery-title { margin-inline: auto; margin-bottom: 2rem; max-width: 1120px; } .gallery-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.25rem; } .gallery-layout-square .gallery-grid { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); } .gallery-layout-wide .gallery-grid { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); } .gallery-link { color: inherit; display: block; text-decoration: none; } .gallery-item { margin: 0; } .gallery-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; border-radius: 0; transition: box-shadow 180ms ease, filter 180ms ease, transform 180ms ease; } .images-rounded .content-section img, .images-rounded .image-text-image, .images-rounded .sponsor-logo img, .images-rounded .gallery-item img { border-radius: 0.75rem; } .images-square .content-section img, .images-square .image-text-image, .images-square .sponsor-logo img, .images-square .gallery-item img { border-radius: 0; } .gallery-layout-square .gallery-item img { aspect-ratio: 1 / 1; } .gallery-layout-wide .gallery-item img { aspect-ratio: 16 / 9; } .gallery-layout-masonry .gallery-grid { align-items: stretch; display: grid; grid-auto-flow: dense; grid-auto-rows: 120px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } .gallery-layout-masonry .gallery-link { min-height: 0; } .gallery-layout-masonry .gallery-item img { aspect-ratio: auto; height: 100%; } .gallery-layout-masonry .gallery-link:nth-child(3n + 1) { grid-row: span 2; } .gallery-layout-masonry .gallery-link:nth-child(5n + 2) { grid-column: span 2; } .gallery-layout-masonry .gallery-link:nth-child(7n + 4) { grid-row: span 2; grid-column: span 2; } .lightbox-open { overflow: hidden; } .site-lightbox { align-items: center; background: rgba(17, 24, 39, 0.92); display: flex; justify-content: center; inset: 0; padding: 2rem; position: fixed; z-index: 1000; } .site-lightbox[hidden] { display: none; } .site-lightbox figure { margin: 0; text-align: center; } .site-lightbox img { max-height: 82vh; max-width: 100%; object-fit: contain; } .site-lightbox figcaption { color: white; margin-top: 0.8rem; } .site-lightbox button { align-items: center; border: 0; border-radius: 999px; background: white; color: #111827; cursor: pointer; display: inline-flex; font: inherit; font-size: 2rem; height: 3rem; justify-content: center; line-height: 1; padding: 0; position: absolute; z-index: 2; width: 3rem; } .site-lightbox-close { position: absolute; right: 1rem; top: 1rem; } .site-lightbox-prev, .site-lightbox-next { top: 50%; transform: translateY(-50%); } .site-lightbox-prev { left: 1rem; } .site-lightbox-next { right: 1rem; } .gallery-link:hover img, .gallery-link:focus-visible img { box-shadow: 0 12px 30px rgba(17, 24, 39, 0.18); filter: brightness(0.96); transform: translateY(-2px); } .gallery-item figcaption { margin-top: 0.55rem; font-size: 0.9rem; color: var(--color-muted-text, #4b5563); } .image-text { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; } .image-text-image img { width: 100%; display: block; border-radius: 1rem; } .event-list { display: grid; gap: 1.4rem; } .event-box { background: var(--color-surface, white); border: 1px solid color-mix(in srgb, var(--color-border, #ddd) 72%, transparent); border-left: 0.45rem solid var(--color-accent, #111827); border-radius: 0.95rem; box-shadow: 0 12px 28px rgba(17, 24, 39, 0.06); display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 300px); gap: clamp(1rem, 2.4vw, 1.75rem); align-items: start; padding: clamp(1.2rem, 3vw, 1.75rem); } .event-box.event-has-image { grid-template-columns: minmax(0, 1fr) minmax(190px, 260px) minmax(180px, 260px); } .event-content h1, .event-content h2, .event-content h3 { margin-bottom: 0.55rem; } .event-content p:last-child { margin-bottom: 0; } .event-facts { margin: 0; display: grid; gap: 0.85rem; padding: 1rem; background: var(--color-surface-alt, #f1f5f9); border: 1px solid color-mix(in srgb, var(--color-border, #ddd) 65%, transparent); border-radius: 0.75rem; } .event-facts div + div { margin-top: 0; } .event-facts dt { font-size: 0.76rem; font-weight: 700; color: var(--color-muted-text, #4b5563); letter-spacing: 0.04em; text-transform: uppercase; } .event-facts dd { margin: 0.1rem 0 0; font-size: 1rem; font-weight: 750; } .event-image { margin: 0; } .event-image img { aspect-ratio: 4 / 3; border-radius: 0.75rem; display: block; height: 100%; max-height: 220px; object-fit: cover; width: 100%; } .download-list { display: grid; gap: 0.8rem; max-width: 780px; } .download-item { display: flex; justify-content: space-between; padding: 1rem 1.15rem; background: var(--color-surface-alt, #f1f5f9); border-radius: 0.6rem; color: var(--color-text, #111827); font-weight: 650; text-decoration: none; } .download-item::after { content: "↓"; } .download-item:hover { color: var(--color-link-hover, #115e59); } .people-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; } .person-section { max-width: 760px; } .person-card { padding: 1.25rem; background: var(--color-surface, white); border: 1px solid var(--color-border, #ddd); border-radius: 0.75rem; } .person-card-single { max-width: 520px; } .sponsor-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; align-items: center; } .sponsor-logo { margin: 0; padding: 1.25rem; background: var(--color-surface, white); border: 1px solid var(--color-border, #ddd); border-radius: 0.75rem; text-align: center; } .sponsor-logo img { max-width: 100%; max-height: 90px; object-fit: contain; } .sponsor-logo figcaption { margin-top: 0.65rem; color: var(--color-muted-text, #4b5563); font-size: 0.9rem; } .site-footer { background: var(--color-footer-background, #111827); color: var(--color-footer-text, white); padding: clamp(3rem, 6vw, 5rem) clamp(1.25rem, 10vw, 8rem); } .footer-inner { max-width: 1100px; margin: 0 auto; } .footer-brand { margin-bottom: 2rem; } .footer-brand h1, .footer-brand h2, .footer-brand h3, .footer-brand p { margin-top: 0; } .footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: clamp(2rem, 5vw, 4rem); } .footer-logo-column { align-self: start; } .footer-logo { color: var(--color-footer-text, white); justify-content: flex-start; } .footer-logo:hover { color: var(--color-footer-text, white); } .footer-logo img { height: 78px; max-width: 180px; } .footer-logo span { font-size: 1.15rem; } .social-links { display: flex; flex-wrap: wrap; gap: 0.55rem; } .social-links a { align-items: center; border: 1px solid currentColor; border-radius: 999px; color: var(--color-footer-text, white); display: inline-flex; font-size: 0.82rem; font-weight: 800; height: 2.25rem; justify-content: center; text-decoration: none; width: 2.25rem; } .social-links a:hover { background: var(--color-footer-text, white); color: var(--color-footer-background, #111827); } .icons-simple .social-links a { border-radius: 0.35rem; } .icons-text .social-links { display: block; } .icons-text .social-links a { border: 0; border-radius: 0; display: block; height: auto; margin-top: 0.35rem; width: auto; } .icons-text .social-links a:hover { background: transparent; color: var(--color-footer-text, white); text-decoration: underline; } .footer-column h2, .footer-column h3 { font-size: 1rem; letter-spacing: 0.02em; margin-top: 0; margin-bottom: 1rem; } .footer-column p { margin: 0.35rem 0; } .footer-column a { color: var(--color-footer-text, white); text-decoration: none; } .footer-column a:hover { text-decoration: underline; } .footer-credit { border-top: 1px solid rgba(255, 255, 255, 0.2); color: color-mix(in srgb, var(--color-footer-text, white) 76%, transparent); font-size: 0.86rem; margin: clamp(2rem, 5vw, 3.5rem) 0 0; padding-top: 1.25rem; } @media (max-width: 800px) { .logo-placement-header { --mobile-menu-offset: 150px; } .logo-placement-footer, body:not(.logo-placement-header) { --mobile-menu-offset: var(--nav-height, 72px); } .nav-wrap { flex-wrap: wrap; justify-content: center; } .site-logo-nav { margin: 0; order: 1; position: static; transform: none; padding: 0.8rem 0; width: auto; justify-content: flex-start; } .burger { display: block; padding: 1rem; margin: 0 auto; text-align: center; order: 2; } .logo-align-left.mobile-menu-auto .burger { margin-left: auto; margin-right: 0; } .logo-align-right.mobile-menu-auto .site-logo-nav { order: 2; } .logo-align-right.mobile-menu-auto .burger { margin-left: 0; margin-right: auto; order: 1; } .mobile-menu-left .burger { margin-left: 0; margin-right: auto; order: 1; } .mobile-menu-center .burger { margin-left: auto; margin-right: auto; order: 2; } .mobile-menu-right .burger { margin-left: auto; margin-right: 0; order: 2; } .main-nav { flex: 1 0 100%; margin: 0; display: none; position: absolute; top: 100%; left: 0; right: 0; box-sizing: border-box; max-height: calc(100vh - var(--mobile-menu-offset, var(--nav-height, 72px))); max-height: calc(100dvh - var(--mobile-menu-offset, var(--nav-height, 72px))); overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; background: var(--color-header-background, #111827); flex-direction: column; align-items: stretch; gap: 0; order: 3; padding-bottom: max(2rem, env(safe-area-inset-bottom)); } .nav-toggle:checked ~ .main-nav { display: flex; } .main-nav a, .dropdown-label { box-sizing: border-box; padding: 0.9rem 2rem; text-align: center; width: 100%; } .submenu { position: static; box-shadow: none; background: var(--color-header-hover, #1f2937); padding: 0.35rem 0 0.65rem; } .dropdown-label { align-items: center; display: flex; justify-content: center; } .dropdown-label::after { content: "›"; font-size: 1.25rem; margin-left: 0.65rem; transform: rotate(90deg); transition: transform 160ms ease; } .dropdown.is-open .dropdown-label::after { transform: rotate(-90deg); } .submenu a { padding-left: 3rem; padding-right: 3rem; } .hero h1 { font-size: clamp(2rem, 10vw, 2.55rem); } .hero { min-height: clamp(300px, 52vh, 440px); padding-block: clamp(3rem, 12vw, 4.5rem); } .hero-content { max-width: 34rem; } .hero-content p { font-size: 1rem; line-height: 1.58; } .hero-has-media::after { background: linear-gradient( rgba(0, 0, 0, 0.68), rgba(0, 0, 0, 0.52) ); } section { padding-block: clamp(2.5rem, 10vw, 4rem); } .two-columns { grid-template-columns: 1fr; } .cards-layout-two .cards, .cards-layout-three .cards { grid-template-columns: 1fr; } .image-text { grid-template-columns: 1fr; } .event-box { grid-template-columns: 1fr; } .event-box.event-has-image { grid-template-columns: 1fr; } .gallery-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); } .footer-grid { grid-template-columns: 1fr; gap: 2rem; } }