*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--background: 0 0% 100%;--foreground: 0 0% 9%;--muted: 240 4.8% 95.9%;--muted-foreground: 240 3.8% 46.1%;--accent: 240 4.8% 95.9%;--accent-foreground: 240 5.9% 10%;--border: 240 5.9% 90%;--ring: 262.1 83.3% 57.8%;--primary: 262.1 83.3% 57.8%;--primary-foreground: 0 0% 100%;--contact-zinc-label: 240 5% 26%;--contact-input-border: 240 5% 84%;--contact-input-bg: 0 0% 100%;--contact-input-fg: 240 10% 4%;--contact-glass-bg: 0 0% 100%;--contact-glass-border: 240 5% 84%;--gradient-submit-from: 217 91% 60%;--gradient-submit-to: 258 58% 58%;--gradient-submit-shadow: 79 70% 229;--gradient-cta-from: 221 83% 53%;--gradient-cta-to: 239 84% 67%;--social-linkedin: 201 100% 35%;--social-github: 0 0% 0%;--social-instagram-from: 28 89% 56%;--social-instagram-via: 340 75% 55%;--social-instagram-to: 273 51% 47%;--btn-github: 210 11% 18%;--btn-demo: 221 83% 53%;--btn-demo-hover: 224 76% 48%;--footer-linkedin-hover: 210 90% 48%;--footer-github-hover: 210 11% 15%;--footer-github-icon-dark: 210 11% 15%;--nav-shell-bg: 0 0% 100%;--nav-shell-fg: 0 0% 9%;--nav-shell-border: 240 5% 84%;--nav-hover-bg: 240 5% 96%;--nav-panel-bg: 0 0% 100%;--nav-panel-border: 240 5% 84%;--nav-link-active: 221 83% 53%;--modal-surface: 0 0% 100%;--modal-heading: 240 4% 36%;--modal-body: 240 6% 10%;--modal-muted: 240 5% 26%;--modal-hr: 240 5% 90%;--modal-gallery-bg: 240 5% 98%}.dark{--background: 0 0% 4%;--foreground: 0 0% 96%;--muted: 240 3.7% 15.9%;--muted-foreground: 240 5% 64.9%;--accent: 240 3.7% 15.9%;--accent-foreground: 0 0% 98%;--border: 240 3.7% 26%;--ring: 263.4 70% 50.4%;--primary: 263.4 70% 50.4%;--primary-foreground: 0 0% 100%;--contact-zinc-label: 240 5% 84%;--contact-input-border: 240 4% 26%;--contact-input-bg: 240 6% 10%;--contact-input-fg: 0 0% 98%;--contact-glass-bg: 240 6% 10%;--contact-glass-border: 0 0% 100%;--nav-shell-bg: 240 6% 10%;--nav-shell-fg: 0 0% 98%;--nav-shell-border: 0 0% 100%;--nav-hover-bg: 240 4% 16%;--nav-panel-bg: 240 6% 10%;--nav-panel-border: 0 0% 100%;--nav-link-active: 213 94% 68%;--modal-surface: 240 6% 10%;--modal-heading: 240 5% 84%;--modal-body: 0 0% 98%;--modal-muted: 240 5% 84%;--modal-hr: 240 4% 26%;--modal-gallery-bg: 240 4% 16%}html{scroll-behavior:smooth;font-family:var(--font-sans)}body{--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout__navbar-wrap{display:flex;justify-content:center}.app-layout__page-container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.app-section{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.app-section{padding-top:4rem;padding-bottom:4rem}}.app-section__inner{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.app-section__header{margin-bottom:2rem}.app-section__title{font-size:1.5rem;line-height:2rem;font-weight:700;letter-spacing:-.025em}@media(min-width:768px){.app-section__title{font-size:1.875rem;line-height:2.25rem}}.app-section__subtitle{margin-top:.5rem;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.hero{position:relative;padding-top:2rem;padding-bottom:2rem}@media(min-width:768px){.hero{padding-top:4rem;padding-bottom:4rem}}.hero__layout{margin-left:auto;margin-right:auto;display:flex;max-width:72rem;flex-direction:column;gap:2.5rem;padding-left:1rem;padding-right:1rem}@media(min-width:768px){.hero__layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center}}.hero__media-col{order:1;display:flex;justify-content:center}@media(min-width:768px){.hero__media-col{order:2;justify-content:flex-end}}.hero__img{height:12rem;width:12rem;border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));-o-object-fit:cover;object-fit:cover;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}@media(min-width:640px){.hero__img{height:14rem;width:14rem}}@media(min-width:768px){.hero__img{height:480px;width:380px;border-radius:1rem}}@media(min-width:1024px){.hero__img{height:520px;width:420px}}.hero__content{order:2;display:flex;flex-direction:column;justify-content:center;text-align:center}@media(min-width:768px){.hero__content{order:1;text-align:left}}.hero__heading{font-size:2.25rem;line-height:2.5rem;font-weight:800;line-height:1.25;letter-spacing:-.025em}@media(min-width:768px){.hero__heading{font-size:3.75rem;line-height:1}}.hero__typewriter{font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25;letter-spacing:-.025em}@media(min-width:768px){.hero__typewriter{font-size:2.25rem;line-height:2.5rem}}.hero__lead{margin-left:auto;margin-right:auto;margin-top:1rem;max-width:42rem;font-size:1.125rem;line-height:1.75rem;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}@media(min-width:768px){.hero__lead{margin-left:0;margin-right:0;padding-top:1.75rem;text-align:justify;font-size:1.25rem;line-height:1.75rem}}.hero__actions{margin-top:1rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}@media(min-width:768px){.hero__actions{margin-top:2rem;justify-content:flex-start}}.hero__cta{display:inline-flex;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));padding:.5rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hero__cta:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:hsl(var(--accent) / var(--tw-bg-opacity, 1));--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hero__social-row{margin-top:1rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}@media(min-width:768px){.hero__social-row{justify-content:flex-start}}.hero__social{display:inline-flex;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;border-radius:9999px;border-width:1px;border-color:transparent;padding:.75rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hero__social:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hero__social--linkedin{background-color:hsl(var(--social-linkedin))}.hero__social--github{background-color:hsl(var(--social-github))}.hero__social--instagram{background-image:linear-gradient(to top right,var(--tw-gradient-stops));background-image:linear-gradient(to top right,hsl(var(--social-instagram-from)),hsl(var(--social-instagram-via)),hsl(var(--social-instagram-to)))}.nav-spacer{height:4rem}@media(min-width:640px){.nav-spacer{height:3.5rem}}.nav-fixed{position:fixed;left:50%;top:1rem;z-index:50;width:100%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));padding-left:1rem;padding-right:1rem}.nav-inner{margin-left:auto;margin-right:auto;width:100%;max-width:64rem}.nav-shell{margin-left:auto;margin-right:auto;display:grid;width:100%;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;border-radius:9999px;border-width:1px;padding:.5rem 1rem;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(0 0 0 / .05);--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.nav-shell:is(.dark *){--tw-ring-color: rgb(255 255 255 / .1)}@media(min-width:475px){.nav-shell{width:360px}}@media(min-width:640px){.nav-shell{width:520px}}@media(min-width:768px){.nav-shell{width:820px}}@media(min-width:1024px){.nav-shell{width:960px}}.nav-shell{background-color:hsl(var(--nav-shell-bg) / .9);color:hsl(var(--nav-shell-fg));border-color:hsl(var(--nav-shell-border))}.dark .nav-shell{background-color:hsl(var(--nav-shell-bg) / .95)}.nav-shell--rest{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nav-shell--rest:is(.dark *){--tw-shadow-color: rgb(0 0 0 / .2);--tw-shadow: var(--tw-shadow-colored)}.nav-shell--raised{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nav-shell--raised:is(.dark *){--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.nav-brand{white-space:nowrap;font-size:1rem;line-height:1.5rem;font-weight:600}@media(min-width:640px){.nav-brand{font-size:1.125rem;line-height:1.75rem}}@media(min-width:768px){.nav-brand{display:none}}@media(min-width:1024px){.nav-brand{display:none}}.nav-links{display:none;align-items:center;justify-content:center;gap:1.5rem;white-space:nowrap}@media(min-width:768px){.nav-links{display:flex}}.nav-link{opacity:.8;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nav-link:hover{opacity:1}.nav-link--active{font-weight:600;opacity:1;color:hsl(var(--nav-link-active))}.nav-controls{margin-left:auto;display:flex;align-items:center;gap:.5rem}.nav-dropdown{position:relative}.nav-icon-btn{border-radius:9999px;border-width:1px;padding:.125rem .75rem .25rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-color:hsl(var(--nav-shell-border))}.nav-icon-btn:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.nav-icon-btn:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.nav-lang-btn{display:flex;align-items:center;gap:.25rem;border-radius:9999px;border-width:1px;padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-color:hsl(var(--nav-shell-border))}.nav-lang-btn:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.nav-lang-btn:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.nav-lang-chevron{margin-left:.25rem;height:.75rem;width:.75rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nav-lang-chevron--open{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nav-lang-menu{position:absolute;right:0;margin-top:.25rem;width:9rem;border-radius:.375rem;border-width:1px;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:hsl(var(--nav-panel-bg));color:hsl(var(--nav-shell-fg));border-color:hsl(var(--nav-panel-border))}.nav-lang-item{display:block;width:100%;padding:.375rem .75rem;text-align:left;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nav-lang-item:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.nav-lang-item:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.nav-lang-item--active{font-weight:600}.nav-menu-toggle{display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;padding:.5rem}.nav-menu-toggle:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.nav-menu-toggle:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}@media(min-width:768px){.nav-menu-toggle{display:none}}.nav-menu-toggle__icon{height:1.25rem;width:1.25rem}.nav-mobile-anchor{position:relative}.nav-mobile-panel{position:absolute;left:50%;z-index:40;margin-top:.5rem;width:calc(100vw - 2rem);max-width:24rem;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;border-width:1px;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1));--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nav-mobile-panel:is(.dark *){border-color:#ffffff1a;--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.nav-mobile-list{display:flex;flex-direction:column;gap:.25rem;padding:.5rem}.nav-mobile-link{display:block;border-radius:.5rem;padding:.5rem .75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nav-mobile-link:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.nav-mobile-link:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.nav-mobile-link--active{font-weight:600;color:hsl(var(--nav-link-active))}.contact-form{margin-left:auto;margin-right:auto;max-width:42rem;border-radius:1rem;border-width:1px;padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}@media(min-width:768px){.contact-form{padding:2rem}}.contact-form{background-color:hsl(var(--contact-glass-bg) / .7);border-color:hsl(var(--contact-glass-border) / .6)}.dark .contact-form{background-color:hsl(var(--contact-glass-bg) / .6);border-color:#ffffff1a}.contact-field-grid{display:grid;gap:1.5rem}@media(min-width:768px){.contact-field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.contact-label{display:grid;gap:.5rem}.contact-label--message{margin-top:1.5rem}.contact-label-text{font-size:.875rem;line-height:1.25rem;font-weight:500;color:hsl(var(--contact-zinc-label))}.contact-required{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.contact-input{height:2.75rem;border-radius:.75rem;border-width:1px;padding-left:1rem;padding-right:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-color:hsl(var(--contact-input-border));background-color:hsl(var(--contact-input-bg));color:hsl(var(--contact-input-fg))}.contact-textarea{border-radius:.75rem;border-width:1px;padding:.75rem 1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-color:hsl(var(--contact-input-border));background-color:hsl(var(--contact-input-bg));color:hsl(var(--contact-input-fg))}.contact-input:focus,.contact-input:focus-visible,.contact-textarea:focus,.contact-textarea:focus-visible{border-color:transparent;box-shadow:0 0 0 4px hsl(var(--nav-link-active) / .22)}.contact-footer{margin-top:1.5rem;display:flex;align-items:center;justify-content:space-between}.contact-status{font-size:.875rem;line-height:1.25rem}.contact-status--ok{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.contact-status--err{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.contact-submit{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:9999px;padding:.625rem 1.75rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 4px 14px -2px rgba(79,70,229,.4);--tw-shadow-colored: 0 4px 14px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.contact-submit:hover{opacity:.9}.contact-submit:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(0 123 255 / .3)}.contact-submit:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.contact-submit{background-image:linear-gradient(to right,hsl(var(--gradient-submit-from)),hsl(var(--gradient-submit-to)))}.contact-submit:hover .contact-submit__shine{opacity:.1}.contact-submit:hover .contact-submit__icon{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.contact-submit__shine{pointer-events:none;position:absolute;inset:0;border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.contact-submit__icon{position:relative;z-index:10;height:1rem;width:1rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.contact-submit__label{position:relative;z-index:10}.contact-submit--busy{cursor:not-allowed;opacity:.7}.footer{padding:2rem 1rem}@media(min-width:640px){.footer{padding-left:1.5rem;padding-right:1.5rem}}.footer__panel{margin-left:auto;margin-right:auto;display:flex;max-width:72rem;flex-direction:column;align-items:center;justify-content:space-between;gap:1rem;border-radius:1rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity, 1));padding:1.25rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.footer__panel:is(.dark *){border-color:#ffffff1a}@media(min-width:640px){.footer__panel{flex-direction:row;gap:1.5rem}}.footer__panel{background-color:hsl(var(--contact-glass-bg) / .7)}.dark .footer__panel{background-color:hsl(var(--contact-glass-bg) / .6)}.footer__copy{text-align:center;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.footer__copy:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}@media(min-width:640px){.footer__copy{text-align:left}}.footer__socials{display:flex;align-items:center;gap:.75rem}.footer__social{position:relative;display:inline-grid;width:2.5rem;height:2.5rem;place-items:center;border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.footer__social:hover{border-color:transparent}.footer__social:is(.dark *){--tw-border-opacity: 1;border-color:rgb(212 212 216 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.footer__social--linkedin:hover{background-color:hsl(var(--footer-linkedin-hover))}.footer__social--github:hover{background-color:hsl(var(--footer-github-hover))}.dark .footer__social--github:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.footer__social-icon--linkedin{width:1rem;height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.footer__social-icon--github{width:1.25rem;height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.footer__social--linkedin:hover .footer__social-icon--linkedin,.footer__social--github:hover .footer__social-icon--github{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark .footer__social--github:hover .footer__social-icon--github{color:#24292e}.projects-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media(min-width:768px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.projects-load-wrap{margin-top:2.5rem;display:flex;justify-content:center}.projects-load-btn{border-radius:9999px;padding:.625rem 1.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.projects-load-btn:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.projects-load-btn:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(min-width:768px){.projects-load-btn{font-size:1rem;line-height:1.5rem}}.projects-load-btn{background-image:linear-gradient(to right,hsl(var(--gradient-cta-from)),hsl(var(--gradient-cta-to)))}.projects-load-btn:hover{background-image:linear-gradient(to right,hsl(var(--gradient-cta-to)),hsl(var(--gradient-cta-from)))}.project-card{position:relative;overflow:hidden;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.project-card:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.project-card__media{aspect-ratio:16 / 9;width:100%;-o-object-fit:cover;object-fit:cover}.project-card__body>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.project-card__body{padding:1rem 1rem 3rem}.project-card__title{font-size:1rem;line-height:1.5rem;font-weight:600;line-height:1.25}.project-card__blurb{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.project-card__tags{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.25rem}.project-card__tag{border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.25rem .75rem;font-size:.75rem;line-height:1rem;color:hsl(var(--foreground) / .8);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.project-card__tag:hover{--tw-bg-opacity: 1;background-color:hsl(var(--accent) / var(--tw-bg-opacity, 1))}.project-card__tag:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.project-card__actions{display:flex;align-items:center;gap:.75rem;padding-top:.75rem}.project-card__btn-github{display:inline-flex;align-items:center;gap:.375rem;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.project-card__btn-github:hover{opacity:.9}.project-card__btn-github{background-color:hsl(var(--btn-github))}.project-card__btn-demo{display:inline-flex;align-items:center;gap:.375rem;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:hsl(var(--btn-demo))}.project-card__btn-demo:hover{background-color:hsl(var(--btn-demo-hover))}.project-card__details-btn{position:absolute;bottom:1rem;right:1.25rem;display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:hsl(var(--foreground) / .8);text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.project-card__details-btn:hover{--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1));text-decoration-line:underline}.project-card__details-btn:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px}.project-card__details-btn:active{--tw-translate-y: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.project-card__details-btn:hover .project-card__details-icon{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.project-card__details-icon{height:1rem;width:1rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.icon-inline{height:1rem;width:1rem}.experience-timeline{position:relative}.experience-timeline>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.experience-row{position:relative;display:grid;gap:1rem}@media(min-width:768px){.experience-row{grid-template-columns:8rem 1fr;gap:2rem}}.experience-date{display:none;align-items:center;justify-content:flex-end;padding-right:.75rem}@media(min-width:768px){.experience-date{display:flex}}.experience-date__text{text-align:right;font-size:.875rem;line-height:1.25rem;font-weight:500;line-height:1.25;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.experience-card{border-radius:1rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.experience-card:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.experience-card__period-wrap{margin-bottom:.5rem}@media(min-width:768px){.experience-card__period-wrap{display:none}}.experience-card__period{border-radius:.25rem;--tw-bg-opacity: 1;background-color:hsl(var(--muted) / var(--tw-bg-opacity, 1));padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.experience-card__header{margin-bottom:.75rem}.experience-card__role{font-size:1.125rem;line-height:1.75rem;font-weight:600;line-height:1.25}.experience-card__company-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.875rem;line-height:1.25rem;opacity:.7}.experience-card__points{margin-left:1rem;list-style-type:disc}.experience-card__points>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.experience-card__points *::marker{color:hsl(var(--primary))}.experience-card__points::marker{color:hsl(var(--primary))}.experience-card__point{font-size:.875rem;line-height:1.25rem;line-height:1.625}.experience-card__tech-list{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}.experience-card__tech{border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));padding:.25rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.experience-card__links{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.75rem}.experience-card__link{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem}.experience-card__link:hover{--tw-bg-opacity: 1;background-color:hsl(var(--accent) / var(--tw-bg-opacity, 1))}.experience-card__details-wrap{margin-top:1.5rem}.experience-card__details-btn{position:absolute;bottom:1rem;right:1.25rem;display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:hsl(var(--foreground) / .8);text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.experience-card__details-btn:hover{--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1));text-decoration-line:underline}.experience-card__details-btn:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px}.experience-card__details-btn:active{--tw-translate-y: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.experience-card__details-btn:hover .experience-card__details-icon{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.experience-card__details-icon{height:1rem;width:1rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.technologies__list{margin-top:1.5rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.technologies__chip{display:flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.technologies__chip:hover{--tw-border-opacity: 1;border-color:rgb(212 212 216 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.technologies__chip:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 91 / var(--tw-border-opacity, 1));background-color:#27272ae6}.technologies__chip:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.technologies__chip-label{--tw-text-opacity: 1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.technologies__chip-label:is(.dark *){--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.technologies__icon{height:1.25rem;width:1.25rem;flex-shrink:0;display:block;color:#52525b}.technologies__icon--html{color:#e34f26}.technologies__icon--css{color:#1572b6}.technologies__icon--javascript{color:#f7df1e}.technologies__icon--typescript{color:#3178c6}.technologies__icon--react{color:#61dafb}.technologies__icon--next{color:#000}.dark .technologies__icon--next{color:#fff}.technologies__icon--tailwind{color:#06b6d4}.technologies__icon--mui{color:#007fff}.technologies__icon--shadcn{color:#09090b}.dark .technologies__icon--shadcn{color:#fafafa}.technologies__icon--storybook{color:#ff4785}.technologies__icon--framer{color:#05f}.technologies__icon--three{color:#000}.dark .technologies__icon--three{color:#fff}.technologies__icon--redux{color:#764abc}.technologies__icon--node{color:#393}.technologies__icon--express{color:#000}.dark .technologies__icon--express{color:#fff}.technologies__icon--python{color:#3776ab}.technologies__icon--fastapi{color:#009688}.technologies__icon--sqlalchemy{color:#d71f00}.technologies__icon--mongo{color:#47a248}.technologies__icon--sql{color:#4479a1}.technologies__icon--postgresql{color:#336791}.technologies__icon--docker{color:#2496ed}.technologies__icon--vercel{color:#000}.dark .technologies__icon--vercel{color:#fff}.technologies__icon--git{color:#f05032}.technologies__icon--github{color:#181717}.dark .technologies__icon--github{color:#f6f8fa}.technologies__icon--jira{color:#0052cc}.technologies__icon--postman{color:#ff6c37}.technologies__icon--rtl{color:#e33332}.technologies__icon--npm{color:#cb3837}.github-heatmap{display:flex;justify-content:center;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));padding:.5rem}.modal-backdrop{position:fixed;inset:0;z-index:50;background-color:#00000080;padding:.75rem}@media(min-width:768px){.modal-backdrop{padding:1.5rem}}.modal-backdrop--centered{display:flex;align-items:flex-start;justify-content:center}.modal-panel{display:grid;max-height:90vh;width:100%;max-width:56rem;overflow:hidden;border-radius:1.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(0 0 0 / .05)}.modal-panel:focus{outline:2px solid transparent;outline-offset:2px}.modal-panel:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.modal-panel--project{grid-template-rows:auto 1fr}.modal-panel--experience{min-height:0px;grid-template-rows:auto 1fr}.modal-panel-shell{margin-left:auto;margin-right:auto;width:100%;max-width:56rem}.modal-header{position:sticky;top:0;z-index:10;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fffffff2;--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.modal-header:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.modal-header--rounded{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.modal-header__row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem}@media(min-width:768px){.modal-header__row{padding:1.5rem}}.modal-header__title-wrap{min-width:0px}.modal-section-wide{max-width:56rem;text-align:justify}.modal-intro{max-width:56rem;text-align:justify;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.modal-section-narrow{max-width:48rem}.modal-links-heading{margin-bottom:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.modal-title{font-size:1.25rem;line-height:1.75rem;font-weight:600;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}@media(min-width:768px){.modal-title{font-size:1.5rem;line-height:2rem}}.modal-close{flex-shrink:0;border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1));padding:.5rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.modal-close:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.modal-close:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.modal-close:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.modal-body{overflow-y:auto;padding:1rem}@media(min-width:768px){.modal-body{padding:2rem}}.modal-body--project{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.modal-body--experience{min-height:0px;overscroll-behavior:contain}.modal-section-title{margin-bottom:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.modal-prose{margin-bottom:1.5rem;max-width:56rem;text-align:justify;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.modal-paragraph{margin-bottom:1rem;font-size:1rem;line-height:1.75rem}.modal-paragraph:last-child{margin-bottom:0}@media(min-width:768px){.modal-paragraph{font-size:1.05rem;line-height:2rem}}.modal-hr{margin-top:1.5rem;margin-bottom:1.5rem;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.modal-hr:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}@media(min-width:768px){.modal-hr{margin-top:2rem;margin-bottom:2rem}}.modal-list{margin-left:1.25rem;list-style-type:disc}.modal-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.modal-list{font-size:.95rem;line-height:1.75rem;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.modal-gallery-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media(min-width:640px){.modal-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.modal-gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1280px){.modal-gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.modal-gallery-figure{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.modal-gallery-figure:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.modal-gallery-link{display:block}.modal-gallery-aspect{position:relative;aspect-ratio:4/3;width:100%;padding:.5rem}.modal-gallery-img{position:absolute;inset:0;margin:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}.modal-tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.modal-tech-pill{border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));padding:.25rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}@media(min-width:768px){.modal-tech-pill{font-size:.8rem}}.modal-links-row{display:flex;flex-wrap:wrap;gap:.75rem}.modal-link-out{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem;text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.modal-link-out:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));text-decoration-line:underline}.modal-btn-github{display:inline-flex;align-items:center;gap:.375rem;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.modal-btn-github:hover{opacity:.9}.modal-btn-github{background-color:hsl(var(--btn-github))}.modal-btn-demo{display:inline-flex;align-items:center;gap:.375rem;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:hsl(var(--btn-demo))}.modal-btn-demo:hover{background-color:hsl(var(--btn-demo-hover))}.modal-meta{margin-top:.125rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}@media(min-width:768px){.modal-meta{font-size:1rem;line-height:1.5rem}}.modal-meta-grid{margin-top:.75rem;display:grid;gap:.5rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}@media(min-width:768px){.modal-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.modal-meta-row{display:flex;flex-wrap:wrap;align-items:center;-moz-column-gap:.5rem;column-gap:.5rem;row-gap:.25rem}.modal-meta-label{font-weight:500}.error-boundary{display:flex;min-height:100vh;flex-direction:column;align-items:center;justify-content:center;gap:1rem;--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));padding:4rem 1.5rem;text-align:center;--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1))}.error-boundary__title{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-.025em}.error-boundary__text{max-width:28rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.error-boundary__retry{border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));padding:.5rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.error-boundary__retry:hover{--tw-bg-opacity: 1;background-color:hsl(var(--accent) / var(--tw-bg-opacity, 1))}.visible{visibility:visible}.static{position:static}.block{display:block}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}
