*,*:before,*:after{box-sizing:border-box}html{overflow-x:hidden}body{font-family:Arial,sans-serif;background-color:var(--bg);color:var(--text);line-height:1.6;margin:0;padding:0;overflow-x:hidden}img{display:block;max-width:100%}pre{max-width:100%;overflow-x:auto}.app{min-height:100vh}.app-shell{padding-bottom:2rem}.container{width:min(100%,1000px);margin:0 auto;padding:24px clamp(16px,3vw,24px) 96px}main.container>header{text-align:center;padding:clamp(16px,4vw,24px) 0}main.container>header h1,main.container>h1{margin:0;font-size:clamp(2rem,6vw,3rem);line-height:1.1;text-wrap:balance}main.container>header p,main.container>h1+p{max-width:62ch;margin-top:12px}main.container>header p{margin-left:auto;margin-right:auto}.nav{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--card-bg);border-bottom:1px solid var(--card-border);box-shadow:0 2px 4px var(--shadow)}.nav-link{margin-right:.25rem;text-decoration:none;color:var(--link);font-weight:500;transition:color .2s}.lang-switcher{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem}.lang-switcher__label{font-weight:600;line-height:1.2}.lang-switcher__buttons{display:flex;gap:.5rem;width:100%}.lang-switcher button{background:var(--card-bg);color:var(--text);border:1px solid var(--card-border);padding:6px 10px;border-radius:8px;font-size:.9em;cursor:pointer;transition:background .2s,color .2s;min-height:40px;flex:1 1 0}.lang-switcher button:hover{background:color-mix(in oklab,var(--card-bg),var(--accent) 10%)}.lang-switcher button.active{background:#40e0d0;color:#fff;border-color:#40e0d0}.theme-switcher{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem}.theme-label{font-size:1em;font-weight:700;color:var(--text);line-height:1.2}.theme-switcher__control{display:flex;align-items:center;gap:.5rem;width:100%}.theme-select{min-height:40px;padding:6px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text);width:100%}.theme-current{font-size:.9em;opacity:.8;color:var(--text-muted);white-space:nowrap}.project,.info,.preview{background:var(--card-bg);color:var(--text);box-shadow:0 4px 8px var(--shadow);border:1px solid var(--card-border);border-radius:8px;transition:transform .2s;padding:clamp(16px,3vw,20px);overflow:hidden}.project:hover,.info:hover{transform:translateY(-4px)}.project img,.info img,.preview img{width:100%;height:auto;border-radius:5px}.project h3{margin-top:10px;font-size:1.2em}.info h5{margin-top:10px;font-size:.9em}.projects,.infos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:clamp(16px,3vw,20px)}a{font-size:1.1em}a:link{color:var(--text)}a:hover{color:var(--accent)}p,li,a,pre{overflow-wrap:anywhere}.homelab_preview{width:50%;height:auto;border-radius:5px}footer{text-align:center;margin-top:20px;padding:20px 0;font-size:.9em}.site-header{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--card-bg);border-bottom:1px solid var(--card-border);box-shadow:0 2px 4px var(--shadow)}.site-header .logo{display:flex;align-items:center;gap:.5rem;font-size:1.2rem;font-weight:700;color:var(--text)}.site-header img{width:32px;height:32px;border-radius:6px}.topbar{position:sticky;top:0;z-index:1000;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:color-mix(in oklab,var(--bg),transparent 20%);border-bottom:1px solid var(--card-border)}.topbar__inner{max-width:1120px;margin:0 auto;padding:10px clamp(16px,3vw,24px);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topbar__nav{display:flex;gap:12px;flex-wrap:wrap}.topbar__link{text-decoration:none;font-weight:600;padding:8px 10px;border-radius:8px;color:var(--text);transition:background .2s,color .2s;white-space:nowrap}.topbar__link:hover{background:var(--card-bg);color:var(--accent)}.topbar__link--active{background:var(--card-bg);box-shadow:0 1px 0 var(--card-border) inset}.topbar__tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;margin-left:auto}.animated-bg{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background:radial-gradient(circle,var(--accent) 2px,transparent 2px);background-size:40px 40px;animation:moveBg 20s linear infinite;opacity:.2}@keyframes moveBg{0%{background-position:0 0}to{background-position:100px 100px}}@media(max-width:768px){.container{padding:20px 16px 88px}.projects,.infos{grid-template-columns:1fr}.project:hover,.info:hover{transform:none}.topbar__inner{align-items:stretch;gap:10px}.topbar__nav,.topbar__tools{width:100%}.topbar__tools{margin-left:0}.lang-switcher,.theme-switcher{min-width:0}.theme-current{display:none}.homelab_preview{width:100%}}@media(max-width:560px){.topbar__inner{padding:10px 12px}.topbar__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.topbar__link{text-align:center;padding:10px 12px}.topbar__tools{grid-template-columns:1fr;gap:12px}.lang-switcher,.theme-switcher{width:100%;margin-left:0}.lang-switcher__buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.theme-switcher__control{width:100%}}:where(a,button,select,input,textarea):focus-visible{outline:3px solid color-mix(in oklab,var(--accent) 75%,var(--text));outline-offset:3px}.eyebrow{margin:0 0 .5rem;color:var(--text-muted);font-size:.82rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.portfolio-hero{max-width:900px;margin:0 auto;padding:clamp(3rem,9vw,6rem) 0 clamp(2.5rem,7vw,4.5rem)}.portfolio-hero h1{font-size:clamp(3rem,10vw,6rem)}.portfolio-hero__specialties{max-width:none;color:var(--text);font-size:clamp(1.15rem,3vw,1.55rem);font-weight:700;line-height:1.4;text-wrap:balance}.portfolio-hero__intro{max-width:72ch;font-size:1.08rem}.category-navigation{display:flex;justify-content:center;gap:.75rem;margin-top:2rem;flex-wrap:wrap}.category-navigation a,.project-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.7rem 1rem;border:1px solid color-mix(in oklab,var(--accent),var(--card-border) 45%);border-radius:999px;background:color-mix(in oklab,var(--card-bg),var(--accent) 8%);color:var(--text);font-size:.95rem;font-weight:750;line-height:1.2;text-align:center;text-decoration:none;transition:background .2s,border-color .2s,color .2s,transform .2s}.category-navigation a:hover,.project-link:hover{border-color:var(--accent);background:color-mix(in oklab,var(--card-bg),var(--accent) 18%);color:var(--text);transform:translateY(-1px)}.selected-projects-title{margin:0 0 2rem;font-size:clamp(2rem,5vw,3rem);text-align:center}.project-category{margin:0 0 clamp(4rem,10vw,7rem);scroll-margin-top:11rem}.project-category__header{max-width:720px;margin-bottom:1.5rem}.project-category__header h2{margin-bottom:.4rem;font-size:clamp(1.75rem,4vw,2.4rem)}.project-category__header p{margin:0;color:var(--text-muted);font-size:1.04rem}.project-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:1.25rem}.project-card{display:flex;min-width:0;flex-direction:column;overflow:hidden;border:1px solid var(--card-border);border-radius:14px;background:var(--card-bg);box-shadow:0 8px 28px var(--shadow)}.project-media{width:100%;aspect-ratio:16 / 10;border-radius:0;background:color-mix(in oklab,var(--card-bg),var(--accent) 8%);object-fit:cover}.project-card>.project-media{aspect-ratio:4 / 3;border-bottom:1px solid var(--card-border);object-fit:contain}.project-media--placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.5rem;padding:1.5rem;border-bottom:1px solid var(--card-border);background:linear-gradient(135deg,transparent 0 48%,color-mix(in oklab,var(--accent),transparent 80%) 48% 52%,transparent 52%),color-mix(in oklab,var(--card-bg),var(--accent) 6%);color:var(--text);text-align:center}.project-media--placeholder span{font-size:1.2rem;font-weight:800}.project-media--placeholder small{color:var(--text-muted)}.project-card__body{display:flex;flex:1;align-items:flex-start;flex-direction:column;padding:1.25rem}.project-card h3{margin:0 0 .8rem;font-size:1.3rem;line-height:1.25}.technology-list{display:flex;gap:.45rem;margin:0;padding:0;flex-wrap:wrap;list-style:none}.technology-list li{padding:.28rem .55rem;border:1px solid var(--card-border);border-radius:999px;background:color-mix(in oklab,var(--card-bg),var(--accent) 7%);color:var(--text-muted);font-size:.78rem;font-weight:700;line-height:1.25}.project-card__description{margin:1rem 0}.project-status{margin:0 0 1rem;color:var(--text-muted);font-size:.92rem;font-weight:750}.project-card .project-link{margin-top:auto}.site-footer{border-top:1px solid var(--card-border);padding:2rem 0 0}.site-footer nav{display:flex;justify-content:center;gap:.75rem 1rem;flex-wrap:wrap}.site-footer a{font-size:.95rem;font-weight:700}.site-footer p{color:var(--text-muted)}.case-study{max-width:920px}.case-study__header{max-width:760px;padding:clamp(2.5rem,7vw,4.5rem) 0 2rem;text-align:left}.case-study__header h1{margin:0 0 1rem;font-size:clamp(2.35rem,7vw,4rem)}.case-study__summary{max-width:68ch;margin:1.25rem 0 0;font-size:clamp(1.05rem,2.5vw,1.25rem)}.case-study__hero-media{display:block;width:100%;height:auto;max-height:none;aspect-ratio:auto;border:1px solid var(--card-border);border-radius:14px;box-shadow:0 8px 28px var(--shadow);object-fit:contain}.case-study__hero-video{aspect-ratio:16 / 9;background:#000}.case-study__content{max-width:760px;margin:3rem auto 0}.case-study__section{margin-top:3rem;scroll-margin-top:10rem}.case-study__section h2{margin-bottom:.75rem;font-size:clamp(1.5rem,4vw,2rem)}.case-study__section li+li{margin-top:.35rem}.case-study__section-media{height:auto;margin-top:1.5rem;aspect-ratio:auto;border:1px solid var(--card-border);border-radius:12px;box-shadow:0 8px 28px var(--shadow);object-fit:contain}.case-study__status{padding:1.25rem;border-left:4px solid var(--accent);border-radius:0 10px 10px 0;background:var(--card-bg)}.case-study__status h2{margin-top:0}.case-study__links{display:flex;gap:.75rem;flex-wrap:wrap}.case-study__gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:1rem}.case-study__gallery .project-media{height:100%;border:1px solid var(--card-border);border-radius:10px;object-fit:contain}.case-study__navigation{display:flex;justify-content:space-between;gap:1rem;margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--card-border)}.case-study__navigation a{font-size:.95rem;font-weight:700}.about-page{max-width:1000px}.about-hero{display:grid;align-items:center;grid-template-columns:minmax(0,1fr) minmax(280px,350px);gap:clamp(2rem,6vw,4rem);padding:clamp(2.5rem,7vw,5rem) 0 2.5rem;text-align:left}.about-hero h1{margin:0;font-size:clamp(2.5rem,7vw,4.5rem);line-height:1.05}.about-hero__role{color:var(--text);font-size:clamp(1.1rem,2.6vw,1.4rem);font-weight:750;line-height:1.4}.about-portrait{width:100%;max-width:350px;justify-self:end;border:1px solid var(--card-border);border-radius:16px;box-shadow:0 8px 28px var(--shadow);object-fit:cover}.about-content{max-width:760px}.about-content section{margin-top:2.75rem}.about-content h2{font-size:clamp(1.45rem,4vw,1.9rem)}.contact-details{scroll-margin-top:10rem;padding:1.25rem;border:1px solid var(--card-border);border-radius:12px;background:var(--card-bg)}.contact-details h2{margin-top:0}.contact-details address{font-style:normal}.contact-details p{margin:.65rem 0}@media(max-width:700px){.portfolio-hero{text-align:left}.portfolio-hero p{margin-left:0;margin-right:0}.category-navigation{align-items:stretch;justify-content:flex-start;flex-direction:column}.category-navigation a{width:100%}.project-category{scroll-margin-top:17rem}.about-hero{grid-template-columns:1fr}.about-portrait{grid-row:1;justify-self:start;width:min(100%,330px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.animated-bg{animation:none}}:root{--bg: #ffffff;--text: #213547;--text-muted: #60636b;--card-bg: #ffffff;--card-border: #e5e7eb;--shadow: rgba(0, 0, 0, .1);--link: #1d4ed8;--link-hover: #747bff;--accent: turquoise;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400}[data-theme=dark]{--bg: #242424;--text: rgba(255, 255, 255, .87);--text-muted: #a1a4ab;--card-bg: #1e1e1e;--card-border: #2a2c33;--shadow: rgba(0, 0, 0, .4);--link: #93c5fd;--link-hover: #60a5fa;--accent: turquoise}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--text)}.nav{display:flex;align-items:center;padding:.75rem 1rem;background:var(--card-bg);border-bottom:1px solid var(--card-border);box-shadow:0 2px 4px var(--shadow)}.nav-link{margin-right:1rem;text-decoration:none;color:var(--link);font-weight:500;transition:color .2s}.nav-link:hover{color:var(--link-hover)}.nav-link.active{color:var(--accent);border-bottom:2px solid var(--accent)}.lang-switcher{margin-right:1rem}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}
