@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2) format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2) format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff) format("woff")}:root{--color-paper: #F4F7FB;--color-surface: rgba(255, 255, 255, .74);--color-ink: #16181A;--color-ink-soft: #55595E;--color-rule: #D3DCE8;--color-accent: #0F62FE;--color-accent-2: #B85C00;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--measure: 68ch;--tag-ai-ml: #0F62FE;--tag-embedded: #B85C00;--tag-cv: #00805A;--tag-full-stack: #7B4FE0;--tag-mobile: #C0392B;--tag-algorithms: #3B54C4;--tag-iot: #B0338C}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-ink);background-color:var(--color-paper);background-image:url(/images/circuit-bg.webp);background-repeat:no-repeat;background-size:cover;background-position:top right;background-attachment:fixed;-webkit-font-smoothing:antialiased}.skip-link{position:absolute;left:-9999px;top:0;background:var(--color-accent);color:#fff;padding:.5rem 1rem;font-family:var(--font-mono);font-size:.875rem;text-decoration:none;z-index:999}.skip-link:focus{left:0}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0ms!important;animation-duration:0ms!important}html{scroll-behavior:auto}}.container{width:min(100% - 3rem,1100px);margin-inline:auto}h1,h2,h3,h4{line-height:1.2;color:var(--color-ink)}a{color:var(--color-accent);text-decoration:underline;text-underline-offset:3px;transition:color .15s ease}a:hover{color:color-mix(in srgb,var(--color-accent) 80%,#000)}.site-nav{position:fixed;top:0;left:0;right:0;z-index:100;background:#f4f7fbeb;backdrop-filter:blur(6px);border-bottom:1px solid var(--color-rule)}.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0}.nav-brand{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.06em;color:var(--color-ink);text-decoration:none}.nav-brand:hover{color:var(--color-ink);text-decoration:none}.nav-links{display:flex;gap:1.75rem;list-style:none;align-items:center}.nav-links a{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--color-ink-soft);transition:color .15s ease}.nav-links a:hover{color:var(--color-ink)}.nav-mobile{display:none;position:relative}.nav-mobile summary{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.1em;color:var(--color-ink-soft);cursor:pointer;list-style:none;user-select:none}.nav-mobile summary::-webkit-details-marker{display:none}.nav-mobile-links{position:absolute;top:calc(100% + .75rem);right:0;background:var(--color-paper);border:1px solid var(--color-rule);padding:.75rem 1.25rem;list-style:none;min-width:160px;z-index:50}.nav-mobile-links li+li{margin-top:.75rem}.nav-mobile-links a{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--color-ink-soft)}.nav-mobile-links a:hover{color:var(--color-ink)}@media(max-width:640px){.nav-links{display:none}.nav-mobile{display:block}.nav-brand{font-size:.625rem}}.page-main{padding-top:3rem}.hero{display:grid;grid-template-columns:1fr 320px;gap:3rem;align-items:start;padding:3.5rem 0 3rem;border-bottom:1px solid var(--color-rule)}.hero-part-number{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.15em;color:var(--color-ink-soft);margin-bottom:1rem}.hero-name{font-family:var(--font-mono);font-size:clamp(1.25rem,3vw,1.625rem);font-weight:400;letter-spacing:.08em;color:var(--color-ink);margin-bottom:.5rem}.hero-tagline{font-size:1rem;color:var(--color-ink-soft);max-width:52ch;margin-bottom:2rem;line-height:1.55}.hero-body{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.ds-label{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.15em;color:var(--color-ink-soft);text-transform:uppercase;margin-bottom:.75rem}.hero-description p:not(.ds-label){font-size:.9375rem;line-height:1.7}.hero-features ul{list-style:none}.hero-features li{font-size:.9375rem;line-height:1.55;padding:.2rem 0 .2rem 1rem;position:relative}.hero-features li:before{content:"•";position:absolute;left:0;color:var(--color-accent-2)}.hero-visual{display:flex;flex-direction:column;align-items:center;gap:2.5rem}.hero-photo{flex:none;width:168px;height:168px}.hero-photo img{width:100%;height:100%;object-fit:cover;display:block;-webkit-mask-image:radial-gradient(circle,#000 48%,transparent 76%);mask-image:radial-gradient(circle,#000 48%,transparent 76%)}@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-diagram{display:none}.hero-visual{order:-1;flex-direction:row;justify-content:flex-start}.hero-photo{width:96px;height:96px}.hero-body{grid-template-columns:1fr;gap:1.5rem}}@media(max-width:480px){.hero{padding:2rem 0}}.section-heading{margin:4rem 0 1.5rem}.section-heading h2{font-family:var(--font-mono);font-size:1.0625rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--color-ink);margin-bottom:.625rem}.section-num{color:var(--color-ink-soft);margin-right:.5em}.section-rule{border:none;border-top:2px solid var(--color-ink)}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-top:1.5rem}@media(max-width:768px){.card-grid{grid-template-columns:1fr}}.project-card{border:1px solid var(--color-rule);border-radius:14px;background:var(--color-surface);backdrop-filter:blur(8px);box-shadow:0 1px 2px #16181a0d,0 10px 24px -12px #16181a1f;padding:1.375rem 1.5rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color .15s ease,box-shadow .15s ease}.project-card:hover{border-color:var(--color-accent);box-shadow:0 1px 2px #16181a0d,0 12px 28px -10px #0f62fe38}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.part-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.1em;color:var(--color-ink)}.domain-tags{display:flex;flex-wrap:wrap;gap:.375rem}.tag{font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.07em;color:#fff;background:var(--color-ink-soft);border-radius:999px;padding:.1875rem .5rem;text-transform:uppercase;white-space:nowrap}.tag[data-domain="AI/ML"]{background:var(--tag-ai-ml)}.tag[data-domain=EMBEDDED]{background:var(--tag-embedded)}.tag[data-domain=CV]{background:var(--tag-cv)}.tag[data-domain=FULL-STACK]{background:var(--tag-full-stack)}.tag[data-domain=MOBILE]{background:var(--tag-mobile)}.tag[data-domain=ALGORITHMS]{background:var(--tag-algorithms)}.tag[data-domain=IOT]{background:var(--tag-iot)}.card-summary{font-size:.9375rem;color:var(--color-ink);line-height:1.5}.card-links{display:flex;gap:1.25rem;align-items:center;margin-top:auto;padding-top:.625rem;border-top:1px solid var(--color-rule)}.card-links a{font-family:var(--font-mono);font-size:.6875rem;text-decoration:none;color:var(--color-accent)}.card-links a:hover{text-decoration:underline}.status-pending{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-ink-soft);font-style:italic}.spec-table{width:100%;border-collapse:collapse;font-size:.875rem}.spec-table th{font-family:var(--font-body);font-size:.6875rem;font-weight:400;font-variant:small-caps;letter-spacing:.06em;color:var(--color-ink-soft);text-align:left;padding:.4rem 1.5rem .4rem 0;border-bottom:1px solid var(--color-rule);vertical-align:top;width:36%;white-space:nowrap}.spec-table td{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-ink);padding:.4rem 0;border-bottom:1px solid var(--color-rule);vertical-align:top}@media(max-width:480px){.spec-table,.spec-table tbody,.spec-table tr,.spec-table th,.spec-table td{display:block}.spec-table th{border-bottom:none;padding-bottom:.125rem;width:100%}.spec-table td{padding-top:0;padding-left:.5rem;padding-bottom:.5rem}}.experience-table{width:100%;border-collapse:separate;border-spacing:0;margin-top:1.5rem}.experience-table thead th{font-family:var(--font-mono);font-size:.625rem;font-weight:400;letter-spacing:.12em;color:#f4f7fb;background:var(--color-ink);text-transform:uppercase;text-align:left;padding:.625rem 1rem}.experience-table thead th:first-child{border-radius:8px 0 0}.experience-table thead th:last-child{border-radius:0 8px 0 0}.experience-table tbody td{padding:.75rem 1rem;border-bottom:1px solid var(--color-rule);vertical-align:top;font-size:.875rem}.experience-table .td-org{font-family:var(--font-mono);font-size:.8125rem}.org-name-row{display:flex;align-items:center;gap:.5rem}.org-logo-wrap{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 24px;border:1px solid var(--color-rule);border-radius:5px;background:#fff;overflow:hidden}.org-logo{width:100%;height:100%;object-fit:contain;padding:2px}.experience-table .td-role{color:var(--color-ink-soft);font-size:.8125rem}.experience-table .td-period{font-family:var(--font-mono);font-size:.75rem;color:var(--color-ink-soft);white-space:nowrap}.experience-table .td-outcome{font-size:.875rem;color:var(--color-ink)}@media(max-width:640px){.experience-table thead{display:none}.experience-table tbody tr{display:block;border-bottom:1px solid var(--color-rule);padding:.75rem 0}.experience-table tbody td{display:block;border-bottom:none;padding:.125rem 0}.experience-table .td-org:before{content:"ORG — ";font-size:.625rem;color:var(--color-ink-soft)}.experience-table .td-period:before{content:"PERIOD — ";font-size:.625rem;color:var(--color-ink-soft)}}.skills-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem 4rem;margin-top:1.5rem}@media(max-width:640px){.skills-groups{grid-template-columns:1fr}}.skills-list{list-style:none;display:flex;flex-direction:column;gap:.875rem}.skill-row{display:flex;align-items:flex-start;gap:.75rem}.skill-icon{flex:none;color:var(--color-accent-2);margin-top:.125rem}.skill-text{display:flex;flex-direction:column;gap:.125rem}.skill-label{font-size:.9375rem;font-weight:500;color:var(--color-ink)}.skill-desc{font-size:.8125rem;color:var(--color-ink-soft);line-height:1.5}.contact-section{padding:4rem 0 2rem}.contact-grid{display:flex;flex-wrap:wrap;gap:2.5rem;margin-top:1.5rem}.contact-item{display:flex;flex-direction:column;gap:.3rem}.contact-label{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-soft)}.contact-value{font-family:var(--font-mono);font-size:.875rem}.contact-value a{color:var(--color-ink);text-decoration:none}.contact-value a:hover{color:var(--color-accent);text-decoration:underline}.contact-pending{color:var(--color-ink-soft);font-style:italic}.site-footer{border-top:1px solid var(--color-rule);padding:1.25rem 0;margin-top:5rem}.footer-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.05em;color:var(--color-ink-soft)}.footer-inner a{color:var(--color-ink-soft);text-decoration:none}.footer-inner a:hover{color:var(--color-ink);text-decoration:underline}.breadcrumb{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-ink-soft);padding:2rem 0 0}.breadcrumb a{color:var(--color-ink-soft);text-decoration:none}.breadcrumb a:hover{color:var(--color-accent);text-decoration:underline}.breadcrumb-sep{margin:0 .4rem}.project-header{padding:1.5rem 0 2rem;border-bottom:1px solid var(--color-rule)}.project-title{font-family:var(--font-mono);font-size:clamp(1.125rem,2.5vw,1.5rem);font-weight:400;letter-spacing:.06em;color:var(--color-ink);margin-bottom:.5rem}.project-summary{font-size:1rem;color:var(--color-ink-soft);max-width:64ch;margin-bottom:1rem}.project-body{max-width:var(--measure);padding:2rem 0}.project-body h2{font-family:var(--font-mono);font-size:.75rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink);margin:2.5rem 0 .75rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-rule)}.project-body h3{font-family:var(--font-mono);font-size:.6875rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-soft);margin:1.75rem 0 .5rem}.project-body p{font-size:.9375rem;line-height:1.7;margin:.875rem 0}.project-body ul,.project-body ol{padding-left:1.5rem;margin:.875rem 0}.project-body li{font-size:.9375rem;line-height:1.7;margin:.25rem 0}.project-body figure{margin:2rem 0}.project-body figure img{max-width:100%;height:auto;border:1px solid var(--color-rule);display:block}.project-body figcaption{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-ink-soft);margin-top:.5rem}.project-body .figure-row{display:flex;flex-wrap:nowrap;justify-content:center;align-items:flex-start;gap:clamp(.5rem,3vw,2.5rem);margin:2rem 0}.project-body .figure-row figure{flex:1 1 0;min-width:0;max-width:300px;margin:0}.project-body .figure-row figure img{width:100%;aspect-ratio:642 / 1438;object-fit:cover;object-position:center}.project-body figure.figure-phone{max-width:300px}.project-body figure video{max-width:100%;width:100%;height:auto;border:1px solid var(--color-rule);display:block;background:#000}.project-body figure iframe{max-width:100%;width:100%;aspect-ratio:16 / 9;border:1px solid var(--color-rule);display:block}.project-links-row{display:flex;gap:1.5rem;align-items:center;padding:1.5rem 0;border-top:1px solid var(--color-rule);margin-top:2rem}.project-links-row a{font-family:var(--font-mono);font-size:.8125rem}.project-nav{display:flex;justify-content:space-between;gap:1rem;padding:1.5rem 0;border-top:1px solid var(--color-rule)}.project-nav a{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-ink-soft);text-decoration:none;display:flex;flex-direction:column;gap:.25rem;max-width:45%}.project-nav a:hover{color:var(--color-ink)}.project-nav .nav-dir{font-size:.5625rem;letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-soft)}.project-nav .nav-next-link{text-align:right}.page-header{padding:3rem 0 2rem;border-bottom:1px solid var(--color-rule)}.page-header h1{font-family:var(--font-mono);font-size:clamp(1rem,2.5vw,1.375rem);font-weight:400;letter-spacing:.06em;color:var(--color-ink);margin-bottom:.375rem}.page-header p{font-size:.9375rem;color:var(--color-ink-soft)}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.filter-btn{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;padding:.375rem .75rem;border:1px solid var(--color-rule);background:none;color:var(--color-ink-soft);cursor:pointer;transition:border-color .15s ease,color .15s ease}.filter-btn:hover{border-color:var(--color-ink-soft);color:var(--color-ink)}.filter-btn.active{border-color:var(--color-accent);color:var(--color-accent)}.pin-diagram-figure{text-align:center}.pin-diagram-figure figcaption{font-family:var(--font-mono);font-size:.625rem;color:var(--color-ink-soft);margin-top:.5rem;letter-spacing:.05em}.error-page{min-height:calc(100vh - 3rem);display:flex;align-items:center;justify-content:center;text-align:center}.error-code{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.2em;color:var(--color-ink-soft);text-transform:uppercase;margin-bottom:.75rem}.error-message{font-family:var(--font-mono);font-size:clamp(1.125rem,4vw,1.75rem);font-weight:400;color:var(--color-ink);letter-spacing:.05em;margin-bottom:.5rem}.error-sub{font-family:var(--font-mono);font-size:.875rem;color:var(--color-ink-soft);margin-bottom:1.5rem}
