@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}:root{--bg:#fbfbf9;--surface:#f5f5f2;--fg:#1c1c19;--muted:#5b5b55;--faint:#5b5b55;--line:#e3e3dd;--accent:#b5532a;--accent-soft:#b5532a1a;--nav-bg:#fbfbf9d9;--font-sans:"IBM Plex Sans", "Helvetica Neue", Helvetica, sans-serif;--font-mono:"IBM Plex Mono", monospace;--max-width:1140px;--page-pad:32px;--header-height:64px;--section-pad:clamp(64px, 7.8vw, 112px);--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-pill:999px;--ease:.15s ease;--ease-card:.18s ease;--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-enter:.7s;--duration-micro:.2s;color-scheme:light}[data-theme=dark],.section--dark,.site-footer--dark{--bg:#121211;--surface:#1a1a18;--fg:#eeeee9;--muted:#a3a39b;--faint:#a3a39b;--line:#2e2e2a;--accent:#e07a4f;--accent-soft:#e07a4f26;--nav-bg:#121211d9;color-scheme:dark}.section--dark,.site-footer--dark{background:var(--bg);color:var(--fg)}@media (width<=640px){:root{--page-pad:20px}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-height:100vh;color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}img{max-width:100%;height:auto;display:block}a{color:var(--fg);text-decoration:none}a:hover{color:var(--accent)}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skip-link{top:-100px;left:var(--page-pad);z-index:100;background:var(--fg);color:var(--bg);border-radius:var(--radius-md);padding:10px 14px;font-size:14px;font-weight:600;position:absolute}.skip-link:focus{color:var(--bg);top:12px}.container{width:100%;max-width:calc(var(--max-width) + var(--page-pad) * 2);padding:0 var(--page-pad);margin:0 auto}.icon{flex-shrink:0;display:block}.section{padding:var(--section-pad) 0;scroll-margin-top:var(--header-height)}.section--surface{background:var(--surface)}.section-intro{flex-direction:column;gap:14px;margin-bottom:clamp(32px,4vw,56px);display:flex}.section-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0;font-size:12px}.about .section-label,.section-head .section-label{margin-bottom:14px}.section-heading{letter-spacing:-.03em;margin:0;font-size:clamp(30px,2.8vw,40px);font-weight:600;line-height:1.1}.section-meta,.section-updated{color:var(--muted);margin:0}.section-meta{font-size:17px;line-height:1.55}.section-updated{font-family:var(--font-mono);font-size:12px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:clamp(32px,4vw,56px);display:flex}.section-head .section-heading{max-width:720px}.section-meta-link{min-height:44px;color:var(--fg);align-items:center;gap:6px;font-size:14px;font-weight:500;display:inline-flex}.site-header{z-index:50;background:var(--nav-bg);border-bottom:1px solid var(--line);position:sticky;top:0}.site-nav{height:var(--header-height);justify-content:space-between;align-items:center;gap:24px;display:flex}.brand{letter-spacing:-.01em;min-height:44px;color:var(--fg);flex-shrink:0;align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.brand__mark{background:var(--accent);border-radius:2px;flex-shrink:0;width:10px;height:10px;display:inline-block}.nav-links{align-items:center;gap:36px;font-size:14px;display:flex}.nav-links a{min-height:44px;color:var(--muted);transition:color var(--duration-micro) var(--ease-out);align-items:center;display:inline-flex;position:relative}.nav-links a:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform var(--duration-micro) var(--ease-out);position:absolute;bottom:8px;left:0;right:0;transform:scaleX(0)}.nav-links a:hover{color:var(--fg)}.nav-links a:hover:after{transform:scaleX(1)}.nav-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.nav-social{align-items:center;gap:8px;display:flex}.icon-btn{border:1px solid var(--line);border-radius:var(--radius-md);width:36px;height:36px;color:var(--fg);cursor:pointer;transition:border-color var(--duration-micro) var(--ease-out), color var(--duration-micro) var(--ease-out);background:0 0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.icon-btn .btn__icon,.icon-btn .icon{width:16px;height:16px}.theme-icon{display:none}[data-theme=light] .theme-icon--moon,:root:not([data-theme]) .theme-icon--moon,[data-theme=dark] .theme-icon--sun{display:block}.menu-toggle,.mobile-menu{display:none}.menu-icon{flex-direction:column;justify-content:space-between;width:16px;height:12px;display:flex}.menu-icon span{width:100%;height:1.5px;transition:transform var(--duration-micro) var(--ease-out), translate var(--duration-micro) var(--ease-out);background:currentColor}.menu-toggle[aria-expanded=true] .menu-icon span:first-child{transform:rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-icon span:last-child{transform:rotate(-45deg)}.hero{padding:clamp(48px,7.2vw,104px) 0 0}.hero>.container{flex-direction:column;gap:28px;display:flex}.hero__eyebrow,.hero__title,.hero__row,.hero__stats{animation:rise var(--duration-enter) var(--ease-out) both}.hero__title{animation-delay:80ms}.hero__row{animation-delay:.16s}.hero__stats{animation-delay:.24s}.hero__eyebrow{font-family:var(--font-mono);letter-spacing:.125em;text-transform:uppercase;color:var(--accent);margin:0;font-size:12px}.hero__title{letter-spacing:-.038em;margin:0;font-size:clamp(44px,6.4vw,92px);font-weight:600;line-height:1.02}.hero__title span{display:block}.hero__row{flex-direction:column;gap:24px;display:flex}.hero__lead{color:var(--muted);text-wrap:pretty;max-width:600px;margin:0;font-size:clamp(17px,1.5vw,21px);line-height:1.55}.hero__actions{flex-direction:column;gap:20px;display:flex}.hero__ctas{flex-direction:column;gap:12px;display:flex}.hero__social{gap:8px;display:flex}.hero__stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;margin-top:20px;display:flex}.hero__stat{flex-direction:column;gap:8px;padding:20px 0;display:flex}.hero__stat+.hero__stat{border-top:1px solid var(--line)}.hero__stat p{margin:0}.hero__stat-value{letter-spacing:-.03em;font-size:32px;font-weight:600;line-height:1.3}.hero__stat-value--compact{font-size:24px}.hero__stat-label{font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:11px}@media (width>=960px){.hero>.container{gap:48px}.hero__eyebrow{margin-bottom:-16px}.hero__row{flex-direction:row;justify-content:space-between;align-items:flex-end;gap:64px}.hero__ctas{flex-direction:row}.hero__stats{flex-direction:row;margin-top:0}.hero__stat{flex:1;padding:32px 0 32px 32px}.hero__stat:first-child{padding-left:0}.hero__stat+.hero__stat{border-top:0;border-left:1px solid var(--line)}.hero__stat-value{letter-spacing:-.023em;font-size:44px;line-height:1.3}.hero__stat-value--compact{font-size:26px;line-height:1.9}}.btn{border-radius:var(--radius-md);min-height:44px;transition:opacity var(--duration-micro) var(--ease-out), border-color var(--duration-micro) var(--ease-out), color var(--duration-micro) var(--ease-out), transform var(--duration-micro) var(--ease-out);justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--fg);color:var(--bg);border:1px solid #0000}.btn--primary:hover{color:var(--bg);opacity:.88}.btn--secondary{background:var(--bg);color:var(--fg);border:1px solid var(--line)}.btn--secondary:hover{border-color:var(--fg);color:var(--fg)}.btn:hover .icon{transform:translate(2px)}.icon{transition:transform var(--duration-micro) var(--ease-out)}.btn__icon{flex-shrink:0;width:16px;min-width:16px;height:16px;display:block;overflow:visible}.about{flex-direction:column;gap:28px;display:flex}.about__heading{max-width:380px}.about__body{color:var(--muted);flex-direction:column;gap:22px;font-size:16px;line-height:1.55;display:flex}.about__body p{text-wrap:pretty;margin:0}.about__body .about__lead{color:var(--fg);font-size:clamp(19px,1.7vw,24px);font-weight:500;line-height:1.4}.about__tags{flex-direction:column;gap:8px;padding-top:12px;display:flex}.chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--line);border-radius:var(--radius-pill);font-family:var(--font-mono);color:var(--fg);padding:6px 12px;font-size:12px;line-height:16px}@media (width>=960px){.about{flex-direction:row;gap:96px}.about>div:first-child{flex:0 0 380px}.about__body{flex:1;gap:22px;max-width:664px;font-size:18px}}.impact-grid{grid-template-columns:1fr;gap:16px;display:grid}@media (width>=760px){.impact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.impact-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:20px;padding:24px;display:flex}.impact-card__bar{background:var(--accent);width:28px;height:3px}.impact-card__label{font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:11px}.impact-card__metric{letter-spacing:-.033em;flex-wrap:wrap;align-items:flex-end;column-gap:12px;font-size:clamp(36px,4.2vw,60px);font-weight:600;line-height:1;display:flex}.impact-card__unit{letter-spacing:0;color:var(--muted);font-size:clamp(16px,1.4vw,20px);font-weight:400;line-height:1.3}.impact-card__text{color:var(--muted);text-wrap:pretty;margin:0;font-size:15px;line-height:1.55}@media (width>=960px){.impact-card{padding:36px}}.principles-list{border-bottom:1px solid var(--line)}.principle{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr);gap:10px;padding:24px 0;display:grid}.principle__num{font-family:var(--font-mono);color:var(--accent);font-size:13px}.principle__title{letter-spacing:-.015em;margin:0;font-size:18px;font-weight:600}.principle__text{color:var(--muted);text-wrap:pretty;margin:0;font-size:15px;line-height:1.55}@media (width>=960px){.principle{grid-template-columns:56px minmax(0,440px) minmax(0,1fr);align-items:center;column-gap:32px;padding:28px 0}.principle__num{font-size:14px}.principle__title{letter-spacing:-.014em;font-size:22px}.principle__text{font-size:17px}}.projects-grid{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}@media (width>=760px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card--featured{grid-column:1/-1}}.project-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);transition:border-color var(--ease-card), transform var(--ease-card);flex-direction:column;display:flex;position:relative;overflow:hidden}.project-card--linkable{cursor:pointer}.project-card:hover,.project-card:focus-within{border-color:var(--accent)}.project-card:hover{transform:translateY(-2px)}.project-card__media{aspect-ratio:16/9;background-color:var(--surface);background-image:repeating-linear-gradient(135deg, var(--line) 0 1px, transparent 1px 9px);border-bottom:1px solid var(--line);justify-content:center;align-items:center;display:flex;overflow:hidden}.project-card__media--mark{aspect-ratio:auto;height:88px;min-height:88px}.project-card__media picture,.project-card__media img{width:100%;height:100%}.project-card__media img{object-fit:cover;object-position:top center}.project-card__mark{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:13px}.project-card--featured .project-card__mark{color:var(--accent)}.project-card__body{flex-direction:column;flex:1;gap:14px;padding:22px;display:flex}.project-card__top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-card__title-group{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.project-card__title{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:600;line-height:1.3}.project-card--featured .project-card__title{letter-spacing:-.018em;font-size:28px}.project-card__primary{color:inherit;text-decoration:none}.project-card__primary:after{content:"";z-index:1;position:absolute;inset:0}.project-card__external{color:var(--muted);transition:color var(--ease);margin-top:5px}.project-card:hover .project-card__external,.project-card:focus-within .project-card__external{color:var(--accent)}.project-card__status{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:var(--radius-pill);white-space:nowrap;padding:3px 9px;font-size:10px;line-height:13px}.project-card__status--live{color:var(--accent);background:var(--accent-soft);border-color:#0000}.project-card__desc{color:var(--muted);text-wrap:pretty;flex:1;margin:0;font-size:16px;line-height:1.55}.project-card__tech{font-family:var(--font-mono);color:var(--fg);margin:0;font-size:12px}.project-card__links{border-top:1px solid var(--line);gap:18px;margin-top:4px;padding-top:8px;display:flex}.project-card__links a{z-index:2;min-height:44px;font-family:var(--font-mono);transition:color var(--ease);align-items:center;gap:4px;font-size:13px;display:inline-flex;position:relative}.project-card__link--muted{color:var(--muted)}.project-card__links a:hover{color:var(--accent)}@media (width>=960px){.project-card__body{padding:30px}.project-card--featured{flex-direction:row}.project-card--featured .project-card__media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--line);flex:0 0 46%}.project-card--featured .project-card__body{justify-content:space-between;gap:24px}}.exploration-grid{grid-template-columns:minmax(0,1fr);gap:0 64px;display:grid}.exploration{border-top:1px solid var(--line);flex-direction:column;gap:14px;padding:28px 0 32px;display:flex}.exploration__icon{color:var(--accent)}.exploration__title{letter-spacing:-.014em;margin:0;font-size:22px;font-weight:600;line-height:1.3}.exploration__text{color:var(--muted);text-wrap:pretty;margin:0;font-size:16px;line-height:1.55}@media (width>=760px){.exploration-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.writing-list{border-bottom:1px solid var(--line);flex-direction:column;display:flex}.writing-item{border-top:1px solid var(--line);color:var(--fg);grid-template-columns:minmax(0,1fr);gap:8px;padding:24px 0;display:grid}.writing-item:hover{color:var(--fg)}.writing-item__date{font-family:var(--font-mono);color:var(--muted);font-size:13px}.writing-item__text{flex-direction:column;gap:8px;min-width:0;display:flex}.writing-item__title{letter-spacing:-.017em;transition:color var(--ease);margin:0;font-size:clamp(20px,1.7vw,24px);font-weight:600;line-height:1.25}.writing-item__excerpt{color:var(--muted);text-wrap:pretty;max-width:760px;margin:0;font-size:16px;line-height:1.55}.writing-item__arrow{color:var(--muted);display:none}.writing-item:hover .writing-item__title,.writing-item:hover .writing-item__arrow{color:var(--accent)}.writing-empty{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0}.writing-empty p{color:var(--muted);text-wrap:pretty;max-width:52ch;margin:0 0 16px;font-size:16px;line-height:1.55}@media (width>=760px){.writing-item{grid-template-columns:130px minmax(0,1fr) 22px;align-items:center;gap:40px;padding:30px 0}.writing-item__arrow{display:block}}.section--contact{padding-bottom:clamp(40px,5vw,64px)}.section--contact>.container{flex-direction:column;gap:28px;display:flex}.contact__heading{letter-spacing:-.036em;margin:0;font-size:clamp(48px,6.7vw,96px);font-weight:600;line-height:1}.contact__text{color:var(--muted);text-wrap:pretty;max-width:640px;margin:0;font-size:clamp(18px,1.6vw,22px);line-height:1.55}.contact__actions{flex-direction:column;gap:16px;display:flex}.contact__social{gap:8px;display:flex}@media (width>=760px){.section--contact>.container{gap:36px}.contact__actions{flex-direction:row;align-items:center}}@media (width<=759px){.contact__actions .btn{min-height:48px}.contact__social .icon-btn,.hero__social .icon-btn{width:44px;height:44px}}.legal{padding-top:clamp(48px,8vw,96px);padding-bottom:clamp(72px,10vw,120px)}.legal__back{min-height:44px;font-family:var(--font-mono);color:var(--muted);align-items:center;margin-bottom:clamp(48px,8vw,88px);font-size:13px;display:inline-flex}.legal__content{max-width:720px}.legal__title{letter-spacing:-.035em;max-width:15ch;margin:0;font-size:clamp(38px,6vw,64px);line-height:1.05}.legal__updated{font-family:var(--font-mono);color:var(--faint);margin:20px 0 0;font-size:12px}.legal__intro{color:var(--muted);margin:40px 0 0;font-size:clamp(18px,2.2vw,22px);line-height:1.55}.legal__content section{border-top:1px solid var(--line);margin-top:48px;padding-top:24px}.legal__content h2{letter-spacing:-.02em;margin:0 0 16px;font-size:22px}.legal__content section p{color:var(--muted);margin:0 0 16px;font-size:16px;line-height:1.7}.legal__content section p:last-child{margin-bottom:0}.legal__content section a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.site-footer{font-family:var(--font-mono);color:var(--muted);padding-bottom:48px;font-size:12px}.site-footer:not(.site-footer--dark){padding-top:48px}.site-footer__inner{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:28px;display:flex}.site-footer__link{width:fit-content;min-height:44px;color:var(--muted);transition:color var(--duration-micro) var(--ease-out);align-items:center;display:inline-flex}.site-footer__link:hover{color:var(--accent)}@media (width>=760px){.site-footer__inner{flex-direction:row;justify-content:space-between;align-items:center;gap:24px}.site-footer__link{min-height:0}}@media (width<=900px){.nav-links,.nav-social{display:none}.icon-btn{width:44px;height:44px}.menu-toggle{display:inline-flex}html.menu-open{overflow:hidden}.mobile-menu:not([hidden]){height:calc(100dvh - var(--header-height));padding:24px var(--page-pad) 32px;background:var(--bg);flex-direction:column;justify-content:space-between;display:flex;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.mobile-menu__links a{border-bottom:1px solid var(--line);letter-spacing:-.03em;justify-content:space-between;align-items:center;min-height:72px;font-size:32px;font-weight:600;display:flex}.mobile-menu__links .icon{color:var(--muted)}.mobile-menu__label{align-items:center;gap:16px;display:flex}.mobile-menu__num{font-family:var(--font-mono);letter-spacing:0;color:var(--accent);font-size:13px;font-weight:400}.mobile-menu__footer{flex-direction:column;gap:20px;display:flex}.mobile-menu__social{gap:8px;display:flex}.mobile-menu__email{font-family:var(--font-mono);font-size:13px}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translate(0,0)}}html.js-motion .reveal{opacity:0;transform:translateY(12px)}html.js-motion .reveal.is-in{opacity:1;transition:opacity var(--duration-enter) var(--ease-out), transform var(--duration-enter) var(--ease-out);transform:translate(0,0)}html.js-motion .projects-grid .reveal:first-child.is-in{transition-delay:0s}html.js-motion .projects-grid .reveal:nth-child(2).is-in{transition-delay:.1s}html.js-motion .projects-grid .reveal:nth-child(3).is-in{transition-delay:.2s}html.js-motion .projects-grid .reveal:nth-child(4).is-in{transition-delay:.3s}html.js-motion .projects-grid .reveal:nth-child(5).is-in{transition-delay:.4s}html.js-motion .project-card.reveal.is-in:hover{transition:opacity var(--duration-enter) var(--ease-out), transform var(--ease-card), border-color var(--ease-card);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.hero__eyebrow,.hero__title,.hero__row,.hero__stats{opacity:1;transform:none;animation:none!important}html.js-motion .reveal{opacity:1;transform:none}.btn:hover,.btn:hover .icon,.project-card:hover{transform:none}}
