| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>{{ page.title | default: site.title }}</title> |
| <meta name="description" content="{{ site.description }}"> |
| <link rel="preconnect" href="https://fonts.googleapis.com"> |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=DM+Mono:wght@400;500&display=swap" rel="stylesheet"> |
| <link rel="stylesheet" href="{{ site.baseurl }}/assets/css/base.css"> |
| {% if page.page_css %}<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/{{ page.page_css }}.css">{% endif %} |
| <style> |
| /* ===== NAV ===== */ |
| #main-nav { |
| position: fixed; |
| top: 0; left: 0; right: 0; |
| z-index: 200; |
| height: var(--nav-h); |
| display: flex; |
| align-items: center; |
| padding: 0 32px; |
| background: rgba(7, 9, 15, 0.92); |
| backdrop-filter: blur(16px); |
| -webkit-backdrop-filter: blur(16px); |
| border-bottom: 1px solid var(--border); |
| } |
| |
| /* ===== PAGE HEADER ===== */ |
| .page-header { |
| margin-top: var(--nav-h); |
| padding: 56px 32px 52px; |
| background: var(--surface); |
| border-bottom: 1px solid var(--border); |
| position: relative; |
| overflow: hidden; |
| } |
| .page-header::before { |
| content: ''; |
| position: absolute; |
| inset: 0; |
| background-image: |
| linear-gradient(rgba(249,115,22,0.06) 1px, transparent 1px), |
| linear-gradient(90deg, rgba(249,115,22,0.06) 1px, transparent 1px); |
| background-size: 40px 40px; |
| mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent); |
| -webkit-mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent); |
| } |
| .page-header-inner { |
| position: relative; |
| max-width: 860px; |
| margin: 0 auto; |
| } |
| .page-breadcrumb { |
| font-family: "DM Mono", monospace; |
| font-size: 11px; |
| letter-spacing: 2.5px; |
| text-transform: uppercase; |
| color: var(--accent); |
| margin-bottom: 12px; |
| } |
| .page-header h1 { |
| font-family: "DM Sans", sans-serif; |
| font-weight: 800; |
| font-size: clamp(28px, 5vw, 44px); |
| letter-spacing: -1.5px; |
| color: var(--text); |
| line-height: 1.1; |
| } |
| |
| /* ===== PAGE CONTENT ===== */ |
| .page-main { |
| max-width: 860px; |
| margin: 0 auto; |
| padding: 56px 32px 100px; |
| } |
| |
| /* hide redundant H1 from markdown (it's in the page header) */ |
| .page-main > h1:first-child { display: none; } |
| |
| .page-main h2 { |
| font-family: "DM Sans", sans-serif; |
| font-weight: 800; |
| font-size: 22px; |
| color: var(--text); |
| margin: 56px 0 16px; |
| letter-spacing: -0.4px; |
| padding-bottom: 12px; |
| border-bottom: 1px solid var(--border); |
| } |
| .page-main h3 { |
| font-family: "DM Sans", sans-serif; |
| font-weight: 700; |
| font-size: 17px; |
| color: var(--text); |
| margin: 32px 0 10px; |
| } |
| |
| .page-main p { color: var(--text-muted); margin: 0 0 16px; line-height: 1.8; } |
| .page-main strong { color: var(--text); font-weight: 600; } |
| .page-main em { font-style: italic; color: var(--text-muted); } |
| |
| .page-main a { color: var(--accent); text-decoration: none; } |
| .page-main a:hover { text-decoration: underline; } |
| |
| .page-main ul, .page-main ol { |
| margin: 0 0 20px 0; |
| padding: 0; |
| list-style: none; |
| } |
| .page-main li { |
| color: var(--text-muted); |
| padding: 5px 0 5px 22px; |
| position: relative; |
| } |
| .page-main li::before { |
| content: '→'; |
| position: absolute; |
| left: 0; |
| color: var(--accent); |
| font-family: "DM Mono", monospace; |
| font-size: 12px; |
| } |
| |
| /* Schedule table */ |
| .page-main table { |
| width: 100%; |
| border-collapse: collapse; |
| margin: 20px 0 32px; |
| font-size: 14px; |
| } |
| .page-main thead th { |
| background: var(--surface-2); |
| color: var(--text-muted); |
| font-family: "DM Mono", monospace; |
| font-size: 11px; |
| letter-spacing: 1.5px; |
| text-transform: uppercase; |
| padding: 10px 16px; |
| text-align: left; |
| border-bottom: 1px solid var(--border); |
| } |
| .page-main tbody tr { |
| border-bottom: 1px solid rgba(28,42,58,0.6); |
| transition: background 0.15s; |
| } |
| .page-main tbody tr:hover { background: var(--surface-2); } |
| .page-main td { |
| padding: 12px 16px; |
| color: var(--text-muted); |
| vertical-align: top; |
| } |
| .page-main td:first-child { |
| font-family: "DM Mono", monospace; |
| font-size: 13px; |
| color: var(--accent); |
| white-space: nowrap; |
| width: 90px; |
| } |
| .page-main td a { color: var(--text); font-weight: 500; } |
| .page-main td a:hover { color: var(--accent); text-decoration: none; } |
| .page-main td em { color: var(--text-dim); } |
| |
| /* Blockquote as callout */ |
| .page-main blockquote { |
| margin: 20px 0; |
| padding: 16px 20px; |
| background: var(--surface-2); |
| border-left: 3px solid var(--accent); |
| border-radius: 0 6px 6px 0; |
| } |
| .page-main blockquote p { |
| color: var(--text-muted); |
| margin: 0; |
| font-style: italic; |
| } |
| |
| code { |
| font-family: "DM Mono", monospace; |
| font-size: 13px; |
| background: var(--surface-2); |
| color: var(--accent); |
| padding: 2px 6px; |
| border-radius: 4px; |
| } |
| pre { |
| background: var(--surface-2); |
| border: 1px solid var(--border); |
| padding: 20px; |
| border-radius: 8px; |
| overflow-x: auto; |
| margin: 16px 0; |
| } |
| pre code { background: none; padding: 0; color: var(--text-muted); } |
| |
| hr { border: none; border-top: 1px solid var(--border); margin: 40px 0; } |
| |
| /* Reveal */ |
| .reveal-wrap { |
| opacity: 0; |
| transform: translateY(20px); |
| transition: opacity 0.55s ease, transform 0.55s ease; |
| } |
| .reveal-wrap.visible { opacity: 1; transform: none; } |
| |
| /* ===== RESPONSIVE ===== */ |
| @media (max-width: 680px) { |
| .page-header { padding: 40px 20px 36px; } |
| .page-main { padding: 36px 20px 80px; } |
| .page-main table { font-size: 13px; } |
| .page-main td:first-child { width: 70px; } |
| } |
| </style> |
| </head> |
| <body> |
| |
| {% include nav.html %} |
| |
| <div class="page-header"> |
| <div class="page-header-inner"> |
| <div class="page-breadcrumb">GUS 2026</div> |
| <h1>{{ page.title | remove: 'Gerrit User Summit 2026 - ' | remove: 'Gerrit User Summit 2026' }}</h1> |
| </div> |
| </div> |
| |
| <main class="page-main"> |
| {{ content }} |
| </main> |
| |
| <footer> |
| <div class="footer-brand">Gerrit User Summit <span>2026</span></div> |
| <div class="footer-links"> |
| <a href="https://www.gerritcodereview.com">gerritcodereview.com</a> |
| <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Privacy</a> |
| <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms</a> |
| </div> |
| </footer> |
| |
| <script> |
| // ── Mobile hamburger ───────────────────────────────────── |
| const hamburger = document.getElementById('nav-hamburger'); |
| const mobileMenu = document.getElementById('nav-mobile-menu'); |
| if (hamburger) { |
| hamburger.addEventListener('click', () => mobileMenu.classList.toggle('open')); |
| } |
| |
| // ── Scroll reveal ──────────────────────────────────────── |
| const observer = new IntersectionObserver((entries) => { |
| entries.forEach(e => { |
| if (e.isIntersecting) { |
| e.target.classList.add('visible'); |
| observer.unobserve(e.target); |
| } |
| }); |
| }, { threshold: 0.06, rootMargin: '0px 0px -30px 0px' }); |
| |
| const pageMain = document.querySelector('.page-main'); |
| if (pageMain) { |
| const children = Array.from(pageMain.childNodes); |
| let wrap = null; |
| children.forEach(node => { |
| if (node.nodeType === 1 && (node.tagName === 'H2' || node.tagName === 'H3')) { |
| wrap = document.createElement('div'); |
| wrap.className = 'reveal-wrap'; |
| node.parentNode.insertBefore(wrap, node); |
| } |
| if (wrap) wrap.appendChild(node); |
| }); |
| document.querySelectorAll('.reveal-wrap').forEach(el => observer.observe(el)); |
| } |
| </script> |
| |
| </body> |
| </html> |