/* 301 Moved Permanently — Ridlerhöfe München */
@font-face{font-family:"Plex Mono";src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --ink:#0A0A0A; --paper:#FFFFFF; --housing:#ECECE9; --link:#0000EE; --link-dark:#6B6BFF;
  --grey:#8C8C8C; --line:#D9D9D5; --dot:#C4C4BF;
  --bar:rgba(236,236,233,.88); --lb:rgba(236,236,233,.97); --hover:#E2E2DE; --soft:#3A3A3A; --dlink:#6B6BFF; --glow:rgba(0,0,238,.12);
  --r:20px; --r-s:10px; --gap:clamp(12px,1.6vw,20px); --pad:clamp(18px,3vw,36px);
  --fs:15px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{font-family:"Plex Mono",ui-monospace,Menlo,Consolas,monospace;font-size:var(--fs);line-height:1.55;color:var(--ink);background:var(--housing);-webkit-font-smoothing:antialiased}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--link);color:var(--paper)}
.grey{color:var(--grey)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.wrap{max-width:1360px;margin:0 auto;padding:0 var(--gap)}

/* ── invertiert ─────────────────────── */
html[data-theme="inv"]{
  --ink:#F2F2EF; --paper:#151515; --housing:#0A0A0A; --link:#FF4433; --dlink:#D42A1C;
  --grey:#7A7A76; --line:#2C2C2A; --dot:#474744; --hover:#1E1E1D; --soft:#C8C8C4;
  --bar:rgba(10,10,10,.86); --lb:rgba(10,10,10,.97); --glow:rgba(255,68,51,.22);
  color-scheme:dark}
html{transition:background-color .25s}
body,.panel,.key,.card,.display,.speaker,.controls,.work .img,.snd{transition:background-color .25s,color .25s}
.inv{gap:8px}
.inv .sw{width:22px;height:12px;border-radius:7px;background:var(--line);position:relative;flex:none}
.inv .sw::after{content:"";position:absolute;top:2px;left:2px;width:8px;height:8px;border-radius:50%;background:var(--ink);transition:transform .2s}
.inv[aria-pressed="true"] .sw::after{transform:translateX(10px);background:var(--link)}

/* ── top bar ───────────────────────────── */
.bar{position:sticky;top:0;z-index:20;background:var(--bar);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px)}
.bar .wrap{display:flex;align-items:center;gap:16px;height:68px}
.brand{font-weight:500;color:var(--ink);white-space:nowrap;font-size:14px}
.brand:hover{text-decoration:none}
.keys{display:flex;gap:6px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.keys::-webkit-scrollbar{display:none}
.key{display:flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:var(--r-s);background:var(--paper);color:var(--ink);font-size:12.5px;white-space:nowrap;box-shadow:inset 0 -2px 0 rgba(0,0,0,.06);transition:transform .08s}
.key:hover{text-decoration:none}
.key:active{transform:translateY(1px);box-shadow:none}
.key .n{color:var(--grey)}
.led{width:6px;height:6px;border-radius:50%;background:var(--line);flex:none;transition:background .2s,box-shadow .2s}
.key.on .led,.led.on{background:var(--link);box-shadow:0 0 0 3px var(--glow)}

/* ── panels ────────────────────────────── */
main{display:flex;flex-direction:column;gap:var(--gap);padding-bottom:var(--gap)}
.panel{background:var(--paper);border-radius:var(--r);padding:var(--pad);position:relative}
.label{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--grey);padding-bottom:12px;margin-bottom:clamp(20px,3vw,36px);border-bottom:1px solid var(--ink)}
.label b{font-weight:500;color:var(--ink)}
h2{font-size:clamp(26px,3.4vw,44px);line-height:1.05;font-weight:500;letter-spacing:-.025em;margin-bottom:clamp(20px,3vw,32px)}

