:root{color-scheme:light;--bg: #ffffff;--text: #1a1a1a;--muted: #5a5f66;--line: #e5e7eb;--line-strong: #d6dae0;--focus: #1f6feb;--accent: rgb(76 136 247);--radius-sm: 4px;--radius-md: 6px;--max: 1080px;--copy: 720px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;line-height:1.5}body{min-height:100vh}.viewport-body,.home-body{overflow:hidden}a{color:inherit;text-decoration:none}a[href],button,summary{cursor:pointer}img{display:block;max-width:100%}h1,h2,h3,p,ol,ul{margin-top:0}input,button{font:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.page-shell{max-width:var(--max);margin:0 auto;padding:3rem 1.25rem 4rem}.viewport-shell{min-height:100svh;display:flex;flex-direction:column;padding-bottom:1.75rem}.home-shell{justify-content:flex-start}.site-header,.site-footer,.entry-link,.article-meta,.social-links{display:flex}.site-header,.site-footer{align-items:center;justify-content:space-between;gap:1rem}.site-header{justify-content:flex-end;margin-bottom:1.1rem}.wordmark{font-size:.95rem;font-weight:600;letter-spacing:-.01em}.nav-list{display:inline-flex;align-items:center;gap:1.1rem;list-style:none;padding:0;margin:0}.nav-list a{position:relative;padding-bottom:.16rem;color:var(--muted);font-size:.92rem;font-weight:500}.nav-list a:after{content:"";position:absolute;left:0;right:0;bottom:-.28rem;height:2px;border-radius:999px;background:var(--accent);transform:scaleX(0);transform-origin:center;opacity:0;transition:transform .16s ease,opacity .16s ease}.nav-list a[aria-current=page]{color:var(--text)}.nav-list a[aria-current=page]:after{transform:scaleX(1);opacity:1}.nav-list a:hover,.nav-list a:focus-visible{color:var(--text)}.nav-list a:hover:after,.nav-list a:focus-visible:after{transform:scaleX(1);opacity:.6}.nav-list a[aria-current=page]:hover:after,.nav-list a[aria-current=page]:focus-visible:after{opacity:1}main{padding-top:.2rem}.viewport-main{flex:1;display:flex;min-width:0}.home-main{align-items:center}.projects-main{min-width:0;min-height:0}.writing-main{min-height:0}.hero,.page-intro,.article,.panel{max-width:var(--copy)}.hero-home{padding:0 0 5vh}.hero-avatar{width:5rem;height:5rem;margin-bottom:1.15rem;border-radius:999px}.hero-kicker,.eyebrow,.section-label,.entry-meta,.article-meta,.site-footer{color:var(--muted);font-size:.82rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.hero-kicker,.eyebrow{margin-bottom:.65rem}h1{margin:0 0 .9rem;font-size:clamp(2.45rem,6vw,3.8rem);font-weight:600;line-height:1.02;letter-spacing:-.03em}h2{margin:0 0 .35rem;font-size:clamp(1.15rem,2vw,1.4rem);font-weight:500;line-height:1.35;letter-spacing:-.01em}.hero-summary,.hero-note,.lede,.prose p,.panel p,.entry-copy p{color:var(--muted);font-size:1rem;line-height:1.65}.hero-summary{max-width:35rem;margin-bottom:1.15rem}.hero-note{margin-bottom:1rem;max-width:31rem}.page-intro{margin-bottom:2rem}.projects-page{display:flex;flex:1;min-width:0;min-height:0;flex-direction:column;gap:2rem;padding-top:1.25rem}.projects-intro{max-width:52rem;margin:0 0 2.2rem}.projects-intro h1{max-width:45rem;margin-bottom:1rem;font-size:clamp(3rem,8vw,5rem);line-height:.98;letter-spacing:-.05em}.projects-note{max-width:44rem;margin:0;color:var(--muted);font-size:1rem;line-height:1.7}.projects-rail{position:relative;min-width:0;flex:1}.projects-rail[data-rail-state=start] .projects-grid{-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - clamp(4rem,8vw,6.5rem)),rgb(0 0 0 / 0%) 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - clamp(4rem,8vw,6.5rem)),#0000)}.writing-page{display:flex;flex:1;min-height:0;flex-direction:column;gap:2rem;padding-top:1.25rem}.writing-intro{max-width:52rem}.writing-intro h1{max-width:45rem;margin-bottom:1rem;font-size:clamp(3rem,8vw,5rem);line-height:.98;letter-spacing:-.05em}.writing-note{max-width:42rem;margin:0;color:var(--muted);font-size:1rem;line-height:1.7}.newsletter-callout{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.2rem 1.25rem;border:1px solid var(--line);border-radius:.85rem;background:color-mix(in srgb,var(--line) 22%,white)}.newsletter-callout h2{margin-bottom:.35rem;font-size:clamp(1.2rem,2vw,1.55rem);font-weight:600;line-height:1.15}.newsletter-copy,.newsletter-status{margin:0;color:var(--muted);font-size:.98rem;line-height:1.6}.newsletter-success{margin:0;color:var(--accent);font-size:.92rem;font-weight:600;line-height:1.4}.newsletter-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;flex:0 0 auto;gap:.75rem;width:min(100%,31rem);margin:0}.newsletter-form[hidden]{display:none}.newsletter-success-panel{display:flex;align-items:center;justify-content:flex-start;flex:0 0 auto;width:min(100%,31rem);min-height:3rem}.newsletter-success-panel[hidden]{display:none}.newsletter-input{min-width:0;width:100%;min-height:3rem;padding:.75rem .95rem;border:1px solid var(--line-strong);border-radius:.75rem;background:var(--bg);color:var(--text)}.newsletter-input::placeholder{color:var(--muted)}.newsletter-input:focus-visible{outline:none}.newsletter-submit{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:3rem;padding:.75rem 1.1rem;border:0;border-radius:.75rem;background:var(--accent);color:var(--bg);font-size:.95rem;font-weight:600;white-space:nowrap;transition:transform .18s ease,opacity .18s ease}.newsletter-submit:hover,.newsletter-submit:focus-visible{transform:translateY(-1px);opacity:.92}.article,.panel{margin-bottom:2rem}.social-links{align-items:center;gap:.7rem}.social-link{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--muted)}.social-link-text{width:auto;gap:.45rem;padding:0 .05rem}.social-link:hover,.social-link:focus-visible{color:var(--accent)}.social-link svg{width:1.05rem;height:1.05rem}.social-link-copy{font-size:.92rem;font-weight:500;line-height:1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.section-link,.prose a,.entry-copy a,.panel a{color:var(--accent)}.section-link:hover,.section-link:focus-visible,.prose a:hover,.prose a:focus-visible,.entry-copy a:hover,.entry-copy a:focus-visible,.panel a:hover,.panel a:focus-visible{text-decoration:underline}.entry-list{list-style:none;margin:1rem 0 0;padding:0;border-top:1px solid var(--line)}.writing-list{flex:1;min-height:0;margin-top:0;overflow-y:auto;padding-right:.4rem;scrollbar-width:thin}.entry{position:relative;padding:1rem 0 1.1rem}.entry+.entry{border-top:1px solid var(--line)}.entry-link{align-items:flex-start;justify-content:space-between;gap:1rem}.entry-link:hover h2,.entry-link:focus-visible h2{text-decoration:underline}.entry-meta{flex:0 0 8.5rem;display:flex;flex-direction:column;gap:.2rem;white-space:nowrap}.entry-copy{min-width:0;flex:1}.entry-copy p,.empty-state{margin-bottom:0}.projects-grid{display:flex;flex:1;min-height:0;gap:1.25rem;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;list-style:none;margin:0;padding:0 0 .35rem}.projects-grid::-webkit-scrollbar{display:none}.project-tile{flex:0 0 clamp(18rem,28vw,24rem);min-width:0}.project-tile-link{position:relative;display:flex;flex-direction:column;height:100%;padding:1.2rem 1.15rem 1.1rem;border:1px solid color-mix(in srgb,var(--border) 85%,transparent);border-radius:1.1rem;background:color-mix(in srgb,var(--surface) 92%,white 8%);transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease,transform .18s ease}.project-tile-link:hover,.project-tile-link:focus-visible{border-color:color-mix(in srgb,var(--muted) 20%,var(--border) 80%);background:color-mix(in srgb,var(--surface) 96%,white 4%);box-shadow:0 10px 24px -18px #1a1a1a59;transform:translateY(-2px)}.project-tile-image{width:3.25rem;height:3.25rem;margin-bottom:.9rem}.project-tile-image img{display:block;width:100%;height:100%;border-radius:.5rem;object-fit:contain}.project-tile-meta{display:flex;flex-wrap:wrap;gap:.6rem 1rem;margin-bottom:.85rem;color:var(--muted);font-size:.8rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.project-tile h2{margin-bottom:.65rem;font-size:clamp(1.25rem,2vw,1.6rem);font-weight:600;line-height:1.15;letter-spacing:-.025em}.project-tile-arrow{position:absolute;top:1rem;right:1rem;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;color:var(--accent);opacity:0;transform:translate(-.15rem,.15rem);transition:opacity .18s ease,transform .18s ease}.project-tile-arrow svg{width:100%;height:100%}.project-tile-link:hover .project-tile-arrow,.project-tile-link:focus-visible .project-tile-arrow{opacity:1;transform:translate(0)}.project-tile p{margin:0;color:var(--muted);font-size:1rem;line-height:1.65}.project-tile-url{display:inline-flex;align-items:center;gap:.45rem;margin-top:1rem;color:var(--muted);font-size:.95rem;font-weight:500;line-height:1}.project-tile-url svg{width:1rem;height:1rem;flex:0 0 auto}.article-meta{gap:1rem;margin-bottom:.8rem;flex-wrap:wrap}.article,.panel{padding-top:.2rem}.prose{font-size:1rem;line-height:1.75}.prose>*+*{margin-top:1rem}.prose h2,.prose h3{margin-top:2rem;margin-bottom:.5rem;font-size:clamp(1.35rem,2.2vw,1.7rem);font-weight:600;line-height:1.2;letter-spacing:-.02em}.prose ul,.prose ol{padding-left:1.25rem}.site-footer{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.78rem}@media(max-width:900px){.site-header,.site-footer,.entry-link,.newsletter-callout{flex-direction:column;align-items:flex-start}.entry-meta{flex-basis:auto;white-space:normal}.projects-grid{gap:1rem}.project-tile{flex-basis:min(22rem,70vw)}.newsletter-form,.newsletter-success-panel{width:100%}}@media(max-width:640px){.page-shell{padding:1.5rem 1rem 2.5rem}.viewport-body,.home-body{overflow:auto}.viewport-main,.home-main{align-items:flex-start}.site-header{gap:.75rem}.nav-list{gap:.85rem;flex-wrap:wrap}.hero-home{padding:1rem 0 2rem}.projects-page,.writing-page{padding-top:.35rem;display:block}.projects-intro,.writing-intro{margin-bottom:2.25rem}.newsletter-callout{padding:1.05rem 1rem}.newsletter-form{grid-template-columns:1fr}.newsletter-submit{width:100%}.projects-grid{display:grid;grid-template-columns:1fr;gap:1.75rem;overflow:visible;padding-bottom:0}.projects-rail[data-rail-state=start] .projects-grid{-webkit-mask-image:none;mask-image:none}.project-tile{flex-basis:auto}.writing-list{overflow:visible;padding-right:0}h1{font-size:clamp(2.5rem,12vw,3.35rem)}}
