:root{--bg: #0d0d0c;--surface: #131311;--surface-2: #1a1a17;--text: #e8dcc8;--text-bright: #f5ead6;--muted: #8a8068;--line: #2a2720;--accent: #d4a44a;--accent-soft: #b8933f;--ok: #6ec9a8;--max: 68rem}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;color:var(--text);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem;line-height:1.62;background:var(--bg);color-scheme:dark}.shell{width:min(100% - 2.4rem,var(--max));margin-inline:auto}.site-header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:#0d0d0ceb;backdrop-filter:blur(6px)}.site-header .shell{min-height:3.6rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}.wordmark{text-decoration:none;color:var(--accent);font-weight:600;font-size:.82rem;letter-spacing:.08em}nav ul{margin:0;padding:0;list-style:none;display:flex;gap:.3rem}nav a{text-decoration:none;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.09em;padding:.36rem .7rem;border:1px solid transparent;transition:color .15s,border-color .15s}nav a.active,nav a:hover{color:var(--text-bright);border-color:var(--line)}h1,h2,h3{margin:0;line-height:1.2;font-weight:500;color:var(--text-bright)}h1{font-size:clamp(1.6rem,4.5vw,2.4rem);letter-spacing:-.01em;max-width:22ch}h2{font-size:clamp(.95rem,2vw,1.15rem);margin-bottom:.75rem;letter-spacing:.04em;text-transform:uppercase}h3{font-size:.88rem;letter-spacing:.02em}p{margin:0}a{color:var(--accent)}a:hover{color:var(--text-bright)}section{margin:2rem 0}.card{background:var(--surface);border:1px solid var(--line);padding:1.1rem;position:relative}.kicker{color:var(--muted);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.meta{color:var(--muted);font-size:.82rem}.home-layout{display:grid;gap:2.5rem;padding:3rem 0 4rem}.intro{display:grid;gap:.8rem}.intro p{max-width:52ch;color:var(--muted)}.intro .tagline{color:var(--text)}.writing-feed{display:grid;gap:.6rem}.writing-feed h2{margin-bottom:.25rem}.feed-item{display:grid;grid-template-columns:1fr auto;gap:.25rem 1.5rem;align-items:baseline;padding:.7rem 0;border-top:1px solid var(--line);text-decoration:none;color:inherit;transition:color .12s}.feed-item:hover{color:var(--text-bright)}.feed-item h3{font-weight:400;text-transform:none;letter-spacing:0}.feed-item time{color:var(--muted);font-size:.75rem;white-space:nowrap}.feed-item p{grid-column:1 / -1;color:var(--muted);font-size:.82rem}.view-all{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.cta-row{display:flex;flex-wrap:wrap;gap:.55rem}.btn{border:1px solid var(--line);padding:.45rem .82rem;text-decoration:none;color:var(--text);background:var(--surface);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;transition:border-color .15s}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent-soft);color:var(--bg)}.page-header{padding:2rem 0 .5rem}.page-header h1{max-width:none}.writing-list{list-style:none;margin:0;padding:0;display:grid;gap:0}.writing-list li{border-top:1px solid var(--line)}.writing-list li a{color:inherit;text-decoration:none;display:grid;grid-template-columns:1fr auto;gap:.25rem 1.5rem;align-items:baseline;padding:.7rem 0;transition:color .12s}.writing-list li a:hover{color:var(--text-bright)}.writing-list h3{font-weight:400;text-transform:none;letter-spacing:0}.writing-list .meta{font-size:.75rem}.writing-list p:not(.meta){grid-column:1 / -1;color:var(--muted);font-size:.82rem}.prose{max-width:62ch}.prose p,.prose li{margin-bottom:.9rem}.prose ul{padding-left:1.2rem}.prose h2{margin-top:2rem;text-transform:none}.prose h3{margin-top:1.5rem}.prose hr{border:none;border-top:1px solid var(--line);margin:1.5rem 0}.prose blockquote{margin:1rem 0;padding-left:1rem;border-left:2px solid var(--accent);color:var(--muted)}.prose code{font-size:.88em;background:var(--surface-2);padding:.15em .35em;border:1px solid var(--line)}.prose pre{background:var(--surface);border:1px solid var(--line);padding:1rem;overflow-x:auto;font-size:.84rem;line-height:1.5}.prose pre code{background:none;border:none;padding:0}.resume-top-grid{display:grid;gap:1rem}.resume-top-main,.resume-top-side{display:grid;gap:1rem;align-content:start}.timeline{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.45rem}.timeline li{border-top:1px solid var(--line);padding:.68rem 0}.entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem .85rem;align-items:baseline}.entry time{color:var(--muted);white-space:nowrap;font-size:.75rem;letter-spacing:.03em}.detailed-list{display:grid;gap:.8rem}.detailed-item{display:grid;gap:.5rem}.detailed-item header{display:grid;gap:.16rem}.detailed-item p{margin-bottom:.2rem}.stack-list{list-style:none;margin:0;padding:0;display:grid;gap:.72rem}.stack-list p{margin-top:.2rem}.resume-section>h2{margin-bottom:.85rem}.site-footer{border-top:1px solid var(--line);padding:1.5rem 0;margin-top:4rem;color:var(--muted);font-size:.72rem;letter-spacing:.04em}@media(prefers-reduced-motion:no-preference){.card,.writing-list li,.feed-item{animation:reveal .35s ease both}}@keyframes reveal{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media print{@page{size:A4;margin:1.25cm}body.resume-page{background:#fff;color:#111;color-scheme:light;font-size:11pt;line-height:1.4;font-family:Helvetica Neue,Arial,sans-serif}body.resume-page .site-header,body.resume-page .site-footer,body.resume-page .btn,body.resume-page .kicker{display:none!important}body.resume-page main.shell{width:100%;margin:0;padding:0}.resume-page h1,.resume-page h2,.resume-page h3{font-family:Helvetica Neue,Arial,sans-serif;text-transform:none;letter-spacing:0;color:#111}.resume-page h1{font-size:24pt}.resume-page h2{font-size:14pt}.resume-page h3{font-size:11pt}.resume-page .card{border:1px solid #d1d5db;background:#fff;box-shadow:none;padding:.45cm}.resume-page .card:before{display:none}.resume-page .resume-top-grid,.resume-page .resume-top-main,.resume-page .resume-top-side,.resume-page .detailed-list{display:block}.resume-page .resume-top-grid .card,.resume-page .detailed-list .card{margin:0 0 .45cm;break-inside:avoid}.resume-page a{color:#111;text-decoration:underline}}@media(max-width:720px){.site-header{position:static}nav a{font-size:.7rem;padding:.3rem .55rem}.feed-item{grid-template-columns:1fr}.feed-item time{order:-1}.writing-list li a{grid-template-columns:1fr}.writing-list .meta{order:-1}}@media(min-width:900px){.resume-top-grid{grid-template-columns:minmax(0,1.72fr) minmax(0,1fr);align-items:start}}
