blob: d56575134e9cf90e2b5a329141acf7314ea2b1c5 [file]
<!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>