:root{--bg: #f5f6f8;--bg-elevated: #ffffff;--bg-sunken: #eceef2;--text: #0f172a;--text-muted: #475569;--text-faint: #94a3b8;--hairline: #e2e8f0;--hairline-strong: #cbd5e1;--accent: #3f5e7e;--accent-hover: #2c4762;--serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--measure: 38rem;--measure-wide: 54rem}*{box-sizing:border-box}html{font-size:17px;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--serif);font-size:1rem;line-height:1.6;font-feature-settings:"kern","liga","onum";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wrap{max-width:var(--measure);margin:0 auto;padding:2.5rem 1.5rem 6rem}.wrap-wide{max-width:var(--measure-wide);margin:0 auto;padding:2.5rem 1.5rem 6rem}h1,h2,h3,h4{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;line-height:1.25;margin:2.25rem 0 1rem}h1{font-size:1.95rem;margin-top:.5rem}h2{font-size:1.35rem;border-top:1px solid var(--hairline);padding-top:1.75rem;margin-top:2.75rem}h3{font-size:1.1rem}p{margin:0 0 1.1rem}a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--hairline-strong);transition:color .15s,border-color .15s}a:hover{color:var(--accent-hover);border-bottom-color:var(--accent)}hr{border:none;border-top:1px solid var(--hairline);margin:2.5rem 0}blockquote{margin:1.75rem 0;padding:0 0 0 1.25rem;border-left:2px solid var(--accent);color:var(--text);font-style:italic}blockquote p:last-child{margin-bottom:0}code{font-family:var(--mono);font-size:.9em;background:var(--bg-sunken);color:var(--text);padding:1px 6px;border-radius:3px}pre{font-family:var(--mono);font-size:.85rem;line-height:1.55;background:var(--bg-elevated);color:var(--text);padding:1rem 1.1rem;border-radius:4px;overflow-x:auto;border:1px solid var(--hairline);margin:1.5rem 0}pre code{background:none;padding:0;color:inherit}ul,ol{padding-left:1.4rem;margin:0 0 1.1rem}li{margin:.3rem 0}.mono-label{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--text-faint);text-transform:lowercase}.mono-meta{font-family:var(--mono);font-size:14px;color:var(--text-muted)}.mono-num{font-family:var(--mono);font-variant-numeric:tabular-nums}.nav{font-family:var(--mono);font-size:14px;letter-spacing:.02em;text-transform:lowercase;display:flex;gap:1.5rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--hairline);max-width:var(--measure-wide);margin:0 auto;align-items:baseline;flex-wrap:wrap}.nav a{border-bottom:none}.nav-name{font-weight:600;margin-right:auto;color:var(--text)}.nav-name:hover{color:var(--accent)}.nav a:not(.nav-name){color:var(--text-muted)}.nav a:not(.nav-name):hover{color:var(--text)}.nav a[aria-current=page]{color:var(--accent)}footer{font-family:var(--mono);font-size:12px;color:var(--text-muted);border-top:1px solid var(--hairline);padding:1.5rem;margin-top:4rem;max-width:var(--measure-wide);margin-left:auto;margin-right:auto;display:flex;gap:1.25rem;flex-wrap:wrap;align-items:baseline}footer a{color:var(--text-muted);border-bottom:none}footer a:hover{color:var(--text)}.build-meta{margin-left:auto;color:var(--text-faint);letter-spacing:.02em}.lede{font-size:1.05rem;color:var(--text)}.tagline{font-family:var(--mono);font-size:14px;color:var(--text-muted);margin:.25rem 0 2rem;letter-spacing:.01em}.metric-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1.25rem 2rem;margin:2.5rem 0;padding:1.5rem 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.metric-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:28px;color:var(--text);line-height:1.2;margin-bottom:.35rem}.metric-label{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--text-faint);text-transform:lowercase}.cta-list{list-style:none;padding:0;margin:2.5rem 0 0}.cta-list li{display:grid;grid-template-columns:2.5rem 6rem 1fr;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--hairline);align-items:baseline}.cta-list li:last-child{border-bottom:none}.cta-num{font-family:var(--mono);font-size:12px;color:var(--text-faint);letter-spacing:.04em}.cta-dest{font-family:var(--mono);font-size:14px;color:var(--accent);border-bottom:none}.cta-dest:hover{color:var(--accent-hover);border-bottom:none}.cta-desc{font-family:var(--mono);font-size:13px;color:var(--text-muted)}.era{margin:2.5rem 0}.era-label{font-family:var(--mono);font-size:12px;color:var(--text-faint);text-transform:lowercase;letter-spacing:.04em;margin-bottom:1.5rem}.project-row{display:block;padding:1.5rem 0;border-bottom:1px solid var(--hairline);color:inherit;position:relative}.project-row:hover{border-bottom-color:var(--hairline-strong)}.project-row:hover .project-title,.project-row:hover .project-arrow{color:var(--accent)}.project-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.project-title{font-family:var(--serif);font-weight:600;font-size:1.35rem;color:var(--text);transition:color .15s}.project-arrow{font-family:var(--mono);color:var(--text-faint);transition:color .15s}.project-meta{font-family:var(--mono);font-size:13px;color:var(--text-muted);margin-top:.4rem}.project-meta .status-live{color:var(--accent)}.project-stack{font-family:var(--mono);font-size:12px;color:var(--text-faint);letter-spacing:.02em;margin-top:.2rem}.project-desc{color:var(--text);margin-top:.75rem;font-size:.97rem;line-height:1.55}.stub-pill{font-family:var(--mono);font-size:11px;color:var(--text-faint);border:1px solid var(--hairline-strong);padding:.08em .5em;border-radius:3px;margin-left:.5rem;letter-spacing:.04em;text-transform:lowercase;vertical-align:middle}.kv{display:grid;grid-template-columns:7rem 1fr;gap:.35rem 1rem;font-family:var(--mono);font-size:14px;margin:1rem 0 2rem}.kv dt{color:var(--text-muted);letter-spacing:.02em}.kv dd{margin:0;color:var(--text)}.kv dd a{color:var(--accent);border-bottom:none}.kv dd a:hover{color:var(--accent-hover);border-bottom:1px solid var(--accent)}.note-entry{margin:2rem 0;padding:0 0 1.5rem 1.25rem;border-left:2px solid var(--hairline-strong);border-bottom:1px solid var(--hairline);transition:border-left-color .15s}.note-entry:last-child{border-bottom:none}.note-entry:hover{border-left-color:var(--accent)}.note-meta{font-family:var(--mono);font-size:13px;color:var(--text-muted);margin-bottom:.35rem;display:flex;gap:1rem;align-items:baseline}.note-meta .note-tag{color:var(--text-faint);letter-spacing:.04em}.rack-machine{margin:1.5rem 0 2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--hairline)}.rack-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.rack-name{font-family:var(--serif);font-weight:600;font-size:1.35rem;color:var(--text)}.rack-tag{font-family:var(--mono);font-size:13px;color:var(--text-muted);flex:1;margin-left:.75rem}.rack-status{font-family:var(--mono);font-size:12px;color:var(--accent);letter-spacing:.04em;text-transform:lowercase}.rack-specs{display:grid;grid-template-columns:5rem 1fr;gap:.3rem 1.25rem;font-family:var(--mono);font-size:13px;margin-top:.75rem;color:var(--text)}.rack-specs dt{color:var(--text-muted)}.rack-specs dd{margin:0}.rack-specs dd small{color:var(--text-muted);margin-left:.5rem}.cs-meta-strip{display:flex;gap:1.5rem 2rem;flex-wrap:wrap;font-family:var(--mono);font-size:13px;color:var(--text);padding:1rem 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);margin:1rem 0 2rem}.cs-meta-strip .cs-meta-key{color:var(--text-muted);margin-right:.4rem}.cs-numbers{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin:2rem 0}.cs-number-card{padding:1rem 1.25rem;background:var(--bg-elevated);border:1px solid var(--hairline);border-radius:4px}.cs-number-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:24px;color:var(--text);line-height:1.2;margin-bottom:.3rem}.cs-number-label{font-family:var(--mono);font-size:12px;color:var(--text-faint);letter-spacing:.04em;text-transform:lowercase}.cs-commit-log{margin:2rem 0;font-family:var(--mono);font-size:13px}.cs-commit-log-row{display:grid;grid-template-columns:5.5rem 6.5rem 1fr;gap:1rem;padding:.35rem 0}.cs-commit-log-row .tag,.cs-commit-log-row .date{color:var(--text-muted)}.cs-commit-log-row .desc{color:var(--text)}.logos{display:flex;gap:2rem;flex-wrap:wrap;align-items:center;margin:2rem 0 2.5rem;padding:1.5rem 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.logos a{color:var(--text-muted);font-family:var(--mono);font-size:12px;letter-spacing:.02em;border-bottom:none}.logos a:hover{color:var(--text);border-bottom:none}.logos img{max-height:28px;width:auto;opacity:.75;transition:opacity .15s}.logos a:hover img{opacity:1}.logo-text{border-bottom:1px dotted var(--text-faint);padding-bottom:1px}.positioning{font-family:var(--serif);font-size:1.2rem;line-height:1.4;color:var(--text);margin:0 0 2rem;max-width:34rem}.work-with-me{margin-top:4rem;scroll-margin-top:1.5rem}.engagement-list{display:grid;grid-template-columns:8.75rem 1fr;gap:.55rem 1.25rem;margin:1.25rem 0 1.5rem;font-family:var(--serif);font-size:1rem;line-height:1.5}.engagement-list dt{font-family:var(--mono);font-size:13px;color:var(--text-muted);letter-spacing:.02em;padding-top:.1rem}.engagement-list dd{margin:0;color:var(--text)}.work-with-me .not-a-fit{color:var(--text-muted);margin:.5rem 0 1.25rem}.work-with-me .response-meta{font-family:var(--mono);font-size:13px;color:var(--text-muted);margin-top:.4rem}.prose h1{margin-bottom:.25rem}.prose .subhead{font-family:var(--mono);font-size:13px;color:var(--text-muted);letter-spacing:.01em;margin-bottom:1rem}.skip-link{position:absolute;left:-9999px;top:0;font-family:var(--mono);font-size:14px;background:var(--bg-elevated);color:var(--accent);padding:.5rem .75rem;border:1px solid var(--hairline-strong);border-bottom:1px solid var(--hairline-strong);z-index:10}.skip-link:focus{left:1rem;top:1rem;outline:2px solid var(--accent);outline-offset:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
