@font-face{font-family:IBM Plex Mono;src:url(/static/dist/ibm-plex-mono-400-c36f509c0a8f.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(/static/dist/ibm-plex-mono-500-a76f53ca6612.woff2) format("woff2");font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;src:url(/static/dist/newsreader-latin-2cda546725d1.woff2) format("woff2");font-style:normal;font-weight:400 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;src:url(/static/dist/schibsted-grotesk-latin-e3b56e90510a.woff2) format("woff2");font-style:normal;font-weight:400 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--sans: "Schibsted Grotesk", "Helvetica Neue", Arial, sans-serif;--display: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--serif: var(--display);--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--heading-weight: 550}:root{color-scheme:light;--paper: #f6f8fb;--surface: #ffffff;--raised: #ffffff;--preview-mat: #e7edf3;--ink: #183044;--muted: #4b6172;--caption: #586b7c;--accent: #194062;--secondary: #436780;--line: #dce5ec;--sage: #4e6a5b;--positive: #315c45;--positive-surface: #eaf2ec;--positive-line: #bfd1c3;--warning: #785521;--warning-surface: #f7efde;--warning-line: #dac8a5;--negative: #923c4b;--negative-surface: #f8e9ee;--negative-line: #e4bcc6;--presence-online: #2e9e5e;--presence-offline: #7d8b97}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ink) 22%,transparent) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink) 22%,transparent);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ink) 38%,transparent)}::-webkit-scrollbar-corner{background:transparent}@media(forced-colors:active){*{scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,::-webkit-scrollbar-track,::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover,::-webkit-scrollbar-corner{all:revert}}html{--header-height: 92px;--header-compact-height: 64px;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px)}body{margin:0;background:var(--paper);background-image:radial-gradient(circle,color-mix(in srgb,var(--accent) 8%,transparent) 1px,transparent 1.15px);background-size:24px 24px;color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}:is(.past-project-copy,.experience-section,.background-section,.case-chapters,.resume-document){position:relative;isolation:isolate}:is(.past-project-copy,.experience-section,.background-section,.case-chapters,.resume-document):before{content:"";position:absolute;inset:var(--texture-fade-top, 0px) -20px -24px;z-index:-1;pointer-events:none;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--paper) 58%,transparent) 18%,color-mix(in srgb,var(--paper) 84%,transparent) 48%,color-mix(in srgb,var(--paper) 88%,transparent) 82%,transparent);mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 20px),transparent)}.experience-section,.background-section{--texture-fade-top: 96px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);line-height:1.2;font-weight:var(--heading-weight, 550)}a{color:inherit;text-decoration:none}button{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img,svg{display:block;max-width:100%}[hidden]{display:none!important}::selection{background:color-mix(in srgb,var(--accent) 18%,var(--paper));color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px;border-radius:3px}main:focus{outline:0}.wrap{width:min(1140px,calc(100% - 80px));margin-inline:auto}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.icon{flex-shrink:0;width:20px;height:20px}.eyebrow{font-size:13px;color:var(--secondary)}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.serif{font-family:var(--serif);font-weight:400}.skip-link{position:fixed;left:20px;top:-80px;padding:12px 20px;z-index:20;background:var(--ink);color:var(--paper)}.skip-link:focus{top:12px}.site-header{min-height:var(--header-height);margin-bottom:0;position:sticky;top:0;z-index:10;background:var(--paper);transition:min-height .28s cubic-bezier(.2,.65,.3,1),margin-bottom .28s cubic-bezier(.2,.65,.3,1),box-shadow .28s ease}.site-header-inner{min-height:inherit;display:flex;align-items:center;gap:16px}.site-header.is-scrolled{min-height:var(--header-compact-height);margin-bottom:calc(var(--header-height) - var(--header-compact-height));box-shadow:0 8px 24px color-mix(in srgb,var(--ink) 6%,transparent)}.wordmark{display:inline-flex;align-items:center;flex-shrink:0;min-height:44px;font-family:var(--display);font-size:22px;font-weight:500;line-height:1.2;letter-spacing:-.025em;white-space:nowrap;transition:color .18s ease}.wordmark:hover{color:var(--accent)}.main-navigation{display:flex;gap:30px;margin-left:auto}.main-navigation a{display:flex;align-items:center;min-height:44px;color:var(--muted);font-size:13px;transition:color .18s ease}.main-navigation a:hover{color:var(--ink)}.menu-toggle{display:none;color:var(--ink);background:transparent;border:1px solid var(--line);width:44px;height:44px;align-items:center;justify-content:center;border-radius:6px}.hero{padding-block:87px 95px}.hero .eyebrow{margin-bottom:14px}.hero h1{font-size:clamp(36px,4vw,48px);font-weight:var(--heading-weight, 550);letter-spacing:-.045em;line-height:1.12}.hero-intro{margin-top:18px;color:var(--muted);font-size:17px}.hero-copy{animation:appear .6s ease both}@keyframes appear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px}.section-heading h2{font-size:29px;letter-spacing:-1px}.text-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;font-size:13px;font-weight:500}.text-link .icon{width:17px;height:17px;color:var(--secondary)}.text-link:hover{color:var(--accent)}.work-section{position:relative;isolation:isolate;background:var(--paper)}.work-section:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--paper);box-shadow:0 0 0 100vmax var(--paper);clip-path:inset(0 -100vmax)}.work-toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);margin-bottom:30px}.project-filters{display:flex;gap:26px;min-width:0;overflow-x:auto;scrollbar-width:none}.project-filters::-webkit-scrollbar{display:none}.project-filters a{display:inline-flex;align-items:center;flex-shrink:0;min-height:44px;padding-bottom:12px;color:var(--muted);font-size:13px;position:relative;white-space:nowrap}.project-filters a:focus-visible{outline-offset:-1px}.all-works-link{flex-shrink:0;margin-left:auto;padding-bottom:12px;white-space:nowrap}.project-filters a[aria-current]{color:var(--ink)}.project-filters a[aria-current]:after{content:"";height:2px;background:var(--accent);position:absolute;bottom:0;left:0;right:0}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;row-gap:56px}.project-card-featured{grid-column:1 / -1}.project-card,.project-copy{min-width:0}.project-image-link{display:block;border-radius:12px}.project-image,.case-visual{padding:24px;border:1px solid var(--line);background:var(--preview-mat);border-radius:12px;overflow:hidden}.dashboard-preview{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:var(--surface);border-radius:5px}.project-screen-placeholder{display:none}.project-image .dashboard-preview{transition:transform .35s ease}.project-image-link:hover .dashboard-preview{transform:scale(1.012)}.project-gallery{min-width:0}.project-screen-track{position:relative;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-inline:contain;border-radius:5px}.js-ready .project-screen-track{scrollbar-width:none}.js-ready .project-screen-track::-webkit-scrollbar{display:none}.project-screen{flex:0 0 100%;min-width:0;margin:0;scroll-snap-align:start;scroll-snap-stop:always}.project-screen figcaption{margin-top:12px;color:var(--muted);font-size:12px;line-height:20px}.project-screen-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:8px}.case-visual .project-screen-controls{margin-top:0;margin-bottom:14px}.case-visual .project-screen-arrow{width:44px;height:44px}.case-visual .project-screen-dot{width:32px;height:44px}.project-image .project-screen figcaption{padding-inline:18px}.project-image .project-screen-controls{padding:0 18px 12px}.project-screen-count{color:var(--caption);font-size:11px}.project-screen-navigation,.project-screen-dots{display:flex;align-items:center;gap:4px}.project-screen-navigation{gap:8px}.project-screen-arrow{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:50%;transition:border-color .18s ease,color .18s ease}.project-screen-arrow:hover{color:var(--accent);border-color:var(--accent)}.project-screen-arrow .icon{width:16px;height:16px}.previous-screen-icon{transform:rotate(180deg)}.project-screen-dot{display:flex;align-items:center;justify-content:center;width:28px;height:40px;padding:0;background:transparent;border:1px solid transparent;border-radius:4px}.project-screen-dot span{width:5px;height:5px;background:var(--caption);border-radius:50%}.project-screen-dot[aria-current=true] span{width:16px;background:var(--accent);border-radius:3px}.project-screen-dot:hover span{background:var(--accent)}.project-screen-track:focus-visible,.project-screen-arrow:focus-visible,.project-screen-dot:focus-visible,.project-screen .project-image-link:focus-visible{outline:1px solid var(--accent);outline-offset:-1px}.project-caption{margin-top:22px}.project-caption h3{font-size:23px;font-weight:var(--heading-weight, 550);letter-spacing:-.7px}.project-caption p{max-width:680px;margin-top:8px;font-size:14px;line-height:1.65;color:var(--muted)}.project-story{display:grid;gap:18px;margin:24px 0 0}.project-story dt{font-size:12px;font-weight:600}.project-story dd{margin:6px 0 0;color:var(--muted);font-size:14px;line-height:1.65}.project-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 18px;margin-top:24px;padding-top:12px;border-top:1px solid var(--line)}.project-meta{margin:0;padding-left:14px;color:var(--secondary);font-size:11px}.project-meta li+li{margin-top:3px}.project-case-link{font-size:12px}.project-title-link:hover{color:var(--accent)}.project-arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;transition:border-color .18s ease}.project-arrow:hover{color:var(--accent);border-color:var(--accent)}.project-results[aria-busy=true]{opacity:.6}.empty-state{padding:30px 0}.section-space{padding-block:96px 0}.experience-intro{max-width:610px;color:var(--muted);font-size:15px;margin-bottom:24px}.sample-caption{color:var(--caption);font-size:12px;margin-block:12px 20px}.timeline{border-top:1px solid var(--line)}.experience-row{border-bottom:1px solid var(--line)}.experience-row>summary{display:grid;grid-template-columns:190px 1fr 24px;align-items:center;gap:24px;padding:24px 0;cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.experience-period{color:var(--muted);font-size:12px}.experience-title{display:flex;flex-wrap:wrap;gap:6px 20px;align-items:baseline}.experience-title strong{font-size:16px;font-weight:550}.experience-title>span{color:var(--muted);font-size:13px}.expand-icon{color:var(--muted)}details[open]>summary .expand-icon,.case-chapters details[open]>summary>.icon{transform:rotate(45deg)}.experience-body{max-width:700px;margin-left:214px;padding-bottom:26px;color:var(--muted);font-size:14px}.experience-body ul{padding-left:19px;margin-block:14px 20px}.experience-body li{margin-top:6px}.tags{display:flex;flex-wrap:wrap;gap:8px}.tags>span{padding:4px 9px;border:1px solid var(--line);border-radius:4px;color:var(--muted);font-size:11px;line-height:1.5}.contact-section{display:flex;flex-direction:column;gap:28px;padding-block:76px}.contact-section h2{font-size:clamp(32px,4vw,48px);letter-spacing:-1.7px}.contact-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.contact-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.contact-link{display:grid;grid-template-columns:190px minmax(0,1fr) 20px;align-items:center;gap:24px;padding-block:22px}.contact-label{font-size:15px;font-weight:500;transition:color .18s ease}.contact-value{color:var(--muted);font-size:14px;overflow-wrap:anywhere}.contact-link .icon{width:18px;height:18px;color:var(--secondary);transition:color .18s ease,transform .18s ease}.contact-link:hover .contact-label,.contact-link:hover .icon{color:var(--accent)}.contact-link:hover .icon{transform:translate(3px)}.copy-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:transparent;color:var(--secondary);border:1px solid transparent;border-radius:6px;cursor:pointer;transition:color .18s ease,border-color .18s ease}.copy-button:hover{color:var(--accent);border-color:var(--line)}.copy-button .icon{width:18px;height:18px}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:100px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.footer-links{display:flex;gap:26px}.footer-links a{min-height:44px;display:flex;align-items:center}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px);padding:14px 22px;max-width:min(480px,calc(100% - 32px));width:max-content;border:1px solid var(--line);border-radius:8px;background:var(--raised);box-shadow:0 8px 32px color-mix(in srgb,var(--ink) 8%,transparent);font-size:13px;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;z-index:30}.toast.visible{opacity:1;transform:translate(-50%)}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:11px 18px;border:1px solid transparent;border-radius:6px;font-size:13px;font-weight:600}.button-dark{background:var(--accent);color:var(--paper)}.button-dark:hover{filter:brightness(1.1)}.button-outline{border-color:var(--line);color:var(--ink);background:transparent}.button-outline:hover{border-color:var(--muted)}.case-study{padding-block:44px 0}.breadcrumb{display:flex;gap:12px;font-size:12px;color:var(--muted)}.breadcrumb a:hover{color:var(--accent)}.case-heading{margin-block:38px 32px;max-width:820px}.case-heading h1{font-size:clamp(38px,5vw,64px);letter-spacing:-.055em}.case-heading p{color:var(--muted);margin-top:18px}.case-toolbar{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:24px}.case-toolbar .tags{margin-right:auto}.case-chapters{margin-block:48px;border-top:1px solid var(--line)}.case-chapters details{border-bottom:1px solid var(--line)}.case-chapters summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:23px;list-style:none;cursor:pointer}.case-chapters h2{font-size:20px;letter-spacing:-.5px}.case-chapters details>p{max-width:780px;color:var(--muted);font-size:15px;padding-bottom:24px}.architecture-list{margin:0 0 24px;padding-left:22px;color:var(--muted);font-size:14px}.architecture-list li{margin-bottom:8px}.next-project{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:60px;padding:16px 0 34px}.next-project strong{display:block;font-size:30px;letter-spacing:-1px;margin-top:10px}.next-project:hover strong{color:var(--accent)}.resume-page{padding-block:36px 64px}.resume-toolbar,.resume-toolbar>div{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.resume-toolbar{justify-content:space-between;margin-bottom:32px}.resume-document{max-width:920px;margin-inline:auto;padding:60px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.resume-document header{padding-bottom:30px;border-bottom:1px solid var(--line)}.resume-document header h1{margin-block:12px;font-size:42px;letter-spacing:-1.8px}.resume-document p,.resume-document li{color:var(--muted);font-size:14px}.resume-document header p{margin-top:6px;overflow-wrap:anywhere}.resume-document header .resume-role{color:var(--ink);font-size:17px}.resume-document header .resume-demo{margin-top:20px;color:var(--caption);font-size:12px}.resume-document section{margin-top:32px}.resume-document h2{font-size:21px;margin-bottom:18px}.resume-role-block+.resume-role-block,.resume-project+.resume-project{margin-top:26px}.resume-role-block>div{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 16px}.resume-document h3{font-size:15px;font-weight:var(--heading-weight, 550)}.resume-role-block .mono{font-size:11px;color:var(--muted)}.resume-role-block p,.resume-project p{margin-top:8px}.resume-project h3>span{font-weight:400;color:var(--muted);font-size:11px;display:block;margin-top:5px}.resume-document ul{padding-left:19px}.not-found{padding-block:90px 120px}.not-found h1{margin-top:24px;font-size:clamp(40px,6vw,70px);letter-spacing:-2px}.not-found p{margin-block:24px;color:var(--muted)}@media(min-width:960px){.project-card-featured{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:center;gap:40px}.project-card-featured .project-caption{margin-top:0}.project-card-featured .project-caption h3{font-size:29px}.project-card-featured .project-caption>p:last-child{font-size:15px}}@media(max-width:800px){.wrap{width:calc(100% - 48px)}.main-navigation{gap:20px}.hero{padding-block:79px 87px}.contact-link{grid-template-columns:150px minmax(0,1fr) 20px;gap:16px}.project-grid{gap:36px 22px}.experience-row>summary{grid-template-columns:150px 1fr 20px;gap:16px}.experience-title{flex-direction:column}.experience-body{margin-left:166px}.resume-document{padding:36px}}@media(max-width:640px){html{--header-height: 78px;--header-compact-height: 60px}.wrap{width:calc(100% - 40px)}.site-header-inner{flex-wrap:wrap;column-gap:12px}.site-header:has(.main-navigation.is-open){margin-bottom:0}.menu-toggle{display:flex;margin-left:auto}.main-navigation{order:4;display:flex;flex-basis:100%;margin:0;gap:16px;justify-content:space-between;padding-bottom:14px}.main-navigation a{font-size:12px}.js-ready .main-navigation{display:none}.js-ready .main-navigation.is-open{display:flex}.hero{padding-block:75px 81px}.hero h1{font-size:clamp(30px,8vw,36px)}.hero .eyebrow{font-size:12px;margin-bottom:14px}.hero-intro{max-width:310px;margin-top:16px;font-size:14px}.section-heading{gap:12px;margin-bottom:18px}.section-heading h2{font-size:24px}.section-heading .text-link{font-size:12px;gap:6px}.work-toolbar{gap:12px;margin-bottom:22px}.project-filters{gap:12px}.project-filters a{font-size:12px}.all-works-link{font-size:12px;gap:6px}.project-grid{grid-template-columns:1fr;row-gap:44px}.project-image,.case-visual{padding:12px}.project-image,.case-visual,.project-image-link{border-radius:8px}.project-caption{margin-top:20px}.project-caption h3{font-size:21px}.project-caption p{font-size:13px;margin-top:6px}.project-story{gap:16px;margin-top:20px}.project-story dd{font-size:13px}.project-footer{margin-top:20px}.project-arrow{width:40px;height:40px}.section-space{padding-top:60px}.experience-section,.background-section{--texture-fade-top: 60px}.experience-intro{font-size:14px}.experience-row>summary{grid-template-columns:1fr 20px;column-gap:12px;row-gap:7px;padding-block:20px}.experience-period{grid-column:1;font-size:11px}.experience-title{grid-column:1}.experience-title strong{font-size:15px}.expand-icon{grid-column:2;grid-row:1 / 3}.experience-body{margin-left:0;font-size:13px}.contact-section{padding-block:54px;gap:20px}.contact-link{grid-template-columns:minmax(0,1fr) 20px;column-gap:12px;row-gap:4px;padding-block:16px}.contact-label{font-size:14px}.contact-value{font-size:13px}.contact-link .icon{grid-column:2;grid-row:1 / 3}.site-footer{min-height:94px;gap:12px;font-size:11px}.footer-links{gap:16px}.case-study{padding-top:30px}.case-heading{margin-block:26px}.case-heading p{font-size:14px;margin-top:14px}.case-toolbar{gap:10px 20px}.case-toolbar .tags{flex-basis:100%}.case-chapters{margin-block:30px}.case-chapters h2{font-size:18px}.case-chapters details>p{font-size:14px}.next-project strong{font-size:26px}.resume-toolbar>div{gap:10px}.resume-document{padding:24px 20px}.resume-document header h1{font-size:32px}}@media(scripting:enabled){.project-screen-placeholder{display:block}.project-screen-controls[hidden]{display:flex!important;visibility:hidden}}@media(max-width:640px)and (scripting:enabled){.main-navigation:not(.is-open){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media print{:root{color-scheme:light;--paper: #fff;--surface: #fff;--ink: #111;--muted: #333;--caption: #444;--secondary: #333;--line: #ddd}body{font-size:11pt;background:#fff}.site-header,.site-footer,.resume-toolbar,.toast,.skip-link{display:none!important}.resume-page{width:100%;padding:0}.resume-document{padding:0;border:0;max-width:none}.resume-document header h1{font-size:28pt}.resume-document section{margin-top:20px}.resume-document p,.resume-document li{font-size:10pt}.resume-role-block,.resume-project{break-inside:avoid}a{text-decoration:none}@page{margin:18mm}}@media print,(forced-colors:active){:is(.work-section,.past-project-copy,.experience-section,.background-section,.case-chapters,.resume-document):before{content:none}}:focus-visible{outline-width:1px}input:not([type=radio]):not([type=checkbox]):focus-visible,textarea:focus-visible,select:focus-visible{border:1px solid var(--accent);outline:0;box-shadow:none}.hero-intro{max-width:650px}.hero h1{color:var(--accent)}.project-image,.case-visual,.project-arrow,.resume-document{border:0}.project-image{padding:0;border:1px solid var(--line);background:var(--surface);box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}.project-image .dashboard-preview{border-radius:0}.resume-document{background:transparent}.tags{gap:8px 18px}.tags>span{padding:2px 0;border:0}.timeline{border-top:0}.experience-intro{margin-bottom:12px}.experience-detail{max-width:610px;margin-bottom:32px;color:var(--muted);font-size:14px}.past-project{border-bottom:1px solid var(--line)}.past-project>summary{display:grid;grid-template-columns:minmax(0,1fr) 190px 24px;align-items:center;gap:24px;padding-block:22px;cursor:pointer;list-style:none}.past-project>summary strong{font-size:16px;font-weight:550}.past-project-kind{color:var(--muted);font-size:12px}.past-project-body{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:32px;padding-block:8px 32px}.past-project-body>picture{display:block;min-width:0}.past-project-body img{display:block;width:100%;height:auto;border-radius:6px}.past-project-copy p{color:var(--muted);font-size:14px}.past-project-copy p+p{margin-top:16px}.past-project-copy .tags{margin-top:20px}.background-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:80px}.background-grid h3{font-size:16px;line-height:1.5;font-weight:550}.background-grid p{margin-top:12px;color:var(--muted);font-size:14px}.practice .tags{margin-top:24px;align-items:center}.education+.education{margin-top:28px}.credentials{margin-top:28px}.credentials>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:16px;border-bottom:1px solid var(--line);list-style:none;font-size:14px;cursor:pointer}.credential-count{margin-left:8px;font-size:11px;color:var(--caption)}.credentials ul{list-style:none;margin:0;padding:8px 0 0}.credential-link{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px}.credential-link strong{display:block;font-size:13px;font-weight:500}.credential-link>span>span{display:block;margin-top:4px;font-size:11px;color:var(--muted)}.credential-link .icon{width:16px;height:16px;color:var(--muted)}.credential-link:hover strong{color:var(--accent)}.presence-button{position:fixed;left:24px;bottom:24px;z-index:15;display:grid;place-items:center;width:52px;height:52px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--raised);color:var(--accent);box-shadow:0 8px 24px color-mix(in srgb,var(--ink) 10%,transparent);transition:transform .18s ease,box-shadow .18s ease}.presence-button:hover{transform:translateY(-2px);box-shadow:0 12px 28px color-mix(in srgb,var(--ink) 14%,transparent)}.presence-button .icon{width:26px;height:26px}.presence-dot{position:relative;flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--presence-offline);forced-color-adjust:none}.presence-dot.presence-online{background:var(--presence-online);box-shadow:0 0 0 3px color-mix(in srgb,var(--presence-online) 20%,transparent)}.presence-dot.presence-online:after{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--presence-online);animation:presence-pulse 2.4s ease-out infinite}@keyframes presence-pulse{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(2.6)}}.presence-button>.presence-dot{position:absolute;top:2px;right:2px;width:12px;height:12px;border:2px solid var(--raised);box-sizing:content-box}.presence-button>.presence-dot.presence-online{box-shadow:none}.presence-panel{position:fixed;inset:auto auto 88px 24px;width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 120px);overflow:auto;margin:0;padding:18px 22px 6px;border:1px solid var(--line);border-radius:12px;background:var(--raised);color:var(--ink);box-shadow:0 16px 48px color-mix(in srgb,var(--ink) 14%,transparent)}.presence-panel:popover-open{animation:presence-open .18s ease-out}@keyframes presence-open{0%{opacity:0;transform:translateY(8px)}}.presence-header{display:flex;align-items:center;gap:14px;padding-bottom:14px}.presence-header h2{font-size:21px;letter-spacing:-.4px}.presence-status{display:inline-flex;align-items:center;gap:8px;margin-right:auto;color:var(--secondary);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.presence-close{display:grid;place-items:center;width:40px;height:40px;margin:-8px -10px -8px 0;padding:0;border:0;border-radius:6px;background:transparent;color:var(--secondary);transition:color .18s ease}.presence-close:hover{color:var(--accent)}.presence-close .icon{width:18px;height:18px}.presence-empty{padding-block:16px;border-top:1px solid var(--line);color:var(--muted);font-size:14px}.pastimes{margin:0;padding:0;list-style:none}.pastime{border-top:1px solid var(--line)}.pastime-link{display:grid;grid-template-columns:52px minmax(0,1fr) 18px;align-items:start;gap:16px;padding-block:16px}.pastime-cover{display:flex;align-items:center;justify-content:center;aspect-ratio:3 / 4;border-radius:6px;color:var(--paper);background:var(--accent) radial-gradient(circle,color-mix(in srgb,var(--paper) 22%,transparent) 1px,transparent 1.15px) 0 0 / 8px 8px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--paper) 14%,transparent)}.pastime-cover .icon{width:22px;height:22px}.pastime-poster{display:block;aspect-ratio:auto;background:var(--line)}.pastime-poster img{display:block;width:100%;height:auto;border-radius:inherit}.pastime-kind{display:flex;align-items:center;gap:10px;color:var(--secondary);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.pastime-signal{display:inline-flex;align-items:flex-end;gap:2px;height:10px}.pastime-signal>span{width:2px;height:100%;border-radius:1px;background:var(--sage);transform-origin:bottom;animation:pastime-level 1.1s ease-in-out infinite alternate}.pastime-signal>span:nth-child(1){transform:scaleY(.5);animation-delay:-.6s}.pastime-signal>span:nth-child(2){animation-delay:-.2s}.pastime-signal>span:nth-child(3){transform:scaleY(.7);animation-delay:-.9s}@keyframes pastime-level{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}.pastime-title{display:block;margin-top:6px;font-family:var(--display);font-size:19px;font-weight:var(--heading-weight, 550);line-height:1.2;letter-spacing:-.4px;transition:color .18s ease}.pastime-detail{display:block;margin-top:4px;color:var(--muted);font-size:12.5px}.pastime-note{display:block;margin-top:8px;color:var(--muted);font-size:13px;line-height:1.55}.pastime-link>.icon{align-self:center;width:18px;height:18px;color:var(--secondary);transition:color .18s ease,transform .18s ease}a.pastime-link:hover .pastime-title,a.pastime-link:hover>.icon{color:var(--accent)}a.pastime-link:hover>.icon{transform:translate(3px)}@supports not selector(:popover-open){.presence{display:none}}.site-footer{padding-left:max(0px,calc(92px - ((100vw - min(1140px,100vw - 80px))/2)))}.resume-document section>p+p{margin-top:8px}.resume-credential{margin-top:18px}.resume-credential p{margin-top:5px}.resume-credential a:hover{color:var(--accent)}.page-navigation{display:flex;align-items:center;justify-content:space-between;gap:16px 32px;padding-top:26px;color:var(--muted);font-size:12px}.page-back{display:inline-flex;align-items:center;gap:10px;min-height:44px;flex-shrink:0}.page-back>span:first-child{font-size:18px;line-height:1}.page-navigation a:hover{color:var(--ink)}.breadcrumbs{display:flex;align-items:center;flex-wrap:wrap;gap:0;list-style:none;padding:0;margin:0}.breadcrumbs li{display:flex;align-items:center;min-width:0}.breadcrumbs li+li:before{content:"/";margin-inline:12px;color:var(--caption)}.breadcrumbs a{display:inline-flex;align-items:center;min-height:44px}.breadcrumbs [aria-current]{color:var(--ink);overflow-wrap:anywhere}.main-navigation a[aria-current]{color:var(--ink);text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;text-decoration-color:var(--caption)}.page-navigation+.case-study{padding-top:18px}.page-navigation+.case-study .case-heading{margin-top:12px}.page-navigation+.resume-page{padding-top:24px}.page-navigation+.app-directory{padding-top:28px}.resume-toolbar{justify-content:flex-end}@media(max-width:800px){.background-grid{gap:40px}.site-footer{padding-left:68px}.past-project-body{gap:24px}}@media(max-width:640px){.page-navigation{flex-wrap:wrap;align-items:center;gap:0 16px;padding-top:16px}.page-navigation>nav{min-width:0;max-width:100%;margin-left:auto}.breadcrumbs{font-size:11px}.breadcrumbs li+li:before{margin-inline:10px}.page-navigation+.case-study{padding-top:12px}.page-navigation+.app-directory{padding-top:20px}.hero-intro{max-width:34ch}.past-project>summary{grid-template-columns:minmax(0,1fr) 20px;gap:5px 16px}.past-project-kind{grid-column:1;font-size:11px}.past-project>summary .expand-icon{grid-column:2;grid-row:1 / 3}.past-project-body,.background-grid{grid-template-columns:minmax(0,1fr)}.background-grid{gap:40px}.past-project-copy p{font-size:13px}.presence-button{left:16px;bottom:16px;width:48px;height:48px}.presence-button .icon{width:24px;height:24px}.presence-panel{inset:auto auto 76px 16px;padding-inline:18px}.site-footer{padding-left:56px}}@media(forced-colors:active){:focus-visible{outline:1px solid Highlight}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:1px solid Highlight;outline-offset:2px}}@media print{.page-navigation,.presence{display:none!important}.resume-credential{break-inside:avoid}}
