:root{color:#1d1d1f;font-synthesis:none;text-rendering:optimizelegibility;--ink:#1d1d1f;--muted:#6e6d68;--paper:#f5f3ee;--line:#1d1d1f24;--accent:#1557d4;--mono:ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, monospace;background:#f5f3ee;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}a{color:inherit;text-decoration:none}button{font:inherit}::selection{color:#fff;background:#1d1d1f}.site-shell{flex-direction:column;min-height:100vh;display:flex}.page-frame{width:min(1180px,100% - 80px);margin-inline:auto}.site-header{justify-content:space-between;align-items:center;height:112px;display:flex}.wordmark{letter-spacing:-.045em;font-size:1.12rem;font-weight:600}.wordmark-dot{color:var(--accent);transform-origin:50% 85%;display:inline-block}.wordmark:hover .wordmark-dot,.wordmark:focus-visible .wordmark-dot{animation:.62s cubic-bezier(.2,.8,.25,1) dot-hop}.site-nav{align-items:center;gap:36px;display:flex}.site-nav a{color:var(--muted);font-size:.86rem;transition:color .2s}.site-nav a:hover,.site-nav a.active{color:var(--ink)}.hero{isolation:isolate;flex-direction:column;justify-content:space-between;min-height:680px;padding:118px 0 102px;display:flex;position:relative}.hero>:not(.star-field){z-index:1;position:relative}.star-field{z-index:0;pointer-events:none;opacity:1;display:block;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 4% 94%,#0000);mask-image:linear-gradient(#0000,#000 4% 94%,#0000)}.eyebrow{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.69rem}.hero h1{letter-spacing:-.075em;margin:30px 0 72px;font-size:clamp(3.7rem,8.25vw,7.7rem);font-weight:500;line-height:.96}.hero h1 span{color:#989791}.hero-foot{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-end;padding-top:24px;display:flex}.hero-foot>p{color:#4f4e4a;max-width:520px;margin:0;font-size:1.08rem;line-height:1.6}.text-link{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding-bottom:3px;font-size:.85rem;font-weight:600;display:inline-flex;position:relative}.text-link:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .32s cubic-bezier(.22,.75,.23,1);position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.text-link:hover:after,.text-link:focus-visible:after{transform:scaleX(1)}.arrow{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px;transition:transform .28s cubic-bezier(.2,.8,.25,1)}a:hover .arrow{transform:translate(2px,-2px)}.section{border-top:1px solid var(--line);padding:112px 0}.section-heading{justify-content:space-between;align-items:baseline;margin-bottom:42px;display:flex}.section-heading h2{font-size:.78rem;font-weight:500;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;margin:0}.project-grid{grid-template-columns:1fr 1fr;gap:22px;display:grid}.project-card,.motion-card{--tilt-x:0deg;--tilt-y:0deg;--glint-x:50%;--glint-y:50%}.project-card{display:block}.project-art{place-items:center;height:420px;display:grid;overflow:hidden}.project-art,.work-art{transform:perspective(900px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transform-style:preserve-3d;will-change:transform;transition:border-radius .4s cubic-bezier(.22,.75,.23,1),transform .18s ease-out;position:relative;overflow:hidden}.project-art:before,.work-art:before{content:"";pointer-events:none;background:radial-gradient(circle at var(--glint-x) var(--glint-y), #fff3, transparent 38%);opacity:0;transition:opacity .35s;position:absolute;inset:0}.project-art:after,.work-art:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(105deg,#0000 36%,#ffffff0d 44%,#ffffff57 50%,#ffffff0d 56%,#0000 64%);position:absolute;inset:-25%;transform:translate(-85%)skew(-8deg)}.project-art span,.work-art span{letter-spacing:-.08em;z-index:1;font-size:8rem;font-weight:500;transition:transform .35s cubic-bezier(.2,.8,.25,1);position:relative;transform:translateZ(18px)}.blue .project-art,.work-art.blue{color:#dfeaff;background:#2867d8}.sand .project-art,.work-art.sand{color:#352b20;background:#d9c4a5}.ink .project-art,.work-art.ink{color:#f5f3ee;background:#242426}.project-card-copy{justify-content:space-between;align-items:flex-start;gap:20px;padding:22px 2px 0;display:flex}.project-number{font-family:var(--mono);color:var(--muted);margin:0 0 14px;font-size:.65rem}.project-card h3{letter-spacing:-.025em;margin:0 0 7px;font-size:1.18rem;font-weight:500}.project-card-copy p:last-child{color:var(--muted);margin:0;font-size:.85rem}.split-section{grid-template-columns:1fr 3fr;gap:40px;display:grid}.about-copy{max-width:825px}.large-copy{letter-spacing:-.055em;margin:0 0 70px;font-size:clamp(2rem,4vw,3.7rem);line-height:1.13}.body-copy{grid-template-columns:1fr 1fr;gap:50px;display:grid}.body-copy p{color:#55544f;margin:0;font-size:.95rem;line-height:1.75}.post-list{border-top:1px solid var(--line)}.post-row{border-bottom:1px solid var(--line);grid-template-columns:170px 1fr auto;align-items:center;gap:30px;min-height:132px;transition:padding .25s;display:grid}.post-row:hover{padding-inline:12px}.post-row time{font-family:var(--mono);color:var(--muted);text-transform:uppercase;font-size:.66rem}.post-row h3,.post-row h2{letter-spacing:-.025em;margin:0 0 8px;font-size:1.25rem;font-weight:500}.post-row p{color:var(--muted);margin:0;font-size:.84rem}.inner-page{padding:104px 0 140px}.narrow-page{max-width:940px}.page-intro{max-width:780px;margin-bottom:120px}.page-intro h1{letter-spacing:-.07em;margin:24px 0 30px;font-size:clamp(3.4rem,7vw,6.4rem);font-weight:500;line-height:1}.page-intro>p:last-child{max-width:585px;color:var(--muted);font-size:1.05rem;line-height:1.65}.work-list{border-top:1px solid var(--line)}.work-item{border-bottom:1px solid var(--line);grid-template-columns:1.15fr 1fr;align-items:center;gap:8%;padding:80px 0;display:grid}.work-art{aspect-ratio:1.25;place-items:center;display:grid}.work-copy h2{letter-spacing:-.05em;margin:0 0 8px;font-size:2.25rem;font-weight:500}.work-summary{color:#3f3e3a;margin:0 0 28px;font-size:1.1rem}.work-copy>p:not(.project-number,.work-summary){color:var(--muted);max-width:480px;font-size:.9rem;line-height:1.7}.tag-list{flex-wrap:wrap;gap:7px;margin:28px 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--line);font-family:var(--mono);text-transform:uppercase;border-radius:999px;padding:7px 11px;font-size:.6rem}.writing-list .post-row{grid-template-columns:145px 1fr auto;min-height:170px}.writing-list .post-row span{font-family:var(--mono);color:var(--muted);text-transform:uppercase;margin-top:14px;font-size:.62rem;display:block}.article-page{max-width:760px;padding:60px 0 140px}.back-link{font-family:var(--mono);color:var(--muted);gap:8px;font-size:.67rem;display:inline-flex}.article-header{border-bottom:1px solid var(--line);padding:92px 0 70px}.article-meta{font-family:var(--mono);color:var(--muted);text-transform:uppercase;gap:18px;font-size:.64rem;display:flex}.article-header h1{letter-spacing:-.065em;margin:25px 0;font-size:clamp(3rem,7vw,5.4rem);font-weight:500;line-height:1.02}.article-header>p{color:var(--muted);max-width:650px;font-size:1.15rem;line-height:1.6}.prose{color:#33322f;padding:65px 0;font-family:Georgia,Times New Roman,serif;font-size:1.12rem;line-height:1.83}.prose p{margin:0 0 1.55em}.prose h2{letter-spacing:-.035em;color:var(--ink);margin:2.5em 0 .8em;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1.6rem;font-weight:600}.article-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-top:30px;display:flex}.article-footer p{color:var(--muted);margin:0;font-size:.85rem}.resume-header{grid-template-columns:1fr auto;gap:50px;padding-bottom:80px;display:grid}.resume-header h1{letter-spacing:-.07em;margin:22px 0 10px;font-size:clamp(3.6rem,7vw,6.5rem);font-weight:500;line-height:1}.resume-title{color:var(--muted);font-size:1.05rem}.resume-contact{flex-direction:column;align-items:flex-start;gap:8px;padding-top:38px;font-size:.8rem;display:flex}.resume-contact p{color:var(--muted);margin:0}.resume-contact a{border-bottom:1px solid var(--line)}.email-label{color:var(--muted)}.print-button{border:0;border-bottom:1px solid var(--ink);cursor:pointer;background:0 0;align-items:center;gap:7px;margin-top:18px;padding:0 0 3px;font-size:.75rem;font-weight:600;display:flex}.resume-section{border-top:1px solid var(--line);grid-template-columns:1fr 3fr;gap:40px;padding:50px 0;display:grid}.resume-section>h2,.resume-columns h2{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.68rem;font-weight:500}.resume-profile{letter-spacing:-.025em;max-width:770px;margin:0;font-size:1.45rem;line-height:1.5}.experience-item{grid-template-columns:150px 1fr;gap:25px;margin-bottom:45px;display:grid}.experience-item:last-child{margin-bottom:0}.experience-item>p{font-family:var(--mono);color:var(--muted);margin:4px 0;font-size:.63rem}.experience-item h3{margin:0;font-size:1rem;font-weight:600}.experience-item .company{color:var(--ink);margin:3px 0 16px}.experience-item p{color:var(--muted);margin:0;font-size:.85rem;line-height:1.6}.experience-item .product-link{color:#4e4d49;text-underline-offset:.22em;-webkit-text-decoration:underline #1d1d1f3d;text-decoration:underline #1d1d1f3d;text-decoration-thickness:1px;transition:color .2s,text-decoration-color .2s}.experience-item .product-link:hover,.experience-item .product-link:focus-visible{color:var(--accent);text-decoration-color:currentColor}.resume-columns{grid-template-columns:repeat(2,1fr);gap:70px}.resume-columns h2{margin-bottom:18px}.resume-columns p{color:var(--muted);margin:0;font-size:.84rem;line-height:1.65}.linkedin-link{color:var(--ink);align-items:center;gap:7px;margin-top:4px;display:inline-flex;border-bottom:0!important}.linkedin-link .linkedin-mark{width:22px;height:22px}.not-found{min-height:70vh;padding:120px 0}.not-found h1{letter-spacing:-.07em;margin:24px 0;font-size:clamp(4rem,9vw,8rem);font-weight:500}.not-found>p:not(.eyebrow){color:var(--muted);margin-bottom:40px}.route-loader{min-height:70vh;padding-top:2px;overflow:hidden}.route-loader span{background:var(--ink);width:30%;height:1px;animation:.8s ease-in-out infinite alternate route-loading;display:block}@keyframes route-loading{0%{transform:translate(-100%)}to{transform:translate(430%)}}.route-view{animation:.4s cubic-bezier(.22,.75,.23,1) both route-arrive}.reading-progress{z-index:100;opacity:0;pointer-events:none;height:2px;transition:opacity .2s;position:fixed;top:0;left:0;right:0}.reading-progress.is-active{opacity:1}.reading-progress span{background:var(--accent);transform-origin:0;width:100%;height:100%;display:block}.site-footer{border-top:1px solid var(--line);min-height:130px;color:var(--muted);justify-content:space-between;align-items:center;margin-top:auto;font-size:.7rem;display:flex}.status-dot{background:#3b9b5f;border-radius:50%;width:6px;height:6px;margin-right:9px;display:inline-block;box-shadow:0 0 0 4px #3b9b5f1a}.site-footer.is-visible .status-dot{animation:1s cubic-bezier(.2,.8,.25,1) .35s both status-awake}.footer-links{gap:26px;display:flex}.footer-links a:hover{color:var(--ink)}.footer-email{white-space:nowrap}.social-mark-link{align-items:center;display:inline-flex}.linkedin-mark{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.linkedin-mark circle{fill:currentColor;stroke:none}.reveal{animation:.8s cubic-bezier(.22,.75,.23,1) both reveal}.reveal-delay-1{animation-delay:80ms}.reveal-delay-2{animation-delay:.16s}.scroll-reveal{opacity:0;transition:opacity .72s cubic-bezier(.22,.75,.23,1),transform .72s cubic-bezier(.22,.75,.23,1);transition-delay:var(--reveal-delay,0s);transform:translateY(14px)}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-stagger-1{--reveal-delay:60ms}.reveal-stagger-2{--reveal-delay:.12s}.reveal-stagger-3{--reveal-delay:.18s}@keyframes reveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes dot-hop{0%,to{text-shadow:0 0 #1557d400;transform:translateY(0)scale(1)}18%{transform:translateY(0)scaleX(1.35)scaleY(.68)}45%{text-shadow:0 6px 12px #1557d438;transform:translateY(-7px)scaleX(.86)scaleY(1.14)}70%{transform:translateY(1px)scaleX(1.12)scaleY(.9)}84%{transform:translateY(-1px)scale(.98,1.04)}}@keyframes card-glint{0%{opacity:0;transform:translate(-85%)skew(-8deg)}24%{opacity:.8}to{opacity:0;transform:translate(85%)skew(-8deg)}}@keyframes status-awake{0%,to{transform:scale(1);box-shadow:0 0 0 4px #3b9b5f1a}35%{transform:scale(.72);box-shadow:0 0 0 2px #3b9b5f14}62%{transform:scale(1.15);box-shadow:0 0 0 9px #3b9b5f00}}@keyframes route-arrive{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes route-dissolve{0%{opacity:1}to{opacity:0}}::view-transition-old(root){animation:.14s ease-out both route-dissolve}::view-transition-new(root){animation:.32s cubic-bezier(.22,.75,.23,1) both route-arrive}@media (hover:hover) and (pointer:fine){.project-card:hover .project-art{transform:perspective(900px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) scale(.99);border-radius:22px}.work-item:hover .work-art{border-radius:18px}.motion-card:hover .project-art:before,.motion-card:hover .work-art:before{opacity:.58}.motion-card:hover .project-art:after,.motion-card:hover .work-art:after{animation:.85s cubic-bezier(.2,.75,.25,1) both card-glint}.motion-card:hover .project-art span,.motion-card:hover .work-art span{transform:translateZ(26px)scale(1.025)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.scroll-reveal{opacity:1;transform:none}.project-art,.work-art,.project-card:hover .project-art{transform:none}.project-art:before,.project-art:after,.work-art:before,.work-art:after{display:none}.star-field{opacity:.8}}@media (max-width:760px){.page-frame{width:min(100% - 36px,620px)}.site-header{height:82px}.site-nav{gap:20px}.site-nav a{font-size:.76rem}.hero{min-height:auto;padding:80px 0 76px}.hero h1{margin:24px 0 60px;font-size:clamp(3.2rem,15vw,5.2rem)}.hero-foot{flex-direction:column;align-items:flex-start;gap:28px}.section{padding:76px 0}.project-grid{grid-template-columns:1fr;gap:55px}.project-art{aspect-ratio:1.1;height:auto}.project-art span,.work-art span{font-size:5.5rem}.split-section{grid-template-columns:1fr;gap:38px}.large-copy{margin-bottom:45px}.body-copy{grid-template-columns:1fr;gap:22px}.post-row,.writing-list .post-row{grid-template-columns:1fr auto;gap:15px;min-height:145px;padding:22px 0}.post-row time{grid-column:1/-1}.post-row:hover{padding-inline:0}.inner-page{padding:70px 0 100px}.page-intro{margin-bottom:80px}.page-intro h1{font-size:clamp(3.2rem,15vw,5.5rem)}.work-item{grid-template-columns:1fr;gap:36px;padding:55px 0}.work-copy h2{font-size:1.9rem}.article-page{padding-top:35px}.article-header{padding:70px 0 55px}.prose{padding:50px 0;font-size:1.06rem}.resume-header{grid-template-columns:1fr;gap:5px;padding-bottom:60px}.resume-header h1{font-size:4rem}.resume-contact{padding-top:25px}.resume-section{grid-template-columns:1fr;gap:28px}.resume-profile{font-size:1.25rem}.experience-item{grid-template-columns:1fr;gap:8px}.resume-columns{grid-template-columns:1fr;gap:40px}.site-footer{flex-direction:column;align-items:flex-start;gap:24px;padding:35px 0}}@media print{.site-header,.site-footer,.print-button,.reading-progress{display:none}:root,body{background:#fff}.resume-page{width:100%;padding:30px}.resume-header h1{font-size:4rem}.resume-section{break-inside:avoid}}
