/* =====================================================================
   Myra Branding für Material for MkDocs
   Quelle der Tokens und Regeln:
     "Myra_Design_System_1.2__standalone_.html" (DOCU/htmldesign)
   Leitsätze des Design Systems 1.2:
     · Navy ist die Fläche, Cyan der Akzent, Weiß der Textkörper.
     · Scharfe Kanten überall — kein border-radius (Markenvorgabe).
     · Kontrastgebot: auf hellem Grund ist jeder Text Navy, auf dunklem
       Grund ist jeder Text Weiß. Gedämpfte Töne bleiben Platzhaltern
       vorbehalten (--ds-ph).
     · Für Text ausschließlich die funktionalen Token-Paare (WCAG AA),
       nie die rohen Markenfarben.
     · Montserrat = Überschriften, Rubik = Fließtext,
       JetBrains Mono = Code, Labels, Eyebrows.
   ===================================================================== */

/* ---------- Schriften (self-hosted) ----------
   woff2 zuerst, die älteren OTF/TTF aus dem Flare-Projekt als Fallback.  */
@font-face{font-family:"Montserrat";font-style:normal;font-weight:400;font-display:swap;
  src:url("../assets/fonts/Montserrat-Regular.otf") format("opentype");}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:600;font-display:swap;
  src:url("../assets/fonts/Montserrat-SemiBold.woff2") format("woff2");}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:700;font-display:swap;
  src:url("../assets/fonts/Montserrat-Bold.otf") format("opentype");}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:800;font-display:swap;
  src:url("../assets/fonts/Montserrat-ExtraBold.woff2") format("woff2");}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:900;font-display:swap;
  src:url("../assets/fonts/Montserrat-Black.otf") format("opentype");}

@font-face{font-family:"Rubik";font-style:normal;font-weight:400;font-display:swap;
  src:url("../assets/fonts/Rubik-Regular.woff2") format("woff2"),
      url("../assets/fonts/Rubik-Regular.ttf") format("truetype");}
@font-face{font-family:"Rubik";font-style:normal;font-weight:500;font-display:swap;
  src:url("../assets/fonts/Rubik-Medium.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-style:normal;font-weight:600;font-display:swap;
  src:url("../assets/fonts/Rubik-SemiBold.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-style:normal;font-weight:700;font-display:swap;
  src:url("../assets/fonts/Rubik-Bold.ttf") format("truetype");}

/* ---------- 1. Tokens aus dem Design System 1.2 ---------- */
:root{
  /* Marke */
  --brand-cyan:      #2AD9FF;
  --brand-cyan-hi:   #5BE3FF;
  --brand-darkblue:  #002B4A;
  --brand-buttontext:#00052C;

  /* Funktionale Paare auf Weiß (WCAG AA).
     --text-muted ist im Design System 1.2 gleich --text-primary:
     "rule: all text = ink (light)".                                   */
  --text-primary:    #002B4A;
  --text-muted:      #002B4A;
  --sky-on-white:    #005E8A;
  --green-on-white:  #2A7200;
  --red-on-white:    #B91C1C;
  --orange-on-white: #92400E;

  /* Funktionale Paare auf Navy.
     "rule: all text = white (dark surfaces)".                          */
  --text-inverse:    #FFFFFF;
  --text-muted-inv:  #FFFFFF;
  --sky-on-navy:     #3EDDFF;
  --green-on-navy:   #5FBF40;
  --red-on-navy:     #FF5744;
  --orange-on-navy:  #F79121;

  /* Navy-Chrome: die Navigation auf der Markenfläche trägt im Design
     System einen eigenen, ruhigeren Ton als der Fließtext (.nav-item).  */
  --nav-ink:         #C8D8E4;

  /* Flächen und Banner */
  --surface-neutral: #F2F4F6;
  --surface-sky:     #E0F4FF;
  --surface-green:   #E5FFDD;
  --surface-red:     #FEDCD9;
  --surface-orange:  #FEF0DC;
  --border:          #CCD5DB;

  /* Abstände */
  --space-xs:8px; --space-s:12px; --space-m:16px;
  --space-l:24px; --space-xl:32px; --space-2xl:40px;

  /* Bewegung */
  --dur-fast:120ms; --dur-base:180ms;

  /* Schriftfamilien */
  --font-head:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --font-body:"Rubik","Helvetica Neue",Arial,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}

/* Hellmodus-Ebenen (html[data-theme='light'] im Design System) */
[data-md-color-scheme="myra"]{
  color-scheme:light;
  --ds-bg:        #F2F4F6;
  --ds-bg-2:      #FFFFFF;
  --ds-surface:   #FFFFFF;
  --ds-surface-2: #F2F4F6;
  --ds-line:      #CCD5DB;
  --ds-line-soft: #E1E6EA;
  --ds-ink:       #002B4A;
  --ds-ink-dim:   #002B4A;
  --ds-ink-mute:  #002B4A;
  --ds-ph:        #4D6B80;
  --ds-accent:    #005E8A;
  --ds-accent-bg: #E0F4FF;
  --ds-shadow:    0 1px 2px rgba(0,43,74,.08);
  /* Funktionale Statusfarben */
  --ds-pos:#2A7200; --ds-neg:#B91C1C; --ds-warn:#C2410C; --ds-info:#005E8A;
  --ds-focus:#2360C5;
  /* Rollennamen auf dieselben Farben — keine neuen Töne */
  --ds-link:#005E8A; --ds-success:#2A7200; --ds-danger:#B91C1C;
  --ds-warning:#C2410C;
  /* Interaktionsstufen: nur dort, wo eine klickbare Fläche eine
     sichtbare Rückmeldung braucht.                                     */
  --ds-accent-hover:#00476B; --ds-accent-active:#00354F; --ds-on-accent:#FFFFFF;
}

/* Dunkelmodus-Ebenen (html[data-theme='dark'] im Design System) */
[data-md-color-scheme="slate"]{
  color-scheme:dark;
  --ds-bg:        #0A1A29;
  --ds-bg-2:      #0F2334;
  --ds-surface:   #102A40;
  --ds-surface-2: #163049;
  --ds-line:      rgba(62,221,255,.20);
  --ds-line-soft: rgba(255,255,255,.10);
  --ds-ink:       #FFFFFF;
  --ds-ink-dim:   #FFFFFF;
  --ds-ink-mute:  #FFFFFF;
  --ds-ph:        #C2D2DF;
  --ds-accent:    #5BE3FF;
  --ds-accent-bg: rgba(62,221,255,.12);
  --ds-shadow:    0 1px 0 rgba(0,0,0,.30);
  --ds-pos:#5FBF40; --ds-neg:#FF5744; --ds-warn:#FFB454; --ds-info:#3EDDFF;
  --ds-focus:#2360C5;
  --ds-link:#3EDDFF; --ds-success:#5FBF40; --ds-danger:#FF5744;
  --ds-warning:#FFB454;
  --ds-accent-hover:#26C6E6; --ds-accent-active:#12AECF; --ds-on-accent:#002B4A;
}

/* ---------- 2. Material-Paletten aus den Tokens ableiten ---------- */
[data-md-color-scheme="myra"],
[data-md-color-scheme="slate"]{
  --md-default-fg-color:            var(--ds-ink);
  --md-default-fg-color--light:     var(--ds-ink-dim);
  --md-default-fg-color--lighter:   var(--ds-ink-mute);
  --md-default-fg-color--lightest:  var(--ds-line);
  --md-default-bg-color:            var(--ds-bg-2);

  --md-primary-fg-color:            var(--brand-darkblue);
  --md-primary-fg-color--light:     #163049;
  --md-primary-fg-color--dark:      #001B30;
  --md-primary-bg-color:            var(--text-inverse);
  --md-primary-bg-color--light:     var(--nav-ink);

  --md-accent-fg-color:             var(--ds-accent);
  --md-accent-fg-color--transparent:var(--ds-accent-bg);

  --md-typeset-color:               var(--ds-ink);
  --md-typeset-a-color:             var(--ds-link);
  --md-code-bg-color:               var(--ds-surface-2);
  --md-code-fg-color:               var(--ds-ink);
  --md-footer-bg-color:             var(--brand-darkblue);
  --md-footer-bg-color--dark:       #001B30;
  --md-footer-fg-color:             var(--text-inverse);
  --md-footer-fg-color--light:      var(--nav-ink);
  --md-footer-fg-color--lighter:    var(--nav-ink);
  --md-typeset-table-color:         var(--ds-line);

  --md-text-font-family:            var(--font-body);
  --md-code-font-family:            var(--font-mono);
}

/* ---------- 3. Grundlagen ---------- */
/* Markenvorgabe des Design Systems: scharfe Kanten, kein border-radius. */
*,*::before,*::after{border-radius:0 !important;}

/* Fließtext: Rubik 14 px, Zeilenhöhe 1.5 (body des Design Systems).
   Material stellt die Wurzel auf 125 %, 1 rem sind also 20 px.        */
body,input,select,textarea,button{font-family:var(--font-body);}
.md-typeset{font-size:.7rem;line-height:1.5;}
.md-typeset .md-content__inner>:first-child{margin-top:0;}
::placeholder{color:var(--ds-ph);opacity:1;}

/* Fokusring — universell, 2 px Akzent mit 2 px Abstand. */
*:focus{outline:none;}
*:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px;}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none !important;animation:none !important;}
}

