/* ===================================================================
   Gira Dark — Umfragedesign für LimeSurvey 7
   Erbt von fruity_twentythree (Bootstrap 5). Wird als letzte Datei der
   Vererbungskette geladen und gewinnt deshalb bei GLEICHER Spezifität
   über die Reihenfolge. Das reicht aber nicht überall:

     * theme_apple.css arbeitet an vielen Stellen mit verschachtelten
       Selektoren (".question-container .ls-label-question"). Dagegen
       hilft nur dieselbe Verschachtelung, nicht !important.
     * Für ".navbar" setzt theme_apple.css ein !important — dort steht
       hier ebenfalls eines. Es ist die einzige Stelle dieser Art.
     * Grundfarben von Fläche, Schrift und Fragekarte kommen als
       INLINE-Style aus den Theme-Optionen und sind per CSS überhaupt
       nicht erreichbar. Sie stehen im <options>-Block der config.xml.

   Farb- und Maßwerte aus www.gira.de/css/app.css und
   partner.gira.de/css/v4/screen.css; Aufbau aus
   Design_Umfrage_Vorschlag_3.pdf (Referenzumfrage SID 666191).
   =================================================================== */

/* ---- 1. Schriften ------------------------------------------------- */
@font-face{
  font-family:"Univers Next W02";
  src:url("../files/fonts/univers-next-300.woff2") format("woff2"),
      url("../files/fonts/univers-next-300.woff")  format("woff");
  font-weight:300; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Univers Next W02";
  src:url("../files/fonts/univers-next-400.woff2") format("woff2"),
      url("../files/fonts/univers-next-400.woff")  format("woff");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Univers Next W02";
  src:url("../files/fonts/univers-next-500.woff2") format("woff2"),
      url("../files/fonts/univers-next-500.woff")  format("woff");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Univers Next W02";
  src:url("../files/fonts/univers-next-600.woff2") format("woff2"),
      url("../files/fonts/univers-next-600.woff")  format("woff");
  font-weight:600; font-style:normal; font-display:swap;
}

/* Die Hausschrift für Symbole. Gira liefert sie als woff und ttf aus
   (partner.gira.de/fonts/); hier liegt nur das woff — 14,8 KB, und jeder
   Browser, der Bootstrap 5 versteht, versteht auch woff. Die Buchstaben
   sind die Symbole: "H" ist der Winkel (nach unten zeigend, deshalb wird
   er beim Einsatz gedreht), "A" der Pfeil, "I" das Häkchen.
   Verwendet wird bisher nur "H" in Abschnitt 22. */
@font-face{
  font-family:"GiraIcons";
  src:url("../files/fonts/GiraIcons-200221.woff") format("woff");
  font-weight:400; font-style:normal; font-display:swap;
}

/* ---- 2. Gestaltungsvariablen -------------------------------------- */
:root{
  --gira-dunkel:        #121212;  /* Seiten- und Kopfleistenfläche      */
  --gira-schwarz:       #000;     /* Primary-Buttonfläche — bewusst
                                     ein anderes Schwarz als die Fläche */
  --gira-schwarz-hover: #191919;
  --gira-text-hell:     #d8d8d8;  /* Fließtext auf dunkel               */
  --gira-text-leise:    rgba(255,255,255,.6);
  --gira-weiss:         #fff;
  --gira-rahmen-feld:   #666;
  --gira-rahmen-sec:    #999;
  --gira-rahmen-sec-d:  #707070;  /* Secondary-Rahmen auf dunkel        */
  --gira-rahmen-sec-dh: #a0a0a0;
  --gira-fokus-text:    #262626;
  --gira-flaeche-hell:  #f2f2f2;  /* Hinweisboxen                       */
  --gira-flaeche-hover: #e7e7e7;
  --gira-hilfetext:     #707070;  /* WCAG-AA-tauglich auf Weiß          */
  --gira-fehler:        #ff6b69;
  --gira-status-gruen:  #87b400;  /* nur Statusfarbe, nie Fläche        */
  --gira-inhalt-breite: 800px;
  --gira-karte-innen:   25px;
  --gira-karte-abstand: 14px;
  --gira-kopf-hoehe:    74px;   /* 58 + 16: mehr Luft um die Wortmarke */
}

/* ---- 3. Grundfläche und Typografie -------------------------------- */
/* Die Grundfläche trägt allein der <body> — seine Farbe kommt aus den
   Theme-Optionen. #outerframeContainer darf KEINE eigene Fläche haben:
   er liegt über dem fixierten Hintergrundbild (siehe 17.6) und würde es
   sonst vollflächig verdecken. */
body,
body.default{
  background-color:var(--gira-dunkel);
  color:var(--gira-text-hell);
  font-family:"Univers Next W02", verdana, sans-serif;
  font-size:16px;
  line-height:24px;
  font-weight:400;
}
#outerframeContainer{
  background-color:transparent;
  color:var(--gira-text-hell);
  font-family:"Univers Next W02", verdana, sans-serif;
  font-size:16px;
  line-height:24px;
  font-weight:400;
}

input, select, textarea, button{
  font-family:"Univers Next W02", verdana, sans-serif;
}

/* Überschriften sind leicht — das prägende Merkmal des Gira-Systems.
   Der fetteste vorhandene Schnitt ist 600; "bold" liefe ins Leere und
   ließe den Browser künstlich fetten. */
h1,h2,h3,h4,h5,h6,
.h1,.h2,.h3,.h4,.h5,.h6{
  font-weight:300;
  color:inherit;
}
h1,.h1{ font-size:36px; line-height:40px; }
h2,.h2{ font-size:32px; line-height:36px; }
h3,.h3{ font-size:28px; line-height:32px; }
h4,.h4{ font-size:24px; line-height:28px; }
h5,.h5{ font-size:20px; line-height:26px; }

@media (min-width:992px){
  h1,.h1{ font-size:48px; line-height:52px; }
}

/* Verweise tragen einen Rahmen unten, keine Unterstreichung. So macht
   es auch Gira selbst:

     .cms-teaser-light a { text-decoration:none; border-bottom:1px black solid; }

   Der Unterschied ist sichtbar: die Unterstreichung des Browsers sitzt
   dichter am Text und wird von Unterlängen durchbrochen, der Rahmen
   läuft durch und lässt sich in Stärke und Abstand steuern. */
a{
  color:var(--gira-weiss);
  text-decoration:none;
  border-bottom:1px solid currentColor;
}
a:hover, a:focus{
  color:rgba(255,255,255,.9);
}

/* Was wie ein Bedienelement aussieht, bekommt keinen Strich. Der Block
   steht bewusst HIER und nicht weiter unten: Buttons, Kopfleistenlinks
   und Menüeinträge setzen ihre eigenen Rahmen später in dieser Datei
   und behalten sie damit. */
.btn,
.nav-link,
.dropdown-item,
.navbar-brand,
.btn-close,
a.surveytitle{
  border-bottom:0;
}

/* Verweise auf weisser Fläche stehen schwarz. Gira hält beide Fassungen
   in partner.gira.de/css/v4/screen.css bereit:

     a              { color:white; }                       (dunkler Grund)
     a:hover        { color:rgba(255,255,255,.9); }
     a.cms-a-light  { color:black; border-bottom:1px black solid; }
     a.cms-a-light:hover { color:rgba(0,0,0,.8); border-bottom-color:rgba(0,0,0,.8); }

   Der Grund entscheidet, nicht eine eigene Verweisfarbe — ein Blau gibt
   es im Gira-System nicht. */
.question-container a,
.modal a,
.completed-text a,
.ls-answers a{
  color:var(--gira-schwarz);
}
.question-container a:hover,
.question-container a:focus,
.modal a:hover,
.modal a:focus,
.completed-text a:hover,
.completed-text a:focus{
  color:rgba(0,0,0,.8);
}

/* ---- 4. Kopfleiste ------------------------------------------------- */
/* theme_apple.css setzt ".navbar { background-color:#fff !important }".
   Gegen ein !important hilft nur ein !important - an dieser einen Stelle
   unvermeidlich. */
#survey-nav,
#survey-nav.navbar,
#survey-nav.navbar-light,
#survey-nav.bg-light{
  background-color:var(--gira-dunkel) !important;
  border-bottom:0;
  min-height:var(--gira-kopf-hoehe);
  padding-left:0; padding-right:0;
}

#survey-nav .container-fluid{
  max-width:1180px;
  padding-left:24px;
  padding-right:24px;
}

/* Wortmarke statt Umfragename */
#survey-nav .navbar-brand{
  display:flex; align-items:center;
  height:var(--gira-kopf-hoehe);
  padding:0; margin:0;
}
#survey-nav .navbar-brand .gira-logo{
  display:block; width:90px; height:auto;
}

/* Servicelinks rechts als Secondary-Buttons.
   Achtung: Im Markup sind es .nav-link in <li class="nav-item">, KEINE
   .btn — eine Regel auf "#survey-nav .btn" greift hier nicht. Als reine
   Textlinks blieben sie eine visuell undefinierte Fläche. */
#survey-nav .navbar-nav .nav-link,
#survey-nav .navbar-nav .nav-link:visited,
#survey-nav .navbar-nav > li > a,
#survey-nav .navbar-nav > .nav-item > a{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:40px;
  padding:6px 22px;
  border:1px solid var(--gira-rahmen-sec-d);
  border-radius:20px;
  background-color:transparent;
  color:var(--gira-weiss);
  font-size:14px; line-height:20px;
  text-decoration:none;
  white-space:nowrap;
}
#survey-nav .navbar-nav .nav-link:hover,
#survey-nav .navbar-nav .nav-link:focus,
#survey-nav .navbar-nav .nav-link:active,
#survey-nav .navbar-nav > li > a:hover,
#survey-nav .navbar-nav > li > a:focus{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-dh);
  color:var(--gira-weiss);
  text-decoration:none;
}
#survey-nav .navbar-nav .nav-link:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}
/* Nebeneinander mit Abstand, ohne die Bootstrap-Abstände darüber */
#survey-nav .navbar-nav{
  align-items:center;
  flex-direction:row;
  gap:12px;
}
#survey-nav .navbar-nav > li,
#survey-nav .navbar-nav > .nav-item{ display:flex; align-items:center; }
#survey-nav #navbar{ padding-top:0 !important; }

/* Umschalter für kleine Bildschirme.
   Bootstrap 5 füllt das Hamburger-Symbol über die Variable
   --bs-navbar-toggler-icon-bg, die erst durch die Klassen
   "navbar-light" bzw. "navbar-dark" gesetzt wird. Beide sind hier
   bewusst nicht am Element (die Kopfleiste ist dunkel gestaltet),
   deshalb bliebe das Symbol ohne Bild — der Umschalter wäre unsichtbar
   und die Servicelinks auf dem Telefon unerreichbar. Das Symbol wird
   daher direkt gesetzt, in Weiß. */
