@import "https://fonts.googleapis.com/css2?family=Playfair Display:wght@300;400;500;600;700&family=Fira+Code:wght@300;400;500;600;700&family=Zalando+Sans+Expanded:wght@300;400;500;600;700&display=swap";:root{--bg-color:#fafafa;--text-main:#555;--text-sub:#666;--card-bg:#fff;--border-color:#eee;--nav-bg:#fafafaf5}[data-theme=dark]{--bg-color:#171717;--text-main:#b6b6b6;--text-sub:#9e9e9e;--card-bg:#202020;--border-color:#2a2a2a;--nav-bg:#171717f5}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--text-main);background-color:var(--bg-color);max-width:1000px;margin:0 auto;padding:0 20px;font-family:Playfair Display,sans-serif;line-height:1.6;transition:background .3s,color .3s}nav{justify-content:space-between;align-items:center;padding:18px 0;display:flex}header{z-index:1000;background:var(--nav-bg);-webkit-backdrop-filter:blur(14px)saturate(120%);border-bottom:1px solid color-mix(in srgb, var(--text-main) 8%, transparent);padding:0 max(20px,50vw - 500px);position:fixed;top:0;left:0;right:0;box-shadow:0 8px 30px #0000000a}body{padding-top:68px}.scroll-progress-wrapper{display:none}.scroll-progress-bar{background:linear-gradient(#404040eb,#40404073);border-radius:50px;width:100%;height:0%;transition:height .1s linear}[data-theme=dark] .scroll-progress-wrapper{background:#ffffff14;border-color:#ffffff24;box-shadow:0 10px 26px #00000047,inset 0 1px #ffffff1f}[data-theme=dark] .scroll-progress-bar{background:linear-gradient(#fffffffa,#ffffff6b);box-shadow:0 0 14px #ffffff2e}.logo{color:var(--text-main);align-items:center;gap:10px;font-family:Zalando Sans Expanded,sans-serif;font-size:1.3rem;font-weight:700;text-decoration:none;display:flex}.about{border-top:1px solid var(--border-color);grid-template-columns:minmax(230px,.8fr) minmax(0,1.25fr);align-items:center;gap:clamp(36px,7vw,88px);padding:56px 0 44px;display:grid}.about-story{max-width:680px}.about-eyebrow{color:var(--text-sub);letter-spacing:.09em;text-transform:uppercase;margin-bottom:16px;font-family:Fira Code,monospace;font-size:.72rem;font-weight:600}.about h2{color:var(--text-main);letter-spacing:-.045em;text-wrap:balance;overflow-wrap:normal;word-break:normal;max-width:650px;font-family:Zalando Sans Expanded,sans-serif;font-size:clamp(2.1rem,4vw,3.4rem);line-height:1.04}.about-content{max-width:610px;margin-top:24px}.about .about-copy{color:var(--text-sub);font-size:1rem;line-height:1.8}.about-copy+.about-copy{margin-top:14px}.about-portrait{justify-self:start;width:min(100%,350px);margin:0 0 0 12px;position:relative}.about-portrait:before{border-top:1px solid var(--border-color);border-left:1px solid var(--border-color);content:"";width:56%;height:46%;position:absolute;top:-12px;left:-12px}.about-portrait img{z-index:1;aspect-ratio:.74;object-fit:cover;object-position:center;border:1px solid var(--border-color);background:#fff;width:100%;display:block;position:relative}.about-portrait figcaption{color:var(--text-sub);letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;gap:12px;margin-top:12px;font-family:Fira Code,monospace;font-size:.68rem;display:flex}.about-project-link{border-bottom:1px solid color-mix(in srgb, var(--text-main) 35%, transparent);color:var(--text-main);align-items:center;gap:8px;margin-top:26px;padding-bottom:4px;font-size:.9rem;font-weight:600;text-decoration:none;transition:gap .2s,border-color .2s;display:inline-flex}.about-project-link:hover{border-color:var(--text-main);gap:13px}.experience-section{border-top:1px solid var(--border-color);grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr);align-items:start;gap:clamp(32px,7vw,84px);padding:58px 0;display:grid}.experience-kicker{color:var(--text-sub);letter-spacing:.07em;text-transform:uppercase;margin-bottom:12px;font:500 .68rem Fira Code,monospace}.experience-heading h2{color:var(--text-main);letter-spacing:-.05em;font:600 clamp(1.7rem,3vw,2.5rem)/1.1 Zalando Sans Expanded,sans-serif}.experience-entry{padding-bottom:4px}.experience-role-row{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.experience-role-row h3{color:var(--text-main);font:600 1.08rem/1.4 Zalando Sans Expanded,sans-serif}.experience-role-row>span{color:var(--text-sub);flex:none;font:.68rem Fira Code,monospace}.experience-company{color:var(--text-sub);margin-top:4px;font:.76rem Fira Code,monospace}.experience-company span{opacity:.6;padding:0 3px}.experience-entry ul{color:var(--text-sub);gap:9px;margin:20px 0 0;padding-left:18px;font-size:.92rem;line-height:1.7;display:grid}.experience-entry li::marker{color:color-mix(in srgb, var(--text-main) 55%, transparent)}.custom-cursor{display:none}@media (pointer:fine) and (prefers-reduced-motion:no-preference){.custom-cursor.is-enabled{z-index:2000;opacity:0;pointer-events:none;visibility:hidden;will-change:transform, opacity;border:2px solid #555;border-radius:50%;width:34px;height:34px;display:block;position:fixed;top:0;left:0}.custom-cursor:after{content:"";background:#555;border-radius:50%;width:4px;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}[data-theme=dark] .custom-cursor.is-enabled{border-color:#eee}[data-theme=dark] .custom-cursor.is-enabled:after{background:#eee}}.logo i:hover{scale:1.1}.nav-right{align-items:center;gap:30px;display:flex}nav ul{list-style:none;display:flex}nav ul li{margin-left:30px}nav ul li a{color:var(--text-sub);font-size:.95rem;font-weight:500;text-decoration:none;transition:color .3s}nav ul li a:hover{color:var(--text-main)}.nav-actions{align-items:center;gap:20px;display:flex}.theme-toggle,.hamburger{cursor:pointer;color:var(--text-main);background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:1.4rem;display:flex}.hamburger{background:0 0;border:none;display:none}.hero{text-align:center;isolation:isolate;background:0 0;border:none;border-radius:0;place-items:center;min-height:520px;margin-bottom:24px;padding:72px clamp(24px,6vw,64px);display:grid;position:relative;overflow:visible}.hero-inner{width:100%;max-width:760px}.hero-eyebrow{color:var(--text-sub);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:9px;margin-bottom:18px;font-family:Fira Code,monospace;font-size:.78rem;font-weight:600;display:inline-flex}.hero h1{color:var(--text-main);letter-spacing:-.055em;margin-bottom:22px;font-size:clamp(3rem,7vw,5.25rem);font-weight:700;line-height:.98}.hero span{font-family:Zalando Sans Expanded}.hero-bio{color:var(--text-sub);max-width:580px;margin:0 auto 36px;font-size:clamp(1rem,1.8vw,1.12rem);line-height:1.75}.hero-btns{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.hero-btns>a{cursor:pointer;white-space:nowrap;transition:transform .22s,border-color .22s,background-color .22s,box-shadow .22s,opacity .55s}.hero-btns .button-label{letter-spacing:.01em;font-size:.88rem;font-weight:500}.hero-btns>a>i{transition:transform .22s}.resume-link:hover>i{transform:translateY(-2px)}.github-link:hover>i{transform:rotate(-8deg)scale(1.08)}.hero:not(.active) .hero-btns>a{opacity:0;transform:translateY(12px)}.hero.active .hero-btns>a{opacity:1;transform:translateY(0)}.hero.active .hero-btns>a:nth-child(2){transition-delay:80ms}.hero.active .hero-btns>a:nth-child(3){transition-delay:.16s}.btn-primary{color:#333;background-color:#fff;border:1px solid #d6d6d6;border-radius:0;align-items:center;gap:8px;padding:14px 20px;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary i{transition:transform .22s}.btn-primary:hover i{transform:translate(3px)}.resume-link,.github-link{color:#333;background-color:#fff;border:1px solid #d6d6d6;border-radius:0;align-items:center;gap:8px;min-height:48px;padding:12px 18px;font-weight:600;text-decoration:none;display:flex}.hero-btns>a:hover{background-color:#f7f7f7;border-color:#a8a8a8;transform:translateY(-3px);box-shadow:0 8px 18px #00000014}.hero.active .hero-btns>a:hover{transition-delay:0s}.hero-btns>a:focus-visible{outline-offset:3px;outline:2px solid #888}[data-theme=dark] .hero-btns>a{color:var(--text-main);background-color:#ffffff09;border-color:#ffffff29}[data-theme=dark] .hero-btns>a:hover{color:#d0d0d0;background-color:#ffffff17;border-color:#ffffff4d;box-shadow:0 8px 18px #0003}.skills{padding:100px 0}.section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:20px;display:flex}.section-heading .tech-stack{color:var(--text-sub);font-family:Fira Code,monospace;font-size:.82rem}.section-heading h2{color:var(--text-main);margin:0;font-family:Zalando Sans Expanded,sans-serif}.crystal-field{background:radial-gradient(#7e9ac61a,#0000 72%);height:380px;position:relative;overflow:hidden}.crystal-canvas{touch-action:pan-y;width:100%;height:100%;display:block}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.projects{padding:100px 0}.project-slider{cursor:grab;scroll-behavior:smooth;scrollbar-width:thin;touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none;padding:10px 0 20px;position:relative;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}#projects h2{color:var(--text-main)}.project-slider::-webkit-scrollbar{height:8px}.project-slider::-webkit-scrollbar-track{background:0 0}.project-slider::-webkit-scrollbar-thumb{background:#4040403d;border-radius:999px}.project-slider.is-dragging{cursor:grabbing;scroll-behavior:auto}.project-track{gap:24px;width:max-content;display:flex}.project-card{isolation:isolate;background:linear-gradient(#161616e6,#0e0e0eeb);border:1px solid #ffffff14;border-radius:14px;flex:0 0 clamp(280px,38vw,360px);min-height:430px;transition:transform .35s,border-color .35s,box-shadow .35s;position:relative;overflow:hidden;box-shadow:0 20px 60px #0000002e}.project-card:hover{border-color:#4040404d;transform:translateY(-8px);box-shadow:0 26px 70px #00000029}.project-img{z-index:-2;position:absolute;inset:0}.project-img img{object-fit:cover;pointer-events:none;-webkit-user-drag:none;filter:blur(2px)saturate(.9)brightness(.55);width:100%;height:100%;transition:filter .35s,transform .35s;display:block;transform:scale(1.05)}.project-card:hover .project-img img{filter:blur(1px)saturate(1.05)brightness(.62);transform:scale(1.1)}.project-card:after{content:"";z-index:-1;background:linear-gradient(#0000001f,#000000b3),linear-gradient(135deg,#ffffff2e,#0000 45%);position:absolute;inset:0}.project-info{flex-direction:column;justify-content:flex-end;min-height:430px;padding:28px;display:flex}.project-info h3{color:#e7e7e7;margin-bottom:12px;font-family:Zalando Sans Expanded,sans-serif;font-size:1.35rem;line-height:1.25}.project-info h3:hover{letter-spacing:-1px}.projects h2{margin-bottom:26px;margin-left:10px;font-family:Zalando Sans Expanded}.project-info p{color:var(--text-sub);margin-bottom:24px;font-family:Zalando Sans Expanded,sans-serif;font-size:.92rem}.project-links{z-index:2;flex-wrap:wrap;gap:10px;display:flex;position:relative}.project-links a,.project-link-disabled{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff1a;border:1px solid #ffffff38;border-radius:8px;align-items:center;gap:6px;padding:10px 12px;font-weight:700;text-decoration:none;transition:background .3s,transform .3s;display:flex}.project-links a:hover{background:#ffffff2e;transform:translateY(-2px)}.project-link-disabled{color:#ffffffa6;cursor:not-allowed}.projects-feature{border-top:1px solid var(--border-color);grid-template-columns:minmax(250px,.82fr) minmax(0,1.18fr);align-items:center;gap:clamp(36px,8vw,100px);padding:84px 0;display:grid}.featured-project-copy{max-width:390px}.project-kicker,.projects-wordmark>p{color:var(--text-sub);letter-spacing:.07em;text-transform:uppercase;font:500 .72rem/1.5 Fira Code,monospace}.featured-project-copy h2{color:var(--text-main);letter-spacing:-.065em;margin:18px 0;font:600 clamp(2.5rem,5vw,4.2rem)/.98 Zalando Sans Expanded,sans-serif}.featured-project-copy h2 span{color:var(--text-sub)}.featured-project-copy .featured-star{position:relative;top:.09em}.featured-project-copy>p:not(.project-kicker){max-width:36ch;color:var(--text-sub);line-height:1.75}.project-text-link,.project-back-link{color:var(--text-main);border:0;border-bottom:1px solid color-mix(in srgb, var(--text-main) 36%, transparent);cursor:pointer;background:0 0;align-items:center;gap:10px;margin-top:25px;padding:0 0 6px;font:500 .9rem Fira Code,monospace;transition:gap .18s,border-color .18s;display:inline-flex}.project-text-link:hover,.project-back-link:hover{border-color:var(--text-main);gap:16px}.featured-project-visual{text-align:left;color:#fff;cursor:pointer;isolation:isolate;background:#222;border:0;width:100%;min-height:370px;padding:0;display:block;position:relative;overflow:hidden}.featured-project-visual img,.project-orbit-inner img,.project-detail-art img{z-index:-2;object-fit:cover;opacity:.38;filter:saturate(.7)contrast(1.15);width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.75,.2,1),opacity .35s;display:block;position:absolute;inset:0}.featured-project-visual:before,.project-orbit-inner:before,.project-detail-art:before{z-index:-1;content:"";background:linear-gradient(145deg,#38535da8,#14171c66 52%,#0d0d0df0);position:absolute;inset:0}.featured-project-visual:after,.project-orbit-inner:after{z-index:-1;content:"";background:radial-gradient(at 70% 25%,#d2e1d233,#0000 35%);transition:opacity .35s;position:absolute;inset:0}.featured-project-visual:hover img{opacity:.9;transform:scale(1.04)}.featured-project-visual img{opacity:.78;filter:grayscale()contrast(1.08)brightness(.88)}.featured-project-visual:before{background:linear-gradient(#0a0a0a0d,#0a0a0a94)}.featured-project-visual:after{opacity:.35}.featured-project-count,.project-art-index{color:#ffffffb3;font:500 .68rem Fira Code,monospace;position:absolute;top:22px;left:24px}.featured-project-name{text-align:left;justify-items:start;gap:7px;display:grid;position:absolute;bottom:30px;left:clamp(24px,4vw,46px);right:24px}.featured-project-name strong{color:#fff;letter-spacing:-.05em;overflow-wrap:anywhere;max-width:100%;font:600 clamp(2rem,4.6vw,3.5rem)/1 Zalando Sans Expanded,sans-serif;display:block}.featured-project-name>span{color:#ffffffc7;font:.78rem/1.45 Fira Code,monospace;display:block}.featured-project-arrow{color:#fff;border:1px solid #fff6;place-items:center;width:42px;height:42px;transition:transform .2s,background .2s;display:grid;position:absolute;bottom:35px;right:28px}.featured-project-visual:hover .featured-project-arrow{background:#ffffff1f;transform:translate(3px,-3px)}.projects-page{max-width:1240px;margin:0 auto;padding:78px 0 64px}.projects-page-head{grid-template-columns:minmax(0,1fr) minmax(280px,.68fr);align-items:end;gap:30px;margin-bottom:34px;display:grid}.projects-wordmark h1{color:var(--text-main);letter-spacing:-.09em;margin:4px 0 -.11em -.065em;font:600 clamp(4.2rem,12.5vw,9.7rem)/.82 Zalando Sans Expanded,sans-serif}.projects-head-tools{justify-self:end;width:min(100%,440px)}.projects-head-tools>p{max-width:38ch;color:var(--text-sub);text-align:right;margin:0 0 20px auto;font-size:.95rem;line-height:1.65}.projects-filters{justify-content:flex-end;align-items:center;gap:14px;display:flex}.project-filter-group{border-bottom:1px solid var(--border-color);gap:3px;padding:3px;display:flex}.project-filter-group button{color:var(--text-sub);cursor:pointer;background:0 0;border:0;padding:8px 12px;font:500 .76rem Fira Code,monospace;transition:color .18s,background .18s}.project-filter-group button:hover,.project-filter-group button.is-selected{color:var(--text-main);background:color-mix(in srgb, var(--text-main) 8%, transparent)}.projects-orbit{isolation:isolate;background:radial-gradient(ellipse at 46% 53%, color-mix(in srgb, var(--text-main) 6%, transparent), transparent 66%);height:clamp(430px,53vw,610px);position:relative;overflow:hidden}.projects-orbit:before,.projects-orbit:after{z-index:3;content:"";pointer-events:none;width:5%;position:absolute;top:0;bottom:0}.projects-orbit:before{background:linear-gradient(90deg, var(--bg-color), transparent);left:0}.projects-orbit:after{background:linear-gradient(270deg, var(--bg-color), transparent);right:0}.project-orbit-card{z-index:1;top:var(--orbit-y);width:var(--orbit-width);height:var(--orbit-height);animation:project-drift var(--orbit-time) linear var(--orbit-delay) infinite;will-change:transform;position:absolute;left:0}.project-card:hover,.project-card:focus-within{z-index:5;animation-play-state:paused}@keyframes project-drift{0%{transform:translate(-110%)}to{transform:translate(calc(100vw + 1240px))}}.project-orbit-inner{color:#fff;text-align:left;cursor:pointer;isolation:isolate;background:#242729;border:0;width:100%;height:100%;padding:0;transition:transform .22s,filter .22s;display:block;position:relative;overflow:hidden}.project-card:hover .project-card-inner,.project-card:focus-within .project-card-inner{filter:brightness(1.12);transform:scale(1.08)}.project-orbit-inner img{opacity:.4}.project-orbit-inner:hover img{opacity:.6;transform:scale(1.07)}.project-orbit-caption{gap:8px;display:grid;position:absolute;bottom:22px;left:20px;right:20px}.project-orbit-caption strong{color:#fff;font:600 clamp(1.05rem,2vw,1.42rem)/1.2 Zalando Sans Expanded,sans-serif}.project-orbit-caption>span{color:#ffffffc2;-webkit-line-clamp:2;-webkit-box-orient:vertical;font:.76rem/1.55 Playfair Display,sans-serif;display:-webkit-box;overflow:hidden}.project-open-mark{color:#ffffffd9;font-size:1.15rem;transition:transform .18s;position:absolute;top:16px;right:17px}.project-orbit-inner:hover .project-open-mark{transform:translate(3px,-3px)}.project-art-focusforge:before{background:linear-gradient(145deg,#7a512a9e,#1d19177a 50%,#0b0b0bf2)}.project-art-scheduler:before{background:linear-gradient(145deg,#425f4ea3,#181e1b73 50%,#0a0c0af5)}.project-art-banking:before{background:linear-gradient(145deg,#424d779e,#191a227a 50%,#0a0a0df5)}.project-art-flowboard:before{background:linear-gradient(145deg,#72445ba1,#1f181d75 50%,#0c0a0cf5)}.project-art-gitverse:before{background:linear-gradient(145deg,#4e4581a3,#1a182575 50%,#0a0a0ef5)}.project-page-note{color:var(--text-sub);text-align:right;margin-top:7px;font:.68rem Fira Code,monospace}.project-empty{color:var(--text-sub);text-align:center;position:absolute;inset:50% 0 auto}.project-back-link{margin:0}.project-detail{border-top:1px solid var(--border-color);grid-template-columns:minmax(0,1.04fr) minmax(300px,.8fr);align-items:start;gap:clamp(32px,7vw,84px);padding:38px 0 64px;animation:.42s both project-detail-in;display:grid}@keyframes project-detail-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.project-detail-art{color:#fff;isolation:isolate;background:#202326;min-height:480px;position:relative;overflow:hidden}.project-detail-art>span{color:#ffffffb8;font:.7rem Fira Code,monospace;position:absolute;top:22px;left:24px}.project-detail-copy h2{color:var(--text-main);letter-spacing:-.07em;margin:12px 0 18px;font:600 clamp(2.25rem,5vw,4.4rem)/.98 Zalando Sans Expanded,sans-serif}.project-detail-description,.project-detail-section p{color:var(--text-sub);line-height:1.75}.project-detail-section{margin-top:26px}.project-detail-section h3{color:var(--text-main);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font:500 .74rem Fira Code,monospace}.project-tech-list{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.project-tech-list li{color:var(--text-main);border-bottom:1px solid var(--border-color);padding:7px 10px;font:.72rem Fira Code,monospace}.project-detail-links{flex-wrap:wrap;gap:20px;margin-top:26px;display:flex}.project-detail-links a,.project-pagination button{color:var(--text-main);align-items:center;gap:8px;font:500 .78rem Fira Code,monospace;text-decoration:none;display:inline-flex}.project-detail-links a:hover{text-underline-offset:5px;text-decoration:underline}.project-pagination{border-top:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:12px;margin-top:44px;padding-top:16px;display:flex}.project-pagination button{cursor:pointer;background:0 0;border:0;padding:8px 0}.project-pagination button:hover{color:var(--text-sub)}.project-pagination>span{color:var(--text-sub);font:.68rem Fira Code,monospace}@media (width<=768px){.projects-feature{grid-template-columns:1fr;gap:28px;padding:62px 0}.featured-project-copy{max-width:560px}.featured-project-visual{min-height:320px}.projects-page{padding-top:56px}.projects-page-head{grid-template-columns:1fr;align-items:start;gap:24px}.projects-wordmark h1{font-size:clamp(4rem,17vw,8rem)}.projects-head-tools{justify-self:stretch;width:100%}.projects-head-tools>p{text-align:left;margin-left:0}.projects-filters{justify-content:space-between}.projects-orbit{height:520px}.project-detail{grid-template-columns:1fr;gap:32px;padding-top:26px}.project-detail-art{min-height:min(68vw,430px)}}@media (width<=480px){.projects-wordmark h1{font-size:clamp(3.45rem,16.5vw,5rem)}.projects-orbit{height:480px}.project-orbit-card{width:min(var(--orbit-width), 72vw);height:min(var(--orbit-height), 300px)}.project-orbit-card:nth-child(n+4){top:calc(var(--orbit-y) - 10%)}.project-detail-art{min-height:300px}.project-pagination{margin-top:32px}}@media (prefers-reduced-motion:reduce){.project-orbit-card{width:min(100%,360px);height:290px;margin:18px auto;animation:none;position:relative;top:auto;left:auto}.projects-orbit{height:auto;min-height:0;padding:12px 0}.project-card:hover .project-card-inner{transform:none}.project-detail{animation:none}}.projects-page{padding-top:30px}.projects-page-head{margin-bottom:28px;display:block}.projects-wordmark h1{letter-spacing:-.085em;white-space:nowrap;margin:0 0 18px;font-size:clamp(3.25rem,9.3vw,7.05rem);line-height:.88}.projects-head-tools{justify-content:space-between;align-items:center;gap:22px;width:100%;display:flex}.projects-head-tools>p{text-align:left;max-width:38ch;margin:0}.projects-filters{flex:none}.projects-orbit{cursor:grab;touch-action:pan-y;height:390px;overflow:hidden}.projects-orbit.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.project-orbit-card{will-change:transform;width:clamp(250px,29vw,300px);height:278px;margin:0;transition:opacity .22s,filter .22s;animation:none;position:absolute;top:50%;left:0;transform:translateY(-50%)}.project-orbit-card.is-dimmed{opacity:.72;filter:grayscale(.08)brightness(.98)}.project-orbit-card.is-active{z-index:6;opacity:1;filter:drop-shadow(0 7px 14px #0000001a)}.projects-orbit .project-orbit-card.is-active{z-index:6}.project-orbit-card img{pointer-events:none;-webkit-user-select:none;user-select:none}.project-orbit-inner{color:#fff;isolation:isolate;cursor:default;background:#202326;border:0;padding:0;transition:transform .2s,filter .2s;position:absolute;inset:0;overflow:hidden}.project-orbit-inner:before{background:linear-gradient(#0e111414 0%,#0e111433 35%,#0a0b0df5 100%)}.project-orbit-inner:after{background:0 0}.project-orbit-title{color:#fff;font:600 1.16rem/1.2 Zalando Sans Expanded,sans-serif;transition:opacity .15s,transform .18s;position:absolute;bottom:20px;left:20px;right:20px}.project-orbit-details{color:#fff;opacity:0;background:linear-gradient(#0000,#0a0b0df0 16%);flex-direction:column;align-items:flex-start;gap:10px;padding:20px;transition:opacity .18s,transform .18s;display:flex;position:absolute;inset:auto 0 0;transform:translateY(8px)}.project-orbit-details>strong{font:600 1.16rem/1.2 Zalando Sans Expanded,sans-serif}.project-orbit-details>p{color:#fffc;-webkit-line-clamp:2;-webkit-box-orient:vertical;font:.79rem/1.5 Playfair Display,sans-serif;display:-webkit-box;overflow:hidden}.project-orbit-card:focus-within{z-index:5}.project-orbit-card.is-active .project-orbit-inner,.project-orbit-card:focus-within .project-orbit-inner{filter:brightness(1.025);transform:scale(1.02)}.project-orbit-card.is-active .project-orbit-title,.project-orbit-card:focus-within .project-orbit-title{opacity:0;transform:translateY(5px)}.project-orbit-card.is-active .project-orbit-details,.project-orbit-card:focus-within .project-orbit-details{opacity:1;transform:translateY(0)}.projects-orbit.is-dragging .project-orbit-card.is-active .project-orbit-inner{filter:none;transform:none}.projects-orbit.is-dragging .project-orbit-card.is-active .project-orbit-title{opacity:1;transform:none}.projects-orbit.is-dragging .project-orbit-card.is-active .project-orbit-details{opacity:0;transform:translateY(8px)}.project-orbit-stack{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.project-orbit-stack li{color:#ffffffc7;border:1px solid #fff3;padding:4px 7px;font:.62rem Fira Code,monospace}.project-orbit-actions{border-top:1px solid #ffffff2e;justify-content:space-between;gap:12px;width:100%;padding-top:7px;display:flex}.project-orbit-actions a,.project-orbit-actions button{color:#fff;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font:500 .7rem Fira Code,monospace;text-decoration:none;display:inline-flex}.project-orbit-actions a:hover,.project-orbit-actions button:hover{color:#ffffffad}.project-page-note{text-align:left;margin-top:2px}.project-detail{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(24px,4vw,56px)}.project-detail-copy{min-width:0}.project-detail-copy h2{overflow-wrap:anywhere}.project-detail-art{aspect-ratio:4/5;align-self:start;width:100%;min-width:0;height:auto;min-height:0}.project-detail-art img{opacity:1;filter:none}.project-detail-art:before{background:0 0}.about-portrait{transition:opacity .18s}@media (width<=768px){.projects-page{padding-top:28px}.project-detail{grid-template-columns:minmax(0,1fr);gap:32px;padding-top:26px}.experience-section{grid-template-columns:1fr;gap:22px;padding:42px 0}.projects-wordmark h1{font-size:clamp(3.4rem,10vw,5.5rem)}.projects-head-tools{flex-direction:column;align-items:flex-start;gap:14px}.projects-head-tools>p{margin:0}.projects-filters{justify-content:flex-start;width:100%}.projects-orbit{height:370px}.project-orbit-card{width:clamp(240px,58vw,290px);height:268px}.project-detail-art{aspect-ratio:1.25;height:auto;min-height:0}.about-portrait{justify-self:center;width:clamp(130px,27vw,180px);margin:0}.about-portrait img{aspect-ratio:1}}@media (width<=560px){.projects-page{padding-top:26px}.projects-wordmark h1{font-size:clamp(3rem,13vw,4.6rem)}.projects-page-head{margin-bottom:18px}.projects-orbit{height:350px}.project-orbit-card{width:min(78vw,270px);height:260px}.project-orbit-details{gap:8px;padding:16px}.project-orbit-details>p{font-size:.74rem}.project-page-note{font-size:.62rem}.about-portrait{display:none}.about{gap:0}.experience-role-row{flex-direction:column;align-items:flex-start;gap:4px}}@media (hover:none){.project-orbit-card:not(.is-active) .project-orbit-title{opacity:1;transform:none}.project-orbit-card:not(.is-active) .project-orbit-details{opacity:0;transform:translateY(8px)}.project-orbit-card.is-active .project-orbit-title{opacity:0;transform:translateY(5px)}.project-orbit-card.is-active .project-orbit-details{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.project-orbit-card{width:min(100%,360px);height:278px;margin:12px auto;position:relative;top:auto;left:auto;transform:none!important}.projects-orbit{flex-direction:column;height:auto;padding:10px 0;display:flex}.project-orbit-title{display:none}.project-orbit-details{opacity:1;transform:none}}.contact-section{border-top:1px solid var(--border-color);padding:clamp(38px,5vw,62px) 0 26px;position:relative}.contact-compact{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:28px;display:grid}.contact-kicker{color:var(--text-sub);letter-spacing:.08em;margin-bottom:12px;font:500 .66rem Fira Code,monospace}.contact-copy h2{color:var(--text-main);letter-spacing:-.065em;text-wrap:balance;font:600 clamp(2rem,4vw,3.6rem)/1 Zalando Sans Expanded,sans-serif}.contact-copy h2 span{color:var(--text-sub)}.contact-description{max-width:38ch;color:var(--text-sub);margin-top:12px;font-size:.92rem;line-height:1.6}.contact-email{color:var(--text-main);border-bottom:1px solid color-mix(in srgb, var(--text-main) 38%, transparent);align-items:center;gap:12px;padding:12px 0;text-decoration:none;display:inline-flex}.contact-email>strong{overflow-wrap:anywhere;min-width:0;font:500 clamp(.78rem,1.25vw,1rem) Fira Code,monospace;transition:color .18s}.contact-email>i{font-size:1.15rem;transition:transform .18s}.contact-email:hover>strong{color:var(--text-sub)}.contact-email:hover>i{transform:translate(3px,-3px)}.contact-email:focus-visible{outline:2px solid var(--text-sub);outline-offset:5px}.contact-socials{border-top:1px solid var(--border-color);align-items:center;gap:clamp(14px,2.6vw,30px);margin-top:32px;padding-top:16px;display:flex}.contact-social-label{color:var(--text-sub);letter-spacing:.07em;margin-right:auto;font:500 .62rem Fira Code,monospace}.contact-socials a{color:var(--text-sub);align-items:center;gap:7px;font:500 .76rem Fira Code,monospace;text-decoration:none;transition:color .16s,transform .16s;display:inline-flex}.contact-socials a i{font-size:1rem}.contact-socials a:hover{color:var(--text-main);transform:translateY(-2px)}.contact-socials a:focus-visible{outline:2px solid var(--text-sub);outline-offset:4px}@media (width<=640px){.contact-section{padding:34px 0 22px}.contact-compact{grid-template-columns:1fr;gap:12px}.contact-copy h2{font-size:clamp(2rem,8vw,3.2rem)}.contact-description{margin-top:9px}.contact-email{justify-self:start;max-width:100%}.contact-socials{flex-wrap:wrap;gap:14px 20px;margin-top:24px}.contact-social-label{flex-basis:100%;margin:0}}@media (width<=768px){.scroll-progress-wrapper{display:none}.hamburger{display:block}#nav-links{background:var(--card-bg);border:1px solid var(--border-color);background:color-mix(in srgb, var(--card-bg) 82%, transparent);-webkit-backdrop-filter:blur(12px);opacity:0;visibility:hidden;z-index:1001;border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:2px;width:min(230px,100vw - 32px);height:auto;padding:10px;transition:opacity .18s,transform .18s,visibility .18s;position:fixed;top:74px;right:16px;transform:translateY(-6px);box-shadow:0 12px 32px #0000001f}#nav-links.active{opacity:1;visibility:visible;transform:translateY(0)}nav ul li{margin-left:0}#nav-links a{border-radius:6px;padding:10px 12px;display:block}#nav-links a:hover{background:color-mix(in srgb, var(--text-main) 8%, transparent)}.hero{min-height:470px;padding:56px 18px}.hero h1{font-size:2.8rem}.hero-bio{font-size:.98rem;line-height:1.65}.hero-btns{flex-wrap:nowrap;gap:8px}.btn-primary,.resume-link,.github-link{min-height:46px}.section-heading{flex-direction:column;align-items:flex-start;gap:4px;margin-left:0}.skills{padding:72px 0}.about{grid-template-columns:1fr;gap:26px;padding:38px 0 30px}.about-story{order:1}.about h2{max-width:16ch;font-size:clamp(2rem,8vw,3rem)}.about-portrait{order:2;width:min(100%,320px);margin:0 0 0 12px}.crystal-field{height:390px}.project-card{flex-basis:82vw;min-height:390px}.project-info{min-height:390px;padding:24px}}@media (width<=480px){.crystal-field{height:460px}}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(40px)}.reveal.active{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.hero-btns>a,.hero-btns>a i{transition:none}.hero:not(.active) .hero-btns>a{opacity:1;transform:none}}
