*,:before,:after,::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:#3b82f680;--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:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family: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:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-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{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}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{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root,[data-theme]{background-color:var(--fallback-b1,oklch(var(--b1)/1));color:var(--fallback-bc,oklch(var(--bc)/1))}@supports not (color:oklch(0% 0 0)){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--fallback-p:#491eff;--fallback-pc:#d4dbff;--fallback-s:#ff41c7;--fallback-sc:#fff9fc;--fallback-a:#00cfbd;--fallback-ac:#00100d;--fallback-n:#2b3440;--fallback-nc:#d7dde4;--fallback-b1:#fff;--fallback-b2:#e5e6e6;--fallback-b3:#e5e6e6;--fallback-bc:#1f2937;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--fallback-p:#7582ff;--fallback-pc:#050617;--fallback-s:#ff71cf;--fallback-sc:#190211;--fallback-a:#00c7b5;--fallback-ac:#000e0c;--fallback-n:#2a323c;--fallback-nc:#a6adbb;--fallback-b1:#1d232a;--fallback-b2:#191e24;--fallback-b3:#15191e;--fallback-bc:#a6adbb;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000}}}html{-webkit-tap-highlight-color:transparent}*{scrollbar-color:color-mix(in oklch, currentColor 35%, transparent) transparent}:hover{scrollbar-color:color-mix(in oklch, currentColor 60%, transparent) transparent}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--in:72.06% .191 231.6;--su:64.8% .15 160;--wa:84.71% .199 83.87;--er:71.76% .221 22.18;--pc:19.3974% .000265 106.424;--sc:15.1441% 0 0;--ac:11.8736% .005028 248.25;--inc:0% 0 0;--suc:0% 0 0;--wac:0% 0 0;--erc:0% 0 0;--rounded-box:1rem;--rounded-btn:.5rem;--rounded-badge:1.9rem;--animation-btn:.25s;--animation-input:.2s;--btn-focus-scale:.95;--border-btn:1px;--tab-border:1px;--tab-radius:.5rem;--p:96.9871% .001324 106.424;--s:75.7207% 0 0;--a:59.3678% .025138 248.25;--n:82.7586% .101277 230.318;--nc:74.6477% .0216 264.436;--b1:12.964% .027368 261.692;--b2:23.2607% .013807 253.101;--b3:21.1484% .01165 254.088;--bc:74.6477% .0216 264.436}.badge{border-radius:var(--rounded-badge,1.9rem);--tw-border-opacity:1;border-width:1px;border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));--tw-text-opacity:1;width:fit-content;height:1.25rem;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));justify-content:center;align-items:center;padding-left:.563rem;padding-right:.563rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@media (hover:hover){.label a:hover{--tw-text-opacity:1;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}}.footer{-moz-column-gap:1rem;grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}@media (min-width:48rem){.footer{grid-auto-flow:column}.footer-center{grid-auto-flow:dense}}.label{-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:.5rem .25rem;display:flex}.join{border-radius:var(--rounded-btn,.5rem);align-items:stretch;display:inline-flex}.join :where(.join-item),.join .join-item:not(:first-child):not(:last-child),.join :not(:first-child):not(:last-child) .join-item{border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:0}.join .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .join-item{border-start-end-radius:0;border-end-end-radius:0}.join .dropdown .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .dropdown .join-item{border-start-end-radius:inherit;border-end-end-radius:inherit}.join :where(.join-item:first-child:not(:last-child)),.join :where(:first-child:not(:last-child) .join-item){border-start-start-radius:inherit;border-end-start-radius:inherit}.join .join-item:last-child:not(:first-child),.join :last-child:not(:first-child) .join-item{border-start-start-radius:0;border-end-start-radius:0}.join :where(.join-item:last-child:not(:first-child)),.join :where(:last-child:not(:first-child) .join-item){border-start-end-radius:inherit;border-end-end-radius:inherit}@supports not selector(:has(*)){:where(.join *){border-radius:inherit}}@supports selector(:has(*)){:where(.join :has(.join-item)){border-radius:inherit}}.link{cursor:pointer;text-decoration-line:underline}:where(.menu li) .badge{justify-self:end}.modal{pointer-events:none;opacity:0;overscroll-behavior:contain;z-index:999;width:100%;max-width:none;height:100%;max-height:none;color:inherit;background-color:#0000;justify-items:center;margin:0;padding:0;transition-property:transform,opacity,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid;position:fixed;inset:0;overflow-y:hidden}:where(.modal){align-items:center}.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open]{pointer-events:auto;visibility:visible;opacity:1}:root:has(:is(.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open])){scrollbar-gutter:stable;overflow:hidden}.btm-nav>* .label{font-size:1rem;line-height:1.5rem}@keyframes button-pop{0%{transform:scale(var(--btn-focus-scale,.98))}40%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}to{background-position-y:0}}.join>:where(:not(:first-child)){margin-top:0;margin-bottom:0;margin-inline-start:-1px}.join>:where(:not(:first-child)).btn{margin-inline-start:calc(var(--border-btn) * -1)}.link:focus{outline-offset:2px;outline:2px solid #0000}.link:focus-visible{outline-offset:2px;outline:2px solid}.modal:not(dialog:not(.modal-open)),.modal::backdrop{background-color:#0006;animation:.2s ease-out modal-pop}.modal-backdrop{z-index:-1;color:#0000;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-open .modal-box,.modal-toggle:checked+.modal .modal-box,.modal:target .modal-box,.modal[open] .modal-box{--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes modal-pop{0%{opacity:0}}@keyframes progress-loading{50%{background-position-x:-115%}}@keyframes radiomark{0%{box-shadow:0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset, 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset}50%{box-shadow:0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset, 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset}to{box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset, 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}}@keyframes rating-pop{0%{transform:translateY(-.125em)}40%{transform:translateY(-.125em)}to{transform:translateY(0)}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes toast-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.join.join-vertical{flex-direction:column}.join.join-vertical .join-item:first-child:not(:last-child),.join.join-vertical :first-child:not(:last-child) .join-item{border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:0;border-end-start-radius:0}.join.join-vertical .join-item:last-child:not(:first-child),.join.join-vertical :last-child:not(:first-child) .join-item{border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:inherit;border-end-start-radius:inherit}.join.join-horizontal{flex-direction:row}.join.join-horizontal .join-item:first-child:not(:last-child),.join.join-horizontal :first-child:not(:last-child) .join-item{border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit}.join.join-horizontal .join-item:last-child:not(:first-child),.join.join-horizontal :last-child:not(:first-child) .join-item{border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0}.join.join-vertical>:where(:not(:first-child)){margin-top:-1px;margin-left:0;margin-right:0}.join.join-vertical>:where(:not(:first-child)).btn{margin-top:calc(var(--border-btn) * -1)}.join.join-horizontal>:where(:not(:first-child)){margin-top:0;margin-bottom:0;margin-inline-start:-1px}.join.join-horizontal>:where(:not(:first-child)).btn{margin-inline-start:calc(var(--border-btn) * -1);margin-top:0}.site-container{width:100%}@media (min-width:640px){.site-container{max-width:640px}}@media (min-width:768px){.site-container{max-width:768px}}@media (min-width:1024px){.site-container{max-width:1024px}}@media (min-width:1280px){.site-container{max-width:1280px}}@media (min-width:1536px){.site-container{max-width:1536px}}.site-container{width:100%;max-width:980px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}@media (min-width:640px){.site-container{padding-left:1.25rem;padding-right:1.25rem}}.site-footer{width:100%}@media (min-width:640px){.site-footer{max-width:640px}}@media (min-width:768px){.site-footer{max-width:768px}}@media (min-width:1024px){.site-footer{max-width:1024px}}@media (min-width:1280px){.site-footer{max-width:1280px}}@media (min-width:1536px){.site-footer{max-width:1536px}}.site-footer{text-align:center;width:100%;max-width:980px;margin-left:auto;margin-right:auto;padding:1.5rem 1rem}@media (min-width:640px){.site-footer{padding:2rem 1.25rem}}.nav-link{color:var(--fallback-p,oklch(var(--p)/.75));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);display:inline-block}.nav-link:hover{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)))}.nav-link:hover,.nav-link:focus-visible{text-decoration:none}.site-nav{z-index:50;--tw-backdrop-blur:blur(24px);-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);background-color:#ffffff14;border-color:#ffffff0f;border-bottom-width:1px;position:fixed;top:0;left:0;right:0}.focus-ring:focus-visible{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(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:#fff3;--tw-ring-offset-width:0px;outline:2px solid #0000}.section-heading{text-transform:uppercase;letter-spacing:.12em;--tw-text-opacity:1;color:var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity,1)));margin-bottom:1.5rem;font-size:.75rem;font-weight:400;line-height:1rem}@media (min-width:640px){.section-heading{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.section-heading{margin-bottom:2rem}}.text-title{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)));font-size:1rem;font-weight:700;line-height:1.375}@media (min-width:640px){.text-title{font-size:1.125rem;line-height:1.75rem}}.text-body{text-wrap:pretty;color:var(--fallback-p,oklch(var(--p)/.9));font-size:.875rem;font-weight:400;line-height:1.625}@media (min-width:640px){.text-body{font-size:1rem;line-height:1.5rem}}.text-muted{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));font-size:.875rem;font-weight:400;line-height:1.625}@media (min-width:640px){.text-muted{font-size:1rem;line-height:1.5rem}}.text-caption{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));font-size:.75rem;font-weight:400;line-height:1.5}@media (min-width:640px){.text-caption{font-size:.875rem;line-height:1.25rem}}.site-slogan{text-wrap:pretty;letter-spacing:.025em;max-width:42rem;color:var(--fallback-s,oklch(var(--s)/.9));font-size:1rem;font-style:italic;font-weight:400;line-height:1.625}@media (min-width:640px){.site-slogan{font-size:1.125rem;line-height:1.75rem}}@media (min-width:768px){.site-slogan{font-size:1.25rem;line-height:1.75rem}}.hero-role{letter-spacing:.04em;font-size:1.125rem;font-weight:400;line-height:1.375}@media (min-width:640px){.hero-role{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.hero-role{font-size:1.5rem;line-height:2rem}}@media (min-width:1024px){.hero-role{font-size:1.875rem;line-height:2.25rem}}.hero-role-text{color:var(--fallback-p,oklch(var(--p)/.55))}.hero-role-brace{color:var(--fallback-s,oklch(var(--s)/.25))}.footer-credit-link{color:var(--fallback-s,oklch(var(--s)/.7));text-decoration-line:none;text-decoration-color:#0000;transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);display:inline-block}.footer-credit-link:hover,.footer-credit-link:focus-visible{color:var(--fallback-n,oklch(var(--n)/.75));text-decoration:none;transform:translateY(-1px)}.glass-btn:focus-visible{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(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:#fff3;--tw-ring-offset-width:0px;outline:2px solid #0000}.glass-btn{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));font-size:.75rem;font-weight:400;line-height:1.5}@media (min-width:640px){.glass-btn{font-size:.875rem;line-height:1.25rem}}.glass-btn{color:var(--fallback-p,oklch(var(--p)/.85));--tw-backdrop-blur:blur(24px);-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);background-color:#ffffff1a;border-width:1px;border-color:#ffffff26;border-radius:9999px;align-items:center;padding:.375rem .875rem;text-decoration-line:none;transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);display:inline-flex}.glass-btn:hover{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)));background-color:#ffffff24;border-color:#ffffff40}.glass-btn{box-shadow:inset 0 1px #ffffff14}.glass-btn:active{transform:scale(.98)}.content-stack{flex-direction:column;gap:1rem;display:flex}@media (min-width:768px){.content-stack{gap:1.25rem}}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem;display:grid}@media (min-width:640px){.skills-grid{gap:1rem}}.skill-card{--tw-backdrop-blur:blur(12px);-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);background-color:#ffffff09;border-width:1px;border-color:#ffffff12;border-radius:.375rem;min-width:0;padding:.5rem .75rem;box-shadow:inset 0 1px #ffffff08}@media (min-width:640px){.skill-card{padding:.625rem .75rem}}.skill-card-wide{grid-column:span 2/span 2}.skill-card-title{text-wrap:pretty;color:var(--fallback-p,oklch(var(--p)/.85));margin-top:0;margin-bottom:.25rem;font-size:.875rem;font-weight:700;line-height:1.375}@media (min-width:640px){.skill-card-title{font-size:1rem;line-height:1.5rem}}.skill-card-value{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));font-size:.875rem;font-weight:400;line-height:1.625}@media (min-width:640px){.skill-card-value{font-size:1rem;line-height:1.5rem}}.skill-card-value{margin:0;font-size:.875rem;line-height:1.625}@media (min-width:640px){.skill-card-value{font-size:1rem;line-height:1.5rem}}.education-timeline{flex-direction:column;display:flex}.interactive{transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1)}details summary{list-style:none}details summary::-webkit-details-marker{display:none}.job-duties{text-wrap:pretty;color:var(--fallback-p,oklch(var(--p)/.9));font-size:.875rem;font-weight:400;line-height:1.625}@media (min-width:640px){.job-duties{font-size:1rem;line-height:1.5rem}}.job-duties{margin-top:.75rem;margin-bottom:0;list-style-type:none}.job-duties>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}@media (min-width:640px){.job-duties{margin-top:1rem}.job-duties>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}}.job-details{border-radius:.375rem;padding-left:.125rem;padding-right:.125rem}.job-summary:focus-visible{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(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:#fff3;--tw-ring-offset-width:0px;outline:2px solid #0000}.job-summary{cursor:pointer;border-radius:.375rem;align-items:flex-start;gap:.625rem;padding-top:.25rem;padding-bottom:.25rem;padding-right:.25rem;transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);display:flex}.job-summary:hover{background-color:#ffffff08}@media (min-width:640px){.job-summary{gap:.75rem}}.job-chevron{border-bottom-width:1px;border-right-width:1px;border-color:var(--fallback-s,oklch(var(--s)/.55));flex-shrink:0;width:.375rem;height:.375rem;margin-top:.45em;transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);transform:rotate(-45deg)}.job-details[open] .job-chevron{border-color:var(--fallback-s,oklch(var(--s)/.75));margin-top:.55em;transform:rotate(45deg)}.job-summary-text{text-wrap:pretty;color:var(--fallback-p,oklch(var(--p)/.9));font-size:.875rem;font-weight:400;line-height:1.625}@media (min-width:640px){.job-summary-text{font-size:1rem;line-height:1.5rem}}.job-summary-text{text-wrap:pretty;min-width:0;color:var(--fallback-p,oklch(var(--p)/.9));flex:1;line-height:1.625}.job-details[open] .job-summary-text{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)))}.job-details-body{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));font-size:.75rem;font-weight:400;line-height:1.5}@media (min-width:640px){.job-details-body{font-size:.875rem;line-height:1.25rem}}.job-details-body{margin-top:.25rem;margin-bottom:.375rem;margin-left:1rem}.job-details-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))}.job-details-body{color:var(--fallback-s,oklch(var(--s)/.85));border-color:#ffffff1a;border-left-width:1px;padding-left:.75rem}@media (min-width:640px){.job-details-body{margin-left:1.25rem;padding-left:.875rem}}.job-details-body dt{text-transform:uppercase;letter-spacing:.025em;--tw-text-opacity:1;color:var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity,1)));margin-bottom:.125rem;font-size:10px}@media (min-width:640px){.job-details-body dt{font-size:.75rem;line-height:1rem}}.job-details-body dd{text-wrap:pretty;margin:0;line-height:1.625}.cert-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem;display:grid}@media (min-width:640px){.cert-grid{gap:1rem}}@media (min-width:768px){.cert-grid{gap:1.25rem}}dialog.cert-modal{background-color:#0000;border-width:0;width:fit-content;max-width:calc(100% - 2rem);max-height:100dvh;margin:auto;padding:0;position:fixed}dialog.cert-modal::backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000a6}dialog.cert-modal[open] .cert-modal-box{animation:.42s cubic-bezier(.22,1,.36,1) forwards modalIn}.cert-modal-box{--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);max-height:90vh;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:#0006;background-color:#0a0f1af2;border-width:1px;border-color:#ffffff26;border-radius:1rem;width:min(92vw,56rem);padding:0;position:relative;overflow:hidden}.cert-modal-header{border-color:#ffffff1a;border-bottom-width:1px;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}@media (min-width:640px){.cert-modal-header{padding:1rem 1.25rem}}.cert-modal-title{text-wrap:pretty;--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)));margin:0;font-size:.75rem;font-weight:700;line-height:1.375}@media (min-width:640px){.cert-modal-title{font-size:.875rem;line-height:1.25rem}}.cert-modal-close:focus-visible{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(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:#fff3;--tw-ring-offset-width:0px;outline:2px solid #0000}.cert-modal-close{--tw-text-opacity:1;width:2rem;height:2rem;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)));background-color:#ffffff0d;border-width:1px;border-color:#ffffff1a;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;font-size:1.125rem;line-height:1;transition-property:all;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1);display:flex}.cert-modal-close:hover{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)));background-color:#ffffff1a;border-color:#fff3}.cert-modal-body{padding:.75rem;overflow-y:auto}@media (min-width:640px){.cert-modal-body{padding:1rem}}@media (min-width:768px){.cert-modal-body{padding:1.25rem}}.cert-modal-image{border-width:1px;border-color:#ffffff1a;border-radius:.75rem;width:100%;height:auto}.cert-modal-backdrop{cursor:pointer}dialog.modal::backdrop{--tw-backdrop-blur:blur(4px);-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);background-color:#00000080;transition-property:opacity;transition-duration:.4s;transition-timing-function:cubic-bezier(.22,1,.36,1)}dialog.modal[open] .modal-box{animation:.4s cubic-bezier(.22,1,.36,1) forwards modalIn}@keyframes modalIn{0%{opacity:0;transform:scale(.97)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.relative{position:relative}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.block{display:block}.flex{display:flex}.h-2{height:.5rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-auto{height:auto}.min-h-14{min-height:3.5rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-screen{min-height:100vh}.w-2{width:.5rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.max-w-2xl{max-width:42rem}.max-w-\[72px\]{max-width:72px}.max-w-full{max-width:100%}.max-w-xl{max-width:36rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeUp{animation:.7s cubic-bezier(.22,1,.36,1) forwards fadeUp}.cursor-pointer{cursor:pointer}.scroll-mt-16{scroll-margin-top:4rem}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.overflow-x-hidden{overflow-x:hidden}.text-balance{text-wrap:balance}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border-0{border-width:0}.bg-transparent{background-color:#0000}.bg-white\/15{background-color:#ffffff26}.bg-white\/25{background-color:#ffffff40}.bg-white\/50{background-color:#ffffff80}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.\!pt-28{padding-top:7rem!important}.pb-20{padding-bottom:5rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pt-1{padding-top:.25rem}.pt-14{padding-top:3.5rem}.font-space-mono{font-family:Space Mono,monospace}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.font-bold{font-weight:700}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-primary{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)))}.text-primary\/70{color:var(--fallback-p,oklch(var(--p)/.7))}.text-primary\/85{color:var(--fallback-p,oklch(var(--p)/.85))}.text-secondary\/70{color:var(--fallback-s,oklch(var(--s)/.7))}.text-secondary\/80{color:var(--fallback-s,oklch(var(--s)/.8))}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.ring-2{--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)}.ring-white\/10{--tw-ring-color:#ffffff1a}.transition-all{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-smooth{transition-duration:.4s}.ease-smooth{transition-timing-function:cubic-bezier(.22,1,.36,1)}html{scroll-behavior:smooth;scroll-padding-top:4.5rem}@media (min-width:640px){html{scroll-padding-top:5rem}}html,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Space Mono,monospace;font-size:.875rem;line-height:1.625}@media (min-width:640px){html,body{font-size:1rem;line-height:1.5rem}}body{background-image:url(/bg.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover}@media (min-width:768px){body{background-attachment:fixed}}a,a:hover{text-decoration:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.hover\:scale-105: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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:opacity-100:hover{opacity:1}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-primary{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity,1)))}.group:hover .group-hover\:text-secondary{--tw-text-opacity:1;color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity,1)))}@media (min-width:640px){.sm\:mt-2{margin-top:.5rem}.sm\:mt-4{margin-top:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:mt-6{margin-top:1.5rem}.sm\:h-2\.5{height:.625rem}.sm\:h-7{height:1.75rem}.sm\:h-8{height:2rem}.sm\:min-h-16{min-height:4rem}.sm\:min-h-\[3rem\]{min-height:3rem}.sm\:w-2\.5{width:.625rem}.sm\:w-7{width:1.75rem}.sm\:w-8{width:2rem}.sm\:max-w-\[88px\]{max-width:88px}.sm\:scroll-mt-20{scroll-margin-top:5rem}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.sm\:rounded-2xl{border-radius:1rem}.sm\:\!pt-32{padding-top:8rem!important}.sm\:pb-24{padding-bottom:6rem}.sm\:pb-8{padding-bottom:2rem}.sm\:pt-16{padding-top:4rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:768px){.md\:mt-5{margin-top:1.25rem}.md\:mt-7{margin-top:1.75rem}.md\:max-w-\[100px\]{max-width:100px}.md\:\!pt-36{padding-top:9rem!important}.md\:pb-12{padding-bottom:3rem}.md\:pb-28{padding-bottom:7rem}.md\:pt-20{padding-top:5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){@keyframes fadeLeft{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.lg\:animate-fadeLeft{animation:.6s cubic-bezier(.22,1,.36,1) forwards fadeLeft}.lg\:\!pt-40{padding-top:10rem!important}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:opacity-0{opacity:0}}@media (min-width:1280px){.xl\:relative{position:relative}.xl\:-left-\[200px\]{left:-200px}.xl\:top-\[15px\]{top:15px}}