#survey-nav .navbar-toggler{
  border:1px solid var(--gira-rahmen-sec-d);
  border-radius:20px;
  padding:6px 12px;
  min-height:40px;
  box-shadow:none;
}
#survey-nav .navbar-toggler:hover,
#survey-nav .navbar-toggler:focus{
  border-color:var(--gira-rahmen-sec-dh);
  box-shadow:none;
}
#survey-nav .navbar-toggler:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}
#survey-nav .navbar-toggler-icon{
  width:24px; height:24px;
  filter:none;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
  background-repeat:no-repeat;
  background-position:center;
  background-size:100% 100%;
}

/* Aufgeklapptes Menü auf kleinen Bildschirmen: die Buttons stehen
   untereinander und brauchen Luft zur Kopfleiste. */
@media (max-width:767.98px){
  #survey-nav #navbar.show,
  #survey-nav #navbar.collapsing{
    background-color:var(--gira-dunkel);
    padding:12px 0 16px 0;
  }
  #survey-nav .navbar-nav{
    flex-direction:column;
    align-items:stretch;
    gap:10px;
  }
  #survey-nav .navbar-nav .nav-link{ justify-content:center; }
}

/* ---- 5. Inhaltsspalte ---------------------------------------------- */
#main-row, #main-col,
.survey-form-container{
  background-color:transparent;
}
#main-col{
  max-width:var(--gira-inhalt-breite);
  margin-left:auto; margin-right:auto;
  float:none;
}
body{ padding-top:calc(var(--gira-kopf-hoehe) + 16px); }

/* ---- 6. Fortschrittsbalken ----------------------------------------- */
/* Weiß umrandet, quadratisch, auf dunklem Grund über der ersten Karte. */
.top-container{ background-color:transparent; padding:0 0 12px 0; }
.top-content{ padding-left:0; padding-right:0; }

/* theme_apple.css drueckt ".top-container .progress" auf 2px Hoehe */
.top-container .progress,
.progress{
  height:21px;
  background-color:transparent;
  border:1px solid var(--gira-weiss);
  border-radius:0;
  box-shadow:none;
}
.progress-bar{
  background-color:var(--gira-weiss);
  color:var(--gira-dunkel);
  font-size:12px; line-height:19px;
  text-align:left;
  padding-left:6px;
  border-radius:0;
  box-shadow:none;
}

/* ---- 7. Gruppentitel ----------------------------------------------- */
.group-container{ background-color:transparent; }
/* theme_apple.css: ".group-container .group-title" mit 2.85rem/600 */
.group-container .group-title,
.group-container .group-name,
.group-title, .group-name, #group-title, .ls-group-title{
  color:var(--gira-text-hell);
  font-size:20px; line-height:26px;
  font-weight:300;
  text-align:left;
  margin:0 0 12px 0;
  padding:0;
}
.group-description{
  color:var(--gira-text-leise);
  font-size:14px; line-height:24px;
  margin-bottom:12px;
}

/* Willkommens- und Abschlussseite stehen auf dunklem Grund */
.survey-name{
  color:var(--gira-weiss);
  font-weight:300;
  text-align:left;
}
.survey-description,
.survey-welcome{
  color:var(--gira-text-hell);
  text-align:left;
}

/* ---- 8. Fragekarten ------------------------------------------------ */
/* Weiß, randlos, ohne Schatten. .question-container ist zugleich eine
   Bootstrap-.row — deren negative Außenabstände werden neutralisiert,
   sonst schiebt sich die Karte über die Spaltenbreite hinaus. */
.question-container{
  background-color:var(--gira-weiss);
  color:var(--gira-dunkel);
  border:0; border-radius:0;
  box-shadow:none;
  margin:0 0 var(--gira-karte-abstand) 0;
  padding:var(--gira-karte-innen);
}

/* Spezifitaet muss ".question-container .ls-label-question" aus
   theme_apple.css (24px/600) erreichen, sonst bleibt der Fragetext fett. */
.question-container .question-title-container,
.question-container .question-text,
.question-container .ls-label-question{
  color:var(--gira-dunkel);
  font-size:16px; line-height:24px;
  font-weight:400;
}
.question-title-container{ margin-bottom:18px; }

.answer-container{ padding:0; }

/* Hilfetext unter dem Antwortbereich, klein und grau */
.question-help-container,
.ls-questionhelp,
.questionhelp{
  color:var(--gira-hilfetext);
  font-size:14px; line-height:24px;
  margin-top:14px;
}

/* Pflichtfeld-/Validierungshinweise */
.question-valid-container{
  color:var(--gira-hilfetext);
  font-size:14px; line-height:24px;
}
.question-valid-container .ls-em-error,
.text-danger, .has-error{
  color:var(--gira-fehler);
}

/* Hinweistexte stehen als normaler Text, nicht in einem Kasten.
   LimeSurvey gibt Hinweise wie "Bitte wählen Sie eine der folgenden
   Antworten" in <div class="ls-question-message ls-em-tip"> aus. Ein
   Rahmen darum wirkt wie eine Meldung und schiebt sich zwischen Frage
   und Antwort; der graue Ton setzt sie ausreichend ab. */
.question-valid-container .ls-em-tip,
.ls-em-tip,
.ls-question-message{
  background-color:transparent;
  border:0;
  border-radius:0;
  color:var(--gira-dunkel);
  box-shadow:none;
  padding:0;
  margin:0 0 14px 0;
  font-size:14px;
  line-height:20px;
}

/* Echte Statusmeldungen behalten ihre Fläche — sie sind etwas anderes
   als ein Ausfüllhinweis. */
.alert,
.alert-info{
  background-color:var(--gira-flaeche-hell);
  border:1px solid var(--gira-dunkel);
  border-radius:0;
  color:var(--gira-dunkel);
  box-shadow:none;
  padding:12px 16px;
}
.alert-success{
  background-color:var(--gira-flaeche-hell);
  border-color:var(--gira-status-gruen);
  color:var(--gira-dunkel);
}
.alert-danger{
  background-color:var(--gira-flaeche-hell);
  border-color:var(--gira-fehler);
  color:var(--gira-dunkel);
}

/* ---- 9. Buttons ---------------------------------------------------- */
/* Geometrie: volle Pille, 48 px hoch. Der Rahmen ist immer 1 px — bei
   Primary transparent —, sonst springt die Größe zwischen den Typen. */
.btn, .btn-lg{
  display:inline-flex; align-items:center; justify-content:center;
  height:48px; min-width:48px; padding:0 30px;
  font-size:14px; font-weight:400; line-height:1;
  border:1px solid transparent; border-radius:24px;
  box-shadow:none; text-decoration:none;
}

/* GRUNDFALL IST DER DUNKLE GRUND.
   Die Seitenfläche ist #121212; hell sind nur die Fragekarten und die
   Dialoge. Jeder Button ausserhalb einer Karte steht damit auf Dunkel:
   Navigator, Einleitungsseite, „Zwischengespeicherte Umfrage laden",
   Zwischenspeichern, Registrierung, Zugangscode, Kontingentmeldung.

   Vorher war es umgekehrt — hell war der Grundfall, und jede
   eigenständige Seite brauchte einen eigenen Block. Zwei davon gab es
   (.navigator, .clearall-saveall-wrapper), beim Laden einer
   zwischengespeicherten Umfrage fehlte er: „Jetzt laden" stand schwarz
   auf #121212, „Zur Umfrage zurückkehren" ebenso.

   Die helle Fassung gilt jetzt nur dort, wo wirklich eine weisse
   Fläche liegt: 17.3 (Fragekarte) und 17.13 (Dialog). */

/* Primary auf dunklem Grund: weisse Fläche, schwarze Schrift */
.btn-primary,
.btn-check + .btn-primary{
  background-color:var(--gira-weiss);
  border-color:var(--gira-weiss);
  color:var(--gira-schwarz);
  box-shadow:none;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active,
.btn-primary.active, .btn-primary:active:focus, .btn-primary:focus-visible,
.btn-check + .btn-primary:hover, .btn-check:focus + .btn-primary,
.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary{
  background-color:var(--gira-flaeche-hover);
  border-color:var(--gira-flaeche-hover);
  color:var(--gira-schwarz);
  box-shadow:none;
}
.btn-primary:disabled, .btn-primary.disabled, .btn-primary[disabled],
.btn-primary.disabled:hover, .btn-primary[disabled]:hover{
  background-color:var(--gira-rahmen-sec-d);
  border-color:var(--gira-rahmen-sec-d);
  color:var(--gira-dunkel);
  box-shadow:none; opacity:1;
}

/* Secondary — bekommt in keinem Zustand eine Fläche, nur einen Rahmen.
   Bootstrap füllt .btn-outline-* bei :hover von Haus aus; das wird hier
   in jedem Zustand zurückgenommen. */
.btn-secondary, .btn-outline-secondary{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-d);
  color:var(--gira-weiss);
  box-shadow:none;
}
.btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active,
.btn-secondary:focus-visible,
.btn-outline-secondary:hover, .btn-outline-secondary:focus,
.btn-outline-secondary:active, .btn-outline-secondary.active,
.btn-outline-secondary:focus-visible,
.btn-check:checked + .btn-outline-secondary{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-dh);
  color:var(--gira-weiss);
  box-shadow:none;
}
.btn-secondary:disabled, .btn-secondary.disabled,
.btn-outline-secondary:disabled, .btn-outline-secondary.disabled{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-d);
  color:var(--gira-rahmen-sec-d);
  opacity:1;
}

/* Textlink-Button — sieht aus wie ein Verweis und trägt deshalb
   denselben Rahmen unten statt einer Unterstreichung. */
.btn-link{
  height:auto; min-width:0; padding:0;
  border:0; border-radius:0;
  border-bottom:1px solid currentColor;
  font-size:14px; color:var(--gira-text-hell);
  text-decoration:none;
  box-shadow:none;
}
.btn-link:hover, .btn-link:focus{
  color:var(--gira-weiss);
  border-bottom:1px solid currentColor;
  text-decoration:none;
  box-shadow:none;
}

/* Tastaturbedienung muss sichtbar bleiben — auf Dunkel weiss, in Karte
   und Dialog schwarz. */
.btn:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}
.question-container .btn:focus-visible,
.modal .btn:focus-visible{
  outline-color:var(--gira-schwarz);
}
.navigator{ padding-top:10px; }

/* Tastaturbedienung muss sichtbar bleiben */
.btn:focus-visible{
  outline:2px solid var(--gira-schwarz);
  outline-offset:2px;
}
.navigator .btn:focus-visible,
.gira-dark-flaeche .btn:focus-visible{
  outline-color:var(--gira-weiss);
}

/* ---- 10. Eingabefelder --------------------------------------------- */
/* Pille für Buttons, Kante für Felder — dieser Gegensatz ist Absicht. */
/* Die Typen einzeln aufzuführen ist kein Zierat: theme_apple.css setzt
   Höhe, Schriftgrösse und Innenabstand über ".form-control.ls-important-field"
   mit (0,2,0). Ein blosses ".form-control" liegt bei (0,1,0) und verliert,
   "input[type=…].form-control" liegt bei (0,2,1) und gewinnt. Fehlte ein
   Typ in dieser Liste, fiel genau er zurück — beim Passwortfeld auf
   44 px Höhe, 14 px Schrift und die Textfarbe #636363 aus
   "input[type=password]". */
