:root{--bg:#0a0a0a;--surface:#121212;--surface-raised:#1a1a1a;--line:#242424;--line-strong:#3b3b3b;--text:#f3f3f3;--text-soft:#cbcbcb;--text-muted:#9c9c9c;--text-faint:#7e7e7e;--ink:#0a0a0a;--font-sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--measure:760px;--gutter:24px;--panel:400px;--radius:8px;--ease:cubic-bezier(0.2,0.7,0.2,1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizeLegibility}*,:after,:before{box-sizing:border-box}#root,body,html{background:#0a0a0a;background:var(--bg);margin:0;min-height:100%;min-width:320px}body{color:#cbcbcb;color:var(--text-soft);font-size:1rem;line-height:1.65}body,button,input,textarea{font-family:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #f3f3f3;outline:2px solid var(--text);outline-offset:3px}::selection{background:#f3f3f3;background:var(--text);color:#0a0a0a;color:var(--bg)}.icon{flex-shrink:0}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){:root{--gutter:20px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-delay:0ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.app-shell{background:var(--bg);display:flex;flex-direction:column;min-height:100dvh;transition:padding-right .28s var(--ease)}main{flex:1 1}.footer-inner,.page,.top-nav{margin-inline:auto;width:min(var(--measure),calc(100% - var(--gutter)*2))}.skip-link{background:var(--text);border-radius:var(--radius);color:var(--ink);left:8px;padding:12px 16px;position:fixed;top:8px;transform:translateY(-200%);z-index:100}.skip-link:focus{transform:translateY(0)}[id]{scroll-margin-top:96px}[tabindex="-1"]:focus{outline:none}.site-header{background:var(--bg);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:40}.top-nav{align-items:center;display:flex;gap:16px;justify-content:space-between;min-height:64px}.brand-name{color:var(--text);font-family:var(--font-serif);font-size:1.1875rem;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}.brand-short{display:none}.nav-end,.nav-links,.nav-socials{align-items:center;display:flex}.nav-end{margin-right:-12px}.nav-link{align-items:center;color:var(--text-muted);display:inline-flex;font-size:.9375rem;min-height:44px;padding:0 12px;position:relative;text-decoration:none;transition:color .16s}.nav-link:after{background:currentColor;bottom:9px;content:"";height:1px;left:12px;position:absolute;right:12px;transform:scaleX(0);transform-origin:left;transition:transform .26s var(--ease)}.nav-link-active,.nav-link:hover{color:var(--text)}.nav-link-active:after{transform:scaleX(1)}.nav-socials{border-left:1px solid var(--line);margin-left:8px;padding-left:8px}.nav-social-link{display:grid;height:44px;opacity:.6;place-items:center;transition:opacity .16s;width:40px}.nav-social-link:hover{opacity:1}.nav-social-link img{height:18px;width:18px}.eyebrow,.project-index,.section-title{color:var(--text-muted);font-size:.8125rem;font-weight:500;letter-spacing:.08em;line-height:1.5;text-transform:uppercase}.eyebrow{align-items:center;display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 28px}.eyebrow span+span:before{background:var(--line-strong);content:"";display:inline-block;height:1px;margin-right:14px;vertical-align:middle;width:24px}.hero h1,.page-head h1{color:var(--text);font-family:var(--font-serif);font-size:clamp(2.75rem,1.7rem + 5.2vw,4.75rem);font-weight:400;letter-spacing:-.02em;line-height:1.04;margin:0}.lead{font-size:clamp(1.0625rem,1rem + .5vw,1.25rem);line-height:1.6;margin:28px 0 0;max-width:34em}.icon{transition:transform .22s var(--ease)}.button{align-items:center;background:var(--text);border:1px solid var(--text);border-radius:var(--radius);color:var(--ink);cursor:pointer;display:inline-flex;font-size:.9375rem;font-weight:500;gap:10px;min-height:48px;padding:0 20px;text-decoration:none;transition:background .16s,border-color .16s,color .16s}.button:hover{background:#0000;color:var(--text)}.button:hover .icon{transform:translateX(3px)}.button-quiet{background:#0000;border-color:var(--line-strong);color:var(--text);font-weight:400}.button-quiet:hover{border-color:var(--text)}.text-link{align-items:center;color:var(--text);display:inline-flex;font-size:.9375rem;gap:8px;min-height:44px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-decoration-thickness:1px;text-underline-offset:6px;transition:-webkit-text-decoration-color .16s;transition:text-decoration-color .16s;transition:text-decoration-color .16s,-webkit-text-decoration-color .16s}.text-link:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.link-row:hover .icon,.text-link:hover .icon{transform:translate(2px,-2px)}.hero{padding:clamp(72px,15vh,160px) 0 clamp(64px,11vh,120px)}.page-head{padding:clamp(64px,11vh,120px) 0 56px}.hero-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:40px}.stagger>*{animation:rise .6s var(--ease) both}.stagger>:nth-child(2){animation-delay:70ms}.stagger>:nth-child(3){animation-delay:.14s}.stagger>:nth-child(4){animation-delay:.21s}[data-reveal]{opacity:0;transform:translateY(12px);transition:opacity .6s var(--ease),transform .6s var(--ease)}[data-reveal].is-visible{opacity:1;transform:none}.project,.section{grid-column-gap:32px;border-top:1px solid var(--line);column-gap:32px;display:grid;grid-template-columns:148px minmax(0,1fr);padding:56px 0}.section-title{margin:7px 0 0}.entry+.entry{border-top:1px solid var(--line);margin-top:40px;padding-top:40px}.entry-head{align-items:baseline;display:flex;gap:6px 24px;justify-content:space-between}.entry-head h3,.project h2{color:var(--text);font-family:var(--font-serif);font-size:1.4375rem;font-weight:400;letter-spacing:-.01em;line-height:1.25;margin:0}.entry-subtitle{font-size:.9375rem;margin:4px 0 0}.entry-meta{font-feature-settings:"tnum";align-items:flex-end;color:var(--text-faint);display:flex;flex-direction:column;flex-shrink:0;font-size:.8125rem;font-variant-numeric:tabular-nums;line-height:1.6;margin:5px 0 0;white-space:nowrap}.dash-list,.inline-list,.link-list,.role-list{list-style:none;margin:0;padding:0}.dash-list{margin-top:20px}.dash-list li{padding-left:24px;position:relative}.dash-list li:before{background:var(--text-faint);content:"";height:1px;left:0;position:absolute;top:.82em;width:10px}.dash-list li+li{margin-top:10px}.role-list{border-top:1px solid var(--line);margin-top:28px}.role-list li{align-items:baseline;border-bottom:1px solid var(--line);display:flex;font-size:.9375rem;gap:16px;justify-content:space-between;padding:12px 0}.role-list span:last-child{font-feature-settings:"tnum";color:var(--text-faint);font-size:.8125rem;font-variant-numeric:tabular-nums;white-space:nowrap}.link-list{border-top:1px solid var(--line)}.section .link-list{border-top:0;margin-top:-9px}.link-row{align-items:center;border-bottom:1px solid var(--line);color:var(--text);display:flex;gap:16px;min-height:56px;padding:12px 0;text-decoration:none;transition:border-color .2s}.link-row:hover{border-bottom-color:var(--text-muted)}.link-row .icon{color:var(--text-faint);font-size:1.125rem;margin-left:auto}.link-row-detail{color:var(--text-muted);font-size:.9375rem;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-row-detail+.icon{margin-left:0}.skill-group+.skill-group{margin-top:32px}.skill-group h3{color:var(--text);font-size:1rem;font-weight:500;margin:0 0 8px}.inline-list li{display:inline}.inline-list li:not(:last-child):after{content:", "}.project-index{display:flex;flex-direction:column;gap:4px;margin:9px 0 0}.project-index span:first-child{color:var(--text-faint)}.project-index span:last-child{text-transform:none}.project h2{font-size:1.75rem}.project-description{color:var(--text);font-size:1.0625rem;margin:16px 0 0}.project .text-link{margin-top:20px}.contact-email{padding:0 0 56px}.contact-address{color:var(--text);font-family:var(--font-serif);font-size:clamp(1.5rem,1.1rem + 2.6vw,2.5rem);letter-spacing:-.01em;line-height:1.3;overflow-wrap:anywhere;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-decoration-thickness:1px;text-underline-offset:.22em;transition:-webkit-text-decoration-color .16s;transition:text-decoration-color .16s;transition:text-decoration-color .16s,-webkit-text-decoration-color .16s}.contact-address:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.contact-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:28px}.copy-status{color:var(--text-muted);font-size:.875rem}.site-footer{border-top:1px solid var(--line);margin-top:96px}.footer-inner{align-items:center;color:var(--text-faint);display:flex;flex-wrap:wrap;font-size:.875rem;gap:4px 24px;justify-content:space-between;padding:20px 0 28px}.footer-inner p{display:flex;flex-wrap:wrap;gap:4px 16px;margin:0}.footer-inner a{align-items:center;color:var(--text-muted);display:inline-flex;min-height:44px;text-decoration:none;transition:color .16s}.footer-inner a:hover{color:var(--text)}.footer-inner p span{align-items:center;display:inline-flex}.footer-links{display:flex;gap:20px}.assistant-launcher{align-items:center;animation:rise .32s var(--ease) both;background:var(--text);border:1px solid var(--text);border-radius:999px;bottom:calc(24px + env(safe-area-inset-bottom));color:var(--ink);cursor:pointer;display:inline-flex;font-size:.9375rem;font-weight:500;gap:10px;height:48px;padding:0 18px 0 20px;position:fixed;right:24px;transition:background .16s,color .16s;z-index:82}.assistant-launcher:hover{background:var(--bg);color:var(--text)}.assistant-launcher:hover .icon{transform:translate(2px,-2px)}.assistant-target{position:relative}.assistant-target:before{animation:target 2.4s var(--ease) both;background:var(--text);bottom:0;content:"";left:-16px;position:absolute;top:0;transform-origin:top;width:2px}@keyframes target{0%{opacity:0;transform:scaleY(0)}15%,65%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.visually-hidden{clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}@media (min-width:1220px){.app-shell.assistant-is-open{padding-right:var(--panel)}}@media (max-width:1100px){.footer-inner{padding-bottom:96px}}@media (max-width:640px){.top-nav{gap:8px;min-height:56px}.nav-socials{display:none}.nav-end{margin-right:-10px}.nav-link{padding:0 10px}.nav-link:after{left:10px;right:10px}[id]{scroll-margin-top:80px}.hero{padding:64px 0 56px}.page-head{padding:56px 0 40px}.eyebrow{font-size:.75rem;gap:2px 10px;margin-bottom:20px}.eyebrow span+span:before{margin-right:10px;width:12px}.hero-actions{margin-top:32px}.project,.section{grid-template-columns:minmax(0,1fr);padding:44px 0;row-gap:24px}.project-index,.section-title{margin-top:0}.project-index{flex-direction:row;gap:12px}.section .link-list{margin-top:-12px}.entry+.entry{margin-top:32px;padding-top:32px}.entry-head{flex-direction:column}.entry-meta{align-items:baseline;flex-direction:row;margin-top:2px;white-space:normal}.entry-meta span+span:before{content:"·";margin:0 8px}.link-row-detail{display:none}.link-row-detail+.icon{margin-left:auto}.contact-email{padding-bottom:44px}.site-footer{margin-top:64px}.assistant-launcher{bottom:calc(16px + env(safe-area-inset-bottom));right:16px}}@media (max-width:400px){.top-nav{gap:4px}.brand-name{font-size:1.0625rem}.nav-link{font-size:.875rem;padding:0 7px}.nav-link:after{left:7px;right:7px}.nav-end{margin-right:-7px}}@media (max-width:345px){.brand-full{display:none}.brand-short{display:inline}.eyebrow{align-items:flex-start;flex-direction:column}.eyebrow span+span:before{content:none}}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none}.assistant-target:before{animation:none}}
/*# sourceMappingURL=main.bd52fcf3.css.map*/