@import "https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,700..800&family=DM+Mono:wght@500&family=DM+Sans:wght@400;450;500;550;600;650;700;750&display=swap";:root{--ocean:#022041;--paper:#f5f4f0;--ink:#edf5f7;--muted:#c1d7e9;--accent:#9ce8e9;--brush:#ffd75e;--paper-ink:#022041;--paper-ink-2:#022041b3;--paper-ink-3:#0220417a;--paper-line:#02204124;--paper-line-2:#02204142;--teal-ink:#0b5c62;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .2, 1);background:var(--paper);color:var(--ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;font-family:DM Sans,sans-serif;line-height:normal}*,:before,:after{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{scroll-behavior:smooth}body{min-width:320px}h1,h2,h3{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:none}svg,canvas{vertical-align:middle;display:block}button{font:inherit;letter-spacing:inherit;color:inherit;opacity:1;cursor:pointer}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:6px}::selection{color:#fff;background:#103c45}.portfolio{--hero-height:max(340px, 100svh);position:relative}@media (height<=600px){.portfolio{--hero-height:max(250px, 100svh)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.brush-title{--bl:-.22em;--br:-.5em;--bt:-.1em;--bb:-.08em;width:fit-content;margin-left:.14em;display:inline-block;position:relative;rotate:-2deg}.brush-title-name{--br:-.38em}.brush-title-brush{z-index:0;top:var(--bt);left:var(--bl);width:calc(100% - var(--bl) - var(--br));height:calc(100% - var(--bt) - var(--bb));pointer-events:none;position:absolute;overflow:visible}.brush-title-text{z-index:1;white-space:nowrap;display:block;position:relative}.brush-title-name .brush-title-text{color:var(--ink)}.brush-title-brush path{stroke-dasharray:1 1.04}.brush-title[data-phase=waiting] .brush-title-brush path{stroke-dashoffset:1.02px}.brush-title[data-phase=waiting] .brush-title-text{opacity:0}.brush-title[data-phase=playing] .brush-title-brush path{stroke-dashoffset:1.02px;animation:brush-title-paint var(--d) linear var(--dl) forwards}.brush-title[data-phase=playing] .brush-title-text{opacity:0;animation:brush-title-wipe var(--tdu) cubic-bezier(.35, .15, .6, 1) var(--tdl) forwards}@keyframes brush-title-paint{to{stroke-dashoffset:0}}@keyframes brush-title-wipe{0%{opacity:1;clip-path:inset(-.4em 100% -.4em -.4em)}to{opacity:1;clip-path:inset(-.4em)}}.sheet{--gutter:16px;--glass-height:max(78svh, 560px);--cross:#0220419e;z-index:1;color:var(--paper-ink);font:400 15px/1.55 DM Sans,sans-serif;position:relative}@media (width>=700px){.sheet{--gutter:32px}}.sheet-glass{z-index:-1;height:var(--glass-height);background:linear-gradient(to bottom, #f8f7f375, #f8f7f39e 22%, #f6f5f1db 62%, var(--paper));-webkit-backdrop-filter:blur(22px)saturate(1.5);backdrop-filter:blur(22px)saturate(1.5);pointer-events:none;border-top:1px solid #fffffff2;position:absolute;top:0;left:0;right:0}.sheet-glass:before{content:"";background:#0220411a;height:1px;position:absolute;top:0;left:0;right:0}.sheet:after{content:"";z-index:-2;inset:var(--glass-height) 0 0;background:var(--paper);position:absolute}.sheet-wrap{max-width:1200px;padding:0 var(--gutter);margin:0 auto}.sheet a:focus-visible,.sheet button:focus-visible{outline:1px solid var(--paper-ink);outline-offset:3px}.sheet ::selection{background:var(--accent);color:var(--paper-ink)}.sheet-eyebrow{color:var(--paper-ink-3);letter-spacing:.07em;text-transform:uppercase;font:500 11.5px/1.2 DM Mono,monospace}.sheet-lede{background:linear-gradient(to bottom, transparent, var(--paper-line) 70%) left top / 1px 100% no-repeat, linear-gradient(to bottom, transparent, var(--paper-line) 70%) right top / 1px 100% no-repeat;padding:clamp(56px,11vh,120px) clamp(20px,4vw,48px) clamp(40px,7vh,72px)}.sheet-lede-text{letter-spacing:-.035em;text-wrap:balance;max-width:19ch;margin-top:18px;font:700 clamp(30px,4.6vw,60px)/1.02 Bricolage Grotesque,sans-serif}.sheet-lede-text em{color:var(--teal-ink);font-style:normal}.bento{border-top:1px solid var(--paper-line);border-left:1px solid var(--paper-line);grid-template-columns:repeat(2,minmax(0,1fr));scroll-margin-top:72px;display:grid;position:relative}.bento+.bento{border-top:0}.bento:before,.bento:after,.bento-cell:before,.bento-cell:after{content:"";z-index:3;background:linear-gradient(var(--cross), var(--cross)) center / 1px 100% no-repeat, linear-gradient(var(--cross), var(--cross)) center / 100% 1px no-repeat;pointer-events:none;width:11px;height:11px;position:absolute}.bento:before{top:-6px;right:-5px}.bento:after{bottom:-5px;left:-6px}.bento-cell:before{top:-6px;left:-6px}.bento-cell:after{bottom:-5px;right:-5px}.bento-cell{border-right:1px solid var(--paper-line);border-bottom:1px solid var(--paper-line);min-width:0;padding:20px;position:relative}.bento-full,.bento-wide,.bento-narrow,.bento-span-phone,.project{grid-column:span 2}@media (width>=900px){.bento{grid-template-columns:repeat(6,minmax(0,1fr));scroll-margin-top:88px}.bento-cell{grid-column:span 2;padding:28px}.bento-full{grid-column:span 6}.bento-wide,.project-feature{grid-column:span 4}.project-half{grid-column:span 3}.bento-tall,.project-feature{grid-row:span 2}}.section-head{flex-wrap:wrap;align-items:center;gap:10px 24px;padding-top:30px;padding-bottom:28px;display:flex}.section-head h2{font-variation-settings:"opsz" 96;letter-spacing:-.035em;font:800 clamp(44px,6vw,76px)/1 Bricolage Grotesque,sans-serif}.section-head,.contact-page-lede{container-type:inline-size}.contact-title{--fit:7.4}.contact-title:lang(it){--fit:10}.section-head h2.contact-title{font-size:min(clamp(44px, 6vw, 76px), 100cqi / var(--fit))}.project{flex-direction:column;gap:18px;display:flex}.project-figure{border:1px solid var(--paper-line);background:var(--paper-line);flex:1;min-height:180px;position:relative;overflow:hidden}.project-feature .project-figure{min-height:300px}.project-wide .project-figure,.project-half .project-figure{aspect-ratio:3/2}@media (width>=900px){.project-wide{grid-template-columns:1fr 1fr;align-items:center;gap:28px;display:grid}}.project-figure img{object-fit:cover;width:100%;height:100%;transition:opacity .9s var(--ease-in-out);position:absolute;inset:0}.project-figure[data-drawn=false] img{opacity:0}.project-meta{grid-template-columns:1fr auto;align-items:start;gap:6px 16px;display:grid}.project h3{letter-spacing:-.025em;font:700 22px/1.1 Bricolage Grotesque,sans-serif}.project-feature h3{font-size:clamp(24px,2.6vw,32px)}.project-go{color:var(--paper-ink-3);padding-top:6px;font:500 17px/1 DM Mono,monospace}.project p{max-width:52ch;color:var(--paper-ink-2);grid-column:1/-1;margin-top:2px;font-size:14.5px}.project-tools{flex-wrap:wrap;grid-column:1/-1;gap:6px;margin-top:8px;list-style:none;display:flex}.project-tools li{border:1px solid var(--paper-line-2);color:var(--paper-ink-2);letter-spacing:.04em;border-radius:999px;padding:5px 8px 4px;font:500 10.5px/1 DM Mono,monospace}.projects-all{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;padding-top:26px;padding-bottom:26px;transition:background-color .3s;display:flex}.projects-all-label{background:linear-gradient(var(--paper-ink), var(--paper-ink)) left bottom / 0 1.5px no-repeat;letter-spacing:-.025em;transition:background-size .5s var(--ease-out);padding-bottom:4px;font:700 clamp(24px,3vw,36px)/1.1 Bricolage Grotesque,sans-serif}.projects-all-label:after{content:"→";transition:transform .35s var(--ease-out);margin-left:.35em;font-family:DM Mono,monospace;font-weight:500;display:inline-block}.projects-all:hover .projects-all-label{background-size:100% 1.5px}.projects-all:hover .projects-all-label:after{transform:translate(6px)}.about-text p{max-width:44ch;font-size:clamp(17px,1.6vw,21px);line-height:1.5}.about-text p+p{color:var(--paper-ink-2);margin-top:14px;font-size:clamp(15px,1.3vw,17px)}.about-donut{place-items:center;display:grid;container-type:inline-size}.ascii-donut{color:var(--paper-ink);white-space:pre;-webkit-user-select:none;user-select:none;width:100%;height:48em;font:500 2.04082cqw/1.2 DM Mono,monospace}.stack-group h3{color:var(--paper-ink-3);letter-spacing:.07em;text-transform:uppercase;justify-content:space-between;margin-bottom:14px;font:500 11px/1.2 DM Mono,monospace;display:flex}.stack-group ul{list-style:none}.stack-group li{border-top:1px solid var(--paper-line);justify-content:space-between;gap:8px;padding:8px 0;font-weight:500;display:flex}.stack-group li span,.stack-group h3 span{color:var(--paper-ink-3);font:500 10.5px/1.9 DM Mono,monospace}.stack-flow{--loop:8.4s;--surge:cubic-bezier(.45, .1, .8, .5);--play:paused;padding-top:24px;padding-bottom:24px}.stack-flow[data-live]{--play:running}.stack-flow h3{letter-spacing:-.02em;margin-bottom:22px;font:700 19px/1.15 Bricolage Grotesque,sans-serif}.stack-flow-track{margin:0 8px;position:relative;container-type:inline-size}.stack-flow-track:before,.stack-flow-track:after{content:"";background:var(--paper-line-2);height:1px;position:absolute;top:7.5px;left:0;right:0}.stack-flow-track:after{background:var(--teal-ink);transform-origin:0;height:2px;animation:stack-flow-fill var(--loop) var(--surge) infinite;animation-play-state:var(--play);top:7px}.stack-flow-spark{background:linear-gradient(90deg, transparent, var(--accent));opacity:0;width:26px;height:3px;animation:stack-flow-spark var(--loop) var(--surge) infinite;animation-play-state:var(--play);border-radius:3px;position:absolute;top:6.5px;left:-26px}.stack-flow ol{z-index:1;grid-template-columns:minmax(0,1fr) repeat(3,minmax(0,2fr)) minmax(0,1fr);list-style:none;display:grid;position:relative}.stack-flow li{--hit:calc(var(--loop) * (.06 + .13 * var(--i)));letter-spacing:.04em;white-space:nowrap;flex-direction:column;align-items:center;gap:10px;font:500 10.5px/1 DM Mono,monospace;display:flex}.stack-flow li:first-child{align-items:flex-start;margin-left:-8px}.stack-flow li:last-child{align-items:flex-end;margin-right:-8px}.stack-flow-mark{--pop:1.5;width:16px;height:16px;animation:stack-flow-hit var(--loop) infinite var(--hit);animation-play-state:var(--play);position:relative}.stack-flow-mark svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.stack-flow-mark path{fill:var(--paper);stroke:var(--paper-ink);stroke-width:1px;vector-effect:non-scaling-stroke}.stack-flow-mark path.lit{fill:var(--teal-ink);stroke:var(--teal-ink)}.stack-flow-label{color:var(--paper-ink)}.stack-flow .lit,.stack-flow-label{--off:0;animation:var(--on) var(--loop) linear infinite;animation-play-state:var(--play)}.stack-flow-label{--off:.45}.stack-flow li:first-child{--on:stack-flow-on-0}.stack-flow li:nth-child(2){--on:stack-flow-on-1}.stack-flow li:nth-child(3){--on:stack-flow-on-2}.stack-flow li:nth-child(4){--on:stack-flow-on-3}.stack-flow li:nth-child(5){--on:stack-flow-on-4}.stack-flow-mark:after{content:"";border:1px solid var(--teal-ink);opacity:0;animation:stack-flow-wave var(--loop) cubic-bezier(.2, .7, .3, 1) infinite var(--hit);animation-play-state:var(--play);position:absolute;inset:3.5px}.stack-flow-mark[data-shape=diamond]:after{rotate:45deg}.stack-flow-mark[data-shape=circle]{--pop:1.45}.stack-flow-mark[data-shape=circle] svg{width:22px;height:22px;inset:-3px}.stack-flow-mark[data-shape=circle]:before,.stack-flow-mark[data-shape=circle]:after{content:"";z-index:-1;opacity:0;animation:stack-flow-bloom var(--loop) cubic-bezier(.2, .7, .3, 1) infinite var(--hit);animation-play-state:var(--play);border-radius:50%;position:absolute;inset:3px}.stack-flow-mark[data-shape=circle]:before{background:var(--teal-ink)}.stack-flow-mark[data-shape=circle]:after{border:1.5px solid var(--teal-ink);animation-name:stack-flow-burst}@keyframes stack-flow-fill{0%,6%{opacity:1;transform:scaleX(0)}19%{transform:scaleX(.25)}32%{transform:scaleX(.5)}45%{transform:scaleX(.75)}58%{transform:scaleX(1)}88%{opacity:1}94%,to{opacity:0;transform:scaleX(1)}}@keyframes stack-flow-spark{0%,5%{opacity:0;translate:0}6%{opacity:1;translate:0}19%{translate:25cqw}32%{translate:50cqw}45%{translate:75cqw}58%{opacity:1;translate:100cqw}61%,to{opacity:0;translate:100cqw}}@keyframes stack-flow-hit{0%{animation-timing-function:cubic-bezier(.2,.9,.3,1);scale:1}2.5%{scale:var(--pop,1);animation-timing-function:cubic-bezier(.3,1.8,.5,1)}9%,to{scale:1}}@keyframes stack-flow-wave{0%{opacity:.8;scale:1}7%,to{opacity:0;scale:3.4}}@keyframes stack-flow-bloom{0%{opacity:.35;scale:.6}9%,to{opacity:0;scale:3.6}}@keyframes stack-flow-burst{0%,1.5%{opacity:0;scale:1}2%{opacity:1}13%,to{opacity:0;scale:5.5}}@keyframes stack-flow-on-0{0%,5.9%{opacity:var(--off)}6%,88%{opacity:1}94%,to{opacity:var(--off)}}@keyframes stack-flow-on-1{0%,18.9%{opacity:var(--off)}19%,88%{opacity:1}94%,to{opacity:var(--off)}}@keyframes stack-flow-on-2{0%,31.9%{opacity:var(--off)}32%,88%{opacity:1}94%,to{opacity:var(--off)}}@keyframes stack-flow-on-3{0%,44.9%{opacity:var(--off)}45%,88%{opacity:1}94%,to{opacity:var(--off)}}@keyframes stack-flow-on-4{0%,57.9%{opacity:var(--off)}58%,88%{opacity:1}94%,to{opacity:var(--off)}}.contact-teaser{flex-direction:column;align-items:flex-start;gap:18px;display:flex}.contact-teaser p{text-wrap:pretty;flex:1;max-width:30ch;font-size:clamp(19px,2vw,26px);line-height:1.4}.contact-teaser .projects-all-label{margin-top:18px}.contact-teaser:hover .projects-all-label{background-size:100% 1.5px}.contact-teaser:hover .projects-all-label:after{transform:translate(6px)}.contact-lanyard{height:clamp(400px,52vh,520px);padding:0}.sheet-footer{color:var(--paper-ink-3);letter-spacing:.05em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:16px;padding-bottom:16px;font:500 11px/1.4 DM Mono,monospace;display:flex}.sheet-footer a:hover{color:var(--paper-ink)}.sheet-tail{height:clamp(48px,10vh,96px);padding-bottom:env(safe-area-inset-bottom);background:linear-gradient(to bottom, var(--paper-line), transparent) left top / 1px 100% no-repeat, linear-gradient(to bottom, var(--paper-line), transparent) right top / 1px 100% no-repeat}.site-nav{z-index:20;top:max(16px, env(safe-area-inset-top));contain:layout paint;width:44px;height:44px;color:var(--paper-ink);-webkit-backdrop-filter:blur(18px)saturate(1.7);backdrop-filter:blur(18px)saturate(1.7);transition:width .46s var(--ease-in-out) 60ms, height .4s var(--ease-in-out), border-radius .4s var(--ease-in-out), background-color .4s, border-color .4s;background:#fafaf794;border:1px solid #02204121;border-radius:22px;position:fixed;right:16px;overflow:hidden}@media (width>=700px){.site-nav{top:max(24px, env(safe-area-inset-top));right:24px}}.site-nav[data-open=true]{width:var(--open-width);height:var(--open-height);-webkit-backdrop-filter:blur(24px)saturate(1.6);backdrop-filter:blur(24px)saturate(1.6);color:var(--paper);transition:width .5s var(--ease-out), height .62s var(--ease-out) 70ms, border-radius .5s var(--ease-out), background-color .3s, border-color .3s;background-color:#022041cc;border-color:#edf5f724;border-radius:20px}.site-nav-toggle{z-index:1;background:0 0;border-radius:50%;width:42px;height:42px;position:absolute;top:0;right:0}.site-nav-toggle span{background:var(--paper-ink);width:16px;height:1.5px;transition:transform .45s var(--ease-out), background-color .3s;border-radius:1px;position:absolute;left:13px}.site-nav-toggle span:first-child{top:17px}.site-nav-toggle span:last-child{top:23.5px}.site-nav[data-open=true] .site-nav-toggle span{background:var(--paper)}.site-nav[data-open=true] .site-nav-toggle span:first-child{transform:translateY(3.25px)rotate(45deg)}.site-nav[data-open=true] .site-nav-toggle span:last-child{transform:translateY(-3.25px)rotate(-45deg)}.site-nav-panel{width:min(264px,100vw - 34px);padding:0 16px 8px;position:absolute;top:0;right:0}.site-nav-head{color:#c1d7e9bf;letter-spacing:.08em;text-transform:uppercase;align-items:center;height:42px;margin:0;font:500 10.5px/1 DM Mono,monospace;display:flex}.site-nav-head,.site-nav-item,.site-nav-foot{opacity:0;transition:opacity .15s, transform .3s var(--ease-out);transform:translateY(-6px)}.site-nav[data-open=true] :is(.site-nav-head,.site-nav-item,.site-nav-foot){opacity:1;transition:opacity .3s calc(var(--i,-1) * 45ms + .2s), transform .55s var(--ease-out) calc(var(--i,-1) * 45ms + .2s);transform:none}.site-nav-item{letter-spacing:-.02em;white-space:nowrap;border-top:1px solid #edf5f724;align-items:center;gap:13px;padding:12px 0;font:700 21px/1 Bricolage Grotesque,sans-serif;display:flex}.site-nav-item svg{stroke-width:1.75px;flex:none;width:19px;height:19px}.site-nav-item[aria-disabled]{cursor:default}.site-nav-foot{color:#c1d7e9bf;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #edf5f724;justify-content:space-between;align-items:center;margin-top:0;padding:10px 0 2px;font:500 10.5px/1 DM Mono,monospace;display:flex}.language-switch{background:#edf5f714;border:1px solid #edf5f724;border-radius:15px;width:82px;height:30px;padding:3px;display:flex;position:relative}.language-switch-thumb{background:var(--paper);transition:left .3s var(--ease-out), right .48s var(--ease-out) 50ms, transform .25s var(--ease-out);border-radius:12px;position:absolute;inset:3px 50% 3px 3px;box-shadow:0 1px 2px #000a194d,0 4px 10px #000a192e}.language-switch[data-language=en] .language-switch-thumb{transition:right .3s var(--ease-out), left .48s var(--ease-out) 50ms, transform .25s var(--ease-out);left:50%;right:3px}.language-switch:active .language-switch-thumb{transform:scale(.93,.86)}.language-switch button{color:#c1d7e9bf;letter-spacing:.08em;text-transform:uppercase;background:0 0;border-radius:12px;flex:1;font:500 11px/1 DM Mono,monospace;transition:color .3s;position:relative}.language-switch button:hover{color:var(--paper)}.language-switch button[aria-checked=true]{color:var(--paper-ink);transition-delay:80ms}.site-nav-toggle:focus-visible{outline-offset:-6px;outline:1px solid}.site-nav[data-open=true] .site-nav-toggle{color:var(--paper)}.language-switch button:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.site-nav a:focus-visible{outline:1px solid var(--paper);outline-offset:2px}@media (prefers-reduced-motion:reduce){.site-nav,.site-nav[data-open=true]{transition:opacity .2s,background-color .2s}.site-nav:not([data-open=true]) .site-nav-panel{visibility:hidden}}