.form-control, .form-select,
input[type="text"].form-control,
input[type="email"].form-control,
input[type="number"].form-control,
input[type="password"].form-control,
input[type="tel"].form-control,
input[type="url"].form-control,
input[type="search"].form-control,
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control{
  height:48px;
  border:1px solid var(--gira-rahmen-feld);
  border-radius:0;
  background-color:var(--gira-weiss);
  color:var(--gira-dunkel);
  font-size:16px;
  box-shadow:none;
  padding:0 12px;
}
textarea.form-control{
  height:auto; min-height:96px;
  padding-top:12px; padding-bottom:12px;
  line-height:24px;
}
.form-control:hover, .form-select:hover{
  border-color:var(--gira-schwarz);
}
.form-control:focus, .form-select:focus{
  border-color:var(--gira-schwarz);
  color:var(--gira-fokus-text);
  background-color:var(--gira-weiss);
  box-shadow:none; outline:none;
}
.form-control::placeholder{ color:var(--gira-rahmen-feld); opacity:1; }
.form-control:disabled, .form-control[readonly]{
  background-color:var(--gira-flaeche-hell);
  color:var(--gira-hilfetext);
}
.form-control.is-invalid, .form-select.is-invalid,
.has-error .form-control{
  border-color:var(--gira-fehler);
  box-shadow:none;
}

/* theme_apple.css zeichnet Felder mit .ls-important-field anders aus:
     border: 2px solid #1E1E1E !important;
     box-shadow: 8px 8px 0 #EEEFF7;   (versetzter Block in Lavendel)
     height: 44px; font-size: 14px; padding-top: 14px;
   Getragen wird die Klasse nur auf den eigenständigen Seiten (Laden,
   Zwischenspeichern, Registrierung) — in den Fragekarten kommt sie
   nicht vor. Dort standen die Felder dadurch anders als überall sonst.
   Gegen ein !important hilft nur ein !important; alles Übrige lässt
   sich über die Spezifität (0,2,0) regeln. */
.form-control.ls-important-field,
.form-select.ls-important-field{
  height:48px;
  border:1px solid var(--gira-rahmen-feld) !important;
  box-shadow:none;
  padding:0 12px;
  font-size:16px;
  color:var(--gira-dunkel);
}
.form-control.ls-important-field:focus,
.form-select.ls-important-field:focus{
  border-color:var(--gira-schwarz) !important;
  box-shadow:none;
}
textarea.form-control.ls-important-field{
  height:auto; min-height:96px;
  padding-top:12px; padding-bottom:12px;
}

/* ---- 11. Radios und Auswahlkästchen -------------------------------- */
.form-check-input{
  width:18px; height:18px;
  margin-top:3px;
  border:1px solid var(--gira-schwarz);
  background-color:var(--gira-weiss);
  box-shadow:none;
}
.form-check-input:checked{
  background-color:var(--gira-schwarz);
  border-color:var(--gira-schwarz);
}
.form-check-input:focus{
  border-color:var(--gira-schwarz);
  box-shadow:none;
}
.form-check-input:focus-visible{
  outline:2px solid var(--gira-schwarz);
  outline-offset:2px;
}
/* Kein padding-left setzen! Das Kästchen wird als label::before mit
   "left:0; margin-left:-20px" links AUSSERHALB des Labels gezeichnet;
   der Innenabstand (8 px bei Optionsfeldern, 20 px bei Auswahlkästchen)
   hält den Text davon frei. Überschreibt man ihn, klebt die
   Beschriftung am Kästchen. */
.form-check-label, .answer-item label, .radio-label{
  color:var(--gira-dunkel);
  font-size:16px; line-height:24px;
}
.form-check-label{ padding-left:6px; }
.answer-item, .radio-item, .checkbox-item{
  margin-bottom:6px;
}

/* ---- 12. Einzelne Fragetypen --------------------------------------- */

/* Mehrfach-Text und mehrfache numerische Eingabe: Buchstabenlabel in
   schmaler linker Spalte, Feld rechts. */
.multiple-short-txt .answer-item label,
.numeric-multi .answer-item label{
  color:var(--gira-dunkel);
  font-size:16px;
  text-align:right;
  padding-right:16px;
}
.numeric-multi .form-control{ max-width:120px; }

