@layer theme{:root,:host{--font-mono:"IBM Plex Mono", "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;--spacing:.25rem;--default-font-family:"Space Grotesk", "Manrope", "Segoe UI", sans-serif;--default-mono-font-family:"IBM Plex Mono", "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace}}@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,ui-sans-serif, system-ui, 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]){-webkit-text-decoration:underline dotted;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;-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{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{.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.h-full{height:100%}.min-h-full{min-height:100%}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--bg-top:#d4d9e3;--bg-mid:#bbc4d4;--bg-bottom:#9aa8be;--shape-a:#4257783d;--shape-b:#96a5be33;--window-bg:#d9d9d9;--chrome-bg:#ececec;--ink:#111318;--ink-soft:#5f646d;--line:#131a2733;--line-strong:#131a2752;--pill-bg:#cecece;--shadow:0 26px 70px #11162047;--quick-hover-bg:#0f1116;--quick-hover-fg:#f3f5fa;--quick-divider:#131a2729}@media (prefers-color-scheme:dark){:root{--bg-top:#151515;--bg-mid:#151515;--bg-bottom:#151515;--shape-a:#0000;--shape-b:#0000;--window-bg:#151515;--chrome-bg:#171c24;--ink:#f2f2f2;--ink-soft:#a8a8a8;--line:#ffffff1f;--line-strong:#ffffff3d;--pill-bg:#1b1b1b;--shadow:0 28px 84px #0000008c;--quick-hover-bg:#fff;--quick-hover-fg:#0e0e0e;--quick-divider:#ffffff1f}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;font-family:var(--font-mono);color:var(--ink);background:var(--window-bg)}a{color:inherit}a:focus-visible{outline:2px solid var(--ink)}@supports (color:color-mix(in lab, red, red)){a:focus-visible{outline:2px solid color-mix(in srgb, var(--ink) 75%, transparent)}}a:focus-visible{outline-offset:2px}.portfolio-shell{place-items:center;width:100%;min-height:100vh;padding:3rem 2rem;display:grid}.portfolio-grid{grid-template-columns:minmax(0,1fr) minmax(280px,28%);align-items:stretch;gap:.75rem;width:min(1400px,100%);min-height:calc(100vh - 6rem);display:grid}.window{background:var(--window-bg);border:1px solid var(--line);width:100%;min-width:0;min-height:100%;box-shadow:none;-webkit-backdrop-filter:none;animation:.42s both lift}.side-window{flex-direction:column;display:flex}.meta-grid{border-bottom:1px solid var(--line);grid-template-columns:1.35fr 1fr 1fr;display:grid}.meta-grid>div{border-right:1px solid var(--line);min-width:0;padding:1.15rem 1.35rem}.meta-grid>div:last-child{border-right:0}.meta-key,.section-key{letter-spacing:.03em;color:var(--ink-soft);margin:0;font-size:.67rem}.meta-value,.meta-link{overflow-wrap:anywhere;margin-top:.18rem;font-size:.76rem;text-decoration:none;display:inline-block}.meta-link[href^=mailto\:]{overflow-wrap:anywhere;font-size:.72rem}.meta-link:hover{text-decoration:underline}.section{border-bottom:1px solid var(--line);padding:2rem 1.8rem}.section:last-child{border-bottom:0}.footer-line{text-align:center;color:var(--ink-soft);letter-spacing:.02em;font-size:.72rem}.footer-line p{margin:0}.site-footer{text-align:center;width:min(1400px,100%);color:var(--ink-soft);letter-spacing:.02em;padding:1.35rem 1.6rem;font-size:.72rem}.site-footer p{margin:0}.hero{grid-template-columns:128px 1fr;align-items:center;gap:1.45rem;display:grid}.hero>div{min-width:0}.hero-avatar{object-fit:cover;border:1px solid var(--line-strong);background:var(--window-bg);border-radius:0;width:128px;height:128px}@supports (color:color-mix(in lab, red, red)){.hero-avatar{background:color-mix(in srgb, var(--window-bg) 78%, #fff 22%)}}h1{letter-spacing:0;white-space:normal;overflow-wrap:anywhere;margin:0;font-size:clamp(2rem,3.7vw,3rem);font-weight:500;line-height:1.04}.hero-name{max-width:100%;margin-left:-.22rem;padding:.06rem .22rem;transition:color .22s,background-color .22s,text-shadow .22s;display:block;position:relative;overflow:visible}.hero-name:after{content:"";background:currentColor;height:2px;transition:right .26s;position:absolute;bottom:0;left:0;right:100%}.hero-name:hover,.hero-name:focus-visible{background:var(--quick-hover-bg);color:var(--quick-hover-fg);text-shadow:0 0 18px var(--quick-hover-fg)}@supports (color:color-mix(in lab, red, red)){.hero-name:hover,.hero-name:focus-visible{text-shadow:0 0 18px color-mix(in srgb, var(--quick-hover-fg) 52%, transparent)}}.hero-name:hover:after,.hero-name:focus-visible:after{right:0}.hero-role{color:var(--ink-soft);margin:.35rem 0 0;font-size:1.9rem}.copy{max-width:80ch;margin:.66rem 0 0;font-size:.93rem;line-height:1.72}.experience-list{gap:1.35rem;margin-top:1.1rem;display:grid}.experience-item{animation:.44s both fadeIn}.experience-head{flex-wrap:wrap;align-items:center;gap:.8rem;display:flex}.period{color:var(--ink-soft);margin:0;font-size:.8rem}.role-pill{border:1px solid var(--line-strong);background:var(--pill-bg);overflow-wrap:anywhere;max-width:100%;margin:0;padding:.28rem .58rem;font-size:.78rem}.role-pill span{color:var(--ink-soft)}ul{margin:.6rem 0 0;padding-left:1.1rem}li{margin:.3rem 0;font-size:.84rem;line-height:1.54}.side-list{margin-top:.66rem;padding-left:0;list-style:none}.side-list li{margin:0}.side-list li+li{border-top:1px solid var(--quick-divider);margin-top:.52rem;padding-top:.52rem}.quick-link{border:1px solid #0000;border-radius:0;padding:.28rem .4rem;text-decoration:none;transition:background-color .26s,color .26s,border-color .26s;display:block}.quick-link-row{overflow-wrap:anywhere;align-items:flex-start;gap:.42rem;display:flex}.achievement-icon{border:1px solid;justify-content:center;align-items:center;width:1rem;min-width:1rem;height:1rem;font-size:.62rem;line-height:1;display:inline-flex}.achievement-badge{border:1px solid var(--line-strong);letter-spacing:.02em;color:var(--ink-soft);margin-top:.32rem;padding:.12rem .34rem;font-size:.66rem;display:inline-block}.quick-link:hover,.quick-link:focus-visible{background:var(--quick-hover-bg);color:var(--quick-hover-fg);border-color:var(--quick-hover-bg)}.quick-link:hover .achievement-badge,.quick-link:focus-visible .achievement-badge{color:inherit;border-color:currentColor}.compact-list{gap:.5rem;margin-top:.66rem;display:grid}.compact-list p{margin:0;font-size:.83rem;line-height:1.56}.compact-list a{border-bottom:1px solid var(--ink);text-decoration:none}@supports (color:color-mix(in lab, red, red)){.compact-list a{border-bottom:1px solid color-mix(in srgb, var(--ink) 45%, transparent)}}.compact-list a:hover{border-bottom-color:var(--ink)}.stack-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.4rem;margin-top:.66rem;display:grid}.stack-group{border:1px solid var(--line-strong);background:var(--ink)}@supports (color:color-mix(in lab, red, red)){.stack-group{background:color-mix(in srgb, var(--ink) 10%, var(--window-bg))}}.stack-group{padding:.95rem 1rem}.stack-label{color:var(--ink);letter-spacing:.02em;margin:0;font-size:.8rem}.stack-tags{flex-wrap:wrap;gap:.6rem;margin-top:.62rem;display:flex}.stack-tag{border:1px solid var(--line-strong);align-items:center;display:inline-block}@supports (color:color-mix(in lab, red, red)){.stack-tag{border:1px solid color-mix(in srgb, var(--line-strong) 85%, var(--ink) 15%)}}.stack-tag{background:var(--pill-bg);color:var(--ink);white-space:nowrap;padding:.34rem .58rem;font-size:.79rem;line-height:1.15}@keyframes lift{0%{opacity:0;transform:translateY(12px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:980px){.portfolio-shell{padding:1.5rem 1rem}.portfolio-grid{grid-template-columns:1fr;min-height:calc(100vh - 3rem)}.window{min-height:calc(100vh - 3rem)}.side-window{min-height:auto}.meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.meta-grid>div:nth-child(2n){border-right:0}.meta-grid>div:first-child,.meta-grid>div:nth-child(2){border-bottom:1px solid var(--line)}.stack-groups{grid-template-columns:1fr}h1{font-size:clamp(1.9rem,7vw,2.4rem)}.hero-role{font-size:1.45rem}}@media (max-width:700px){.portfolio-shell{padding:.5rem}.section,.meta-grid>div{padding:1rem}.meta-grid{grid-template-columns:1fr}.meta-grid>div{border-right:0;border-bottom:1px solid var(--line)}.meta-grid>div:last-child{border-bottom:0}.hero{grid-template-columns:1fr;gap:.7rem}.hero-avatar{width:96px;height:96px}h1{white-space:normal;font-size:1.9rem}.hero-role{font-size:1rem}.copy{font-size:.86rem}}
