@charset "UTF-8";*{box-sizing:border-box}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{font-size:100%;font:inherit;vertical-align:baseline;border:0;margin:0;padding:0}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-size:1rem;color:var(--col-accent);background:var(--col-panel-bg);border:1px solid var(--col-accent);border-radius:999px;padding:.5rem 1rem;cursor:pointer;transition:.3s}.button.active,.button:hover{background:var(--col-accent);color:var(--col-panel-bg)}.button svg{width:1.2em;height:1.2em;flex-shrink:0}.button-list{display:flex;flex-wrap:wrap;justify-content:center}@keyframes panel-appear{0%{opacity:0;transform:translateY(200px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}.panel{background:var(--col-panel-bg);border:1px solid var(--col-border);border-radius:var(--size-radius);padding:1.5rem 1rem;box-shadow:0 4px 8px #0003}@media(min-width:460px){.panel{padding-left:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem);padding-right:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem)}}@media(min-width:768px){.panel{text-align:left;padding-top:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.panel{padding:2rem}}@media(min-width:1280px){.panel{padding-top:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-bottom:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-left:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-right:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(min-width:1536px){.panel{padding:3rem}}@media(max-width:600px){.xs-panel{background:var(--col-panel-bg);border:1px solid var(--col-border);border-radius:var(--size-radius);padding:1.5rem 1rem;box-shadow:0 4px 8px #0003}}@media(max-width:600px)and (min-width:460px){.xs-panel{padding-left:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem);padding-right:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem)}}@media(max-width:600px)and (min-width:768px){.xs-panel{text-align:left;padding-top:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(max-width:600px)and (min-width:1024px){.xs-panel{padding:2rem}}@media(max-width:600px)and (min-width:1280px){.xs-panel{padding-top:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-bottom:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-left:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-right:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(max-width:600px)and (min-width:1536px){.xs-panel{padding:3rem}}@media(min-width:600px)and (max-width:767.9px){.sm-panel{background:var(--col-panel-bg);border:1px solid var(--col-border);border-radius:var(--size-radius);padding:1.5rem 1rem;box-shadow:0 4px 8px #0003}}@media(min-width:600px)and (max-width:767.9px)and (min-width:460px){.sm-panel{padding-left:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem);padding-right:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem)}}@media(min-width:600px)and (max-width:767.9px)and (min-width:768px){.sm-panel{text-align:left;padding-top:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:600px)and (max-width:767.9px)and (min-width:1024px){.sm-panel{padding:2rem}}@media(min-width:600px)and (max-width:767.9px)and (min-width:1280px){.sm-panel{padding-top:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-bottom:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-left:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-right:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(min-width:600px)and (max-width:767.9px)and (min-width:1536px){.sm-panel{padding:3rem}}@media(min-width:768px){.md-panel{background:var(--col-panel-bg);border:1px solid var(--col-border);border-radius:var(--size-radius);padding:1.5rem 1rem;box-shadow:0 4px 8px #0003}}@media(min-width:768px)and (min-width:460px){.md-panel{padding-left:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem);padding-right:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (768px - 460px),1.5rem)}}@media(min-width:768px)and (min-width:768px){.md-panel{text-align:left;padding-top:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:768px)and (min-width:1024px){.md-panel{padding:2rem}}@media(min-width:768px)and (min-width:1280px){.md-panel{padding-top:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-bottom:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-left:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem);padding-right:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(min-width:768px)and (min-width:1536px){.md-panel{padding:3rem}}@font-face{font-family:Comfortaa;src:url(/fonts/comfortaa.woff2) format("woff2"),url(/fonts/comfortaa.woff) format("woff");font-weight:700;font-display:block}@font-face{font-family:Inter;src:url(/fonts/inter.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}body{font-family:Inter,sans-serif}h2,h3{color:var(--col-header-text)}h1,h2{font-family:Comfortaa,sans-serif;font-optical-sizing:auto;font-weight:700;font-style:normal;opacity:0;transition:opacity .4s ease}.site:not(.fonts-loaded) h1,.site:not(.fonts-loaded) h2{visibility:hidden}.fonts-loaded h1,.fonts-loaded h2{opacity:1}h1{font-size:clamp(2.8rem,10vw,6rem);line-height:1.125;margin:0}h1 span{display:block;text-align:left;font-size:clamp(2rem,3vw + 1rem,3rem);line-height:1em;padding-left:.1em;padding-left:clamp(.1em,.1em + (100vw - 320px) * (.2em - .1em) / (600px - 320px),.2em)}@media(min-width:600px){h1 span{padding-left:.2em}}h2{display:inline-block;position:relative;font-size:1.75rem;line-height:1.25em}h3{font-weight:600;line-height:1.25em;margin:0 0 .25em}p{line-height:1.75em}p.small-text{font-size:.75em}ul{list-style:none;padding:0}ul li{display:inline-block;line-height:1.75em}ul.inline-list li:after{content:"·";margin:0 .5rem}ul.inline-list li:last-child:after{display:none}ul.bullets{margin:-1em 0 .5rem}ul.bullets li{margin-bottom:1rem}ul.bullets li:before{content:"·";margin:0 .5rem}.about-section .section-content{display:grid}@media(min-width:768px){.about-section .section-content{grid-template-columns:1fr 1fr}}@media(min-width:1024px){.about-section .section-content{grid-template-columns:7fr 5fr}}.about-section .panel:nth-child(2){animation:panel-appear;animation-timeline:view();animation-range-start:0%;animation-range-end:40dvh}@media(min-width:768px){.about-section .panel:nth-child(2){animation:none}}.about-section .skills h3{margin-bottom:.25em}.clients-section{animation:panel-appear;animation-timeline:view();animation-range-start:0%;animation-range-end:40dvh}@media(min-width:768px){.clients-section{text-align:left}}.clients-section .small-text{text-align:left;margin-bottom:0}@media(min-width:768px){.clients-section-grid{display:grid;grid-template-columns:5fr 7fr}}@media(min-width:1024px){.clients-section-grid{grid-template-columns:6fr 6fr}}@media(min-width:1340px){.clients-section-grid{grid-template-columns:5fr 7fr}}.client-list{display:grid;text-align:center;grid-template-columns:1fr 1fr}@media(min-width:600px){.client-list{grid-template-columns:1fr 1fr 1fr}}@media(min-width:768px){.client-list{grid-template-columns:1fr}}@media(min-width:890px){.client-list{grid-template-columns:1fr 1fr}}@media(min-width:1340px){.client-list{grid-template-columns:1fr 1fr 1fr}}.client-list div{filter:grayscale(40%);opacity:.6;transition:.3s;cursor:pointer;overflow:hidden;border-radius:.5rem;box-shadow:0 4px 8px #0003}.client-list div span{display:block}.client-list div span.bg-newday{background:#000}.client-list div span.bg-nokia{background:linear-gradient(45deg,#040378,#03c)}.client-list div span.bg-royal-london{background:linear-gradient(150deg,#eae3ed,#ac8db7 60%,#6b337f)}.client-list div span.bg-tiger-pistol{background:url(/images/clients/tigerPistol-bg.gif) repeat}.client-list div span.bg-abbey-road{background:#ffe411}.client-list div span.bg-demons{background:#e2231a}.client-list div span.bg-jaguar{background:url(/images/clients/jaguar-bg.gif) repeat-x}.client-list div span.bg-land-rover{background:#f0f0f0;border:solid 1px var(--col-border)}.client-list div span.logo-2{position:absolute;top:0;left:0;width:100%;z-index:2;clip-path:polygon(66.666% 0,100% 0%,100% 100%,33.333% 100%)}.client-list div img{border-radius:14px;transition:.3s;max-width:60%;max-height:100px;margin:0 auto}@media(min-width:890px){.client-list div img{max-height:140px}}.client-list div.active{filter:grayscale(0%);opacity:1}.client-list div:hover{filter:grayscale(0%);opacity:1;scale:1.05}.client-list div:hover img{scale:1.15}.client{position:relative}.client h3{font-size:1.25rem;margin-bottom:1rem}.client .inline-list li{font-size:.875em}.client .timer-container{width:100%;height:2px;background:var(--col-border);border-radius:999px;overflow:hidden}@media(min-width:768px){.client .timer-container{position:absolute;bottom:0;width:calc(100% - 3rem);height:4px}}@media(min-width:1600px){.client .timer-container{width:calc(100% - 6rem)}}.client .timer-container .timer-bar{height:100%;width:0%;background:linear-gradient(to right,#A4C8CA,var(--col-accent) 80%);border-radius:999px}.contact-section{background:#000}.contact-section .section-content{display:flex;flex-direction:column;margin:0 auto}.contact-section .section-content h2{color:var(--col-border)}.contact-section .section-content img{width:80px}.contact-section .section-content p{color:#999}.contact-section .section-content a{display:inline-block;text-decoration:none;background:transparent}@media(min-width:768px){.contact-section .section-content{flex-direction:row;text-align:left}.contact-section .section-content>div:first-child{order:2;flex:1}.contact-section .section-content>div:last-child{text-align:right;order:1;flex:1}.contact-section .section-content p{text-align:left}.contact-section .section-content img{width:200px}}.hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:90vh;color:#fff;overflow:hidden;z-index:2}.hero .hero-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;--mask1: linear-gradient(180deg, #000 0, #000 calc(100% - 98px) , #0000 calc(100% - 99px) );--mask2: url(/images/hero-lava.svg) center calc(100% + 1px) / auto 100px repeat-x;mask:var(--mask1),var(--mask2);-webkit-mask:var(--mask1),var(--mask2)}.hero .hero-canvas-layer{position:absolute;inset:0;transition:opacity .8s ease,visibility .8s ease;pointer-events:none;opacity:0;z-index:2}.hero .hero-canvas{width:100%;height:calc(100% + 2px);background:#000;overflow:hidden}.hero .ribbon-wrapper{position:absolute;top:0;left:clamp(1em,4vw,4em);transform-origin:top;overflow:hidden;z-index:4}.hero .ribbon-wrapper .ribbon{position:relative;width:80px;text-align:center;background:#f0f0f0;padding:10px;margin-bottom:20px}.hero .ribbon-wrapper .ribbon:before{position:absolute;bottom:-20px;left:0;width:0;height:40px;content:" ";border-left:41px solid #f0f0f0;border-right:41px solid #f0f0f0;border-bottom:20px solid transparent}.hero .ribbon-wrapper .ribbon .ribbon-content{position:relative;display:grid;z-index:2}.hero .ribbon-wrapper .ribbon .ribbon-content p{display:inline-block;color:#000;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:2px;margin:0 auto}.hero .ribbon-wrapper .ribbon .ribbon-content img{margin-bottom:10px}.hero .theme-selector{display:flex;gap:.5rem;position:absolute;top:8px;right:8px;z-index:4}.hero .theme-selector button{height:44px;width:44px;background:transparent;border:none;overflow:hidden;padding:4px;opacity:.4;cursor:pointer;transition:opacity .1s linear}.hero .theme-selector button:hover{opacity:1}.hero .theme-selector button:hover svg{transform:scale(1.1);transition:transform .1s linear}.hero .theme-selector button.theme-selected{opacity:1;cursor:default}.hero .theme-selector button.theme-selected svg{transform:scale(1.1)}.hero .theme-selector svg{max-height:100%;max-width:100%;color:var(--col-accent)}.hero .hero-content{display:flex;gap:1rem;flex-direction:column;position:relative;z-index:5;padding:1.5rem 1rem;padding:clamp(1.5rem,1.5rem + (100vw - 320px) * (3rem - 1.5rem) / (460px - 320px),3rem) clamp(1rem,1rem + (100vw - 320px) * (3rem - 1rem) / (460px - 320px),3rem);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);border-radius:1.5rem;transition:background .75s linear}@media(min-width:460px){.hero .hero-content{padding:clamp(3rem,5vw,4rem) clamp(3rem,5vw,4rem)}}.hero .hero-content h1{text-align:left;margin:0 auto}.hero .hero-content .lead{text-transform:uppercase;letter-spacing:2px;font-size:.75rem;margin:0;opacity:0}.hero .hero-content .lead .no-wrap{display:block}@media(min-width:600px){.hero .hero-content .lead .no-wrap{display:inline-block}}.hero .hero-merge{position:absolute;bottom:-160px}.hero .hero-merge path{fill:#111}.fonts-loaded .hero .hero-content h1,.fonts-loaded .hero .hero-content .lead{opacity:0;transform:translateY(20px);animation:fadeUp .8s ease forwards;animation-delay:.1s}.fonts-loaded .hero .hero-content .lead{animation-delay:.3s}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}.lab-section.animate-in{animation:panel-appear;animation-timeline:view();animation-range-start:0%;animation-range-end:40dvh}.lab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(229px,1fr))}@media(min-width:768px){.lab-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}@media(min-width:900px){.lab-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1400px){.lab-grid{grid-template-columns:repeat(4,1fr)}}@media(min-width:1800px){.lab-grid{grid-template-columns:repeat(5,1fr)}}.lab-grid .experiment-content{position:relative;transition:.5s;border:solid 1px #ccc;border-radius:.5rem;box-shadow:0 4px 8px #0003;overflow:hidden;cursor:pointer}.lab-grid .experiment-content .thumb{position:relative;min-width:100%;max-height:180px;aspect-ratio:16/9;z-index:1;transition:.5s;background:#ccc}.lab-grid .experiment-content .thumb.thumb-loading .loader{width:40px;border:4px solid rgba(0,0,0,0);border-right-color:#333333b3}.lab-grid .experiment-content .thumb.thumb-loading .loader:before,.lab-grid .experiment-content .thumb.thumb-loading .loader:after{inset:-4px}.lab-grid .experiment-content .thumb.thumb-loading .thumb-bg{opacity:0}@media(min-width:1024px){.lab-grid .experiment-content .thumb{max-height:270px}}.lab-grid .experiment-content .thumb .thumb-bg{display:block;width:100%;height:100%;transition:.4s}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-card,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-buttons,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-maze,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-atom,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-loaders,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-charts,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-components,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-manipulation,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-quick-change,.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-tree{background:#fff}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-3d-viewer{background:#ccc}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-autumn{background:linear-gradient(#163678,#335e9a)}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-competition-poc{background:#000 url(/images/lab/competition-poc-bg.webp) no-repeat center center;background-size:cover}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-dandelion{background:linear-gradient(#244a88,#2d5794)}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-dice{background:linear-gradient(to bottom,#19311b,#142914) left/50% 100% no-repeat,linear-gradient(to bottom,#102010,#0b160b) right/50% 100% no-repeat}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-disco-ball{background:#000}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-disco-light{background:linear-gradient(#161616,#1e1e1e)}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-flip-board{background:#1f1f1f}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-groundhog-day-radio{background:#000 url(/images/lab/groundhog-day-radio-bg.webp) no-repeat center center;background-size:cover}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-jukebox{background:#f9f9f9}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-rain{background:url(/images/lab/rain-bg.webp) repeat center center}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-snow{background:url(/images/lab/snow.webp) repeat center center}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-space-invaders{background:url(/images/lab/space-invaders-bg.gif) repeat center center}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-swingers{background:#ffa831}.lab-grid .experiment-content .thumb .thumb-bg.thumb-bg-tnkii{background:#101010}.lab-grid .experiment-content .thumb .thumb-bg img{display:block;aspect-ratio:16/9;max-width:100%;max-height:180px;margin:0 auto}@media(min-width:1024px){.lab-grid .experiment-content .thumb .thumb-bg img{max-height:270px}}.lab-grid .experiment-content .icons{position:absolute;bottom:0;right:0;display:flex;gap:.25rem;background:#0e8c9566;border-top-left-radius:4px;padding:4px;z-index:2}.lab-grid .experiment-content .icons svg{display:block;color:#fff;width:1.2em;height:1.2em;flex-shrink:0}.lab-grid .experiment-content:hover{transform:scale(1.05)}.lab-grid .experiment-content:hover .thumb{transform:scale(1.15)}.lab-grid .experiment-content .overlay{position:absolute;inset:0;z-index:3;pointer-events:none}.lab-grid .experiment-content .overlay .overlay-title{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:1.2rem;z-index:2}.lab-grid .experiment-content .overlay .overlay-panel{position:absolute;inset:0;background:#0009}.loader-wrapper{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.loader-wrapper .loader{position:relative;width:160px;aspect-ratio:1;border-radius:50%;border:20px solid rgba(0,0,0,0);border-right-color:#333333b3;animation:loaderFrames 1.5s infinite linear}.loader-wrapper .loader:before,.loader-wrapper .loader:after{content:"";position:absolute;inset:-20px;border-radius:inherit;border:inherit;animation:inherit;animation-duration:3s}.loader-wrapper .loader:after{animation-duration:6s}@keyframes loaderFrames{to{rotate:360deg}}.modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:9}.modal-overlay .modal{position:relative;width:calc(100vw - 2rem);height:calc(100dvh - 3rem);margin-top:1rem;background:linear-gradient(135deg,#f6f6f6,#f0f0f0);border-radius:.5rem}@media(min-width:460px){.modal-overlay .modal{width:clamp(min(100vw - 2rem,100vw - 4rem),calc(100vw - 2rem) + (100vw - 460px) * (calc(100vw - 4rem) - calc(100vw - 2rem)) / (600px - 460px),max(100vw - 2rem,100vw - 4rem));height:clamp(min(100dvh - 3rem,100dvh - 4rem),calc(100dvh - 3rem) + (100vw - 460px) * (calc(100dvh - 4rem) - calc(100dvh - 3rem)) / (600px - 460px),max(100dvh - 3rem,100dvh - 4rem));margin-top:clamp(min(1rem,0px),1rem + (100vw - 460px) * (0px - 1rem) / (600px - 460px),max(1rem,0px))}}@media(min-width:600px){.modal-overlay .modal{width:calc(100vw - 4rem);height:calc(100dvh - 4rem);margin-top:0}}.modal-overlay .modal .button-list{position:absolute;top:-22px;right:-11px;z-index:2}.modal-overlay .modal .button-list .button{height:44px;width:66px;color:#fff;background:var(--col-accent);border-color:var(--col-accent)}.modal-overlay .modal .button-list .button:hover{color:var(--col-accent);background:#fff}.modal-overlay .modal .modal-iframe{position:relative;height:100%;width:100%;background:#fff;border-radius:.25rem;overflow:hidden;z-index:1}.modal-overlay .modal .modal-iframe.bg-card,.modal-overlay .modal .modal-iframe.bg-buttons,.modal-overlay .modal .modal-iframe.bg-maze,.modal-overlay .modal .modal-iframe.bg-atom,.modal-overlay .modal .modal-iframe.bg-loaders,.modal-overlay .modal .modal-iframe.bg-charts,.modal-overlay .modal .modal-iframe.bg-components,.modal-overlay .modal .modal-iframe.bg-manipulation,.modal-overlay .modal .modal-iframe.bg-quick-change,.modal-overlay .modal .modal-iframe.bg-tree{background:#fff}.modal-overlay .modal .modal-iframe.bg-3d-viewer{background:#ccc}.modal-overlay .modal .modal-iframe.thumb-bg-autumn{background:linear-gradient(#153577,#3865a0)}.modal-overlay .modal .modal-iframe.bg-competition-poc{background:transparent}.modal-overlay .modal .modal-iframe.bg-dandelion{background:linear-gradient(#244a88,#2d5794)}.modal-overlay .modal .modal-iframe.bg-dice{background:linear-gradient(135deg,#242,#000)}.modal-overlay .modal .modal-iframe.bg-disco-ball{background:#000}.modal-overlay .modal .modal-iframe.bg-disco-light{background:linear-gradient(#161616,#1e1e1e)}.modal-overlay .modal .modal-iframe.bg-flip-board{background:#1f1f1f}.modal-overlay .modal .modal-iframe.bg-groundhog-day-radio{background:#000}.modal-overlay .modal .modal-iframe.bg-jukebox{background:#f9f9f9}.modal-overlay .modal .modal-iframe.bg-rain{background:#f0f0f0}.modal-overlay .modal .modal-iframe.bg-snow{background:linear-gradient(#0e132f,#000)}.modal-overlay .modal .modal-iframe.bg-space-invaders{background:#f90000}.modal-overlay .modal .modal-iframe.bg-swingers{background:#ffa831}.modal-overlay .modal .modal-iframe.bg-tnkii{background:#101010}p,ul{margin:0 0 1.25em}@media(min-width:1280px){p,ul{margin-bottom:clamp(1.25rem,1.25rem + (100vw - 1280px) * (1.5rem - 1.25rem) / (1536px - 1280px),1.5rem)}}@media(min-width:1536px){p,ul{margin-bottom:1.5em}}h2{margin:0 0 1em}@media(min-width:1280px){h2{margin-bottom:clamp(1rem,1rem + (100vw - 1280px) * (2rem - 1rem) / (1536px - 1280px),2rem)}}@media(min-width:1536px){h2{margin-bottom:2rem}}h3{margin:0 0 1em}@media(min-width:1280px){h3{margin-bottom:clamp(.5rem,1rem + (100vw - 1280px) * (.5rem - 1rem) / (1536px - 1280px),1rem)}}@media(min-width:1536px){h3{margin-bottom:.5em}}.button-list{gap:.5rem}.section{padding:0 .5rem 1.5rem;padding-bottom:clamp(1.5rem,1.5rem + (100vw - 320px) * (2rem - 1.5rem) / (460px - 320px),2rem);padding-left:clamp(.5rem,.5rem + (100vw - 320px) * (1rem - .5rem) / (460px - 320px),1rem);padding-right:clamp(.5rem,.5rem + (100vw - 320px) * (1rem - .5rem) / (460px - 320px),1rem)}@media(min-width:460px){.section{padding:0 1rem 2rem;padding-left:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (600px - 460px),1.5rem);padding-right:clamp(1rem,1rem + (100vw - 460px) * (1.5rem - 1rem) / (600px - 460px),1.5rem)}}@media(min-width:600px){.section{padding:0 1.5rem 2rem;padding-bottom:clamp(2rem,2rem + (100vw - 600px) * (3rem - 2rem) / (768px - 600px),3rem);padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:768px){.section{padding:0 1.5rem 3rem;padding-bottom:clamp(3rem,3rem + (100vw - 768px) * (4rem - 3rem) / (1024px - 768px),4rem);padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.section{padding:0 2rem 4rem;padding-left:clamp(2rem,2rem + (100vw - 1024px) * (3rem - 2rem) / (1280px - 1024px),3rem);padding-right:clamp(2rem,2rem + (100vw - 1024px) * (3rem - 2rem) / (1280px - 1024px),3rem)}}@media(min-width:1280px){.section{padding:0 3rem 4rem;padding-bottom:clamp(4rem,4rem + (100vw - 1280px) * (6rem - 4rem) / (1536px - 1280px),6rem);padding-left:clamp(3rem,3rem + (100vw - 1280px) * (4rem - 3rem) / (1536px - 1280px),4rem);padding-right:clamp(3rem,3rem + (100vw - 1280px) * (4rem - 3rem) / (1536px - 1280px),4rem)}}@media(min-width:1536px){.section{padding:0 4rem 6rem;padding-bottom:clamp(6rem,6rem + (100vw - 1536px) * (8rem - 6rem) / (1920px - 1536px),8rem)}}@media(min-width:1920px){.section{padding:0 4rem 8rem}}.section-content{gap:1.5rem}.section.about-section{max-width:1800px;padding-top:0}@media(min-width:600px){.section.about-section{padding-top:clamp(min(0px,1rem),0px + (100vw - 600px) * (1rem - 0px) / (768px - 600px),max(0px,1rem))}}@media(min-width:768px){.section.about-section{padding-top:1rem;padding-left:clamp(1.5rem,1.5rem + (100vw - 768px) * (4rem - 1.5rem) / (1024px - 768px),4rem);padding-right:clamp(1.5rem,1.5rem + (100vw - 768px) * (4rem - 1.5rem) / (1024px - 768px),4rem)}}@media(min-width:1024px){.section.about-section{padding:1rem 4rem 4rem;padding-left:clamp(4rem,4rem + (100vw - 1024px) * (6rem - 4rem) / (1280px - 1024px),6rem);padding-right:clamp(4rem,4rem + (100vw - 1024px) * (6rem - 4rem) / (1280px - 1024px),6rem)}}@media(min-width:1280px){.section.about-section{padding:1rem 6rem 4rem;padding-bottom:clamp(4rem,4rem + (100vw - 1280px) * (6rem - 4rem) / (1536px - 1280px),6rem);padding-left:clamp(6rem,6rem + (100vw - 1280px) * (8rem - 6rem) / (1536px - 1280px),8rem);padding-right:clamp(6rem,6rem + (100vw - 1280px) * (8rem - 6rem) / (1536px - 1280px),8rem)}}@media(min-width:1536px){.section.about-section{padding:1rem 8rem 6rem;padding-top:clamp(1rem,1rem + (100vw - 1536px) * (2rem - 1rem) / (1920px - 1536px),2rem);padding-bottom:clamp(6rem,6rem + (100vw - 1536px) * (8rem - 6rem) / (1920px - 1536px),8rem)}}@media(min-width:1920px){.section.about-section{padding:2rem 8rem 8rem}}.about-section .section-content{gap:1.5rem;gap:clamp(1.5rem,1.5rem + (100vw - 320px) * (2rem - 1.5rem) / (460px - 320px),2rem)}@media(min-width:460px){.about-section .section-content{gap:2rem}}@media(min-width:600px){.about-section .section-content{gap:clamp(2rem,2rem + (100vw - 600px) * (3rem - 2rem) / (768px - 600px),3rem)}}@media(min-width:768px){.about-section .section-content{gap:1.5rem;gap:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.about-section .section-content{gap:2rem}}@media(min-width:1280px){.about-section .section-content{gap:2rem;gap:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(min-width:1536px){.about-section .section-content{gap:3rem}}.skills{padding-bottom:0}@media(min-width:768px){.skills{padding-bottom:clamp(min(0px,.5rem),0px + (100vw - 768px) * (.5rem - 0px) / (1024px - 768px),max(0px,.5rem))}}@media(min-width:1024px){.skills{padding-bottom:.5rem}}@media(min-width:1280px){.skills{padding-bottom:clamp(.5rem,.5rem + (100vw - 1280px) * (1.5rem - .5rem) / (1536px - 1280px),1.5rem)}}@media(min-width:1536px){.skills{padding-bottom:1.5rem}}.section.clients-section{max-width:2200px}@media(min-width:768px){.clients-section-grid{gap:1.5rem;gap:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.clients-section-grid{gap:2rem}}@media(min-width:1280px){.clients-section-grid{gap:clamp(2rem,2rem + (100vw - 1280px) * (3rem - 2rem) / (1536px - 1280px),3rem)}}@media(min-width:1536px){.clients-section-grid{gap:3rem}}.client-list-intro{margin-bottom:.5rem;margin-bottom:clamp(.5rem,.5rem + (100vw - 320px) * (1rem - .5rem) / (460px - 320px),1rem)}@media(min-width:460px){.client-list-intro{margin-bottom:1rem}}.client-list{gap:.5rem;gap:clamp(.5rem,.5rem + (100vw - 320px) * (1rem - .5rem) / (460px - 320px),1rem);margin:0 0 1rem}@media(min-width:460px){.client-list{gap:1rem}}.client{margin:0 0 -1.5rem}@media(min-width:768px){.client{margin:0;padding-bottom:1.75rem;padding-bottom:clamp(1.75rem,1.75rem + (100vw - 768px) * (2.25rem - 1.75rem) / (1024px - 768px),2.25rem)}}@media(min-width:1024px){.client{padding-bottom:2.25rem}}@media(min-width:1280px){.client{padding-bottom:2.25rem;padding-bottom:clamp(2.25rem,2.25rem + (100vw - 1280px) * (3.25rem - 2.25rem) / (1536px - 1280px),3.25rem)}}@media(min-width:1536px){.client{padding-bottom:3.25rem}}.timer-container{margin:1.5rem 0}@media(min-width:768px){.timer-container{margin:0 0 1.5rem;margin-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.timer-container{margin:0 0 2rem}}.section.lab-section{max-width:2000px}@media(min-width:1280px){.section.lab-section{padding-left:3rem;padding-right:3rem;padding-left:clamp(3rem,3rem + (100vw - 1280px) * (6rem - 3rem) / (1536px - 1280px),6rem);padding-right:clamp(3rem,3rem + (100vw - 1280px) * (6rem - 3rem) / (1536px - 1280px),6rem)}}@media(min-width:1536px){.section.lab-section{padding:0 6rem 6rem;padding-bottom:clamp(6rem,6rem + (100vw - 1536px) * (8rem - 6rem) / (1920px - 1536px),8rem)}}@media(min-width:1920px){.section.lab-section{padding:0 6rem 8rem}}.lab-filters{margin-bottom:1.5rem}@media(min-width:768px){.lab-filters{margin-bottom:clamp(1.5rem,1.5rem + (100vw - 768px) * (2rem - 1.5rem) / (1024px - 768px),2rem)}}@media(min-width:1024px){.lab-filters{margin-bottom:2rem}}.lab-grid{gap:1rem;margin-bottom:-.5rem;margin-bottom:clamp(min(-.5rem,0px),-.5rem + (100vw - 320px) * (0px - -.5rem) / (460px - 320px),max(-.5rem,0px))}@media(min-width:460px){.lab-grid{margin-bottom:0rem}}@media(min-width:1280px){.lab-grid{gap:clamp(1rem,1rem + (100vw - 1280px) * (1.5rem - 1rem) / (1536px - 1280px),1.5rem)}}@media(min-width:1536px){.lab-grid{gap:1.5rem}}.section.contact-section{padding-top:1.5rem;padding-top:clamp(1.5rem,1.5rem + (100vw - 320px) * (2rem - 1.5rem) / (460px - 320px),2rem)}@media(min-width:460px){.section.contact-section{padding-top:2rem;padding-top:clamp(2rem,2rem + (100vw - 460px) * (3rem - 2rem) / (768px - 460px),3rem)}}@media(min-width:768px){.section.contact-section{padding-top:3rem;padding-top:clamp(3rem,3rem + (100vw - 768px) * (4rem - 3rem) / (1024px - 768px),4rem)}}@media(min-width:1024px){.section.contact-section{padding:4rem 0}}.contact-section .section-content{max-width:800px}@media(min-width:768px){.contact-section .section-content{gap:3rem}}.hero .hero-canvas-fish{background:linear-gradient(180deg,#0b3d91,#061a2b);--mask1: linear-gradient(180deg, #000 0, #000 calc(100% - 33px) , #0000 calc(100% - 32px) );mask:var(--mask1);-webkit-mask:var(--mask1)}.theme-fish .hero .hero-background{background:linear-gradient(180deg,#0b3d91,#061a2b)}.theme-fish .hero .hero-content{background:#0b2e6166}.theme-fish h2:before{position:absolute;bottom:0;left:-8px;width:calc(100% + 16px);height:2px;background:linear-gradient(to right,transparent,var(--col-accent) 80%);border-top-right-radius:2px;content:""}.theme-fish .lab-grid .experiment-content .overlay{--mask: url(/images/mask-fish.svg) 200% 0 / 200% 100% no-repeat;mask:var(--mask);-webkit-mask:var(--mask);transition:-webkit-mask-position .6s ease-out;transition:mask-position .6s ease-out;transition:mask-position .6s ease-out,-webkit-mask-position .6s ease-out}.theme-fish .lab-grid .experiment-content:hover .overlay{--mask-position: 0 0;mask-position:var(--mask-position);-webkit-mask-position:var(--mask-position)}.theme-fish .contact-section{position:relative;margin-top:2rem}@media(min-width:1280px){.theme-fish .contact-section{margin-top:clamp(min(2rem,0px),2rem + (100vw - 1280px) * (0px - 2rem) / (1536px - 1280px),max(2rem,0px))}}@media(min-width:1536px){.theme-fish .contact-section{margin-top:0}}.theme-fish .contact-section:before{position:absolute;top:-41px;right:8%;width:60px;height:26px;background:url(/images/fish.webp) no-repeat;background-size:contain;content:""}@media(min-width:460px){.theme-fish .contact-section:before{top:clamp(-50px,-41px + (100vw - 460px) * (-50px - -41px) / (768px - 460px),-41px);width:clamp(60px,60px + (100vw - 460px) * (80px - 60px) / (768px - 460px),80px);height:clamp(26px,26px + (100vw - 460px) * (35px - 26px) / (768px - 460px),35px)}}@media(min-width:1920px){.theme-fish .contact-section:before{right:calc(50% - 800px)}}.theme-fish .modal-overlay .modal .modal-iframe.masked{--mask-animation: 199.9%;--mask: url(/images/mask-fish.svg) var(--mask-animation) 0 / 200% 100% no-repeat;mask:var(--mask);-webkit-mask:var(--mask)}.hero .hero-canvas-lava-lamp{--mask1: linear-gradient(180deg, #000 0, #000 calc(100% - 98px) , #0000 calc(100% - 99px) );--mask2: url(/images/hero-lava.svg) center calc(100% + 1px) / auto 100px repeat-x;mask:var(--mask1),var(--mask2);-webkit-mask:var(--mask1),var(--mask2)}.theme-lava-lamp .hero .hero-background{background:#000}.theme-lava-lamp .hero .hero-content{background:#0006}.theme-lava-lamp h2:before{position:absolute;bottom:0;left:-8px;width:calc(100% + 16px);height:2px;background:linear-gradient(to right,transparent,var(--col-accent) 80%);border-top-right-radius:2px;content:""}.theme-lava-lamp .lab-grid .experiment-content .overlay{--mask: url(/images/mask-lava.svg) center -100px / 100% 100px no-repeat;mask:var(--mask);-webkit-mask:var(--mask);transition:-webkit-mask-position .6s ease-out,-webkit-mask-size .6s ease-out;transition:mask-position .6s ease-out,mask-size .6s ease-out;transition:mask-position .6s ease-out,mask-size .6s ease-out,-webkit-mask-position .6s ease-out,-webkit-mask-size .6s ease-out}.theme-lava-lamp .lab-grid .experiment-content:hover .overlay{--mask-position: center 0;mask-position:var(--mask-position);-webkit-mask-position:var(--mask-position);--mask-size: 100% 200%;mask-size:var(--mask-size);-webkit-mask-size:var(--mask-size)}.theme-lava-lamp .contact-section{position:relative;margin-top:2rem}@media(min-width:1280px){.theme-lava-lamp .contact-section{margin-top:clamp(min(2rem,0px),2rem + (100vw - 1280px) * (0px - 2rem) / (1536px - 1280px),max(2rem,0px))}}@media(min-width:1536px){.theme-lava-lamp .contact-section{margin-top:0}}.theme-lava-lamp .contact-section:before{position:absolute;top:-45px;right:10%;width:17px;height:45px;background:url(/images/lava-lamp.webp) no-repeat;background-size:contain;content:""}@media(min-width:460px){.theme-lava-lamp .contact-section:before{top:clamp(-60px,-45px + (100vw - 460px) * (-60px - -45px) / (768px - 460px),-45px);width:clamp(17px,17px + (100vw - 460px) * (22px - 17px) / (768px - 460px),22px);height:clamp(45px,45px + (100vw - 460px) * (60px - 45px) / (768px - 460px),60px)}}@media(min-width:1920px){.theme-lava-lamp .contact-section:before{right:calc(50% - 762px)}}.theme-lava-lamp .modal-overlay .modal .modal-iframe.masked{--mask-animation: 100px;--mask: url(/images/mask-lava.svg) center -100px / 100% var(--mask-animation) no-repeat;mask:var(--mask);-webkit-mask:var(--mask)}:root{--col-panel-bg: #f9f9f9;--col-header-text: #111;--col-text: #666;--col-border: #e0e0e0;--col-accent: #0E8C95;--size-radius: 16px}body{position:relative;background:linear-gradient(135deg,#f6f6f6,#f0f0f0);color:var(--col-text);text-align:center;-webkit-font-smoothing:antialiased;margin:0}body:after{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(135deg,rgba(255,255,255,.2) 0px,rgba(255,255,255,.2) 2px,transparent 2px,transparent 12px)}.site{min-width:300px}.no-wrap{white-space:nowrap}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.section{position:relative;margin:0 auto;z-index:2}
