@charset "UTF-8";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{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.highlight .hll{background-color:#ffc}.highlight .c{color:#8f5902;font-style:italic}.highlight .err{color:#a40000;border:1px solid #ef2929}.highlight .g{color:#000}.highlight .k{color:#204a87;font-weight:bold}.highlight .l{color:#000}.highlight .n{color:#000}.highlight .o{color:#ce5c00;font-weight:bold}.highlight .x{color:#000}.highlight .p{color:#000;font-weight:bold}.highlight .cm{color:#8f5902;font-style:italic}.highlight .cp{color:#8f5902;font-style:italic}.highlight .c1{color:#8f5902;font-style:italic}.highlight .cs{color:#8f5902;font-style:italic}.highlight .gd{color:#a40000}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#ef2929}.highlight .gh{color:navy;font-weight:bold}.highlight .gi{color:#00a000}.highlight .go{color:#000;font-style:italic}.highlight .gp{color:#8f5902}.highlight .gs{color:#000;font-weight:bold}.highlight .gu{color:purple;font-weight:bold}.highlight .gt{color:#a40000;font-weight:bold}.highlight .kc{color:#204a87;font-weight:bold}.highlight .kd{color:#204a87;font-weight:bold}.highlight .kn{color:#204a87;font-weight:bold}.highlight .kp{color:#204a87;font-weight:bold}.highlight .kr{color:#204a87;font-weight:bold}.highlight .kt{color:#204a87;font-weight:bold}.highlight .ld{color:#000}.highlight .m{color:#0000cf;font-weight:bold}.highlight .s{color:#4e9a06}.highlight .na{color:#c4a000}.highlight .nb{color:#204a87}.highlight .nc{color:#000}.highlight .no{color:#000}.highlight .nd{color:#5c35cc;font-weight:bold}.highlight .ni{color:#ce5c00}.highlight .ne{color:#c00;font-weight:bold}.highlight .nf{color:#000}.highlight .nl{color:#f57900}.highlight .nn{color:#000}.highlight .nx{color:#000}.highlight .py{color:#000}.highlight .nt{color:#204a87;font-weight:bold}.highlight .nv{color:#000}.highlight .ow{color:#204a87;font-weight:bold}.highlight .w{color:#f8f8f8;text-decoration:underline}.highlight .mf{color:#0000cf;font-weight:bold}.highlight .mh{color:#0000cf;font-weight:bold}.highlight .mi{color:#0000cf;font-weight:bold}.highlight .mo{color:#0000cf;font-weight:bold}.highlight .sb{color:#4e9a06}.highlight .sc{color:#4e9a06}.highlight .sd{color:#8f5902;font-style:italic}.highlight .s2{color:#4e9a06}.highlight .se{color:#4e9a06}.highlight .sh{color:#4e9a06}.highlight .si{color:#4e9a06}.highlight .sx{color:#4e9a06}.highlight .sr{color:#4e9a06}.highlight .s1{color:#4e9a06}.highlight .ss{color:#4e9a06}.highlight .bp{color:#3465a4}.highlight .vc{color:#000}.highlight .vg{color:#000}.highlight .vi{color:#000}.highlight .il{color:#0000cf;font-weight:bold}@media(prefers-color-scheme:dark){html:not([data-theme=light]) .highlight .hll{background-color:#49483e}html:not([data-theme=light]) .highlight .c{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .err{color:#f92672;border:1px solid #f92672}html:not([data-theme=light]) .highlight .g{color:#f8f8f2}html:not([data-theme=light]) .highlight .k{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .l{color:#f8f8f2}html:not([data-theme=light]) .highlight .n{color:#f8f8f2}html:not([data-theme=light]) .highlight .o{color:#f92672;font-weight:bold}html:not([data-theme=light]) .highlight .x{color:#f8f8f2}html:not([data-theme=light]) .highlight .p{color:#f8f8f2;font-weight:bold}html:not([data-theme=light]) .highlight .cm{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .cp{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .c1{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .cs{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .gd{color:#f92672}html:not([data-theme=light]) .highlight .ge{color:#f8f8f2;font-style:italic}html:not([data-theme=light]) .highlight .gr{color:#f92672}html:not([data-theme=light]) .highlight .gh{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .gi{color:#a6e22e}html:not([data-theme=light]) .highlight .go{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .gp{color:#8b866f}html:not([data-theme=light]) .highlight .gs{color:#f8f8f2;font-weight:bold}html:not([data-theme=light]) .highlight .gu{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .gt{color:#f92672;font-weight:bold}html:not([data-theme=light]) .highlight .kc{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .kd{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .kn{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .kp{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .kr{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .kt{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .ld{color:#f8f8f2}html:not([data-theme=light]) .highlight .m{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .s{color:#e6db74}html:not([data-theme=light]) .highlight .na{color:#a6e22e}html:not([data-theme=light]) .highlight .nb{color:#66d9ef}html:not([data-theme=light]) .highlight .nc{color:#f8f8f2}html:not([data-theme=light]) .highlight .no{color:#f8f8f2}html:not([data-theme=light]) .highlight .nd{color:#a6e22e;font-weight:bold}html:not([data-theme=light]) .highlight .ni{color:#f92672}html:not([data-theme=light]) .highlight .ne{color:#f92672;font-weight:bold}html:not([data-theme=light]) .highlight .nf{color:#f8f8f2}html:not([data-theme=light]) .highlight .nl{color:#f92672}html:not([data-theme=light]) .highlight .nn{color:#f8f8f2}html:not([data-theme=light]) .highlight .nx{color:#f8f8f2}html:not([data-theme=light]) .highlight .py{color:#f8f8f2}html:not([data-theme=light]) .highlight .nt{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .nv{color:#f8f8f2}html:not([data-theme=light]) .highlight .ow{color:#66d9ef;font-weight:bold}html:not([data-theme=light]) .highlight .w{color:#f8f8f2;text-decoration:underline}html:not([data-theme=light]) .highlight .mf{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .mh{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .mi{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .mo{color:#ae81ff;font-weight:bold}html:not([data-theme=light]) .highlight .sb{color:#e6db74}html:not([data-theme=light]) .highlight .sc{color:#e6db74}html:not([data-theme=light]) .highlight .sd{color:#8b866f;font-style:italic}html:not([data-theme=light]) .highlight .s2{color:#e6db74}html:not([data-theme=light]) .highlight .se{color:#e6db74}html:not([data-theme=light]) .highlight .sh{color:#e6db74}html:not([data-theme=light]) .highlight .si{color:#e6db74}html:not([data-theme=light]) .highlight .sx{color:#e6db74}html:not([data-theme=light]) .highlight .sr{color:#e6db74}html:not([data-theme=light]) .highlight .s1{color:#e6db74}html:not([data-theme=light]) .highlight .ss{color:#e6db74}html:not([data-theme=light]) .highlight .bp{color:#66d9ef}html:not([data-theme=light]) .highlight .vc{color:#f8f8f2}html:not([data-theme=light]) .highlight .vg{color:#f8f8f2}html:not([data-theme=light]) .highlight .vi{color:#f8f8f2}html:not([data-theme=light]) .highlight .il{color:#ae81ff;font-weight:bold}}html[data-theme=dark] .highlight .hll{background-color:#49483e}html[data-theme=dark] .highlight .c{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .err{color:#f92672;border:1px solid #f92672}html[data-theme=dark] .highlight .g{color:#f8f8f2}html[data-theme=dark] .highlight .k{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .l{color:#f8f8f2}html[data-theme=dark] .highlight .n{color:#f8f8f2}html[data-theme=dark] .highlight .o{color:#f92672;font-weight:bold}html[data-theme=dark] .highlight .x{color:#f8f8f2}html[data-theme=dark] .highlight .p{color:#f8f8f2;font-weight:bold}html[data-theme=dark] .highlight .cm{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .cp{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .c1{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .cs{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .gd{color:#f92672}html[data-theme=dark] .highlight .ge{color:#f8f8f2;font-style:italic}html[data-theme=dark] .highlight .gr{color:#f92672}html[data-theme=dark] .highlight .gh{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .gi{color:#a6e22e}html[data-theme=dark] .highlight .go{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .gp{color:#8b866f}html[data-theme=dark] .highlight .gs{color:#f8f8f2;font-weight:bold}html[data-theme=dark] .highlight .gu{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .gt{color:#f92672;font-weight:bold}html[data-theme=dark] .highlight .kc{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .kd{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .kn{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .kp{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .kr{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .kt{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .ld{color:#f8f8f2}html[data-theme=dark] .highlight .m{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .s{color:#e6db74}html[data-theme=dark] .highlight .na{color:#a6e22e}html[data-theme=dark] .highlight .nb{color:#66d9ef}html[data-theme=dark] .highlight .nc{color:#f8f8f2}html[data-theme=dark] .highlight .no{color:#f8f8f2}html[data-theme=dark] .highlight .nd{color:#a6e22e;font-weight:bold}html[data-theme=dark] .highlight .ni{color:#f92672}html[data-theme=dark] .highlight .ne{color:#f92672;font-weight:bold}html[data-theme=dark] .highlight .nf{color:#f8f8f2}html[data-theme=dark] .highlight .nl{color:#f92672}html[data-theme=dark] .highlight .nn{color:#f8f8f2}html[data-theme=dark] .highlight .nx{color:#f8f8f2}html[data-theme=dark] .highlight .py{color:#f8f8f2}html[data-theme=dark] .highlight .nt{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .nv{color:#f8f8f2}html[data-theme=dark] .highlight .ow{color:#66d9ef;font-weight:bold}html[data-theme=dark] .highlight .w{color:#f8f8f2;text-decoration:underline}html[data-theme=dark] .highlight .mf{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .mh{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .mi{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .mo{color:#ae81ff;font-weight:bold}html[data-theme=dark] .highlight .sb{color:#e6db74}html[data-theme=dark] .highlight .sc{color:#e6db74}html[data-theme=dark] .highlight .sd{color:#8b866f;font-style:italic}html[data-theme=dark] .highlight .s2{color:#e6db74}html[data-theme=dark] .highlight .se{color:#e6db74}html[data-theme=dark] .highlight .sh{color:#e6db74}html[data-theme=dark] .highlight .si{color:#e6db74}html[data-theme=dark] .highlight .sx{color:#e6db74}html[data-theme=dark] .highlight .sr{color:#e6db74}html[data-theme=dark] .highlight .s1{color:#e6db74}html[data-theme=dark] .highlight .ss{color:#e6db74}html[data-theme=dark] .highlight .bp{color:#66d9ef}html[data-theme=dark] .highlight .vc{color:#f8f8f2}html[data-theme=dark] .highlight .vg{color:#f8f8f2}html[data-theme=dark] .highlight .vi{color:#f8f8f2}html[data-theme=dark] .highlight .il{color:#ae81ff;font-weight:bold}html{font-size:16px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;color:#1c1c1e;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%;-webkit-text-size-adjust:100%}body{background-color:#fcfcfc;min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{margin:1rem 0 .4rem;font-weight:600}h1{font-size:2.2rem}h2{font-size:1.8rem}h3{font-size:1.4rem;color:#333}h4{font-size:1.2rem;font-weight:bold;color:#333}h5{font-size:1rem;font-style:italic;font-weight:bold}h6{font-size:1rem;font-style:italic}p,li{line-height:1.62;margin:1rem 0}b,strong{font-weight:bold}i,em{font-style:italic}code{display:inline-block;padding:2px 4px 0;font-family:monospace;font-size:.8rem;background-color:rgb(239.25,239.25,239.25);border-radius:.25rem}a{color:#007aff;transition:all 200ms ease}a:hover{color:rgb(0,97.6,204)}.buttons-wrapper{display:flex;flex-wrap:wrap;gap:.2rem}button{font-size:16px}.primary-button{display:inline-block;padding:12px 24px;border:0;border-radius:.5rem;background-color:#007aff;color:white;font-size:1rem;text-decoration:none;text-align:center;cursor:pointer;transition:background-color 200ms ease,box-shadow 200ms ease}.primary-button:hover{background-color:rgb(0,97.6,204);color:white}.primary-button:focus{outline:0;box-shadow:0 0 0 3px rgb(102,175.2,255)}.primary-button:active{background-color:rgb(0,85.4,178.5)}.secondary-button{display:inline-block;padding:10px 24px;border:2px solid #007aff;border-radius:.5rem;background-color:transparent;color:#007aff;font-size:1rem;text-decoration:none;text-align:center;cursor:pointer;transition:background-color 200ms ease,color 200ms ease,box-shadow 200ms ease}.secondary-button:hover{background-color:#007aff;color:white;box-shadow:0 2px 5px rgba(0,0,0,0.2)}.secondary-button:focus{outline:0;box-shadow:0 0 0 3px rgb(102,175.2,255)}.secondary-button:active{background-color:rgb(0,97.6,204)}.card .thumbnail{background-color:black;width:100%;aspect-ratio:16/9}ul{list-style-type:disc;padding-left:1.5rem}ul li li{list-style:circle}ul li li li{list-style:square}ol{list-style-type:lower-alpha;padding-left:1.5rem}ol li{padding-left:.5rem}li{margin:.5rem 0}.math-warning{display:none}.math-warning p{margin:.5rem 0}.math-warning p:first-child{margin-top:0}.math-warning p:last-child{margin-bottom:0}.no-js .math-warning{display:block;background:#fff1de;padding:.8rem 1rem;border-left:.5rem solid #ffb645;border-radius:.5rem}.no-js .math-content{display:none}header{border-bottom:thin solid #e0e0e0;background-color:#f3f3f3;transition:background-color 200ms ease;z-index:1000;position:sticky;top:0}header .container{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;max-width:1000px;padding:0;margin:0 auto;position:relative}header a{padding:.4rem;text-decoration:none;color:#1c1c1e;transition:all 200ms ease}header button{border:0;background:transparent;padding:1rem;border-left:thin solid #e0e0e0;font-size:calc(16px - 0.1rem);cursor:pointer;color:#1c1c1e}header button:active{background-color:#d0d0d0}header nav{display:flex;flex-direction:column;position:absolute;top:100%;right:0;left:auto;width:max-content;max-width:90vw;padding:.5rem 1rem;gap:.5rem;background-color:transparent;visibility:hidden;opacity:0;transform:translateY(-10px);transition:opacity .3s ease,transform .3s ease,visibility .3s;pointer-events:none}header nav a{opacity:0;transform:scale(0.9) translateY(-10px);display:block;padding:.8rem 1.2rem;border-radius:12px;background-color:rgba(255,255,255,0.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 4px 12px rgba(0,0,0,0.1);color:#1c1c1e;font-weight:500;text-align:left;transition:opacity .2s ease,transform .2s ease}header nav.is-open{visibility:visible;opacity:1;transform:translateY(0);pointer-events:auto}header nav.is-open a{opacity:1;transform:scale(1) translateY(0);transition:opacity .4s cubic-bezier(0.175,0.885,0.32,1.275),transform .4s cubic-bezier(0.175,0.885,0.32,1.275)}header nav.is-open a:nth-child(1){transition-delay:.05s}header nav.is-open a:nth-child(2){transition-delay:.1s}header nav.is-open a:nth-child(3){transition-delay:.15s}header nav.is-open a:nth-child(4){transition-delay:.2s}header nav.is-open a:nth-child(5){transition-delay:.25s}header nav.is-open a:nth-child(6){transition-delay:.3s}header nav.is-open a:nth-child(7){transition-delay:.35s}header nav.is-open a:nth-child(8){transition-delay:.4s}header nav.is-open a:nth-child(9){transition-delay:.45s}header nav.is-open a:nth-child(10){transition-delay:.5s}.no-js header{margin-bottom:1.5rem}.no-js header button{display:none}.no-js header .nav-wrapper{display:block;position:absolute;top:100%;width:100vw;left:50%;margin-left:-50vw;background-color:#f3f3f3;border-top:thin solid #e0e0e0;border-bottom:thin solid #e0e0e0;z-index:99}.no-js header .nav-wrapper::before,.no-js header .nav-wrapper::after{content:"";position:absolute;top:0;bottom:0;width:2rem;pointer-events:none;z-index:10;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:#888;font-family:monospace;font-weight:bold}.no-js header .nav-wrapper::before{content:"‹";left:0;background:linear-gradient(to right,#f3f3f3 40%,transparent 100%)}.no-js header .nav-wrapper::after{content:"›";right:0;background:linear-gradient(to left,#f3f3f3 40%,transparent 100%)}.no-js header nav{position:static;visibility:visible;opacity:1;transform:none;pointer-events:auto;display:flex;flex-direction:row;overflow-x:auto;white-space:nowrap;padding:.8rem 2.5rem;gap:.5rem;max-width:none;width:100%;box-sizing:border-box;scrollbar-width:none}.no-js header nav::-webkit-scrollbar{display:none}.no-js header nav a{opacity:1;transform:none;transition:none;display:inline-block;padding:0rem .8rem;border-radius:6px;background-color:transparent;box-shadow:none;backdrop-filter:none;font-size:.9em}.no-js header nav a:hover{background-color:rgba(0,0,0,0.05)}footer{border-top:thin solid #e0e0e0;background-color:#f3f3f3;padding:.5rem 0;margin-top:auto;font-size:.8rem;color:#666}footer .container{max-width:1000px;padding:0 2rem;margin:0 auto}footer .footer-content{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}footer .footer-section p{margin:0;color:#666}footer .social-links{display:flex;gap:1rem;align-items:center}footer .social-links a{color:inherit;display:flex;align-items:center;justify-content:center;padding:.5rem;border-radius:50%;transition:background-color 200ms ease}footer .social-links a:hover{background-color:#e0e0e0}footer .social-links a img{opacity:.7;transition:opacity 200ms ease}footer .social-links a:hover img{opacity:1}main{padding:1rem 2rem 2rem;flex:1}main.has-sections{padding:0}main.has-sections section{padding:1rem}main.has-sections section div.container{max-width:1200px;margin:0 auto}main.has-sections section div.container.subheading{text-align:center}main.has-sections section div.container.collection-desc{text-align:center;max-width:900px;margin:0 auto 2rem}main.has-sections section div.container.centered{padding:0 1rem;display:flex;flex-flow:column}main .meta{font-size:.8em;margin:1rem 0}main.article .title{line-height:1.1}main.article .subheading{color:#888;font-weight:500;font-size:1.2rem;line-height:1.2}main.article img{max-width:100%}hr{margin:1rem 0;border:.5px solid gray;box-shadow:none}figure.highlight{display:block}figure.highlight>pre{margin:.4rem 0 1rem;padding:.25rem .5rem;border-radius:8px;font-family:monospace;font-size:.8rem;line-height:1.4;border:thin solid hsl(0,0,80%);background:#f3f3f3;overflow-x:auto}figure.highlight>pre pre{padding:0 .4rem}figure.highlight>pre code{background-color:inherit}blockquote{border-left:.5rem solid #607d8d;padding:.8rem 1rem;border-radius:.5rem;background-color:#ecf0f3;font-style:italic;margin:1rem 0}blockquote p{margin:.5rem 0}blockquote p:last-child{margin-top:0}blockquote p:last-child{margin-bottom:0}blockquote .source{max-width:70%;margin-left:auto;text-align:right;margin-right:5%}div.callout{border-left:.5rem solid #607d8d;padding:.8rem 1rem;border-radius:.5rem;background-color:#ecf0f3;margin:1rem 0}div.callout p{margin:.5rem 0}div.callout p:first-child{margin-top:0}div.callout p:last-child{margin-bottom:0}div.callout.is-info{border-left:.5rem solid #5fb7f6;background-color:#e2f2ff}div.callout.is-success{border-left:.5rem solid #81c683;background-color:#e9f5eb}div.callout.is-warning{border-left:.5rem solid #ffb645;background-color:#fff1de}div.callout.is-danger{border-left:.5rem solid #e27570;background-color:#ffebee}div.cards-container{display:grid;grid-template-columns:1fr;gap:2rem;align-items:stretch;justify-items:stretch;max-width:1200px;margin:1rem auto;padding:0 1rem;box-sizing:border-box}div.card{max-width:480px;width:100%;margin:0 auto;padding:1.25rem 0;border-radius:.5rem;background-color:#fff;border:1px solid #e6e6e6;box-shadow:0 1px 2px rgba(0,0,0,0.04);transition:box-shadow 200ms ease,border-color 200ms ease,background-color 200ms ease;display:flex;flex-direction:column;box-sizing:border-box}div.card h3{margin-top:0;margin-bottom:0;margin-left:1.25rem;margin-right:1.25rem;line-height:1.3}div.card img{margin-left:0;margin-right:0}div.card p{margin-top:.5rem;margin-bottom:.5rem;margin-left:1.25rem;margin-right:1.25rem}div.card p.date{margin-top:0;font-size:.85rem;color:#666}div.card a{margin-top:auto;align-self:flex-start;text-decoration:none;color:#007aff;font-weight:600;padding:.25rem 0;margin-left:1.25rem;margin-right:1.25rem;border-bottom:2px solid transparent;transition:color 200ms ease,border-color 200ms ease}div.card a:hover{color:rgb(0,97.6,204);border-color:rgb(0,97.6,204)}.card-details{display:grid;grid-template-columns:auto 1fr;gap:5px 5px;margin:.75rem 1.25rem 1.25rem;font-size:14px;align-items:center}.card-details .detail-row{display:contents}.card-details .detail-row>*{height:18px;display:flex;align-items:center}.card-details .label{font-weight:bold;font-size:12px;font-family:monospace}.card-details .value.status-archived{color:rgb(102.5,102.5,102.5)}.card-details .value.status-archived span{display:inline-block;border:thin solid rgb(217.25,217.25,217.25);background:rgb(242.75,242.75,242.75)}.card-details .value.status-in-progress{color:rgb(30.8685258964,118.1314741036,52.8326693227)}.card-details .value.status-in-progress span{display:inline-block;border:thin solid rgb(191.1772908367,238.3227091633,203.0438247012);background:rgb(231.6115537849,248.8884462151,235.9601593625)}.card-details .value span{border-radius:30px;padding:1px 10px}.project .card-details{display:block;margin:0}.project .card-details .detail-row{display:flex;gap:3px;margin:.25rem 0}.project .card-details .label{font-family:inherit;font-weight:normal;font-size:inherit;align-items:center;justify-content:end}figure{margin:1rem auto;display:flex;flex-direction:column;align-items:center}figure figcaption{margin-top:.5rem;text-align:center;font-style:italic;font-size:.8rem;line-height:1.2}figure img{max-width:100%}figure img.noice{border-radius:1rem;box-shadow:0 0 .5rem rgba(51,51,51,0.1333333333)}.references.ieee ol{margin-top:1rem;list-style-type:decimal}.references .title{font-size:inherit;font-weight:normal}.gallery-wrapper{position:relative;margin:1rem 0}.gallery-wrapper:hover .scroll-hint-overlay,.gallery-wrapper:focus-within .scroll-hint-overlay,.gallery-wrapper:active .scroll-hint-overlay{opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.scroll-hint-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:start;justify-content:end;z-index:10;pointer-events:none;padding-top:0;padding-right:2.5rem}.scroll-hint-overlay span{background-color:rgba(0,0,0,0.6);color:white;padding:.5rem 1rem;border-radius:20px;font-size:.9rem;font-weight:500;backdrop-filter:blur(4px);box-shadow:0 2px 10px rgba(0,0,0,0.2);animation:pulse-hint 2s infinite}@keyframes pulse-hint{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}100%{transform:scale(1);opacity:1}}.gallery-scroll-container{display:flex;gap:1.5rem;overflow-x:auto;overflow-y:hidden;height:240px;margin:1rem -2rem 0;padding:3rem 2rem 2rem;scrollbar-width:none;mask-image:linear-gradient(to right,transparent 0,black 2.5%,black 97.5%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,black 2.5%,black 97.5%,transparent 100%)}.gallery-scroll-container::-webkit-scrollbar{display:none}.gallery-scroll-container .gallery-item{display:block;margin:0;padding:0;flex:0 0 auto;height:100%;width:auto;scroll-snap-align:center;background-color:#000;border-radius:.5rem;box-shadow:0 4px 12px rgba(0,0,0,0.15);overflow:hidden;position:relative;scroll-snap-align:start}.gallery-scroll-container .gallery-item img,.gallery-scroll-container .gallery-item video{display:block;height:100%;width:auto;max-width:85vw;object-fit:cover}.site-title-link{margin:0;padding:0}.site-title{font-size:16px;font-weight:bold;line-height:1;margin:0;padding:1rem}.title{font-size:2.4rem;font-weight:600}.project .title{margin-bottom:1rem}.subheading{font-size:.9rem;font-weight:400}@media(min-width:768px){section div.container.spacious{padding:3rem}section div.container.centered{align-items:center}div.cards-container{grid-template-columns:repeat(2,minmax(260px,1fr))}footer .container{max-width:1100px}footer .footer-content{flex-direction:row;justify-content:space-between;text-align:left}main .meta{display:flex;justify-content:space-between}main .meta .date{text-align:right}}@media(min-width:1024px){header .container,.no-js header .container{max-width:1200px}header button,.no-js header button{display:none}header .nav-wrapper,.no-js header .nav-wrapper{position:static;display:block;width:auto;border:0;background:transparent}header .nav-wrapper::before,header .nav-wrapper::after,.no-js header .nav-wrapper::before,.no-js header .nav-wrapper::after{display:none}header nav,.no-js header nav{display:flex;visibility:visible;opacity:1;position:static;flex-direction:row;background-color:transparent;transform:none;pointer-events:auto;padding:0;gap:0;width:auto;max-width:none;box-shadow:none;justify-content:end}header nav a,.no-js header nav a{opacity:1;transform:none;transition:background-color 200ms ease;transition-delay:0;display:block;padding:1rem;border-left:thin solid #e0e0e0;border-radius:0;background-color:transparent;box-shadow:none;backdrop-filter:none;text-align:left;margin:0}header nav a:last-child,.no-js header nav a:last-child{border-right:thin solid #e0e0e0}header nav a:hover,.no-js header nav a:hover{background-color:hsl(0,0,90%)}header nav.is-open,.no-js header nav.is-open{animation:none;transform:none}header nav.is-open a,.no-js header nav.is-open a{animation:none;transform:none}main{padding:1rem 4rem}main.post,main.project{width:1200px;max-width:100%;box-sizing:border-box;margin:0 auto}main.article{width:900px;max-width:100%;box-sizing:border-box;margin:0 auto}.gallery-scroll-container{height:400px;gap:1.5rem}div.cards-container{grid-template-columns:repeat(3,minmax(260px,1fr))}footer .container{max-width:1200px}}@media(prefers-color-scheme:dark){html:not([data-theme=light]) body{background-color:#000;color:#f2f2f7}html:not([data-theme=light]) a{color:#0a64df}html:not([data-theme=light]) a:hover{color:rgb(38.6995708155,125.9957081545,245.3004291845)}html:not([data-theme=light]) .primary-button{background-color:#0a64df;color:white}html:not([data-theme=light]) .primary-button:hover{background-color:rgb(38.6995708155,125.9957081545,245.3004291845)}html:not([data-theme=light]) .secondary-button{border-color:#0a64df;color:#0a64df}html:not([data-theme=light]) .secondary-button:hover{background-color:#0a64df;color:white}html:not([data-theme=light]) h1,html:not([data-theme=light]) h2,html:not([data-theme=light]) h3,html:not([data-theme=light]) h4,html:not([data-theme=light]) h5,html:not([data-theme=light]) h6{color:#e0e0e0}html:not([data-theme=light]) code{background-color:rgb(12.75,12.75,12.75)}html:not([data-theme=light]) figure.highlight>pre{background:#333;border-color:#444}html:not([data-theme=light]) figure.highlight>pre code{background-color:inherit}html:not([data-theme=light]) figure img.noice{box-shadow:0 0 .5rem 0 #ddd}html:not([data-theme=light]) header{border-bottom:thin solid #444;background-color:#101010}html:not([data-theme=light]) header nav a{background-color:rgba(28,28,30,0.9);color:#f2f2f7;border:1px solid rgba(255,255,255,0.1)}html:not([data-theme=light]) header button{color:#f2f2f7;border-left:thin solid #444}}@media(prefers-color-scheme:dark) and (min-width:1024px){html:not([data-theme=light]) header nav a{background-color:transparent;border:0;border-left:thin solid #444}html:not([data-theme=light]) header nav a:last-child{border-right:thin solid #444}html:not([data-theme=light]) header nav a:hover{background-color:#3a3a3c}}@media(prefers-color-scheme:dark){html:not([data-theme=light]).no-js header .nav-wrapper{background-color:#101010;border-color:#444}html:not([data-theme=light]).no-js header .nav-wrapper::before{background:linear-gradient(to right,#101010 40%,transparent 100%);color:#aaa}html:not([data-theme=light]).no-js header .nav-wrapper::after{background:linear-gradient(to left,#101010 40%,transparent 100%);color:#aaa}html:not([data-theme=light]).no-js header nav a{background-color:transparent;border:0}html:not([data-theme=light]).no-js .math-warning{background-color:#4c3a1e;border-left-color:#d6b300;color:#f2f2f7}html:not([data-theme=light]) blockquote{border-left:.5rem solid #3a3a3c;background-color:#101010}html:not([data-theme=light]) div.callout{border-left:.5rem solid #3a3a3c;background-color:#101010}html:not([data-theme=light]) div.callout.is-info{border-left:.5rem solid #0092cc;background-color:#1e3a4c}html:not([data-theme=light]) div.callout.is-success{border-left:.5rem solid #25a745;background-color:#1c3a2b}html:not([data-theme=light]) div.callout.is-warning{border-left:.5rem solid #d6b300;background-color:#4c3a1e}html:not([data-theme=light]) div.callout.is-danger{border-left:.5rem solid #9e0800;background-color:#4c1e1e}html:not([data-theme=light]) div.card{background-color:#101010;border-color:#3a3a3c;box-shadow:0 1px 2px rgba(0,0,0,0.4)}html:not([data-theme=light]) div.card p.date{color:#a1a1a6}html:not([data-theme=light]) div.card a{color:#0a64df}html:not([data-theme=light]) div.card a:hover{color:rgb(38.6995708155,125.9957081545,245.3004291845);border-color:rgb(38.6995708155,125.9957081545,245.3004291845)}html:not([data-theme=light]) main.article .subheading{color:#ddd}html:not([data-theme=light]) .scroll-hint-overlay span{background-color:rgba(255,255,255,0.2);border:1px solid rgba(255,255,255,0.1)}html:not([data-theme=light]) footer{border-top:thin solid #444;background-color:#101010;color:#a1a1a6}html:not([data-theme=light]) footer .footer-section p{color:inherit}html:not([data-theme=light]) footer .social-links a{color:inherit}html:not([data-theme=light]) footer .social-links a:hover{background-color:#3a3a3c}html:not([data-theme=light]) footer .theme-switcher button{color:#a1a1a6;border-color:#444}html:not([data-theme=light]) footer .theme-switcher button:hover,html:not([data-theme=light]) footer .theme-switcher button.is-active{color:#f2f2f7;background-color:#3a3a3c}}html[data-theme=dark] body{background-color:#000;color:#f2f2f7}html[data-theme=dark] a{color:#0a64df}html[data-theme=dark] a:hover{color:rgb(38.6995708155,125.9957081545,245.3004291845)}html[data-theme=dark] .primary-button{background-color:#0a64df;color:white}html[data-theme=dark] .primary-button:hover{background-color:rgb(38.6995708155,125.9957081545,245.3004291845)}html[data-theme=dark] .secondary-button{border-color:#0a64df;color:#0a64df}html[data-theme=dark] .secondary-button:hover{background-color:#0a64df;color:white}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3,html[data-theme=dark] h4,html[data-theme=dark] h5,html[data-theme=dark] h6{color:#e0e0e0}html[data-theme=dark] code{background-color:rgb(12.75,12.75,12.75)}html[data-theme=dark] figure.highlight>pre{background:#333;border-color:#444}html[data-theme=dark] figure.highlight>pre code{background-color:inherit}html[data-theme=dark] figure img.noice{box-shadow:0 0 .5rem 0 #ddd}html[data-theme=dark] header{border-bottom:thin solid #444;background-color:#101010}html[data-theme=dark] header nav a{background-color:rgba(28,28,30,0.9);color:#f2f2f7;border:1px solid rgba(255,255,255,0.1)}html[data-theme=dark] header button{color:#f2f2f7;border-left:thin solid #444}@media(min-width:1024px){html[data-theme=dark] header nav a{background-color:transparent;border:0;border-left:thin solid #444}html[data-theme=dark] header nav a:last-child{border-right:thin solid #444}html[data-theme=dark] header nav a:hover{background-color:#3a3a3c}}html[data-theme=dark].no-js header .nav-wrapper{background-color:#101010;border-color:#444}html[data-theme=dark].no-js header .nav-wrapper::before{background:linear-gradient(to right,#101010 40%,transparent 100%);color:#aaa}html[data-theme=dark].no-js header .nav-wrapper::after{background:linear-gradient(to left,#101010 40%,transparent 100%);color:#aaa}html[data-theme=dark].no-js header nav a{background-color:transparent;border:0}html[data-theme=dark].no-js .math-warning{background-color:#4c3a1e;border-left-color:#d6b300;color:#f2f2f7}html[data-theme=dark] blockquote{border-left:.5rem solid #3a3a3c;background-color:#101010}html[data-theme=dark] div.callout{border-left:.5rem solid #3a3a3c;background-color:#101010}html[data-theme=dark] div.callout.is-info{border-left:.5rem solid #0092cc;background-color:#1e3a4c}html[data-theme=dark] div.callout.is-success{border-left:.5rem solid #25a745;background-color:#1c3a2b}html[data-theme=dark] div.callout.is-warning{border-left:.5rem solid #d6b300;background-color:#4c3a1e}html[data-theme=dark] div.callout.is-danger{border-left:.5rem solid #9e0800;background-color:#4c1e1e}html[data-theme=dark] div.card{background-color:#101010;border-color:#3a3a3c;box-shadow:0 1px 2px rgba(0,0,0,0.4)}html[data-theme=dark] div.card p.date{color:#a1a1a6}html[data-theme=dark] div.card a{color:#0a64df}html[data-theme=dark] div.card a:hover{color:rgb(38.6995708155,125.9957081545,245.3004291845);border-color:rgb(38.6995708155,125.9957081545,245.3004291845)}html[data-theme=dark] main.article .subheading{color:#ddd}html[data-theme=dark] .scroll-hint-overlay span{background-color:rgba(255,255,255,0.2);border:1px solid rgba(255,255,255,0.1)}html[data-theme=dark] footer{border-top:thin solid #444;background-color:#101010;color:#a1a1a6}html[data-theme=dark] footer .footer-section p{color:inherit}html[data-theme=dark] footer .social-links a{color:inherit}html[data-theme=dark] footer .social-links a:hover{background-color:#3a3a3c}html[data-theme=dark] footer .theme-switcher button{color:#a1a1a6;border-color:#444}html[data-theme=dark] footer .theme-switcher button:hover,html[data-theme=dark] footer .theme-switcher button.is-active{color:#f2f2f7;background-color:#3a3a3c}.theme-switcher{display:flex;gap:.5rem;justify-content:center;align-items:center;margin-top:.5rem}.no-js .theme-switcher{display:none}.theme-switcher button{background:transparent;border:1px solid #e0e0e0;border-radius:1rem;padding:.25rem .75rem;font-size:.75rem;cursor:pointer;color:#666;transition:all .2s ease}.theme-switcher button:hover,.theme-switcher button.is-active{background-color:#e0e0e0;color:#333;border-color:#ccc}.subscribe-container{background-color:#f9f9f9;border:1px solid #e0e0e0;padding:2rem;margin:3rem auto;max-width:800px;text-align:center;position:relative;overflow:hidden}.subscribe-container h3{margin-top:0;font-size:1.5rem}.subscribe-container p{color:#666;margin-bottom:1.5rem}.subscribe-container .subscribe-form{max-width:500px;margin:0 auto;text-align:left}.subscribe-container .subscribe-form .form-row{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}@media(min-width:600px){.subscribe-container .subscribe-form .form-row{flex-direction:row}.subscribe-container .subscribe-form .form-row .input_group{flex:1;margin-bottom:0}}.subscribe-container .subscribe-form .input_group{margin-bottom:1rem}.subscribe-container .subscribe-form .input_group label{display:block;font-weight:600;margin-bottom:.4rem;font-size:.9rem;color:#1c1c1e}.subscribe-container .subscribe-form .input_group input{width:100%;padding:.7rem .8rem;border:1px solid #e0e0e0;border-radius:.5rem;background-color:#fff;color:#1c1c1e;transition:border-color 200ms ease,box-shadow 200ms ease;box-sizing:border-box}.subscribe-container .subscribe-form .input_group input:focus{outline:0;border-color:#007aff;box-shadow:0 0 0 3px rgba(0,122,255,0.15)}.subscribe-container .subscribe-form .actions{text-align:center;margin-top:1.5rem}.subscribe-container .subscribe-form .actions button{width:100%}@media(min-width:600px){.subscribe-container .subscribe-form .actions button{width:auto;min-width:150px}}.subscribe-container .form-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.95);display:flex;align-items:center;justify-content:center;z-index:10;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.subscribe-container .form-overlay:not([hidden]){opacity:1;visibility:visible}.subscribe-container .form-overlay .form-status{margin:1rem 2rem;padding:2rem;text-align:center;max-width:90%;border:1px solid #e6e6e6;border-radius:.75rem}.subscribe-container .form-overlay .form-status p{font-size:1.1rem;color:#1c1c1e;margin-bottom:1.5rem}.subscribe-container .form-overlay .form-status.error{background:rgba(255,248,248,0.98);border-color:#ff3b30;box-shadow:0 8px 32px rgba(255,59,48,0.15)}.subscribe-container .form-overlay .form-status.error p{color:#d70015}.subscribe-container .form-overlay .form-status.error .buttons button[data-action=back]{background-color:#ff3b30;border-color:#ff3b30;color:white}.subscribe-container .form-overlay .form-status.error .buttons button[data-action=back]:hover{background-color:#d70015;border-color:#d70015}.subscribe-container .form-overlay .form-status.success{background:rgba(248,255,248,0.98);border-color:#34c759;box-shadow:0 8px 32px rgba(52,199,89,0.15)}.subscribe-container .form-overlay .form-status.success p{color:#248a3d}.subscribe-container .form-overlay .form-status.success .buttons button[data-action=restart]{background-color:#34c759;border-color:#34c759;color:white}.subscribe-container .form-overlay .form-status.success .buttons button[data-action=restart]:hover{background-color:#248a3d;border-color:#248a3d}.subscribe-container .form-overlay .form-status .buttons{display:flex;gap:.75rem;justify-content:center}@media(min-width:768px){.subscribe-container{border-radius:.5rem}}@media(prefers-color-scheme:dark){html:not([data-theme=light]) .subscribe-container{background-color:#101010;border-color:#3a3a3c}html:not([data-theme=light]) .subscribe-container h3{color:#f2f2f7}html:not([data-theme=light]) .subscribe-container p{color:#a1a1a6}html:not([data-theme=light]) .subscribe-container .subscribe-form .input_group label{color:#f2f2f7}html:not([data-theme=light]) .subscribe-container .subscribe-form .input_group input{background-color:rgba(0,0,0,0.2);border-color:#3a3a3c;color:#f2f2f7}html:not([data-theme=light]) .subscribe-container .subscribe-form .input_group input:focus{border-color:#0a64df;box-shadow:0 0 0 3px rgba(10,100,223,0.25)}html:not([data-theme=light]) .subscribe-container .form-overlay{background:rgba(16,16,16,0.95)}html:not([data-theme=light]) .subscribe-container .form-overlay .form-status p{color:#f2f2f7}html:not([data-theme=light]) .subscribe-container .form-overlay .form-status.error{background:rgba(25.5,25.5,25.5,0.75);border-color:#ff453a;box-shadow:0 8px 32px rgba(255,69,58,0.25)}html:not([data-theme=light]) .subscribe-container .form-overlay .form-status.error p{color:#ff6961}html:not([data-theme=light]) .subscribe-container .form-overlay .form-status.success{background:rgba(44,44,46,0.98);border-color:#30d158;box-shadow:0 8px 32px rgba(48,209,88,0.25)}html:not([data-theme=light]) .subscribe-container .form-overlay .form-status.success p{color:#4ade80}}html[data-theme=dark] .subscribe-container{background-color:#101010;border-color:#3a3a3c}html[data-theme=dark] .subscribe-container h3{color:#f2f2f7}html[data-theme=dark] .subscribe-container p{color:#a1a1a6}html[data-theme=dark] .subscribe-container .subscribe-form .input_group label{color:#f2f2f7}html[data-theme=dark] .subscribe-container .subscribe-form .input_group input{background-color:rgba(0,0,0,0.2);border-color:#3a3a3c;color:#f2f2f7}html[data-theme=dark] .subscribe-container .subscribe-form .input_group input:focus{border-color:#0a64df;box-shadow:0 0 0 3px rgba(10,100,223,0.25)}html[data-theme=dark] .subscribe-container .form-overlay{background:rgba(16,16,16,0.95)}html[data-theme=dark] .subscribe-container .form-overlay .form-status p{color:#f2f2f7}html[data-theme=dark] .subscribe-container .form-overlay .form-status.error{background:rgba(25.5,25.5,25.5,0.75);border-color:#ff453a;box-shadow:0 8px 32px rgba(255,69,58,0.25)}html[data-theme=dark] .subscribe-container .form-overlay .form-status.error p{color:#ff6961}html[data-theme=dark] .subscribe-container .form-overlay .form-status.success{background:rgba(44,44,46,0.98);border-color:#30d158;box-shadow:0 8px 32px rgba(48,209,88,0.25)}html[data-theme=dark] .subscribe-container .form-overlay .form-status.success p{color:#4ade80}.contact-form{max-width:860px;margin:1rem auto 0;position:relative}.contact-form .form-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(252,252,252,0.8666666667);display:flex;align-items:center;justify-content:center;z-index:10;border-radius:.75rem;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.contact-form .form-overlay:not([hidden]){opacity:1;visibility:visible}.contact-form .form-overlay:not([hidden]) .form-status{transform:scale(1)}.contact-form .form-overlay .form-status{background:rgba(255,255,255,0.95);padding:2rem;border-radius:.75rem;border:1px solid #e6e6e6;box-shadow:0 8px 32px rgba(0,0,0,0.1);text-align:center;max-width:400px;margin:1rem;transform:scale(0.95);transition:transform .3s ease}.contact-form .form-overlay .form-status.error{background:rgba(255,248,248,0.25);border-color:#ff3b30;box-shadow:0 8px 32px rgba(255,59,48,0.15)}.contact-form .form-overlay .form-status.error p{color:#d70015}.contact-form .form-overlay .form-status.error .buttons button[data-action=back]{background-color:#ff3b30;border-color:#ff3b30;color:white}.contact-form .form-overlay .form-status.error .buttons button[data-action=back]:hover{background-color:#d70015;border-color:#d70015}.contact-form .form-overlay .form-status.success{background:rgba(248,255,248,0.25);border-color:#34c759;box-shadow:0 8px 32px rgba(52,199,89,0.15)}.contact-form .form-overlay .form-status.success p{color:#248a3d}.contact-form .form-overlay .form-status.success .buttons button[data-action=restart]{background-color:#34c759;border-color:#34c759;color:white}.contact-form .form-overlay .form-status.success .buttons button[data-action=restart]:hover{background-color:#248a3d;border-color:#248a3d}.contact-form .form-overlay .form-status p{margin:0 0 1.5rem;font-size:1.1rem;line-height:1.5}.contact-form .form-overlay .form-status .buttons{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.contact-form .input_group{margin:0 0 1rem}.contact-form .input_group label{display:block;font-weight:600;margin:0 0 .4rem}.contact-form .input_group input[type=text],.contact-form .input_group input[type=email],.contact-form .input_group textarea{width:100%;padding:.7rem .8rem;border:1px solid #e0e0e0;border-radius:.5rem;background-color:#fff;color:#1c1c1e;transition:border-color 200ms ease,box-shadow 200ms ease,background-color 200ms ease;box-sizing:border-box;resize:vertical}.contact-form .input_group input[type=text]:focus,.contact-form .input_group input[type=email]:focus,.contact-form .input_group textarea:focus{outline:0;border-color:#007aff;box-shadow:0 0 0 3px rgba(0,122,255,0.15)}.contact-form .actions{margin-top:1rem}.contact-form .actions button{transition:all .2s ease}.contact-form .actions button:disabled{opacity:.6;cursor:not-allowed;transform:scale(0.98)}.contact-form .actions button.loading{position:relative;background:linear-gradient(90deg,#007aff,#5856d6);background-size:200% 100%;animation:loading-shimmer 1.5s ease-in-out infinite}.contact-form .form-overlay{border-radius:0}.contact-form .form-overlay .form-status{margin:1rem;padding:1.5rem;max-width:calc(100% - 2rem)}.contact-form .form-overlay .form-status .buttons{flex-direction:column;align-items:center}.contact-form .form-overlay .form-status .buttons button{width:100%;max-width:200px}@media(min-width:768px){.contact-form{padding:1rem 0}.contact-form form{margin:0 auto;max-width:720px;padding:1.25rem 1.5rem;border-radius:.75rem;display:grid;grid-template-columns:1fr 1fr;gap:1rem 1rem;box-sizing:border-box}.contact-form form .input_group:nth-child(1),.contact-form form .input_group:nth-child(2){grid-column:span 1}.contact-form form .input_group:nth-child(3),.contact-form form .input_group:nth-child(4){grid-column:1/-1}.contact-form form .actions{grid-column:1/-1}}@media(min-width:1024px){.contact-form form{max-width:800px;padding:1.5rem 2rem}}@media(prefers-color-scheme:dark){html:not([data-theme=light]) .contact-form .form-overlay{background:rgba(0,0,0,0.75)}html:not([data-theme=light]) .contact-form .form-overlay .form-status{background:rgba(44,44,46,0.95);border-color:#3a3a3c;color:#f2f2f7}html:not([data-theme=light]) .contact-form .form-overlay .form-status.error{background:rgba(25.5,25.5,25.5,0.75);border-color:#ff453a;box-shadow:0 8px 32px rgba(255,69,58,0.25)}html:not([data-theme=light]) .contact-form .form-overlay .form-status.error p{color:#ff6961}html:not([data-theme=light]) .contact-form .form-overlay .form-status.success{background:rgba(44,44,46,0.98);border-color:#30d158;box-shadow:0 8px 32px rgba(48,209,88,0.25)}html:not([data-theme=light]) .contact-form .form-overlay .form-status.success p{color:#4ade80}html:not([data-theme=light]) .contact-form .input_group input[type=text],html:not([data-theme=light]) .contact-form .input_group input[type=email],html:not([data-theme=light]) .contact-form .input_group textarea{background-color:#101010;color:#f2f2f7;border-color:#3a3a3c}html:not([data-theme=light]) .contact-form .input_group input[type=text]:focus,html:not([data-theme=light]) .contact-form .input_group input[type=email]:focus,html:not([data-theme=light]) .contact-form .input_group textarea:focus{border-color:#0a84ff;box-shadow:0 0 0 3px rgba(10,132,255,0.25)}html:not([data-theme=light]) .contact-form .actions button.loading{background:linear-gradient(90deg,#0a84ff,#5e5ce6);background-size:200% 100%}}html[data-theme=dark] .contact-form .form-overlay{background:rgba(0,0,0,0.75)}html[data-theme=dark] .contact-form .form-overlay .form-status{background:rgba(44,44,46,0.95);border-color:#3a3a3c;color:#f2f2f7}html[data-theme=dark] .contact-form .form-overlay .form-status.error{background:rgba(25.5,25.5,25.5,0.75);border-color:#ff453a;box-shadow:0 8px 32px rgba(255,69,58,0.25)}html[data-theme=dark] .contact-form .form-overlay .form-status.error p{color:#ff6961}html[data-theme=dark] .contact-form .form-overlay .form-status.success{background:rgba(44,44,46,0.98);border-color:#30d158;box-shadow:0 8px 32px rgba(48,209,88,0.25)}html[data-theme=dark] .contact-form .form-overlay .form-status.success p{color:#4ade80}html[data-theme=dark] .contact-form .input_group input[type=text],html[data-theme=dark] .contact-form .input_group input[type=email],html[data-theme=dark] .contact-form .input_group textarea{background-color:#101010;color:#f2f2f7;border-color:#3a3a3c}html[data-theme=dark] .contact-form .input_group input[type=text]:focus,html[data-theme=dark] .contact-form .input_group input[type=email]:focus,html[data-theme=dark] .contact-form .input_group textarea:focus{border-color:#0a84ff;box-shadow:0 0 0 3px rgba(10,132,255,0.25)}html[data-theme=dark] .contact-form .actions button.loading{background:linear-gradient(90deg,#0a84ff,#5e5ce6);background-size:200% 100%}@keyframes loading-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}h2{text-align:center}#hero-content{max-width:900px;margin-left:auto;margin-right:auto;display:flex;flex-direction:column;align-items:center;padding:1rem;text-align:center}.profile-picture{width:120px;max-width:100%;aspect-ratio:1/1;border-radius:50%;object-fit:cover;border:2px solid #ddd;box-shadow:0 2px 4px rgba(0,0,0,0.1)}.hero-title{font-size:2em;font-weight:bold;margin-top:20px}.hero-subtitle{line-height:1.2;font-size:1.2em;color:#666;margin-top:.5rem}.introduction{border-top:thin solid #ddd}@media(min-width:600px){#hero-content{padding:3rem 4rem;flex-direction:row;align-items:center;gap:1.5rem}.introduction{text-align:left;border-top:0}.hero-author{flex-shrink:0;border-right:thin solid #ddd;padding-right:1.5rem}.profile-picture{width:120px;height:120px}.profile-name{font-size:1.2em;font-weight:bold;margin-top:10px}}@media(min-width:768px){#hero-content{padding:3rem 6rem}.profile-name{font-size:1.5em;font-weight:bold;margin-top:10px}}@media(prefers-color-scheme:dark){.profile-picture{border:2px solid hsl(235,66%,20%);box-shadow:0 0 5px rgba(255,255,255,0.4)}.hero-title{color:#fff}.hero-subtitle{color:#ccc}.introduction{border-top-color:#333}}