/* NOBLE SILENCE — components: nav, links, buttons, accordion */
.link{display:inline-flex;align-items:center;gap:.6em;font-size:var(--t-small);letter-spacing:.04em;position:relative;padding-bottom:.2em}
.link::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--dur-hover) var(--ease-soft)}
.link:hover::after,.link:focus-visible::after{transform:scaleX(1)}
.link .arrow{transition:transform var(--dur-hover) var(--ease-soft)}
.link:hover .arrow{transform:translateX(4px)}
.btn{display:inline-flex;align-items:center;gap:.8em;padding:.95em 1.6em;border:1px solid currentColor;border-radius:var(--radius);
  font-size:var(--t-small);letter-spacing:var(--track-nav);text-transform:uppercase;transition:background var(--dur-hover),color var(--dur-hover)}
.btn:hover,.btn:focus-visible{background:var(--fg);color:var(--bg)}
.btn--solid{background:var(--fg);color:var(--bg)}
.btn--solid:hover{background:transparent;color:var(--fg)}
/* Kapitel-Eyebrow in Rose — die Farbe hat genau drei Aufgaben */
.label--chapter{color:var(--eyebrow)}
/* Einziger Solid-Button der Seite. Rose Deep statt Rose, weil erst der
   dunklere Ton mit Bone-Text auf 6,4:1 kommt. */
/* Haarlinien-Kontur statt gefuellter Flaeche: auf dem Foto war der gefuellte
   Rose-Block das plakativste Element. Beim Ueberfahren fuellt sie sich. */
.closing .btn--rose{background:none;border-color:rgba(240,237,231,.55);color:var(--ns-bone)}
.closing .btn--rose:hover,.closing .btn--rose:focus-visible{
  background:var(--ns-bone);border-color:var(--ns-bone);color:var(--ns-ink)}
.btn--rose{display:inline-flex;align-items:center;gap:.8em;padding:.9em 1.5em;
  background:var(--ns-rose-deep);color:var(--ns-bone);border:1px solid var(--ns-rose-deep);
  border-radius:0;font-size:var(--t-small);letter-spacing:var(--track-nav);
  text-transform:uppercase;transition:background var(--dur-hover),border-color var(--dur-hover)}
.btn--rose:hover,.btn--rose:focus-visible{background:var(--ns-rose-press);border-color:var(--ns-rose-press)}


/* Navigation */
.nav{position:fixed;inset:0 0 auto 0;z-index:var(--z-nav);display:flex;justify-content:space-between;align-items:center;
  padding:clamp(1rem,2.4vw,1.8rem) var(--margin);mix-blend-mode:difference;color:#fff}
.nav__brand{font-family:var(--font-sans);font-size:var(--t-small);letter-spacing:.22em;text-transform:uppercase;font-weight:400;
  transition:opacity 700ms var(--ease-soft)}
/* Auf der Startseite trägt der Hero die Wortmarke — die Nav-Marke erscheint erst danach */
body:has(.hero) .nav__brand{opacity:0;pointer-events:none}
body:has(.hero).past-hero .nav__brand,body.menu-open .nav__brand{opacity:1;pointer-events:auto}
/* Schnellzugriff: die wichtigsten Ziele bleiben erreichbar, ohne das Overlay zu
   oeffnen. Gleiche Schriftgroesse wie die Wortmarke — der Balken bleibt dadurch
   genau so schmal wie bisher, es kommt keine Bauhoehe dazu. */
.nav__quick{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2.6rem);
  font-family:var(--font-sans);font-size:var(--t-small);letter-spacing:var(--track-nav);
  text-transform:uppercase;white-space:nowrap}
.nav__quick a{position:relative;opacity:.8;transition:opacity var(--dur-hover)}
/* Haarlinie waechst aus der Wortmitte — dieselbe ruhige Geste wie im Overlay. */
.nav__quick a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:center;
  transition:transform var(--dur-hover) var(--ease-soft)}
.nav__quick a:hover,.nav__quick a[aria-current]{opacity:1}
.nav__quick a:hover::after,.nav__quick a[aria-current]::after{transform:scaleX(1)}
.nav__menu{display:flex;align-items:center;gap:var(--s-3);font-size:var(--t-label);letter-spacing:var(--track-label);text-transform:uppercase}
.nav__menu i{display:block;width:28px;height:1px;background:currentColor;position:relative;transition:transform var(--dur-hover)}
.nav__menu i::before{content:"";position:absolute;left:0;top:-6px;width:100%;height:1px;background:currentColor;transition:transform var(--dur-hover),top var(--dur-hover)}
.nav__menu i::after{content:"";position:absolute;left:0;top:6px;width:100%;height:1px;background:currentColor;transition:transform var(--dur-hover),top var(--dur-hover)}
body.menu-open .nav__menu i{background:transparent}
body.menu-open .nav__menu i::before{top:0;transform:rotate(45deg)}
body.menu-open .nav__menu i::after{top:0;transform:rotate(-45deg)}

