/* GöBUS – Schienenersatzverkehr (Update 21) */
.gb-sev { padding-top: 28px; padding-bottom: 48px; }
.gb-sev__kopf { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 14px; align-items: stretch; margin-bottom: 20px; }
.gb-sev__zahl { display: grid; align-content: center; padding: 14px 18px; border-radius: var(--gb-r-l); background: var(--gb-card); border: 1px solid var(--gb-line); min-width: 150px; }
.gb-sev__zahl strong { font-size: 2rem; letter-spacing: -.03em; line-height: 1.1; color: var(--gb-heading); font-variant-numeric: tabular-nums; }
.gb-sev__zahl span { color: var(--gb-muted); font-size: .875rem; font-weight: 600; }
.gb-sev__zahl.is-aktiv { border-color: color-mix(in srgb, var(--gb-magenta) 40%, var(--gb-line)); background: color-mix(in srgb, var(--gb-magenta) 6%, var(--gb-card)); }
.gb-sev__zahl.is-aktiv strong { color: var(--gb-magenta); }
.gb-sev__info { display: flex; gap: 10px; align-items: flex-start; margin: 0; padding: 14px 16px; border-radius: var(--gb-r-l); background: var(--gb-surface); font-size: .9rem; color: var(--gb-text); }
.gb-sev__info i { color: var(--gb-blue-brand); margin-top: 3px; }
.gb-sev__redaktion { margin: 0 0 20px; padding: 14px 18px; border-left: 4px solid var(--gb-magenta); border-radius: var(--gb-r-m); background: var(--gb-card); }
.gb-sev__redaktion p { margin: 0 0 6px; } .gb-sev__redaktion p:last-child { margin: 0; }
.gb-sev__filter { display: flex; flex-wrap: wrap; gap: 10px 18px; margin-bottom: 16px; }
.gb-sev__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.gb-sev__meldung { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 16px; padding: 18px; border-radius: var(--gb-r-l); background: var(--gb-card); border: 1px solid var(--gb-line); box-shadow: var(--gb-shadow-1); }
.gb-sev__meldung[hidden] { display: none; }
.gb-sev__linien { display: flex; flex-wrap: wrap; gap: 6px; align-content: flex-start; }
.gb-sev__linie { display: inline-grid; place-items: center; min-width: 44px; height: 28px; padding: 0 8px; border-radius: 6px; background: #4b5563; color: #fff; font-weight: 700; font-size: .85rem; letter-spacing: .01em; }
.gb-sev__linie.is-leer { background: var(--gb-surface); color: var(--gb-muted); }
.gb-sev__text h2 { margin: 2px 0 6px; font-size: 1.12rem; letter-spacing: -.01em; }
.gb-sev__text p { margin: 0 0 8px; }
.gb-sev__zeit { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; color: var(--gb-heading); font-weight: 650; font-size: .9375rem; }
.gb-sev__jetzt { padding: 2px 8px; border-radius: 99px; background: var(--gb-magenta); color: #fff; font-size: .75rem; letter-spacing: .03em; text-transform: uppercase; }
.gb-sev__halte { display: flex; gap: 8px; color: var(--gb-text); font-size: .9375rem; }
.gb-sev__halte i { color: var(--gb-magenta); margin-top: 4px; }
.gb-sev__halte span { color: var(--gb-muted); font-weight: 600; }
.gb-sev__mehr summary { cursor: pointer; color: var(--gb-link); font-weight: 600; margin-bottom: 6px; }
.gb-sev__mehr p { font-size: .9375rem; }
.gb-sev__quelle { color: var(--gb-muted); font-size: .8125rem; margin: 6px 0 0 !important; }
.gb-sev__leer { display: flex; gap: 10px; align-items: flex-start; padding: 16px 18px; border-radius: var(--gb-r-l); background: var(--gb-surface); }
.gb-sev__leer i { color: #10734f; margin-top: 4px; }
.gb-sev__leer > span { flex: 1 1 auto; min-width: 0; }
.gb-sev__leer--gross { font-size: 1.05rem; }
.gb-sev__karte, .gb-sev__bund { margin-top: 18px; border-radius: var(--gb-r-l); border: 1px solid var(--gb-line); background: var(--gb-card); }
.gb-sev__karte > summary, .gb-sev__bund > summary { cursor: pointer; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 12px; padding: 14px 18px; font-weight: 650; color: var(--gb-heading); }
.gb-sev__karte > summary i, .gb-sev__bund > summary i { margin-right: 8px; color: var(--gb-blue-brand); }
.gb-sev__bund > summary small { color: var(--gb-muted); font-weight: 500; }
.gb-sev__map { height: 380px; margin: 0 14px 14px; border-radius: var(--gb-r-m); overflow: hidden; }
.gb-sev__bundinfo { margin: 0 18px 12px; color: var(--gb-muted); font-size: .875rem; }
.gb-sev__laender { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr)); gap: 8px; padding: 0 14px 14px; }
.gb-sev__laender details { border-radius: var(--gb-r-m); background: var(--gb-surface); }
.gb-sev__laender summary { cursor: pointer; display: flex; justify-content: space-between; padding: 10px 14px; font-weight: 600; }
.gb-sev__laender summary span { display: inline-grid; place-items: center; min-width: 26px; padding: 0 8px; border-radius: 99px; background: var(--gb-card); font-size: .8rem; }
.gb-sev__laender ul { list-style: none; margin: 0; padding: 0 14px 12px; display: grid; gap: 6px; font-size: .875rem; }
.gb-sev__laender small { color: var(--gb-muted); }
.gb-sev__weitere { color: var(--gb-muted); }
@media (max-width: 699px) {
  .gb-sev__kopf { grid-template-columns: 1fr 1fr; }
  .gb-sev__info { grid-column: 1 / -1; }
  .gb-sev__meldung { grid-template-columns: 1fr; gap: 10px; }
  .gb-sev__map { height: 300px; }
}

/* Hinweis auf der Startseite */
.gb-sev-hinweis { display: flex; align-items: center; gap: 12px; padding: 12px 16px; margin: 18px 0 0; border-radius: var(--gb-r-l); background: var(--gb-card); border: 1px solid color-mix(in srgb, var(--gb-magenta) 35%, var(--gb-line)); color: var(--gb-text); text-decoration: none; }
.gb-sev-hinweis:hover { border-color: var(--gb-magenta); color: var(--gb-text); }
.gb-sev-hinweis__icon { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--gb-magenta); color: #fff; }
.gb-sev-hinweis strong { color: var(--gb-heading); }
.gb-sev-hinweis__go { margin-left: auto; color: var(--gb-muted); }
.gb-sev__leer[hidden] { display: none; }
.gb-sev__karte > summary { justify-content: flex-start; }

/* Einzelheiten als Liste (Abschnitt, Ersetzt, Fahrten, Richtungen, Haltestellen, Betreiber) */
.gb-sev__daten { display: grid; gap: 6px; margin: 10px 0 4px; }
.gb-sev__daten div { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; padding: 6px 0; border-top: 1px solid var(--gb-line); }
.gb-sev__daten dt { font-weight: 700; color: var(--gb-heading); }
.gb-sev__daten dd { margin: 0; color: var(--gb-text); }
@media (max-width: 559px) { .gb-sev__daten div { grid-template-columns: 1fr; gap: 2px; } }


/* Fassung 25: Strecke (Start → Zwischenhalte → Ziel), Fahrtverlauf und Abfahrten */
.gb-sev__strecke { list-style: none; margin: 10px 0 8px; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 10px; }
.gb-sev__strecke li { display: grid; gap: 2px; min-width: 0; }
.gb-sev__strecke li span { font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gb-muted); }
.gb-sev__strecke li strong { color: var(--gb-heading); font-size: 1rem; overflow-wrap: anywhere; }
.gb-sev__strecke .is-start, .gb-sev__strecke .is-ziel { padding: 10px 12px; border-radius: var(--gb-r-m); background: var(--gb-surface); border-left: 4px solid var(--gb-magenta); }
.gb-sev__strecke .is-ziel { border-left-color: var(--gb-blue-brand); }
.gb-sev__strecke .is-mitte { position: relative; justify-items: center; text-align: center; padding: 0 6px; min-width: 110px; }
.gb-sev__strecke .is-mitte::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 2px dashed var(--gb-line-strong); z-index: 0; }
.gb-sev__strecke .is-mitte span, .gb-sev__strecke .is-mitte small { position: relative; z-index: 1; background: var(--gb-card); padding: 0 6px; text-transform: none; letter-spacing: 0; font-size: .8125rem; }
.gb-sev__strecke .is-mitte small { color: var(--gb-muted); }
.gb-sev__fakten { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.gb-sev__fakten li { padding: 3px 10px; border-radius: 99px; background: var(--gb-surface); font-size: .8125rem; font-weight: 600; color: var(--gb-text); }
.gb-sev__fakten li:first-child { background: color-mix(in srgb, var(--gb-magenta) 12%, var(--gb-surface)); color: var(--gb-heading); }
.gb-sev__mehr--verlauf { margin-top: 4px; }
.gb-sev__richtung { margin: 8px 0 16px; padding: 14px 16px; border-radius: var(--gb-r-m); background: var(--gb-surface); }
.gb-sev__richtung h3 { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0 0 2px; font-size: 1rem; }
.gb-sev__richtung h3 i { color: var(--gb-magenta); font-size: .85em; }
.gb-sev__richtinfo { color: var(--gb-muted); font-size: .875rem; margin: 0 0 10px !important; }
.gb-sev__lauf { list-style: none; margin: 0 0 12px; padding: 0; }
.gb-sev__lauf li { position: relative; display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 12px; padding: 5px 0; }
.gb-sev__lauf li::before { content: ""; position: absolute; left: 86px; top: 0; bottom: 0; border-left: 3px solid var(--gb-blue-brand); }
.gb-sev__lauf li.is-start::before { top: 50%; } .gb-sev__lauf li.is-ziel::before { bottom: 50%; }
.gb-sev__lauf li::after { content: ""; position: absolute; left: 81px; top: calc(50% - 6.5px); width: 13px; height: 13px; border-radius: 50%; background: var(--gb-card); border: 3px solid var(--gb-blue-brand); box-sizing: border-box; }
.gb-sev__lauf li.is-start::after, .gb-sev__lauf li.is-ziel::after { background: var(--gb-magenta); border-color: var(--gb-magenta); width: 15px; height: 15px; left: 80px; top: calc(50% - 7.5px); }
.gb-sev__min { white-space: nowrap; text-align: right; color: var(--gb-muted); font-size: .8125rem; font-variant-numeric: tabular-nums; align-self: center; }
.gb-sev__hname { padding-left: 22px; color: var(--gb-text); font-size: .9375rem; }
.gb-sev__lauf .is-start .gb-sev__hname, .gb-sev__lauf .is-ziel .gb-sev__hname { font-weight: 700; color: var(--gb-heading); }
.gb-sev__hname em { font-style: normal; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--gb-magenta); margin-left: 6px; }
.gb-sev__hname small { color: var(--gb-muted); }
.gb-sev__abfahrten h4 { margin: 0 0 6px; font-size: .9rem; }
.gb-sev__abfahrten dl { margin: 0; display: grid; gap: 4px; }
.gb-sev__abfahrten dl div { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px; padding: 4px 0; border-top: 1px solid var(--gb-line); }
.gb-sev__abfahrten dt { font-weight: 650; font-size: .875rem; color: var(--gb-heading); }
.gb-sev__abfahrten dd { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 12px; font-variant-numeric: tabular-nums; font-size: .9rem; }
.gb-sev__abfahrten dd small { color: var(--gb-muted); }
.gb-sev__kartehinweis { margin: -6px 18px 14px !important; color: var(--gb-muted); font-size: .8125rem; }
@media (max-width: 559px) {
  .gb-sev__strecke { grid-template-columns: 1fr; }
  .gb-sev__strecke .is-mitte { justify-items: start; text-align: left; padding: 2px 0 2px 14px; min-width: 0; }
  .gb-sev__strecke .is-mitte::before { left: 6px; right: auto; top: 0; bottom: 0; border-top: 0; border-left: 2px dashed var(--gb-line-strong); }
  .gb-sev__lauf li { grid-template-columns: 66px minmax(0, 1fr); }
  .gb-sev__lauf li::before { left: 78px; } .gb-sev__lauf li::after { left: 73px; } .gb-sev__lauf li.is-start::after, .gb-sev__lauf li.is-ziel::after { left: 72px; }
  .gb-sev__min { font-size: .75rem; }
  .gb-sev__abfahrten dl div { grid-template-columns: 1fr; gap: 2px; }
}
.gb-sev__betreiber { padding: 10px 2px 0; border-top: 1px solid var(--gb-line); font-size: .9rem; }
.gb-sev__betreiber p { margin: 0 0 6px !important; }
.gb-sev__betreiber i { margin-left: 6px; font-size: .8em; }
.gb-sev__klein { color: var(--gb-muted); font-size: .8125rem; }
.gb-sev__ueber { margin: -2px 0 8px !important; font-size: .875rem; color: var(--gb-text); }
.gb-sev__ueber span { font-weight: 700; color: var(--gb-muted); text-transform: uppercase; font-size: .72rem; letter-spacing: .04em; margin-right: 4px; }
.gb-sev__ueber small { color: var(--gb-muted); }
.gb-sev__rt { display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 6px; font-size: .75rem; font-weight: 700; }
.gb-sev__rt.is-aus { background: var(--gb-danger-bg); color: var(--gb-danger); text-decoration: none; }
.gb-sev__rt.is-warn { background: var(--gb-warning-bg); color: var(--gb-warning); }
.gb-sev__rt.is-ok { background: var(--gb-success-bg); color: var(--gb-success); }
.gb-sev__aufkarte { display: inline-flex; align-items: center; gap: 8px; margin: 4px 0 10px; padding: 8px 14px; border-radius: 99px; border: 1px solid var(--gb-line-strong); background: var(--gb-card); color: var(--gb-heading); font: inherit; font-weight: 600; font-size: .875rem; cursor: pointer; }
.gb-sev__aufkarte:hover { border-color: var(--gb-blue-brand); color: var(--gb-link); }
.gb-sev__aufkarte i { color: var(--gb-blue-brand); }

