:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0a0e1a;--color-surface:#1e2433;--color-surface-raised:#252c3d;--color-primary:#2196f3;--color-secondary:#64b5f6;--color-text:#e6edf3;--color-muted:#a9b4c2;--color-border:#30394c;--color-danger:#ff8182;--surface-rgb:30, 36, 51;--shadow:0 8px 18px #0000002e;--header-height:72px;--content-width:1100px;--ease-out:cubic-bezier(.16, 1, .3, 1);background:var(--color-bg);color:var(--color-text);font-synthesis:none;text-rendering:optimizelegibility;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=ocean-blue]{--color-bg:#0f0f1e;--color-surface:#1a1a2e;--color-surface-raised:#24243d;--color-primary:#00bcd4;--color-secondary:#58e2ee;--color-text:#e8f4f8;--color-muted:#aabac6;--color-border:#32324b;--surface-rgb:26, 26, 46}:root[data-theme=sunset-orange]{--color-bg:#1a1a1a;--color-surface:#2a2a2a;--color-surface-raised:#343434;--color-primary:#ff6b35;--color-secondary:#ff9b58;--color-text:#ffe5d9;--color-muted:#c7b4ab;--color-border:#44403e;--surface-rgb:42, 42, 42}:root[data-theme=purple-night]{--color-bg:#1a0f2e;--color-surface:#2d1b3d;--color-surface-raised:#3a244d;--color-primary:#c75cdc;--color-secondary:#ee75af;--color-text:#f0e1f5;--color-muted:#c2accb;--color-border:#513a61;--surface-rgb:45, 27, 61}:root[data-theme=vs-code]{--color-bg:#1e1e1e;--color-surface:#252526;--color-surface-raised:#303031;--color-primary:#2ea8f2;--color-secondary:#78b7e2;--color-text:#ededed;--color-muted:#b9b9b9;--color-border:#424242;--surface-rgb:37, 37, 38}:root[data-theme=aurora-light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f0f4fa;--color-surface:#fff;--color-surface-raised:#e8eef8;--color-primary:#285bd5;--color-secondary:#258c79;--color-text:#1f2430;--color-muted:#5d6878;--color-border:#d4ddea;--color-danger:#b42318;--surface-rgb:255, 255, 255;--shadow:0 8px 18px #2d41601a}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--color-bg);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-width:320px;overflow-x:clip}body{background:var(--color-bg);min-width:320px;min-height:100vh;color:var(--color-text);margin:0;transition:background-color .22s,color .22s;overflow-x:clip}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb, var(--color-primary), transparent 35%);outline-offset:3px}.app-shell{min-height:100vh}.app-main{min-height:calc(100vh - var(--header-height));animation:page-enter .44s var(--ease-out) both}.page-shell{width:min(100%, calc(var(--content-width) + 40px));margin-inline:auto;padding:38px 20px 64px}.resume-page{padding-top:24px}.desktop-header{z-index:30;height:var(--header-height);border-bottom:1px solid color-mix(in srgb, var(--color-border), transparent 45%);background:rgba(var(--surface-rgb), .94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}.desktop-header__inner{width:min(100%, calc(var(--content-width) + 64px));align-items:center;gap:20px;height:100%;margin-inline:auto;padding-inline:24px;display:flex}.brand{letter-spacing:-.03em;white-space:nowrap;align-items:baseline;min-width:345px;font-weight:800;display:flex}.brand__ticker{width:var(--ticker-width,auto);min-width:0;color:var(--color-primary);text-align:left;transition:width .42s var(--ease-out);flex:none;position:relative;overflow:hidden}.tech-ticker{width:max-content;animation:ticker-enter .38s var(--ease-out) both;display:block}.tech-ticker__measure{visibility:hidden;pointer-events:none;width:max-content;position:absolute;inset:0 auto auto 0}.brand__suffix{flex:none}.desktop-nav{flex:1;justify-content:flex-end;gap:4px;display:flex}.desktop-nav a{color:var(--color-muted);border-radius:10px;padding:10px 12px;font-size:.9rem;font-weight:600;transition:color .16s,background-color .16s}.desktop-nav a:hover{color:var(--color-text);background:color-mix(in srgb, var(--color-primary), transparent 90%)}.desktop-nav a.active{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary), transparent 88%)}.header-actions{align-items:center;gap:2px;display:flex}.icon-button{width:42px;height:42px;color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:12px;flex:none;place-items:center;transition:color .16s,background-color .16s,transform .16s;display:inline-grid}.icon-button:hover{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary), transparent 88%)}.icon-button:active{transform:scale(.96)}.mobile-nav,.mobile-header-actions{display:none}.page-heading{max-width:790px;margin-bottom:34px}.page-heading--large{max-width:800px}.page-heading h1{letter-spacing:-.035em;margin-bottom:12px;font-size:clamp(2rem,4vw,3rem);line-height:1.08}.page-heading p{color:var(--color-muted);margin-bottom:0;font-size:clamp(1rem,1.4vw,1.08rem);line-height:1.72}.profile-hero{grid-template-columns:120px minmax(0,1fr);align-items:center;gap:0 30px;padding-top:12px;display:grid}.profile-hero__photo{object-fit:cover;object-position:top left;width:120px;height:120px;box-shadow:0 0 0 5px color-mix(in srgb, var(--color-primary), transparent 84%);border-radius:50%;grid-row:span 2}.profile-hero h1{letter-spacing:-.04em;margin-bottom:7px;font-size:clamp(2.25rem,4.5vw,4rem);line-height:1.02}.profile-hero__role{color:var(--color-primary);margin-bottom:0;font-size:clamp(1.15rem,2vw,1.5rem);font-weight:700}.home-navigation{margin-top:48px}.home-navigation>h2{margin-bottom:22px;font-size:1.35rem}.home-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:250px;gap:16px;display:grid}.home-card{background:var(--color-surface);isolation:isolate;min-height:250px;animation:card-enter .6s var(--ease-out) backwards;animation-delay:var(--entry-delay);border-radius:14px;position:relative}.home-card__visual{z-index:0;border-radius:inherit;background:var(--color-surface);isolation:isolate;pointer-events:none;position:absolute;inset:0;overflow:clip}.home-card__visual:after{z-index:2;border-radius:inherit;content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #05080deb}.home-card--resume{grid-row:span 2}.home-card__resume-art{background:radial-gradient(circle at 78% 28%, color-mix(in srgb, var(--color-primary), transparent 66%), transparent 29%), linear-gradient(135deg, color-mix(in srgb, var(--color-surface), var(--color-primary) 22%), var(--color-bg));position:absolute;inset:0;overflow:hidden}.resume-art__label,.resume-art__stack,.resume-art__title,.resume-art__line,.resume-art__orb{position:absolute}.resume-art__label{color:color-mix(in srgb, var(--color-primary), white 22%);letter-spacing:.12em;font-size:.72rem;font-weight:750;top:28px;left:78px}.resume-art__title{max-width:90%;color:color-mix(in srgb, var(--color-ink), transparent 5%);letter-spacing:-.035em;gap:2px;font-family:inherit;font-size:clamp(1.7rem,3.2vw,2.85rem);font-weight:680;line-height:1.06;display:grid;top:92px;left:28px}.resume-art__title span{display:block}.resume-art__stack{max-width:70%;color:color-mix(in srgb, var(--color-ink), transparent 18%);letter-spacing:.08em;text-align:right;font-size:.68rem;font-weight:750;bottom:30px;right:28px}.resume-art__line{background:color-mix(in srgb, var(--color-primary), transparent 35%);height:1px;transform:rotate(-32deg)}.resume-art__line--one{width:74%;top:30%;right:-8%}.resume-art__line--two{opacity:.45;width:70%;top:43%;right:-14%}.resume-art__orb{border:1px solid color-mix(in srgb, var(--color-primary), transparent 38%);border-radius:50%}.resume-art__orb--one{aspect-ratio:1;width:120px;top:23%;right:13%}.resume-art__orb--two{aspect-ratio:1;background:color-mix(in srgb, var(--color-primary), transparent 28%);width:48px;top:31%;right:22%}.home-card__media,.home-card__project-slider,.home-card__contact-art{width:100%;height:100%;position:absolute;inset:0}.home-card__media{object-fit:cover;transition:transform .7s var(--ease-out), filter .3s ease}.home-card__project-slider{background:#09101b;overflow:hidden}.home-card__slide{object-fit:cover;object-position:50% 50%;opacity:0;filter:saturate(.88)contrast(1.04);width:100%;height:100%;transition:opacity .76s var(--ease-out), filter .3s ease;position:absolute;inset:0;transform:scale(1.035)}.home-card__slide.is-active{opacity:1}.home-card__slide.is-paired{inset-block:0;width:calc(50% - 2px);right:auto}.home-card__slide.is-pair-1{left:0}.home-card__slide.is-pair-2{left:calc(50% + 2px)}@starting-style{.home-card__slide.is-active{opacity:0}}.home-card__slide.is-active.is-portrait{animation:project-pan-portrait var(--project-slide-duration) cubic-bezier(.45, 0, .55, 1) both}.home-card__slide.is-active.is-landscape{animation:project-pan-landscape var(--project-slide-duration) cubic-bezier(.45, 0, .55, 1) both}.home-card__slide.is-active.is-square{animation:project-pan-square var(--project-slide-duration) cubic-bezier(.45, 0, .55, 1) both}.home-card__slide.is-active.is-reverse{animation-direction:reverse}@keyframes project-pan-portrait{0%{object-position:50% 14%;transform:scale(1.035)}to{object-position:50% 86%;transform:scale(1.01)}}@keyframes project-pan-landscape{0%{object-position:12% 50%;transform:scale(1.045)}to{object-position:88% 50%;transform:scale(1.01)}}@keyframes project-pan-square{0%{object-position:42% 38%;transform:scale(1.055)}to{object-position:58% 62%;transform:scale(1.015)}}.home-card--contacts{background:color-mix(in srgb, var(--color-surface), var(--color-primary) 18%)}.home-card__contact-art{background:radial-gradient(circle at 76% 22%, color-mix(in srgb, var(--color-secondary), transparent 42%), transparent 46%), linear-gradient(118deg, color-mix(in srgb, var(--color-surface), var(--color-primary) 32%) 0%, color-mix(in srgb, var(--color-bg), var(--color-primary) 18%) 100%);transition:background .26s var(--ease-out);overflow:hidden}.home-card__contact-art:after{content:"";background:linear-gradient(#0000 32%,#05080d8f 100%);position:absolute;inset:0}.contact-envelope{width:94%;height:94%;color:color-mix(in srgb, var(--color-primary), white 34%);transition:transform .6s var(--ease-out), color .22s ease;position:absolute;top:-7%;right:-7%;transform:rotate(-6deg)}.contact-envelope__body,.contact-envelope__fold{fill:none;stroke:currentColor;stroke-width:11px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.contact-envelope__body{fill:color-mix(in srgb, var(--color-primary), transparent 89%);opacity:.68}.contact-envelope__fold{opacity:.9}.contact-envelope__fold--lower{opacity:.55}.contact-envelope__halo{aspect-ratio:1;background:color-mix(in srgb, var(--color-secondary), transparent 70%);border-radius:50%;width:62%;position:absolute;top:-42%;right:-8%}.home-card__shade{z-index:1;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(#05080d00,#05080d57 42%,#05080deb);width:auto;height:calc(78% + 12px);position:absolute;inset:auto -12px -12px;-webkit-mask-image:linear-gradient(#0000 0%,#0000005c 28%,#000 62%);mask-image:linear-gradient(#0000 0%,#0000005c 28%,#000 62%)}.home-card__icon,.home-card__copy,.home-card__arrow{z-index:2;position:absolute}.home-card__icon{color:#fff;background:#080c14a8;border-radius:12px;place-items:center;width:42px;height:42px;display:grid;top:18px;left:18px}.home-card__copy{color:#fff;gap:5px;display:grid;bottom:20px;left:20px;right:58px}.home-card__copy strong{font-size:1.18rem}.home-card__copy span{color:#ffffffc7;font-size:.86rem;line-height:1.45}.home-card__arrow{color:#fff;transition:transform .26s var(--ease-out);bottom:23px;right:20px}.home-card:hover .home-card__media{filter:saturate(1.08);transform:scale(1.045)}@media (hover:hover) and (pointer:fine){.home-card:hover .home-card__slide.is-active{filter:saturate(1.08)contrast(1.04);animation-play-state:paused}}.home-card:hover .home-card__arrow{transform:translate(5px)}.home-card--contacts:hover .contact-envelope{transform:translate(-8px,5px)rotate(-4deg)}.project-context-filter{flex-wrap:wrap;gap:8px;margin:-12px 0 28px;display:flex}.project-context-filter a{border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:8px 12px;font-size:.78rem;font-weight:700;transition:border-color .16s,background-color .16s,color .16s}.project-context-filter a:hover,.project-context-filter a.active{border-color:color-mix(in srgb, var(--color-primary), transparent 35%);background:color-mix(in srgb, var(--color-primary), transparent 88%);color:var(--color-primary)}.project-customer-filter{flex-wrap:wrap;align-items:center;gap:7px;margin:-16px 0 28px;display:flex}.project-customer-filter>span{color:var(--color-muted);margin-right:3px;font-size:.76rem;font-weight:700}.project-customer-filter a{background:var(--color-surface);color:var(--color-muted);border-radius:999px;padding:6px 10px;font-size:.72rem;font-weight:700}.project-customer-filter a:hover,.project-customer-filter a.active{background:color-mix(in srgb, var(--color-primary), transparent 88%);color:var(--color-primary)}.projects-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense;grid-auto-rows:128px;gap:16px;display:grid}.project-card{border:1px solid var(--color-border);background:var(--color-surface);min-width:0;animation:card-enter .62s var(--ease-out) both;animation-delay:var(--entry-delay);content-visibility:auto;contain-intrinsic-size:420px;border-radius:14px;overflow:hidden}.project-card--wideTop,.project-card--wideLeft,.project-card--wideRight{grid-area:span 3/span 2}.project-card--narrowTop{grid-area:span 3/span 1}.project-card--narrowTallTop{grid-area:span 4/span 1}.project-card--narrowUltraTallTop{grid-area:span 5/span 1}.project-card__link{width:100%;height:100%;color:inherit;display:flex}.project-card--image-top .project-card__link{flex-direction:column}.project-card--image-right .project-card__link{flex-direction:row-reverse}.project-card__media{background:var(--color-surface-raised);flex:52%;min-width:0;position:relative;overflow:hidden}.project-card--image-top .project-card__media{min-height:46%}.project-card__media img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .44s ease, transform .7s var(--ease-out);position:absolute;inset:0;transform:scale(1.01)}.project-card__media img.is-active{opacity:1}.project-card__media-shade{pointer-events:none;background:linear-gradient(#0000 65%,#04070c4d);position:absolute;inset:0}.project-card__content{flex-direction:column;flex:48%;align-items:flex-start;min-width:0;padding:18px;display:flex}.project-card__category{width:-moz-fit-content;width:fit-content;color:var(--color-primary);letter-spacing:.08em;margin-bottom:8px;font-size:.7rem;font-weight:800;display:inline-flex}.project-card__category:hover{text-underline-offset:3px;text-decoration:underline}.project-card__meta{min-width:0;color:var(--color-muted);flex-wrap:wrap;gap:3px 12px;margin:-2px 0 9px;font-size:.68rem;line-height:1.35;display:flex}.project-card__meta span:not(:first-child){position:relative}.project-card__meta span:not(:first-child):before{content:"·";position:absolute;left:-8px}.project-card__title-row{width:100%;color:inherit;justify-content:space-between;gap:12px;display:flex}.project-card h2{letter-spacing:-.025em;margin-bottom:10px;font-size:clamp(1.08rem,2vw,1.34rem);line-height:1.17}.project-card__title-row svg{color:var(--color-muted);transition:color .18s ease, transform .22s var(--ease-out);flex:none}.project-card__description{min-height:0;color:var(--color-muted);max-height:calc(var(--description-lines,3) * 1.55em);line-clamp:var(--description-lines,3);-webkit-line-clamp:var(--description-lines,3);-webkit-box-orient:vertical;flex-shrink:1;margin-bottom:15px;font-size:.83rem;line-height:1.55;display:-webkit-box;overflow:hidden}.project-card:hover .project-card__media img.is-active{transform:scale(1.045)}.project-card:hover .project-card__title-row svg{color:var(--color-primary);transform:translate(3px,-3px)}.tag-list{flex-wrap:wrap;gap:7px;margin-top:auto;display:flex}.tag-list span{background:color-mix(in srgb, var(--color-primary), transparent 88%);color:var(--color-primary);border:1px solid #0000;border-radius:999px;padding:6px 10px;font-size:.68rem;font-weight:700}.tag-list--large{gap:10px}.tag-list--large span{padding:8px 13px;font-size:.82rem}.tag-list--large .is-primary-skill{border-color:color-mix(in srgb, var(--color-primary), transparent 48%);background:color-mix(in srgb, var(--color-primary), transparent 76%);color:color-mix(in srgb, var(--color-primary), var(--color-text) 24%);font-weight:800}.project-detail__hero{border-bottom:1px solid var(--color-border);background:linear-gradient(145deg, color-mix(in srgb, var(--color-primary), var(--color-surface) 84%), var(--color-surface))}.project-detail__hero-inner{flex-direction:column;justify-content:flex-end;min-height:245px;padding-bottom:34px;display:flex}.back-link{width:-moz-fit-content;width:fit-content;color:var(--color-muted);align-items:center;gap:7px;margin-bottom:auto;font-weight:700;display:inline-flex}.back-link:hover{color:var(--color-primary)}.project-detail__context-link{width:-moz-fit-content;width:fit-content;color:var(--color-primary);letter-spacing:.08em;align-items:center;gap:5px;margin-bottom:9px;font-size:.77rem;font-weight:800;display:inline-flex}.project-detail__context-link:hover{text-underline-offset:4px;text-decoration:underline}.project-detail__hero h1{letter-spacing:-.04em;max-width:900px;margin-bottom:0;font-size:clamp(2.4rem,6vw,4.25rem);line-height:1}.project-detail__body{padding-top:38px}.project-detail__meta{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:18px clamp(28px,5vw,64px);margin:0 0 30px;padding:0 0 24px;display:flex}.project-detail__meta div{min-width:140px}.project-detail__meta dt{color:var(--color-muted);margin-bottom:5px;font-size:.72rem;font-weight:700}.project-detail__meta dd{margin:0;font-size:.92rem;font-weight:750}.project-detail__description{max-width:780px;color:var(--color-muted);font-size:clamp(1.05rem,2vw,1.2rem);line-height:1.75}.detail-section{margin-top:42px}.detail-section h2{margin-bottom:18px;font-size:1.35rem}.project-gallery{overscroll-behavior-inline:contain;scrollbar-color:var(--color-primary) transparent;scroll-snap-type:x proximity;gap:10px;padding-bottom:12px;display:flex;overflow-x:auto}.project-gallery button{background:var(--color-surface);cursor:zoom-in;scroll-snap-align:start;border:0;border-radius:14px;flex:none;width:clamp(190px,23vw,250px);height:clamp(285px,38vw,410px);padding:0;overflow:hidden}.project-gallery button.is-landscape{width:clamp(360px,50vw,720px);height:clamp(210px,24vw,350px)}.project-gallery img{object-fit:contain;width:100%;height:100%;transition:transform .5s var(--ease-out)}.project-gallery button.is-landscape img{object-fit:cover}.project-gallery button:hover img{transform:scale(1.025)}.gallery-dialog{z-index:1000;border:1px solid var(--color-border);background:var(--color-bg);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--color-text);border-radius:0;grid-template-rows:72px minmax(0,1fr) 104px;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:hidden}.gallery-dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#03060abd}.gallery-dialog__toolbar{border-bottom:1px solid var(--color-border);background:var(--color-surface);height:64px;color:var(--color-muted);justify-content:space-between;align-items:center;padding-inline:20px 12px;font-weight:700;display:flex}.gallery-dialog__stage{grid-template-columns:56px minmax(0,1fr) 56px;place-items:center;gap:10px;min-height:0;padding:16px;display:grid}.gallery-dialog__stage>img{object-fit:contain;width:100%;min-width:0;max-width:100%;height:100%;min-height:0;max-height:100%}.gallery-dialog__arrow{background:var(--color-surface-raised);cursor:pointer;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.gallery-dialog__thumbs{border-top:1px solid var(--color-border);background:var(--color-surface);justify-content:center;gap:8px;min-height:0;padding:8px 18px;display:flex;overflow-x:auto}.gallery-dialog__thumbs button{opacity:.5;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:9px;flex:none;width:72px;height:84px;padding:0;transition:opacity .16s,transform .16s,border-color .16s;overflow:hidden}.gallery-dialog__thumbs button.is-active{opacity:1;border-color:var(--color-primary);transform:scale(1.04)}.gallery-dialog__thumbs img{object-fit:contain;width:100%;height:100%}.gallery-dialog__thumbs--single{display:none}.gallery-dialog:has(.gallery-dialog__thumbs--single){grid-template-rows:72px minmax(0,1fr)}.detail-actions{gap:14px;margin-top:42px;display:flex}.primary-button,.secondary-button{cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:11px 17px;font-weight:750;transition:transform .16s,background-color .16s,border-color .16s;display:inline-flex}.primary-button{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.secondary-button{border:1px solid var(--color-border);color:var(--color-text);background:0 0}.primary-button:hover,.secondary-button:hover{transform:translateY(-2px)}.secondary-button:hover{border-color:var(--color-primary);color:var(--color-primary)}.text-button{color:var(--color-primary);text-underline-offset:3px;text-decoration:underline}.analytics-consent{z-index:20;border:1px solid var(--color-border);background:var(--color-surface);width:min(860px,100vw - 40px);box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:22px;padding:14px 18px;display:flex;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.analytics-consent p{max-width:62ch;color:var(--color-muted);flex:auto;margin:0;font-size:.9rem;line-height:1.45}.analytics-consent__actions{white-space:nowrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.analytics-consent .primary-button,.analytics-consent .secondary-button{border-radius:9px;min-height:38px;padding:8px 13px;font-size:.82rem;font-weight:700}.analytics-consent .text-button{padding:8px 4px;font-size:.82rem}.contacts-layout{grid-template-columns:minmax(0,1fr) minmax(380px,.9fr);align-items:start;gap:40px;display:grid}.legal-content{gap:28px;max-width:760px;display:grid}.legal-content h2{margin:0 0 8px;font-size:1.25rem}.legal-content p{color:var(--color-muted);margin:0;line-height:1.7}.legal-back{justify-self:start;margin-top:8px}.site-footer{width:min(var(--content-width), calc(100% - 40px));color:var(--color-muted);border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:20px;margin:0 auto;padding:28px 0 34px;font-size:.82rem;display:flex}.site-footer nav{align-items:center;gap:20px;display:flex}.site-footer a{color:var(--color-muted);text-decoration:none;transition:color .16s}.site-footer a:hover,.site-footer a:focus-visible{color:var(--color-primary)}.contact-list{gap:16px;display:grid}.contact-card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:15px;padding:20px;display:grid}.contact-card__icon,.resume-contact>span{background:var(--color-surface-raised);width:44px;height:44px;color:var(--color-primary);border-radius:12px;place-items:center;display:grid}.contact-card__label{color:var(--color-muted);margin-bottom:4px;font-size:.76rem;font-weight:700}.contact-card a{overflow-wrap:anywhere;margin-bottom:8px;font-weight:750;display:inline-block}.contact-card a:hover{color:var(--color-primary)}.contact-card div>p:last-child{color:var(--color-muted);margin-bottom:0;font-size:.82rem;line-height:1.55}.contact-form-panel{background:var(--color-surface);box-shadow:var(--shadow);border-radius:14px;padding:24px}.contact-form-panel h2{margin-bottom:6px;font-size:1.45rem}.contact-form-panel>p{color:var(--color-muted);margin-bottom:22px;font-size:.9rem}.contact-form-panel form{gap:17px;display:grid}.contact-form-panel label{color:var(--color-muted);gap:7px;font-size:.83rem;font-weight:700;display:grid}.contact-form-panel .consent-check{color:var(--color-muted);align-items:flex-start;gap:9px;font-size:.82rem;font-weight:500;line-height:1.45;display:flex}.contact-form-panel .consent-check input{flex:none;width:17px;height:17px;margin:1px 0 0}.consent-check a{color:var(--color-primary)}.contact-form-panel input,.contact-form-panel textarea{border:1px solid var(--color-border);background:var(--color-bg);width:100%;color:var(--color-text);border-radius:10px;transition:border-color .16s,box-shadow .16s}.contact-form-panel input{height:48px;padding-inline:13px}.contact-form-panel textarea{resize:vertical;min-height:136px;padding:12px 13px}.contact-form-panel input:focus,.contact-form-panel textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-primary), transparent 82%);outline:none}.contact-form-panel [aria-invalid=true]{border-color:var(--color-danger)}.field-error{color:var(--color-danger);font-size:.76rem;font-weight:600}.resume-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:18px;display:flex}.resume-header__profile{flex:auto;min-width:0;padding-top:0}.resume-header__photo{object-fit:cover;object-position:top left;width:104px;height:104px;box-shadow:0 0 0 5px color-mix(in srgb, var(--color-primary), transparent 84%);border-radius:50%;flex:none}.resume-header h1{letter-spacing:-.04em;margin-bottom:5px;font-size:clamp(2.2rem,4.5vw,3.5rem);line-height:1}.resume-header p{color:var(--color-primary);margin-bottom:0;font-size:1.3rem;font-weight:700}.resume-profile-meta{flex-wrap:wrap;gap:8px;max-width:760px;margin-top:18px;display:flex}.resume-profile-meta span{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);border-radius:999px;padding:7px 10px;font-size:.76rem;font-weight:650;line-height:1.25}.resume-intro,.resume-main{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:40px;display:grid}.resume-intro{margin-bottom:40px}.resume-intro h2,.resume-main h2{margin-bottom:14px;font-size:1.35rem}.resume-intro section>p{max-width:72ch;color:var(--color-muted);margin-bottom:0;line-height:1.7}.resume-contacts{align-content:start;gap:12px;display:grid}.resume-contacts h2{margin-bottom:2px}.resume-contact{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;min-width:0;display:grid}.resume-contact>span{border-radius:10px;width:38px;height:38px}.resume-contact a{overflow-wrap:anywhere;font-size:.9rem;font-weight:650}.career-timeline__intro{max-width:62ch;color:var(--color-muted);margin:-5px 0 18px;font-size:.8rem;line-height:1.55}.career-timeline__lanes{--timeline-connector-reach:39px;grid-template-columns:minmax(0,1fr) 54px minmax(0,1fr);align-items:stretch;gap:12px;display:grid;position:relative}.career-timeline__axis{z-index:2;cursor:ns-resize;touch-action:pan-y;outline:none;grid-area:1/2;min-height:100%;position:relative}.career-timeline__track{background:color-mix(in srgb, var(--color-muted), transparent 68%);width:2px;transition:width .18s var(--ease-out), background-color .18s ease;border-radius:999px;position:absolute;inset:0 auto 0 50%;transform:translate(-50%)}.career-timeline__axis:focus-visible .career-timeline__track{background:color-mix(in srgb, var(--color-primary), transparent 48%);width:2px}.career-timeline__axis:focus-visible{outline:none}.career-timeline__tick{z-index:4;background:color-mix(in srgb, var(--color-muted), transparent 64%);pointer-events:none;width:28px;height:1px;position:absolute;left:50%;transform:translate(-50%,-50%)}.career-timeline__tick>span{z-index:2;background:var(--color-bg);color:var(--color-muted);font-variant-numeric:tabular-nums;border-radius:4px;padding:3px 5px;font-size:.62rem;font-weight:700;line-height:1;transition:color .16s,background-color .16s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.career-timeline__tick.is-current>span{color:var(--color-primary);font-weight:850}.career-timeline__cursor{z-index:4;border:1px solid var(--color-bg);background:var(--color-primary);pointer-events:none;border-radius:50%;width:8px;height:8px;transition:top 80ms linear;position:absolute;left:50%;transform:translate(-50%,-50%)}.career-timeline__period{z-index:3;background:var(--color-primary);transform-origin:50%;pointer-events:none;width:2px;min-height:2px;animation:timeline-period-in .22s var(--ease-out) both;border-radius:999px;position:absolute;left:50%;transform:translate(-50%)}.career-timeline__period-boundary{width:0;height:0;position:absolute;left:50%;transform:translate(-50%)}.career-timeline__period-boundary:after{content:"";border:1px solid var(--color-bg);background:var(--color-primary);border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.career-timeline__period-boundary--end{top:0}.career-timeline__period-boundary--start{bottom:0}@keyframes timeline-period-in{0%{opacity:0;transform:translate(-50%)scaleY(.35)}}.career-lane{grid-row:1;min-width:0}.career-lane--employment{grid-column:1}.career-lane--parallel{flex-direction:column;grid-column:3;justify-content:space-between;gap:16px;display:flex}.career-node{position:relative}.career-node:before{content:"";z-index:0;opacity:0;background:color-mix(in srgb, var(--color-primary), transparent 24%);width:0;height:1px;transition:width .24s var(--ease-out), opacity .12s ease;position:absolute;top:39px}.career-node--employment:before{right:calc(var(--timeline-connector-reach) * -1)}.career-lane--parallel .career-node:before{left:calc(var(--timeline-connector-reach) * -1)}.career-timeline.is-exploring .career-node.is-active:before{width:var(--timeline-connector-reach);opacity:1}.career-node .experience-card{transition:border-color .22s ease, background-color .22s ease, opacity .22s ease, transform .24s var(--ease-out)}.career-timeline.is-exploring .career-node:not(.is-active) .experience-card{opacity:.48}.career-timeline.is-exploring .career-node.is-active .experience-card{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-surface), var(--color-primary) 4%);transform:translateY(-2px)}.experience-card{z-index:1;scroll-margin-top:calc(var(--header-height) + 28px);border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;height:100%;padding:20px;position:relative}.experience-card--employment{border-color:color-mix(in srgb, var(--color-primary), var(--color-border) 58%)}.experience-card--compact{padding:17px}.experience-card__kind{background:color-mix(in srgb, var(--color-primary), transparent 88%);width:-moz-fit-content;width:fit-content;color:var(--color-primary);border-radius:999px;margin-bottom:9px;padding:5px 8px;font-size:.68rem;font-weight:800}.experience-card h3{margin-bottom:5px;font-size:1.02rem}.experience-card__period{color:var(--color-muted);margin-bottom:5px;font-size:.75rem}.experience-card__company{color:var(--color-primary);margin-bottom:13px;font-size:.88rem;font-weight:700}.experience-card__company a:hover{text-underline-offset:3px;text-decoration:underline}.experience-card ul{color:var(--color-muted);margin:0;padding-left:18px}.experience-card li{margin-bottom:9px;padding-left:3px;font-size:.82rem;line-height:1.55}.experience-card li::marker{color:var(--color-primary)}.experience-card__projects-link{width:-moz-fit-content;width:fit-content;color:var(--color-primary);align-items:center;gap:6px;margin-top:16px;font-size:.78rem;font-weight:750;display:inline-flex}.experience-card__projects-link span{background:color-mix(in srgb, var(--color-primary), transparent 86%);border-radius:999px;place-items:center;min-width:20px;height:20px;padding-inline:6px;display:inline-grid}.experience-card__projects-link:hover{text-underline-offset:3px;text-decoration:underline}.achievements-section{scroll-margin-top:calc(var(--header-height) + 28px);margin-top:34px}.achievements-section__heading{align-items:center;gap:11px;margin-bottom:13px;display:flex}.achievements-section__heading>span{background:color-mix(in srgb, var(--color-primary), transparent 88%);width:38px;height:38px;color:var(--color-primary);border-radius:10px;flex:none;place-items:center;display:grid}.achievements-section__heading h2{margin-bottom:2px}.achievements-section__heading p{color:var(--color-muted);margin-bottom:0;font-size:.78rem}.achievement-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.achievement-link{border:1px solid var(--color-border);background:var(--color-surface);min-width:0;transition:border-color .16s ease, transform .18s var(--ease-out);border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:5px 8px;padding:13px;display:grid}.achievement-link span{color:var(--color-primary);grid-column:1/-1;font-size:.66rem;font-weight:800}.achievement-link strong{min-width:0;font-size:.84rem}.achievement-link svg{color:var(--color-muted)}.achievement-link:hover,.achievements-section.is-linked .achievement-link{border-color:var(--color-primary);transform:translateY(-2px)}.skills-section{top:calc(var(--header-height) + 28px);align-self:start;position:sticky}.education-summary{border-top:1px solid color-mix(in srgb, var(--color-border), transparent 30%);margin-top:34px;padding-top:24px}.education-summary h2{margin-bottom:14px}.education-summary article{max-width:72ch}.education-summary p{color:var(--color-muted);margin:0;font-size:.9rem;line-height:1.65}.education-summary strong{color:var(--color-text);font-weight:650}.selector-backdrop{display:none}.adaptive-selector{z-index:70;top:var(--selector-top);right:var(--selector-right);width:min(292px,100vw - 24px);max-height:min(520px, calc(100vh - var(--selector-top) - 16px));border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);transform-origin:100% 0;border-radius:12px;animation:.16s cubic-bezier(.22,1,.36,1) both selector-popover-in;position:fixed;overflow:hidden auto;box-shadow:0 8px 8px #0000003d}.language-selector{width:min(248px,100vw - 24px)}.adaptive-selector__header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:11px 8px 8px 14px;display:flex}.adaptive-selector__header h2{margin:0;font-size:.9rem;font-weight:700}.adaptive-selector__close{border-radius:9px;width:34px;height:34px}.selector-list{padding:6px}.selector-option{width:100%;min-height:46px;color:var(--color-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding:6px 9px;font-size:.88rem;font-weight:620;transition:color .15s,background-color .15s;display:grid}.selector-option:hover,.selector-option--active{background:var(--color-surface-raised)}.selector-option:hover{color:var(--color-primary)}.selector-option__swatch{color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.selector-option__check{color:var(--color-primary)}.language-option__code{background:color-mix(in srgb, var(--color-primary), transparent 86%);width:30px;height:30px;color:var(--color-primary);letter-spacing:.04em;border-radius:8px;place-items:center;font-size:.74rem;font-weight:800;display:grid}@keyframes selector-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:none}}.toast{z-index:80;background:var(--color-text);max-width:min(360px,100vw - 32px);color:var(--color-bg);opacity:0;pointer-events:none;transition:opacity .18s ease, transform .26s var(--ease-out);border-radius:11px;padding:12px 16px;font-size:.86rem;font-weight:700;position:fixed;bottom:20px;right:20px;transform:translateY(18px)}.toast--visible{opacity:1;transform:translateY(0)}.route-loader{min-height:50vh;color:var(--color-muted);place-items:center;display:grid}@keyframes page-enter{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes page-enter-mobile{0%{opacity:0}to{opacity:1}}@keyframes card-enter{0%{opacity:0;transform:translateY(18px)scale(.985)}to{opacity:1;transform:none}}@keyframes ticker-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:980px){:root{--header-height:0px}.desktop-header{display:none}.app-main{min-height:100vh;padding-bottom:calc(68px + env(safe-area-inset-bottom));animation-name:page-enter-mobile}.mobile-nav{z-index:40;width:100%;height:calc(58px + env(safe-area-inset-bottom));min-height:0;padding:4px max(4px, env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(4px, env(safe-area-inset-left));border-top:1px solid color-mix(in srgb, var(--color-border), transparent 30%);background:rgb(var(--surface-rgb));overscroll-behavior:none;touch-action:manipulation;contain:layout paint;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0;overflow:hidden}.mobile-nav a{min-width:0;min-height:49px;color:var(--color-muted);touch-action:manipulation;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.64rem;font-weight:600;line-height:1;transition:color .16s,background-color .16s;display:flex;overflow:hidden}.mobile-nav a svg{width:19px;height:19px}.mobile-nav a.active{color:var(--color-primary);background:0 0;font-weight:700}.mobile-nav a:active{background:color-mix(in srgb, var(--color-primary), transparent 90%)}.mobile-header-actions{z-index:35;gap:4px;display:flex;position:fixed;top:12px;right:14px}.mobile-header-actions .icon-button{border:1px solid var(--color-border);background:rgba(var(--surface-rgb), .9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:132px}.project-card--narrowTop,.project-card--narrowTallTop,.project-card--narrowUltraTallTop{grid-column:span 1}.contacts-layout,.resume-intro,.resume-main{grid-template-columns:1fr}.skills-section{position:static}}@media (max-width:700px){.page-shell{padding:68px 14px 44px}.page-heading{margin-bottom:26px}.page-heading h1{margin-bottom:10px;font-size:clamp(1.75rem,7.2vw,2rem);line-height:1.08}.page-heading p{font-size:.94rem;line-height:1.6}.home-page{padding-top:28px}.profile-hero{grid-template-columns:88px minmax(0,1fr);gap:0 15px;padding-top:28px}.profile-hero__photo{width:88px;height:88px}.profile-hero h1{font-size:clamp(1.7rem,8vw,2.4rem)}.profile-hero__role{font-size:1rem}.home-navigation{margin-top:36px}.home-grid{grid-template-columns:1fr;grid-auto-rows:250px}.home-card--resume{grid-row:auto}.projects-grid{flex-direction:column;display:flex}.project-context-filter,.project-customer-filter{scrollbar-width:none;scroll-snap-type:x proximity;flex-wrap:nowrap;margin:-8px -14px 24px;padding-inline:14px;overflow-x:auto}.project-context-filter::-webkit-scrollbar{display:none}.project-customer-filter::-webkit-scrollbar{display:none}.project-context-filter a,.project-customer-filter a,.project-customer-filter>span{scroll-snap-align:start;flex:none}.project-card{content-visibility:visible;min-height:500px}.project-card__link,.project-card--image-right .project-card__link{flex-direction:column}.project-card__media,.project-card--image-top .project-card__media{flex:0 0 245px;min-height:245px}.project-card__content{flex:auto}.project-card__description{--description-lines:3}.project-detail__hero-inner{min-height:230px;padding-top:28px}.project-detail__hero h1{font-size:clamp(2rem,9vw,2.4rem);line-height:1.04}.project-detail__body{padding-top:30px}.project-detail__meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px;margin-bottom:24px;display:grid}.project-detail__meta div{min-width:0}.project-detail__description{font-size:1rem;line-height:1.65}.detail-section h2{font-size:1.2rem}.gallery-dialog{border:0;border-radius:0;width:100vw;max-width:none;height:100dvh;max-height:none}.gallery-dialog__stage{grid-template-columns:40px minmax(0,1fr) 40px;gap:4px;padding:8px}.gallery-dialog__arrow{width:38px;height:38px}.detail-actions,.resume-header{flex-direction:column}.resume-header__photo{width:88px;height:88px}.detail-actions a,.resume-download{width:100%}.contacts-layout{gap:26px}.contact-card{grid-template-columns:40px minmax(0,1fr) 38px;gap:12px;padding:14px}.contact-card__icon{border-radius:11px;width:40px;height:40px}.contact-card .icon-button{width:38px;height:38px}.contact-card a{font-size:.94rem;line-height:1.3}.contact-card div>p:last-child{line-height:1.5}.contact-form-panel{padding:20px 16px}.contact-form-panel h2{font-size:1.25rem}.contact-form-panel>p{font-size:.86rem}.career-timeline__lanes{--timeline-connector-reach:27px;padding-left:52px;display:block}.career-timeline__axis{width:40px;position:absolute;inset:0 auto 0 0}.career-timeline__track{left:7px}.career-timeline__tick{width:24px;left:7px;transform:translateY(-50%)}.career-timeline__tick>span{left:16px;transform:translateY(-50%)}.career-timeline__cursor{left:7px;transform:translate(-50%,-50%)}.career-timeline__period{left:7px}.career-lane--parallel,.career-node+.career-node{margin-top:16px}.career-node:before,.career-node--employment:before,.career-lane--parallel .career-node:before{top:39px;left:calc(var(--timeline-connector-reach) * -1);right:auto}.achievement-list{grid-template-columns:1fr}.resume-header h1{font-size:clamp(1.85rem,8vw,2.15rem);line-height:1.05}.resume-header p{font-size:1.08rem}.resume-intro h2,.resume-main h2{font-size:1.2rem}.resume-intro section>p{font-size:.94rem;line-height:1.65}.toast{right:16px;bottom:calc(82px + env(safe-area-inset-bottom))}.selector-backdrop{z-index:60;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0000008a;border:0;width:100%;height:100%;padding:0;display:block;position:fixed;inset:0}.adaptive-selector,.language-selector{width:100%;max-height:min(70vh,560px);padding-bottom:env(safe-area-inset-bottom);transform-origin:bottom;border-width:1px 0 0;border-radius:16px 16px 0 0;animation-name:selector-sheet-in;animation-duration:.22s;inset:auto 0 0;box-shadow:0 -8px 8px #0003}.adaptive-selector:before{content:"";background:color-mix(in srgb, var(--color-muted), transparent 52%);border-radius:999px;width:34px;height:4px;position:absolute;top:7px;left:50%;transform:translate(-50%)}.adaptive-selector__header{padding:20px 12px 10px 18px}.adaptive-selector__header h2{font-size:1rem}.selector-list{padding:8px 10px 12px}.selector-option{border-radius:10px;min-height:54px;padding:8px 10px;font-size:.94rem}.selector-option__swatch,.language-option__code{width:34px;height:34px}}@keyframes selector-sheet-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@media (max-width:360px){.contact-card{grid-template-columns:36px minmax(0,1fr) 38px;gap:10px}.contact-card__icon{width:36px;height:36px}.contact-card a{font-size:.9rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}.home-card__slide.is-active{object-position:50% 50%;transform:scale(1.01);animation:none!important}}@media print{:root,:root[data-theme]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-surface:#fff;--color-surface-raised:#f4f5f7;--color-primary:#1468bd;--color-text:#101318;--color-muted:#434b56;--color-border:#d7dbe0}.desktop-header,.mobile-nav,.mobile-header-actions,.resume-download,.toast{display:none!important}.app-main,.page-shell{padding:0}.resume-page{width:100%}.resume-main,.resume-intro{grid-template-columns:2fr 1fr;gap:24px}.experience-card{break-inside:avoid}@page{size:A4;margin:13mm}}@media (max-width:640px){.analytics-consent{width:calc(100vw - 24px);display:block;bottom:12px;left:12px;transform:none}.analytics-consent__actions{white-space:normal;flex-wrap:wrap;justify-content:flex-start;margin-top:10px}.site-footer{flex-direction:column;align-items:flex-start;gap:10px;width:calc(100% - 24px);padding:22px 0 86px}.site-footer nav{gap:14px}}