/* ── hero ──────────────────────────────── */
.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--gap)}
.hero .main{min-height:min(76vh,680px);display:flex;flex-direction:column;justify-content:space-between}
.big{font-size:clamp(120px,22vw,330px);line-height:.8;font-weight:500;letter-spacing:-.065em;margin-left:-.04em}
.mp{font-size:clamp(28px,3.6vw,52px);font-weight:500;letter-spacing:-.025em;line-height:1.05;margin-top:clamp(14px,2vw,26px)}
.loc{font-size:clamp(15px,1.4vw,19px);margin-top:14px}
.hero .side{display:grid;grid-template-rows:auto 1fr auto;gap:var(--gap)}
.display{background:var(--ink);color:var(--paper);border-radius:var(--r);padding:18px 22px;font-size:13px;line-height:1.7;min-height:136px}
.display .k{color:#8C8C8C}
.display .v{color:var(--dlink)}
.cursor{display:inline-block;width:.6em;height:1.1em;background:var(--paper);vertical-align:-.18em;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.speaker{background:var(--paper);border-radius:var(--r);display:grid;place-items:center;padding:var(--pad);position:relative;min-height:280px}
.grille{display:block;width:min(100%,360px);aspect-ratio:1;cursor:crosshair;touch-action:none;-webkit-tap-highlight-color:transparent}
.snd{position:absolute;right:16px;top:12px;display:flex;align-items:center;gap:8px;height:30px;padding:0 12px;border-radius:8px;background:var(--housing);font-size:12px;color:var(--ink);box-shadow:inset 0 -2px 0 rgba(0,0,0,.06)}
.snd:active{transform:translateY(1px);box-shadow:none}
.snd[aria-pressed="true"] .led{background:var(--link);box-shadow:0 0 0 3px var(--glow)}
#coord{font-variant-numeric:tabular-nums}
.speaker .tag{position:absolute;left:22px;top:18px;font-size:12px;color:var(--grey)}
.speaker .tag2{position:absolute;right:22px;bottom:18px;font-size:12px;color:var(--grey)}
.controls{background:var(--paper);border-radius:var(--r);padding:18px 22px;display:flex;align-items:center;gap:22px}
.knob{width:64px;height:64px;border-radius:50%;background:var(--housing);position:relative;flex:none;box-shadow:inset 0 0 0 1px var(--line)}
.knob i{position:absolute;left:50%;top:7px;width:3px;height:14px;margin-left:-1.5px;border-radius:2px;background:var(--ink)}
.knob .rot{position:absolute;inset:0;transition:transform .15s linear}
.ctl-txt{font-size:12px;line-height:1.6}
.ctl-txt .v{font-size:22px;font-weight:500;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}

/* ── kollektiv ─────────────────────────── */
.about{display:grid;grid-template-columns:1fr 2fr;gap:clamp(20px,4vw,64px)}
.about .claim{font-size:clamp(22px,2.4vw,32px);line-height:1.2;font-weight:500;letter-spacing:-.02em}
.about .txt p{margin-bottom:1.1em;max-width:62ch}
.about .txt p.sb{font-weight:600}
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);margin-top:clamp(28px,4vw,48px)}
.fact{border-top:1px solid var(--ink);padding-top:10px;font-size:12px}
.fact .v{font-size:clamp(28px,3vw,40px);font-weight:500;letter-spacing:-.03em;line-height:1.1;margin-top:4px}

/* ── members ───────────────────────────── */
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.card{background:var(--housing);border-radius:var(--r-s);padding:18px;display:flex;flex-direction:column;gap:10px;font-size:13.5px}
.card .no{font-size:12px;color:var(--grey);display:flex;justify-content:space-between}
.card h3{font-size:19px;font-weight:500;letter-spacing:-.01em;line-height:1.2}
.card .real{font-size:12px;color:var(--grey);margin-top:-6px}
.card .role{font-size:12px}
.card .links{margin-top:auto;font-size:12.5px;display:flex;flex-wrap:wrap;gap:4px 12px}
.card img.th{border-radius:6px;aspect-ratio:4/3;object-fit:cover;width:100%;background:var(--line)}

/* sub heading */
.sub{display:flex;justify-content:space-between;gap:12px;font-size:13px;font-weight:500;margin-bottom:14px}

/* ── works ─────────────────────────────── */
.filter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--gap)}
.filter .key{background:var(--housing);box-shadow:none}
.filter .key.on{background:var(--ink);color:var(--paper)}
.filter .key.on .n{color:#8C8C8C}
.works{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.work{min-width:0;display:flex;flex-direction:column;gap:10px;text-align:left}
.work .img{background:var(--housing);border-radius:var(--r-s);aspect-ratio:1;display:grid;place-items:center;padding:8%;overflow:hidden;transition:background .2s}
.work .img img{max-height:100%;width:auto;object-fit:contain;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.work:hover .img{background:var(--hover)}
.work dl{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;font-size:12.5px}
.work dt{color:var(--grey)}
.work .t{font-weight:600;font-size:14px;display:flex;justify-content:space-between;gap:8px}
.work .t span{font-weight:400;color:var(--grey)}
.work[hidden]{display:none}

/* ── alumni ────────────────────────────── */
.alumni{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--gap)}
.alumni .card{background:transparent;border-top:1px solid var(--ink);border-radius:0;padding:12px 0 0}

/* ── contact ───────────────────────────── */
.contact{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--gap)}
.contact .addr{font-size:clamp(22px,2.4vw,32px);line-height:1.25;font-weight:500;letter-spacing:-.02em}
.kv{display:grid;grid-template-columns:150px 1fr;row-gap:8px;font-size:14px}
.kv dt{color:var(--grey)}
details.legal{font-size:13px;color:var(--soft)}
details.legal summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;color:var(--ink)}
details.legal summary::-webkit-details-marker{display:none}
details.legal summary::before{content:"+";width:22px;height:22px;border-radius:6px;background:var(--housing);display:grid;place-items:center}
details.legal[open] summary::before{content:"–"}
details.legal .body{columns:2 300px;column-gap:40px;margin-top:20px}
details.legal h4{font-weight:600;font-size:13px;margin:0 0 4px}
details.legal p{margin-bottom:14px;break-inside:avoid}

