:root{--color-background: #000d16;--color-text: #edf3ff;--color-heading: #f1f6ff;--color-muted: #b8c8de;--color-accent: #35c7ff;--color-accent-soft: #8cb8e6;--color-surface: rgba(255, 255, 255, .03);--color-border: rgba(255, 255, 255, .1);--color-glow: rgba(0, 207, 255, .3);--site-max-width: 120rem;--section-inline-padding: clamp(1.5rem, 5vw, 3rem);--section-block-padding: clamp(4.5rem, 9vw, 8rem);--section-block-padding-compact: clamp(2.5rem, 5vw, 4rem);--section-gap: clamp(2.5rem, 5vw, 5rem);--section-gap-loose: clamp(3.5rem, 7vw, 7rem);--zone-gap: clamp(1.5rem, 3vw, 2.5rem);--copy-max-width: 42rem}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0}html{scroll-behavior:smooth;scrollbar-color:#8cb8e6 rgba(255,255,255,.03)}body,h1,h2,p{margin:0}body{cursor:default}img{display:block;max-width:100%}a{text-decoration:none}@media(pointer:coarse){a,button,[role=button],input,textarea,select,summary{-webkit-tap-highlight-color:transparent}a,button,[role=button],summary{-webkit-user-select:none;user-select:none}}::-webkit-scrollbar{width:.8rem;height:.8rem}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:#ffffff08}::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:50%;background:linear-gradient(#8cb8e6,#35c7ff) padding-box}::-webkit-scrollbar-thumb:hover{background:linear-gradient(#35c7ff,#8cb8e6) padding-box}@font-face{font-family:Sora;src:url(/assets/fonts/Sora/Sora-VariableFont_wght.ttf) format("truetype");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/assets/fonts/Space_Grotesk/SpaceGrotesk-VariableFont_wght.ttf) format("truetype");font-weight:300 700;font-style:normal;font-display:swap}html{font-size:1rem}body{font-family:Sora,sans-serif;line-height:1.5;color:#edf3ff}h1,h2{color:#f1f6ff;font-weight:600}p{color:#b8c8de}:where(p,li,blockquote,.contact-stage__consent-text,.hero-description__text,[class*=__copy],[class*=__context-copy],[class*=__description-value],[class*=__paragraph],[class*=__quote-text],[class*=__stack-value],[class*=__support]):not([class*=__headline],[class*=__title],[class*=__label],[class*=__eyebrow]){-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:6 3 3;overflow-wrap:break-word;word-break:normal}body{background:linear-gradient(#00000029,#00000029),#000d16}app-root,app-landing,app-hero,app-hero-description,app-hero-identity,app-hero-portrait,app-about,app-about-text-block,app-tech-stack,app-projects,app-case-studies,app-references,app-contact,app-desktop-footer,app-mobile-footer{display:block;width:100%}app-root{min-height:100%}.section{display:flex;width:100%}.section:not(.section--projects):not(.section--about):not(.section--contact)>*{width:100%;max-width:120rem;margin-inline:auto;overflow-x:clip}.section__inner{display:flex;width:100%;max-width:120rem;margin-inline:auto;padding-inline:clamp(1.5rem,5vw,3rem)}@media(max-width:1024px)and (orientation:portrait){html,body{overflow-x:clip}}.interactive-icon-hover{position:relative;display:flex;align-items:center;justify-content:center;transition:transform .18s ease,opacity .18s ease}@media(hover:hover)and (pointer:fine){.interactive-icon-hover:hover .interactive-icon-hover__label{opacity:1}.interactive-icon-hover:hover .interactive-icon-hover__icon{opacity:1;filter:brightness(0) saturate(100%) invert(77%) sepia(59%) saturate(2402%) hue-rotate(160deg) brightness(101%) contrast(102%);transform:translateY(-.28rem)}.interactive-icon-hover:hover .interactive-icon-hover__letter{opacity:1;transform:translateY(0)}}.interactive-icon-hover__icon{opacity:.94;filter:brightness(0) saturate(100%) invert(94%) sepia(17%) saturate(297%) hue-rotate(182deg) brightness(104%) contrast(101%);transition:transform .18s ease,opacity .18s ease}.interactive-icon-hover__label{position:absolute;left:50%;display:inline-flex;gap:.02em;color:#35c7ff;font-family:Space Grotesk,sans-serif;font-size:.9rem;font-weight:500;letter-spacing:.1em;line-height:1;opacity:0;pointer-events:none;transform:translate(-50%);white-space:pre}.interactive-icon-hover__letter{display:inline-block;opacity:0;transform:translateY(.3rem);transition:opacity .22s ease,transform .26s ease}.interactive-icon-hover__letter:nth-child(1){transition-delay:0ms}.interactive-icon-hover__letter:nth-child(2){transition-delay:18ms}.interactive-icon-hover__letter:nth-child(3){transition-delay:36ms}.interactive-icon-hover__letter:nth-child(4){transition-delay:54ms}.interactive-icon-hover__letter:nth-child(5){transition-delay:72ms}.interactive-icon-hover__letter:nth-child(6){transition-delay:90ms}.interactive-icon-hover__letter:nth-child(7){transition-delay:108ms}.interactive-icon-hover__letter:nth-child(8){transition-delay:126ms}.interactive-icon-hover__letter:nth-child(9){transition-delay:144ms}.interactive-icon-hover__letter:nth-child(10){transition-delay:162ms}.interactive-icon-hover__letter:nth-child(11){transition-delay:.18s}.interactive-icon-hover__letter:nth-child(12){transition-delay:198ms}.interactive-icon-hover__letter:nth-child(13){transition-delay:216ms}.interactive-icon-hover__letter:nth-child(14){transition-delay:234ms}.interactive-icon-hover__letter:nth-child(15){transition-delay:252ms}.stage-shell{display:flex;flex-direction:column;gap:clamp(2.5rem,5vw,5rem);min-height:var(--stage-min-height, 72svh);padding-block:clamp(4.5rem,9vw,8rem);justify-content:space-between}.stage-shell--compact{min-height:auto;padding-block:clamp(2.5rem,5vw,4rem)}.stage-shell__header{display:flex;flex-direction:column;gap:1.25rem;max-width:min(48rem,100%)}.stage-shell__eyebrow{font-family:Space Grotesk,sans-serif;color:#35c7ff;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase}.stage-shell__title{max-width:15ch;font-size:clamp(2.25rem,6vw,5rem);line-height:1.02}.stage-shell__lead{max-width:42rem;font-size:clamp(1rem,1.6vw,1.2rem)}.stage-shell__body{display:flex;flex-direction:row;gap:clamp(2.5rem,5vw,5rem);flex:1;align-items:stretch}.stage-shell__column{display:flex;flex-direction:column;gap:.9rem;flex:1;justify-content:flex-start;min-height:clamp(16rem,28vh,24rem);min-width:0}.stage-shell__label{color:#f1f6ff;font-size:.95rem;text-transform:uppercase}.stage-shell__copy{max-width:min(34rem,100%);font-size:1rem}@media(max-width:1368px)and (orientation:landscape){.stage-shell{min-height:var(--stage-min-height, 68svh);gap:clamp(2rem,4vw,3.5rem);padding-block:clamp(3.8rem,7vw,6rem)}.stage-shell__header{gap:1rem}.stage-shell__title{font-size:clamp(2rem,5vw,4rem)}.stage-shell__lead{font-size:clamp(.92rem,1.4vw,1.05rem)}.stage-shell__body{gap:clamp(2rem,4vw,3.5rem)}.stage-shell__copy{font-size:.92rem;line-height:1.6}}.tech-stage__stack{display:flex;align-items:center;position:relative;width:100%}.tech-stage__stack .tech-stage__item{--tech-stack-float-delay: 0s;--tech-stack-offset-x: 0rem;position:relative;display:flex;align-items:center;justify-content:center;transition:transform .18s ease,opacity .18s ease}@media(hover:hover)and (pointer:fine){.tech-stage__stack .tech-stage__item:hover .tech-stage__label{opacity:1}.tech-stage__stack .tech-stage__item:hover .tech-stage__icon{opacity:1;transform:translateY(-.28rem)}.tech-stage__stack .tech-stage__item:hover .tech-stage__label-letter{opacity:1;transform:translateY(0)}}.tech-stage__stack .tech-stage__item--core,.tech-stage__stack .tech-stage__item--main{animation:tech-stack-float 6s ease-in-out infinite var(--tech-stack-float-delay)}.tech-stage__stack .tech-stage__item--main .tech-stage__icon{width:clamp(3.4rem,5.3vw,4.6rem);height:clamp(3.4rem,5.3vw,4.6rem);opacity:.82}.tech-stage__stack .tech-stage__item--extended{--tech-stack-extended-icon-opacity: .78;--tech-stack-extended-scale: 1;--tech-stack-extended-shift-x: 0rem;--tech-stack-extended-shift-y: 0rem;transform:translate(var(--tech-stack-extended-shift-x)) translateY(var(--tech-stack-extended-shift-y)) scale(var(--tech-stack-extended-scale))}.tech-stage__stack .tech-stage__item--extended .tech-stage__icon--extended{opacity:var(--tech-stack-extended-icon-opacity)}.tech-stage__stack .tech-stage__item:is(.tech-stage__item--core,.tech-stage__item--main,.tech-stage__item--extended) .tech-stage__label{top:calc(100% + .3rem);bottom:auto}@media(hover:hover)and (pointer:fine){.tech-stage__stack .tech-stage__item:hover .tech-stage__icon--git{opacity:1}.tech-stage__stack .tech-stage__item:hover .tech-stage__icon--threejs{transform:translateY(-.28rem) scale(1.16)}}.tech-stage__stack .tech-stage__item--core:nth-child(1){--tech-stack-offset-x: .15rem}.tech-stage__stack .tech-stage__item--core:nth-child(2){--tech-stack-offset-x: .35rem;--tech-stack-float-delay: -3s}.tech-stage__stack .tech-stage__item--core:nth-child(3){--tech-stack-float-delay: -1.5s}.tech-stage__stack .tech-stage__item--main:nth-child(1){--tech-stack-offset-x: .2rem}.tech-stage__stack .tech-stage__item--main:nth-child(2){--tech-stack-offset-x: .45rem;--tech-stack-float-delay: -3s}.tech-stage__stack .tech-stage__item--main:nth-child(3){--tech-stack-float-delay: -1.5s}.tech-stage__stack .tech-stage__item--extended:nth-child(1){--tech-stack-extended-shift-x: .25rem;--tech-stack-extended-shift-y: 10.4rem;--tech-stack-extended-scale: 1.03;--tech-stack-extended-icon-opacity: .9}.tech-stage__stack .tech-stage__item--extended:nth-child(2){--tech-stack-extended-shift-x: -.15rem;--tech-stack-extended-shift-y: -1.7rem;--tech-stack-extended-scale: .98;--tech-stack-extended-icon-opacity: .66}.tech-stage__stack .tech-stage__item--extended:nth-child(3){--tech-stack-extended-shift-x: .2rem;--tech-stack-extended-shift-y: 8.3rem;--tech-stack-extended-scale: 1.01;--tech-stack-extended-icon-opacity: .82}.tech-stage__stack .tech-stage__item--extended:nth-child(4){--tech-stack-extended-shift-x: -.2rem;--tech-stack-extended-shift-y: -2.8rem;--tech-stack-extended-scale: .96;--tech-stack-extended-icon-opacity: .54}.tech-stage__stack .tech-stage__item--extended:nth-child(4) .tech-stage__icon--git{opacity:.82}.tech-stage__stack .tech-stage__item--extended:nth-child(5){--tech-stack-extended-shift-x: .15rem;--tech-stack-extended-shift-y: 10.9rem;--tech-stack-extended-scale: 1.04;--tech-stack-extended-icon-opacity: .94}.tech-stage__stack .tech-stage__item--extended:nth-child(6){--tech-stack-extended-shift-x: -.25rem;--tech-stack-extended-shift-y: -1.2rem;--tech-stack-extended-scale: .97;--tech-stack-extended-icon-opacity: .72}.tech-stage__stack .tech-stage__item--extended:nth-child(7){--tech-stack-extended-shift-x: .1rem;--tech-stack-extended-shift-y: 5.9rem;--tech-stack-extended-scale: .96;--tech-stack-extended-icon-opacity: .78}.tech-stage__stack .tech-stage__item--extended:nth-child(8){--tech-stack-extended-shift-x: -.15rem;--tech-stack-extended-shift-y: .2rem;--tech-stack-extended-scale: .95;--tech-stack-extended-icon-opacity: .86}.tech-stage__stack .tech-stage__item--extended:nth-child(9){--tech-stack-extended-shift-x: .2rem;--tech-stack-extended-shift-y: 10.1rem;--tech-stack-extended-scale: .94;--tech-stack-extended-icon-opacity: .76}.tech-stage__stack .tech-stage__icon{display:block;width:clamp(4.6rem,7vw,6.2rem);height:clamp(4.6rem,7vw,6.2rem);object-fit:contain;opacity:.94;filter:brightness(0) saturate(100%) invert(94%) sepia(17%) saturate(297%) hue-rotate(182deg) brightness(104%) contrast(101%);transition:transform .18s ease,opacity .18s ease}.tech-stage__stack .tech-stage__icon--extended{width:clamp(2rem,3.2vw,2.65rem);height:clamp(2rem,3.2vw,2.65rem);opacity:.78}.tech-stage__stack .tech-stage__icon--threejs{transform:scale(1.16)}.tech-stage__stack .tech-stage__label{bottom:calc(100% + .9rem);position:absolute;left:50%;display:inline-flex;gap:.02em;color:#35c7ff;font-family:Space Grotesk,sans-serif;font-size:.9rem;font-weight:500;letter-spacing:.1em;line-height:1;opacity:0;pointer-events:none;transform:translate(-50%);white-space:pre}.tech-stage__stack .tech-stage__label--extended{font-size:.8rem}.tech-stage__stack .tech-stage__label-letter{display:inline-block;opacity:0;transform:translateY(.3rem);transition:opacity .22s ease,transform .26s ease}.tech-stage__stack .tech-stage__label-letter:nth-child(1){transition-delay:0ms}.tech-stage__stack .tech-stage__label-letter:nth-child(2){transition-delay:18ms}.tech-stage__stack .tech-stage__label-letter:nth-child(3){transition-delay:36ms}.tech-stage__stack .tech-stage__label-letter:nth-child(4){transition-delay:54ms}.tech-stage__stack .tech-stage__label-letter:nth-child(5){transition-delay:72ms}.tech-stage__stack .tech-stage__label-letter:nth-child(6){transition-delay:90ms}.tech-stage__stack .tech-stage__label-letter:nth-child(7){transition-delay:108ms}.tech-stage__stack .tech-stage__label-letter:nth-child(8){transition-delay:126ms}.tech-stage__stack .tech-stage__label-letter:nth-child(9){transition-delay:144ms}.tech-stage__stack .tech-stage__label-letter:nth-child(10){transition-delay:162ms}.tech-stage__stack .tech-stage__label-letter:nth-child(11){transition-delay:.18s}.tech-stage__stack .tech-stage__label-letter:nth-child(12){transition-delay:198ms}.tech-stage__stack .tech-stage__label-letter:nth-child(13){transition-delay:216ms}.tech-stage__stack .tech-stage__label-letter:nth-child(14){transition-delay:234ms}.tech-stage__stack .tech-stage__label-letter:nth-child(15){transition-delay:252ms}.tech-stage__stack .tech-stage__group-label{position:absolute;display:block;top:var(--tech-stage-group-label-top);bottom:var(--tech-stage-group-label-bottom, auto);right:var(--tech-stage-group-label-right, auto);left:var(--tech-stage-group-label-left, auto);width:var(--tech-stage-group-label-width, auto);font-family:Space Grotesk,sans-serif;font-size:2rem;font-weight:500;color:#35c7ff;letter-spacing:.2em;opacity:0;pointer-events:none;transition:opacity .6s ease,transform 1s cubic-bezier(.22,1,.36,1);transform:translateY(var(--tech-stage-group-label-shift, 0));text-align:left;white-space:nowrap}.tech-stage__stack .tech-stage__group-label--is-visible{opacity:1;transform:translateY(0)}@keyframes tech-stack-float{0%{transform:translate(var(--tech-stack-offset-x)) translateY(0)}50%{transform:translate(var(--tech-stack-offset-x)) translateY(-.45rem)}to{transform:translate(var(--tech-stack-offset-x)) translateY(0)}}@media(max-width:1368px)and (orientation:landscape){.tech-stage__stack .tech-stage__item--extended:nth-child(1){--tech-stack-extended-shift-x: .1rem;--tech-stack-extended-shift-y: 7.1rem}.tech-stage__stack .tech-stage__item--extended:nth-child(2){--tech-stack-extended-shift-x: -.1rem;--tech-stack-extended-shift-y: .4rem}.tech-stage__stack .tech-stage__item--extended:nth-child(3){--tech-stack-extended-shift-x: .05rem;--tech-stack-extended-shift-y: 5.2rem}.tech-stage__stack .tech-stage__item--extended:nth-child(4){--tech-stack-extended-shift-x: -.15rem;--tech-stack-extended-shift-y: -.5rem}.tech-stage__stack .tech-stage__item--extended:nth-child(5){--tech-stack-extended-shift-x: .05rem;--tech-stack-extended-shift-y: 7.4rem}.tech-stage__stack .tech-stage__item--extended:nth-child(6){--tech-stack-extended-shift-x: -.1rem;--tech-stack-extended-shift-y: .8rem}.tech-stage__stack .tech-stage__item--extended:nth-child(7){--tech-stack-extended-shift-x: .05rem;--tech-stack-extended-shift-y: 4.6rem}.tech-stage__stack .tech-stage__item--extended:nth-child(8){--tech-stack-extended-shift-x: -.05rem;--tech-stack-extended-shift-y: 2.1rem}.tech-stage__stack .tech-stage__item--extended:nth-child(9){--tech-stack-extended-shift-x: .1rem;--tech-stack-extended-shift-y: 6.8rem}}@media(max-width:1024px)and (orientation:portrait){.tech-stage__stack .tech-stage__label{opacity:1}.tech-stage__stack .tech-stage__label-letter{opacity:1;transform:translateY(0)}}@media(max-width:760px)and (orientation:portrait){.tech-stage__stack--lang-de .tech-stage__group-label--extended{white-space:normal}.tech-stage__stack--lang-de .tech-stage__group-label--extended .tech-stage__group-label-space{display:block;height:0}}@media(orientation:landscape)and (max-width:1024px)and (max-height:700px){html,body{overflow:hidden;overscroll-behavior:none;touch-action:none}}.contact-stage-toast{position:fixed;z-index:10000;top:50dvh;left:50vw;width:min(100vw - 2rem,26rem);padding:1rem 1.25rem;border:1px solid rgba(140,184,230,.34);border-radius:.45rem;background:#0b0f16f0;box-shadow:0 1.25rem 3rem #00000047,inset 0 0 0 1px #ffffff0a;color:#f1f6ff;font-size:.98rem;line-height:1.45;pointer-events:none;text-align:center;opacity:0;transform:translate(-50%,calc(-50% + .85rem)) scale(.96);transition:opacity .22s ease,transform .26s cubic-bezier(.2,.8,.2,1)}.contact-stage-toast--visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.contact-stage-toast--error{border-color:#8cb8e68f;color:#8cb8e6f5}