/* Overlay-Menü: schmale Schublade rechts statt Vollbild. Der Rest der Seite
   bleibt sichtbar und wird nur abgedunkelt — das Menü ist ein Nebenweg, die
   Hauptziele stehen ohnehin im Schnellzugriff der Leiste. */
.menu{position:fixed;inset:0;z-index:var(--z-menu);background:rgba(5,5,5,.6);
  opacity:0;visibility:hidden;transition:opacity 480ms var(--ease-soft),visibility 0s 480ms}
body.menu-open .menu{opacity:1;visibility:visible;transition:opacity 480ms var(--ease-soft)}
.menu__panel{position:absolute;inset:0 0 0 auto;width:clamp(300px,26vw,420px);
  background:var(--ns-ink);color:var(--ns-bone);
  display:flex;flex-direction:column;justify-content:space-between;gap:var(--s-6);
  padding:calc(var(--s-6) + 2rem) clamp(1.75rem,2.2vw,2.75rem) clamp(1.75rem,2.2vw,2.75rem);
  transform:translateX(100%);transition:transform 560ms var(--ease-settle)}
body.menu-open .menu__panel{transform:none}
.menu__list{display:grid;align-content:start;gap:clamp(.85rem,1.7vh,1.45rem)}
.menu__main{font-family:var(--font-display);font-weight:400;
  font-size:clamp(1.45rem,1.9vw,2.05rem);line-height:1.15;
  opacity:0;transform:translateX(18px);
  transition:opacity 560ms var(--ease-settle),transform 560ms var(--ease-settle),color var(--dur-hover)}
body.menu-open .menu__main{opacity:1;transform:none}
body.menu-open .menu__main:nth-child(2){transition-delay:60ms}
body.menu-open .menu__main:nth-child(3){transition-delay:120ms}
body.menu-open .menu__main:nth-child(4){transition-delay:180ms}
body.menu-open .menu__main:nth-child(5){transition-delay:240ms}
.menu__main:hover{color:var(--ns-stone)}
.menu__foot{display:grid;gap:.3rem;color:var(--ns-mushroom);font-size:var(--t-small)}
.menu__foot a{color:var(--ns-mist);transition:color var(--dur-hover)}
.menu__foot a:hover{color:var(--ns-bone)}
/* Eng: die Schublade nimmt die volle Breite, sonst bleibt zu wenig Textmass. */
@media (max-width:700px){.menu__panel{width:min(100%,26rem)}}
/* Eng: die Wortmarke weicht, der Schnellzugriff bleibt — er ist hier der
   eigentliche Nutzen. Das Wort "Menü" entfaellt, das Icon traegt allein. */
@media (max-width:900px){
  .nav__brand{display:none}
  .nav__quick{gap:.85rem;font-size:var(--t-label);letter-spacing:.05em}
  .nav__menu span{display:none}
}
/* Sehr schmale Geraete: sonst stossen Schnellzugriff und Icon aneinander. */
@media (max-width:420px){
  .nav__quick{gap:.55rem;letter-spacing:.02em}
}
body.menu-open{overflow:hidden}
.nav{transition:opacity 400ms}
body.menu-open .nav{mix-blend-mode:normal;color:var(--ns-bone);z-index:calc(var(--z-menu) + 1)}

/* Accordion (minimal) */
.acc{border-top:var(--border)}
.acc__item{border-bottom:var(--border)}
.acc__btn{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--s-4) 0;text-align:left;font-family:var(--font-display);font-size:var(--t-h3)}
.acc__btn span:last-child{font-family:var(--font-sans);font-size:1.2rem;font-weight:300;transition:transform var(--dur-hover)}
.acc__btn[aria-expanded="true"] span:last-child{transform:rotate(45deg)}
.acc__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows 500ms var(--ease-settle)}
.acc__panel>div{overflow:hidden}
.acc__panel.is-open{grid-template-rows:1fr}
.acc__panel p{max-width:var(--measure-wide);color:var(--fg-soft);padding-bottom:var(--s-4)}

