@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/ibm-plex-sans.woff2) format('woff2');
  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: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/instrument-sans.woff2) format('woff2');
  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{--bg:#f6f8fc;--bg-2:#eef2f9;--fg:#13213c;--mute:#526079;--faint:#526079;--rule:#d4dce9;--accent:#2452eb;--accent-d:#1740c5;--sans:"Instrument Sans",ui-sans-serif,system-ui,sans-serif;--body:"IBM Plex Sans",ui-sans-serif,system-ui,sans-serif;--mono:var(--body);--serif:var(--sans);--t-fast:160ms;--ease:cubic-bezier(.2,.7,.2,1);color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit}button,textarea,input{font:inherit}img{max-width:100%}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3,h4{font-family:var(--sans);font-weight:500;text-wrap:balance}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{background:#c9d8ff;color:#102b79}.wrap{width:calc(100% - 80px);max-width:1200px;margin-inline:auto}.skip-link{position:absolute;left:20px;top:-80px;z-index:300;background:var(--fg);color:white;padding:12px 20px}.skip-link:focus{top:10px}.studio-header{position:sticky;top:0;z-index:50;background:#f6f8fcf5;border-bottom:1px solid var(--rule)}.studio-header>.wrap{height:86px;display:flex;align-items:center;justify-content:space-between;gap:24px}.studio-brand{display:flex;align-items:center;gap:14px;text-decoration:none;font-size:16px;font-weight:600}.brand-symbol{color:var(--accent);font-size:43px;font-weight:650;letter-spacing:-.15em;line-height:1;padding-right:7px}.brand-symbol span{display:inline-block;transform:translateY(3px)}.studio-header nav{display:flex;gap:34px;align-items:center;margin-left:auto;margin-right:35px}.studio-header nav a,.header-resume{font-size:14px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center;gap:22px}.studio-header a:hover{color:var(--accent)}.header-resume{border-bottom:1px solid var(--fg)}.studio-hero{padding-block:66px 56px}.role-label{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--mute);margin-bottom:25px}.role-label>span{width:7px;height:7px;background:var(--accent);border-radius:50%}.hero-copy h1{font-size:clamp(58px,5.8vw,78px);font-weight:500;letter-spacing:-.065em;line-height:1.01;margin-left:-4px}.hero-lead{font-size:23px;line-height:1.38;letter-spacing:-.02em;max-width:620px;margin-top:27px}.hero-context{font-size:16px;color:var(--mute);line-height:1.65;max-width:620px;margin-top:16px}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:27px;padding:15px 20px;min-height:52px;border-radius:4px;text-decoration:none;font-size:14px;font-weight:500}.button.primary{background:var(--accent);color:#fff}.button.primary:hover{background:var(--accent-d)}.text-link{display:inline-flex;align-items:center;gap:15px;min-height:44px;text-decoration:none;font-size:14px;border-bottom:1px solid var(--rule)}.text-link:hover{color:var(--accent);border-color:var(--accent)}.hero-location{font-size:12px;color:var(--mute);margin-top:24px}.hero-location span{padding:0 10px;color:#90a0b9}.career-strip{display:flex;align-items:center;justify-content:space-between;gap:22px;border-block:1px solid var(--rule);padding-block:25px}.career-strip p{font-size:12px;color:var(--mute)}.career-strip>span{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:500;white-space:nowrap}.career-strip img{object-fit:contain;border-radius:4px}.career-section{padding-block:96px 65px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:48px;margin-bottom:48px}.section-label{font-size:13px;color:var(--mute);margin-bottom:16px}.section-heading h2,.studio-about h2{font-size:clamp(38px,4vw,51px);letter-spacing:-.047em;line-height:1.08}.section-heading>p{font-size:16px;color:var(--mute);max-width:366px;line-height:1.6;margin-bottom:3px}.career-case{display:grid;grid-template-columns:280px 1fr 170px;gap:38px;padding:36px 0;border-top:1px solid var(--rule);scroll-margin-top:100px}.career-identity{display:flex;gap:13px;align-items:flex-start}.career-identity>img{object-fit:contain;border-radius:8px;flex-shrink:0}.career-identity h3{font-size:16px;font-weight:600;margin-bottom:4px}.career-identity p{font-size:13px;line-height:1.5}.career-identity span{display:block;font-size:11px;color:var(--mute);margin-top:9px}.career-story h4{font-size:23px;line-height:1.25;letter-spacing:-.025em;max-width:440px}.career-story>p{color:var(--mute);font-size:14px;line-height:1.65;margin-top:14px;max-width:470px}.career-proof{border-left:1px solid var(--rule);padding-left:25px;align-self:start}.career-proof strong{font-size:42px;letter-spacing:-.06em;line-height:1.15;font-weight:500;color:var(--accent)}.career-proof p{font-size:11px;line-height:1.5;margin-top:10px;max-width:145px;color:var(--mute)}details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;cursor:pointer;list-style:none;min-height:44px}summary::-webkit-details-marker{display:none}.career-story details{margin-top:15px;font-size:13px}.career-story summary{color:var(--accent);justify-content:flex-start;gap:15px;width:fit-content}.career-story summary span{font-size:19px}.career-story details[open]>summary>span,.capabilities[open]>summary>span{transform:rotate(45deg)}.career-story ul{padding-left:19px;font-size:14px;color:var(--mute);line-height:1.65;margin-top:9px}.career-story li+li{margin-top:10px}.education-line{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--rule);padding-top:20px;gap:20px;font-size:12px;color:var(--mute)}.education-line strong{color:var(--fg);margin-right:15px;font-weight:500}.studio-work{padding-block:76px;background:#eaf0fc}.project-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}.project-card{position:relative;display:block;background:none;text-decoration:none;min-width:0}.pc-media{display:block;position:relative;aspect-ratio:16/10;overflow:hidden;background:#dce6fa;border:1px solid #cbd6e9;border-radius:5px}.pc-poster,.pc-video{position:absolute;width:100%;height:100%;inset:0;object-fit:contain}.pc-video{opacity:0;pointer-events:none}.pc-logo{position:absolute;left:0;top:calc(100% - 148px);width:30px;height:30px;object-fit:contain;border-radius:5px;display:none}.pc-body{padding-top:19px}.pc-kicker{display:none}.pc-name{font-size:23px;letter-spacing:-.035em;line-height:1.2}.pc-desc{font-size:14px;line-height:1.45;margin-top:8px}.pc-proof{display:block;font-size:11px;color:var(--mute);margin-top:8px}.pc-foot{display:flex;align-items:center;justify-content:space-between;padding-top:18px;font-size:12px;color:var(--accent)}.pc-foot .arr{font-size:20px}.project-card:hover .pc-name{color:var(--accent)}.project-more{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;margin-top:36px;border-top:1px solid #cbd6e9;padding-top:26px}.project-more>a{display:flex;align-items:center;gap:14px;text-decoration:none;min-height:52px}.project-more>a>img{width:28px;height:28px;object-fit:contain;border-radius:5px}.project-more-name{font-size:14px;display:block}.project-more-desc{display:block;color:var(--mute);font-size:11px;margin-top:3px}.project-more>a:hover{color:var(--accent)}.preview-link{display:inline-flex;text-decoration:none;font-size:13px;color:var(--accent);border-bottom:1px solid #b9caf6;margin-top:22px}.project-hover-preview{position:fixed;display:none;z-index:80;background:var(--bg);box-shadow:0 25px 85px #112b7040;overflow:hidden;border-radius:6px;opacity:0;transform-origin:center;cursor:pointer;transform:translate(var(--preview-x),var(--preview-y)) scale(var(--preview-scale-x),var(--preview-scale-y));transition:transform .3s var(--ease),opacity .2s}.project-hover-preview.is-mounted{display:block}.project-hover-preview.is-open{opacity:1;transform:translate(0,0) scale(1)}.project-hover-preview.is-positioning{transition:none}.project-hover-preview__media{position:relative;width:100%;height:calc(100% - 158px);background:#eaf0fc}.project-hover-preview__poster,.project-hover-preview__video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.project-hover-preview__video{opacity:0}.project-hover-preview.is-video-ready .project-hover-preview__video{opacity:1}.project-hover-preview__details{padding:18px 24px}.project-hover-preview__details .pc-body{padding:0}.project-hover-preview__details .pc-foot{padding-top:8px}.project-hover-preview__details .pc-logo{display:none}.project-hover-preview__details .pc-name{font-size:22px}.studio-about{display:grid;grid-template-columns:1fr 1fr;gap:100px;padding-block:98px}.studio-about .text-link{margin-top:30px}.about-prose>p{font-size:15px;line-height:1.75;color:var(--mute);margin-top:18px}.about-prose .personal-line{font-family:Georgia,serif;font-size:26px;font-weight:400;line-height:1.4;color:var(--fg);margin-top:0;letter-spacing:-.02em}.capabilities{margin-top:28px;border-block:1px solid var(--rule)}.capabilities summary{font-size:13px;padding-block:6px}.capabilities dl{font-size:13px;margin-bottom:20px}.capabilities dl>div{margin-top:15px}.capabilities dt{font-weight:600}.capabilities dd{margin-left:0;color:var(--mute);margin-top:3px}.studio-contact{background:var(--accent);color:#fff;padding-block:68px 70px}.studio-contact>.wrap{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:100px}.studio-contact .section-label{color:#d6e1ff}.studio-contact h2{font-size:clamp(42px,4.5vw,61px);line-height:1.04;letter-spacing:-.05em}.contact-email{font-size:25px;letter-spacing:-.03em;text-decoration:none;display:flex;gap:28px;align-items:center;justify-content:space-between;border-bottom:1px solid #88a5f4;padding-bottom:17px}.contact-email span{font-size:33px}.contact-side>p{font-size:14px;line-height:1.65;color:#e0e8ff;margin-top:20px}.contact-side>div{display:flex;gap:24px;margin-top:22px}.contact-side>div a{font-size:12px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.contact-side a:hover{text-decoration:underline;text-underline-offset:4px}.studio-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:20px;color:var(--mute);font-size:11px}.studio-footer>a{text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.ask-launcher{position:fixed;right:22px;bottom:22px;z-index:80;background:var(--fg);color:white;border:1px solid var(--fg);border-radius:999px;font-size:13px;padding:12px 17px;box-shadow:0 5px 25px #13213c18;min-height:46px;cursor:pointer}.ask-launcher:focus-visible{outline-offset:4px}.ask-widget{--ask-mono:var(--sans)}.ask-widget-pill{background:var(--fg)!important;color:white!important}.ask-widget-meta{letter-spacing:0!important;text-transform:none!important;font-size:10px!important}.ask-widget-panel{border-radius:12px}.ask-widget-starters .ask-chip{border-radius:4px}.studio-contact :focus-visible{outline-color:white}
@media(min-width:1500px){.studio-hero{padding-block:80px}}
@media(max-width:1050px){.hero-copy h1{font-size:63px}.hero-lead{font-size:21px}.career-case{grid-template-columns:235px 1fr 132px;gap:24px}.career-proof{padding-left:20px}.career-proof strong{font-size:37px}.studio-about,.studio-contact>.wrap{gap:55px}.contact-email{font-size:21px}.career-strip{gap:16px}.career-strip>span{font-size:14px}.studio-header nav{gap:22px;margin-right:14px}}
@media(max-width:760px){html{scroll-padding-top:110px}.wrap{width:calc(100% - 40px)}.studio-header>.wrap{height:auto;min-height:72px;flex-wrap:wrap;gap:4px 18px;padding-top:8px;padding-bottom:8px}.studio-brand{font-size:14px;gap:10px}.brand-symbol{font-size:36px}.header-resume{font-size:12px;gap:10px;margin-left:auto;order:1}.studio-header nav{order:2;flex-basis:100%;margin:0;justify-content:space-between;gap:15px}.studio-header nav a{font-size:12px;min-height:40px}.studio-hero{padding-block:34px 32px}.hero-copy h1{font-size:clamp(52px,12.8vw,75px);letter-spacing:-.06em}.role-label{font-size:12px;margin-bottom:21px}.hero-lead{font-size:21px;margin-top:23px;max-width:510px}.hero-context{font-size:14px;margin-top:14px;max-width:500px}.hero-actions{margin-top:24px;gap:25px}.hero-location{font-size:10px;margin-top:18px}.button{font-size:12px;padding:14px 17px;gap:23px}.text-link{font-size:12px}.career-strip{flex-wrap:wrap;justify-content:flex-start;column-gap:28px;row-gap:17px;padding-block:20px}.career-strip>p{width:100%;font-size:10px}.career-strip>span{font-size:13px;flex-basis:calc(50% - 14px);gap:10px}.career-strip img{width:22px;height:22px}.career-section{padding-block:52px 40px}.section-heading{display:block;margin-bottom:30px}.section-label{font-size:11px;margin-bottom:13px}.section-heading h2,.studio-about h2{font-size:38px;letter-spacing:-.045em}.section-heading>p{font-size:14px;margin-top:20px;max-width:470px}.career-case{grid-template-columns:1fr;gap:19px;padding:28px 0}.career-identity img{width:34px;height:34px}.career-identity h3{font-size:15px}.career-identity p{font-size:12px}.career-identity span{font-size:10px;margin-top:5px}.career-story h4{font-size:23px;max-width:460px}.career-story>p{font-size:13px;max-width:530px;margin-top:12px}.career-proof{display:flex;align-items:center;gap:18px;grid-row:2;border-left:0;padding-left:0}.career-proof strong{font-size:36px;min-width:99px}.career-proof p{font-size:10px;max-width:170px;margin:0}.career-story details{margin-top:8px}.career-story ul{font-size:13px}.education-line{align-items:flex-start;flex-direction:column;gap:8px;font-size:11px}.education-line strong{display:block;margin-bottom:5px}.studio-work{padding-block:46px}.project-preview-grid{grid-template-columns:1fr;gap:34px}.pc-media{aspect-ratio:16/9}.pc-body{padding-top:15px}.pc-desc{font-size:14px}.pc-foot{padding-top:10px}.project-more{grid-template-columns:1fr;gap:16px;margin-top:28px;padding-top:23px}.project-more>a{gap:14px}.project-more-desc{font-size:12px}.preview-link{font-size:12px}.studio-about{grid-template-columns:1fr;gap:30px;padding-block:52px}.studio-about h2{font-size:36px}.studio-about .text-link{margin-top:20px}.about-prose .personal-line{font-size:24px;max-width:490px}.about-prose>p{font-size:14px}.studio-contact{padding-block:42px}.studio-contact>.wrap{grid-template-columns:1fr;gap:30px}.studio-contact h2{font-size:46px}.contact-email{font-size:20px}.contact-side>p{font-size:13px}.contact-side>div{gap:22px;margin-top:15px}.studio-footer{flex-wrap:wrap;gap:0 20px;font-size:10px;padding-block:16px}.studio-footer>span{flex-basis:100%;margin-bottom:2px}.studio-footer #dont-click{margin-left:auto;margin-right:0;font-size:10px}.ask-launcher{right:15px;bottom:15px;font-size:12px;min-height:44px}.project-hover-preview{display:none!important}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{.studio-header,.ask-launcher,.ask-widget,.studio-footer #dont-click{display:none}.wrap{width:100%}.studio-hero{padding:20px 0}.studio-hero h1{font-size:42px}.studio-work,.studio-contact{background:white;color:black}.career-case{break-inside:avoid}.career-section,.studio-about{padding-block:30px}details::details-content{content-visibility:visible}details>*{display:block!important}}


.project-library{margin-top:28px;border-block:1px solid #c2d0ee}.project-library>summary{color:var(--accent);font-size:14px;padding:15px 0}.disclosure-mark{font-size:20px;flex-shrink:0}.project-library[open]>summary>.disclosure-mark,.project-detail[open]>summary>.disclosure-mark,.about-more[open]>summary>.disclosure-mark,.inline-ask[open]>summary>.disclosure-mark{transform:rotate(45deg)}.project-library-body{padding:0 0 24px}.project-detail{border-top:1px solid #c2d0ee;scroll-margin-top:118px}.project-detail>summary{font-family:var(--sans);font-size:23px;padding:20px 0}.project-detail-body{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;padding:0 0 30px}.project-demo video{display:block;width:100%;aspect-ratio:16/9;background:#dce6fa;border:1px solid #cbd6e9;border-radius:4px}#tacknote .project-demo video{aspect-ratio:8/9;max-width:480px}#bulletin .project-demo video{aspect-ratio:8/7;max-width:480px}#refresh .project-demo video{aspect-ratio:8/5;max-width:960px}.project-demo>p{font-size:15px;line-height:1.55;margin-top:17px}.project-demo .project-stack{font-size:12px;color:var(--mute)}.project-demo .text-link{margin-top:15px}.project-qa{margin:0;display:grid;gap:19px;align-content:start}.project-qa dt{font-size:13px;font-weight:600;margin-bottom:5px}.project-qa dd{font-size:14px;color:var(--mute);line-height:1.6;margin:0}.about-more{margin-top:24px;border-block:1px solid var(--rule)}.about-more>summary{color:var(--accent);font-size:14px;padding-block:9px}.about-more-copy{padding-bottom:22px}.about-more-copy h3{font-size:20px;margin-top:22px;letter-spacing:-.025em}.about-more-copy p{font-size:14px;line-height:1.75;color:var(--mute);margin-top:10px}.about-more-copy a{color:var(--accent)}.capabilities{border-top:0;margin-top:0}.ask-home{padding-block:30px}.inline-ask>summary{font-size:24px;font-family:var(--sans);padding-block:10px}.ask-chat{max-width:820px;margin:20px auto}.ask-history{min-height:100px;max-height:430px;overflow:auto;background:var(--bg-2);border:1px solid var(--rule);border-radius:4px;padding:20px;display:flex;flex-direction:column;gap:14px}.ask-history:empty::before{content:"Explore my experience, projects and approach to building with AI.";font-size:14px;color:var(--mute)}.ask-starters{display:flex;flex-wrap:wrap;gap:10px;margin-block:18px}.ask-chip{background:none;border:1px solid var(--rule);border-radius:4px;padding:10px 14px;min-height:44px;color:var(--fg);font-size:13px;cursor:pointer}.ask-chip:hover{border-color:var(--accent);color:var(--accent)}.composer-row{display:grid;grid-template-columns:1fr auto;gap:14px}.composer textarea{min-height:110px;resize:vertical;background:var(--bg);border:1px solid var(--rule);border-radius:4px;padding:14px;line-height:1.5;width:100%;font-size:16px}.composer .send{align-self:end;min-height:46px;padding:12px 22px;border:0;border-radius:4px;background:var(--accent);color:white;cursor:pointer}.composer .send:disabled{opacity:.6;cursor:wait}.composer-meta{display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--mute);margin-top:9px}.chat-disclosure{margin-top:14px;font-size:12px;color:var(--mute)}.chat-disclosure summary{justify-content:flex-start;max-width:100%}.chat-disclosure summary::before{content:"+";font-size:18px}.chat-disclosure[open] summary::before{content:"−"}.composer-note{font-size:12px;line-height:1.6;max-width:74ch;margin:6px 0 12px}.ask-message{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.ask-message.user{align-items:flex-end}.ask-message-label{font-size:11px;color:var(--mute)}.ask-bubble{max-width:90%;padding:12px 15px;border:1px solid var(--rule);border-radius:4px;background:var(--bg);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.ask-message.user .ask-bubble{border-color:var(--accent)}.ask-message.is-error .ask-bubble{border-color:var(--accent);color:var(--accent-d)}.ask-bubble p{margin:0}.ask-bubble ul,.ask-bubble ol{margin:0;padding-left:20px}.ask-launcher{text-decoration:none}body:has(#ask[open]) .ask-launcher{display:none}.ask-load-error{font-size:14px;color:var(--accent-d);padding-block:12px}.ask-load-error button{display:inline-flex;padding:10px 14px;margin-left:14px;min-height:44px;cursor:pointer}#ask,#about-more{scroll-margin-top:118px}
@media(max-width:760px){.project-detail-body{grid-template-columns:1fr;gap:24px}.project-detail>summary{font-size:21px}.project-qa{gap:17px}.project-demo>p{font-size:14px}.composer-row{grid-template-columns:1fr}.composer .send{justify-self:end}.ask-history{padding:13px}.ask-bubble{font-size:13px;max-width:95%}.composer-meta{font-size:10px}.chat-disclosure summary{font-size:11px}.inline-ask>summary{font-size:22px}.ask-home{padding-block:22px}}
