/* GS-LOTTE-RUBRIC-COLOURS - 2026-08-26
 * The customer asked for one thing above all: "dass die Farbgebung stringent
 * und durchdacht ist" - every rubric keeps its navigation colour throughout its
 * own pages. The structure for that already existed; three things broke it.
 *
 * 1) Two dark tones were simply wrong values. --gsl-rubric-betreuung-dark held
 *    the green of Schulkonzept, so yellow had no dark tone of its own at all,
 *    and --gsl-rubric-kontakt-dark held a navy, so orange read as blue. Both
 *    are replaced below with tones inside their own hue. Measured against the
 *    surfaces they actually appear on, all well past WCAG AA 4.5:1:
 *
 *      #5C4606 Betreuung   white on it 9.00 · on soft #FCE08F 6.94 · on fill #F0BF35 5.23
 *      #6B350E Kontakt     white on it 9.81 · on soft #FAC8A0 6.46 · on fill #F09F58 4.58
 *
 *    As navigation text on paper: Aktuelles 11.15, Schulkonzept 11.68,
 *    Schulgemeinschaft 12.14, Betreuung 9.00, Kontakt 9.81.
 *
 * 2) The main navigation painted every label in one blue, so the rubric colour
 *    only appeared once the menu was already open. The label now carries its
 *    own rubric, which is what makes the colour readable at a glance.
 *
 * 3) The coloured rules must follow the visible word only. A dedicated label
 *    span isolates the word from the link padding, so every rule is exactly as
 *    wide as its title without inheriting the clickable area.
 *
 * The shifted rubric assignment that caused the visible mix-up was a template
 * defect, not a colour one - fixed in Partials/Header/Main.html.
 */

