@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/space-mono-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/space-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/space-mono-700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/space-mono-700-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/space-mono-400i-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/space-mono-400i-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,: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%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Space Mono,monospace;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:Space Mono,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,::-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,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{--background:40 5% 97%;--foreground:0 0% 10%;--muted:0 0% 85%;--muted-foreground:0 0% 42%;--left-w:35vw;--side-margin:9vw;--col-pad-top:4rem}html{scroll-behavior:smooth}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:Space Mono,monospace;font-size:27px;line-height:1.5;overflow-x:hidden}*,:before,:after{font-family:Space Mono,monospace}button{cursor:pointer;color:inherit;font-size:inherit;background:0 0;border:none;padding:0}a{color:inherit;text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}.text-muted{color:hsl(var(--muted-foreground))}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.block{display:block}.inline{display:inline}.table{display:table}.grid{display:grid}.hidden{display:none}.w-full{width:100%}.max-w-4xl{max-width:56rem}.resize{resize:both}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.text-center{text-align:center}.font-serif{font-family:Space Mono,monospace}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-bold{font-weight:700}.blur{--tw-blur:blur(8px);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)}.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.portfolio-layout{z-index:1;min-height:100vh;position:relative}.left-col{top:0;left:var(--side-margin);width:var(--left-w);background-color:hsl(var(--background));overflow-wrap:break-word;z-index:10;flex-direction:column;height:100vh;padding:3rem 2rem;font-size:22px;line-height:1.5;display:flex;position:fixed;overflow-y:auto}.left-top{margin-bottom:1.5rem}.dual-clock{flex-direction:column;gap:.1em;margin-top:.5em;display:flex}.dual-clock__row{align-items:baseline;gap:.6em;display:flex}.dual-clock__row--you{padding-left:1.35ch}.dual-clock__time,.dual-clock__label,.dual-clock__prefix{font-variant-numeric:tabular-nums}.dual-clock__offset{opacity:.45}.left-nav{flex-direction:column;gap:.25rem;margin-bottom:1.5rem;display:flex}.nav-btn{text-align:left;color:hsl(var(--muted-foreground));font-size:22px;line-height:1.5;transition:color .15s}.nav-btn:hover{color:hsl(var(--foreground))}.nav-btn--active{color:hsl(var(--foreground));text-underline-offset:3px;text-decoration:underline}.preview-zone{flex-direction:column;flex:1;justify-content:flex-end;padding-bottom:1.5rem;display:flex}.left-col--compact{justify-content:center}.left-col--compact .preview-zone{flex:0;min-height:5rem;padding-bottom:0}.preview-img{aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover;width:100%;animation:.12s forwards fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.left-socials{flex-direction:column;gap:.1rem;margin-bottom:.4rem;font-size:22px;line-height:1.5;display:flex}.pl-social{padding-left:2em}.left-email{overflow-wrap:break-word;font-size:22px;line-height:1.5}.right-col{margin-left:calc(var(--side-margin) + var(--left-w));width:calc(100% - var(--side-margin) - var(--left-w));padding:var(--col-pad-top) var(--side-margin) 6rem 2rem;box-sizing:border-box;min-height:100vh}.right-col--home{flex-direction:column;justify-content:center;padding-top:6rem;padding-left:5rem;display:flex}.right-col--skills{flex-direction:column;justify-content:center;display:flex}.section-head{color:hsl(var(--muted-foreground));margin-bottom:2rem;font-size:22px}.bio-para{margin-bottom:1.5rem;font-size:25px;line-height:1.65}.skills-grid{flex-direction:column;gap:.6rem;display:flex}.skill-row{grid-template-columns:7.5em 1fr;font-size:22px;line-height:1.5;display:grid}.project-list{flex-direction:column;gap:2rem;display:flex}.project-title-link{margin-bottom:0;display:block}.project-title-link:hover{text-decoration:none}.project-title-link:hover .project-title-text{text-underline-offset:3px;text-decoration:underline}.project-title-text{font-size:28px;font-weight:400;line-height:1.4}.project-meta{flex-direction:column;gap:.15rem;margin-top:.5rem;padding-left:1.5rem;font-size:20px;line-height:1.5;display:flex}.project-meta>div{grid-template-columns:5em 1fr;display:grid}.cert-columns{grid-template-columns:1fr 1fr;gap:2.5rem;display:grid}.cert-col{flex-direction:column;gap:2.5rem;display:flex}.cert-card-header{align-items:flex-start;gap:14px;margin-bottom:10px;display:flex}.cert-badge{-o-object-fit:contain;object-fit:contain;flex-shrink:0;width:56px;height:56px}.cert-card-name{margin-bottom:3px;font-size:20px;font-weight:700;line-height:1.35}.cert-card-org{font-size:18px;line-height:1.4}.cert-card-status{border:1px solid hsl(var(--muted));color:hsl(var(--muted-foreground));letter-spacing:.03em;margin-top:4px;padding:1px 7px;font-size:16px;display:inline-block}.cert-card-desc{color:hsl(var(--muted-foreground));margin:0 0 8px;font-size:18px;line-height:1.65}.cert-card-bullets{flex-direction:column;gap:3px;margin:0 0 10px;padding:0;list-style:none;display:flex}.cert-card-bullets li{padding-left:14px;font-size:17px;line-height:1.55;position:relative}.cert-card-bullets li:before{content:"·";color:hsl(var(--muted-foreground));position:absolute;left:4px}.cert-card-verify{letter-spacing:.04em;color:hsl(var(--muted-foreground));font-size:17px;transition:color .15s}.cert-card-verify:hover{color:hsl(var(--foreground));text-decoration:none}.edu-entry{border-top:1px solid hsl(var(--muted));align-items:flex-start;gap:14px;padding-top:2rem;display:flex}.edu-entry-logo{-o-object-fit:contain;object-fit:contain;flex-shrink:0;width:56px;height:56px}.edu-entry-degree{margin-bottom:3px;font-size:20px;font-weight:700;line-height:1.35}.edu-entry-institution{font-size:18px;line-height:1.4}.edu-entry-desc{margin-top:8px;font-size:18px;line-height:1.65}.skill-categories{flex-direction:column;gap:3rem;display:flex}.skill-category-header{margin-bottom:.75rem}.skill-category-name{font-size:20px;font-weight:700}.skill-category-subtitle{font-size:18px}.skill-icons{flex-wrap:wrap;gap:3.5rem;display:flex}.skill-icon-item{flex-direction:column;align-items:center;gap:6px;width:52px;display:flex}.skill-icon-img{-o-object-fit:contain;object-fit:contain;width:36px;height:36px}.skill-icon-name{text-align:center;color:hsl(var(--muted-foreground));font-size:14px;line-height:1.2}.pp-wrapper{z-index:1;background-color:hsl(var(--background));min-height:100vh;color:hsl(var(--foreground));animation:.35s pp-fadein;position:relative}@keyframes pp-fadein{0%{opacity:0}to{opacity:1}}.pp-header{z-index:100;background:linear-gradient(to bottom, hsl(var(--background) / .85) 0%, transparent 100%);justify-content:space-between;align-items:center;padding:22px 48px;display:flex;position:fixed;top:0;left:0;right:0}.pp-back{color:hsl(var(--muted-foreground));letter-spacing:.02em;font-size:22px;text-decoration:none;transition:color .15s}.pp-back:hover{color:hsl(var(--foreground));text-decoration:none}.pp-counter{color:hsl(var(--muted-foreground));font-size:22px}.pp-hero{height:70vh;display:flex}.pp-hero-img-wrap{box-sizing:border-box;cursor:pointer;background:#e0e0e0;flex-direction:column;flex-shrink:0;width:50%;height:100%;padding-top:88px;display:flex;position:relative;overflow:hidden}.pp-hero-img{-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;box-sizing:border-box;flex:1;width:100%;min-height:0;padding:40px;display:block}.pp-diagram-expand{cursor:pointer;z-index:10;background:#ffffffd9;border:none;border-radius:4px;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;transition:background .15s;display:flex;position:absolute;bottom:14px;right:14px}.pp-diagram-expand:hover{background:#fff}.pp-gallery-zoom{cursor:zoom-in;position:relative}.pp-lightbox{z-index:2000;cursor:zoom-out;background:#000000e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pp-lightbox-img{-o-object-fit:contain;object-fit:contain;cursor:default;max-width:92vw;max-height:92vh;box-shadow:0 20px 80px #0009}.pp-lightbox-close{color:#fff;cursor:pointer;z-index:2001;background:#ffffff26;border:1px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;transition:background .15s;display:flex;position:fixed;top:20px;right:24px}.pp-lightbox-close:hover{background:#ffffff47}.pp-hero-placeholder{flex:1;justify-content:center;align-items:center;font-size:18px;display:flex}.pp-hero-diagram-caption{background:hsl(var(--background));border-top:1px solid hsl(var(--muted));flex-shrink:0;padding:16px 28px}.pp-hero-diagram-title{margin-bottom:4px;font-size:18px;font-weight:700}.pp-hero-diagram-sub{color:hsl(var(--muted-foreground));font-size:16px;line-height:1.4}.pp-hero-info{box-sizing:border-box;background-color:hsl(var(--background));flex-direction:column;justify-content:center;width:50%;height:100%;padding:120px 64px 100px;display:flex;overflow-y:auto}.pp-num{letter-spacing:.04em;margin-bottom:14px;font-size:22px;display:block}.pp-title{margin:0 0 20px;font-size:33px;font-weight:700;line-height:1.15}.pp-tagline{color:hsl(var(--muted-foreground));margin:0 0 40px;font-size:20px;line-height:1.55}.pp-meta{flex-direction:column;gap:20px;display:flex}.pp-meta-row{grid-template-columns:110px 1fr;font-size:22px;line-height:1.5;display:grid}.pp-meta-label{color:hsl(var(--muted-foreground));flex-shrink:0}.pp-gallery{flex-direction:column;display:flex}.pp-gallery-item{box-sizing:border-box;background:#ebebeb;justify-content:center;width:100%;padding:28px 36px;display:flex}.pp-gallery-item>.pp-gallery-item-img{aspect-ratio:16/9;flex-shrink:0;width:70%;overflow:hidden}.pp-gallery-item>.pp-gallery-item-img img{-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;width:100%;height:100%;display:block}.pp-gallery-item-block{flex-direction:column;flex-shrink:0;width:70%;display:flex}.pp-gallery-caption{background:hsl(var(--background));border-bottom:1px solid hsl(var(--muted));box-sizing:border-box;width:100%;padding:14px 20px}.pp-gallery-caption-title{margin-bottom:5px;font-size:18px;font-weight:700}.pp-gallery-caption-sub{color:hsl(var(--muted-foreground));font-size:16px;line-height:1.5}.pp-gallery-item-block .pp-gallery-item-img{aspect-ratio:16/9;width:100%;overflow:hidden}.pp-gallery-item-block .pp-gallery-item-img img{-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;width:100%;height:100%;display:block}.pp-gallery-item-block .pp-gallery-item-img video{-o-object-fit:contain;object-fit:contain;background:#0f0f0f;width:100%;height:100%;display:block}.pp-demo{background:#0f0f0f;gap:0;width:100%;max-height:70vh;display:flex;overflow:hidden}.pp-gallery-item--video{background:#141414}.pp-gallery-item--video .pp-demo{aspect-ratio:16/9;width:70%;max-height:unset;flex-shrink:0;overflow:hidden}.pp-gallery-item--video .pp-demo-desktop{width:100%;height:100%}.pp-gallery-item--video .pp-demo-video{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.pp-demo-desktop{flex:1;min-width:0;overflow:hidden}.pp-demo-ios{display:none}.pp-demo-video{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.pp-deep{box-sizing:border-box;width:100%;padding:100px 8vw}.pp-deep--alt{background:#f5f5f5}.pp-body{color:hsl(var(--foreground));margin-bottom:28px;font-size:22px;line-height:1.75}.pp-body:last-child{margin-bottom:0}.pp-rich{flex-direction:column;gap:0;max-width:840px;margin:0 auto;display:flex}.pp-rich-section{border-bottom:1px solid hsl(var(--muted));flex-direction:column;gap:1rem;padding:2.5rem 0;display:flex}.pp-rich-section:first-child{padding-top:0}.pp-rich-section:last-child{border-bottom:none}.pp-rich-heading{margin:0 0 .4rem;font-size:24px;font-weight:700;line-height:1.3}.pp-rich-para{margin:0;font-size:20px;line-height:1.75}.pp-rich-flow{border-left:3px solid hsl(var(--foreground));background:#f2f2f2;margin:0;padding:14px 20px;font-size:18px;line-height:1.5;overflow-x:auto}.pp-rich-list{flex-direction:column;gap:.35rem;margin:0;padding-left:1.5rem;display:flex}.pp-rich-list li{font-size:20px;line-height:1.5}.pp-rich-subsection{margin-top:.5rem}.pp-rich-list--ordered{list-style:decimal}.pp-rich-details{border-top:1px solid hsl(var(--muted));padding-top:.75rem}.pp-rich-details>summary{cursor:pointer;justify-content:space-between;gap:1rem;margin:0;list-style:none;display:flex}.pp-rich-details>summary::-webkit-details-marker{display:none}.pp-rich-details>summary:after{content:"+";color:hsl(var(--muted-foreground));flex-shrink:0}.pp-rich-details[open]>summary:after{content:"-"}.pp-rich-details-body{flex-direction:column;gap:.75rem;padding:.5rem 0 .25rem;display:flex}.pp-rich-subheading{margin:0 0 .5rem;font-size:18px;font-weight:700}.pp-rich-table{border-collapse:collapse;width:100%;font-size:18px}.pp-rich-table th{text-align:left;background:hsl(var(--foreground));color:hsl(var(--background));padding:10px 16px;font-weight:700}.pp-rich-table td{border-bottom:1px solid hsl(var(--muted));vertical-align:top;padding:10px 16px}.pp-rich-table tr:nth-child(2n) td{background:#f2f2f2}.pp-rich-code{color:#e0e0e0;white-space:pre;background:#1a1a1a;border-radius:2px;margin:0;padding:16px 20px;font-size:15px;line-height:1.65;overflow-x:auto}.pp-next-section{background-color:hsl(var(--background));height:300vh;position:relative}.pp-next-card{z-index:50;background:#d4d4d4;position:fixed;overflow:hidden;box-shadow:0 24px 80px #00000026}.pp-next-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.pp-next-label{letter-spacing:.06em;color:hsl(var(--muted-foreground));z-index:51;pointer-events:none;font-size:22px;position:fixed;top:10vh;right:7vw}.pp-next-meta{z-index:51;pointer-events:none;flex-direction:column;align-items:flex-end;gap:10px;max-width:40vw;display:flex;position:fixed;bottom:14vh;right:7vw}.pp-next-title{text-align:right;color:hsl(var(--foreground));margin:0;font-size:23px;font-weight:700;line-height:1.2}.pp-next-stack{text-align:right;color:hsl(var(--muted-foreground));margin:0;font-size:22px}.pp-not-found{flex-direction:column;gap:16px;padding:80px 48px;font-size:16px;display:flex}@media (width<=799px){:root{--u:calc(100vw / 393)}body{font-size:calc(14 * var(--u));line-height:1.5}a:hover{text-decoration:none}.m-home{z-index:1;min-height:100vh;padding:calc(20 * var(--u)) calc(20 * var(--u)) calc(60 * var(--u));font-size:calc(14 * var(--u));line-height:1.5;position:relative}.m-bio p{margin:0 0 1.5em}.m-bio p:last-child{margin-bottom:0}.m-section{margin-top:calc(40 * var(--u))}.m-section-head{margin-bottom:calc(40 * var(--u))}.m-project{margin-bottom:calc(20 * var(--u))}.m-project-title{gap:.5em;display:flex}.m-project-meta{margin-top:calc(20 * var(--u));padding-left:calc(33 * var(--u));gap:calc(12 * var(--u));font-size:calc(12 * var(--u));flex-direction:column;line-height:1.5;display:flex}.m-meta-row{grid-template-columns:calc(67 * var(--u)) 1fr;display:grid}.m-skill-category{margin-bottom:calc(24 * var(--u))}.m-skill-icons{gap:calc(16 * var(--u)) calc(20 * var(--u));margin-top:calc(12 * var(--u));padding-left:calc(33 * var(--u));flex-wrap:wrap;display:flex}.m-skill-icon{align-items:center;gap:calc(4 * var(--u));width:calc(48 * var(--u));font-size:calc(10 * var(--u));text-align:center;flex-direction:column;line-height:1.2;display:flex}.m-skill-icon img,.m-skill-icon svg{width:calc(28 * var(--u));height:calc(28 * var(--u));-o-object-fit:contain;object-fit:contain}.m-certs{gap:calc(28 * var(--u));flex-direction:column;display:flex}.m-certs .cert-card-header{gap:calc(12 * var(--u));margin-bottom:calc(8 * var(--u))}.m-certs .cert-badge,.m-certs .edu-entry-logo{width:calc(40 * var(--u));height:calc(40 * var(--u))}.m-certs .cert-card-name,.m-certs .edu-entry-degree{font-size:calc(13 * var(--u))}.m-certs .cert-card-org,.m-certs .edu-entry-institution,.m-certs .cert-card-desc,.m-certs .edu-entry-desc,.m-certs .cert-card-bullets li,.m-certs .cert-card-verify{font-size:calc(12 * var(--u))}.m-certs .cert-card-status{font-size:calc(11 * var(--u))}.m-certs .cert-card-bullets li{padding-left:calc(12 * var(--u))}.m-certs .edu-entry{gap:calc(12 * var(--u));padding-top:calc(24 * var(--u))}.m-top{justify-content:space-between;align-items:flex-start;gap:calc(12 * var(--u));margin-bottom:calc(40 * var(--u));font-size:calc(12 * var(--u));line-height:1.5;display:flex}.m-top-col{gap:calc(18 * var(--u));flex-direction:column;min-width:0;display:flex}.m-top-email{overflow-wrap:anywhere}.m-footer-row{grid-template-columns:calc(15 * var(--u)) 1fr;display:grid}.m-footer-links{flex-direction:column;display:flex}.m-top .dual-clock{gap:0;margin-top:0}.m-top .dual-clock__row{gap:.6em}.m-top .dual-clock__prefix{width:calc(15 * var(--u));margin-right:-.6em}.m-top .dual-clock__row--you{padding-left:calc(15 * var(--u))}.pp-header{padding:calc(16 * var(--u)) calc(20 * var(--u))}.pp-back,.pp-counter{font-size:calc(12 * var(--u))}.pp-hero{flex-direction:column;height:auto}.pp-hero-img-wrap{width:100%;height:118vw;padding-top:calc(52 * var(--u))}.pp-hero-diagram-caption{padding:calc(10 * var(--u)) calc(20 * var(--u))}.pp-hero-diagram-title{font-size:calc(12 * var(--u));margin-bottom:calc(2 * var(--u))}.pp-hero-diagram-sub{font-size:calc(11 * var(--u))}.pp-hero-img{padding:calc(14 * var(--u))}.pp-hero-placeholder{font-size:calc(12 * var(--u))}.pp-diagram-expand{width:calc(30 * var(--u));height:calc(30 * var(--u));font-size:calc(14 * var(--u));bottom:calc(10 * var(--u));right:calc(10 * var(--u))}.pp-hero-info{width:100%;height:auto;padding:calc(32 * var(--u)) calc(20 * var(--u)) calc(40 * var(--u));overflow:visible}.pp-title{font-size:calc(20 * var(--u));margin-bottom:calc(12 * var(--u))}.pp-tagline{font-size:calc(13 * var(--u));margin-bottom:calc(24 * var(--u))}.pp-meta{gap:calc(12 * var(--u))}.pp-meta-row{grid-template-columns:calc(67 * var(--u)) 1fr;font-size:calc(12 * var(--u))}.pp-meta-row a{overflow-wrap:anywhere}.pp-gallery-item{padding:calc(20 * var(--u)) calc(20 * var(--u))}.pp-gallery-item>.pp-gallery-item-img,.pp-gallery-item-block,.pp-gallery-item--video .pp-demo{width:100%}.pp-gallery-caption{padding:calc(10 * var(--u)) calc(14 * var(--u))}.pp-gallery-caption-title{font-size:calc(12 * var(--u));margin-bottom:calc(3 * var(--u))}.pp-gallery-caption-sub{font-size:calc(11 * var(--u))}.pp-deep{padding:calc(48 * var(--u)) calc(20 * var(--u))}.pp-body{font-size:calc(13 * var(--u))}.pp-rich-section{padding:calc(28 * var(--u)) 0;gap:calc(12 * var(--u))}.pp-rich-heading{font-size:calc(16 * var(--u))}.pp-rich-subheading{font-size:calc(13 * var(--u))}.pp-rich-para,.pp-rich-list li{font-size:calc(13 * var(--u));line-height:1.6}.pp-rich-list{padding-left:calc(18 * var(--u))}.pp-rich-para,.pp-rich-list li,.pp-rich-flow,.pp-gallery-caption-sub,.pp-hero-diagram-sub{overflow-wrap:anywhere}.pp-rich-flow{font-size:calc(12 * var(--u));padding:calc(10 * var(--u)) calc(14 * var(--u))}.pp-rich-code{font-size:calc(10 * var(--u));padding:calc(12 * var(--u)) calc(14 * var(--u))}.pp-rich-table{font-size:calc(11 * var(--u));display:block;overflow-x:auto}.pp-rich-table th,.pp-rich-table td{padding:calc(8 * var(--u)) calc(10 * var(--u));min-width:calc(96 * var(--u))}.pp-next-label{top:calc(64 * var(--u));right:calc(20 * var(--u));font-size:calc(12 * var(--u))}.pp-next-meta{bottom:calc(40 * var(--u));right:calc(20 * var(--u));left:calc(20 * var(--u));gap:calc(6 * var(--u));max-width:none}.pp-next-title{font-size:calc(14 * var(--u))}.pp-next-stack{font-size:calc(12 * var(--u))}.pp-lightbox-close{top:calc(12 * var(--u));right:calc(12 * var(--u))}.pp-not-found{padding:calc(60 * var(--u)) calc(20 * var(--u));font-size:calc(14 * var(--u))}}@media (width>=800px) and (width<=1279px){:root{--left-w:36vw;--side-margin:4vw;--col-pad-top:3rem}body{font-size:18px}.left-col{padding:2.25rem 1.5rem;font-size:16px}.nav-btn,.left-socials,.left-email{font-size:16px}.left-email{overflow-wrap:anywhere}.right-col{padding:var(--col-pad-top) var(--side-margin) 4rem 1.5rem}.right-col--home{padding-top:4rem;padding-left:2.5rem}.bio-para{font-size:18px}.section-head{margin-bottom:1.5rem;font-size:16px}.project-list{gap:1.5rem}.project-title-text{font-size:20px}.project-meta{padding-left:1rem;font-size:14px}.project-meta>div{grid-template-columns:4.5em 1fr}.skill-categories{gap:2rem}.skill-category-name{font-size:16px}.skill-category-subtitle{font-size:14px}.skill-icons{gap:1.75rem}.cert-columns{grid-template-columns:1fr;gap:2rem}.cert-col{gap:2rem}.cert-badge,.edu-entry-logo{width:44px;height:44px}.cert-card-name,.edu-entry-degree{font-size:16px}.cert-card-org,.cert-card-desc,.cert-card-bullets li,.cert-card-verify,.edu-entry-institution,.edu-entry-desc{font-size:14px}.cert-card-status{font-size:13px}.pp-header{padding:18px 32px}.pp-back,.pp-counter{font-size:16px}.pp-hero{height:auto;min-height:70vh}.pp-hero-img-wrap{height:auto;padding-top:68px}.pp-hero-img{padding:24px}.pp-hero-diagram-caption{padding:12px 20px}.pp-hero-diagram-title{font-size:15px}.pp-hero-diagram-sub{font-size:13px}.pp-hero-info{height:auto;padding:96px 36px 48px;overflow:visible}.pp-title{margin-bottom:14px;font-size:24px}.pp-tagline{margin-bottom:24px;font-size:15px}.pp-meta{gap:12px}.pp-meta-row{grid-template-columns:84px minmax(0,1fr);font-size:15px}.pp-meta-row a{overflow-wrap:anywhere}.pp-gallery-item{padding:24px}.pp-gallery-item>.pp-gallery-item-img,.pp-gallery-item-block,.pp-gallery-item--video .pp-demo{width:82%}.pp-gallery-caption-title{font-size:15px}.pp-gallery-caption-sub{font-size:13px}.pp-deep{padding:64px 6vw}.pp-rich-heading{font-size:20px}.pp-rich-subheading,.pp-rich-para,.pp-rich-list li{font-size:16px}.pp-rich-flow{font-size:15px}.pp-rich-code{font-size:13px}.pp-rich-table{font-size:14px;display:block;overflow-x:auto}.pp-next-label,.pp-next-stack{font-size:16px}.pp-next-title{font-size:18px}.pp-next-meta{max-width:50vw}}@media (width>=1280px){.pp-hero{height:auto;min-height:70vh}.pp-hero-img-wrap{height:auto}.pp-hero-info{height:auto;overflow:visible}.pp-meta-row{grid-template-columns:110px minmax(0,1fr)}}@media (width>=800px){.pp-hero-img{flex:1 1 0;height:0}.pp-meta-row a{overflow-wrap:anywhere}}.hover\:underline:hover{text-decoration-line:underline}@media (width>=768px){.md\:px-12{padding-left:3rem;padding-right:3rem}}
