/* SL Live v101 stylesheet module: 01-base-layout.css. Split from legacy app.css; load order matters. */
:root{
  --blue:#005EB8; --blue2:#004B93; --red:#E30613; --green:#009639; --orange:#F6A800;
  --purple:#D0007E; --pink:#EC008C; --cyan:#00A3E0; --dark:#0f172a; --muted:#64748b;
  --border:#d7e0ea; --bg:#f6f9fc; --card:#fff; --shadow:0 16px 50px rgba(15,23,42,.14);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
}
*{box-sizing:border-box} html,body{height:100%;margin:0;background:var(--bg);color:var(--dark)} a{color:inherit;text-decoration:none}
.app-header{height:72px;background:rgba(255,255,255,.94);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,8vw,180px);position:fixed;z-index:600;top:0;left:0;right:0}
.brand{display:flex;align-items:center;gap:12px;font-size:20px}.brand-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--blue);color:#fff;box-shadow:0 8px 20px rgba(11,87,183,.3)}.brand small{font-size:11px;background:#eef3f8;padding:5px 8px;border-radius:6px;color:#526172}.tabs{display:flex;gap:8px}.tab{padding:12px 16px;border-radius:12px;color:#475569}.tab.active,.tab:hover{background:#edf2f7;color:#0f172a}
.seo-intro{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}.seo-intro nav{display:inline}.seo-intro a{margin-right:8px}
main{height:100%}.view{display:none}.view.active{display:block}.page{max-width:1120px;margin:0 auto;padding:132px 22px 80px}.page h1{font-size:34px;margin:0 0 8px}.page p{color:#5f6f82;font-size:18px}.app-footer{position:fixed;right:12px;bottom:4px;z-index:300;font-size:12px;background:rgba(255,255,255,.8);padding:2px 6px;border-radius:6px;color:#334155}body[data-view="map"] .app-footer{display:none}.map-unavailable{display:grid;place-items:center;text-align:center;padding:24px;color:#334155;background:#e5edf4;font-weight:700}
#view-map{height:100%;padding-top:72px;position:relative}#map{height:calc(100vh - 72px);width:100%;background:#e5edf4}
/* Leaflet critical layout fallback.
   Some hosts/CDNs block or strip the external Leaflet stylesheet while Leaflet JS still loads.
   Without these position/overflow rules, tiles and SVG route layers appear scattered around the page. */
.leaflet-container{overflow:hidden;position:relative;outline:0}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important}.leaflet-zoom-animated{transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-dragging .leaflet-grab{cursor:move;cursor:grabbing}.leaflet-control{position:relative;z-index:800;pointer-events:auto;float:left;clear:both}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-control-zoom a{display:block;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;background:#fff;color:#111;border-bottom:1px solid #ccc}.leaflet-control-zoom a:hover{background:#f4f4f4}.leaflet-control-zoom-in{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-control-zoom-out{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:0!important}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.35);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:black}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-control-attribution{background:rgba(255,255,255,.8);padding:0 5px;margin:0;color:#333;font-size:11px;line-height:1.4}.leaflet-container a{color:#0078a8}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-map-pane canvas{z-index:100}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.leaflet-touch .leaflet-control-zoom a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}
.glass{background:rgba(255,255,255,.9);backdrop-filter:blur(16px);border:1px solid rgba(203,213,225,.85);border-radius:18px;box-shadow:var(--shadow)}.map-control-panel{display:none}.panel-row{display:flex;gap:12px;align-items:center}.between{justify-content:space-between}.map-tools{display:flex;gap:6px}.icon-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:9px;background:#fff;color:#475569;font-weight:700}.icon-btn.active{border-color:var(--blue);background:#eaf2ff;color:var(--blue)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.chip,.pill{border:1px solid var(--border);background:#fff;border-radius:10px;padding:9px 13px;color:#334155;cursor:pointer}.chip span{margin-left:7px;background:rgba(255,255,255,.24);padding:2px 8px;border-radius:7px}.chip.active{color:#fff;border-color:transparent}.chip.bus.active{background:var(--red)}.chip.metro.active{background:var(--blue)}.chip.train.active{background:var(--purple)}.chip.tram.active{background:var(--orange)}.chip.ship.active{background:#028994}.chip.neutral.active{background:#eef4fb;color:#0f172a;border-color:#d8e2ec}.vehicle-card{position:absolute;top:100px;left:430px;z-index:905;width:330px;overflow:hidden}.vehicle-card.hidden{display:none}.vehicle-head{background:var(--blue);color:#fff;padding:12px 14px;display:flex;align-items:center;gap:10px}.vehicle-head .badge{background:rgba(255,255,255,.2);border-radius:7px;padding:4px 9px}.vehicle-body{padding:14px}.vehicle-row{display:flex;justify-content:space-between;border-top:1px solid var(--border);padding:11px 0}.vehicle-row:first-child{border-top:0}.vehicle-row small{color:#64748b}.grid-form input,.grid-form select,.filters input,.filters select{width:100%;margin-top:6px;border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:16px;background:#fff}.wide{grid-column:1/-1}.small-chips{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}.small-chips button{border:1px solid var(--border);background:#f8fafc;border-radius:7px;padding:7px 9px;font-size:12px}.primary{background:var(--blue);border:0;color:#fff;border-radius:11px;padding:13px 16px;font-weight:700;cursor:pointer}.primary:hover{background:var(--blue2)}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;box-shadow:0 8px 26px rgba(15,23,42,.05);padding:18px;margin:18px 0}.grid-form{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:14px;align-items:end}.result-list{display:grid;gap:14px;margin-top:18px}.result-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 8px 26px rgba(15,23,42,.05)}.result-card.severe{background:#fff5f5;border-color:#ffaaa8}.result-card.warn{background:#fffaf0;border-color:#ffc978}.result-card h2,.result-card h3{margin:0 0 8px}.meta{display:flex;gap:8px;flex-wrap:wrap;color:#64748b;font-size:13px}.tag{background:#eef3f8;border:1px solid #d6e1ec;border-radius:7px;padding:4px 7px}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.pill.active{background:#0f172a;color:#fff}.code-card{background:#0b1220;color:#e2e8f0;padding:18px;border-radius:18px;overflow:auto}.vehicle-marker{border-radius:50%;display:grid;place-items:center;color:var(--sl-line-text-color,#fff);font-weight:800;border:3px solid #fff;box-shadow:0 3px 12px rgba(15,23,42,.35)}.vehicle-marker.bus{background:var(--red)}.vehicle-marker.metro{background:var(--blue)}.vehicle-marker.train{background:var(--purple)}.vehicle-marker.tram{background:var(--orange)}.vehicle-marker.ship{background:#028994}.stop-marker{background:white;border:2px solid var(--blue);width:10px;height:10px;border-radius:50%}.leaflet-popup-content{font-family:inherit}.muted{color:#64748b}.error{color:#b91c1c}.ok{color:#15803d}
@media (max-width: 900px){.app-header{padding:0 12px}.tabs{overflow-x:auto}.tab{padding:10px}.map-control-panel{display:none}.vehicle-card{left:12px;top:230px}.grid-form{grid-template-columns:1fr}.page{padding-top:108px}.brand small{display:none}}
.station-card{position:absolute;top:175px;left:610px;z-index:906;width:380px;overflow:hidden}.station-card.hidden{display:none}.station-head{padding:14px 16px;border-bottom:1px solid var(--border);position:relative}.station-head h2{font-size:18px;margin:0}.close{margin-left:auto;border:0;background:rgba(255,255,255,.2);color:inherit;border-radius:8px;font-size:18px;cursor:pointer}.vehicle-head .close{padding:2px 8px}.next-stops{border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:10px;background:#f8fafc}.next-stops ol{list-style:none;margin:8px 0 0;padding:0}.next-stops li{display:grid;grid-template-columns:16px 1fr auto;gap:8px;align-items:center;padding:5px 0}.next-stops li small{color:#64748b}.dot{width:8px;height:8px;border-radius:50%;background:#94a3b8;display:inline-block}.dot.active{background:var(--blue)}.vehicle-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.vehicle-actions button,.depart-tabs button{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px;cursor:pointer}.depart-tabs{display:grid;grid-template-columns:1fr 1fr;margin-bottom:8px;border-bottom:1px solid var(--border)}.depart-tabs button{border:0;border-radius:0;color:#64748b}.depart-tabs button.active{color:#0f172a;font-weight:700}.departure-list{border:1px solid var(--border);border-radius:12px;overflow:hidden}.departure-row{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-top:1px solid var(--border);align-items:center}.departure-row:first-child{border-top:0}.departure-row em{display:inline-block;margin-left:8px;color:#d97706;font-style:normal;background:#fff7ed;border:1px solid #fed7aa;border-radius:7px;padding:2px 6px}.departure-row.cancelled{color:#dc2626}.departure-row.late strong{color:#dc2626}.line-chip{background:#334155;color:#fff;border-radius:6px;padding:3px 7px;margin-right:5px}.warn-text{color:#d97706}.small-chips button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.filters label{display:grid;gap:6px;color:#64748b;font-size:14px;min-width:min(360px,100%)}.filters select{margin-top:0}.leaflet-marker-icon .vehicle-marker{transform:translateZ(0)}
@media (max-width: 900px){.station-card{left:12px;right:12px;width:auto;top:285px}.filters label{min-width:100%}}
.admin-page .card h2{margin-top:0}.admin-login{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:14px;align-items:end}.admin-login label{display:grid;gap:6px;color:#64748b;font-size:14px}.admin-login input[type=password]{border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:16px}.check-row{display:flex!important;align-items:center;gap:8px;color:#334155!important}.check-row input{width:auto!important}.admin-notice{border-radius:14px;padding:12px 16px;margin:14px 0;border:1px solid var(--border);background:#fff}.admin-notice.hidden{display:none}.admin-notice.ok{background:#f0fdf4;border-color:#86efac;color:#166534}.admin-notice.info{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.admin-notice.error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.admin-metric{background:#fff;border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 8px 26px rgba(15,23,42,.05)}.admin-metric small{display:block;color:#64748b;margin-bottom:8px}.admin-metric strong{font-size:26px}.admin-actions{display:flex;gap:10px;flex-wrap:wrap}.admin-actions button,.admin-section-head button,.admin-table button{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 12px;cursor:pointer}.admin-actions button:hover,.admin-section-head button:hover,.admin-table button:hover{background:#f1f5f9}.admin-actions button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.admin-actions button:disabled{opacity:.6;cursor:progress}.small-code{max-height:280px}.admin-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.status-list dl{display:grid;gap:8px;margin:0}.status-list dl div{display:grid;grid-template-columns:180px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid #eef2f7}.status-list dt{font-weight:700;color:#334155}.status-list dd{margin:0;color:#0f172a;word-break:break-word}.admin-section-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th,.admin-table td{padding:10px 12px;border-bottom:1px solid #e2e8f0;text-align:left;vertical-align:top}.admin-table th{background:#f8fafc;color:#475569;position:sticky;top:0}.admin-table code{white-space:pre-wrap;word-break:break-word}.status-success{color:#15803d;font-weight:700}.status-error{color:#b91c1c;font-weight:700}.status-running{color:#b45309;font-weight:700}@media (max-width: 900px){.admin-login,.admin-grid,.admin-two-col{grid-template-columns:1fr}.admin-section-head{align-items:flex-start;flex-direction:column}.status-list dl div{grid-template-columns:1fr}.admin-metric strong{font-size:22px}}
.hidden{display:none!important}.admin-login{display:block}.admin-login .grid-form{grid-template-columns:repeat(2,minmax(220px,1fr)) auto}.admin-login input[type=text],.admin-login input[type=password],.admin-login input:not([type]){border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:16px}.admin-session{background:#f8fafc}.admin-session .admin-section-head{align-items:center}.admin-session p{margin:.25rem 0 0}@media (max-width: 900px){.admin-login .grid-form{grid-template-columns:1fr}.admin-session .admin-section-head{align-items:flex-start;flex-direction:column}}


/* ============================================================
   v121: UI REFRESH
   Mål: klarare visuell hierarki, bättre täthet, mer polerat
   utan att bryta befintlig layout-logik.
   ============================================================ */

/* --- Typografi & grundtokens --- */
:root {
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-xl: 26px;
  --radius-pill: 999px;
  --transition-fast: .13s cubic-bezier(.2,.8,.2,1);
  --transition-base: .18s cubic-bezier(.2,.8,.2,1);
  --font-numeric: "tabular-nums";
}
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

/* --- Header: mer luft, tydligare separation --- */
.app-header {
  height: 68px;
  padding: 0 clamp(14px, 4vw, 56px);
  gap: 16px;
  border-bottom: 1px solid var(--hairline);
  box-shadow: 0 1px 0 rgba(255,255,255,.6), 0 6px 24px rgba(15,23,42,.06);
}
.brand { gap: 10px; }
.brand strong { font-size: 17px; font-weight: 800; letter-spacing: -.03em; }
.brand small {
  font-size: 10px; letter-spacing: .09em; font-weight: 900;
  padding: 3px 7px; border-radius: 6px;
  background: color-mix(in srgb, var(--blue) 10%, var(--surface));
  color: var(--blue); border: 1px solid color-mix(in srgb, var(--blue) 22%, transparent);
}
.brand-icon {
  width: 40px; height: 40px; border-radius: 12px;
  font-size: 16px; font-weight: 950;
  box-shadow: 0 4px 14px rgba(0,94,184,.28), 0 1px 0 rgba(255,255,255,.18) inset;
}

/* Tabs: pill-style, snäppigt aktiv-state */
.tabs { gap: 2px; padding: 3px; border-radius: var(--radius-pill); }
.tab {
  padding: 8px 15px; font-size: 13.5px; font-weight: 700;
  border-radius: var(--radius-pill);
  transition: background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}
.tab.active {
  background: var(--blue);
  color: #fff !important;
  box-shadow: 0 3px 12px rgba(0,94,184,.26);
}
.tab:hover:not(.active) { background: var(--surface-hover); color: var(--blue); }

/* --- Map view: karta fyller hela fönstret --- */
#view-map { padding-top: 68px; }
#map { height: calc(100dvh - 68px); }

/* --- Kartpanel: mer kompakt och skarp --- */
.map-control-panel {
  top: 84px; right: 18px;
  border-radius: var(--radius-xl);
  width: min(800px, 46vw);
  padding: 13px 14px;
  box-shadow: 0 16px 48px rgba(15,23,42,.18), 0 1px 0 rgba(255,255,255,.55) inset;
}
.map-control-panel.compact { top: 84px; right: 18px; width: 50px; padding: 0; }
.panel-toggle-btn {
  width: 44px; height: 44px; border-radius: 14px;
  box-shadow: 0 6px 20px rgba(0,94,184,.2);
  transition: transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
}
.panel-toggle-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 26px rgba(0,94,184,.28); }
.map-control-panel.compact .panel-toggle-btn {
  border-radius: 14px; width: 44px; height: 44px;
  box-shadow: 0 10px 30px rgba(0,94,184,.32);
}

/* Chips: kompaktare, pill-shape */
.chips { gap: 7px; margin-top: 11px; }
.chip, .pill {
  border-radius: var(--radius-pill);
  padding: 8px 13px; font-size: 12.5px; font-weight: 750;
  min-height: 36px;
  transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
}
.chip:active { transform: scale(.97); }
.chip span { font-size: 11px; font-weight: 900; min-width: 18px; text-align: center; }
.map-extra-actions button {
  border-radius: var(--radius-pill); font-size: 13px; font-weight: 700;
  padding: 8px 15px; min-height: 36px;
  transition: background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}
#mapLocateButton.active {
  background: var(--blue) !important; color: #fff !important;
  border-color: var(--blue) !important;
  box-shadow: 0 4px 14px rgba(0,94,184,.3) !important;
}

/* --- Station- & fordonskort: skarpare, tätare --- */
.station-card, .vehicle-card {
  border-radius: var(--radius-xl);
  border: 1px solid var(--hairline);
  box-shadow: 0 20px 56px rgba(15,23,42,.2), 0 1px 0 rgba(255,255,255,.5) inset;
  overflow: hidden;
}
.station-head-v39 { border-top-width: 4px; }
.station-head, .vehicle-head { min-height: 54px; padding: 12px 14px !important; }
.station-title h2, .vehicle-title-row strong { font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.close {
  min-width: 30px !important; min-height: 30px !important;
  border-radius: var(--radius-pill) !important;
  font-size: 17px;
  transition: background var(--transition-fast), transform var(--transition-fast);
}

/* Station board hero: tätare layout */
.station-board-hero-v89 {
  padding: 10px 12px !important;
  border-radius: var(--radius-md);
  margin: 0 0 8px;
  border: 1px solid var(--hairline);
  background: var(--surface-soft);
}
.station-board-hero-v89 > div:first-child strong { font-size: 22px; letter-spacing: -.04em; font-variant-numeric: var(--font-numeric); }
.station-board-hero-v89 > div:first-child small { font-size: 11px; }
.station-board-hero-v89 > div:first-child span { font-size: 11px; color: var(--text-muted); }

/* Quick-grid: kortare rader */
.station-quick-grid { gap: 0; }
.station-quick-grid > div, .station-quick-grid-sl > div { padding: 9px 10px !important; }
.station-quick-grid small { font-size: 11px; }
.station-quick-grid strong { font-size: 18px; font-weight: 800; }

/* Tabs: pill-style */
.depart-tabs, .station-tabs {
  border-radius: var(--radius-md) !important;
  padding: 3px !important; margin-bottom: 9px;
  gap: 2px !important;
}
.depart-tabs button, .station-tabs button {
  border-radius: 11px !important; padding: 8px 12px;
  font-size: 13px; font-weight: 700; min-height: 36px;
  transition: background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}
.depart-tabs button.active, .station-tabs button.active {
  background: var(--blue) !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(0,94,184,.22);
}

/* Avgångsrader: tätare, mer luft per rad */
.sl-departure-row {
  padding: 10px 11px;
  gap: 9px;
  grid-template-columns: minmax(58px,.44fr) minmax(0,1.9fr) minmax(72px,.52fr) minmax(64px,.4fr);
}
.sl-dep-line .line-chip { font-size: 13.5px; padding: 4px 7px; border-radius: 7px; min-width: 34px; }
.sl-dep-main strong { font-size: 14px; font-weight: 700; }
.sl-dep-time strong { font-size: 18px; font-weight: 800; letter-spacing: -.04em; font-variant-numeric: var(--font-numeric); }

/* Station live-strip pills */
.sl-live-pill { border-radius: var(--radius-pill); padding: 4px 9px; font-size: 11.5px; }

/* --- Sidor (status, planner, stops) --- */
.page { padding: 120px 24px 80px; }
.page h1 { font-size: 30px; font-weight: 800; letter-spacing: -.03em; margin-bottom: 6px; }

/* Cards */
.card, .result-card {
  border-radius: var(--radius-xl);
  border: 1px solid var(--hairline);
  box-shadow: 0 6px 22px rgba(15,23,42,.045);
  padding: 20px;
}

/* Primary button */
.primary {
  border-radius: var(--radius-md); min-height: 42px;
  font-size: 14px; font-weight: 750;
  box-shadow: 0 6px 18px rgba(0,94,184,.18);
  letter-spacing: -.01em;
  transition: background var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.primary:hover { box-shadow: 0 8px 24px rgba(0,94,184,.26); transform: translateY(-1px); }
.primary:active { transform: translateY(0); box-shadow: 0 3px 10px rgba(0,94,184,.16); }

/* Inputs */
.grid-form input, .grid-form select,
.filters input, .filters select,
.suggest-wrap input, .planner-options input, .planner-options select {
  border-radius: var(--radius-md);
  padding: 11px 13px; font-size: 14.5px;
  border: 1.5px solid var(--border);
  min-height: 44px;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.grid-form input:focus, .suggest-wrap input:focus { border-color: var(--blue); }

/* --- Status-sida --- */
.status-card-v51 { border-radius: var(--radius-lg) !important; }
.status-badge-v51 { font-size: 11px; font-weight: 900; border-radius: var(--radius-pill); }

/* --- Fordonspopup-header --- */
.vehicle-head-sl { border-top-left-radius: 0; border-top-right-radius: 0; }

/* --- Scrollbar-styling (webkit) --- */
.station-body::-webkit-scrollbar, .vehicle-body::-webkit-scrollbar,
.map-control-panel::-webkit-scrollbar { width: 4px; }
.station-body::-webkit-scrollbar-track, .vehicle-body::-webkit-scrollbar-track,
.map-control-panel::-webkit-scrollbar-track { background: transparent; }
.station-body::-webkit-scrollbar-thumb, .vehicle-body::-webkit-scrollbar-thumb,
.map-control-panel::-webkit-scrollbar-thumb {
  background: var(--hairline); border-radius: 4px;
}

/* --- Mörkt läge: justeringar för v121 --- */
html[data-theme="dark"] .app-header {
  box-shadow: 0 1px 0 rgba(255,255,255,.04), 0 6px 24px rgba(0,0,0,.3);
}
html[data-theme="dark"] .brand small {
  background: rgba(0,94,184,.18); color: #93c5fd;
  border-color: rgba(0,94,184,.35);
}
html[data-theme="dark"] .tab.active {
  background: var(--blue) !important; color: #fff !important;
  box-shadow: 0 3px 12px rgba(0,94,184,.35);
}
html[data-theme="dark"] .map-control-panel {
  box-shadow: 0 16px 48px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.04) inset;
}
html[data-theme="dark"] .station-card, html[data-theme="dark"] .vehicle-card {
  box-shadow: 0 20px 56px rgba(0,0,0,.45), 0 1px 0 rgba(255,255,255,.04) inset;
}
html[data-theme="dark"] .station-board-hero-v89 {
  background: var(--surface-soft); border-color: var(--hairline);
}
html[data-theme="dark"] .depart-tabs button.active,
html[data-theme="dark"] .station-tabs button.active {
  background: var(--blue) !important; color: #fff !important;
}
html[data-theme="dark"] .primary:hover { box-shadow: 0 8px 24px rgba(0,94,184,.38); }

/* --- Mobil: header 2-rads layout --- */
@media (max-width: 700px) {
  .app-header { height: 100px; grid-template-rows: 48px 40px; padding: 6px 10px 8px; }
  #view-map { padding-top: 100px; }
  #map { height: calc(100dvh - 100px); }
  .brand-icon { width: 36px; height: 36px; font-size: 14px; }
  .brand strong { font-size: 17px; }
  .tab { padding: 8px 11px; font-size: 13px; }
  .map-control-panel.compact { top: 114px; }
  .page { padding-top: 122px; }
  .sl-departure-row {
    grid-template-columns: 48px minmax(0,1fr) 56px !important;
    gap: 7px; padding: 10px 9px;
  }
  .sl-dep-line .line-chip { min-width: 32px; font-size: 13px; }
  .sl-dep-time strong { font-size: 16px; }
}
@media (max-width: 390px) {
  .tab { padding: 7px 9px; font-size: 12.5px; }
}

/* header-actions wrapper */
.header-actions {
  display: flex; align-items: center; gap: 8px; flex: 0 0 auto;
}
@media (max-width: 700px) {
  .header-actions { grid-column: 2; grid-row: 1; }
  .pwa-install-btn { padding: 6px 10px; font-size: 0; gap: 0; }
  .pwa-install-btn::before { content: "⊕"; font-size: .95rem; }
}

/* v172: language selector with flag icons */
.sl-language-switcher{display:flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--card);color:var(--dark);border-radius:999px;padding:5px 8px;box-shadow:0 8px 22px rgba(15,23,42,.08);white-space:nowrap}
.sl-language-title{font-size:12px;font-weight:800;color:#64748b;letter-spacing:.01em}
.sl-language-switcher select{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:800;cursor:pointer;max-width:132px;outline:0;padding:4px 18px 4px 2px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 9px) 50%,calc(100% - 5px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}
.sl-language-switcher:focus-within{outline:3px solid color-mix(in srgb,var(--blue) 28%,transparent);outline-offset:2px;border-color:var(--blue)}
html[data-theme="dark"] .sl-language-switcher{background:#101d30;color:#e5edf7;border-color:#2a3a52}
html[data-theme="dark"] .sl-language-title{color:#cbd5e1}
@media (max-width: 1040px){.sl-language-title{display:none}.sl-language-switcher{padding:5px 6px}.sl-language-switcher select{max-width:84px;font-size:13px}}
@media (max-width: 700px){.sl-language-switcher{grid-column:2;grid-row:1;padding:3px 5px}.sl-language-switcher select{max-width:62px;font-size:0;padding-right:16px}.sl-language-switcher select option{font-size:14px}.sl-language-switcher select{font-size:14px}}


/* SL Live v101 stylesheet module: 02-planner-legacy.css. Split from legacy app.css; load order matters. */
/* v5 planner upgrades */
.planner-card{display:grid;gap:16px}.planner-main{display:grid;grid-template-columns:1fr auto auto 1fr;gap:12px;align-items:end}.suggest-wrap,.planner-options label{display:grid;gap:6px;color:#64748b;font-size:14px}.suggest-wrap input,.planner-options input,.planner-options select{border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:16px;background:#fff}.planner-choice{color:#64748b;min-height:18px}.icon-action,.planner-actions button:not(.primary){border:1px solid var(--border);background:#fff;border-radius:12px;padding:12px 14px;cursor:pointer}.icon-action:hover,.planner-actions button:not(.primary):hover{background:#f1f5f9}.icon-action.swap{font-size:20px;line-height:1}.planner-advanced{border:1px solid #e2e8f0;border-radius:16px;background:#f8fafc;padding:12px 14px}.planner-advanced summary{cursor:pointer;font-weight:700;color:#0f172a}.planner-options{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px;margin-top:12px}.planner-modes{display:flex;gap:8px;flex-wrap:wrap}.planner-modes label{border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 12px;display:flex;gap:7px;align-items:center;cursor:pointer}.planner-actions{display:flex;gap:10px;align-items:center}.journey-card{border-left:5px solid var(--blue)}.journey-top{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.journey-top h2{margin-bottom:2px}.journey-copy{border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 12px;cursor:pointer}.journey-chips{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.journey-warning{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:10px 12px;margin:10px 0}.journey-details summary{cursor:pointer;font-weight:700;margin-top:10px}.leg-list{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:10px}.leg-item{display:grid;grid-template-columns:140px 1fr;gap:12px;align-items:start;border-top:1px solid #eef2f7;padding-top:10px}.leg-badge{background:#0f172a;color:#fff;border-radius:10px;padding:8px 10px;font-weight:800;text-align:center}.leg-main p{margin:.25rem 0;color:#334155}.leg-main small{color:#64748b}.admin-page #adminSecureArea[data-server-locked="1"]{display:none!important}
@media (max-width: 900px){.planner-main{grid-template-columns:1fr}.planner-options{grid-template-columns:1fr}.planner-actions{display:grid}.leg-item{grid-template-columns:1fr}.journey-top{flex-direction:column}.icon-action.swap{order:2}.planner-main label:first-child{order:1}.planner-main label:last-child{order:3}}
/* v167 route modes */
.planner-travel-method{border:1px solid #dbe6f1;border-radius:16px;background:#f8fafc;padding:12px 14px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.planner-travel-method legend{font-weight:800;color:#0f172a;padding:0 6px}.planner-travel-method label{border:1px solid var(--border);background:#fff;border-radius:999px;padding:9px 12px;display:flex;gap:8px;align-items:center;cursor:pointer}.planner-travel-method label:has(input:checked){border-color:var(--blue);background:#eaf2ff;color:var(--blue);font-weight:800}.planner-time-panel{border:1px solid #dbe6f1;border-radius:16px;background:#f8fafc;padding:12px 14px}.planner-time-panel legend{font-weight:800;color:#0f172a;padding:0 6px}.planner-time-grid{display:grid;grid-template-columns:minmax(150px,1fr) minmax(130px,1fr) minmax(170px,1fr) auto;gap:12px;align-items:end}.planner-time-grid label{display:grid;gap:6px;color:#64748b;font-size:14px}.planner-time-grid input,.planner-time-grid select{border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:16px;background:#fff;min-height:46px}.planner-now-btn{min-height:46px;align-self:end;white-space:nowrap}.route-result-card{border-left-color:#0f766e}.route-step-list .route-step{grid-template-columns:120px 1fr}.planner-card[data-travel-mode="walk"] .planner-main,.planner-card[data-travel-mode="bike"] .planner-main,.planner-card[data-travel-mode="car"] .planner-main{grid-template-columns:1fr auto auto 1fr}
@media (max-width: 900px){.planner-travel-method{display:grid;grid-template-columns:1fr 1fr}.planner-travel-method legend{grid-column:1/-1}.planner-time-grid{grid-template-columns:1fr}.planner-now-btn{width:100%}.route-step-list .route-step{grid-template-columns:1fr}}


/* v182 smart planner additions */
.planner-quick-panel,.planner-access-panel{border:1px solid #dbe6f1;border-radius:16px;background:#f8fafc;padding:12px 14px;display:grid;gap:10px}.planner-quick-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.planner-quick-head small{display:block;color:#64748b;margin-top:2px}.planner-quick-actions,.planner-quick-places{display:flex;flex-wrap:wrap;gap:8px}.planner-quick-actions button,.planner-quick-places button,.planner-nearby-chip button,.planner-compare-tile,.planner-insight{border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer}.planner-quick-actions button:hover,.planner-quick-places button:hover,.planner-nearby-chip button:hover,.planner-compare-tile:hover,.planner-insight:hover{background:#eef6ff;border-color:#9ec5fe}.planner-nearby-chip{display:flex;align-items:center;gap:8px;border:1px solid var(--border);background:#fff;border-radius:14px;padding:8px 10px}.planner-nearby-chip small{color:#64748b}.planner-access-panel{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.planner-access-panel legend{font-weight:800;color:#0f172a;padding:0 6px}.planner-access-panel label{border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 12px;display:flex;gap:7px;align-items:center;cursor:pointer}.planner-access-panel label:has(input:checked){border-color:#0f766e;background:#ecfdf5;color:#0f766e;font-weight:800}.planner-smart-results,.planner-compare-panel{margin-top:16px}.planner-insights-card,.planner-compare-card{display:grid;gap:12px}.planner-insight-grid,.planner-compare-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.planner-insight,.planner-compare-tile{border-radius:16px;text-align:left;display:grid;gap:3px;align-content:start;min-height:96px}.planner-insight span,.planner-compare-tile span{font-size:22px}.planner-insight strong,.planner-compare-tile strong{color:#0f172a}.planner-insight small,.planner-compare-tile small{color:#64748b;line-height:1.35}.planner-compare-tile.active{border-color:var(--blue);background:#eaf2ff}.planner-offline-card{border-left:5px solid #f59e0b}.planner-access-note{margin-top:2px}.smart-watch-journeys{margin-bottom:12px}.journey-action-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
html[data-theme="dark"] .planner-quick-panel,html[data-theme="dark"] .planner-access-panel,html[data-theme="dark"] .planner-time-panel,html[data-theme="dark"] .planner-travel-method{background:#0f172a;border-color:#23344f}html[data-theme="dark"] .planner-quick-actions button,html[data-theme="dark"] .planner-quick-places button,html[data-theme="dark"] .planner-nearby-chip,html[data-theme="dark"] .planner-nearby-chip button,html[data-theme="dark"] .planner-access-panel label,html[data-theme="dark"] .planner-insight,html[data-theme="dark"] .planner-compare-tile{background:#111827;border-color:#334155;color:#e2e8f0}html[data-theme="dark"] .planner-insight strong,html[data-theme="dark"] .planner-compare-tile strong{color:#f8fafc}html[data-theme="dark"] .planner-compare-tile.active{background:#10284a;border-color:#2b7de9}
@media (max-width: 900px){.planner-quick-head{display:grid}.planner-quick-actions,.planner-quick-places{display:grid;grid-template-columns:1fr 1fr}.planner-access-panel{display:grid;grid-template-columns:1fr}.planner-insight-grid,.planner-compare-grid{grid-template-columns:1fr 1fr}.planner-nearby-chip{display:grid;grid-template-columns:1fr auto auto auto}.journey-action-row{justify-content:flex-start}}
@media (max-width: 560px){.planner-quick-actions,.planner-quick-places,.planner-insight-grid,.planner-compare-grid,.planner-nearby-chip{grid-template-columns:1fr}.planner-quick-actions button,.planner-quick-places button{width:100%}}

/* SL Live v101 stylesheet module: 03-popup-legacy.css. Split from legacy app.css; load order matters. */
/* v8 station popup matching screenshot-style stop card */
.station-card{width:390px;top:170px;left:610px;border-radius:16px;overflow:hidden;background:rgba(255,255,255,.96)}
.station-head-image{padding:14px 16px 12px;background:#fff;border-bottom:1px solid #e5edf5;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.station-title{display:flex;align-items:flex-start;gap:10px;min-width:0}.station-title h2{font-size:18px;line-height:1.15;margin:0 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-title small{color:#64748b}.station-pin{color:#0b57b7;border:2px solid #bfdbfe;border-radius:999px;width:26px;height:26px;display:grid;place-items:center;flex:0 0 auto;background:#eff6ff}.station-close{background:#f1f5f9!important;color:#334155!important;border:1px solid #dbe4ee!important;width:28px;height:28px;line-height:1;display:grid;place-items:center;margin-left:0!important}.station-body{padding:12px 14px 14px}.station-block{border-bottom:1px solid #e6edf5;padding:8px 0 10px}.station-block:first-child{padding-top:0}.station-label{font-size:11px;font-weight:800;color:#64748b;letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px}.station-line-list{display:flex;gap:6px;flex-wrap:wrap}.station-line-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:24px;border-radius:7px;background:#334155;color:#fff;font-size:13px;font-weight:900;padding:2px 7px}.station-line-badge.bus,.line-chip.bus{background:#ef4b44}.station-line-badge.metro,.line-chip.metro{background:#0b57b7}.station-line-badge.train,.line-chip.train{background:#e9569b}.station-line-badge.tram,.line-chip.tram{background:#d99000}.station-line-badge.ship,.line-chip.ship{background:#028994}.station-chain{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin:10px 0}.chain-row{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:7px;align-items:center;padding:5px 0;color:#475569;font-size:13px}.chain-row + .chain-row{border-top:1px solid #e8eef5}.chain-dot{color:#94a3b8}.station-warnings{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:8px 10px;margin:10px 0;font-size:13px}.station-tabs{margin:10px 0 8px;border:1px solid #dbe4ee;border-radius:12px;overflow:hidden;background:#fff}.station-tabs button{padding:10px 12px}.station-tabs button.active{background:#f8fafc;color:#0f172a}.station-tab-body.hidden{display:none!important}.station-footer{display:grid;gap:10px;margin-top:10px}.station-footer .primary{width:100%;padding:11px 12px}.station-empty{border:1px dashed #dbe4ee;border-radius:12px;padding:12px;background:#f8fafc}.departure-list{border-radius:12px}.departure-row{min-height:48px}.line-chip.bus{background:#ef4b44}.line-chip.metro{background:#0b57b7}.line-chip.train{background:#e9569b}.line-chip.tram{background:#d99000}.line-chip.ship{background:#028994}
@media (max-width: 900px){.station-card{left:12px;right:12px;width:auto;top:285px}.chain-row{grid-template-columns:auto 1fr}.chain-dot{display:none}}

/* v9 vehicle popup matching screenshot-style vehicle card */
.vehicle-card{width:330px;border-radius:15px;background:rgba(255,255,255,.97);box-shadow:0 16px 46px rgba(15,23,42,.22);border:1px solid rgba(203,213,225,.95);max-height:calc(100vh - 116px);overflow:hidden}
.vehicle-head{min-height:50px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.24);align-items:center;justify-content:space-between}.vehicle-head.bus{background:#ef4b44}.vehicle-head.metro{background:#0b57b7}.vehicle-head.train{background:#7b55c7}.vehicle-head.tram{background:#d99000}.vehicle-head.ship{background:#028994}.vehicle-title-row{display:flex;align-items:center;gap:9px;min-width:0;line-height:1.2}.vehicle-mode-icon{width:24px;height:24px;border-radius:7px;background:rgba(255,255,255,.2);display:grid;place-items:center;font-weight:900;flex:0 0 auto}.vehicle-head .badge{background:rgba(255,255,255,.25);font-weight:900;min-width:30px;text-align:center}.vehicle-title{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:215px}.route-arrow{opacity:.85;margin:0 4px}.vehicle-popup-body{padding:0}.vehicle-popup-body .next-stops{margin:0;border:0;border-radius:0;border-bottom:1px solid #dbe4ee;background:#f8fbff;padding:12px 14px}.vehicle-popup-body .next-stops small{display:flex;gap:6px;align-items:center;color:#475569;font-weight:700}.vehicle-loading{margin-left:auto;color:#64748b;font-weight:500}.vehicle-popup-body .next-stops li{grid-template-columns:16px 1fr auto;padding:6px 0}.vehicle-popup-body .next-stops li.current b{color:#0b57b7}.vehicle-popup-body .next-stops li.empty b{color:#64748b}.vehicle-popup-body .dot.active{background:#0b57b7;box-shadow:0 0 0 4px rgba(11,87,183,.11)}.vehicle-popup-body .vehicle-row{padding:11px 14px;align-items:center;background:#fff}.vehicle-row-label{display:flex;align-items:center;gap:9px}.vehicle-row-label i{width:18px;text-align:center;color:#64748b;font-style:normal}.vehicle-row-label small{font-size:14px}.vehicle-popup-body .vehicle-row strong{font-size:16px;font-weight:500;color:#0f172a;text-align:right}.vehicle-popup-body .vehicle-row strong.ok{color:#159447}.vehicle-popup-body .vehicle-row strong.warn-text{color:#d97706}.vehicle-extra{border-top:1px solid var(--border);background:#fff}.vehicle-extra summary{cursor:pointer;padding:10px 14px;color:#64748b;font-size:13px}.vehicle-extra .vehicle-row{padding:8px 14px;background:#f8fafc}.vehicle-actions{padding:10px 14px;margin:0!important;border-top:1px solid var(--border);background:#f8fafc}.vehicle-actions button{font-weight:700}.vehicle-updated{display:block;padding:0 14px 10px;background:#f8fafc}.vehicle-head .close{background:rgba(255,255,255,.18);color:#fff;border:1px solid rgba(255,255,255,.24);width:28px;height:28px;display:grid;place-items:center;margin-left:8px}.vehicle-head .close:hover{background:rgba(255,255,255,.3)}
@media (max-width:900px){.vehicle-card{left:12px!important;right:12px;width:auto!important;top:230px!important}.vehicle-title{max-width:calc(100vw - 168px)}}



/* v160: expandable details for bus stops merged within a few meters. */
.merged-stops-panel{margin:10px 0 12px;border:1px solid rgba(148,163,184,.38);border-radius:14px;background:rgba(248,250,252,.78);overflow:hidden}
.merged-stops-panel summary{cursor:pointer;padding:10px 12px;font-weight:800;color:#334155;list-style:none}
.merged-stops-panel summary::-webkit-details-marker{display:none}
.merged-stops-panel summary::after{content:'▾';float:right;color:#64748b}
.merged-stops-panel[open] summary::after{content:'▴'}
.merged-stops-panel ul{margin:0;padding:0 10px 10px;list-style:none;display:grid;gap:6px}
.merged-stops-panel li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border-radius:10px;background:#fff;border:1px solid rgba(226,232,240,.9)}
.merged-stops-panel strong{display:block;font-size:.88rem;color:#0f172a}
.merged-stops-panel small{display:block;color:#64748b;font-size:.76rem}
.merged-stops-panel button{border:1px solid rgba(0,94,184,.25);background:#eaf2ff;color:#063b75;border-radius:999px;padding:6px 10px;font-weight:800}
[data-theme=dark] .merged-stops-panel{background:rgba(15,23,42,.7);border-color:rgba(148,163,184,.25)}
[data-theme=dark] .merged-stops-panel li{background:rgba(15,23,42,.92);border-color:rgba(148,163,184,.22)}
[data-theme=dark] .merged-stops-panel strong{color:#e2e8f0}

/* SL Live v101 stylesheet module: 04-brand-map-controls.css. Split from legacy app.css; load order matters. */
/* v10 SL brand colors, logo, and map visibility updates */
.brand-icon{position:relative;width:46px;height:46px;border-radius:50%;background:var(--blue);color:#fff;font-weight:950;letter-spacing:-.04em;font-size:18px;border:3px solid #fff;box-shadow:0 8px 24px rgba(0,94,184,.34),0 0 0 2px var(--blue);overflow:hidden}.brand-icon::after{content:"";position:absolute;right:6px;bottom:6px;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.28)}.brand-icon span{position:relative;z-index:1}.brand strong{letter-spacing:-.02em}.brand small{background:#e6f1fb;color:#004b93;font-weight:800}.tab.active,.tab:hover{background:#e6f1fb;color:#003b73}.chip.bus.active{background:#E30613}.chip.metro.active{background:#005EB8}.chip.train.active{background:#EC008C}.chip.tram.active{background:#F6A800;color:#111827}.chip.ship.active{background:#00A3E0}.primary{background:#005EB8}.primary:hover{background:#004B93}.vehicle-marker{background:var(--sl-line-color,var(--blue));border:3px solid #fff;box-shadow:0 3px 14px rgba(15,23,42,.38)}.vehicle-marker.bus,.vehicle-marker.metro,.vehicle-marker.train,.vehicle-marker.tram,.vehicle-marker.ship{background:var(--sl-line-color,var(--blue))}.vehicle-head{background:var(--sl-line-color,var(--blue))}.vehicle-head.bus,.vehicle-head.metro,.vehicle-head.train,.vehicle-head.tram,.vehicle-head.ship{background:var(--sl-line-color,var(--blue))}.line-chip,.station-line-badge{background:var(--sl-line-color,#334155);border-color:var(--sl-line-color,#334155);color:var(--sl-line-text-color,#fff)}.line-chip.tram,.station-line-badge.tram{color:#111827}.station-pin{color:#005EB8;border-color:#b7d7f2;background:#e6f1fb}.vehicle-popup-body .next-stops li.current b{color:#005EB8}.vehicle-popup-body .dot.active{background:#005EB8;box-shadow:0 0 0 4px rgba(0,94,184,.12)}.leaflet-interactive{outline:none}.stop-marker{border-color:#005EB8}


/* v11 split metro colors like SL: green, red and blue lines */
.chip.metro-green.active{background:#009639;color:#fff}.chip.metro-red.active{background:#D52B1E;color:#fff}.chip.metro-blue.active{background:#0072CE;color:#fff}.chip.metro-green:not(.active),.chip.metro-red:not(.active),.chip.metro-blue:not(.active){background:#fff}.chip.metro-green{border-color:#009639}.chip.metro-red{border-color:#D52B1E}.chip.metro-blue{border-color:#0072CE}.vehicle-marker.metro-green,.vehicle-head.metro-green,.line-chip.metro-green,.station-line-badge.metro-green{background:#009639}.vehicle-marker.metro-red,.vehicle-head.metro-red,.line-chip.metro-red,.station-line-badge.metro-red{background:#D52B1E}.vehicle-marker.metro-blue,.vehicle-head.metro-blue,.line-chip.metro-blue,.station-line-badge.metro-blue{background:#0072CE}.line-chip.metro-green,.line-chip.metro-red,.line-chip.metro-blue,.station-line-badge.metro-green,.station-line-badge.metro-red,.station-line-badge.metro-blue{color:#fff;border-color:var(--sl-line-color,currentColor)}.vehicle-marker.metro-green,.vehicle-marker.metro-red,.vehicle-marker.metro-blue{background:var(--sl-line-color,#0072CE);box-shadow:0 3px 14px rgba(15,23,42,.38)}.vehicle-head.metro-green,.vehicle-head.metro-red,.vehicle-head.metro-blue{background:var(--sl-line-color,#0072CE)}

@media (max-width: 900px){.map-control-panel.compact{left:auto;right:12px;width:48px}}



/* === v119: PWA-installationsknapp === */
.pwa-install-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;
  border-radius:999px;
  border:1.5px solid var(--blue);
  background:transparent;
  color:var(--blue);
  font-size:.82rem;font-weight:700;
  cursor:pointer;white-space:nowrap;
  transition:background .15s,color .15s;
  margin-left:8px;
}
.pwa-install-btn:hover{background:var(--blue);color:#fff;}
.pwa-install-btn:disabled{opacity:.55;cursor:progress;}
.pwa-install-btn.hidden{display:none!important;}
html[data-theme="dark"] .pwa-install-btn{border-color:#60a5fa;color:#60a5fa;}
html[data-theme="dark"] .pwa-install-btn:hover{background:#60a5fa;color:#0f172a;}

/* === v119: iOS install toast === */
.ios-install-toast{
  position:fixed;bottom:80px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:10px;
  background:#1e293b;color:#f1f5f9;
  padding:12px 16px;border-radius:14px;
  font-size:.83rem;line-height:1.45;
  max-width:min(360px, calc(100vw - 32px));
  box-shadow:0 8px 32px rgba(0,0,0,.35);
  z-index:9999;
  animation:toastIn .25s ease;
}
.ios-install-toast strong{color:#fff;}
.ios-install-icon{font-size:18px;flex:0 0 auto;}
.ios-install-close{
  margin-left:auto;flex:0 0 auto;
  background:none;border:none;color:#94a3b8;
  font-size:18px;cursor:pointer;padding:0 2px;line-height:1;
}
.ios-install-close:hover{color:#fff;}
@keyframes toastIn{from{opacity:0;transform:translateX(-50%) translateY(12px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* === v119: WCO — Window Controls Overlay-anpassning === */
@media (display-mode: window-controls-overlay){
  .app-header{padding-left:env(titlebar-area-x, 0);padding-right:calc(100vw - env(titlebar-area-x, 0) - env(titlebar-area-width, 100vw));}
}

/* === v123: User GPS "I'm here" marker — heading arrow + pulse === */
.user-location-icon { background:transparent!important; border:0!important; box-shadow:none!important; }
.user-location-icon--pulse { animation:userPulse 2s ease-out infinite; }
.user-location-icon--heading svg { filter:drop-shadow(0 2px 4px rgba(0,94,184,.45)); }
@keyframes userPulse {
  0%   { filter:drop-shadow(0 0  0px rgba(0,94,184,.0)); }
  50%  { filter:drop-shadow(0 0 10px rgba(0,94,184,.7)); }
  100% { filter:drop-shadow(0 0  0px rgba(0,94,184,.0)); }
}

/* === v130: POI markers & popup contrast refresh === */
.poi-marker {
  --poi-accent:#94a3b8;
  width:17px; height:17px;
  position:relative;
  display:flex; align-items:center; justify-content:center;
  font-size:9.5px;
  background:#fff;
  border:1.5px solid var(--poi-accent);
  border-radius:50%;
  box-shadow:0 3px 9px rgba(15,23,42,.16), 0 0 0 2px rgba(255,255,255,.88);
  transition:transform .15s ease, box-shadow .15s ease;
}
.poi-marker:hover { transform:scale(1.12); box-shadow:0 5px 12px rgba(15,23,42,.18), 0 0 0 2px rgba(255,255,255,.95); }
.poi-marker__emoji{display:block;line-height:1;filter:saturate(1.05);}
.poi-marker::after{
  content:'';
  position:absolute;
  right:-1px; bottom:-1px;
  width:5.5px; height:5.5px;
  border-radius:999px;
  background:var(--poi-accent);
  border:2px solid #fff;
  box-shadow:0 1px 4px rgba(15,23,42,.16);
}
/* Category accent colors */
.poi-marker--cafe,.poi-popup-inner--cafe,.poi-marker--restaurant,.poi-popup-inner--restaurant,.poi-marker--fast_food,.poi-popup-inner--fast_food { --poi-accent:#f97316; }
.poi-marker--bar,.poi-popup-inner--bar,.poi-marker--pub,.poi-popup-inner--pub { --poi-accent:#b45309; }
.poi-marker--pharmacy,.poi-popup-inner--pharmacy { --poi-accent:#22c55e; }
.poi-marker--atm,.poi-popup-inner--atm { --poi-accent:#3b82f6; }
.poi-marker--toilets,.poi-popup-inner--toilets { --poi-accent:#8b5cf6; }
.poi-marker--bicycle_parking,.poi-popup-inner--bicycle_parking { --poi-accent:#0ea5e9; }
.poi-marker--convenience,.poi-popup-inner--convenience,.poi-marker--supermarket,.poi-popup-inner--supermarket { --poi-accent:#f59e0b; }
/* Kultur & nöje */
.poi-marker--theatre,.poi-popup-inner--theatre,.poi-marker--cinema,.poi-popup-inner--cinema { --poi-accent:#a855f7; }
.poi-marker--library,.poi-popup-inner--library { --poi-accent:#6366f1; }
.poi-marker--museum,.poi-popup-inner--museum { --poi-accent:#7c3aed; }
/* Sevärdheter / turism */
.poi-marker--hotel,.poi-popup-inner--hotel,.poi-marker--hostel,.poi-popup-inner--hostel,.poi-marker--guest_house,.poi-popup-inner--guest_house,.poi-marker--apartment,.poi-popup-inner--apartment { --poi-accent:#0891b2; }
.poi-marker--gallery,.poi-popup-inner--gallery,.poi-marker--artwork,.poi-popup-inner--artwork { --poi-accent:#db2777; }
.poi-marker--attraction,.poi-popup-inner--attraction,.poi-marker--viewpoint,.poi-popup-inner--viewpoint { --poi-accent:#ca8a04; }
.poi-marker--zoo,.poi-popup-inner--zoo,.poi-marker--aquarium,.poi-popup-inner--aquarium { --poi-accent:#16a34a; }
.poi-marker--theme_park,.poi-popup-inner--theme_park { --poi-accent:#f43f5e; }
.poi-marker--information,.poi-popup-inner--information { --poi-accent:#0284c7; }
/* Kulturarv / historic */
.poi-marker--monument,.poi-popup-inner--monument,.poi-marker--memorial,.poi-popup-inner--memorial,.poi-marker--castle,.poi-popup-inner--castle,.poi-marker--fort,.poi-popup-inner--fort,.poi-marker--manor,.poi-popup-inner--manor,.poi-marker--ship,.poi-popup-inner--ship { --poi-accent:#92400e; }
.poi-marker--ruins,.poi-popup-inner--ruins,.poi-marker--building,.poi-popup-inner--building,.poi-marker--church,.poi-popup-inner--church,.poi-marker--archaeological_site,.poi-popup-inner--archaeological_site { --poi-accent:#b45309; }
/* Friluftsliv / leisure */
.poi-marker--park,.poi-popup-inner--park,.poi-marker--garden,.poi-popup-inner--garden,.poi-marker--nature_reserve,.poi-popup-inner--nature_reserve { --poi-accent:#15803d; }
.poi-marker--beach_resort,.poi-popup-inner--beach_resort { --poi-accent:#0e7490; }
.poi-marker--marina,.poi-popup-inner--marina { --poi-accent:#0369a1; }
/* Category sub-label in popup */
.poi-type-label {
  display:inline-flex; align-items:center; width:max-content;
  padding:4px 8px; border-radius:999px;
  font-size:11px; color:var(--poi-accent,#334155);
  background:rgba(241,245,249,.95); border:1px solid rgba(203,213,225,.95);
  font-weight:700; text-transform:uppercase; letter-spacing:.04em;
}
#togglePOI.active { background:var(--blue); color:#fff; border-color:var(--blue); }

/* === v130: POI popup with clear text/background === */
.poi-leaflet-popup .leaflet-popup-content-wrapper{
  background:#fff;
  border:1px solid #dbe4ee;
  border-radius:16px;
  box-shadow:0 16px 40px rgba(15,23,42,.18);
  padding:0;
  overflow:hidden;
}
.poi-leaflet-popup .leaflet-popup-content{margin:0;}
.poi-leaflet-popup .leaflet-popup-tip-container{margin-top:-1px;}
.poi-leaflet-popup .leaflet-popup-tip{
  background:#fff;
  box-shadow:none;
  border:1px solid #dbe4ee;
}
.poi-popup-inner{
  --poi-accent:#005EB8;
  background:#fff;
  color:#0f172a;
  padding:12px 13px;
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:190px;
}
.poi-popup-header{display:flex;align-items:flex-start;gap:10px;}
.poi-popup-icon{
  width:34px; height:34px; flex:0 0 34px;
  display:grid; place-items:center;
  border-radius:12px;
  background:rgba(241,245,249,.95);
  border:1px solid rgba(203,213,225,.95);
  font-size:18px;
}
.poi-popup-copy{display:flex;flex-direction:column;gap:5px;min-width:0;}
.poi-popup-title{display:block;font-size:15px;line-height:1.25;color:#0f172a;word-break:break-word;}
.poi-nav-btn{
  display:flex;align-items:center;justify-content:center;gap:6px;width:100%;
  border:1px solid var(--poi-accent,#005EB8);border-radius:10px;
  background:var(--poi-accent,#005EB8);color:#fff;padding:9px 10px;
  font-size:13px;font-weight:700;cursor:pointer;
  box-shadow:0 6px 14px rgba(15,23,42,.12);
}
.poi-nav-btn:hover{filter:brightness(.96);}
/* === v124: Station "Hitta hit" button === */
.nav-btn{border:1px solid #005EB8!important;color:#005EB8!important;background:#fff!important;border-radius:10px;padding:10px 12px;font-weight:700;cursor:pointer;}
.nav-btn:hover{background:#e6f1fb!important;}

.map-place-popup{
  display:flex;
  flex-direction:column;
  gap:7px;
  min-width:190px;
  color:#0f172a;
}
.map-place-popup strong{
  font-size:15px;
  line-height:1.25;
}
.map-place-popup small{
  color:#64748b;
  font-size:12px;
}
.map-place-nav-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  margin-top:2px;
  background:#005EB8!important;
  color:#fff!important;
  box-shadow:0 8px 18px rgba(0,94,184,.22);
}
.map-place-nav-btn:hover{background:#004c96!important;}
html[data-theme="dark"] .map-place-popup{color:#e2e8f0;}
html[data-theme="dark"] .map-place-popup small{color:#94a3b8;}

/* === v124: In-app GPS navigation bar === */
.nav-bar{
  position:absolute;
  bottom:24px;left:50%;
  transform:translateX(-50%);
  z-index:1270;
  display:flex;align-items:center;gap:12px;
  max-width:min(480px,calc(100vw - 28px));
  width:100%;
  padding:12px 16px;
  border-radius:999px;
  background:rgba(10,20,40,.93);
  color:#fff;
  box-shadow:0 16px 40px rgba(0,0,0,.32);
  backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.1);
}
.nav-bar.hidden{display:none;}
.nav-bar-arrow-col{display:flex;flex-direction:column;align-items:center;gap:2px;flex:0 0 auto;}
.nav-arrow{font-size:24px;line-height:1;transition:transform .4s ease;color:#60a5fa;}
.nav-bar-arrow-col small{font-size:10px;font-weight:800;color:#94a3b8;letter-spacing:.04em;}
.nav-bar-info{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0;}
.nav-bar-info strong{font-size:22px;font-weight:900;letter-spacing:-.02em;line-height:1;}
.nav-bar-info span{font-size:12px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nav-stop-btn{flex:0 0 auto;width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.1);color:#fff;font-size:16px;cursor:pointer;display:grid;place-items:center;}
.nav-stop-btn:hover{background:rgba(255,255,255,.2);}
.nav-bar-eta{flex:0 0 auto;font-size:11px;font-weight:800;color:#94a3b8;letter-spacing:.04em;white-space:nowrap;background:rgba(255,255,255,.08);border-radius:20px;padding:3px 9px;border:1px solid rgba(255,255,255,.12);}
.nav-bar-info strong{transition:color .6s ease;}
.nav-arrow{transition:transform .4s ease, color .6s ease;}
@media(max-width:600px){
  .nav-bar{bottom:80px;border-radius:18px;}
  .nav-bar-info strong{font-size:18px;}
}

/* ═══════════════════════════════════════════════════════════
   v139: Bottom bar — always-open, centered, fixed at bottom
   ═══════════════════════════════════════════════════════════ */

/* Shift map chrome so the bottom bar doesn't overlap leaflet attribution */
#view-map .leaflet-bottom { margin-bottom: 68px; }

.bottom-bar {
  position: fixed;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 720;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 999px;
  max-width: calc(100vw - 24px);
  width: max-content;
  /* glass style already from .glass class */
}

/* ── Mode chip row (scrollable on narrow screens) ── */
.bottom-bar-chips {
  display: flex;
  align-items: center;
  gap: 5px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  flex-shrink: 1;
  min-width: 0;
}
.bottom-bar-chips::-webkit-scrollbar { display: none; }

/* Compact pill chips */
.bottom-bar-chips .chip {
  padding: 6px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
  border: 1.5px solid var(--border);
  transition: background .14s, border-color .14s, color .14s;
}
.bottom-bar-chips .chip span {
  background: rgba(0,0,0,.1);
  border-radius: 999px;
  padding: 1px 6px;
  font-size: 11px;
  font-weight: 800;
  min-width: 20px;
  text-align: center;
}
.bottom-bar-chips .chip.active span { background: rgba(255,255,255,.25); }

/* ── Divider between chips and action buttons ── */
.bottom-bar-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  padding-left: 8px;
  border-left: 1px solid var(--border);
  flex-shrink: 0;
}

/* ── Icon action buttons ── */
.bb-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: #fff;
  font-size: 16px;
  cursor: pointer;
  display: grid;
  place-items: center;
  transition: background .14s, border-color .14s, color .14s, opacity .14s;
  flex-shrink: 0;
}
.bb-btn:hover { background: #e6f1fb; border-color: #005EB8; }
.bb-btn.active, .bb-btn[aria-pressed="true"] { background:#005EB8; border-color:#005EB8; color:#fff; }
.bb-btn:disabled { opacity:.68; cursor:progress; }
#togglePOI.active.bb-btn { background: #005EB8; border-color: #005EB8; color: #fff; filter: none; }

/* ── Timestamp badge ── */
.bb-updated {
  font-size: 10px;
  color: #94a3b8;
  font-weight: 700;
  letter-spacing: .03em;
  white-space: nowrap;
  padding: 0 2px;
}

/* ── Narrow screens: smaller pills, hide timestamp ── */
@media (max-width: 600px) {
  .bottom-bar {
    bottom: 10px;
    padding: 7px 10px;
    gap: 6px;
  }
  .bottom-bar-chips .chip { padding: 5px 9px; font-size: 11px; }
  .bb-updated { display: none; }
  #view-map .leaflet-bottom { margin-bottom: 62px; }
}

/* ── Nav bar sits above bottom bar ── */
.nav-bar { bottom: 80px; }
@media (max-width: 600px) { .nav-bar { bottom: 70px; } }

/* Remove old map-extra-actions rule if still referenced */
.map-extra-actions { display: none; }
.map-control-panel { display: none !important; }

/* === POI info block — opening hours, phone, website etc === */
.poi-info-block {
  display: flex;
  flex-direction: column;
  gap: 5px;
  border-top: 1px solid #e2e8f0;
  padding-top: 8px;
  font-size: 12px;
  color: #334155;
}
.poi-info-row {
  display: flex;
  align-items: flex-start;
  gap: 4px;
  line-height: 1.45;
}
.poi-info-muted { color: #94a3b8; }
.poi-info-desc  { color: #475569; font-style: italic; }
.poi-info-hours { flex-direction: column; gap: 4px; }
.poi-hours-text { font-size: 11px; color: #475569; line-height: 1.5; }
.poi-hours-text b { color: #1e293b; font-weight: 700; }

/* Open/closed badge */
.poi-open-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .02em;
  width: fit-content;
}
.poi-open-yes  { background: #dcfce7; color: #15803d; }
.poi-open-no   { background: #fee2e2; color: #b91c1c; }
.poi-open-24   { background: #dbeafe; color: #1d4ed8; }

/* Clickable links */
.poi-link {
  color: #005EB8;
  text-decoration: none;
  word-break: break-all;
}
.poi-link:hover { text-decoration: underline; }

/* Wider popup when info is present */
.poi-popup-inner:has(.poi-info-block) { min-width: 220px; max-width: 280px; }

/* === New POI categories — accent colours === */
/* Extra amenity */
.poi-marker--ice_cream,.poi-popup-inner--ice_cream { --poi-accent:#ec4899; }
.poi-marker--bakery,.poi-popup-inner--bakery { --poi-accent:#d97706; }
.poi-marker--bank,.poi-popup-inner--bank { --poi-accent:#1d4ed8; }
.poi-marker--post_office,.poi-popup-inner--post_office { --poi-accent:#dc2626; }
.poi-marker--marketplace,.poi-popup-inner--marketplace { --poi-accent:#7c3aed; }
.poi-marker--nightclub,.poi-popup-inner--nightclub { --poi-accent:#7c3aed; }
.poi-marker--casino,.poi-popup-inner--casino { --poi-accent:#b45309; }
.poi-marker--spa,.poi-popup-inner--spa { --poi-accent:#db2777; }
.poi-marker--swimming_pool,.poi-popup-inner--swimming_pool { --poi-accent:#0284c7; }
/* Extra tourism */
.poi-marker--motel,.poi-popup-inner--motel,.poi-marker--chalet,.poi-popup-inner--chalet { --poi-accent:#0891b2; }
.poi-marker--camp_site,.poi-popup-inner--camp_site,.poi-marker--wilderness_hut,.poi-popup-inner--wilderness_hut { --poi-accent:#15803d; }
/* Extra leisure */
.poi-marker--sports_centre,.poi-popup-inner--sports_centre,.poi-marker--fitness_centre,.poi-popup-inner--fitness_centre { --poi-accent:#0369a1; }
.poi-marker--golf_course,.poi-popup-inner--golf_course,.poi-marker--miniature_golf,.poi-popup-inner--miniature_golf { --poi-accent:#15803d; }
.poi-marker--bowling_alley,.poi-popup-inner--bowling_alley { --poi-accent:#7c3aed; }
.poi-marker--ice_rink,.poi-popup-inner--ice_rink { --poi-accent:#0284c7; }
.poi-marker--water_park,.poi-popup-inner--water_park { --poi-accent:#0891b2; }
/* Shops — warm amber palette */
.poi-marker--department_store,.poi-popup-inner--department_store,
.poi-marker--mall,.poi-popup-inner--mall { --poi-accent:#7c3aed; }
.poi-marker--clothes,.poi-popup-inner--clothes,
.poi-marker--shoes,.poi-popup-inner--shoes { --poi-accent:#db2777; }
.poi-marker--sports,.poi-popup-inner--sports { --poi-accent:#0369a1; }
.poi-marker--electronics,.poi-popup-inner--electronics,
.poi-marker--mobile_phone,.poi-popup-inner--mobile_phone,
.poi-marker--computer,.poi-popup-inner--computer { --poi-accent:#1d4ed8; }
.poi-marker--books,.poi-popup-inner--books,
.poi-marker--stationery,.poi-popup-inner--stationery { --poi-accent:#6366f1; }
.poi-marker--gift,.poi-popup-inner--gift,
.poi-marker--souvenir,.poi-popup-inner--souvenir { --poi-accent:#ec4899; }
.poi-marker--jewelry,.poi-popup-inner--jewelry { --poi-accent:#b45309; }
.poi-marker--optician,.poi-popup-inner--optician { --poi-accent:#0891b2; }
.poi-marker--beauty,.poi-popup-inner--beauty,
.poi-marker--hairdresser,.poi-popup-inner--hairdresser { --poi-accent:#db2777; }
.poi-marker--toys,.poi-popup-inner--toys { --poi-accent:#f59e0b; }
.poi-marker--florist,.poi-popup-inner--florist { --poi-accent:#15803d; }
.poi-marker--butcher,.poi-popup-inner--butcher { --poi-accent:#b91c1c; }
.poi-marker--music,.poi-popup-inner--music { --poi-accent:#7c3aed; }
.poi-marker--photo,.poi-popup-inner--photo { --poi-accent:#475569; }
.poi-marker--art,.poi-popup-inner--art { --poi-accent:#db2777; }
.poi-marker--antiques,.poi-popup-inner--antiques { --poi-accent:#92400e; }
.poi-marker--travel_agency,.poi-popup-inner--travel_agency { --poi-accent:#0284c7; }
.poi-marker--outdoor,.poi-popup-inner--outdoor { --poi-accent:#15803d; }
.poi-marker--kiosk,.poi-popup-inner--kiosk { --poi-accent:#475569; }

/* ═══════════════════════════════════════════════════════════
   v154: Map search, line-focus mode and bottom-bar polish
   ═══════════════════════════════════════════════════════════ */
.map-search-panel{
  position:absolute;
  top:14px;
  left:14px;
  z-index:735;
  width:min(420px,calc(100vw - 28px));
  padding:10px;
  border-radius:22px;
  box-shadow:0 18px 48px rgba(15,23,42,.18);
}
.map-search-label{
  display:block;
  margin:0 0 6px 4px;
  color:#64748b;
  font-size:11px;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.map-search-row{
  display:grid;
  grid-template-columns:auto 1fr auto auto;
  align-items:center;
  gap:6px;
  border:1px solid rgba(148,163,184,.35);
  background:rgba(255,255,255,.96);
  border-radius:16px;
  padding:5px;
}
.map-search-icon{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  color:#005EB8;
  font-size:18px;
  font-weight:900;
}
#mapSearchInput{
  border:0;
  outline:0;
  min-width:0;
  background:transparent;
  color:#0f172a;
  font:inherit;
  font-size:15px;
  padding:8px 2px;
}
#mapSearchInput::placeholder{color:#94a3b8;}
.map-search-submit,
.map-search-clear,
.line-focus-bar button{
  border:0;
  border-radius:12px;
  font-weight:800;
  cursor:pointer;
}
.map-search-submit{
  background:#005EB8;
  color:#fff;
  padding:9px 12px;
}
.map-search-clear{
  width:30px;
  height:30px;
  background:#eef2f7;
  color:#475569;
  font-size:18px;
}
.map-search-hint{
  margin:7px 4px 0;
  color:#64748b;
  font-size:11px;
}
.map-search-results{
  margin-top:8px;
  display:grid;
  gap:5px;
  max-height:min(44vh,320px);
  overflow:auto;
}
.map-search-results button{
  display:grid;
  gap:2px;
  width:100%;
  text-align:left;
  border:1px solid rgba(203,213,225,.86);
  background:rgba(255,255,255,.98);
  color:#0f172a;
  border-radius:14px;
  padding:10px 12px;
  cursor:pointer;
}
.map-search-results button:hover,
.map-search-results button:focus-visible{
  border-color:#005EB8;
  background:#eef6ff;
  outline:0;
}
.map-search-results small,
.map-search-empty{color:#64748b;font-size:12px;}
.map-search-empty{margin:6px 4px 2px;}
.map-search-panel.is-loading .map-search-submit{opacity:.72;cursor:progress;}
.line-focus-bar{
  position:absolute;
  top:14px;
  left:50%;
  transform:translateX(-50%);
  z-index:734;
  display:flex;
  align-items:center;
  gap:10px;
  min-width:min(390px,calc(100vw - 32px));
  max-width:calc(100vw - 32px);
  padding:9px 10px;
  border-radius:999px;
  box-shadow:0 16px 42px rgba(15,23,42,.18);
}
.line-focus-dot{
  display:grid;
  place-items:center;
  min-width:38px;
  height:38px;
  padding:0 10px;
  border-radius:999px;
  font-weight:900;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.5);
}
.line-focus-bar div{display:grid;min-width:0;line-height:1.1;}
.line-focus-bar strong{font-size:14px;color:#0f172a;}
.line-focus-bar small{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.line-focus-bar button{
  margin-left:auto;
  flex-shrink:0;
  background:#eef2f7;
  color:#0f172a;
  padding:9px 11px;
}
.line-focus-bar button:hover{background:#e0ebf8;color:#005EB8;}
html.line-focus-active #map .stop-div-icon{opacity:.42;filter:saturate(.65);}
html.line-focus-active #map .route-line-focused{filter:drop-shadow(0 4px 12px rgba(0,94,184,.32));}
.bottom-bar{
  gap:10px;
  padding:9px 12px;
  border-color:rgba(148,163,184,.42);
  box-shadow:0 18px 52px rgba(15,23,42,.2);
}
.bottom-bar-chips .chip{
  border-color:rgba(148,163,184,.46);
  background:rgba(255,255,255,.92);
  box-shadow:0 1px 0 rgba(255,255,255,.72) inset;
}
.bottom-bar-chips .chip:not(.active):hover{background:#f1f7ff;border-color:#93c5fd;color:#005EB8;}
.bottom-bar-actions{border-left-color:rgba(148,163,184,.36);}
.bb-btn{box-shadow:0 1px 0 rgba(255,255,255,.72) inset;}
.bb-updated{opacity:.78;}
html[data-theme="dark"] .map-search-panel,
html[data-theme="dark"] .line-focus-bar{background:rgba(15,23,42,.88);border-color:rgba(71,85,105,.9);}
html[data-theme="dark"] .map-search-label,
html[data-theme="dark"] .map-search-hint,
html[data-theme="dark"] .map-search-results small,
html[data-theme="dark"] .map-search-empty,
html[data-theme="dark"] .line-focus-bar small{color:#94a3b8;}
html[data-theme="dark"] .map-search-row,
html[data-theme="dark"] .map-search-results button{background:rgba(30,41,59,.94);border-color:rgba(71,85,105,.88);color:#e2e8f0;}
html[data-theme="dark"] #mapSearchInput{color:#e2e8f0;}
html[data-theme="dark"] .line-focus-bar strong{color:#f8fafc;}
html[data-theme="dark"] .map-search-clear,
html[data-theme="dark"] .line-focus-bar button{background:#1e293b;color:#e2e8f0;}
@media (max-width: 700px){
  .map-search-panel{top:10px;left:10px;right:10px;width:auto;padding:8px;border-radius:20px;}
  .map-search-hint{display:none;}
  .line-focus-bar{top:78px;left:10px;right:10px;transform:none;min-width:0;border-radius:18px;}
  .line-focus-bar small{white-space:normal;}
  .bottom-bar{left:10px;right:10px;transform:none;width:auto;max-width:none;justify-content:space-between;}
  .bottom-bar-chips{flex:1;}
  .map-search-submit{padding-inline:10px;}
}

/* ═══════════════════════════════════════════════════════════
   v155: Header placement for direct map search
   ═══════════════════════════════════════════════════════════ */
.app-header .header-map-search{
  position:relative;
  inset:auto;
  z-index:2;
  flex:0 1 clamp(250px,24vw,390px);
  width:auto;
  min-width:220px;
  max-width:390px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  backdrop-filter:none;
}
.app-header .header-map-search .map-search-label,
.app-header .header-map-search .map-search-hint{display:none;}
.app-header .header-map-search .map-search-row{
  grid-template-columns:auto minmax(0,1fr) auto auto;
  min-height:42px;
  border-color:rgba(148,163,184,.46);
  background:rgba(248,250,252,.92);
  border-radius:999px;
  padding:4px;
  box-shadow:0 1px 0 rgba(255,255,255,.72) inset,0 4px 18px rgba(15,23,42,.06);
}
.app-header .header-map-search #mapSearchInput{font-size:14px;padding:7px 2px;}
.app-header .header-map-search .map-search-icon{width:28px;height:28px;font-size:17px;}
.app-header .header-map-search .map-search-submit{border-radius:999px;padding:8px 12px;}
.app-header .header-map-search .map-search-clear{border-radius:999px;width:28px;height:28px;}
.app-header .header-map-search .map-search-results{
  position:absolute;
  top:calc(100% + 10px);
  left:0;
  right:0;
  margin-top:0;
  padding:7px;
  border:1px solid rgba(203,213,225,.88);
  border-radius:18px;
  background:rgba(255,255,255,.96);
  box-shadow:0 18px 48px rgba(15,23,42,.18);
  backdrop-filter:blur(16px);
  max-height:min(52vh,360px);
}
body:not([data-view="map"]) .header-map-search{display:none;}
html[data-theme="dark"] .app-header .header-map-search .map-search-row{background:rgba(30,41,59,.9);border-color:rgba(71,85,105,.88);}
html[data-theme="dark"] .app-header .header-map-search .map-search-results{background:rgba(15,23,42,.96);border-color:rgba(71,85,105,.9);}
@media (max-width: 1180px){
  .app-header .header-map-search{flex-basis:clamp(210px,22vw,320px);min-width:200px;}
  .app-header .header-map-search .map-search-submit{font-size:0;padding-inline:10px;}
  .app-header .header-map-search .map-search-submit::before{content:"↵";font-size:14px;}
}
@media (max-width: 1040px){
  .app-header{height:112px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:46px 44px;gap:6px 8px;align-items:center;}
  .app-header .brand{grid-column:1;grid-row:1;min-width:0;}
  .app-header .header-map-search{grid-column:2;grid-row:1;max-width:none;min-width:0;width:100%;}
  .app-header .tabs{grid-column:1 / -1;grid-row:2;min-width:0;overflow-x:auto;scrollbar-width:none;}
  .app-header .tabs::-webkit-scrollbar{display:none;}
  .app-header .header-actions{grid-column:3;grid-row:1;}
  #view-map{padding-top:112px;}
  #map{height:calc(100dvh - 112px);}
  .line-focus-bar{top:126px;}
}
@media (max-width: 700px){
  .app-header{height:116px;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:48px 44px;padding:7px 10px 8px;}
  #view-map{padding-top:116px;}
  #map{height:calc(100dvh - 116px);}
  .app-header .header-map-search{padding:0;border-radius:0;}
  .app-header .header-map-search .map-search-results{position:fixed;left:10px;right:10px;top:calc(116px + env(safe-area-inset-top, 0px) + 6px);max-height:44vh;}
  .app-header .header-map-search .map-search-submit{display:none;}
  .line-focus-bar{top:130px;}
}
@media (max-width: 430px){
  .brand strong{display:none;}
  .app-header .header-map-search #mapSearchInput{font-size:13px;}
}
.app-header{z-index:1300;}
.line-focus-bar{top:82px;}
@media (max-width: 900px){.line-focus-bar{top:126px;}}
@media (max-width: 700px){.line-focus-bar{top:130px;}}

/* v179: Hitta hit travel option chooser */
.route-choice-sheet{
  position:fixed;
  left:50%;
  bottom:104px;
  transform:translateX(-50%);
  z-index:1288;
  width:min(620px,calc(100vw - 24px));
  padding:14px;
  border-radius:24px;
  border:1px solid rgba(203,213,225,.9);
  background:rgba(255,255,255,.96);
  color:#0f172a;
  box-shadow:0 22px 70px rgba(15,23,42,.24);
  backdrop-filter:blur(18px);
}
.route-choice-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.route-choice-head span{display:block;font-size:12px;font-weight:900;letter-spacing:.055em;text-transform:uppercase;color:#64748b;margin-bottom:3px;}
.route-choice-head strong{display:block;font-size:17px;line-height:1.2;}
.route-choice-close{width:34px;height:34px;border-radius:999px;border:1px solid #d7e0ea;background:#fff;color:#334155;font-weight:900;cursor:pointer;display:grid;place-items:center;flex:0 0 auto;}
.route-choice-close:hover{background:#f1f5f9;color:#005EB8;}
.route-choice-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;}
.route-choice-option{min-width:0;border:1px solid #d7e0ea;border-radius:18px;background:#fff;color:#0f172a;padding:12px 9px;display:grid;gap:5px;justify-items:center;text-align:center;cursor:pointer;box-shadow:0 5px 18px rgba(15,23,42,.06);}
.route-choice-option:hover,.route-choice-option:focus-visible{border-color:#005EB8;background:#eef6ff;transform:translateY(-1px);outline:none;box-shadow:0 9px 26px rgba(0,94,184,.16);}
.route-choice-option b{font-size:23px;line-height:1;}
.route-choice-option strong{font-size:13px;line-height:1.1;}
.route-choice-option small{font-size:11px;line-height:1.25;color:#64748b;}
html[data-theme="dark"] .route-choice-sheet{background:rgba(15,27,45,.96);border-color:#2a3a52;color:#e5edf7;}
html[data-theme="dark"] .route-choice-head span,html[data-theme="dark"] .route-choice-option small{color:#94a3b8;}
html[data-theme="dark"] .route-choice-close,html[data-theme="dark"] .route-choice-option{background:#101d30;color:#e5edf7;border-color:#2a3a52;}
html[data-theme="dark"] .route-choice-option:hover,html[data-theme="dark"] .route-choice-option:focus-visible{background:#123055;border-color:#60a5fa;}
@media(max-width:700px){
  .route-choice-sheet{bottom:122px;width:calc(100vw - 18px);max-height:min(64dvh,460px);overflow:auto;border-radius:22px;padding:12px;}
  .route-choice-options{grid-template-columns:repeat(2,minmax(0,1fr));}
  .route-choice-option{grid-template-columns:auto 1fr;justify-items:start;text-align:left;align-items:center;padding:11px 12px;}
  .route-choice-option b{grid-row:1/3;}
  .route-choice-option small{grid-column:2;}
}

/* SL Live v101 stylesheet module: 05-pages-admin-status.css. Split from legacy app.css; load order matters. */
/* v16 disruptions page restyled to match provided reference */
.disruptions-page{max-width:1020px;padding-top:128px}
.disruptions-page > p:first-of-type{max-width:none;margin:0 0 22px;color:#5b6778}
.disruptions-toolbar{display:grid;gap:14px;margin:8px 0 18px}
.disruption-severity-row{display:flex;gap:10px;flex-wrap:wrap}
.disruptions-page .pill{border-radius:999px;padding:10px 16px;font-weight:500;background:#f5f7fa;border-color:#d6dee8;color:#243142;box-shadow:none}
.disruptions-page .pill.active{background:#071a32;border-color:#071a32;color:#fff}
.disruption-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.disruptions-page .filter-field{display:grid;gap:8px;min-width:0}
.disruptions-page .filter-label{display:flex;align-items:center;gap:6px;font-size:14px;color:#5f6f82}
.disruptions-page .filter-label span[aria-hidden="true"]{display:inline-grid;place-items:center;color:#64748b;font-size:14px}
.disruptions-page select{width:100%;margin-top:0;height:46px;border-radius:12px;border:1px solid #d6dee8;padding:10px 14px;background:#fff;font-size:16px;color:#111827;box-shadow:none}
.disruption-count{margin:4px 0 12px!important;font-size:15px!important;color:#5f6f82!important}
.disruption-list{gap:16px;margin-top:0}
.disruption-card{border-radius:18px;padding:0;box-shadow:none;overflow:hidden}
.disruption-card.severe{background:#fff8fa;border-color:#f0a6a7}
.disruption-card.warn{background:#fffbf4;border-color:#efc36f}
.disruption-card.info{background:#f8fbff;border-color:#bfd8f3}
.disruption-card-grid{display:grid;grid-template-columns:28px 1fr;gap:14px;padding:22px 20px}
.disruption-icon-wrap{display:flex;align-items:flex-start;justify-content:center;padding-top:3px}
.severity-icon{display:inline-grid;place-items:center;width:22px;height:22px}
.severity-icon svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.severity-icon.severe{color:#ef4444}
.severity-icon.warning{color:#d97706}
.severity-icon.info{color:#2563eb}
.severity-icon .severity-dot{fill:currentColor;stroke:none}
.disruption-main{min-width:0}
.disruption-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.disruption-title-row h2{margin:0;font-size:18px;line-height:1.3;color:#0f172a}
.deviation-line-list{display:flex;gap:8px;flex-wrap:wrap}
.deviation-line-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:26px;padding:0 9px;border-radius:7px;background:#e5e7eb;color:#111827;font-size:14px;font-weight:800;line-height:1}
.disruption-card p{margin:0 0 12px;color:#334155;font-size:17px;line-height:1.55}
.deviation-stop-list{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.deviation-stop-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:7px;border:1px solid #d6dee8;background:#f8fafc;color:#5f6f82;font-size:13px;line-height:1.2}
.disruption-time{color:#64748b;font-size:14px}

@media (max-width: 900px){
  .disruptions-page{padding-top:108px}
  .disruption-filter-grid{grid-template-columns:1fr}
  .disruption-card-grid{grid-template-columns:1fr;gap:10px;padding:18px}
  .disruption-icon-wrap{justify-content:flex-start;padding-top:0}
}

/* v18 status overview, nearby stops, and admin data status */
.page-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}.page-title-row h1{margin-bottom:8px}.page-title-row p{margin:0}.status-page{max-width:1120px}.status-summary{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 18px}.status-summary-pill{display:inline-flex;align-items:center;border:1px solid #d6e1ec;background:#f8fafc;border-radius:999px;padding:7px 11px;color:#334155;font-weight:700}.status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.status-card{background:#fff;border:1px solid #dbe4ee;border-radius:18px;box-shadow:0 8px 26px rgba(15,23,42,.05);overflow:hidden}.status-card.ok{border-color:#bfe7d0}.status-card.warning{border-color:#f2cf84;background:#fffbf3}.status-card.severe{border-color:#f2aaa8;background:#fff7f7}.status-card.info{border-color:#bfd8f3;background:#f8fbff}.status-card-top{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:flex-start;padding:16px 16px 12px;border-bottom:1px solid #eef2f7}.status-mode-dot{width:16px;height:16px;border-radius:999px;background:var(--status-color,#005EB8);box-shadow:0 0 0 5px color-mix(in srgb,var(--status-color,#005EB8) 15%,transparent);margin-top:5px}.status-card h2{margin:0 0 8px;font-size:20px}.status-lines{display:flex;gap:6px;flex-wrap:wrap}.status-line-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;border-radius:7px;background:var(--sl-line-color,#334155);color:#fff;font-weight:900;font-size:13px;padding:2px 7px}.status-line-badge.neutral{background:#eef3f8;color:#334155;border:1px solid #d6e1ec}.status-badge{border-radius:999px;padding:7px 11px;background:#eef3f8;color:#334155;font-size:13px;white-space:nowrap}.status-card.ok .status-badge{background:#ecfdf3;color:#166534}.status-card.warning .status-badge{background:#fff7ed;color:#9a3412}.status-card.severe .status-badge{background:#fef2f2;color:#991b1b}.status-card.info .status-badge{background:#eff6ff;color:#1d4ed8}.status-card-body{padding:13px 16px 16px}.status-card-body p{font-size:15px;margin:0;color:#475569}.status-card-body ul{margin:12px 0 0;padding-left:18px;color:#334155}.status-card-body li+li{margin-top:8px}.status-card-body span{color:#64748b}.nearby-card{margin-top:18px}.nearby-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.nearby-head h2{margin:0 0 6px}.nearby-head p{font-size:15px;margin:0}.nearby-results{margin-top:14px}.nearby-list{display:grid;gap:10px}.nearby-stop-card{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #dbe4ee;background:#f8fafc;border-radius:15px;padding:13px 14px}.nearby-stop-card h3{margin:0 0 4px;font-size:17px}.nearby-stop-card p{font-size:14px;margin:0}.nearby-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.nearby-actions button{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:#fff;cursor:pointer}.nearby-actions .primary{background:var(--blue);color:#fff;border-color:var(--blue)}.slim-card{box-shadow:none;margin:0;padding:12px}.admin-data-status-card{margin-top:18px}.data-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.data-status-card{display:grid;gap:7px;border:1px solid #dbe4ee;border-radius:15px;background:#fff;padding:14px}.data-status-card small{color:#64748b;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.data-status-card strong{font-size:24px;color:#0f172a}.data-status-card span{color:#64748b;font-size:13px}.data-status-card.ok{border-color:#86efac;background:#f0fdf4}.data-status-card.warn{border-color:#fed7aa;background:#fff7ed}.data-status-card.bad{border-color:#fca5a5;background:#fef2f2}.data-status-card.ok small{color:#166534}.data-status-card.warn small{color:#9a3412}.data-status-card.bad small{color:#991b1b}
@media (max-width:900px){.page-title-row,.nearby-head{display:grid}.status-grid,.data-status-grid{grid-template-columns:1fr}.status-card-top{grid-template-columns:auto 1fr}.status-badge{grid-column:2}.nearby-stop-card{display:grid}.nearby-actions{justify-content:flex-start}.page-title-row .primary{width:100%}}


/* v109: cron health indicators */
.cron-led{display:inline-block;width:12px;height:12px;border-radius:999px;margin-right:8px;vertical-align:-1px;background:#94a3b8;box-shadow:0 0 0 4px rgba(148,163,184,.16)}
.cron-led.ok{background:#16a34a;box-shadow:0 0 0 4px rgba(22,163,74,.16)}
.cron-led.warn{background:#d97706;box-shadow:0 0 0 4px rgba(217,119,6,.16)}
.cron-led.bad{background:#dc2626;box-shadow:0 0 0 4px rgba(220,38,38,.16)}
.station-card.station-refreshing .station-updated{color:var(--blue,#005EB8)}

/* === v113: Förseningsstatistik per linje === */
.delay-stats-card{margin-top:16px;padding:0;overflow:hidden}
.delay-stats-toggle{width:100%;background:none;border:none;padding:14px 18px;text-align:left;font-size:.93rem;font-weight:600;color:var(--dark);cursor:pointer;border-radius:12px;transition:background .15s}
.delay-stats-toggle:hover{background:var(--blue-light,#eef6ff);color:var(--blue)}
.delay-stats-section{display:none;padding:0 16px 16px}
.delay-stats-section.open{display:block}
.delay-stats-desc{font-size:.85rem;margin-bottom:12px}
.delay-stats-loading,.delay-stats-empty{color:var(--muted);font-size:.9rem;padding:8px 0}
.delay-stat-row{display:grid;grid-template-columns:44px 1fr 52px 80px;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}
.delay-stat-row:last-child{border-bottom:none}
.delay-stat-badge{display:inline-flex;align-items:center;justify-content:center;min-width:36px;padding:2px 6px;border-radius:6px;font-size:.78rem;font-weight:700;text-align:center;white-space:nowrap}
.delay-stat-bar-wrap{height:8px;background:var(--border);border-radius:4px;overflow:hidden}
.delay-stat-bar{height:100%;border-radius:4px;opacity:.78;transition:width .4s ease}
.delay-stat-avg{font-size:.88rem;font-weight:700;text-align:right;white-space:nowrap}
.delay-stat-meta{font-size:.78rem;white-space:nowrap;text-align:right}
.delay-stat-row.severe .delay-stat-avg{color:#dc2626}
.delay-stat-row.warning .delay-stat-avg{color:#d97706}
.delay-stat-row.ok .delay-stat-avg{color:#16a34a}

/* === v113: Följ-mig knapp aktiv-state === */
#mapLocateButton.active{background:var(--blue,#005EB8)!important;color:#fff!important;border-color:var(--blue,#005EB8)!important}

/* === v113: Mörkt läge för nya element === */
html[data-theme="dark"] .delay-stats-toggle{color:#e5edf7}
html[data-theme="dark"] .delay-stats-toggle:hover{background:#17243a;color:#bfdbfe}
html[data-theme="dark"] .delay-stat-row{border-color:#26364d}
html[data-theme="dark"] .delay-stat-bar-wrap{background:#26364d}

/* ============================================================
   v122: Om & Kontakt-sida
   ============================================================ */

/* Hero */
.about-hero {
  display: flex; align-items: flex-start; gap: 20px;
  margin-bottom: 28px;
}
.about-hero-icon {
  font-size: 48px; line-height: 1; flex: 0 0 auto;
  margin-top: 4px;
}
.about-hero h1 { font-size: 30px; font-weight: 800; letter-spacing: -.03em; margin: 0 0 6px; }
.about-hero p { color: var(--text-muted); font-size: 16px; line-height: 1.6; margin: 0; max-width: 680px; }

/* Grid layout */
.about-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 18px;
  align-items: start;
}

/* Cards */
.about-card { padding: 22px 24px; }
.about-card h2 { font-size: 16px; font-weight: 800; margin: 0 0 14px; letter-spacing: -.02em; }
.about-card p { color: var(--text-soft); font-size: 14px; line-height: 1.65; margin: 0 0 10px; }
.about-card p:last-child { margin-bottom: 0; }

/* Feature list */
.about-feature-list {
  list-style: none; margin: 10px 0 0; padding: 0;
  display: grid; gap: 8px;
}
.about-feature-list li {
  font-size: 13.5px; color: var(--text-soft);
  display: flex; align-items: baseline; gap: 8px;
  padding: 0;
}

/* Data sources dl */
.about-dl { margin: 0 0 14px; display: grid; gap: 10px; }
.about-dl > div {
  display: grid; grid-template-columns: 120px 1fr;
  gap: 8px; padding: 9px 0;
  border-bottom: 1px solid var(--hairline);
  font-size: 13.5px;
}
.about-dl > div:last-child { border-bottom: none; }
.about-dl dt { font-weight: 700; color: var(--text-soft); }
.about-dl dd { margin: 0; color: var(--text-muted); }
.about-dl a { color: var(--link); text-decoration: underline; text-underline-offset: 3px; }

.about-disclaimer {
  font-size: 12px; line-height: 1.55;
  padding: 10px 12px;
  background: var(--surface-soft);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  margin-top: 10px;
}

/* Contact card */
.about-card-contact { background: linear-gradient(135deg, var(--surface-raised), var(--surface-soft)); }
.about-contact-name { font-size: 16px; font-weight: 700; margin: 0 0 14px; color: var(--text); }
.about-contact-links { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.about-contact-btn {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 15px; border-radius: 12px;
  border: 1.5px solid var(--hairline);
  background: var(--surface);
  color: var(--text-soft);
  font-size: 14px; font-weight: 600;
  text-decoration: none;
  transition: border-color .14s, background .14s, color .14s, box-shadow .14s;
}
.about-contact-btn:hover {
  border-color: color-mix(in srgb, var(--blue) 50%, var(--hairline));
  background: var(--surface-hover);
  color: var(--blue);
  box-shadow: 0 4px 14px rgba(0,94,184,.10);
}
.about-contact-btn span:first-child { font-size: 18px; flex: 0 0 auto; }
.about-contact-btn span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.about-contact-placeholder { font-size: 13px; }
.about-contact-placeholder code { background: var(--surface-soft); border: 1px solid var(--hairline); border-radius: 5px; padding: 1px 5px; font-size: 12px; }

/* Version badge row */
.about-version-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding-top: 14px; border-top: 1px solid var(--hairline);
  font-size: 12.5px;
}
.about-version-badge {
  background: var(--info-bg);
  color: var(--info-text);
  border: 1px solid color-mix(in srgb, var(--info-text) 28%, transparent);
  border-radius: 999px; padding: 3px 10px;
  font-size: 12px; font-weight: 800;
}

/* Dark mode */
html[data-theme="dark"] .about-card-contact {
  background: linear-gradient(135deg, var(--surface), var(--surface-soft));
}
html[data-theme="dark"] .about-contact-btn {
  background: var(--surface-muted);
}
html[data-theme="dark"] .about-disclaimer {
  background: var(--surface-muted);
}

/* Responsive */
@media (max-width: 700px) {
  .about-hero { flex-direction: column; gap: 12px; }
  .about-hero-icon { font-size: 38px; }
  .about-hero h1 { font-size: 26px; }
  .about-grid { grid-template-columns: 1fr; }
  .about-dl > div { grid-template-columns: 1fr; gap: 3px; }
  .about-dl dt::after { content: ':'; }
}

/* v176: smart favorites/dashboard */
.smart-page .page-title-row{align-items:flex-start;gap:18px}.smart-dashboard{display:grid;gap:18px}.smart-grid{display:grid;gap:14px}.smart-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.smart-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.smart-card{overflow:hidden}.smart-metric small{display:block;color:var(--text-muted);font-weight:800;margin-bottom:6px}.smart-metric strong{font-size:32px;letter-spacing:-.04em}.smart-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.smart-section-head h2{margin:0 0 4px}.smart-inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}.smart-inline-form input,.smart-inline-form select{min-height:40px;border:1px solid var(--border);border-radius:12px;padding:9px 12px;background:var(--card);color:var(--dark)}.smart-inline-form input{flex:1 1 180px}.smart-list{display:grid;gap:10px}.smart-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--hairline);border-radius:16px;padding:12px;background:var(--surface-soft)}.smart-row strong{display:block}.smart-row small{display:block;color:var(--text-muted);margin-top:3px}.smart-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.smart-actions button,.smart-inline-form button,.smart-search-row button,.journey-action-row button{border-radius:999px;padding:8px 11px;font-weight:800;font-size:12.5px}.smart-search-results{display:grid;gap:8px;margin-top:10px}.smart-search-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--hairline);border-radius:14px;padding:10px;background:var(--surface-soft)}.smart-cache-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.smart-cache-note{margin-top:10px}.smart-recent-list{margin:8px 0 0 20px}.smart-recent-list li{margin:6px 0}.smart-watch-results .disruption-card{margin-top:10px}.smart-line-profile-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.smart-profile-metrics{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.journey-action-row{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.bottom-bar .bb-btn.active,#batterySaverToggle.active,#heatToggle.active{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important;box-shadow:0 4px 14px rgba(0,94,184,.28)!important}html[data-battery-saver="1"] .leaflet-marker-icon{transition-duration:.05s!important}html[data-theme="dark"] .smart-row,html[data-theme="dark"] .smart-search-row{background:var(--surface-soft);border-color:var(--hairline)}
@media (max-width:900px){.smart-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.smart-two-col{grid-template-columns:1fr}.smart-row{display:block}.smart-actions{justify-content:flex-start;margin-top:10px}}
@media (max-width:520px){.smart-summary-grid{grid-template-columns:1fr}.smart-inline-form{display:grid}.smart-inline-form input,.smart-inline-form select{width:100%}.journey-action-row{justify-content:flex-start}.smart-section-head{display:block}}

/* SL Live v101 stylesheet module: 06-map-markers-lines.css. Split from legacy app.css; load order matters. */
/* v24 full line stop lists */
.line-stops-list{list-style:none;margin:0;padding:0;display:grid;gap:0;max-height:360px;overflow:auto;scrollbar-width:thin}.line-stops-list li{display:grid;grid-template-columns:16px 1fr auto;gap:8px;align-items:start;padding:7px 0;border-bottom:1px solid #e8eef5;color:#334155}.line-stops-list li:last-child{border-bottom:0}.line-stops-list li b{display:flex;gap:6px;align-items:baseline;font-size:13px;line-height:1.25;min-width:0}.line-stops-list li b em{font-style:normal;color:#94a3b8;font-size:11px;min-width:20px;text-align:right}.line-stops-list li small{color:#64748b;font-size:11px;white-space:nowrap}.line-stops-list li.current b,.line-stops-list li.current small{color:#005EB8;font-weight:900}.line-stops-list li.past{opacity:.5}.line-stops-list .dot{width:9px;height:9px;border-radius:999px;background:#cbd5e1;margin-top:4px;box-shadow:0 0 0 4px rgba(148,163,184,.1)}.line-stops-list .dot.active{background:#005EB8;box-shadow:0 0 0 4px rgba(0,94,184,.14)}.line-stops-list.compact-stops{max-height:280px}.route-card-stop-list{max-height:calc(100vh - 260px)}.line-stops-details{border:1px solid #e2e8f0;border-radius:12px;background:#fff;margin:8px 0;overflow:hidden}.line-stops-details summary{cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:9px 10px;font-size:13px;font-weight:800;color:#334155}.line-stops-details summary small{font-weight:700;color:#64748b}.line-stops-details .line-stops-list{padding:0 10px 8px;max-height:260px}.line-stops-loading{background:#fff;border:1px dashed #dbe4ee;border-radius:12px;padding:10px}.station-line-stops{max-height:none}.route-stops-card .station-block{border-bottom:0}.station-title h2 .station-line-badge{vertical-align:middle;margin-right:6px}@media (max-width:900px){.line-stops-list{max-height:260px}.route-card-stop-list{max-height:calc(100vh - 300px)}.line-stops-details summary{grid-template-columns:auto 1fr}.line-stops-details summary small{grid-column:2}}


/* v29 smaller bus vehicle markers and SL route text color support */
.vehicle-marker{color:var(--sl-line-text-color,#fff)}
.vehicle-marker.bus{font-size:11px;line-height:1;border-width:2px}
.vehicle-head{color:var(--sl-line-text-color,#fff)}
.vehicle-head .close{color:var(--sl-line-text-color,#fff)}
.line-chip,.station-line-badge{color:var(--sl-line-text-color,#fff)}

/* V30 live vehicle animation */
.vehicle-live-icon{will-change:transform}.vehicle-marker.live{position:relative;transform:translateZ(0);transition:box-shadow .15s ease}.vehicle-marker.live .vehicle-label{position:relative;z-index:2}.vehicle-heading{position:absolute;left:50%;top:-8px;z-index:1;width:0;height:0;transform-origin:50% 18px;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:8px solid var(--sl-line-color,var(--blue));filter:drop-shadow(0 1px 1px rgba(15,23,42,.35))}.vehicle-marker.bus .vehicle-heading{top:-7px;border-left-width:3px;border-right-width:3px;border-bottom-width:7px}

/* V31: smaller bus vehicles + more visible stop/station dots */
.vehicle-marker.bus{font-size:6px!important;line-height:1!important;border-width:1.5px!important;font-weight:950;letter-spacing:-.05em}

.vehicle-marker.bus .vehicle-heading{top:-3px;border-left-width:1.5px;border-right-width:1.5px;border-bottom-width:3px;transform-origin:50% 8px}
.leaflet-interactive{cursor:pointer}

/* v34: make stop/station dots easy to click without visually enlarging the map. */
.stop-hit-target{cursor:pointer;pointer-events:auto}.stop-visible-marker{pointer-events:none}.leaflet-marker-pane svg{overflow:visible}

/* v35: robust clickable stop/station markers */
.stop-div-icon{background:transparent!important;border:0!important;box-shadow:none!important;display:grid;place-items:center;overflow:visible!important;pointer-events:auto!important}
.stop-click-target{width:100%;height:100%;display:grid;place-items:center;border-radius:999px;cursor:pointer;pointer-events:auto;touch-action:manipulation;position:relative;background:rgba(255,255,255,.01)}
.stop-click-target::before{content:"";position:absolute;inset:1px;border-radius:999px;background:color-mix(in srgb,var(--stop-color,#005EB8) 12%,transparent);opacity:.55;transform:scale(.9);transition:transform .12s ease,opacity .12s ease}
.stop-click-dot{position:relative;z-index:1;width:13px;height:13px;border-radius:999px;background:#fff;border:3px solid var(--stop-color,#005EB8);box-shadow:0 3px 10px rgba(15,23,42,.26),0 0 0 1px rgba(255,255,255,.8)}
.stop-div-bus .stop-click-dot{width:9px;height:9px;border-width:2px;box-shadow:0 2px 8px rgba(15,23,42,.23),0 0 0 1px rgba(255,255,255,.9)}
.stop-div-bus .stop-click-target::before{inset:2px;background:rgba(227,6,19,.08)}
.stop-click-target:hover::before,.stop-div-icon:focus .stop-click-target::before{opacity:.9;transform:scale(1)}
.stop-click-target:hover .stop-click-dot,.stop-div-icon:focus .stop-click-dot{box-shadow:0 4px 14px rgba(15,23,42,.32),0 0 0 4px color-mix(in srgb,var(--stop-color,#005EB8) 18%,transparent)}

.leaflet-stop-pane{z-index:625!important;pointer-events:none}.leaflet-stop-pane .leaflet-marker-icon{pointer-events:auto!important}.stop-div-icon{touch-action:manipulation}
.stop-div-train .stop-click-target,.stop-div-tram .stop-click-target,.stop-div-ship .stop-click-target,.stop-div-metro_green .stop-click-target,.stop-div-metro_red .stop-click-target,.stop-div-metro_blue .stop-click-target{min-width:42px;min-height:42px}
.stop-div-train .stop-click-dot,.stop-div-tram .stop-click-dot,.stop-div-ship .stop-click-dot,.stop-div-metro_green .stop-click-dot,.stop-div-metro_red .stop-click-dot,.stop-div-metro_blue .stop-click-dot{width:13px;height:13px}


.vehicle-marker.unknown{background:#64748B!important;box-shadow:0 2px 8px rgba(15,23,42,.28)!important}

/* V39: cleaner station popups and calmer live vehicle markers */
.vehicle-marker.compact{box-shadow:0 2px 8px rgba(15,23,42,.28);border-style:solid;letter-spacing:-.04em}.vehicle-marker.dot-only .vehicle-label{display:none}.vehicle-marker.dot-only::after{content:"";position:absolute;inset:31%;border-radius:999px;background:rgba(255,255,255,.95)}.vehicle-marker.with-label{min-width:15px}.vehicle-marker.bus.dot-only::after{inset:35%}.vehicle-marker.compact .vehicle-heading{top:-5px;border-left-width:2.5px;border-right-width:2.5px;border-bottom-width:5px;transform-origin:50% 11px}.vehicle-marker.bus.compact .vehicle-heading{top:-3px;border-left-width:1.5px;border-right-width:1.5px;border-bottom-width:3px;transform-origin:50% 7px}.vehicle-body-v39 .vehicle-live-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:10px 12px;background:#f8fbff;border-bottom:1px solid #dbe4ee}.vehicle-live-summary div{border:1px solid #e2e8f0;background:#fff;border-radius:11px;padding:8px 9px;display:grid;gap:2px}.vehicle-live-summary small{color:#64748b;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.025em}.vehicle-live-summary strong{font-size:14px;color:#0f172a}.route-progress small em{margin-left:auto;color:#64748b;font-style:normal;font-weight:800}.vehicle-body-v39 .line-stops-list.compact-stops{max-height:230px}.vehicle-body-v39 .vehicle-row strong{font-weight:800}.vehicle-updated{border-top:1px solid #e2e8f0}
.station-card{width:min(430px,calc(100vw - 24px));max-height:calc(100vh - 96px);overflow:hidden;box-shadow:0 20px 58px rgba(15,23,42,.24);border:1px solid rgba(203,213,225,.95)}.station-head-v39{border-top:5px solid var(--station-color,#005EB8);background:linear-gradient(180deg,#fff,#f8fbff)}.station-pin-v39{color:var(--station-color,#005EB8);border-color:color-mix(in srgb,var(--station-color,#005EB8) 34%,#dbeafe);background:color-mix(in srgb,var(--station-color,#005EB8) 10%,#fff);font-size:14px}.station-body-v39{padding:0;background:#fff;overflow:auto;max-height:calc(100vh - 190px)}.station-body-v39 .station-quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px 14px;background:#f8fbff;border-bottom:1px solid #e2e8f0}.station-quick-grid div{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:9px 10px;display:grid;gap:2px}.station-quick-grid small{font-size:11px;font-weight:900;letter-spacing:.03em;text-transform:uppercase;color:#64748b}.station-quick-grid strong{font-size:16px;color:#0f172a}.station-body-v39 .station-block{padding:12px 14px;margin:0;border-bottom:1px solid #e6edf5}.station-body-v39 .station-lines-block{background:#fff}.station-body-v39 .station-chain{border:0;border-radius:0;background:#f8fafc}.station-body-v39 .station-tabs{margin:0;border:0;border-radius:0;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0}.station-body-v39 .station-tab-body{padding:12px 14px}.station-body-v39 .departure-list{box-shadow:0 1px 0 rgba(15,23,42,.04)}.station-live-list{margin-bottom:12px}.station-live-list+.station-timetable{margin-top:8px;padding-top:10px;border-top:1px dashed #cbd5e1}.station-actions{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:8px;padding:12px 14px;background:#f8fafc;border-top:1px solid #e2e8f0}.station-actions button{border:1px solid var(--border);background:#fff;border-radius:11px;padding:11px 10px;font-weight:800;cursor:pointer}.station-actions .primary{background:var(--blue);border-color:var(--blue);color:#fff}.station-updated{display:block;padding:0 14px 12px;background:#f8fafc}.station-body-v39 .line-stops-loading{background:#fff}.station-body-v39 .line-stops-details{box-shadow:0 1px 0 rgba(15,23,42,.03)}.station-body-v39 .line-stops-details summary{grid-template-columns:auto 1fr auto}.station-body-v39 .station-warnings{margin:12px 14px}.station-title small{display:block;line-height:1.3}@media (max-width:900px){.station-card{left:12px!important;right:12px!important;width:auto!important;top:96px!important;max-height:calc(100vh - 110px)}.station-body-v39{max-height:calc(100vh - 188px)}.station-actions{grid-template-columns:1fr}.vehicle-body-v39 .vehicle-live-summary,.station-body-v39 .station-quick-grid{grid-template-columns:1fr 1fr}}


/* V40: consistent vehicle marker sizing + outside-click card behavior */
.vehicle-marker.same-size{font-size:8.5px!important;line-height:1!important;border-width:1.75px!important;font-weight:950;letter-spacing:-.04em}
.vehicle-marker.same-size.bus{font-size:8.5px!important;border-width:1.75px!important;letter-spacing:-.04em}
.vehicle-marker.same-size.dot-only::after,.vehicle-marker.same-size.bus.dot-only::after{inset:31%}

.vehicle-marker.same-size .vehicle-heading,.vehicle-marker.same-size.bus .vehicle-heading{top:-5px;border-left-width:2.5px;border-right-width:2.5px;border-bottom-width:5px;transform-origin:50% 11px}
.vehicle-marker.same-size.with-label{min-width:22px;min-height:22px}
.vehicle-card,.station-card{pointer-events:auto}

/* V43: scrollable station and vehicle popups when content is taller than the viewport. */
.vehicle-card,.station-card{
  display:flex;
  flex-direction:column;
  max-height:var(--popup-available-height,min(720px,calc(100vh - 96px)));
  overflow:hidden!important;
}
.vehicle-card > .vehicle-head,
.station-card > .station-head{
  flex:0 0 auto;
}
.vehicle-card > .vehicle-body,
.station-card > .vehicle-body,
.station-card > .station-body{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto!important;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.vehicle-card > .vehicle-body{
  max-height:var(--popup-body-max-height,calc(100vh - 168px));
}
.station-card > .station-body-v39,
.station-card > .vehicle-body.station-body-v39{
  max-height:var(--popup-body-max-height,calc(100vh - 188px));
}
.station-card > .vehicle-body:not(.station-body-v39){
  max-height:var(--popup-body-max-height,calc(100vh - 170px));
}
.vehicle-card > .vehicle-body::-webkit-scrollbar,
.station-card > .vehicle-body::-webkit-scrollbar,
.station-card > .station-body::-webkit-scrollbar,
.line-stops-list::-webkit-scrollbar{
  width:9px;
}
.vehicle-card > .vehicle-body::-webkit-scrollbar-track,
.station-card > .vehicle-body::-webkit-scrollbar-track,
.station-card > .station-body::-webkit-scrollbar-track,
.line-stops-list::-webkit-scrollbar-track{
  background:#f1f5f9;
  border-radius:999px;
}
.vehicle-card > .vehicle-body::-webkit-scrollbar-thumb,
.station-card > .vehicle-body::-webkit-scrollbar-thumb,
.station-card > .station-body::-webkit-scrollbar-thumb,
.line-stops-list::-webkit-scrollbar-thumb{
  background:#cbd5e1;
  border-radius:999px;
  border:2px solid #f1f5f9;
}
.vehicle-card > .vehicle-body::-webkit-scrollbar-thumb:hover,
.station-card > .vehicle-body::-webkit-scrollbar-thumb:hover,
.station-card > .station-body::-webkit-scrollbar-thumb:hover,
.line-stops-list::-webkit-scrollbar-thumb:hover{
  background:#94a3b8;
}
.station-actions,.vehicle-actions,.station-updated,.vehicle-updated{
  flex-shrink:0;
}
@media (max-width:900px){
  .vehicle-card,.station-card{
    max-height:var(--popup-available-height,calc(100vh - 104px))!important;
  }
  .vehicle-card > .vehicle-body,
  .station-card > .vehicle-body,
  .station-card > .station-body,
  .station-card > .station-body-v39,
  .station-card > .vehicle-body.station-body-v39{
    max-height:var(--popup-body-max-height,calc(100vh - 188px))!important;
  }
}



/* V45: make station/stop-area markers visible and clickable above busy vehicle maps. */
.stop-div-train .stop-click-dot,
.stop-div-tram .stop-click-dot,
.stop-div-ship .stop-click-dot,
.stop-div-metro_green .stop-click-dot,
.stop-div-metro_red .stop-click-dot,
.stop-div-metro_blue .stop-click-dot{
  width:18px;
  height:18px;
  border-width:3px;
  box-shadow:0 4px 14px rgba(15,23,42,.34),0 0 0 2px rgba(255,255,255,.96);
}
.stop-div-train .stop-click-target::before,
.stop-div-tram .stop-click-target::before,
.stop-div-ship .stop-click-target::before,
.stop-div-metro_green .stop-click-target::before,
.stop-div-metro_red .stop-click-target::before,
.stop-div-metro_blue .stop-click-target::before{
  inset:5px;
  opacity:.82;
  background:color-mix(in srgb,var(--stop-color,#005EB8) 18%,#fff 82%);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--stop-color,#005EB8) 36%,transparent);
}
.stop-div-train,.stop-div-tram,.stop-div-ship,.stop-div-metro_green,.stop-div-metro_red,.stop-div-metro_blue{
  z-index:980!important;
}
.stop-div-bus .stop-click-dot{
  width:9px;
  height:9px;
  border-width:2px;
}

/* V46: SL-style station stop icons for metro, pendeltåg, tram and boat. */
.sl-stop-target{
  min-width:48px;
  min-height:48px;
  background:transparent;
}
.sl-stop-symbol-wrap{
  position:relative;
  z-index:2;
  width:33px;
  height:33px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:var(--stop-color,#005EB8);
  color:#fff;
  border:3px solid #fff;
  box-shadow:0 4px 16px rgba(15,23,42,.34),0 0 0 2px color-mix(in srgb,var(--stop-color,#005EB8) 42%,transparent);
}
.sl-stop-symbol{
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  font-weight:950;
  font-size:21px;
  line-height:1;
  letter-spacing:-.05em;
  color:#fff;
}
.sl-stop-symbol-svg{
  width:21px;
  height:21px;
  display:block;
  fill:currentColor;
}
.stop-div-train .sl-stop-symbol-wrap,
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:34px;
  height:34px;
}
.stop-div-train .stop-click-target::before,
.stop-div-tram .stop-click-target::before,
.stop-div-ship .stop-click-target::before,
.stop-div-metro_green .stop-click-target::before,
.stop-div-metro_red .stop-click-target::before,
.stop-div-metro_blue .stop-click-target::before{
  inset:3px;
  opacity:.62;
  background:color-mix(in srgb,var(--stop-color,#005EB8) 18%,transparent);
  box-shadow:none;
}
.stop-div-bus .stop-click-target{
  min-width:30px;
  min-height:30px;
}
.stop-div-bus .stop-click-dot{
  width:7px;
  height:7px;
  border-width:2px;
}
.stop-div-bus.stop-div-merged .stop-click-dot{box-shadow:0 2px 8px rgba(15,23,42,.23),0 0 0 1px rgba(255,255,255,.9),0 0 0 4px color-mix(in srgb,var(--stop-color,#E30613) 16%,transparent)}
.stop-click-target:hover .sl-stop-symbol-wrap,
.stop-div-icon:focus .sl-stop-symbol-wrap{
  transform:scale(1.06);
  box-shadow:0 6px 20px rgba(15,23,42,.38),0 0 0 4px color-mix(in srgb,var(--stop-color,#005EB8) 24%,transparent);
}
.station-pin-v39 .sl-popup-mode,
.station-pin .sl-popup-mode{
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  color:var(--station-color,#005EB8);
}
.station-pin-v39 .sl-popup-mode-letter,
.station-pin .sl-popup-mode-letter{
  font-weight:950;
  font-size:15px;
  letter-spacing:-.04em;
}
.station-pin-v39 .sl-stop-symbol-svg,
.station-pin .sl-stop-symbol-svg{
  width:16px;
  height:16px;
  fill:currentColor;
}

/* V47: make fixed-track and boat station icons always visible above route/vehicle layers. */
.leaflet-stop-pane{
  z-index:720!important;
  pointer-events:none;
}
.leaflet-stop-pane .leaflet-marker-icon{
  pointer-events:auto!important;
}
.stop-div-train,.stop-div-tram,.stop-div-ship,.stop-div-metro_green,.stop-div-metro_red,.stop-div-metro_blue{
  z-index:2200!important;
}
.stop-div-train .sl-stop-target,
.stop-div-tram .sl-stop-target,
.stop-div-ship .sl-stop-target,
.stop-div-metro_green .sl-stop-target,
.stop-div-metro_red .sl-stop-target,
.stop-div-metro_blue .sl-stop-target{
  min-width:58px!important;
  min-height:58px!important;
}
.stop-div-train .sl-stop-symbol-wrap,
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:36px!important;
  height:36px!important;
  border-width:3px!important;
  box-shadow:0 6px 18px rgba(15,23,42,.42),0 0 0 3px rgba(255,255,255,.96)!important;
}
.stop-div-train .sl-stop-symbol-svg,
.stop-div-tram .sl-stop-symbol-svg,
.stop-div-ship .sl-stop-symbol-svg{
  width:21px!important;
  height:21px!important;
}
.stop-div-metro_green .sl-stop-symbol,
.stop-div-metro_red .sl-stop-symbol,
.stop-div-metro_blue .sl-stop-symbol{
  font-size:22px!important;
}
.stop-div-bus{
  z-index:1600!important;
}


/* V50: make multi-traffic/interchange station icons a little bigger. */
.stop-div-multi.stop-div-train .sl-stop-target,
.stop-div-multi.stop-div-tram .sl-stop-target,
.stop-div-multi.stop-div-ship .sl-stop-target,
.stop-div-multi.stop-div-metro_green .sl-stop-target,
.stop-div-multi.stop-div-metro_red .sl-stop-target,
.stop-div-multi.stop-div-metro_blue .sl-stop-target{
  min-width:66px!important;
  min-height:66px!important;
}
.stop-div-multi.stop-div-train .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:42px!important;
  height:42px!important;
  border-width:4px!important;
  box-shadow:0 8px 22px rgba(15,23,42,.46),0 0 0 4px rgba(255,255,255,.96)!important;
}
.stop-div-multi.stop-div-train .sl-stop-symbol-svg,
.stop-div-multi.stop-div-tram .sl-stop-symbol-svg,
.stop-div-multi.stop-div-ship .sl-stop-symbol-svg{
  width:24px!important;
  height:24px!important;
}
.stop-div-multi.stop-div-metro_green .sl-stop-symbol,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol{
  font-size:25px!important;
}


/* V51: better status page and reset stop/station map markers to stable Leaflet circles. */
.status-summary{display:block;margin:8px 0 18px}.status-hero{position:relative;overflow:hidden;border:1px solid #dbe4ee;border-radius:24px;background:linear-gradient(135deg,#fff,#f8fbff);box-shadow:0 16px 42px rgba(15,23,42,.08);padding:18px;display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:16px;align-items:center}.status-hero::before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:var(--status-hero-color,#0b57b7)}.status-hero.ok{--status-hero-color:#16a34a}.status-hero.info{--status-hero-color:#0b57b7}.status-hero.warning{--status-hero-color:#f59e0b}.status-hero.severe{--status-hero-color:#dc2626}.status-hero.skeleton{--status-hero-color:#94a3b8}.status-hero-main{display:grid;gap:5px}.status-hero-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:#64748b}.status-hero-main strong{font-size:clamp(22px,3vw,34px);line-height:1.08;color:#0f172a}.status-hero-main span:last-child{color:#64748b}.status-stat-grid-v51{display:grid;grid-template-columns:repeat(3,88px);gap:10px}.status-stat-grid-v51 span{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:11px 12px;display:grid;gap:2px;text-align:center}.status-stat-grid-v51 b{font-size:24px;color:#0f172a}.status-stat-grid-v51 small{font-size:11px;color:#64748b;font-weight:800;text-transform:uppercase}.status-filter-row{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}.status-filter-chip{border:1px solid #dbe4ee;background:#fff;border-radius:999px;padding:8px 12px;font-weight:800;color:#334155;cursor:pointer}.status-filter-chip span{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:999px;margin-left:5px;background:#eef3f8;color:#334155;font-size:12px}.status-filter-chip.active{background:#0b57b7;color:#fff;border-color:#0b57b7}.status-filter-chip.active span{background:rgba(255,255,255,.22);color:#fff}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.status-card-v51{--status-color:#0b57b7;display:grid;grid-template-columns:auto 1fr;gap:0;border:1px solid #dbe4ee;border-radius:20px;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.06);overflow:hidden}.status-card-v51.ok{border-color:#bfe7d0}.status-card-v51.warning{border-color:#f6d28b;background:#fffcf5}.status-card-v51.severe{border-color:#f2aaa8;background:#fff7f7}.status-card-v51.info{border-color:#bfd8f3;background:#f8fbff}.status-card-left{width:56px;background:linear-gradient(180deg,color-mix(in srgb,var(--status-color) 14%,#fff),#fff);display:grid;place-items:start center;padding-top:15px;position:relative}.status-line-strip{position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--status-color)}.status-mode-icon-v51{width:34px;height:34px;border-radius:999px;background:var(--status-color);color:#fff;display:grid;place-items:center;font-weight:950;box-shadow:0 5px 14px rgba(15,23,42,.22);font-size:15px}.status-card-main-v51{padding:15px 15px 14px}.status-card-title-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.status-card-title-row h2{margin:0 0 8px;font-size:19px}.status-badge-v51{white-space:nowrap;border-radius:999px;padding:7px 10px;background:#eef3f8;color:#334155;font-size:12px}.status-card-v51.ok .status-badge-v51{background:#ecfdf3;color:#166534}.status-card-v51.warning .status-badge-v51{background:#fff7ed;color:#9a3412}.status-card-v51.severe .status-badge-v51{background:#fef2f2;color:#991b1b}.status-card-v51.info .status-badge-v51{background:#eff6ff;color:#1d4ed8}.status-card-body-v51{margin-top:12px}.status-card-body-v51 p{margin:0;color:#475569}.status-message-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}.status-message-list li{border:1px solid #e2e8f0;background:rgba(255,255,255,.74);border-radius:13px;padding:10px;display:grid;gap:4px}.status-message-list b{color:#0f172a}.status-message-list span{color:#64748b;font-size:14px}.status-loading-card,.status-empty-card{display:grid;gap:4px}.status-loading-card span{color:#64748b}.stop-circle-marker{stroke:#fff;stroke-width:3px;filter:drop-shadow(0 2px 5px rgba(15,23,42,.35));cursor:pointer;pointer-events:auto}.stop-circle-marker:hover{stroke-width:4px;filter:drop-shadow(0 4px 10px rgba(15,23,42,.45))}.stop-circle-bus{stroke-width:2px;filter:drop-shadow(0 1px 3px rgba(15,23,42,.28))}.stop-circle-multi{stroke-width:4px;filter:drop-shadow(0 4px 11px rgba(15,23,42,.46))}.stop-circle-metro_green,.stop-circle-metro_red,.stop-circle-metro_blue,.stop-circle-train,.stop-circle-tram,.stop-circle-ship{opacity:.97}.leaflet-pane.leaflet-stop-pane svg path{pointer-events:auto}@media (max-width:900px){.status-hero{grid-template-columns:1fr}.status-stat-grid-v51{grid-template-columns:repeat(3,1fr)}.status-card-title-row{display:grid}.status-grid{grid-template-columns:1fr}}

/* V52: make map stop/station markers visibly above route lines and easier to tap. */
.stop-circle-marker{stroke-width:3.4px!important;filter:drop-shadow(0 3px 8px rgba(15,23,42,.42))!important;vector-effect:non-scaling-stroke}
.stop-circle-bus{stroke-width:2.1px!important;filter:drop-shadow(0 1px 4px rgba(15,23,42,.30))!important}
.stop-circle-multi{stroke-width:4.4px!important;filter:drop-shadow(0 5px 13px rgba(15,23,42,.50))!important}
.leaflet-pane.leaflet-stop-pane{z-index:760!important;pointer-events:auto!important}
.leaflet-pane.leaflet-stop-pane svg,.leaflet-pane.leaflet-stop-pane path{pointer-events:auto!important}

/* V57: restore SL-style clickable transport icons for stop/station markers. */
.leaflet-pane.leaflet-stop-pane{z-index:780!important;pointer-events:auto!important}
.leaflet-pane.leaflet-stop-pane .stop-div-icon{background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible!important;pointer-events:auto!important;display:grid!important;place-items:center!important}
.stop-div-icon .stop-click-target{pointer-events:auto!important;display:grid!important;place-items:center!important;position:relative!important;border-radius:999px!important;touch-action:manipulation!important}
.stop-div-icon .stop-click-target::before{content:"";position:absolute;inset:4px;border-radius:999px;background:color-mix(in srgb,var(--stop-color,#005EB8) 16%,transparent);opacity:.72;transform:scale(.9);transition:transform .12s ease,opacity .12s ease,box-shadow .12s ease}
.stop-div-icon .sl-stop-symbol-wrap{position:relative;z-index:2;display:grid;place-items:center;border-radius:999px;background:var(--stop-color,#005EB8);color:#fff;border:3px solid #fff;box-shadow:0 6px 18px rgba(15,23,42,.38),0 0 0 2px color-mix(in srgb,var(--stop-color,#005EB8) 38%,transparent)}
.stop-div-icon .sl-stop-symbol{font-weight:950;line-height:1;letter-spacing:-.06em;color:#fff}
.stop-div-icon .sl-stop-symbol-svg{display:block;fill:currentColor}
.stop-div-metro_green .sl-stop-symbol-wrap,.stop-div-metro_red .sl-stop-symbol-wrap,.stop-div-metro_blue .sl-stop-symbol-wrap,.stop-div-train .sl-stop-symbol-wrap,.stop-div-tram .sl-stop-symbol-wrap,.stop-div-ship .sl-stop-symbol-wrap{width:38px!important;height:38px!important}
.stop-div-metro_green .sl-stop-symbol,.stop-div-metro_red .sl-stop-symbol,.stop-div-metro_blue .sl-stop-symbol{font-size:24px!important}
.stop-div-train .sl-stop-symbol-svg,.stop-div-tram .sl-stop-symbol-svg,.stop-div-ship .sl-stop-symbol-svg{width:23px!important;height:23px!important}
.stop-div-multi .sl-stop-symbol-wrap{width:44px!important;height:44px!important;border-width:4px!important;box-shadow:0 8px 24px rgba(15,23,42,.44),0 0 0 3px color-mix(in srgb,var(--stop-color,#005EB8) 40%,transparent)!important}
.stop-div-multi .sl-stop-symbol{font-size:27px!important}
.stop-div-multi .sl-stop-symbol-svg{width:26px!important;height:26px!important}
.stop-div-bus .stop-click-target{min-width:30px!important;min-height:30px!important}
.stop-div-bus .stop-click-dot{position:relative;z-index:2;width:8px!important;height:8px!important;border-radius:999px;background:#fff;border:2px solid var(--stop-color,#E30613);box-shadow:0 2px 8px rgba(15,23,42,.30),0 0 0 1px rgba(255,255,255,.96)}
.stop-div-bus .stop-click-target::before{inset:5px!important;background:rgba(227,6,19,.10)!important;opacity:.72!important}
.stop-div-icon:hover .stop-click-target::before,.stop-div-icon:focus .stop-click-target::before{opacity:1;transform:scale(1);box-shadow:0 0 0 5px color-mix(in srgb,var(--stop-color,#005EB8) 16%,transparent)}
.stop-div-icon:hover .sl-stop-symbol-wrap,.stop-div-icon:focus .sl-stop-symbol-wrap{transform:scale(1.06)}
.stop-div-icon.stop-div-bus:hover .stop-click-dot,.stop-div-icon.stop-div-bus:focus .stop-click-dot{box-shadow:0 3px 12px rgba(15,23,42,.38),0 0 0 5px rgba(227,6,19,.16)}


/* V58: smaller SL-style stop/station icons while keeping reliable tap targets. */
.stop-div-train .sl-stop-target,
.stop-div-tram .sl-stop-target,
.stop-div-ship .sl-stop-target,
.stop-div-metro_green .sl-stop-target,
.stop-div-metro_red .sl-stop-target,
.stop-div-metro_blue .sl-stop-target{
  min-width:46px!important;
  min-height:46px!important;
}
.stop-div-icon .stop-click-target::before{
  inset:6px!important;
  opacity:.58!important;
}
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap,
.stop-div-train .sl-stop-symbol-wrap,
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-ship .sl-stop-symbol-wrap{
  width:30px!important;
  height:30px!important;
  border-width:2.5px!important;
  box-shadow:0 4px 13px rgba(15,23,42,.34),0 0 0 2px color-mix(in srgb,var(--stop-color,#005EB8) 30%,transparent)!important;
}
.stop-div-metro_green .sl-stop-symbol,
.stop-div-metro_red .sl-stop-symbol,
.stop-div-metro_blue .sl-stop-symbol{
  font-size:19px!important;
}
.stop-div-train .sl-stop-symbol-svg,
.stop-div-tram .sl-stop-symbol-svg,
.stop-div-ship .sl-stop-symbol-svg{
  width:18px!important;
  height:18px!important;
}
.stop-div-multi.stop-div-train .sl-stop-target,
.stop-div-multi.stop-div-tram .sl-stop-target,
.stop-div-multi.stop-div-ship .sl-stop-target,
.stop-div-multi.stop-div-metro_green .sl-stop-target,
.stop-div-multi.stop-div-metro_red .sl-stop-target,
.stop-div-multi.stop-div-metro_blue .sl-stop-target{
  min-width:52px!important;
  min-height:52px!important;
}
.stop-div-multi.stop-div-train .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:35px!important;
  height:35px!important;
  border-width:3px!important;
  box-shadow:0 6px 17px rgba(15,23,42,.38),0 0 0 2.5px color-mix(in srgb,var(--stop-color,#005EB8) 34%,transparent)!important;
}
.stop-div-multi.stop-div-metro_green .sl-stop-symbol,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol{
  font-size:22px!important;
}
.stop-div-multi.stop-div-train .sl-stop-symbol-svg,
.stop-div-multi.stop-div-tram .sl-stop-symbol-svg,
.stop-div-multi.stop-div-ship .sl-stop-symbol-svg{
  width:21px!important;
  height:21px!important;
}
.stop-div-icon:hover .sl-stop-symbol-wrap,
.stop-div-icon:focus .sl-stop-symbol-wrap{
  transform:scale(1.04)!important;
}


/* V59: compact SL-map-style stop/station icons.
   Keep every fixed-track/boat icon the same visible size. Multi/interchange
   stations keep the metadata class but no longer become larger. */
.stop-div-bus .stop-click-target{
  min-width:22px!important;
  min-height:22px!important;
}
.stop-div-bus .stop-click-dot{
  width:6px!important;
  height:6px!important;
  border-width:2px!important;
  box-shadow:0 1px 4px rgba(15,23,42,.22)!important;
}
.stop-div-bus .stop-click-target::before{
  inset:4px!important;
  opacity:.55!important;
}
.stop-div-train .sl-stop-target,
.stop-div-tram .sl-stop-target,
.stop-div-ship .sl-stop-target,
.stop-div-metro_green .sl-stop-target,
.stop-div-metro_red .sl-stop-target,
.stop-div-metro_blue .sl-stop-target,
.stop-div-multi.stop-div-train .sl-stop-target,
.stop-div-multi.stop-div-tram .sl-stop-target,
.stop-div-multi.stop-div-ship .sl-stop-target,
.stop-div-multi.stop-div-metro_green .sl-stop-target,
.stop-div-multi.stop-div-metro_red .sl-stop-target,
.stop-div-multi.stop-div-metro_blue .sl-stop-target{
  min-width:34px!important;
  min-height:34px!important;
}
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap,
.stop-div-train .sl-stop-symbol-wrap,
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-train .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:24px!important;
  height:24px!important;
  border-width:2px!important;
  box-shadow:0 2px 7px rgba(15,23,42,.30),0 0 0 1px color-mix(in srgb,var(--stop-color,#005EB8) 28%,transparent)!important;
}
.stop-div-metro_green .sl-stop-symbol,
.stop-div-metro_red .sl-stop-symbol,
.stop-div-metro_blue .sl-stop-symbol,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol{
  font-size:15px!important;
  letter-spacing:-.06em!important;
}
.stop-div-train .sl-stop-symbol-svg,
.stop-div-tram .sl-stop-symbol-svg,
.stop-div-ship .sl-stop-symbol-svg,
.stop-div-multi.stop-div-train .sl-stop-symbol-svg,
.stop-div-multi.stop-div-tram .sl-stop-symbol-svg,
.stop-div-multi.stop-div-ship .sl-stop-symbol-svg{
  width:14px!important;
  height:14px!important;
}
.stop-div-icon .stop-click-target::before{
  inset:5px!important;
  opacity:.38!important;
}
.stop-div-icon:hover .sl-stop-symbol-wrap,
.stop-div-icon:focus .sl-stop-symbol-wrap{
  transform:scale(1.08)!important;
}

/* V60: smaller stop/station icons and live vehicle markers.
   The visible symbols are compact; invisible click/tap boxes remain usable. */
.stop-div-bus .stop-click-target{
  min-width:18px!important;
  min-height:18px!important;
}
.stop-div-bus .stop-click-dot{
  width:4px!important;
  height:4px!important;
  border-width:1.5px!important;
  box-shadow:0 1px 3px rgba(15,23,42,.20)!important;
}
.stop-div-bus .stop-click-target::before{
  inset:4px!important;
  opacity:.30!important;
}
.stop-div-train .sl-stop-target,
.stop-div-tram .sl-stop-target,
.stop-div-ship .sl-stop-target,
.stop-div-metro_green .sl-stop-target,
.stop-div-metro_red .sl-stop-target,
.stop-div-metro_blue .sl-stop-target,
.stop-div-multi.stop-div-train .sl-stop-target,
.stop-div-multi.stop-div-tram .sl-stop-target,
.stop-div-multi.stop-div-ship .sl-stop-target,
.stop-div-multi.stop-div-metro_green .sl-stop-target,
.stop-div-multi.stop-div-metro_red .sl-stop-target,
.stop-div-multi.stop-div-metro_blue .sl-stop-target{
  min-width:28px!important;
  min-height:28px!important;
}
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap,
.stop-div-train .sl-stop-symbol-wrap,
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-train .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-ship .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:18px!important;
  height:18px!important;
  border-width:1.5px!important;
  box-shadow:0 1px 5px rgba(15,23,42,.28),0 0 0 1px color-mix(in srgb,var(--stop-color,#005EB8) 24%,transparent)!important;
}
.stop-div-metro_green .sl-stop-symbol,
.stop-div-metro_red .sl-stop-symbol,
.stop-div-metro_blue .sl-stop-symbol,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol{
  font-size:11px!important;
  letter-spacing:-.06em!important;
}
.stop-div-train .sl-stop-symbol-svg,
.stop-div-tram .sl-stop-symbol-svg,
.stop-div-ship .sl-stop-symbol-svg,
.stop-div-multi.stop-div-train .sl-stop-symbol-svg,
.stop-div-multi.stop-div-tram .sl-stop-symbol-svg,
.stop-div-multi.stop-div-ship .sl-stop-symbol-svg{
  width:10px!important;
  height:10px!important;
}
.stop-div-icon .stop-click-target::before{
  inset:6px!important;
  opacity:.24!important;
}
.stop-div-icon:hover .sl-stop-symbol-wrap,
.stop-div-icon:focus .sl-stop-symbol-wrap{
  transform:scale(1.06)!important;
}
.vehicle-marker.same-size,
.vehicle-marker.same-size.bus{
  font-size:7px!important;
  border-width:1.25px!important;
  box-shadow:0 1px 5px rgba(15,23,42,.26)!important;
}
.vehicle-marker.same-size.with-label{
  min-width:18px!important;
  min-height:18px!important;
}
.vehicle-marker.same-size.dot-only::after,
.vehicle-marker.same-size.bus.dot-only::after{
  inset:34%!important;
}

.vehicle-marker.same-size .vehicle-heading,
.vehicle-marker.same-size.bus .vehicle-heading{
  top:-4px!important;
  border-left-width:2px!important;
  border-right-width:2px!important;
  border-bottom-width:4px!important;
  transform-origin:50% 9px!important;
}

/* V103: make tram station icons slightly smaller than other fixed-track markers.
   Keep the tap target unchanged so the station remains easy to select on the map. */
.stop-div-tram .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-tram .sl-stop-symbol-wrap{
  width:15px!important;
  height:15px!important;
  border-width:1.5px!important;
}
.stop-div-tram .sl-stop-symbol-svg,
.stop-div-multi.stop-div-tram .sl-stop-symbol-svg{
  width:8.5px!important;
  height:8.5px!important;
}

/* V105: make metro station icons a bit smaller while preserving the 28px click/tap target. */
.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-metro_blue .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol-wrap,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol-wrap{
  width:16px!important;
  height:16px!important;
  border-width:1.5px!important;
}
.stop-div-metro_green .sl-stop-symbol,
.stop-div-metro_red .sl-stop-symbol,
.stop-div-metro_blue .sl-stop-symbol,
.stop-div-multi.stop-div-metro_green .sl-stop-symbol,
.stop-div-multi.stop-div-metro_red .sl-stop-symbol,
.stop-div-multi.stop-div-metro_blue .sl-stop-symbol{
  font-size:10px!important;
  letter-spacing:-.06em!important;
}


/* SL Live v101 stylesheet module: 07-theme-popups-mobile.css. Split from legacy app.css; load order matters. */
/* V63 map diagnostics and safer popup/card layering */
.map-notice{position:absolute;left:50%;top:88px;transform:translateX(-50%);z-index:1200;max-width:min(720px,calc(100vw - 36px));display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid #dbe4ee;background:rgba(255,255,255,.96);box-shadow:0 12px 34px rgba(15,23,42,.18);font-size:14px;color:#0f172a;backdrop-filter:blur(12px)}
.map-notice.hidden{display:none}.map-notice.warn{border-color:#facc15;background:#fffbeb}.map-notice.error{border-color:#fca5a5;background:#fff1f2}.map-notice button{border:0;background:rgba(15,23,42,.08);width:24px;height:24px;border-radius:999px;cursor:pointer;font-size:17px;line-height:1}.station-card,.vehicle-card{z-index:1250}.leaflet-tooltip-pane{z-index:900}.leaflet-popup-pane{z-index:1100}.vehicle-live-icon{background:transparent!important;border:0!important;overflow:visible!important}.vehicle-marker.live{will-change:transform}.stop-div-icon{will-change:transform}.station-card .close,.vehicle-card .close{min-width:30px;min-height:30px;display:grid;place-items:center}

/* V65: station popup GTFS timetable fallback for both directions. */
.station-info-note{margin:12px 14px;padding:10px 12px;border:1px solid #bfdbfe;background:#eff6ff;color:#1e3a8a;border-radius:12px;display:grid;gap:3px;font-size:13px}.station-info-note strong{font-size:13px}.station-info-note span{color:#475569}.station-timetable{display:grid;gap:10px}.station-timetable-title{display:grid;gap:2px;margin-bottom:2px}.station-timetable-title small,.station-timetable-note{color:#64748b}.station-timetable-row{border:1px solid #e2e8f0;background:#fff;border-radius:13px;padding:10px;display:grid;gap:9px;box-shadow:0 1px 0 rgba(15,23,42,.03)}.station-timetable-route{display:flex;align-items:center;gap:10px;min-width:0}.station-timetable-route strong{display:block;color:#0f172a;line-height:1.2}.station-timetable-route small{display:block;color:#64748b;margin-top:2px}.station-time-pills{display:flex;gap:6px;flex-wrap:wrap}.station-time-pills span{display:inline-flex;align-items:center;justify-content:center;min-width:46px;padding:5px 8px;border-radius:999px;background:#f1f5f9;border:1px solid #e2e8f0;color:#0f172a;font-weight:800;font-variant-numeric:tabular-nums}.station-timetable-note{font-size:12px;margin:2px 0 0}.station-tabs{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}

/* V70 station popup: show only the next 10 events in each tab and expose delays clearly. */
.station-next-list .departure-row strong{display:grid;justify-items:end;gap:2px;min-width:62px}.station-event-row .planned-time{display:block;color:#64748b;font-size:11px;font-weight:700}.station-event-row .time-source{display:inline-block;margin-left:6px;color:#64748b}.station-event-row .delay-badge{display:inline-block;margin-left:8px;color:#b45309;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:2px 7px;font-style:normal;font-weight:900}.station-event-row.late .event-time{color:#dc2626}.station-event-row.cancelled .event-time{text-decoration:line-through}.station-event-row.cancelled .delay-badge{color:#991b1b;background:#fef2f2;border-color:#fecaca}

/* V75: improved station popup, SL-like vehicle card, follow bar, Data Doctor, mobile bottom sheets. */
.sl-live-pill{display:inline-flex;align-items:center;gap:4px;border-radius:999px;border:1px solid #dbe4ee;background:#f8fafc;color:#475569;padding:4px 8px;font-size:12px;font-weight:900;line-height:1}.sl-live-pill.ok{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.sl-live-pill.warn-text{background:#fff7ed;border-color:#fed7aa;color:#b45309}.sl-live-pill.bad{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.sl-live-pill.muted{background:#f1f5f9;border-color:#e2e8f0;color:#64748b}.station-live-strip,.vehicle-status-strip{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.station-quick-grid-sl{grid-template-columns:repeat(3,1fr)!important}.station-event-row{min-height:54px}.station-event-row .live-source{background:#eef6ff;border-color:#bfdbfe;color:#0b57b7}.station-event-row small:empty{display:none}.station-head-v39{border-top:5px solid var(--station-color,var(--blue))}.station-body-v39{background:linear-gradient(180deg,#fff,#f8fbff)}.station-lines-block{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:10px 12px}.station-line-list{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.station-line-badge{border-radius:8px;padding:5px 9px;font-weight:900;box-shadow:0 1px 3px rgba(15,23,42,.12)}.vehicle-head-sl{border-top-left-radius:18px;border-top-right-radius:18px}.vehicle-body-v75{background:linear-gradient(180deg,#fff,#f8fbff)}.vehicle-live-summary-sl{grid-template-columns:1.3fr .8fr .9fr!important}.vehicle-mini-grid .vehicle-row{border-top:1px solid #e2e8f0}.vehicle-mini-grid .vehicle-row:first-child{border-top:1px solid #e2e8f0}.vehicle-actions-sl{grid-template-columns:1fr!important}.vehicle-actions-sl button.active{background:#0b57b7;color:#fff;border-color:#0b57b7}.compact-route-progress{max-height:260px;overflow:auto}.vehicle-follow-bar{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:1260;display:flex;align-items:center;gap:10px;max-width:min(760px,calc(100vw - 28px));padding:10px 12px;border-radius:999px;background:rgba(15,23,42,.92);color:#fff;box-shadow:0 18px 40px rgba(15,23,42,.26);font-weight:800}.vehicle-follow-bar.hidden{display:none}.vehicle-follow-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-follow-bar button{border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.12);color:#fff;border-radius:999px;padding:7px 10px;cursor:pointer;white-space:nowrap}.doctor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.doctor-card{border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:13px;box-shadow:0 4px 18px rgba(15,23,42,.05);display:grid;gap:5px}.doctor-card span{justify-self:start;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:900}.doctor-card.ok span{background:#dcfce7;color:#166534}.doctor-card.warn span{background:#fef3c7;color:#92400e}.doctor-card.bad span{background:#fee2e2;color:#991b1b}.doctor-card strong{font-size:15px}.doctor-card p{margin:0;color:#334155;font-size:13px}.doctor-card small{color:#64748b}.status-filter-row{max-height:94px;overflow:auto}.status-card-v51.warning,.status-card-v51.severe{box-shadow:0 12px 34px rgba(185,28,28,.10)}.status-message-list li span{line-height:1.35}.map-control-panel{max-height:calc(100vh - 120px);overflow:auto}.station-card,.vehicle-card{max-width:calc(100vw - 24px)}
@media (max-width: 700px){
  .app-header{height:72px}.map-wrap{height:calc(100vh - 72px)}.map-control-panel.compact{top:86px;right:12px}.leaflet-control-zoom{margin-top:12px!important}.station-card,.vehicle-card{position:absolute!important;left:8px!important;right:8px!important;top:auto!important;bottom:8px!important;width:auto!important;max-height:72vh!important;border-radius:20px 20px 16px 16px}.station-head,.vehicle-head{position:sticky;top:0;z-index:2}.vehicle-body,.station-body{max-height:calc(72vh - 68px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch}.station-quick-grid-sl,.vehicle-live-summary-sl{grid-template-columns:1fr!important}.doctor-grid{grid-template-columns:1fr}.vehicle-follow-bar{bottom:12px;border-radius:18px;align-items:flex-start}.vehicle-follow-bar span{white-space:normal}.status-filter-row{max-height:138px}.status-card-left{display:none}.admin-two-col,.admin-grid{grid-template-columns:1fr!important}.vehicle-card:not(.hidden)+.vehicle-follow-bar,.station-card:not(.hidden)+.vehicle-follow-bar{bottom:calc(72vh + 14px)}
}

/* V77: SL-like departure rows, station/line warnings, status history, smart cache, map location and dark mode. */
.theme-toggle{margin-left:10px;border:1px solid var(--border);background:var(--card);color:var(--dark);border-radius:999px;width:42px;height:42px;display:grid;place-items:center;cursor:pointer;font-weight:900;box-shadow:0 8px 22px rgba(15,23,42,.08)}
.theme-toggle:hover{background:#eef6ff;color:var(--blue)}
.map-extra-actions{display:flex;gap:8px;margin-top:10px}.map-extra-actions button{border:1px solid var(--border);background:#fff;color:#0f172a;border-radius:10px;padding:10px 12px;font-weight:800;cursor:pointer}.map-extra-actions button:disabled{opacity:.65;cursor:progress}.map-control-panel.compact .map-extra-actions{display:none}
.sl-departure-row{display:grid!important;grid-template-columns:minmax(58px,.45fr) minmax(0,1.8fr) minmax(74px,.55fr) minmax(64px,.42fr);gap:10px;align-items:center;padding:11px 12px;background:#fff}.sl-departure-row:nth-child(even){background:#fbfdff}.sl-dep-line{display:grid;gap:3px;justify-items:start}.sl-dep-line .line-chip{margin:0;font-size:15px;border-radius:8px;min-width:38px;text-align:center}.sl-dep-line small{font-size:11px;color:#64748b;font-weight:800}.sl-dep-main{min-width:0;display:grid;gap:4px}.sl-dep-main strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sl-dep-main span{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:#64748b;font-size:12px}.sl-dep-main span>b{color:#0f172a}.sl-dep-status span{display:inline-flex;justify-content:center;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:900;background:#f1f5f9}.sl-dep-status .ok{background:#dcfce7;color:#166534}.sl-dep-status .warn{background:#fef3c7;color:#92400e}.sl-dep-status .bad{background:#fee2e2;color:#991b1b}.sl-dep-time{display:grid;justify-items:end;gap:2px}.sl-dep-time strong{font-size:19px;font-variant-numeric:tabular-nums}.sl-dep-time .planned-time{font-size:11px;color:#64748b}
.station-alert-panel{border:1px solid #fed7aa;background:#fff7ed;border-radius:14px;padding:10px 12px;margin:12px 0;display:grid;gap:8px}.station-alert{background:#fff;border:1px solid #fed7aa;border-radius:12px;padding:9px 10px;display:grid;gap:5px}.station-alert strong{color:#7c2d12}.station-alert p{margin:0;color:#334155;font-size:13px;line-height:1.35}.station-alert-lines{display:flex;gap:5px;flex-wrap:wrap}.station-alert-lines span{border-radius:7px;background:#fee2e2;color:#991b1b;padding:2px 6px;font-weight:900;font-size:11px}.station-alert.severe{border-color:#fecaca;background:#fff1f2}.station-alert.info{border-color:#bfdbfe;background:#eff6ff}.station-alert.info strong{color:#1e3a8a}
.status-history-card{margin-top:20px}.status-history-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.status-history-item{border:1px solid #e2e8f0;border-radius:14px;background:#fff;padding:12px;display:grid;gap:5px}.status-history-item.has-issues{border-color:#fed7aa;background:#fffaf0}.status-history-item time{color:#64748b;font-size:12px;font-weight:800}.status-history-item strong{font-size:15px}.status-history-item span{color:#475569;font-size:13px}.status-history-item div{display:flex;gap:5px;flex-wrap:wrap}.status-history-item em{font-style:normal;border:1px solid #e2e8f0;background:#f8fafc;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:800}
.cache-summary{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 10px}.cache-summary span,.cache-state,.cache-source{border-radius:999px;border:1px solid #dbe4ee;background:#f8fafc;padding:5px 8px;font-size:12px;font-weight:900}.cache-state.active{background:#dcfce7;border-color:#bbf7d0;color:#166534}.cache-state.expired{background:#f1f5f9;color:#64748b}.smart-cache-table code{white-space:nowrap}.smart-cache-table small{color:#64748b}.cache-expired{opacity:.72}
html[data-theme="dark"]{--bg:#07111f;--card:#0f1b2d;--dark:#e5edf7;--muted:#94a3b8;--border:#26364d;--shadow:0 18px 60px rgba(0,0,0,.42);color-scheme:dark}html[data-theme="dark"] body{background:var(--bg);color:var(--dark)}html[data-theme="dark"] .app-header{background:rgba(7,17,31,.92);border-color:#1f2d42}html[data-theme="dark"] .brand small,html[data-theme="dark"] .tag,html[data-theme="dark"] .chip.neutral.active{background:#16233a;color:#cbd5e1;border-color:#2d3c55}html[data-theme="dark"] .tab{color:#cbd5e1}html[data-theme="dark"] .tab.active,html[data-theme="dark"] .tab:hover{background:#17243a;color:#fff}html[data-theme="dark"] .glass,html[data-theme="dark"] .card,html[data-theme="dark"] .result-card,html[data-theme="dark"] .station-lines-block,html[data-theme="dark"] .sl-departure-row,html[data-theme="dark"] .station-alert,html[data-theme="dark"] .status-history-item,html[data-theme="dark"] .doctor-card,html[data-theme="dark"] .admin-metric{background:rgba(15,27,45,.94);border-color:#2a3a52;color:#e5edf7}html[data-theme="dark"] .sl-departure-row:nth-child(even){background:#101d30}html[data-theme="dark"] .station-body-v39,html[data-theme="dark"] .vehicle-body-v75{background:linear-gradient(180deg,#0f1b2d,#0b1626)}html[data-theme="dark"] .muted,html[data-theme="dark"] .page p,html[data-theme="dark"] .sl-dep-line small,html[data-theme="dark"] .sl-dep-main span,html[data-theme="dark"] .status-history-item span{color:#94a3b8}html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] button:not(.primary):not(.chip):not(.panel-toggle-btn),html[data-theme="dark"] .map-extra-actions button{background:#101d30;color:#e5edf7;border-color:#2a3a52}html[data-theme="dark"] .departure-list,html[data-theme="dark"] .next-stops{border-color:#2a3a52;background:#0f1b2d}html[data-theme="dark"] .leaflet-tile{filter:brightness(.72) contrast(1.08) saturate(.82)}html[data-theme="dark"] .leaflet-control-attribution,html[data-theme="dark"] .leaflet-bar a{background:#101d30;color:#e5edf7;border-color:#2a3a52}html[data-theme="dark"] .app-footer{background:rgba(15,27,45,.82);color:#cbd5e1}html[data-theme="dark"] .sl-dep-main span>b{color:#e5edf7}html[data-theme="dark"] .station-alert-panel{background:#2a1b0d;border-color:#78350f}html[data-theme="dark"] .station-alert strong{color:#fdba74}html[data-theme="dark"] .station-alert p{color:#cbd5e1}
@media (max-width: 700px){
  .theme-toggle{width:38px;height:38px;margin-left:4px}.app-header{gap:8px}.brand strong{max-width:108px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-card,.vehicle-card{bottom:0!important;left:0!important;right:0!important;max-width:none!important;max-height:75vh!important;border-radius:22px 22px 0 0!important;transform:translateY(var(--sheet-y,0));touch-action:pan-y;box-shadow:0 -18px 48px rgba(15,23,42,.28)!important}.station-card::before,.vehicle-card::before{content:"";position:absolute;top:8px;left:50%;transform:translateX(-50%);width:44px;height:5px;border-radius:999px;background:rgba(100,116,139,.55);z-index:4}.station-head,.vehicle-head{padding-top:22px!important;cursor:grab}.station-card.sheet-dragging,.vehicle-card.sheet-dragging{transition:none!important}.vehicle-body,.station-body{max-height:calc(75vh - 76px)!important}.sl-departure-row{grid-template-columns:52px minmax(0,1fr) auto;gap:8px}.sl-dep-status{display:none}.sl-dep-main strong{white-space:normal}.sl-dep-time strong{font-size:17px}.status-history-list{grid-template-columns:1fr}.map-extra-actions{display:flex}.map-control-panel.compact .map-extra-actions{display:none!important}
}


/* V78: color/contrast pass + responsive polish for desktop and phones. */
:root{
  --text:#0f172a;
  --text-soft:#334155;
  --text-muted:#64748b;
  --surface:#ffffff;
  --surface-soft:#f8fbff;
  --surface-raised:rgba(255,255,255,.94);
  --focus-ring:0 0 0 4px rgba(0,94,184,.18);
  --hairline:rgba(148,163,184,.28);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
html,body{color:var(--text)}
.muted,.meta,.vehicle-row small,.status-message-list span,.sl-dep-line small,.sl-dep-main span{color:var(--text-muted)}
.app-header{background:var(--surface-raised);box-shadow:0 10px 30px rgba(15,23,42,.06);gap:18px}
.brand{min-width:0}.brand strong{letter-spacing:-.02em}.brand small{font-weight:900;letter-spacing:.05em}
.tabs{min-width:0;background:rgba(241,245,249,.74);border:1px solid rgba(226,232,240,.9);border-radius:999px;padding:4px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tab{border-radius:999px;font-weight:850;white-space:nowrap;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.tab.active{background:#fff;color:var(--blue);box-shadow:0 4px 14px rgba(15,23,42,.08)}.tab:hover{background:#fff;color:var(--blue)}
.theme-toggle{flex:0 0 auto;font-size:18px;transition:transform .16s ease,background .16s ease,color .16s ease,box-shadow .16s ease}.theme-toggle:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(0,94,184,.18)}
.glass,.card,.result-card,.admin-metric{background:var(--surface-raised);border-color:var(--hairline)}
.card,.result-card,.admin-metric{box-shadow:0 10px 30px rgba(15,23,42,.055)}
button,input,select{font:inherit}button{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:0;box-shadow:var(--focus-ring)!important;border-color:var(--blue)!important}
.primary{min-height:44px;border-radius:12px;box-shadow:0 10px 22px rgba(0,94,184,.16)}.primary:active,.chip:active,.pill:active,.theme-toggle:active,.panel-toggle-btn:active{transform:translateY(1px)}
.grid-form input,.grid-form select,.filters input,.filters select,.admin-login input[type=password],.suggest-wrap input,.planner-options input,.planner-options select,.planner-time-grid input,.planner-time-grid select{background:var(--surface);color:var(--text);border-color:var(--border);min-height:46px}
.chips{gap:9px}.chip,.pill,.status-filter-chip{min-height:40px;font-weight:850;transition:transform .12s ease,background .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease}.chip:not(.active):hover,.pill:not(.active):hover,.status-filter-chip:not(.active):hover{background:#f8fafc;border-color:#bfdbfe;color:#0b57b7}.chip span{font-size:12px;font-weight:950}.chip.metro-green.active{background:#009639;color:#061a0d}.chip.metro-red.active{background:#D52B1E;color:#fff}.chip.metro-blue.active{background:#0072CE;color:#fff}.chip.train.active{background:#D0007E;color:#fff}.chip.tram.active{background:#F6A800;color:#111827}.chip.ship.active{background:#00A3E0;color:#082f49}.chip.active span{background:rgba(255,255,255,.32);color:inherit}.chip.tram.active span,.chip.ship.active span,.chip.metro-green.active span{background:rgba(15,23,42,.13)}
.map-control-panel{right:20px;top:92px;width:min(760px,48vw);padding:14px;border-radius:22px}.map-control-panel:not(.compact){box-shadow:0 18px 58px rgba(15,23,42,.16)}.map-control-panel.compact{right:20px}.map-control-panel.compact .panel-toggle-btn{box-shadow:0 14px 36px rgba(0,94,184,.34)}.map-extra-actions button{min-height:42px;box-shadow:0 4px 12px rgba(15,23,42,.05)}
#map{background:linear-gradient(180deg,#e8f0f8,#dce8f4)}.leaflet-control-zoom a,.leaflet-bar a{font-weight:900}
.station-card,.vehicle-card{border-radius:22px;box-shadow:0 22px 60px rgba(15,23,42,.22);border-color:rgba(203,213,225,.9);background:var(--surface-raised)}.station-head,.vehicle-head{min-height:58px}.station-title h2,.vehicle-title-row strong{letter-spacing:-.015em}.close{min-width:34px!important;min-height:34px!important;border-radius:999px;background:rgba(255,255,255,.22);font-weight:950;transition:background .14s ease,transform .14s ease}.close:hover{background:rgba(255,255,255,.34);transform:scale(1.04)}
.station-body,.vehicle-body{color:var(--text)}.station-body-v39,.vehicle-body-v75{background:linear-gradient(180deg,#fff,#f7fbff)}.station-live-strip,.vehicle-status-strip{gap:7px}.sl-live-pill{min-height:25px}.station-lines-block,.next-stops,.departure-list{border-color:var(--hairline)}
.station-tab-body{min-width:0}.depart-tabs{background:rgba(241,245,249,.76);border:1px solid var(--hairline);border-radius:14px;padding:4px;margin-bottom:10px}.depart-tabs button{border-radius:11px!important;font-weight:850}.depart-tabs button.active{background:#fff;color:var(--blue);box-shadow:0 3px 10px rgba(15,23,42,.07)}
.sl-departure-row{border-top:1px solid rgba(226,232,240,.82);grid-template-columns:minmax(62px,.48fr) minmax(0,1.8fr) minmax(78px,.55fr) minmax(70px,.42fr)}.sl-departure-row:first-child{border-top:0}.sl-dep-main strong{letter-spacing:-.01em}.sl-dep-time strong{letter-spacing:-.03em}.sl-dep-status span{white-space:nowrap}
.station-alert-panel{box-shadow:inset 4px 0 0 #f59e0b}.station-alert.severe{box-shadow:inset 4px 0 0 #ef4444}.station-alert.info{box-shadow:inset 4px 0 0 #2563eb}
.status-hero,.status-card-v51,.journey-card,.nearby-stop-card,.doctor-card,.status-history-item,.data-status-card{border-radius:20px}.status-grid{align-items:start}.status-card-v51{box-shadow:0 12px 34px rgba(15,23,42,.06)}.status-card-title-row h2{letter-spacing:-.02em}.status-badge-v51,.cache-state,.cache-source,.tag{font-weight:900}.status-message-list li{border-color:var(--hairline)}
.table-wrap{border:1px solid var(--hairline);border-radius:16px;background:var(--surface);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}.table-wrap:empty{border:0}.admin-table th{position:sticky;top:0;z-index:1}.admin-actions button,.admin-section-head button,.vehicle-actions button,.planner-actions button,#clearPlanner{min-height:42px;border-radius:12px}
.app-footer{backdrop-filter:blur(12px);border:1px solid rgba(226,232,240,.8)}
html[data-theme="dark"]{
  --text:#e5edf7;
  --text-soft:#cbd5e1;
  --text-muted:#9fb0c6;
  --surface:#0f1b2d;
  --surface-soft:#111f33;
  --surface-raised:rgba(15,27,45,.94);
  --hairline:rgba(71,85,105,.58);
  --focus-ring:0 0 0 4px rgba(96,165,250,.22);
}
html[data-theme="dark"] .tabs{background:rgba(15,27,45,.75);border-color:#26364d}html[data-theme="dark"] .tab.active,html[data-theme="dark"] .tab:hover{background:#1a2941;color:#bfdbfe;box-shadow:none}html[data-theme="dark"] .brand-icon{border-color:#102033}html[data-theme="dark"] .theme-toggle:hover{background:#17243a;color:#bfdbfe}
html[data-theme="dark"] .chip:not(.active),html[data-theme="dark"] .pill:not(.active),html[data-theme="dark"] .status-filter-chip:not(.active){background:#101d30;color:#d7e2f2;border-color:#2a3a52}html[data-theme="dark"] .chip:not(.active):hover,html[data-theme="dark"] .pill:not(.active):hover,html[data-theme="dark"] .status-filter-chip:not(.active):hover{background:#17243a;color:#bfdbfe;border-color:#3b82f6}html[data-theme="dark"] .chip.metro-green.active{color:#061a0d}html[data-theme="dark"] .chip.tram.active{color:#111827}html[data-theme="dark"] .chip.ship.active{color:#082f49}
html[data-theme="dark"] #map{background:#081522}html[data-theme="dark"] .panel-toggle-btn{background:#101d30;color:#dbeafe;border-color:#2a3a52}html[data-theme="dark"] .map-control-panel.compact{background:transparent}html[data-theme="dark"] .map-control-panel.compact .panel-toggle-btn{background:#005EB8;color:#fff;border-color:#005EB8}html[data-theme="dark"] .station-body-v39,html[data-theme="dark"] .vehicle-body-v75{background:linear-gradient(180deg,#0f1b2d,#0b1626)}html[data-theme="dark"] .station-lines-block,html[data-theme="dark"] .next-stops,html[data-theme="dark"] .departure-list,html[data-theme="dark"] .depart-tabs,html[data-theme="dark"] .table-wrap{background:#101d30;border-color:#2a3a52}html[data-theme="dark"] .depart-tabs button.active{background:#1a2941;color:#bfdbfe}html[data-theme="dark"] .sl-departure-row{border-color:#26364d}html[data-theme="dark"] .status-message-list li{background:#111f33;border-color:#2a3a52}html[data-theme="dark"] .status-message-list b,html[data-theme="dark"] .status-stat-grid-v51 b,html[data-theme="dark"] .status-card-title-row h2,html[data-theme="dark"] .admin-table td,html[data-theme="dark"] .status-list dd{color:#e5edf7}html[data-theme="dark"] .status-list dt,html[data-theme="dark"] .admin-table th{color:#cbd5e1}html[data-theme="dark"] .admin-table th{background:#152238}html[data-theme="dark"] .admin-table td,html[data-theme="dark"] .admin-table th,html[data-theme="dark"] .status-list dl div{border-color:#26364d}html[data-theme="dark"] .result-card.warn,html[data-theme="dark"] .status-card-v51.warning,html[data-theme="dark"] .status-history-item.has-issues{background:#2a1b0d;border-color:#78350f}html[data-theme="dark"] .result-card.severe,html[data-theme="dark"] .status-card-v51.severe{background:#2b1014;border-color:#7f1d1d}html[data-theme="dark"] .status-card-v51.info{background:#0d1f36;border-color:#1d4ed8}html[data-theme="dark"] .status-card-v51.ok{background:#10251a;border-color:#166534}html[data-theme="dark"] .code-card{background:#050b14;border-color:#1e293b}html[data-theme="dark"] .app-footer{border-color:#26364d;background:rgba(15,27,45,.82)}
@media (max-width: 900px){
  .app-header{padding:0 12px;gap:10px}.tabs{flex:1 1 auto}.tab{padding:10px 13px}.map-control-panel{left:12px;right:12px;width:auto}.map-control-panel.compact{left:auto;right:14px;width:50px}.page{padding-left:16px;padding-right:16px}.status-grid{grid-template-columns:1fr}.admin-section-head{align-items:flex-start}.admin-section-head button{align-self:center}.station-card,.vehicle-card{max-width:calc(100vw - 16px)}
}
@media (max-width: 700px){
  .app-header{height:104px;display:grid;grid-template-columns:1fr auto;grid-template-rows:52px 42px;align-content:center;padding:6px 10px 8px}.brand{grid-column:1;gap:9px}.brand-icon{width:38px;height:38px;font-size:15px}.brand strong{max-width:none;font-size:18px}.theme-toggle{grid-column:2;grid-row:1;width:40px;height:40px}.tabs{grid-column:1/3;grid-row:2;width:100%;padding:3px;overflow-x:auto}.tab{padding:9px 12px;font-size:14px}#view-map{padding-top:104px}#map{height:calc(100dvh - 104px)}.map-control-panel.compact{top:118px;right:12px}.map-control-panel:not(.compact){top:112px;max-height:min(52dvh,420px);overflow:auto}.page{padding-top:128px}.page h1{font-size:29px;letter-spacing:-.03em}.page p{font-size:16px}.chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.chip{justify-content:space-between;display:flex;align-items:center;padding:9px 10px}.station-card,.vehicle-card{max-height:min(75dvh,650px)!important;bottom:0!important;border-radius:24px 24px 0 0!important;padding-bottom:var(--safe-bottom);transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease}.station-card::before,.vehicle-card::before{top:9px;width:48px;height:5px;background:rgba(100,116,139,.72)}.station-head,.vehicle-head{padding-top:24px!important}.vehicle-body,.station-body{max-height:calc(75dvh - 80px)!important;padding-bottom:calc(14px + var(--safe-bottom))}.station-quick-grid,.station-quick-grid-sl,.vehicle-live-summary,.vehicle-live-summary-sl{grid-template-columns:1fr!important}.sl-departure-row{grid-template-columns:50px minmax(0,1fr) 60px!important;padding:10px 9px}.sl-dep-line .line-chip{min-width:34px;font-size:14px}.sl-dep-time strong{font-size:16px}.sl-dep-main span{font-size:11px}.status-stat-grid-v51{grid-template-columns:repeat(2,1fr)}.admin-actions,.planner-actions,.nearby-actions{display:grid;grid-template-columns:1fr;gap:8px}.admin-section-head{display:grid;gap:10px}.admin-section-head button{width:100%}.table-wrap{border-radius:14px}.app-footer{left:8px;right:8px;text-align:center;bottom:calc(4px + var(--safe-bottom))}.vehicle-follow-bar{left:8px;right:8px;transform:none;max-width:none;bottom:calc(10px + var(--safe-bottom))}.vehicle-card:not(.hidden)+.vehicle-follow-bar,.station-card:not(.hidden)+.vehicle-follow-bar{bottom:calc(75dvh + 10px + var(--safe-bottom))}
}
@media (max-width: 390px){
  .brand strong{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab{padding:8px 10px;font-size:13px}.chips{grid-template-columns:1fr}.sl-departure-row{grid-template-columns:46px minmax(0,1fr) 54px!important}.sl-dep-line small{display:none}.station-card,.vehicle-card{max-height:72dvh!important}.vehicle-body,.station-body{max-height:calc(72dvh - 80px)!important}
}

/* V80: bus stop/station icons are half the V79 visual size. */
.stop-div-bus .stop-click-target{min-width:18px!important;min-height:18px!important}
.stop-div-bus .stop-click-dot{width:6.5px!important;height:6.5px!important;border-width:1.5px!important;box-shadow:0 2px 7px rgba(15,23,42,.30),0 0 0 1px rgba(255,255,255,.96)!important}
.stop-div-bus .stop-click-target::before{inset:3px!important;background:rgba(227,6,19,.09)!important;opacity:.55!important}
.stop-div-icon.stop-div-bus:hover .stop-click-dot,.stop-div-icon.stop-div-bus:focus .stop-click-dot{box-shadow:0 3px 10px rgba(15,23,42,.36),0 0 0 3px rgba(227,6,19,.14)!important}
@media (max-width:700px){.stop-div-bus .stop-click-target{min-width:20px!important;min-height:20px!important}.stop-div-bus .stop-click-dot{width:7.5px!important;height:7.5px!important}}

/* V81: text contrast pass for light and dark mode.
   Keep SL line colors intact, but make all surrounding UI text use theme tokens. */
:root{
  --text:#0f172a;
  --text-soft:#334155;
  --text-muted:#64748b;
  --text-subtle:#72839a;
  --text-inverse:#ffffff;
  --link:#005EB8;
  --surface:#ffffff;
  --surface-soft:#f8fbff;
  --surface-raised:rgba(255,255,255,.96);
  --surface-muted:#f1f5f9;
  --surface-hover:#eef6ff;
  --field-bg:#ffffff;
  --table-head:#f8fafc;
  --hairline:#dbe4ee;
  --good-bg:#ecfdf3;
  --good-text:#166534;
  --warn-bg:#fff7ed;
  --warn-text:#9a3412;
  --bad-bg:#fef2f2;
  --bad-text:#991b1b;
  --info-bg:#eff6ff;
  --info-text:#1d4ed8;
}
html[data-theme="dark"]{
  --bg:#07111f;
  --card:#0f1b2d;
  --dark:#e5edf7;
  --muted:#9fb0c6;
  --border:#2a3a52;
  --text:#e5edf7;
  --text-soft:#cbd5e1;
  --text-muted:#9fb0c6;
  --text-subtle:#8293aa;
  --text-inverse:#06101f;
  --link:#93c5fd;
  --surface:#0f1b2d;
  --surface-soft:#111f33;
  --surface-raised:rgba(15,27,45,.96);
  --surface-muted:#101d30;
  --surface-hover:#17243a;
  --field-bg:#0b1626;
  --table-head:#152238;
  --hairline:#2a3a52;
  --good-bg:#10251a;
  --good-text:#86efac;
  --warn-bg:#2a1b0d;
  --warn-text:#fdba74;
  --bad-bg:#2b1014;
  --bad-text:#fca5a5;
  --info-bg:#0d1f36;
  --info-text:#bfdbfe;
}
html,body{background:var(--bg);color:var(--text)}
a{color:inherit}.leaflet-container a{color:var(--link)}
.page h1,.page h2,.page h3,.card h1,.card h2,.card h3,.result-card h2,.result-card h3,.admin-section-head h2,.status-card-title-row h2,.status-hero-main strong,.status-stat-grid-v51 b,.status-message-list b,.station-timetable-route strong,.station-quick-grid strong,.vehicle-live-summary strong,.vehicle-popup-body .vehicle-row strong,.status-list dd,.admin-metric strong{color:var(--text)}
.page p,.muted,.meta,.brand small,.app-footer,.filters label,.admin-login label,.suggest-wrap,.planner-options label,.planner-time-grid label,.planner-choice,.station-label,.vehicle-row small,.vehicle-row-label i,.vehicle-live-summary small,.station-quick-grid small,.station-title small,.status-hero-kicker,.status-hero-main span:last-child,.status-stat-grid-v51 small,.status-card-body-v51 p,.status-message-list span,.status-loading-card span,.data-status-card span,.data-status-card small,.line-stops-list li small,.line-stops-details summary small,.station-timetable-route small,.station-timetable-title small,.station-timetable-note,.station-event-row .planned-time,.station-event-row .time-source,.sl-dep-line small,.sl-dep-main span,.sl-dep-time .planned-time,.status-history-item time,.status-history-item span,.smart-cache-table small,.doctor-card small,.vehicle-extra summary{color:var(--text-muted)}
.leg-main p,.disruption-card p,.doctor-card p,.station-alert p,.line-stops-list li,.line-stops-details summary,.check-row,.status-card-body ul,.status-list dt,.admin-table th,.admin-table td,.cache-summary span,.cache-source,.status-summary-pill,.status-badge,.deviation-stop-tag,.disruption-time{color:var(--text-soft)}
.app-header,.glass,.card,.result-card,.admin-metric,.station-card,.vehicle-card,.status-hero,.status-card-v51,.journey-card,.nearby-stop-card,.doctor-card,.data-status-card,.status-history-item,.table-wrap,.station-timetable-row,.station-lines-block,.departure-list,.next-stops,.depart-tabs,.station-alert,.station-alert-panel{background:var(--surface-raised);border-color:var(--hairline);color:var(--text)}
.status-stat-grid-v51 span,.status-message-list li,.station-time-pills span,.station-timetable-row,.doctor-card,.cache-summary span,.cache-source,.status-history-item em{background:var(--surface);border-color:var(--hairline);color:var(--text)}
.grid-form input,.grid-form select,.filters input,.filters select,.admin-login input[type=password],.suggest-wrap input,.planner-options input,.planner-options select,.planner-time-grid input,.planner-time-grid select,textarea{background:var(--field-bg);color:var(--text);border-color:var(--border)}
input::placeholder,textarea::placeholder{color:var(--text-subtle);opacity:1}
button:not(.primary):not(.chip):not(.line-chip):not(.panel-toggle-btn),.icon-btn,.theme-toggle,.pill,.status-filter-chip,.small-chips button,.map-extra-actions button,.admin-actions button,.admin-section-head button,.vehicle-actions button,.planner-actions button,#clearPlanner{background:var(--surface);color:var(--text-soft);border-color:var(--border)}
button:not(.primary):not(.chip):not(.line-chip):not(.panel-toggle-btn):hover,.icon-btn:hover,.theme-toggle:hover,.pill:not(.active):hover,.status-filter-chip:not(.active):hover,.small-chips button:hover,.map-extra-actions button:hover{background:var(--surface-hover);color:var(--link);border-color:color-mix(in srgb,var(--link) 45%,var(--border))}
.tabs{background:color-mix(in srgb,var(--surface-raised) 86%,transparent);border-color:var(--hairline)}
.tab{color:var(--text-soft)}.tab:hover{background:var(--surface);color:var(--link)}.tab.active{background:var(--blue)!important;color:#fff!important;box-shadow:0 3px 12px rgba(0,94,184,.26)}
.theme-toggle{background:var(--surface);color:var(--text-soft)}
.chip:not(.active),.pill:not(.active),.status-filter-chip:not(.active){background:var(--surface);color:var(--text-soft);border-color:var(--border)}
.chip.neutral.active{background:var(--surface-muted);color:var(--text);border-color:var(--hairline)}
.depart-tabs{background:var(--surface-muted);border-color:var(--hairline)}.depart-tabs button{color:var(--text-muted)}.depart-tabs button.active{background:var(--surface);color:var(--link)}
.sl-departure-row{background:var(--surface);border-color:var(--hairline);color:var(--text)}.sl-departure-row:nth-child(even){background:var(--surface-soft)}.sl-dep-main span>b{color:var(--text)}
.sl-dep-status span,.sl-live-pill.muted,.cache-state.expired{background:var(--surface-muted);color:var(--text-muted);border-color:var(--hairline)}
.ok,.status-success{color:var(--good-text)}.error,.status-error{color:var(--bad-text)}.warn-text,.status-running,.journey-warning,.departure-row em,.station-event-row .delay-badge{color:var(--warn-text)}
.sl-live-pill.ok,.sl-dep-status .ok,.cache-state.active,.admin-notice.ok,.data-status-card.ok small{background:var(--good-bg);color:var(--good-text);border-color:color-mix(in srgb,var(--good-text) 35%,transparent)}
.sl-live-pill.warn-text,.sl-dep-status .warn,.doctor-card.warn span,.data-status-card.warn small{background:var(--warn-bg);color:var(--warn-text);border-color:color-mix(in srgb,var(--warn-text) 35%,transparent)}
.sl-live-pill.bad,.sl-dep-status .bad,.doctor-card.bad span,.data-status-card.bad small{background:var(--bad-bg);color:var(--bad-text);border-color:color-mix(in srgb,var(--bad-text) 35%,transparent)}
.station-alert-panel,.result-card.warn,.status-card-v51.warning,.status-history-item.has-issues{background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn-text) 45%,var(--hairline))}.station-alert strong,.status-card-v51.warning .status-badge-v51{color:var(--warn-text)}
.station-alert.severe,.result-card.severe,.status-card-v51.severe{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad-text) 45%,var(--hairline))}.station-alert-lines span,.status-card-v51.severe .status-badge-v51{background:var(--bad-bg);color:var(--bad-text);border-color:color-mix(in srgb,var(--bad-text) 35%,transparent)}
.station-alert.info,.status-card-v51.info,.station-info-note{background:var(--info-bg);border-color:color-mix(in srgb,var(--info-text) 45%,var(--hairline));color:var(--info-text)}.station-alert.info strong,.status-card-v51.info .status-badge-v51{color:var(--info-text)}
.status-card-v51.ok{background:var(--good-bg);border-color:color-mix(in srgb,var(--good-text) 45%,var(--hairline))}.status-card-v51.ok .status-badge-v51,.doctor-card.ok span{background:var(--good-bg);color:var(--good-text);border-color:color-mix(in srgb,var(--good-text) 35%,transparent)}
.status-badge-v51,.tag,.deviation-stop-tag,.status-line-badge.neutral,.status-badge{background:var(--surface-muted);color:var(--text-soft);border-color:var(--hairline)}
.admin-table th{background:var(--table-head);color:var(--text-soft)}.admin-table td,.admin-table th{border-color:var(--hairline);color:var(--text)}
.table-wrap{background:var(--surface);color:var(--text)}code{color:var(--text)}.code-card{background:#0b1220;color:#e2e8f0;border-color:#1e293b}
.map-notice{background:var(--surface-raised);border-color:var(--hairline);color:var(--text)}.map-notice.warn{background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn-text) 45%,var(--hairline))}.map-notice.error{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad-text) 45%,var(--hairline))}
.leaflet-control-attribution,.leaflet-control-zoom a,.leaflet-bar a{background:var(--surface);color:var(--text);border-color:var(--hairline)}
html[data-theme="dark"] .app-header{background:rgba(7,17,31,.94);border-color:var(--hairline)}
html[data-theme="dark"] .station-body-v39,html[data-theme="dark"] .vehicle-body-v75{background:linear-gradient(180deg,var(--surface),#0b1626)}
html[data-theme="dark"] .status-card-left{background:linear-gradient(180deg,color-mix(in srgb,var(--status-color) 18%,#0f1b2d),#0f1b2d)}
html[data-theme="dark"] .status-mode-icon-v51,html[data-theme="dark"] .leg-badge,html[data-theme="dark"] .line-chip,html[data-theme="dark"] .station-line-badge,html[data-theme="dark"] .status-line-badge:not(.neutral),html[data-theme="dark"] .vehicle-head,html[data-theme="dark"] .vehicle-head .close{color:var(--sl-line-text-color,#fff)}
html[data-theme="dark"] .chip.metro-green.active{color:#061a0d}html[data-theme="dark"] .chip.tram.active{color:#111827}html[data-theme="dark"] .chip.ship.active{color:#082f49}
html[data-theme="dark"] .station-card::before,html[data-theme="dark"] .vehicle-card::before{background:rgba(203,213,225,.62)}
html[data-theme="dark"] .app-footer{background:rgba(15,27,45,.86);border-color:var(--hairline);color:var(--text-muted)}

/* V81.1: preserve intentional active/control colors after the contrast layer. */
.close{border:1px solid transparent}
.vehicle-head .close{background:color-mix(in srgb,var(--sl-line-text-color,#fff) 18%,transparent);color:var(--sl-line-text-color,#fff)!important;border-color:color-mix(in srgb,var(--sl-line-text-color,#fff) 26%,transparent)}
.station-head .close{background:rgba(255,255,255,.34);color:inherit;border-color:rgba(255,255,255,.34)}
.vehicle-follow-bar button{background:rgba(255,255,255,.12)!important;color:#fff!important;border-color:rgba(255,255,255,.28)!important}
.pill.active,.status-filter-chip.active,.small-chips button.active,.station-tabs button.active,.vehicle-actions button.active,.vehicle-actions-sl button.active{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important}
.status-filter-chip.active span{background:rgba(255,255,255,.22)!important;color:#fff!important}.pill.active:hover,.status-filter-chip.active:hover,.small-chips button.active:hover,.station-tabs button.active:hover,.vehicle-actions button.active:hover{color:#fff!important}
html[data-theme="dark"] .close{border-color:rgba(255,255,255,.18)}

/* V84: planner contrast fix for light/dark mode.
   The planner mode pills and advanced panel previously kept hard-coded light
   backgrounds, which made text almost invisible in dark mode. */
.planner-card{color:var(--text)}
.planner-advanced{background:var(--surface)!important;border-color:var(--hairline)!important;color:var(--text)!important}
.planner-advanced summary,.journey-details summary{color:var(--text)!important}
.planner-modes label{background:var(--surface)!important;color:var(--text-soft)!important;border-color:var(--border)!important;box-shadow:0 1px 0 rgba(15,23,42,.03)}
.planner-modes label:hover{background:var(--surface-hover)!important;color:var(--link)!important;border-color:color-mix(in srgb,var(--link) 42%,var(--border))!important}
.planner-modes label:has(input:checked){background:color-mix(in srgb,var(--blue) 10%,var(--surface))!important;color:var(--text)!important;border-color:color-mix(in srgb,var(--blue) 34%,var(--border))!important}
.planner-modes label:has(input:not(:checked)){color:var(--text-muted)!important}
.planner-modes input[type="checkbox"],.check-row input[type="checkbox"]{accent-color:var(--blue)}
.journey-copy{background:var(--surface)!important;color:var(--text-soft)!important;border-color:var(--border)!important}
.leg-item{border-color:var(--hairline)!important}
html[data-theme="dark"] .planner-modes label{background:#101d30!important;color:#e5edf7!important;border-color:#2a3a52!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
html[data-theme="dark"] .planner-modes label:hover{background:#17243a!important;color:#bfdbfe!important;border-color:#3b82f6!important}
html[data-theme="dark"] .planner-modes label:has(input:checked){background:#123055!important;color:#f8fbff!important;border-color:#2563eb!important}
html[data-theme="dark"] .planner-modes label:has(input:not(:checked)){background:#0b1626!important;color:#a9b7cc!important;border-color:#26364d!important}
html[data-theme="dark"] .planner-advanced{background:#101d30!important;border-color:#2a3a52!important;color:#e5edf7!important}
html[data-theme="dark"] .planner-advanced summary{color:#f8fbff!important}
html[data-theme="dark"] .journey-copy{background:#101d30!important;color:#e5edf7!important;border-color:#2a3a52!important}

/* V85: vehicle popup contrast fix for dark mode.
   The vehicle summary cards and bottom info rows kept hard-coded white
   backgrounds while the text layer switched to dark-mode light text. */
.vehicle-popup-body,
.vehicle-body-v75{
  color:var(--text)!important;
}
.vehicle-live-summary,
.vehicle-live-summary-sl{
  background:var(--surface-soft)!important;
  border-color:var(--hairline)!important;
}
.vehicle-live-summary div,
.vehicle-live-summary-sl div{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.vehicle-live-summary small,
.vehicle-live-summary-sl small,
.vehicle-popup-body .next-stops small,
.vehicle-popup-body .next-stops li small,
.vehicle-row-label i,
.vehicle-row-label small,
.vehicle-updated,
.route-progress small em{
  color:var(--text-muted)!important;
}
.vehicle-live-summary strong,
.vehicle-live-summary-sl strong,
.vehicle-popup-body .vehicle-row strong,
.vehicle-popup-body .next-stops li b,
.line-stops-list li b{
  color:var(--text)!important;
}
.vehicle-popup-body .next-stops,
.vehicle-popup-body .vehicle-row,
.vehicle-extra,
.vehicle-extra .vehicle-row,
.vehicle-actions,
.vehicle-updated{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.vehicle-popup-body .next-stops{
  background:var(--surface-muted)!important;
}
.vehicle-popup-body .vehicle-row:nth-child(even){
  background:var(--surface-soft)!important;
}
.line-stops-list li,
.compact-stops li{
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.vehicle-popup-body .next-stops li.current b,
.line-stops-list li.current b{
  color:var(--link)!important;
}
.vehicle-popup-body .dot,
.line-stops-list .dot{
  background:var(--text-subtle)!important;
}
.vehicle-popup-body .dot.active,
.line-stops-list .dot.active{
  background:var(--link)!important;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--link) 16%,transparent)!important;
}
html[data-theme="dark"] .vehicle-live-summary,
html[data-theme="dark"] .vehicle-live-summary-sl,
html[data-theme="dark"] .vehicle-popup-body .next-stops{
  background:#0b1626!important;
}
html[data-theme="dark"] .vehicle-live-summary div,
html[data-theme="dark"] .vehicle-live-summary-sl div,
html[data-theme="dark"] .vehicle-popup-body .vehicle-row,
html[data-theme="dark"] .vehicle-extra,
html[data-theme="dark"] .vehicle-extra .vehicle-row,
html[data-theme="dark"] .vehicle-actions,
html[data-theme="dark"] .vehicle-updated{
  background:#101d30!important;
  border-color:#2a3a52!important;
  color:#e5edf7!important;
}
html[data-theme="dark"] .vehicle-popup-body .vehicle-row:nth-child(even){
  background:#111f33!important;
}
html[data-theme="dark"] .vehicle-live-summary strong,
html[data-theme="dark"] .vehicle-popup-body .vehicle-row strong,
html[data-theme="dark"] .vehicle-popup-body .next-stops li b,
html[data-theme="dark"] .line-stops-list li b{
  color:#f8fbff!important;
}
html[data-theme="dark"] .vehicle-live-summary small,
html[data-theme="dark"] .vehicle-popup-body .next-stops small,
html[data-theme="dark"] .vehicle-popup-body .next-stops li small,
html[data-theme="dark"] .vehicle-row-label i,
html[data-theme="dark"] .vehicle-row-label small,
html[data-theme="dark"] .vehicle-updated,
html[data-theme="dark"] .route-progress small em{
  color:#a9b7cc!important;
}

/* V86: station popup header/text contrast fix.
   The station header kept a hard-coded light background in dark mode,
   which made the station name and coordinate text almost white on white. */
.station-head-image.station-head-v39{
  background:linear-gradient(180deg,var(--surface-raised),var(--surface-soft))!important;
  border-bottom-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-head-image .station-title h2{
  color:var(--text)!important;
}
.station-head-image .station-title small{
  color:var(--text-muted)!important;
}
.station-head-image .station-pin-v39{
  background:color-mix(in srgb,var(--station-color,var(--blue)) 12%,var(--surface))!important;
  border-color:color-mix(in srgb,var(--station-color,var(--blue)) 36%,var(--hairline))!important;
  color:var(--station-color,var(--blue))!important;
}
.station-head-image .station-close.close{
  background:var(--surface-muted)!important;
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-head-image .station-close.close:hover,
.station-head-image .station-close.close:focus-visible{
  background:var(--surface-hover)!important;
  color:var(--link)!important;
  border-color:color-mix(in srgb,var(--link) 44%,var(--hairline))!important;
}
.station-event-row .time-source{
  background:var(--surface-muted)!important;
  color:var(--text-muted)!important;
  border:1px solid var(--hairline)!important;
  border-radius:7px;
  padding:2px 7px;
  line-height:1.2;
}
html[data-theme="dark"] .station-head-image.station-head-v39{
  background:linear-gradient(180deg,#101d30,#0f1b2d)!important;
  border-bottom-color:#2a3a52!important;
  color:#f8fbff!important;
}
html[data-theme="dark"] .station-head-image .station-title h2{
  color:#f8fbff!important;
}
html[data-theme="dark"] .station-head-image .station-title small{
  color:#a9b7cc!important;
}
html[data-theme="dark"] .station-head-image .station-pin-v39{
  background:color-mix(in srgb,var(--station-color,var(--blue)) 18%,#0b1626)!important;
  border-color:color-mix(in srgb,var(--station-color,var(--blue)) 48%,#2a3a52)!important;
  color:var(--station-color,var(--blue))!important;
}
html[data-theme="dark"] .station-head-image .station-close.close{
  background:#17243a!important;
  color:#dbeafe!important;
  border-color:#2a3a52!important;
}
html[data-theme="dark"] .station-head-image .station-close.close:hover,
html[data-theme="dark"] .station-head-image .station-close.close:focus-visible{
  background:#1e3354!important;
  color:#ffffff!important;
  border-color:#3b82f6!important;
}
html[data-theme="dark"] .station-event-row .time-source{
  background:#17243a!important;
  color:#cbd5e1!important;
  border-color:#2a3a52!important;
}


/* V87: complete station popup dark-mode contrast pass.
   Keep SL line colors, but make every surrounding station popup panel, row,
   helper text and button follow the current theme instead of old hard-coded
   white backgrounds. */
.station-card{
  background:var(--surface-raised)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .station-head,
.station-card .station-head-image,
.station-card .station-head-v39{
  background:linear-gradient(180deg,var(--surface-raised),var(--surface-soft))!important;
  border-bottom-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .station-title,
.station-card .station-title div{
  color:var(--text)!important;
}
.station-card .station-title h2{
  color:var(--text)!important;
}
.station-card .station-title small{
  color:var(--text-muted)!important;
}
.station-card .station-pin,
.station-card .station-pin-v39{
  background:color-mix(in srgb,var(--station-color,var(--blue)) 12%,var(--surface))!important;
  border-color:color-mix(in srgb,var(--station-color,var(--blue)) 40%,var(--hairline))!important;
  color:var(--station-color,var(--blue))!important;
}
.station-card .station-close,
.station-card .station-close.close{
  background:var(--surface-muted)!important;
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-card .station-close:hover,
.station-card .station-close:focus-visible{
  background:var(--surface-hover)!important;
  color:var(--link)!important;
  border-color:color-mix(in srgb,var(--link) 44%,var(--hairline))!important;
}
.station-card .station-body,
.station-card .station-body-v39{
  background:linear-gradient(180deg,var(--surface),var(--surface-soft))!important;
  color:var(--text)!important;
}
.station-card .station-live-strip{
  background:transparent!important;
  color:var(--text)!important;
}
.station-card .station-quick-grid,
.station-card .station-quick-grid-sl{
  background:var(--surface-muted)!important;
  border-bottom-color:var(--hairline)!important;
}
.station-card .station-quick-grid > div,
.station-card .station-quick-grid-sl > div{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .station-quick-grid small,
.station-card .station-quick-grid-sl small,
.station-card .station-label,
.station-card .sl-dep-line small,
.station-card .sl-dep-main span,
.station-card .sl-dep-time .planned-time,
.station-card .station-updated,
.station-card .station-event-row .planned-time{
  color:var(--text-muted)!important;
}
.station-card .station-quick-grid strong,
.station-card .station-quick-grid-sl strong,
.station-card .sl-dep-main strong,
.station-card .sl-dep-main span > b,
.station-card .sl-dep-time strong,
.station-card .event-time{
  color:var(--text)!important;
}
.station-card .station-block,
.station-card .station-lines-block,
.station-card .station-chain,
.station-card .line-stops-details,
.station-card .station-empty,
.station-card .line-stops-loading{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .station-lines-block{
  box-shadow:none!important;
}
.station-card .depart-tabs,
.station-card .station-tabs{
  background:var(--surface-muted)!important;
  border-color:var(--hairline)!important;
}
.station-card .depart-tabs button,
.station-card .station-tabs button{
  background:transparent!important;
  color:var(--text-soft)!important;
  border-color:transparent!important;
}
.station-card .depart-tabs button.active,
.station-card .station-tabs button.active{
  background:var(--blue)!important;
  color:#fff!important;
  border-color:var(--blue)!important;
}
.station-card .station-tab-body,
.station-card .departure-list,
.station-card .station-next-list{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .sl-departure-row,
.station-card .station-event-row{
  background:var(--surface)!important;
  border-color:var(--hairline)!important;
  color:var(--text)!important;
}
.station-card .sl-departure-row:nth-child(even),
.station-card .station-event-row:nth-child(even){
  background:var(--surface-soft)!important;
}
.station-card .station-event-row .time-source,
.station-card .station-event-row .live-source{
  background:var(--surface-muted)!important;
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-card .station-event-row .live-source{
  background:var(--info-bg)!important;
  color:var(--info-text)!important;
  border-color:color-mix(in srgb,var(--info-text) 38%,var(--hairline))!important;
}
.station-card .sl-dep-status span{
  background:var(--surface-muted)!important;
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-card .sl-dep-status .ok{
  background:var(--good-bg)!important;
  color:var(--good-text)!important;
  border-color:color-mix(in srgb,var(--good-text) 34%,var(--hairline))!important;
}
.station-card .sl-dep-status .warn,
.station-card .station-event-row .delay-badge{
  background:var(--warn-bg)!important;
  color:var(--warn-text)!important;
  border-color:color-mix(in srgb,var(--warn-text) 34%,var(--hairline))!important;
}
.station-card .sl-dep-status .bad{
  background:var(--bad-bg)!important;
  color:var(--bad-text)!important;
  border-color:color-mix(in srgb,var(--bad-text) 34%,var(--hairline))!important;
}
.station-card .station-actions,
.station-card .station-footer,
.station-card .station-updated{
  background:var(--surface-muted)!important;
  border-color:var(--hairline)!important;
  color:var(--text-muted)!important;
}
.station-card .station-actions button:not(.primary){
  background:var(--surface)!important;
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-card .station-actions button:not(.primary):hover,
.station-card .station-actions button:not(.primary):focus-visible{
  background:var(--surface-hover)!important;
  color:var(--link)!important;
  border-color:color-mix(in srgb,var(--link) 44%,var(--hairline))!important;
}
.station-card .station-warnings,
.station-card .station-warnings-soft,
.station-card .station-alert-panel,
.station-card .station-alert{
  background:var(--warn-bg)!important;
  border-color:color-mix(in srgb,var(--warn-text) 42%,var(--hairline))!important;
  color:var(--warn-text)!important;
}
.station-card .station-alert p,
.station-card .station-warnings div{
  color:var(--text-soft)!important;
}
.station-card .muted{
  color:var(--text-muted)!important;
}
.station-card .line-stops-list li,
.station-card .line-stops-details summary{
  color:var(--text-soft)!important;
  border-color:var(--hairline)!important;
}
.station-card .line-stops-list li b,
.station-card .line-stops-details summary b{
  color:var(--text)!important;
}
.station-card .line-stops-list li small,
.station-card .line-stops-details summary small{
  color:var(--text-muted)!important;
}
.station-card .line-stops-list li.current b,
.station-card .line-stops-list li.current small{
  color:var(--link)!important;
}
html[data-theme="dark"] .station-card{
  background:#0f1b2d!important;
  border-color:#2a3a52!important;
  box-shadow:0 24px 70px rgba(0,0,0,.48)!important;
  color-scheme:dark;
}
html[data-theme="dark"] .station-card .station-head,
html[data-theme="dark"] .station-card .station-head-image,
html[data-theme="dark"] .station-card .station-head-v39{
  background:linear-gradient(180deg,#111f33,#0f1b2d)!important;
  border-bottom-color:#2a3a52!important;
  color:#f8fbff!important;
}
html[data-theme="dark"] .station-card .station-body,
html[data-theme="dark"] .station-card .station-body-v39{
  background:linear-gradient(180deg,#0f1b2d,#0b1626)!important;
  color:#e5edf7!important;
}
html[data-theme="dark"] .station-card .station-title h2,
html[data-theme="dark"] .station-card .station-quick-grid strong,
html[data-theme="dark"] .station-card .sl-dep-main strong,
html[data-theme="dark"] .station-card .sl-dep-main span > b,
html[data-theme="dark"] .station-card .sl-dep-time strong,
html[data-theme="dark"] .station-card .event-time,
html[data-theme="dark"] .station-card .line-stops-list li b{
  color:#f8fbff!important;
}
html[data-theme="dark"] .station-card .station-title small,
html[data-theme="dark"] .station-card .station-quick-grid small,
html[data-theme="dark"] .station-card .station-label,
html[data-theme="dark"] .station-card .sl-dep-line small,
html[data-theme="dark"] .station-card .sl-dep-main span,
html[data-theme="dark"] .station-card .sl-dep-time .planned-time,
html[data-theme="dark"] .station-card .station-updated,
html[data-theme="dark"] .station-card .muted{
  color:#a9b7cc!important;
}
html[data-theme="dark"] .station-card .station-quick-grid,
html[data-theme="dark"] .station-card .station-actions,
html[data-theme="dark"] .station-card .station-footer,
html[data-theme="dark"] .station-card .station-updated{
  background:#0b1626!important;
  border-color:#2a3a52!important;
}
html[data-theme="dark"] .station-card .station-quick-grid > div,
html[data-theme="dark"] .station-card .station-block,
html[data-theme="dark"] .station-card .station-lines-block,
html[data-theme="dark"] .station-card .station-chain,
html[data-theme="dark"] .station-card .station-tab-body,
html[data-theme="dark"] .station-card .departure-list,
html[data-theme="dark"] .station-card .station-next-list,
html[data-theme="dark"] .station-card .line-stops-details,
html[data-theme="dark"] .station-card .station-empty,
html[data-theme="dark"] .station-card .line-stops-loading{
  background:#101d30!important;
  border-color:#2a3a52!important;
  color:#e5edf7!important;
}
html[data-theme="dark"] .station-card .sl-departure-row,
html[data-theme="dark"] .station-card .station-event-row{
  background:#0f1b2d!important;
  border-color:#26364d!important;
  color:#e5edf7!important;
}
html[data-theme="dark"] .station-card .sl-departure-row:nth-child(even),
html[data-theme="dark"] .station-card .station-event-row:nth-child(even){
  background:#111f33!important;
}
html[data-theme="dark"] .station-card .depart-tabs,
html[data-theme="dark"] .station-card .station-tabs,
html[data-theme="dark"] .station-card .station-event-row .time-source,
html[data-theme="dark"] .station-card .station-actions button:not(.primary),
html[data-theme="dark"] .station-card .station-close,
html[data-theme="dark"] .station-card .station-close.close{
  background:#17243a!important;
  border-color:#2a3a52!important;
  color:#dbeafe!important;
}
html[data-theme="dark"] .station-card .depart-tabs button,
html[data-theme="dark"] .station-card .station-tabs button{
  background:transparent!important;
  color:#cbd5e1!important;
}
html[data-theme="dark"] .station-card .depart-tabs button.active,
html[data-theme="dark"] .station-card .station-tabs button.active{
  background:#005EB8!important;
  color:#fff!important;
}
html[data-theme="dark"] .station-card .station-event-row .live-source{
  background:#0d1f36!important;
  color:#bfdbfe!important;
  border-color:#1d4ed8!important;
}
html[data-theme="dark"] .station-card .station-pin,
html[data-theme="dark"] .station-card .station-pin-v39{
  background:color-mix(in srgb,var(--station-color,var(--blue)) 20%,#0b1626)!important;
  border-color:color-mix(in srgb,var(--station-color,var(--blue)) 54%,#2a3a52)!important;
  color:var(--station-color,var(--blue))!important;
}

/* V88: verified next-stop state for live vehicles.
   When GTFS-RT says the vehicle is STOPPED_AT, the current station remains
   marked as "vid station" and the displayed next stop advances to the
   following stop instead of repeating the platform the vehicle has entered. */
.vehicle-next-verified{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  margin:10px 12px 0;
  padding:9px 10px;
  border:1px solid color-mix(in srgb,var(--green,#16a34a) 32%,var(--hairline));
  border-radius:12px;
  background:color-mix(in srgb,var(--green,#16a34a) 10%,var(--surface));
  color:var(--text);
}
.vehicle-next-verified span{
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--ok,#15803d);
}
.vehicle-next-verified strong{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--text)!important;
}
.vehicle-next-verified em{
  justify-self:end;
  font-style:normal;
  font-weight:900;
  color:var(--link);
  white-space:nowrap;
}
.line-stops-list li.next b,
.vehicle-popup-body .next-stops li.next b,
.line-stops-list li.next small,
.vehicle-popup-body .next-stops li.next small{
  color:var(--link)!important;
  font-weight:900;
}
.line-stops-list li.here small,
.vehicle-popup-body .next-stops li.here small{
  color:var(--ok,#15803d)!important;
  font-weight:900;
}
html[data-theme="dark"] .vehicle-next-verified{
  background:color-mix(in srgb,#22c55e 14%,#101d30)!important;
  border-color:color-mix(in srgb,#22c55e 36%,#2a3a52)!important;
  color:#f8fbff!important;
}
html[data-theme="dark"] .vehicle-next-verified span{
  color:#86efac!important;
}
html[data-theme="dark"] .vehicle-next-verified strong{
  color:#f8fbff!important;
}
html[data-theme="dark"] .vehicle-next-verified em{
  color:#bfdbfe!important;
}


/* === v120: Nattläge-banner i stationskortet === */
.night-mode-banner{
  display:flex;align-items:flex-start;gap:12px;
  padding:16px 14px;margin:8px 0;
  background:linear-gradient(135deg,#0f172a,#1e293b);
  color:#e2e8f0;border-radius:12px;
}
.night-mode-icon{font-size:22px;flex:0 0 auto;margin-top:1px;}
.night-mode-banner strong{display:block;font-size:14px;font-weight:800;margin-bottom:4px;}
.night-mode-banner span{display:block;font-size:13px;color:#94a3b8;}
.night-mode-banner span b{color:#e2e8f0;font-weight:800;}
html[data-theme="dark"] .night-mode-banner{
  background:linear-gradient(135deg,#07111f,#0f1b2d);
  border:1px solid #26364d;
}

/* v154: cleaner station popup hierarchy */
.station-card .station-head-clean{
  border-bottom:0!important;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.18);
}
.station-card .station-head-clean .station-title h2{
  letter-spacing:-.02em;
  line-height:1.08;
}
.station-card .station-head-clean .station-title small{
  display:block;
  margin-top:3px;
  max-width:270px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.station-card .station-board-hero-v89{
  border-radius:18px!important;
  padding:14px!important;
  border:1px solid color-mix(in srgb,var(--station-color,#005EB8) 22%,var(--hairline))!important;
}
.station-card .station-board-hero-v89 > div:first-child strong{
  font-size:28px!important;
  line-height:1!important;
}
.station-card .station-board-lines-v89{
  align-content:start;
}
.station-card .station-line-badge{
  appearance:none;
  border:0;
  cursor:pointer;
  min-height:26px;
  line-height:1;
}
.station-card .station-line-badge:hover,
.station-card .station-line-badge:focus-visible{
  transform:translateY(-1px);
  box-shadow:0 5px 14px rgba(15,23,42,.16);
  outline:2px solid color-mix(in srgb,var(--sl-line-color,#005EB8) 36%,transparent);
  outline-offset:2px;
}
.station-card .station-tabs{
  position:sticky;
  top:0;
  z-index:2;
  border-radius:14px!important;
  padding:4px!important;
  margin:10px 0!important;
}
.station-card .station-tabs button{
  border-radius:11px!important;
  padding:9px 10px!important;
}
.station-card .station-quick-grid,
.station-card .station-quick-grid-sl{
  border-radius:16px!important;
  padding:6px!important;
  gap:6px!important;
}
.station-card .station-actions{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px!important;
  border-radius:16px!important;
  padding:8px!important;
  margin-top:10px!important;
}
.station-card .station-actions .primary{
  grid-column:1/-1;
}
@media (max-width:700px){
  .station-card .station-head-clean .station-title small{max-width:calc(100vw - 120px);}
  .station-card .station-board-hero-v89 > div:first-child strong{font-size:25px!important;}
  .station-card .station-actions{grid-template-columns:1fr!important;}
}

/* SL Live v101 stylesheet module: 08-vehicle-popup-v91-v96.css. Split from legacy app.css; load order matters. */
/* V89: clearer vehicle state, SL-like station board, improved planner, cache/admin polish and mobile bottom sheets. */
.vehicle-stop-state-v89{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:10px;
  margin:10px 12px 0;
  padding:10px;
  border-radius:14px;
  border:1px solid color-mix(in srgb,var(--link) 28%,var(--hairline));
  background:linear-gradient(135deg,color-mix(in srgb,var(--link) 10%,var(--surface)),var(--surface));
  color:var(--text);
}
.vehicle-stop-state-v89 span{display:block;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.045em;color:var(--text-muted);margin-bottom:3px}.vehicle-stop-state-v89 strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)!important}.vehicle-stop-state-v89.at-stop{border-color:color-mix(in srgb,var(--green,#16a34a) 42%,var(--hairline));background:linear-gradient(135deg,color-mix(in srgb,var(--green,#16a34a) 12%,var(--surface)),var(--surface))}.vehicle-stop-state-v89.at-stop .vehicle-stop-state-main span{color:var(--good-text,#15803d)}.vehicle-stop-state-v89 .vehicle-stop-state-next strong{color:var(--link)!important}.vehicle-route-progress-v89{margin:8px 12px 2px;padding:0 2px}.vehicle-route-progress-track{height:7px;border-radius:999px;background:var(--surface-muted);border:1px solid var(--hairline);overflow:hidden}.vehicle-route-progress-track span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),color-mix(in srgb,var(--blue) 60%,var(--green,#16a34a)))}.vehicle-route-progress-labels{display:flex;justify-content:space-between;gap:8px;margin-top:5px}.vehicle-route-progress-labels small{min-width:0;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:11px}.vehicle-live-summary-v89{margin-top:10px}.vehicle-live-summary-v89 strong{font-size:16px}.station-body-v89 .station-live-strip{padding:10px 14px 8px}.station-board-hero-v89{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin:0;padding:14px;background:linear-gradient(135deg,color-mix(in srgb,var(--station-color,var(--blue)) 14%,var(--surface)),var(--surface-soft));border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.station-board-hero-v89 span{display:block;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.station-board-hero-v89 strong{display:block;font-size:32px;line-height:1;letter-spacing:-.04em;color:var(--text)!important}.station-board-hero-v89 small{display:block;margin-top:4px;color:var(--text-soft)}.station-board-lines-v89{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:190px}.station-quick-grid-v89{grid-template-columns:repeat(3,1fr)!important}.station-tabs-v89{display:grid;grid-template-columns:repeat(4,1fr);position:sticky;top:0;z-index:2}.station-tabs-v89 button{position:relative}.station-tabs-v89 button span{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:4px;padding:0 5px;border-radius:999px;background:var(--warn-bg);color:var(--warn-text);font-size:11px}.station-info-panel-v89{display:grid;gap:8px}.station-info-row-v89{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface)}.station-info-row-v89 span{color:var(--text-muted);font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.station-info-row-v89 strong{color:var(--text);text-align:right;overflow-wrap:anywhere}.station-info-row-v89.wide{display:grid}.journey-card-v89{border-left:0;border-top:5px solid var(--blue);overflow:hidden}.journey-kicker-v89{display:block;margin-bottom:4px;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.045em;color:var(--text-muted)}.journey-line-chip{font-weight:850;color:var(--text-soft);background:var(--surface-muted);border-color:var(--hairline)}.action-secondary,.journey-copy{font-weight:850;min-height:40px}.doctor-card{position:relative;overflow:hidden}.doctor-card::after{content:"";position:absolute;inset:auto 0 0 0;height:3px;background:var(--hairline)}.doctor-card.ok::after{background:var(--good-text,#15803d)}.doctor-card.warn::after{background:var(--warn-text,#b45309)}.doctor-card.bad::after{background:var(--bad-text,#b91c1c)}.cache-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.cache-summary span{border:1px solid var(--hairline);border-radius:12px;padding:10px 12px;background:var(--surface);color:var(--text-soft)}.smart-cache-table .cache-active .cache-state{background:var(--good-bg);color:var(--good-text);border-color:color-mix(in srgb,var(--good-text) 34%,var(--hairline))}.smart-cache-table .cache-expired .cache-state{background:var(--warn-bg);color:var(--warn-text);border-color:color-mix(in srgb,var(--warn-text) 34%,var(--hairline))}button,.primary,.icon-action,.chip,.pill,.status-filter-chip,.journey-copy,.station-actions button,.admin-actions button,.admin-section-head button{transition:background .14s ease,color .14s ease,border-color .14s ease,transform .14s ease,box-shadow .14s ease}button:focus-visible,.primary:focus-visible,.icon-action:focus-visible,.chip:focus-visible,.pill:focus-visible,.status-filter-chip:focus-visible,.journey-copy:focus-visible{outline:3px solid color-mix(in srgb,var(--link) 38%,transparent);outline-offset:2px}button:hover,.primary:hover,.icon-action:hover,.journey-copy:hover{transform:translateY(-1px)}.primary{box-shadow:0 8px 22px color-mix(in srgb,var(--blue) 18%,transparent)}html[data-theme="dark"] .vehicle-stop-state-v89{background:linear-gradient(135deg,#10223a,#0f1b2d);border-color:#2a4a72}html[data-theme="dark"] .vehicle-stop-state-v89.at-stop{background:linear-gradient(135deg,#102c28,#0f1b2d);border-color:#1d6b43}html[data-theme="dark"] .vehicle-stop-state-v89 span,html[data-theme="dark"] .vehicle-route-progress-labels small,html[data-theme="dark"] .station-board-hero-v89 span,html[data-theme="dark"] .journey-kicker-v89{color:#a9b7cc}html[data-theme="dark"] .station-board-hero-v89{background:linear-gradient(135deg,color-mix(in srgb,var(--station-color,var(--blue)) 16%,#101d30),#0f1b2d);border-color:#2a3a52}html[data-theme="dark"] .station-info-row-v89{background:#101d30;border-color:#2a3a52}.planner-options input[type="date"],.planner-options input[type="time"]{color-scheme:light dark}.planner-options input[type="date"]::-webkit-calendar-picker-indicator,.planner-options input[type="time"]::-webkit-calendar-picker-indicator{opacity:.72}
@media (max-width:700px){
  .station-card,.vehicle-card{top:auto!important;bottom:0!important;left:0!important;right:0!important;width:auto!important;max-width:none!important;height:var(--sheet-height,68vh)!important;max-height:min(76vh,calc(100dvh - 86px))!important;border-radius:24px 24px 0 0!important;transform:translateY(var(--sheet-y,0));transition:height .18s ease,transform .18s ease;touch-action:pan-y;padding-bottom:env(safe-area-inset-bottom)}
  .station-card.sheet-compact,.vehicle-card.sheet-compact{--sheet-height:44vh}.station-card.sheet-mid,.vehicle-card.sheet-mid{--sheet-height:68vh}.station-card.sheet-tall,.vehicle-card.sheet-tall{--sheet-height:76vh}.station-card::before,.vehicle-card::before{width:54px!important;height:5px!important;top:8px!important;background:color-mix(in srgb,var(--text-muted) 64%,transparent)!important}.station-head,.vehicle-head{position:sticky!important;top:0!important;z-index:5;cursor:grab}.station-body,.vehicle-body{height:calc(var(--sheet-height,68vh) - 70px)!important;max-height:none!important;overflow:auto!important;-webkit-overflow-scrolling:touch}.station-tabs-v89{top:0}.station-board-hero-v89{grid-template-columns:1fr}.station-board-lines-v89{justify-content:flex-start;max-width:none}.station-board-hero-v89 strong{font-size:28px}.vehicle-stop-state-v89{grid-template-columns:1fr}.station-quick-grid-v89{grid-template-columns:repeat(3,1fr)!important}.planner-main{grid-template-columns:1fr!important}.planner-options{grid-template-columns:1fr!important}.cache-summary{grid-template-columns:1fr}.journey-top{display:grid}.leg-item{grid-template-columns:1fr}.station-tabs-v89{font-size:13px}.station-tabs-v89 button{padding:10px 6px!important}
}

/* V96: the large exact-location verification card was removed from the vehicle UI. */

/* ── V91: Redesigned vehicle popup ─────────────────────────────────── */

/* Header */
.vehicle-head-v91 {
  padding: 12px 14px 14px;
  border-bottom: 0;
}
.vehicle-head-v91 .vehicle-title-row {
  gap: 10px;
  align-items: flex-start;
}
.v91-badge {
  font-size: 15px !important;
  font-weight: 950 !important;
  padding: 5px 10px !important;
  border-radius: 10px !important;
  min-width: 34px;
  text-align: center;
  flex-shrink: 0;
  letter-spacing: -.02em;
}
.v91-head-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.v91-head-text .vehicle-title {
  font-size: 15px;
  font-weight: 800;
  letter-spacing: -.01em;
  max-width: 100%;
}
.v91-head-sub {
  font-size: 12px;
  font-weight: 600;
  opacity: .75;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Body */
.vehicle-body-v91 {
  padding: 0;
}

/* Status strip */
.v91-strip {
  padding: 8px 14px;
  background: var(--surface-soft, #f8fafc);
  border-bottom: 1px solid var(--hairline, #e2e8f0);
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

/* Next stop hero */
.v91-next-hero {
  padding: 14px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-bottom: 1px solid var(--hairline, #e2e8f0);
  background: var(--surface, #fff);
}
.v91-next-hero-label {
  font-size: 11px;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: .055em;
  color: var(--text-muted, #64748b);
}
.v91-next-hero-stop {
  font-size: 21px;
  font-weight: 900;
  letter-spacing: -.025em;
  color: var(--text, #0f172a);
  line-height: 1.15;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.v91-next-hero-speed {
  margin-top: 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 850;
  color: var(--text-muted, #64748b);
  background: var(--surface-soft, #f1f5f9);
  border: 1px solid var(--hairline, #e2e8f0);
  border-radius: 999px;
  padding: 3px 9px;
  width: fit-content;
}
.v91-next-hero-speed::before {
  content: '↗';
  opacity: .7;
}

/* Route progress (keep existing style, just tweak margins) */
.vehicle-body-v91 .vehicle-route-progress-v89 {
  margin: 10px 14px 6px;
}

/* Stops section */
.v91-stops-section {
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  border-bottom: 1px solid var(--hairline, #e2e8f0) !important;
  background: var(--surface-soft, #f8fbff) !important;
  padding: 10px 14px 12px !important;
}
.v91-stops-section small {
  display: flex;
  gap: 6px;
  align-items: center;
  color: var(--text-muted, #475569);
  font-weight: 800;
  font-size: 12px;
  margin-bottom: 8px;
}
.v91-stops-icon {
  color: var(--link, #005EB8);
  font-weight: 900;
}
.v91-stops-section small em {
  margin-left: auto;
  font-style: normal;
  background: var(--surface, #fff);
  border: 1px solid var(--hairline, #e2e8f0);
  border-radius: 999px;
  padding: 1px 7px;
  font-size: 11px;
  color: var(--text-muted, #64748b);
}

/* Info grid */
.v91-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 12px 14px;
  background: var(--surface, #fff);
  border-bottom: 1px solid var(--hairline, #e2e8f0);
}
.v91-info-cell {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 9px 10px;
  border-radius: 12px;
  background: var(--surface-soft, #f8fafc);
  border: 1px solid var(--hairline, #e2e8f0);
  min-width: 0;
}
.v91-info-cell span {
  font-size: 10px;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted, #64748b);
}
.v91-info-cell strong {
  font-size: 13px;
  font-weight: 700;
  color: var(--text, #0f172a);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Actions */
.v91-actions {
  padding: 10px 14px;
  margin: 0 !important;
  background: var(--surface-soft, #f8fafc);
  border-top: 0;
  grid-template-columns: 1fr !important;
}
.v91-actions button {
  font-weight: 800;
  font-size: 14px;
  padding: 11px;
  border-radius: 12px;
  letter-spacing: -.01em;
}
.v91-error {
  margin: 10px 14px 0;
}

/* Dark mode overrides */
html[data-theme="dark"] .v91-strip {
  background: #101d30;
  border-color: #2a3a52;
}
html[data-theme="dark"] .v91-next-hero {
  background: #0f1b2d;
  border-color: #2a3a52;
}
html[data-theme="dark"] .v91-next-hero-label {
  color: #a9b7cc;
}
html[data-theme="dark"] .v91-next-hero-stop {
  color: #f0f6ff;
}
html[data-theme="dark"] .v91-next-hero-speed {
  background: #1a2d44;
  border-color: #2a3a52;
  color: #a9b7cc;
}
html[data-theme="dark"] .v91-stops-section {
  background: #101d30 !important;
  border-color: #2a3a52 !important;
}
html[data-theme="dark"] .v91-info-grid {
  background: #0f1b2d;
  border-color: #2a3a52;
}
html[data-theme="dark"] .v91-info-cell {
  background: #101d30;
  border-color: #2a3a52;
}
html[data-theme="dark"] .v91-info-cell span {
  color: #a9b7cc;
}
html[data-theme="dark"] .v91-info-cell strong {
  color: #e8f0fa;
}
html[data-theme="dark"] .v91-actions {
  background: #101d30;
}

/* Mobile: stack info cells to single column at very narrow */
@media (max-width: 360px) {
  .v91-info-grid { grid-template-columns: 1fr; }
}

/* ── V91 timetable additions ─────────────────────────────────────────── */

/* Next stop hero: row layout with name left, ETA right */
.v91-next-hero {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: space-between;
}
.v91-next-hero-main {
  min-width: 0;
  flex: 1 1 0;
}
.v91-plan {
  display: inline-block;
  margin-top: 3px;
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted, #64748b);
  text-decoration: line-through;
  opacity: .8;
}

/* ETA badge: large time on right side of hero */
.v91-next-hero-eta {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  padding: 7px 11px;
  border-radius: 12px;
  background: var(--surface-soft, #f1f5f9);
  border: 1px solid var(--hairline, #e2e8f0);
  text-align: right;
  min-width: 54px;
}
.v91-next-hero-eta:not([class*="warn"]):not([class*="ok"]) {
  /* neutral — already has bg */
}
.v91-next-hero-eta.warn-text {
  background: #fff7ed;
  border-color: #fed7aa;
  color: #b45309;
}
.v91-next-hero-eta.ok {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #15803d;
}
/* The main ETA number/label */
.v91-next-hero-eta {
  font-size: 18px;
  font-weight: 950;
  letter-spacing: -.03em;
  color: var(--text, #0f172a);
  line-height: 1;
}
/* The actual clock time shown under ETA count */
.v91-next-hero-eta small {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted, #64748b);
  letter-spacing: 0;
}

/* Passed stop row */
.v91-passed-stop {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--surface-soft, #f8fafc);
  border-top: 1px solid var(--hairline, #e2e8f0);
  border-bottom: 1px solid var(--hairline, #e2e8f0);
}
.v91-passed-label {
  font-size: 10px;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: .055em;
  color: var(--text-muted, #94a3b8);
  flex-shrink: 0;
}
.v91-passed-name {
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-soft, #475569);
}
.v91-passed-time {
  font-size: 12px;
  font-weight: 800;
  color: var(--text-muted, #64748b);
  background: var(--surface, #fff);
  border: 1px solid var(--hairline, #e2e8f0);
  border-radius: 8px;
  padding: 2px 7px;
  flex-shrink: 0;
}

/* Dark mode */
html[data-theme="dark"] .v91-next-hero-eta {
  background: #1a2d44;
  border-color: #2a3a52;
  color: #e8f0fa;
}
html[data-theme="dark"] .v91-next-hero-eta small {
  color: #a9b7cc;
}
html[data-theme="dark"] .v91-next-hero-eta.warn-text {
  background: #2a1b0d;
  border-color: #78350f;
  color: #fdba74;
}
html[data-theme="dark"] .v91-next-hero-eta.ok {
  background: #102c28;
  border-color: #1d6b43;
  color: #86efac;
}
html[data-theme="dark"] .v91-passed-stop {
  background: #101d30;
  border-color: #2a3a52;
}
html[data-theme="dark"] .v91-passed-name {
  color: #a9b7cc;
}
html[data-theme="dark"] .v91-passed-time {
  background: #0f1b2d;
  border-color: #2a3a52;
  color: #7a90a8;
}

/* ── V92 timetable additions ─────────────────────────────────────────── */
.v91-passed-ago {
  font-style: normal;
  font-size: 12px;
  font-weight: 800;
  color: var(--text-muted, #64748b);
  background: var(--surface, #fff);
  border: 1px solid var(--hairline, #e2e8f0);
  border-radius: 8px;
  padding: 2px 7px;
  flex-shrink: 0;
}
html[data-theme="dark"] .v91-passed-ago {
  background: #0f1b2d;
  border-color: #2a3a52;
  color: #7a90a8;
}

/* ── V94: next-stop verification badges ─────────────────────────────── */

/* Row that holds badge + distance, sits below the stop name */
.v94-verify-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 5px;
  flex-wrap: wrap;
}

/* Base badge pill */
.v94-vbadge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .02em;
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid transparent;
  line-height: 1;
}

/* Green — verified at stop or on route */
.v94-vbadge-ok {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #15803d;
}

/* Neutral — near stop, no full confirmation */
.v94-vbadge-neutral {
  background: var(--surface-soft, #f1f5f9);
  border-color: var(--hairline, #e2e8f0);
  color: var(--text-muted, #64748b);
}

/* Amber — off route or degraded confidence */
.v94-vbadge-warn {
  background: #fff7ed;
  border-color: #fed7aa;
  color: #b45309;
}

/* Distance label ("340 m kvar") */
.v94-vdist {
  font-size: 11px;
  font-weight: 800;
  color: var(--text-muted, #64748b);
  white-space: nowrap;
}

/* Distance on the passed-stop row */
.v91-passed-stop .v94-passed-dist {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted, #94a3b8);
}

/* Dark mode */
html[data-theme="dark"] .v94-vbadge-ok {
  background: #102c28;
  border-color: #1d6b43;
  color: #86efac;
}
html[data-theme="dark"] .v94-vbadge-neutral {
  background: #1a2d44;
  border-color: #2a3a52;
  color: #a9b7cc;
}
html[data-theme="dark"] .v94-vbadge-warn {
  background: #2a1b0d;
  border-color: #78350f;
  color: #fdba74;
}
html[data-theme="dark"] .v94-vdist {
  color: #7a90a8;
}

/* v152: Station popup shows only departures, arrivals and disruptions */
.station-quick-grid-v89{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.station-tabs-v89{grid-template-columns:repeat(3,minmax(0,1fr))}
.stop-accessibility-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;margin-left:6px;padding:2px 6px;border-radius:999px;border:1px solid var(--hairline,#dbe4ee);background:var(--surface-muted,#f1f5f9);color:var(--text-muted,#64748b);font-size:11px;font-weight:950;line-height:1;vertical-align:middle;white-space:nowrap}
.stop-accessibility-badge.accessible{background:var(--good-bg,#f0fdf4);border-color:color-mix(in srgb,var(--good-text,#15803d) 35%,var(--hairline,#dbe4ee));color:var(--good-text,#15803d)}
.stop-accessibility-badge.inaccessible{background:var(--bad-bg,#fef2f2);border-color:color-mix(in srgb,var(--bad-text,#b91c1c) 35%,var(--hairline,#dbe4ee));color:var(--bad-text,#b91c1c)}
.stop-accessibility-badge.partial,.stop-accessibility-badge.limited{background:var(--warn-bg,#fff7ed);border-color:color-mix(in srgb,var(--warn-text,#b45309) 35%,var(--hairline,#dbe4ee));color:var(--warn-text,#b45309)}
@media (max-width:900px){.station-tabs-v89{grid-template-columns:repeat(3,minmax(92px,1fr));overflow-x:auto;scrollbar-width:thin}.station-tabs-v89 button{white-space:nowrap}.station-quick-grid-v89{grid-template-columns:repeat(3,minmax(0,1fr))!important}}

/* V164: verified SL color contrast for text/background pairs.
   Use dark text on light SL greens/yellows/cyan, and keep white on dark SL red/blue/magenta. */
:root{
  --sl-text-on-green:#111827;
  --sl-text-on-yellow:#111827;
  --sl-text-on-cyan:#111827;
}
.chip.metro-green.active{background:#009639!important;color:var(--sl-text-on-green)!important;border-color:#009639!important}
.chip.tram.active{background:#F6A800!important;color:var(--sl-text-on-yellow)!important;border-color:#F6A800!important}
.chip.ship.active{background:#00A3E0!important;color:var(--sl-text-on-cyan)!important;border-color:#00A3E0!important}
.chip.metro-red.active{background:#D52B1E!important;color:#fff!important;border-color:#D52B1E!important}
.chip.metro-blue.active{background:#0072CE!important;color:#fff!important;border-color:#0072CE!important}
.chip.train.active{background:#D0007E!important;color:#fff!important;border-color:#D0007E!important}
.chip.bus.active{background:#E30613!important;color:#fff!important;border-color:#E30613!important}
.chip.metro-green.active span,.chip.tram.active span,.chip.ship.active span{background:rgba(17,24,39,.16)!important;color:inherit!important}
.line-chip.tram,.station-line-badge.tram{color:var(--sl-line-text-color,var(--sl-text-on-yellow))!important}
.line-chip.ship,.station-line-badge.ship{color:var(--sl-line-text-color,var(--sl-text-on-cyan))!important}
.line-chip.metro-green,.station-line-badge.metro-green{color:var(--sl-line-text-color,var(--sl-text-on-green))!important}
.vehicle-marker.tram,.vehicle-marker.ship,.vehicle-marker.metro-green{color:var(--sl-line-text-color,#111827)!important}
.vehicle-head.tram,.vehicle-head.ship,.vehicle-head.metro-green{color:var(--sl-line-text-color,#111827)!important}
html[data-theme="dark"] .chip.metro-green.active,html[data-theme="dark"] .chip.tram.active,html[data-theme="dark"] .chip.ship.active{color:#111827!important}