:root {
  /* Ein Masterwert pro Rubrik. Der Style-Switcher setzt ausschliesslich die
     jeweilige --gsl-rubric-user-*-Variable; Akzent, Unterstrich, Hero,
     Flaechen, Rahmen und Texttoene werden hier zentral daraus abgeleitet.
     Ohne gespeicherte Wahl bleiben die von der Kundin bestaetigten fuenf
     Hauptfarben unveraendert. */
  --gsl-rubric-aktuelles-master: var(--gsl-rubric-user-aktuelles, #DC624A);
  --gsl-rubric-schulkonzept-master: var(--gsl-rubric-user-schulkonzept, #6FA840);
  --gsl-rubric-schulgemeinschaft-master: var(--gsl-rubric-user-schulgemeinschaft, #3399B5);
  --gsl-rubric-betreuung-master: var(--gsl-rubric-user-betreuung, #D6A210);
  --gsl-rubric-kontakt-master: var(--gsl-rubric-user-kontakt, #E08540);

  --gsl-rubric-aktuelles: var(--gsl-rubric-aktuelles-master);
  --gsl-rubric-aktuelles-soft: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 34%, #FFFFFF);
  --gsl-rubric-aktuelles-fill: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 72%, #FFFFFF);
  --gsl-rubric-aktuelles-dark: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 44%, #101828);
  --gsl-rubric-aktuelles-strong: var(--gsl-rubric-aktuelles-dark);
  --gsl-rubric-aktuelles-action: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 44%, #101828);
  --gsl-rubric-aktuelles-surface: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 10%, #FFFFFF);
  --gsl-rubric-aktuelles-border: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 42%, #475467);

  --gsl-rubric-schulkonzept: var(--gsl-rubric-schulkonzept-master);
  --gsl-rubric-schulkonzept-soft: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 34%, #FFFFFF);
  --gsl-rubric-schulkonzept-fill: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 72%, #FFFFFF);
  --gsl-rubric-schulkonzept-dark: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 44%, #101828);
  --gsl-rubric-schulkonzept-strong: var(--gsl-rubric-schulkonzept-dark);
  --gsl-rubric-schulkonzept-action: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 44%, #101828);
  --gsl-rubric-schulkonzept-surface: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 10%, #FFFFFF);
  --gsl-rubric-schulkonzept-border: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 42%, #475467);

  --gsl-rubric-schulgemeinschaft: var(--gsl-rubric-schulgemeinschaft-master);
  --gsl-rubric-schulgemeinschaft-soft: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 34%, #FFFFFF);
  --gsl-rubric-schulgemeinschaft-fill: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 72%, #FFFFFF);
  --gsl-rubric-schulgemeinschaft-dark: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 44%, #101828);
  --gsl-rubric-schulgemeinschaft-strong: var(--gsl-rubric-schulgemeinschaft-dark);
  --gsl-rubric-schulgemeinschaft-action: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 44%, #101828);
  --gsl-rubric-schulgemeinschaft-surface: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 10%, #FFFFFF);
  --gsl-rubric-schulgemeinschaft-border: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 42%, #475467);

  --gsl-rubric-betreuung: var(--gsl-rubric-betreuung-master);
  --gsl-rubric-betreuung-soft: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 34%, #FFFFFF);
  --gsl-rubric-betreuung-fill: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 72%, #FFFFFF);
  --gsl-rubric-betreuung-dark: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 44%, #101828);
  --gsl-rubric-betreuung-strong: var(--gsl-rubric-betreuung-dark);
  --gsl-rubric-betreuung-action: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 44%, #101828);
  --gsl-rubric-betreuung-surface: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 10%, #FFFFFF);
  --gsl-rubric-betreuung-border: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 42%, #475467);

  --gsl-rubric-kontakt: var(--gsl-rubric-kontakt-master);
  --gsl-rubric-kontakt-soft: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 34%, #FFFFFF);
  --gsl-rubric-kontakt-fill: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 72%, #FFFFFF);
  --gsl-rubric-kontakt-dark: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 44%, #101828);
  --gsl-rubric-kontakt-strong: var(--gsl-rubric-kontakt-dark);
  --gsl-rubric-kontakt-action: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 44%, #101828);
  --gsl-rubric-kontakt-surface: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 10%, #FFFFFF);
  --gsl-rubric-kontakt-border: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 42%, #475467);

  /* Service bleibt als technischer Identifier bestehen, ist visuell aber
     dieselbe gemeinsame Rubrik Kontakt & Service — keine sechste Farbwelt. */
  --gsl-rubric-service-soft: var(--gsl-rubric-kontakt-soft);
  --gsl-rubric-service-fill: var(--gsl-rubric-kontakt-fill);
  --gsl-rubric-service: var(--gsl-rubric-kontakt);
  --gsl-rubric-service-dark: var(--gsl-rubric-kontakt-dark);

}

[data-theme="dark"] {
  --gsl-rubric-aktuelles-soft: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 18%, #101828);
  --gsl-rubric-aktuelles-fill: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 34%, #101828);
  --gsl-rubric-aktuelles: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 72%, #FFFFFF);
  --gsl-rubric-aktuelles-dark: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 24%, #FFFFFF);
  --gsl-rubric-aktuelles-strong: var(--gsl-rubric-aktuelles);
  --gsl-rubric-aktuelles-surface: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 10%, #101828);
  --gsl-rubric-aktuelles-border: color-mix(in srgb, var(--gsl-rubric-aktuelles-master) 48%, #475467);

  --gsl-rubric-schulkonzept-soft: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 18%, #101828);
  --gsl-rubric-schulkonzept-fill: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 34%, #101828);
  --gsl-rubric-schulkonzept: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 72%, #FFFFFF);
  --gsl-rubric-schulkonzept-dark: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 24%, #FFFFFF);
  --gsl-rubric-schulkonzept-strong: var(--gsl-rubric-schulkonzept);
  --gsl-rubric-schulkonzept-surface: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 10%, #101828);
  --gsl-rubric-schulkonzept-border: color-mix(in srgb, var(--gsl-rubric-schulkonzept-master) 48%, #475467);

  --gsl-rubric-schulgemeinschaft-soft: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 18%, #101828);
  --gsl-rubric-schulgemeinschaft-fill: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 34%, #101828);
  --gsl-rubric-schulgemeinschaft: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 72%, #FFFFFF);
  --gsl-rubric-schulgemeinschaft-dark: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 24%, #FFFFFF);
  --gsl-rubric-schulgemeinschaft-strong: var(--gsl-rubric-schulgemeinschaft);
  --gsl-rubric-schulgemeinschaft-surface: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 10%, #101828);
  --gsl-rubric-schulgemeinschaft-border: color-mix(in srgb, var(--gsl-rubric-schulgemeinschaft-master) 48%, #475467);

  --gsl-rubric-betreuung-soft: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 18%, #101828);
  --gsl-rubric-betreuung-fill: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 34%, #101828);
  --gsl-rubric-betreuung: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 72%, #FFFFFF);
  --gsl-rubric-betreuung-dark: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 24%, #FFFFFF);
  --gsl-rubric-betreuung-strong: var(--gsl-rubric-betreuung);
  --gsl-rubric-betreuung-surface: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 10%, #101828);
  --gsl-rubric-betreuung-border: color-mix(in srgb, var(--gsl-rubric-betreuung-master) 48%, #475467);

  --gsl-rubric-kontakt-soft: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 18%, #101828);
  --gsl-rubric-kontakt-fill: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 34%, #101828);
  --gsl-rubric-kontakt: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 72%, #FFFFFF);
  --gsl-rubric-kontakt-dark: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 24%, #FFFFFF);
  --gsl-rubric-kontakt-strong: var(--gsl-rubric-kontakt);
  --gsl-rubric-kontakt-surface: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 10%, #101828);
  --gsl-rubric-kontakt-border: color-mix(in srgb, var(--gsl-rubric-kontakt-master) 48%, #475467);

  --gsl-rubric-service-soft: var(--gsl-rubric-kontakt-soft);
  --gsl-rubric-service-fill: var(--gsl-rubric-kontakt-fill);
  --gsl-rubric-service: var(--gsl-rubric-kontakt);
  --gsl-rubric-service-dark: var(--gsl-rubric-kontakt-dark);
}

.gsl-nav__link {
  color: var(--gsl-rubric-dark, var(--gsl-blue));
  border-bottom-color: transparent;
}

.gsl-nav__link::after {
  content: none;
}

.gsl-nav__label {
  position: relative;
  display: inline-block;
}

.gsl-nav__label::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 4px;
  background: var(--gsl-rubric, var(--gsl-blue));
}

.gsl-nav__item:hover > .gsl-nav__link,
.gsl-nav__item:focus-within > .gsl-nav__link,
.gsl-nav__item.is-open > .gsl-nav__link,
.gsl-nav__item.is-active > .gsl-nav__link {
  color: var(--gsl-rubric-dark, var(--gsl-blue));
}

/* The rubric colour never reached the word itself, only the rule underneath:
   contrast-default-fix.css sets `html[data-contrast="default"] a { color: inherit }`
   with a higher specificity than the plain `.gsl-nav__link` rule above, so all
   five titles rendered in the same ink. Scoped to the default contrast mode so
   the contrast switcher keeps full control in its own modes. */
html[data-contrast="default"] .gsl-nav__link {
  color: var(--gsl-rubric-dark, var(--gsl-blue));
}

html[data-contrast="default"] .gsl-nav__link,
.gsl-nav__link {
  font-weight: var(--gsl-fw-black);
}

.gsl-nav__item:hover > .gsl-nav__link,
.gsl-nav__item:focus-within > .gsl-nav__link,
.gsl-nav__item.is-open > .gsl-nav__link,
.gsl-nav__item.is-active > .gsl-nav__link {
  border-bottom-color: transparent;
  color: var(--gsl-rubric-dark, var(--gsl-blue));
}

/* =====================================================
   SEITENWEITER RUBRIKVERTRAG

   Der Body liefert die aktuelle Rubrik. Innerhalb des Hauptinhalts gewinnt
   diese Seitenrubrik bewusst auch gegen versehentlich anders klassifizierte
   Kacheln oder wiederverwendete Komponenten. Headernavigation, Partnerleiste,
   Footer und Rechtstexte bleiben eigenstaendige, neutrale Systeme.
   ===================================================== */
body.rubric-aktuelles {
  --gsl-page-accent: var(--gsl-rubric-aktuelles);
  --gsl-page-soft: var(--gsl-rubric-aktuelles-soft);
  --gsl-page-fill: var(--gsl-rubric-aktuelles-fill);
  --gsl-page-text: var(--gsl-rubric-aktuelles-dark);
  --gsl-page-strong: var(--gsl-rubric-aktuelles-strong);
  --gsl-page-action: var(--gsl-rubric-aktuelles-action);
  --gsl-page-surface: var(--gsl-rubric-aktuelles-surface);
  --gsl-page-border: var(--gsl-rubric-aktuelles-border);
}

body.rubric-schulkonzept {
  --gsl-page-accent: var(--gsl-rubric-schulkonzept);
  --gsl-page-soft: var(--gsl-rubric-schulkonzept-soft);
  --gsl-page-fill: var(--gsl-rubric-schulkonzept-fill);
  --gsl-page-text: var(--gsl-rubric-schulkonzept-dark);
  --gsl-page-strong: var(--gsl-rubric-schulkonzept-strong);
  --gsl-page-action: var(--gsl-rubric-schulkonzept-action);
  --gsl-page-surface: var(--gsl-rubric-schulkonzept-surface);
  --gsl-page-border: var(--gsl-rubric-schulkonzept-border);
}

body.rubric-schulgemeinschaft {
  --gsl-page-accent: var(--gsl-rubric-schulgemeinschaft);
  --gsl-page-soft: var(--gsl-rubric-schulgemeinschaft-soft);
  --gsl-page-fill: var(--gsl-rubric-schulgemeinschaft-fill);
  --gsl-page-text: var(--gsl-rubric-schulgemeinschaft-dark);
  --gsl-page-strong: var(--gsl-rubric-schulgemeinschaft-strong);
  --gsl-page-action: var(--gsl-rubric-schulgemeinschaft-action);
  --gsl-page-surface: var(--gsl-rubric-schulgemeinschaft-surface);
  --gsl-page-border: var(--gsl-rubric-schulgemeinschaft-border);
}

body.rubric-betreuung {
  --gsl-page-accent: var(--gsl-rubric-betreuung);
  --gsl-page-soft: var(--gsl-rubric-betreuung-soft);
  --gsl-page-fill: var(--gsl-rubric-betreuung-fill);
  --gsl-page-text: var(--gsl-rubric-betreuung-dark);
  --gsl-page-strong: var(--gsl-rubric-betreuung-strong);
  --gsl-page-action: var(--gsl-rubric-betreuung-action);
  --gsl-page-surface: var(--gsl-rubric-betreuung-surface);
  --gsl-page-border: var(--gsl-rubric-betreuung-border);
}

body.rubric-kontakt,
body.rubric-service {
  --gsl-page-accent: var(--gsl-rubric-kontakt);
  --gsl-page-soft: var(--gsl-rubric-kontakt-soft);
  --gsl-page-fill: var(--gsl-rubric-kontakt-fill);
  --gsl-page-text: var(--gsl-rubric-kontakt-dark);
  --gsl-page-strong: var(--gsl-rubric-kontakt-strong);
  --gsl-page-action: var(--gsl-rubric-kontakt-action);
  --gsl-page-surface: var(--gsl-rubric-kontakt-surface);
  --gsl-page-border: var(--gsl-rubric-kontakt-border);
}

/* Die Kundinnenregel ist bewusst wörtlich: Die Rubrik-Masterfarbe ist sowohl
   der Navigations-Unterstrich als auch die große Farbfläche des Subheros.
   Helle/dunkle Rollen bleiben ausschließlich Ableitungen für Nebenflächen und
   Texte. Auf den fünf mittleren Volltönen liefert die neutrale Tintenfarbe den
   erforderlichen Kontrast; Rechtstext-Heros bleiben von dieser Regel getrennt. */
.gsl-subhero:not(.gsl-subhero--legal) {
  background: var(--gsl-rubric, var(--gsl-page-accent, var(--gsl-blue)));
  color: var(--gsl-ink);
}

.gsl-subhero:not(.gsl-subhero--legal) :is(
  .gsl-breadcrumb,
  .gsl-breadcrumb a,
  .gsl-caps,
  h1.gsl-display,
  .gsl-lead
) {
  color: var(--gsl-ink);
}

[data-theme="dark"] .gsl-subhero:not(.gsl-subhero--legal) :is(
  .gsl-breadcrumb,
  .gsl-breadcrumb a,
  .gsl-caps,
  h1.gsl-display,
  .gsl-lead
) {
  color: #101828;
}

/* Auf einer Rubrikseite ist jede Inhaltskomponente Teil dieser einen
   Farbfamilie. Dadurch werden z. B. als "aktuelles" gespeicherte Kacheln auf
   Schulkonzept-Seiten nicht mehr korallrot. */
body:not(.rubric-startseite)[class*="rubric-"] .gsl-main :is(
  .gsl-rubric-aktuelles,
  .gsl-rubric-schulkonzept,
  .gsl-rubric-schulgemeinschaft,
  .gsl-rubric-betreuung,
  .gsl-rubric-kontakt,
  .gsl-rubric-service
) {
  --gsl-rubric: var(--gsl-page-accent);
  --gsl-rubric-soft: var(--gsl-page-soft);
  --gsl-rubric-fill: var(--gsl-page-fill);
  --gsl-rubric-dark: var(--gsl-page-text);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section.gsl-bg--paper-cool,
body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-news-section {
  background: var(--gsl-page-surface);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > :is(.gsl-section, .gsl-section-loud, .gsl-team-section) :is(
  .gsl-h2,
  .gsl-h3,
  .gsl-section__title,
  .gsl-team-section__title,
  .gsl-tile__title,
  .ce-cta__title,
  .min-header__title
) {
  color: var(--gsl-page-text);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > :is(.gsl-section, .gsl-section-loud, .gsl-team-section) :is(
  .gsl-tile,
  .gsl-card,
  .ce-cards__card,
  .gsl-news-card,
  .gsl-event-card
) {
  border-color: var(--gsl-page-border);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > :is(.gsl-section, .gsl-section-loud, .gsl-team-section) a:not(.gsl-btn) {
  color: var(--gsl-page-text);
  text-decoration-color: var(--gsl-page-accent);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main .gsl-btn--rubric {
  background: var(--gsl-page-action);
  border-color: var(--gsl-page-action);
  color: #FFFFFF;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main .gsl-btn--ghost {
  color: var(--gsl-page-text);
  border-color: var(--gsl-page-border);
}

/* P0 Unterseiten: Der generische Cards-Renderer liefert ce-cards__*-Markup,
   das im gebundenen Prototyp bisher keine sichtbare Layoutschicht hatte. Ohne
   diesen Vertrag fallen Karten als ungestylter Fliesstext auseinander. */
body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  margin-top: clamp(2rem, 4vw, 3.5rem);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card {
  display: flex;
  min-width: 0;
  overflow: hidden;
  background: var(--gsl-page-surface);
  border: 1px solid var(--gsl-page-border);
  border-radius: var(--gsl-radius-lg);
  box-shadow: 0 10px 30px rgb(26 26 46 / 7%);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-image {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 0.9rem;
  padding: clamp(1.25rem, 2.4vw, 2rem);
  /* Fluid gibt bei leerem Linkziel dessen Beschriftung als unverketteten
     Textknoten aus. Bis die bereits abweichende Runtime-Template-Lane sauber
     integriert ist, bleibt dieser P0-Workaround rein visuell und mandantennah:
     echte Kindelemente setzen ihre Schriftgroesse explizit zurueck. */
  font-size: 0;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-title {
  margin: 0;
  color: var(--gsl-page-text);
  font-family: var(--gsl-font-sans);
  font-size: clamp(1.5rem, 2.3vw, 2rem);
  font-weight: var(--gsl-fw-black);
  line-height: 1.08;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-text {
  margin: 0;
  color: var(--gsl-ink);
  font-size: var(--gsl-fs-base);
  line-height: 1.62;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-link {
  align-self: flex-start;
  margin-top: auto;
  color: var(--gsl-page-text);
  font-size: var(--gsl-fs-sm);
  font-weight: var(--gsl-fw-bold);
  text-decoration-color: var(--gsl-page-accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.3em;
}

/* P0 Unterseiten: Der generische CTA-Zweig nutzt bewusst ce-cta__*-Markup.
   Er bekommt hier denselben ruhigen Rubrikvertrag wie Karten und Subhero,
   ohne aus unverkettetem Redaktionstext scheinbar klickbare Buttons zu machen. */
body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__content {
  position: relative;
  overflow: hidden;
  padding: clamp(1.75rem, 4.5vw, 3.75rem);
  background: var(--gsl-page-surface);
  border: 1px solid var(--gsl-page-border);
  border-radius: var(--gsl-radius-lg);
  box-shadow: 0 14px 38px rgb(26 26 46 / 8%);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__content::before {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0.5rem;
  background: var(--gsl-page-accent);
  content: "";
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__title {
  max-width: 24ch;
  margin: 0;
  color: var(--gsl-page-text);
  font-family: var(--gsl-font-sans);
  font-size: clamp(2rem, 4.4vw, 3.75rem);
  font-weight: var(--gsl-fw-black);
  line-height: 1.02;
  text-wrap: balance;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__text {
  display: grid;
  gap: 0.8rem;
  max-width: 72ch;
  margin-top: clamp(1.2rem, 2.5vw, 2rem);
  color: var(--gsl-ink);
  font-size: var(--gsl-fs-base);
  line-height: 1.62;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__text p {
  margin: 0;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__text p:first-child {
  order: -1;
  color: var(--gsl-page-text);
  font-size: var(--gsl-fs-xs);
  font-weight: var(--gsl-fw-black);
  letter-spacing: var(--gsl-tracking-caps);
  text-transform: uppercase;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__text p:last-child:not(:first-child) {
  color: var(--gsl-page-text);
  font-size: var(--gsl-fs-sm);
  font-weight: var(--gsl-fw-bold);
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.5rem;
}

body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cta__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0.75rem 1.15rem;
  background: var(--gsl-page-action);
  border: 2px solid var(--gsl-page-action);
  border-radius: var(--gsl-radius-sm);
  color: #FFFFFF;
  font-size: var(--gsl-fs-sm);
  font-weight: var(--gsl-fw-bold);
  text-decoration: none;
}

/* Startseite: Die Rubrikkacheln bleiben bewusst bunt. Der seitenweite
   Gleichklang gilt erst nach dem Einstieg in eine konkrete Rubrik. */
.rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-aktuelles {
  background: var(--gsl-rubric-aktuelles-surface);
  border-color: var(--gsl-rubric-aktuelles-border);
}

.rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-schulkonzept {
  background: var(--gsl-rubric-schulkonzept-surface);
  border-color: var(--gsl-rubric-schulkonzept-border);
}

.rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-schulgemeinschaft {
  background: var(--gsl-rubric-schulgemeinschaft-surface);
  border-color: var(--gsl-rubric-schulgemeinschaft-border);
}

.rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-betreuung {
  background: var(--gsl-rubric-betreuung-surface);
  border-color: var(--gsl-rubric-betreuung-border);
}

.rubric-startseite .gs-home-rubrics .gsl-tile:is(.gsl-rubric-kontakt, .gsl-rubric-service) {
  background: var(--gsl-rubric-kontakt-surface);
  border-color: var(--gsl-rubric-kontakt-border);
}

[data-theme="dark"] .rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-aktuelles {
  background: var(--gsl-rubric-aktuelles-soft);
  border-color: var(--gsl-rubric-aktuelles);
}

[data-theme="dark"] .rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-schulkonzept {
  background: var(--gsl-rubric-schulkonzept-soft);
  border-color: var(--gsl-rubric-schulkonzept);
}

[data-theme="dark"] .rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-schulgemeinschaft {
  background: var(--gsl-rubric-schulgemeinschaft-soft);
  border-color: var(--gsl-rubric-schulgemeinschaft);
}

[data-theme="dark"] .rubric-startseite .gs-home-rubrics .gsl-tile.gsl-rubric-betreuung {
  background: var(--gsl-rubric-betreuung-soft);
  border-color: var(--gsl-rubric-betreuung);
}

[data-theme="dark"] .rubric-startseite .gs-home-rubrics .gsl-tile:is(.gsl-rubric-kontakt, .gsl-rubric-service) {
  background: var(--gsl-rubric-kontakt-soft);
  border-color: var(--gsl-rubric-kontakt);
}

.rubric-startseite .gs-home-rubrics .gsl-tile__title {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: auto;
}

.rubric-startseite .gs-home-rubrics .gsl-rubric-schulgemeinschaft .gsl-tile__title {
  font-size: clamp(1.45rem, 1.8vw, 1.75rem);
}

/* Partner: Überschrift und alle sieben Logos kommen aus genau einem
   redaktionell pflegbaren Text-und-Medien-Element. Die Standard-Galerie wird
   hier als gleichmäßiges Kartenraster gestaltet. */
.gsl-partners .min-ce {
  margin: 0;
  background: transparent;
}

.gsl-partners .min-header,
.gsl-partners .min-header__title {
  margin-inline: auto;
  padding: 0;
  background: transparent;
}

.gsl-partners .min-header__title {
  max-width: 28ch;
  margin-block: 0 2rem;
  color: var(--gsl-ink);
  font-size: clamp(1.65rem, 3vw, 2.65rem);
  line-height: 1.08;
  text-wrap: balance;
}

.gsl-partners .min-ce .ce-gallery {
  display: block;
  width: min(960px, 100%);
  min-height: 0;
  margin: 0 auto 2rem;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.gsl-partners .min-ce .ce-inner {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(1rem, 2vw, 1.5rem);
}

.gsl-partners .min-ce .ce-row {
  display: contents;
}

.gsl-partners .min-ce .ce-column {
  display: grid;
  place-items: center;
  min-width: 0;
  min-height: 168px;
  padding: 1.25rem;
  background: #FFFFFF;
  border: 1px solid var(--gsl-line);
  border-radius: var(--gsl-radius-lg);
  box-shadow: 0 10px 28px rgba(0, 74, 153, 0.08);
}

.gsl-partners .min-ce :is(figure, a) {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  margin: 0;
}

.gsl-partners .min-ce .ce-gallery img {
  display: block;
  width: 100%;
  height: 116px;
  max-width: 250px;
  margin-inline: auto;
  object-fit: contain;
}

/* Alle drei Schnellkontakte benutzen bei Hover/Focus bewusst das Schulblau.
   Die ältere Telefon-Sonderfarbe aus dem Prototyp darf diese Kundenregel nicht
   mehr überschreiben. */
.gsl-qc-btn--tel:hover,
.gsl-qc-btn--tel:focus-visible {
  background: var(--gsl-blue);
  color: var(--gsl-paper);
}

html[data-contrast="default"] .gsl-qc-btn:is(:hover, :focus-visible) {
  background: var(--gsl-blue);
  color: var(--gsl-paper);
}

@media (max-width: 760px) {
  .gsl-partners .min-ce .ce-inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 460px) {
  .gsl-partners .min-ce .ce-inner {
    grid-template-columns: 1fr;
  }

  .gsl-partners .min-ce .ce-column {
    min-height: 150px;
  }
}

/* min_core rendert weiterhin seinen globalen Back-to-top-Button ins DOM. Die
   Schule besitzt bereits den immer sichtbaren, Lenis-faehigen Mandantenbutton;
   die zentrale Instanz wird deshalb nur in diesem Mandanten ausgeblendet. */
.gsl-body #mincore-back-to-top {
  display: none !important;
}

@media (max-width: 1100px) {
  body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__grid {
    grid-template-columns: 1fr;
  }

  body:not(.rubric-startseite)[class*="rubric-"] .gsl-main > .gsl-section .ce-cards__card-body {
    padding: 1.25rem;
  }
}

[data-theme="dark"] body:not(.rubric-startseite)[class*="rubric-"] {
  --gsl-page-surface: var(--gsl-page-soft);
  --gsl-page-border: var(--gsl-page-accent);
}

/* Im Dunkelmodus bleibt der Subhero exakt auf dem sichtbaren Rubrikakzent.
   Aktionsbuttons verwenden dagegen weiterhin die daraus abgeleitete dunkle
   Action-Rolle, damit weisse Beschriftung mindestens AA-Kontrast behaelt. */
[data-theme="dark"] body.rubric-aktuelles .gsl-main .gsl-subhero {
  background: var(--gsl-rubric-aktuelles-strong);
}
[data-theme="dark"] body.rubric-schulkonzept .gsl-main .gsl-subhero {
  background: var(--gsl-rubric-schulkonzept-strong);
}
[data-theme="dark"] body.rubric-schulgemeinschaft .gsl-main .gsl-subhero {
  background: var(--gsl-rubric-schulgemeinschaft-strong);
}
[data-theme="dark"] body.rubric-betreuung .gsl-main .gsl-subhero {
  background: var(--gsl-rubric-betreuung-strong);
}
[data-theme="dark"] body:is(.rubric-kontakt, .rubric-service) .gsl-main .gsl-subhero {
  background: var(--gsl-rubric-kontakt-strong);
}

/* =====================================================
   TEMPORAERER DEV-FARBSCHEMA-REGLER
   ===================================================== */
.gsl-styleswitcher__palette {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.5rem;
}

fieldset.gsl-styleswitcher__section--colours {
  min-inline-size: 0;
  margin: 0;
  padding-inline: 0;
  border: 0;
  border-bottom: 1px solid var(--gsl-line-soft);
}

.gsl-styleswitcher__section--colours legend {
  margin-bottom: 0.5rem;
  padding: 0;
}

.gsl-styleswitcher__colour {
  display: grid;
  justify-items: center;
  gap: 0.35rem;
  min-width: 0;
  color: var(--gsl-ink-soft);
  font-size: 0.625rem;
  font-weight: var(--gsl-fw-bold);
  line-height: 1.15;
  text-align: center;
}

.gsl-styleswitcher__colour input[type="color"] {
  width: 44px;
  height: 44px;
  padding: 3px;
  border: 2px solid var(--gsl-line);
  border-radius: 50%;
  background: var(--gsl-paper);
  cursor: pointer;
}

.gsl-styleswitcher__colour input[type="color"]:focus-visible {
  border-color: var(--gsl-blue);
  outline: 3px solid var(--gsl-orange-brand);
  outline-offset: 2px;
}

.gsl-styleswitcher__colour-reset {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--gsl-line);
  border-radius: var(--gsl-radius-sm);
  background: var(--gsl-paper-cool);
  color: var(--gsl-ink-soft);
  font: inherit;
  font-size: var(--gsl-fs-xs);
  font-weight: var(--gsl-fw-bold);
  cursor: pointer;
}

.gsl-styleswitcher__colour-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
}

.gsl-styleswitcher__colour-copy {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--gsl-page-border, var(--gsl-blue));
  border-radius: var(--gsl-radius-sm);
  background: var(--gsl-blue);
  color: #FFFFFF;
  font: inherit;
  font-size: var(--gsl-fs-xs);
  font-weight: var(--gsl-fw-bold);
  cursor: pointer;
}

.gsl-styleswitcher__colour-copy:hover,
.gsl-styleswitcher__colour-copy:focus-visible {
  background: var(--gsl-blue-dark, #003E73);
  outline: 2px solid var(--gsl-orange-brand);
  outline-offset: 2px;
}

.gsl-styleswitcher__colour-reset:hover,
.gsl-styleswitcher__colour-reset:focus-visible {
  border-color: var(--gsl-blue);
  background: var(--gsl-paper);
  color: var(--gsl-ink);
  outline: 2px solid var(--gsl-blue);
  outline-offset: 2px;
}

[data-theme="dark"] .gsl-styleswitcher__colour-reset,
[data-theme="dark"] .gsl-styleswitcher__colour-copy,
[data-theme="dark"] .gsl-styleswitcher__colour input[type="color"] {
  background: #181C24;
  border-color: var(--gsl-line);
  color: var(--gsl-ink);
}

@media (max-width: 480px) {
  .gsl-styleswitcher__palette {
    gap: 0.35rem;
  }

  .gsl-styleswitcher__colour input[type="color"] {
    width: 44px;
    height: 44px;
  }
}
