.shiny-text{color:#ffffffa3;background:linear-gradient(120deg,#fff0 40%,#fffc,#fff0 60%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;display:inline-block;animation:shine 5s linear infinite}@keyframes shine{0%{background-position:100%}to{background-position:-100%}}.shiny-text.disabled{animation:none}#intro-container{flex:1 1 220px;max-width:700px;min-width:120px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;margin:0;padding:.5rem;text-align:justify;background:#ffffff0d;border-radius:12px}.home-row{display:flex;align-items:flex-start;justify-content:center;gap:.5rem;width:100%;max-width:1200px;margin:48px auto 0;min-height:0;box-sizing:border-box;padding-bottom:0;flex-wrap:wrap;overflow:auto}.profile-img{width:120px;height:160px;object-fit:contain;border-radius:16px;box-shadow:0 2px 8px #0000001f;display:block;margin:0;background:#fff;transition:width .2s,height .2s}@media (max-width: 900px){.home-row{flex-direction:column;align-items:center;gap:1rem;min-height:calc(100vh - 80px);padding-bottom:80px;overflow:auto}#intro-container{max-width:95vw;min-width:100px;width:100%;padding:1rem;margin:0 auto;box-sizing:border-box}.profile-img{width:30vw;height:40vw;min-width:100px;min-height:130px;max-width:160px;max-height:210px;border-radius:14px}.kontaktformular{max-width:98vw;padding:1rem .5rem}}@media (max-width: 600px){.profile-img{width:40vw;height:54vw;min-width:80px;min-height:106px;max-width:120px;max-height:160px;border-radius:12px}#intro-container{max-width:95vw;min-width:100px;width:100%;padding:1rem;margin:0 auto;box-sizing:border-box}.kontaktformular{max-width:98vw;padding:1rem .5rem}}.contact-row{width:100%;display:flex;justify-content:center;margin-top:.5rem}.kontaktformular{width:100%;max-width:500px;background:#ffffff12;border-radius:16px;padding:1.5rem 1rem;box-shadow:0 2px 8px #00000014;border:none}.kontaktformular label{display:block;margin-top:1rem;margin-bottom:.3rem;font-weight:500}.kontaktformular input,.kontaktformular textarea{width:100%;padding:.5rem;border-radius:8px;border:1px solid #ccc;margin-bottom:1rem;font-size:1rem;box-sizing:border-box}.kontaktformular button{padding:.7rem 1.5rem;border-radius:8px;border:none;background:#5227ff;color:#fff;font-weight:700;cursor:pointer;font-size:1rem;transition:background .2s}.kontaktformular button:hover{background:#3a1bb3}.home-page{min-height:0;box-sizing:border-box;padding-bottom:0;width:100%;padding-top:120px}.header{position:fixed;top:0;left:50%;transform:translate(-50%);width:100%;max-width:1200px;display:flex;justify-content:space-between;align-items:center;padding:.8rem 2rem;box-shadow:0 2px 5px #0000001a;z-index:1000;flex-wrap:wrap;overflow:hidden;box-sizing:border-box}.header-left img{height:50px}nav ul{list-style:none;display:flex;gap:1.2rem;margin:0;padding:0}nav a{text-decoration:none;color:#fff;font-weight:500}nav a.active{border-bottom:2px solid #0077cc}.language-switch{display:flex;align-items:center;gap:.5rem}.language-switch button{background:none;border:none;font-weight:700;cursor:pointer}.header-profile{flex:1 1 180px;min-width:120px;max-width:350px;box-sizing:border-box}@media (max-width: 900px){.header{flex-direction:column;align-items:center;padding:.5rem}.header-profile{width:100%;max-width:95vw;min-width:100px}}@media (max-width: 700px){.header{flex-direction:column;text-align:center;padding:1rem}nav ul{flex-wrap:wrap;justify-content:center;gap:.8rem}.language-switch{margin-top:.5rem}}.chroma-grid{position:relative;width:100%;height:100%;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;justify-content:center;gap:.75rem;max-width:1200px;margin:0 auto;padding:1rem;box-sizing:border-box;--x: 50%;--y: 50%;--r: 220px}@media (max-width: 900px){.chroma-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr}}@media (max-width: 600px){.chroma-grid{grid-template-columns:1fr;grid-auto-rows:1fr}}.chroma-card{position:relative;min-height:320px;height:100%;display:flex;flex-direction:column;justify-content:flex-start;width:320px;border-radius:20px;overflow:hidden;border:1px solid #333;transition:border-color .3s ease;background:var(--card-gradient);--mouse-x: 50%;--mouse-y: 50%;--spotlight-color: rgba(255, 255, 255, .3)}.chroma-card:hover{border-color:var(--card-border)}.chroma-card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--mouse-x) var(--mouse-y),var(--spotlight-color),transparent 70%);pointer-events:none;opacity:0;transition:opacity .5s ease;z-index:2}.chroma-card:hover:before{opacity:1}.chroma-img-wrapper{position:relative;z-index:1;flex:1;padding:5px;box-sizing:border-box;background:transparent;display:flex;align-items:center;justify-content:center;height:auto;min-height:120px;max-height:320px;transition:background .3s ease;overflow:hidden}.chroma-img-wrapper img{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:cover;border-radius:32px;box-shadow:0 2px 16px #0000001a;display:block;background:transparent}.chroma-info{position:relative;z-index:1;padding:.75rem 1rem 2.5rem;color:#fff;font-family:system-ui,sans-serif;display:flex;flex-direction:column;justify-content:flex-start;min-height:80px}.chroma-info .name{font-size:1.1rem;font-weight:600;margin-bottom:.1rem;margin-top:.2rem}.chroma-info .role{font-size:.95rem;color:#ccc;margin-top:-.2rem;margin-bottom:.2rem;order:2}.chroma-info .handle{position:absolute;right:24px;bottom:18px;color:#aaa;font-size:.95rem;margin:0;order:3}.chroma-info .location{color:#aaa;font-size:.95rem;margin-top:.2rem;order:4}.chroma-overlay{position:absolute;inset:0;pointer-events:none;z-index:3;backdrop-filter:grayscale(1) brightness(.78);-webkit-backdrop-filter:grayscale(1) brightness(.78);background:#0000;mask-image:radial-gradient(circle var(--r) at var(--x) var(--y),transparent 0%,transparent 15%,rgba(0,0,0,.1) 30%,rgba(0,0,0,.22) 45%,rgba(0,0,0,.35) 60%,rgba(0,0,0,.5) 75%,rgba(0,0,0,.68) 88%,white 100%);-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y),transparent 0%,transparent 15%,rgba(0,0,0,.1) 30%,rgba(0,0,0,.22) 45%,rgba(0,0,0,.35) 60%,rgba(0,0,0,.5) 75%,rgba(0,0,0,.68) 88%,white 100%)}.chroma-fade{position:absolute;inset:0;pointer-events:none;z-index:4;backdrop-filter:grayscale(1) brightness(.78);-webkit-backdrop-filter:grayscale(1) brightness(.78);background:#0000;mask-image:radial-gradient(circle var(--r) at var(--x) var(--y),white 0%,white 15%,rgba(255,255,255,.9) 30%,rgba(255,255,255,.78) 45%,rgba(255,255,255,.65) 60%,rgba(255,255,255,.5) 75%,rgba(255,255,255,.32) 88%,transparent 100%);-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y),white 0%,white 15%,rgba(255,255,255,.9) 30%,rgba(255,255,255,.78) 45%,rgba(255,255,255,.65) 60%,rgba(255,255,255,.5) 75%,rgba(255,255,255,.32) 88%,transparent 100%);opacity:1;transition:opacity .25s ease}.certificates-page{max-width:1200px;margin-top:130px;padding:32px 16px}.certificates-title{text-align:center;font-size:2rem;font-weight:700;margin-bottom:32px}.certificates-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px}@media (max-width: 1100px){.certificates-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 800px){.certificates-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 500px){.certificates-grid{grid-template-columns:1fr}}.certificate-card{background:#1e2026d9;border-radius:18px;box-shadow:0 2px 12px #00000012;padding:18px 18px 12px;display:flex;flex-direction:column;align-items:center;min-height:320px;border:1px solid #222}.certificate-image{width:100%;max-width:220px;height:155px;object-fit:cover;border-radius:14px;margin-bottom:18px;background:#f3f3f3}@media (max-width: 500px){.certificate-image{max-width:100%;height:auto;aspect-ratio:1.41 / 1}}.certificate-title{font-size:1.05rem;font-weight:600;margin-bottom:8px;text-align:center;color:#fff}.certificate-link{color:#2563eb;font-size:.98rem;text-decoration:underline;margin-top:auto;text-align:center}.certificate-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.certificate-modal{position:relative;background:#222;padding:32px 32px 24px;border-radius:18px;box-shadow:0 4px 32px #00000040;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center}.certificate-modal-image{max-width:700px;width:100%;height:auto;border-radius:12px;box-shadow:0 2px 12px #00000026}.certificate-modal-close{position:absolute;top:16px;right:24px;background:transparent;border:none;color:#fff;font-size:2.2rem;cursor:pointer;line-height:1}@media (max-width: 800px){.certificate-modal-image{max-width:95vw}.certificate-modal{padding:12vw 2vw 6vw}}.projects-page{margin-top:130px;max-width:1200px;padding:32px 16px}.projects-title{text-align:center;font-size:2rem;font-weight:700;margin-bottom:32px}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}@media (max-width: 900px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.projects-grid{grid-template-columns:1fr}}.project-card{background:#1e2026d9;border-radius:18px;box-shadow:0 2px 12px #00000012;padding:18px 18px 12px;display:flex;flex-direction:column;align-items:center;min-height:320px;border:1px solid #222}.project-image{width:100%;max-width:320px;height:180px;object-fit:cover;border-radius:14px;margin-bottom:18px;background:#f3f3f3}.project-title{font-size:1.15rem;font-weight:600;margin-bottom:8px;text-align:center;color:#fff}.project-desc{font-size:1rem;color:#fff;margin-bottom:12px;text-align:center}.project-link{color:#2563eb;font-size:.98rem;text-decoration:underline;margin-top:auto;text-align:center}.project-modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000}.project-modal-popup{background:#1e2026eb;border-radius:18px;box-shadow:0 4px 32px #0000002e;padding:32px 24px 24px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;position:relative}.project-modal-image{max-width:600px;max-height:60vh;border-radius:14px;margin-bottom:18px}.project-modal-close{position:absolute;top:18px;right:18px;background:none;border:none;font-size:2rem;cursor:pointer}.project-modal-title{font-size:1.3rem;font-weight:600;margin-bottom:8px;text-align:center;color:#fff}.project-modal-desc{font-size:1rem;color:#fff;margin-bottom:12px;text-align:center}.project-modal-link{color:#2563eb;font-size:1rem;text-decoration:underline;margin-top:8px;text-align:center}.logoloop{position:relative;overflow-x:hidden;--logoloop-gap: 32px;--logoloop-logoHeight: 28px;--logoloop-fadeColorAuto: #ffffff}.logoloop--scale-hover{padding-top:calc(var(--logoloop-logoHeight) * .1);padding-bottom:calc(var(--logoloop-logoHeight) * .1)}@media (prefers-color-scheme: dark){.logoloop{--logoloop-fadeColorAuto: #0b0b0b}}.logoloop__track{display:flex;width:max-content;will-change:transform;-webkit-user-select:none;user-select:none}.logoloop__list{display:flex;align-items:center;list-style:none;padding:0;margin:0}.logoloop__item{flex:0 0 auto;margin-right:var(--logoloop-gap);font-size:var(--logoloop-logoHeight);line-height:1}.logoloop__item:last-child{margin-right:var(--logoloop-gap)}.logoloop__node{display:inline-flex;align-items:center}.logoloop__item img{height:var(--logoloop-logoHeight);width:auto;display:block;object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop--scale-hover .logoloop__item{overflow:visible}.logoloop--scale-hover .logoloop__item:hover img,.logoloop--scale-hover .logoloop__item:hover .logoloop__node{transform:scale(1.2);transform-origin:center center}.logoloop--scale-hover .logoloop__node{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop__link{display:inline-flex;align-items:center;text-decoration:none;border-radius:4px;transition:opacity .2s ease}.logoloop__link:hover{opacity:.8}.logoloop__link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.logoloop--fade:before,.logoloop--fade:after{content:"";position:absolute;top:0;bottom:0;width:clamp(24px,8%,120px);pointer-events:none;z-index:1}.logoloop--fade:before{left:0;background:linear-gradient(to right,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--fade:after{right:0;background:linear-gradient(to left,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}@media (prefers-reduced-motion: reduce){.logoloop__track{transform:translateZ(0)!important}.logoloop__item img,.logoloop__node{transition:none!important}}.skills-page{padding-top:130px}:root{--electric-border-color: #00f}.electric-border{--electric-light-color: var(--electric-border-color, #00f);--eb-border-width: 2px;position:relative;border-radius:inherit;overflow:visible;isolation:isolate}.eb-svg{position:fixed;left:-10000px;top:-10000px;width:10px;height:10px;opacity:.001;pointer-events:none}.eb-content{position:relative;border-radius:inherit;z-index:1}.eb-layers{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2}.eb-stroke,.eb-glow-1,.eb-glow-2,.eb-overlay-1,.eb-overlay-2,.eb-background-glow{position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-sizing:border-box}.eb-stroke{border:var(--eb-border-width) solid var(--electric-border-color, #00f)}.eb-glow-1{border:var(--eb-border-width) solid var(--electric-border-color, #00f);opacity:.5;filter:blur(calc(.5px + (var(--eb-border-width) * .25)))}.eb-glow-2{border:var(--eb-border-width) solid var(--electric-light-color);opacity:.5;filter:blur(calc(2px + (var(--eb-border-width) * .5)))}.eb-background-glow{z-index:-1;transform:scale(1.08);filter:blur(32px);opacity:.3;background:linear-gradient(-30deg,var(--electric-light-color),transparent,var(--electric-border-color, #00f))}.footer{display:flex;justify-content:center;align-items:center;width:100%;padding:16px;background:transparent;flex-wrap:wrap;overflow:hidden;box-sizing:border-box}.footer-electric{flex:1 1 180px;min-width:120px;max-width:350px;box-sizing:border-box}@media (max-width: 900px){.footer{flex-direction:column;align-items:center;padding:8px 0}.footer-electric{width:100%;max-width:95vw;min-width:100px}}.liquid-ether-container{position:relative;overflow:hidden;width:100%;height:100%;touch-action:none}#root{width:100%;max-width:100vw;margin:0;padding:0;text-align:center;overflow-x:hidden}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.app{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh;width:100vw}.main{width:100%;display:flex;flex-direction:column;align-items:center;padding:1rem;gap:1.5rem}.container{width:100%;max-width:1200px;display:flex;flex-direction:column;gap:1.5rem}.header-sticky{position:sticky;top:0;z-index:10}@media (max-width: 768px){.main{padding:.75rem}.container{max-width:100%}}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;max-width:100vw;overflow-x:hidden}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
