.image-modal-overlay{z-index:1000;background-color:var(--color-overlay);backdrop-filter:blur(8px);box-sizing:border-box;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.image-modal-content{background-color:var(--color-surface-2);border:.15rem solid var(--color-border);width:min(72rem,100%);max-height:calc(100vh - 2rem);box-shadow:0 0 1.5rem var(--color-accent-glow);box-sizing:border-box;border-radius:.5rem;flex-direction:column;gap:1rem;padding:1rem;display:flex;position:relative;overflow:auto}.image-modal-content img{-o-object-fit:contain;object-fit:contain;width:100%;max-height:calc(100vh - 11rem);margin-block:0}.image-modal-content__close-button{border:1px solid var(--color-border);background-color:var(--color-surface-1);width:2.5rem;height:2.5rem;color:var(--color-link);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.5rem;line-height:1;transition:all .15s;display:flex;position:absolute;top:.75rem;right:.75rem}.image-modal-content__close-button:hover{color:var(--color-link-hover);border-color:var(--color-link-hover)}.image-modal-content__close-button:focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}.image-modal-content__info h3{color:var(--color-link-hover);margin-block:0 .5rem}.image-modal-content__info p{margin:0}.image-modal-content__info div p{margin-bottom:.5rem}:root{--color-background:#231f22;--color-surface-1:#1f141f;--color-surface-2:#3d293b;--color-tech-surface:#300e27;--color-border:#f4c7d9;--color-link:#f4c7d9;--color-link-hover:#ecdbfe;--color-link-active:#f87baf;--color-focus:#f87baf;--box-shadow:2px 5px 10px #00000080;--box-shadow-small:1px 2px 5px #00000080;--button-focus-ring:hsl(from var(--accent) h s l / .65);--font-size-body:1rem}body{background-color:var(--color-background);color:#fff;min-height:100vh;font-family:system-ui,-apple-system,sans-serif;font-size:var(--font-size-body);margin:0;overflow-x:hidden}p,li,a,span{letter-spacing:.02rem;line-height:150%}a,a:visited{color:var(--color-link);box-shadow:0 0 inset var(--color-link);cursor:pointer;margin-top:1rem;font-weight:600;text-decoration:none;transition:all .15s}a:hover{color:var(--color-link-hover);box-shadow:0 -2px inset var(--color-link-hover)}a:focus-visible{outline:3px solid var(--color-focus);outline-offset:4px;border-radius:.2rem}.hidden{opacity:0;pointer-events:none;visibility:hidden;display:none}h2{margin-top:0;padding-top:0}.button{border:.0625rem solid var(--color-link);background-color:var(--color-tech-surface);width:fit-content;min-width:8rem;height:2rem;color:var(--color-link);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.375rem;padding-inline:1rem;font-size:.9375rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s;display:inline-flex;box-shadow:0 0 #0000001f}.button .icon{transform:translateY(-2px)}.button:hover{border-color:var(--color-link-hover);background-color:var(--color-surface-1);color:var(--color-link-hover);box-shadow:0 0 .5rem hsl(from var(--color-link) h s l/.6);transform:scale(1.05)}.button:active{transform:translateY(.0625rem)}.button:focus-visible{outline:.125rem solid var(--button-focus-ring);outline-offset:.125rem}.button:is([aria-disabled=true],:disabled){opacity:.65;cursor:not-allowed;pointer-events:none}.icon{width:var(--font-size-body);height:var(--font-size-body);vertical-align:middle;margin-inline:.25rem;display:inline-block;transform:translateY(3px)}.icon svg{color:inherit;width:130%;height:130%}main{isolation:isolate;min-height:100vh;margin-bottom:5rem;padding-top:5rem}main:before,main:after{z-index:0;pointer-events:none;content:"";position:fixed;inset:0}main:before{background-color:var(--color-background);background-position:0;background-repeat:repeat-x}main.collage-loaded:before{background-image:url(/images/render-collage.avif);animation:120s linear infinite render-collage-scroll}main:after{z-index:1;backdrop-filter:blur(15px);opacity:0;background-color:#2a19281a;transition:opacity .15s}main.blur-backdrop:after,main.blur-backdrop .container{opacity:1}main.blur-backdrop .container{pointer-events:auto}.collage-button{z-index:3;border:1px solid var(--color-link);background-color:var(--color-surface-2);box-shadow:var(--box-shadow-small);color:var(--color-link);border-radius:.75rem;align-items:center;gap:.75rem;padding:.75rem 1rem;font-weight:600;display:flex;position:fixed;top:1rem;right:1rem}.container{z-index:2;background-color:var(--color-surface-1);max-width:1020px;box-shadow:var(--box-shadow);opacity:0;pointer-events:none;border-radius:1rem;margin:0 auto;transition:opacity .15s;position:relative}.container #navigation{--margin:3rem;padding-inline:calc(var(--margin) / 2);margin:1rem calc(var(--margin) / 2);background-color:var(--color-surface-2);height:3rem;box-shadow:inset var(--box-shadow-small);border-radius:8px;place-content:center space-between;align-items:center;font-size:14pt;display:flex;transition-duration:.1s!important;transition-timing-function:ease-out!important}.container #navigation .navigation-logo{color:var(--color-link);margin:0;font-weight:400!important}.container #navigation .router a{font-weight:400!important}.container header{padding-top:0}.container h1{margin-top:0;font-size:26pt}.container .subtitle{color:var(--color-link-hover);font-size:18pt}.container .alias{padding-block:0;font-size:14pt}.container .about-image{float:right;border:.3rem solid var(--color-background);width:300px;max-width:100%;height:auto;box-shadow:var(--box-shadow);border-radius:16px;margin-bottom:16px;margin-left:24px}.container .site-moved{--bar-color:#c27070;--bar-thickness:10px;background-image:linear-gradient(to top, var(--bar-color) 0px, var(--bar-color) var(--bar-thickness), #471f1f var(--bar-thickness), #471f1f80);border-bottom-right-radius:1rem;border-bottom-left-radius:1rem;margin-inline:1.5rem;padding-block:3rem;padding-inline:1.5rem}header,article{border-bottom:1px solid var(--color-border);padding:3rem}article:last-of-type{border-bottom:0}.router{--color:var(--color-link);display:flex}.router div{color:var(--color);border-color:var(--color);padding-inline:1rem}.router div a:hover{--color:var(--color-link-hover);box-shadow:inset 0 -2px}.router.left{justify-content:left}.router.left div{border-right:2px solid;padding-inline:1rem}.router.left div:first-child{padding-left:0}.router.left div:last-child{border-right:0}.router.right{justify-content:right}.router.right div{border-left:2px solid;padding-inline:1rem}.router.right div:first-child{border-left:0}.router.right div:last-child{padding-right:0}#tech-stacks .tech-container{grid-template-columns:50% 50%;gap:1rem;display:grid}#tech-stacks .tech-list{--heading-gap:1.5rem;background-color:var(--color-tech-surface);box-shadow:var(--box-shadow);border-radius:1rem;padding:1rem}#tech-stacks .tech-list h3{border-bottom:1px solid var(--color-link);padding-bottom:calc(var(--heading-gap) / 2);margin-top:0;margin-bottom:0}#tech-stacks .tech-list ul{margin-top:calc(var(--heading-gap) / 2);margin-bottom:0;padding-left:1rem}#software-projects,#render-projects{gap:1rem}#software-projects .project-container,#render-projects .project-container{background-color:var(--color-surface-2);box-shadow:var(--box-shadow);border-radius:16px;margin-block:1rem;padding:1rem}#software-projects .project-container:last-child,#render-projects .project-container:last-child{border-bottom:0}#software-projects h3,#render-projects h3{margin-top:0;padding-top:0}#software-projects .render-card,#render-projects .render-card{flex-direction:column;gap:.75rem;margin:1rem 0 0;display:flex}#software-projects .render-card img,#render-projects .render-card img{border:2px solid var(--color-border);cursor:pointer;box-shadow:0 0 0 var(--color-link);border-radius:12px;transition:all .2s ease-out}#software-projects .render-card img:hover,#render-projects .render-card img:hover{box-shadow:0 0 10px var(--color-link);transform:scale(1.01)}#software-projects .render-card .render-placeholder,#render-projects .render-card .render-placeholder{background-color:var(--color-surface-1);border:2px dashed var(--color-border);min-height:200px;color:var(--color-link);text-align:center;border-radius:12px;justify-content:center;align-items:center;padding:2rem 1rem;font-weight:500;display:flex}#software-projects .render-card figcaption,#render-projects .render-card figcaption{color:#fff;font-size:.95rem;line-height:150%}article.get-in-touch .actions{gap:1rem;margin-top:.75rem;display:flex}@media (prefers-reduced-motion:reduce){main:before{animation:none}}@keyframes render-collage-scroll{0%{background-position:0}to{background-position:-4752px}}.tgl{display:none}.tgl,.tgl:after,.tgl:before,.tgl *,.tgl :after,.tgl :before,.tgl+.tgl-btn{box-sizing:border-box}.tgl+.tgl-btn{cursor:pointer;user-select:none;transform-origin:50%;outline:0;width:4em;height:2em;display:block;position:relative;transform:scale(.9)}.tgl+.tgl-btn:after,.tgl+.tgl-btn:before{content:"";width:50%;height:100%;display:block;position:relative}.tgl+.tgl-btn:after{left:0}.tgl+.tgl-btn:before{display:none}.tgl:checked+.tgl-btn:after{left:50%}.tgl-flat+.tgl-btn{background:var(--color-surface-1);border:2px solid var(--color-link);border-radius:2em;padding:2px;transition:all .2s}.tgl-flat+.tgl-btn:after{background:var(--color-link);content:"";border-radius:1em;transition:all .2s}.tgl-flat:checked+.tgl-btn{border-color:var(--color-focus)}.tgl-flat:checked+.tgl-btn:after{background:var(--color-focus);left:50%}.tgl-flat:focus-visible+.tgl-btn{outline:3px solid var(--color-focus);outline-offset:4px}
