@import "https://fonts.googleapis.com/css2?family=Fira+Code:wght@400..500&family=Rubik:ital,wght@0,300..700;1,300..700&display=swap";*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.15}body{margin:0}button{appearance:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;cursor:pointer;background:0 0;border:0;border-radius:0;margin:0;padding:0}button:disabled{cursor:default}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}a{color:inherit;text-decoration:none}hr{border:0;margin-block:0;margin-inline:0}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:root{--font-family-sans:Rubik, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-family-mono:"Fira Code", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace;--grey-10:oklch(10% 0 0);--grey-20:oklch(20% 0 0);--grey-30:oklch(30% 0 0);--grey-40:oklch(40% 0 0);--grey-50:oklch(50% 0 0);--grey-60:oklch(60% 0 0);--grey-70:oklch(70% 0 0);--grey-80:oklch(80% 0 0);--grey-90:oklch(90% 0 0);--grey-95:oklch(95% 0 0);--grey-98:oklch(98% 0 0);--grey-99:oklch(99% 0 0);--yellow-10:oklch(10% .02 96.4);--yellow-20:oklch(20% .041 96.4);--yellow-30:oklch(30% .061 96.4);--yellow-40:oklch(40% .082 96.4);--yellow-50:oklch(50% .102 96.4);--yellow-60:oklch(60% .122 96.4);--yellow-70:oklch(70% .143 96.4);--yellow-80:oklch(80% .163 96.4);--yellow-90:oklch(90% .17 96.4);--yellow-95:oklch(95% .085 96.4);--yellow-98:oklch(98% .035 96.4);--yellow-99:oklch(99% .017 96.4);--orange-10:oklch(10% .023 62);--orange-20:oklch(20% .046 62);--orange-30:oklch(30% .069 62);--orange-40:oklch(40% .092 62);--orange-50:oklch(50% .115 62);--orange-60:oklch(60% .141 62);--orange-70:oklch(70% .161 62);--orange-80:oklch(80% .144 62);--orange-90:oklch(90% .067 62);--orange-95:oklch(95% .032 62);--orange-98:oklch(98% .013 62);--orange-99:oklch(99% .007 62);--red-10:oklch(10% .038 32);--red-20:oklch(20% .076 32);--red-30:oklch(30% .114 32);--red-40:oklch(40% .152 32);--red-50:oklch(50% .189 32);--red-60:oklch(60% .227 32);--red-70:oklch(70% .192 32);--red-80:oklch(80% .115 32);--red-90:oklch(90% .053 32);--red-95:oklch(95% .025 32);--red-98:oklch(98% .01 32);--red-99:oklch(99% .005 32);--pink-10:oklch(10% .041 12);--pink-20:oklch(20% .08 12);--pink-30:oklch(30% .12 12);--pink-40:oklch(40% .16 12);--pink-50:oklch(50% .2 12);--pink-60:oklch(60% .24 12);--pink-70:oklch(70% .196 12);--pink-80:oklch(80% .117 12);--pink-90:oklch(90% .053 12);--pink-95:oklch(95% .025 12);--pink-98:oklch(98% .01 12);--pink-99:oklch(99% .005 12);--indigo-10:oklch(10% .059 284.6);--indigo-20:oklch(20% .117 284.6);--indigo-30:oklch(30% .176 284.6);--indigo-40:oklch(40% .234 284.6);--indigo-50:oklch(50% .293 284.6);--indigo-60:oklch(60% .227 284.6);--indigo-70:oklch(70% .164 284.6);--indigo-80:oklch(80% .105 284.6);--indigo-90:oklch(90% .05 284.6);--indigo-95:oklch(95% .025 284.6);--indigo-98:oklch(98% .01 284.6);--indigo-99:oklch(99% .005 284.6);--teal-10:oklch(10% .024 157.5);--teal-20:oklch(20% .047 157.5);--teal-30:oklch(30% .071 157.5);--teal-40:oklch(40% .094 157.5);--teal-50:oklch(50% .118 157.5);--teal-60:oklch(60% .142 157.5);--teal-70:oklch(70% .165 157.5);--teal-80:oklch(80% .189 157.5);--teal-90:oklch(90% .168 157.5);--teal-95:oklch(95% .078 157.5);--teal-98:oklch(98% .03 157.5);--teal-99:oklch(99% .015 157.5);--color-text-primary:var(--grey-20);--color-background:var(--grey-98);--color-surface:var(--grey-98);--color-on-surface:var(--grey-20);--color-card:var(--grey-99);--color-on-card:var(--grey-20);--color-primary:var(--grey-20);--color-on-primary:var(--grey-95);--color-secondary:var(--yellow-90);--color-on-secondary:var(--grey-20);--color-btn-primary:var(--grey-99);--color-on-btn-primary:var(--grey-20);--color-btn-primary-hover:var(--grey-95);--color-btn-primary-active:var(--yellow-90);--color-disabled:var(--grey-98);--color-on-disabled:var(--grey-80);--color-border:var(--grey-20);--color-focus:var(--indigo-50);--color-shadow:var(--grey-10);--color-scrim:color-mix(in oklch, var(--color-shadow) 55%, transparent);--padding-page:2rem;--padding-page-mobile:1rem;--font-size-root:16px;--font-size-root-lg:18px;--font-size-root-xxl:20px;--border-thin:1px solid var(--color-border);--border:2px solid var(--color-border);--border-thick:8px solid var(--color-border);--outline-focus:2px solid var(--color-focus);--outline-offset-focus:2px;--border-radius-sm:.5rem;--border-radius-md:.75rem;--border-radius-lg:1.5rem;--border-radius-pill:9999px;--shadow-hard:0 10px var(--color-border);--shadow-soft:color-mix(in oklch, var(--color-shadow) 20%, transparent) 0 0 6px 0, color-mix(in oklch, var(--color-shadow) 20%, transparent) 0 4px 14px 0;--shadow-array:var(--color-border) 0 0 0 2px, var(--color-card) 12px -12px 0 -2px, var(--color-border) 12px -12px, var(--color-card) 22px -22px 0 -2px, var(--color-border) 22px -22px, var(--color-card) 30px -30px 0 -3px;--transition-fast:.15s ease;--transition-medium:.2s ease;--entrance-duration:1.4s;--entrance-ease:cubic-bezier(.33, 1, .68, 1);--entrance-delay:.1s;--transition-logo:.7s ease-in-out;--breakpoint-sm:640px;--breakpoint-md:800px;--breakpoint-lg:1200px;--breakpoint-xl:1600px;--breakpoint-xxl:2000px}@media (width<=800px){:root{--padding-page:var(--padding-page-mobile)}}:root{--z-cursor:10000;--z-mask:9000;--z-alert:4000;--z-modal:3000;--z-nav:2000;--z-card:1000;--z-canvas:0}html{color:var(--color-text-primary);background:var(--color-background);font-size:var(--font-size-root);scrollbar-gutter:stable}@media screen and (width>=1200px){html{font-size:var(--font-size-root-lg)}}@media screen and (width>=2000px){html{font-size:var(--font-size-root-xxl)}}body{font-family:var(--font-family-sans);letter-spacing:0;background:var(--color-background);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;min-height:100dvh;margin:0;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:400;line-height:1.3}code,kbd,samp,pre{font-family:var(--font-family-mono);letter-spacing:0;margin:0;font-size:clamp(.875rem,.95vw,1rem);font-weight:400;line-height:1.3}h1{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(3rem,5vw,3.75rem);font-weight:500;line-height:1.2}h2{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(2.5rem,4vw,3.125rem);font-weight:500;line-height:1.2}h3{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(2rem,3.2vw,2.5rem);font-weight:500;line-height:1.3}h4{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1.75rem,2.6vw,2.125rem);font-weight:500;line-height:1.3}h5{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1.5rem,2.2vw,1.875rem);font-weight:600;line-height:1.3}h6{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1.25rem,1.9vw,1.5rem);font-weight:600;line-height:1.3}p{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:400;line-height:1.3}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{font-family:var(--font-family-mono);letter-spacing:.078125rem;text-transform:uppercase;z-index:var(--z-cursor);color:var(--color-on-primary);background:var(--color-primary);border-radius:var(--border-radius-sm);transition:transform var(--transition-fast);margin:0;padding:.75rem 1rem;font-size:clamp(.875rem,.95vw,1rem);font-weight:500;position:fixed;top:.5rem;left:.5rem;transform:translateY(calc(-100% - 1rem))}.skip-link:focus{transform:translateY(0)}:where(a,button,input,textarea,select,[tabindex]):focus-visible{outline:var(--outline-focus);outline-offset:var(--outline-offset-focus)}@keyframes entrance-fade-in{0%{opacity:0}to{opacity:1}}.entrance-fade{animation:entrance-fade-in var(--entrance-duration) var(--entrance-ease) var(--entrance-delay) both}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:clip}.lenis.lenis-smooth iframe{pointer-events:none}.site-header{z-index:var(--z-nav);pointer-events:none;justify-content:center;padding-block-start:var(--padding-page);display:flex;position:fixed;inset-block-start:0;inset-inline:0}.site-header-logo{--site-logo-size:1.75rem;pointer-events:auto;color:var(--site-logo-color,var(--color-text-primary));transition:transform var(--transition-medium), color var(--transition-logo);display:block}.site-header-logo:hover{transform:scale(1.25)rotate(4deg)}@media screen and (width>=800px){.site-header-logo{--site-logo-size:2.25rem}}.site-header-mark{block-size:var(--site-logo-size);aspect-ratio:830/800;inline-size:auto;display:block}:root{--site-logo-on-light:var(--color-text-primary);--site-logo-on-dark:var(--color-on-primary);--site-footer-inset:clamp(1.5rem, 4vw, 4rem);--site-footer-peek:5rem;--site-footer-height:10rem}.site-footer{z-index:var(--z-nav);padding-inline:var(--site-footer-inset);pointer-events:none;justify-content:center;display:flex;position:fixed;inset-block-end:0;inset-inline:0}.site-footer-panel{pointer-events:auto;inline-size:100%;block-size:var(--site-footer-height);border:var(--border-thick);background-color:var(--color-card);will-change:transform;border-block-end:none;border-start-start-radius:var(--border-radius-lg);border-start-end-radius:var(--border-radius-lg);justify-content:center;align-items:flex-start;padding-block-start:calc(var(--site-footer-peek) / 3);transition:transform .25s cubic-bezier(.33,1,.68,1);display:flex;transform:translateY(100%)}.site-footer.is-revealed .site-footer-panel{transform:translateY(calc(100% - var(--site-footer-peek)))}.site-footer-links{align-items:center;gap:clamp(1.5rem,4vw,2.5rem);margin:0;padding:0;list-style:none;display:flex}.site-footer-link{color:var(--color-on-card);transition:transform var(--transition-medium);display:block}.site-footer-link:hover{transform:scale(1.15)rotate(4deg)}.site-footer-icon{block-size:var(--site-footer-icon-size,1.375rem);inline-size:auto;display:block}.site-footer-icon--elio{aspect-ratio:180/192}.site-footer-icon--linkedin,.site-footer-icon--github{--site-footer-icon-size:1.5rem;aspect-ratio:1}.intro{z-index:1;background:0 0;justify-content:center;align-items:center;min-height:100svh;padding:clamp(1rem,2.5vw,2.5rem);display:flex;position:relative}.intro-heading{font-family:var(--font-family-sans);letter-spacing:0;max-width:20ch;margin:0;font-size:clamp(3rem,5vw,3.75rem);font-weight:500;line-height:1.2}.projects{z-index:1;position:relative}.project-backdrops{z-index:var(--z-canvas);pointer-events:none;position:fixed;inset:0;overflow:hidden}.project-backdrop{opacity:0;background-color:var(--color-background);will-change:opacity;position:absolute;inset:0}.project-field{position:absolute;inset:0;overflow:hidden}.project-field-bubble{opacity:var(--symbol-opacity,1);will-change:transform;position:absolute;inset-block-start:0}.project-field-mark{width:var(--symbol-size,8vh);height:auto;display:block}.project{background:0 0;position:relative}.project:last-child{padding-block-end:calc(var(--site-footer-peek) + clamp(1.5rem, 4vw, 4rem) * 2)}@media screen and (width>=1200px){.project:last-child{padding-block-end:calc(var(--site-footer-peek) + 20svh + clamp(1.5rem, 4vw, 4rem))}}.project-stage{--stage-inset:max(clamp(1.5rem, 4vw, 4rem), 5.5rem);--stage-padding:clamp(1.5rem, 4vw, 4rem);--intro-max-height:calc(100svh - var(--stage-padding) * 2);z-index:1;padding:var(--stage-padding);align-content:center;gap:clamp(2rem,5vw,4rem);min-height:100svh;padding-block-start:var(--stage-inset);display:grid;position:relative}.project-intro-rail{display:contents}.project-intro{z-index:var(--z-card);width:100%;max-width:38rem;max-height:var(--intro-max-height);color:var(--color-on-card);background:var(--color-card);border:var(--border-thick);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-hard);flex-direction:column;justify-content:center;padding:2.5rem 2.25rem;display:flex;position:relative}.project-intro.project-intro--uncapped{max-height:none}.project-intro-header{margin-bottom:2rem}.project-intro-title{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(2rem,3.2vw,2.5rem);font-weight:500;line-height:1.3}.project-intro-subtitle{font-family:var(--font-family-sans);letter-spacing:0;margin:.5rem 0 0;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:600;line-height:1.3}.project-intro-body{font-family:var(--font-family-sans);letter-spacing:0;flex-direction:column;min-height:0;margin:0 0 1.5rem;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:400;line-height:1.3;display:flex;overflow:hidden}.project-intro-body,.project-intro-page{gap:.75em}.project-intro-page{flex-direction:column;flex:none;display:flex}.project-intro-page[hidden]{display:none}.project-intro-pager{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.project-intro-pager[hidden]{display:none}.project-intro-pager-button{color:var(--color-on-card);transition:transform var(--transition-fast);flex:none;justify-content:center;align-items:center;padding:.25rem;display:inline-flex}.project-intro-pager-button:hover:not(:disabled){transform:scale(1.12)}.project-intro-pager-button:active:not(:disabled){transform:scale(.96)}.project-intro-pager-button:disabled{color:var(--color-on-disabled)}.project-intro-pager-icon,svg.project-intro-pager-icon{flex:none;width:1.75rem;height:1.75rem}.project-intro-pager-dots{align-items:center;gap:.45rem;display:flex}.project-intro-pager-dot{background:color-mix(in oklch, var(--color-border) 30%, transparent);border-radius:var(--border-radius-pill);width:.55rem;height:.55rem;transition:width var(--transition-fast), background var(--transition-fast);flex:none}.project-intro-pager-dot:hover{background:color-mix(in oklch, var(--color-border) 60%, transparent)}.project-intro-pager-dot.is-current{background:var(--color-border);width:1.75rem}.project-intro-overline{font-family:var(--font-family-sans);letter-spacing:.09375rem;text-transform:uppercase;margin:0;font-size:clamp(.625rem,.75vw,.75rem);font-weight:400;line-height:1.3}.project-intro-link{font-family:var(--font-family-sans);letter-spacing:0;align-items:center;gap:.35rem;margin:.35rem 0 0;font-size:clamp(1.25rem,1.9vw,1.5rem);font-weight:600;line-height:1.3;text-decoration:none;display:inline-flex}.project-intro-link-label{position:relative}.project-intro-link-label:after{content:"";border-radius:var(--border-radius-pill);transform-origin:100%;height:.14em;transition:transform var(--transition-medium);background:currentColor;position:absolute;inset-block-end:-.14em;inset-inline:0;transform:scaleX(0)}.project-intro-link:hover .project-intro-link-label:after,.project-intro-link:focus-visible .project-intro-link-label:after{transform-origin:0;transform:scaleX(1)}.project-intro-link-icon,svg.project-intro-link-icon{flex:none;width:.85em;height:.85em}.project-deck{z-index:var(--z-card);flex-direction:column;gap:1.5rem;display:flex;position:relative}.project-card{aspect-ratio:var(--card-aspect,1.3333);width:100%;color:var(--color-on-card);background:var(--color-card);border:var(--border);border-radius:var(--border-radius-md);margin:0;position:relative;overflow:hidden}.project-card-media{object-fit:cover;width:100%;height:100%;display:block}.project-card-embed{border:0}.project-card-grid{grid-template-columns:repeat(var(--grid-columns,2), 1fr);gap:clamp(.5rem,1.5vw,1rem);height:100%;padding:clamp(.5rem,1.5vw,1rem);display:grid}.project-card-grid-item{object-fit:contain;border-radius:var(--border-radius-sm);width:100%;min-width:0;height:100%;min-height:0;display:block}.project-card-text{flex-direction:column;justify-content:center;gap:.6rem;height:100%;padding:clamp(1.25rem,2.5vw,2rem);display:flex}.project-card-heading{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1.25rem,1.9vw,1.5rem);font-weight:600;line-height:1.3}.project-card-body{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:400;line-height:1.3}.project-card-caption{font-family:var(--font-family-sans);letter-spacing:0;color:var(--color-on-primary);background:var(--color-scrim);margin:0;padding:.6rem .9rem;font-size:clamp(.75rem,.85vw,.875rem);font-weight:400;line-height:1.3;position:absolute;inset-block-end:0;inset-inline:0}@media screen and (width>=1200px){.project-stage{grid-template-columns:minmax(25rem,30vw) 1fr;align-content:start;align-items:start}.project-intro-rail{height:calc(100svh - var(--stage-padding) * 2);align-items:flex-start;margin-block-start:calc(var(--stage-padding) - var(--stage-inset));display:flex;position:sticky;inset-block-start:var(--stage-padding)}.project-intro{width:100%;max-width:none;max-height:100%}.project-intro-title{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(2.5rem,4vw,3.125rem);font-weight:500;line-height:1.2}.project-deck{gap:clamp(2rem,6svh,5rem);padding-block-end:20svh}}.not-found{min-block-size:100svh;padding-inline:var(--padding-page);padding-block:calc(var(--padding-page) * 2 + 2.25rem) var(--site-footer-peek);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(1.5rem,3vw,2rem);display:flex}.not-found-heading{font-family:var(--font-family-sans);letter-spacing:0;text-wrap:balance;margin:0;font-size:clamp(3rem,5vw,3.75rem);font-weight:500;line-height:1.2}.not-found-message{font-family:var(--font-family-sans);letter-spacing:0;margin:0;font-size:clamp(1rem,1.1vw,1.125rem);font-weight:400;line-height:1.3}.not-found-action{font-family:var(--font-family-mono);letter-spacing:.078125rem;text-transform:uppercase;color:var(--color-on-primary);background:var(--color-primary);border-radius:var(--border-radius-sm);transition:opacity var(--transition-fast);margin:0;padding:.75rem 1rem;font-size:clamp(.875rem,.95vw,1rem);font-weight:500}.not-found-action:hover{opacity:.8}
