.nav__list{margin-right:1.5em;display:flex}.nav__list-item{margin-left:1.5em}.app .nav__hamburger{display:none}.nav__theme{margin-top:.4em}@media (width<=600px){.nav__list{z-index:2;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:fixed;inset:0}.nav__list-item{margin:.5em 0}.app .nav__hamburger{z-index:2;margin-left:.8em;display:flex}}.header{justify-content:space-between;width:95%;max-width:1100px;height:8em;margin:0 auto}@media (width<=600px){.header{height:6em}}.about{flex-direction:column;margin-top:3em}.about__name{color:var(--clr-primary)}.about__role{margin-top:1.2em}.about__desc{max-width:600px;font-size:1rem}.about__desc,.about__contact{margin-top:2.4em}.about .link--icon{color:var(--clr-primary);margin-right:.8em;padding:0;display:inline-flex}.about .link--icon:before{bottom:-.3em}.about .btn--outline{margin-right:1em}@media (width<=600px){.app .about{align-items:flex-start;margin-top:2em}}.about{flex-direction:row;justify-content:center;align-items:center;gap:2em;display:flex}.about__headshot-container{border:3px solid var(--clr-primary);border-radius:50%;width:200px;height:200px;overflow:hidden}.about__headshot{object-fit:cover;width:100%;height:100%}.about__content{flex:1}@media (width<=600px){.about{flex-direction:column}}.keen-slider:not([data-keen-slider-disabled]){-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y;-webkit-user-select:none;user-select:none;-khtml-user-select:none;align-content:flex-start;width:100%;display:flex;position:relative;overflow:hidden}.keen-slider:not([data-keen-slider-disabled]) .keen-slider__slide{width:100%;min-height:100%;position:relative;overflow:hidden}.keen-slider:not([data-keen-slider-disabled])[data-keen-slider-reverse]{flex-direction:row-reverse}.keen-slider:not([data-keen-slider-disabled])[data-keen-slider-v]{flex-wrap:wrap}#background-cover{width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--clr-fg);z-index:1000;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:default;background-color:#00000080;margin:0;padding:0;position:fixed;inset:0}#project-detail{background-color:var(--clr-bg-alt);width:95%;max-width:1100px;height:95%;max-height:820px;box-shadow:var(--shadow);cursor:default;border-radius:14px;flex-direction:column;display:flex;position:relative;overflow:hidden}#title-bar{background-color:var(--clr-bg-alt);color:var(--clr-fg);border-bottom:1px solid #00000014;justify-content:space-between;align-items:center;gap:1rem;padding:16px 20px;display:flex}.dark #title-bar{border-bottom-color:#ffffff14}.dark #project-title{color:var(--clr-primary)}#title-bar h3{margin:0;font-size:1.25rem}body.no-scroll{overflow:hidden}.project-content{flex-direction:column;flex:1;gap:0;min-height:0;display:flex;overflow-y:auto}.image-slider{background-color:var(--clr-bg);flex:none;width:100%;min-width:0;height:min(42dvh,360px);position:relative;overflow:hidden}.navigation-wrapper{height:100%;position:relative}.project-gallery{height:100%}.navigation-wrapper:has(>.project-gallery:focus-visible):after{content:"";border:2px solid var(--clr-primary);pointer-events:none;z-index:3;position:absolute;inset:2px}.project-gallery__slide{background-color:var(--clr-bg);justify-content:center;align-items:center;display:flex}.slide-image{object-fit:contain;max-width:100%;max-height:100%}.project-info{flex:1;padding:20px}.project-details-description{margin:0;font-size:1rem;line-height:1.7}.dots{z-index:2;background:#0000008c;border-radius:999px;justify-content:center;gap:8px;padding:10px 12px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.dot{cursor:pointer;background:#b9b9b9;border:none;border-radius:50%;width:8px;height:8px;transition:transform .15s,background-color .2s}.dot.active{background:var(--clr-primary);transform:scale(1.2)}.arrow{cursor:pointer;z-index:2;-webkit-backdrop-filter:saturate(140%)blur(2px);backdrop-filter:saturate(140%)blur(2px);background-color:#00000073;border-radius:999px;place-items:center;width:44px;height:44px;transition:background-color .2s,transform .15s,opacity .2s;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 8px 20px #00000040}.light .arrow{background-color:#00000059}.arrow:hover{background-color:#0009;transform:translateY(-50%)scale(1.05)}.arrow:active{transform:translateY(-50%)scale(.98)}.arrow--left{left:12px}.arrow--right{right:12px}.arrow--disabled{opacity:.5;pointer-events:none}.arrow{color:#fff}.arrow path,.arrow polyline{stroke:currentColor;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;fill:none}@media (width>=768px){.project-content{flex-direction:row;overflow-y:hidden}.image-slider{flex:0 0 60%;height:100%}.project-info{flex:0 0 40%;overflow-y:auto}}#background-cover[open]{justify-content:center;align-items:center;display:flex}#background-cover::backdrop{background:0 0}.arrow svg{background-color:#0000}.project-gallery[data-gallery-renderer=native-scroll]{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;touch-action:auto;display:flex;overflow:auto hidden}.project-gallery[data-gallery-renderer=native-scroll]>.project-gallery__slide{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 100%;min-width:100%}#close-button[data-quiet-initial-focus]:focus-visible{outline:none}.project_details_wrapper{grid-template-rows:subgrid;grid-row:span 2;row-gap:0;min-width:0;display:grid}.project{text-align:center;box-shadow:var(--shadow);cursor:pointer;background-color:var(--clr-bg-alt);grid-template-rows:subgrid;grid-row:span 2;row-gap:0;margin:0;padding:2em;display:grid}.project__body{flex-direction:column;min-width:0;display:flex}.project>h3{color:var(--clr-primary)}.project__thumbnail{object-fit:cover;width:100%;height:200px;margin-top:1em}.project__description{margin-top:1em}.project__stack{flex-wrap:wrap;justify-content:center;margin:1.2em 0;display:flex}.project__stack-item{color:var(--clr-muted,var(--clr-fg-alt));margin:.5em;font-size:.8rem;font-weight:500}.project .link--icon{margin-left:.5em}.project__action{border-top:1px solid color-mix(in srgb, var(--clr-fg) 15%, transparent);color:var(--clr-primary);justify-content:space-between;align-items:center;gap:1em;margin-top:auto;padding-top:1em;font-size:.875rem;font-weight:500;display:flex}.project__action svg{flex-shrink:0;transition:transform .2s}.project:is(:hover,:focus-visible) .project__action svg{transform:translate(3px)}.project:is(:hover,:focus-visible) .project__action>span{text-underline-offset:4px;text-decoration:underline}.project--quiet-return:focus-visible{outline:none}.projects__grid{grid-gap:2em;grid-template-columns:repeat(auto-fit,minmax(min(18em,100%),1fr));max-width:1100px;margin:0 auto;display:grid}.skills__field{isolation:isolate;clip-path:inset(-80px 0);background:0 0;max-width:1060px;height:600px;margin:1.5rem auto 0;position:relative}.skills__field:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(ellipse at center, color-mix(in srgb, var(--clr-primary) 6%, transparent), transparent 68%);width:min(760px,110%);height:540px;translate:-50% -50%;transform:translate(var(--glow-x,50%), var(--glow-y,300px));opacity:.8;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .18s;position:absolute;top:0;left:0}.skills--pinned .skills__field:not(.skills__field--direct):before{transition:none}:is(.skills--static .skills__field,.skills__field--list):before{display:none}.skill-node{z-index:1;--highlight:1;--expansion:0;translate:-50% -50%;transform:translate(var(--x,0px), var(--y,0px));transition:transform .32s cubic-bezier(.2,.8,.2,1);position:absolute;top:0;left:0}.skill-node--active{--expansion:1;z-index:3}.skill-node__content{isolation:isolate;transform:translate3d(var(--pull-x,0px), var(--pull-y,0px), 0) scale(calc(1 + var(--proximity,0) * .035));transition:transform .18s ease-out;position:relative}.skill-node__badge{background:var(--clr-bg-alt);color:var(--clr-fg);white-space:nowrap;border:0;border-radius:0;justify-content:center;align-items:center;gap:.6rem;padding:.8em 1.4em;font-size:.9rem;font-weight:500;transition:background-color .18s,color .18s;display:flex;box-shadow:0 3px 3px #00000026}.skill-node__button{z-index:1;-webkit-tap-highlight-color:transparent;touch-action:manipulation;position:relative}.skill-node--active .skill-node__badge{color:color-mix(in srgb, var(--clr-primary) calc(var(--highlight) * 100%), var(--clr-fg));background:color-mix(in srgb, var(--clr-primary) calc(var(--highlight) * 10%), var(--clr-bg-alt))}.skill-node__tools{opacity:0;visibility:hidden;width:0;transition:opacity .18s,visibility .22s;position:absolute;top:50%;left:50%}.skill-node--active .skill-node__tools{opacity:var(--expansion);visibility:visible}.skill-node__branches{pointer-events:none;z-index:-1;width:1px;height:1px;stroke:color-mix(in srgb, var(--clr-primary) 35%, transparent);stroke-width:1px;position:absolute;overflow:visible}.skill-node--active .skill-node__badge{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--clr-primary) 45%, transparent)}.skill-node__tools ul{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.skill-node__tools li{background:color-mix(in srgb, var(--clr-primary) 7%, var(--clr-bg-alt));color:var(--clr-primary);white-space:nowrap;opacity:0;translate:-50% -50%;transform:translate(var(--child-x,0px), var(--child-y,0px)) scale(calc(.6 + var(--expansion) * .4));padding:.8em 1.4em;font-size:.8rem;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .18s;position:absolute;top:0;left:0;box-shadow:0 3px 3px #0000001f}.skill-node--active .skill-node__tools li{opacity:1}.skills{position:relative}.skills__field{width:100%}.skills--compact .skills__field{height:700px;margin:0}.skills--pinned,.skills--pinned .skills__stage{height:var(--stage-height,620px)}.skills--pinned .skills__viewport{height:var(--view-height,526px);overflow:clip;-webkit-mask-image:linear-gradient(#0000,#000 5% 95%,#0000);mask-image:linear-gradient(#0000,#000 5% 95%,#0000)}.skills--pinned .skills__field{transform:translateY(var(--camera-y,0px));transition:transform .24s cubic-bezier(.16,1,.3,1)}.skills__stop{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;left:50%}.skills__progress{background:0 0;justify-content:center;gap:5px;padding-top:20px;display:flex}.skills__progress span{background:var(--clr-fg);opacity:.23;width:14px;height:2px;transition:opacity .18s}.skills__progress .is-current{background:var(--clr-primary);opacity:1}:is(.skills--static .skills__field,.skills__field--list){background:0 0;flex-wrap:wrap;justify-content:center;gap:12px;height:auto;display:flex}:is(.skills--static,.skills__field--list) .skill-node{position:relative;transform:none}:is(.skills--static,.skills__field--list) .skill-node__content{transform:none}:is(.skills--static,.skills__field--list) .skill-node__tools{width:auto;display:none;position:static}:is(.skills--static,.skills__field--list) .skill-node--active .skill-node__tools{margin-top:12px;display:block}:is(.skills--static,.skills__field--list) .skill-node__tools li{position:static;transform:none}:is(.skills--static,.skills__field--list) .skill-node__branches{display:none}@media (prefers-reduced-motion:reduce){.skill-node__content{transform:none}}.skills-scene,.skills-scene__content{display:flow-root;position:relative}.skills-scene--pinned{height:calc(var(--scene-content-height,0px) + var(--scroll-distance,0px))}.skills-scene--pinned>.skills-scene__content{top:var(--scene-top,0px);position:sticky}.skills--pinned .skills__field:not(.skills__field--direct),.skills--pinned .skills__field:not(.skills__field--direct) :is(.skill-node,.skill-node__content,.skill-node__badge,.skill-node__tools,.skill-node__tools li){transition:none}.skills--pinned .skill-node--active{--highlight:var(--reveal,0);--expansion:var(--reveal,0)}.skills__progress[data-autoplay] .is-current{position:relative;overflow:hidden}.skills__progress[data-running=true] .is-current{background:color-mix(in srgb, var(--clr-primary) 30%, transparent)}.skills__progress[data-autoplay] .is-current:after{content:"";background:var(--clr-primary);transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.skills__progress[data-running=true] .is-current:after{animation:skill-dwell var(--skill-dwell) linear both}@keyframes skill-dwell{to{transform:scaleX(1)}}.skills--pinned .skills__field--direct{transition:transform .32s cubic-bezier(.2,.8,.2,1)}html.skills-scroll-snap{scroll-snap-type:y proximity}.skills__stop{scroll-snap-align:center;scroll-snap-stop:normal}.skills__viewport-measure{visibility:hidden;pointer-events:none;width:0;height:100svh;position:fixed;top:0;left:0}.scroll-top{background-color:#0000;position:fixed;bottom:2em;right:4em}@media (width<=900px){.scroll-top{display:none}}.contact{flex-direction:column}.footer{text-align:center;margin-top:2em;padding:1em 0}.footer__link{color:var(--clr-fg);font-size:.9rem;font-weight:600}@media (width<=600px){.footer{margin-top:1em;padding:2em}}.app{color:var(--clr-fg);background-color:var(--clr-bg);font-family:Poppins,sans-serif;line-height:1.5}@supports (scrollbar-width:auto){html.light{scrollbar-width:thin;scrollbar-color:#999 #fcfcfc}html.dark{scrollbar-width:thin;scrollbar-color:#566174 var(--clr-bg)}}@supports selector(::-webkit-scrollbar){::-webkit-scrollbar{width:12px}html.light ::-webkit-scrollbar-track{background:#fcfcfc}html.light ::-webkit-scrollbar-thumb{background:#999;border-radius:6px}html.light ::-webkit-scrollbar-thumb:hover{background:#777}html.dark ::-webkit-scrollbar-track{background:var(--clr-bg)}html.dark ::-webkit-scrollbar-thumb{background:#566174;border-radius:6px}html.dark ::-webkit-scrollbar-thumb:hover{background:#78859b}}.light{--clr-bg:#fcfcfc;--clr-bg-alt:#fff;--clr-fg:#555;--clr-fg-alt:#444;--clr-primary:#2978b5;--shadow:#64646f33 0px 7px 29px 0px}.dark{--clr-bg:#171b24;--clr-bg-alt:#202631;--clr-fg:#d9dee8;--clr-fg-alt:#f1f4fa;--clr-muted:#a2acbd;--clr-primary:#abbcff;--shadow:#0000002e 0px 8px 24px, #abbcdc1f 0px 0px 0px 1px}main{width:95%;max-width:1100px;margin:0 auto}.section{margin-top:5em}.section__title{text-align:center;text-transform:uppercase;margin-bottom:1em}.center{align-items:center;display:flex}.link{color:var(--clr-primary);padding:0 0 .3em;position:relative}.link:hover{color:var(--clr-primary)}.link:before{content:"";background-color:var(--clr-primary);width:0%;height:.2em;transition:width .2s ease-in;display:inline;position:absolute;bottom:0}.link:hover:before,.link:focus:before{width:100%}.link--nav{color:var(--clr-fg);text-transform:lowercase;font-weight:500}.link--icon{color:var(--clr-fg)}.btn{cursor:pointer;padding:.8em 1.4em;font-size:.9rem;font-weight:500;transition:transform .2s ease-in-out;display:block}.btn--outline{color:var(--clr-primary);border:2px solid var(--clr-primary);z-index:1;position:relative;overflow:hidden}.btn--outline:hover,.btn--outline:focus{color:var(--clr-bg)}.btn--outline:before{content:"";background-color:var(--clr-primary);z-index:-1;transition:right .2s ease-in-out;position:absolute;inset:0 100% 0 0}.btn--outline:hover:before,.btn--outline:focus:before{right:0}.btn--plain{text-transform:initial;background-color:var(--clr-bg-alt);border:0;box-shadow:0 3px 3px #00000026}.btn--plain:hover{transform:translateY(-4px)}.btn--icon{padding:0}.btn--icon:hover,.btn--icon:focus{color:var(--clr-primary)}.btn--icon:active{transform:translateY(-5px)}@media (width<=600px){.section{margin-top:4em}}*{background-color:inherit;color:inherit;font-family:inherit;font-size:inherit;box-shadow:none;box-sizing:border-box;border:0;margin:0;padding:0}html{scroll-behavior:smooth}h1,h2,h3,h4{color:var(--clr-fg-alt);line-height:1.2}h1{font-size:4rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.3rem}ul{list-style-type:none}a{text-decoration:none}button{cursor:pointer}@media (width<=900px){h1{font-size:2.6rem}}:focus-visible{outline:2px solid var(--clr-primary);outline-offset:4px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