/* ---------- 4. Seitenraster: Fläche, Inhaltskarte, Breite ---------- */
.md-grid{max-width:none;}
.md-main{background:var(--ds-bg);}
.md-main__inner{margin-top:0;}

/* .md-main__inner ist eine Flex-Zeile aus Navigation, Inhaltsverzeichnis
   und Inhalt. Mit Umbruch belegt die Kopfleiste (.myra-topbar) die erste
   Zeile neben der Navigation und läuft bis zum rechten Rand; Inhalt und
   Inhaltsverzeichnis rücken in die zweite Zeile darunter. Die Reihenfolge
   wird dafür ausdrücklich gesetzt, weil Flex nach "order" umbricht.     */
.md-main__inner{flex-wrap:wrap;}
.myra-topbar{order:1;flex:0 0 100%;}
.md-content{order:2;padding:0;}
.md-sidebar--secondary{order:3;}

/* Sobald das Inhaltsverzeichnis eingeblendet wird, tritt an die Stelle des
   Umbruchs ein Raster: die Navigation steht über beide Zeilen links, die
   Kopfleiste beginnt an ihrer Kante und läuft bis zum rechten Rand, Inhalt
   und Inhaltsverzeichnis liegen darunter. Ohne Seitennavigation (hide:
   navigation, z. B. Startseite) oder solange sie als Schublade über der
   Seite liegt, entfällt die erste Spalte und die Leiste nimmt die volle
   Breite ein.                                                          */
@media screen and (min-width:60em){
  .md-main__inner{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-rows:auto 1fr;}
  .md-sidebar--primary{grid-column:1;grid-row:1/3;align-self:start;}
  .myra-topbar{grid-column:2/4;grid-row:1;}
  .md-content{grid-column:2;grid-row:2;}
  .md-sidebar--secondary{grid-column:3;grid-row:2;align-self:start;}
}
/* .page des Design Systems: keine Karte, keine Umrandung — der Text
   steht unmittelbar auf der Seitenfläche. Maße 26/36/56, Satzbreite
   höchstens 1280 px.                                                   */
.md-content__inner{
  background:transparent;
  border:none;
  box-shadow:none;
  padding:26px 36px 56px;
  margin:0;
  max-width:64rem;
}
.md-content__inner::before{display:none;}
@media screen and (max-width:76.1875em){
  .md-content__inner{padding:24px 18px 60px;}
}

/* ---------- 5. Typografie (Product-Ramp des Design Systems) ---------- */
.md-typeset :is(h1,h2,h3,h4,h5,h6){
  font-family:var(--font-head);color:var(--ds-ink);text-wrap:balance;}

.md-typeset h1{font-size:1.9rem;font-weight:800;line-height:1.06;
  letter-spacing:-.02em;color:var(--ds-ink);margin:0 0 var(--space-s);}
/* Abschnitte werden im Design System durch eine Haarlinie *über* dem
   Titel getrennt (.section + .section), nicht durch eine Linie darunter. */
.md-typeset h2{font-size:1.05rem;font-weight:700;line-height:1.2;
  letter-spacing:0;margin-top:var(--space-2xl);
  padding-top:var(--space-xl);border-top:1px solid var(--ds-line-soft);}
.md-typeset h1+h2{margin-top:var(--space-l);padding-top:0;border-top:none;}
.md-typeset h3{font-size:.8rem;font-weight:700;line-height:1.35;
  margin-top:var(--space-xl);}
.md-typeset h4{font-size:.7rem;font-weight:600;line-height:1.45;
  margin-top:var(--space-l);}
.md-typeset h5{font-size:.65rem;font-weight:600;line-height:1.5;
  text-transform:none;color:var(--ds-ink);}
/* h6 folgt dem Label-Stil des Design Systems (.card__head) */
.md-typeset h6{font-size:.55rem;font-weight:700;line-height:1.5;
  text-transform:uppercase;letter-spacing:.10em;color:var(--ds-ink);}

.md-typeset p{text-wrap:pretty;}
.md-typeset .lead,.md-typeset h1+p{font-size:.75rem;line-height:1.55;
  color:var(--ds-ink-dim);}

@media screen and (max-width:76.1875em){
  .md-typeset h1{font-size:1.6rem;}
  .md-typeset h2{font-size:.98rem;}
}

/* ---------- 6. Kopfleiste ---------- */
.md-header{
  background-color:var(--brand-darkblue);
  color:var(--text-inverse);
  box-shadow:0 1px 0 rgba(0,0,0,.30);
}
.md-header__title{font-family:var(--font-head);font-weight:800;
  font-size:.8rem;letter-spacing:.01em;}
.md-header__button.md-logo :is(img,svg){height:1.5rem;width:auto;}
/* Wortmarke wie .sidebar__brand: nur der Titel, mittig auf einer Linie
   mit dem Myra-Logo — die Zeilenhöhe von .md-header__title zentriert
   ihn, deshalb bleibt sie hier unangetastet.                           */

/* Sprachschalter links neben dem Umschalter für Hell- und Dunkelmodus.
   Benannt ist immer die andere Fassung: auf der deutschen Seite steht
   EN, auf der englischen DE. Maße wie bei den Symbolschaltflächen der
   Kopfleiste, Beschriftung in Mono wie die übrigen Kennungen.          */
