@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/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:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;--page:#f4f6f8;--surface:#fbfaf8;--card:#fff;--border:#d8dbdf;--chip:#eef2f6;--chip-text:#1e3a5f;--text:#10151d;--body:#3a3a36;--muted:#5b6470;--eyebrow:#1e3a5f;--ink:#10151d;--ink-border:#1e2733;--ink-line:#3a4552;--cloud:#f4f6f8;--ink-muted:#8b94a0;--ink-soft:#c9ced5;--accent:#2f8fdb;--accent-ink:#0d1e2c;font-family:IBM Plex Sans,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0b0e13;--surface:#11161f;--card:#141a24;--border:#242c39;--chip:#182131;--chip-text:#7fb4e8;--text:#f4f6f8;--body:#b8c0cc;--muted:#7c8593;--eyebrow:#7fb4e8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:70px}body{background:var(--page);min-width:320px;color:var(--text);margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit}.site-shell{min-height:100vh;overflow:clip}.container{width:min(1080px,100% - 80px);margin:0 auto}.section{padding-top:88px;padding-bottom:88px}.section-dark{background:var(--ink);color:var(--cloud)}.content-sections>.content-section{background:var(--page)}.content-sections>.content-section:nth-child(2n){background:var(--surface)}.content-sections>.content-section+.content-section{border-top:1px solid var(--border)}.nav-shell{z-index:30;border-bottom:1px solid var(--ink-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--cloud);background:#10151df5;position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;min-height:65px;padding:0 40px;display:flex}.brand{align-items:center;gap:10px;font-size:15px;font-weight:600;display:inline-flex}.brand svg{color:var(--cloud)}.nav-actions,.desktop-nav{align-items:center;display:flex}.nav-actions{gap:10px}.desktop-nav{gap:28px;margin-left:10px}.desktop-nav>a{color:var(--ink-soft);letter-spacing:.08em;font-family:IBM Plex Mono,monospace;font-size:11px;transition:color .2s}.desktop-nav>a:hover{color:#fff}.desktop-nav .nav-cta{background:var(--accent);color:var(--accent-ink);letter-spacing:0;padding:9px 16px;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:600}.icon-button{border:1px solid var(--ink-line);height:34px;color:var(--ink-soft);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:0 10px;display:inline-flex}.icon-button kbd{border:0;font-family:IBM Plex Mono,monospace;font-size:10px}.preferences-wrap{position:relative}.preferences-panel{border:1px solid var(--border);background:var(--card);width:220px;color:var(--text);padding:16px;position:absolute;top:calc(100% + 11px);right:0;box-shadow:0 18px 50px #0000002e}.control-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-family:IBM Plex Mono,monospace;font-size:10px;display:block}.control-label:not(:first-child){margin-top:16px}.segmented{border:1px solid var(--border);grid-template-columns:1fr 1fr;display:grid}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:8px;font-size:12px}.segmented button.active{background:var(--accent);color:var(--accent-ink)}.menu-button{border:1px solid var(--ink-line);cursor:pointer;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:35px;height:35px;display:none}.menu-button span{background:var(--cloud);width:14px;height:2px}.mobile-nav{flex-direction:column;padding:8px 20px 18px;display:none}.mobile-nav a{border-bottom:1px solid var(--ink-border);color:var(--ink-soft);letter-spacing:.08em;padding:12px 0;font-family:IBM Plex Mono,monospace;font-size:12px}.mobile-nav a:last-child{color:var(--accent);border-bottom:0}.hero{align-items:center;min-height:540px;display:flex;position:relative;overflow:hidden}.hero-content{z-index:2;padding-block:80px;position:relative}.hero h1{letter-spacing:-.04em;max-width:680px;margin:18px 0;font-size:clamp(42px,7vw,68px);line-height:1.04}.hero p{max-width:590px;color:var(--ink-muted);margin:0 0 34px;font-size:17px;line-height:1.75}.hero-grid{opacity:.22;background-image:linear-gradient(var(--ink-line) 1px, transparent 1px), linear-gradient(90deg, var(--ink-line) 1px, transparent 1px);background-size:48px 48px;position:absolute;inset:0 0 0 58%;transform:skew(-7deg)scale(1.2);-webkit-mask-image:linear-gradient(90deg,#0000,#000 35%);mask-image:linear-gradient(90deg,#0000,#000 35%)}.eyebrow{color:var(--eyebrow);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;margin-top:0;margin-bottom:36px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:400;display:flex}.eyebrow>span{background:currentColor;width:8px;height:8px}.eyebrow--inverse{color:var(--accent);margin-bottom:0}.button{border:1px solid #0000;justify-content:center;align-items:center;min-height:46px;padding:0 24px;font-size:14px;font-weight:600;transition:transform .18s,background .18s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button--solid{background:var(--accent);color:var(--accent-ink)}.button--outline{border-color:var(--ink-line);color:var(--cloud)}.about{grid-template-columns:minmax(200px,300px) 1fr;align-items:center;gap:clamp(50px,8vw,100px);display:grid}.portrait{aspect-ratio:1;border:1px solid var(--border);background:var(--surface);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.portrait:before,.portrait:after{content:"";background:var(--border);width:65%;height:1px;position:absolute}.portrait:before{transform:rotate(45deg)}.portrait:after{transform:rotate(-45deg)}.portrait>span{z-index:1;background:var(--surface);color:var(--eyebrow);letter-spacing:-.08em;padding:10px;font-family:IBM Plex Mono,monospace;font-size:clamp(38px,7vw,72px);font-weight:500;position:relative}.portrait small{color:var(--muted);letter-spacing:.12em;text-align:right;font-family:IBM Plex Mono,monospace;font-size:8px;line-height:1.4;position:absolute;bottom:12px;right:14px}.about-copy .eyebrow{margin-bottom:14px}.about-copy p{max-width:650px;color:var(--body);margin:0 0 16px;font-size:16px;line-height:1.75}.skills-grid{grid-template-columns:repeat(2,1fr);gap:42px 80px;display:grid}.skill-group h3{color:var(--muted);margin:0 0 14px;font-size:13px;font-weight:500}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips span,.project-tags span{border:1px solid var(--border);background:var(--chip);color:var(--chip-text);padding:6px 10px;font-family:IBM Plex Mono,monospace;font-size:11px}.projects-grid{grid-template-columns:repeat(2,1fr);gap:24px;display:grid}.project-card{border:1px dashed var(--border);background:var(--card)}.project-visual{aspect-ratio:16/7;border-bottom:1px dashed var(--border);color:var(--muted);background:linear-gradient(135deg, var(--surface), var(--card));justify-content:center;align-items:center;display:flex;position:relative}.project-index{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:10px;position:absolute;top:18px;left:20px}.project-body{padding:24px}.status{border:1px solid var(--border);background:var(--chip);color:var(--chip-text);padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:10px;display:inline-block}.project-body h3,.post-card h3{margin:15px 0 9px;font-size:19px;line-height:1.35}.project-body p,.post-card p{color:var(--body);margin:0;font-size:14px;line-height:1.65}.project-tags{flex-wrap:wrap;gap:7px;margin-top:18px;display:flex}.project-tags span{padding:3px 7px;font-size:9px}.experience-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:80px;display:grid}.timeline-item{border-left:2px solid var(--border);padding:0 0 28px 22px;position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-dot{background:var(--muted);width:8px;height:8px;position:absolute;top:4px;left:-5px}.timeline-item.current .timeline-dot{background:var(--eyebrow)}.timeline-item time{color:var(--muted);margin-bottom:5px;font-family:IBM Plex Mono,monospace;font-size:11px;display:block}.timeline-item h3{margin:0 0 3px;font-size:16px}.timeline-item strong{color:var(--muted);font-size:13px;font-weight:400}.timeline-item p{color:var(--body);margin:9px 0 0;font-size:13px;line-height:1.6}.course-list>a,.course-list>div{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:20px;padding:13px 0;font-size:13px;display:flex}.course-list>:first-child{padding-top:0}.course-list small{max-width:54%;color:var(--muted);text-align:right;font-family:IBM Plex Mono,monospace;font-size:10px;line-height:1.5}.course-list a:hover span{color:var(--accent)}.posts-grid{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.post-card{border:1px solid var(--border);background:var(--card);min-height:220px;padding:24px;position:relative}.post-card time{color:var(--muted);text-transform:uppercase;font-family:IBM Plex Mono,monospace;font-size:10px}.post-card h3{margin-top:13px}.post-status{color:var(--eyebrow);text-transform:uppercase;font-family:IBM Plex Mono,monospace;font-size:10px;position:absolute;bottom:22px;right:24px}.contact{padding:80px 0 38px}.contact h2{max-width:590px;margin:18px 0 30px;font-size:clamp(28px,5vw,40px);line-height:1.22}.contact-actions{flex-wrap:wrap;gap:14px;margin-bottom:64px;display:flex}.footer-line{border-top:1px solid var(--ink-border);color:var(--ink-muted);justify-content:space-between;gap:20px;padding-top:24px;font-size:13px;display:flex}.footer-line span:last-child{color:var(--ink-muted);font-family:IBM Plex Mono,monospace;font-size:11px}.search-backdrop{z-index:100;background:#000000a6;justify-content:center;align-items:flex-start;padding:12vh 20px 20px;display:flex;position:fixed;inset:0}.search-dialog{border:1px solid var(--border);background:var(--card);width:min(560px,100%);box-shadow:0 30px 80px #00000059}.search-field{border-bottom:1px solid var(--border);min-height:54px;color:var(--muted);align-items:center;gap:11px;padding:0 16px;display:flex}.search-field input{width:100%;color:var(--text);background:0 0;border:0;outline:0;font-size:15px}.search-field kbd{border:1px solid var(--border);color:var(--muted);flex:none;padding:3px 6px;font-family:IBM Plex Mono,monospace;font-size:10px}.search-results{max-height:380px;overflow:auto}.search-results button{border:0;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:20px;width:100%;padding:13px 16px;display:flex}.search-results button:hover,.search-results button.active{background:var(--surface)}.search-results button.active{box-shadow:inset 3px 0 0 var(--accent)}.search-results button span{font-size:14px}.search-results button small{color:var(--muted);text-transform:uppercase;flex:none;font-family:IBM Plex Mono,monospace;font-size:10px}.empty-results{color:var(--muted);text-align:center;padding:24px;font-size:13px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=900px){.desktop-nav{display:none}.menu-button,.mobile-nav{display:flex}.hero-grid{left:45%}}@media (width<=700px){.container{width:min(100% - 40px,1080px)}.section{padding-top:58px;padding-bottom:58px}.nav-inner{min-height:58px;padding:0 20px}.brand span,.search-trigger kbd{display:none}.hero{min-height:500px}.hero-content{padding-block:64px}.hero h1{font-size:clamp(38px,13vw,55px)}.hero p{font-size:16px}.hero-grid{opacity:.16;inset:55% -20% -20% 20%;-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.about{grid-template-columns:1fr;gap:38px}.portrait{width:min(230px,75vw);margin:0 auto}.course-list>a,.course-list>div{flex-direction:column;align-items:flex-start;gap:5px}.course-list small{text-align:left;max-width:none}.skills-grid,.projects-grid,.experience-grid,.posts-grid{grid-template-columns:1fr}.skills-grid{gap:32px}.experience-grid{gap:62px}.project-visual{aspect-ratio:16/8}.eyebrow{margin-bottom:28px}.contact{padding:58px 0 32px}.contact-actions .button{width:100%}.footer-line{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