/* Fassung 26: Abfahrtstafel des Ersatzverkehrs */
.gb-sev__tafel { margin: 0 0 20px; padding: 18px; border-radius: var(--gb-r-l); background: var(--gb-card); border: 1px solid var(--gb-line); box-shadow: var(--gb-shadow-1); }
.gb-sev__tafel h2 { display: flex; align-items: center; gap: 10px; margin: 0 0 4px; font-size: 1.15rem; }
.gb-sev__tafel h2 i { color: var(--gb-blue-brand); }
.gb-sev__tafelinfo { margin: 0 0 12px; color: var(--gb-muted); font-size: .9rem; }
.gb-sev__tafelwahl { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: end; margin-bottom: 8px; }
.gb-sev__tafelsuche { display: grid; gap: 4px; flex: 1 1 240px; font-size: .8125rem; font-weight: 700; color: var(--gb-muted); }
.gb-sev__tafelsuche input { min-height: 40px; padding: 0 12px; border-radius: var(--gb-r-s); border: 1px solid var(--gb-line-strong); background: var(--gb-input); color: var(--gb-text); font: inherit; font-weight: 500; font-size: 1rem; }
.gb-sev__tafelstand { margin: 4px 0 8px; font-weight: 650; color: var(--gb-heading); font-size: .9rem; }
.gb-sev__tafelwrap { overflow-x: auto; border-radius: var(--gb-r-m); border: 1px solid var(--gb-line); max-height: 560px; overflow-y: auto; }
.gb-sev__tafeltab { width: 100%; border-collapse: collapse; font-size: .9rem; }
.gb-sev__tafeltab th { position: sticky; top: 0; z-index: 1; text-align: left; padding: 8px 10px; background: var(--gb-surface); color: var(--gb-heading); font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; }
.gb-sev__tafeltab td { padding: 7px 10px; border-top: 1px solid var(--gb-line); vertical-align: top; }
.gb-sev__tafeltab td small { color: var(--gb-muted); }
.gb-sev__tafeltab .gb-sev__linie { height: 24px; min-width: 40px; font-size: .78rem; text-decoration: none; white-space: nowrap; }
.gb-sev__tz { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--gb-heading); white-space: nowrap; }
.gb-sev__tafeltab tr.is-vorbei td { opacity: .5; }
.gb-sev__tafelleer { color: var(--gb-muted); text-align: center; padding: 18px !important; }
.gb-sev__tafelfuss { margin: 10px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 599px) {
  .gb-sev__tafeltab th:nth-child(4), .gb-sev__tafeltab td:nth-child(4) { display: none; }
  .gb-sev__tafel { padding: 14px; }
}
@media print {
  body.gb-druck-tafel .gb-header, body.gb-druck-tafel .gb-footer, body.gb-druck-tafel .gb-band, body.gb-druck-tafel .gb-sev > *:not(.gb-sev__tafel), body.gb-druck-tafel .gb-sev__tafelwahl, body.gb-druck-tafel .gb-sev__tafelfuss { display: none !important; }
  body.gb-druck-tafel .gb-sev__tafelwrap { max-height: none; overflow: visible; }
}