/* Prinzip: "Mehr erfahren" faltet vertiefenden Text auf */
.prinzip__toggle{background:none;border:0;padding:0 0 .2em;cursor:pointer;font-family:inherit;color:inherit}
.prinzip__toggle .arrow{display:inline-block;transition:transform var(--dur-hover) var(--ease-soft)}
.prinzip__toggle[aria-expanded="true"] .arrow{transform:rotate(90deg)}
.prinzip__more{display:grid;grid-template-rows:0fr;transition:grid-template-rows 700ms var(--ease-settle);width:100%}
.prinzip__more>div{overflow:hidden;display:grid;gap:var(--s-4);justify-items:start;opacity:0;transition:opacity 500ms var(--ease-settle)}
.prinzip__more.is-open{grid-template-rows:1fr}
.prinzip__more.is-open>div{opacity:1;transition:opacity 600ms var(--ease-settle) 150ms}

/* Page transition veil */
.veil{position:fixed;inset:0;z-index:90;background:var(--ns-ink);pointer-events:none;opacity:0;transition:opacity 420ms var(--ease-soft)}
body.is-leaving .veil{opacity:1}

/* --- Rechtstexte als Lightbox. Natives <dialog>: Fokusfalle, Escape und
   Top-Layer kommen vom Browser. Der Inhalt wird aus den bestehenden Seiten
   geladen — ohne JavaScript oder bei file:// oeffnet der Link die Seite selbst. --- */
.legal-dialog{border:0;padding:0;margin:auto;background:var(--ns-bone);color:var(--ns-ink);
  width:min(100% - 2rem,58rem);max-height:min(88svh,64rem);
  box-shadow:0 30px 90px rgba(5,5,5,.38);overflow:hidden}
.legal-dialog[open]{display:grid;grid-template-rows:auto 1fr}
.legal-dialog::backdrop{background:rgba(5,5,5,.62)}
.legal-dialog__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-4);
  padding:clamp(1.5rem,3vw,2.5rem) clamp(1.5rem,4vw,3.5rem) clamp(1.1rem,2vw,1.6rem);
  border-bottom:1px solid var(--hairline)}
.legal-dialog__head .label{display:block;margin-bottom:.6rem;color:var(--ns-rose-deep)}
.legal-dialog__title{font-family:var(--font-display);font-weight:400;font-size:clamp(2rem,3.6vw,3rem);
  line-height:1.02;margin:0;color:var(--ns-ink)}
.legal-dialog__title:focus{outline:none}
.legal-dialog__intro{margin:.7rem 0 0;color:var(--fg-muted);font-size:var(--t-body);max-width:52ch;text-wrap:pretty}
/* Schliessen: dieselbe Geste wie das Menue — zwei Haarlinien, kein Icon-Font */
.legal-dialog__close{flex:none;width:44px;height:44px;margin:-.4rem -.6rem 0 0;position:relative;
  background:none;border:0;cursor:pointer;color:var(--ns-ink)}
.legal-dialog__close::before,.legal-dialog__close::after{content:"";position:absolute;left:50%;top:50%;
  width:24px;height:1px;background:currentColor;transform-origin:center}
.legal-dialog__close::before{transform:translate(-50%,-50%) rotate(45deg)}
.legal-dialog__close::after{transform:translate(-50%,-50%) rotate(-45deg)}
.legal-dialog__close:hover{opacity:.6}
.legal-dialog__close:focus-visible{outline:1px dashed var(--ns-ink);outline-offset:2px}
.legal-dialog__body{overflow:auto;overscroll-behavior:contain;
  padding:clamp(1.25rem,2.5vw,2rem) clamp(1.5rem,4vw,3.5rem) clamp(2rem,4vw,3rem)}
.legal-dialog__body .legal{max-width:68ch}
.legal-dialog__body .legal h2:first-child{margin-top:0}
.legal-dialog__body .legal-dialog__more{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--hairline);
  display:flex;flex-wrap:wrap;gap:var(--s-3) var(--s-5)}
body.has-dialog{overflow:hidden}
@keyframes legal-in{from{opacity:0;transform:translateY(14px)}}
@keyframes legal-backdrop-in{from{opacity:0}}
.legal-dialog[open]{animation:legal-in 460ms var(--ease-settle)}
.legal-dialog[open]::backdrop{animation:legal-backdrop-in 460ms var(--ease-soft)}
/* Mobil: Vollflaeche. max-width MUSS mit aufgehoben werden — der Browser-Standard
   fuer <dialog> ist calc(100% - 6px - 2em) und liesse sonst 40 px Rand. Der
   Vorspann entfaellt, damit der feste Kopf nicht ein Viertel des Schirms nimmt. */
@media (max-width:700px){
  .legal-dialog{width:100%;max-width:none;height:100svh;max-height:none;margin:0;box-shadow:none}
  .legal-dialog__intro{display:none}
}
@media (prefers-reduced-motion:reduce){
  .legal-dialog[open],.legal-dialog[open]::backdrop{animation:none}
}
