/* BASE — reset, typography, page frame (header/footer/container). Layout-level stuff only; reusable widgets live in components.css. */ *, *::before, *::after { box-sizing: border-box; } [hidden] { display: none !important; } html { -webkit-text-size-adjust: 100%; } body { margin: 0; font-family: var(--font-sans); font-size: var(--text-md); line-height: var(--leading-normal); background: var(--color-bg); color: var(--color-text); min-height: 100vh; } img { max-width: 100%; display: block; } a { color: inherit; text-decoration: none; } button { font: inherit; } h1, h2, h3 { margin: 0; line-height: var(--leading-tight); } p { margin: 0; } code { padding: 1px var(--space-1); border-radius: var(--radius-sm); background: var(--color-surface-2); border: 1px solid var(--color-border); font-size: 0.9em; } /* ---- page frame ---------------------------------------------------------- */ .container { max-width: var(--container-max); margin: 0 auto; padding-left: var(--container-pad); padding-right: var(--container-pad); } .page { padding-top: var(--space-5); padding-bottom: var(--space-8); } /* ---- header ---------------------------------------------------------------- */ .site-header { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--color-border); background: var(--color-bg); background: color-mix(in srgb, var(--color-bg) 85%, transparent); backdrop-filter: blur(12px); } .site-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--space-4); height: var(--header-height); } .brand { font-size: var(--text-xl); font-weight: var(--font-weight-bold); letter-spacing: -0.02em; } .brand span { color: var(--color-accent); } .site-header__nav { display: flex; gap: var(--space-1); } .site-header__nav a { padding: var(--space-2) var(--space-4); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--font-weight-medium); color: var(--color-text-dim); transition: background 120ms ease, color 120ms ease; } .site-header__nav a:hover { color: var(--color-text); background: var(--color-surface); } .site-header__nav a.is-active { color: var(--color-accent-text); background: var(--color-accent); } .site-header__actions { display: flex; justify-content: flex-end; gap: var(--space-1); } /* ---- icon buttons ----------------------------------------------------------- */ .icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: none; border-radius: var(--radius-full); background: transparent; color: var(--color-text-dim); cursor: pointer; transition: background 120ms ease, color 120ms ease; } .icon-btn:hover { background: var(--color-surface); color: var(--color-text); } .icon-btn.is-active { color: var(--color-accent); } .icon-btn svg { width: 20px; height: 20px; } /* ---- footer ------------------------------------------------------------------ */ .site-footer { border-top: 1px solid var(--color-border); padding: var(--space-4) 0 var(--space-5); color: var(--color-text-faint); font-size: var(--text-xs); } .site-footer .container { display: flex; gap: var(--space-3); flex-wrap: wrap; } .site-footer a { color: var(--color-text-dim); } .site-footer a:hover { color: var(--color-text); } /* ---- responsive ---------------------------------------------------------------- */ @media (max-width: 720px) { .site-header__nav a { padding: var(--space-2) var(--space-3); } }