/* Array: Kopfzeile und Zeilenwechsel dezent */
.array-flexible-row table,
.ls-answers table{
  color:var(--gira-dunkel);
  border-color:#dbdbdb;
}
.array-flexible-row th,
.ls-answers th{
  font-weight:500;
  border-color:#dbdbdb;
  color:var(--gira-dunkel);
}
.array-flexible-row td,
.ls-answers td{ border-color:#dbdbdb; }
.array1, .array2{ background-color:transparent; }
.ls-answers tbody tr:nth-child(even){ background-color:#f9f9f9; }

/* Ranking — Geometrie. Farben und Rahmen stehen in 17.4; hier steht
   bewusst KEINE Füllung, sonst gewinnt diese Regel über die dortige. */
.ranking .list-group{ border-radius:0; }
.ranking .list-group-item{
  border-radius:0;
  margin-bottom:2px;
  padding:8px 12px;
  font-size:14px; line-height:20px;
}
.ranking .sortable-list-target,
.ranking ul[id*="sortable-rank"]{
  min-height:120px;
}
.ranking .selector__dragHandle{ color:inherit; }

/* Ja/Nein und andere Button-Auswahlen: der reine Rahmenwechsel ist als
   Auswahlzustand zu leise, deshalb hier bewusst eine gefüllte Auswahl. */
.yes-no .btn-check:checked + .btn,
.btn-check:checked + .btn-outline-primary{
  background-color:var(--gira-schwarz);
  border-color:var(--gira-schwarz);
  color:var(--gira-weiss);
}

/* Datei-Upload */
.upload-files .btn{ margin-top:8px; }
.ls-upload-container{ color:var(--gira-dunkel); }

/* Sprachwechsler */
.language select.form-select{ max-width:280px; }

/* ---- 13. Abschluss- und Systemseiten ------------------------------- */
.completed-wrapper,
#completed-container,
.ls-completed{
  background-color:var(--gira-weiss);
  color:var(--gira-dunkel);
  padding:var(--gira-karte-innen);
}

/* Modale Dialoge (Alle Antworten löschen) */
.modal-content{ border-radius:0; border:0; }
.modal-header, .modal-footer{ border-color:#dbdbdb; }
.modal-title{ font-weight:300; }

/* ---- 14. Mobil ------------------------------------------------------ */
@media (max-width:767.98px){
  :root{ --gira-karte-innen:18px; }
  #survey-nav .container-fluid{ padding-left:16px; padding-right:16px; }
  #survey-nav .navbar-nav .nav-link{ padding:6px 0; }
  /* Mindesthöhe bleibt 48 px — zugleich die Mindestgröße für Touch */
  .btn, .btn-lg{ padding:0 22px; }
  .navigator .col-6{ padding-left:6px; padding-right:6px; }
  h1,.h1{ font-size:30px; line-height:34px; }
}

/* ---- 15. Druck ------------------------------------------------------ */
@media print{
  body, #outerframeContainer{ background:#fff; color:#000; }
  #survey-nav, .navigator, .top-container{ display:none; }
  .question-container{ border:1px solid #dbdbdb; padding:12px; }
  /* Auf Papier ist der Grund weiss — die Buttons brauchen deshalb die
     helle Fassung, nicht die des dunklen Seitengrunds. */
  .btn-primary{ background:#000; border-color:#000; color:#fff; }
  .btn-secondary, .btn-outline-secondary{
    background:transparent; border-color:#000; color:#000;
  }
  .btn-link, .control-label{ color:#000; }
  /* Die Fusszeile bleibt auf Papier stehen — das Impressum gehört mit
     aufs Blatt —, aber in dunkler Schrift auf hellem Grund. */
  #gira-footer{ border-top-color:#dbdbdb; }
  #gira-footer p, #gira-footer a{ color:#000; }
}

/* ===================================================================
   16. Nachträge — gegen Regeln, die sich nicht über die Ladereihenfolge
   schlagen lassen. Jeder Block nennt die Regel, gegen die er steht.
   =================================================================== */

/* ---- Buttons bleiben Pillen ---------------------------------------
   Die Theme-Option "cornerradius" erzeugt einen <style>-Block, der NACH
   gira_dark.css im Dokument steht und ".question-container, .form-control,
   .form-select, .btn { border-radius:0 }" setzt. Bei gleicher Spezifität
   gewinnt der spätere Block — für Karten und Felder ist das erwünscht
   (die sollen eckig sein), für Buttons nicht. Die doppelte Klasse hebt
   die Spezifität auf (0,2,0) und dreht nur die Buttons zurück. */
.btn.btn, .btn.btn-lg{ border-radius:24px; }
.yesno-button.btn-group > .btn.btn,
.yesno-button.btn-group > .btn.btn:not(:last-child),
.gender-button.btn-group > .btn.btn,
.gender-button.btn-group > .btn.btn:not(:last-child){
  border-radius:24px;
}
/* Der Textlink-Button ist davon ausgenommen */
.btn.btn-link{ border-radius:0; }

/* Ja/Nein und ähnliche Auswahlen sitzen als Gruppe nebeneinander und
   brauchen Luft, sonst kleben die Pillen aneinander. */
.yesno-button.btn-group, .gender-button.btn-group{ gap:10px; }
.yesno-button.btn-group > .btn.btn{ margin-right:0; }

/* ---- Auswahlzustand ist schwarz, nicht grün ------------------------
   theme_apple.css färbt jedes ausgewählte Antwortlabel in der
   Akzentfarbe des Themes ein:
     .radio-item input[type="radio"]:checked + label { color:#14AE5C }
   Dieselbe Spezifität genügt, weil gira_dark.css später geladen wird. */
.radio-item input[type="radio"]:checked + label,
.checkbox-item input[type="checkbox"]:checked + label{
  color:var(--gira-dunkel);
  font-weight:400;
}

/* Antwortlabels sind normal gewichtet — auch im ausgewählten Zustand */
.ls-answers label, .answer-item label,
.radio-label, .checkbox-label{
  font-weight:400;
  color:var(--gira-dunkel);
}

/* .control-label kommt auf BEIDEN Gründen vor: in den Fragekarten auf
   Weiss, auf den eigenständigen Seiten („Gespeicherter Name",
   „Passwort") auf #121212. Wie bei den Buttons ist der dunkle Grund
   der Grundfall; Karte und Dialog drehen zurück. Vorher galt überall
   die dunkle Schrift — auf der Ladeseite standen die Beschriftungen
   damit unsichtbar auf der Seitenfläche. */
.control-label{
  font-weight:400;
  color:var(--gira-text-hell);
  font-size:16px;
  line-height:24px;
}
.question-container .control-label,
.modal .control-label,
table.ls-answers .control-label{
  color:var(--gira-dunkel);
}

/* Nativ gerenderte Auswahlfelder (LimeSurvey gibt bei manchen Fragetypen
   ein blankes <input type="radio"> ohne .form-check-input aus, das der
   Browser selbst zeichnet). accent-color ist der einzige Hebel darauf. */
input[type="radio"], input[type="checkbox"],
.form-check-input{
  accent-color:var(--gira-schwarz);
}

/* ---- Hinweisboxen ---------------------------------------------------
   Der Hinweistext ("Bitte wählen Sie eine der folgenden Antworten")
   steht in einer eigenen Zeile über dem Antwortbereich. */
.ls-em-tip, .question-valid-container .ls-em-tip{
  font-size:14px; line-height:24px;
  font-style:normal;
}

/* ---- Auswahlfelder: schwarz statt Themefarbe -----------------------
   LimeSurvey zeichnet Optionsfelder und Auswahlkästchen nicht nativ,
   sondern über die Pseudoelemente des Labels ("Awesome Bootstrap
   Checkboxes"): ::before ist der Rahmen, ::after die Füllung. Deshalb
   bleibt accent-color hier wirkungslos, und theme_apple.css setzt an
   rund einem Dutzend Stellen die Akzentfarbe #14AE5C. Die Selektoren
   unten entsprechen genau diesen Regeln — gleiche Spezifität genügt,
   weil gira_dark.css später geladen wird. */

/* Rahmen des Felds */
.radio-item label::before,
.checkbox-item label::before,
.radio-item input[type=radio]:checked + label::before,
.checkbox-item input[type=checkbox]:checked + label::before{
  border-color:var(--gira-schwarz);
}

/* Füllpunkt des ausgewählten Optionsfelds */
body .answer-item label::after,
.radio-item label::after,
.radio-item input[type=radio] + label::after,
.radio-item input[type=radio]:checked + label::after{
  background-color:var(--gira-schwarz);
}

/* Beim Auswahlkästchen ist ::after das Häkchen-Zeichen, keine Fläche */
.checkbox-item input[type=checkbox]:checked + label::after{
  background-color:transparent;
  color:var(--gira-schwarz);
}

/* Ältere Bootstrap-3-Reste im geerbten Stylesheet */
.radio input[type=radio]:checked:after,
.checkbox input[type=checkbox]:checked:after,
.checkbox-inline input[type=checkbox]:checked:after{
  background-color:var(--gira-schwarz);
  border-color:var(--gira-schwarz);
}

/* Datenschutz-Hinweis nutzt einen dicken Rahmen in der Akzentfarbe */
.privacy .checkbox-item label::before{
  border:3px solid var(--gira-schwarz);
}

/* Abstand zwischen Symbol und Beschriftung in Button-Auswahlen —
   ohne ihn kleben Häkchen und Text aneinander. */
.btn .ri-, .btn [class^="ri-"], .btn [class*=" ri-"]{ margin-right:8px; }

/* ---- Zweitaktionen unter dem Navigator -----------------------------
   "Später fortfahren" und "Umfrage verlassen und Antworten löschen"
   liegen NICHT in .navigator, sondern in einem eigenen Container
   (.clearall-saveall-wrapper) — sie stehen aber auf demselben dunklen
   Seitengrund. Ohne diesen Block erben sie die helle Fassung und
   stehen schwarz auf #121212, also praktisch unsichtbar. */
.clearall-saveall-wrapper .btn,
.clearall-saveall-wrapper .btn-outline-secondary,
.clearall-saveall-wrapper .btn-secondary,
.save-links .btn, .clearall-links .btn{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-d);
  color:var(--gira-weiss);
}
.clearall-saveall-wrapper .btn:hover,
.clearall-saveall-wrapper .btn:focus,
.clearall-saveall-wrapper .btn-outline-secondary:hover,
.clearall-saveall-wrapper .btn-outline-secondary:focus{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-dh);
  color:var(--gira-weiss);
}
.clearall-saveall-wrapper .btn:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}
.clearall-saveall-wrapper{ gap:10px; margin-top:8px; }

/* Lange Beschriftungen dürfen umbrechen, ohne aus dem Button zu laufen.
   48 px bleiben die Mindesthöhe — zugleich die Mindestgröße für Touch. */
.btn, .btn-lg{
  height:auto;
  min-height:48px;
  padding-top:6px; padding-bottom:6px;
  line-height:20px;
  text-align:center;
}
.btn.btn-link{ min-height:0; padding:0; }

/* Ohne Menü (keine Servicelinks in dieser Umfrage) schiebt Bootstrap
   die Wortmarke im flex-Container nach rechts. Sie gehört nach links. */
#survey-nav .container-fluid{ justify-content:flex-start; }
#survey-nav .navbar-brand{ margin-right:auto; }
#survey-nav #navbar{ flex-grow:0; }


/* ===================================================================
   17. Überarbeitung nach der ersten Sichtprüfung (23.08.2026)
   =================================================================== */

/* ---- 17.1 Linke Kante: Fragetext und Antworten auf eine Linie ------
   Der Fragetitel sitzt in einer Bootstrap-Spalte (.col-12) und bekommt
   deren Rinnen-Innenabstand, der Antwortbereich nicht — gemessen 10 px
   Versatz. Beide direkten Kinder der Karte werden deshalb auf null
   gesetzt; die Kante macht dann allein der Innenabstand der Karte.
   Zu beachten: das Auswahlkästchen liegt 20 px LINKS vom Label, es ist
   also das linkeste sichtbare Element und muss die Kante treffen. */
.question-container > .question-title-container,
.question-container > .answer-container,
.question-container > .question-help-container,
.question-container > .question-valid-container{
  padding-left:0;
  padding-right:0;
}
/* Optionsfelder und Auswahlkästchen um die Kästchenbreite einrücken,
   damit das Kästchen — nicht die Beschriftung — bündig steht. */
.question-container .answer-container .radio-item,
.question-container .answer-container .checkbox-item{
  padding-left:20px;
}

/* ---- 17.2 Mehrfache Texte und numerische Eingaben linksbündig ------
   Vorher rechtsbündig an das Eingabefeld herangerückt. Linksbündig ist
   ruhiger und steht auf derselben Kante wie Fragetext und Karte. */
.multiple-short-txt .answer-item label,
.numeric-multi .answer-item label,
.multiple-short-txt .control-label,
.numeric-multi .control-label{
  text-align:left;
  padding-left:0;
  padding-right:12px;
}

/* ---- 17.3 Buttons INNERHALB der Fragekarte sind Secondary ----------
   Ja/Nein, "Datei hochladen" und vergleichbare Auswahlen tragen im
   Markup btn-primary, sollen aber flächenlos bleiben: eine gefüllte
   schwarze Fläche mitten in der Karte wiegt zu schwer und konkurriert
   mit "Weiter". Der Navigator bleibt unberührt — dort ist Primary
   weiterhin gefüllt. Erkennbar bleibt die Auswahl über den Rahmen
   (#999 → #000) und das Symbol im Button. */
.question-container .btn-primary,
.question-container .btn-check + .btn-primary,
.question-container .btn.upload{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec);
  color:var(--gira-schwarz);
  box-shadow:none;
}
.question-container .btn-primary:hover,
.question-container .btn-primary:focus,
.question-container .btn-primary:active,
.question-container .btn-check + .btn-primary:hover,
.question-container .btn-check:focus + .btn-primary,
.question-container .btn.upload:hover,
.question-container .btn.upload:focus{
  background-color:transparent;
  border-color:var(--gira-schwarz);
  color:var(--gira-schwarz);
  box-shadow:none;
}
/* Ausgewählt: gefüllt wie ein Primary-Button. Zur Wahl stehende
   Antworten bleiben flächenlos, die getroffene Wahl bekommt Gewicht —
   so ist auf einen Blick zu sehen, was angeklickt wurde. */
.question-container .btn-check:checked + .btn-primary,
.question-container .btn-check:checked + .btn,
.question-container .btn-check:checked + .btn:hover,
.question-container .btn-check:checked + .btn:focus,
.yes-no .btn-check:checked + .btn,
.yes-no .btn-check:checked + .btn:hover,
.btn-check:checked + .btn-outline-primary{
  background-color:var(--gira-schwarz);
  border-color:var(--gira-schwarz);
  color:var(--gira-weiss);
  box-shadow:none;
}
/* Tastaturfokus auf der getroffenen Wahl bleibt erkennbar */
.question-container .btn-check:focus-visible + .btn{
  outline:2px solid var(--gira-schwarz);
  outline-offset:2px;
}
.question-container .btn-primary:disabled,
.question-container .btn-primary.disabled{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec);
  color:var(--gira-rahmen-sec);
  opacity:1;
}

/* ---- 17.4 Ranking: Rahmen statt Fläche ----------------------------
   theme_apple.css gibt den Listenelementen den graublauen Rahmen
   #6E748C und den bereits einsortierten Elementen einen grünen
   (#14AE5C) — Letzteres fällt beim Verschieben per Doppelklick auf.
   Beides auf das Gira-Secondary-Verhalten umgestellt: unsortiert #999,
   sortiert #000, in keinem Fall eine Füllung. */
.select-sortable-lists .list-group-item,
.select-sortable-lists .sortable-item,
.select-sortable-lists:not(.ranking-advanced-style) .list-group-item{
  background-color:transparent;
  border:1px solid var(--gira-rahmen-sec);
  color:var(--gira-dunkel);
  font-weight:400;
  border-radius:0;
}
/* Einsortierte Elemente: schwarzer Rahmen statt grün */
.select-sortable-lists:not(.ranking-advanced-style) .ranking-sorted-items .sortable-item,
.ranking-advanced-style .ranking-advanced-sorted-items .sortable-item,
.ranking-advanced-style .sortable-rank{
  border:1px solid var(--gira-schwarz);
  color:var(--gira-dunkel);
}
.ranking-advanced-style .ranking-advanced-available-items .sortable-item{
  border:1px solid var(--gira-rahmen-sec);
}
.ranking-advanced-style .ranking-advanced-sorted-items .sortable-item .selector__index_row{
  color:var(--gira-dunkel);
}
.select-sortable-lists .sortable-list{ border:none; }

/* ---- 17.5 Mehr Luft zwischen den Karten ---------------------------- */
:root{ --gira-karte-abstand:28px; }

/* ---- 17.6 Hintergrundbild, fixiert --------------------------------
   partner.gira.de legt das Bild in ein fixiertes Element (#cms-background,
   position:fixed, right top, pointer-events:none) und lässt den Inhalt
   darüber scrollen — kein JavaScript, der Tiefeneindruck entsteht allein
   dadurch, dass der Hintergrund stehen bleibt.

   Hier als body::before nachgebaut. Der z-index muss 0 sein, nicht -1:
   der <body> trägt aus den Theme-Optionen eine deckende Hintergrundfarbe,
   hinter der ein -1 liegendes Pseudoelement unsichtbar bliebe. Damit das
   fixierte Element den Inhalt nicht überdeckt, bekommen Kopfleiste und
   Inhaltsrahmen einen eigenen Stapelplatz. */
/* Das Bild liegt HINTER dem Seiteninhalt (z-index:-1) und wird dadurch
   sichtbar, dass der <body> selbst durchsichtig ist und die Grundfarbe
   auf <html> sitzt. Reihenfolge von hinten nach vorn:
       html-Fläche  →  #gira-background  →  body-Inhalt

   Wichtig: Der Inhalt bekommt hier BEWUSST keinen z-index. Ein früherer
   Ansatz gab #outerframeContainer "position:relative; z-index:1" — das
   erzeugt einen Stapelkontext, in dem alle Kinder gefangen sind. Das
   Datei-Upload-Modal liegt innerhalb einer Fragekarte und damit in
   diesem Kontext; seine z-index:2001 galt nur noch dort, während
   Bootstrap die Abdunklung an den <body> hängt. Ergebnis: das Modal lag
   HINTER der Abdunklung und war weder lesbar noch bedienbar. Die
   Modals für "Alle Antworten löschen" waren nicht betroffen, weil sie
   unter #dynamicReloadContainer direkt am <body> hängen. */
html{
  background-color:var(--gira-dunkel);
}
#gira-background{
  position:fixed;
  top:0; right:0;
  width:100vw; height:2231px;
  background-image:url("../files/bg.png");
  background-repeat:no-repeat;
  background-position:right top;
  pointer-events:none;
  z-index:-1;
  will-change:transform;
}