a.md-header__button.myra-lang{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:1.2rem;height:1.2rem;padding:0 .25rem;
  font-family:var(--font-mono);font-size:.6rem;font-weight:600;
  letter-spacing:.08em;line-height:1;
  color:currentcolor;text-decoration:none;
  border:1px solid rgba(255,255,255,.35);
  transition:border-color var(--dur-fast),background-color var(--dur-fast);}
a.md-header__button.myra-lang:is(:hover,:focus){
  opacity:1;border-color:var(--text-inverse);
  background-color:rgba(255,255,255,.12);}

/* ---------- 6a. Hauptnavigation waagerecht (.md-tabs) --------------
   Die obersten Navigationspunkte stehen als Reiter in der Kopfleiste;
   die Seitenleiste zeigt daraufhin nur den Unterbaum des aktiven
   Reiters. Gestaltung nach .nav-item des Design Systems: Rubik 500 auf
   Navy, aktiv in Weiß mit Cyan-Balken.                                */
.md-tabs{background-color:#001B30;}
.md-tabs__list{padding-left:0;}
.md-tabs__item{padding:0 .8rem;}
.md-tabs__link{
  font-family:var(--font-body);font-weight:500;font-size:.7rem;
  color:var(--nav-ink);opacity:1;position:relative;
  margin-top:.5rem;padding-bottom:.5rem;
  transition:color var(--dur-fast);}
.md-tabs__link:is(:hover,:focus){color:var(--text-inverse);}
/* Material markiert den aktiven Reiter am <li>, nicht am Anker. */
.md-tabs__item--active>.md-tabs__link,
.md-tabs__item--active>.md-tabs__link:hover{
  color:var(--text-inverse);font-weight:600;}
.md-tabs__item--active>.md-tabs__link::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:3px;
  background:var(--sky-on-navy);}

/* Suchfeld: scharfe Kanten, Akzentrahmen im Fokus */
.md-search__form{background-color:rgba(255,255,255,.10);}
.md-search__form:hover{background-color:rgba(255,255,255,.16);}
[data-md-toggle=search]:checked~.md-header .md-search__form{
  background-color:var(--ds-surface);
  box-shadow:0 0 0 2px var(--sky-on-navy);}
.md-search__input::placeholder{color:var(--nav-ink);}
.md-search-result__link:is(:focus,:hover){background-color:var(--ds-accent-bg);}
.md-search-result__article--document .md-search-result__title{
  font-family:var(--font-head);font-weight:700;}

/* ---------- 7. Primärnavigation — Navy-Chrome des Design Systems ---- */
@media screen and (min-width:76.25em){
  /* Die Navigation klebt am oberen Rand und ist nur so hoch wie ihr
     Baum. Der Navy-Streifen gehört deshalb an .md-main: der Bereich
     reicht von der Kopf- bis zur Fußzeile, damit läuft die Leiste über
     die ganze Seitenlänge und schiebt sich nicht über die Fußzeile.   */
  .md-main{
    background:linear-gradient(to right,
      var(--brand-darkblue) 0 12rem,
      rgba(255,255,255,.08) 12rem calc(12rem + 1px),
      var(--ds-bg) calc(12rem + 1px) 100%);}
  .md-sidebar--primary{
    background:transparent;border-right:none;
    width:12rem;padding:0;
    height:auto;max-height:calc(100vh - 2.4rem);}
  .md-main:has(>.md-main__inner>.md-sidebar--primary[hidden]){
    background:var(--ds-bg);}
  .md-sidebar--primary .md-sidebar__scrollwrap{
    margin:0;padding:18px 14px 20px;
    max-height:calc(100vh - 4.8rem);overflow-y:auto;}
  .md-sidebar--primary .md-nav{color:var(--nav-ink);}

  /* Gruppentitel wie .sidebar__group-title */
  /* Der Seitenname steht bereits in der Kopfleiste — in der Seitenleiste
     wird er nicht wiederholt.                                          */
  .md-sidebar--primary .md-nav__title{display:none;}
  /* Sektionen: Material bettet den Titelanker in .md-nav__container ein —
     beide Ebenen müssen den Label-Stil bekommen.                       */
  .md-sidebar--primary .md-nav__item--section>.md-nav__link,
  .md-sidebar--primary .md-nav__item--section>.md-nav__container>.md-nav__link{
    font-family:var(--font-head);font-weight:700;font-size:.5rem;
    letter-spacing:.16em;text-transform:uppercase;
    color:rgba(200,216,228,.55);background:transparent;}
  .md-sidebar--primary .md-nav__item--section>.md-nav__container{
    margin-top:var(--space-m);}

  /* Navigationseinträge wie .nav-item */
  .md-sidebar--primary .md-nav__link{
    font-family:var(--font-body);font-weight:500;font-size:.7rem;
    color:var(--nav-ink);padding:9px 12px;margin:0;
    transition:background-color var(--dur-fast),color var(--dur-fast);}
  .md-sidebar--primary .md-nav__link:hover{
    background:rgba(255,255,255,.05);color:var(--text-inverse);}
  .md-sidebar--primary .md-nav__link--active,
  .md-sidebar--primary .md-nav__link--active:hover{
    background:rgba(62,221,255,.10);color:var(--text-inverse);
    font-weight:600;position:relative;}
  .md-sidebar--primary .md-nav__link--active::before{
    content:"";position:absolute;left:0;top:5px;bottom:5px;
    width:3px;background:var(--sky-on-navy);}

  /* Aufklappbare Einträge bestehen aus .md-nav__container + Anker + Label.
     Material markiert Anker UND Label als aktiv — das ergäbe zwei getrennte
     Kästen. Der aktive Zustand liegt deshalb auf dem Container, damit die
     Zeile wie ein .nav-item des Design Systems durchgehend wirkt.        */
  .md-sidebar--primary .md-nav__container:has(>.md-nav__link--active){
    background:rgba(62,221,255,.10);position:relative;}
  .md-sidebar--primary .md-nav__container:has(>.md-nav__link--active)::before{
    content:"";position:absolute;left:0;top:5px;bottom:5px;
    width:3px;background:var(--sky-on-navy);z-index:1;}
  .md-sidebar--primary .md-nav__container>.md-nav__link--active{
    background:transparent;}
  .md-sidebar--primary .md-nav__container>.md-nav__link--active::before{
    content:none;}
  /* Der Container trägt selbst die Klasse .md-nav__link — sein
     Innenabstand käme sonst zu dem des Ankers hinzu und Einträge mit
     Pfeil stünden weiter rechts als ihre Geschwister ohne Pfeil.       */
  .md-sidebar--primary .md-nav__link.md-nav__container{padding:0;}
  .md-sidebar--primary .md-nav__container>label.md-nav__link{
    cursor:pointer;}
  /* Mit den Reitern hebt Material (.md-nav--lifted) den Namen des aktiven
     Reiters an den Kopf der Seitenleiste. Er steht bereits im Reiter und
     im Brotkrumenpfad und entfällt hier.                                */
  .md-sidebar--primary .md-nav--lifted>.md-nav__list
    >.md-nav__item--active>:is(.md-nav__link,.md-nav__container>.md-nav__link){
    display:none;}
  .md-sidebar--primary .md-nav--secondary{display:none;}

  /* Material kürzt lange Titel mit Auslassungspunkten. In dieser Doku sind
     die Abschnittstitel lang und beschreibend — sie werden umbrochen
     statt abgeschnitten.                                                */
  .md-sidebar--primary .md-ellipsis{
    white-space:normal;overflow:visible;text-overflow:clip;
    /* Ein einzelnes langes Wort — „Mitigationsberichte“,
       „Benutzerverwaltung“ — ist breiter als die Spalte und ragte über sie
       hinaus. Es wird nach den Regeln der Seitensprache getrennt (das
       Wurzelelement trägt lang="de" bzw. lang="en"); wo das Wörterbuch nicht
       greift, bricht es notfalls hart um.                               */
    overflow-wrap:break-word;hyphens:auto;}
}

