:root{--ink:#131313;--paper:#efeeec;--on-ink:#f2f1ef;--on-ink-dim:#9b9b98;--on-paper:#131313;--on-paper-dim:#565653;--rule-dark:hsla(40,10%,94%,.18);--rule-light:hsla(0,0%,7%,.16);--font:"Hanken Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif;--shell:1320px;--pad:clamp(22px,4.5vw,68px);--bar-top:66px;--bar-bottom:82px;--bg:var(--ink);--fg:var(--on-ink);--fg-dim:var(--on-ink-dim);--rule:var(--rule-dark)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-weight:400;font-size:clamp(18px,1.35vw,22px);line-height:1.5;letter-spacing:-.008em;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-weight:300;letter-spacing:-.03em;line-height:1}:focus-visible{outline:1px solid currentColor;outline-offset:4px}::selection{background:var(--fg);color:var(--bg)}.deck{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--fg);transition:background .4s ease,color .4s ease}.deck--ink{--bg:var(--ink);--fg:var(--on-ink);--fg-dim:var(--on-ink-dim);--rule:var(--rule-dark)}.deck--paper{--bg:var(--paper);--fg:var(--on-paper);--fg-dim:var(--on-paper-dim);--rule:var(--rule-light)}.shell{width:100%;max-width:var(--shell);margin:0 auto;padding-inline:var(--pad)}.bar-top{position:fixed;top:0;left:0;right:0;z-index:40;height:var(--bar-top);background:var(--bg);border-bottom:1px solid var(--rule)}.bar-top-inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:20px}.bar-name{font-size:clamp(1rem,1.15vw,1.15rem);letter-spacing:-.01em}.bar-name span{color:var(--fg-dim)}.bar-menu{display:flex;align-items:center;gap:12px;background:none;border:0;padding:8px 0;font:inherit;font-size:clamp(.95rem,1.05vw,1.1rem);color:var(--fg);cursor:pointer}.bar-menu-lines{display:inline-flex;flex-direction:column;gap:4px;width:22px}.bar-menu-lines i{height:1px;background:currentColor;display:block}.progress{position:fixed;top:var(--bar-top);left:0;z-index:41;height:2px;background:var(--fg);transition:width .5s ease}.bar-bottom{position:fixed;bottom:0;left:0;right:0;z-index:40;height:var(--bar-bottom);background:var(--bg);border-top:1px solid var(--rule)}.bar-bottom-inner{height:100%;justify-content:space-between;gap:16px}.bar-bottom-inner,.step{display:flex;align-items:center}.step{gap:14px;font-size:clamp(.95rem,1.1vw,1.15rem);color:var(--fg);transition:opacity .25s}.step--next{text-align:right;flex-direction:row-reverse}.step-arrow{width:44px;height:44px;border-radius:50%;border:1px solid var(--rule);display:grid;place-items:center;font-size:1.1rem;flex:none;transition:background .25s,color .25s,border-color .25s}.step:hover .step-arrow{background:var(--fg);color:var(--bg);border-color:var(--fg)}.step-label{display:block;line-height:1.2}.step-hint{display:block;font-size:.8em;color:var(--fg-dim)}.step--disabled{opacity:.28;pointer-events:none}.counter{font-size:clamp(.95rem,1.1vw,1.15rem);color:var(--fg-dim);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.counter b{font-weight:400;color:var(--fg)}.index{position:fixed;inset:0;z-index:60;background:var(--bg);color:var(--fg);overflow-y:auto;padding-block:var(--bar-top) 60px;animation:fade .3s ease}.index-close{position:absolute;top:0;right:var(--pad);height:var(--bar-top);display:flex;align-items:center;gap:12px;background:none;border:0;font:inherit;font-size:clamp(.95rem,1.05vw,1.1rem);color:var(--fg);cursor:pointer}.index-list{list-style:none;margin:clamp(24px,4vw,56px) 0 0;padding:0;border-top:1px solid var(--rule)}.index-item a{display:flex;align-items:baseline;gap:clamp(18px,3vw,48px);padding:clamp(16px,2.2vw,26px) 0;border-bottom:1px solid var(--rule);transition:padding-left .3s ease,color .3s ease}.index-item a:hover{padding-left:14px}.index-num{font-size:clamp(.9rem,1.05vw,1.1rem);color:var(--fg-dim);flex:none}.index-label{font-size:clamp(1.9rem,5.2vw,4.2rem);font-weight:300;letter-spacing:-.035em;line-height:1}.index-item[data-current=true] .index-label{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.16em}@keyframes fade{0%{opacity:0}to{opacity:1}}.slide{min-height:100vh;min-height:100dvh;padding-top:calc(var(--bar-top) + clamp(28px, 5vw, 72px));padding-bottom:calc(var(--bar-bottom) + clamp(28px, 5vw, 64px));display:flex;flex-direction:column;justify-content:center;animation:rise .5s ease both}.slide--dense{justify-content:flex-start}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.slide-label{display:flex;align-items:baseline;gap:14px;font-size:clamp(1rem,1.15vw,1.2rem);color:var(--fg-dim);margin:0 0 clamp(20px,3vw,40px)}.slide-label b{font-weight:400;color:var(--fg)}.slide-title{font-size:clamp(2.6rem,6.4vw,6.2rem);line-height:.95;max-width:24ch;margin-bottom:clamp(24px,3.4vw,48px)}.lead{font-size:clamp(1.35rem,2.4vw,2.4rem);font-weight:300;line-height:1.2;letter-spacing:-.026em;max-width:36ch;margin:0 0 clamp(24px,3vw,44px)}.copy{max-width:60ch;color:var(--fg-dim);font-size:clamp(1.2rem,1.5vw,1.55rem);line-height:1.5}.copy p{margin:0 0 .9em}.copy p:last-child{margin-bottom:0}.scroll-hint{font-size:clamp(1rem,1.15vw,1.18rem);color:var(--fg-dim);margin-top:clamp(20px,3vw,36px)}.cover-eyebrow{display:flex;flex-wrap:wrap;gap:8px 30px;font-size:clamp(1rem,1.2vw,1.25rem);color:var(--fg-dim);margin-bottom:clamp(28px,4vw,56px)}.cover-name{font-size:clamp(4rem,15.5vw,14rem);line-height:.85;letter-spacing:-.045em;margin-left:-.045em}.cover-roles{font-size:clamp(1.5rem,3.4vw,3.4rem);font-weight:300;line-height:1.1;letter-spacing:-.03em;margin:clamp(26px,4vw,52px) 0 0;max-width:30ch}.cover-meta{display:flex;flex-wrap:wrap;gap:12px clamp(26px,4vw,60px);margin-top:clamp(30px,4.5vw,64px);font-size:clamp(1rem,1.2vw,1.2rem);color:var(--fg-dim)}.cover-meta a{border-bottom:1px solid var(--rule);padding-bottom:3px}.cover-meta a:hover{color:var(--fg);border-bottom-color:var(--fg)}.figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:clamp(20px,3vw,48px);gap:clamp(20px,3vw,48px);margin-top:clamp(36px,5vw,72px);border-top:1px solid var(--rule);padding-top:clamp(22px,3vw,36px)}.figure-value{font-size:clamp(2.6rem,5vw,4.4rem);font-weight:300;line-height:1;letter-spacing:-.04em}.figure-label{font-size:clamp(.95rem,1.1vw,1.15rem);color:var(--fg-dim);margin-top:10px}.rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.row{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(0,1.5fr);grid-gap:8px clamp(22px,3vw,56px);gap:8px clamp(22px,3vw,56px);padding:clamp(18px,2.2vw,28px) 0;border-bottom:1px solid var(--rule);align-items:baseline}.row-title{font-size:clamp(1.3rem,2vw,1.85rem);font-weight:300;letter-spacing:-.025em;line-height:1.14}.row-text{color:var(--fg-dim);font-size:clamp(1.12rem,1.35vw,1.4rem);line-height:1.45}.facts{margin:clamp(28px,4vw,48px) 0 0;border-top:1px solid var(--rule);max-width:760px}.fact{display:grid;grid-template-columns:180px minmax(0,1fr);grid-gap:18px;gap:18px;padding:15px 0;border-bottom:1px solid var(--rule);font-size:clamp(1.08rem,1.3vw,1.3rem)}.fact dt{color:var(--fg-dim)}.fact dd{margin:0}.fact a{border-bottom:1px solid var(--rule);padding-bottom:2px}.fact a:hover{border-bottom-color:currentColor}.acc{border-top:1px solid var(--rule)}.acc-item{border-bottom:1px solid var(--rule)}.acc-head{width:100%;display:grid;grid-template-columns:104px minmax(0,1fr) 52px;grid-gap:clamp(16px,2vw,36px);gap:clamp(16px,2vw,36px);align-items:center;background:none;border:0;padding:clamp(20px,2.4vw,30px) 0;font:inherit;color:inherit;text-align:left;cursor:pointer}.acc-head--nostamp{grid-template-columns:minmax(0,1fr) 52px}.acc-stamp{font-size:clamp(1rem,1.2vw,1.25rem);color:var(--fg-dim)}.acc-title{display:block;font-size:clamp(1.5rem,2.7vw,2.5rem);font-weight:300;letter-spacing:-.03em;line-height:1.06}.acc-sub{display:block;font-size:clamp(1.05rem,1.22vw,1.26rem);color:var(--fg-dim);margin-top:9px}.acc-plus{justify-self:end;width:42px;height:42px;border-radius:50%;border:1px solid var(--rule);position:relative;flex:none;transition:background .3s,border-color .3s}.acc-plus:after,.acc-plus:before{content:"";position:absolute;inset:50% 12px auto 12px;height:1px;background:currentColor;transition:transform .3s}.acc-plus:after{transform:rotate(90deg)}.acc-head[aria-expanded=true] .acc-plus:after{transform:rotate(0deg)}.acc-head:hover .acc-plus{border-color:currentColor}.acc-panel{overflow:hidden;display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.4,0,.2,1)}.acc-panel[data-open=true]{grid-template-rows:1fr}.acc-panel-inner{min-height:0}.acc-body{padding:0 0 clamp(24px,3vw,34px);max-width:62ch;color:var(--fg-dim);font-size:clamp(1.15rem,1.42vw,1.45rem);line-height:1.5;margin-left:calc(104px + clamp(16px, 2vw, 36px))}.acc-body--nostamp{margin-left:0}.acc-body p{margin:0 0 .8em}.acc-body p:last-child{margin-bottom:0}.filters{display:flex;flex-wrap:wrap;gap:10px 26px;margin-bottom:clamp(26px,3.5vw,44px)}.filter{background:none;border:0;padding:0 0 4px;font:inherit;font-size:clamp(1.05rem,1.28vw,1.28rem);color:var(--fg-dim);cursor:pointer;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}.filter:hover{color:var(--fg)}.filter[aria-pressed=true]{color:var(--fg);border-bottom-color:var(--fg)}.filter sup{font-size:.66em;margin-left:5px;color:var(--fg-dim)}.sector{margin-top:clamp(30px,4vw,54px)}.sector-label{font-size:clamp(1rem,1.15vw,1.2rem);color:var(--fg-dim);margin:0 0 12px}.project{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(0,1.5fr) minmax(150px,.65fr);grid-gap:6px clamp(20px,2.8vw,44px);gap:6px clamp(20px,2.8vw,44px);padding:17px 0;border-bottom:1px solid var(--rule);align-items:baseline}.project:first-child{border-top:1px solid var(--rule)}.project-client{font-size:clamp(1.22rem,1.55vw,1.55rem);font-weight:300;letter-spacing:-.02em}.project-title{font-size:clamp(1.08rem,1.3vw,1.3rem)}.project-stack,.project-title{color:var(--fg-dim);line-height:1.45}.project-stack{font-size:clamp(.98rem,1.12vw,1.15rem);text-align:right}.tech-group{padding-block:clamp(24px,3vw,40px);border-bottom:1px solid var(--rule);display:grid;grid-template-columns:240px minmax(0,1fr);grid-gap:14px clamp(22px,3vw,52px);gap:14px clamp(22px,3vw,52px)}.tech-group:first-child{border-top:1px solid var(--rule)}.tech-name{font-size:clamp(1rem,1.2vw,1.2rem);color:var(--fg-dim);margin:0}.tech-items{font-size:clamp(1.4rem,2.5vw,2.3rem);font-weight:300;line-height:1.28;letter-spacing:-.025em;margin:0}.awards{list-style:none;margin:0;padding:0;column-count:2;column-gap:clamp(28px,4vw,72px);border-top:1px solid var(--rule)}.awards li{page-break-inside:avoid;break-inside:avoid;padding:15px 0;border-bottom:1px solid var(--rule);font-size:clamp(1.12rem,1.35vw,1.38rem);line-height:1.45;color:var(--fg-dim)}.awards li.is-key{color:var(--fg)}.plain-list{list-style:none;margin:0;padding:0}.edu-item,.plain-list li{font-size:clamp(1.08rem,1.3vw,1.3rem);padding:13px 0;border-bottom:1px solid var(--rule);color:var(--fg-dim)}.trio{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:clamp(26px,3.5vw,60px);gap:clamp(26px,3.5vw,60px);margin-top:clamp(36px,5vw,68px)}.trio h3{font-size:clamp(1rem,1.15vw,1.2rem);font-weight:400;color:var(--fg-dim);margin-bottom:14px}.edu-item strong{display:block;font-weight:400;color:var(--fg);margin-bottom:4px}.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));border-top:1px solid var(--rule);border-left:1px solid var(--rule)}.book{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:clamp(24px,2.8vw,38px);min-height:210px;display:flex;flex-direction:column;justify-content:space-between}.book h3{font-size:clamp(1.45rem,2.2vw,2rem);line-height:1.06}.book p{margin:12px 0 0;font-size:clamp(1.08rem,1.28vw,1.28rem);color:var(--fg-dim);line-height:1.45}.book-index{font-size:clamp(.95rem,1.1vw,1.1rem);color:var(--fg-dim);margin-bottom:18px}.book-note{font-size:clamp(.92rem,1.05vw,1.05rem);color:var(--fg-dim);margin-top:22px}.contact-mail{display:inline-block;font-size:clamp(1.9rem,7.6vw,6.6rem);font-weight:300;letter-spacing:-.042em;line-height:1;margin-top:clamp(26px,4vw,52px);padding-bottom:10px;border-bottom:1px solid var(--rule);overflow-wrap:anywhere;transition:border-color .3s}.contact-mail:hover{border-bottom-color:var(--fg)}.contact-links{display:flex;flex-wrap:wrap;gap:12px clamp(28px,4vw,56px);margin-top:clamp(32px,4vw,56px);font-size:clamp(1.05rem,1.25vw,1.25rem);color:var(--fg-dim)}.contact-links a{border-bottom:1px solid var(--rule);padding-bottom:3px}.contact-links a:hover{color:var(--fg);border-bottom-color:var(--fg)}@media (max-width:1024px){.awards{column-count:1}.project,.row,.tech-group{grid-template-columns:1fr}.project-stack{text-align:left}}@media (max-width:760px){:root{--bar-bottom:74px}.step-label{display:none}.step .step-arrow,.step--next .step-arrow{width:46px;height:46px}.fact{grid-template-columns:130px minmax(0,1fr)}.acc-head{grid-template-columns:70px minmax(0,1fr) 42px;gap:14px}.acc-body{margin-left:0}.bar-name span{display:none}}@media (prefers-reduced-motion:reduce){.index,.slide{animation:none}.acc-panel,.deck,.progress{transition:none}}