:root { --bg: #0a0a0a; --surface: #141414; --text: #f5f5f5; --muted: #a0a0a0; --accent: #4fc3f7; --accent-hover: #81d4fa; --border: #2a2a2a; --font: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; --rail: 22rem; --ease: 180ms ease; --radius: 8px; } *, *::before, *::after { box-sizing: border-box; } html { color-scheme: dark; background: var(--bg); } html, body { margin: 0; padding: 0; height: 100%; min-height: 100%; } body { font-family: var(--font); font-size: 1rem; font-weight: 400; line-height: 1.65; color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ::selection { background: color-mix(in srgb, var(--accent) 35%, transparent); color: var(--text); } h1, h2, p, dl, dt, dd { margin: 0; } a { color: var(--accent); text-decoration: none; transition: color var(--ease); } a:hover { color: var(--accent-hover); text-decoration: underline; text-underline-offset: 0.18em; } :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; } .skip { position: absolute; left: 0.75rem; top: 0.75rem; z-index: 20; padding: 0.5rem 0.75rem; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); color: var(--text); transform: translateY(-160%); } .skip:focus { transform: none; text-decoration: none; } .shell { display: grid; grid-template-columns: var(--rail) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); height: 100svh; min-height: 100svh; } .rail { position: sticky; top: 0; display: flex; flex-direction: column; justify-content: space-between; height: 100svh; padding: 2rem 2rem 1.75rem; border-right: 1px solid var(--border); } .rail-top { display: flex; flex-direction: column; align-items: flex-start; gap: 1.75rem; } .identity { display: flex; flex-direction: column; gap: 0.45rem; } .identity h1, .identity .site-name { font-size: 1.25rem; font-weight: 600; letter-spacing: 0.03em; line-height: 1.2; } .wordmark { color: var(--text); text-decoration: none; } .wordmark:hover { color: var(--accent); text-decoration: none; } .role { font-size: 0.9375rem; line-height: 1.45; color: var(--muted); } .status { display: inline-flex; align-items: center; gap: 0.5rem; font-family: var(--mono); font-size: 0.75rem; letter-spacing: 0.06em; color: var(--muted); } .status-dot { width: 0.4rem; height: 0.4rem; background: var(--accent); } .place { font-size: 0.875rem; color: var(--muted); } .menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.15rem; } .menu a { color: var(--accent); font-size: 1.125rem; font-weight: 500; line-height: 1.45; text-decoration: none; text-underline-offset: 0.18em; } .menu a:hover { color: var(--accent-hover); text-decoration: underline; } .menu a[aria-current='page'] { text-decoration: underline; } .rail-bottom { display: flex; flex-direction: column; gap: 0.35rem; } .rail-bottom a { color: var(--muted); font-size: 0.875rem; } .rail-bottom a:hover { color: var(--accent); } .btn { display: inline-flex; align-items: center; padding: 0.5rem 0.75rem; border-radius: var(--radius); border: 1px solid transparent; background: var(--accent); color: var(--bg); font: inherit; font-size: 0.9375rem; font-weight: 500; letter-spacing: 0.01em; text-decoration: none; transition: background var(--ease), color var(--ease); } .btn:hover { background: var(--accent-hover); color: var(--bg); text-decoration: none; } .card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 1.25rem 1.4rem; transition: border-color var(--ease); } @media (hover: hover) { .card:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); } } .page { min-height: 0; overflow: auto; padding: 2rem clamp(1.5rem, 4vw, 4rem) 4rem; } .page-flush { position: relative; height: 100%; min-height: 0; padding: 0; overflow: hidden; } .page-flush .site-main { position: relative; height: 100%; min-height: 0; } @media (max-width: 860px) { .shell { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); } .rail { position: static; height: auto; border-right: 0; border-bottom: 1px solid var(--border); padding: 1.25rem 1.25rem 1.35rem; gap: 1.25rem; } .rail-top { gap: 1rem; } .rail-bottom { display: none; } .page:not(.page-flush) { padding: 1.75rem 1.25rem 3rem; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms !important; } }