/* Aufklapppfeil der Hauptnavigation: der Hover-Zustand zeigt sich allein an
   der Farbe des Pfeils, die Fläche bleibt in jedem Fall transparent.
   Material hinterlegt den Pfeil sonst mit --md-accent-fg-color--transparent —
   im Myra-Farbsatz ein deckendes Hellblau (#E0F4FF), das auf dem
   navyfarbenen Grund als heller Kasten erscheint.
   Die Regeln stehen bewusst außerhalb der Breitenabfragen: dieselbe
   Navigation erscheint auf breiten Fenstern als Seitenleiste und auf
   schmalen als Schublade.                                                */
.md-nav--primary .md-nav__icon,
.md-nav--primary .md-nav__icon:hover,
.md-nav--primary .md-nav__link:hover .md-nav__icon:hover{
  background-color:transparent;}
.md-nav--primary .md-nav__icon{
  color:var(--nav-ink);transition:color var(--dur-fast);}
.md-nav--primary .md-nav__link:hover .md-nav__icon,
.md-nav--primary .md-nav__icon:hover{color:var(--sky-on-navy);}
/* Bei Einträgen mit eigener Seite ist der Pfeil ein Label neben dem Anker —
   die Zeile soll trotzdem als Ganzes reagieren.                          */
.md-nav--primary
  .md-nav__container:has(>label.md-nav__link:hover):not(:has(>.md-nav__link--active)){
  background:rgba(255,255,255,.05);}

/* Ausklappnavigation auf schmalen Viewports */
@media screen and (max-width:76.1875em){
  /* Material legt für jede Ebene der Schubladennavigation ein eigenes
     <nav>/<ul> an und färbt es mit der Standard-Hintergrundfarbe. Ohne
     diese Regeln stünde heller Navigationstext auf weißer Fläche.      */
  .md-nav--primary,
  .md-nav--primary .md-nav,
  .md-nav--primary .md-nav__list,
  .md-nav--primary .md-nav__title~.md-nav__list{
    background-color:var(--brand-darkblue);color:var(--nav-ink);
    box-shadow:none;}
  .md-nav--primary .md-nav__title{
    background-color:#001B30;color:var(--text-inverse);
    font-family:var(--font-head);font-weight:700;box-shadow:none;}
  .md-nav--primary .md-nav__title .md-nav__button.md-logo :is(img,svg){
    height:1.2rem;width:auto;}
  .md-nav--primary .md-nav__link{color:var(--nav-ink);}
  .md-nav--primary .md-nav__link--active{
    color:var(--text-inverse);font-weight:600;
    background-color:rgba(62,221,255,.10);
    box-shadow:inset 3px 0 0 var(--sky-on-navy);}
  .md-nav--primary .md-nav__icon{color:var(--nav-ink);}
}

/* ---------- 7a. Kopfleiste des Inhaltsbereichs (.topbar) ------------
   Struktur wie im Design System: links der Brotkrumenpfad in Mono mit
   "/" als Trenner und der aktuellen Seite als .here, rechts die
   Statuszeile mit quadratischem Statuspunkt. Die Leiste spannt über die
   ganze Spaltenbreite, deshalb hebt der negative Rand den Innenabstand
   von .md-content auf.                                                 */
.myra-topbar{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:var(--space-s);
  padding:14px var(--space-xl);margin:0;
  background:var(--ds-bg-2);
  border-bottom:1px solid var(--ds-line-soft);}
.myra-crumbs{
  display:flex;flex-wrap:wrap;gap:8px;
  font-family:var(--font-mono);font-size:.6rem;letter-spacing:.04em;
  color:var(--ds-ink-mute);}
.myra-crumbs>:not(:last-child)::after{
  content:" /";margin-left:6px;color:var(--ds-ink-mute);}
.myra-crumbs a{color:inherit;text-decoration:none;
  transition:color var(--dur-fast);}
.myra-crumbs a:hover{color:var(--ds-accent);}
.myra-crumbs .here{color:var(--ds-ink);font-weight:600;}
.myra-topbar__meta{
  display:flex;flex-wrap:wrap;gap:18px;
  font-family:var(--font-mono);font-size:.55rem;letter-spacing:.06em;
  color:var(--ds-ink-mute);}
/* Scharfe Kanten sind Markenvorgabe — der Statuspunkt ist ein Quadrat. */
.myra-topbar__dot{display:inline-block;width:7px;height:7px;
  background:var(--green-on-white);margin-right:6px;vertical-align:middle;}
[data-md-color-scheme="slate"] .myra-topbar__dot{
  background:var(--green-on-navy);}
@media screen and (max-width:76.1875em){
  .myra-topbar{padding:10px var(--space-s);}
  .myra-topbar__meta{font-size:.5rem;gap:10px;}
}

/* ---------- 8. Inhaltsverzeichnis (rechte Spalte) ---------- */
/* Material hinterlegt den Titel des Inhaltsverzeichnisses beim Mitscrollen
   mit der Standardfläche; auf der grauen Seitenfläche bliebe davon ein
   weißer Balken stehen.                                                 */
/* Aufbau wie .toc des Design Systems: Titel als Label, darunter eine
   Liste an einer senkrechten Führungslinie; der aktive Eintrag trägt
   den Akzent als 2 px starke Marke auf dieser Linie.                   */
.md-sidebar--secondary{width:11.8rem;}
.md-sidebar--secondary .md-sidebar__scrollwrap{margin:0;padding:28px 28px 56px 4px;}
.md-sidebar--secondary .md-nav__title{
  font-family:var(--font-head);font-weight:700;font-size:.5rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ds-ink-mute);
  background:transparent;box-shadow:none;padding-left:14px;margin-bottom:12px;}
.md-nav--secondary>.md-nav__list{
  display:grid;gap:1px;border-left:1px solid var(--ds-line);}
.md-nav--secondary .md-nav__link{
  font-size:.625rem;line-height:1.4;color:var(--ds-ink-mute);
  padding:6px 14px;margin:0 0 0 -1px;border-left:2px solid transparent;
  transition:color var(--dur-fast),border-color var(--dur-fast);}
.md-nav--secondary .md-nav__link:hover{color:var(--ds-ink);}
.md-nav--secondary .md-nav__link--active{
  color:var(--ds-accent);font-weight:600;border-left-color:var(--ds-accent);}

/* ---------- 9. Links und Bewegung ---------- */
/* Verweise tragen die Rollenfarbe --ds-link; der Hover-Zustand nutzt
   dieselbe Rückmeldesprache wie die Schaltflächen (--ds-accent-hover). */
.md-typeset a{color:var(--ds-link);font-weight:500;
  transition:color var(--dur-fast) ease;}
.md-typeset a:hover{color:var(--ds-accent-hover);
  text-decoration:underline;text-underline-offset:2px;}