/* =====================================================================
   Fassung 28: Neuaufbau – einheitliche Linienkennzeichen, kompakte Tafel,
   Filterleiste, Karte je Meldung mit Busposition (hell und dunkel)
   ===================================================================== */
.gb-sev--neu .gb-sev__kopf { grid-template-columns: repeat(3, auto) minmax(0, 1fr); }
.gb-sev__zahl[hidden] { display: none; }
.gb-sev__zahl.is-live.is-aktiv { border-color: color-mix(in srgb, var(--gb-success) 45%, var(--gb-line)); background: color-mix(in srgb, var(--gb-success) 7%, var(--gb-card)); }
.gb-sev__zahl.is-live.is-aktiv strong { color: var(--gb-success); }
.gb-sev__stand { display: inline; color: var(--gb-muted); }

/* Linienkennzeichen: überall gleich (Meldung, Tafel, bundesweit) */
.gb-sev--neu .gb-sev__linie, .gb-sev__linie.is-klein { display: inline-grid; place-items: center; min-width: 58px; height: 30px; padding: 0 9px; border-radius: 7px; background: #3f4a56; color: #fff;
  font-weight: 750; font-size: .875rem; letter-spacing: .01em; white-space: nowrap; font-variant-numeric: tabular-nums; text-decoration: none; box-sizing: border-box; }