footer{font-size:12px;padding:18px 0 28px}
footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* ── lightbox ──────────────────────────── */
.lb{position:fixed;inset:0;z-index:50;background:var(--lb);display:none;grid-template-rows:auto 1fr auto;padding:var(--gap)}
.lb.open{display:grid}
.lb .top,.lb .bot{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}
.lb .stage{position:relative;min-height:0;margin:var(--gap) 0}
.lb .stage img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 2px 12px rgba(0,0,0,.12)}
.lb .bot dl{display:flex;flex-wrap:wrap;gap:4px 22px}
.lb .bot dt{display:inline;color:var(--grey);margin-right:6px}
.lb .bot dd{display:inline}
.lb .nav{display:flex;gap:6px}

/* ── responsive ────────────────────────── */
@media (max-width:1100px){
  .works{grid-template-columns:repeat(3,1fr)}
  .alumni{grid-template-columns:repeat(3,1fr)}
  .grid4{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:860px){
  :root{--fs:14px}
  .hero,.about,.contact{grid-template-columns:1fr}
  .hero .main{min-height:auto;gap:48px}
  .speaker{min-height:220px}
  .keys .key .lbl,.inv .lbl{display:none}
  .facts{grid-template-columns:repeat(2,1fr)}
  .works{grid-template-columns:repeat(2,1fr)}
  .alumni{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:520px){
  .work dl{grid-template-columns:1fr}
  .work dt{margin-top:4px}
  .speaker{min-height:0}
  .grille{width:70%}
  .lb .bot{flex-direction:column;align-items:flex-start}
  .bar .wrap{height:60px}
  .brand .long{display:none}
  .grid4,.alumni{grid-template-columns:1fr}
  .kv{grid-template-columns:110px 1fr}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cursor{animation:none}}

/* ── kalender ──────────────────────────── */
.cal{display:flex;flex-direction:column}
.ev{display:grid;grid-template-columns:220px 1fr;gap:clamp(16px,3vw,40px);padding:clamp(18px,2.4vw,28px) 0;border-top:1px solid var(--ink)}
.ev:last-child{border-bottom:1px solid var(--ink)}
.ev .mo{font-size:13px;font-weight:500;margin-bottom:10px}
.ev .tiles{display:flex;align-items:center}
.ev .tile{width:72px;height:80px;border-radius:var(--r-s);background:var(--housing);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.06)}
.ev .tile span{font-size:12px;color:var(--grey)}
.ev .tile b{font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.ev .tiles i{width:16px;height:1px;background:var(--ink);margin:0 6px}
.ev .tm{font-size:13px;color:var(--grey);margin-top:10px}
.ev.live .tile{background:var(--ink);color:var(--paper)}
.ev.live .tile span{color:var(--grey)}
.ev .st{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--grey);margin-bottom:8px}
.ev h3{font-size:clamp(20px,2vw,26px);font-weight:500;letter-spacing:-.015em;line-height:1.15;margin-bottom:14px}
.ev .meta{display:grid;grid-template-columns:80px 1fr;row-gap:4px;font-size:13.5px;margin-bottom:14px}
.ev .meta dt{color:var(--grey)}
.ev p{max-width:68ch;margin-bottom:14px}
.ev .links{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px}
.ev.live .st{color:var(--link)}
.ev.live .led{background:var(--link);box-shadow:0 0 0 3px var(--glow);animation:pulse 1.6s ease-in-out infinite}
.ev.past{opacity:.45}
@keyframes pulse{50%{box-shadow:0 0 0 6px transparent}}
@media (max-width:860px){.ev{grid-template-columns:1fr;gap:10px}}