.md-typeset a.headerlink{color:var(--ds-ink-mute);text-decoration:none;}

/* ---------- 10. Tabellen (.pv-table) ------------------------------
   Kopfzeile auf neutraler Fläche, Montserrat-Versalien, nur waagerechte
   Trennlinien — kein Rahmen, keine Zebrastreifen.                     */
/* Material zeichnet Tabellen als inline-block und laesst sie damit auf
   ihren Inhalt schrumpfen. Eine Tabelle nimmt hier immer die volle
   Textbreite ein — sonst stehen zwei Tabellen derselben Seite
   verschieden weit und die Seite wirkt ausgefranst.                    */
/* Eine Tabelle steht wie ein Hinweiskasten auf der hellen Flaeche und
   nicht auf dem Grund der Seite — der ist getoent, und ohne eigene
   Flaeche verschwaemme die Tabelle mit ihm.                            */
.md-typeset table:not([class]){
  display:table;width:100%;
  border:none;box-shadow:none;font-size:.65rem;
  background-color:var(--ds-surface);}
/* Material umschließt Tabellen per JavaScript; damit sie die volle
   Spaltenbreite nutzen, wird der Wrapper auf block gestellt. Der
   umgebende .md-typeset__scrollwrap bleibt waagerecht scrollbar.      */
.md-typeset__table{display:block;padding:0;}
.md-typeset__table table{width:100%;}
/* Material zieht den Scrollbereich mit negativen Rändern aus dem Textfluss;
   in der umrandeten Inhaltskarte würde die Tabelle sonst überstehen.    */
.md-typeset__scrollwrap{margin-left:0;margin-right:0;}
.md-typeset table:not([class]) th{
  background-color:var(--ds-surface-2);
  font-family:var(--font-head);font-weight:700;font-size:.55rem;
  letter-spacing:.10em;text-transform:uppercase;color:var(--ds-ink-mute);
  padding:12px 14px;border-bottom:1px solid var(--ds-line);
  min-width:0;}
.md-typeset table:not([class]) td{
  color:var(--ds-ink);padding:12px 14px;vertical-align:top;
  border-bottom:1px solid var(--ds-line-soft);}
.md-typeset table:not([class]) tr:hover{background-color:var(--ds-surface-2);}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) tr:hover{
  background-color:rgba(255,255,255,.03);}
.md-typeset table:not([class]) img{border:0;}
/* Ueber die volle Breite verteilt der Browser die Spalten nach ihrem
   Inhalt. Ein Wert in Code darf dabei nicht mitten im Wort brechen —
   sonst steht ein Feldname als "client_ / user_ag / ent" in der Spalte. */
.md-typeset table:not([class]) code{white-space:nowrap;}

/* Aufzaehlung in einer Zelle. Markdown-Listen sind dort nicht erlaubt,
   in der Zelle steht deshalb ein <ul class="myra-zellenliste">; Material
   formatiert nur seine eigenen Listen, also steht die Auszeichnung hier. */
.md-typeset .myra-zellenliste{
  margin:.2em 0;padding:0;list-style:none;}
.md-typeset .myra-zellenliste>li{
  position:relative;margin:0;padding-left:1em;}
.md-typeset .myra-zellenliste>li::before{
  content:"";position:absolute;left:.1em;top:.65em;
  width:4px;height:4px;border-radius:50%;
  background-color:var(--ds-accent);}

/* ---------- 11. Code ---------- */
.md-typeset code,.md-typeset kbd{font-family:var(--font-mono);
  font-size:.86em;background-color:var(--ds-surface-2);
  color:var(--ds-ink);padding:.1em .35em;}
/* Der Codeblock ist ein Kasten und traegt wie die Tabelle die helle
   Flaeche. Code mitten im Satz bleibt dagegen auf seinem getoenten Feld:
   es macht ihn im Fliesstext und in einer Tabellenzelle erkennbar.     */
.md-typeset pre>code{
  border:1px solid var(--ds-line-soft);border-left:3px solid var(--ds-accent);
  padding:14px 16px;background-color:var(--ds-surface);}
.md-typeset .highlight span.filename{
  font-family:var(--font-mono);font-size:.6rem;letter-spacing:.08em;
  text-transform:uppercase;background:var(--ds-surface-2);
  color:var(--ds-ink-mute);border-bottom:1px solid var(--ds-line-soft);}

/* ---------- 12. Darstellungsmittel — Callouts ----------------------
   Aufbau wie in der Flare-Dokumentation (Tabelle "Darstellungsmittel"):
   links ein farbiges Symbolfeld, rechts der Textbereich, ringsum ein
   Rahmen in derselben Farbe. Die Symbole sind die Originalgrafiken des
   Flare-Projekts (Info_icon.svg, attention_icon.svg, Example_icon.svg)
   als Maske, damit die Farbe je nach Farbschema wechseln kann.
   Hinweis = Sky · Achtung = Orange · Beispiel = Grün — die Farbwerte
   stammen aus dem Design System, nicht aus dem Flare-Tabellenstil:
   dessen Grundtöne (#2ad9ff, #7dff54) tragen ein weißes Symbol nicht
   kontrastreich genug.
   Der Bezeichner ("Hinweis") bleibt im Markup, ist aber unsichtbar —
   wie in Flare trägt das Symbol die Bedeutung. Für Vorlesewerkzeuge
   und die Suche bleibt er lesbar.
   Zwei Bauformen mit gleichem Aussehen:
   .admonition  — eigenständiger Block (aus "> ℹ️ **Hinweis**")
   .myra-callout — Inline-Form in Tabellenzellen; dort sind Blöcke
   nicht erlaubt, siehe convert_inline_callouts in build_site.py.     */
:root{
  --md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><path fill-rule="evenodd" d="M141.73,106.3c3.91,0,7.09,3.17,7.09,7.09v99.21c0,3.91-3.17,7.09-7.09,7.09s-7.09-3.17-7.09-7.09v-99.21c0-3.91,3.17-7.09,7.09-7.09Z"/><path fill-rule="evenodd" d="M141.73,56.69c5.87,0,10.63,4.76,10.63,10.63v.34c0,5.87-4.76,10.63-10.63,10.63s-10.63-4.76-10.63-10.63v-.34c0-5.87,4.76-10.63,10.63-10.63Z"/><path fill-rule="evenodd" d="M141.73,14.17c-70.45,0-127.56,57.11-127.56,127.56s57.11,127.56,127.56,127.56,127.56-57.11,127.56-127.56S212.18,14.17,141.73,14.17ZM0,141.73C0,63.46,63.46,0,141.73,0s141.73,63.46,141.73,141.73-63.46,141.73-141.73,141.73S0,220.01,0,141.73Z"/></svg>');
  --md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><path fill-rule="evenodd" d="M141.73,269.29c70.45,0,127.56-57.11,127.56-127.56S212.18,14.17,141.73,14.17,14.17,71.28,14.17,141.73s57.11,127.56,127.56,127.56h0ZM283.46,141.73c0,78.28-63.46,141.73-141.73,141.73S0,220.01,0,141.73,63.46,0,141.73,0s141.73,63.46,141.73,141.73ZM141.73,223.23c-5.87,0-10.63-4.76-10.63-10.63v-.34c0-5.87,4.76-10.63,10.63-10.63s10.63,4.76,10.63,10.63v.34c0,5.87-4.76,10.63-10.63,10.63ZM134.65,170.08c0,3.91,3.17,7.09,7.09,7.09s7.09-3.17,7.09-7.09v-99.21c0-3.91-3.17-7.09-7.09-7.09s-7.09,3.17-7.09,7.09v99.21Z"/></svg>');
  --md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 284.46 270.59"><path d="M142.23.5l40.29,93.57,101.44,9.41-76.54,67.24,22.4,99.38-87.6-52.01-87.6,52.01,22.4-99.38L.5,103.47l101.44-9.41L142.23.5Z"/></svg>');
  --callout-bar:2.5rem;      /* Breite des Symbolfelds (Flare: 50 px) */
  --callout-icon-size:1.6rem;
}

