@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/_astro/dm-sans-latin-ext-wght-normal.BOFOeGcA.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/_astro/dm-sans-latin-wght-normal.Xz1IZZA0.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer reset{*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:6rem}body,h1,h2,h3,p,figure{margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;background:0 0;border:0}a{color:inherit;text-decoration:none}img,svg{display:block}img{max-width:100%}[hidden]{display:none!important}}@layer base{:root{color-scheme:light;--paper:#fafafa;--ink:#171717;--muted:#626262;--line:#dedede;--display:"Bricolage Grotesque Variable", sans-serif;--body:"DM Sans Variable", sans-serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--ease:cubic-bezier(.22, 1, .36, 1)}body{background:var(--paper);color:var(--ink);font:1rem/1.7 var(--body);-webkit-font-smoothing:antialiased}::selection{background:var(--ink);color:var(--contrast)}:focus-visible{outline-offset:5px;border-radius:.25rem;outline:2px solid}h1,h2,h3{font-family:var(--display);text-wrap:balance;font-weight:500}p,li{text-wrap:pretty}.wrap{width:min(80rem,100% - 2.5rem);margin-inline:auto}.section-space{padding-block:5rem}.eyebrow{font:.875rem/1.6 var(--mono);letter-spacing:.035em;text-transform:uppercase}.section-title{letter-spacing:-.055em;font-size:clamp(2.75rem,5.2vw,4.5rem);line-height:1.06}.section-title>span{color:var(--subtle)}.section-label{justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:2rem;display:flex}.section-index{font:.875rem/1.6 var(--mono);color:var(--muted);display:none}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.text-link{align-items:center;gap:.75rem;min-height:2.75rem;padding-block:.5rem;font-size:.9375rem;font-weight:500;display:inline-flex}.text-link svg,.resume-link svg,.social-links svg{transition:transform .22s var(--ease);flex-shrink:0}.text-link:hover svg,.resume-link:hover svg,.social-links a:hover svg{transform:translate(2px,-2px)}.button{min-height:3.25rem;transition:background .2s var(--ease), transform .2s var(--ease);border-radius:5rem;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .5rem .5rem 1.25rem;font-size:.9375rem;font-weight:500;display:inline-flex}.button>svg{background:var(--button-icon-bg);border-radius:50%;width:2.25rem;height:2.25rem;padding:.5rem}.button-dark{background:var(--ink);color:var(--contrast)}.button-dark:hover{background:var(--contrast-hover)}.button:active,.filter-button:active,.copy-email:active{transform:scale(.96)}.skip-link{z-index:40;color:#fff;background:#111;padding:.75rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-200%)}.skip-link:focus{transform:none}:root{--surface:#fff;--surface-soft:#efefef;--surface-frame:#ededed;--surface-hover:#ececec;--section-surface:#f0f0f0;--detail:#555;--subtle:#858585;--contrast:#fff;--contrast-hover:#363636;--button-icon-bg:#ffffff20;--header-bg:#fffffff0;--header-shadow:0 0 0 1px #00000007, 0 4px 8px #00000002, 0 12px 40px #00000005;--frame-outline:#00000004;--image-outline:#0000001a;--brand-backing:transparent;--theme-accent:#176449;--inverse-field:#181818;--footer-field:#151515}:root[data-theme=dark]{color-scheme:dark;--paper:#101214;--ink:#f1f3f5;--muted:#aeb6be;--line:#363e45;--surface:#191d21;--surface-soft:#20262c;--surface-frame:#272e35;--surface-hover:#303942;--section-surface:#15191d;--detail:#c3cad1;--subtle:#9ba5af;--contrast:#111518;--contrast-hover:#d5dde4;--button-icon-bg:#0000000f;--header-bg:#191d21f5;--header-shadow:0 0 0 1px #ffffff12, 0 12px 40px #00000020;--frame-outline:#ffffff0d;--image-outline:#ffffff24;--brand-backing:#fff;--theme-accent:#92dfb9;--inverse-field:#0b0e10;--footer-field:#0b0e10}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper:#101214;--ink:#f1f3f5;--muted:#aeb6be;--line:#363e45;--surface:#191d21;--surface-soft:#20262c;--surface-frame:#272e35;--surface-hover:#303942;--section-surface:#15191d;--detail:#c3cad1;--subtle:#9ba5af;--contrast:#111518;--contrast-hover:#d5dde4;--button-icon-bg:#0000000f;--header-bg:#191d21f5;--header-shadow:0 0 0 1px #ffffff12, 0 12px 40px #00000020;--frame-outline:#ffffff0d;--image-outline:#ffffff24;--brand-backing:#fff;--theme-accent:#92dfb9;--inverse-field:#0b0e10;--footer-field:#0b0e10}}}@layer components{.site-header{top:max(.5rem, env(safe-area-inset-top));z-index:30;background:var(--header-bg);width:min(80rem,100% - 1.5rem);box-shadow:var(--header-shadow);backdrop-filter:blur(16px);border-radius:1.25rem;margin:.75rem auto 0;position:sticky}.nav-wrap{justify-content:space-between;align-items:center;width:calc(100% - 2rem);height:3.5rem;display:flex}.wordmark{min-width:2.75rem;min-height:2.75rem;font:700 1.875rem/1 var(--display);letter-spacing:-.09em;align-items:center;padding-right:.5rem;display:flex}.wordmark span{color:var(--subtle)}.desktop-nav{align-items:center;gap:2rem;display:none}.desktop-nav a{align-items:center;min-height:2.75rem;font-size:.9375rem;display:inline-flex;position:relative}.desktop-nav a:after{content:"";transform-origin:100%;width:100%;height:1px;transition:transform .22s var(--ease);background:currentColor;position:absolute;bottom:.5rem;left:0;transform:scaleX(0)}.desktop-nav a:hover:after{transform-origin:0;transform:scaleX(1)}.nav-actions{align-items:center;gap:.75rem;display:flex}.resume-link{align-items:center;gap:.5rem;min-height:2.75rem;font-size:.9375rem;display:inline-flex}.resume-link[aria-current=page]{text-underline-offset:.35rem;text-decoration:underline}.menu-toggle{width:2.75rem;height:2.75rem;position:relative}.menu-toggle span{width:1.25rem;height:1.5px;transition:transform .22s var(--ease);background:currentColor;position:absolute;left:.75rem}.menu-toggle span:first-child{transform:translateY(-4px)}.menu-toggle span:last-child{transform:translateY(4px)}.menu-toggle[aria-expanded=true] span:first-child{transform:rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:rotate(-45deg)}.mobile-nav{padding:.5rem 1.5rem 1.25rem}.mobile-nav:not([hidden]){animation:menu-enter .2s var(--ease)}.mobile-nav a{font:500 1.5rem/1.3 var(--display);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.875rem 0;display:flex}.mobile-nav a span{font:.875rem var(--mono);color:var(--muted)}@keyframes menu-enter{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:none}}.hero{grid-template-columns:minmax(0,1fr);gap:2.5rem;padding-block:3.5rem 2.5rem;display:grid}.hero-intro{align-items:center;gap:.75rem;margin-bottom:1.75rem;display:flex}.hero-intro .eyebrow{max-width:23rem}.small-cross{font:1.75rem/1 var(--display)}.hero h1{letter-spacing:-.07em;margin-left:-.2rem;font-size:clamp(3.75rem,13vw,6rem);line-height:.98}.hero h1>span{color:var(--subtle)}.hero-description{max-width:32rem;color:var(--muted);margin-top:1.75rem;font-size:1.0625rem;line-height:1.8}.hero-actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:1.75rem;display:flex}.hero-footnote{align-items:flex-start;gap:.75rem;margin-top:2rem;font-size:.875rem;display:flex}.hero-footnote p>span{color:var(--muted)}.status-dot{background:var(--ink);border-radius:50%;flex-shrink:0;width:.4375rem;height:.4375rem;margin-top:.5rem}.hero-portrait{background:var(--surface-frame);box-shadow:inset 0 0 0 1px var(--frame-outline);border-radius:1.75rem;padding:.5rem}.portrait-frame{aspect-ratio:1.1;outline-offset:-1px;background:#202020;border-radius:1.25rem;outline:1px solid #0000001a;position:relative;overflow:hidden}.portrait-frame img{object-fit:cover;object-position:center 35%;filter:grayscale();width:100%;height:100%;transition:transform .6s var(--ease)}.portrait-corner{border-style:solid;border-color:#fff9;width:1rem;height:1rem;position:absolute}.corner-tl{border-width:1px 0 0 1px;top:1.25rem;left:1.25rem}.corner-br{border-width:0 1px 1px 0;bottom:1.25rem;right:1.25rem}.hero-portrait figcaption{font:.875rem/1.6 var(--mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;padding:.75rem .5rem .25rem;display:flex}.intro-enter{animation:enter .6s var(--ease) both}.enter-1{animation-delay:50ms}.enter-2{animation-delay:.1s}.enter-3{animation-delay:.15s}@keyframes enter{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:none}}.impact{border-block:1px solid var(--line);grid-template-columns:minmax(0,1fr);gap:1.5rem;padding-block:1.75rem;display:grid}.impact-intro .eyebrow{color:var(--muted);margin-bottom:.5rem}.impact-intro>p:last-child{font-size:1rem}.impact-number{align-items:center;gap:1.5rem;display:flex}.impact-number strong{font:500 2.75rem/1.1 var(--display);letter-spacing:-.055em;font-variant-numeric:tabular-nums;flex:0 0 7rem;display:block}.impact-number strong>span{font-size:.65em}.impact-number>p{overflow-wrap:anywhere;min-width:0;color:var(--muted);max-width:13rem;font-size:.9375rem}.work-heading-row{flex-direction:column;gap:1.25rem;display:flex}.work-heading-row>p{color:var(--muted);max-width:27rem;font-size:1rem}.work-controls{align-items:center;gap:1rem;margin:1.75rem 0;display:flex}.project-filters{background:var(--surface-soft);scrollbar-width:thin;border-radius:1rem;flex:1;gap:.25rem;min-width:0;max-width:100%;padding:.25rem;display:flex;overflow-x:auto}.filter-button{color:var(--muted);white-space:nowrap;min-height:2.75rem;transition:background .15s var(--ease), color .15s var(--ease), transform .15s var(--ease);border-radius:.75rem;flex:1 0 auto;justify-content:center;align-items:center;padding:.625rem .5rem;font-size:.875rem;line-height:1.5;display:inline-flex}.filter-button:focus-visible{outline-offset:-3px}.filter-button sup{font:.875rem var(--mono);margin-left:.375rem;display:none;position:static}.filter-button[aria-pressed=true]{color:var(--contrast);background:var(--ink)}.filter-button:hover:not([aria-pressed=true]){color:var(--ink);background:var(--surface-hover)}.filter-rule{background:var(--line);flex:1;height:1px;margin-inline:1rem;display:none}.work-count{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;font:.875rem/1.6 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;position:absolute;overflow:hidden}.projects-grid{grid-template-columns:minmax(0,1fr);gap:1.5rem;display:grid}.project-card{background:var(--surface-soft);min-width:0;box-shadow:inset 0 0 0 1px var(--frame-outline);border-radius:1.75rem;flex-direction:column;padding:.5rem;display:flex}.project-card-link{background:var(--surface);border-radius:1.25rem;flex-direction:column;flex:1;display:flex;overflow:hidden;box-shadow:0 2px 4px #00000002,0 10px 30px #00000003}.project-card-link:focus-visible{outline-offset:6px;border-radius:1.25rem}.project-media-link{border-radius:.875rem;margin:.5rem .5rem 0;position:relative;overflow:hidden}.project-visual{aspect-ratio:1.35;width:100%;min-height:18rem;transition:transform .5s var(--ease);position:relative;overflow:hidden;container-type:inline-size}.project-copy{flex-direction:column;flex:1;padding:1.5rem 1rem .75rem;display:flex}.project-topline{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;font-size:.875rem;display:flex}.project-topline>span{font:.875rem/1.6 var(--mono)}.project-card h3{letter-spacing:-.045em;margin-top:.75rem;font-size:clamp(1.75rem,2.7vw,2.25rem);line-height:1.15}.project-summary{color:var(--muted);margin-top:.875rem;font-size:1rem;line-height:1.8}.project-result{flex-wrap:wrap;align-items:baseline;gap:.25rem .875rem;margin-block:1.5rem;display:flex}.project-result strong{font:500 1.75rem/1.2 var(--display);letter-spacing:-.045em}.project-result>span{color:var(--muted);font-size:.875rem}.project-bottom{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto;padding-top:1rem;display:flex}.project-bottom ul{color:var(--muted);flex-wrap:wrap;gap:.4rem .75rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.project-cta{align-items:center;gap:.5rem;min-height:2.75rem;font-size:.875rem;font-weight:500;display:inline-flex}.project-cta svg{transition:transform .2s var(--ease)}.project-card-link:hover .project-cta svg{transform:translate(2px,-2px)}.project-resource-link{min-height:2.75rem;color:var(--detail);border-radius:1rem;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.25rem;padding:.5rem 1rem .25rem;font-size:.875rem;display:flex}.project-resource-link svg{transition:transform .2s var(--ease);flex-shrink:0}.project-resource-link:hover{color:var(--ink);text-underline-offset:.25rem;text-decoration:underline}.project-resource-link:hover svg{transform:translate(2px,-2px)}.visual-meta,.visual-baseline{z-index:2;font:.875rem/1.5 var(--mono);justify-content:space-between;align-items:center;gap:.75rem;display:flex;position:absolute;left:6%;right:6%}.visual-meta{top:1.25rem}.visual-baseline{color:#626262;bottom:1.25rem}.visual-baseline>span:last-child{display:none}.graphql-art,.cinema-art,.identity-art,.ai-art{height:100%}.graphql-art,.cinema-art{grid-template-rows:auto minmax(0,1fr) auto;gap:1.25rem;padding:1.25rem 6%;display:grid}.graphql-art .visual-meta,.cinema-art .visual-meta,.cinema-art .visual-baseline{position:static}.graphql-art .visual-meta,.schema-footer .visual-baseline{width:100%;max-width:32rem;margin-inline:auto}.visual-graphql-publishing{color:#171717;background:#ededed}.visual-graphql-publishing,.visual-cinenow{min-height:20rem}.visual-graphql-publishing{aspect-ratio:1.75;min-height:20rem}.schema-sheet{color:#f3f3f3;background:#181818;border-radius:.625rem;place-self:center;width:100%;max-width:32rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff12}.schema-toolbar{border-bottom:1px solid #ffffff18;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.sheet-label{font:.875rem/1.4 var(--mono);color:#d0d0d0;display:block}.schema-format{font:.875rem/1.4 var(--mono);color:#a0a0a0;display:none}.schema-code{font:clamp(.875rem, 3.25cqw, 1.25rem)/1.6 var(--mono);letter-spacing:-.025em;padding:.625rem clamp(.5rem,2cqw,1.25rem)}.schema-line{grid-template-columns:minmax(0,1fr);display:grid}.schema-line>i{color:#858585;text-align:right;font-style:normal;display:none}.schema-line code{font:inherit;white-space:pre}.schema-line code>span{color:#b0b0b0}.schema-code b{color:#c2c2c2;font-weight:400}.schema-footer{grid-template-columns:minmax(0,1fr);gap:.75rem;display:grid}.schema-footer .visual-baseline{position:static}.schema-flow{white-space:nowrap;align-items:end;gap:clamp(.125rem,1.5cqw,1rem);width:100%;min-width:0;max-width:32rem;margin-inline:auto;display:flex}.schema-flow span{font:500 .875rem/1.4 var(--body);flex:none;gap:.25rem;display:grid}.schema-flow span:before{content:attr(data-step);font:.875rem/1 var(--mono);color:#737373}.schema-flow i{background:#858585;flex:1;min-width:.375rem;height:1px;margin-bottom:.6rem;position:relative}.schema-flow i:after{content:"";border-top:1px solid #858585;border-right:1px solid #858585;width:.25rem;height:.25rem;position:absolute;top:50%;right:0;transform:translateY(-50%)rotate(45deg)}.visual-cinenow{color:#f6f6f6;background:#181818}.cinema-art .visual-meta,.cinema-art .visual-baseline{color:#b5b5b5}.cinema-orbit{aspect-ratio:1;border-radius:50%;width:90%;position:absolute;bottom:-64%;right:-18%;box-shadow:0 0 0 1px #ffffff12,0 0 0 2rem #ffffff04,0 0 0 4rem #ffffff04}.cinema-ticket{color:#252525;background:#f2f2f2;border-radius:.75rem;place-self:center;width:92%;margin-bottom:1rem;display:flex;position:relative;transform:rotate(-7deg);box-shadow:0 16px 40px #00000030}.ticket-main{flex:1;min-width:0;padding:5% 6%}.ticket-eyebrow{font:.875rem/1.5 var(--mono);color:#626262}.cinema-name{font:600 clamp(1.5rem, 11cqw, 4.75rem)/1.2 var(--display);letter-spacing:-.065em;margin-block:.5rem .25rem}.cinema-name>span{font-weight:300}.ticket-main p{font-size:.875rem}.ticket-stub{width:22%;font:.875rem/1.4 var(--mono);border-left:1px dashed #bdbdbd;flex-direction:column;justify-content:space-between;align-items:center;padding:5% 3%;display:flex}.ticket-barcode{background:repeating-linear-gradient(90deg,#333 0 2px,#0000 2px 4px,#333 4px 5px,#0000 5px 8px);width:100%;height:3rem}.visual-identity-integration{color:#f2f2f2;background:#222}.identity-art .visual-meta,.identity-art .visual-baseline{color:#bbb}.identity-rings{aspect-ratio:1;border:1px solid #ffffff0d;border-radius:50%;width:72%;position:absolute;bottom:-30%;right:-25%}.identity-rings i{border:1px solid #ffffff0d;border-radius:50%;position:absolute;inset:15%}.identity-rings i:nth-child(2){inset:30%}.identity-rings i:nth-child(3){background:#ffffff05;inset:45%}.sync-mark{align-items:center;width:82%;display:flex;position:absolute;top:25%;left:9%}.sync-node{justify-items:center;gap:.5rem;display:grid}.sync-node>span{aspect-ratio:1;width:clamp(2.75rem,12cqw,4.5rem);font:400 clamp(1.5rem, 6cqw, 2.25rem)/1 var(--display);background:#343434;border-radius:.875rem;place-items:center;display:grid;box-shadow:inset 0 1px #ffffff12,0 8px 20px #00000018}.sync-node small{font:.875rem/1.4 var(--body);color:#ccc}.sync-bridge{flex:1;align-self:start;align-items:center;gap:.5rem;padding:clamp(.5rem,3cqw,1.25rem) .75rem 0;display:flex}.sync-bridge i{background:#888;flex:1;height:1px}.sync-bridge>span{font:.875rem var(--mono);background:#414141;border-radius:5rem;padding:.25rem .5rem}.identity-caption{font:400 clamp(1.5rem, 6cqw, 2.6rem)/1.1 var(--display);letter-spacing:-.035em;position:absolute;top:59%;left:9%}.identity-caption>span{color:#b9b9b9}.visual-ai-image-generation{color:#171717;background:#e8e8e8}.ai-caption{z-index:2;font:400 clamp(1.75rem, 7cqw, 3.5rem)/1.12 var(--display);letter-spacing:-.045em;position:absolute;top:36%;left:8%}.ai-caption>span{color:#666}.ai-sculpture{aspect-ratio:.8;width:37%;position:absolute;top:23%;right:7%;transform:rotate(13deg)}.ai-sculpture i{background:linear-gradient(135deg,#fcfcfc 5%,#d2d2d2 45%,#aaa 46%,#eee 70%,#c7c7c7);border-radius:3rem 3rem .5rem .5rem;position:absolute;inset:10% 10% 15%;box-shadow:inset 0 1px #fff9,-6px 8px 20px #00000012}.ai-sculpture i:first-child{background:#d7d7d7;transform:translate(-22%,13%)rotate(-15deg)}.ai-sculpture i:nth-child(2){background:#f2f2f2;transform:translate(-11%,7%)rotate(-8deg)}.experience-section{background:var(--section-surface)}.experience-layout{grid-template-columns:minmax(0,1fr);gap:2.5rem;margin-top:2.5rem;display:grid}.experience-intro>p{color:var(--muted);max-width:28rem;margin:1.5rem 0 .75rem;font-size:1rem;line-height:1.8}.experience-list{gap:1.5rem;min-width:0;display:grid}.experience-item{background:var(--paper);border-radius:1.5rem;min-width:0;padding:1.5rem;container:experience-card/inline-size}.job-header{grid-template-columns:minmax(0,1fr);align-items:start;gap:.75rem 1.5rem;display:grid}.job-identity{align-items:start;gap:1rem;min-width:0;display:flex}.company-logo{outline:1px solid var(--image-outline);outline-offset:-1px;background:#111;border-radius:.875rem;flex:none;width:3.5rem;height:3.5rem;display:block;overflow:hidden}.company-logo img{object-fit:cover;width:100%;height:100%}.company-logo-cisco{background:0 0;border-radius:0;outline:none;place-items:center;display:grid}.company-logo-cisco img{object-fit:contain}.company-logo-compact{border-radius:.6875rem;width:2.75rem;height:2.75rem}.job-company{font:500 1.875rem/1.1 var(--display);letter-spacing:-.04em}.job-header h3{font:500 1rem/1.6 var(--body);margin-top:.375rem}.job-header h3 span{color:var(--muted);font-size:.875rem;font-weight:400;display:block}.job-meta{gap:.25rem;margin-left:4.5rem;display:grid}.job-date{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.875rem;line-height:1.6}.experience-item>p{color:var(--detail);margin-top:1.5rem;font-size:1rem;line-height:1.7}.experience-item ul{color:var(--detail);margin:1rem 0 0;padding-left:1.25rem;font-size:1rem;line-height:1.7}.experience-item li{margin-bottom:.5rem;padding-left:.25rem}.job-location{color:var(--muted);font-size:.875rem;line-height:1.6}.job-footer{flex-wrap:wrap;align-items:center;gap:.25rem 1.75rem;margin-top:1.25rem;display:flex}.job-footer .text-link{min-height:2.75rem}@container experience-card (width>=34rem){.job-header{grid-template-columns:minmax(0,1fr) auto}.job-meta{text-align:right;margin-left:0;padding-top:.25rem}.job-header h3 span{font-size:1rem;display:inline}.job-header h3 span:before{content:"· "}}.about-section{color:#f5f5f5;background:var(--inverse-field)}.about-section .section-index{color:#bbb}.about-layout{grid-template-columns:minmax(0,1fr);gap:2.5rem;margin-top:2.5rem;display:grid}.about-portrait img{aspect-ratio:.95;object-fit:cover;object-position:center 78%;filter:grayscale();outline-offset:-1px;background:#efefef;border-radius:1.25rem;outline:1px solid #ffffff1a;width:100%;height:auto}.about-portrait figcaption{font:.875rem/1.6 var(--mono);color:#bbb;margin-top:1rem}.about-copy .section-title{font-size:clamp(2.5rem,4vw,3.75rem)}.about-copy>p{color:#bfbfbf;max-width:33rem;margin-top:1.25rem;font-size:1rem;line-height:1.85}.about-copy>.about-lead{color:#eee;margin-top:1.75rem;font-size:1.25rem;line-height:1.65}.about-note{border-top:1px solid #424242;max-width:33rem;margin-top:1.75rem;padding-top:1.25rem}.about-note .eyebrow{color:#bfbfbf}.about-note>p{color:#ddd;margin-top:.75rem;font-size:1rem}.principles{grid-template-columns:minmax(0,1fr);gap:2rem;margin-top:3.5rem;display:grid}.principles>div{border-top:1px solid #484848;padding-top:1.25rem}.principles span{font:.875rem/1.6 var(--mono);color:#b9b9b9}.principles h3{letter-spacing:-.03em;margin-top:1rem;font-size:1.75rem}.principles p{color:#bfbfbf;max-width:28rem;margin-top:.75rem;font-size:1rem}.tools-section{grid-template-columns:minmax(0,1fr);gap:2.5rem;display:grid}.tools-heading .eyebrow{color:var(--muted)}.tools-heading h2{letter-spacing:-.045em;max-width:25rem;margin-top:1.25rem;font-size:2.75rem;line-height:1.1}.tools-heading h2 span{color:var(--subtle)}.tools-list>div{border-top:1px solid var(--line);padding-block:1.25rem}.tools-list>div:last-child{padding-bottom:0}.tools-list h3{font:500 1rem/1.6 var(--body);color:var(--muted)}.tool-group{grid-template-columns:minmax(0,1fr);gap:.75rem;display:grid}.tool-group-content{min-width:0}.tool-items{grid-template-columns:repeat(auto-fill,minmax(min(100%,8rem),1fr));gap:.75rem 1.25rem;margin:0;padding:0;list-style:none;display:grid}.tool-item{align-items:center;gap:.625rem;min-width:0;min-height:2.75rem;font-size:1rem;line-height:1.4;display:flex}.tool-item>span{overflow-wrap:anywhere;min-width:0}.tool-logo{object-fit:contain;flex:none;width:1.75rem;height:1.75rem;display:block}.tool-logo-backed{background:var(--brand-backing);border-radius:.25rem;padding:.125rem}.tool-logo-cisco{clip-path:inset(7% 7% 9% round 7%)}.tool-note{color:var(--muted);margin-top:.875rem;font-size:.9375rem;line-height:1.6}.site-footer{background:var(--footer-field);color:#f8f8f8;padding-block:3rem 1.5rem}.contact-top{flex-direction:column;gap:1rem;display:flex}.contact-top .eyebrow{color:#bfbfbf}.availability{color:#86efac;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.availability i{background:currentColor;border-radius:50%;width:.375rem;height:.375rem}.contact-main{border-bottom:1px solid #3d3d3d;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:2rem;padding-bottom:2rem;display:flex}.contact-main h2{letter-spacing:-.055em;font-size:clamp(2rem,6vw,5rem);line-height:1.1}.contact-main h2 span{color:#aaa}.contact-arrow{width:3rem;height:3rem;transition:background .2s var(--ease), color .2s var(--ease), transform .2s var(--ease);border:1px solid #6a6a6a;border-radius:50%;flex-shrink:0;place-items:center;display:grid}.contact-arrow svg{width:1.5rem;height:1.5rem}.contact-arrow:hover{color:#111;background:#fff;transform:rotate(5deg)}.contact-bottom{flex-direction:column;align-items:start;gap:1.5rem;padding-block:1.5rem 2rem;display:flex}.email-group{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.email-link{overflow-wrap:anywhere;letter-spacing:-.015em;align-items:center;min-height:2.75rem;font-size:clamp(.9375rem,1.75vw,1.5rem);display:inline-flex}.copy-email{color:#bbb;width:2.75rem;height:2.75rem;transition:color .15s var(--ease), transform .15s var(--ease);flex-shrink:0;place-items:center;display:grid;position:relative}.copy-email:hover{color:#fff}.copy-email.copied:after{content:"Copied";color:#171717;background:#fff;border-radius:.25rem;padding:.3rem .5rem;font-size:.875rem;position:absolute;bottom:2.75rem;left:50%;transform:translate(-50%)}.social-links{align-items:center;gap:1.5rem;display:flex}.social-links a{align-items:center;gap:.5rem;min-height:2.75rem;font-size:.9375rem;display:inline-flex}.footer-meta{color:#b9b9b9;border-top:1px solid #303030;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;padding-top:1.25rem;font-size:.875rem;display:flex}.footer-meta>span:nth-child(2){display:none}.footer-meta a{align-items:center;gap:.5rem;min-height:2.75rem;display:inline-flex}.case-wrap{max-width:73rem}.back-link{min-height:2.75rem;color:var(--muted);align-items:center;gap:.75rem;margin-top:2rem;font-size:.9375rem;display:inline-flex}.back-link:hover{color:var(--ink)}.case-header{padding-block:2rem}.case-header>.eyebrow{color:var(--muted)}.case-header h1{letter-spacing:-.06em;max-width:61rem;margin-top:1.5rem;font-size:clamp(2.625rem,6.2vw,5.25rem);line-height:1.04}.case-summary{color:var(--muted);max-width:44rem;margin-top:1.5rem;font-size:1.125rem;line-height:1.8}.case-context{border-top:1px solid var(--line);flex-direction:column;align-items:start;gap:.5rem;margin-top:1.75rem;padding-top:1rem;display:flex}.case-context>span{color:var(--muted);font-size:.9375rem}.case-external-link{text-underline-offset:.3rem;text-decoration:underline #b5b5b5}.case-external-link:hover{text-decoration-color:currentColor}.case-resource-note{color:var(--muted);flex-direction:column;gap:.375rem;max-width:48rem;margin-top:1rem;font-size:.875rem;line-height:1.7;display:flex}.case-resource-note>span{color:var(--ink);font-weight:500}.case-overview{background:var(--surface-frame);border-radius:1.75rem;grid-template-columns:minmax(0,1fr);gap:.5rem;padding:.5rem;display:grid}.case-art-shell{border-radius:1.25rem;overflow:hidden}.case-at-glance{background:var(--surface);border-radius:1.25rem;padding:1.5rem}.case-at-glance>.eyebrow{color:var(--muted)}.case-overview-metric{font:500 clamp(2.5rem, 4.5vw, 4rem)/1.1 var(--display);letter-spacing:-.05em;margin-top:1.5rem}.case-overview-metric>span{font:1rem/1.6 var(--body);letter-spacing:normal;color:var(--muted);margin-top:.5rem;display:block}.case-at-glance dl{margin:1.5rem 0 1rem}.case-at-glance dl>div+div{margin-top:1rem}.case-at-glance dt{color:var(--muted);font-size:.875rem}.case-at-glance dd{margin:.25rem 0 0;font-size:1rem}.case-system{border-bottom:1px solid var(--line);padding-block:2.5rem}.case-system .eyebrow{color:var(--muted)}.case-system h2{letter-spacing:-.04em;margin-top:.5rem;font-size:1.75rem}.case-system ul{grid-template-columns:minmax(0,1fr);gap:.75rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.case-system li{background:var(--surface-soft);border-radius:.75rem;align-items:center;gap:1rem;padding:1rem;font-size:1rem;display:flex}.case-system li>span{color:var(--muted);font:.875rem var(--mono)}.case-body{grid-template-columns:minmax(0,1fr);gap:3rem;padding-block:3rem 4rem;display:grid}.case-facts{flex-wrap:wrap;align-items:flex-start;gap:2rem 3rem;display:flex}.case-facts h2{font:.875rem/1.6 var(--mono);color:var(--muted)}.case-facts ul{margin:.75rem 0 0;padding:0;font-size:1rem;line-height:1.9;list-style:none}.case-reading-nav{flex-direction:column;display:flex}.case-reading-nav h2{margin-bottom:.5rem}.case-reading-nav a{align-items:center;min-height:2.75rem;font-size:.9375rem;display:inline-flex}.case-reading-nav a:hover{text-underline-offset:.3rem;text-decoration:underline}.case-story{min-width:0}.case-story section+section{margin-top:3rem}.case-story .eyebrow{color:var(--muted)}.case-story h2{letter-spacing:-.035em;margin-top:.875rem;font-size:clamp(1.75rem,2.6vw,2.25rem);line-height:1.2}.case-story p{color:var(--detail);max-width:65ch;margin-top:1.25rem;font-size:1.0625rem;line-height:1.85}.case-story ol{counter-reset:contribution;margin:1.5rem 0 0;padding:0;list-style:none}.case-story li{counter-increment:contribution;border-top:1px solid var(--line);color:var(--detail);padding:1.25rem 0 1.25rem 2.5rem;font-size:1rem;line-height:1.85;position:relative}.case-story li:before{content:"0" counter(contribution);font:.875rem var(--mono);color:var(--muted);position:absolute;top:1.4rem;left:0}.case-outcomes{background:var(--surface-soft);border-radius:1.25rem;padding:1.5rem}.next-project{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1.5rem;padding-block:2rem 4rem;display:flex}.next-project .eyebrow{color:var(--muted)}.next-project h2{letter-spacing:-.04em;max-width:42rem;margin-top:1rem;font-size:clamp(1.75rem,3vw,2.5rem);line-height:1.15}.next-project>svg{transition:transform .2s var(--ease);flex-shrink:0}.next-project:hover>svg{transform:translate(4px,-4px)}.not-found{padding-block:6rem 8rem}.not-found h1{letter-spacing:-.06em;margin-top:1.75rem;font-size:clamp(2.75rem,7vw,5.25rem);line-height:1.1}.theme-picker{display:flex}.theme-toggle{width:2.75rem;height:2.75rem;transition:background .15s var(--ease), transform .15s var(--ease);border-radius:50%;place-items:center;display:grid}.theme-toggle:hover,.theme-toggle[aria-expanded=true]{background:var(--surface-hover)}.theme-toggle:active{transform:scale(.96)}.theme-toggle [data-theme-icon]{display:none}.theme-toggle [data-theme-icon=system]{display:block}:root[data-theme-preference=light] .theme-toggle [data-theme-icon],:root[data-theme-preference=dark] .theme-toggle [data-theme-icon]{display:none}:root[data-theme-preference=light] .theme-toggle [data-theme-icon=light],:root[data-theme-preference=dark] .theme-toggle [data-theme-icon=dark]{display:block}.theme-menu{width:min(15rem,100vw - 2rem);color:var(--ink);background:var(--surface);box-shadow:0 0 0 1px var(--line), 0 16px 48px #00000020;border-radius:1rem;padding:.75rem;position:absolute;top:calc(100% + .625rem);right:.75rem}.theme-menu>p{color:var(--muted);margin:.25rem .5rem .625rem;font-size:.875rem}.theme-option{text-align:left;border-radius:.625rem;align-items:center;gap:.75rem;width:100%;min-height:2.75rem;padding:.5rem .75rem;font-size:1rem;display:flex}.theme-option:hover{background:var(--surface-hover)}.theme-option[aria-pressed=true]{background:var(--surface-soft)}.theme-option>svg{flex-shrink:0}.theme-option .theme-check{color:var(--theme-accent);visibility:hidden;margin-left:auto}.theme-option[aria-pressed=true] .theme-check{visibility:visible}.resume-brand-github{background:var(--brand-backing);border-radius:.25rem}}@layer responsive{@media (width>=561px){.impact{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.impact-intro{grid-column:1/-1}.impact-number{display:block}.impact-number>p{margin-top:.75rem}.project-filters{flex:0 auto}.filter-button{padding-inline:.75rem}.filter-button sup{display:inline}.work-count{clip-path:none;width:auto;height:auto;margin-left:auto;position:static;overflow:visible}.case-system ul{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=761px){html{scroll-padding-top:7.5rem}.wrap{width:min(80rem,100% - 5rem)}.section-space{padding-block:6rem}.site-header{border-radius:1.5rem;width:min(80rem,100% - 3rem);margin-top:1rem;top:1rem}.nav-wrap{width:calc(100% - 3rem);height:4.5rem}.wordmark{font-size:2.2rem}.nav-actions{gap:1rem}.desktop-nav{display:flex}.menu-toggle,.mobile-nav{display:none}.hero{grid-template-columns:1.05fr .95fr;align-items:center;gap:2.5rem;padding-block:3.5rem}.hero h1{font-size:clamp(4rem,7.5vw,6.75rem)}.portrait-frame{aspect-ratio:.88}.hero-portrait figcaption{font-family:var(--body)}.work-heading-row{flex-direction:row;justify-content:space-between;align-items:end}.work-controls{margin-block:2.5rem}.filter-rule{display:block}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}.project-copy{padding:1.5rem 1.25rem .875rem}.experience-layout{grid-template-columns:.75fr 1.25fr;gap:3rem}.experience-intro{align-self:start;position:sticky;top:8rem}.experience-item{padding:2rem}.about-layout{grid-template-columns:.85fr 1.15fr;align-items:center;gap:3rem}.about-portrait img{aspect-ratio:.83;object-position:center 92%}.principles{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin-top:5rem}.tool-group{grid-template-columns:10rem minmax(0,1fr);gap:2rem}.tool-group>h3{padding-top:.625rem}.contact-top{flex-direction:row;justify-content:space-between;align-items:center}.contact-arrow{width:5rem;height:5rem}.contact-arrow svg{width:2.5rem;height:2.5rem}.contact-bottom{flex-direction:row;justify-content:space-between;align-items:center}.footer-meta>span:nth-child(2){display:block}.case-header{padding-block:3rem 2.5rem}.case-context{flex-direction:row;justify-content:space-between;align-items:center}.case-body{grid-template-columns:12rem minmax(0,1fr);gap:3rem;padding-block:4rem 5rem}.case-facts{flex-direction:column;align-self:start;gap:2rem;position:sticky;top:8rem}.case-outcomes{padding:2rem}}@media (width>=1024px){.wrap{width:min(80rem,100% - 7rem)}.section-space{padding-block:7rem}.section-index{display:block}.hero{gap:4rem}.hero-footnote{margin-top:2.5rem}.portrait-frame{aspect-ratio:.98}.hero-portrait figcaption{font-family:var(--mono)}.impact{grid-template-columns:1.15fr .85fr 1fr 1fr;align-items:center;gap:2rem;padding-block:2rem}.impact-intro{grid-column:auto}.impact-number strong{font-size:3rem}.project-copy{padding:1.75rem 1.75rem 1rem}.project-visual{aspect-ratio:1.55}.visual-graphql-publishing{aspect-ratio:1.75}.experience-layout,.about-layout{gap:5rem}.case-overview{grid-template-columns:1.5fr 1fr}.case-art-shell .project-visual{aspect-ratio:auto;height:100%;min-height:25rem}.case-art-shell .visual-baseline>span:last-child{display:none}.case-at-glance{padding:2rem}.case-system{padding-block:3rem}.case-system ul{grid-template-columns:repeat(4,minmax(0,1fr))}.case-system li{flex-direction:column;align-items:start;gap:.5rem}.case-body{gap:5rem}}@container (width<=18rem){.ticket-stub>span:last-child{display:none}}@container (width>=20rem){.schema-line{grid-template-columns:1.5rem minmax(0,1fr);column-gap:.75rem}.schema-line>i{display:block}}@container (width>=32rem){.visual-baseline>span:last-child{display:inline}.schema-format{display:block}}@media (width>=761px){@container (width>=24rem){.sheet-label{font-size:clamp(1rem,2.75cqw,1.125rem)}.schema-code{font-size:clamp(1.125rem,3.75cqw,1.625rem)}.schema-flow span{font-size:1rem}.schema-flow i{margin-bottom:.7rem}}}@media (hover:hover) and (pointer:fine){.project-card-link:hover .project-visual{transform:scale(1.025)}.hero-portrait:hover img{transform:scale(1.02)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}.intro-enter{opacity:1;transform:none}}@media (width<=560px){.nav-wrap{width:calc(100% - 1.75rem)}.nav-actions{gap:.25rem}.resume-link>svg{display:none}}@media print{:root,:root[data-theme],:root:not([data-theme]){color-scheme:light;--paper:#fff;--ink:#171717;--muted:#626262;--line:#dedede;--surface:#fff;--surface-soft:#efefef;--surface-frame:#ededed;--detail:#555;--subtle:#858585}.theme-picker{display:none}}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
