@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");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}@layer theme{:root,:host{--font-sans:"Geist Variable", "Segoe UI Variable", sans-serif;--font-mono:"Cascadia Code", "SFMono-Regular", Consolas, monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);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}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.hidden{display:none}.resize{resize:both}}:root{color-scheme:dark;--bg:#142544;--surface:#1b3153;--surface-muted:#223a5e;--text:#e8edf5;--text-soft:#a8b7cd;--text-muted:#8195b4;--accent:#5eead4;--accent-hover:#99f6e4;--line:#344b6b;--badge-bg:#153a46;--badge-text:#5eead4;--badge-bg-hover:#1c4c58;--badge-text-hover:#99f6e4;--content-width:760px;--heading-display:clamp(2.8rem, 5.2vw, 4.25rem);--heading-identity:clamp(2.15rem, 3.55vw, 3.15rem);--heading-section:clamp(2rem, 3.6vw, 2.8rem);--heading-entry:1.375rem;--heading-project:clamp(1.3125rem, 1.45vw, 1.5rem);--heading-contact:clamp(1.65rem, 2.4vw, 1.9rem);--body-reading:1rem;--body-compact:.875rem;--body-meta:.75rem;--type-label:.65rem;--type-badge:.8125rem;--leading-heading:1.2;--leading-body:1.7;font-synthesis:none;text-rendering:optimizelegibility;font-optical-sizing:auto;font-kerning:normal;font-variant-numeric:tabular-nums;background:var(--bg);color:var(--text);font-family:var(--font-sans)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px;scroll-padding-top:2rem}body{isolation:isolate;background:var(--bg);min-width:320px;min-height:100vh;color:var(--text);font-size:var(--body-reading);line-height:var(--leading-body);margin:0;position:relative}body:before{z-index:0;pointer-events:none;opacity:0;background:radial-gradient(850px circle at var(--spotlight-x,50%) var(--spotlight-y,50%), #5eead41f 0, #5eead40f 40%, transparent 74%);content:"";transition:opacity .24s;position:fixed;inset:0}body[data-spotlight-active=true]:before{opacity:1}body,button,input,textarea{font-family:var(--font-sans)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}img,svg{max-width:100%;display:block}p,h1,h2,h3,ul,ol,figure{margin:0}h1,h2,h3{color:var(--accent);font-weight:600;line-height:var(--leading-heading);letter-spacing:-.03em;text-wrap:balance}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{color:var(--text);background:#5eead447}.skip-link{z-index:20;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:5px;padding:.7rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.site-shell{z-index:1;grid-template-columns:minmax(0,46fr) minmax(0,54fr);width:min(100%,1520px);min-height:100svh;margin:0 auto;display:grid;position:relative}.profile-sidebar{background:0 0;height:100svh;position:sticky;top:0}.profile-inner{flex-direction:column;align-items:flex-start;width:min(100%,600px);height:100%;margin-left:auto;padding:clamp(3.4rem,9vh,7rem) clamp(2rem,5vw,4.5rem) clamp(2rem,6vh,4.5rem);display:flex}.profile-copy{margin-top:0}.section-label,.profile-bottom-label,.eyebrow,.detail-label{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-label);letter-spacing:.13em;text-transform:uppercase;font-weight:600;line-height:1.5}.profile-copy h2{color:#e8eaf2;font-size:var(--heading-identity);letter-spacing:-.045em;margin-bottom:.55rem;font-weight:600;line-height:1.08}.profile-role{color:#e8eaf2;font-size:var(--body-reading);margin-bottom:1.2rem;font-weight:550;line-height:1.5}.profile-intro{max-width:370px;color:var(--text-soft);font-size:var(--body-reading);line-height:var(--leading-body)}.sidebar-nav{gap:.08rem;width:100%;margin-top:clamp(2.5rem,7vh,5rem);display:grid}.sidebar-link{min-height:42px;color:var(--text-soft);font-size:var(--body-compact);grid-template-columns:2rem auto 1fr;align-items:center;gap:.8rem;font-weight:500;transition:color .16s;display:grid}.sidebar-link:hover,.sidebar-link[aria-current]{color:var(--text)}.sidebar-link-number{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--type-label);transition:color .16s}.sidebar-link[aria-current] .sidebar-link-number,.sidebar-link:hover .sidebar-link-number{color:var(--accent)}.sidebar-link-rule{background:var(--accent);justify-self:start;width:0;height:1px;margin-left:.4rem;transition:width .18s}.sidebar-link[aria-current] .sidebar-link-rule{width:min(38px,45%)}.profile-bottom{width:100%;margin-top:auto;padding-top:2.5rem}.profile-bottom-label{color:var(--text-muted);margin-bottom:.75rem}.profile-socials{align-items:flex-start;gap:1.1rem;display:flex}.profile-socials .social-link{min-width:32px;color:var(--text-soft);font-size:var(--type-label);flex-direction:column;align-items:center;gap:.3rem;line-height:1.35;transition:color .2s;display:flex}.profile-socials .social-link:hover,.profile-socials .social-link:focus-visible{color:var(--accent)}.profile-socials .social-icon{place-items:center;width:28px;height:26px;transition:transform .22s,color .22s,filter .22s;display:grid}.profile-socials .social-link:hover .social-icon,.profile-socials .social-link:focus-visible .social-icon{filter:drop-shadow(0 0 6px #5eead459);transform:translateY(-2px)scale(1.06)}.profile-socials svg{width:21px;height:21px}.profile-socials .icon-mail{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.profile-socials .icon-github,.profile-socials .icon-linkedin{fill:currentColor}.profile-note{color:var(--text-muted);font-size:var(--body-meta);line-height:var(--leading-body);margin-top:1.6rem}.main-pane{min-width:0;min-height:100svh;overflow:visible}.content-wrap{width:min(100%, var(--content-width));margin-inline:auto}.home-section,.page-section{padding:clamp(3rem,7vh,5.7rem) clamp(1.5rem,4vw,3.75rem);scroll-margin-top:1.5rem}.home-section:first-child{padding-top:clamp(3.4rem,9vh,7rem)}.home-experience{padding-bottom:clamp(5.5rem,9vh,7rem)}.home-projects{padding-top:clamp(5.5rem,9vh,7rem)}@media (width>=981px){html{scroll-padding-top:0}.home-section#about,.home-section#experience,.home-section#projects,.home-section#skills,.home-section#contact{min-height:100svh;scroll-margin-top:0}}.section-label{align-items:center;gap:.75rem;margin-bottom:1.5rem;display:flex}.home-about h1,.page-intro h1{max-width:710px;font-size:var(--heading-display);letter-spacing:-.055em;margin-bottom:1.5rem;font-weight:580;line-height:1.08}.home-about h1 em{color:var(--accent);font-style:normal}.lede{max-width:650px;color:var(--text-soft);font-size:var(--body-reading);line-height:var(--leading-body)}.lede.about-typewriter [data-about-char]{visibility:hidden}.lede.about-typewriter [data-about-char][data-revealed=true]{visibility:visible}.lede.about-typewriter.is-typing [data-about-char].is-current:after{background:var(--accent);content:"";vertical-align:-.08em;width:1px;height:.95em;margin-left:.08em;animation:1s steps(2,start) infinite about-typewriter-caret;display:inline-block}@keyframes about-typewriter-caret{to{opacity:0}}.lede+.lede{margin-top:.9rem}.text-link{color:var(--accent);text-underline-offset:.2em;text-decoration:underline #5eead466;transition:color .16s,text-decoration-color .16s}.text-link:hover{color:var(--accent-hover);text-decoration-color:currentColor}.about-signoff{color:var(--text-muted);font:var(--type-label)/1.5 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;flex-wrap:wrap;gap:.65rem 1.4rem;margin-top:2rem;display:flex}.about-signoff span{align-items:center;gap:.5rem;display:inline-flex}.about-signoff span:before{background:var(--accent);content:"";border-radius:50%;width:4px;height:4px}.section-heading{justify-content:space-between;align-items:end;gap:1.5rem;margin-bottom:2rem;display:flex}.section-heading h2,.page-intro h1{margin:0}.section-heading h2{font-size:var(--heading-section);letter-spacing:-.04em;font-weight:600;line-height:1.15}.section-description{max-width:270px;color:var(--text-soft);font-size:var(--body-compact)}.timeline{position:relative}.timeline-item{border-radius:8px;margin:-.8rem;padding:.8rem;transition:background-color .22s,transform .22s;position:relative}.timeline-item:hover{background:#37527a7a;transform:translateY(-2px)}.timeline-item+.timeline-item{margin-top:2.4rem}.timeline-meta{color:var(--text-soft);font:var(--type-label)/1.5 var(--font-mono);letter-spacing:.05em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:.45rem .75rem;margin-bottom:.55rem;display:flex}.timeline-meta span+span:before{content:"·";color:var(--text-muted);margin-right:.75rem}.timeline-item h3{font-size:var(--heading-entry);letter-spacing:-.03em;margin-bottom:.5rem;font-weight:600;line-height:1.25}.timeline-item p{max-width:590px;color:var(--text-soft);font-size:var(--body-reading);line-height:var(--leading-body)}.experience-entry{grid-template-columns:8rem minmax(0,1fr);align-items:start;gap:1.8rem;display:grid}.experience-date{color:var(--text-soft);font:var(--type-label)/1.6 var(--font-mono);white-space:nowrap;padding-top:.2rem}.experience-copy h2,.experience-copy h3{font-size:var(--heading-entry);letter-spacing:-.03em;margin:0 0 .3rem;font-weight:600;line-height:1.25}.experience-employer{color:var(--accent);font-size:var(--body-compact);margin:0 0 .45rem;font-weight:550}.experience-copy>p:not(.experience-employer){max-width:590px;color:var(--text-soft);font-size:var(--body-reading);line-height:var(--leading-body)}.home-section .timeline-item h3{margin-bottom:.35rem}.home-section .inline-tags{margin-top:.6rem}.inline-tags,.skill-list{flex-wrap:wrap;gap:.45rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.inline-tags li,.skill-list li{background:var(--badge-bg);color:var(--badge-text);font-size:var(--type-badge);border-radius:999px;align-items:center;padding:.24rem .58rem;font-weight:550;line-height:1.4;transition:color .16s,background-color .16s,transform .16s;display:inline-flex}.inline-tags li:hover,.skill-list li:hover{background:var(--badge-bg-hover);color:var(--badge-text-hover);transform:translateY(-1px)}.work-list{gap:2.5rem;display:grid}.home-projects .content-wrap{width:min(100%,860px)}.work-entry{border-radius:5px;grid-template-columns:230px minmax(0,1fr);align-items:start;gap:28px;margin:-.85rem;padding:.85rem;transition:background-color .26s,transform .26s;display:grid}.work-entry:hover,.work-entry:focus-within{background:#3d5b867a;transform:translateY(-5px)scale(1.008)}.project-visual{aspect-ratio:16/10;border:1px solid var(--line);background:0 0;border-radius:6px;place-items:center;width:100%;transition:border-color .26s;display:grid;overflow:hidden}.project-visual img{object-fit:contain;width:100%;height:100%;transition:transform .26s,filter .26s}.work-entry:hover .project-visual,.work-entry:focus-within .project-visual{border-color:var(--accent)}.work-entry:hover .project-visual img,.work-entry:focus-within .project-visual img{filter:brightness(1.08);transform:scale(1.02)}.project-copy{min-width:0}.work-entry-head{margin-bottom:.55rem}.work-entry h3{font-size:var(--heading-project);letter-spacing:-.03em;font-weight:600;line-height:1.3}.work-entry h3 a{align-items:center;gap:.35rem;transition:color .2s;display:inline-flex}.work-entry h3 a:hover,.work-entry:hover h3 a,.work-entry:focus-within h3 a{color:var(--accent)}.work-entry h3 a span{font-size:.75em;line-height:1}.work-entry h3 a span,.project-links a span{transition:transform .22s,color .22s;display:inline-block}.work-entry:hover h3 a span,.work-entry:focus-within h3 a span,.work-entry:hover .project-links a span,.work-entry:focus-within .project-links a span{color:var(--accent-hover);transform:translate(2px,-2px)}.work-entry p{max-width:48ch;color:var(--text-soft);font-size:var(--body-reading);font-weight:400;line-height:var(--leading-body)}.project-meta{flex-wrap:wrap;gap:.35rem;margin-top:.8rem;padding:0;list-style:none;display:flex}.project-meta li{background:var(--badge-bg);color:var(--badge-text);font-size:var(--type-badge);border-radius:999px;padding:.16rem .48rem;font-weight:550;line-height:1.4}.project-links{flex-wrap:wrap;gap:1rem 1.5rem;margin-top:1.2rem;display:flex}.project-links a{color:var(--accent);font-size:var(--body-compact);align-items:center;gap:.45rem;transition:color .16s;display:inline-flex}.project-links a:hover{color:var(--accent-hover)}.project-links .case-link{color:var(--text-soft)}.project-links .case-link:hover{color:var(--accent-hover)}.section-more{margin-top:2rem}.capability-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.8rem 2rem;display:grid}.capability-group{min-width:0;padding:0}.capability-group h3{color:var(--text-soft);font:var(--type-label)/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.65rem}.capability-group p{color:var(--text-soft);font-size:var(--body-compact);line-height:var(--leading-body)}.capability-group .skill-list{gap:.45rem;margin-top:0}.capability-group .skill-list li{font-size:var(--type-badge);padding:.2rem .58rem;line-height:1.4}.case-tech-list{max-width:520px;margin-top:.6rem}.case-tech-list li{font-size:var(--type-badge)}@media (width<=700px){.work-entry{grid-template-columns:minmax(0,1fr);gap:1.15rem}.work-entry:hover,.work-entry:focus-within{transform:translateY(-3px)}.home-projects .content-wrap{width:min(100%,860px)}}.page-intro{padding-top:clamp(3.4rem,9vh,7rem);padding-bottom:clamp(2.2rem,5vh,4rem)}.page-intro h1{max-width:710px;font-size:var(--heading-section);letter-spacing:-.04em;margin-bottom:1.25rem;font-weight:600;line-height:1.15}.page-intro .lede{max-width:620px}.page-intro .section-label{margin-bottom:1.25rem}.page-section h2{font-size:var(--heading-section);letter-spacing:-.04em;margin-bottom:1rem;font-weight:600;line-height:1.15}.page-section h3{font-size:var(--heading-entry);letter-spacing:-.025em;margin-bottom:.45rem;font-weight:600;line-height:1.3}.page-section p{color:var(--text-soft)}.page-section p+p{margin-top:.8rem}.page-section .section-label{margin-bottom:1.1rem}.page-section .content-wrap>*+*{margin-top:1.5rem}.page-section .content-wrap>.section-label{margin-top:0}.page-section .content-wrap>h2{margin-top:.3rem}.case-study{padding-top:clamp(2.4rem,5vh,4.4rem);padding-bottom:clamp(2.8rem,6vh,5rem)}.case-header{grid-template-columns:1fr auto;align-items:start;gap:1.2rem;margin-bottom:1.8rem;display:grid}.case-header h2{font-size:var(--heading-section);margin:.25rem 0 .7rem}.case-header p{max-width:610px}.case-number{color:var(--text-muted);font:var(--body-meta) var(--font-mono);letter-spacing:.08em}.case-subsections{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem 1.6rem;margin-top:1.7rem;display:grid}.case-subsections h3{color:#c6ccda;font-size:var(--body-compact);font-weight:600;line-height:1.4}.case-subsections p,.case-subsections li{color:var(--text-soft);font-size:var(--body-reading);line-height:var(--leading-body)}.case-subsections ul{gap:.32rem;margin-top:.6rem;padding-left:1rem;display:grid}.case-image{background:0 0;border:1px solid #0000;border-radius:7px;width:100%;max-width:100%;margin-top:2rem;transition:border-color .22s;overflow:hidden}.case-study:hover .case-image,.case-study:focus-within .case-image{border-color:var(--accent)}.case-study{border-radius:10px;transition:background-color .24s,transform .24s}.case-study:hover,.case-study:focus-within{background:#37527a70;transform:translateY(-3px)}.case-study .case-header h2{transition:color .22s}.case-study:hover .case-header h2,.case-study:focus-within .case-header h2{color:var(--accent-hover)}.case-image img{width:100%;height:auto;transition:transform .24s,filter .24s}.case-study:hover .case-image img,.case-study:focus-within .case-image img{filter:brightness(1.045);transform:scale(1.015)}.case-image figcaption{color:var(--text-muted);font:var(--type-label)/1.5 var(--font-mono);padding:.65rem .1rem 0}.case-footer-row{justify-content:space-between;align-items:end;gap:1rem;margin-top:1.5rem;display:flex}.case-tech{max-width:510px;color:var(--text-soft);font-size:var(--body-compact);margin-top:.5rem;line-height:1.75}.case-tech span{color:var(--text-muted)}.button-link{border:1px solid var(--line);color:var(--text);font-size:var(--body-meta);border-radius:4px;flex:none;align-items:center;gap:.55rem;padding:.65rem .8rem;transition:border-color .16s,color .16s;display:inline-flex}.button-link:hover{border-color:var(--accent);color:var(--accent-hover)}.next-step h2{font-size:var(--heading-section);letter-spacing:-.04em;margin:.25rem 0 1.2rem;font-weight:600;line-height:1.15}.image-label{color:var(--text-soft);font:var(--type-label)/1.5 var(--font-mono);letter-spacing:.07em;text-transform:uppercase;align-items:center;gap:.65rem;margin-top:2rem;display:flex}.image-label:before{background:var(--accent);content:"";width:17px;height:1px}.timeline-large .timeline-item{padding-bottom:.2rem}.about-principles{gap:1.4rem;display:grid}.about-principles article{padding-top:.5rem}.about-principles h3{color:var(--text);font-size:var(--body-compact);margin-bottom:.45rem;font-weight:600;line-height:1.3}.about-principles p{font-size:var(--body-compact);line-height:var(--leading-body)}.status-tag{color:var(--text-soft);font:var(--type-label)/1.4 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;align-self:start;padding:.25rem 0}.status-tag.is-live{color:var(--accent)}.contact-panel{max-width:620px;padding:.25rem 0}.contact-panel h1,.contact-panel h2{font-size:var(--heading-contact);letter-spacing:-.035em;margin-bottom:.65rem;font-weight:600;line-height:1.3}.contact-panel p{max-width:560px;font-size:var(--body-reading);line-height:var(--leading-body)}.contact-methods{flex-wrap:wrap;align-items:flex-start;gap:1rem 1.65rem;margin-top:1.25rem;display:flex}.contact-methods .social-link{min-width:64px;color:var(--text-soft);font-size:var(--body-meta);flex-direction:column;align-items:center;gap:.45rem;line-height:1.4;transition:color .22s;display:flex}.contact-methods .social-link:hover,.contact-methods .social-link:focus-visible{color:var(--accent)}.contact-methods .social-icon{width:34px;height:32px;color:var(--text-soft);place-items:center;transition:transform .22s,color .22s,filter .22s;display:grid}.contact-methods .social-icon svg{width:25px;height:25px}.contact-methods .social-link:hover .social-icon,.contact-methods .social-link:focus-visible .social-icon{color:var(--accent);filter:drop-shadow(0 0 7px #5eead45c);transform:translateY(-2px)scale(1.08)}.contact-methods .icon-mail{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.contact-methods .icon-github,.contact-methods .icon-linkedin{fill:currentColor}.site-footer{color:var(--text-muted);font:var(--body-meta)/1.5 var(--font-sans);justify-content:space-between;align-items:center;gap:1rem;padding:1.3rem clamp(1.5rem,5.5vw,5rem);display:flex}.footer-links{flex-wrap:wrap;gap:.8rem 1.1rem;display:flex}.site-footer a{transition:color .16s}.site-footer a:hover{color:var(--accent)}.footer-close{color:var(--text-muted);text-align:right}@media (height<=700px) and (width>=981px){.profile-inner{padding-top:clamp(3.4rem,9vh,3.4rem);padding-bottom:1.5rem}.profile-copy{margin-top:0}.sidebar-nav{margin-top:2rem}.profile-bottom{padding-top:1.4rem}}@media (width<=980px){:root{--heading-identity:1.4rem;--body-compact:.75rem;--type-label:.58rem}html{scroll-padding-top:8rem}.site-shell{width:100%;min-height:100svh;display:block}.profile-sidebar{z-index:5;background:var(--bg);height:auto;position:sticky;top:0}.profile-inner{grid-template-columns:1fr;align-items:start;gap:0;width:100%;height:auto;padding:1.2rem clamp(1.2rem,4vw,2.5rem) .8rem;display:grid}.profile-copy,.profile-copy h2{margin:0}.profile-role{font-size:var(--body-meta);margin:.12rem 0 0;line-height:1.4;display:block}.profile-intro,.profile-bottom,.profile-note{display:none}.sidebar-nav{scrollbar-width:none;grid-column:1/-1;gap:.1rem;margin-top:1rem;display:flex;overflow-x:auto}.sidebar-nav::-webkit-scrollbar{display:none}.sidebar-link{white-space:nowrap;flex:none;grid-template-columns:auto auto;gap:.35rem;min-height:41px;padding:0 .65rem}.sidebar-link[aria-current]{color:var(--accent)}.sidebar-link-rule{display:none}.main-pane{min-height:0;overflow:visible}.home-section,.page-section{padding-inline:clamp(1.2rem,5vw,2.5rem)}.home-section:first-child,.page-intro{padding-top:3.25rem}.home-section,.page-section{scroll-margin-top:8rem}.site-footer{padding-inline:clamp(1.2rem,5vw,2.5rem)}}@media (width<=600px){:root{--heading-display:clamp(2.55rem, 10.5vw, 3.5rem);--heading-section:clamp(2rem, 8.5vw, 2.5rem);--heading-contact:clamp(1.55rem, 7vw, 1.8rem);--heading-project:clamp(1.3125rem, 5.5vw, 1.5rem);--body-reading:.9375rem;--body-compact:.75rem;--type-label:.59rem}html{scroll-padding-top:7.25rem}.profile-inner{padding-top:1rem}.sidebar-nav{margin-top:.75rem}.sidebar-link{min-height:39px;font-size:var(--body-meta);padding-inline:.5rem}.home-section,.page-section{padding-block:2.8rem}.home-section:first-child,.page-intro{padding-top:2.8rem}.section-label{margin-bottom:1.1rem}.section-heading{display:block}.section-description{margin-top:.8rem}.capability-grid{grid-template-columns:1fr}.case-header{grid-template-columns:1fr;gap:.2rem}.experience-entry{grid-template-columns:1fr;gap:.3rem}.experience-date{padding-top:0}.case-number{grid-row:1}.case-subsections{grid-template-columns:1fr;gap:1.2rem}.case-footer-row{flex-direction:column;align-items:flex-start}.status-tag{grid-row:1;justify-self:start}.site-footer{flex-direction:column;align-items:flex-start;gap:.3rem}.footer-close{text-align:left}.contact-methods{gap:.75rem 1.1rem}.resume-actions{flex-direction:column}.resume-actions .button-link{justify-content:center;width:100%}}@media (hover:none){.work-entry:hover,.work-entry:focus-within,.timeline-item:hover{background:0 0;transform:none}.work-entry:hover .project-visual,.work-entry:focus-within .project-visual{border-color:var(--line)}.work-entry:hover .project-visual img,.work-entry:focus-within .project-visual img{filter:none;transform:none}.case-study:hover,.case-study:focus-within{background:0 0;transform:none}.case-study:hover .case-image,.case-study:focus-within .case-image{border-color:#0000}.case-study:hover .case-image img,.case-study:focus-within .case-image img{filter:none;transform:none}.profile-socials a:hover,.inline-tags li:hover,.skill-list li:hover{transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}body:before{display:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (pointer:coarse){body:before{display:none}}.resume-page{max-width:780px}.resume-heading{justify-content:space-between;align-items:start;gap:1rem;display:flex}.resume-heading h1{font-size:var(--heading-display);letter-spacing:-.045em;margin:.2rem 0 .5rem;font-weight:600;line-height:1.08}.resume-subtitle{color:var(--text-soft)}.resume-actions{flex-wrap:wrap;gap:.65rem;margin:1.4rem 0 2rem;display:flex}.resume-actions .button-link{cursor:pointer;font:inherit}.page-section .content-wrap>.resume-actions{margin-top:1.4rem}.resume-print-status{color:var(--text-soft);font-size:var(--body-meta);margin:-1rem 0 1.5rem}.resume-preview{border:1px solid var(--line);background:var(--surface-muted);border-radius:6px;overflow:hidden}.resume-preview iframe{background:var(--surface-muted);border:0;width:100%;height:clamp(720px,100svh,1100px);display:block}@media (width<=600px){.resume-preview iframe{height:max(520px,75svh)}}.resume-contact{font-size:var(--body-meta);flex-wrap:wrap;gap:.5rem 1.2rem;padding:.8rem 0;display:flex}.resume-contact a{color:var(--accent)}.resume-section{padding:1.25rem 0}.resume-section h2{color:var(--accent);font:600 var(--type-label)/1.5 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.85rem}.resume-entry{break-inside:avoid}.resume-entry+.resume-entry{margin-top:1.15rem}.resume-entry h3{font-size:var(--body-reading);margin-bottom:.2rem;font-weight:600;line-height:1.3}.resume-status{color:var(--text-soft);font-size:var(--body-meta);letter-spacing:0;margin-left:.35rem;font-weight:450}.resume-entry p{color:var(--text-soft);font-size:var(--body-compact);line-height:var(--leading-body)}.resume-entry .inline-tags{margin-top:.5rem}.resume-skill-groups{gap:.75rem;display:grid}.resume-skill-group h3{font-size:var(--body-compact);margin-bottom:.15rem;font-weight:600;line-height:1.4}.resume-skill-group .skill-list{margin-top:.35rem}@media print{@page{size:A4;margin:14mm}html,body{width:auto;min-width:0;min-height:0;color:#111!important;background:#fff!important;font:10pt/1.45 Arial,Helvetica,sans-serif!important}body:before,.profile-sidebar,.site-footer,.skip-link,.resume-actions{display:none!important}.site-shell{width:auto;height:auto;min-height:0;display:block}.main-pane{width:auto;height:auto;overflow:visible;color:#111!important;background:#fff!important}.resume-page{width:auto;max-width:none}.page-section.resume-section-wrap{border:0;padding:0}.resume-heading{display:block}.resume-heading h1,.resume-section h2,.resume-entry h3{color:#111!important}.resume-heading h1{font-size:24pt}.resume-subtitle,.resume-entry p{color:#333!important}.resume-contact{border:0}.resume-contact a,.resume-entry a{color:#111!important}.resume-section{break-inside:avoid;padding:8pt 0}.resume-section h2{margin-bottom:5pt;font-size:9pt}.resume-entry{break-inside:avoid}.resume-entry .inline-tags li,.resume-skill-group .skill-list li{background:0 0;border:0;padding:0;font-size:8.5pt;color:#111!important}.resume-entry .inline-tags li+li:before,.resume-skill-group .skill-list li+li:before{content:", ";white-space:pre}.resume-contact a[href^=http]:after{content:" (" attr(href) ")";font-size:8pt}a{text-decoration:none!important}*{box-shadow:none!important;transition:none!important;animation:none!important}}