.gb-sev__linie.is-klein { min-width: 50px; height: 24px; font-size: .78rem; padding: 0 7px; border-radius: 6px; }
body.dark-mode .gb-sev--neu .gb-sev__linie, body.dark-mode .gb-sev__linie.is-klein { background: #56626e; }
.gb-sev--neu .gb-sev__linie.is-leer { background: var(--gb-surface); color: var(--gb-muted); border: 1px solid var(--gb-line); }
.gb-sev--neu .gb-sev__linie.is-mehr { min-width: 36px; background: var(--gb-surface); color: var(--gb-heading); border: 1px solid var(--gb-line); }
a.gb-sev__linie:hover { background: var(--gb-magenta); color: #fff; }

/* Meldung */
.gb-sev--neu .gb-sev__meldung { display: block; padding: 18px 20px 14px; }
.gb-sev__mkopf { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; margin-bottom: 4px; }
.gb-sev--neu .gb-sev__linien { display: grid; gap: 6px; justify-items: start; }
.gb-sev__titel h2 { margin: 2px 0 4px; font-size: 1.18rem; letter-spacing: -.012em; line-height: 1.3; }
.gb-sev--neu .gb-sev__zeit { margin: 0; font-size: .9rem; }
.gb-sev__live { display: inline-flex; align-items: center; gap: 6px; padding: 1px 9px; border-radius: 99px; background: var(--gb-surface); color: var(--gb-muted); font-size: .78rem; font-weight: 650; }
.gb-sev__live.is-an { background: var(--gb-success-bg); color: var(--gb-success); }
.gb-sev__live.is-an i { font-size: .5rem; animation: gbSevPuls 1.6s ease-in-out infinite; }
.gb-sev__live[hidden] { display: none; }
@keyframes gbSevPuls { 50% { opacity: .25; } }
@media (prefers-reduced-motion: reduce) { .gb-sev__live.is-an i { animation: none; } }
.gb-sev__satz { margin: 8px 0 4px; color: var(--gb-text); }
.gb-sev__verlaeufe { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; margin: 2px 0 8px; font-size: .85rem; }
.gb-sev__verlaeufe > span { font-weight: 700; color: var(--gb-muted); font-size: .72rem; letter-spacing: .04em; text-transform: uppercase; }
.gb-sev__verlaeufe ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.gb-sev__verlaeufe button { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 99px; border: 1px solid var(--gb-line); background: var(--gb-card); color: var(--gb-text); font: inherit; font-size: .82rem; cursor: pointer; }
.gb-sev__verlaeufe button i { color: var(--gb-magenta); font-size: .75em; }
.gb-sev__verlaeufe button small { color: var(--gb-muted); }
.gb-sev__verlaeufe button:hover, .gb-sev__verlaeufe button.is-an { border-color: var(--gb-blue-brand); color: var(--gb-link); }
.gb-sev__verlaeufe button.is-an { background: color-mix(in srgb, var(--gb-blue-brand) 10%, var(--gb-card)); }
.gb-sev__aktionen { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 6px; }
.gb-sev__knopf { display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 0 14px; border-radius: 99px; border: 1px solid var(--gb-line-strong); background: var(--gb-card); color: var(--gb-heading);
  font: inherit; font-weight: 600; font-size: .875rem; cursor: pointer; }
.gb-sev__knopf i { color: var(--gb-blue-brand); }
.gb-sev__knopf:hover { border-color: var(--gb-blue-brand); color: var(--gb-link); }
.gb-sev__knopf.is-haupt { background: var(--gb-accent); border-color: var(--gb-accent); color: var(--gb-accent-contrast); }
.gb-sev__knopf.is-haupt i { color: inherit; }
.gb-sev__knopf.is-haupt:hover { filter: brightness(1.08); color: var(--gb-accent-contrast); }
.gb-sev__knopf.is-leise { border-color: transparent; background: transparent; }
.gb-sev__knopf.is-offen:not(.is-haupt) { background: var(--gb-surface); }
.gb-sev__knopf[hidden] { display: none; }
.gb-sev__kartebox { margin: 8px 0 10px; }
.gb-sev__kartebox[hidden], .gb-sev__verlaufbox[hidden] { display: none; }
.gb-sev__kmap { height: 380px; border-radius: var(--gb-r-m); overflow: hidden; border: 1px solid var(--gb-line); }
.gb-sev__klegende { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; margin-top: 8px; font-size: .8125rem; color: var(--gb-muted); }
.gb-sev__klegende > span { display: inline-flex; align-items: center; gap: 6px; }
.gb-sev__kinfo { flex: 1 1 100%; color: var(--gb-heading); font-weight: 600; }
.gb-sev__kpunkt { display: inline-block; width: 11px; height: 11px; border-radius: 50%; border: 2px solid var(--gb-blue-brand); background: var(--gb-card); }
.gb-sev__kpunkt.is-ende { border-color: var(--gb-magenta); background: var(--gb-magenta); }
.gb-sev__kpunkt.is-bus { width: 14px; height: 14px; border: 0; background: var(--gb-magenta); box-shadow: 0 0 0 3px color-mix(in srgb, var(--gb-magenta) 30%, transparent); }
.gb-sev__verlaufbox { margin: 6px 0 4px; }

/* Karte: Weg, Halte, Bus – Farben für hell und dunkel (Leaflet-Klassen) */
.gb-sev-weg { stroke: #2c6e96; }
.gb-sev-weg.is-luftlinie { stroke-dasharray: 8 7; }
body.dark-mode .gb-sev-weg { stroke: #7cb8e0; }
.gb-sev-halt { stroke: #2c6e96; fill: #fff; fill-opacity: 1; }
.gb-sev-halt.is-ende { stroke: #db0059; fill: #db0059; fill-opacity: .9; }
.gb-sev-halt.is-entfaellt { stroke: #8a5a00; fill: #fff4d6; stroke-dasharray: 2 2; }
body.dark-mode .gb-sev-halt { stroke: #7cb8e0; fill: #1d1f21; }
body.dark-mode .gb-sev-halt.is-ende { stroke: #ff4f93; fill: #ff4f93; }
.gb-sev-bus { background: none; border: 0; }
.gb-sev-bus > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: #db0059; color: #fff; font-size: 14px; border: 2px solid #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, .35); box-sizing: border-box; }
.gb-sev-bus > b { position: absolute; top: -9px; right: -16px; padding: 0 5px; border-radius: 6px; background: #8a5a00; color: #fff; font: 700 11px/16px var(--gb-font-sans); white-space: nowrap; }
body.dark-mode .gb-sev-bus > span { border-color: #1d1f21; }

/* Abfahrtstafel kompakt */
.gb-sev--neu .gb-sev__tafel { padding: 16px 18px 12px; }
.gb-sev__tafelkopf { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-bottom: 10px; }
.gb-sev--neu .gb-sev__tafel h2 { margin: 0; font-size: 1.12rem; }
.gb-sev--neu .gb-sev__tafelwahl { margin: 0; align-items: center; gap: 8px; }
.gb-sev--neu .gb-sev__tafelsuche { position: relative; display: block; flex: 1 1 220px; }
.gb-sev--neu .gb-sev__tafelsuche i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--gb-muted); pointer-events: none; }
.gb-sev--neu .gb-sev__tafelsuche input { width: 100%; min-height: 38px; padding: 0 12px 0 34px; border-radius: 99px; box-sizing: border-box; font-size: .95rem; }
.gb-sev__tafeltag select, .gb-sev__wahl select { min-height: 38px; padding: 0 30px 0 12px; border-radius: 99px; border: 1px solid var(--gb-line-strong); background-color: var(--gb-input); color: var(--gb-text); font: inherit; font-size: .9rem; }
.gb-tabs--klein .gb-tab { min-height: 36px; padding: 0 13px; font-size: .875rem; }
.gb-sev__tafelliste { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--gb-line); }
.gb-sev__tz { white-space: normal; display: grid; grid-template-columns: 92px 58px minmax(0, 1.3fr) minmax(0, 1fr) auto; gap: 4px 12px; align-items: center; padding: 8px 2px; border-bottom: 1px solid var(--gb-line); font-size: .92rem; }
.gb-sev__tzeit { font-weight: 750; font-variant-numeric: tabular-nums; color: var(--gb-heading); display: grid; line-height: 1.2; }
.gb-sev__tzeit s { color: var(--gb-muted); font-weight: 500; font-size: .8em; }
.gb-sev__tzeit .is-spaet { color: var(--gb-warning); }
.gb-sev__inmin { color: var(--gb-muted); font-weight: 600; font-size: .75rem; }
.gb-sev__tz.is-bald .gb-sev__inmin { color: var(--gb-magenta); }
.gb-sev__tz.is-vorbei { opacity: .55; }
.gb-sev__tz.is-aus .gb-sev__tziel strong { text-decoration: line-through; }
.gb-sev__tziel { display: grid; min-width: 0; } .gb-sev__tziel strong { color: var(--gb-heading); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-sev__tziel small, .gb-sev__thalt small, .gb-sev__thin small { color: var(--gb-muted); font-size: .78rem; }
.gb-sev__thalt { min-width: 0; color: var(--gb-text); }
.gb-sev__thin { display: grid; justify-items: end; gap: 2px; text-align: right; }
.gb-sev--neu .gb-sev__tafelleer { padding: 16px 4px; color: var(--gb-muted); text-align: left; }
.gb-sev--neu .gb-sev__tafelfuss { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 10px 0 0; }
.gb-sev--neu .gb-sev__tafelfuss p { margin: 0 auto 0 0; color: var(--gb-muted); font-size: .8125rem; }

/* Filterleiste */
.gb-sev__werkzeug { display: grid; gap: 10px; margin: 0 0 14px; padding: 14px 16px; border-radius: var(--gb-r-l); background: var(--gb-surface); }
.gb-sev__suche { position: relative; display: block; }
.gb-sev__suche i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--gb-muted); pointer-events: none; }
.gb-sev__suche input { width: 100%; min-height: 44px; padding: 0 14px 0 40px; border-radius: 99px; border: 1px solid var(--gb-line-strong); background: var(--gb-input); color: var(--gb-text); font: inherit; font-size: 1rem; box-sizing: border-box; }
.gb-sev__filterreihe { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.gb-sev__wahl { display: inline-flex; align-items: center; gap: 6px; font-size: .8125rem; font-weight: 700; color: var(--gb-muted); }
.gb-sev__mehrfilter { position: relative; }
.gb-sev__mehrfilter summary { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 13px; border-radius: 99px; border: 1.5px solid var(--gb-line); background: var(--gb-bg); font-weight: 600; font-size: .875rem; cursor: pointer; list-style: none; }
.gb-sev__mehrfilter summary::-webkit-details-marker { display: none; }
.gb-sev__mehrfilter[open] summary { border-color: var(--gb-blue-brand); }
.gb-sev__mehrfilter > div { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin-top: 8px; }
.gb-sev__check { display: inline-flex; align-items: center; gap: 6px; font-size: .9rem; }
.gb-sev__treffer { margin: 0; font-size: .8125rem; font-weight: 650; color: var(--gb-muted); }
.gb-sev__link { border: 0; background: none; padding: 0; color: var(--gb-link); font: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }

@media (max-width: 899px) { .gb-sev--neu .gb-sev__kopf { grid-template-columns: repeat(3, minmax(0, 1fr)); } .gb-sev--neu .gb-sev__info { grid-column: 1 / -1; } }
@media (max-width: 699px) {
  .gb-sev--neu .gb-sev__kopf { grid-template-columns: 1fr 1fr; }
  .gb-sev__zahl { min-width: 0; }
  .gb-sev__tz { grid-template-columns: 64px 52px minmax(0, 1fr) auto; }
  .gb-sev__thalt { grid-column: 3 / 4; grid-row: 2; font-size: .8125rem; }
  .gb-sev__thin { grid-column: 4; grid-row: 1 / span 2; }
  .gb-sev__kmap { height: 320px; }
  .gb-sev__mkopf { gap: 10px; }
  .gb-sev--neu .gb-sev__linie { min-width: 50px; height: 28px; font-size: .8125rem; }
  .gb-sev__tafelkopf { display: grid; }
  .gb-sev--neu .gb-sev__tafelwahl { display: flex; flex-wrap: wrap; }
}
@media print {
  body.gb-druck-tafel .gb-sev > *:not(.gb-sev__tafel) { display: none !important; }
  body.gb-druck-tafel .gb-sev__tafelfuss button { display: none !important; }
}
.gb-sev__werkzeug { grid-template-columns: minmax(0, 1fr); }
.gb-sev__filterreihe > .gb-tabs { max-width: 100%; min-width: 0; }
.gb-sev__filterreihe > * { min-width: 0; }
@media (max-width: 699px) {
  .gb-sev--neu .gb-sev__kopf { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .gb-sev--neu .gb-sev__zahl { padding: 10px 10px; }
  .gb-sev--neu .gb-sev__zahl strong { font-size: 1.5rem; }
  .gb-sev--neu .gb-sev__zahl span { font-size: .75rem; line-height: 1.25; }
  .gb-sev__tziel strong { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .gb-sev__thalt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gb-sev__thin small { display: none; }
  .gb-sev--neu .gb-sev__tafelwahl > * { flex: 1 1 auto; }
  .gb-sev--neu .gb-sev__tafelsuche { flex-basis: 100%; }
}
.gb-sev__abo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 14px; }
.gb-sev__abolinks { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: .8125rem; color: var(--gb-muted); font-weight: 600; }
.gb-sev__abolinks a { display: inline-flex; align-items: center; gap: 5px; color: var(--gb-link); }
.gb-sev__abolinks small { font-weight: 500; }

/* Fassung 30: Abfahrtstafel – feste Spalten (Hinweis verschiebt nichts), Rolle des Halts, Kopfzeile */
.gb-sev__tz { grid-template-columns: 76px 64px minmax(0, 1fr) 8.5rem; }
.gb-sev__tz--kopf { padding: 4px 2px; font-size: .72rem; font-weight: 650; color: var(--gb-muted); text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid var(--gb-line); }
.gb-sev__tz--kopf span:last-child { text-align: right; }
.gb-sev__thalt { display: block; line-height: 1.35; white-space: normal !important; overflow-wrap: anywhere; }
.gb-sev__thalt strong { color: var(--gb-heading); font-weight: 700; }
.gb-sev__tweg { display: block; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-sev__rolle { display: inline-block; font-style: normal; font-size: .68rem; font-weight: 700; padding: 1px 7px; margin-left: 4px; border-radius: 999px; border: 1px solid currentColor; vertical-align: 1px; white-space: nowrap; }
.gb-sev__rolle--start { color: #15803d; } .gb-sev__rolle--ziel { color: #2c6e96; } .gb-sev__rolle--zwischen { color: var(--gb-muted); }
body.dark-mode .gb-sev__rolle--start { color: #4ade80; } body.dark-mode .gb-sev__rolle--ziel { color: #8cc4ea; }
.gb-sev__thalt strong + .gb-sev__rolle { justify-self: start; }
.gb-sev__thalt > strong, .gb-sev__thalt > .gb-sev__rolle { display: inline; }
.gb-sev__thin { min-width: 0; }
@media (max-width: 699px) {
  .gb-sev__tz { grid-template-columns: 58px 50px minmax(0, 1fr); }
  .gb-sev__tz--kopf span:last-child { display: none; }
  .gb-sev__thalt { grid-column: 3; grid-row: 1; font-size: .875rem; }
  .gb-sev__tweg { white-space: normal; }
  .gb-sev__thalt { overflow: visible; }
  .gb-sev__thin { grid-column: 3; grid-row: 2; justify-items: start; display: flex; flex-wrap: wrap; gap: 8px; text-align: left; }
  .gb-sev__thin:empty { display: none; }
}

/* Fassung 31: Tafel auf Englisch */
.gb-sev__sprache { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; }
.gb-sev__en { margin: 0 0 10px; padding: 10px 12px; border-radius: 10px; background: var(--gb-surface); border: 1px solid var(--gb-line); font-size: .9rem; line-height: 1.45; }
.gb-sev__en--angebot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.gb-sev__en--angebot .gb-sev__knopf { margin-left: auto; }

/* Fassung 31: „Wohin?“ und aufklappbare Fahrt auf der Tafel */
.gb-sev__tafelziel { max-width: 16rem; }
.gb-sev__tnach { display: block; color: var(--gb-text); font-size: .8rem; }
.gb-sev__tnach b { font-variant-numeric: tabular-nums; }
.gb-sev__tauf { margin-left: auto; width: 28px; height: 28px; border: 1px solid var(--gb-line); border-radius: 8px; background: var(--gb-card); color: var(--gb-muted); cursor: pointer; display: inline-grid; place-items: center; }
.gb-sev__tauf:hover, .gb-sev__tauf:focus-visible { color: var(--gb-link-hover); border-color: var(--gb-link-hover); }
.gb-sev__tauf[aria-expanded="true"] i { transform: rotate(180deg); }
.gb-sev__tdetail { list-style: none; padding: 4px 0 10px 76px; border-bottom: 1px solid var(--gb-line); }
.gb-sev__tdetail ol { list-style: none; margin: 0; padding: 0 0 0 14px; border-left: 2px solid var(--gb-accent); display: grid; gap: 3px; }
.gb-sev__tdetail li { display: grid; grid-template-columns: 3.2em minmax(0, 1fr) auto; gap: 8px; font-size: .85rem; position: relative; }
.gb-sev__tdetail li::before { content: ''; position: absolute; left: -20px; top: .45em; width: 8px; height: 8px; border-radius: 50%; background: var(--gb-card); border: 2px solid var(--gb-accent); }
.gb-sev__tdetail li time { font-variant-numeric: tabular-nums; font-weight: 600; }
.gb-sev__tdetail li small { color: var(--gb-muted); }
.gb-sev__tdetail li.is-hier { font-weight: 700; }
.gb-sev__tdetail li.is-hier::before, .gb-sev__tdetail li.is-nach::before { background: var(--gb-magenta-fill); border-color: var(--gb-magenta-fill); }
.gb-sev__tdetail li.is-vorbei { color: var(--gb-muted); }
@media (max-width: 640px) { .gb-sev__tdetail { padding-left: 12px; } .gb-sev__tafelziel { max-width: none; } }

/* Fassung 31: Überblick – Zustand, Übersichtskarte, Zeitleiste */
.gb-sev__phase { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: .75rem; font-weight: 700; background: var(--gb-surface-2); color: var(--gb-text); }
.gb-sev__phase.is-laeuft { background: var(--gb-accent); color: #fff; }
.gb-sev__phase.is-endet { background: var(--gb-magenta-fill); color: #fff; }
.gb-sev__phase.is-bald { background: transparent; border: 1px dashed var(--gb-line-strong); color: var(--gb-muted); }
.gb-sev__ueber { margin: 12px 0 14px; display: grid; gap: 10px; }
.gb-sev__lage { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: .95rem; }
.gb-sev__lage button { background: none; border: 0; padding: 0; color: var(--gb-link); cursor: pointer; font: inherit; text-decoration: underline; text-underline-offset: 3px; }
.gb-sev__lage button:hover, .gb-sev__lage button:focus-visible { color: var(--gb-link-hover); }
.gb-sev__meldung.is-markiert { box-shadow: 0 0 0 3px var(--gb-accent); transition: box-shadow .3s; }
.gb-sev__umap { height: 420px; border-radius: 12px; border: 1px solid var(--gb-line); }
.gb-sev-uweg { stroke: var(--gb-accent); cursor: pointer; }
.gb-sev-uweg.is-bald { stroke: var(--gb-muted); stroke-dasharray: 8 6; }
.gb-sev-uweg.is-endet { stroke: var(--gb-magenta-fill); }
path.gb-sev-uweg.is-laeuft:hover, path.gb-sev-uweg:hover { stroke-width: 9; }
.gb-sev__kpunkt.is-laeuft { background: var(--gb-accent); }
.gb-sev__kpunkt.is-bald { background: transparent; border: 2px dashed var(--gb-muted); }
.gb-sev__zeitleiste { border: 1px solid var(--gb-line); border-radius: 12px; padding: 10px 12px; background: var(--gb-card); }
.gb-sev__zkopf, .gb-sev__zliste li { display: grid; grid-template-columns: minmax(150px, 34%) minmax(0, 1fr); gap: 10px; align-items: center; }
.gb-sev__zachse { position: relative; height: 1.4em; font-size: .72rem; color: var(--gb-muted); border-bottom: 1px solid var(--gb-line); }
.gb-sev__zachse span { position: absolute; top: 0; padding-left: 3px; border-left: 1px solid var(--gb-line); }
.gb-sev__zheute { position: absolute; top: 0; bottom: -4px; width: 2px; background: var(--gb-magenta-fill); }
.gb-sev__zliste { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 4px; }
.gb-sev__zname { display: flex; gap: 6px; align-items: center; min-width: 0; background: none; border: 0; padding: 2px 0; cursor: pointer; text-align: left; color: var(--gb-text); font: inherit; font-size: .85rem; }
.gb-sev__zname span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-sev__zname:hover span, .gb-sev__zname:focus-visible span { color: var(--gb-link-hover); text-decoration: underline; }
.gb-sev__zspur { position: relative; height: 18px; background: repeating-linear-gradient(90deg, transparent 0 calc(12.5% - 1px), var(--gb-line) calc(12.5% - 1px) 12.5%); }
.gb-sev__zbalken { position: absolute; top: 2px; bottom: 2px; border-radius: 4px; background: var(--gb-accent); overflow: hidden; }
.gb-sev__zbalken.is-bald { background: var(--gb-muted); opacity: .75; }
.gb-sev__zbalken.is-endet { background: var(--gb-magenta-fill); }
.gb-sev__zbalken.is-offen { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.gb-sev__zbalken span { position: absolute; left: 4px; top: 0; font-size: .65rem; line-height: 14px; color: #fff; white-space: nowrap; }
.gb-sev__zhinweis { margin: 8px 0 0; font-size: .78rem; color: var(--gb-muted); }
@media (max-width: 640px) { .gb-sev__umap { height: 320px; } .gb-sev__zkopf, .gb-sev__zliste li { grid-template-columns: 1fr; gap: 2px; } .gb-sev__zkopf > span:first-child { display: none; } }
