@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;600;700&family=Noto+Serif+SC:wght@500;600;700&display=swap";
:root{--ink:#172332;--muted:#667487;--paper:#f7f8fa;--white:#fff;--line:#dbe1e8;--blue:#315fe8;--blue-pale:#edf2ff;--lime:#dfe9a6;--serif:"Noto Serif SC",serif;--sans:"Noto Sans SC",sans-serif;--mono:"DM Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}.shell{width:min(1180px,100% - 48px);margin-inline:auto}.nav{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:88px;display:flex}.wordmark{font:500 17px/1 var(--mono);letter-spacing:-.1em}.wordmark span{color:var(--blue)}.nav-links{color:var(--muted);gap:24px;font-size:14px;display:flex}.nav-links a:hover,.back:hover{color:var(--blue)}.back{color:var(--muted);font-size:14px}.eyebrow{color:var(--blue);font:500 11px/1.2 var(--mono);letter-spacing:.11em;margin:0}.hero{padding:clamp(76px,13vw,160px) 0 68px}.hero h1,.archive-head h1,.detail-head h1{max-width:1000px;font:600 clamp(46px,7vw,92px)/1.13 var(--serif);letter-spacing:-.055em;margin:18px 0 55px}.hero h1 em{color:var(--blue);font-style:normal}.hero-bottom{border-top:1px solid var(--line);justify-content:space-between;align-items:end;gap:24px;padding-top:19px;display:flex}.hero-bottom p{color:var(--muted);margin:0;font-size:15px;line-height:1.8}.text-link{font-size:14px;font-weight:600}.text-link span{color:var(--blue);padding-left:8px}.statement{background:var(--ink);color:#fff}.statement div{padding:60px 0}.statement p{max-width:760px;font:500 clamp(25px,3.2vw,43px)/1.52 var(--serif);letter-spacing:-.025em;margin:0}.section{padding:120px 0}.section-heading{grid-template-columns:1fr 2fr 1fr;align-items:end;gap:20px;margin-bottom:42px;display:grid}.section-heading h2,.about h2{font:600 clamp(31px,4vw,52px)/1.25 var(--serif);letter-spacing:-.045em;margin:0}.section-heading>p:last-child{color:var(--muted);margin:0;font-size:14px;line-height:1.7}.filters{gap:8px;padding-bottom:24px;display:flex;overflow-x:auto}.filters button,.archive-filter a{border:1px solid var(--line);color:var(--muted);font:500 12px var(--sans);background:0 0;border-radius:99px;flex:none;padding:8px 13px}.filters .active,.archive-filter .active{color:var(--ink);background:var(--lime);border-color:var(--lime)}.project-grid{grid-template-columns:repeat(2,1fr);gap:52px 24px;display:grid}.project-card:nth-child(3){grid-column:span 2;grid-template-columns:1.52fr 1fr;align-items:end;gap:24px;display:grid}.cover,.archive-cover{background:var(--blue-pale);aspect-ratio:4/3;display:block;position:relative;overflow:hidden}.project-card:nth-child(3) .cover{aspect-ratio:16/8}.cover img,.archive-cover img{object-fit:cover;width:100%;height:100%;transition:transform .55s cubic-bezier(.2,.8,.2,1);display:block}.cover:hover img,.archive-cover:hover img{transform:scale(1.035)}.cover-arrow{background:#ffffffed;border-radius:50%;place-items:center;width:34px;height:34px;font-size:15px;display:grid;position:absolute;top:14px;right:14px}.cover-placeholder{height:100%;color:var(--blue);font:500 12px var(--mono);text-transform:uppercase;place-items:center;display:grid}.project-info{padding-top:15px}.project-info p,.archive-card p,.detail-head>p{color:var(--muted);font:12px var(--mono);margin:0 0 7px}.project-info h3,.archive-card h2{font:600 21px/1.4 var(--serif);margin:0 0 8px}.project-info span,.archive-card span{color:var(--muted);font-size:13px}.archive-link{border-bottom:1px solid;gap:10px;margin-top:58px;padding-bottom:4px;font-weight:600;display:inline-flex}.archive-link span{color:var(--blue)}.about{border-top:1px solid var(--line);grid-template-columns:1fr 1.5fr;gap:70px;padding:106px 0;display:grid}.experience-list article{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:22px;margin-bottom:28px;padding:0 0 28px;display:grid}.experience-list p{color:var(--muted);margin:0;font-size:13px;line-height:1.85}.experience-list h3{font:600 18px var(--serif);margin:8px 0 3px}.experience-list span{color:var(--blue);font-size:12px}.footer{color:var(--muted);border-top:1px solid var(--line);justify-content:space-between;gap:24px;padding:25px 0 38px;font-size:12px;display:flex}.footer p{margin:0}.footer a:hover{color:var(--blue)}.archive{min-height:100vh}.archive-head{border-bottom:1px solid var(--line);padding:80px 0 44px}.archive-head h1{margin:15px 0;font-size:clamp(48px,6vw,76px)}.archive-head>p:last-child{color:var(--muted);margin:0}.archive-filter{gap:8px;padding:28px 0 42px;display:flex;overflow:auto}.archive-grid{grid-template-columns:repeat(3,1fr);gap:42px 20px;padding-bottom:110px;display:grid}.archive-card .archive-cover{margin-bottom:16px}.archive-card .summary{font:13px/1.75 var(--sans);margin-top:12px}.detail{min-height:100vh}.detail-head{max-width:820px;padding:98px 0 55px}.detail-head h1{margin:16px 0 28px;font-size:clamp(44px,6vw,78px)}.detail-head>p:last-child{max-width:650px;font:17px/1.85 var(--sans)}.detail-cover{aspect-ratio:16/8;background:var(--blue-pale);width:100%;position:relative;overflow:hidden}.detail-cover img{object-fit:cover}.detail-body{grid-template-columns:220px 1fr;gap:90px;max-width:920px;padding:74px 0 120px;display:grid}.detail-body aside>p{color:var(--muted);font:11px var(--mono);margin:0 0 8px}.detail-body aside strong{margin-bottom:35px;line-height:1.65;display:block}.detail-body article h2{font:600 28px var(--serif);margin:0 0 22px}.detail-body li{color:#455366;margin-bottom:16px;padding-left:7px;line-height:1.85}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags span{border:1px solid var(--line);color:var(--muted);border-radius:99px;padding:5px 8px;font-size:11px}.primary-button{background:var(--blue);color:#fff;margin-top:26px;padding:12px 16px;font-size:14px;display:inline-block}.upload-page{max-width:720px;padding-top:110px}.upload-page h1{font:600 54px var(--serif);margin:14px 0}.upload-page>p{color:var(--muted);line-height:1.8}.upload-box{cursor:pointer;background:var(--white);border:1px dashed #aab6c7;place-items:center;height:220px;margin:38px 0 16px;display:grid}.upload-box input{display:none}.upload-box span{color:var(--blue);font-weight:600}.status{font-size:14px}.upload-page textarea{border:1px solid var(--line);width:100%;height:100px;font:12px var(--mono);padding:12px}@media (max-width:760px){.shell{width:min(100% - 32px,1180px)}.nav{min-height:70px}.hero{padding-top:80px}.hero h1{margin-bottom:40px}.hero-bottom,.section-heading,.about{display:block}.hero-bottom .text-link{margin-top:22px;display:inline-block}.statement div{padding:42px 0}.section{padding:76px 0}.section-heading h2{margin:13px 0}.filters{margin-top:30px}.project-grid,.project-card:nth-child(3),.archive-grid{grid-template-columns:1fr}.project-card:nth-child(3){grid-column:auto;display:block}.project-card:nth-child(3) .cover{aspect-ratio:4/3}.about{padding:70px 0}.about h2{margin:13px 0 42px}.experience-list article,.detail-body{grid-template-columns:1fr;gap:20px}.experience-list article{gap:12px}.footer{flex-wrap:wrap}.archive-head{padding:64px 0 35px}.archive-grid{padding-bottom:70px}.detail-head{padding:62px 0 38px}.detail-body{padding:50px 0 80px}.detail-body aside{grid-template-columns:1fr 1fr;gap:8px;display:grid}.detail-body aside strong{margin:0}}.profile-hero{padding:clamp(82px,13vw,156px) 0 54px}.profile-hero h1{font:600 clamp(76px,15vw,178px)/.86 var(--serif);letter-spacing:-.095em;margin:18px 0 58px}.profile-meta{border-top:1px solid var(--line);justify-content:space-between;align-items:end;gap:28px;padding-top:20px;display:flex}.profile-meta>p{color:var(--muted);margin:0;font-size:15px;line-height:1.85}.contact-list{color:var(--muted);font:12px var(--mono);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px 18px;display:flex}.contact-list a{color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:3px}.contact-list a:hover{color:var(--blue);border-color:var(--blue)}.section-kicker{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 0;display:flex}.section-kicker>span{color:var(--muted);font:11px var(--mono)}.resume-section{padding:80px 0 114px}.resume-intro{grid-template-columns:1.08fr 1fr;gap:10%;padding:43px 0 64px;display:grid}.resume-intro h2,.section-title h2{font:600 clamp(34px,4.5vw,58px)/1.22 var(--serif);letter-spacing:-.055em;margin:0}.resume-intro p{color:#4c5b6e;max-width:460px;margin:0 0 18px;font-size:15px;line-height:2}.experience-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.experience-details summary{cursor:pointer;justify-content:space-between;align-items:center;padding:19px 0;font-size:14px;list-style:none;display:flex}.experience-details summary::-webkit-details-marker{display:none}.experience-details summary>span:last-child{color:var(--blue);font-size:22px;font-weight:300;transition:transform .2s}.experience-details[open] summary>span:last-child{transform:rotate(45deg)}.experience-details .experience-list{padding-top:17px}.featured-section,.archive-section{padding:0 0 116px}.section-title{justify-content:space-between;align-items:end;gap:30px;padding:40px 0 42px;display:flex}.section-title p{max-width:330px;color:var(--muted);margin:0;font-size:14px;line-height:1.8}.featured-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.featured-card{min-height:300px;color:var(--ink);flex-direction:column;padding:22px;transition:transform .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.featured-card:hover{transform:translateY(-4px);box-shadow:0 16px 30px #1723321f}.featured-card.cobalt{background:#dce7ff}.featured-card.lime{background:var(--lime)}.featured-card.violet{background:#e6e1f7}.featured-card.orange{background:#fde8d7}.featured-index{font:500 12px var(--mono);opacity:.66}.featured-card>p{font:500 11px var(--mono);letter-spacing:.05em;margin:46px 0 9px}.featured-card h3{max-width:80%;font:600 clamp(26px,3.2vw,41px)/1.2 var(--serif);letter-spacing:-.045em;margin:0}.featured-card>div{color:#435166;justify-content:space-between;align-items:end;gap:18px;margin-top:auto;font-size:13px;line-height:1.65;display:flex}.featured-card>div span{max-width:360px}.featured-card b{width:32px;height:32px;color:var(--ink);border:1px solid #17233240;border-radius:50%;flex:none;place-items:center;font-size:15px;display:grid}.archive-groups{border-top:1px solid var(--line);grid-template-columns:repeat(2,1fr);display:grid}.archive-group{border-bottom:1px solid var(--line);grid-template-columns:45px 1fr 30px;align-items:start;column-gap:14px;padding:25px 0;display:grid}.archive-group:nth-child(odd){border-right:1px solid var(--line);padding-right:28px}.archive-group:nth-child(2n){padding-left:28px}.archive-group>span{color:var(--blue);font:11px var(--mono)}.archive-group h3{font:600 22px var(--serif);margin:0 0 7px}.archive-group p{color:var(--muted);grid-column:2;margin:0;font-size:13px;line-height:1.65}.archive-group b{color:var(--blue);grid-area:1/3/span 2;align-self:center;font-size:17px;font-weight:400}.archive-group:hover h3{color:var(--blue)}@media (max-width:760px){.profile-hero{padding:86px 0 44px}.profile-hero h1{margin-bottom:48px;font-size:clamp(72px,25vw,120px)}.profile-meta,.section-title{display:block}.contact-list{justify-content:flex-start;margin-top:22px}.resume-section{padding:52px 0 74px}.resume-intro{padding:29px 0 38px;display:block}.resume-intro h2{margin-bottom:27px}.featured-section,.archive-section{padding-bottom:76px}.section-title{padding:27px 0 30px}.section-title p{margin-top:14px}.featured-grid,.archive-groups{grid-template-columns:1fr}.featured-card{min-height:260px}.archive-group:nth-child(odd),.archive-group:nth-child(2n){border-right:0;padding:22px 0}.archive-group:nth-child(2n){border-top:0}.archive-group h3{font-size:20px}}.classic-hero{padding:54px 0 90px}.hero-location{border:1px solid var(--line);color:#56647a;background:#ffffff8f;border-radius:99px;padding:10px 18px;font-size:14px;display:inline-flex}.classic-hero-grid{grid-template-columns:minmax(0,1.55fr) minmax(320px,.8fr);align-items:center;gap:70px;padding-top:38px;display:grid}.hero-copy h1{font:600 clamp(64px,8.4vw,112px)/.93 var(--serif);letter-spacing:-.09em;margin:0}.hero-copy h1 em{color:var(--blue);font-style:normal}.hero-degree{font:500 20px/1.6 var(--serif);margin:30px 0 0}.hero-line{color:#59697d;font:19px/1.65 var(--serif);margin:30px 0 0}.skill-pills{flex-wrap:wrap;gap:10px;margin-top:40px;display:flex}.skill-pills span{border:1px solid var(--line);color:#59697d;font:14px var(--serif);background:#ffffff85;border-radius:99px;padding:10px 19px}.hero-actions{gap:18px;margin-top:46px;display:flex}.hero-actions a{margin:0}.secondary-button{border:1px solid var(--line);background:var(--white);padding:12px 22px;font-size:15px;display:inline-block}.secondary-button:hover{color:var(--blue);border-color:var(--blue)}.contact-card{border:1px solid var(--line);background:var(--white);border-radius:18px;overflow:hidden;box-shadow:0 13px 30px #17233212}.contact-card>p{color:#536176;font:18px var(--serif);border-bottom:1px solid var(--line);margin:0;padding:24px 34px}.contact-card>a,.contact-card>span{border-bottom:1px solid var(--line);color:#536176;justify-content:space-between;align-items:center;min-height:78px;padding:18px 34px;font-size:17px;display:flex}.contact-card>a:hover{color:var(--blue)}.contact-card>span{border:0}.contact-card small{color:#98a2b2;font-size:13px}.resume-section{padding-top:20px}.resume-full{padding:12px 0 0}.resume-full section{border-top:1px solid var(--line);padding:25px 0}.resume-full h3{color:var(--blue);font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;margin:0 0 18px}.resume-full article{gap:26px;display:flex}.resume-full article>b{font:600 20px var(--serif)}.resume-full article>span{color:var(--muted);margin-left:14px;font-size:13px}.resume-entry{grid-template-columns:150px 1fr;padding:15px 0;gap:22px!important;display:grid!important}.resume-entry>p{color:var(--muted);font:11px var(--mono);margin:2px 0 0}.resume-entry div{grid-template-columns:max-content 1fr;gap:3px 15px;display:grid}.resume-entry div>b{font:600 18px var(--serif)}.resume-entry div>span{color:var(--blue);align-self:center;font-size:12px}.resume-entry em{color:#506074;max-width:800px;font:13px/1.8 var(--sans);grid-column:1/-1;margin-top:7px;font-style:normal}.resume-side-by-side{grid-template-columns:1fr 1fr;gap:65px;display:grid}.resume-side-by-side ul{color:#506074;margin:0;padding-left:18px;font-size:13px;line-height:2}.resume-side-by-side p{color:#506074;margin:0;font-size:13px;line-height:1.9}.video-player{aspect-ratio:16/9;object-fit:contain;background:0 0;width:100%;height:auto;max-height:none;margin:0 0 45px;display:block}.video-empty{background:var(--blue-pale);color:#506074;margin-bottom:38px;padding:24px;font-size:14px;line-height:1.8}.video-empty a{color:var(--blue);border-bottom:1px solid var(--blue)}@media (max-width:760px){.classic-hero{padding:30px 0 62px}.classic-hero-grid{grid-template-columns:1fr;gap:42px;padding-top:32px}.hero-copy h1{font-size:clamp(63px,20vw,92px)}.hero-degree{margin-top:23px;font-size:17px}.hero-line{margin-top:18px;font-size:16px}.skill-pills{gap:8px;margin-top:27px}.skill-pills span{padding:8px 12px;font-size:12px}.hero-actions{margin-top:32px}.contact-card>p,.contact-card>a,.contact-card>span{padding-left:20px;padding-right:20px}.contact-card>a,.contact-card>span{min-height:64px;font-size:14px}.resume-entry{grid-template-columns:1fr;gap:6px!important}.resume-entry div{display:block}.resume-entry div>span{margin-top:5px;display:block}.resume-side-by-side{grid-template-columns:1fr;gap:0}.resume-side-by-side>div+div{border-top:1px solid var(--line);padding-top:25px}}.hero-actions .primary-button,.hero-actions .secondary-button{justify-content:center;align-items:center;width:198px;min-height:54px;margin:0;padding:0 18px;font-size:15px;display:inline-flex}.resume-full h3{color:var(--ink);font:700 15px/1.4 var(--sans);letter-spacing:0;text-transform:none}.resume-side-by-side li{margin-bottom:10px}.skill-list{list-style:none;padding-left:0!important}.skill-list li{padding-left:0}.skill-list b{min-width:76px;color:var(--ink);font-weight:700;display:inline-block}.archive-nav{justify-content:flex-start}.archive-nav .back{font-weight:600}.design-showcase{padding-bottom:116px}.design-masonry{columns:3 260px;column-gap:16px}.design-masonry figure{break-inside:avoid;background:var(--white);border:1px solid var(--line);margin:0 0 18px}.design-masonry img{width:100%;height:auto;display:block}.design-masonry figcaption{justify-content:space-between;gap:10px;padding:12px 13px 14px;display:flex}.design-masonry figcaption b{font:700 14px var(--sans)}.design-masonry figcaption span{color:var(--muted);text-align:right;font-size:12px}.design-masonry figure:hover{border-color:var(--blue)}@media (max-width:760px){.hero-actions{gap:10px}.hero-actions .primary-button,.hero-actions .secondary-button{width:calc(50% - 5px);min-height:50px;padding:0 8px;font-size:13px}.design-showcase{padding-bottom:76px}.design-masonry{columns:2 150px;column-gap:10px}.design-masonry figure{margin-bottom:10px}.design-masonry figcaption{padding:10px;display:block}.design-masonry figcaption span{text-align:left;margin-top:4px;display:block}}.archive-design-masonry{margin-top:2rem}.article-body{color:var(--ink-muted);margin-top:2rem;line-height:2}.article-body p{white-space:pre-line;margin:0 0 1.2rem}.link-collection{gap:.75rem;margin-top:2rem;display:grid}.link-collection h2{margin:0 0 .25rem}.link-collection a{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:12px;justify-content:space-between;gap:1rem;padding:1rem 1.1rem;display:flex}.link-collection a:hover{border-color:var(--accent);color:var(--accent)}.writing-detail{grid-template-columns:minmax(0,760px);justify-content:center}.writing-detail>article{max-width:760px}.writing-detail .link-collection{margin-top:0}.prototype-showcase{margin:4rem 0}.prototype-showcase h2{font:700 clamp(1.5rem, 2vw, 2rem)/1.25 var(--serif);margin:.4rem 0 1.5rem}.prototype-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;display:grid}.prototype-grid article{border:1px solid var(--line);background:var(--white);border-radius:16px;overflow:hidden}.prototype-grid article>p{margin:0;padding:.85rem 1rem;font-weight:700}.prototype-grid iframe{aspect-ratio:390/844;background:#eee;border:0;width:100%;display:block}.data-prototype .prototype-grid{grid-template-columns:minmax(0,1fr)}.data-prototype .prototype-grid iframe{aspect-ratio:16/10;min-height:min(78vh,920px)}.project-gallery{columns:2 280px;column-gap:1rem;margin:3rem 0}.project-gallery figure{break-inside:avoid;border:1px solid var(--line);margin:0 0 1rem}.project-gallery img{width:100%;height:auto;display:block}.project-gallery figcaption{color:var(--muted);padding:.75rem 1rem;font-size:14px}.attachment-collection{gap:.75rem;margin-top:2rem;display:grid}.attachment-collection h2{margin:0 0 .25rem}.attachment-collection a{border:1px solid var(--line);color:var(--ink);border-radius:12px;justify-content:space-between;gap:1rem;padding:1rem 1.1rem;display:flex}.attachment-collection a:hover{border-color:var(--accent);color:var(--accent)}@media (max-width:760px){.prototype-grid{grid-template-columns:1fr}.prototype-grid iframe{aspect-ratio:390/620}}.document-reader{margin:4rem 0}.document-reader>div{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.2rem;display:flex}.document-reader h2{font:700 clamp(1.5rem,2vw,2rem)/1.25 var(--serif);margin:.4rem 0 0}.document-reader a{color:var(--blue);white-space:nowrap;border-bottom:1px solid;font-size:14px}.document-reader iframe{border:1px solid var(--line);background:#fff;width:100%;height:min(82vh,1100px);min-height:640px;display:block}@media (max-width:760px){.document-reader>div{flex-direction:column;align-items:start}.document-reader iframe{height:75vh;min-height:560px}}