/* Auf kleinen Bildschirmen trägt das Bild nicht — es ist für breite
   Fenster gezeichnet und kostet 1,4 MB. Dort abschalten; das Skript
   erkennt die Höhe 0 und rechnet dann gar nicht erst. */
@media (max-width:767.98px){
  #gira-background{ display:none; }
}

/* ---- 17.7 Innere Bootstrap-Zeilen bündig halten --------------------
   Antwortzeilen sind ihrerseits .row-Elemente und tragen deren negative
   Außenabstände (-12 px). Dadurch rutschte die Beschriftung bei
   "Mehrfache kurze Texte" auf 25 statt auf die Kartenkante bei 36. */
.question-container .answer-container .row{
  margin-left:0;
  margin-right:0;
}
.question-container .answer-container .row > [class*="col-"]{
  padding-left:0;
}
/* Die Beschriftungsspalte darf schmal sein — bei "A", "B", "C" steht
   sonst ein Viertel der Karte leer, bevor das Feld beginnt. */
@media (min-width:768px){
  .multiple-short-txt .answer-item > .control-label,
  .numeric-multi .answer-item > .control-label{
    flex:0 0 auto;
    width:auto;
    min-width:32px;
    max-width:40%;
  }
  .multiple-short-txt .answer-item > .control-label + div,
  .numeric-multi .answer-item > .control-label + div{
    flex:1 1 auto;
    width:auto;
  }
}

/* ---- 17.8 Ranking: Beschriftung in Textfarbe ----------------------
   theme_apple.css setzt den Listenelementen das Graublau #6E748C.
   Höhere Spezifität als die Grundregel in 17.4 nötig. */
.select-sortable-lists .list-group-item.answer-item,
.select-sortable-lists .list-group-item label,
.select-sortable-lists .ls-choice,
.select-sortable-lists .ls-choice label,
.select-sortable-lists .sortable-item,
.select-sortable-lists .sortable-item label,
.ranking .list-group-item.answer-item,
.ranking .ls-choice,
.ranking .answer-item label{
  color:var(--gira-dunkel);
}

/* ---- 17.9 Fortschrittsbalken auf Kartenbreite ---------------------
   Der Balken lief über die Karten hinaus, weil der Innenabstand des
   Inhaltsbereichs bei ihm auf null stand. */
.top-container{ padding-left:0; padding-right:0; }
.top-content{
  padding-left:var(--bs-gutter-x, 1.5rem);
  padding-right:var(--bs-gutter-x, 1.5rem);
}

/* ---- 17.10 Kopfleistenlinks als Secondary-Buttons -----------------
   "Später fortfahren" und "Umfrage verlassen" tragen im Markup .btn.
   Als reine Textlinks blieben sie eine visuell undefinierte Fläche —
   sie bekommen deshalb die Secondary-Fassung für dunklen Grund:
   flächenlos, nur Rahmen, Pillenform wie alle anderen Buttons. */
#survey-nav .btn,
#survey-nav .btn.btn,
#survey-nav .btn-outline-secondary,
#survey-nav .btn-primary{
  display:inline-flex; align-items:center; justify-content:center;
  height:auto; min-height:40px;
  padding:6px 22px;
  border:1px solid var(--gira-rahmen-sec-d);
  border-radius:20px;
  background-color:transparent;
  color:var(--gira-weiss);
  font-size:14px; line-height:20px;
  text-decoration:none;
  box-shadow:none;
}
#survey-nav .btn:hover,
#survey-nav .btn:focus,
#survey-nav .btn:active,
#survey-nav .btn-outline-secondary:hover,
#survey-nav .btn-outline-secondary:focus,
#survey-nav .btn-primary:hover,
#survey-nav .btn-primary:focus{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec-dh);
  color:var(--gira-weiss);
  text-decoration:none;
}
#survey-nav .btn:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}
/* Die Buttons stehen nebeneinander und brauchen Abstand; der frühere
   linke Innenabstand der Textlinks entfällt dafür. */
#survey-nav .navbar-nav{ gap:12px; }
#survey-nav .navbar-nav .nav-link,
#survey-nav .navbar-nav a{ padding-left:0; }
#survey-nav .navbar-nav > li,
#survey-nav .navbar-nav > .nav-item{ display:flex; align-items:center; }

/* ---- 17.11 Ranking-Beschriftung: Spezifität (0,4,0) nötig ---------
   theme_apple.css setzt die Textfarbe über
     .select-sortable-lists:not(.ranking-advanced-style)
       .ranking-available-items .sortable-item { color:#6E748C }
   Das sind vier Klassen (:not zählt mit). Alles darunter verliert,
   auch wenn es später geladen wird — deshalb hier derselbe Aufbau. */
.select-sortable-lists:not(.ranking-advanced-style) .ranking-available-items .sortable-item,
.select-sortable-lists:not(.ranking-advanced-style) .ranking-sorted-items .sortable-item,
.select-sortable-lists:not(.ranking-advanced-style) .ranking-available-items .list-group-item,
.select-sortable-lists:not(.ranking-advanced-style) .ranking-sorted-items .list-group-item{
  color:var(--gira-dunkel);
}

/* ---- 17.12 Nichts Deckendes über das Hintergrundbild ---------------
   Jeder Container zwischen <body> und den Fragekarten muss durchsichtig
   bleiben, sonst verschwindet das fixierte Bild dahinter. Sichtbar wurde
   das daran, dass es nur noch im Streifen des Fortschrittsbalkens und in
   der Scrollbar durchschien — den beiden Stellen ohne eigene Fläche. */
#outerframeContainer,
#main-row, #main-col,
form#limesurvey,
.survey-form-container,
.group-container,
.top-container,
.top-content{
  background-color:transparent;
}

/* Der <body> trägt aus den Theme-Optionen einen Inline-Style mit
   deckender Fläche. Damit das dahinterliegende Bild sichtbar wird, muss
   er durchsichtig sein — gegen einen Inline-Style hilft nur !important.
   Die Grundfarbe steht dafür weiter oben auf <html>. */
body{
  background-color:transparent !important;
}

/* ---- 17.13 Bestätigungsbutton im Dialog bleibt Primary -------------
   Die Regel aus 17.3 macht Buttons innerhalb einer Fragekarte
   flächenlos. Das Datei-Upload-Modal liegt technisch INNERHALB der
   Fragekarte (#file-upload-modal-Q… steht im .question-container) und
   fiel dadurch mit darunter. Der Bestätigungsbutton eines Dialogs ist
   aber die Hauptaktion und gehört nach dem Gira-System gefüllt —
   Abbrechen und Schließen bleiben flächenlos. */
.modal .btn-primary,
.question-container .modal .btn-primary{
  background-color:var(--gira-schwarz);
  border-color:var(--gira-schwarz);
  color:var(--gira-weiss);
}
.modal .btn-primary:hover,
.modal .btn-primary:focus,
.modal .btn-primary:active,
.question-container .modal .btn-primary:hover,
.question-container .modal .btn-primary:focus{
  background-color:var(--gira-schwarz-hover);
  border-color:var(--gira-schwarz-hover);
  color:var(--gira-weiss);
}
.modal .btn-secondary,
.modal .btn-outline-secondary,
.question-container .modal .btn-outline-secondary{
  background-color:transparent;
  border-color:var(--gira-rahmen-sec);
  color:var(--gira-schwarz);
}
.modal .btn-close{
  box-shadow:none;
  border-radius:0;
  min-height:0; height:auto;
  padding:8px;
}

/* Abstand zwischen Umschalter und Wortmarke auf kleinen Bildschirmen */
#survey-nav .navbar-toggler{ margin-right:16px; }

/* ---- 17.14 Menü der Sprachwahl ------------------------------------
   Es klappt jetzt wirklich auf (siehe die Überschreibung von
   language_changer_top_menu.twig) und braucht daher eine Gestaltung.
   Weisse Fläche auf dunklem Grund, eckig wie die Eingabefelder. Die
   Liste kann sehr lang werden — auf der Startseite stehen 125 Sprachen
   darin —, deshalb eine Höhenbegrenzung mit eigenem Bildlauf. */
/* Ohne Bootstraps JavaScript fehlt auch dessen Platzierung: Popper setzt
   sonst [data-bs-popper] und damit top/left. Das Menü landete deshalb
   173 px ÜBER der Kopfleiste. Position hier von Hand. */
#survey-nav .form-change-lang.dropdown{ position:relative; }
#survey-nav .dropdown-menu{
  position:absolute;
  top:100%;
  right:0;
  left:auto;
  margin-top:8px;
  z-index:1031;
  min-width:240px;
  max-height:min(60vh, 420px);
  overflow-y:auto;
  padding:6px 0;
  border:0;
  border-radius:0;
  background-color:var(--gira-weiss);
  box-shadow:0 8px 24px rgba(0,0,0,.35);
}
#survey-nav .dropdown-menu .dropdown-header{
  padding:8px 16px;
  font-size:12px;
  line-height:16px;
  font-weight:500;
  letter-spacing:0.04em;
  color:var(--gira-hilfetext);
}
#survey-nav .dropdown-menu .dropdown-item{
  padding:8px 16px;
  font-size:14px;
  line-height:20px;
  color:var(--gira-dunkel);
  white-space:normal;
}
#survey-nav .dropdown-menu .dropdown-item:hover,
#survey-nav .dropdown-menu .dropdown-item:focus{
  background-color:var(--gira-flaeche-hell);
  color:var(--gira-dunkel);
}
#survey-nav .dropdown-menu .dropdown-item:focus-visible{
  outline:2px solid var(--gira-schwarz);
  outline-offset:-2px;
}

