:root{--ink:#182322;--muted:#5b6461;--line:#d7dcd5;--paper:#f7f8f4;--blue:#234ee8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}a:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:6px}.skip{position:fixed;top:-100px;left:20px;background:white;z-index:10;padding:12px}.skip:focus{top:10px}header{max-width:1440px;margin:auto;padding:28px 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:25px}.brand{font-weight:800;font-size:38px;letter-spacing:-4px;line-height:1}.brand span{font-size:14px;vertical-align:top;letter-spacing:0;margin-left:6px}nav{display:flex;gap:32px;font-size:14px}.contact{border-bottom:1px solid;font-size:14px}main{max-width:1440px;margin:auto;padding:0 5%}.hero{padding:62px 0 55px;position:relative}.eyebrow{font-family:monospace;font-size:12px;letter-spacing:1.5px;font-weight:500}.hero>.eyebrow{display:flex;gap:55px}.hero>.eyebrow span{color:var(--muted)}h1{font-size:clamp(56px,7.5vw,108px);font-weight:500;letter-spacing:-6px;line-height:1.04;margin:42px 0 30px}h1 em{font-family:Georgia,serif;color:var(--blue);font-weight:400}p{color:var(--muted);margin:0 0 18px}.hero-bottom{display:flex;justify-content:space-between;align-items:end;max-width:970px;gap:40px}.hero-bottom p{max-width:485px;font-size:18px;margin:0}.round-link{display:flex;gap:20px;align-items:center;font-size:14px;white-space:nowrap}.round-link b{border:1px solid var(--ink);border-radius:50%;width:58px;height:58px;display:grid;place-items:center;font-size:25px;font-weight:400;transition:.2s}.round-link:hover b{background:var(--blue);color:white;border-color:var(--blue);transform:translateY(4px)}.margin-note{position:absolute;right:2%;top:210px;transform:rotate(7deg);font-family:Georgia,serif;font-size:21px;font-style:italic;border-left:2px solid var(--blue);padding-left:20px}.company-line{display:flex;justify-content:space-between;align-items:center;padding:30px 0;gap:25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap}.company-line>span{font-size:11px;letter-spacing:1px;color:var(--muted)}.company-line strong{font-size:20px;letter-spacing:-.6px}.section{padding:90px 0 15px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:35px}h2{font-size:clamp(34px,4vw,53px);line-height:1.12;letter-spacing:-2px;font-weight:500;margin:16px 0 0}.section-heading p{font-size:15px;margin:0}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.project{border:1px solid var(--line);border-radius:5px;overflow:hidden}.project-top{display:flex;justify-content:space-between;padding:20px 22px;font-family:monospace;font-size:11px;letter-spacing:1px}.blue{background:#244fe5;color:white}.mint{background:#d4e8d9}.peach{background:#f4d9c9}.project-visual{height:225px;display:flex;flex-direction:column;justify-content:space-between;padding:0 22px 26px}.project-visual>span:last-child{font-size:14px;line-height:1.35}.big-stat{font-size:100px;line-height:1.1;letter-spacing:-8px}.big-stat span{font-size:60px}.project-word{font-size:48px;letter-spacing:-3px;line-height:.95;padding-top:10px}.project-word span{font-size:35px;margin-left:12px}.project-body{padding:24px 22px;background:var(--paper);color:var(--ink);height:calc(100% - 283px)}h3{font-size:21px;letter-spacing:-.6px;line-height:1.3;font-weight:500;margin:0 0 14px}.project-body>p{font-size:15px;min-height:96px}.project summary{font-size:14px;border-top:1px solid var(--line);padding-top:15px;display:flex;justify-content:space-between}.project details p{font-size:15px;margin-top:18px}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}summary span:last-child,summary b{transition:transform .2s}details[open]>summary b,details[open]>summary>span:last-child{transform:rotate(45deg)}.tags{display:flex;gap:5px;flex-wrap:wrap}.tags span{font-size:12px;border:1px solid var(--line);padding:3px 8px;border-radius:20px}.timeline{border-top:1px solid var(--line)}.timeline details{border-bottom:1px solid var(--line)}.timeline summary{display:grid;grid-template-columns:1.2fr 1.5fr 1fr 20px;gap:20px;align-items:center;padding:27px 0;font-size:14px}.company{font-size:22px;font-weight:500;letter-spacing:-.5px}.timeline time{font-family:monospace;font-size:12px;color:var(--muted);text-align:right}.timeline p{max-width:700px;margin:0 0 26px 32%;font-size:16px}.timeline b{font-size:21px;font-weight:400}.about{display:grid;grid-template-columns:1.3fr 1fr;gap:10%;padding-bottom:60px}.about h2{margin-bottom:28px}.about p{max-width:580px}.text-link{display:inline-block;margin-top:10px;border-bottom:1px solid;font-size:14px}.note{background:#e9eddf;padding:32px;align-self:center;transform:rotate(2deg)}.note h3{font-size:28px;line-height:1.3;margin:28px 0}.note ul{padding-left:20px;font-size:14px;color:var(--muted)}.signature{font-family:Georgia,serif;font-style:italic;font-size:35px;color:var(--blue);display:block;margin-top:24px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;border-top:1px solid var(--line);padding:45px 0 75px}.details-grid h3{margin-top:25px}.details-grid p,.details-grid li{font-size:15px}.details-grid ul{padding-left:18px;color:var(--muted)}footer{background:var(--blue);color:white;padding:50px 40px 25px;margin:0 -2% 25px;border-radius:5px}.footer-title{display:block;font-size:clamp(35px,5vw,66px);line-height:1.12;letter-spacing:-2px;margin:32px 0 55px}.footer-title>span{display:inline-block;margin-left:20px}.footer-bottom{border-top:1px solid #ffffff55;display:flex;justify-content:space-between;gap:20px;padding-top:23px;font-size:12px}.footer-bottom>div{display:flex;gap:24px}@media(min-width:1500px){.hero{padding-top:80px}}@media(max-width:1000px){.margin-note{display:none}.projects{gap:12px}.project-body{padding:20px 16px}.project-body>p{min-height:120px}.project-word{font-size:38px}.timeline summary{grid-template-columns:1fr 1fr 20px}.timeline time{grid-column:2;grid-row:2;text-align:left}.timeline b{grid-column:3;grid-row:1}.timeline p{margin-left:0;max-width:85%}.about{gap:6%}}@media(max-width:700px){header{padding:22px 6%;flex-wrap:wrap;gap:20px}nav{order:3;width:100%;justify-content:space-between;gap:14px}main{padding:0 6%}.hero{padding:38px 0}.hero>.eyebrow{display:block;font-size:11px}.hero>.eyebrow span{display:block;margin-top:7px}h1{font-size:clamp(47px,10.8vw,75px);letter-spacing:-3px;margin-top:30px}.hero-bottom{display:block}.hero-bottom p{font-size:16px}.round-link{margin-top:28px;justify-content:space-between}.company-line{gap:18px;padding:25px 0}.company-line>span{width:100%}.company-line strong{font-size:16px;width:45%}.section{padding-top:60px}.section-heading{display:block}.section-heading p{margin-top:20px}.projects{grid-template-columns:1fr;gap:24px}.project-visual{height:210px}.project-word{font-size:60px}.project-body>p{min-height:0}.project-body{padding:24px}.timeline summary{grid-template-columns:1fr 20px;gap:8px}.timeline .company{grid-column:1}.timeline summary>span:nth-child(2){grid-column:1}.timeline time{grid-column:1;grid-row:3}.timeline b{grid-column:2}.about,.details-grid{grid-template-columns:1fr;gap:35px}.note{transform:none;padding:28px}.details-grid{padding-bottom:45px}footer{padding:35px 25px 23px}.footer-bottom{display:block}.footer-bottom>div{margin-top:18px;flex-wrap:wrap}.footer-title{letter-spacing:-1px}h2{letter-spacing:-1px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.repo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.repo-card{border:1px solid var(--line);padding:30px;border-radius:5px;display:flex;flex-direction:column;background:#fff}.repo-card h3{font-size:26px;margin:20px 0 16px;line-height:1.2}.repo-card p{font-size:16px;flex:1}.repo-card .tags{margin:4px 0 18px}.repo-card .text-link{align-self:flex-start;font-size:14px}.repo-card .eyebrow{color:var(--blue)}.repo-all{margin-top:25px}@media(max-width:700px){.repo-grid{grid-template-columns:1fr}.repo-card{padding:24px}.repo-card h3{font-size:24px}}
/* A responsive canvas: tactile surfaces and content-led reveals. */
header{position:relative;z-index:5}nav a{position:relative}nav a:after{content:'';position:absolute;left:0;bottom:-7px;width:100%;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .25s}nav a:hover:after,nav a[aria-current]:after{transform:scaleX(1)}nav a:hover{text-decoration:none}.hero{min-height:650px;padding-bottom:50px}.hero h1{font-size:clamp(54px,6.5vw,94px);max-width:70%;position:relative;z-index:1}.hero-bottom{max-width:100%;align-items:center}.hero-bottom p{max-width:510px}.hero-bottom .round-link{margin-top:0}.playground{position:absolute;right:0;top:120px;width:310px;padding:20px;background:#e9edff;border:1px solid #cbd3f5;border-radius:12px;box-shadow:10px 14px 0 #dce1f2;transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) rotate(3deg);transition:transform .25s,background .4s,box-shadow .3s;--accent:#244fe5}.playground[data-mode=product]{background:#e5efc8;border-color:#c9d7a7;--accent:#496623}.playground[data-mode=people]{background:#f9dfd1;border-color:#e8c3b4;--accent:#a44327}.playground-top{display:flex;justify-content:space-between;font:11px monospace;letter-spacing:1px}.focus-orbit{position:relative;height:135px;display:grid;place-items:center;isolation:isolate}.focus-orbit strong{color:var(--accent);font:58px Georgia,serif;transition:color .4s}.orbit-ring{position:absolute;border:1px solid var(--accent);opacity:.4;width:150px;height:90px;border-radius:50%;transform:rotate(-25deg);transition:transform .65s,width .65s}.orbit-ring.second{transform:rotate(40deg);width:100px;height:120px}.playground:hover .orbit-ring{transform:rotate(20deg);width:170px}.playground:hover .orbit-ring.second{transform:rotate(105deg);width:90px}.focus-copy h2{font-size:25px;letter-spacing:-.8px;margin:6px 0 12px}.focus-copy p{font-size:14px;line-height:1.5;min-height:65px;color:#475065;margin:0 0 18px}.focus-controls{display:flex;gap:6px}.focus-controls button{border:1px solid transparent;background:transparent;color:var(--ink);padding:9px 10px;flex:1;font:14px Arial;cursor:pointer;border-radius:5px;transition:background .2s,transform .2s}.focus-controls button[aria-pressed=true]{background:var(--accent);color:white;box-shadow:0 3px 8px #0002}.focus-controls button:hover{transform:translateY(-2px);border-color:var(--accent)}button:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.play-hint{display:block;font:11px monospace;margin-top:14px;color:#5b6461}.project,.repo-card{position:relative;transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .3s,border-color .3s,box-shadow .3s}.project:hover,.project:focus-within,.repo-card:hover,.repo-card:focus-within{border-color:var(--blue);box-shadow:0 16px 35px #16244618;z-index:1}.project-visual{position:relative;overflow:hidden}.project-visual>span{transition:transform .45s,opacity .35s}.hover-story{position:absolute;inset:0;padding:25px 22px;display:flex;flex-direction:column;justify-content:center;background:inherit;opacity:0;transform:translateY(18px);transition:opacity .35s,transform .4s;pointer-events:none}.hover-story>span{font:11px monospace;letter-spacing:1px;margin-bottom:18px}.hover-story strong{font-size:32px;line-height:1.1;letter-spacing:-1px;font-weight:500}.hover-story p{font-size:14px;color:inherit;margin-top:14px}.project:focus-within .hover-story,.project.expanded .hover-story{opacity:1;transform:translateY(0)}.project:focus-within .project-visual>span,.project.expanded .project-visual>span{opacity:0;transform:translateY(-18px)}.project-top{transition:letter-spacing .4s}.project:hover .project-top{letter-spacing:1.5px}.repo-card:before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(350px circle at var(--mx,50%) var(--my,50%),#244fe516,transparent 75%);transition:opacity .3s}.repo-card:hover:before{opacity:1}.repo-card h3{transition:color .25s,transform .3s}.repo-card:hover h3,.repo-card:focus-within h3{color:var(--blue);transform:translateX(4px)}.tags span{transition:background .2s,color .2s,transform .2s}.tags span:hover{background:var(--blue);color:#fff;transform:translateY(-3px)}.timeline details{position:relative;transition:background .25s}.timeline details:hover,.timeline details:focus-within{background:#e9edff}.timeline summary{transition:padding .25s}.timeline summary:hover,.timeline summary:focus-visible{padding-left:16px;padding-right:16px}.timeline details[open] .company{color:var(--blue)}.timeline details[open] p{animation:detail-in .35s ease}.company-line strong{transition:color .25s,transform .25s}.company-line strong:hover{color:var(--blue);transform:translateY(-4px)}.note{transition:transform .4s,box-shadow .4s}.note:hover{transform:rotate(-1deg) translateY(-5px);box-shadow:10px 12px 0 #18232210}.footer-title span{transition:transform .4s}.footer-title:hover span{transform:translate(12px,-12px)}.footer-title:hover{text-decoration:none}.footer-title:hover{color:#dce8a8}.brand{transition:transform .3s}.brand:hover{transform:rotate(-8deg);text-decoration:none}@keyframes detail-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media(hover:hover) and (pointer:fine){.project:hover .hover-story{opacity:1;transform:translateY(0)}.project:hover .project-visual>span{opacity:0;transform:translateY(-18px)}}@media(max-width:1150px){.hero h1{font-size:70px;letter-spacing:-4px;max-width:65%}.playground{width:270px;top:130px}.hero-bottom{max-width:58%;display:block}.hero-bottom .round-link{margin-top:24px;justify-content:space-between}.hero{min-height:700px}}@media(max-width:800px){.hero{min-height:0;display:flex;flex-direction:column}.hero h1{max-width:100%;font-size:clamp(46px,9.5vw,74px);letter-spacing:-3px}.hero-bottom{max-width:100%;order:3}.playground{position:relative;top:auto;right:auto;width:100%;max-width:440px;align-self:center;margin:15px 0 45px;transform:rotate(1.5deg);padding:23px}.focus-orbit{height:100px}.focus-copy p{min-height:0}.focus-controls button{min-height:44px}.hero-bottom .round-link{margin-top:22px}.hero>.eyebrow span{display:block}.hero>.eyebrow{display:block}.focus-copy h2{font-size:28px}.playground-top,.play-hint{font-size:12px}}@media(prefers-reduced-motion:reduce){.project,.repo-card,.playground,.note,.note:hover,.brand:hover,.tags span:hover,.company-line strong:hover{transform:none!important}.orbit-ring,.orbit-ring.second{transition:none!important}.timeline details[open] p{animation:none}.footer-title:hover span{transform:none}}
@media(min-width:1151px){.hero-bottom{max-width:58%;display:block}.hero-bottom .round-link{margin-top:24px;justify-content:space-between;max-width:510px}.hero h1{font-size:clamp(70px,6.3vw,90px)}}
.theme-toggle{display:inline-flex;gap:8px;align-items:center;justify-content:center;padding:9px 12px;min-height:44px;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);font:14px Arial,sans-serif;cursor:pointer;white-space:nowrap;transition:border-color .2s,background .2s}.theme-toggle:hover{border-color:var(--blue)}.theme-toggle>span:first-child{font-size:21px;line-height:1}header nav{margin-left:auto}header .contact{white-space:nowrap}html[data-theme=light]{color-scheme:light}html[data-theme=dark]{color-scheme:dark;--ink:#eef0f6;--muted:#b2bbca;--line:#394355;--paper:#151a23;--blue:#9daeff}html[data-theme=dark] .repo-card{background:#1d2532}html[data-theme=dark] .mint{background:#23463c}html[data-theme=dark] .peach{background:#593c34}html[data-theme=dark] .note{background:#2b342d}html[data-theme=dark] .note ul{color:var(--muted)}html[data-theme=dark] .playground{background:#242e4b;border-color:#445781;box-shadow:10px 14px 0 #0d111d;--accent:#adbaff}html[data-theme=dark] .playground[data-mode=product]{background:#303c27;border-color:#50603e;--accent:#c4df92}html[data-theme=dark] .playground[data-mode=people]{background:#4a302c;border-color:#785047;--accent:#ffc0a4}html[data-theme=dark] .focus-copy p,html[data-theme=dark] .play-hint{color:#c7ceda}html[data-theme=dark] .focus-controls button[aria-pressed=true]{color:#131923}html[data-theme=dark] .timeline details:hover,html[data-theme=dark] .timeline details:focus-within{background:#242e45}html[data-theme=dark] footer{background:#263e9f}html[data-theme=dark] .repo-card:before{background:radial-gradient(350px circle at var(--mx,50%) var(--my,50%),#9daeff20,transparent 75%)}html[data-theme=dark] .tags span:hover{color:#151a23}html[data-theme=dark] .round-link:hover b{color:#151a23}html[data-theme=dark] .skip{background:#1d2532}@media(max-width:700px){header nav{margin-left:0}.theme-toggle{margin-left:auto;padding:8px 10px}header{column-gap:12px}.theme-label{font-size:12px}}

.company-with-logo,.education-with-logo{display:flex;align-items:center;gap:14px}.org-logo{display:inline-flex;align-items:center;justify-content:center;flex:0 0 58px;width:58px;height:58px;padding:9px;background:#fff;border:1px solid #dce1e8;border-radius:10px;overflow:hidden;transition:box-shadow .25s}.org-logo img{display:block;width:100%;height:100%;object-fit:contain}.timeline details:hover .org-logo{box-shadow:0 4px 14px #152c5420}.education-logo{flex-basis:100px;width:100px;height:64px;padding:10px}.education-with-logo+p{padding-left:114px}.timeline summary>.company-with-logo>span:last-child{transform:none}html[data-theme=dark] .org-logo{background:#fff;border-color:#dce1e8}@media(max-width:700px){.company-with-logo{gap:12px}.org-logo{flex-basis:50px;width:50px;height:50px;padding:8px}.education-logo{flex-basis:84px;width:84px;height:58px}.education-with-logo{gap:12px}.education-with-logo+p{padding-left:96px}}

.project-visual.has-photo{color:#fff;text-shadow:0 2px 18px #0009}.project-visual.has-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#1113 15%,#111b 100%);z-index:0}.project-visual.has-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .55s,filter .4s}.project-visual.has-photo>span{position:relative;z-index:1}.project:hover .project-visual.has-photo>img,.project:focus-within .project-visual.has-photo>img{transform:scale(1.06);filter:saturate(1.08)}.project-visual.has-photo .hover-story{z-index:2;background:#182322e8;color:#fff;text-shadow:none}.project-visual.has-photo .hover-story p{color:#fff}.about-portrait{margin:-10px -10px 28px;position:relative;overflow:hidden;border-radius:4px;background:#182322}.about-portrait img{display:block;width:100%;height:240px;object-fit:cover;object-position:center 38%;filter:saturate(.92);transition:transform .45s,filter .45s}.about-portrait:hover img{transform:scale(1.035);filter:saturate(1.08)}.about-portrait figcaption{position:absolute;left:0;right:0;bottom:0;padding:28px 18px 14px;background:linear-gradient(transparent,#182322d9);color:#fff;font:11px monospace;letter-spacing:.7px}@media(max-width:700px){.about-portrait{margin:-6px -6px 24px}.about-portrait img{height:220px}}

.projects{grid-template-columns:repeat(2,minmax(0,1fr))}.lilac{background:#ded8f3}.case-stat{font-size:68px;letter-spacing:-5px;margin-top:32px}.work-gallery,.nus-gallery{display:grid;gap:16px;margin-top:38px}.work-gallery{grid-template-columns:repeat(4,1fr)}.nus-gallery{grid-template-columns:repeat(4,1fr)}.work-gallery figure,.nus-gallery figure{margin:0;position:relative;overflow:hidden;border-radius:6px;background:#182322;min-height:250px}.work-gallery img,.nus-gallery img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .45s,filter .45s}.work-gallery figure:hover img,.nus-gallery figure:hover img{transform:scale(1.04);filter:saturate(1.12)}.work-gallery figcaption,.nus-gallery figcaption{position:absolute;inset:auto 0 0;padding:36px 14px 12px;background:linear-gradient(transparent,#111d);color:#fff;font:11px monospace;letter-spacing:.6px}.leadership-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.leadership-grid article{border:1px solid var(--line);border-radius:6px;padding:26px;background:var(--paper);transition:transform .25s,border-color .25s,box-shadow .25s}.leadership-grid article:hover{transform:translateY(-5px);border-color:var(--blue);box-shadow:0 14px 30px #16244614}.leadership-grid h3{font-size:24px;margin:20px 0 12px}.leadership-grid p{font-size:15px;margin:0}.leadership-grid .eyebrow{color:var(--blue)}.education-copy{display:grid;grid-template-columns:1fr 1fr;gap:40px}.education-copy>div{border-top:1px solid var(--line);padding-top:28px}.nus-gallery figure{height:300px}.nus-gallery figure:nth-child(3) img{object-position:center}.earlier-learning{margin-top:24px;font-size:14px}html[data-theme=dark] .lilac{background:#3c3556}@media(max-width:900px){nav a:nth-child(3),nav a:nth-child(4){display:none}.leadership-grid{grid-template-columns:repeat(2,1fr)}.nus-gallery{grid-template-columns:repeat(2,1fr)}.work-gallery{grid-template-columns:1fr 1fr}.work-gallery figure{height:280px}}@media(max-width:700px){.projects,.leadership-grid,.education-copy,.nus-gallery,.work-gallery{grid-template-columns:1fr}.work-gallery figure,.nus-gallery figure{height:300px}.leadership-grid article{padding:22px}.case-stat{font-size:58px}.education-with-logo+p{padding-left:0}}
