/* tsuki: page layout — header, main, footer composition */ body { display: grid; grid-template-rows: auto 1fr auto; } .site-header, main, .site-footer { padding-inline: var(--tsuki-space-6); } .site-header { display: flex; align-items: center; gap: var(--tsuki-space-4); flex-wrap: wrap; max-width: var(--tsuki-wide-width); margin-inline: auto; width: 100%; padding-block: var(--tsuki-space-6); border-bottom: 1px solid var(--tsuki-border); } .site-title { font-weight: 650; font-size: var(--tsuki-fs-lg); letter-spacing: -0.01em; color: var(--tsuki-fg); text-decoration: none; } .site-title:hover { text-decoration: none; color: var(--tsuki-accent); } .site-nav { margin-inline-start: auto; } .site-nav ul { display: flex; gap: var(--tsuki-space-4); list-style: none; padding: 0; margin: 0; } .site-nav a { color: var(--tsuki-fg-muted); } .site-nav a:hover { color: var(--tsuki-fg); } .site-nav a[aria-current="page"] { color: var(--tsuki-fg); font-weight: 550; } .theme-toggle { background: transparent; border: 1px solid var(--tsuki-border); border-radius: 999px; width: 2rem; height: 2rem; display: inline-grid; place-items: center; color: var(--tsuki-fg-muted); transition: var(--tsuki-transition); } .theme-toggle:hover { color: var(--tsuki-fg); border-color: var(--tsuki-fg-muted); } main { max-width: var(--tsuki-content-width); margin-inline: auto; width: 100%; padding-block: var(--tsuki-space-12) var(--tsuki-space-16); } body.home main, body.list main { max-width: var(--tsuki-wide-width); } .site-footer { max-width: var(--tsuki-wide-width); margin-inline: auto; width: 100%; padding-block: var(--tsuki-space-8); border-top: 1px solid var(--tsuki-border); color: var(--tsuki-fg-muted); font-size: var(--tsuki-fs-sm); display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--tsuki-space-3); } .site-footer p { margin: 0; } .list-header { margin-block-end: var(--tsuki-space-8); border-block-end: 1px solid var(--tsuki-border); padding-block-end: var(--tsuki-space-6); } .list-title { font-size: var(--tsuki-fs-2xl); margin: 0; } .list-description { margin: var(--tsuki-space-2) 0 0; color: var(--tsuki-fg-muted); }