@layer view{:root{--ink:#111b2c;--muted:#505c6e;--blue:#1428e8;--paper:#fff;--wash:#f0f3f8;--line:#d8dfe9;--max:1240px;color:var(--ink);background:var(--paper);font-synthesis:none;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}img{max-width:100%;display:block}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline-offset:6px;outline:3px solid #ff9e00}[hidden]{display:none!important}::selection{color:var(--ink);background:#dce3ff}.wrap{width:min(var(--max),calc(100% - 96px));margin-inline:auto}.header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;padding-block:26px;display:flex}.brand{align-items:center;gap:13px;font-size:1rem;font-weight:700;display:flex}.monogram{background:var(--blue);color:#fff;letter-spacing:-2px;padding:7px 9px 9px;font-size:1.5rem}.header nav{gap:32px;font-size:.9375rem;display:flex}.header nav a{padding-block:10px}.header nav a:hover,.text-link:hover{color:var(--blue)}.skip-link{background:var(--blue);color:#fff;z-index:10;padding:16px;position:fixed;top:10px;left:20px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.eyebrow,.section-label{text-transform:uppercase;letter-spacing:.07em;font:400 .8125rem/1.5 Courier New,monospace}.hero{padding-top:40px}.hero>.eyebrow{color:var(--muted);justify-content:space-between;display:flex}h1{letter-spacing:-.065em;margin:38px 0 36px;font-size:clamp(4rem,9.5vw,8.5rem);font-weight:600;line-height:1.02}h1 span{color:var(--blue)}.hero-bottom{grid-template-columns:1fr 1fr;align-items:start;gap:80px;display:grid}.hero-focus{letter-spacing:-.025em;margin:0;font-size:clamp(1.5rem,2.5vw,2.2rem);line-height:1.2}.hero-intro p{max-width:55ch;color:var(--muted);margin:0 0 12px;font-size:1.0625rem;line-height:1.65}.actions{flex-wrap:wrap;align-items:center;gap:26px;margin-top:24px;display:flex}.button{background:var(--ink);color:#fff;align-items:center;gap:32px;padding:17px 20px;font-size:.9375rem;display:inline-flex}.button:hover{background:var(--blue)}.text-link{border-bottom:1px solid;align-items:center;gap:20px;padding:8px 0;font-size:.9375rem;font-weight:600;display:inline-flex}.tech-line{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:54px;padding:24px 0;font:400 .875rem/1.5 Courier New,monospace;display:flex}.project-section{background:var(--wash);padding:65px 0 70px}.section-label{color:var(--muted);justify-content:space-between;gap:16px;display:flex}.section-heading{justify-content:space-between;align-items:end;gap:36px;margin:28px 0 36px;display:flex}h2{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,3.2vw,3.25rem);font-weight:500;line-height:1.15}.section-heading>p{color:var(--muted);max-width:32ch;margin:0;font-size:1rem;line-height:1.6}.project-cover{background:var(--ink);padding:24px 24px 0;display:block}.project-cover img{width:100%;height:auto}.cover-caption{color:#fff;justify-content:space-between;gap:16px;padding:22px 0;font-size:.9375rem;display:flex}.project-cover:hover .cover-caption{text-underline-offset:5px;text-decoration:underline}.project-intro{border-bottom:1px solid #c4ccd9;grid-template-columns:1.3fr 1fr;gap:80px;padding:28px 0 54px;display:grid}.project-intro>p{max-width:65ch;margin:0;font-size:1.0625rem;line-height:1.7}.project-tags{flex-wrap:wrap;place-content:start end;gap:8px;display:flex}.project-tags span{border:1px solid #b9c3d4;padding:8px 11px;font:400 .8125rem/1.4 Courier New,monospace}.case-study{padding-top:54px;scroll-margin-top:28px}.case-header{grid-template-columns:1.3fr 1fr;align-items:end;gap:80px;display:grid}.case-header .eyebrow{color:var(--blue);margin:0 0 18px}.case-header h3{letter-spacing:-.035em;margin:0;font-size:clamp(1.75rem,3vw,2.75rem);font-weight:500;line-height:1.2}.status-note{border-left:3px solid var(--blue);color:var(--muted);margin:0;padding:2px 0 2px 20px;font-size:.9375rem;line-height:1.6}.status-note strong{color:var(--ink);font-weight:600}.case-columns{grid-template-columns:repeat(3,1fr);gap:40px;padding:42px 0;display:grid}.case-columns h4,.detail-content h4{margin:0 0 12px;font-size:1rem}.case-columns p,.detail-content p{color:var(--muted);margin:0;font-size:1rem;line-height:1.7}.comparison-head{border-top:1px solid #c4ccd9;justify-content:space-between;align-items:center;gap:25px;margin-bottom:22px;padding-top:34px;display:flex}.comparison-head h4{letter-spacing:-.02em;margin:0 0 7px;font-size:1.375rem;font-weight:500}.comparison-head p{color:var(--muted);margin:0;font-size:.9375rem;line-height:1.5}.device-switch{border:1px solid #a4afc0;flex-shrink:0;padding:4px;display:flex}.device-switch button{color:var(--ink);cursor:pointer;background:0 0;border:0;min-height:44px;padding:11px 18px;font-size:.875rem}.device-switch button[aria-pressed=true]{background:var(--ink);color:#fff}.comparison-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.comparison-grid figure{min-width:0;margin:0}.comparison-grid figcaption{background:#fff;gap:15px;padding:14px 16px;font-size:.875rem;display:flex}.comparison-grid figcaption span{color:var(--blue);font-family:Courier New,monospace}.comparison-grid img{background:#e0e4eb;width:100%;height:auto}.comparison-grid.mobile{max-width:750px;margin-inline:auto}.comparison-rationale{max-width:90ch;margin:24px 0 16px;font-size:1rem;line-height:1.7}.source-note{color:var(--muted);max-width:110ch;margin:0;font-size:.8125rem;line-height:1.65}.source-note code{font-size:.8125rem}.technical-details{border-top:1px solid #c4ccd9;border-bottom:1px solid #c4ccd9;margin-top:32px}.technical-details summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:24px 0;font-size:1.0625rem;list-style:none;display:flex}.technical-details summary::-webkit-details-marker{display:none}.technical-details summary span{color:var(--blue);font-size:1.6rem}.technical-details[open] summary span{transform:rotate(45deg)}.detail-content{grid-template-columns:repeat(3,1fr);gap:40px;padding:0 0 28px;display:grid}.case-end{justify-content:space-between;align-items:center;gap:30px;padding-top:28px;display:flex}.case-end>span{color:var(--muted);font-size:.875rem;line-height:1.6}.experience{padding-block:75px}.experience-layout{grid-template-columns:1fr 1fr;gap:100px;margin-top:34px;display:grid}.experience-title>p{max-width:37ch;color:var(--muted);margin:24px 0;font-size:1.0625rem;line-height:1.7}.timeline article{border-top:1px solid var(--line);padding:24px 0 28px}.timeline article:first-child{border:0;padding-top:0}.period{color:var(--blue);margin:0 0 9px;font:.875rem/1.5 Courier New,monospace}.timeline h3{letter-spacing:-.025em;margin:0 0 7px;font-size:1.375rem;font-weight:500}.employer{margin:0 0 14px;font-size:.9375rem;font-weight:600}.timeline article>p:last-child{color:var(--muted);margin:0;font-size:1rem;line-height:1.7}.skills{border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:24px;margin-top:34px;padding-top:30px;display:grid}.skills h3{margin:0 0 14px;font-size:1rem;font-weight:600}.skills p{color:var(--muted);margin:0;font-size:.9375rem;line-height:1.75}.contact{background:var(--blue);color:#fff;padding:58px 0}.contact .section-label{color:#d5dcff}.contact-heading{justify-content:space-between;align-items:end;gap:35px;margin:28px 0 40px;display:flex}.contact-heading p{color:#e5e9ff;margin:0;font-size:1rem;line-height:1.7}.email{letter-spacing:-.035em;overflow-wrap:anywhere;border-top:1px solid #7681ff;border-bottom:1px solid #7681ff;justify-content:space-between;gap:15px;padding:22px 0;font-size:clamp(1.5rem,4.6vw,4rem);line-height:1.25;display:flex}.email span{flex-shrink:0}.email:hover{text-underline-offset:8px;text-decoration:underline}.contact-links{flex-wrap:wrap;gap:32px;margin-top:30px;font-size:1rem;display:flex}.contact-links a{padding:8px 0}.contact-links a:hover{text-underline-offset:5px;text-decoration:underline}.footer{color:var(--muted);justify-content:space-between;align-items:center;gap:22px;padding-block:27px;font-size:.8125rem;line-height:1.5;display:flex}.project-history{border-top:1px solid #c4ccd9;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:38px;padding-top:28px;display:grid}.project-history>div>span{color:var(--blue);font:400 2rem/1.2 Courier New,monospace}.project-history h4{margin:12px 0 9px;font-size:1.125rem}.project-history p{overflow-wrap:anywhere;color:var(--muted);max-width:50ch;margin:0;font-size:1rem;line-height:1.65}@media (width<=620px){.project-history{grid-template-columns:1fr;gap:25px}}@media (width>=1500px){.hero{padding-top:50px}.hero h1{margin-top:50px}}@media (width<=900px){.wrap{width:calc(100% - 48px)}.hero-bottom,.project-intro,.case-header{gap:36px}.experience-layout{gap:48px}.case-columns,.detail-content{gap:24px}.section-heading{align-items:start}.skills{grid-template-columns:1fr 1fr;row-gap:28px}.contact-heading{display:block}.contact-heading p{margin-top:24px}.header nav{gap:22px}}@media (width<=620px){.wrap{width:calc(100% - 36px)}.header{flex-wrap:wrap;gap:12px;padding-block:18px}.brand{gap:9px;font-size:.875rem}.monogram{font-size:1.25rem}.header nav{gap:18px;font-size:.875rem}.header nav a{align-items:center;min-height:44px;display:inline-flex}.hero{padding-top:27px}.hero>.eyebrow{flex-wrap:wrap;gap:16px;font-size:.75rem}.hero h1{letter-spacing:-.055em;margin:30px 0;font-size:clamp(3.35rem,14vw,5.2rem)}.hero-bottom{grid-template-columns:1fr;gap:24px}.hero-focus{font-size:1.625rem}.hero-intro p{font-size:1rem}.actions{gap:22px}.button{gap:24px;padding:16px 18px}.tech-line{grid-template-columns:1fr 1fr;gap:14px;margin-top:36px;font-size:.8125rem;display:grid}.project-section{padding:40px 0}.section-label{flex-wrap:wrap;gap:8px;font-size:.75rem}.section-heading{margin:22px 0 26px;display:block}.section-heading p{margin-top:20px}.project-cover{padding:8px 8px 0}.cover-caption{gap:16px;padding:16px 4px;font-size:.8125rem;line-height:1.5}.project-intro{grid-template-columns:1fr;gap:24px;padding:24px 0 34px}.project-tags{justify-content:start}.project-intro>p{font-size:1rem}.case-study{padding-top:34px}.case-header{grid-template-columns:1fr;gap:24px}.case-header h3{font-size:2rem}.case-columns,.detail-content{grid-template-columns:1fr;gap:24px}.case-columns{padding:30px 0}.comparison-head{flex-direction:column;align-items:start;gap:16px;padding-top:26px}.comparison-grid{grid-template-columns:1fr;gap:18px}.comparison-grid.mobile{grid-template-columns:1fr 1fr;gap:10px}.comparison-grid.mobile figcaption{flex-direction:column;gap:6px;min-height:62px;padding:10px;font-size:.8125rem}.comparison-rationale{font-size:.9375rem}.case-end{flex-direction:column;align-items:start;gap:16px}.experience{padding-block:45px}.experience-layout{grid-template-columns:1fr;gap:32px;margin-top:24px}.skills{grid-template-columns:1fr 1fr;gap:28px 16px;margin-top:16px}.skills p{font-size:.875rem}.contact{padding:35px 0}.contact-heading{margin:24px 0}.contact-heading h2{font-size:2rem}.contact-heading p{font-size:.9375rem}.email{gap:8px;padding:20px 0;font-size:clamp(1.25rem,5.8vw,2rem)}.contact-links{gap:25px}.footer{flex-wrap:wrap;justify-content:start;gap:12px 24px}.footer a{margin-left:auto}.footer span:nth-child(2){flex-basis:100%;order:3}.status-note{font-size:.875rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.header,.actions,.device-switch,.contact,.footer,.cv-link,.case-end{display:none!important}.wrap{width:100%}body{color:#000}.hero h1{font-size:48px}.project-section{background:#fff}.project-cover{background:#fff;padding:0}.cover-caption{color:#000}.comparison-grid{grid-template-columns:1fr 1fr}a{text-decoration:underline}.experience,.project-section{padding-block:24px}.technical-details{display:none}}.archive-details{margin:0 0 34px}.archive-content{padding-bottom:24px}.archive-content>p:first-child{max-width:85ch;color:var(--muted);font-size:1rem;line-height:1.7}.archive-content figure{margin:22px 0}.archive-content img{width:100%;height:auto}.archive-content figcaption{padding-top:13px;font-size:.875rem;line-height:1.5}.archive-content a{text-underline-offset:3px;text-decoration:underline}.creative-thumb{flex:0 0 220px;display:block}.creative-thumb img{border:1px solid var(--line);width:100%;height:auto}@media (width<=1000px){.creative-note{flex-wrap:wrap}}@media (width<=620px){.creative-thumb{flex:auto;width:100%;max-width:360px}}.selected-projects{padding-block:65px 12px}.selected-grid{grid-template-columns:1fr 1fr;gap:28px;display:grid}.selected-card{border-top:2px solid var(--blue);background:var(--wash);flex-direction:column;min-width:0;padding:27px 28px 30px;display:flex}.project-kind{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 16px;font:.75rem/1.5 Courier New,monospace}.selected-card h3,.creative-note h3{letter-spacing:-.03em;margin:0 0 16px;font-size:1.6rem;font-weight:500}.selected-card>p:not(.project-kind),.creative-note p:not(.project-kind){color:var(--muted);margin:0;font-size:1rem;line-height:1.7}.skill-tags{flex-wrap:wrap;gap:8px;margin:23px 0 26px;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--line);background:#fff;padding:6px 10px;font-size:.8125rem;line-height:1.5}.selected-card .text-link{align-self:start;margin-top:auto}.creative-note{border-block:1px solid var(--line);justify-content:space-between;align-items:center;gap:35px;margin-top:28px;padding:30px 0;display:flex}.creative-note .text-link{flex-shrink:0}.creative-note h3{margin-bottom:8px;font-size:1.25rem}.creative-note .project-kind{margin-bottom:10px}@media (width<=620px){.selected-projects{padding-top:40px}.selected-grid{grid-template-columns:1fr;gap:20px}.selected-card{padding:23px 21px}.creative-note{flex-direction:column;align-items:start;gap:20px}.selected-card h3{font-size:1.5rem}}.header{flex-wrap:wrap;gap:18px 32px}.header nav{gap:24px;margin-left:auto}.hero{padding-top:46px;padding-bottom:0}.hero h1{letter-spacing:-.055em;margin:30px 0;font-size:clamp(3.5rem,6.3vw,6.1rem);line-height:1.08}.hero h1 span{color:var(--ink)}.hero-bottom{grid-template-columns:.85fr 1.15fr;gap:80px}.hero-focus{font-size:clamp(1.4rem,2.1vw,2rem)}.hero-intro p{max-width:58ch}.tech-line{font-family:Arial,Helvetica,sans-serif;font-size:.9375rem}.project-section{padding-top:50px}.case-fold{border-top:1px solid #c4ccd9;margin-top:0}.case-fold>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:25px;padding:25px 0;font-size:1.0625rem;font-weight:600;list-style:none;display:flex}.case-fold>summary::-webkit-details-marker{display:none}.case-fold>summary span:last-child{color:var(--blue);font-size:1.8rem;font-weight:400}.case-fold[open]>summary span:last-child{transform:rotate(45deg)}.case-fold .case-study{padding-top:22px}.project-intro{border-bottom:0;padding-bottom:30px}.contact-heading h2{font-size:clamp(2rem,3.2vw,3rem)}.hero h1 span{letter-spacing:-.04em;color:var(--blue);font-size:.65em}.header>.view-switch{gap:4px;margin-left:0}@media (width<=1050px){.header nav:not(.view-switch){border-top:1px solid var(--line);order:3;width:100%;margin-left:0;padding-top:10px}.hero-bottom{gap:40px}}@media (width<=620px){.header{gap:15px}.header nav:not(.view-switch){border:0;order:0;gap:16px;width:auto;margin-left:auto;padding:0}.header>.view-switch{order:3;width:100%}.hero{padding-top:28px}.hero h1{margin:26px 0;font-size:clamp(2.85rem,12vw,4.6rem)}.hero-bottom{grid-template-columns:1fr;gap:20px}.hero-focus{font-size:1.5rem}.tech-line{margin-top:34px;font-size:.875rem}.case-fold>summary{padding-block:20px;font-size:1rem}}@media print{.view-switch{display:none!important}.case-fold{border:0}.case-fold>summary{display:none}.case-fold>.case-study{display:block}}.creative-categories{flex-wrap:wrap;gap:12px 22px;margin-top:18px;display:flex}.creative-categories a{color:var(--blue);text-underline-offset:4px;padding-block:6px;font-size:.8125rem;text-decoration:underline}}