/* Der Winkel am Umschalter zeigt im geöffneten Zustand nach unten.
   Er kommt aus theme_apple.css (#survey-nav .dropdown-toggle::after,
   Remix-Icon U+EA6E) — nicht aus GiraIcons, sieht aber gleich aus. */
#survey-nav .dropdown-toggle::after{
  transition:transform .15s ease-out;
}
#survey-nav .dropdown-toggle[aria-expanded="true"]::after{
  transform:rotate(90deg);
}

/* ===================================================================
   18. Matrixfragen und Kursivsatz (Sichtprüfung 23.08.2026)
   =================================================================== */

/* ---- 18.1 Kein Kursivsatz ------------------------------------------
   Hinweistexte wie "Bitte bewerten Sie auf einer Skala von 1 bis 6"
   stehen im Markup in <em> und werden dadurch kursiv gesetzt. Zum
   Absetzen genügt der hellere Grauton — kursiv liest sich in längeren
   Hinweisen schlechter und passt nicht zum Gira-Schriftbild. */
em, i,
.question-container em, .question-container i,
.ls-em-tip, .ls-em-tip em,
.question-valid-container em,
.alert em, .alert i{
  font-style:normal;
}
/* Der Hinweis steht in der normalen Textfarbe — er gehört zur Frage,
   nicht zu den Hilfetexten unter dem Antwortbereich. Abgesetzt wird er
   allein über die Position, nicht über Farbe oder Schrägung. */
.question-container em,
.ls-em-tip em{
  color:var(--gira-dunkel);
}

/* ---- 18.2 Matrixfragen ---------------------------------------------
   Es sind echte Tabellen: <thead> mit <th class="answer-text"> für die
   Skalenköpfe, je Zeile ein <th class="answertext"> mit dem Aussagetext.

   Vorgefunden: Spaltenköpfe 15,96 px in Gewicht 600 und im Graublau
   #6E748C, Zeilentexte 17,6 px in Gewicht 500 — beides deutlich über
   dem Fließtext von 16 px. Alle Überschriftenzellen stehen jetzt im
   normalen Schnitt, die ganze Tabelle in der Kleintextgröße 14/20.
   Das macht breite Skalen zugleich schmaler. */
.array-flexible-row table,
table.ls-answers,
.array-flexible-row table th,
.array-flexible-row table td,
table.ls-answers th,
table.ls-answers td{
  font-size:14px;
  line-height:20px;
  font-weight:400;
  font-style:normal;
}

/* Spaltenköpfe: sekundär, deshalb im Hilfetext-Grau */
.array-flexible-row thead th,
table.ls-answers thead th,
.array-flexible-row thead th p,
table.ls-answers thead th p{
  font-weight:400;
  font-size:14px;
  line-height:20px;
  color:var(--gira-hilfetext);
  margin-bottom:0;
}

/* Zeilentexte tragen die Aussage: dunkel, aber nicht fett */
.array-flexible-row tbody th,
table.ls-answers tbody th,
.array-flexible-row .answertext,
table.ls-answers .answertext{
  font-weight:400;
  font-size:14px;
  line-height:20px;
  color:var(--gira-dunkel);
  text-align:left;
}

/* Etwas mehr Luft in den Zellen, da die Schrift kleiner ist */
.array-flexible-row table th,
.array-flexible-row table td,
table.ls-answers th,
table.ls-answers td{
  padding:10px 8px;
  vertical-align:middle;
}

/* Matrixzellen: symmetrischer Innenabstand. Die 20 px links stammen aus
   Abschnitt 12 (.radio-item in Optionslisten, wo der Knopf links neben
   dem Text steht). In der Tabelle ist die Zelle zentriert — der Knopf
   sass dadurch gemessene 8 px rechts der Spaltenmitte.
   Spezifitaet: die Regel aus Abschnitt 12 liegt bei (0,3,0); dieselbe
   Klassenzahl plus drei Elemente ergibt hier (0,3,3) und gewinnt. Die
   aufgeloeste Darstellung in Abschnitt 20 liegt ebenfalls bei (0,3,3),
   steht aber spaeter in der Datei und behaelt deshalb ihren Wert. */
.question-container table.ls-answers tbody td.answer-item,
.question-container table.ls-answers tbody td.noanswer-item{
  padding-left:4px;
  padding-right:4px;
}

/* ---- 18.3 Spaltenköpfe: Spezifität nachziehen ---------------------
   theme_apple.css setzt ".ls-answers .ls-heading th, .ls-answers th"
   auf 1,14 rem in Gewicht 600 — Spezifität (0,2,1). Eine Regel mit
   ".array-flexible-row thead th" liegt mit (0,1,2) darunter und
   verliert. Hier derselbe Aufbau, plus die Klasse der Zelle. */
.ls-answers .ls-heading th,
.ls-answers thead th,
.ls-answers th.answer-text,
.ls-answers .ls-heading th p,
.ls-answers th.answer-text p{
  font-size:14px;
  line-height:20px;
  font-weight:400;
  font-style:normal;
  color:var(--gira-hilfetext);
}
/* Der Aussagetext der Zeile bleibt in Textfarbe */
.ls-answers tbody th.answertext,
.ls-answers th.answertext{
  font-size:14px;
  line-height:20px;
  font-weight:400;
  color:var(--gira-dunkel);
}

/* ---- 18.4 Überschriften in Matrixzellen normalisieren --------------
   Der Aussagetext einer Matrixzeile kommt aus dem Umfrageinhalt und
   enthält dort teils HTML-Überschriften — in der Referenzumfrage ein
   <h4> innerhalb der Zelle. Über die Typografieregeln aus Abschnitt 3
   wird daraus 24 px, was die Zeile weit über die Tabellenschrift hebt.
   Das war die eigentliche Ursache der zu großen Matrixzeilen; die
   Zelle selbst stand bereits auf 14 px.

   Innerhalb der Antworttabelle zählt deshalb die Tabellenschrift, egal
   welches Element der Inhalt mitbringt. Ausserhalb bleiben Überschriften
   unangetastet. */
.ls-answers th h1, .ls-answers th h2, .ls-answers th h3,
.ls-answers th h4, .ls-answers th h5, .ls-answers th h6,
.ls-answers td h1, .ls-answers td h2, .ls-answers td h3,
.ls-answers td h4, .ls-answers td h5, .ls-answers td h6,
.ls-answers th p, .ls-answers td p{
  font-size:14px;
  line-height:20px;
  font-weight:400;
  margin:0;
  color:inherit;
}

/* ===================================================================
   19. Feinschliff nach der Sichtprüfung (23.08.2026)
   =================================================================== */

/* ---- 19.1 Abstand zwischen Fragetext und Antworten ----------------
   Zwischen beiden liegt ein .question-valid-container, der die
   Validierungshinweise aufnimmt. Er ist meist LEER (Höhe 0), trug aber
   10 px oben und 20 px unten — zusammen mit dem Titelabstand ergab das
   40 px Luft, bevor die Antworten begannen. Die Ränder gelten jetzt nur
   noch, wenn dort tatsächlich etwas steht. */
/* ":empty" hilft hier nicht: der Container enthält Leerraum und gilt
   damit als nicht leer. Der Abstand hängt deshalb am Inhalt — ist
   keiner da, entsteht auch keine Lücke. */
.question-container > .question-valid-container{
  margin-top:0;
  margin-bottom:0;
}
.question-container > .question-valid-container > *{
  margin-bottom:12px;
}
.question-container > .question-title-container{
  margin-bottom:16px;
}

/* ---- 19.2 Beschriftungen der aufgelösten Tabelle ------------------
   Ist die Tabelle aufgelöst (schmale Bildschirme, Option "Wrap tables"),
   blendet LimeSurvey je Zelle ein Label mit der Skalenbeschriftung ein:
   label.ls-label-xs-visibility. Das stand auf 16 px, während die
   Tabelle auf 14 px läuft — dadurch stach "Keine Antwort" heraus. */
.ls-answers label.ls-label-xs-visibility,
.ls-answers .ls-label-xs-visibility,
.array-flexible-row .ls-label-xs-visibility{
  font-size:14px;
  line-height:20px;
  font-weight:400;
}

/* ---- 19.3 Zeilenhervorhebung ohne helle Lücken --------------------
   Die aufgelösten Zeilen trugen "margin-bottom:14px". Außenabstand
   liegt außerhalb der Zeilenfläche und bleibt beim Überfahren hell —
   die Hervorhebung zerfiel in Streifen. Der Abstand wandert deshalb
   nach innen (padding), dann deckt die Hervorhebung die ganze Zeile.
   Getrennt werden die Zeilen durch eine feine Linie statt durch Luft. */
.ls-answers tbody tr,
.array-flexible-row tbody tr{
  margin-bottom:0;
  padding:10px 0;
  border-bottom:1px solid #dbdbdb;
}
.ls-answers tbody tr:last-child,
.array-flexible-row tbody tr:last-child{
  border-bottom:0;
}
.ls-answers tbody td,
.ls-answers tbody th,
.array-flexible-row tbody td,
.array-flexible-row tbody th{
  margin-bottom:0;
}

/* Hervorhebung in einem Ton, der zu den Zebrastreifen passt */
.table-hover > tbody > tr:hover > *,
.ls-answers.table-hover > tbody > tr:hover > *{
  background-color:transparent;
  box-shadow:none;
}
.ls-answers.table-hover > tbody > tr:hover,
.array-flexible-row .table-hover > tbody > tr:hover{
  background-color:#ececec;
}

/* ---- 19.4 Fragetext dunkel, Hilfetext grau ------------------------
   Trennung der beiden grauen Blöcke, die LimeSurvey ausgibt:
   .ls-questionhelp steht ÜBER dem Antwortbereich und trägt den
   Ausfüllhinweis — er gehört zur Frage und steht in Textfarbe.
   .question-help-container steht DARUNTER und ist der eigentliche
   Hilfetext; der bleibt im Hilfetext-Grau. */
.question-container .ls-questionhelp,
.question-container .ls-questionhelp .ls-em-tip,
.question-container .ls-question-message{
  color:var(--gira-dunkel);
}
.question-container .question-help-container,
.question-container .question-help-container .ls-questionhelp{
  color:var(--gira-hilfetext);
}

/* Der Fragetext der Matrix steht in einem eigenen Block, den
   theme_apple.css hellgrau einfärbt. Er gehört zur Frage und damit in
   die Textfarbe — die Hilfetexte unter dem Antwortbereich bleiben grau. */
.question-container .question-title-container,
.question-container .question-title-container *,
.array-flexible-row .question-title-container,
.array-flexible-row .question-title-container *{
  color:var(--gira-dunkel);
}

