@font-face{font-stretch:62% 125%;font-family:archivo;src:url(../media/Archivo_Variable-s.p.3b1_7etm2gpf5.woff2)format("woff2");font-display:swap;font-weight:100 900;font-style:normal}@font-face{font-family:archivo Fallback;src:local(Arial);ascent-override:85.41%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:102.8%}.Ju2nzq_className{font-family:archivo,archivo Fallback;font-style:normal}.Ju2nzq_variable{--font-archivo:"archivo", "archivo Fallback"}
:root{--bg:#e8ecea;--surface:#f3f5f4;--ink:#1b2229;--ink-2:#4b5660;--ink-3:#6b767f;--line:#c6cecb;--line-strong:#9aa5a1;--accent:#2440d8;--accent-ink:#fff;--lcd:#2440d8;--lcd-on:#e8efff;--lcd-off:#ffffff17;--board:#1d5a44;--board-edge:#154434;--bezel:#15191c;--led-red:#d7263d;--led-green:#23a455;--cap:#2a3138;--cap-top:#39424a;--tag-embedded:#2440d8;--tag-mechatronics:#1d6b52;--tag-manufacturing:#8a5a00;--tag-software:#7a3db8;--font:var(--font-archivo), "Archivo", system-ui, sans-serif;--wrap:1200px;--gutter:clamp(16px, 4vw, 40px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#13171a;--surface:#1a1f23;--ink:#e3e8e6;--ink-2:#a7b1b7;--ink-3:#87929a;--line:#2b3338;--line-strong:#46525a;--accent:#8a9cff;--accent-ink:#0e1430;--lcd:#1f37c2;--board:#18493a;--board-edge:#10362a;--bezel:#0a0c0e;--cap:#3a434b;--cap-top:#4b555e;--tag-embedded:#8a9cff;--tag-mechatronics:#5cc79f;--tag-manufacturing:#e0aa45;--tag-software:#c79bf2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#13171a;--surface:#1a1f23;--ink:#e3e8e6;--ink-2:#a7b1b7;--ink-3:#87929a;--line:#2b3338;--line-strong:#46525a;--accent:#8a9cff;--accent-ink:#0e1430;--lcd:#1f37c2;--board:#18493a;--board-edge:#10362a;--bezel:#0a0c0e;--cap:#3a434b;--cap-top:#4b555e;--tag-embedded:#8a9cff;--tag-mechatronics:#5cc79f;--tag-manufacturing:#e0aa45;--tag-software:#c79bf2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font-family:var(--font);text-rendering:optimizelegibility;margin:0;font-size:17px;font-stretch:100%;line-height:1.6}img{max-width:100%;height:auto;display:block}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.wrap{max-width:var(--wrap);padding-inline:var(--gutter);margin-inline:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip{background:var(--ink);color:var(--bg);z-index:50;padding:8px 14px;position:absolute;top:-60px;left:8px}.skip:focus{top:8px}.site-header{border-bottom:1px solid var(--line)}.site-header__inner{justify-content:space-between;align-items:center;gap:16px;min-height:64px;display:flex}.wordmark{letter-spacing:.01em;font-size:15px;font-weight:800;font-stretch:125%;text-decoration:none}.site-nav{align-items:center;gap:clamp(12px,2.4vw,28px);font-size:15px;font-stretch:90%;display:flex}.site-nav a{color:var(--ink-2);text-decoration:none}.site-nav a:hover{color:var(--ink)}.theme-toggle{border:1px solid var(--line);cursor:pointer;width:36px;height:36px;color:var(--ink-2);background:0 0;border-radius:50%;place-items:center;display:grid}.theme-toggle:hover{color:var(--ink);border-color:var(--line-strong)}@media (max-width:560px){.site-header__inner{flex-wrap:wrap;padding-block:10px}.site-nav{justify-content:space-between;width:100%}}.site-footer{border-top:1px solid var(--line);color:var(--ink-3);margin-top:0;font-size:14px}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;gap:8px;padding-block:28px;display:flex}.btn{border:1.5px solid var(--ink);cursor:pointer;background:0 0;border-radius:3px;align-items:center;min-height:44px;padding:0 18px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:color-mix(in srgb, var(--ink) 7%, transparent)}.btn--solid{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--solid:hover{background:color-mix(in srgb, var(--accent) 86%, var(--ink))}.link-btn{color:var(--accent);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.text-link{color:var(--accent);text-underline-offset:3px}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:clamp(32px,6vw,80px);padding-top:clamp(40px,8vw,96px);padding-bottom:clamp(48px,8vw,104px);display:grid}.hero__name{letter-spacing:-.02em;margin-bottom:28px;font-size:clamp(42px,6.1vw,82px);font-weight:850;font-stretch:125%;line-height:.92}.hero__pitch{max-width:36em;min-height:6em;color:var(--ink);font-size:clamp(18px,1.7vw,21px);line-height:1.5}.hero__meta{color:var(--ink-3);margin-top:14px;font-size:15px;font-stretch:92%}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.hero__panel{flex-direction:column;gap:22px;display:flex}@media (max-width:900px){.hero{grid-template-columns:1fr}.hero__pitch{min-height:0}}.lcd__board{background:var(--board);border:1px solid var(--board-edge);border-radius:6px;padding:11% 4.5% 7%;position:relative;box-shadow:inset 0 1px #ffffff0f,0 18px 40px -24px #0a1e1499}.lcd__hole{aspect-ratio:1;background:var(--bg);border-radius:50%;width:3.2%;position:absolute;box-shadow:0 0 0 3px #c9b26a}.lcd__hole--tl{top:6%;left:2%}.lcd__hole--tr{top:6%;right:2%}.lcd__hole--bl{bottom:7%;left:2%}.lcd__hole--br{bottom:7%;right:2%}.lcd__header{gap:1.1%;width:40%;display:flex;position:absolute;top:3.6%;left:8%}.lcd__header i{aspect-ratio:1;background:#d8c27a;border-radius:50%;flex:1;box-shadow:inset 0 0 0 1px #00000040}.lcd__silk{color:#ffffffbf;letter-spacing:.08em;font-size:clamp(9px,1vw,12px);font-weight:600;font-stretch:80%;position:absolute;top:3%;right:8%}.lcd__bezel{background:var(--bezel);border-radius:2px;padding:4.2% 4%}.lcd__glass{background:var(--lcd);border-radius:1px;width:100%;height:auto;display:block;box-shadow:inset 0 0 24px #5078ff59}.lcd__on{fill:var(--lcd-on)}.lcd__off{fill:var(--lcd-off)}.lcd__cursor{animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.lcd__cursor{animation:none}}.switches{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.switch{cursor:pointer;background:0 0;border:0;border-radius:6px;flex-direction:column;align-items:center;gap:8px;padding:10px 4px 8px;display:flex}.switch:hover .switch__label{color:var(--ink)}.switch__led{background:color-mix(in srgb, var(--led-green) 22%, var(--line));border-radius:50%;width:8px;height:8px;transition:background-color .15s,box-shadow .15s}.switch[aria-pressed=true] .switch__led{background:var(--led-green);box-shadow:0 0 10px 1px color-mix(in srgb, var(--led-green) 70%, transparent)}.switch__body{aspect-ratio:1;background:#1e2328;border-radius:4px;place-items:center;width:clamp(46px,6vw,58px);display:grid;position:relative;box-shadow:0 2px #0d1012,inset 0 0 0 1px #0d1012}.switch__body:before,.switch__body:after{content:"";background:#3a4249;border-radius:50%;width:5px;height:5px;position:absolute;top:5px;left:5px;box-shadow:calc(clamp(46px,6vw,58px) - 15px) 0 #3a4249}.switch__body:after{top:auto;bottom:5px}.switch__cap{aspect-ratio:1;background:radial-gradient(circle at 40% 35%, var(--cap-top), var(--cap) 70%);border-radius:50%;width:62%;transition:transform 80ms,box-shadow 80ms,background .15s;transform:translateY(-2px);box-shadow:0 3px #0a0c0e,0 0 0 1px #00000080}.switch:active .switch__cap,.switch[aria-pressed=true] .switch__cap{transform:translateY(1px);box-shadow:0 0 #0a0c0e,0 0 0 1px #00000080}.switch[aria-pressed=true] .switch__cap{background:radial-gradient(circle at 40% 35%, color-mix(in srgb, var(--lcd) 70%, white), var(--lcd) 70%)}.switch__label{color:var(--ink-2);font-size:14px;font-weight:600;font-stretch:88%}.switch[aria-pressed=true] .switch__label{color:var(--ink)}.switches__hint{color:var(--ink-3);text-align:center;min-height:1.6em;font-size:14px}.section{border-top:1px solid var(--line);padding-block:clamp(56px,8vw,104px)}.section__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 32px;margin-bottom:clamp(28px,4vw,44px);display:flex}.section__title{letter-spacing:-.015em;font-size:clamp(30px,4vw,48px);font-weight:800;font-stretch:125%;line-height:1.05}.section__note{color:var(--ink-3);max-width:34em;font-size:15px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.6vw,32px);display:grid}.card{min-width:0}.card--lead{grid-area:span 2/span 2}.card__link{border-top:2px solid var(--ink);flex-direction:column;height:100%;padding-top:14px;text-decoration:none;display:flex}.card__media{aspect-ratio:4/3;background:var(--surface);border-radius:2px;margin-bottom:14px;overflow:hidden}.card--lead .card__media{aspect-ratio:16/11}.card__media img{object-fit:cover;width:100%;height:100%}.card__media .plate{height:100%}.card__title{font-size:20px;font-weight:700;font-stretch:112%;line-height:1.2}.card--lead .card__title{font-size:clamp(24px,2.6vw,32px)}.card__link:hover .card__title{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}.card__context{color:var(--ink-3);margin-top:4px;font-size:14px;font-stretch:90%}.card__summary{color:var(--ink-2);margin-top:10px;font-size:16px;line-height:1.5}.card--lead .card__summary{max-width:34em;font-size:18px}.card__tags{flex-wrap:wrap;gap:6px 12px;margin-top:auto;padding-top:12px;display:flex}.tag{align-items:center;gap:6px;font-size:13px;font-weight:600;font-stretch:88%;display:inline-flex}.tag:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.tag--embedded{color:var(--tag-embedded)}.tag--mechatronics{color:var(--tag-mechatronics)}.tag--manufacturing{color:var(--tag-manufacturing)}.tag--software{color:var(--tag-software)}@media (max-width:960px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.card--lead{grid-row:auto}}@media (max-width:620px){.grid{grid-template-columns:1fr}.card--lead{grid-column:auto}}.others{border-top:1px solid var(--line);margin-top:48px;padding-top:18px}.others summary{cursor:pointer;color:var(--ink-2);width:fit-content;font-weight:600}.others[open] summary{margin-bottom:28px}.grid--compact .card__summary{display:none}.more{margin-top:clamp(48px,6vw,72px)}.more__title{margin-bottom:14px;font-size:20px;font-weight:700;font-stretch:112%}.more__list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px;display:grid}.more__item{border-top:1px solid var(--line);align-content:start;gap:2px;padding:14px 0;display:grid}.more__name{font-weight:600}.more__text{color:var(--ink-2);font-size:15px;line-height:1.5}@media (max-width:760px){.more__list{grid-template-columns:1fr}}.plate{background-color:var(--surface);background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);background-position:-1px -1px;background-size:24px 24px;place-items:center;width:100%;height:100%;min-height:220px;padding:7%;display:grid}.plate svg{width:100%;height:auto;max-height:100%;overflow:visible}.plate__frame{fill:var(--surface);stroke:var(--ink);stroke-width:1.4px}.plate__wall{stroke:var(--ink);stroke-width:1.4px;stroke-linecap:square;fill:none}.plate__path{fill:none;stroke:var(--accent);stroke-width:2.4px;stroke-linejoin:round;stroke-linecap:round}.plate__node{fill:var(--accent)}.plate__box{fill:var(--surface);stroke:var(--ink);stroke-width:1.4px}.plate__t{fill:var(--ink);font-size:15px;font-weight:700;font-family:var(--font)}.plate__s{fill:var(--ink-3);font-size:12px;font-family:var(--font)}.plate__arrow{fill:none;stroke:var(--accent);stroke-width:1.6px}.plate__bar-before{fill:var(--line-strong)}.plate__bar-after{fill:var(--accent)}.plate__barlabel{fill:var(--surface);font-size:10px;font-weight:700;font-family:var(--font)}.exp{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(32px,6vw,80px);display:grid}.timeline__item{border-top:1px solid var(--line);grid-template-columns:9.5em minmax(0,1fr);gap:20px;padding:22px 0;display:grid}.timeline__item:first-child{border-top:2px solid var(--ink)}.timeline__when{color:var(--ink-3);padding-top:3px;font-size:14px;font-stretch:90%}.timeline__role{font-size:19px;font-weight:700;font-stretch:108%;line-height:1.3}.timeline__org{color:var(--ink-2);font-size:15px}.timeline__text{color:var(--ink-2);max-width:38em;margin-top:8px}.timeline__text+p{margin-top:8px}.edu{border-top:2px solid var(--ink);padding-top:22px}.edu__title{margin-bottom:8px;font-size:19px;font-weight:700;font-stretch:108%}.edu__list li{border-bottom:1px solid var(--line);padding:12px 0}.edu__degree{font-weight:600;line-height:1.35}.edu__where{color:var(--ink-2);font-size:15px}.edu__gpa{color:var(--ink-3);font-size:14px}.edu__ea{color:var(--ink-2);margin-top:16px;font-size:15px}@media (max-width:860px){.exp{grid-template-columns:1fr}}@media (max-width:520px){.timeline__item{grid-template-columns:1fr;gap:4px}}.skills{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,2.6vw,32px);display:grid}.skills__col{border-top:2px solid var(--ink);padding-top:14px;transition:opacity .2s}.skills__col.is-dim{opacity:.38}.skills__lens{margin-bottom:8px;font-size:18px;font-weight:700;font-stretch:112%}.skills__group{border-bottom:1px solid var(--line);padding:10px 0}.skills__group dt{color:var(--ink);font-size:14px;font-weight:600}.skills__group dd{color:var(--ink-2);font-size:14.5px;line-height:1.5}@media (max-width:960px){.skills{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.skills{grid-template-columns:1fr}}.about{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,80px);display:grid}.about__text p{max-width:34em;color:var(--ink-2);margin-top:18px}.about__text p:first-of-type{color:var(--ink);font-size:19px}.early__title{font-size:19px;font-weight:700;font-stretch:108%}.early__note{color:var(--ink-3);max-width:34em;margin:4px 0 16px;font-size:15px}.early__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.early__grid img{aspect-ratio:1;object-fit:cover;border-radius:2px;width:100%}.early__grid figcaption{color:var(--ink-3);margin-top:6px;font-size:13px;line-height:1.4}@media (max-width:860px){.about{grid-template-columns:1fr}}.section--contact{background:var(--ink);color:var(--bg);border-top:0}.contact{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(32px,6vw,80px);display:grid}.contact__title{letter-spacing:-.02em;font-size:clamp(40px,6vw,76px);font-weight:850;font-stretch:125%;line-height:.95}.contact__lede{max-width:32em;color:color-mix(in srgb, var(--bg) 80%, var(--ink));margin-top:20px;font-size:18px}.contact__links{gap:8px;margin-top:26px;font-size:18px;display:grid}.contact__links a{text-underline-offset:4px}.section--contact :focus-visible{outline-color:var(--bg)}.contact__sub{margin-bottom:10px;font-size:19px;font-weight:700;font-stretch:108%}.cvs{display:grid}.cv{border-top:1px solid color-mix(in srgb, var(--bg) 25%, var(--ink));justify-content:space-between;align-items:center;gap:12px;padding:16px 2px;text-decoration:none;display:flex}.cvs li:last-child .cv{border-bottom:1px solid color-mix(in srgb, var(--bg) 25%, var(--ink))}.cv:hover .cv__name{text-underline-offset:4px;text-decoration:underline}.cv__name{font-weight:600}.cv__meta{opacity:.7;font-size:13px}.cv.is-active .cv__name:before{content:"";background:var(--led-green);width:8px;height:8px;box-shadow:0 0 8px var(--led-green);vertical-align:middle;border-radius:50%;margin-right:10px;display:inline-block}@media (max-width:860px){.contact{grid-template-columns:1fr}}.project{padding-top:28px;padding-bottom:80px}.crumb{font-size:15px}.crumb a{color:var(--ink-2);text-underline-offset:3px}.project__head{gap:24px;margin-top:28px;display:grid}.project__title{letter-spacing:-.02em;max-width:14em;font-size:clamp(36px,6vw,76px);font-weight:850;font-stretch:125%;line-height:.98}.project__meta{border-top:2px solid var(--ink);flex-wrap:wrap;gap:12px 40px;padding-top:14px;display:flex}.project__meta dt{color:var(--ink-3);font-size:13px;font-stretch:90%}.project__meta dd{font-size:15px;font-weight:600}.project__hero{margin-top:32px}.project__hero img{object-fit:contain;background:var(--surface);border-radius:2px;width:100%;max-height:78vh}.project__hero figcaption,.gallery__cap{color:var(--ink-3);margin-top:8px;font-size:13.5px;line-height:1.4}.project__hero .plate{aspect-ratio:16/7;border-radius:2px}.project__hero .plate svg{max-width:720px}.project__cols{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(32px,6vw,80px);margin-top:clamp(36px,5vw,60px);display:grid}.project__main>p{max-width:38em;color:var(--ink-2);margin-top:16px}.project__main>.project__lede{color:var(--ink);margin-top:0;font-size:clamp(20px,2vw,24px);line-height:1.4}.h-sub{margin:clamp(36px,5vw,52px) 0 16px;font-size:clamp(22px,2.4vw,28px);font-weight:800;font-stretch:118%;line-height:1.15}.h-side{margin-bottom:12px;font-size:16px;font-weight:700;font-stretch:108%}.bullets li{border-top:1px solid var(--line);max-width:40em;padding:12px 0 12px 22px;position:relative}.bullets li:before{content:"";background:var(--accent);width:8px;height:2px;position:absolute;top:1.25em;left:2px}.side-block{border-top:2px solid var(--ink);margin-bottom:32px;padding-top:14px}.stack{flex-wrap:wrap;gap:8px;display:flex}.stack li{border:1px solid var(--line-strong);border-radius:2px;padding:4px 10px;font-size:14px;font-weight:500}.facts{gap:14px;display:grid}.facts dt{font-size:32px;font-weight:850;font-stretch:125%;line-height:1}.facts dd{color:var(--ink-2);margin-top:4px;font-size:14.5px}.compare{gap:22px;display:grid}.compare__label{justify-content:space-between;gap:12px;margin-bottom:8px;font-size:15px;font-weight:600;display:flex}.compare__delta{color:var(--led-green);font-weight:700}.compare__bars{gap:4px;display:grid}.compare__bar{border-radius:2px;align-items:center;height:26px;padding-inline:8px;font-size:13px;font-weight:600;display:flex}.compare__bar--before{background:var(--line);color:var(--ink)}.compare__bar--after{background:var(--accent)}.compare__after{font-size:13px;font-weight:600}@media (max-width:860px){.project__cols{grid-template-columns:1fr}}.log__list{border-top:2px solid var(--ink)}.log__item{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 40px;padding:20px 0;display:grid}.log__a,.log__b{grid-template-columns:14px minmax(0,1fr);align-items:start;gap:14px;display:grid}.log__a p{color:var(--ink)}.log__b p{color:var(--ink-2)}.led{border-radius:50%;width:10px;height:10px;margin-top:.55em}.led--red{background:var(--led-red);box-shadow:0 0 8px 1px color-mix(in srgb, var(--led-red) 60%, transparent)}.led--green{background:var(--led-green);box-shadow:0 0 8px 1px color-mix(in srgb, var(--led-green) 60%, transparent)}.log--decision .led--red{background:var(--accent);box-shadow:none}@media (max-width:700px){.log__item{grid-template-columns:1fr}}.gallery{grid-auto-flow:dense;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;display:grid}.gallery__btn{background:var(--surface);cursor:zoom-in;border:0;border-radius:2px;width:100%;padding:0;display:block;overflow:hidden}.gallery__btn img{aspect-ratio:4/3;object-fit:cover;width:100%}.gallery__item.is-tall .gallery__btn img{aspect-ratio:3/4}.gallery__item.is-tall{grid-row:span 2}@media (max-width:860px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}.lightbox{background:var(--surface);width:min(96vw,1400px);max-height:96vh;color:var(--ink);border:0;border-radius:4px;padding:16px}.lightbox::backdrop{background:#080a0cd1}.lightbox__fig img{object-fit:contain;width:100%;max-height:76vh}.lightbox__fig figcaption{justify-content:space-between;gap:16px;margin-top:10px;font-size:15px;display:flex}.lightbox__count{color:var(--ink-3);white-space:nowrap}.lightbox__bar{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.pager{border-top:2px solid var(--ink);grid-template-columns:1fr 1fr;gap:20px;margin-top:clamp(56px,7vw,88px);display:grid}.pager__link{gap:4px;padding-top:16px;text-decoration:none;display:grid}.pager__link--next{text-align:right}.pager__dir{color:var(--ink-3);font-size:14px}.pager__name{font-size:clamp(17px,2vw,22px);font-weight:700;font-stretch:112%;line-height:1.25}.pager__link:hover .pager__name{text-underline-offset:4px;text-decoration:underline}.photos{margin-top:8px}
