@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";@layer components;@layer theme{:root,:host{--font-sans:var(--type-sans);--font-mono:var(--type-mono);--spacing:.25rem;--default-font-family:var(--type-sans);--default-mono-font-family:var(--type-mono);--color-background:var(--palette-background);--color-surface:var(--palette-surface);--color-text:var(--palette-text);--color-muted:var(--palette-muted);--color-outline:var(--palette-outline);--color-divider:var(--palette-divider);--color-pink:var(--palette-pink);--color-pink-hover:var(--palette-pink-hover);--color-on-pink:var(--palette-on-pink)}}@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]){-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: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 utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mx-auto{margin-inline:auto}.hidden{display:none}.w-full{width:100%}.max-w-\[1280px\]{max-width:1280px}.px-5{padding-inline:calc(var(--spacing) * 5)}.text-pink{color:var(--palette-pink)}@media (width>=40rem){.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:px-12{padding-inline:calc(var(--spacing) * 12)}}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--palette-background:#0f1117;--palette-surface:#1b1d27;--palette-text:#fff;--palette-muted:#a1a1aa;--palette-outline:#fff;--palette-divider:#ffffff40;--palette-pink:#f472b6;--palette-pink-hover:#f9a0cb;--palette-blue:#748cab;--palette-brown:#9e6240;--palette-on-pink:#0f1117;--accent-technical:var(--palette-blue);--accent-editorial:var(--palette-brown);--case-backdrop:#0f1117d9;--type-sans:"Inter",sans-serif;--type-mono:"JetBrains Mono",monospace}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--palette-background:#f8fafc;--palette-surface:#fff;--palette-text:#0f1117;--palette-muted:#475569;--palette-outline:#0f1117;--palette-divider:#0f111740}html{scroll-behavior:smooth}body{background:var(--color-background);min-width:320px;color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}::selection{background:var(--color-pink);color:var(--color-on-pink)}:focus-visible{outline:3px solid var(--color-outline);outline-offset:4px}.skip-link{z-index:10;background:var(--color-pink);color:var(--color-on-pink);padding:.75rem 1rem;font-weight:700;position:absolute;top:-100px;left:1rem}.skip-link:focus{top:1rem}.site-shell{flex-direction:column;min-height:100svh;display:flex}.site-main{flex:1}.route-loading{min-height:50vh;color:var(--color-muted);font:500 .85rem var(--font-mono);align-items:center;display:flex}.site-header{border-bottom:1px solid var(--color-divider);background:var(--color-background)}.header-inner{justify-content:space-between;align-items:center;gap:1rem;min-height:88px;display:flex}.brand{color:var(--color-text);letter-spacing:-.045em;white-space:nowrap;align-items:center;gap:.7rem;font-size:1.04rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{background:var(--color-pink);width:26px;height:26px;color:var(--color-on-pink);font:600 .7rem var(--font-mono);letter-spacing:-.08em;place-items:center;display:grid}.header-actions{align-items:center;gap:.5rem;display:flex}.desktop-nav{align-items:center;gap:2rem;display:none}.nav-link{color:var(--color-muted);font-size:.875rem;font-weight:600;text-decoration:none;transition:color .2s;position:relative}.nav-link:hover,.nav-link:active,.nav-link[aria-current=page]{color:var(--color-text)}.desktop-nav .nav-link[aria-current=page]:after{content:"";background:var(--color-pink);height:2px;position:absolute;bottom:-.7rem;left:0;right:0}.icon-button{border:1px solid var(--color-divider);width:44px;height:44px;color:var(--color-text);background:0 0;place-items:center;transition:background .2s,border-color .2s,transform .2s;display:inline-grid}.icon-button:hover{background:var(--color-surface);border-color:var(--color-outline)}.icon-button:active{transform:scale(.95)}.mobile-nav{border-top:1px solid var(--color-divider);gap:.1rem;padding-block:.45rem 1rem;display:grid}.mobile-nav[hidden]{display:none}.mobile-nav .nav-link{align-items:center;min-height:48px;padding-inline:.75rem;display:flex}.mobile-nav .nav-link[aria-current=page]{background:var(--color-surface);box-shadow:inset 3px 0 var(--color-pink)}.site-footer{border-top:1px solid var(--color-divider)}.footer-inner{min-height:132px;color:var(--color-muted);align-items:center;gap:1.5rem;padding-block:2rem;font-size:.8rem;display:grid}.footer-identity{gap:.35rem;line-height:1.5;display:grid}.footer-identity strong{color:var(--color-text);font-size:.92rem}.footer-nav{flex-wrap:wrap;gap:.35rem 1.25rem;display:flex}.footer-nav a,.footer-contact-links a{min-height:44px;color:var(--color-muted);align-items:center;gap:.35rem;font-weight:600;text-decoration:none;display:inline-flex}.footer-nav a:hover,.footer-contact-links a:hover{color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:5px;text-decoration-thickness:2px}.footer-nav a:active,.footer-contact-links a:active{color:var(--color-text)}.footer-contact-links{flex-wrap:wrap;gap:.35rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.hero{align-items:center;min-height:min(730px,100svh - 181px);padding-block:6rem 5rem;display:flex}.hero-grid{gap:4rem;width:100%;display:grid}.eyebrow{font:600 .72rem/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:.75rem;display:flex}.eyebrow:before{content:"";background:var(--color-pink);flex:none;width:24px;height:2px}.hero-title span{box-shadow:inset 0 -.16em var(--color-pink)}.hero-description{max-width:590px;color:var(--color-muted);margin:2rem 0 0;font-size:clamp(1rem,2vw,1.2rem);line-height:1.75}.hero-actions{flex-wrap:wrap;gap:.8rem;margin-top:2.3rem;display:flex}.button{border:1px solid #0000;justify-content:center;align-items:center;gap:.7rem;min-height:50px;padding:.8rem 1.2rem;font-size:.875rem;font-weight:700;line-height:1.2;text-decoration:none;transition:background .2s,color .2s,border-color .2s,transform .2s;display:inline-flex}.button-primary{background:var(--color-pink);color:var(--color-on-pink);border-color:var(--color-pink)}.button-primary:hover{background:var(--color-pink-hover);border-color:var(--color-pink-hover)}.button-secondary{color:var(--color-text);border-color:var(--color-outline);background:0 0}.page-intro{padding-block:clamp(5rem,10vw,9rem)}.page-intro h1{letter-spacing:-.07em;text-wrap:balance;max-width:850px;margin:1.5rem 0 0;font-size:clamp(3rem,8vw,6rem);line-height:1.05}.page-intro p:not(.eyebrow){max-width:600px;color:var(--color-muted);margin:1.5rem 0 0;font-size:1.1rem;line-height:1.75}.page-intro .button,.text-link{margin-top:2rem}.text-link{min-height:44px;color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:5px;align-items:center;font-weight:700;text-decoration-thickness:2px;display:inline-flex}.text-link:hover{color:var(--color-muted)}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:1.5rem 3rem;margin-bottom:2.3rem;display:flex}.section-heading h2{letter-spacing:-.065em;margin:1.1rem 0 0;font-size:clamp(2.2rem,5vw,4rem);font-weight:700;line-height:1.1}.section-heading p:not(.eyebrow){max-width:590px;color:var(--color-muted);margin:1rem 0 0;line-height:1.7}.section-link{min-height:44px;color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:5px;align-items:center;gap:.6rem;font-size:.9rem;font-weight:700;text-decoration-thickness:2px;transition:gap .2s;display:inline-flex}.section-link:hover{gap:.9rem}.section-link:active{color:var(--color-muted)}.portfolio-section{border-top:1px solid var(--color-divider);padding-block:clamp(4.5rem,9vw,8rem)}.experience-timeline{border-left:1px solid var(--color-divider);margin:0;padding:0 0 0 1.5rem;list-style:none}.experience-item{gap:.65rem 2rem;padding:0 0 2.8rem;display:grid;position:relative}.experience-item:last-child{padding-bottom:0}.experience-item:before{content:"";border:1px solid var(--color-outline);background:var(--color-pink);width:10px;height:10px;position:absolute;top:.25rem;left:calc(-1.5rem - 5px)}.experience-period{color:var(--color-muted);font:500 .72rem/1.5 var(--font-mono)}.experience-title-row{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.experience-title-row h3{letter-spacing:-.04em;margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:700;line-height:1.25}.experience-engagement{border:1px solid var(--color-divider);color:var(--color-muted);font:500 .68rem/1.3 var(--font-mono);padding:.2rem .45rem}.experience-company{margin:.55rem 0 0;font-weight:700}.experience-summary{max-width:620px;color:var(--color-muted);margin:1rem 0 0;line-height:1.75}.skills-grid{grid-template-columns:minmax(0,1fr);gap:.8rem;display:grid}.skill-category{border:1px solid var(--color-divider);background:var(--color-surface);min-width:0;padding:clamp(1.25rem,3vw,2rem)}.skill-category h3{letter-spacing:-.03em;margin:0;font-size:1.15rem;font-weight:700;line-height:1.4}.skill-category .technology-list{margin-top:1.25rem}.contact-panel{border:1px solid var(--color-outline);background:var(--color-surface);gap:2rem;padding:clamp(1.5rem,5vw,4rem);display:grid}.contact-panel h2{letter-spacing:-.065em;margin:1.2rem 0 0;font-size:clamp(2.2rem,5vw,4rem);font-weight:700;line-height:1.1}.contact-panel p:not(.eyebrow){max-width:620px;color:var(--color-muted);margin:1.1rem 0 0;line-height:1.75}.contact-links{flex-wrap:wrap;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.contact-links a{border:1px solid var(--color-outline);min-height:44px;color:var(--color-text);background:0 0;justify-content:center;align-items:center;gap:.55rem;padding:.65rem .85rem;font-size:.85rem;font-weight:700;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:inline-flex}.contact-links a:hover{background:var(--color-text);color:var(--color-background);transform:translateY(-2px)}.contact-links a:active{transform:translateY(0)}.footer-contact-links a{min-height:44px;color:var(--color-muted);background:0 0;border:0;padding:0;font-size:.8rem}.footer-contact-links a:hover{color:var(--color-text);background:0 0;transform:none}.about-intro h1{letter-spacing:-.07em;margin:1.3rem 0 0;font-size:clamp(3rem,8vw,6.5rem);font-weight:700;line-height:1.05}.about-lead{max-width:800px;color:var(--color-muted);margin:1.5rem 0 0;font-size:clamp(1.1rem,2.2vw,1.4rem);line-height:1.7}.about-location{font:500 .75rem/1.5 var(--font-mono);color:var(--color-muted);margin:1.5rem 0 0}.about-actions{flex-wrap:wrap;gap:.8rem;margin-top:2rem;display:flex}.about-background-grid{grid-template-columns:minmax(0,1fr);gap:3rem;display:grid}.about-background h2{letter-spacing:-.055em;margin:1.2rem 0 0;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:700;line-height:1.15}.education-card{border:1px solid var(--color-divider);background:var(--color-surface);margin-top:1.7rem;padding:1.5rem}.education-card h3{letter-spacing:-.025em;margin:0;font-size:1.2rem;line-height:1.4}.education-card p{color:var(--color-muted);margin:.4rem 0 0;line-height:1.6}.education-card .education-status{font:500 .73rem/1.5 var(--font-mono);margin-top:1rem}.education-card h4{border-top:1px solid var(--color-divider);margin:1.5rem 0 .5rem;padding-top:1rem;font-size:.84rem}.about-text-list{color:var(--color-muted);flex-wrap:wrap;gap:.4rem 1.4rem;margin:0;padding-left:1.2rem;font-size:.84rem;line-height:1.6;display:flex}.about-text-list li::marker{color:var(--color-pink)}.about-focus-list{margin:1.7rem 0 0;padding:0;list-style:none}.about-focus-list li{border-top:1px solid var(--color-divider);padding:.85rem 0;font-size:1rem;font-weight:600}.about-focus-list li:last-child{border-bottom:1px solid var(--color-divider)}.project-grid{grid-template-columns:minmax(0,1fr);gap:1.25rem;display:grid}.project-card{border:1px solid var(--color-divider);background:var(--color-surface);flex-direction:column;min-width:0;transition:border-color .2s,transform .2s;display:flex;overflow:hidden}.project-card-media{aspect-ratio:16/10;border-bottom:1px solid var(--color-divider);background:var(--color-background);width:100%;overflow:hidden}.project-card-media img{object-fit:cover;width:100%;height:100%;display:block}.project-placeholder{background:var(--color-background);flex-direction:column;justify-content:space-between;gap:1rem;width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex}.project-placeholder-index,.project-placeholder-note{color:var(--color-muted);font:500 .7rem/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.project-placeholder-title{max-width:18ch;color:var(--color-text);letter-spacing:-.065em;overflow-wrap:anywhere;font-size:clamp(1.8rem,4vw,3.7rem);font-weight:700;line-height:1.05}.project-card-content{flex-direction:column;flex:1;padding:clamp(1.25rem,2.5vw,2rem);display:flex}.project-card-meta{align-items:center;min-height:1.5rem;display:flex}.project-status{color:var(--color-muted);font:500 .68rem/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:.5rem;display:inline-flex}.project-status:before{content:"";background:var(--color-pink);width:7px;height:7px;box-shadow:0 0 0 1px var(--color-outline);border-radius:50%;flex:none}.project-card-title{letter-spacing:-.045em;overflow-wrap:anywhere;margin:1rem 0 0;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:700;line-height:1.2}.project-card-description{color:var(--color-muted);margin:.75rem 0 0;font-size:.95rem;line-height:1.65}.technology-list{flex-wrap:wrap;gap:.45rem;margin:1.4rem 0 0;padding:0;list-style:none;display:flex}.technology-badge{border:1px solid var(--color-divider);min-height:30px;color:var(--color-text);background:var(--color-background);font:500 .68rem/1.25 var(--font-mono);white-space:normal;align-items:center;padding:.2rem .55rem;display:inline-flex}.project-card-actions{flex-wrap:wrap;align-items:center;gap:.25rem 1.1rem;margin-top:auto;padding-top:1.65rem;display:flex}.project-detail-link,.project-external-link{min-height:44px;color:var(--color-text);align-items:center;gap:.4rem;font-size:.83rem;font-weight:700;text-decoration:none;transition:gap .2s,color .2s;display:inline-flex}.project-detail-link{text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:5px;text-decoration-thickness:2px}.project-detail-link:hover,.project-external-link:hover{gap:.65rem}.project-detail-link:active,.project-external-link:active,.project-external-link{color:var(--color-muted)}.projects-page{padding-block:clamp(4rem,8vw,7rem)}.projects-page-heading h1{letter-spacing:-.07em;margin:1.2rem 0 0;font-size:clamp(3rem,8vw,6rem);font-weight:700;line-height:1.05}.projects-page-heading p:not(.eyebrow){max-width:650px;color:var(--color-muted);margin:1.3rem 0 0;font-size:clamp(1rem,2vw,1.15rem);line-height:1.75}.project-filters{border-top:1px solid var(--color-divider);margin-top:clamp(2.5rem,6vw,5rem);padding-top:1.5rem}.filter-label{color:var(--color-muted);font:600 .7rem var(--font-mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:1rem;display:block}.filter-options{flex-wrap:wrap;gap:.5rem;display:flex}.filter-button{border:1px solid var(--color-divider);min-height:44px;color:var(--color-text);background:0 0;padding:.55rem .8rem;font-size:.78rem;font-weight:600;transition:background .2s,border-color .2s,transform .2s}.filter-button:hover{border-color:var(--color-outline);background:var(--color-surface)}.filter-button:active{transform:scale(.97)}.filter-button[aria-pressed=true]:hover{background:var(--color-pink-hover);border-color:var(--color-pink-hover)}.project-results{color:var(--color-muted);font:500 .73rem var(--font-mono);margin:1.75rem 0 1rem}.project-empty{border:1px solid var(--color-divider);background:var(--color-surface);padding:3rem 1.5rem}.project-empty h2{letter-spacing:-.03em;margin:0;font-size:1.3rem}.project-empty p{color:var(--color-muted);margin:.6rem 0 0;line-height:1.6}.project-empty .text-link{font:700 .9rem var(--font-sans);background:0 0;border:0;padding:0}.detail-technologies{margin-top:1.6rem}.page-intro .detail-note{border-top:1px solid var(--color-divider);margin-top:2rem;padding-top:1rem;font-size:.9rem}.case-page{padding-block:clamp(2.5rem,6vw,5rem) clamp(4rem,8vw,7rem)}.case-back-link{min-height:44px;color:var(--color-muted);align-items:center;gap:.55rem;font-size:.84rem;font-weight:700;text-decoration:none;transition:gap .2s,color .2s;display:inline-flex}.case-back-link:hover{color:var(--color-text);gap:.8rem}.case-back-link:active{color:var(--color-muted)}.case-header-copy{max-width:920px;margin-top:clamp(2.5rem,5vw,5rem)}.case-header-copy h1{letter-spacing:-.07em;text-wrap:balance;overflow-wrap:anywhere;margin:1rem 0 0;font-size:clamp(2.7rem,8vw,6.5rem);font-weight:700;line-height:1.05}.case-header-copy>p{max-width:700px;color:var(--color-muted);margin:1.5rem 0 0;font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.7}.case-header-copy .technology-list{margin-top:1.7rem}.case-external-links{flex-wrap:wrap;gap:.6rem;margin-top:1.8rem;display:flex}.case-external-link{border:1px solid var(--color-outline);min-height:44px;color:var(--color-text);justify-content:center;align-items:center;gap:.55rem;padding:.65rem .9rem;font-size:.8rem;font-weight:700;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:inline-flex}.case-external-link:hover{background:var(--color-text);color:var(--color-background);transform:translateY(-2px)}.case-external-link:active{transform:translateY(0)}.case-cover{aspect-ratio:16/9;border:1px solid var(--color-divider);background:var(--color-surface);width:100%;margin-top:clamp(3rem,6vw,5rem);overflow:hidden}.case-cover img{object-fit:cover;width:100%;height:100%;display:block}.case-cover .project-placeholder{padding:clamp(1.2rem,4vw,3rem)}.case-cover .project-placeholder-title{max-width:22ch;font-size:clamp(2rem,6vw,5.5rem)}.case-study-content{max-width:900px;margin-top:clamp(3rem,6vw,6rem)}.case-section{border-top:1px solid var(--color-divider);padding-block:clamp(2.5rem,5vw,4rem)}.case-section h2{letter-spacing:-.055em;margin:0 0 1.35rem;font-size:clamp(1.65rem,3vw,2.4rem);font-weight:700;line-height:1.15}.case-section>p,.case-section>ul,.case-info-card p{color:var(--color-muted);overflow-wrap:anywhere;font-size:1rem;line-height:1.8}.case-section>p+p{margin-top:1rem}.case-text-list{gap:.8rem;margin:1.2rem 0 0;padding-left:1.4rem;display:grid}.case-text-list li{padding-left:.25rem}.case-text-list li::marker{color:var(--color-pink)}.case-info-grid{grid-template-columns:minmax(0,1fr);gap:.75rem;margin-top:1.5rem;display:grid}.case-info-card{border:1px solid var(--color-divider);background:var(--color-surface);min-width:0;padding:1.3rem}.case-info-card h3{letter-spacing:-.025em;overflow-wrap:anywhere;margin:0 0 .75rem;font-size:1.08rem;line-height:1.4}.case-info-card p+p{margin-top:.85rem}.case-info-card strong{color:var(--color-text);font-weight:700}.case-gallery-section{border-top:0;margin-top:clamp(3rem,6vw,5rem);padding-block:0}.case-gallery-grid{grid-template-columns:minmax(0,1fr);gap:1.2rem;display:grid}.case-gallery-primary .case-gallery-trigger,.case-gallery-primary .case-image-unavailable{aspect-ratio:16/9}.case-gallery-item{min-width:0}.case-gallery-trigger{aspect-ratio:16/10;border:1px solid var(--color-divider);background:var(--color-surface);width:100%;padding:0;transition:border-color .2s,transform .2s;display:block;overflow:hidden}.case-gallery-trigger:hover{border-color:var(--color-outline);transform:translateY(-2px)}.case-gallery-trigger:active{transform:translateY(0)}.case-gallery-trigger img{object-fit:cover;width:100%;height:100%;display:block}.case-gallery-item figcaption{color:var(--color-muted);margin-top:.55rem;font-size:.8rem;line-height:1.5}.case-image-unavailable{aspect-ratio:16/10;border:1px solid var(--color-divider);background:var(--color-surface);min-height:160px;color:var(--color-muted);font:500 .8rem var(--font-mono);text-align:center;place-items:center;padding:1rem;display:grid}.case-image-dialog{border:1px solid var(--color-outline);background:var(--color-surface);width:min(960px,100% - 2rem);max-height:calc(100dvh - 2rem);color:var(--color-text);padding:0;overflow:auto}.case-image-dialog::backdrop{background:var(--case-backdrop)}.case-dialog-content{padding:clamp(.8rem,2vw,1.5rem)}.case-dialog-top{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.case-dialog-top h2{overflow-wrap:anywhere;min-width:0;margin:0;font-size:clamp(.9rem,2vw,1.15rem);line-height:1.4}.case-dialog-top .icon-button{flex:none}.case-dialog-content>img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 9rem);margin-inline:auto;display:block}.case-navigation{border-top:1px solid var(--color-divider);flex-wrap:wrap;justify-content:space-between;gap:.8rem;margin-top:clamp(2rem,5vw,5rem);padding-top:1.5rem;display:flex}.case-navigation-link{min-width:0;min-height:64px;color:var(--color-text);overflow-wrap:anywhere;align-items:center;gap:.85rem;padding:.4rem 0;font-weight:700;line-height:1.35;text-decoration:none;display:inline-flex}.case-navigation-link:hover{color:var(--color-muted)}.case-navigation-link:active{color:var(--color-text)}.case-navigation-link small{color:var(--color-muted);font:500 .68rem var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.2rem;display:block}.case-navigation-next{text-align:right;margin-left:auto}@media (width>=768px){.case-info-grid,.case-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-gallery-primary{grid-column:1/-1}.footer-inner{grid-template-columns:minmax(0,1fr) auto}.footer-contact-nav{grid-column:1/-1}.experience-item{grid-template-columns:190px minmax(0,1fr)}.skills-grid,.about-background-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-panel{grid-template-columns:minmax(0,1fr) auto;align-items:center}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.desktop-nav{display:flex}.menu-toggle,.mobile-nav{display:none}.header-actions{gap:2.5rem}.hero{padding-block:7rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.site-header{background:var(--color-background)}.header-inner{min-height:78px}.brand{letter-spacing:-.045em;font-size:1.02rem}.brand-mark{background:var(--color-pink);width:29px;height:29px;color:var(--color-on-pink);box-shadow:none}.brand .text-pink{color:var(--color-text)}.desktop-nav .nav-link[aria-current=page]:after{background:var(--color-pink);height:2px}.icon-button{border-color:var(--color-divider)}.icon-button:hover{border-color:var(--color-outline)}.site-footer{background:var(--color-surface)}.footer-inner{min-height:110px;padding-block:1.5rem}.footer-identity{border-left:3px solid var(--accent-editorial);padding-left:.8rem}.footer-identity strong{font-size:.86rem}.button{min-height:48px;padding:.75rem 1.1rem;font-weight:700}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(0)}.button-secondary:hover{background:var(--color-surface);color:var(--color-text)}.hero{border-bottom:1px solid var(--color-outline);min-height:0;padding-block:clamp(3.5rem,7vw,6.5rem);display:block}.hero-grid{grid-template-columns:minmax(0,1fr);align-items:end;gap:clamp(2.5rem,5vw,5rem);display:grid}.hero-copy{min-width:0}.hero-role{border-top:2px solid var(--color-pink);width:fit-content;color:var(--color-muted);font:600 .72rem/1.5 var(--font-mono);letter-spacing:.09em;text-transform:uppercase;margin:0 0 clamp(2rem,5vw,4rem);padding-top:.65rem}.hero-title{letter-spacing:-.07em;text-wrap:balance;overflow-wrap:normal;max-width:17ch;margin:0;font-size:clamp(2.6rem,6vw,5.4rem);font-weight:700;line-height:1.08}.hero-title span{box-shadow:none;display:block}.hero-title .hero-title-second{margin-top:.16em}.hero-title em{text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:.1em;font-style:normal;text-decoration-thickness:.09em}.hero-description{max-width:51ch;margin-top:clamp(1.6rem,3vw,2.3rem);font-size:clamp(1rem,1.7vw,1.15rem);line-height:1.7}.hero-actions{margin-top:1.8rem}.hero-panel{border-top:1px solid var(--color-outline);min-width:0;padding-top:1.2rem}.hero-panel-heading{color:var(--color-text);align-items:center;gap:.65rem;margin:0 0 1.25rem;font-size:1.1rem;font-weight:700;display:flex}.hero-panel-heading:before{content:"";background:var(--accent-technical);flex:none;width:12px;height:12px}.hero-panel dl{margin:0}.hero-panel dl div{border-top:1px solid var(--color-divider);gap:.35rem;padding:1rem 0;display:grid}.hero-panel dt{color:var(--color-muted);font:500 .7rem/1.4 var(--font-mono);letter-spacing:.05em;text-transform:uppercase}.hero-panel dd{color:var(--color-text);margin:0;font-size:.9rem;line-height:1.5}.hero-panel dl div:last-child{border-bottom:1px solid var(--color-divider)}.featured-projects{border-top:0;padding-block:clamp(4rem,8vw,7rem)}.featured-heading{align-items:end;margin-bottom:clamp(2rem,4vw,3.5rem)}.featured-heading h2{letter-spacing:-.065em;max-width:14ch;margin:0;font-size:clamp(2.25rem,4.5vw,4.2rem);font-weight:700}.featured-heading h2 span{text-decoration:none}.featured-heading p{max-width:42ch;margin-top:1.1rem}.section-link{-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink)}.project-grid{gap:1.25rem}.project-card{border:1px solid var(--color-divider);background:var(--color-surface);transition:border-color .2s,transform .2s}.project-card:hover,.project-card:focus-within{border-color:var(--color-outline)}.project-card:hover{transform:translateY(-2px)}.project-card-media{aspect-ratio:16/10;border-bottom:1px solid var(--color-divider);background:var(--color-background);position:relative}.project-card-media img{object-fit:cover;width:100%;height:100%}.project-placeholder{isolation:isolate;background:var(--color-surface);padding:clamp(1.25rem,3vw,2rem);position:relative;overflow:hidden}.project-placeholder:before{content:"";background:var(--color-pink);width:clamp(3rem,8vw,6rem);height:3px;position:absolute;top:0;left:0}.project-placeholder:after{content:"";border:1px solid var(--color-divider);pointer-events:none;position:absolute;inset:clamp(1.25rem,3vw,2rem)}.project-placeholder-index,.project-placeholder-note{z-index:1;color:var(--color-muted);font-size:.7rem;position:relative}.project-placeholder-title{z-index:1;max-width:17ch;color:var(--color-text);text-wrap:balance;overflow-wrap:anywhere;font-size:clamp(2rem,4.2vw,3.8rem);font-weight:700;line-height:1.05;position:relative}.project-placeholder-note{align-self:end}.project-card-content{padding:clamp(1.3rem,2.7vw,2rem)}.project-card-meta{border-left:3px solid var(--accent-technical);padding-left:.75rem}.project-status{color:var(--color-muted)}.project-status:before{background:var(--color-outline);width:6px;height:6px;box-shadow:none;border-radius:0}.project-card-title{letter-spacing:-.04em;margin-top:.8rem;font-size:clamp(1.5rem,2.5vw,2.25rem)}.project-card-description{max-width:50ch}.technology-badge{border-color:var(--color-divider);background:0 0;min-height:32px;padding:.27rem .55rem;font-size:.72rem}.project-card-actions{padding-top:1.2rem}.project-detail-link{-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink)}.project-external-link:hover{color:var(--color-text)}.featured-projects .project-grid{display:block}.featured-projects .project-card{border:0;border-top:1px solid var(--color-outline);background:0 0}.featured-projects .project-card:last-child{border-bottom:1px solid var(--color-outline)}.featured-projects .project-card:hover,.featured-projects .project-card:focus-within{border-color:var(--color-outline)}.featured-projects .project-card-content{padding:1.4rem 0 2rem}.featured-projects .project-card-media{border:1px solid var(--color-divider)}.experience-section{border-top:1px solid var(--color-outline);background:var(--color-surface)}.experience-heading{margin-bottom:2.5rem}.experience-heading h2{margin:0;font-size:clamp(1.9rem,3vw,2.8rem)}.experience-timeline{border:0;margin:0;padding:0}.experience-item{border-top:1px solid var(--color-divider);grid-template-columns:minmax(0,1fr);gap:1rem 2rem;padding:1.5rem 0 2rem;display:grid}.experience-item:before{content:"";background:var(--accent-technical);border:0;width:2.5rem;height:3px;position:absolute;top:-3px;left:0}.experience-period{color:var(--color-muted);font-size:.72rem}.experience-title-row h3{font-size:clamp(1.45rem,2.5vw,2rem)}.experience-engagement{border-color:var(--color-divider)}.experience-company{margin-top:.65rem}.experience-summary{margin-top:.8rem}.skills-section{border-top:1px solid var(--color-outline)}.skills-heading{margin-bottom:2.5rem}.skills-heading h2{max-width:16ch;margin:0;font-size:clamp(2rem,3.4vw,3rem)}.skills-grid{gap:0 clamp(1.5rem,4vw,4rem)}.skill-category{border:0;border-top:1px solid var(--color-divider);background:0 0;padding:1.4rem 0 2rem}.skill-category h3{align-items:center;gap:.65rem;font-size:1.12rem;display:flex}.skill-category h3:before{content:"";background:var(--accent-technical);flex:none;width:9px;height:9px}.skill-category .technology-list{gap:.25rem .7rem;margin-top:1rem}.skill-category .technology-list li{align-items:center;display:inline-flex}.skill-category .technology-list li:not(:last-child):after{content:"·";color:var(--color-muted);margin-left:.7rem}.skill-category .technology-badge{min-height:0;color:var(--color-muted);font:500 .86rem/1.7 var(--font-sans);background:0 0;border:0;padding:0}.contact-section{border-top:1px solid var(--color-outline)}.contact-panel{border:0;border-top:3px solid var(--color-pink);background:0 0;gap:1.5rem 3rem;padding:1.6rem 0 0;display:grid}.contact-panel-empty{grid-template-columns:minmax(0,1fr)}.contact-panel h2{max-width:16ch;margin:0;font-size:clamp(2.2rem,4vw,3.7rem)}.contact-panel h2 span{color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:.06em;margin-left:.07em;text-decoration-thickness:.11em;display:inline-block}.contact-panel p:not(.eyebrow){max-width:44ch;margin-top:1rem}.contact-links a{border-color:var(--color-outline)}.contact-links a:hover{background:var(--color-pink);border-color:var(--color-pink);color:var(--color-on-pink)}.about-intro{padding-block:clamp(4rem,8vw,7rem)}.about-intro-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:2rem 4rem;display:grid}.about-intro h1{max-width:10ch;margin:0;font-size:clamp(2.8rem,5.8vw,5rem);line-height:1.05}.about-intro-copy{border-top:3px solid var(--color-pink);padding-top:.5rem}.about-lead,.about-intro .about-lead{max-width:43ch;margin:1.2rem 0 0;font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.65}.about-actions,.about-intro .about-actions{margin:1.8rem 0 0}.about-background h2{margin:0;font-size:clamp(1.6rem,2.6vw,2.2rem)}.about-background #education-title{align-items:center;gap:.75rem;display:flex}.about-background #education-title:before{content:"";background:var(--accent-editorial);flex:none;width:8px;height:1.15em}.education-card{border:0;border-top:1px solid var(--color-divider);background:0 0;margin-top:1.4rem;padding:1.3rem 0 0}.education-card h3{font-size:1.12rem}.about-focus-list{margin-top:1.4rem}.about-focus-list li{font-weight:500}.about-focus-list li:first-child{border-top-color:var(--color-outline)}.projects-page-heading{border-bottom:1px solid var(--color-outline);max-width:850px;padding:0 0 2rem}.projects-page-heading h1{margin:0;font-size:clamp(2.8rem,6vw,5rem)}.projects-page-heading p{max-width:50ch}.project-filters{border:0;margin-top:2rem;padding-top:0}.filter-label{color:var(--color-text)}.filter-button{border-color:var(--color-divider);font-size:.8rem}.filter-button:hover{border-color:var(--color-outline)}.filter-button[aria-pressed=true]{border-color:var(--color-pink);background:var(--color-pink);color:var(--color-on-pink)}.filter-button[aria-pressed=true]:hover{border-color:var(--color-pink-hover);background:var(--color-pink-hover)}.case-header-copy{border-top:1px solid var(--color-outline);max-width:850px;margin-top:clamp(2rem,5vw,4rem);padding-top:1.25rem}.case-header-copy h1{max-width:15ch;font-size:clamp(2.6rem,5.8vw,5rem);line-height:1.06}.case-cover{border-color:var(--color-divider)}.case-cover .project-placeholder{background:var(--color-surface)}.case-cover .project-placeholder-title{max-width:16ch}.case-study-content{max-width:820px}.case-section{border-top-color:var(--color-divider)}.case-section h2{font-size:clamp(1.5rem,2.4vw,2rem)}.case-info-card{border:0;border-left:2px solid var(--accent-technical);background:var(--color-surface)}.case-gallery-trigger:hover{border-color:var(--color-outline)}.case-navigation{border-top-color:var(--color-outline)}.case-navigation-link:hover{color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-pink);text-decoration-color:var(--color-pink);text-underline-offset:4px}.hero-panel dl div:first-child{border-top-color:var(--accent-technical)}.experience-engagement{border-bottom:2px solid var(--accent-editorial)}.case-back-link:hover{color:var(--color-text)}@media (width>=768px){.hero-grid{grid-template-columns:minmax(0,1fr) minmax(190px,30%)}.hero-panel{border-top:0;border-left:1px solid var(--color-divider);flex-direction:column;justify-content:end;align-self:stretch;padding:0 0 0 clamp(1.2rem,3vw,3rem);display:flex}.hero-panel-heading{margin-bottom:auto}.experience-item{grid-template-columns:minmax(150px,220px) minmax(0,1fr)}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-intro-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.about-intro .about-lead,.about-intro .about-actions{margin-left:0}.contact-panel{grid-template-columns:minmax(0,1fr) minmax(0,.65fr);align-items:start}.contact-panel-empty{grid-template-columns:minmax(0,1fr)}}@media (width>=900px){.featured-projects .project-card{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:clamp(2rem,5vw,5rem);padding-block:clamp(1.8rem,3vw,2.8rem);display:grid}.featured-projects .project-card:nth-child(2n){grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.featured-projects .project-card:nth-child(2n) .project-card-content{order:1}.featured-projects .project-card:nth-child(2n) .project-card-media{order:2}.featured-projects .project-card-content{padding:0}.featured-projects .project-card-media{aspect-ratio:16/10}}@media (width>=1024px){.hero-grid{grid-template-columns:minmax(0,1fr) minmax(220px,27%)}.hero-title{font-size:clamp(4rem,5.8vw,5.4rem)}.skills-section>div{grid-template-columns:minmax(0,.35fr) minmax(0,.65fr);gap:clamp(2rem,5vw,5rem);display:grid}.skills-heading{align-self:start}}@media (width<=767px){.hero-title{font-size:clamp(2.45rem,8vw,4rem)}.hero-panel{padding-top:1rem}.hero-panel dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}}@media (width<=480px){.hero-panel dl{grid-template-columns:minmax(0,1fr);gap:0}.featured-heading h2{font-size:clamp(2.15rem,8vw,2.8rem)}.project-placeholder-title{font-size:clamp(1.75rem,7vw,2.8rem)}}