/* --- Farbe und Symbol je Art ------------------------------------- */
.md-typeset :is(.admonition,details),
.md-typeset .myra-callout{
  --callout:var(--ds-accent);
  --callout-icon:var(--md-admonition-icon--note);
  --callout-glyph:var(--text-inverse);}
.md-typeset :is(.admonition,details).note,
.md-typeset .myra-callout--note{
  --callout:var(--sky-on-white);
  --callout-icon:var(--md-admonition-icon--note);}
.md-typeset :is(.admonition,details).warning,
.md-typeset .myra-callout--warning{
  --callout:var(--orange-on-white);
  --callout-icon:var(--md-admonition-icon--warning);}
.md-typeset :is(.admonition,details).example,
.md-typeset .myra-callout--example{
  --callout:var(--green-on-white);
  --callout-icon:var(--md-admonition-icon--example);}

/* --- Blockform ---------------------------------------------------- */
.md-typeset :is(.admonition,details){
  position:relative;
  margin:var(--space-m) 0;
  border:1px solid var(--callout);border-radius:0;
  box-shadow:none;font-size:.7rem;
  background-color:var(--ds-surface);
  color:var(--ds-ink);
  padding:10px 14px 10px calc(var(--callout-bar) + 14px);}
.md-typeset :is(.admonition,details)>:is(.admonition-title,summary){
  position:absolute;left:0;top:0;bottom:0;width:var(--callout-bar);
  margin:0;padding:0;border:0;border-radius:0;
  background-color:var(--callout);
  font-size:0;line-height:0;color:transparent;}
.md-typeset :is(.admonition,details)>:is(.admonition-title,summary)::before{
  left:50%;top:10px;transform:translateX(-50%);
  width:var(--callout-icon-size);height:var(--callout-icon-size);
  background-color:var(--callout-glyph);
  -webkit-mask-image:var(--callout-icon);mask-image:var(--callout-icon);
  -webkit-mask-size:contain;mask-size:contain;}
.md-typeset :is(.admonition,details)>:is(.admonition-title,summary)+*{
  margin-top:0;}
.md-typeset :is(.admonition,details)>:last-child{margin-bottom:0;}

/* --- Inline-Form in Tabellenzellen -------------------------------- */
.md-typeset .myra-callout{
  display:block;position:relative;
  margin:6px 0 2px;padding:6px 8px 6px calc(var(--callout-bar) * .72 + 8px);
  border:1px solid var(--callout);
  background-color:var(--ds-surface);}
.md-typeset td>.myra-callout:first-child,
.md-typeset th>.myra-callout:first-child{margin-top:0;}
.md-typeset .myra-callout::before{
  content:"";position:absolute;left:0;top:0;bottom:0;
  width:calc(var(--callout-bar) * .72);
  background-color:var(--callout);}
.md-typeset .myra-callout::after{
  content:"";position:absolute;top:6px;
  left:calc(var(--callout-bar) * .36);transform:translateX(-50%);
  width:calc(var(--callout-icon-size) * .72);
  height:calc(var(--callout-icon-size) * .72);
  background-color:var(--callout-glyph);
  -webkit-mask:var(--callout-icon) center/contain no-repeat;
  mask:var(--callout-icon) center/contain no-repeat;}
/* Bezeichner unsichtbar, aber vorlesbar. */
.md-typeset .myra-callout__label{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;}

/* --- Dunkelmodus: helle Farbfläche, dunkles Symbol ---------------- */
[data-md-color-scheme="slate"] .md-typeset :is(.admonition,details),
[data-md-color-scheme="slate"] .md-typeset .myra-callout{
  background-color:var(--ds-surface-2);color:var(--ds-ink-dim);
  --callout-glyph:var(--ds-bg);}
[data-md-color-scheme="slate"] .md-typeset :is(.admonition,details).note,
[data-md-color-scheme="slate"] .md-typeset .myra-callout--note{
  --callout:var(--sky-on-navy);}
[data-md-color-scheme="slate"] .md-typeset :is(.admonition,details).warning,
[data-md-color-scheme="slate"] .md-typeset .myra-callout--warning{
  --callout:var(--orange-on-navy);}
[data-md-color-scheme="slate"] .md-typeset :is(.admonition,details).example,
[data-md-color-scheme="slate"] .md-typeset .myra-callout--example{
  --callout:var(--green-on-navy);}

/* ---------- 13. Handlungsschritte (Auszeichnungstabelle) ------------
   ► Arbeitsschritt · ▷ Schritt unterhalb Ebene 1 · ☑ Voraussetzung
   ↳ Zwischenergebnis · ➔ Ergebnis · ■ Punkt einer Übersicht
   build_site.py fasst das führende Zeichen in <span class="myra-step">;
   Listenpunkte mit einem solchen Marker verlieren ihr Aufzählungs-
   zeichen, damit nur das Darstellungsmittel sichtbar ist.             */
.md-typeset :is(ul,ol) li{margin-bottom:var(--space-xs);}
.md-typeset ul li::marker{color:var(--ds-accent);}

.md-typeset :is(ul,ol) li:has(>.myra-step:first-child),
.md-typeset :is(ul,ol) li:has(>p:first-child>.myra-step:first-child){
  list-style:none;}
.md-typeset .myra-step{color:var(--ds-accent);font-weight:700;
  margin-right:.15em;}
/* Übergeordnete Punkte tragen wie im Flare-Stylesheet ein Quadrat
   (ol.Overview > li > ol > li::marker). Die Glyphe zeichnet kleiner als
   ihre Schriftgröße, deshalb der Ausgleich auf Texthöhe.              */
.md-typeset .myra-step--overview{font-size:1.25em;line-height:1;
  vertical-align:baseline;margin-right:.3em;}
/* Overview-Punkte gliedern eine Anweisung, sie sind selbst kein Schritt:
   sie stehen an der Textkante, die Schritte darunter bleiben eingerückt.
   Der Betrag hebt den linken Rand der Liste (.md-typeset ul) auf.
   Nur auf oberster Ebene: ein Overview-Punkt unterhalb eines Overview-
   Punktes ist ein Unterpunkt und muss seine Einrückung behalten — sonst
   höbe der Betrag den Rand der Unterliste auf und beide Ebenen stünden
   bündig. :not(li li) grenzt die Regel auf die äußerste Liste ein.     */
.md-typeset :is(ul,ol) li:not(li li):has(>.myra-step--overview:first-child),
.md-typeset :is(ul,ol) li:not(li li):has(>p:first-child>.myra-step--overview:first-child){
  margin-left:-.625em;}
