/* ZnajdzBus component tokens — v2.9.11. One interaction model for all three themes. */
html[data-theme="light"]{--zb-btn-bg:#fff;--zb-btn-text:#075f91;--zb-btn-border:#cbd8e5;--zb-btn-hover:#eaf4fb;--zb-btn-hover-border:#7fb1d0;--zb-btn-active:#deeffa;--zb-btn-primary:#0b78b4;--zb-btn-primary-text:#fff;--zb-btn-primary-hover:#075f91}
html[data-theme="dark"]{--zb-btn-bg:#203247;--zb-btn-text:#e7f4ff;--zb-btn-border:#8295aa;--zb-btn-hover:#2c455d;--zb-btn-hover-border:#b6d3e9;--zb-btn-active:#34536e;--zb-btn-primary:#88d2ff;--zb-btn-primary-text:#0b2335;--zb-btn-primary-hover:#b3e3ff}
html[data-theme="contrast"]{--zb-btn-bg:#fff;--zb-btn-text:#000;--zb-btn-border:#000;--zb-btn-hover:#000;--zb-btn-hover-border:#000;--zb-btn-active:#000;--zb-btn-primary:#000;--zb-btn-primary-text:#fff;--zb-btn-primary-hover:#000}
/* Same base, hover, pressed, focus and disabled behaviour for every button that uses a secondary treatment. */
html[data-theme] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback),
html[data-theme] body .zbHeader :is(.zbNavLink,.zbThemeInline button){
  background:var(--zb-btn-bg)!important;color:var(--zb-btn-text)!important;border:1px solid var(--zb-btn-border)!important;border-radius:11px!important;box-shadow:none!important;font-weight:500!important;cursor:pointer!important;transition:background-color .14s ease,border-color .14s ease,color .14s ease!important
}
html[data-theme] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback):hover,
html[data-theme] body .zbHeader :is(.zbNavLink,.zbThemeInline button):hover{
  background:var(--zb-btn-hover)!important;border-color:var(--zb-btn-hover-border)!important;color:var(--zb-btn-text)!important;text-decoration:none!important
}
html[data-theme] body .whenToggle .whenLabel{color:inherit!important}
html[data-theme] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback):active,
html[data-theme] body .zbHeader :is(.zbNavLink,.zbThemeInline button):active{background:var(--zb-btn-active)!important}
html[data-theme] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback):focus-visible,
html[data-theme] body .zbHeader :is(.zbNavLink,.zbThemeInline button):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback):disabled{opacity:.55!important;cursor:not-allowed!important}
html[data-theme] body :is(.searchBtn,.primaryFeedbackBtn,.consentAccept){background:var(--zb-btn-primary)!important;color:var(--zb-btn-primary-text)!important;border:1px solid var(--zb-btn-primary)!important;border-radius:11px!important;box-shadow:none!important;font-weight:600!important;cursor:pointer!important;transition:background-color .14s ease,border-color .14s ease!important}
html[data-theme] body :is(.searchBtn,.primaryFeedbackBtn,.consentAccept):hover{background:var(--zb-btn-primary-hover)!important;border-color:var(--zb-btn-primary-hover)!important;color:var(--zb-btn-primary-text)!important}
html[data-theme] body :is(.searchBtn,.primaryFeedbackBtn,.consentAccept):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme] body :is(.searchBtn,.primaryFeedbackBtn,.consentAccept):disabled{opacity:.55!important;cursor:not-allowed!important}
html[data-theme] body :is(.whenToggle[aria-expanded="true"],.showMap[aria-expanded="true"],.walkMapToggle[aria-expanded="true"],.zb-st-filter.active),
html[data-theme] body .zbHeader :is(.zbNavLink[aria-current="page"],.zbThemeInline button[aria-pressed="true"]){background:var(--zb-btn-active)!important;border-color:var(--zb-btn-hover-border)!important;color:var(--zb-btn-text)!important}
html[data-theme] body.zbStopPermanentPage .zb-st-filter.active{background:var(--zb-btn-active)!important;border-color:var(--zb-btn-hover-border)!important;color:var(--zb-btn-text)!important}
/* Contrast keeps the same one pixel box geometry; a second inner stroke improves definition. */
html[data-theme="contrast"] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback):is(:hover,:active,[aria-expanded="true"],.active),
html[data-theme="contrast"] body .zbHeader :is(.zbNavLink,.zbThemeInline button):is(:hover,:active,[aria-current="page"],[aria-pressed="true"]){color:#fff!important;background:#000!important}
html[data-theme="contrast"] body :is(.searchBtn,.primaryFeedbackBtn,.consentAccept):hover{background:#fff!important;color:#000!important;border-color:#000!important}
html[data-theme="contrast"] body.zbStopPermanentPage .zb-st-filter.active{color:#fff!important;border-color:#000!important}
/* The GPS control shares the same box as the adjacent controls. */
html[data-theme] body #nearMe,html[data-theme] body #swap{background:var(--zb-btn-bg)!important;color:var(--zb-btn-text)!important;border:1px solid var(--zb-btn-border)!important}
html[data-theme] body #nearMe:hover,html[data-theme] body #swap:hover{background:var(--zb-btn-hover)!important;border-color:var(--zb-btn-hover-border)!important}
html[data-theme="contrast"] body :is(#nearMe,#swap){border:1px solid #000!important}
html[data-theme="contrast"] body :is(#nearMe,#swap):hover{background:#000!important;color:#fff!important}
/* Results without a journey are full framed panels in every theme. */
html[data-theme] body #resultsPanel{background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible!important}
html[data-theme] body #results>.empty{display:grid;place-items:center;min-height:90px;padding:20px;background:var(--c-surface)!important;border:1px solid var(--c-line)!important;border-radius:14px!important;color:var(--c-muted)!important;box-shadow:none!important;text-align:center}
html[data-theme="contrast"] body #results>.empty{border:2px solid #000!important}
/* A scheduled departure conveys information. It has no hover or button outline. */
html[data-theme] body.zbSeoPage .zbLinePage .zbTripTime{border:0!important;box-shadow:none!important;cursor:default!important}
html[data-theme] body.zbSeoPage .zbLinePage .zbTripTime:hover{border:0!important;box-shadow:none!important;transform:none!important}
html[data-theme] body.zbStopPermanentPage :is(.zbStopServerRow,.zb-st-row){border:1px solid var(--c-line)!important;border-radius:13px!important;background:var(--c-surface)!important;box-shadow:none!important;cursor:default!important}
html[data-theme] body.zbStopPermanentPage :is(.zbStopServerRow,.zb-st-row):hover{transform:none!important;border-color:var(--c-line)!important;box-shadow:none!important}
@media(prefers-reduced-motion:reduce){html[data-theme] body :is(button,.zbNavLink){transition:none!important}}

/* Fixed dimensions and interaction states across themes. Contrast adds its stroke inside the box. */
html[data-theme] body :is(button,.zbNavLink){box-sizing:border-box}
html[data-theme="contrast"] body :is(.whenToggle,.nowIconBtn,.iconBtn,.swapBtn,.shareRouteBtn,.walkMapToggle,.showMap,.zb-st-today,.zb-st-more,.zb-st-filter,.secondaryBtn,.feedbackClose,.mapRetryBtn,.consentReject,.zbMenuToggle,.zbNavFeedback,.searchBtn,.primaryFeedbackBtn,.consentAccept),
html[data-theme="contrast"] body .zbHeader :is(.zbNavLink,.zbThemeInline button){border-width:1px!important;box-shadow:inset 0 0 0 1px #000!important}
html[data-theme] body #searchForm :is(#nearMe,#swap){border:1px solid var(--zb-btn-border)!important;background:var(--zb-btn-bg)!important;color:var(--zb-btn-text)!important;box-shadow:none!important}
html[data-theme] body #searchForm :is(#nearMe,#swap):is(:hover,:focus-visible){background:var(--zb-btn-hover)!important;border-color:var(--zb-btn-hover-border)!important;color:var(--zb-btn-text)!important}
html[data-theme="contrast"] body #searchForm :is(#nearMe,#swap){border-width:1px!important;box-shadow:inset 0 0 0 1px #000!important}
html[data-theme="contrast"] body #searchForm :is(#nearMe,#swap):hover{background:#000!important;color:#fff!important}
html[data-theme] body :is(.testBanner button,.zbThemePanel button){box-sizing:border-box;border:1px solid var(--zb-btn-border)!important;border-radius:11px!important;background:var(--zb-btn-bg)!important;color:var(--zb-btn-text)!important;box-shadow:none!important;cursor:pointer!important;transition:background-color .14s ease,color .14s ease,border-color .14s ease!important}
html[data-theme] body :is(.testBanner button,.zbThemePanel button):hover{background:var(--zb-btn-hover)!important;border-color:var(--zb-btn-hover-border)!important;text-decoration:none!important}
html[data-theme] body :is(.testBanner button,.zbThemePanel button):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme="contrast"] body :is(.testBanner button,.zbThemePanel button){box-shadow:inset 0 0 0 1px #000!important}
html[data-theme="contrast"] body :is(.testBanner button,.zbThemePanel button):hover{background:#000!important;color:#fff!important}
/* Theme picker is an unobtrusive, stable-width icon group. Labels remain accessible. */
html[data-theme] body .zbHeader .zbThemeInline{gap:5px!important;padding-left:12px!important}
html[data-theme] body .zbHeader .zbThemeInline button{width:40px!important;min-width:40px!important;max-width:40px!important;height:40px!important;min-height:40px!important;flex:0 0 40px!important;padding:0!important;border-radius:10px!important}
html[data-theme] body .zbHeader .zbThemeInline button [data-zb-text]{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
html[data-theme] body .zbHeader .zbThemeInline button[aria-pressed="true"]{background:var(--zb-btn-active)!important;color:var(--zb-btn-text)!important;border-color:var(--zb-btn-hover-border)!important}
html[data-theme] body .zbHeader .zbThemeInline button[aria-pressed="true"]:hover{background:var(--zb-btn-hover)!important}
html[data-theme="contrast"] body .zbHeader .zbThemeInline button[aria-pressed="true"],html[data-theme="contrast"] body .zbHeader .zbThemeInline button:is(:hover,:active){background:#000!important;color:#fff!important}
@media(max-width:1120px){html[data-theme] body .zbHeader .zbThemeInline{padding:12px 0 0!important;justify-content:flex-start!important;flex-wrap:nowrap!important}}
/* Walking legs use the same icon scale as the route overview. */
.walkLegText .walkLegTitle{display:inline-flex!important;align-items:center!important;gap:9px!important;min-width:0;white-space:normal!important}
.walkLegTitle [data-zb-icon] svg{width:18px;height:18px;stroke-width:1.8}

.walkLegText .walkLegTitle [data-zb-icon]{display:inline-flex!important;flex:none!important;align-items:center!important;justify-content:center!important;text-align:left!important;color:inherit!important;line-height:1!important}

/* The three result actions are one component, regardless of which card contains them. */
html[data-theme] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap){box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;min-height:44px!important;height:44px!important;padding:0 14px!important;border:1px solid var(--zb-btn-border)!important;border-radius:11px!important;background:var(--zb-btn-bg)!important;color:var(--zb-btn-text)!important;box-shadow:none!important;font:500 14px/1.25 Inter,system-ui,sans-serif!important;text-decoration:none!important;cursor:pointer!important;white-space:nowrap!important;transition:background-color .15s ease,color .15s ease,border-color .15s ease!important}
html[data-theme] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap):hover{background:var(--zb-btn-hover)!important;color:var(--zb-btn-text)!important;border-color:var(--zb-btn-hover-border)!important;text-decoration:none!important}
html[data-theme] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap):active{background:var(--zb-btn-active)!important}
html[data-theme] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme] body :is(.walkMapToggle,.routeMapCard .showMap)[aria-expanded="true"]{background:var(--zb-btn-active)!important;color:var(--zb-btn-text)!important;border-color:var(--zb-btn-hover-border)!important}
html[data-theme] body :is(.walkMapToggle,.routeMapCard .showMap)[aria-expanded="true"]:hover{background:var(--zb-btn-hover)!important}
html[data-theme="contrast"] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap){border:1px solid #000!important;box-shadow:inset 0 0 0 1px #000!important}
html[data-theme="contrast"] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap):is(:hover,:active,[aria-expanded="true"]){background:#000!important;color:#fff!important}
html[data-theme] body :is(.shareRouteBtn,.walkMapToggle,.routeMapCard .showMap) [data-zb-icon] svg{width:18px;height:18px;stroke-width:1.8}
html[data-theme] body .routeMapCard .showMap::after{content:none!important}
@media(max-width:650px){html[data-theme] body .shareRouteBtn [data-zb-icon]{display:inline-flex!important}}
/* Only departures have an individual panel; links inside them still signal interaction. */
html[data-theme="contrast"] body.zbStopPermanentPage :is(.zbStopServerRow,.zb-st-row){border:2px solid #000!important}
html[data-theme] body :is(.infoCard a,.footer a,.zbSeoPrimaryLink,.zbStopServerCrumb a,.zbStopServerMeta a,.zb-st-line-pages a,.walkMapFooter a,.zb-st-next){text-decoration:underline!important;text-decoration-thickness:1px!important;text-underline-offset:3px!important;transition:color .15s ease,text-decoration-thickness .15s ease!important}
html[data-theme] body :is(.infoCard a,.footer a,.zbSeoPrimaryLink,.zbStopServerCrumb a,.zbStopServerMeta a,.zb-st-line-pages a,.walkMapFooter a,.zb-st-next):hover{color:var(--c-primary-strong,#075f91)!important;text-decoration-thickness:2px!important}
html[data-theme="dark"] body :is(.infoCard a,.footer a,.zbSeoPrimaryLink,.zbStopServerCrumb a,.zbStopServerMeta a,.zb-st-line-pages a,.walkMapFooter a,.zb-st-next):hover{color:#fff!important}
html[data-theme="contrast"] body :is(.infoCard a,.footer a,.zbSeoPrimaryLink,.zbStopServerCrumb a,.zbStopServerMeta a,.zb-st-line-pages a,.walkMapFooter a,.zb-st-next):hover{color:#000!important;text-decoration-thickness:3px!important}
html[data-theme] body :is(.infoCard a,.footer a,.zbSeoPrimaryLink,.zbStopServerCrumb a,.zbStopServerMeta a,.zb-st-line-pages a,.walkMapFooter a,.zb-st-next):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:3px!important}
html[data-theme] body :is(.zbSeoCrumb a,.zbStopChain a){text-decoration:underline!important;text-decoration-thickness:1px!important;text-underline-offset:3px!important;transition:color .15s ease,text-decoration-thickness .15s ease!important}
html[data-theme] body :is(.zbSeoCrumb a,.zbStopChain a):hover{color:var(--c-primary-strong,#075f91)!important;text-decoration-thickness:2px!important}
html[data-theme="dark"] body :is(.zbSeoCrumb a,.zbStopChain a):hover{color:#fff!important}
html[data-theme="contrast"] body :is(.zbSeoCrumb a,.zbStopChain a):hover{color:#000!important;text-decoration-thickness:3px!important}
html[data-theme] body :is(.zbSeoCrumb a,.zbStopChain a):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:3px!important}
/* Ad and contact cards use one horizontal marker row. */
html[data-theme] body .infoCardLabelled{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-content:start!important;align-items:center!important;column-gap:12px!important}
html[data-theme] body .infoCardLabelled > .infoIcon{grid-column:1!important;grid-row:1!important;margin:0 0 14px!important}
html[data-theme] body .infoCardLabelled > .pill{grid-column:2!important;grid-row:1!important;justify-self:end!important;margin:0 0 14px!important}
html[data-theme] body .infoCardLabelled > :not(.pill):not(.infoIcon){grid-column:1/-1!important}

/* Remaining interactive controls: route summary, variants and the stop-view return control. */
html[data-theme] body .resultToggle{transition:background-color .15s ease!important;border-radius:12px!important}
html[data-theme] body .resultToggle:hover{background:var(--zb-btn-hover)!important}
html[data-theme] body .resultToggle:active{background:var(--zb-btn-active)!important}
html[data-theme] body .resultToggle:focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:-3px!important}
html[data-theme="contrast"] body .resultToggle:hover{background:#e5e5e5!important;color:#000!important}
html[data-theme] body :is(.zb-st-back,.zb-stop-link){color:var(--c-primary-strong,#075f91)!important;text-decoration:underline!important;text-decoration-thickness:1px!important;text-underline-offset:3px!important;transition:color .15s ease,text-decoration-thickness .15s ease!important}
html[data-theme] body :is(.zb-st-back,.zb-stop-link):hover{text-decoration-thickness:2px!important;color:var(--c-ink,#17253a)!important}
html[data-theme="dark"] body :is(.zb-st-back,.zb-stop-link):hover{color:#fff!important}
html[data-theme="contrast"] body :is(.zb-st-back,.zb-stop-link):hover{color:#000!important;text-decoration-thickness:3px!important}
html[data-theme] body :is(.zb-st-back,.zb-stop-link):focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme] body.zbSeoPage .zbVariant summary{border-radius:8px!important;transition:background-color .15s ease!important}
html[data-theme] body.zbSeoPage .zbVariant summary:hover{background:var(--zb-btn-hover)!important}
html[data-theme] body.zbSeoPage .zbVariant summary:focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
html[data-theme="contrast"] body.zbSeoPage .zbVariant summary:hover{background:#e5e5e5!important;color:#000!important}
/* The PHP line page injects its stylesheet after this file; these selectors retain the same link states. */
html[data-theme] body.zbSeoPage .zbLinePage .zbStopChain a{text-decoration:underline!important;text-decoration-thickness:1px!important;text-underline-offset:3px!important;transition:color .15s ease,text-decoration-thickness .15s ease!important}
html[data-theme] body.zbSeoPage .zbLinePage .zbStopChain a:hover{color:var(--c-primary-strong,#075f91)!important;text-decoration-thickness:2px!important}
html[data-theme="dark"] body.zbSeoPage .zbLinePage .zbStopChain a:hover{color:#fff!important}
html[data-theme="contrast"] body.zbSeoPage .zbLinePage .zbStopChain a:hover{color:#000!important;text-decoration-thickness:3px!important}
html[data-theme] body.zbSeoPage .zbLinePage .zbStopChain a:focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
/* Line badges are links, so they need a distinct hover even when route color stays fixed. */
html[data-theme] body :is(.zb-st-line,.zbStopServerLine):is(:hover,:focus-visible){outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}

/* Text links and disclosure controls complete the interaction inventory. */
html[data-theme] body .zbHeader .zbLogo:hover{text-decoration:underline!important;text-decoration-thickness:2px!important;text-underline-offset:5px!important}
html[data-theme] body .zbHeader .zbLogo:focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:3px!important}
html[data-theme] body .searchOptions summary{cursor:pointer!important;transition:color .15s ease,text-decoration-thickness .15s ease!important}
html[data-theme] body .searchOptions summary:hover{color:var(--c-primary-strong,#075f91)!important;text-decoration:underline!important;text-decoration-thickness:2px!important;text-underline-offset:3px!important}
html[data-theme="dark"] body .searchOptions summary:hover{color:#fff!important}
html[data-theme="contrast"] body .searchOptions summary:hover{color:#000!important;text-decoration-thickness:3px!important}
html[data-theme] body .searchOptions summary:focus-visible{outline:3px solid var(--zb-focus,#075f91)!important;outline-offset:2px!important}