/* ===================================================================
   20. Aufgelöste Matrix: Zeilen wie eine Optionsliste
   ===================================================================
   Ist die Tabelle aufgelöst (Träger: div.no-tables-mobile), stellt
   LimeSurvey je Antwortmöglichkeit eine Zelle untereinander. Der
   Auslieferungszustand hat drei Schwächen:

     * Jedes Label enthält ZWEI <p>-Blöcke — Skalentext und Zahl. Bei
       den Endpunkten ist der erste gefüllt, bei den mittleren Stufen
       nicht. Dadurch waren die Zellen 48 px oder 28 px hoch, je nach
       Beschriftung: die Abstände wirkten unregelmäßig.
     * Die <p> tragen ein INLINE "text-align:center" aus dem
       Umfrageinhalt. Dagegen hilft nur !important.
     * Zentrierter Text neben einem linken Kästchen liest sich schlecht
       und lässt die Zeile früh umbrechen, obwohl rechts Platz ist.

   Beides zusammengelegt: Skalentext und Zahl stehen in einer Zeile,
   linksbündig direkt neben dem Kästchen. Das gibt dem Text die volle
   Breite und macht alle Zeilen gleich hoch. */

/* Wichtig: nur solange LimeSurvey die Tabelle tatsaechlich aufloest.
   Der Traeger div.no-tables-mobile steht IMMER im Dokument — die
   Aufloesung selbst schaltet theme_apple.css erst unterhalb 768 px ein
   (@media only screen and (max-width:767px), dort ab Zeile 15706).
   Ohne dieselbe Schranke greifen die Regeln unten auch auf grossen
   Bildschirmen und machen die Matrix dort ebenfalls zur Optionsliste,
   statt sie als Tabelle zu belassen. */
@media only screen and (max-width:767px){

  .no-tables-mobile table.ls-answers tbody td.answer-item,
  .no-tables-mobile table.ls-answers tbody td.answer-item.radio-item,
  .no-tables-mobile table.ls-answers tbody td.noanswer-item{
    display:flex;
    align-items:center;
    min-height:34px;
    padding:3px 4px 3px 20px;
    margin:0;
  }

  .no-tables-mobile table.ls-answers tbody td.answer-item label,
  .no-tables-mobile table.ls-answers tbody td.answer-item label.ls-label-xs-visibility{
    display:block;
    flex:1 1 auto;
    text-align:left;
    padding-left:8px;
    margin:0;
    line-height:20px;
  }

  /* Die beiden Absaetze in eine Zeile holen. Das Inline-text-align aus
     dem Umfrageinhalt laesst sich nur so ueberschreiben. */
  .no-tables-mobile table.ls-answers tbody td.answer-item label p{
    display:inline;
    text-align:left !important;
    margin:0;
    padding:0;
  }
  /* Leerzeichen zwischen Skalentext und Zahl, sonst kleben sie aneinander */
  .no-tables-mobile table.ls-answers tbody td.answer-item label p + p::before{
    content:" ";
    white-space:pre;
  }

  /* Der Aussagetext der Zeile steht darueber und bekommt etwas Luft */
  .no-tables-mobile table.ls-answers tbody th.answertext{
    display:block;
    padding:0 4px 8px 0;
    margin:0;
  }

  /* Auf schmalen Bildschirmen blendet LimeSurvey den Tabellenkopf als
     eigenen Block ueber den Zeilen ein — eine Skalenlegende. Sie ist
     ueberfluessig, seit jede Antwortmoeglichkeit ihre Beschriftung
     selbst traegt, und kostet eine Bildschirmhoehe.
     LimeSurvey setzt "table.ls-answers thead:not(.ls-hidden)" auf
     display:block — Spezifitaet (0,3,2). Ein schlichtes "> thead" laege
     mit (0,2,2) darunter und verloere; deshalb derselbe Aufbau. */
  .no-tables-mobile table.ls-answers thead:not(.ls-hidden){
    display:none;
  }
}

/* ===================================================================
   21. Einleitungs- und Abschlussseite
   ===================================================================
   Beide Seiten stehen ausserhalb der Fragekarten und trugen daher
   eigene Groessen: gemessen wurden 11,97 / 17,955 / 39,9 px neben den
   16 px der Karten. Der Umfragetitel lief zudem in IBMPlexSerif, weil
   die Theme-Option "font" auf ibm-sans stand und ein eigenes
   Stylesheet nachlaedt (jetzt auf einen websafe-Wert gestellt).

   Hier gelten dieselben zwei Stufen wie in den Karten:
   16/24 fuer Fliesstext, 14/20 fuer Kleintexte. */

/* Schrift auch dort erzwingen, wo LimeSurvey eigene Familien setzt */
.survey-name, .completed-heading,
.survey-description, .survey-welcome,
.completed-text, .completed-wrapper,
#welcome-container, .welcome-container{
  font-family:"Univers Next W02", verdana, sans-serif;
}

/* Umfragetitel und "Vielen Dank": eine Überschrift im Gira-Schnitt,
   also leicht (300), nicht fett. */
h1.survey-name,
.survey-name,
p.completed-heading,
.completed-heading{
  font-family:"Univers Next W02", verdana, sans-serif;
  font-size:36px;
  line-height:40px;
  font-weight:300;
  margin:0 0 16px 0;
}
@media (max-width:767.98px){
  h1.survey-name, .survey-name,
  p.completed-heading, .completed-heading,
  .large-heading, div.large-heading{
    font-size:28px;
    line-height:32px;
  }
}

/* ---- 21.2 Eigenständige Seiten: Laden, Zwischenspeichern, Registrierung
   Diese vier Views (load, save, register_message, welcome) überschreiben
   ihre Überschrift mit `.large-heading`. Darauf setzt theme_apple.css
     font-family: "IBMPlexSerif"; font-size: 2.85rem; font-weight: 600;
   — die letzte Stelle, an der die Serifenschrift noch auftauchte,
   nachdem die Theme-Option „font" auf einen websafe-Wert gestellt wurde.
   Auf der Startseite fiel es nicht auf, weil dort zusätzlich
   `.survey-name` am selben Element hängt und die Regel von oben greift.
   Gleiche Spezifität (0,1,0), gira_dark.css lädt später. */
.large-heading,
div.large-heading{
  font-family:"Univers Next W02", verdana, sans-serif;
  font-size:36px;
  line-height:40px;
  font-weight:300;
  color:var(--gira-weiss);
  margin:0 0 16px 0;
}

/* Der erklärende Absatz darunter stand auf 1,2825 rem = 17,955 px —
   zwischen allen anderen Stufen. Er ist Fliesstext. */
.form-heading,
.form-heading p,
.save-message p,
.save-message .form-heading p,
.register-head p{
  font-size:16px;
  line-height:24px;
  font-weight:400;
  color:var(--gira-text-hell);
}

/* In der Fragekarte bleibt `.form-heading` dunkel — dort steht sie auf
   Weiss (z. B. über dem Bestätigungsfeld der Datei-Uploadfrage). */
.question-container .form-heading,
.question-container .form-heading p,
.modal .form-heading,
.modal .form-heading p{
  color:var(--gira-dunkel);
}

/* Fliesstext auf beiden Seiten: wie in den Antwortkarten */
.survey-description,
.survey-welcome,
.completed-text,
.completed-wrapper p,
.survey-description p,
.survey-welcome p{
  font-size:16px;
  line-height:24px;
  font-weight:400;
}

/* Datenschutzhinweis und ähnliche Zusätze: Fliesstext, nicht Kleintext.
   Vorgefunden waren 11,97 px. Ein erster Anlauf stellte sie auf die
   Kleintextstufe 14/20 — das liegt unter der Gira-Grundgroesse. Auf
   partner.gira.de steht der Rumpf auf 16/24 (screen.css, Regel "body");
   die Einleitungsseite ist Fliesstext und folgt derselben Stufe. */
.ls-privacy-body,
.ls-privacy-body p,
.ls-privacy-header,
.privacy p,
.privacy-body{
  font-size:16px;
  line-height:24px;
}
.ls-privacy-header,
.privacy-header{
  font-weight:400;
}

/* ---- 21.1 Genaue Klassennamen der beiden Seiten -------------------
   Beim ersten Anlauf verfehlt, weil die Namen nicht dem Muster folgen:
     .completed-Content   — mit grossem C mitten im Namen
     .ls-privacy-head     — nicht "-header"
   Ausserdem adressiert theme_apple.css die Ueberschrift ueber den
   Elternblock, weshalb hier dieselbe Verschachtelung noetig ist. */
.completed-wrapper .completed-text .completed-heading,
.completed-text .completed-heading,
.completed-text p.completed-heading{
  font-family:"Univers Next W02", verdana, sans-serif;
  font-size:36px;
  line-height:40px;
  font-weight:300;
  /* Die Abschlusskarte hat weisse Flaeche (siehe Abschnitt 13), der
     Text gehoert also in die dunkle Schriftfarbe. Ein erster Anlauf
     setzte hier Weiss - die Ueberschrift war dadurch unsichtbar. */
  color:var(--gira-dunkel);
  margin:0 0 16px 0;
}
.completed-wrapper .completed-text .completed-Content,
.completed-text .completed-Content,
.completed-text p.completed-Content{
  font-size:16px;
  line-height:24px;
  font-weight:400;
  color:var(--gira-dunkel);
  margin:0;
}
@media (max-width:767.98px){
  .completed-text .completed-heading,
  .completed-text p.completed-heading{
    font-size:28px;
    line-height:32px;
  }
}

/* Datenschutzblock der Einleitung: dieselbe Stufe 16/24 wie der
   uebrige Fliesstext. Die Zeile darueber bleibt durch Versalien,
   Sperrung und Gewicht 500 abgesetzt, nicht durch eine kleinere
   Schrift. */
.ls-privacy-block .ls-privacy-head,
.privacy .ls-privacy-head{
  font-size:16px;
  line-height:24px;
  font-weight:500;
  letter-spacing:0.04em;
}
.ls-privacy-block .ls-privacy-body,
.privacy .ls-privacy-body{
  font-size:16px;
  line-height:24px;
  font-weight:400;
}

/* Abschlusskarte: Innenabstand wie bei den Fragekarten, und die
   Absätze des Datenschutzblocks brauchen Luft — sie standen ohne
   Abstand direkt untereinander. */
.completed-wrapper,
#completed-container,
.ls-completed{
  padding:var(--gira-karte-innen);
}
.ls-privacy-block .ls-privacy-body,
.privacy .ls-privacy-body{
  margin-bottom:10px;
}
.ls-privacy-block .ls-privacy-head,
.privacy .ls-privacy-head{
  margin-bottom:8px;
}

/* ===================================================================
   22. Öffentliche Umfrageliste (Startseite unter „/")
   ===================================================================
   Diese Seite hängt NICHT am Theme der einzelnen Umfrage, sondern an der
   globalen Einstellung `defaulttheme`. Die stand auf fruity_twentythree
   und zeigte LimeSurvey-Grün auf Weiss; seit dem 23.08.2026 steht sie auf
   gira_dark. Das Gerüst kommt aus dem überschriebenen
   views/layout_survey_list.twig; die css/survey-list.css des Kerns
   enthält nur einen Lizenzkopf und trägt nichts bei. */

