:root{color-scheme:light;--paper: #fff;--ink: #000;--body: #3a3a3a;--mute: #6b6b6b;--rule: #e3e3e3;--soft: #f4f4f4;--accent: #0a9eff;--faint: #a8a8a8;--faint-2: #8a8a8a;--ring: #ccc;--link: var(--accent);--link-hover: var(--ink);--nav-accent: var(--accent);--nav-on-accent: #fff;--logo-hover: var(--accent);--paper-rgb: 255 255 255;--w: 77.5rem;--gut: 1.5rem;--lift-dur: .45s;--lift-ease: cubic-bezier(.22, .61, .36, 1);--lift-y: 1.25rem;--lift-step: .06s;--count-dur: .8s}html[data-theme=dark]{color-scheme:dark;--paper: #0e0e0f;--ink: #f2f2f2;--body: #c4c4c4;--mute: #8a8a8a;--rule: #262628;--soft: #18181a;--accent: #3cb1ff;--faint: #5c5c60;--faint-2: #74747a;--ring: #3a3a3d;--paper-rgb: 14 14 15;--color: 242, 242, 242;--bgcolor: 14, 14, 15;--linkcolor: 60, 177, 255}.theme-switching,.theme-switching *{transition:none!important}html{font-size:clamp(15px,14px + .25vw,18px);font-family:Pliant,system-ui,sans-serif;font-weight:430;line-height:1.5;color:rgb(var(--color));font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}*{box-sizing:border-box}:focus-visible{outline:2px solid var(--link);outline-offset:3px}i:empty{font-style:normal}@font-face{font-family:Pliant;src:url(/site/assets/fonts/pliant/pliant.woff2) format("woff2");font-weight:100 900;font-stretch:100% 125%;font-style:normal;font-display:swap}@font-face{font-family:Pliant;src:url(/site/assets/fonts/pliant/pliant-italic.woff2) format("woff2");font-weight:100 900;font-stretch:100% 125%;font-style:italic;font-display:swap}*{margin:0;padding:0}.w100{width:100%}.block{display:inline-block;vertical-align:top;box-sizing:border-box}:where(a){color:var(--link);text-decoration:none;transition:color .25s ease}:where(a:hover){color:var(--link-hover)}.adaptive,img[data-src]{display:inline-block;width:100%}img[data-src][style*=--lqip]:not([data-shown]){background-color:color-mix(in oklab,color-mix(in oklab,var(--lqip-tl),var(--lqip-tr)),color-mix(in oklab,var(--lqip-bl),var(--lqip-br)))!important;background-image:radial-gradient(at 0 0,var(--lqip-tl),transparent 70%),radial-gradient(at 100% 0,var(--lqip-tr),transparent 70%),radial-gradient(at 0 100%,var(--lqip-bl),transparent 70%),radial-gradient(at 100% 100%,var(--lqip-br),transparent 70%)!important;background-size:auto!important;background-position:0 0!important;background-repeat:no-repeat!important}img[data-src][data-error]{display:grid;place-content:center;gap:.625rem;padding:1rem;visibility:hidden;color:var(--mute);font-size:.8125rem;line-height:1.35;text-align:center}img[data-src][data-error]:before{content:"";width:2rem;height:2rem;margin:0 auto;background:currentColor;mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linejoin='round'><rect x='3' y='4' width='18' height='16'/><circle cx='9' cy='9.5' r='1.75'/><path d='M3 17.5l5-5 4 4 3-3 6 6'/></svg>") center / contain no-repeat}img[data-src][data-error]:after{content:attr(alt)}img[data-src][data-error]:before,img[data-src][data-error]:after{visibility:visible}.left-aligned,.left-aligned p{text-align:left}.right-aligned,.right-aligned p{text-align:right}.centered,.centered p{text-align:center}img.avatar{display:inline-block;width:200px;max-width:100%;margin:1rem;clip-path:polygon(99.57px 198.524px,13.557px 149.457px,14.07px 50.434px,100.599px .477px,186.614px 49.542px,186.099px 148.566px);background:#f0f0f0;transition:all .25s ease-out}img.avatar:hover{clip-path:polygon(69.036px 193.531px,2.364px 120.316px,33.41px 26.285px,131.133px 5.469px,197.808px 78.683px,166.76px 172.716px)}body{margin:0;background:rgb(var(--bgcolor));min-height:100vh;transition:all .25s ease-out,opacity .5s ease-out,filter .5s ease-out,transform .5s ease-out}body.unloading{filter:blur(2rem);opacity:0}body.unloading.to-top{transform:translateY(50vh)}body.unloading.to-bottom{transform:translateY(-50vh)}body.unloading.to-left{transform:translate(50vw)}body.unloading.to-right{transform:translate(-50vw)}html:has(>body.unloading){overflow-x:clip}@media(prefers-reduced-motion:reduce){body.unloading,body.unloading.to-top,body.unloading.to-bottom,body.unloading.to-left,body.unloading.to-right{filter:none;transform:none}}input[type=submit],input[type=button],button,.button,.btn{font:inherit;font-size:1rem;font-weight:620;text-transform:uppercase;letter-spacing:.04em;line-height:1;display:inline-block;width:auto;padding:.875rem 1.375rem;color:rgb(var(--color));background:none;border:1.5px solid rgb(var(--color));border-radius:62.4375rem;text-decoration:none;cursor:pointer;transition:all .15s ease-out}input[type=submit]:hover,input[type=button]:hover,button:hover,.button:hover,.btn:hover{background:rgb(var(--color));color:rgb(var(--bgcolor))}input[type=submit]:hover *,input[type=button]:hover *,button:hover *,.button:hover *,.btn:hover *{color:rgb(var(--bgcolor))}input[type=submit].fill,input[type=button].fill,button.fill,.button.fill,.btn.fill{background:rgb(var(--color));color:rgb(var(--bgcolor))}input[type=submit].fill:hover,input[type=button].fill:hover,button.fill:hover,.button.fill:hover,.btn.fill:hover{background:var(--fill-hover-bg, var(--accent));border-color:var(--fill-hover-border, var(--accent));color:var(--fill-hover-fg, #fff)}input[type=submit].current,input[type=button].current,button.current,.button.current,.btn.current{background:rgb(var(--color));color:rgb(var(--bgcolor))}input[type=submit][disabled],input[type=button][disabled],button[disabled],.button[disabled],.btn[disabled]{opacity:.5;pointer-events:none}@supports (backdrop-filter: blur(1px)){a.btn{background:rgba(var(--bgcolor),.55);-webkit-backdrop-filter:blur(14px) saturate(1.15);backdrop-filter:blur(14px) saturate(1.15)}}@media(prefers-reduced-transparency:reduce){a.btn{background:none;-webkit-backdrop-filter:none;backdrop-filter:none}}@media(max-width:800px){span.caption{display:none}}.card{background:#fffffff2;box-shadow:0 0 .1rem #00000080;transition:all .25s ease-out}.card:hover{background:#fff;box-shadow:0 0 1rem #0003}.dark.card{background:#234d9dcc;box-shadow:0 0 .1rem #00000080;transition:all .25s ease-out}.dark.card>*{color:#fff}.dark.card:hover{background:#234d9df2}.container,.wrap{max-width:var(--w);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}.dark,.dark *{color:#fff}#flex{display:flex;flex-flow:row wrap}#flex #sidebar{order:1;flex:1;margin:0 10px 0 0}#flex #content{order:2;flex:3}@media(max-width:799px){#flex #sidebar{order:2;flex:1 1;margin:10px 0 0}#flex #content{order:1;flex:1 1;min-width:100%}}div{box-sizing:border-box}em{font-weight:700}ul.files{list-style:none;margin:0!important;padding:10px 0}ul.files li{padding:5px 0}.files a.padded i{color:rgb(var(--color))}.flex-gap{column-gap:1rem;row-gap:1rem}.flex-gap-L{column-gap:2rem;row-gap:2rem}.flex{display:flex;flex-flow:row wrap}.flex-col{flex-flow:column}.flex-wrap{flex-wrap:wrap}.flex-left{justify-content:left}.flex-center,.flex-justify-center{justify-content:center}.flex-right{justify-content:right}.flex-space-between{justify-content:space-between}.flex-middle,.flex-align-center{align-items:center}.S,.S *{font-size:.9rem!important}.M,.M *{font-size:1rem!important}.L,.L *{font-size:1.4rem!important}footer{margin-top:4rem;border-top:1px solid var(--rule);padding:3rem 0 2.5rem;font-size:.9375rem;color:rgb(var(--color))}footer .foot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gut)}footer .foot-grid a{display:block;line-height:1.9}footer .foot-brand b{color:rgb(var(--color))}footer .stack{margin-top:2.25rem;padding-top:1.25rem;border-top:1px solid var(--rule);color:var(--mute);display:flex;justify-content:space-between;flex-wrap:wrap;gap:.75rem}footer .stack b{color:rgb(var(--color));font-weight:600}@media(max-width:900px){footer .foot-grid{grid-template-columns:1fr 1fr}}fieldset{border:none;border-top:1px solid #eee;border-radius:.25rem;margin-bottom:.5rem}legend{color:#bbb;padding:10px}label{display:inline-block;padding:.5rem;padding-left:0;font-size:.9rem}label span{all:inherit;padding:0 .5rem}label:hover{cursor:hand}input,textarea,select,input[type=select]{font-family:inherit;font-size:1rem;display:inline-block;width:100%;margin:.5rem 0;padding:1rem;color:var(--body);background:rgb(var(--paper-rgb) / .8);border:2px solid #bbb;box-sizing:border-box;transition:all .25s ease-out}input.invalid,textarea.invalid,select.invalid,input[type=select].invalid{border:2px solid #a50000}input.valid,textarea.valid,select.valid,input[type=select].valid{border:2px solid #0aa647}input.special,textarea.special,select.special,input[type=select].special{display:none}input[type=checkbox],input[type=radio]{width:1rem;padding:0}span.error{color:#a50000}span.hint{color:#eee}.field-extra{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;opacity:0;overflow:hidden}h1,h2,h3,h4,h5,h6{color:rgb(var(--color));margin:0;font-weight:700;letter-spacing:-.035em;line-height:1;word-wrap:break-word;overflow-wrap:break-word}h1{font-size:clamp(2.5rem,6vw,5.5rem);line-height:.9;font-stretch:120%;letter-spacing:-.02em}h2{font-size:clamp(1.75rem,3.2vw,2.75rem);letter-spacing:-.025em;line-height:.9}h3{font-size:clamp(1.25rem,1.6vw,1.5rem);font-weight:680;letter-spacing:-.02em;line-height:1.05}h4{font-size:1.125rem;font-weight:620;letter-spacing:-.01em;line-height:1.3}h5,h6{font-size:1rem;font-weight:620}.hamburger{font:inherit;display:inline-block;overflow:visible;margin:0;padding:5px 10px;cursor:pointer;transition-timing-function:linear;transition-duration:.15s;transition-property:opacity,filter;text-transform:none;color:inherit;border:0;background-color:transparent}.hamburger:hover{opacity:.7}.hamburger-box{position:relative;display:inline-block;width:30px;height:24px}.hamburger-inner{top:50%;display:block;margin-top:-2px}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{position:absolute;width:30px;height:4px;transition-timing-function:ease;transition-duration:.15s;transition-property:transform}.hamburger-inner:after,.hamburger-inner:before{display:block;content:""}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger-3dx .hamburger-box{perspective:80px}.hamburger-3dx .hamburger-inner{transition:transform .2s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger-3dx .hamburger-inner:after,.hamburger-3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger-3dx.is-active .hamburger-inner{transform:rotateY(180deg);background-color:transparent}.hamburger-3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger-3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger .hamburger-inner,.hamburger .hamburger-inner:after,.hamburger .hamburger-inner:before{background-color:rgb(var(--linkcolor));border-radius:1px}:root{--header-h: 4rem;--header-total: calc( var(--header-h) + 1px );--logo-h: 3.6rem}header{position:sticky;top:0;z-index:1000;color:rgb(var(--color));border-bottom:1px solid var(--rule);transition:all .15s ease-out}header:before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(var(--bgcolor),.88);backdrop-filter:blur(.625rem);-webkit-backdrop-filter:blur(.625rem);transition:all .15s ease-out}.case-page header{border-color:transparent}.nav{display:flex;align-items:center;justify-content:space-between;height:var(--header-h);gap:1.5rem}.nav-right{display:flex;gap:.75rem;align-items:center}#logo{display:flex;align-items:center;gap:.625rem;font-weight:800;font-size:1.25rem;letter-spacing:-.02em;color:rgb(var(--color))}#logo svg{height:var(--logo-h);width:auto;fill:currentColor;display:block}#logo a{color:inherit;display:flex;align-items:center;gap:.625rem;transition:color .3s ease}#logo a:hover{color:var(--logo-hover)}@media(max-width:900px){:root{--header-h: 3.75rem}}hr{width:100%;border:0px;border-bottom:1px solid var(--ring);height:0px;opacity:.5;transition:all .25s ease-out}hr:hover{opacity:1}.icon-button,.icon-button:hover{background:none;color:rgb(var(--color))}.icon-button{display:inline-flex;align-items:center;justify-content:center;margin:0;padding:.375rem;box-sizing:border-box;border:none;border-radius:.375rem;opacity:.8;line-height:0;cursor:pointer}.icon-button:hover{opacity:1}.icon-button svg{width:1.21875rem;height:1.21875rem;fill:currentColor;stroke:none}.icon-button *,.icon-button:hover *{color:inherit}.icon{display:inline-block;width:1em;height:1em;stroke-width:0;stroke:currentColor;fill:currentColor}.images img{min-width:16rem}#langs a{display:inline-block;padding:.375rem .625rem;border:1px solid currentColor;border-radius:.375rem;font-size:.8125rem;font-weight:600;text-transform:uppercase;color:rgb(var(--color));opacity:.8;transition:color .25s ease,opacity .25s ease}#langs a:hover{opacity:1}html.lift-on [data-lift]{opacity:0;translate:0 var(--lift-y);transition:opacity var(--lift-dur) var(--lift-ease) calc(var(--lift-i, 0) * var(--lift-step)),translate var(--lift-dur) var(--lift-ease) calc(var(--lift-i, 0) * var(--lift-step))}html.lift-on [data-lift].is-lifted{opacity:1;translate:none}@media print{html.lift-on [data-lift]{opacity:1;translate:none}}.light,.light *{color:#333}main{flex:auto;display:block}.images .block{min-width:200px;max-width:320px;vertical-align:middle}.images .block img{object-fit:cover}.videos .block{line-height:0px}#menu-toggle{display:none;padding:8px;cursor:pointer;color:rgb(var(--color))}#menu-toggle:hover{background:none;opacity:1}#menu-toggle:hover *{color:inherit}@media(max-width:1100px){#menu-toggle{display:flex}}#menu-toggle .hamburger-inner,#menu-toggle .hamburger-inner:after,#menu-toggle .hamburger-inner:before{background-color:currentColor;height:2px;width:22px;border-radius:1px}#menu-toggle .hamburger-inner{margin-top:-1px}#menu-toggle.is-active .hamburger-inner{background-color:transparent}.hamburger-inner:before{top:-7px}.hamburger-inner:after{bottom:-7px}.hamburger-3dx.is-active .hamburger-inner:before{transform:translate3d(0,7px,0) rotate(45deg)}.hamburger-3dx.is-active .hamburger-inner:after{transform:translate3d(0,-7px,0) rotate(-45deg)}.hamburger-box{width:22px;height:16px}#menu{display:flex;gap:1.75rem;font-weight:540;font-size:1rem}#menu a{color:rgb(var(--color));opacity:.85;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;transition:all .15s ease-out}#menu a:hover,#menu a.current,#menu a.parent{opacity:1}#menu a.current:hover{cursor:default}@media(min-width:1101px){#menu{position:relative;gap:0}#menu a{position:relative;z-index:1;font-size:clamp(.8rem,1.43vw - .15rem,.9rem);padding:.375rem .95em;border-radius:999px;transition:color .3s ease,opacity .3s ease,background-color .3s ease}#menu a.lava-target,#menu.lava-hover a:is(.current,.parent){opacity:1;color:var(--nav-accent)}#menu:not(.lava-hover) a:is(.current,.parent){color:var(--nav-on-accent)}#menu:not(.lava-ready) a:is(.current,.parent){background:var(--nav-accent)}#menu .lava{position:absolute;left:0;top:0;z-index:0;width:var(--lava-w, 0);height:var(--lava-h, 0);transform:translate(var(--lava-x, 0),var(--lava-y, 0));border-radius:999px;background:var(--nav-accent);opacity:0;pointer-events:none;transition:transform .45s cubic-bezier(.34,1.3,.64,1),width .45s cubic-bezier(.34,1.3,.64,1),height .45s cubic-bezier(.34,1.3,.64,1),background-color .3s ease,opacity .3s ease}#menu.lava-on .lava{opacity:1}#menu.lava-hover .lava{background:color-mix(in srgb,var(--nav-accent) 25%,transparent)}#menu.lava-jump .lava{transition:background-color .3s ease,opacity .3s ease}}@media(max-width:1100px){#menu{display:flex;flex-direction:column;gap:.25rem;position:fixed;left:0;right:0;top:var(--header-total);bottom:0;z-index:999;padding:1.5rem var(--gut);background:rgb(var(--bgcolor));font-size:.9rem;font-weight:680;visibility:hidden}#menu a{padding:.75rem 0;border-bottom:1px solid rgba(var(--color),.15);opacity:1}html.menu-visible{overflow:hidden}html.menu-visible #menu{visibility:visible}}@media(max-width:1100px)and (prefers-reduced-motion:no-preference){#menu{opacity:var(--mn-o, .1);background:rgba(var(--bgcolor),.85);backdrop-filter:blur(1.25rem);-webkit-backdrop-filter:blur(1.25rem);transform-origin:50% 0;transform:perspective(50rem) translate3d(var(--mn-x, 8vw),calc(-1 * var(--header-total) - 2rem),var(--mn-z, -4rem)) rotateX(var(--mn-rx, 42deg)) rotateY(var(--mn-ry, -24deg)) rotate(var(--mn-rz, 7deg)) scale(var(--mn-s, .25));transition:transform 1s cubic-bezier(.65,0,.35,1),opacity 1s cubic-bezier(.65,0,.35,1),background-color 1s cubic-bezier(.65,0,.35,1),visibility 0s linear 1s}#menu a{transform:perspective(30rem) translate3d(var(--mni-x, 0),var(--mni-y, 0),var(--mni-z, 0)) rotateX(var(--mni-rx, 0deg)) rotateY(var(--mni-ry, 0deg));transition:transform 1s cubic-bezier(.65,0,.35,1)}html.menu-visible #menu{opacity:1;background:rgb(var(--bgcolor));transform:none;transition:transform 1s cubic-bezier(.33,1,.68,1),opacity 1s cubic-bezier(.33,1,.68,1),background-color 1s cubic-bezier(.33,1,.68,1),visibility 0s}html.menu-visible #menu a{transform:none;transition:transform 1s cubic-bezier(.33,1,.68,1)}}.message{max-width:24rem}.message.success{color:#0aa647}.message.error{color:#a50000}.modal{display:inline-block;top:0%;left:0%;z-index:1000000;width:100%;color:#333;background:#fff;box-shadow:0 0 1rem #000000e6;transition:all .5s ease-out}.modal.hidden{top:-100%;opacity:0;z-index:-1000000}.modal .close{position:absolute;right:1rem;top:1rem;opacity:.5;transition:all .25s ease-out}.modal .close:hover{cursor:pointer;opacity:1}.modal a.close{font-size:1.4rem;color:#333}.modal button,.modal .button{background:none;border-color:#00000080;color:#333}.modal button:hover,.modal .button:hover{background:#333;border-color:#333;color:#fff}.modal button:hover *,.modal .button:hover *{color:#fff}.noshade{box-shadow:none!important}p{margin:0 0 1em;max-width:62ch;-webkit-hyphens:auto;hyphens:auto}.small{font-size:.9375rem;color:var(--mute)}.padded{padding:1rem}.v-padded{padding:1rem 0}.half-padded{padding:.5rem}.double-padded{padding:2rem}html.own-palette:not([data-theme=dark]) body:not(.case-page),html.own-palette .case-page header,html.own-palette .case-hero,html[style*=--linkcolor] body{--link: rgb( var(--linkcolor) );--link-hover: color-mix(in srgb, rgb( var(--linkcolor) ) 60%, rgb( var(--bgcolor) ));--nav-accent: rgb( var(--linkcolor) );--nav-on-accent: rgb( var(--bgcolor) );--logo-hover: var(--link-hover);--fill-hover-bg: transparent;--fill-hover-border: rgb( var(--linkcolor) );--fill-hover-fg: rgb( var(--linkcolor) )}.fixed{position:fixed}.relative{position:relative}.absolute{position:absolute}#up,#prev,#next{flex:1;flex-wrap:nowrap}#up svg,#prev svg,#next svg{flex:none;width:1.25em;height:1.25em;--arrow-turn: 0deg;transform:rotate(var(--arrow-turn));transition:all .25s ease-out}#up:hover svg,#prev:hover svg,#next:hover svg{transform:rotate(var(--arrow-turn)) scale(1.25)}#next .caption{text-align:right}#up svg{--arrow-turn: 90deg}#next svg{--arrow-turn: 180deg}.align_left{float:left;margin:0 20px 20px 0}.align_right{float:right;margin:0 0 20px 20px}quote,.quote{font-style:italic}.round{border-radius:100%}sub *{white-space:nowrap;font-size:.8em}sub,sub *{vertical-align:bottom}#submenu ul{padding:10px 15px}#submenu li{list-style:none;padding:5px 0;margin:1px 0}#submenu a{color:#0aa647;white-space:nowrap;padding:5px 15px;border-radius:20px;transition:all .25s ease-out}#submenu a:hover{background:#0aa647;color:#fff}#submenu li.current>a{color:#999;border:1px solid rgba(0,0,0,.1)}#submenu li.current>a:hover{background:none;cursor:default}sup,sub,sup *{white-space:nowrap;font-size:.8em}sup,sup *{vertical-align:top}table{width:100%;border:0px;border-collapse:collapse}table *{text-align:left}table thead{opacity:.5;transition:all .25s ease-out}table thead:hover{opacity:1}table tr{transition:all .25s ease-out}table tr:hover{background:#00000026}table td,table th{padding:10px;border-bottom:1px solid rgba(0,0,0,.3)}table th{color:#aaa;font-weight:300}table h1,table h2,table h3,table h4,table h5,table h6{padding:5px 0!important;margin:0!important}table.light tr:hover{background:#ffffff26}table.light td,table.light th{border-bottom:1px solid rgba(255,255,255,.3)}#theme-toggle .i-sun{display:none}html[data-theme=dark] #theme-toggle .i-sun{display:block}html[data-theme=dark] #theme-toggle .i-moon{display:none}.hidden{visibility:hidden}