@font-face{font-family:GT Sectra;src:url(/fonts/GTSectra-Regular.woff2) format("woff2");font-display:swap;font-weight:400}@font-face{font-family:GT Sectra;src:url(/fonts/GT-Sectra-Medium.woff2) format("woff2");font-display:swap;font-weight:500}@font-face{font-family:GT Sectra;src:url(/fonts/GT-Sectra-Book-Italic.woff2) format("woff2");font-display:swap;font-style:italic}@font-face{font-family:Pitch;src:url(/fonts/pitch-regular.woff2) format("woff2");font-display:swap;font-weight:400}@font-face{font-family:Pitch;src:url(/fonts/pitch-bold.woff2) format("woff2");font-display:swap;font-weight:700}:root{--font-display:"GT Sectra",Georgia,serif;--font-body:"Söhne","Helvetica Neue",Arial,sans-serif;--font-mono:"Pitch","Courier New",monospace;--surface:oklch(96% 0.014 83);--surface-low:oklch(93.5% 0.013 83);--surface-high:oklch(98% 0.009 83);--ink:oklch(25% 0.025 124);--ink-soft:oklch(40% 0.023 132);--line:oklch(70% 0.021 125);--line-strong:oklch(57% 0.028 128);--olive:oklch(45% 0.055 125);--sage:oklch(73% 0.052 130);--terracotta:oklch(59% 0.11 44);--marigold:oklch(77% 0.12 82);--slate:oklch(53% 0.029 225);--focus:oklch(47% 0.12 43);--focus-contrast:var(--surface-high);--error:oklch(49% 0.17 28);--index-surface:oklch(95% 0.018 83/.97);--toolbar-surface:oklch(96% 0.014 83/.92);--note-surface:oklch(82% 0.105 82);--photo-mount:oklch(98.5% 0.006 88);--note-surface-alt:oklch(79% 0.085 44);--note-adhesive:oklch(74% 0.095 78);--string:oklch(48% 0.062 58);--text-surface:oklch(88% 0.035 130);--profile-surface:oklch(38% 0.04 127);--cv-surface:oklch(67% 0.08 45);--contact-surface:oklch(48% 0.035 220);--brass:oklch(61% 0.09 79);--header-height:3.5rem;--font-size-min:.8125rem;--space-xs:.25rem;--space-sm:.5rem;--space-md:.75rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:clamp(3rem,7vw,6rem);--motion-instant:120ms;--motion-quick:180ms;--motion-state:240ms;--motion-surface:360ms;--motion-return:420ms;--ease-out-quart:cubic-bezier(.25,1,.5,1);--ease-out-quint:cubic-bezier(.22,1,.36,1);--ease-out-expo:cubic-bezier(.16,1,.3,1);--z-board-guide:67;--z-toolbar:75;--z-board-selected:80;--z-board-hover:85;--z-board-drag:88;--z-header:90;--z-project-panel:110;--z-dialog-overlay:130;--z-dialog:140;--z-skip-link:200;--shadow-photo:.14rem .2rem .28rem color-mix(in oklch,var(--ink) 20%,transparent);--shadow-sheet:.2rem .28rem .36rem color-mix(in oklch,var(--ink) 16%,transparent);--shadow-note:.22rem .32rem .3rem color-mix(in oklch,var(--ink) 20%,transparent);--shadow-card:.18rem .25rem .22rem color-mix(in oklch,var(--ink) 24%,transparent);--shadow-lift:.34rem .52rem .48rem color-mix(in oklch,var(--ink) 24%,transparent);--shadow-curl:0 .34rem .42rem -.14rem color-mix(in oklch,var(--ink) 26%,transparent)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background-color:var(--surface);background-image:radial-gradient(circle at 18% 24%,oklch(40% .02 90/.025) 0 .035rem,transparent .045rem),radial-gradient(circle at 76% 68%,oklch(40% .02 90/.02) 0 .03rem,transparent .04rem);background-size:1.85rem 1.7rem,2.4rem 2.15rem;font-family:var(--font-body);font-size:1rem;line-height:1.55;font-feature-settings:"kern";font-kerning:normal}button,input,select{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{text-underline-offset:.2em}a,button{color:inherit}img{display:block;max-width:100%}h1,h2,h3,p{-webkit-margin-before:0;margin-block-start:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}:focus-visible{outline:.15rem solid var(--focus);outline-offset:.2rem;box-shadow:0 0 0 .32rem var(--focus-contrast)}.skip-link{position:fixed;inset:.75rem auto auto .75rem;z-index:var(--z-skip-link);padding:.75rem 1rem;background:var(--ink);color:var(--surface);transform:translateY(-180%);transition:transform var(--motion-quick) var(--ease-out-quint)}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.site-shell{display:flex;flex-direction:column;min-height:100dvh}.site-shell.has-project-preview{max-height:100dvh;overflow:clip}.site-shell.has-project-preview .pinboard{pointer-events:none}.portfolio-context{display:flex;flex:1 1;flex-direction:column;min-height:0}.board-context{display:contents}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-header);display:flex;justify-content:space-between;gap:var(--space-lg);align-items:center;min-height:var(--header-height);padding:0 clamp(1rem,2.5vw,2rem);background:var(--toolbar-surface);border-bottom:1px solid var(--ink)}.site-wordmark{display:inline-flex;min-height:2.75rem;align-items:center;font-family:var(--font-display);font-size:clamp(1.25rem,1.9vw,1.6rem);line-height:1;letter-spacing:-.012em;text-decoration:none}.site-nav{display:flex;align-items:center;gap:clamp(1.15rem,2.6vw,2.5rem)}.site-nav a{position:relative;display:inline-flex;justify-content:center;min-width:2.75rem;min-height:2.75rem;align-items:center;font-family:var(--font-mono);font-size:var(--font-size-min);letter-spacing:.095em;text-transform:uppercase;text-decoration:none;transition:color var(--motion-quick) var(--ease-out-quart)}.site-nav a:after{content:"";position:absolute;inset:auto 0 .58rem;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left center;transition:transform var(--motion-state) var(--ease-out-quint)}.site-nav a:focus-visible,.site-nav a:hover{color:var(--olive)}.site-nav a:focus-visible:after,.site-nav a:hover:after{background:var(--olive);transform:scaleX(1)}.board-shell{position:relative;display:flex;flex-direction:column;height:calc(100dvh - var(--header-height));min-height:34rem}.board-status{display:flex;justify-content:space-between;gap:var(--space-md);align-items:center;flex:none;min-height:3rem;padding:.3rem clamp(.9rem,2vw,1.6rem);background:var(--toolbar-surface);border-top:1px solid var(--line)}.board-status p{margin:0;min-width:0;color:var(--ink-soft)}.board-status p,.board-status-link{font-family:var(--font-mono);font-size:var(--font-size-min)}.board-status-link{display:inline-flex;flex:none;min-height:2.75rem;align-items:center;-webkit-margin-start:auto;margin-inline-start:auto;text-decoration-thickness:.06rem;transition:color var(--motion-quick) var(--ease-out-quart)}.board-status-link:focus-visible,.board-status-link:hover{color:var(--olive)}.board-status-link span{display:inline-block;transition:transform var(--motion-state) var(--ease-out-quint)}.board-status-link:focus-visible span,.board-status-link:hover span{transform:translateY(.15rem)}.board-reset{min-height:2.75rem;padding:.25rem .5rem;border:0;border-bottom:.1rem solid var(--ink);background:transparent;cursor:pointer;font-size:var(--font-size-min);transition:background-color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.board-reset:focus-visible,.board-reset:hover{background:var(--surface-low)}.board-reset:active{transform:translateY(.1rem)}.pinboard{position:relative;flex:1 1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(12,minmax(0,1fr));grid-gap:.55rem;gap:.55rem;min-height:0;padding:.85rem clamp(.85rem,2vw,1.6rem);isolation:isolate}.pinboard.is-returning-odd{animation:board-return-odd var(--motion-return) var(--ease-out-expo)}.pinboard.is-returning-even{animation:board-return-even var(--motion-return) var(--ease-out-expo)}@keyframes board-return-odd{0%{transform:scale(.992);filter:saturate(.88)}to{transform:scale(1);filter:saturate(1)}}@keyframes board-return-even{0%{transform:scale(.992);filter:saturate(.88)}to{transform:scale(1);filter:saturate(1)}}.pinboard:before{content:"";inset:0;z-index:-3;background:linear-gradient(150deg,transparent 0 63%,color-mix(in oklch,var(--sage) 7%,transparent) 63% 78%,transparent 78%)}.pinboard:before,.thread-layer{position:absolute;pointer-events:none}.thread-layer{inset:.85rem clamp(.85rem,2vw,1.6rem);z-index:-1;overflow:visible}.thread-layer path{fill:none;stroke:color-mix(in oklch,var(--string) 78%,transparent);stroke-width:2;stroke-linecap:round;transition:stroke var(--motion-state) var(--ease-out-quart),stroke-width var(--motion-state) var(--ease-out-quart)}.thread-layer path.is-active{stroke:var(--terracotta);stroke-width:3.2}.board-item{--material-surface:var(--surface-high);--material-shadow:var(--shadow-sheet);--material-shadow-lift:var(--shadow-lift);position:relative;z-index:var(--pin-z);grid-column:var(--pin-x) /span var(--pin-w);grid-row:var(--pin-y) /span var(--pin-h);display:flex;flex-direction:column;min-width:0;min-height:0;transform:translate(var(--drag-x,0),var(--drag-y,0)) rotate(var(--pin-r));transform-origin:center;background:var(--material-surface);box-shadow:var(--material-shadow);isolation:isolate;transition:transform var(--motion-state) var(--ease-out-quint),box-shadow var(--motion-state) var(--ease-out-quint),opacity var(--motion-state) var(--ease-out-quart),filter var(--motion-state) var(--ease-out-quart)}.board-item[data-material=photo-print]{--material-surface:var(--photo-mount);--material-shadow:var(--shadow-photo)}.board-item[data-material=tracing-sheet]{--material-surface:color-mix(in oklch,var(--surface-high) 94%,var(--sage));--material-shadow:var(--shadow-sheet)}.board-item[data-material=drawing-sheet]{--material-surface:var(--surface-high);--material-shadow:var(--shadow-sheet)}.board-item[data-material=note-paper]{--material-surface:var(--note-surface);--material-shadow:var(--shadow-note),var(--shadow-curl)}.board-item[data-material=note-paper][data-attachment=tape]{--material-surface:var(--note-surface-alt)}.board-item[data-material=note-paper]:before{content:"";position:absolute;inset:0 0 auto;z-index:4;height:.42rem;background:color-mix(in oklch,var(--material-surface) 74%,var(--note-adhesive));pointer-events:none}.board-item[data-material=index-card]{--material-surface:var(--text-surface);--material-shadow:var(--shadow-card),var(--shadow-curl)}.board-item[data-material=profile-card]{--material-surface:var(--profile-surface);--material-shadow:var(--shadow-card)}.board-item[data-material=document-sheet]{--material-surface:var(--cv-surface);--material-shadow:.18rem .18rem 0 var(--surface-low),.32rem .35rem .26rem color-mix(in oklch,var(--ink) 20%,transparent)}.board-item[data-material=contact-card]{--material-surface:var(--contact-surface);--material-shadow:var(--shadow-card)}.board-item--photo .board-media{margin:.42rem .42rem 0}.board-item--photo .board-caption,.board-item--sketch .board-caption{padding:.5rem .55rem .65rem}.board-item--plan .board-media{margin:.2rem .2rem 0;background:var(--surface-low)}.board-item--sketch .board-media{margin:.12rem .12rem 0;background:var(--surface-high)}.board-item.is-quiet{filter:grayscale(.65) saturate(.5)}.board-item.is-quiet .board-media img{opacity:.38}.board-item.is-quiet .fastener{opacity:.55}.board-item.is-related,.board-item.is-selected{opacity:1;filter:none}.board-item.is-selected{z-index:var(--z-board-selected);transform:translate(var(--drag-x,0),var(--drag-y,0)) rotate(calc(var(--pin-r) * .25)) scale(1.025);box-shadow:var(--material-shadow-lift)}.board-item.is-dragging{z-index:var(--z-board-drag);cursor:-webkit-grabbing;cursor:grabbing;transform:translate(var(--drag-x,0),var(--drag-y,0)) rotate(calc(var(--pin-r) * .2)) scale(1.018);transition:none}.fastener{position:absolute;z-index:5;pointer-events:none}.fastener--none{display:none}.fastener--pin{top:.3rem;left:50%;width:.8rem;height:.8rem;border-radius:50%;background:radial-gradient(circle at 34% 28%,var(--surface-high),var(--terracotta) 44%,color-mix(in oklch,var(--terracotta) 58%,var(--ink)));box-shadow:.1rem .16rem .2rem color-mix(in oklch,var(--ink) 42%,transparent);transform:translateX(-50%)}.fastener--pin:after{content:"";position:absolute;inset:.62rem auto auto 50%;width:.22rem;height:.34rem;background:color-mix(in oklch,var(--ink) 45%,transparent);transform:translateX(-40%) rotate(6deg)}.fastener--tape{top:-.34rem;left:14%;width:3.1rem;height:.95rem;background:color-mix(in oklch,var(--marigold) 34%,transparent);box-shadow:.06rem .12rem .12rem color-mix(in oklch,var(--ink) 18%,transparent);-webkit-clip-path:polygon(4% 0,96% 6%,100% 100%,0 94%);clip-path:polygon(4% 0,96% 6%,100% 100%,0 94%);transform:rotate(-6deg)}.fastener--clip{top:-.55rem;left:.8rem;width:1.05rem;height:2rem;border:.14rem solid var(--brass);border-bottom:0;border-radius:.5rem .5rem 0 0;filter:drop-shadow(.06rem .1rem .1rem color-mix(in oklch,var(--ink) 32%,transparent));transform:rotate(-7deg)}.fastener--clip:after{content:"";position:absolute;inset:.3rem .22rem .34rem;border:.1rem solid color-mix(in oklch,var(--brass) 70%,var(--ink));border-bottom:0;border-radius:.3rem .3rem 0 0}.fastener--staple{top:.42rem;left:.75rem;width:.92rem;height:.34rem;border:.12rem solid var(--line-strong);border-top:0;box-shadow:.04rem .07rem .06rem color-mix(in oklch,var(--ink) 26%,transparent);transform:rotate(-5deg)}.board-media{position:relative;flex:1 1;min-height:2.75rem;padding:0;overflow:hidden;border:0;background:var(--surface-low);cursor:zoom-in}.board-media img{width:100%;height:100%;object-fit:cover;object-position:var(--pin-object-position);transition:transform var(--motion-state) var(--ease-out-quint),filter var(--motion-state) var(--ease-out-quart),opacity var(--motion-state) var(--ease-out-quart)}.board-item--plan .board-media img,.board-item--sketch .board-media img{object-fit:contain}.board-hint{position:absolute;inset:auto .45rem .45rem auto;padding:.22rem .38rem;background:var(--ink);color:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-min);opacity:0;transform:translateY(.3rem);transition:opacity var(--motion-quick) var(--ease-out-quart),transform var(--motion-quick) var(--ease-out-quart)}.board-media:focus-visible .board-hint,.board-media:hover .board-hint,.board-text-pin:focus-visible .board-hint,.board-text-pin:hover .board-hint{opacity:1;transform:translateY(0)}.board-caption{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-end;padding:.4rem .55rem .5rem}.board-caption div{display:grid;grid-gap:.1rem;gap:.1rem;min-width:0}.board-title{font-family:var(--font-display);font-size:clamp(.9rem,1.05vw,1rem);line-height:1}.board-caption div>span:last-child:not(:first-child){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min);line-height:1.25}.board-caption button{flex:0 0 auto;min-height:2.75rem;padding:.2rem 0;border:0;border-bottom:1px solid var(--ink);background:transparent;cursor:pointer;font-size:var(--font-size-min);transition:background-color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.board-caption button:focus-visible,.board-caption button:hover{background:var(--surface-low)}.board-caption button:active,.board-text-pin:active{transform:translateY(.1rem)}.board-text-pin{position:relative;display:flex;flex:1 1;min-height:2.75rem;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:.45rem;overflow:hidden;padding:.7rem .8rem .55rem;border:0;background:transparent;cursor:pointer;text-align:left}.board-text-pin>span:nth-child(2){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden;font-family:var(--font-display);font-size:clamp(.95rem,1.15vw,1.2rem);line-height:1.12}.board-item--contact .board-text-pin>span:nth-child(2),.board-item--note .board-text-pin>span:nth-child(2),.board-item--text .board-text-pin>span:nth-child(2){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font-size:var(--font-size-min);line-height:1.35}.board-item--note .board-text-pin,.board-item--text .board-text-pin{justify-content:flex-start;gap:.55rem}.board-kicker{font-family:var(--font-mono);font-size:var(--font-size-min)}.board-item--contact,.board-item--profile{color:var(--surface)}.board-item--profile .board-text-pin>span:nth-child(2){font-size:clamp(.95rem,1.25vw,1.2rem)}.board-item--contact .board-title,.board-item--cv .board-title,.board-item--note .board-title,.board-item--profile .board-title,.board-item--text .board-title{display:none}.board-item--contact .board-caption,.board-item--cv .board-caption,.board-item--note .board-caption,.board-item--profile .board-caption,.board-item--text .board-caption{padding-top:.25rem}.board-object{position:relative;z-index:var(--pin-z);grid-column:var(--pin-x) /span var(--pin-w);grid-row:var(--pin-y) /span var(--pin-h);display:grid;min-width:0;place-items:center;transform:translate(var(--object-drag-x,0),var(--object-drag-y,0)) rotate(var(--pin-r));transform-origin:center;transition:transform var(--motion-state) var(--ease-out-quint)}.board-object.is-dragging{z-index:var(--z-board-drag);transition:none}.board-object-control{display:grid;max-width:100%;max-height:100%;min-width:2.75rem;min-height:2.75rem;place-items:center;grid-gap:.15rem;gap:.15rem;padding:.25rem;border:0;background:transparent;cursor:pointer;touch-action:none}.board-object-control.is-movable{cursor:-webkit-grab;cursor:grab}.board-object.is-dragging .board-object-control{cursor:-webkit-grabbing;cursor:grabbing}.board-object-visual{position:relative;display:block;filter:drop-shadow(.12rem .16rem .12rem color-mix(in oklch,var(--ink) 30%,transparent));transition:transform var(--motion-quick) var(--ease-out-quint),filter var(--motion-quick) var(--ease-out-quart)}.board-object-visual--paper-clip{width:1.1rem;height:2.4rem;border:.17rem solid var(--brass);border-radius:.85rem;background:transparent}.board-object-visual--paper-clip:after{content:"";position:absolute;inset:.34rem .24rem .58rem;border-radius:.5rem;border:.11rem solid color-mix(in oklch,var(--brass) 72%,var(--ink));border-top:.11rem solid transparent}.board-object-visual--field-lens{width:1.9rem;height:1.9rem;margin:0 .6rem .45rem 0;border:.26rem solid var(--ink);border-radius:50%;background:radial-gradient(circle at 38% 34%,color-mix(in oklch,var(--surface-high) 82%,transparent),color-mix(in oklch,var(--sage) 30%,transparent))}.board-object-visual--field-lens:after{content:"";position:absolute;width:1.75rem;height:.38rem;inset:auto -1.35rem -.58rem auto;background:var(--ink);box-shadow:.08rem .12rem .12rem color-mix(in oklch,var(--ink) 28%,transparent);transform:rotate(47deg);transform-origin:left center}.board-object-label{max-width:100%;overflow-wrap:anywhere;padding:.16rem .3rem;background:var(--surface-high);box-shadow:.1rem .13rem .12rem color-mix(in oklch,var(--ink) 16%,transparent);font-family:var(--font-mono);font-size:var(--font-size-min);line-height:1.15;text-align:center}.board-interaction-key{z-index:var(--z-board-guide);grid-column:4/span 6;grid-row:4/span 6;align-self:center;padding:.85rem 1rem;background:var(--text-surface);box-shadow:var(--shadow-card);transform:rotate(-.35deg);animation:guide-in var(--motion-state) var(--ease-out-quint) both}@keyframes guide-in{0%{opacity:0;transform:translateY(.45rem) rotate(-.35deg)}}.board-interaction-key[hidden]{display:none}.board-interaction-key h2{margin:0 0 .55rem;font-family:var(--font-display);font-size:1.5rem;font-weight:400;line-height:1}.board-interaction-key ul{display:grid;grid-gap:.35rem;gap:.35rem;margin:0;-webkit-padding-start:1.05rem;padding-inline-start:1.05rem;font-size:var(--font-size-min);line-height:1.35}@media (min-width:68.01rem){.board-item--note,.board-item--text{align-self:start;justify-self:start;height:96%}.board-item[data-material=note-paper][data-attachment=pin]{width:86%;height:80%;justify-self:end}.board-item[data-material=note-paper][data-attachment=tape]{width:98%;height:72%;align-self:end}.board-item[data-material=index-card]{width:92%;height:88%;align-self:center}}@media (max-height:46rem){.board-item--note .board-caption,.board-item--text .board-caption{display:none}}@media (hover:hover) and (pointer:fine){.board-item:focus-within,.board-item:hover{z-index:var(--z-board-hover);transform:translate(var(--drag-x,0),calc(var(--drag-y, 0) - .45rem)) rotate(calc(var(--pin-r) * .2));box-shadow:var(--material-shadow-lift)}.board-item:focus-within .board-media img,.board-item:hover .board-media img{transform:scale(1.012)}.board-object-control:focus-visible .board-object-visual,.board-object-control:hover .board-object-visual{filter:drop-shadow(.18rem .24rem .18rem color-mix(in oklch,var(--ink) 36%,transparent));transform:translateY(-.2rem)}}.project-panel{--project-origin-x:0px;--project-origin-y:.75rem;--project-origin-scale-x:.94;--project-origin-scale-y:.94;position:fixed;inset:clamp(1rem,4vh,3rem) clamp(1rem,3vw,3rem) clamp(1rem,4vh,3rem) auto;z-index:var(--z-project-panel);display:flex;width:min(64rem,calc(100vw - 24rem));min-width:42rem;flex-direction:column;overflow:hidden;background:var(--surface-high);box-shadow:-.55rem .28rem .65rem color-mix(in oklch,var(--ink) 23%,transparent);opacity:0;transform-origin:center;visibility:hidden;will-change:transform,opacity;contain:layout paint}.project-panel.is-ready{visibility:visible;animation:panel-emerge var(--motion-return) var(--ease-out-expo) both}.project-panel.is-closing{pointer-events:none;visibility:visible;animation:panel-recede var(--motion-quick) var(--ease-out-quart) both}@keyframes panel-emerge{0%{opacity:.15;transform:translate(var(--project-origin-x),var(--project-origin-y)) scale(var(--project-origin-scale-x),var(--project-origin-scale-y))}to{opacity:1;transform:translate(0) scale(1)}}@keyframes panel-recede{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--project-origin-x),var(--project-origin-y)) scale(var(--project-origin-scale-x),var(--project-origin-scale-y))}}.project-panel header{flex:none;padding:1.2rem 1.4rem 0}.project-panel header>button{display:flex;justify-content:space-between;width:100%;min-height:3.25rem;align-items:center;gap:1rem;padding:.6rem .75rem;border:0;background:var(--ink);color:var(--surface);cursor:pointer;font-weight:700;transition:background-color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.project-panel header>button span:last-child{font-family:var(--font-mono);font-size:var(--font-size-min);font-weight:400}.project-panel header>button:hover{background:var(--olive)}.project-panel header>button:active{transform:translateY(.1rem)}.project-panel header p{margin:1.5rem 0 .3rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.project-panel h2{max-width:14ch;margin:0 0 1rem;font-family:var(--font-display);font-size:clamp(2.4rem,3.8vw,4.6rem);font-weight:400;line-height:.95;letter-spacing:-.025em}.project-panel-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(15rem,.75fr);grid-gap:clamp(1rem,2vw,2rem);gap:clamp(1rem,2vw,2rem);min-height:0;flex:1 1;padding:0 1.4rem 1.4rem}.project-panel-media{min-height:0;overflow:hidden;background:var(--surface-low)}.project-panel-media img{width:100%;height:100%;object-fit:contain}.project-panel-details{min-height:0;-webkit-padding-end:.25rem;padding-inline-end:.25rem;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.project-panel dl{display:grid;grid-template-columns:1fr 1fr;margin:0 0 1.3rem;border-block:1px solid var(--line)}.project-panel dl div{padding:.7rem 0}.project-panel dt{font-family:var(--font-mono);font-size:var(--font-size-min)}.project-panel dd{margin:.2rem 0 0;font-size:.85rem}.project-panel-details>p{max-width:58ch}.project-panel-credit{color:var(--ink-soft);font-size:var(--font-size-min)}.project-panel-link{display:inline-flex;justify-content:space-between;width:100%;margin-top:1rem;padding:.85rem 0;border-block:1px solid var(--ink);text-decoration:none;transition:background-color var(--motion-quick) var(--ease-out-quart)}.project-panel-link span{transition:transform var(--motion-state) var(--ease-out-quint)}.project-panel-link:focus-visible,.project-panel-link:hover{background:var(--surface-low)}.project-panel-link:focus-visible span,.project-panel-link:hover span{transform:translate(.2rem,-.2rem)}.dialog-overlay{position:fixed;inset:0;z-index:var(--z-dialog-overlay);background:color-mix(in oklch,var(--ink) 72%,transparent)}.dialog-overlay[data-state=open]{animation:overlay-in var(--motion-quick) var(--ease-out-quart) both}.dialog-overlay[data-state=closed]{animation:overlay-out var(--motion-instant) var(--ease-out-quart) both}@keyframes overlay-in{0%{opacity:0}}.info-dialog,.media-dialog{position:fixed;z-index:var(--z-dialog);inset:3vh 2.5vw;display:flex;flex-direction:column;background:var(--surface);box-shadow:.45rem .55rem .6rem color-mix(in oklch,var(--ink) 30%,transparent)}.media-dialog[data-state=open]{animation:media-dialog-in var(--motion-surface) var(--ease-out-expo) both}.media-dialog[data-state=closed]{animation:media-dialog-out var(--motion-quick) var(--ease-out-quart) both}@keyframes overlay-out{to{opacity:0}}@keyframes media-dialog-in{0%{opacity:0;transform:translateY(.85rem) scale(.992)}}@keyframes media-dialog-out{to{opacity:0;transform:translateY(.55rem) scale(.995)}}.media-dialog{block-size:94vh;block-size:94dvh}.dialog-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;padding:.85rem 1rem;border-bottom:1px solid var(--line)}.dialog-header h2{margin:0;font-family:var(--font-display);font-size:1.5rem;font-weight:400}.dialog-header p{margin:.1rem 0 0;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.dialog-close{min-height:2.75rem;padding:0 .4rem;border:0;border-bottom:1px solid var(--ink);background:transparent;cursor:pointer;transition:background-color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.dialog-close:focus-visible,.dialog-close:hover{background:var(--surface-low)}.dialog-close:active{transform:translateY(.1rem)}.media-stage{flex:1 1;display:flex;min-height:0;align-items:center;justify-content:center;overflow:auto;background:var(--surface-low);overscroll-behavior:contain;scrollbar-gutter:stable both-edges}.media-stage img{flex:none;max-width:none;max-height:none;object-fit:contain}.media-stage.is-zoomed,.media-stage[data-media-aspect=tall]{align-items:flex-start;justify-content:flex-start}.dialog-header,.media-footer,.zoom-controls{flex:none}.zoom-controls{position:relative;display:flex;align-items:center;gap:.75rem;min-height:3.5rem;padding:.35rem 1rem;overflow:hidden;border-bottom:1px solid var(--line);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-min)}.zoom-controls button{display:inline-flex;min-width:2.75rem;min-height:2.75rem;align-items:center;justify-content:space-between;gap:.55rem;padding:.35rem .5rem;border:0;border-bottom:1px solid var(--ink);background:transparent;cursor:pointer;font:inherit;white-space:nowrap}.zoom-controls button:disabled{border-color:var(--line-strong);background:var(--surface-low);color:var(--ink-soft);cursor:not-allowed;opacity:1}.zoom-controls label{display:flex;align-items:center;gap:.6rem;white-space:nowrap}.zoom-controls input{width:clamp(7rem,14vw,13rem);accent-color:var(--terracotta)}.zoom-controls kbd{min-width:1.45rem;padding:.12rem .28rem;border:1px solid var(--line-strong);background:var(--surface-low);font:inherit;text-align:center}.zoom-controls output{min-width:6.2rem;-webkit-margin-start:auto;margin-inline-start:auto;font-weight:700;text-align:end;white-space:nowrap}.zoom-controls button,.zoom-controls label,.zoom-controls-hint{transition:opacity var(--motion-quick) var(--ease-out-quart),transform var(--motion-quick) var(--ease-out-quint)}.zoom-controls-hint{position:absolute;inset-inline-start:1rem;color:var(--ink-soft);opacity:0;pointer-events:none}.zoom-controls.is-hidden button,.zoom-controls.is-hidden label{opacity:0;pointer-events:none;transform:translateY(.2rem)}.zoom-controls.is-hidden .zoom-controls-hint{opacity:1}.media-footer{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:1rem;gap:1rem;block-size:clamp(5.5rem,13dvh,7.5rem);padding:.65rem 1rem;overflow-y:auto;align-content:start;border-top:1px solid var(--line)}.media-footer p{margin:0;font-size:var(--font-size-min)}.media-credit{color:var(--ink-soft);font-family:var(--font-mono)}.media-footer a{align-self:flex-start;display:inline-flex;min-height:2.75rem;align-items:center;transition:color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.media-footer a:focus-visible,.media-footer a:hover{color:var(--olive)}.media-footer a:active{transform:translateY(.1rem)}.info-dialog{inset:50% auto auto 50%;width:min(38rem,calc(100vw - 2rem));max-height:88vh;padding:1.5rem;overflow-y:auto;transform:translate(-50%,-50%) rotate(-.2deg)}.info-dialog[data-state=open]{animation:info-dialog-in var(--motion-surface) var(--ease-out-expo) both}.info-dialog[data-state=closed]{animation:info-dialog-out var(--motion-quick) var(--ease-out-quart) both}@keyframes info-dialog-in{0%{opacity:0;transform:translate(-50%,calc(-50% + .75rem)) rotate(-.2deg) scale(.985)}}@keyframes info-dialog-out{to{opacity:0;transform:translate(-50%,calc(-50% + .45rem)) rotate(-.2deg) scale(.99)}}.info-dialog .dialog-close{align-self:end}.info-kicker{margin-bottom:1.5rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.info-dialog h2{margin:0;font-family:var(--font-display);font-size:clamp(2.5rem,8vw,5rem);font-weight:400;line-height:.95}.info-dialog>p{max-width:48ch}.info-actions{display:flex;gap:1rem;flex-wrap:wrap}.info-actions a{display:inline-flex;min-height:2.75rem;align-items:center}.info-email{font-family:var(--font-display);font-size:clamp(1.2rem,5vw,2rem)}.works-index{position:relative;min-height:calc(100dvh - var(--header-height));padding:clamp(2.5rem,5.5vw,5rem) clamp(1rem,2.5vw,2rem) clamp(3rem,7vw,6rem);background:var(--index-surface);border-top:1px solid var(--ink);scroll-margin-top:var(--header-height)}.works-index-header{max-width:62ch;margin-bottom:clamp(2rem,4vw,3.25rem)}.works-index-kicker{margin:0 0 .6rem;font-family:var(--font-mono);font-size:var(--font-size-min);letter-spacing:.095em;text-transform:uppercase}.works-index h2{margin:0;font-family:var(--font-display);font-size:clamp(2.4rem,5vw,4rem);font-weight:400;line-height:.95;letter-spacing:-.025em}.works-index-note{max-width:52ch;margin:.8rem 0 0;color:var(--ink-soft);font-size:.875rem;line-height:1.45}.works-groups{display:grid;grid-gap:clamp(2.25rem,4vw,3.5rem);gap:clamp(2.25rem,4vw,3.5rem)}.works-group h3{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;margin:0;padding-bottom:.45rem;border-bottom:1px solid var(--ink);font-family:var(--font-mono);font-size:var(--font-size-min);font-weight:400;letter-spacing:.095em;text-transform:uppercase}.works-group-count{color:var(--ink-soft)}.works-list{margin:0;padding:0;list-style:none}.works-row{display:grid;grid-template-columns:2.25rem minmax(7rem,1.15fr) minmax(0,1.5fr) minmax(0,.85fr) 3.5rem;grid-gap:1rem;gap:1rem;align-items:baseline;min-height:3.75rem;padding:.95rem .4rem;border-bottom:1px solid var(--line);text-decoration:none;transition:background-color var(--motion-quick) var(--ease-out-quart),padding var(--motion-state) var(--ease-out-quint)}.works-row:focus-visible,.works-row:hover{background:var(--surface-low);padding-inline:1.1rem .4rem}.works-row-index{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.works-row-media{display:none}.works-row-title{font-family:var(--font-display);font-size:clamp(1.1rem,1.55vw,1.5rem);line-height:1.06}.works-row-summary{color:var(--ink-soft);font-size:.875rem;line-height:1.35}.works-row-type,.works-row-year{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min);line-height:1.3}.works-row-year{text-align:end}.works-preview{display:none}@media (hover:hover) and (pointer:fine) and (min-width:48rem){.works-preview{position:fixed;inset:0 auto auto 0;z-index:var(--z-board-hover);display:block;width:clamp(13rem,19vw,19rem);padding:.4rem .4rem .8rem;background:var(--surface-high);box-shadow:var(--shadow-photo);opacity:0;visibility:hidden;pointer-events:none;transform:translate(var(--works-preview-x,0),var(--works-preview-y,0)) translate(-50%,-50%) rotate(-1.2deg) scale(.965);transition:opacity var(--motion-quick) var(--ease-out-quart),transform var(--motion-state) var(--ease-out-quint)}.works-preview.is-visible{opacity:1;visibility:visible;transform:translate(var(--works-preview-x,0),var(--works-preview-y,0)) translate(-50%,-50%) rotate(-1.2deg) scale(1)}.works-preview img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}}@media (hover:none),(max-width:47.99rem){.works-row-media{display:block;width:6.5rem;overflow:hidden;background:var(--surface-low)}.works-row-media img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover}}@media (forced-colors:active){:focus-visible{outline:3px solid Highlight;outline-offset:3px;box-shadow:0 0 0 5px Canvas}.site-nav a:after{background:CanvasText}.works-row{border-color:CanvasText}.works-row:focus-visible,.works-row:hover{background:Canvas;outline:2px solid Highlight;outline-offset:-2px}.zoom-controls button{border-color:CanvasText}.zoom-controls button:disabled{border-color:GrayText;color:GrayText}.board-item.is-quiet{filter:none}.board-item.is-quiet .board-media img,.board-item.is-quiet .fastener{opacity:1}.board-item.is-selected{outline:3px solid Highlight;outline-offset:3px}.thread-layer path{stroke:CanvasText}.thread-layer path.is-active{stroke:Highlight}.board-object-visual--field-lens,.board-object-visual--paper-clip,.board-object-visual--paper-clip:after{border-color:ButtonText}.board-object-visual--field-lens:after{background:ButtonText}}.not-found-page,.profile-page,.project-page{min-height:100dvh}.not-found-page{display:grid;grid-template-rows:auto 1fr;padding:1rem clamp(1rem,5vw,5rem) clamp(2rem,6vw,6rem)}.not-found-page nav{display:flex;justify-content:space-between;gap:1rem;min-height:3rem;align-items:center;border-bottom:1px solid var(--line);font-size:.875rem}.not-found-page nav a{display:inline-flex;min-height:2.75rem;align-items:center;font-family:var(--font-display);font-size:1.125rem;text-decoration:none}.not-found-page nav span{min-width:0;overflow-wrap:anywhere;text-align:right}.not-found-page section{align-self:center;max-width:68rem;padding-block:clamp(4rem,12vw,10rem)}.not-found-code{margin:0 0 1rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.not-found-page h1{max-width:12ch;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:clamp(3.2rem,9vw,5.5rem);font-weight:400;line-height:.95;letter-spacing:-.03em;text-wrap:balance}.not-found-page section>p:not(.not-found-code){max-width:48ch;margin:1.5rem 0 0;font-size:1rem;line-height:1.6;text-wrap:pretty}.not-found-return{display:inline-flex;min-height:2.75rem;align-items:center;margin-top:2.5rem;border-bottom:1px solid var(--ink);text-decoration:none}.not-found-return:focus-visible,.not-found-return:hover{background:var(--surface-low)}.project-page-header{padding:1rem clamp(1rem,4vw,4rem) var(--space-2xl)}.profile-header nav,.project-page-header nav{display:flex;justify-content:space-between;gap:.75rem;min-height:3rem;align-items:center;border-bottom:1px solid var(--line);font-size:.875rem}.profile-header nav a,.project-page-header nav a{min-height:2.75rem;display:inline-flex;align-items:center}.profile-header nav>*,.project-page-header nav>*{min-width:0;overflow-wrap:anywhere}.project-heading{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(0,4fr);grid-gap:1rem;gap:1rem;padding-top:clamp(2rem,6vw,6rem)}.project-heading>p:first-child{padding-top:.6rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.project-heading h1{max-width:14ch;margin:0;font-size:clamp(3.2rem,8vw,6rem);font-weight:400;line-height:.92;letter-spacing:-.03em}.project-deck,.project-heading h1{grid-column:2;font-family:var(--font-display)}.project-deck{max-width:42ch;margin:1rem 0 0;font-size:clamp(1.35rem,2.2vw,2rem);font-style:italic;line-height:1.2}.project-meta{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem;margin:3rem 0 0;padding:.8rem 0;border-block:1px solid var(--line)}.project-meta div{min-width:0}.project-meta dt{font-family:var(--font-mono);font-size:var(--font-size-min)}.project-meta dd{margin:.25rem 0 0;font-size:.875rem}.gallery-item figcaption span,.project-alternative-copy h3,.project-heading h1,.project-meta dd,.project-next strong,.project-next-summary,.project-objective-heading h3,.project-phase-copy h3,.project-section-header h2{overflow-wrap:anywhere}.project-hero{margin:0;background:var(--surface-low)}.project-hero img{width:100%;height:auto;max-height:82vh;object-fit:contain}.project-hero figcaption{padding:.65rem clamp(1rem,4vw,4rem);color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-introduction{display:grid;grid-template-columns:1fr minmax(0,2fr) 1fr;grid-gap:2rem;gap:2rem;padding:var(--space-2xl) clamp(1rem,4vw,4rem)}.project-documentation h2,.project-introduction h2{margin:0;font-family:var(--font-mono);font-size:var(--font-size-min);font-weight:400}.project-introduction>p{max-width:64ch;font-family:var(--font-display);font-size:clamp(1.3rem,2vw,1.8rem);line-height:1.35}.project-introduction ul{margin:0;padding:0;list-style:none;font-family:var(--font-mono);font-size:var(--font-size-min)}.project-introduction li{padding:.35rem 0;border-bottom:1px solid var(--line)}.project-sections{padding:0 clamp(1rem,4vw,4rem) var(--space-2xl)}.project-section{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(0,3fr);grid-gap:1.5rem clamp(2rem,5vw,6rem);gap:1.5rem clamp(2rem,5vw,6rem);padding:clamp(3rem,7vw,7rem) 0;border-top:1px solid var(--line)}.project-section>:not(.project-section-header){grid-column:2}.project-section-header{align-self:start}.project-section-header h2{max-width:13ch;margin:0;font-family:var(--font-display);font-size:clamp(1.8rem,3vw,3rem);font-weight:400;line-height:1.05;text-wrap:balance}.project-section-header p{margin:.8rem 0 0;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-section-prose{display:grid;grid-gap:1.25rem;gap:1.25rem;max-width:68ch}.project-section-prose p{margin:0;font-family:var(--font-display);font-size:clamp(1.25rem,1.8vw,1.65rem);line-height:1.45;text-wrap:pretty}.project-section-introduction{max-width:62ch;margin:0 0 1rem;font-size:1rem;line-height:1.6;text-wrap:pretty}.project-section .project-gallery{grid-column:2}.project-gallery.project-gallery--diagrams{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 1rem}.project-gallery--diagrams .gallery-item button img{max-height:32rem}.project-section[data-variant=photo-essay]{grid-template-columns:minmax(0,1fr);gap:1rem}.project-section[data-variant=photo-essay] .project-gallery,.project-section[data-variant=photo-essay]>:not(.project-section-header){grid-column:1}.project-section[data-variant=photo-essay] .project-section-header p{margin:0 0 .5rem}.project-gallery.project-gallery--essay{grid-template-columns:minmax(0,1fr);gap:clamp(2.5rem,6vw,5rem)}.project-gallery--essay .gallery-item{max-width:min(100%,66rem);margin-inline:auto}.project-gallery--essay .gallery-item button{width:-moz-fit-content;width:fit-content;max-width:100%;margin-inline:auto;background:transparent}.project-gallery--essay .gallery-item button img{width:auto;max-width:100%;max-height:84vh;object-fit:contain}.project-gallery--essay .gallery-item figcaption{padding-top:.75rem}.project-section blockquote{margin:0}.project-section blockquote p{max-width:28ch;margin:0;font-family:var(--font-display);font-size:clamp(2rem,4vw,4rem);line-height:1.08}.project-section blockquote footer{margin-top:1rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.project-phase-list{margin:0;padding:0;list-style:none}.project-phase-list>li{display:grid;grid-template-columns:minmax(15rem,1fr) minmax(0,2fr);grid-gap:2rem;gap:2rem;padding:2.5rem 0;border-top:1px solid var(--line)}.project-phase-copy{align-self:start}.project-phase-index{margin:0 0 .8rem;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-phase-copy h3{max-width:14ch;margin:0;font-family:var(--font-display);font-size:clamp(1.65rem,2.5vw,2.6rem);font-weight:400;line-height:1.08;text-wrap:balance}.project-phase-copy ul{margin:1.25rem 0 0;-webkit-padding-start:1.1rem;padding-inline-start:1.1rem}.project-phase-copy li{margin-top:.35rem;line-height:1.45}.project-phase-costs{margin-top:1.5rem;padding-top:.75rem;border-top:1px solid var(--line);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-phase-costs p{margin:.3rem 0}.project-phase-list .project-gallery{grid-template-columns:minmax(0,1fr)}.project-phase-list .gallery-item--wide{grid-column:auto}.project-alternative-list{margin:0;padding:0;list-style:none}.project-alternative-list>li{display:grid;grid-template-columns:minmax(15rem,1fr) minmax(0,2fr);grid-gap:2rem;gap:2rem;padding:2.5rem 0;border-top:1px solid var(--line)}.project-alternative-copy{align-self:start}.project-alternative-index{margin:0 0 .8rem;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-alternative-copy h3{max-width:14ch;margin:0;font-family:var(--font-display);font-size:clamp(1.65rem,2.5vw,2.6rem);font-weight:400;line-height:1.08;text-wrap:balance}.project-alternative-copy ul{margin:1.25rem 0 0;-webkit-padding-start:1.1rem;padding-inline-start:1.1rem}.project-alternative-copy li{margin-top:.35rem;line-height:1.45}.project-alternative-list .project-gallery{grid-template-columns:minmax(0,1fr)}.project-alternative-list .gallery-item--wide{grid-column:auto}.project-objective-list{margin:0;padding:0;list-style:none}.project-objective-list>li{display:grid;grid-template-columns:minmax(14rem,1fr) minmax(0,2fr);grid-gap:2rem;gap:2rem;padding:2.5rem 0;border-top:1px solid var(--line)}.project-objective-heading p{margin:0 0 .8rem;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-objective-heading h3{max-width:15ch;margin:0;font-family:var(--font-display);font-size:clamp(1.65rem,2.5vw,2.6rem);font-weight:400;line-height:1.08;text-wrap:balance}.project-objective-list>li>ul{margin:0;-webkit-padding-start:1.1rem;padding-inline-start:1.1rem}.project-objective-list>li>ul li{margin-top:.45rem;line-height:1.5}.project-section-credits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:0 2rem;gap:0 2rem;margin:0}.project-section-credits div{padding:1rem 0;border-top:1px solid var(--line)}.project-section-credits dt{font-family:var(--font-mono);font-size:var(--font-size-min)}.project-section-credits dd{max-width:46ch;margin:.35rem 0 0;line-height:1.5}.project-documentation{padding:1rem clamp(1rem,4vw,4rem) var(--space-2xl)}.project-documentation>header{display:flex;justify-content:space-between;gap:2rem;margin-bottom:1rem;padding-block:.8rem;border-block:1px solid var(--line)}.project-documentation>header p{max-width:46ch;margin:0;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:clamp(1.5rem,4vw,4rem) 1rem;gap:clamp(1.5rem,4vw,4rem) 1rem}.gallery-item{margin:0}.gallery-item--wide{grid-column:1/-1}.gallery-item button{position:relative;width:100%;padding:0;border:0;background:var(--surface-low);cursor:zoom-in}.gallery-item button img{width:100%;height:auto;max-height:72vh;object-fit:contain}.gallery-item button>span{position:absolute;inset:auto .5rem .5rem auto;padding:.3rem .45rem;background:var(--ink);color:var(--surface)}.gallery-item button>span,.gallery-item figcaption{font-family:var(--font-mono);font-size:var(--font-size-min)}.gallery-item figcaption{display:flex;justify-content:space-between;gap:1rem;padding-top:.5rem;color:var(--ink-soft)}.project-next{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.project-next a{display:grid;grid-template-columns:minmax(0,1fr) clamp(7rem,14vw,14rem);grid-template-areas:"copy preview";grid-gap:clamp(1rem,2vw,2rem);gap:clamp(1rem,2vw,2rem);min-height:11rem;align-items:center;padding:1.25rem clamp(1rem,3vw,3rem);overflow:hidden;text-decoration:none;transition:background-color var(--motion-quick) var(--ease-out-quart),transform var(--motion-instant) var(--ease-out-quart)}.project-next a+a{grid-template-columns:clamp(7rem,14vw,14rem) minmax(0,1fr);grid-template-areas:"preview copy";-webkit-border-start:1px solid var(--line);border-inline-start:1px solid var(--line);text-align:right}.project-next a:focus-visible,.project-next a:hover{background:var(--surface-low)}.project-next a:active{transform:translateY(.12rem)}.project-next-copy{grid-area:copy;display:flex;min-width:0;flex-direction:column;gap:.35rem}.project-next a+a .project-next-copy{align-items:flex-end}.project-next strong{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,3rem);font-weight:400;line-height:1}.project-next-direction{font-family:var(--font-mono);font-size:var(--font-size-min)}.project-next-direction>span{display:inline-block;transition:transform var(--motion-state) var(--ease-out-quint)}.project-next a:focus-visible .project-next-direction>span,.project-next a:hover .project-next-direction>span{transform:translateX(-.24rem)}.project-next a+a:focus-visible .project-next-direction>span,.project-next a+a:hover .project-next-direction>span{transform:translateX(.24rem)}.project-next-summary{max-width:42ch;color:var(--ink-soft);font-size:var(--font-size-min);line-height:1.4}.project-next-preview{grid-area:preview;display:block;aspect-ratio:4/3;overflow:hidden;background:var(--surface-high);opacity:.24;transform:translateX(1rem) scale(.97);transition:opacity var(--motion-state) var(--ease-out-quart),transform var(--motion-surface) var(--ease-out-expo),filter var(--motion-state) var(--ease-out-quart);filter:grayscale(.55) saturate(.65)}.project-next a+a .project-next-preview{transform:translateX(-1rem) scale(.97)}.project-next-preview img{width:100%;height:100%;object-fit:cover}.project-next a:focus-visible .project-next-preview,.project-next a:hover .project-next-preview{opacity:1;filter:none;transform:translateX(0) scale(1)}.profile-header{min-height:88vh;display:flex;flex-direction:column;padding:1rem clamp(1rem,5vw,5rem) 3rem;background:var(--ink);color:var(--surface)}.profile-header nav{border-color:color-mix(in oklch,var(--surface) 45%,transparent)}.profile-header h1{max-width:10ch;margin:auto 0 0;font-family:var(--font-display);font-size:clamp(4rem,12vw,6rem);font-weight:400;line-height:.86;letter-spacing:-.035em}.profile-lede{max-width:56ch;margin:2rem 0 0;font-size:1.1rem}.profile-header address{display:flex;flex-wrap:wrap;gap:.7rem 2rem;margin-top:2rem;font-family:var(--font-mono);font-size:var(--font-size-min);font-style:normal}.profile-content{display:grid;grid-template-columns:minmax(0,2fr) minmax(18rem,1fr);grid-gap:clamp(2rem,6vw,6rem);gap:clamp(2rem,6vw,6rem);padding:var(--space-2xl) clamp(1rem,5vw,5rem)}.profile-content h2{margin:0 0 2rem;font-family:var(--font-display);font-size:clamp(2.2rem,4vw,4rem);font-weight:400}.experience-list{margin:0;padding:0;list-style:none}.experience-list li{display:grid;grid-template-columns:7rem 1fr;grid-gap:1rem;gap:1rem;padding:1.5rem 0;border-top:1px solid var(--line)}.experience-list time{font-family:var(--font-mono);font-size:var(--font-size-min)}.experience-list h3{margin:0;font-family:var(--font-display);font-size:1.5rem;font-weight:400}.experience-org{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}.experience-list li p:last-child{max-width:64ch}.profile-facts section{padding:0 0 2rem}.profile-facts h2{margin-bottom:.7rem;font-family:var(--font-mono);font-size:var(--font-size-min)}.profile-facts ul{margin:0;padding:0;list-style:none}.profile-facts li{padding:.35rem 0;border-bottom:1px solid var(--line)}.profile-software{display:grid;grid-gap:.9rem;gap:.9rem;margin:0}.profile-software div{padding-bottom:.7rem;border-bottom:1px solid var(--line)}.profile-software dt{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min);letter-spacing:.045em}.profile-software dd{margin:.3rem 0 0;font-size:.875rem;line-height:1.4}.profile-source{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--font-size-min)}@media (max-width:68rem){.site-header{padding-inline:1rem}.pinboard{grid-template-rows:repeat(16,minmax(0,1fr));gap:.45rem}.board-status p{max-width:34ch}.board-text-pin>span:nth-child(2){-webkit-line-clamp:3}.board-item--note .board-text-pin>span:nth-child(2),.board-item--text .board-text-pin>span:nth-child(2){-webkit-line-clamp:2}.board-item--note .board-caption,.board-item--text .board-caption{display:none}.board-item--note .board-text-pin,.board-item--text .board-text-pin{gap:.35rem;padding:.4rem .5rem .35rem}.works-row{grid-template-columns:2.25rem auto minmax(0,1fr) 3.5rem;grid-template-areas:"index media title year" "index media summary year" "index media type year";align-content:center;gap:.35rem 1rem}.works-row-index{grid-area:index}.works-row-media{grid-area:media;align-self:center}.works-row-title{grid-area:title}.works-row-summary{grid-area:summary}.works-row-type{grid-area:type}.works-row-year{grid-area:year}.board-item{transform:translate(var(--drag-x,0),var(--drag-y,0)) rotate(var(--pin-r-tablet,var(--pin-r)))}.board-item,.board-object{grid-column:var(--pin-x-tablet,var(--pin-x)) /span var(--pin-w-tablet,var(--pin-w));grid-row:var(--pin-y-tablet,var(--pin-y)) /span var(--pin-h-tablet,var(--pin-h))}.board-object{transform:translate(var(--object-drag-x,0),var(--object-drag-y,0)) rotate(var(--pin-r-tablet,var(--pin-r)))}.board-interaction-key{grid-column:3/span 8;grid-row:6/span 6}.project-panel{inset:calc(var(--header-height) + 1rem) 1.5rem 1.5rem auto;width:calc(100vw - 7rem);min-width:0}}@media (max-width:68rem) and (min-height:50rem){.board-item--note .board-text-pin>span:nth-child(2),.board-item--text .board-text-pin>span:nth-child(2){-webkit-line-clamp:4}}@media (max-width:47.99rem){.site-header{gap:.75rem;padding:max(0px,env(safe-area-inset-top)) 1rem 0}.site-wordmark{font-size:1.25rem}.site-nav{gap:1.1rem}.board-shell{height:auto;min-height:0;overflow:visible}.board-status{position:static;padding:.55rem 1rem}.board-status p{max-width:42ch}.works-index{padding-inline:1rem}.works-row{grid-template-columns:2.25rem minmax(0,1fr);grid-template-areas:"index media" "index title" "index summary" "index type" "index year";gap:.3rem 1rem;padding-block:1.1rem}.works-row:focus-visible,.works-row:hover{padding-inline:.4rem}.works-row-media{grid-area:media;margin-bottom:.5rem}.works-row-index{grid-area:index}.works-row-title{grid-area:title}.works-row-summary{grid-area:summary}.works-row-type{grid-area:type}.works-row-year{grid-area:year;text-align:start}.pinboard{display:flex;flex-direction:column;gap:2.2rem;min-width:0;min-height:0;padding:1.5rem 1rem 4rem;overflow:hidden}.pinboard:before,.thread-layer{display:none}.board-item{flex:0 0 auto;width:min(92%,calc(var(--pin-w-mobile, 11) / 12 * 100%));min-height:clamp(15rem,calc(var(--pin-h-mobile, 4) * 4.2rem),24rem);align-self:flex-start;-webkit-margin-start:calc((var(--pin-x-mobile, 1) - 1) / 12 * 8%);margin-inline-start:calc((var(--pin-x-mobile, 1) - 1) / 12 * 8%);transform:rotate(var(--pin-r-mobile,var(--pin-r)))}.board-item.is-quiet .board-media img{opacity:.48}.board-text-pin{padding:1.15rem 1rem .8rem;gap:.7rem}.board-caption div>span:last-child:not(:first-child),.board-text-pin>span:nth-child(2){display:block;overflow:visible;-webkit-line-clamp:none}.board-item.is-selected{transform:rotate(0deg)}.board-item--contact,.board-item--cv,.board-item--note,.board-item--profile,.board-item--text{min-height:12rem}.board-object{flex:0 0 auto;width:50%;min-height:7rem;align-self:flex-start;-webkit-margin-start:calc((var(--pin-x-mobile, 1) - 1) / 12 * 50%);margin-inline-start:calc((var(--pin-x-mobile, 1) - 1) / 12 * 50%);transform:translate(var(--object-drag-x,0),var(--object-drag-y,0)) rotate(var(--pin-r-mobile,var(--pin-r)))}.board-interaction-key{flex:0 0 auto;width:min(92%,32rem);align-self:center;transform:rotate(-.2deg)}.board-caption div>span:last-child:not(:first-child){font-size:var(--font-size-min)}.project-panel{display:none}.media-dialog{inset:0;block-size:100vh;block-size:100dvh}.media-footer{grid-template-columns:1fr;block-size:clamp(8rem,20dvh,10rem)}.media-footer p{font-size:var(--font-size-min)}.zoom-controls{flex-wrap:wrap;gap:.35rem .55rem;min-height:5.75rem;padding-inline:.5rem;overflow:hidden}.zoom-controls label{flex:1 1 8rem}.zoom-controls input{width:100%;min-width:5rem}.zoom-controls output{flex:1 1 auto}.info-dialog{width:calc(100vw - 1rem)}.project-heading{display:block;padding-top:3rem}.project-heading h1{font-size:clamp(2.8rem,14vw,4.75rem)}.project-heading>p:first-child{padding:0}.project-meta{grid-template-columns:1fr 1fr}.project-introduction{display:block}.project-introduction h2{margin-bottom:1.5rem}.project-introduction ul{margin-top:2rem}.project-sections{padding-inline:1rem}.project-section{display:block;padding:3.5rem 0}.project-section-header{margin-bottom:2rem}.project-section-header h2{max-width:16ch}.project-section-prose p{font-size:clamp(1.2rem,5.5vw,1.5rem)}.project-section-introduction{margin-bottom:1.5rem}.project-gallery.project-gallery--diagrams{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:2rem;gap:2rem}.project-phase-list>li{display:block;padding:2.5rem 0}.project-phase-copy{margin-bottom:1.75rem}.project-alternative-list>li{display:block;padding:2.5rem 0}.project-alternative-copy{margin-bottom:1.75rem}.project-objective-list>li{display:block;padding:2.5rem 0}.project-objective-heading{margin-bottom:1.5rem}.project-section-credits{grid-template-columns:1fr}.project-documentation>header{display:block}.project-documentation>header p{margin-top:.7rem}.project-gallery{display:block}.gallery-item{margin-bottom:2.5rem}.gallery-item figcaption{display:grid}.project-next{grid-template-columns:1fr}.project-next a,.project-next a+a{grid-template-columns:minmax(0,1fr) 7rem;grid-template-areas:"copy preview";min-height:10rem}.project-next a+a{border-top:1px solid var(--line);-webkit-border-start:0;border-inline-start:0;text-align:left}.project-next a+a .project-next-copy{align-items:flex-start}.profile-header{min-height:80vh}.profile-header h1{font-size:clamp(3.7rem,19vw,5.5rem)}.profile-content{display:block}.experience-list li{grid-template-columns:1fr}.profile-facts{margin-top:4rem}}@media (max-height:500px){.dialog-header{padding-block:.5rem}.dialog-header p{max-width:68vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-footer{block-size:5.5rem}}@media (hover:none){.project-next a+a .project-next-preview,.project-next-preview{opacity:1;filter:none;transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.board-caption button,.board-hint,.board-item,.board-media img,.board-object,.board-object-visual,.board-reset,.board-status-link,.board-status-link span,.board-text-pin,.dialog-close,.media-footer a,.project-next a,.project-next-direction>span,.project-next-preview,.project-panel header>button,.project-panel-link,.project-panel-link span,.site-nav a,.site-nav a:after,.skip-link,.thread-layer line,.works-preview,.works-row,.zoom-controls button,.zoom-controls label,.zoom-controls-hint{transition-duration:.01ms!important}.board-interaction-key,.pinboard.is-returning-even,.pinboard.is-returning-odd,.project-panel,.project-panel.is-closing,.project-panel.is-ready{animation:none}.pinboard.is-returning-even,.pinboard.is-returning-odd{filter:none;transform:none}.project-panel.is-ready{visibility:visible;opacity:1;animation:reduced-fade-in 80ms linear both}.board-item,.board-item.is-dragging,.board-item:focus-within,.board-item:hover{transform:translate(var(--drag-x,0),var(--drag-y,0)) rotate(0deg)}.board-object{transform:translate(var(--object-drag-x,0),var(--object-drag-y,0)) rotate(0deg)}.board-object-control:focus-visible .board-object-visual,.board-object-control:hover .board-object-visual,.board-object-visual,.project-panel-link:focus-visible span,.project-panel-link:hover span{transform:none}.info-dialog{transform:translate(-50%,-50%) rotate(0deg)}.works-preview,.works-preview.is-visible{transform:translate(var(--works-preview-x,0),var(--works-preview-y,0)) translate(-50%,-50%) rotate(0deg)}.dialog-overlay[data-state=open],.info-dialog[data-state=open],.media-dialog[data-state=open]{animation:reduced-fade-in 80ms linear both}.dialog-overlay[data-state=closed],.info-dialog[data-state=closed],.media-dialog[data-state=closed]{animation:none}}@keyframes reduced-fade-in{0%{opacity:0}}@media print{.board-interaction-key,.board-object,.board-status,.dialog-overlay,.media-dialog,.site-header,.works-preview{display:none!important}.portfolio-context,.site-shell{display:block}.board-shell{height:auto;min-height:0}body{background:white;color:black}}