/* Inhaltsspalte wie auf den Umfrageseiten. Der Kern setzt hier einen
   .container-md, der bis 1180 px läuft — die Liste stand dadurch breiter
   als jede andere Seite. Die ID schlägt die negativen Aussenabstände von
   .row mit (1,0,0) gegen (0,1,0). */
#surveys-list-container{
  max-width:var(--gira-inhalt-breite);
  margin-left:auto;
  margin-right:auto;
}
#surveys-list-jumbotron{
  width:100%;
  padding:0;
  text-align:left;
}
#surveylist-language-changer{ margin-bottom:24px; }

.survey-list-heading{
  margin-bottom:8px;
  padding-left:0;
  padding-right:0;
}
.survey-list-heading .form-heading{
  font-size:16px;
  line-height:24px;
  font-weight:400;
  color:var(--gira-text-hell);
}

/* Die Liste: eine Zeile je Umfrage. Der Kern gibt jeden Eintrag als
   gefüllten Primary-Button in zwei Spalten aus — auf dunklem Grund sind
   das weisse Balken, die schwerer wiegen als die Seite, auf der sie
   stehen. Hier ist es eine Liste: linksbündig, durch feine Linien
   getrennt, mit einem Pfeil als Hinweis auf das Ziel. */
.survey-list{ padding-left:0; padding-right:0; }
ul.surveys-list{
  margin:0 0 24px 0;
  padding:0;
  border-top:1px solid rgba(255,255,255,.15);
}
ul.surveys-list > li{
  padding:0;
  border-bottom:1px solid rgba(255,255,255,.15);
}
/* Alle Zeilen dieser Seite stehen auf einer linken Kante bei 240 px.
   Bootstrap gibt jeder .col-* einen Innenabstand von 10,5 px und dem
   Verweis zusaetzlich einen Versatz — beides wird hier zurueckgenommen,
   sonst laufen Ueberschrift, Liste und Kontaktzeile um 8 bis 11 px
   auseinander. */
/* Aufbau wie bei Gira: der Winkel liegt absolut am linken Rand, die
   Zeile hält mit Innenabstand links Platz für ihn frei. Die Zeilenhöhe
   entsteht ebenfalls über den Innenabstand (20 + 24 + 20 = 64 px bei
   einer Zeile) — so steht der Winkel bei einem zweizeiligen Titel an der
   ERSTEN Zeile und nicht zwischen den beiden. */
a.surveytitle{
  display:block;
  position:relative;
  margin:0;
  padding:20px 0 20px 16px;
  color:var(--gira-weiss);
  font-size:16px;
  line-height:24px;
  font-weight:400;
  text-decoration:none;
}
/* theme_apple.css setzt ".surveys-list li a { margin-left: 0.5em }" mit
   Spezifität (0,1,2). Ein schlichtes "a.surveytitle" liegt bei (0,1,1)
   darunter und verliert — die Zeilen standen dadurch gemessene 8 px
   rechts der übrigen linken Kante. Der Kindpfad hebt auf (0,1,3). */
ul.surveys-list > li > a.surveytitle{
  margin-left:0;
}

/* Der Winkel steht VOR dem Text. Übernommen aus partner.gira.de
   (css/v4/screen.css), dort drei Regeln:

     a.rsaquo, a.cms-a-rsaquo { position:relative; padding-left:16px; }
     a.rsaquo::before { position:absolute; top:5px; left:0;
                        content:"H"; font-family:GiraIcons;
                        font-size:12px; line-height:12px; }
     a.rsaquo::before { transform:rotate(-90deg); }

   Das "H" zeigt im Font nach UNTEN — dieselbe Glyphe trägt bei Gira alle
   vier Richtungen, gedreht wird über transform. Ein Zwischenschritt hat
   stattdessen U+203A (›) aus Univers Next genommen, um den Font zu
   sparen; das Zeichen ist aber ein Anführungszeichen und trifft die Form
   der Hausschrift nicht. Jetzt der Font selbst.

   "top" ist gegenüber Gira nachgerechnet: der Innenabstand oben misst
   20 px, die erste Zeile 24 px, die Glyphe 12 px — Mitte der ersten
   Zeile also 20 + (24 − 12) / 2 = 26 px.

   Der Abstand zum Text ist der Innenabstand links (16 px, wie bei Gira)
   abzüglich der Tinte. Nachgemessen im Font: die Glyphe füllt ihre
   Vorschubbreite von 12 px vollständig, ist aber nur 6,85 px hoch —
   nach der Drehung also 6,85 px BREIT, mittig in einem 12-px-Kasten.
   Sichtbar bleiben davon 2,6 bis 9,4 px, der Abstand zum Text misst
   damit 6,6 px. Mit den ursprünglichen 20 px waren es 10,6 px und der
   Winkel stand zu weit vom Titel ab. */
a.surveytitle::before{
  content:"H";
  position:absolute;
  left:0;
  top:26px;
  font-family:"GiraIcons";
  font-size:12px;
  line-height:12px;
  transform:rotate(-90deg);
  color:var(--gira-text-leise);
}
/* Der Buchstabe ist ein Symbol, kein Text — Vorleseprogramme sollen ihn
   nicht als "H" ansagen. Die Ersatztext-Schreibweise kennen ältere
   Browser nicht und würden die ganze Regel verwerfen, deshalb im
   @supports-Block. */
@supports (content: "x" / "y"){
  a.surveytitle::before{ content:"H" / ""; }
}
a.surveytitle:hover,
a.surveytitle:focus{
  color:var(--gira-weiss);
  background-color:rgba(255,255,255,.06);
  text-decoration:none;
}
a.surveytitle:hover::before,
a.surveytitle:focus::before{
  color:var(--gira-weiss);
}
a.surveytitle:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:-2px;
}

/* Leere Liste: der Satz steht an der Stelle, an der sonst die Liste
   beginnt, und in derselben Stufe wie der Zwischentitel. */
.survey-list-empty{
  padding-left:0;
  padding-right:0;
  margin-bottom:24px;
  font-size:16px;
  line-height:24px;
  color:var(--gira-text-hell);
}

/* Kontaktzeile unter der Liste ist Nebentext, nicht Fliesstext. */
.survey-contact{
  padding-left:0;
  font-size:14px;
  line-height:20px;
  color:var(--gira-text-leise);
}

/* ===================================================================
   23. Fusszeile
   ===================================================================
   Der Kern liefert subviews/footer/footer.twig leer aus; das Theme
   füllt sie. Eingebunden wird sie von allen vier Layouts, die Zeile
   steht damit auf jeder Seite — Umfrage, Startseite, Fehlerseite,
   Wartungsseite.

   Ausgerichtet auf dieselbe Spalte wie der übrige Inhalt (800 px,
   zentriert), abgesetzt durch dieselbe feine Linie wie die Einträge
   der Umfrageliste. */
#gira-footer{
  margin-top:48px;
  padding:24px 0 40px 0;
  border-top:1px solid rgba(255,255,255,.15);
}
/* Die 24 px kommen zu den 800 px hinzu, weil der Innenabstand von je
   12 px innerhalb der Breite liegt: aussen 824 px, der Text beginnt
   damit auf denselben 240 px wie Überschrift, Liste und Fragekarten.
   Auf schmalen Schirmen bleibt der Abstand zum Rand erhalten. */
#gira-footer .gira-footer-inner{
  max-width:calc(var(--gira-inhalt-breite) + 24px);
  margin-left:auto;
  margin-right:auto;
  padding-left:12px;
  padding-right:12px;
}
#gira-footer p{
  margin:0;
  font-size:14px;
  line-height:20px;
  color:var(--gira-text-leise);
}
#gira-footer a{
  color:var(--gira-text-hell);
  text-decoration:none;
  border-bottom:1px solid currentColor;
}
#gira-footer a:hover,
#gira-footer a:focus{
  color:var(--gira-weiss);
  text-decoration:none;
}
#gira-footer a:focus-visible{
  outline:2px solid var(--gira-weiss);
  outline-offset:2px;
}

/* ===================================================================
   24. Fehlerseite
   ===================================================================
   Sie erscheint, wenn eine Umfrage gar nicht erst gerendert werden kann.
   theme_apple.css baut sie für WEISSEN Grund:

     body.error-page          { background:#ffffff; height:100vh; }
     body.error-page .error-content { color:#1E1E1E; }

   Auf unserem dunklen Grund stand der Grund für den Abbruch damit
   nahezu unsichtbar da — die Überschrift war zu lesen, der eigentliche
   Satz („Es gibt keine Fragen in dieser Umfrage.") nicht. Die Farben
   werden deshalb umgekehrt; die Regel für "p" trägt im Kern ein
   !important und braucht hier eines. */
/* Die Fehlerseite lief komplett in Arial: theme_apple.css setzt
   "body.error-page { font-family: Arial, Helvetica, sans-serif }" — sie
   ist die einzige Ansicht, die eine eigene Schrift mitbringt. Dazu die
   bekannten krummen Groessen 39,9 und 17,955 px. Beides auf dieselbe
   Stufe gebracht wie Einleitungs-, Abschluss-, Lade- und
   Registrierungsseite: 36/40 in Gewicht 300 und 16/24. */
body.error-page,
body.error-page .error-title,
body.error-page .error-content,
body.error-page .error-link{
  font-family:"Univers Next W02", verdana, sans-serif;
}
body.error-page .error-title{
  color:var(--gira-weiss);
  font-size:36px;
  line-height:40px;
  font-weight:300;
  letter-spacing:0;
  margin:0 0 16px 0;
}
body.error-page .error-content,
body.error-page .error-link{
  font-size:16px;
  line-height:24px;
}
@media (max-width:767.98px){
  body.error-page .error-title{
    font-size:28px;
    line-height:32px;
  }
}
body.error-page .error-content,
body.error-page .col{
  color:var(--gira-text-hell);
}
body.error-page .error-title p,
body.error-page .error-content p{
  color:var(--gira-text-hell) !important;
  margin:0;
}
body.error-page .error-content{
  margin-bottom:12px;
}

/* Ohne die entfallene Grafik (siehe views/layout_errors.twig) hätte der
   Text die ganze Breite des Bootstrap-Containers — 1140 px. Begrenzt auf
   dieselbe Spalte wie überall sonst. */
body.error-page .container{
  max-width:calc(var(--gira-inhalt-breite) + 24px);
  padding-left:12px;
  padding-right:12px;
}

/* Platz fuer die angehaengte Kopfleiste. theme_apple.css setzt der
   Fehlerseite "height:100vh" und dem Container "height:90%"; die
   Kopfleiste liegt fest darueber und verdeckte sonst den oberen Rand. */
body.error-page{
  padding-top:var(--gira-kopf-hoehe);
  min-height:100vh;
  height:auto;
}
body.error-page .container{
  height:auto;
  min-height:calc(100vh - var(--gira-kopf-hoehe) - 120px);
}

