@font-face{font-family:"Jost";font-weight:300;font-style:normal;font-display:swap;src:url("../fonts/jost-latin-300-normal.woff2") format("woff2")}
@font-face{font-family:"Jost";font-weight:400;font-style:normal;font-display:swap;src:url("../fonts/jost-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Jost";font-weight:500;font-style:normal;font-display:swap;src:url("../fonts/jost-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Jost";font-weight:300;font-style:italic;font-display:swap;src:url("../fonts/jost-latin-300-italic.woff2") format("woff2")}
:root{
  --font-heading:'Jost','Futura','Century Gothic',system-ui,sans-serif;
  --font-body:'Jost','Futura','Century Gothic',system-ui,sans-serif;
  --bg:#262626; --text:#f2f2f2; --text-muted:#a6a6a6; --line:#3d3d3d; --img-filter:invert(1);
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--bg:#262626;--text:#f2f2f2;--text-muted:#a6a6a6;--line:#3d3d3d;--img-filter:invert(1)}
}
:root[data-theme="dark"]{--bg:#262626;--text:#f2f2f2;--text-muted:#a6a6a6;--line:#3d3d3d;--img-filter:invert(1)}
*,*::before,*::after{box-sizing:inherit}
html{font-size:100%;scroll-behavior:smooth;scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);font-family:var(--font-body);font-weight:400;font-size:1.125rem;line-height:1.65;color:var(--text);-webkit-font-smoothing:antialiased}

h1,h2,h3{font-family:var(--font-heading);line-height:1.1;margin:0 0 .5em;text-wrap:balance}
h1{font-size:clamp(2.75rem,6.5vw,5.5rem);font-weight:300;letter-spacing:-.025em;line-height:1.02}
h2{font-size:clamp(2rem,4vw,3rem);font-weight:300;letter-spacing:-.015em;line-height:1.1}
h3{font-size:clamp(1.375rem,2.2vw,1.75rem);font-weight:400;letter-spacing:-.005em;line-height:1.25}
p{margin:0 0 1.2em;max-width:65ch}
.lead{font-size:clamp(1.25rem,2vw,1.5rem);font-weight:300;line-height:1.5;max-width:48ch;color:var(--text-muted)}
blockquote{font-style:italic;font-weight:300;font-size:clamp(1.5rem,3vw,2.25rem);line-height:1.3;letter-spacing:-.01em;margin:0;padding-left:1em;border-left:1px solid var(--line);max-width:32ch}
small,figcaption,.meta{font-size:.875rem;line-height:1.5;letter-spacing:.01em;color:var(--text-muted)}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{text-decoration-color:var(--text-muted)}
:focus-visible{outline:1px solid var(--text);outline-offset:4px}
.button{display:inline-block;font-family:var(--font-body);font-size:1rem;font-weight:500;padding:.85em 1.6em;border:1px solid var(--text);color:var(--text);background:transparent;text-decoration:none;transition:background .2s,color .2s}
.button:hover{background:var(--text);color:var(--bg)}

.wrap{width:min(1180px,100% - 3rem);margin-inline:auto}

/* Kopf */
.top{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding-block:1.1rem;padding-top:calc(1.1rem + env(safe-area-inset-top,0px));margin-top:calc(-1 * env(safe-area-inset-top,0px));border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
html{scroll-padding-top:calc(4.5rem + env(safe-area-inset-top,0px))}
.top .mark{font-size:1.125rem;font-weight:500;letter-spacing:.01em;text-decoration:none}
nav a{font-family:var(--font-body);font-size:.9375rem;font-weight:400;letter-spacing:.03em;color:var(--text);text-decoration:none}
.top nav{display:flex;gap:1.75rem}
.top nav a:hover{text-decoration:underline}

/* Hero */
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:4rem;padding-block:clamp(3rem,9vw,7rem) clamp(3rem,7vw,5rem);align-items:end}
.hero h1{font-size:clamp(3.2rem,9vw,7rem);font-weight:300;letter-spacing:-.025em;line-height:.98;margin-bottom:2rem}
.hero h1 span{display:block;overflow:hidden}
.hero h1 span i{display:block;font-style:normal}
.js .hero h1 span i{transform:translateY(105%);animation:rise 2.2s cubic-bezier(.2,.7,.1,1) .2s forwards}
.js .hero h1 span:nth-child(2) i{animation-delay:.5s}
.js .hero .lead{opacity:0;animation:fade 2s ease 1.6s forwards}
@keyframes rise{to{transform:none}}
@keyframes fade{to{opacity:1}}

.index{list-style:none;margin:0;padding:0;border-top:1px solid var(--text);counter-reset:none}
.index li{border-bottom:1px solid var(--line)}
.index a{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;text-decoration:none;font-size:.95rem}
.index a span:last-child{color:var(--text-muted);font-size:.875rem;white-space:nowrap}
.index a:hover span:first-child{text-decoration:underline}
.index-label{font-size:.875rem;color:var(--text-muted);margin:0 0 .6rem}

/* Projekte */
.works{padding-block:2rem 4rem}
.work{display:grid;grid-template-columns:7fr 5fr;gap:clamp(2rem,5vw,5rem);align-items:center;padding-block:clamp(3rem,7vw,6rem);border-top:1px solid var(--line)}
.work:nth-child(even){grid-template-columns:5fr 7fr}
.work:nth-child(even) figure{order:2}
.work figure{margin:0;position:relative}
.work img{display:block;width:100%;height:auto;filter:var(--img-filter);mix-blend-mode:screen}
.js .work img{clip-path:inset(0 100% 0 0);transition:clip-path 3s cubic-bezier(.65,0,.2,1)}
.js .work.in img{clip-path:inset(0 0 0 0)}
.js .work > div{opacity:0;transition:opacity 2.4s ease 1s}
.js .work.in > div{opacity:1}
.work .kind{display:block;font-family:var(--font-body);font-size:.9375rem;font-weight:400;color:var(--text-muted);margin-bottom:.4rem;letter-spacing:.02em}
.work .links{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;margin-top:.4rem}
.work .links a{font-size:.95rem;font-weight:500}

/* Über / Kontakt */
.about{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;padding-block:clamp(4rem,8vw,7rem);border-top:1px solid var(--text)}
.about cite{display:block;margin-top:1rem;font:400 .875rem var(--font-body);font-style:normal;color:var(--text-muted)}
.contact{padding-block:clamp(4rem,8vw,7rem);border-top:1px solid var(--line)}
.contact .mail{font-weight:300;letter-spacing:-.015em;font-size:clamp(1.6rem,5vw,3.2rem);text-decoration:none;border-bottom:1px solid var(--text);word-break:break-word}
footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem 2rem;padding-block:2rem;border-top:1px solid var(--line)}
footer nav{display:flex;gap:1.5rem}

@media (max-width:860px){
  .hero,.about{grid-template-columns:1fr;gap:2.5rem}
  .work,.work:nth-child(even){grid-template-columns:1fr;gap:1.75rem}
  .work:nth-child(even) figure{order:0}
}
@media (max-width:600px){
  body{font-size:1.0625rem}
  .top nav a:not(:last-child){display:none}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .hero h1 span i,.js .hero .lead{animation:none;transform:none;opacity:1}
  .js .work img{clip-path:none;transition:none}
  .js .work > div{opacity:1;transition:none}
}

/* Hilfsklassen statt Inline-Styles (wegen strenger CSP) */
.mb-2{margin-bottom:2rem}

/* Bild als Schaltfläche für das Pop-up */
.zoom{all:unset;display:block;width:100%;cursor:zoom-in;position:relative}
.zoom:focus-visible{outline:1px solid var(--text);outline-offset:6px}
.zoom::after{content:attr(data-hint);position:absolute;right:0;bottom:-1.8rem;font-size:.875rem;color:var(--text-muted);opacity:0;transition:opacity .6s ease}
.zoom:hover::after,.zoom:focus-visible::after{opacity:1}
.work .open-pdf,.work .open-gallery{all:unset;cursor:pointer;font-size:.95rem;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
.work .open-pdf:focus-visible,.work .open-gallery:focus-visible{outline:1px solid var(--text);outline-offset:4px}
/* Geräte ohne Maus: Hinweis bei Galerien dauerhaft zeigen */
@media (hover:none){.zoom.has-gallery::after{opacity:1}}

/* Pop-up-Karussell (Bilder und PDF-Seiten) */
body:has(dialog[open]){overflow:hidden}
.lb{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--text);overflow:hidden}
/* abgedunkelte, unscharfe Seite hinter dem Pop-up */
.lb::backdrop{background:rgba(12,12,12,.55);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;transition:opacity .5s ease}
.lb.visible::backdrop{opacity:1}
/* das schwebende Fenster */
.lb-inner{position:absolute;inset:clamp(0px,3vmin,2.5rem);box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;padding:calc(1rem + env(safe-area-inset-top,0px)) 1.5rem calc(1rem + env(safe-area-inset-bottom,0px));background:#1c1c1c;border:1px solid var(--line);box-shadow:0 2rem 6rem rgba(0,0,0,.55);opacity:0;transform:translateY(1rem) scale(.985);transition:opacity .5s ease,transform .6s cubic-bezier(.2,.7,.1,1)}
.lb.visible .lb-inner{opacity:1;transform:none}
.lb-bar{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.lb button{all:unset;cursor:pointer;font-family:var(--font-body);font-size:.9375rem;letter-spacing:.03em;padding:.5rem 0}
.lb button:focus-visible,.lb a:focus-visible{outline:1px solid var(--text);outline-offset:4px}
.lb-stage{position:relative;min-height:0;min-width:0;padding-block:1rem}
.lb-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior:contain;scrollbar-width:none;outline:0}
.lb-track::-webkit-scrollbar{display:none}
.lb-track.instant{scroll-behavior:auto}
.lb-slide{flex:0 0 100%;min-width:0;height:100%;margin:0;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;scroll-snap-stop:always}
.lb-slide img{display:block;max-width:100%;max-height:100%;object-fit:contain;opacity:0;transform:scale(.98);transition:opacity .6s ease,transform .8s cubic-bezier(.2,.7,.1,1)}
.lb-slide img.invert{filter:var(--img-filter);mix-blend-mode:screen}
.lb-slide img.page{background:#fff;box-shadow:0 0 0 1px var(--line)}
.lb-slide img.show{opacity:1;transform:none}
.lb .lb-nav{position:absolute;top:50%;transform:translateY(-50%);font-size:1.75rem!important;font-weight:300;padding:1rem!important;color:var(--text-muted)}
.lb .lb-nav:hover{color:var(--text)}
.lb .lb-nav:disabled{opacity:.25;cursor:default}
.lb .lb-prev{left:-.75rem}.lb .lb-next{right:-.75rem}
.lb.single .lb-nav{display:none}
.lb-foot{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;flex-wrap:wrap}
.lb-foot h3{margin:0;font-size:1.125rem;font-weight:400}
.lb-caption{margin:.2rem 0 0}
.lb-caption:empty{display:none}
.lb-foot a{font-size:.95rem;font-weight:500}
.lb-foot a[hidden]{display:none}
@media (max-width:600px){.lb .lb-nav{display:none}.lb-inner{inset:0;border:0;padding-inline:1rem}}
@media (hover:none){.lb .lb-nav{display:none}}
@media (prefers-reduced-motion:reduce){.lb-slide img,.lb-inner,.lb::backdrop{transition:none}.lb-track{scroll-behavior:auto}}
.legal{padding-block:4rem 6rem}.legal h2{font-size:1.5rem;margin-top:2.5rem}
