@import "https://fonts.googleapis.com/css2?family=SUSE+Mono:wght@400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=SUSE+Mono:wght@400;500;600;700&display=swap";*{font-family:SUSE Mono,monospace}:root{--text:#636375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#f5f3f0;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#f5f3f0;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{border-inline:1px solid var(--border);text-align:center;box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;display:flex}body{margin:0}h1,h2{color:var(--text-h);font-family:SUSE Mono,monospace;font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{color:var(--text-h);border-radius:4px;font-family:SUSE Mono,monospace;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}*{box-sizing:border-box;margin:0;padding:0;font-family:SUSE Mono,monospace}body{color:#333;background-color:#f5f3f0;width:100%}.homepage{flex-direction:column;gap:5rem;max-width:100%;margin:0;padding:4rem;display:flex}.page-rest{opacity:0;transition:opacity .6s}.page-rest.page-rest-visible{opacity:1}.about-section{width:100%;max-width:100%;margin:0 auto}.about-section .name{color:#262626;margin-bottom:2rem;font-size:1rem}.about-section h2{color:#767676;margin-bottom:2rem;font-size:1.5rem}.about-section h3{color:#333;margin-bottom:0;margin-left:1rem;font-size:1rem}.about-section p{color:#222;max-width:800px;margin-bottom:1rem;margin-left:1rem;margin-right:auto;font-size:.9rem;line-height:1.8}.about-section .last-p{color:#333;margin-bottom:5rem}.projects-section{width:100%;max-width:50%;margin-bottom:5rem}.projects-section h2{color:#767676;margin-bottom:2rem;font-size:1.5rem}.project-list{flex-direction:column;gap:1rem;width:30rem;min-height:auto;display:flex}.project-item{cursor:pointer;background:0 0;border:none;margin-bottom:1rem;padding:1rem;transition:all .3s}.project-item h4{color:#222;margin:0 0 .5rem;font-size:1rem}.project-item.active h4{color:#333;font-weight:700}.project-description,.project-tech{color:#222;margin:.5rem 0;font-size:.9rem}.project-info{background:0 0;border:none;flex:1;padding:2rem}.p-title{color:#333;align-items:flex-end;margin-bottom:3rem;font-size:2rem;display:flex}.project-header{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.5rem;margin-bottom:1rem;display:flex}.project-info h3{margin:0 0 .5rem;font-size:1.5rem;display:block}.project-info p{color:#222;margin:1rem 0;line-height:1.6}.tech-tags{flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;display:flex}.tech-tag{color:#767676;background:0 0;border:1px solid #d0d0d0;padding:.4rem .8rem;font-size:.9rem}.project-info a{color:#fff;background:#333;border-radius:5px;margin-top:1rem;padding:.8rem 1.5rem;text-decoration:none;transition:background .3s;display:inline-block}.project-info a:hover{background:#555}.project-item-links{flex-direction:column;gap:.25rem;margin-top:1rem;display:flex}.project-item-links a{color:#0700d3;font-size:.8rem;text-decoration:none}.project-item-links a:hover{color:#3d3642}.project-image{pointer-events:none;justify-content:flex-end;align-items:center;width:100%;height:100%;margin-left:15rem;padding:1rem;display:flex}.project-image img,.project-image video{object-fit:cover;aspect-ratio:12/9;border-radius:10px;max-width:90%}.project-display{opacity:0;pointer-events:none;justify-content:center;align-items:center;width:56vw;height:120vh;transition:transform 1s cubic-bezier(.34,1.56,.64,1),opacity .5s ease-in-out;display:flex;position:fixed;top:0;right:0;overflow:hidden;transform:translate(105%)}.project-display.in-view{opacity:1;transform:translate(0)}.project-display.fade-out{opacity:.5}.project-list.media-engaged .project-item{opacity:.3;pointer-events:none}.project-list.media-engaged .project-item.active{opacity:1;pointer-events:auto}.project-list.media-engaged .project-item.active h4{color:#333;font-weight:700}.works-section{width:100%;max-width:100%;margin:0 auto}.works-section h2{color:#767676;margin-bottom:2rem;font-size:1.5rem}.works-list{flex-direction:column;gap:.5rem;margin-left:1rem;display:flex}.experience-section{width:100%;max-width:100%;margin:0 auto;padding-top:2rem;padding-bottom:2rem}.experience-item{flex-direction:row;align-items:baseline;gap:.25rem;display:flex}.experience-item .work-details{flex-shrink:0}.experience-item .experience-dates{margin-left:4rem}.experience-section h2{color:#767676;margin-bottom:2rem;font-size:1.5rem}.experience-list{flex-direction:column;gap:.5rem;margin-left:1rem;display:flex}.experience-dates{color:#767676}.work-company{color:#242424}.work-company:hover{color:#fa740e;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.contact-section{width:100%;max-width:100%;margin:0 auto 2rem}.contact-section h2{color:#767676;font-size:1.5rem}.contact-info{flex-direction:column;gap:.5rem;margin-left:1rem;display:flex}.contact-box{background:0 0;border:none;border-radius:0;flex:1;padding:1rem}.contact-box h3{font-size:1rem}.contact-box a{color:#333;text-decoration:none}.contact-box a:hover{text-decoration:underline}.copy-button{color:#333;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:1rem;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.copy-button:hover{text-decoration:underline}.footer{text-align:left;color:#333;background-color:#f5f3f0;margin-top:-2rem;padding:4rem;font-size:1rem}#root{box-sizing:border-box;text-align:left;border-inline:none;flex-direction:column;width:100%;max-width:100%;min-height:100svh;margin:0 auto;display:flex}.contact-info a{color:#333;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.contact-title{color:#333;margin-bottom:2rem}.contact-info a:hover{text-decoration:underline}.works-list .work-item a{color:#333;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.works-list .work-item a:hover{text-decoration:underline}.not-found{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:2rem;padding:4rem;display:flex}.not-found h1{color:#333;font-size:2rem}.not-found-text{color:#767676;font-size:1rem}.not-found-back-link{color:#333;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.not-found-back-link:hover{opacity:.7;text-decoration:underline}.project-page{flex-direction:row;display:flex;position:relative}.project-sidenav{flex-direction:column;flex-shrink:0;align-self:flex-start;gap:1.5rem;width:12rem;padding:4rem 1rem 2rem 2rem;display:flex;position:sticky;top:4rem}.sidenav-back{color:#767676;cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-family:inherit;font-size:.85rem}.sidenav-back:hover{color:#333}.sidenav-totop{color:#767676;cursor:pointer;text-align:left;text-indent:1.5rem;background:0 0;border:none;margin-top:auto;padding:0;font-family:inherit;font-size:.7rem;line-height:1}.sidenav-totop:hover{color:#333}.project-sidenav ul{flex-direction:column;gap:.75rem;list-style:none;display:flex}.project-sidenav ul a{color:#767676;font-size:.8rem;text-decoration:none}.project-sidenav ul a:hover{color:#333}.project-sidenav ul a.sidenav-active{color:#333;font-weight:600}.model-sticky{pointer-events:none;width:100%;margin-top:-4rem;animation:.4s forwards fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.project-body{flex-direction:column;flex:1;gap:2rem;max-width:100%;padding:4rem 4rem 4rem 2rem;display:flex}.project-body h1:not(.p-title){color:#333;margin-bottom:3rem;font-size:2rem}.project-body h2{color:#767676;margin-top:3rem;margin-bottom:0;font-size:1.2rem}.project-body h3{color:#333;margin-top:1rem;margin-bottom:2rem;font-size:1.2rem}.project-body h4{color:#767676;text-transform:lowercase;letter-spacing:.06em;margin-bottom:1rem;font-size:.9rem;font-weight:600}.project-header .header-text{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;display:flex}.project-body .model{flex-direction:column;width:100%;max-width:800px;height:auto;display:flex}.project-body .subsection{flex-direction:column;align-items:flex-start;gap:1rem;margin-top:2rem;display:flex}.project-body .subsection p{color:#222;max-width:70%;margin-bottom:1rem;margin-right:auto;font-size:1rem;line-height:1.8}.project-body .subsection ul{color:#222;margin-left:2rem}.project-body .subsection ul li{text-indent:.5rem;margin-bottom:.5rem;font-size:.9rem;list-style:none}.project-body .subsection ul{gap:1rem;max-width:700px;margin-left:2rem;font-size:.9rem}.subsection-with-image{grid-template-columns:70% 30%;align-items:start;gap:2rem;margin-top:2rem;display:grid}.subsection-with-image .subsection-text{flex-direction:column;gap:1rem;display:flex}.subsection-with-image .subsection-text p{color:#222;max-width:100%;margin-bottom:1rem;font-size:1rem;line-height:1.8}.subsection-with-image .subsection-text ul{color:#222;max-width:100%;margin-top:1rem;margin-bottom:2rem;margin-left:3rem}.subsection-with-image .subsection-text ul li{margin-top:1rem;margin-bottom:1rem;font-size:.9rem;list-style:":- "}.subsection-with-image .subsection-image{flex-direction:column;gap:.5rem;display:flex;position:sticky;top:6rem}.subsection-with-image .subsection-image img{object-fit:cover;width:100%;height:auto;display:block}.subsection-with-image .subsection-image video{width:100%;max-width:100%;height:auto;display:block}.subsection-with-image .subsection-image figcaption{color:#767676;font-size:.72rem;line-height:1.5}.subsection-image--multi{position:relative}.subsection-image--multi .img-slide{opacity:0;pointer-events:none;width:100%;transition:opacity .35s;position:absolute;top:0;left:0}.subsection-image--multi .img-slide img{width:100%;height:auto;display:block}.subsection-image--multi .img-slide.img-active{opacity:1;pointer-events:auto;position:relative}.inline-img{display:none}.inline-img img{border-radius:4px;width:100%;height:auto;display:block}.inline-img figcaption{color:#767676;margin-top:.4rem;font-size:.72rem;line-height:1.5}.subsection-links{color:#4d4d4d;flex-direction:column;gap:.5rem;max-width:500px;margin-top:2rem;margin-left:1rem;display:flex}.subsection-links a{color:#323232;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.subsection-links a:hover{opacity:.5;text-decoration:underline}.closed-source-notice{border:1px dashed #d0d0d0;align-items:flex-start;gap:.75rem;max-width:70%;margin-top:2rem;padding:1rem;display:flex}.closed-source-icon{color:#767676;flex-shrink:0;font-size:1rem;line-height:1.8}.closed-source-notice p{color:#767676;margin:0;font-size:.82rem;line-height:1.7}.project-mobile-nav{display:none}@media (width<=1024px){.project-mobile-nav{z-index:100;display:block;position:sticky;top:0}.project-sidenav{display:none}.project-page{flex-direction:column}.project-body{padding:2rem}.subsection-with-image{grid-template-columns:1fr}.subsection-with-image .subsection-image{-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;flex-direction:row;align-items:center;gap:1rem;padding:.5rem 0 1rem;display:flex;position:static;overflow-x:auto}.subsection-with-image .subsection-image img{aspect-ratio:4/3;object-fit:contain;scroll-snap-align:start;border-radius:4px;flex:none;width:70vw;max-width:480px;height:auto;margin:0 auto}.subsection-with-image .subsection-image figcaption,.subsection-with-image .subsection-image--multi{display:none}.inline-img{margin-top:1rem;margin-bottom:.5rem;display:block}.test-sequence{margin-left:0;overflow-x:auto}.rtos-diagram{overflow-x:auto}.closed-source-notice{max-width:100%}}.stackup-table{max-width:100%;margin-top:2rem;font-size:.9rem;display:block;overflow-x:auto}.subsection-tooling{flex-wrap:wrap;gap:1.2rem;max-width:800px;margin-top:2rem;display:flex}.lightbox-backdrop{z-index:1000;cursor:zoom-out;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-img{object-fit:contain;cursor:default;max-width:70vw;max-height:70vh;display:block}.subsection-image img{cursor:zoom-in}.model-lightbox-inner{cursor:default;width:90vw;max-width:900px;height:80vh}.model-slide-wrapper{cursor:zoom-in;position:relative}.model-slide-overlay{z-index:1;position:absolute;inset:0}.rtos-diagram{flex-direction:column;gap:0;width:100%;max-width:800px;margin-top:2rem;margin-bottom:2rem;display:flex}.rtos-label{color:#767676;letter-spacing:.08em;text-transform:lowercase;margin-bottom:.75rem;font-size:.72rem}.test-sequence{flex-direction:column;gap:0;max-width:800px;margin-top:1.5rem;margin-left:6rem;display:flex}.seq-step{border-left:1px solid #d0d0d0;align-items:flex-start;gap:1rem;margin-left:1.5rem;padding:.75rem 0 .75rem 1rem;display:flex;position:relative}.seq-step:before{content:"";background:#d0d0d0;border-radius:50%;width:8px;height:8px;position:absolute;top:1.1rem;left:-5px}.seq-n{color:#767676;letter-spacing:.05em;min-width:1.8rem;padding-top:2px;font-size:.7rem}.seq-body{flex-direction:column;gap:.2rem;display:flex}.seq-body strong{color:#222;font-size:.9rem;font-weight:600}.seq-body span{color:#767676;font-size:.82rem;line-height:1.5}.seq-fork-label{color:#767676;text-transform:lowercase;letter-spacing:.08em;border-left:1px dashed #d0d0d0;margin:1rem 0 .5rem 1.5rem;padding-left:1rem;font-size:.72rem}.seq-branches{align-items:flex-start;gap:.5rem;width:100%;margin-left:0;display:flex}.seq-branch{border-left:1px solid #d0d0d0;flex-direction:column;flex:1;gap:0;display:flex}.seq-branch-label{color:#767676;letter-spacing:.08em;text-transform:lowercase;margin-bottom:.25rem;padding:.25rem 0 .25rem 1rem;font-size:.7rem}.seq-branch .seq-step{margin-left:0}@media (width<=768px){.seq-branches{flex-direction:column;gap:1rem}}.mem-profile{flex-direction:column;gap:1.25rem;width:100%;max-width:900px;height:auto;margin-top:1rem;display:flex}.mem-row{flex-direction:column;gap:.4rem;display:flex}.mem-label{letter-spacing:.1em;color:#767676;text-transform:uppercase;font-family:Courier New,monospace;font-size:.8rem}.mem-bar{background:#f0f0f0;border-radius:2px;width:100%;height:40px;display:flex;overflow:hidden}.mem-seg{color:#fff;white-space:nowrap;justify-content:center;align-items:center;font-family:Courier New,monospace;font-size:.7rem;transition:width .3s;display:flex;overflow:hidden}.mem-text{background:#2a2a2a}.mem-bss{background:#4a4a4a}.mem-data{background:#888}.mem-free{background:#e0e0e0}.mem-legend{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.mem-legend span{color:#555;align-items:center;gap:.3rem;font-family:Courier New,monospace;font-size:.68rem;display:flex}.mem-dot{border-radius:1px;width:8px;height:8px;font-style:normal;display:inline-block}.mem-text-dot{background:#2a2a2a}.mem-bss-dot{background:#4a4a4a}.mem-data-dot{background:#888}.mem-free-dot{background:#e0e0e0;border:1px solid #ccc}.mem-total{margin-left:auto;color:#999!important}.stackup{flex-direction:column;align-items:center;gap:0;width:280px;margin:1rem auto 1.5rem;display:flex}.stackup-layer{letter-spacing:.05em;border-bottom:1px solid #ffffff26;justify-content:space-between;align-items:center;width:100%;height:28px;padding:0 1rem;font-family:Courier New,monospace;font-size:.68rem;display:flex}.stackup-layer span:first-child{color:#ffffff73;font-size:.6rem}.stackup-layer:first-child{border-radius:3px 3px 0 0}.stackup-layer:last-child{border-bottom:none;border-radius:0 0 3px 3px}.stackup-sig{color:#e0e0e0;background:#3a3a3a}.stackup-gnd{color:#aaa;background:#1a1a1a}.stackup-gnd-hatched{color:#aaa;background:repeating-linear-gradient(45deg,#1a1a1a,#1a1a1a 4px,#2e2e2e 4px 8px)}.stackup-pwr{color:#e0b060;background:#5a3a1a}.stackup-mixed{color:#80b0d0;background:#2a3a4a}.stackup-caption{color:#999;letter-spacing:.02em;text-align:center;width:100%;margin-top:.5rem;font-family:Courier New,monospace;font-size:.5rem;font-weight:400}.mobile-nav-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:0 0;border-bottom:none;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.mobile-nav-toggle{color:#333;cursor:pointer;letter-spacing:.03em;background:0 0;border:none;padding:.35rem .75rem;font-family:inherit;font-size:.82rem}.mobile-nav-dropdown{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:0 0;border-bottom:none;flex-direction:column;gap:.75rem;padding:.5rem 1.25rem 1rem;list-style:none;display:flex}.mobile-nav-dropdown a{color:#767676;font-size:.85rem;text-decoration:none}.mobile-nav-dropdown a.sidenav-active{color:#333;font-weight:600}@media (width<=768px){.project-body{padding:1.5rem}.subsection-with-image .subsection-image img{width:85vw;max-width:320px}}@media (width<=1280px){.homepage{gap:3.5rem;padding:2.5rem}.projects-section{max-width:100%}.project-list{width:30rem}.about-section h2,.projects-section h2,.works-section h2,.contact-section h2,.experience-section h2{font-size:1.5rem}.project-display{width:25rem;height:25rem;transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .3s ease-out;top:auto;bottom:2rem;right:1.5rem;transform:translateY(120%)}.project-display.in-view{transform:translateY(0)}.project-image{justify-content:center;margin-left:0;padding:.5rem}.project-image img,.project-image video{border-radius:8px;max-width:100%}.project-image video,.project-image img{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.project-image a{pointer-events:none}.subsection-with-image{grid-template-columns:1fr}.subsection-with-image .subsection-image{-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;flex-direction:row;align-items:center;gap:1rem;padding:.5rem 0 1rem;display:flex;position:static;overflow-x:auto}.subsection-with-image .subsection-image img{aspect-ratio:4/3;object-fit:contain;scroll-snap-align:start;border-radius:4px;flex:none;width:60vw;max-width:520px;height:auto;margin:0 auto}.subsection-with-image .subsection-image figcaption,.subsection-with-image .subsection-image--multi{display:none}.inline-img{margin-top:1rem;margin-bottom:.5rem;display:block}}.not-found-image{border-radius:10px;align-self:center;max-width:50%;height:auto}@media (width<=768px){.homepage{gap:2.5rem;padding:1.5rem}.about-section h2,.projects-section h2,.works-section h2,.contact-section h2,.experience-section h2{font-size:1.5rem}.projects-section{max-width:100%}.project-list{width:100%}.project-display{width:13rem;height:13rem;bottom:1rem;right:1rem}.project-image video,.project-image img{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.project-image a{pointer-events:none}.experience-item{flex-direction:column;align-items:flex-start;gap:.1rem}.experience-item .work-separator{display:none}.experience-item .experience-dates{margin-top:.25rem;margin-left:0}.not-found-image{border-radius:10px;align-self:center;max-width:80%;height:auto}.footer{padding:2rem 1.5rem}}
