:root{--white:#f6f6f4;--black:#0b0b0c;--blue:#1a6dff;--orb-size:81px;--orb-inset:17px;--helper-size:72px;--helper-inset:18px;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:"Manrope", system-ui, sans-serif}*{box-sizing:border-box}html{cursor:url(/cursor.svg) 4 3,auto;scroll-behavior:smooth;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}@media (pointer:coarse){html,body{overscroll-behavior-y:none}}html.frame,html.frame body{overscroll-behavior:none;height:100%;overflow:hidden}html.frame main{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;pointer-events:auto;touch-action:pan-y pinch-zoom;position:fixed;inset:0;overflow:hidden auto}html.frame main>*{pointer-events:none}html.frame #scene{height:100%}html,body{opacity:1;background:var(--page-edge,var(--page,#1f63f2));color:var(--white);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}#scene{width:100vw;height:100vh;touch-action:pan-y pinch-zoom;opacity:0;height:100lvh;transition:opacity .6s ease-out;display:block;position:fixed;inset:0}#scene.ready{opacity:1}@property --sky-top{syntax:"<color>";inherits:false;initial-value:#1f63f2}@property --sky-low{syntax:"<color>";inherits:false;initial-value:#72c6ff}.loader{--ink:#1b1540;--paper:#fffdf6;--cyan:#62e3ff;--pink:#ff4fa6;--dial-scale:1;--face-r:98px;--loader-text:var(--ink);z-index:50;place-items:center;display:grid;position:fixed;inset:0}@supports (color:color-mix(in srgb, red, blue)){.loader{--loader-text:color-mix(in srgb, var(--paper) calc(clamp(0, (var(--page-night,0) - .5) * 50, 1) * 100%), var(--ink))}}@media (min-width:1800px) and (min-height:1000px){.loader{--dial-scale:1.2;--ui-scale:1.1}}@media (min-width:2300px) and (min-height:1300px){.loader{--dial-scale:1.5;--ui-scale:1.35}}@media (max-width:359.98px){.loader{--dial-scale:.86}}@media (max-width:600px) and (orientation:portrait){.loader{--dial-scale:1.3;--ui-scale:1.12}}@media (min-width:385px) and (max-width:600px) and (min-height:620px) and (orientation:portrait){.loader{--dial-scale:1.42;--ui-scale:1.18}}@media (min-width:420px) and (max-width:600px) and (min-height:700px) and (orientation:portrait){.loader{--dial-scale:1.5}}@media (max-width:600px) and (max-height:600px) and (orientation:portrait){.loader{--dial-scale:1.24}}@media (max-width:359.98px) and (orientation:portrait){.loader{--dial-scale:1.12}}@media (max-height:560px) and (orientation:landscape){.loader{--dial-scale:.82}}@media (max-height:430px) and (orientation:landscape){.loader{--dial-scale:.7}}@media (max-height:300px) and (orientation:landscape){.loader{--dial-scale:.6}}.loader>*{grid-area:1/1}.loader__sky{--sky-top:var(--page,#1f63f2);--sky-low:var(--page-low,#72c6ff);background:var(--sky-top);background:linear-gradient(to top, rgb(255 184 220/calc(.62 * (1 - var(--page-night,0)))), rgb(255 184 220/calc(.24 * (1 - var(--page-night,0)))) 16%, #ffb8dc00 36%), linear-gradient(var(--sky-top) 0%, color-mix(in srgb, var(--sky-top), var(--sky-low) 22%) 30%, color-mix(in srgb, var(--sky-top), var(--sky-low) 78%) 70%, var(--sky-low) 100%);transition:--sky-top .8s ease-out,--sky-low .8s ease-out;position:absolute;inset:0}.loader__sky:before{content:"";background:radial-gradient(circle,#fff3 1.5px,#0000 2px) 0 0/10px 10px,radial-gradient(circle,#fff3 1.5px,#0000 2px) 5px 5px/10px 10px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000 42%,#000);mask-image:linear-gradient(#0000 42%,#000)}.loader__cloud{filter:drop-shadow(-2.5px -.5px #62e3ffbf)drop-shadow(2.5px 1px #ff4fa68c);height:auto;animation:12s ease-in-out infinite alternate loader-drift;position:absolute;overflow:visible}.loader__cloud--a{aspect-ratio:200/90;width:clamp(150px,21vw,480px);bottom:22%;left:-2%}.loader__cloud--b{aspect-ratio:240/70;width:clamp(190px,25vw,580px);animation-duration:15s;animation-delay:-6s;bottom:5%;right:-4%}@media (max-aspect-ratio:4/5){.loader__cloud--a{bottom:12%}}@media (max-width:600px) and (max-height:600px) and (orientation:portrait){.loader__cloud--a{bottom:3%}}.loader__cloud-body{fill:#f7f3ff}.loader__cloud-belly{fill:#f2b3dd}@supports (color:color-mix(in srgb, red, blue)){.loader__cloud-body{fill:color-mix(in srgb, #281883 calc(var(--page-night,0) * 100%), #f7f3ff)}.loader__cloud-belly{fill:color-mix(in srgb, #1d1066 calc(var(--page-night,0) * 100%), #f2b3dd)}}@keyframes loader-drift{to{translate:2.5vw}}.loader__start{width:216px;height:216px;color:var(--ink);font:inherit;isolation:isolate;scale:var(--dial-scale);-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:0 0;border:0;border-radius:50%;margin:0;padding:0;position:relative}:is(#loader,#loader-preview) .loader__start:disabled{cursor:url(/cursor.svg) 4 3,auto!important}.loader__ring{width:100%;height:100%;animation:6s linear infinite loader-spin;position:absolute;inset:0;overflow:visible}.loader__track{fill:none;stroke:#1b154033;stroke-width:8px}.loader__bar{fill:none;stroke:var(--white);stroke-width:8px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:calc(100 - max(6, var(--load,0) * 100));transform-origin:60px 60px;transition:stroke-dashoffset .35s ease-out;transform:rotate(-90deg)}.loader__bar--cyan{stroke:var(--cyan);translate:2px 1.5px}.loader__bar--pink{stroke:var(--pink);translate:-2px -1.5px}.loader__rim{fill:none;stroke:var(--ink);stroke-width:5px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;transform-origin:60px 60px;visibility:hidden;transform:rotate(-90deg)}.loader__face{fill:var(--paper);transform-origin:60px 60px;transform:scale(0)}.loader__label,.loader__speaker,.loader__sticker{visibility:hidden}.loader__stage{width:72px;height:118px;margin:-59px 0 0 -36px;position:absolute;top:50%;left:50%}.loader__mesq{transform-origin:50% 100%;width:64px;height:64px;filter:drop-shadow(-2px -1px 0 var(--pink)) drop-shadow(2px 1px 0 var(--cyan));animation:.72s cubic-bezier(.33,0,.67,1) infinite loader-hop;position:absolute;bottom:12px;left:4px;overflow:visible}.loader__tongue{fill:var(--pink)}.loader__eye{transform-box:fill-box;transform-origin:50%;animation:2.9s infinite loader-blink}.loader__shadow{background:#1b154042;border-radius:50%;width:50px;height:9px;margin-left:-25px;animation:.72s cubic-bezier(.33,0,.67,1) infinite loader-shadow;position:absolute;bottom:4px;left:50%}.loader__line{left:50%;top:calc(50% + (var(--face-r) + 30px) * var(--dial-scale));translate:-50%;scale:var(--ui-scale,1);transform-origin:50% 0;color:var(--loader-text);font:700 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;grid-area:auto;align-items:center;gap:12px;margin:0;display:flex;position:absolute}.loader__pct{background:var(--ink);min-width:4.2em;color:var(--paper);text-align:center;font-variant-numeric:tabular-nums;box-shadow:2px 2px 0 var(--pink);border-radius:3px;padding:4px 7px 3px;font-size:10px;transform:rotate(-3.5deg)}.loader__pct:empty{display:none}.loader__step:after{content:"...";text-align:left;clip-path:inset(0 100% 0 0);width:3ch;margin-right:-3ch;animation:1.2s steps(4,end) infinite loader-dots;display:inline-block}.loader__step.is-new{animation:.3s ease-out loader-step}@keyframes loader-dots{to{clip-path:inset(0 -.4ch 0 0)}}@keyframes loader-step{0%{opacity:0;translate:0 5px}}@keyframes loader-hop{0%,to{transform:translateY(0)scale(1.18,.82)}12%{transform:translateY(-6px)scale(.9,1.12)}45%,55%{transform:translateY(-46px)scale(1)}88%{transform:translateY(-4px)scale(.94,1.07)}}@keyframes loader-shadow{0%,to{opacity:1;transform:scale(1.1)}50%{opacity:.45;transform:scale(.55)}}@keyframes loader-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.15)}}@keyframes loader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}main{z-index:1;pointer-events:none;position:relative}.section{position:relative}.section:focus,.project-stop:focus{outline:none}.section-start,.section-contacts{height:calc(100vh * var(--scroll-k,1))}.section-end{height:100vh}.section-about{height:calc(100vh * var(--scroll-k,1) * (1 + .8 * var(--about-more,2)))}.project-stop{height:calc(80vh * var(--scroll-k,1))}html.vh-pin :is(.section-start,.section-contacts){height:calc(var(--vh-pin) * var(--scroll-k,1))}html.vh-pin .section-end{height:var(--end-h,var(--vh-pin))}html.vh-pin .section-about{height:calc(var(--vh-pin) * var(--scroll-k,1) * (1 + .8 * var(--about-more,2)))}html.vh-pin .project-stop{height:calc(var(--vh-pin) * .8 * var(--scroll-k,1))}.contact-links{z-index:10;clip-path:inset(50%);gap:8px;margin:0;padding:0;list-style:none;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.contact-links:focus-within{clip-path:none}.contact-links a,.contact-links button{background:var(--white);color:var(--black);font:800 16px/1 var(--sans);box-shadow:4px 4px 0 var(--black);pointer-events:auto;border-radius:999px;padding:10px 18px;text-decoration:none;display:block}.contact-links button{cursor:pointer;border:0}.contact-links a:focus-visible,.contact-links button:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.project-link{z-index:10;background:var(--white);color:var(--black);font:800 16px/1 var(--sans);white-space:nowrap;box-shadow:4px 4px 0 var(--black);pointer-events:auto;clip-path:inset(50%);border-radius:999px;padding:10px 18px;text-decoration:none;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.project-link:focus-visible{clip-path:none;outline:3px solid var(--blue);outline-offset:3px}.helper{left:calc(var(--helper-inset) + env(safe-area-inset-left,0px));bottom:var(--helper-inset);width:var(--helper-size);height:var(--helper-size);cursor:pointer;z-index:10;touch-action:manipulation;background:0 0;border:0;border-radius:50%;padding:0;position:fixed}@supports (height:100svh){.helper{top:calc(100svh - var(--helper-inset) - var(--helper-size));bottom:auto}@media (max-height:500px) and (orientation:landscape){.helper{top:calc(100svh - var(--helper-inset) - var(--helper-size) - env(safe-area-inset-bottom,0px))}}}.helper:focus-visible{outline:3px solid var(--white);outline-offset:4px}.menu{top:calc(var(--orb-inset) + env(safe-area-inset-top,0px));left:calc(var(--orb-inset) + env(safe-area-inset-left,0px));width:var(--orb-size);height:var(--orb-size);cursor:pointer;z-index:20;touch-action:manipulation;background:0 0;border:0;border-radius:50%;padding:0;position:fixed}.menu svg{width:62%;height:62%;margin:auto;display:block;overflow:visible}.menu .bar{fill:var(--white);transform-box:fill-box;transform-origin:50%;transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .25s}.menu:focus-visible:not([aria-expanded=true]) .bar-1{transform:translateY(-2.6px)}.menu:focus-visible:not([aria-expanded=true]) .bar-3{transform:translateY(2.6px)}@media (hover:hover){.menu:hover:not([aria-expanded=true]) .bar-1{transform:translateY(-2.6px)}.menu:hover:not([aria-expanded=true]) .bar-3{transform:translateY(2.6px)}}.menu[aria-expanded=true] .bar-1{transform:translateY(7px)rotate(45deg)}.menu[aria-expanded=true] .bar-2{opacity:0;transform:scaleX(.2)}.menu[aria-expanded=true] .bar-3{transform:translateY(-6px)rotate(-45deg)}.menu:focus-visible{outline:3px solid var(--white);outline-offset:4px}.menu-panel{top:calc(var(--orb-inset) + var(--orb-size) + 10px + env(safe-area-inset-top,0px));left:calc(var(--orb-inset) + env(safe-area-inset-left,0px));z-index:20;gap:8px;display:grid;position:fixed}.menu-panel[hidden]{display:none}.menu-panel a{background:var(--white);width:max-content;color:var(--black);font:800 20px/1 var(--sans);box-shadow:4px 4px 0 var(--black);touch-action:manipulation;border-radius:999px;align-items:center;gap:12px;padding:10px 20px 10px 10px;text-decoration:none;animation:.35s cubic-bezier(.34,1.56,.64,1) both pop;display:flex;position:relative}.menu-panel a:before{content:"";border-radius:inherit;position:absolute;inset:-2px 0}.menu-panel a:nth-child(2){animation-delay:40ms}.menu-panel a:nth-child(3){animation-delay:80ms}.menu-panel a:nth-child(4){animation-delay:.12s}.menu-panel a:nth-child(5){animation-delay:.16s}.menu-panel a span{background:var(--black);color:var(--white);font:700 12px/1 var(--mono);border-radius:999px;padding:5px 7px}.menu-panel a[aria-current=true]{background:var(--menu,var(--blue));color:var(--white)}@media (hover:hover){.menu-panel a:hover{background:var(--menu,var(--blue));color:var(--white)}}.menu-panel a[aria-current=true] span{background:var(--white);color:var(--menu,var(--blue))}@keyframes pop{0%{opacity:0;transform:translateY(-8px)scale(.85)}}@media (max-height:420px){.menu-panel{top:calc(var(--orb-inset) + env(safe-area-inset-top,0px));left:calc(var(--orb-inset) + var(--orb-size) + 10px + env(safe-area-inset-left,0px))}}.no3d{z-index:60;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--page,#1f63f2);background:linear-gradient(var(--page,#1f63f2), var(--page-low,#72c6ff));width:100%;height:100%;color:var(--white);font-family:var(--sans);padding:48px 20px 56px;position:fixed;top:0;left:0;overflow-y:auto}@supports (padding-top:max(1px, 1vh)){.no3d{padding-top:max(48px,9vh)}}.no3d>*{max-width:560px;margin-left:auto;margin-right:auto}.no3d__hi{font:800 26px/1.3 var(--sans);text-wrap:pretty;margin-top:0;margin-bottom:36px;font-size:clamp(22px,5.4vw,30px)}.no3d__head{font:700 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;margin-top:32px;margin-bottom:14px}.no3d__list{flex-wrap:wrap;padding:0;list-style:none;display:flex}.no3d__list li{margin:0 10px 12px 0}.no3d__list a{background:var(--white);min-height:44px;color:var(--black);font:800 18px/1 var(--sans);overflow-wrap:anywhere;box-shadow:4px 4px 0 var(--black);border-radius:999px;align-items:center;padding:10px 18px;text-decoration:none;display:flex}.no3d__list--num a{padding-left:10px}.no3d__list a span{background:var(--black);color:var(--white);font:700 12px/1 var(--mono);border-radius:999px;margin-right:10px;padding:5px 7px}.no3d__list a:hover{background:var(--blue);color:var(--white)}.no3d__list a:focus-visible{outline:3px solid var(--white);outline-offset:3px}.no3d:focus{outline:none}.no3d__return a{min-height:44px;color:inherit;align-items:center;display:inline-flex}.no-3d #scene{display:none}.no-3d,.no-boot{overflow:hidden}.no-3d #menu,.no-3d #menu-panel,.no-3d #helper,.no-3d .sound-toggle,.no-3d main,.no-boot #menu,.no-boot #menu-panel,.no-boot #helper,.no-boot .sound-toggle,.no-boot main{visibility:hidden}@media (max-width:600px),(max-height:500px){:root{--orb-size:60px;--orb-inset:14px;--helper-size:58px;--helper-inset:12px}}:is(a,button,[role=button],label,#scene.hot,main.hot,.mesq-speech,.mesq-speech *,.sound-toggle,.sound-toggle *){cursor:url(/cursor-hand.svg) 13 2,pointer!important}