/* Ein Zwischenergebnis gehoert zu dem Schritt, der es ausloest, und ist
   selbst kein Schritt: es steht eine Stufe weiter rechts. Eingerueckt
   wird ueber den Innenabstand — der linke Aussenabstand traegt bereits
   die Einrueckung der Liste, und Folgezeilen sollen mit einruecken.    */
.md-typeset :is(ul,ol) li:has(>.myra-step--sub:first-child),
.md-typeset :is(ul,ol) li:has(>p:first-child>.myra-step--sub:first-child){
  padding-left:1.5em;}
/* Steht im Quelltext eine Leerzeile zwischen zwei Schritten, verpackt
   Python-Markdown nur diese Punkte in <p>. Ohne Nullung der Absatz-
   ränder stünden sonst einzelne Schritte weiter auseinander als ihre
   Nachbarn — die Abstände einer Anweisung bleiben so gleich.          */
.md-typeset :is(ul,ol) li>p:first-child:has(>.myra-step:first-child){
  margin-top:0;}
.md-typeset :is(ul,ol) li>p:last-child:has(>.myra-step:first-child){
  margin-bottom:0;}

/* ---------- 14. Bilder und Bildunterschriften ---------- */
.md-typeset img{border:1px solid var(--ds-line);background:#fff;max-width:100%;}
/* Piktogramme sind keine Screenshots: freigestellt und ohne Rahmen, in
   der Größe der umgebenden Zeile. Ein Symbol mitten im Satz — „klicken
   Sie auf ⧉“ oder ein Reiter in einer Aufzählung — darf die Zeile nicht
   auseinanderziehen; es bleibt deshalb in der Zeilenhöhe. Steht es allein
   in einer Tabellenzelle, ist es die Legende seiner Zeile und trägt dort
   die volle Größe. Die Dateien sind transparent und in Navy gezeichnet —
   auf dunklem Grund werden sie deshalb aufgehellt.                     */
.md-typeset img[src*="/icons/"]{
  width:1.5em;height:1.5em;object-fit:contain;
  border:none;background:transparent;vertical-align:-.35em;}
.md-typeset :is(td,th)>img[src*="/icons/"]:only-child{
  width:44px;height:44px;padding:8px;vertical-align:middle;}
[data-md-color-scheme="slate"] .md-typeset img[src*="/icons/"]{
  filter:invert(1) hue-rotate(180deg);}
/* Vorschaubild: im Text hoechstens 600 px breit, die Hoehe folgt dem
   Seitenverhaeltnis. Der Verweis zeigt dieselbe Datei in ihrer
   Aufnahmegroesse — der Zeiger sagt das an.                            */
.md-typeset a.myra-thumb{
  display:block;line-height:0;width:-moz-fit-content;width:fit-content;
  max-width:100%;cursor:zoom-in;}
.md-typeset a.myra-thumb:hover{text-decoration:none;}
.md-typeset a.myra-thumb img{
  width:600px;max-width:100%;height:auto;
  transition:border-color var(--dur-fast) ease;}
.md-typeset a.myra-thumb:hover img{border-color:var(--ds-accent);}
/* Ein Bild innerhalb einer Anweisung gehoert zu den Schritten und steht
   deshalb an derselben Kante wie das ► der ersten Ebene: 0.625em Rand der
   Liste und 1.25em Rand des Punktes. Die Bildunterschrift darunter geht
   mit. Ausserhalb einer Anweisung bleibt ein Bild an der Textkante.
   Die Auszeichnung setzt hooks/darstellung.py.                          */
.md-typeset p:has(>a.myra-schrittbild),
.md-typeset p:has(>img.myra-schrittbild),
.md-typeset p:has(>a.myra-schrittbild)+p:has(>em:only-child),
.md-typeset p:has(>img.myra-schrittbild)+p:has(>em:only-child){
  margin-left:1.875em;}
.md-typeset p>em:only-child{
  display:block;font-family:var(--font-mono);font-style:normal;
  font-size:.58rem;letter-spacing:.06em;color:var(--ds-ink-mute);
  margin-top:calc(-1*var(--space-xs));}
/* Ein Video steht wie ein Bild im Text: derselbe Rahmen, dieselbe Breite,
   und es wird nie über seine Aufnahmegröße hinaus vergrößert.          */
.md-typeset .myra-video{
  display:block;max-width:600px;width:100%;height:auto;
  margin:var(--space-sm) 0;
  border:1px solid var(--ds-line);background:#000;}

/* ---------- 15. Einstiegskacheln der Startseite (.pv-card) --------- */
/* .md-typeset vorangestellt: Material setzt display:flow-root auf Listen —
   ohne die höhere Spezifität bliebe das Raster einspaltig.             */
/* Vier gleich breite Spalten in einer Reihe; erst unterhalb der
   Tablet-Breite wird umgebrochen.                                    */
.md-typeset .myra-tiles ul{
  list-style:none;display:grid;padding:0;margin:var(--space-l) 0;
  gap:var(--space-m);grid-template-columns:repeat(4,1fr);}
.md-typeset .myra-tiles li{margin:0;}
.md-typeset .myra-tiles li::marker{content:none;}
.myra-tiles li a{
  display:flex;flex-direction:column;align-items:center;gap:12px;
  padding:20px 12px;background:var(--ds-surface);text-align:center;
  border:1px solid var(--ds-line);border-top:3px solid var(--ds-accent);
  font-family:var(--font-head);font-weight:700;font-size:.7rem;
  color:var(--ds-ink);text-decoration:none;
  transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease;}
.md-typeset .myra-tiles li a img{
  width:52px;height:52px;padding:10px;}
.myra-tiles li a:hover{
  border-color:var(--ds-accent);text-decoration:none;
  box-shadow:0 4px 16px rgba(0,94,138,.10);}
[data-md-color-scheme="slate"] .myra-tiles li a:hover{
  box-shadow:0 4px 16px rgba(0,0,0,.35);}
@media screen and (max-width:44.9375em){
  .md-typeset .myra-tiles ul{grid-template-columns:repeat(2,1fr);}
}

/* ---------- 16. Fußbereich ---------- */
.md-footer{background-color:var(--brand-darkblue);position:relative;z-index:1;}
.md-footer-meta{background-color:#001B30;}
.md-footer__title{font-family:var(--font-head);font-weight:700;}
.md-copyright{font-family:var(--font-mono);font-size:.55rem;
  letter-spacing:.08em;color:var(--nav-ink);}
.md-copyright__highlight{color:var(--nav-ink);}

/* Fusszeile: Rechtevermerk, Kontakt und rechtliche Verweise stehen als
   fortlaufende Zeile, durch einen senkrechten Strich getrennt. Die Teile
   sind Spannen und keine Kaesten — sonst fiele ein Verweis mitten im Satz
   (die Anschrift, das Kontaktformular) aus dem Textfluss. Der Strich haengt
   hinten am Teil, nicht vorn am naechsten: sonst begaenne eine umgebrochene
   Zeile mit ihm. Auf schmalen Anzeigen steht jeder Teil auf einer eigenen
   Zeile, und der Strich entfaellt. */
.myra-fuss{padding:.35rem 0;line-height:1.9;}
.myra-fuss__teil:not(:last-child)::after{content:"|";opacity:.4;
  margin:0 .35rem 0 .45rem;}
.myra-fuss__recht a{margin-left:.5rem;}
/* Die rechtlichen Verweise beginnen eine neue Zeile. Der Umbruch steht als
   Zeichen vor dem Teil und nicht als eigener Kasten — so bleibt der Hinweis
   auf das Theme dahinter auf derselben Zeile. */
.myra-fuss__umbruch::before{content:"\A";white-space:pre;}
.myra-fuss__teil.myra-fuss__zeilenende::after{content:none;}
.myra-fuss a{color:var(--nav-ink);text-decoration:underline;
  text-underline-offset:.14em;}
.myra-fuss a:hover,.myra-fuss a:focus{color:var(--sky-on-navy);}
@media screen and (max-width:44.9375em){
  .myra-fuss__teil{display:block;}
  .myra-fuss__teil:not(:last-child)::after{content:none;}
  .myra-fuss__umbruch::before{content:none;}
}
.md-footer__link:hover{color:var(--sky-on-navy);opacity:1;}
.md-footer__direction{font-family:var(--font-mono);font-size:.5rem;
  letter-spacing:.14em;text-transform:uppercase;}

/* Zurück-nach-oben-Schaltfläche wie .btn--primary */
.md-top{background-color:var(--brand-cyan);color:var(--brand-buttontext);
  font-family:var(--font-head);font-weight:700;box-shadow:var(--ds-shadow);}
.md-top:hover{background-color:var(--brand-cyan-hi);color:var(--brand-buttontext);}

/* ---------- 17. Bausteine des Design Systems 1.2 -------------------
   Nur die Komponenten, die in Markdown-Seiten vorkommen können:
   Eyebrow, Abschnittsnummer, Schaltfläche, Tag, Kennzahl.           */

/* .eyebrow / .section-head__num — Mono-Versalien in Akzentfarbe */
.md-typeset .myra-eyebrow,
.md-typeset .myra-num{
  display:block;font-family:var(--font-mono);font-weight:600;
  font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ds-accent);margin:0 0 10px;}
.md-typeset .myra-num{letter-spacing:.14em;margin-bottom:6px;}

/* .btn / .btn--primary / .btn--secondary */
.md-typeset .md-button{
  font-family:var(--font-head);font-weight:700;font-size:.65rem;
  letter-spacing:.02em;padding:10px 18px;
  border:1.5px solid var(--ds-ink);color:var(--ds-ink);
  background:transparent;transition:background-color var(--dur-fast),
  color var(--dur-fast),border-color var(--dur-fast);}
.md-typeset .md-button:hover{
  background:var(--ds-ink);color:var(--ds-bg-2);text-decoration:none;}
.md-typeset .md-button--primary{
  background:var(--brand-cyan);color:var(--brand-buttontext);
  border-color:var(--brand-cyan);}
.md-typeset .md-button--primary:hover{
  background:var(--brand-cyan-hi);border-color:var(--brand-cyan-hi);
  color:var(--brand-buttontext);}

/* .tag — Statuskennzeichen in Mono-Versalien */
.md-typeset .myra-tag{
  display:inline-flex;align-items:center;
  font-family:var(--font-mono);font-size:.5rem;font-weight:600;
  letter-spacing:.10em;text-transform:uppercase;line-height:1.4;
  padding:3px 8px;background:var(--surface-neutral);color:var(--text-muted);
  border:1px solid var(--border);}
.md-typeset .myra-tag--green {background:var(--surface-green); color:var(--green-on-white); border-color:transparent;}
.md-typeset .myra-tag--red   {background:var(--surface-red);   color:var(--red-on-white);   border-color:transparent;}
.md-typeset .myra-tag--orange{background:var(--surface-orange);color:var(--orange-on-white);border-color:transparent;}
.md-typeset .myra-tag--sky   {background:var(--surface-sky);   color:var(--sky-on-white);   border-color:transparent;}
[data-md-color-scheme="slate"] .md-typeset .myra-tag{
  background:rgba(255,255,255,.06);color:var(--ds-ink);
  border-color:var(--ds-line-soft);}
[data-md-color-scheme="slate"] .md-typeset .myra-tag--green {color:var(--green-on-navy);}
[data-md-color-scheme="slate"] .md-typeset .myra-tag--red   {color:var(--red-on-navy);}
[data-md-color-scheme="slate"] .md-typeset .myra-tag--orange{color:var(--orange-on-navy);}
[data-md-color-scheme="slate"] .md-typeset .myra-tag--sky   {color:var(--sky-on-navy);}

/* .pv-fact — Kennzahl mit Beschriftung */
.md-typeset .myra-stats{display:grid;gap:var(--space-l);
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin:var(--space-l) 0;}
.md-typeset .myra-stat__num{font-family:var(--font-head);font-weight:800;
  font-size:1.9rem;line-height:1;letter-spacing:-.02em;color:var(--ds-accent);}
.md-typeset .myra-stat__lbl{font-size:.65rem;margin-top:8px;color:var(--ds-ink);}

/* ---------- 18. Versionsverfolgung: Zeile aufklappen ----------------
   Die Zelle „Änderungsgrund“ traegt ein <details>. Zu sehen ist erst
   die Einleitung der Zeile; die Abschnitte selbst stehen darunter,
   sobald der Lesende aufklappt. Die Regeln nehmen zurueck, was der
   Abschnitt „Hinweise“ jedem <details> gibt — dort ist ein <summary>
   der farbige Balken eines Kastens, hier ist es die Zeilenbeschriftung.
   Im Handbuch klappt pdf_event_hook.py alle Zeilen auf; die
   Beschriftung entfaellt dort (templates/styles.scss).             */
.md-typeset details.myra-version{
  position:static;margin:0;padding:0;border:0;border-radius:0;
  background:none;background-color:transparent;box-shadow:none;
  font-size:inherit;color:inherit;}
[data-md-color-scheme="slate"] .md-typeset details.myra-version{
  background:none;background-color:transparent;color:inherit;}
.md-typeset details.myra-version>summary.myra-version__titel{
  position:relative;left:auto;top:auto;bottom:auto;
  display:block;width:auto;height:auto;
  margin:0;padding:0 0 0 1.2em;border:0;border-radius:0;
  background:none;background-color:transparent;
  font-size:inherit;line-height:inherit;font-weight:500;
  color:var(--ds-link);cursor:pointer;list-style:none;}
.md-typeset details.myra-version>summary.myra-version__titel::after{
  content:none;display:none;}
.md-typeset details.myra-version>summary.myra-version__titel::marker,
.md-typeset details.myra-version>summary.myra-version__titel::-webkit-details-marker{
  content:"";display:none;}
.md-typeset details.myra-version>summary.myra-version__titel:hover{
  color:var(--ds-accent-hover);text-decoration:underline;}
.md-typeset details.myra-version>summary.myra-version__titel:focus-visible{
  outline:2px solid var(--ds-accent);outline-offset:2px;}
.md-typeset details.myra-version>summary.myra-version__titel::before{
  content:"▸";position:absolute;left:0;top:0;
  width:1em;height:auto;margin:0;transform:none;
  background:none;background-color:transparent;
  -webkit-mask-image:none;mask-image:none;
  font-size:inherit;line-height:inherit;color:currentColor;}
.md-typeset details.myra-version[open]>summary.myra-version__titel::before{
  content:"▾";}
.md-typeset details.myra-version>.myra-version__inhalt{
  margin-top:var(--space-xs);}
.md-typeset details.myra-version>.myra-version__inhalt .myra-zellenliste{
  margin-top:var(--space-xxs);}
