/* ================================================================
   E-DIAGNOSTYKA Ă˘â‚¬â€ť Global Design System
   Fonts: Rajdhani (display), Inter (body), JetBrains Mono (code)
================================================================ */

/* Etap 5: bez zewnĂ„â„˘trznego Google Fonts. UÄąÄ˝ywamy lokalnych/systemowych fontÄ‚Ĺ‚w z fallbackÄ‚Ĺ‚w CSS. */

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ CSS Variables Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
:root {
  /* Backgrounds */
  --bg-base:        #080D14;
  --bg-surface:     #0D1520;
  --bg-card:        #111C2D;
  --bg-card-hover:  #162235;
  --bg-input:       #0A1219;

  /* Borders */
  --border:         rgba(30, 80, 140, 0.35);
  --border-bright:  rgba(30, 100, 200, 0.60);
  --border-focus:   rgba(29, 111, 232, 0.70);

  /* Brand colours */
  --blue:           #1D6FE8;
  --blue-bright:    #3B8EFF;
  --blue-dim:       #0E3C7A;
  --cyan:           #00C2CC;
  --cyan-dim:       #00686E;

  /* Text */
  --text-primary:   #E8F0FF;
  --text-secondary: #7A9ABF;
  --text-muted:     #3D5A7A;

  /* Semantic */
  --green:          #22C55E;
  --green-bg:       rgba(34, 197,  94, 0.10);
  --green-border:   rgba(34, 197,  94, 0.25);
  --yellow:         #F59E0B;
  --yellow-bg:      rgba(245, 158, 11, 0.12);
  --yellow-border:  rgba(245, 158, 11, 0.25);
  --red:            #EF4444;
  --red-bg:         rgba(239,  68, 68, 0.10);
  --red-border:     rgba(239,  68, 68, 0.25);
  --gray-bg:        rgba(61,  90, 122, 0.18);
  --gray-border:    rgba(61,  90, 122, 0.30);

  /* Typography */
  --font-display:   'Rajdhani', sans-serif;
  --font-body:      'Inter', sans-serif;
  --font-mono:      'JetBrains Mono', monospace;

  /* Radii */
  --r:              6px;
  --r-lg:           10px;
  --r-xl:           14px;

  /* Effects */
  --glow-blue:      0 0 22px rgba(29, 111, 232, 0.28);
  --glow-cyan:      0 0 16px rgba(0,  194, 204, 0.22);

  /* Sidebar width */
  --sidebar-w:      232px;
  --topbar-h:       56px;
}

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Reset Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 14px; scroll-behavior: smooth; }
body {
  background: var(--bg-base);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.5;
  min-height: 100vh;
  overflow-x: hidden;
}
a { color: var(--blue-bright); text-decoration: none; }
a:hover { color: var(--cyan); }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; }
img { display: block; max-width: 100%; }
ul, ol { list-style: none; }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Scrollbar Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--bg-base); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--border-bright); }

/* ================================================================
   LAYOUT
================================================================ */

.app-shell {
  display: grid;
  grid-template-columns: var(--sidebar-w) 1fr;
  grid-template-rows: var(--topbar-h) 1fr;
  grid-template-areas:
    "sidebar topbar"
    "sidebar main";
  min-height: 100vh;
}

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Topbar Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.topbar {
  grid-area: topbar;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 24px;
  position: sticky;
  top: 0;
  z-index: 50;
}

.topbar__title { flex: 1; }
.topbar__title h1 {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1;
}
.topbar__title p {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 2px;
}

.topbar__status {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 5px 12px;
  border-radius: 20px;
  background: var(--green-bg);
  border: 1px solid var(--green-border);
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--green);
}
.status-pulse {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 8px var(--green);
  animation: pulse 2.2s ease-in-out infinite;
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }

.topbar__btn {
  position: relative;
  width: 36px;
  height: 36px;
  border-radius: var(--r);
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 17px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color .15s, border-color .15s, background .15s;
}
.topbar__btn:hover {
  color: var(--text-primary);
  border-color: var(--border-bright);
  background: rgba(29, 111, 232, 0.08);
}
.topbar__badge {
  position: absolute;
  top: -5px;
  right: -5px;
  background: var(--red);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  font-family: var(--font-display);
  padding: 1px 5px;
  border-radius: 8px;
  line-height: 1.4;
}

.topbar__user {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 5px 10px;
  border: 1px solid var(--border);
  border-radius: var(--r);
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.topbar__user:hover { border-color: var(--border-bright); background: rgba(29,111,232,0.06); }
.topbar__user-info { line-height: 1.25; }
.topbar__user-name { font-size: 13px; font-weight: 500; }
.topbar__user-role { font-size: 11px; color: var(--text-muted); }
.topbar__chevron { font-size: 11px; color: var(--text-muted); margin-left: 2px; }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Avatar Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}
.avatar--lg { width: 42px; height: 42px; font-size: 15px; }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Sidebar Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.sidebar {
  grid-area: sidebar;
  background: var(--bg-surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.sidebar__logo {
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.logo-mark {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1;
}
.logo-mark .accent   { color: var(--blue); }
.logo-mark .accent2  { color: var(--cyan); }
.logo-sub {
  font-family: var(--font-display);
  font-size: 8.5px;
  font-weight: 600;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 3px;
}

.sidebar__nav { flex: 1; padding: 10px 12px; }

.nav-section {
  font-family: var(--font-display);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--text-muted);
  padding: 14px 10px 5px;
}
.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: var(--r);
  color: var(--text-secondary);
  font-size: 13.5px;
  cursor: pointer;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
  border-left: 2px solid transparent;
  position: relative;
}
.nav-item:hover { background: rgba(29,111,232,0.08); color: var(--text-primary); }
.nav-item.active {
  background: rgba(29,111,232,0.15);
  color: var(--blue-bright);
  border-left-color: var(--blue);
}
.nav-item__icon { font-size: 16px; flex-shrink: 0; opacity: 0.85; }
.nav-item__badge {
  margin-left: auto;
  background: var(--red);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  font-family: var(--font-display);
  padding: 1px 6px;
  border-radius: 9px;
}
.nav-item__badge--yellow { background: var(--yellow); color: #000; }

.sidebar__footer {
  padding: 14px 16px;
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.sidebar__system {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--green);
  margin-bottom: 3px;
}
.sidebar__version { font-size: 11px; color: var(--text-muted); }
.sidebar__train-img {
  width: 100%;
  height: 64px;
  margin-top: 10px;
  object-fit: cover;
  border-radius: var(--r);
  opacity: 0.5;
  filter: saturate(0.6) brightness(0.6);
}

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Main content Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.main-content {
  grid-area: main;
  padding: 28px 28px 48px;
  overflow-y: auto;
  min-height: 0;
}

.page-header { margin-bottom: 24px; }
.page-header h2 {
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1;
}
.page-header p { font-size: 13px; color: var(--text-muted); margin-top: 4px; }

.page-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.page-actions .spacer { flex: 1; }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Breadcrumb Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.breadcrumb a { color: var(--text-secondary); }
.breadcrumb a:hover { color: var(--text-primary); }
.breadcrumb__sep { font-size: 10px; }

/* ================================================================
   GRID UTILITIES
================================================================ */
.grid-2  { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.grid-3  { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.grid-4  { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.grid-5  { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.grid-auto { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.flex-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.stack    { display: flex; flex-direction: column; gap: 12px; }
.mb-16    { margin-bottom: 16px; }
.mb-24    { margin-bottom: 24px; }
.mb-32    { margin-bottom: 32px; }
.spacer   { flex: 1; }

/* ================================================================
   CARDS
================================================================ */
.card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 20px;
  position: relative;
  overflow: hidden;
}
.card--sm { padding: 14px 16px; }
.card--hover { transition: border-color .2s, background .2s; cursor: pointer; }
.card--hover:hover { border-color: var(--border-bright); background: var(--bg-card-hover); }
.card__title {
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.card__title a { font-size: 12px; color: var(--blue-bright); text-transform: none; letter-spacing: 0; font-weight: 400; font-family: var(--font-body); }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Stat card Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.stat-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 18px 20px;
  position: relative;
  overflow: hidden;
  transition: border-color .2s;
}
.stat-card::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  opacity: 0;
  transition: opacity .3s;
}
.stat-card:hover { border-color: var(--border-bright); }
.stat-card:hover::after { opacity: 1; }
.stat-card--blue::after  { background: linear-gradient(90deg, var(--blue), transparent); }
.stat-card--green::after { background: linear-gradient(90deg, var(--green), transparent); }
.stat-card--yellow::after{ background: linear-gradient(90deg, var(--yellow), transparent); }
.stat-card--red::after   { background: linear-gradient(90deg, var(--red), transparent); }
.stat-card--cyan::after  { background: linear-gradient(90deg, var(--cyan), transparent); }

.stat-card__head {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  margin-bottom: 12px;
}
.stat-card__icon {
  width: 38px;
  height: 38px;
  border-radius: var(--r);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
  flex-shrink: 0;
}
.stat-card__icon--blue   { background: rgba(29,111,232,.15); border: 1px solid rgba(29,111,232,.25); }
.stat-card__icon--green  { background: var(--green-bg);      border: 1px solid var(--green-border); }
.stat-card__icon--yellow { background: var(--yellow-bg);     border: 1px solid var(--yellow-border); }
.stat-card__icon--red    { background: var(--red-bg);        border: 1px solid var(--red-border); }
.stat-card__icon--cyan   { background: rgba(0,194,204,.10);  border: 1px solid rgba(0,194,204,.22); }

/* WspĂłlny blok tekstowy KPI â€” ta sama linia wartoĹ›ci i podpisu we wszystkich kartach */
.stat-card__meta{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  min-width:0;
  flex:1 1 auto;
}
.stat-card__meta > .stat-card__value{
  margin:0;
  min-height:32px;
  line-height:32px;
  display:block;
}
.stat-card__meta > .stat-card__label{
  margin:0;
  min-height:18px;
  line-height:18px;
  display:flex;
  align-items:baseline;
  gap:4px;
  overflow:hidden;
}
.stat-card__meta > .stat-card__label .stat-card__sub{
  margin:0;
  margin-left:0;
  flex:0 0 auto;
  white-space:nowrap;
}

.stat-card__label {
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.stat-card__value {
  font-family: var(--font-display);
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1;
  color: var(--text-primary);
}
.stat-card__value--cyan  { color: var(--cyan); }
.stat-card__value--green { color: var(--green); }
.stat-card__sub {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 1px;
}
.stat-card__delta {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 11px;
  font-weight: 500;
  margin-top: 8px;
}
.delta-up   { color: var(--green); }
.delta-down { color: var(--red); }

/* ================================================================
   SECTION DIVIDER
================================================================ */
.section-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border), transparent);
  margin: 28px 0;
}
.section-label {
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cyan);
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}
.section-label::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, var(--border-bright), transparent);
}

/* ================================================================
   BUTTONS
================================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  border: none;
  border-radius: var(--r);
  cursor: pointer;
  padding: 9px 18px;
  transition: all .18s;
  white-space: nowrap;
  text-decoration: none;
  line-height: 1;
}
.btn--primary {
  background: var(--blue);
  color: #fff;
  box-shadow: var(--glow-blue);
}
.btn--primary:hover { background: var(--blue-bright); transform: translateY(-1px); box-shadow: 0 0 30px rgba(59,142,255,0.45); }
.btn--primary:active { transform: translateY(0); }

.btn--secondary {
  background: transparent;
  color: var(--text-primary);
  border: 1px solid var(--border-bright);
}
.btn--secondary:hover { background: rgba(29,111,232,0.10); border-color: var(--blue); }

.btn--ghost {
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--border);
}
.btn--ghost:hover { color: var(--text-primary); border-color: var(--border-bright); }

.btn--danger {
  background: var(--red-bg);
  color: var(--red);
  border: 1px solid var(--red-border);
}
.btn--danger:hover { background: rgba(239,68,68,0.20); }

.btn--sm { padding: 6px 13px; font-size: 11px; }
.btn--lg { padding: 12px 26px; font-size: 13px; }

.btn-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--r);
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 17px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .15s;
  flex-shrink: 0;
}
.btn-icon:hover { color: var(--blue-bright); border-color: var(--blue); background: rgba(29,111,232,0.08); }

/* ================================================================
   BADGES & STATUS
================================================================ */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: 4px;
  white-space: nowrap;
}
.badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
.badge--ok      { background: var(--green-bg);  color: var(--green);  border: 1px solid var(--green-border); }
.badge--warn    { background: var(--yellow-bg); color: var(--yellow); border: 1px solid var(--yellow-border); }
.badge--danger  { background: var(--red-bg);    color: var(--red);    border: 1px solid var(--red-border); }
.badge--info    { background: rgba(29,111,232,.12); color: var(--blue-bright); border: 1px solid rgba(29,111,232,.28); }
.badge--offline { background: var(--gray-bg);   color: var(--text-muted); border: 1px solid var(--gray-border); }

.priority {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: 4px;
}
.priority--critical { background: var(--red-bg);    color: var(--red);          border: 1px solid var(--red-border); }
.priority--high     { background: var(--yellow-bg); color: var(--yellow);       border: 1px solid var(--yellow-border); }
.priority--medium   { background: rgba(29,111,232,.12); color: var(--blue-bright); border: 1px solid rgba(29,111,232,.25); }
.priority--info     { background: rgba(0,194,204,.10);  color: var(--cyan);      border: 1px solid rgba(0,194,204,.22); }

/* ================================================================
   FORM ELEMENTS
================================================================ */
.form-group { display: flex; flex-direction: column; gap: 6px; }
.form-label {
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.input {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--r);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: 13.5px;
  padding: 9px 12px;
  width: 100%;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.input::placeholder { color: var(--text-muted); }
.input:hover  { border-color: var(--border-bright); }
.input:focus  { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(29,111,232,0.16); }
select.input  { appearance: none; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%233D5A7A' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 34px; }

.input-wrap { position: relative; }
.input-icon {
  position: absolute;
  left: 11px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-muted);
  font-size: 15px;
  pointer-events: none;
}
.input.has-icon { padding-left: 36px; }

.checkbox-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 13px;
  color: var(--text-secondary);
}
.checkbox-wrap input[type="checkbox"] { accent-color: var(--blue); width: 14px; height: 14px; cursor: pointer; }

/* ================================================================
   TABLES
================================================================ */
.table-wrap { overflow-x: auto; border-radius: var(--r-lg); }
.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.table thead tr { border-bottom: 1px solid var(--border); }
.table th {
  font-family: var(--font-display);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--text-muted);
  padding: 10px 16px;
  text-align: left;
  white-space: nowrap;
}
.table td {
  padding: 12px 16px;
  color: var(--text-secondary);
  border-bottom: 1px solid rgba(30,80,140,0.14);
  vertical-align: middle;
}
.table tr:last-child td { border-bottom: 0; }
.table tr:hover td { background: rgba(29,111,232,0.04); }
.table td.primary { color: var(--text-primary); font-weight: 500; }
.table td.mono { font-family: var(--font-mono); font-size: 11.5px; color: var(--cyan); }

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Pagination Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
.pagination {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 16px 20px;
  border-top: 1px solid var(--border);
  font-size: 13px;
  color: var(--text-secondary);
}
.pagination .spacer { flex: 1; }
.pagination__info { font-size: 12px; color: var(--text-muted); }
.page-btn {
  width: 32px;
  height: 32px;
  border-radius: var(--r);
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .15s;
  font-family: var(--font-body);
}
.page-btn:hover { border-color: var(--border-bright); color: var(--text-primary); }
.page-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }

/* ================================================================
   NOTIFICATIONS / ALERTS
================================================================ */
.alert {
  display: flex;
  gap: 12px;
  padding: 13px 16px;
  border-radius: var(--r);
  border-left: 3px solid;
  font-size: 13px;
}
.alert__icon { font-size: 17px; flex-shrink: 0; margin-top: 1px; }
.alert__title { font-weight: 500; margin-bottom: 2px; }
.alert__msg { color: var(--text-secondary); font-size: 12px; }
.alert--danger  { background: var(--red-bg);    border-color: var(--red);    color: var(--red); }
.alert--warn    { background: var(--yellow-bg); border-color: var(--yellow); color: var(--yellow); }
.alert--ok      { background: var(--green-bg);  border-color: var(--green);  color: var(--green); }
.alert--info    { background: rgba(29,111,232,.10); border-color: var(--blue); color: var(--blue-bright); }
.alert .alert__body { color: var(--text-secondary); }

/* ================================================================
   PROGRESS BARS
================================================================ */
.progress-track {
  height: 4px;
  background: rgba(30,80,140,0.28);
  border-radius: 2px;
  overflow: hidden;
}
.progress-fill {
  height: 100%;
  border-radius: 2px;
  transition: width .7s cubic-bezier(.4,0,.2,1);
}
.progress-fill--blue   { background: linear-gradient(90deg, var(--blue), var(--cyan)); }
.progress-fill--green  { background: linear-gradient(90deg, var(--green), #4ADE80); }
.progress-fill--yellow { background: linear-gradient(90deg, var(--yellow), #FCD34D); }
.progress-fill--red    { background: linear-gradient(90deg, var(--red), #F87171); }

/* ================================================================
   SPARKLINE / MINI CHART
================================================================ */
.spark {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 32px;
}
.spark__bar {
  flex: 1;
  border-radius: 2px 2px 0 0;
  background: rgba(29,111,232,.25);
  transition: background .2s;
  min-height: 3px;
}
.spark__bar:hover { background: var(--blue); }
.spark__bar--hi   { background: var(--blue); }

/* ================================================================
   EVENTS / TIMELINE
================================================================ */
.event-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 0;
  border-bottom: 1px solid rgba(30,80,140,0.12);
  cursor: pointer;
  transition: background .15s;
  border-radius: var(--r);
  padding-left: 8px;
  margin: 0 -8px;
}
.event-item:hover { background: rgba(29,111,232,0.05); }
.event-item:last-child { border-bottom: 0; }
.event-icon {
  width: 32px;
  height: 32px;
  border-radius: var(--r);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}
.event-icon--danger  { background: var(--red-bg);    border: 1px solid var(--red-border); }
.event-icon--warn    { background: var(--yellow-bg); border: 1px solid var(--yellow-border); }
.event-icon--ok      { background: var(--green-bg);  border: 1px solid var(--green-border); }
.event-icon--info    { background: rgba(29,111,232,.12); border: 1px solid rgba(29,111,232,.25); }
.event-content { flex: 1; min-width: 0; }
.event-title { font-size: 13px; font-weight: 500; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.event-sub   { font-size: 11.5px; color: var(--text-muted); margin-top: 1px; }
.event-meta  { text-align: right; flex-shrink: 0; }
.event-time  { font-size: 12px; color: var(--text-secondary); font-family: var(--font-mono); }
.event-loc   { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* ================================================================
   DONUT / PIE LEGEND
================================================================ */
.donut-wrap { display: flex; align-items: center; gap: 20px; }
.donut-legend { display: flex; flex-direction: column; gap: 9px; flex: 1; }
.donut-legend-item { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-secondary); }
.legend-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.legend-val { margin-left: auto; font-family: var(--font-display); font-weight: 600; color: var(--text-primary); font-size: 13px; }

/* ================================================================
   TABS
================================================================ */
.tabs {
  display: flex;
  gap: 2px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 20px;
}
.tab-list {
  display: flex;
  gap: 2px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
}
.tab-btn {
  padding: 10px 18px;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--text-muted);
  border: none;
  background: transparent;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color .15s, border-color .15s, background-color .15s;
}
.tab-btn:hover { color: var(--text-primary); }
.tab-btn:focus-visible {
  outline: 2px solid var(--blue-bright);
  outline-offset: 2px;
  color: var(--text-primary);
}
.tab-btn.active,
.tab-btn[aria-selected="true"] {
  color: var(--blue-bright);
  border-bottom-color: var(--blue);
  background: rgba(30, 144, 255, 0.06);
}
.tab-btn .tab-count {
  background: var(--red);
  color: #fff;
  font-size: 9px;
  padding: 1px 5px;
  border-radius: 8px;
  margin-left: 5px;
}
.tab-panel {
  min-width: 0;
}
.tab-panel[hidden] {
  display: none !important;
}

/* ================================================================
   DETAIL PANEL (right drawer)
================================================================ */
.detail-panel {
  background: var(--bg-card);
  border-left: 1px solid var(--border);
  width: 340px;
  flex-shrink: 0;
  overflow-y: auto;
}
.detail-panel__header {
  padding: 18px 20px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.detail-panel__close {
  margin-left: auto;
  width: 28px;
  height: 28px;
  border-radius: var(--r);
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 15px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: all .15s;
}
.detail-panel__close:hover { border-color: var(--red-border); color: var(--red); }
.detail-panel__body { padding: 18px 20px; }
.detail-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(30,80,140,0.10);
  font-size: 12.5px;
}
.detail-row:last-child { border-bottom: 0; }
.detail-key { color: var(--text-muted); flex-shrink: 0; }
.detail-val { color: var(--text-primary); font-weight: 500; text-align: right; }

/* ================================================================
   HEADER FILTER BAR
================================================================ */
.filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.filter-bar .input { width: auto; min-width: 220px; flex: 1; }
.filter-bar .input-wrap { flex: 1; min-width: 220px; }

/* ================================================================
   LOGIN PAGE
================================================================ */
.login-page {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1fr 480px 1fr;
  align-items: center;
  justify-items: center;
  padding: 40px 20px;
  background: radial-gradient(ellipse 80% 60% at 20% 40%, rgba(14,60,122,0.35) 0%, transparent 60%),
              radial-gradient(ellipse 50% 40% at 80% 70%, rgba(0,104,110,0.20) 0%, transparent 55%),
              var(--bg-base);
}
.login-card {
  grid-column: 2;
  background: var(--bg-card);
  border: 1px solid var(--border-bright);
  border-radius: var(--r-xl);
  padding: 40px 36px;
  width: 100%;
  box-shadow: 0 32px 72px rgba(0,0,0,0.65), 0 0 0 1px rgba(29,111,232,0.10);
}
.login-brand { text-align: center; margin-bottom: 32px; }
.login-brand .logo-mark { font-size: 28px; }
.login-brand .logo-sub  { font-size: 9px; margin-top: 4px; letter-spacing: 0.24em; }
.login-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border-bright), transparent);
  margin: 14px 0 0;
}

/* ================================================================
   CIRCUIT DECORATION
================================================================ */
.circuit-accent {
  position: absolute;
  pointer-events: none;
  opacity: 0.06;
  z-index: 0;
}

/* ================================================================
   CODE / MONO
================================================================ */
.mono {
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--cyan);
  background: rgba(0,194,204,0.08);
  padding: 2px 6px;
  border-radius: 3px;
}

/* ================================================================
   RESPONSIVE Ă˘â‚¬â€ť collapse sidebar on narrow
================================================================ */
@media (max-width: 900px) {
  .app-shell {
    grid-template-columns: 1fr;
    grid-template-areas: "topbar" "main";
  }
  .sidebar { display: none; }
}

/* ================================================================
   E-DIAGNOSTYKA Ă˘â‚¬â€ť Unified shell + homepage dashboard fix
   WspÄ‚Ĺ‚lny pasek gÄ‚Ĺ‚rny i menu boczne dla wszystkich podstron.
================================================================ */
:root{
  --sidebar-w: 292px;
  --topbar-h: 80px;
  --bg-base:#020915;
  --bg-surface:#06111f;
  --bg-card:#0b1728;
  --bg-card-hover:#10233a;
  --border:rgba(72,113,157,.24);
  --border-bright:rgba(59,142,255,.48);
  --text-primary:#eef6ff;
  --text-secondary:#c3d3e7;
  --text-muted:#879bb3;
  --blue:#1688ff;
  --blue-bright:#27a8ff;
  --cyan:#2ee9ff;
  --green:#33d45d;
  --yellow:#ffba24;
  --red:#ff4b47;
  --purple:#b25cff;
  --panel-shadow:0 20px 70px rgba(0,0,0,.28);
  --r:10px;
  --r-lg:14px;
  --r-xl:18px;
}
html{font-size:14px}
body{
  background:
    radial-gradient(circle at 72% -18%,rgba(19,84,142,.22),transparent 38%),
    radial-gradient(circle at 20% 12%,rgba(13,63,116,.28),transparent 32%),
    linear-gradient(135deg,#020814,#05101d 48%,#020813);
}
.app-shell{
  grid-template-columns:var(--sidebar-w) 1fr;
  grid-template-rows:var(--topbar-h) 1fr;
  background:transparent;
}
.sidebar{
  background:linear-gradient(180deg,rgba(5,14,25,.98),rgba(3,10,18,.98));
  border-right:1px solid rgba(77,126,175,.22);
  box-shadow:18px 0 45px rgba(0,0,0,.22);
  scrollbar-width:thin;
}
.sidebar__logo{
  min-height:94px;
  padding:24px 20px 18px 26px;
  border-bottom:1px solid rgba(77,126,175,.2);
}
.logo-lockup{display:flex;align-items:center;gap:11px}
.logo-jk{
  font-family:Inter,system-ui,sans-serif;
  font-size:36px;
  line-height:1;
  font-weight:900;
  font-style:italic;
  letter-spacing:-.08em;
  color:#fff;
  filter:drop-shadow(0 0 10px rgba(39,168,255,.18));
}
.logo-word{font-family:Inter,system-ui,sans-serif;font-size:21px;font-weight:900;letter-spacing:.04em;line-height:1;color:#fff}
.logo-word b{color:var(--blue-bright);font-weight:900}
.logo-sub{font-family:Inter,system-ui,sans-serif;font-size:8px;font-weight:900;letter-spacing:.16em;color:#fff;text-transform:uppercase;margin-top:8px;opacity:.9}
.sidebar__nav{padding:14px 18px 10px;display:flex;flex-direction:column;gap:8px}
.nav-section{display:none}
.nav-item{
  min-height:49px;
  gap:16px;
  padding:12px 17px;
  border-radius:10px;
  border-left:0;
  color:#dce8f6;
  font-size:16px;
  background:transparent;
  position:relative;
}
.nav-item::before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:5px;background:transparent;box-shadow:none}
.nav-item:hover{background:rgba(42,119,197,.14);color:#fff}
.nav-item.active{
  color:#fff;
  background:linear-gradient(90deg,rgba(0,132,255,.72),rgba(9,59,111,.68));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 10px 30px rgba(0,93,186,.22);
}
.nav-item.active::before{background:#24a8ff;box-shadow:0 0 14px rgba(36,168,255,.8)}
.nav-item__icon{width:28px;text-align:center;font-size:21px;opacity:1;color:#dce8f6}
.nav-item.active .nav-item__icon{color:#2fb2ff}
.nav-item__badge{margin-left:auto;background:#167fff;color:#fff;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:11px;padding:0}
.sidebar__footer{padding:20px 18px 22px;border-top:0;margin-top:auto}
.sidebar__system-card{
  border:1px solid rgba(79,131,186,.28);
  border-radius:12px;
  padding:12px 12px 10px;
  background:linear-gradient(180deg,rgba(11,29,49,.72),rgba(6,18,31,.68));
  min-height:0;
  overflow:hidden;
  position:relative;
}
.sidebar__system-card::after{display:none;}
.sidebar__system-title{display:block;font-weight:700;color:#fff;font-size:14px;position:relative;z-index:2;line-height:1.2}
.sidebar__system-sub{color:#c8d6e8;font-size:12px;margin:4px 0 0;position:relative;z-index:2;line-height:1.35}
.sidebar__train-card{display:none}
.sidebar__version{font-size:13px;color:#9eb0c4;line-height:1.8;margin-top:14px;padding-left:6px;position:relative;z-index:2}
.topbar{
  background:rgba(4,12,22,.82);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(77,126,175,.22);
  padding:0 28px;
  gap:18px;
}
.topbar__menu{width:36px;height:36px;border:0;background:transparent;color:#c7d8eb;font-size:24px;display:flex;align-items:center;justify-content:center;border-radius:8px}
.topbar__menu:hover{background:rgba(43,151,255,.12);color:#fff}
.topbar__title h1{font-family:Inter,system-ui,sans-serif;font-size:24px;font-weight:650;letter-spacing:-.03em;color:#fff;line-height:1.15}
.topbar__title p{font-size:14px;color:#8ea2b9;margin-top:5px}
.topbar__status{border-radius:8px;border:1px solid rgba(82,135,190,.38);background:rgba(7,18,32,.74);color:#fff;font-family:Inter,system-ui,sans-serif;font-size:14px;letter-spacing:0;text-transform:none;height:40px;padding:0 10px 0 14px;font-weight:500;flex-shrink:0;min-width:320px;contain:layout paint;transition:none!important;animation:none!important}
.topbar__status.session-expiring{border-color:rgba(245,158,11,.45);background:linear-gradient(180deg,rgba(35,24,7,.88),rgba(9,17,29,.88));box-shadow:0 0 0 1px rgba(245,158,11,.08),0 8px 26px rgba(245,158,11,.10)}
.topbar__status.session-expired{border-color:rgba(239,68,68,.50);background:linear-gradient(180deg,rgba(46,13,18,.88),rgba(9,17,29,.88));box-shadow:0 0 0 1px rgba(239,68,68,.10),0 8px 26px rgba(239,68,68,.12)}
.topbar__session{display:inline-flex;align-items:center;min-width:108px;font-family:var(--font-mono);font-size:12px;color:#d7e8fb;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.01em;transition:none!important;animation:none!important}
.topbar__extend-session[hidden]{display:none!important}
.topbar__extend-session{height:30px;min-width:124px;display:inline-flex;align-items:center;justify-content:center;gap:7px;margin-left:2px;padding:0 10px;border:1px solid rgba(63,146,255,.48);border-radius:8px;background:linear-gradient(180deg,rgba(38,132,255,.28),rgba(11,44,86,.92));color:#eef7ff;font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:650;letter-spacing:-.01em;line-height:1;white-space:nowrap;flex:0 0 auto;box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 8px 18px rgba(20,92,184,.20);transition:border-color .16s ease,background .16s ease,opacity .16s ease,transform .16s ease}
.topbar__extend-session strong{font:inherit;font-weight:800;color:#fff}
.topbar__extend-icon{font-size:12px;color:#9bd0ff}
.topbar__extend-session:hover:not(:disabled){transform:translateY(-1px);border-color:rgba(89,171,255,.72);background:linear-gradient(180deg,rgba(51,148,255,.38),rgba(13,54,104,.98));box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 10px 24px rgba(20,92,184,.28)}
.topbar__extend-session:focus-visible{outline:2px solid rgba(126,200,255,.65);outline-offset:2px}
.topbar__extend-session:active:not(:disabled){transform:translateY(0)}
.topbar__extend-session:disabled{cursor:not-allowed;opacity:.55;transform:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 4px 12px rgba(20,92,184,.12)}
.topbar__extend-session.is-loading .topbar__extend-icon{animation:none!important}
@keyframes jk-extend-spin{to{transform:rotate(360deg)}}
.status-pulse{width:10px!important;height:10px!important;background:var(--green)!important;box-shadow:0 0 14px rgba(51,212,93,.75)!important;animation:none!important;opacity:1!important}
.topbar__btn{width:40px;height:40px;border:0;background:transparent;color:#d7e5f6;font-size:23px;border-radius:10px}
.topbar__btn:hover{background:rgba(42,119,197,.14);color:#fff;border:0}
.topbar__badge{background:#1d8fff;top:2px;right:1px;border:2px solid #06111f;height:18px;min-width:18px;border-radius:10px;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.topbar__divider{width:1px;height:34px;background:rgba(91,124,158,.25)}
.topbar__user{border:0;background:transparent;border-radius:12px;padding:0 4px 0 0;gap:12px}
.topbar__user:hover{background:rgba(43,151,255,.08);border-color:transparent}
.avatar{width:42px;height:42px;background:#1c334f;color:#eaf4ff;font-size:17px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.topbar__user-name{font-size:15px;color:#fff;font-weight:600}
.topbar__user-role{font-size:12px;color:#9fb0c3}
.topbar__chevron{font-size:18px;color:#c0d2e5;margin-left:18px}
.main-content{padding:22px 20px 42px 20px;background:linear-gradient(180deg,rgba(2,9,19,.03),rgba(3,10,18,.2));}
.page-header{display:none}.page-actions{margin-bottom:18px}
.card,.stat-card{background:linear-gradient(150deg,rgba(13,29,49,.94),rgba(7,19,33,.94));border-color:rgba(77,126,175,.24);box-shadow:0 16px 48px rgba(0,0,0,.17)}
.stat-card{min-height:112px;border-radius:12px;padding:17px}
.stat-card__label{font-family:Inter,system-ui,sans-serif;font-size:12px;letter-spacing:.06em;color:#fff;font-weight:800}
.stat-card__value{font-family:Inter,system-ui,sans-serif;font-size:30px;font-weight:500}
.stat-card__sub{font-size:16px;color:#8295ab;display:inline-block;margin-left:3px}
.stat-card__icon{border-radius:9px;width:48px;height:48px;font-size:25px}
.filter-bar{background:rgba(9,23,39,.78);border:1px solid rgba(77,126,175,.22);border-radius:12px;padding:13px}
.input,select.input,textarea.input{background:#071523;border:1px solid rgba(80,130,180,.35);border-radius:9px;color:#eef6ff}
.table th{color:#9eb2c8}.table td{border-bottom-color:rgba(80,130,180,.14)}

/* â”€â”€ Home dashboard â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.home-dashboard{display:flex;flex-direction:column;gap:var(--panel-gap, 12px);max-width:1500px;margin:0 auto;container-type:inline-size;container-name:home-layout}
.home-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin:0 0 3px}
.home-select{height:38px;background:#071523;border:1px solid rgba(80,130,180,.35);border-radius:9px;color:#fff;padding:0 13px;min-width:150px}

/*
 * GLOBAL-KPI-A2 — oficjalny kontrakt KPI (źródło prawdy: ten plik)
 *
 * HTML:
 *   <div class="home-kpis [home-kpis--4|home-kpis--5|home-kpis--6|home-kpis--auto] [home-kpis--dense]">
 *     <article class="stat-card stat-card--{blue|green|yellow|red|cyan|violet} home-kpi [stat-card--interactive]">
 *       <div class="stat-card__head">
 *         <div class="stat-card__icon stat-card__icon--{color}" aria-hidden="true">…</div>
 *         <div class="stat-card__meta">
 *           <div class="stat-card__value">…</div>
 *           <div class="stat-card__label">… <span class="stat-card__sub">opcjonalnie</span></div>
 *         </div>
 *       </div>
 *       <div class="stat-card__delta">opcjonalnie — nie renderuj gdy puste</div>
 *     </article>
 *   </div>
 *
 * Kolejność treści: ikona → wartość → etykieta (max 2 linie).
 * GLOBAL-KPI-A4 — jedna wysokość + układ 2-liniowy:
 *   [IKONA] wartość
 *           ETYKIETA [/ N | %]
 * Inline .stat-card__sub wyłącznie wewnątrz .stat-card__label.
 * .stat-card__delta w KPI jest ukryte (hook JS opcjonalny).
 * home-kpis--dense NIE zmienia wysokości kart.
 * Tokeny:
 *   --kpi-min-height: 94px (jedyna wysokość ekranowych KPI);
 *   --kpi-pad: 16px 18px; --kpi-icon: 42px; --kpi-value: 30px;
 *   --kpi-gap: 14px; --kpi-radius: 16px;
 */
:root{
  --kpi-min-height:94px;
  --kpi-min-height-dense:94px;
  --kpi-pad:16px 18px;
  --kpi-pad-dense:16px 18px;
  --kpi-icon:42px;
  --kpi-icon-dense:42px;
  --kpi-value:30px;
  --kpi-value-dense:30px;
  --kpi-gap:14px;
  --kpi-gap-dense:14px;
  --kpi-radius:16px;
  --kpi-blue:#3b9eff;
  --kpi-green:#2ecc71;
  --kpi-yellow:#f5a623;
  --kpi-red:#ff5a5a;
  --kpi-cyan:#2dd4bf;
  --kpi-violet:#a78bfa;
}

/* Globalna siatka KPI — równe komórki, bez rozciągania ostatniej karty */
.home-kpis{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:var(--kpi-gap);
  margin-bottom:0;
  align-items:stretch;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
}
.home-kpis.home-kpis--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.home-kpis.home-kpis--5{grid-template-columns:repeat(5,minmax(0,1fr))}
.home-kpis.home-kpis--6{grid-template-columns:repeat(6,minmax(0,1fr))}
.home-kpis.home-kpis--auto{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.home-kpis > .stat-card,
.home-kpis > .home-kpi{
  min-width:0;
  width:auto;
  max-width:none;
  grid-column:auto;
  box-sizing:border-box;
}

/* Standard — pixel-perfect (A4); nadpisuje ogólne .stat-card */
.home-kpis > .home-kpi,
.home-kpis > .stat-card.home-kpi,
.home-kpi{
  min-height:var(--kpi-min-height);
  height:var(--kpi-min-height);
  padding:var(--kpi-pad);
  background:
    radial-gradient(ellipse 120% 80% at 18% 0%,rgba(56,120,180,.10),transparent 55%),
    linear-gradient(165deg,rgba(11,20,34,.98),rgba(6,12,22,.98));
  border:1px solid rgba(90,140,190,.28);
  border-radius:var(--kpi-radius);
  box-shadow:0 4px 14px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.035);
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:0;
  cursor:default;
  transition:border-color .18s ease, box-shadow .18s ease;
  overflow:hidden;
  box-sizing:border-box;
}
/* Bez ciężkiego paska ::after — referencja ma tylko cienką ramkę */
.home-kpi.stat-card::after,
.home-kpis > .home-kpi::after,
.home-kpis > .stat-card.home-kpi::after{
  display:none;
}
.home-kpi.stat-card:hover,
.home-kpis > .home-kpi:hover,
.home-kpis > .stat-card.home-kpi:hover{
  border-color:rgba(120,170,220,.42);
  box-shadow:0 6px 16px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.045);
  transform:none;
}

/* Układ 2-liniowy: [ikona] wartość / etykieta (ikona na lewo od obu linii) */
.home-kpi .stat-card__head{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:0;
  min-width:0;
  width:100%;
}
.home-kpi .stat-card__icon{
  width:var(--kpi-icon);
  height:var(--kpi-icon);
  border-radius:10px;
  font-size:18px;
  display:grid;
  place-items:center;
  flex:0 0 var(--kpi-icon);
  box-sizing:border-box;
  background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.01));
}
.home-kpi .stat-card__icon .icon-svg,
.home-kpi .stat-card__icon .kpi-svg,
.home-kpi .stat-card__icon i,
.home-kpi .stat-card__icon svg{
  width:20px;
  height:20px;
  font-size:18px;
  line-height:1;
}
.home-kpi .stat-card__meta{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  min-width:0;
  flex:1 1 auto;
}
.home-kpi .stat-card__value{
  margin:0;
  padding:0;
  font-size:var(--kpi-value);
  font-weight:800;
  letter-spacing:-.02em;
  line-height:1.05;
  min-height:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:left;
  color:#e8f2ff;
}
.home-kpi .stat-card__label{
  margin:0;
  padding:0;
  font-size:10px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  line-height:1.25;
  min-height:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  color:rgba(232,238,246,.88);
  display:block;
}
/* Inline jednostka / licznik w tej samej linii etykiety */
.home-kpi .stat-card__label .stat-card__sub{
  display:inline;
  margin:0 0 0 .15em;
  padding:0;
  font-size:inherit;
  font-weight:600;
  letter-spacing:inherit;
  text-transform:uppercase;
  color:rgba(170,190,214,.9);
  white-space:nowrap;
}
/* Blokowe sub/delta poza etykietą — bez trzeciej linii */
.home-kpi .stat-card__meta > .stat-card__sub,
.home-kpi > .stat-card__sub,
.home-kpi .stat-card__delta,
.home-kpi > .stat-card__delta{
  display:none !important;
  margin:0 !important;
  padding:0 !important;
  height:0 !important;
  min-height:0 !important;
  overflow:hidden !important;
  border:0 !important;
  position:absolute !important;
  width:1px !important;
  clip:rect(0 0 0 0) !important;
}

/* Kolory kart / ikon / wartości — zgodne z referencją */
.home-kpi.stat-card--blue{
  border-color:rgba(59,158,255,.40);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(59,158,255,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--blue .stat-card__value{color:var(--kpi-blue)}
.home-kpi.stat-card--blue .stat-card__icon,
.home-kpi .stat-card__icon--blue{
  color:var(--kpi-blue);
  background:linear-gradient(160deg,rgba(59,158,255,.18),rgba(59,158,255,.05));
  border:1px solid rgba(59,158,255,.42);
  box-shadow:inset 0 0 10px rgba(59,158,255,.08);
}
.home-kpi.stat-card--green{
  border-color:rgba(46,204,113,.40);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(46,204,113,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--green .stat-card__value{color:var(--kpi-green)}
.home-kpi.stat-card--green .stat-card__icon,
.home-kpi .stat-card__icon--green{
  color:var(--kpi-green);
  background:linear-gradient(160deg,rgba(46,204,113,.18),rgba(46,204,113,.05));
  border:1px solid rgba(46,204,113,.42);
  box-shadow:inset 0 0 10px rgba(46,204,113,.08);
}
.home-kpi.stat-card--yellow{
  border-color:rgba(245,166,35,.42);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(245,166,35,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--yellow .stat-card__value{color:var(--kpi-yellow)}
.home-kpi.stat-card--yellow .stat-card__icon,
.home-kpi .stat-card__icon--yellow{
  color:var(--kpi-yellow);
  background:linear-gradient(160deg,rgba(245,166,35,.18),rgba(245,166,35,.05));
  border:1px solid rgba(245,166,35,.45);
  box-shadow:inset 0 0 10px rgba(245,166,35,.08);
}
.home-kpi.stat-card--red{
  border-color:rgba(255,90,90,.42);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(255,90,90,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--red .stat-card__value{color:var(--kpi-red)}
.home-kpi.stat-card--red .stat-card__icon,
.home-kpi .stat-card__icon--red{
  color:var(--kpi-red);
  background:linear-gradient(160deg,rgba(255,90,90,.18),rgba(255,90,90,.05));
  border:1px solid rgba(255,90,90,.45);
  box-shadow:inset 0 0 10px rgba(255,90,90,.08);
}
.home-kpi.stat-card--cyan{
  border-color:rgba(45,212,191,.40);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(45,212,191,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--cyan .stat-card__value{color:var(--kpi-cyan)}
.home-kpi.stat-card--cyan .stat-card__icon,
.home-kpi .stat-card__icon--cyan{
  color:var(--kpi-cyan);
  background:linear-gradient(160deg,rgba(45,212,191,.18),rgba(45,212,191,.05));
  border:1px solid rgba(45,212,191,.42);
  box-shadow:inset 0 0 10px rgba(45,212,191,.08);
}
.home-kpi.stat-card--violet{
  border-color:rgba(167,139,250,.40);
  box-shadow:0 4px 14px rgba(0,0,0,.18), 0 0 20px rgba(167,139,250,.05), inset 0 1px 0 rgba(255,255,255,.035);
}
.home-kpi.stat-card--violet .stat-card__value{color:var(--kpi-violet)}
.home-kpi.stat-card--violet .stat-card__icon,
.home-kpi .stat-card__icon--violet{
  color:var(--kpi-violet);
  background:linear-gradient(160deg,rgba(167,139,250,.18),rgba(167,139,250,.05));
  border:1px solid rgba(167,139,250,.42);
  box-shadow:inset 0 0 10px rgba(167,139,250,.08);
}
.home-kpi.stat-card--blue:hover{border-color:rgba(59,158,255,.58)}
.home-kpi.stat-card--green:hover{border-color:rgba(46,204,113,.58)}
.home-kpi.stat-card--yellow:hover{border-color:rgba(245,166,35,.60)}
.home-kpi.stat-card--red:hover{border-color:rgba(255,90,90,.60)}
.home-kpi.stat-card--cyan:hover{border-color:rgba(45,212,191,.58)}
.home-kpi.stat-card--violet:hover{border-color:rgba(167,139,250,.58)}

/* Dense — tylko opcjonalny alias klasy; wysokość/padding/ikona = standard */
.home-kpis.home-kpis--dense{gap:var(--kpi-gap)}
.home-kpis--dense > .home-kpi,
.home-kpis--dense > .stat-card.home-kpi{
  min-height:var(--kpi-min-height);
  height:var(--kpi-min-height);
  padding:var(--kpi-pad);
}

/* Interaktywna karta — tylko z jawną klasą */
.stat-card.stat-card--interactive,
.home-kpi.stat-card--interactive{
  cursor:pointer;
}
.stat-card.stat-card--interactive:focus-visible,
.home-kpi.stat-card--interactive:focus-visible{
  outline:2px solid var(--blue-bright, #27a8ff);
  outline-offset:2px;
}
@media (prefers-reduced-motion: reduce){
  .stat-card,
  .home-kpi,
  .stat-card::after{
    transition:none !important;
    transform:none !important;
  }
}
.home-grid-main{display:grid;grid-template-columns:minmax(580px,1fr) 570px;gap:16px}.home-bottom{display:grid;grid-template-columns:1fr 1.15fr 1.15fr;gap:16px}.panel-title{font-size:18px;font-weight:650;color:#fff;margin:0;display:flex;align-items:center;justify-content:space-between}.panel-title a{font-size:13px;font-weight:400}.home-card{border-radius:12px;padding:18px;background:linear-gradient(145deg,rgba(13,29,49,.94),rgba(7,19,33,.95));border:1px solid rgba(82,132,186,.24);box-shadow:0 20px 55px rgba(0,0,0,.18)}
.poland-map-card{height:397px;padding:16px}.poland-map-wrap{position:relative;height:322px;margin-top:8px;border:1px solid rgba(77,126,175,.2);border-radius:10px;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(19,76,125,.34),transparent 48%),linear-gradient(150deg,#081a2c,#06101d)}
.poland-map-wrap::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(52,120,185,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(52,120,185,.08) 1px,transparent 1px);background-size:44px 44px;opacity:.32}
.poland-map{position:absolute;inset:0;width:100%;height:100%;z-index:1}.pl-border{fill:rgba(7,38,64,.9);stroke:#1a5b91;stroke-width:1.8}.pl-region{fill:none;stroke:rgba(70,129,178,.16);stroke-width:1}.rail{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4;filter:drop-shadow(0 0 5px currentColor);opacity:.96}.rail.ok{stroke:var(--green);color:var(--green)}.rail.warn{stroke:var(--yellow);color:var(--yellow)}.rail.fail{stroke:var(--red);color:var(--red)}.rail.off{stroke:#7d8da1;color:#7d8da1;opacity:.72}.rail-minor{stroke-width:2.5;opacity:.72}.map-station{fill:#09253d;stroke:#2ea7ff;stroke-width:2.2}.map-station.major{r:7;fill:#0b2f51}.map-node-ok{fill:var(--green);stroke:rgba(255,255,255,.5);stroke-width:1}.map-node-warn{fill:var(--yellow);stroke:rgba(255,255,255,.45);stroke-width:1}.map-node-fail{fill:var(--red);stroke:rgba(255,255,255,.45);stroke-width:1}.map-label{fill:#fff;font-size:16px;font-weight:600;text-shadow:0 2px 5px #000}.map-small-label{fill:#c9d8e8;font-size:11px;font-weight:600}.map-controls{position:absolute;left:16px;top:55px;z-index:2;display:flex;flex-direction:column;border:1px solid rgba(83,134,188,.36);border-radius:8px;overflow:hidden;background:#071523}.map-controls button{width:36px;height:38px;border:0;border-bottom:1px solid rgba(83,134,188,.25);background:rgba(4,13,23,.86);color:#fff;font-size:23px}.map-controls button:last-child{border-bottom:0;font-size:17px}.map-legend{display:flex;gap:22px;align-items:center;border-top:1px solid rgba(83,134,188,.18);padding-top:12px;color:#cdd9e8;font-size:13px}.map-legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.event-list{display:flex;flex-direction:column}.dash-event{display:grid;grid-template-columns:48px 1fr 82px 18px;gap:12px;align-items:center;min-height:66px;border-top:1px solid rgba(83,134,188,.16);padding:10px 0}.dash-event:first-child{margin-top:10px}.dash-event-icon{width:45px;height:45px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:22px}.dash-event-icon.red{background:rgba(255,75,71,.14);color:var(--red)}.dash-event-icon.yellow{background:rgba(255,186,36,.13);color:var(--yellow)}.dash-event-icon.green{background:rgba(51,212,93,.12);color:var(--green)}.dash-event-icon.blue{background:rgba(22,136,255,.13);color:var(--blue-bright)}.dash-event-title{font-size:15px;color:#fff}.dash-event-sub,.dash-event-meta{font-size:13px;color:#91a4bb}.dash-event-meta{text-align:left}.dash-chevron{font-size:28px;color:#8197ad}.donut-row{display:grid;grid-template-columns:165px 1fr;gap:22px;align-items:center;min-height:184px}.donut-svg{width:160px;height:160px}.donut-center{font:700 22px Inter,system-ui,sans-serif;fill:#fff}.donut-center-sub{font:500 11px Inter,system-ui,sans-serif;fill:#c7d3e1}.dash-legend{display:flex;flex-direction:column;gap:13px;color:#c8d7e8}.dash-legend div{display:flex;align-items:center;gap:10px}.availability-chart{height:158px;margin-top:8px}.availability-chart svg{width:100%;height:100%}.top-locations{display:flex;flex-direction:column;gap:15px;margin-top:15px}.loc-row{display:grid;grid-template-columns:150px 1fr 30px;gap:12px;align-items:center}.loc-bar{height:6px;border-radius:999px;background:rgba(255,75,71,.12);overflow:hidden}.loc-bar span{display:block;height:100%;border-radius:999px;background:var(--red);box-shadow:0 0 16px rgba(255,75,71,.42)}.card-footer-link{display:block;border-top:1px solid rgba(83,134,188,.18);margin-top:14px;padding-top:13px;text-align:right;font-size:13px;color:#27a8ff}.empty-state{padding:26px;text-align:center;color:#91a4bb}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.module-page-map{height:620px}.generic-table{width:100%;border-collapse:collapse}.generic-table th,.generic-table td{padding:11px 10px;border-bottom:1px solid rgba(83,134,188,.13);text-align:left;font-size:13px}.generic-table th{font-size:11px;text-transform:uppercase;color:#91a4bb}.generic-table-wrap{overflow:auto}.module-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.module-title-card{display:none}
@media(max-width:1320px){.home-grid-main{grid-template-columns:1fr}.home-bottom{grid-template-columns:1fr}}
/* Breakpointy siatki KPI — równe karty, bez spanu ostatniego elementu.
   Progi viewportu uwzględniają sidebar (~232px): content ≈ viewport − sidebar.
   Jawne home-kpis--N mają tę samą logikę redukcji bez !important. */
@media (max-width:1799px){
  .home-kpis,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:repeat(3,minmax(0,1fr))}
  .home-kpis.home-kpis--4{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1199px){
  .home-kpis,
  .home-kpis.home-kpis--4,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:799px){
  .home-kpis,
  .home-kpis.home-kpis--4,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:minmax(0,1fr)}
}
/* Container queries: szerokość zawartości po odjęciu menu bocznego */
@container home-layout (max-width: 1499px){
  .home-kpis,
  .home-kpis.home-kpis--4,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@container home-layout (max-width: 999px){
  .home-kpis,
  .home-kpis.home-kpis--4,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container home-layout (max-width: 599px){
  .home-kpis,
  .home-kpis.home-kpis--4,
  .home-kpis.home-kpis--5,
  .home-kpis.home-kpis--6{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:900px){:root{--sidebar-w:0;--topbar-h:72px}.app-shell{display:block}.sidebar{position:fixed;left:-292px;top:0;z-index:90;transition:left .2s}.app-shell.sidebar-open .sidebar{left:0}.topbar{position:sticky;top:0}.main-content{padding:16px}.home-grid-main{grid-template-columns:1fr}.poland-map-card{height:auto}.poland-map-wrap{height:360px}.home-bottom{grid-template-columns:1fr}.loc-row{grid-template-columns:115px 1fr 28px}.topbar__status{display:none}.topbar__user-info{display:none}.topbar__divider{display:none}}

/* ================================================================
   POPRAWKA 2026-06-05 Ă˘â‚¬â€ť peÄąâ€šna szerokoÄąâ€şĂ„â€ˇ, chowane menu, Leaflet map
================================================================ */
:root{
  --sidebar-w-expanded: 232px;
  --sidebar-w-collapsed: 72px;
  --sidebar-w: var(--sidebar-w-expanded);
  --panel-gap: 12px;
}
.app-shell{
  width:100%;
  max-width:none;
  grid-template-columns:var(--sidebar-w) minmax(0,1fr) !important;
  transition:grid-template-columns .22s ease;
}
.main-content{
  width:100% !important;
  max-width:none !important;
  min-width:0;
  padding:20px 28px 44px !important;
}
.home-dashboard,
.dashboard-main,
.module-grid,
.generic-table-wrap,
.home-card{
  max-width:none !important;
}
.home-dashboard{
  width:100%;
  margin:0 !important;
}
.dashboard-top-line{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  color:#8fa7bf;
  font-size:13px;
  margin-bottom:2px;
}
.dashboard-live-status{display:flex;align-items:center;gap:8px;color:#cbe2f8}.dashboard-last-update strong{color:#fff;font-weight:600}
.app-shell.sidebar-collapsed{--sidebar-w:var(--sidebar-w-collapsed)}
.app-shell.sidebar-collapsed .sidebar{width:var(--sidebar-w-collapsed);overflow-x:hidden}
.app-shell.sidebar-collapsed .sidebar__logo{padding:20px 10px;min-height:76px;display:flex;align-items:center;justify-content:center}
.app-shell.sidebar-collapsed .logo-text-wrap,
.app-shell.sidebar-collapsed .nav-item__label,
.app-shell.sidebar-collapsed .sidebar__footer{display:none!important}
.app-shell.sidebar-collapsed .logo-lockup{justify-content:center;gap:0}.app-shell.sidebar-collapsed .logo-jk{font-size:28px;letter-spacing:-.06em}
.app-shell.sidebar-collapsed .sidebar__nav{padding:12px 8px;align-items:center}.app-shell.sidebar-collapsed .nav-item{width:52px;min-height:52px;padding:0;justify-content:center;border-radius:14px}.app-shell.sidebar-collapsed .nav-item__icon{width:auto;font-size:21px}.app-shell.sidebar-collapsed .nav-item::before{display:none}
.topbar__user-wrap{position:relative;display:flex;align-items:center}.topbar__user{appearance:none}.user-dropdown{position:absolute;right:0;top:calc(100% + 10px);width:188px;background:linear-gradient(180deg,rgba(11,29,49,.98),rgba(6,18,31,.98));border:1px solid rgba(83,134,188,.34);border-radius:12px;box-shadow:0 18px 46px rgba(0,0,0,.42);padding:8px;display:none;z-index:120}.topbar__user-wrap.open .user-dropdown{display:block}.user-dropdown a,.user-dropdown button{display:flex;width:100%;align-items:center;gap:10px;border:0;background:transparent;color:#eaf4ff;padding:11px 12px;border-radius:9px;text-align:left;font-size:14px;text-decoration:none}.user-dropdown a:hover,.user-dropdown button:hover{background:rgba(42,119,197,.18);color:#fff}.user-dropdown button{cursor:pointer;color:#ffb4b4}
.leaflet-map-wrap{position:relative;height:322px;margin-top:8px;border:1px solid rgba(77,126,175,.2);border-radius:10px;overflow:hidden;background:#06101d}.leaflet-polish-map{width:100%;height:100%;min-height:320px;background:#06101d}.module-leaflet-wrap{height:540px}.module-leaflet-wrap .leaflet-polish-map{min-height:540px}.leaflet-container{font-family:Inter,system-ui,sans-serif;background:#06101d;color:#101828}.leaflet-control-attribution{background:rgba(5,13,24,.7)!important;color:#a7bdd5!important}.leaflet-control-attribution a{color:#d6e7ff!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0b1728;color:#eaf4ff;border:1px solid rgba(83,134,188,.35)}.leaflet-popup-content{font-size:13px;line-height:1.45}.leaflet-control-zoom a{background:#071523!important;color:#fff!important;border-color:rgba(83,134,188,.35)!important}.map-empty-state{position:absolute;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;background:rgba(3,10,18,.82);color:#cfe2f5;font-size:15px}.map-empty-state[hidden]{display:none!important}.panel-subtitle{font-size:12px;color:#8ea7bf;font-weight:400}.profile-card{max-width:980px!important}.profile-grid{display:grid;grid-template-columns:160px repeat(2,minmax(220px,1fr));gap:16px;align-items:stretch}.profile-avatar-big{grid-row:span 4;width:148px;height:148px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#1c334f;color:#fff;font-size:42px;font-weight:700;border:1px solid rgba(83,134,188,.38)}.profile-info-card{background:rgba(8,21,36,.65);border:1px solid rgba(83,134,188,.22);border-radius:12px;padding:14px}.profile-info-card span{display:block;color:#8ea7bf;font-size:12px;margin-bottom:6px}.profile-info-card strong{font-size:16px;color:#fff;font-weight:600}.profile-actions{grid-column:2/-1;display:flex;justify-content:flex-end;align-items:center}
@media (min-width:1600px){.home-grid-main{grid-template-columns:minmax(720px,1fr) 35vw}.home-bottom{grid-template-columns:1fr 1.25fr 1.25fr}.poland-map-card{height:430px}.leaflet-map-wrap{height:355px}.leaflet-polish-map{min-height:355px}}
@media (max-width:900px){.app-shell{display:block!important}.sidebar{width:292px}.app-shell.sidebar-collapsed .sidebar{width:292px}.app-shell.sidebar-collapsed .logo-text-wrap,.app-shell.sidebar-collapsed .nav-item__label,.app-shell.sidebar-collapsed .sidebar__footer{display:block!important}.app-shell.sidebar-collapsed .nav-item{width:100%;justify-content:flex-start;padding:12px 17px}.main-content{padding:16px!important}.dashboard-top-line{align-items:flex-start;flex-direction:column}.profile-grid{grid-template-columns:1fr}.profile-avatar-big{grid-row:auto;margin:auto}.profile-actions{grid-column:auto}.leaflet-map-wrap{height:360px}.leaflet-polish-map{min-height:360px}}
@media (max-width:900px){.sidebar{display:flex!important;position:fixed!important;left:-292px!important;top:0!important;height:100vh!important;z-index:90!important;transition:left .22s ease}.app-shell.sidebar-open .sidebar{left:0!important}.app-shell.sidebar-open::after{content:'';position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:80}.topbar{z-index:70}.topbar__user-wrap{margin-left:auto}}

/* ================================================================
   POPRAWKA UI Ă˘â‚¬â€ť szerokie menu, profesjonalne ikony SVG, status card
================================================================ */
:root{
  --sidebar-w-expanded: 310px !important;
  --sidebar-w-collapsed: 82px !important;
  --sidebar-w: var(--sidebar-w-expanded) !important;
}
.app-shell{
  grid-template-columns:var(--sidebar-w) minmax(0,1fr) !important;
}
.sidebar{
  width:var(--sidebar-w) !important;
  min-width:var(--sidebar-w) !important;
}
.sidebar__logo{
  min-height:96px !important;
  padding:23px 24px 18px 28px !important;
}
.logo-lockup{gap:13px !important;}
.logo-jk{font-size:38px !important;}
.logo-word{font-size:21px !important;white-space:nowrap;}
.logo-sub{font-size:8.3px !important;letter-spacing:.155em !important;white-space:nowrap;}
.sidebar__nav{
  padding:16px 18px 12px !important;
  gap:9px !important;
}
.nav-item{
  min-height:54px !important;
  padding:10px 15px !important;
  gap:15px !important;
  font-size:15.5px !important;
  border-radius:14px !important;
  letter-spacing:-.01em;
}
.nav-item__icon{
  width:38px !important;
  height:38px !important;
  min-width:38px !important;
  border-radius:12px;
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  background:rgba(143,184,226,.065);
  border:1px solid rgba(114,164,215,.12);
  color:#dcecff !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
  transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;
}
.nav-item:hover .nav-item__icon{
  background:rgba(36,168,255,.12);
  border-color:rgba(36,168,255,.28);
  color:#fff !important;
  transform:translateY(-1px);
}
.nav-item.active .nav-item__icon{
  background:rgba(255,255,255,.13);
  border-color:rgba(255,255,255,.19);
  color:#fff !important;
}
.icon-svg{
  width:22px;
  height:22px;
  display:block;
  stroke:currentColor;
  flex:0 0 auto;
}
.nav-item__label{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.topbar__menu .icon-svg,
.topbar__btn .icon-svg{
  width:22px;
  height:22px;
}
.topbar__chevron{
  display:flex !important;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  margin-left:12px !important;
}
.topbar__chevron .icon-svg{
  width:18px;
  height:18px;
}
.user-dropdown .icon-svg{
  width:19px;
  height:19px;
  color:#a9c4df;
}
.user-dropdown button .icon-svg{color:#ff9f9f;}
.btn-with-icon{display:inline-flex;align-items:center;gap:9px;justify-content:center;}
.btn-svg{width:17px;height:17px;}
.kpi-svg{width:25px;height:25px;}
.stat-card__icon{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.event-svg{width:21px;height:21px;}
.dash-event-icon{font-size:0 !important;}

.dash-event-icon .event-svg,
.dash-event-icon .icon-svg{
  width:21px;
  height:21px;
  display:block;
  flex:0 0 auto;
  color:currentColor;
  font-size:20px !important;
  line-height:1;
}
.dash-event-icon svg.event-svg{
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.dash-event-icon .event-svg--filled{
  fill:currentColor;
  stroke:none;
}

.dash-chevron{font-size:0 !important;position:relative;width:18px;height:22px;}
.dash-chevron::before{content:'';position:absolute;left:4px;top:6px;width:9px;height:9px;border-top:2px solid #8197ad;border-right:2px solid #8197ad;transform:rotate(45deg);}

/* Compact system status panel (sidebar footer) */
.sidebar__footer{
  padding:12px 14px 16px !important;
}
.sidebar__system-card{
  min-height:0 !important;
  padding:11px 12px 10px !important;
  border-radius:12px !important;
  background:
    linear-gradient(145deg,rgba(12,32,54,.78),rgba(6,17,31,.88)) !important;
  border:1px solid rgba(94,154,215,.26) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.04),
    0 8px 22px rgba(0,0,0,.18) !important;
  overflow:hidden;
  position:relative;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.sidebar__system-card::after{display:none !important;}
.system-card__shine{display:none !important;}
.system-card__header{
  position:relative;
  z-index:2;
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:0;
}
.system-card__dot{
  width:10px;
  height:10px;
  margin-top:4px;
  border-radius:50%;
  flex:0 0 auto;
  background:#39df72;
  box-shadow:0 0 0 0 rgba(57,223,114,.45);
  animation:systemDotPulse 2.4s ease-out infinite;
}
.system-card__copy{min-width:0;flex:1}
.system-card__orb{display:none !important;}
.sidebar__system-title{
  font-size:14px !important;
  line-height:1.2;
  letter-spacing:-.01em;
}
.sidebar__system-sub{
  margin:4px 0 0 !important;
  color:#b7cbe0 !important;
  font-size:12px !important;
  line-height:1.35;
}
.system-card__metrics{display:none !important;}
.system-card__uptime{display:none !important;}
.system-card__lifeline{
  position:relative;
  z-index:2;
  height:28px;
  border-radius:8px;
  overflow:hidden;
  background:rgba(4,14,26,.35);
  border:1px solid rgba(125,211,252,.08);
  isolation:isolate;
}
.system-card__ecg-track{
  display:flex;
  width:200%;
  height:100%;
  will-change:transform;
}
.system-card__ecg-track.is-running{
  animation:systemEcgScroll 3.2s linear infinite;
}
.system-card__ecg{
  display:block;
  width:50%;
  height:100%;
  flex:0 0 50%;
}
.system-card__ecg-wave,
.system-card__ecg-flat{
  fill:none;
  stroke-width:1.75;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.system-card__ecg-wave{
  stroke:#3ee0a0;
  filter:drop-shadow(0 0 4px rgba(62,224,160,.55));
}
.system-card__ecg-flat{
  stroke:currentColor;
  display:none;
  opacity:.9;
}
.system-card__badges{
  position:relative;
  z-index:2;
  display:flex;
  flex-wrap:wrap;
  gap:6px 8px;
  align-items:center;
}
.system-card__badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:2px 7px;
  border-radius:999px;
  border:1px solid rgba(125,211,252,.14);
  background:rgba(4,14,26,.4);
  color:#8ea7bf;
  font-size:10px;
  line-height:1.3;
  letter-spacing:.02em;
  white-space:nowrap;
}
.system-card__badge strong{
  font-size:10px;
  font-weight:800;
  letter-spacing:.04em;
  color:#dff3ff;
}
.system-card__badge[data-tone="ok"] strong{color:#39df72}
.system-card__badge[data-tone="warning"] strong{color:var(--yellow,#f5ba24)}
.system-card__badge[data-tone="danger"] strong{color:var(--red,#ff4b47)}
.system-card__badge[data-tone="offline"] strong{color:#94a3b8}
.system-card__badge[data-tone="service"] strong{color:#a78bfa}
.system-card__badge[data-tone="neutral"] strong{color:#9eb0c4}
.system-card__last-refresh{
  position:relative;
  z-index:2;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  border-radius:0 !important;
  color:#8ea7bf;
  font-size:10px;
  line-height:1.25;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:6px;
  flex-wrap:wrap;
}
.system-card__last-refresh strong{
  color:#dff3ff;
  font-size:10px;
  font-weight:700;
  letter-spacing:.02em;
  text-shadow:none;
  font-variant-numeric:tabular-nums;
}
.sidebar__train-card{display:none !important;}
.sidebar__version{
  margin-top:12px !important;
  padding-left:4px !important;
  font-size:12px !important;
  line-height:1.55 !important;
}

/* System card state themes */
.sidebar__system-card.system-card--online{
  --sys-accent:#39df72;
  --sys-glow:rgba(57,223,114,.42);
  --sys-line:#3ee0a0;
}
.sidebar__system-card.system-card--warning{
  --sys-accent:var(--yellow,#f5ba24);
  --sys-glow:rgba(245,186,36,.4);
  --sys-line:#f5ba24;
}
.sidebar__system-card.system-card--offline,
.sidebar__system-card.system-card--error{
  --sys-accent:var(--red,#ff4b47);
  --sys-glow:rgba(255,75,71,.35);
  --sys-line:#ff4b47;
}
.sidebar__system-card.system-card--loading,
.sidebar__system-card.system-card--unknown{
  --sys-accent:#94a3b8;
  --sys-glow:rgba(148,163,184,.28);
  --sys-line:#94a3b8;
}
.sidebar__system-card .system-card__dot{
  background:var(--sys-accent,#39df72);
  box-shadow:0 0 0 0 var(--sys-glow,rgba(57,223,114,.45));
}
.sidebar__system-card .system-card__ecg-wave{
  stroke:var(--sys-line,#3ee0a0);
  filter:drop-shadow(0 0 4px var(--sys-glow,rgba(62,224,160,.45)));
}
.sidebar__system-card.system-card--warning .system-card__ecg-track.is-running{
  animation-duration:5.2s;
  animation-timing-function:cubic-bezier(.45,.05,.55,.95);
}
.sidebar__system-card.system-card--offline .system-card__dot,
.sidebar__system-card.system-card--error .system-card__dot,
.sidebar__system-card.system-card--unknown .system-card__dot{
  animation:none;
  box-shadow:0 0 8px var(--sys-glow);
}
.sidebar__system-card.system-card--offline .system-card__ecg-wave,
.sidebar__system-card.system-card--error .system-card__ecg-wave{
  display:none;
}
.sidebar__system-card.system-card--offline .system-card__ecg-flat,
.sidebar__system-card.system-card--error .system-card__ecg-flat{
  display:block;
  stroke:var(--sys-line);
  filter:drop-shadow(0 0 3px var(--sys-glow));
}
.sidebar__system-card.system-card--offline .system-card__ecg-track,
.sidebar__system-card.system-card--error .system-card__ecg-track{
  animation:systemEcgFlatSettle .7s ease-out forwards;
  width:100%;
}
.sidebar__system-card.system-card--offline .system-card__ecg,
.sidebar__system-card.system-card--error .system-card__ecg{
  width:100%;
  flex:0 0 100%;
}
.sidebar__system-card.system-card--offline .system-card__ecg + .system-card__ecg,
.sidebar__system-card.system-card--error .system-card__ecg + .system-card__ecg{
  display:none;
}
.sidebar__system-card.system-card--loading .system-card__copy,
.sidebar__system-card.system-card--loading .system-card__badges,
.sidebar__system-card.system-card--loading .system-card__last-refresh{
  opacity:.72;
}
.sidebar__system-card.system-card--loading .system-card__lifeline{
  background:linear-gradient(90deg,rgba(148,163,184,.08),rgba(148,163,184,.2),rgba(148,163,184,.08));
  background-size:200% 100%;
  animation:systemCardSkeleton 1.4s ease-in-out infinite;
}
.sidebar__system-card.system-card--loading .system-card__ecg{opacity:.25}
.sidebar__system-card.system-card--loading .system-card__dot{
  animation:systemDotPulse 1.6s ease-out infinite;
}
.sidebar__system-card.system-card--unknown .system-card__ecg-wave{
  stroke-dasharray:4 6;
  opacity:.7;
}
.sidebar__system-card.system-card--unknown .system-card__ecg-track.is-running{
  animation:none;
}

@media (max-height:900px){
  .sidebar__footer{padding:10px 12px 12px !important}
  .sidebar__system-card{padding:10px 11px 9px !important;gap:7px}
  .system-card__lifeline{height:24px}
  .sidebar__version{margin-top:10px !important;font-size:11px !important}
}
@media (max-height:768px){
  .sidebar__footer{padding:8px 10px 10px !important}
  .sidebar__system-card{padding:8px 10px 8px !important;gap:6px}
  .system-card__lifeline{height:20px}
  .system-card__badge{padding:1px 6px}
  .sidebar__version{margin-top:8px !important;line-height:1.4 !important}
}

/* ZwiniĂ„â„˘ty sidebar po poszerzeniu */
.app-shell.sidebar-collapsed{--sidebar-w:var(--sidebar-w-collapsed) !important;}
.app-shell.sidebar-collapsed .sidebar{
  width:var(--sidebar-w-collapsed) !important;
  min-width:var(--sidebar-w-collapsed) !important;
}
.app-shell.sidebar-collapsed .sidebar__logo{padding:20px 10px !important;}
.app-shell.sidebar-collapsed .sidebar__nav{padding:14px 12px !important;}
.app-shell.sidebar-collapsed .nav-item{
  width:58px !important;
  min-height:58px !important;
  justify-content:center !important;
  padding:0 !important;
}
.app-shell.sidebar-collapsed .nav-item__icon{
  width:42px !important;
  height:42px !important;
  min-width:42px !important;
}
.app-shell.sidebar-collapsed .logo-jk{font-size:30px !important;}

@media(max-width:900px){
  :root{--sidebar-w-expanded:310px !important;--sidebar-w:0 !important;}
  .sidebar{width:310px !important;min-width:310px !important;left:-310px!important;}
  .app-shell.sidebar-open .sidebar{left:0!important;}
  .app-shell.sidebar-collapsed .sidebar{width:310px !important;min-width:310px !important;}
  .app-shell.sidebar-collapsed .sidebar__nav{padding:16px 18px 12px !important;}
  .app-shell.sidebar-collapsed .nav-item{width:100%!important;justify-content:flex-start!important;padding:10px 15px!important;}
}

/* ================================================================
   POPRAWKA Ă˘â‚¬â€ť powiadomienia, zakres dashboardu, eksport, legenda mapy
================================================================ */
.dashboard-top-line--right{
  justify-content:flex-end !important;
  min-height:18px;
}
.dashboard-live-status{display:none !important;}
.topbar__btn[title="Pomoc"]{display:none !important;}
.topbar__badge[hidden]{display:none !important;}
.home-actions{
  flex-wrap:wrap;
}
.home-select{
  cursor:pointer;
  min-width:126px !important;
}
.btn-with-icon{
  white-space:nowrap;
}
.poland-map-card{
  overflow:hidden !important;
  height:auto !important;
  min-height:397px;
}
.poland-map-card .leaflet-map-wrap{
  overflow:hidden !important;
}
.map-legend{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
  flex-wrap:wrap !important;
  gap:8px 16px !important;
  padding:9px 0 0 !important;
  margin:0 !important;
  line-height:1.25 !important;
  overflow:hidden !important;
}
.map-legend span{
  min-width:0 !important;
  white-space:nowrap !important;
  font-size:12px !important;
}
.legend-dot{
  flex:0 0 10px !important;
}
@media(max-width:1280px){
  .map-legend{gap:7px 12px !important;}
  .map-legend span{font-size:11.5px !important;}
}


/* ============================================================
   FINAL FORCE FIX Ă˘â‚¬â€ś dashboard columns
   UkÄąâ€šad:
   [ MAPA ] [ Ostatnie zdarzenia ]
            [ Wymaga uwagi ]
            [ Stan urzĂ„â€¦dzeÄąâ€ž | DostĂ„â„˘pnoÄąâ€şĂ„â€ˇ ]
   ============================================================ */

.home-dashboard--columns-force{
  width:100% !important;
  max-width:none !important;
  gap:var(--panel-gap, 12px);
}

.home-dashboard--columns-force .home-kpis{
  /* Tylko siatka kolumn — densyfikacja kart wyłącznie przez .home-kpis--dense */
  grid-template-columns:repeat(5,minmax(0,1fr));
}
.home-dashboard--columns-force .home-kpis > .stat-card,
.home-dashboard--columns-force .home-kpis > .home-kpi{
  grid-column:auto;
  min-width:0;
}

.home-dashboard--columns-force .home-kpi .stat-card__head{
  margin-bottom:0;
  align-items:center;
}

.home-dashboard--columns-force .home-kpi .stat-card__delta[hidden],
.home-dashboard--columns-force .home-kpi .stat-card__delta:empty{
  display:none !important;
}

.home-dashboard--columns-force .dashboard-columns-layout{
  display:grid !important;
  grid-template-columns:minmax(0, 2fr) minmax(320px, 1fr) !important;
  grid-template-rows:auto !important;
  gap:var(--panel-gap, 12px) !important;
  align-items:stretch !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}

.home-dashboard--columns-force .dashboard-map-left{
  grid-column:1 !important;
  grid-row:1 !important;
  min-width:0 !important;
  min-height:520px !important;
  height:auto !important;
  display:flex !important;
  flex-direction:column !important;
  gap:8px;
  box-sizing:border-box !important;
  padding:14px 16px;
  box-shadow:0 8px 24px rgba(0,0,0,.12);
  overflow:visible !important;
}

.home-dashboard--columns-force .dashboard-map-left > .panel-title{
  margin:0;
  flex:0 0 auto;
  gap:8px;
}

.home-dashboard--columns-force .dashboard-map-left > .map-card-toolbar,
.home-dashboard--columns-force .dashboard-map-left > .card-toolbar,
.home-dashboard--columns-force .dashboard-map-left > .map-toolbox:not(.map-toolbox--floating){
  margin:0;
  flex:0 0 auto;
  align-self:flex-start;
  width:auto;
  max-width:100%;
}

.home-dashboard--columns-force .dashboard-map-left > .map-legend,
.home-dashboard--columns-force .dashboard-map-left > .map-quality-info{
  margin-top:0 !important;
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-map-left,
.home-dashboard--columns-force .dashboard-right-stack,
.home-dashboard--columns-force .dashboard-events-right,
.home-dashboard--columns-force .dashboard-attention-right,
.home-dashboard--columns-force .dashboard-small-card{
  margin:0 !important;
}

/* Globalny wariant stacka: gĂłrne panele rosnÄ…, dolny rzÄ…d zostaje auto */
.panel-stack{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--panel-gap, 12px);
  min-width:0;
  min-height:0;
  align-content:stretch;
  box-sizing:border-box;
}
.panel-stack--fill-top{
  grid-template-rows:minmax(140px, 1fr) minmax(140px, 1fr) auto;
}
.panel-stack__fill{
  min-height:0;
  height:100%;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  box-sizing:border-box;
}
.panel-stack__fill > .event-list,
.panel-stack__fill > .attention-list,
.panel-stack__fill > .dashboard-attention-list{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  overflow-x:hidden;
  scrollbar-gutter:stable;
  padding-bottom:2px;
}
.panel-stack__auto{
  height:auto;
  min-height:0;
  align-self:stretch;
}

.home-dashboard--columns-force .dashboard-right-stack{
  grid-column:2 !important;
  grid-row:1 !important;
  min-width:0 !important;
  min-height:0 !important;
  height:auto !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  grid-template-rows:minmax(140px, 1fr) minmax(140px, 1fr) auto !important;
  gap:var(--panel-gap, 12px) !important;
  align-content:stretch !important;
  box-sizing:border-box !important;
}

.home-dashboard--columns-force .dashboard-events-right,
.home-dashboard--columns-force .dashboard-attention-right{
  min-height:0 !important;
  height:100% !important;
  display:flex !important;
  flex-direction:column !important;
  box-sizing:border-box !important;
  padding:14px;
  box-shadow:0 8px 24px rgba(0,0,0,.12);
  overflow:hidden;
}

.home-dashboard--columns-force .dashboard-events-right .event-list,
.home-dashboard--columns-force .attention-list,
.home-dashboard--columns-force .dashboard-attention-list{
  flex:1 1 auto !important;
  min-height:0;
}

.home-dashboard--columns-force .dashboard-metrics-right{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  gap:12px !important;
  min-width:0 !important;
  min-height:0 !important;
  height:auto !important;
  align-self:stretch !important;
  box-sizing:border-box !important;
}

.home-dashboard--columns-force .dashboard-small-card{
  min-width:0 !important;
  min-height:220px !important;
  height:auto !important;
  display:flex !important;
  flex-direction:column !important;
  box-sizing:border-box !important;
  padding:14px;
  box-shadow:0 8px 24px rgba(0,0,0,.12);
  overflow:hidden;
}

.home-dashboard--columns-force .dashboard-small-card .donut-row{
  min-height:0;
  gap:12px;
  grid-template-columns:minmax(96px,120px) minmax(0,1fr);
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-small-card .donut-svg{
  width:120px;
  height:120px;
}

.home-dashboard--columns-force .dashboard-small-card .availability-current{
  margin-top:8px;
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-small-card .card-footer-link{
  margin-top:auto !important;
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-small-card .panel-title{
  margin-bottom:6px;
  font-size:15px;
  gap:8px;
  min-height:0;
}

.home-dashboard--columns-force .dashboard-small-card .panel-title--availability{
  flex-wrap:nowrap;
  align-items:center;
  min-height:36px;
}

.home-dashboard--columns-force .dashboard-small-card .availability-range-select,
.home-dashboard--columns-force .dashboard-small-card .home-select{
  height:32px;
  min-height:32px;
  min-width:88px;
  padding:0 10px;
  font-size:12px;
}

.home-dashboard--columns-force .dashboard-small-card .card-footer-link{
  margin-top:auto !important;
  flex:0 0 auto;
  padding-top:8px;
  margin-top:auto !important;
}

.home-dashboard--columns-force .dashboard-small-card .availability-current{
  margin-top:4px;
  padding:2px 0 4px;
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-small-card .availability-current__value{
  font-size:18px;
}

.home-dashboard--columns-force .availability-chart{
  height:120px !important;
  min-height:120px !important;
  flex:0 0 auto;
}

.home-dashboard--columns-force .dashboard-map-left__wrap{
  flex:1 1 auto !important;
  height:auto !important;
  min-height:420px !important;
  max-height:none !important;
  margin-top:0;
  box-sizing:border-box !important;
}

.home-dashboard--columns-force .dashboard-map-left__wrap .leaflet-polish-map,
.home-dashboard--columns-force .dashboard-map-left .leaflet-polish-map{
  height:100% !important;
  min-height:420px !important;
}

.empty-state--compact{
  min-height:0 !important;
  padding:16px 12px !important;
  font-size:13px;
  line-height:1.35;
  display:grid;
  place-items:center;
  text-align:center;
}

@media (max-width:1799px){
  .home-dashboard--columns-force .home-kpis{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}

@media (max-width:1199px){
  .home-dashboard--columns-force .home-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:799px){
  .home-dashboard--columns-force .home-kpis{
    grid-template-columns:minmax(0,1fr);
  }
}

@media (max-width:1600px){
  .home-dashboard--columns-force .dashboard-map-left{
    min-height:480px !important;
  }
  .home-dashboard--columns-force .dashboard-map-left__wrap,
  .home-dashboard--columns-force .dashboard-map-left__wrap .leaflet-polish-map,
  .home-dashboard--columns-force .dashboard-map-left .leaflet-polish-map{
    min-height:380px !important;
  }
}

@media (min-width:1101px){
  /* ĹaĹ„cuch wysokoĹ›ci: shell â†’ main â†’ home-dashboard â†’ columns â†’ mapa */
  .app-shell[data-page="dashboard"]{
    height:100vh;
    height:100dvh;
    max-height:100vh;
    max-height:100dvh;
  }
  .app-shell[data-page="dashboard"] .main-content.dashboard-main{
    display:flex !important;
    flex-direction:column !important;
    min-height:0 !important;
    height:auto !important;
    align-self:stretch !important;
    overflow:hidden !important;
  }
  .app-shell[data-page="dashboard"] .home-dashboard.home-dashboard--columns-force{
    display:flex !important;
    flex-direction:column !important;
    flex:1 1 auto !important;
    min-height:0 !important;
    height:100% !important;
    gap:var(--panel-gap, 12px) !important;
  }
  .app-shell[data-page="dashboard"] .home-dashboard--columns-force > .home-kpis{
    flex:0 0 auto !important;
  }
  .home-dashboard--columns-force .dashboard-columns-layout{
    display:grid !important;
    grid-template-columns:minmax(0, 2fr) minmax(320px, 1fr) !important;
    grid-template-rows:minmax(0,1fr) !important;
    align-items:stretch !important;
    flex:1 1 auto !important;
    min-height:0 !important;
    height:auto !important;
  }
  .home-dashboard--columns-force .dashboard-right-stack{
    display:grid !important;
    grid-template-columns:1fr !important;
    height:100% !important;
    min-height:0 !important;
    align-self:stretch !important;
  }
  /* Lewa karta: nagĹ‚Ăłwek / toolbar / mapa (1fr) / legenda / statystyki â€” tylko wide */
  .home-dashboard--columns-force .dashboard-map-left{
    display:grid !important;
    grid-template-rows:auto auto minmax(0,1fr) auto auto !important;
    grid-template-columns:minmax(0,1fr) !important;
    height:100% !important;
    min-height:0 !important;
    align-self:stretch !important;
    gap:8px;
  }
  .home-dashboard--columns-force .dashboard-map-left > .dashboard-map-left__wrap,
  .home-dashboard--columns-force .dashboard-map-left > .leaflet-map-wrap{
    height:100% !important;
    min-height:0 !important;
    max-height:none !important;
    flex:unset !important;
    align-self:stretch !important;
  }
  .home-dashboard--columns-force .dashboard-map-left #dashboardPolandMap,
  .home-dashboard--columns-force .dashboard-map-left .leaflet-polish-map{
    height:100% !important;
    min-height:0 !important;
  }
  .home-dashboard--columns-force .dashboard-metrics-right{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  }
}

@media (max-width:1200px){
  /* Jednokolumnowy rytm: jeden mechanizm odstÄ™pĂłw = gap (--panel-gap), bez marginĂłw miÄ™dzy sekcjami */
  .app-shell[data-page="dashboard"]{
    height:auto !important;
    max-height:none !important;
  }
  .app-shell[data-page="dashboard"] .main-content.dashboard-main{
    display:block !important;
    height:auto !important;
    overflow-y:auto !important;
  }
  .home-dashboard.home-dashboard--columns-force{
    display:flex !important;
    flex-direction:column !important;
    gap:var(--panel-gap, 12px) !important;
    flex:none !important;
    height:auto !important;
    min-height:0 !important;
  }
  .home-dashboard--columns-force > .home-kpis,
  .home-dashboard--columns-force > .dashboard-columns-layout{
    margin:0 !important;
    flex:none !important;
  }
  .home-dashboard--columns-force .dashboard-columns-layout{
    grid-template-columns:1fr !important;
    grid-template-rows:auto !important;
    gap:var(--panel-gap, 12px) !important;
    height:auto !important;
    min-height:0 !important;
  }
  .home-dashboard--columns-force .dashboard-map-left,
  .home-dashboard--columns-force .dashboard-right-stack{
    grid-column:1 !important;
    grid-row:auto !important;
    margin:0 !important;
    height:auto !important;
  }
  .home-dashboard--columns-force .dashboard-right-stack{
    grid-template-rows:auto !important;
    gap:var(--panel-gap, 12px) !important;
  }
  .home-dashboard--columns-force .dashboard-events-right,
  .home-dashboard--columns-force .dashboard-attention-right,
  .home-dashboard--columns-force .dashboard-metrics-right,
  .home-dashboard--columns-force .dashboard-small-card{
    margin:0 !important;
  }
  .home-dashboard--columns-force .dashboard-map-left{
    min-height:420px !important;
  }
  .home-dashboard--columns-force .dashboard-map-left__wrap,
  .home-dashboard--columns-force .dashboard-map-left__wrap .leaflet-polish-map,
  .home-dashboard--columns-force .dashboard-map-left .leaflet-polish-map{
    min-height:360px !important;
  }
}

@media (max-width:1100px){
  .home-dashboard--columns-force .dashboard-columns-layout{
    grid-template-columns:1fr !important;
  }
  .home-dashboard--columns-force .dashboard-map-left,
  .home-dashboard--columns-force .dashboard-right-stack{
    grid-column:1 !important;
  }
  .home-dashboard--columns-force .dashboard-map-left{
    min-height:auto !important;
  }
  .home-dashboard--columns-force .dashboard-map-left__wrap,
  .home-dashboard--columns-force .dashboard-map-left__wrap .leaflet-polish-map,
  .home-dashboard--columns-force .dashboard-map-left .leaflet-polish-map{
    height:420px !important;
    min-height:420px !important;
  }
  .home-dashboard--columns-force .dashboard-metrics-right{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  }
}

@media (max-width:900px){
  .home-dashboard--columns-force .dashboard-metrics-right{
    grid-template-columns:1fr !important;
  }
}


/* === Operational map view === */
.map-ops-toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  margin:10px 0 8px;
}
.map-ops-toolbar label{
  display:inline-flex;
  align-items:center;
  gap:7px;
  height:30px;
  padding:0 10px;
  border:1px solid rgba(80,137,198,.25);
  border-radius:999px;
  background:rgba(6,18,31,.68);
  color:#cfe2f5;
  font-size:12px;
  user-select:none;
}
.map-ops-toolbar input{
  accent-color:#0ea5e9;
}
.local-poland-basemap{
  filter:saturate(1.08) contrast(1.04) brightness(.92);
}
.route-line{
  filter:drop-shadow(0 0 5px rgba(0,190,255,.18));
}
.route-line--alert{
  filter:drop-shadow(0 0 8px rgba(239,68,68,.55));
}
.station-marker{
  background:transparent;
  border:0;
}
.station-marker span{
  position:absolute;
  left:50%;
  top:50%;
  width:10px;
  height:10px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:var(--marker-color);
  box-shadow:0 0 0 2px rgba(5,15,27,.95), 0 0 14px color-mix(in srgb, var(--marker-color), transparent 45%);
}
.station-critical-pulse span::after{
  content:"";
  position:absolute;
  inset:-7px;
  border-radius:50%;
  border:2px solid rgba(239,68,68,.65);
  animation:stationPulse 1.6s ease-out infinite;
}
@keyframes stationPulse{
  0%{transform:scale(.45);opacity:.95}
  100%{transform:scale(1.75);opacity:0}
}
.station-label{
  padding:2px 6px !important;
  border:1px solid rgba(57,139,222,.30) !important;
  border-radius:7px !important;
  background:rgba(5,15,27,.78) !important;
  color:#dcecff !important;
  font-size:10px !important;
  font-weight:650 !important;
  box-shadow:0 10px 25px rgba(0,0,0,.24) !important;
}
.station-label::before{
  display:none !important;
}
.map-tooltip{
  border:1px solid rgba(57,139,222,.32) !important;
  border-radius:8px !important;
  background:rgba(5,15,27,.88) !important;
  color:#eaf4ff !important;
  box-shadow:0 10px 25px rgba(0,0,0,.32) !important;
}
.map-popup strong{
  display:block;
  margin-bottom:6px;
  font-size:14px;
}
.map-popup div{
  margin:3px 0;
}
.map-popup-link{
  display:inline-flex;
  margin-top:8px;
  color:#38bdf8 !important;
  font-weight:700;
}
.map-quality-info{
  display:flex;
  flex-wrap:wrap;
  gap:7px 14px;
  margin-top:8px;
  color:#8ea7bf;
  font-size:11px;
}
.map-quality-info b{
  color:#e8f4ff;
}
.map-legend--ops{
  border-top:1px solid rgba(83,134,188,.18);
  margin-top:8px !important;
  padding-top:9px !important;
}


/* === Map basemap (layout heights live in FINAL FORCE FIX above) === */
.leaflet-lite-pro{
  position:relative;
  overflow:hidden;
  border-radius:10px;
  background:
    radial-gradient(circle at 50% 45%, rgba(22,95,145,.22), transparent 38%),
    linear-gradient(145deg, #071524, #030b14);
}
.leaflet-lite-pro .leaflet-lite-bg{
  position:absolute;
  inset:0;
  background:
    linear-gradient(rgba(38,93,142,.13) 1px, transparent 1px),
    linear-gradient(90deg, rgba(38,93,142,.13) 1px, transparent 1px);
  background-size:90px 90px;
  opacity:.38;
}
.leaflet-lite-pro .leaflet-lite-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
.leaflet-lite-pro .leaflet-control-attribution{
  position:absolute;
  right:8px;
  bottom:6px;
  z-index:30;
  color:#6f859d;
  font-size:10px;
  background:rgba(4,12,22,.55);
  border-radius:999px;
  padding:3px 7px;
}
.leaflet-lite-pro .leaflet-control-zoom{
  position:absolute;
  left:12px;
  top:12px;
  z-index:35;
  display:grid;
  overflow:hidden;
  border:1px solid rgba(83,134,188,.32);
  border-radius:8px;
}
.leaflet-lite-pro .leaflet-control-zoom a{
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  color:#dcecff;
  background:rgba(5,15,27,.82);
  text-decoration:none;
  font-weight:800;
}
.leaflet-lite-pro .leaflet-control-zoom a + a{
  border-top:1px solid rgba(83,134,188,.22);
}
.leaflet-lite-pro .leaflet-lite-popup{
  position:absolute;
  z-index:60;
  transform:translate(-50%, calc(-100% - 12px));
  min-width:210px;
  padding:12px;
  background:rgba(5,15,27,.94);
  border:1px solid rgba(83,134,188,.42);
  border-radius:12px;
  box-shadow:0 18px 45px rgba(0,0,0,.42);
  color:#eaf4ff;
  font-size:13px;
}
.leaflet-lite-pro .leaflet-interactive{
  cursor:pointer;
}
.leaflet-lite-pro image.local-poland-basemap{
  filter:saturate(1.08) contrast(1.02) brightness(.95);
}
.route-line--alert{
  filter:drop-shadow(0 0 9px rgba(239,68,68,.62));
}
.station-svg-marker,
.station-svg-marker-group{
  filter:drop-shadow(0 0 7px rgba(56,189,248,.45));
}

/* === OSM map + quality info inside map card (heights: FINAL FORCE FIX) === */
.map-legend--ops,
.home-dashboard--columns-force .dashboard-map-left .map-legend{
  flex:0 0 auto !important;
  margin-top:0 !important;
  padding-top:8px !important;
  border-top:1px solid rgba(83,134,188,.18) !important;
}

.map-quality-info{
  flex:0 0 auto !important;
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px 14px !important;
  margin-top:8px !important;
  padding:9px 10px !important;
  border-radius:10px !important;
  border:1px solid rgba(83,134,188,.18) !important;
  background:rgba(6,18,31,.58) !important;
  color:#9fb5cc !important;
  font-size:12px !important;
  line-height:1.25 !important;
}

.map-quality-info span{
  white-space:nowrap !important;
}

.map-quality-info b{
  color:#e8f4ff !important;
  font-weight:750 !important;
}

/* OpenStreetMap in dark operational panel */
.leaflet-container{
  background:#06111f !important;
}

.osm-dashboard-tiles,
.leaflet-tile{
  filter:grayscale(1) invert(1) contrast(.94) brightness(.68) saturate(.75) !important;
}

.leaflet-control-attribution{
  background:rgba(5,15,27,.72) !important;
  color:#9fb5cc !important;
  border-radius:999px !important;
  padding:3px 8px !important;
  font-size:10px !important;
}

.leaflet-control-attribution a{
  color:#7dd3fc !important;
}


/* === Full Leaflet + OpenStreetMap dashboard map === */
.leaflet-container{
  background:#06111f !important;
  border-radius:10px !important;
  overflow:hidden !important;
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif !important;
}
.leaflet-polish-map{
  min-height:100% !important;
}
.leaflet-tile,
.osm-dashboard-tiles{
  filter:grayscale(.95) invert(1) contrast(1.05) brightness(.58) saturate(.75) !important;
}
.leaflet-pane .route-glow{
  filter:blur(1px);
}
.route-line-pro{
  filter:drop-shadow(0 0 7px rgba(34,197,94,.38));
}
.route-line-pro--alert{
  filter:drop-shadow(0 0 11px rgba(239,68,68,.74));
}
.station-marker-pro{
  width:18px !important;
  height:18px !important;
  background:transparent !important;
  border:0 !important;
}
.station-marker-pro span{
  position:absolute;
  left:50%;
  top:50%;
  width:10px;
  height:10px;
  transform:translate(-50%,-50%);
  border-radius:999px;
  background:var(--marker-color);
  box-shadow:
    0 0 0 2px rgba(5,15,27,.95),
    0 0 12px color-mix(in srgb, var(--marker-color), transparent 35%);
}
.station-marker-pro span::before{
  content:"";
  position:absolute;
  inset:-6px;
  border-radius:999px;
  background:var(--marker-color);
  opacity:.15;
}
.station-marker-pro--alert span::after{
  content:"";
  position:absolute;
  inset:-8px;
  border:2px solid rgba(239,68,68,.62);
  border-radius:999px;
  animation:stationPulseLeaflet 1.5s ease-out infinite;
}
@keyframes stationPulseLeaflet{
  0%{transform:scale(.45);opacity:.9}
  100%{transform:scale(1.75);opacity:0}
}
.station-label-pro{
  background:transparent !important;
  border:0 !important;
  pointer-events:none !important;
}
.station-label-pro span{
  display:inline-flex;
  align-items:center;
  min-width:max-content;
  height:20px;
  padding:0 6px;
  border-radius:7px;
  background:rgba(5,15,27,.72);
  border:1px solid rgba(57,139,222,.25);
  color:#dcecff;
  font-size:10px;
  font-weight:750;
  text-shadow:0 1px 3px rgba(0,0,0,.8);
  box-shadow:0 8px 18px rgba(0,0,0,.22);
}
.leaflet-popup.map-popup-shell .leaflet-popup-content-wrapper{
  border-radius:14px !important;
  background:
    linear-gradient(145deg, rgba(10,31,52,.98), rgba(5,15,27,.97)) !important;
  border:1px solid rgba(125,211,252,.36) !important;
  box-shadow:
    0 22px 60px rgba(0,0,0,.58),
    inset 0 1px 0 rgba(255,255,255,.07) !important;
  backdrop-filter:blur(10px);
  color:#eaf4ff;
  overflow:hidden;
}
.leaflet-popup.map-popup-shell .leaflet-popup-content{
  margin:12px !important;
  min-width:230px;
  max-width:min(360px, calc(100vw - 48px));
}
.leaflet-popup.map-popup-shell .leaflet-popup-tip{
  background:rgba(5,15,27,.97) !important;
  border:1px solid rgba(125,211,252,.26);
}
.leaflet-popup.map-popup-shell .leaflet-popup-close-button{
  color:#dcecff !important;
  font-size:20px !important;
  right:5px !important;
  top:4px !important;
}
.leaflet-popup.map-popup-shell .map-popup strong{
  display:block;
  margin:0 22px 8px 0;
  font-size:15px;
  color:#fff;
}
.leaflet-popup.map-popup-shell .map-popup-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin:0 18px 8px 0;
  border-bottom:0;
  padding:0;
}
.leaflet-popup.map-popup-shell .map-popup-title{
  margin:0 !important;
  min-width:0;
  flex:1 1 auto;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.leaflet-popup.map-popup-shell .map-popup-status{
  flex:0 0 auto;
  margin-top:1px;
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
  line-height:1.3;
}
.leaflet-popup.map-popup-shell .map-popup-grid{
  display:block;
  border-bottom:0;
  padding:0;
}
.leaflet-popup.map-popup-shell .map-popup-row,
.leaflet-popup.map-popup-shell .map-popup-grid > .map-popup-row,
.leaflet-popup.map-popup-shell .map-popup > div:not(.map-popup-header):not(.map-popup-grid){
  display:flex;
  justify-content:space-between;
  gap:14px;
  border-bottom:1px solid rgba(125,211,252,.09);
  padding:4px 0;
}
.leaflet-popup.map-popup-shell .map-popup-row span,
.leaflet-popup.map-popup-shell .map-popup span{
  color:#8ea7bf;
}
.leaflet-popup.map-popup-shell .map-popup-row b,
.leaflet-popup.map-popup-shell .map-popup b{
  color:#dff3ff;
  text-align:right;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.leaflet-pane path.route-glow,
.leaflet-pane path.route-live-glow,
.station-halo,
.map-decorative-layer{
  pointer-events:none !important;
}
.leaflet-popup.map-popup-shell .map-popup-link{
  display:flex;
  width:100%;
  justify-content:center;
  margin-top:10px !important;
  padding:8px 10px;
  border-radius:9px;
  background:rgba(14,165,233,.14);
  border:1px solid rgba(14,165,233,.24);
  color:#38bdf8 !important;
  text-decoration:none;
  font-weight:750;
}
.leaflet-popup.map-popup-shell .map-popup-link:hover{
  background:rgba(14,165,233,.22);
  color:#fff !important;
}
.leaflet-control-zoom{
  border:1px solid rgba(83,134,188,.34) !important;
  box-shadow:0 12px 28px rgba(0,0,0,.32) !important;
}
.leaflet-control-zoom a{
  background:rgba(5,15,27,.88) !important;
  color:#dcecff !important;
  border-color:rgba(83,134,188,.24) !important;
}
.leaflet-control-zoom a:hover{
  background:rgba(14,165,233,.22) !important;
  color:#fff !important;
}
.leaflet-control-attribution{
  background:rgba(5,15,27,.74) !important;
  color:#8198ae !important;
  border:1px solid rgba(83,134,188,.22);
  border-radius:999px;
  padding:3px 8px !important;
  font-size:10px !important;
}
.leaflet-control-attribution a{
  color:#7dd3fc !important;
}
.map-quality-info{
  flex:0 0 auto !important;
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px 14px !important;
  margin-top:8px !important;
  padding:9px 10px !important;
  border-radius:10px !important;
  border:1px solid rgba(83,134,188,.18) !important;
  background:rgba(6,18,31,.58) !important;
  color:#9fb5cc !important;
  font-size:12px !important;
  line-height:1.25 !important;
}
.map-quality-info span{
  white-space:nowrap !important;
}
.map-quality-info b{
  color:#e8f4ff !important;
  font-weight:750 !important;
}


/* === Real Poland administrative boundaries from GeoJSON === */
.leaflet-tile,
.osm-dashboard-tiles{
  filter:grayscale(1) invert(1) contrast(1.15) brightness(.40) saturate(.55) !important;
  opacity:.94 !important;
}
.leaflet-container{
  background:
    radial-gradient(circle at 50% 45%, rgba(15,75,115,.18), transparent 38%),
    linear-gradient(145deg, #050d18, #020810) !important;
}
.leaflet-pane .poland-border-glow-real{
  filter:drop-shadow(0 0 10px rgba(56,189,248,.48));
}
.leaflet-pane .poland-border-main-real{
  filter:
    drop-shadow(0 0 5px rgba(56,189,248,.62))
    drop-shadow(0 0 16px rgba(14,165,233,.28));
}
.leaflet-pane .voivodeship-border-real{
  filter:drop-shadow(0 0 3px rgba(46,120,173,.26));
}
.leaflet-pane .poland-fill-layer{
  mix-blend-mode:screen;
}
.route-line-pro{
  filter:
    drop-shadow(0 0 7px rgba(34,197,94,.54))
    drop-shadow(0 0 14px rgba(34,197,94,.15)) !important;
}
.route-line-pro--alert{
  filter:
    drop-shadow(0 0 9px rgba(239,68,68,.84))
    drop-shadow(0 0 18px rgba(239,68,68,.30)) !important;
}


/* === Maska poza PolskĂ„â€¦ + ciemniejsze neonowe kontury === */
.leaflet-pane .outside-poland-mask{
  mix-blend-mode:multiply;
  filter:drop-shadow(0 0 18px rgba(0,0,0,.65));
}

.leaflet-tile,
.osm-dashboard-tiles{
  filter:grayscale(1) invert(1) contrast(1.18) brightness(.38) saturate(.48) !important;
  opacity:.90 !important;
}

.leaflet-container{
  background:
    radial-gradient(circle at 50% 45%, rgba(7,89,133,.16), transparent 38%),
    linear-gradient(145deg, #030913, #01050b) !important;
}

.leaflet-pane .poland-fill-layer{
  mix-blend-mode:screen;
  filter:drop-shadow(0 0 18px rgba(14,165,233,.08));
}

.leaflet-pane .poland-border-glow-real{
  filter:
    drop-shadow(0 0 7px rgba(7,89,133,.70))
    drop-shadow(0 0 18px rgba(7,89,133,.32)) !important;
}

.leaflet-pane .poland-border-main-real{
  filter:
    drop-shadow(0 0 5px rgba(14,165,233,.58))
    drop-shadow(0 0 12px rgba(7,89,133,.32)) !important;
}

.leaflet-pane .voivodeship-border-real{
  filter:drop-shadow(0 0 3px rgba(22,78,117,.28)) !important;
}

.route-line-pro{
  filter:
    drop-shadow(0 0 7px rgba(34,197,94,.58))
    drop-shadow(0 0 15px rgba(34,197,94,.20)) !important;
}

.route-line-pro--alert{
  filter:
    drop-shadow(0 0 9px rgba(239,68,68,.86))
    drop-shadow(0 0 19px rgba(239,68,68,.34)) !important;
}


/* === Stable recovery: keep dashboard map visible === */
.leaflet-map-wrap,
#dashboardPolandMap,
.leaflet-polish-map{
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
}

.app-shell[data-page="dashboard"] .dashboard-top-line,
.app-shell[data-page="dashboard"] .dashboard-last-update,
.app-shell[data-page="dashboard"] .topbar__title p,
.app-shell[data-page="dashboard"] #topbarSubtitle{
  display:none !important;
}

.home-kpi .stat-card__delta:empty,
#kpiOnlineDelta:empty,
#kpiOkDelta:empty,
#kpiWarnDelta:empty,
#kpiAlarmDelta:empty,
#kpiAvailabilityDelta:empty,
#availabilityDelta:empty{
  display:none !important;
}

.home-kpi .stat-card__head{
  margin-bottom:0;
}

/* === System status card: life line + subtle refresh === */
.sidebar__system-card.system-card--data-refreshed{
  animation:systemCardRefreshFlash .7s ease-out;
}

@keyframes systemEcgScroll{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
@keyframes systemEcgFlatSettle{
  0%{opacity:.35;transform:scaleX(.92)}
  40%{opacity:1;transform:scaleX(1)}
  100%{opacity:1;transform:scaleX(1)}
}
@keyframes systemDotPulse{
  0%{box-shadow:0 0 0 0 var(--sys-glow,rgba(57,223,114,.45))}
  70%{box-shadow:0 0 0 8px transparent}
  100%{box-shadow:0 0 0 0 transparent}
}
@keyframes systemCardSkeleton{
  0%{background-position:100% 0}
  100%{background-position:-100% 0}
}
@keyframes systemCardRefreshFlash{
  0%,100%{
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.04),
      0 8px 22px rgba(0,0,0,.18);
  }
  30%{
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.08),
      0 8px 22px rgba(0,0,0,.18),
      0 0 18px var(--sys-glow,rgba(34,197,94,.28));
  }
}

@media (prefers-reduced-motion: reduce){
  .system-card__ecg-track,
  .system-card__ecg-track.is-running,
  .sidebar__system-card.system-card--offline .system-card__ecg-track,
  .sidebar__system-card.system-card--error .system-card__ecg-track,
  .sidebar__system-card.system-card--loading .system-card__lifeline,
  .system-card__dot,
  .sidebar__system-card.system-card--data-refreshed{
    animation:none !important;
  }
  .system-card__ecg-track{
    transform:none !important;
    width:100% !important;
  }
  .system-card__ecg{width:100% !important;flex:0 0 100% !important}
  .system-card__ecg + .system-card__ecg{display:none !important}
}


/* === Bezpieczne rozszerzenia mapy: panel, fokus awarii, przepÄąâ€šyw, etykiety, wojewÄ‚Ĺ‚dztwa === */
/* Toolbar karty â€” zawsze w normalnym flow nad canvasem (nie order/absolute) */
.card-toolbar,
.map-card-toolbar{
  position:relative;
  z-index:20;
  display:flex;
  justify-content:flex-start;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  margin:0;
  min-height:32px;
  flex:0 0 auto;
  align-self:flex-start;
  width:auto;
  max-width:100%;
}
.card-toolbar .map-toolbox__toggle,
.map-card-toolbar .map-toolbox__toggle{
  width:auto;
  max-width:100%;
  flex:0 0 auto;
}
.card-toolbar .map-layers-panel,
.map-card-toolbar .map-layers-panel{
  top:calc(100% + 8px);
  left:0;
  right:auto;
  z-index:80;
}

.map-toolbox{
  position:relative;
  z-index:15;
  display:flex;
  justify-content:flex-start;
  margin:9px 0 10px;
}

.map-toolbox__toggle{
  display:inline-flex;
  align-items:center;
  gap:9px;
  height:32px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid rgba(83,134,188,.30);
  background:linear-gradient(145deg,rgba(6,18,31,.86),rgba(4,13,24,.76));
  color:#dcecff;
  font-size:12px;
  font-weight:750;
  cursor:pointer;
  box-shadow:0 12px 26px rgba(0,0,0,.18);
}

.map-toolbox__toggle i{
  width:7px;
  height:7px;
  border-right:2px solid #38bdf8;
  border-bottom:2px solid #38bdf8;
  transform:rotate(45deg) translateY(-2px);
  transition:.18s ease;
}

.map-toolbox__toggle.is-active{
  border-color:rgba(56,189,248,.52);
  box-shadow:0 0 24px rgba(14,165,233,.18);
}

.map-toolbox__toggle.is-active i{
  transform:rotate(-135deg) translateY(-1px);
}

/* Globalny popover warstw / legendy â€” kompaktowy, max ~320px, scroll wewnÄ™trzny */
.map-layers-panel{
  position:absolute;
  top:calc(100% + 8px);
  left:0;
  right:auto;
  width:min(320px, calc(100vw - 48px));
  max-width:min(320px, calc(100% - 16px));
  max-height:min(70vh, 420px);
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:10px;
  border-radius:12px;
  border:1px solid rgba(83,134,188,.30);
  background:
    radial-gradient(circle at 10% 0%,rgba(14,165,233,.10),transparent 42%),
    linear-gradient(145deg,rgba(7,24,43,.98),rgba(4,13,24,.98));
  box-shadow:0 16px 40px rgba(0,0,0,.40), inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(12px);
  transform:translateY(-6px) scale(.98);
  opacity:0;
  pointer-events:none;
  transition:.18s ease;
  z-index:80;
  box-sizing:border-box;
  scrollbar-width:thin;
  scrollbar-color:rgba(56,189,248,.42) rgba(4,13,24,.35);
}

.map-layers-panel.is-open{
  transform:translateY(0) scale(1);
  opacity:1;
  pointer-events:auto;
}

.map-layers-panel__head{
  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:4px 8px;
  align-items:baseline;
  margin:0 0 8px;
}

.map-layers-panel__head strong,
.map-layers-panel__legend strong{
  color:#fff;
  font-size:12px;
  line-height:1.25;
}

.map-layers-panel__head small{
  color:#38bdf8;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.08em;
  white-space:nowrap;
}

.map-layers-panel label{
  display:grid;
  grid-template-columns:14px minmax(0,1fr);
  align-items:start;
  column-gap:8px;
  row-gap:2px;
  min-height:0;
  padding:4px 6px;
  border-radius:8px;
  color:#cfe2f5;
  font-size:12px;
  line-height:1.3;
  cursor:pointer;
}

.map-layers-panel label:hover{
  background:rgba(14,165,233,.10);
}

.map-layers-panel input{
  accent-color:#0ea5e9;
  width:14px;
  height:14px;
  margin:1px 0 0;
}

.map-layers-panel__layers{
  display:grid;
  gap:1px;
}

.map-layers-panel__legend{
  display:grid;
  gap:6px;
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid rgba(125,211,252,.12);
  color:#cfe2f5;
  font-size:12px;
}

.map-layers-panel__legend-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:4px;
}

.map-layers-panel__legend span{
  display:flex;
  align-items:center;
  gap:8px;
  line-height:1.25;
  min-width:0;
  padding:0;
}

.map-layers-panel__legend span .legend-dot{
  margin-top:0;
  flex:0 0 auto;
}

.map-toolbox--floating{
  position:absolute;
  top:14px;
  right:14px;
  left:auto;
  z-index:650;
  margin:0 !important;
  pointer-events:none;
}

.map-toolbox--floating > .map-toolbox__toggle,
.map-toolbox--floating > .map-layers-panel{
  pointer-events:auto;
}

.map-toolbox--floating .map-layers-panel{
  top:calc(100% + 8px);
  bottom:auto;
  right:0;
  left:auto;
  max-height:min(380px, 56vh);
  transform:translateY(-8px) scale(.98);
  transform-origin:top right;
}

.map-toolbox--floating .map-layers-panel.is-open{
  transform:translateY(0) scale(1);
}

.dashboard-map-left:has(.map-layers-panel.is-open),
.dashboard-map-left__wrap:has(.map-layers-panel.is-open),
.locations-map-wrap:has(.map-layers-panel.is-open){
  overflow:visible !important;
}

.locations-map-toolbar--search{
  display:block !important;
  margin:0 0 10px !important;
}

.locations-map-toolbar--search .locations-map-search--inline{
  max-width:none;
  width:100%;
}

.map-legend--compact{
  display:flex !important;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 14px !important;
  padding:2px 2px 0 !important;
  margin:0 !important;
  border-top:1px solid rgba(83,134,188,.18);
}

.map-legend--compact span{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-size:11.5px !important;
  color:#9fb5cc;
  white-space:nowrap;
}

@media (max-width: 720px){
  .map-layers-panel__legend-grid{
    grid-template-columns:1fr;
  }
  .map-toolbox--floating{
    top:12px;
    right:12px;
    left:auto;
  }
  .map-toolbox--floating .map-toolbox__toggle{
    width:auto;
    max-width:min(220px, calc(100% - 56px));
    justify-content:center;
  }
  .map-toolbox--floating .map-layers-panel{
    right:0;
    left:auto;
    width:min(300px, calc(100vw - 48px));
  }
  .map-legend--compact span{
    white-space:normal;
  }
}

.dashboard-map-left > .map-legend{
  display:none !important;
}

.route-flow{
  stroke-dasharray:1 14;
  animation:routeFlowMove 1.35s linear infinite;
  filter:drop-shadow(0 0 8px rgba(34,197,94,.42));
}

.route-flow--alert{
  animation-duration:.85s;
  filter:drop-shadow(0 0 10px rgba(239,68,68,.72));
}

@keyframes routeFlowMove{
  from{stroke-dashoffset:0;}
  to{stroke-dashoffset:-60;}
}

.route-line-pro--muted{
  filter:none !important;
}

.map-alarm-focus-mode .station-marker-pro--muted{
  opacity:.22;
  filter:grayscale(1);
}

.map-alarm-focus-mode .station-label-pro span{
  opacity:.42;
}

.voivodeship-border-real{
  cursor:pointer;
}

.leaflet-interactive.voivodeship-border-real:hover{
  filter:drop-shadow(0 0 8px rgba(14,165,233,.45)) !important;
}

.map-popup--region strong{
  color:#e0f2fe !important;
}

.station-label-pro span{
  max-width:112px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  transition:opacity .15s ease, transform .15s ease;
}


/* === Karta mapy: kolejnoĹ›Ä‡ DOM (nagĹ‚Ăłwek â†’ toolbar â†’ mapa â†’ stopka), bez flex order === */
.dashboard-map-left{
  display:flex !important;
  flex-direction:column !important;
  gap:8px;
  overflow:visible !important;
}

.dashboard-map-left > .panel-title,
.dashboard-map-left > .map-toolbox,
.dashboard-map-left > .map-card-toolbar,
.dashboard-map-left > .card-toolbar,
.dashboard-map-left > .dashboard-map-left__wrap,
.dashboard-map-left > .leaflet-map-wrap,
.dashboard-map-left > .map-digital-console__body,
.dashboard-map-left > .map-legend,
.dashboard-map-left > .map-quality-info{
  order:unset !important;
}

.dashboard-map-left > .panel-title{
  flex:0 0 auto !important;
  margin:0 !important;
  gap:8px;
}

.dashboard-map-left > .map-toolbox:not(.map-toolbox--floating),
.dashboard-map-left > .map-card-toolbar,
.dashboard-map-left > .card-toolbar{
  position:relative !important;
  top:auto !important;
  right:auto !important;
  left:auto !important;
  bottom:auto !important;
  flex:0 0 auto !important;
  align-self:flex-start !important;
  width:auto !important;
  max-width:100% !important;
  margin:0 !important;
  z-index:20;
}

.dashboard-map-left > .dashboard-map-left__wrap,
.dashboard-map-left > .leaflet-map-wrap,
.dashboard-map-left > .map-digital-console__body,
.dashboard-map-left .map-digital-console__body > .dashboard-map-left__wrap,
.dashboard-map-left .map-digital-console__body > .leaflet-map-wrap,
.dashboard-map-left .map-digital-console__body > .map-stage{
  position:relative !important;
  display:block !important;
  flex:1 1 auto !important;
  width:100% !important;
  min-height:420px !important;
  height:auto !important;
  visibility:visible !important;
  opacity:1 !important;
  overflow:hidden !important;
  border-radius:10px !important;
  background:#06111f !important;
  margin:0 !important;
}

.dashboard-map-left > .map-digital-console__body{
  display:flex !important;
  flex-direction:column !important;
  overflow:visible !important;
  background:transparent !important;
  border-radius:0 !important;
  min-height:0 !important;
  flex:1 1 auto !important;
}

.dashboard-map-left #dashboardPolandMap,
.dashboard-map-left .leaflet-polish-map{
  position:absolute !important;
  inset:0 !important;
  display:block !important;
  width:100% !important;
  height:100% !important;
  min-height:420px !important;
  visibility:visible !important;
  opacity:1 !important;
  z-index:1 !important;
}

.dashboard-map-left .map-empty-state{
  position:absolute;
  inset:0;
  z-index:5;
  display:grid;
  place-items:center;
  color:#9fb5cc;
  background:rgba(5,15,27,.72);
}

.dashboard-map-left .map-empty-state[hidden]{
  display:none !important;
}

.dashboard-map-left > .map-legend,
.dashboard-map-left > .map-legend--ops,
.dashboard-map-left > .map-quality-info,
.dashboard-map-left .map-digital-console__body > .map-legend,
.dashboard-map-left .map-digital-console__body > .map-legend--ops,
.dashboard-map-left .map-digital-console__body > .map-quality-info,
.dashboard-map-left .map-digital-console__body > .map-stats-bar{
  flex:0 0 auto !important;
  margin:0 !important;
  display:flex !important;
}

.dashboard-map-left:has(.map-layers-panel.is-open){
  overflow:visible !important;
}

@media (max-width:900px){
  .dashboard-map-left > .panel-title{
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-start;
  }
  .dashboard-map-left > .panel-title a{
    align-self:flex-start;
  }
}

@media (max-width:1100px){
  .dashboard-map-left .dashboard-map-left__wrap,
  .dashboard-map-left .leaflet-map-wrap,
  .dashboard-map-left #dashboardPolandMap,
  .dashboard-map-left .leaflet-polish-map{
    min-height:420px !important;
  }
}

/* Panel mapy: wysokoĹ›Ä‡ z FINAL FORCE FIX + stretch kolumn; Leaflet dostaje flex:1. */
.home-dashboard--columns-force .dashboard-map-left{
  display:flex !important;
  flex-direction:column !important;
}

/* ================================================================
   PROFIL UÄąÂ»YTKOWNIKA Ă˘â‚¬â€ś widok jak w nowym panelu JK Diagnostyka
================================================================ */
.app-shell[data-page="profile"] .main-content{
  padding:18px 28px 46px !important;
  overflow:auto;
}

.jk-profile-page,
.jk-profile-page *{
  box-sizing:border-box;
}

.jk-profile-page{
  width:100%;
  max-width:none;
  margin:0;
  color:#eef6ff;
  animation:jkProfileIn .24s ease both;
}

@keyframes jkProfileIn{
  from{opacity:0;transform:translateY(8px)}
  to{opacity:1;transform:translateY(0)}
}

.jk-profile-heading{
  margin:0 0 18px;
}

.jk-breadcrumb{
  display:flex;
  align-items:center;
  gap:10px;
  color:#92a7be;
  font-size:14px;
  margin-bottom:10px;
}

.jk-breadcrumb i{
  font-style:normal;
  color:#66819b;
  font-size:22px;
  line-height:1;
}

.jk-breadcrumb strong{
  color:#dcecff;
  font-weight:500;
}

.jk-profile-heading h1{
  margin:0 0 7px;
  font:700 26px/1.15 Inter,system-ui,sans-serif;
  letter-spacing:-.035em;
  color:#fff;
}

.jk-profile-heading p{
  margin:0;
  color:#b5c5d8;
  font-size:15px;
}

.jk-profile-layout{
  display:grid;
  grid-template-columns:minmax(300px, 1fr) minmax(300px, 1fr) minmax(380px, .95fr);
  gap:16px;
  align-items:stretch;
}

.jk-profile-panel{
  position:relative;
  border:1px solid rgba(83,134,188,.24);
  border-radius:12px;
  background:
    radial-gradient(circle at 12% 10%,rgba(39,168,255,.08),transparent 36%),
    linear-gradient(145deg,rgba(12,29,49,.94),rgba(6,18,32,.96));
  box-shadow:0 20px 55px rgba(0,0,0,.18);
  overflow:hidden;
}

.jk-profile-panel::before{
  content:'';
  position:absolute;
  left:0;
  right:0;
  top:50px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(111,165,220,.16),transparent);
  pointer-events:none;
}

.jk-profile-panel h2{
  margin:0;
  padding:20px 20px 17px;
  color:#fff;
  font:700 15px/1.2 Inter,system-ui,sans-serif;
  letter-spacing:-.01em;
}

.jk-profile-user-card{
  grid-column:span 2;
  min-height:390px;
}

.jk-password-card{
  min-height:390px;
}

.jk-permissions-card,
.jk-preferences-card,
.jk-sessions-card{
  min-height:365px;
}

.jk-sessions-card{
  min-width:0;
}

.jk-user-main{
  display:grid;
  grid-template-columns:160px minmax(0,1fr);
  gap:34px;
  padding:22px 32px 28px;
  min-height:330px;
  align-items:start;
}

.jk-user-avatar-wrap{
  position:relative;
  display:flex;
  justify-content:center;
  margin-top:24px;
}

.jk-user-avatar{
  width:118px;
  height:118px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(circle at 30% 18%,rgba(77,184,255,.26),transparent 36%),
    linear-gradient(145deg,#173557,#10243d);
  border:1px solid rgba(96,151,207,.22);
  color:#fff;
  font:700 38px/1 Inter,system-ui,sans-serif;
  letter-spacing:-.04em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 18px 42px rgba(0,0,0,.23);
}

.jk-avatar-btn{
  position:absolute;
  right:14px;
  bottom:0;
  width:32px;
  height:32px;
  border:1px solid rgba(90,143,196,.42);
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(145deg,#173251,#0b1b2f);
  color:#d8ebff;
  box-shadow:0 10px 25px rgba(0,0,0,.28);
  cursor:pointer;
}

.jk-avatar-btn:hover{
  color:#fff;
  border-color:rgba(39,168,255,.6);
  background:rgba(22,136,255,.18);
}

.jk-user-name-row{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  margin:1px 0 24px;
}

.jk-user-name-row h3{
  margin:0;
  color:#fff;
  font:600 22px/1.15 Inter,system-ui,sans-serif;
  letter-spacing:-.025em;
}

.jk-role-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:29px;
  padding:0 12px;
  border-radius:5px;
  color:#27a8ff;
  font-size:14px;
  border:1px solid rgba(22,136,255,.7);
  background:rgba(22,136,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}

.jk-user-data-list{
  margin:0;
  display:grid;
  gap:19px;
  max-width:610px;
}

.jk-user-data-list div{
  display:grid;
  grid-template-columns:130px minmax(0,1fr);
  gap:18px;
  align-items:center;
}

.jk-user-data-list dt{
  color:#a7b8cc;
  font-size:14px;
}

.jk-user-data-list dd{
  margin:0;
  color:#eef6ff;
  font-size:14px;
  line-height:1.3;
  min-width:0;
  overflow-wrap:anywhere;
}

.jk-online-dot{
  display:inline-block;
  width:10px;
  height:10px;
  margin-right:8px;
  border-radius:50%;
  background:#33d45d;
  box-shadow:0 0 14px rgba(51,212,93,.75);
  vertical-align:-1px;
}

.jk-profile-btn{
  min-height:43px;
  border-radius:7px;
  border:1px solid rgba(82,135,190,.34);
  padding:0 16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  color:#dcecff;
  font:600 14px/1 Inter,system-ui,sans-serif;
  background:rgba(7,19,34,.78);
  cursor:pointer;
  transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease,color .16s ease;
}

.jk-profile-btn:hover{
  transform:translateY(-1px);
  color:#fff;
  border-color:rgba(39,168,255,.58);
  box-shadow:0 14px 28px rgba(0,0,0,.18);
}

.jk-profile-btn--primary{
  background:linear-gradient(135deg,rgba(22,136,255,.72),rgba(4,75,142,.78));
  border-color:rgba(39,168,255,.34);
  color:#eaf6ff;
  box-shadow:0 14px 34px rgba(0,93,186,.18);
}

.jk-profile-btn--primary:hover{
  background:linear-gradient(135deg,#1688ff,#0759a8);
  box-shadow:0 18px 34px rgba(0,118,236,.27);
}

.jk-profile-btn--secondary{
  background:linear-gradient(135deg,rgba(22,136,255,.34),rgba(6,53,99,.62));
  border-color:rgba(39,168,255,.25);
}

.jk-profile-btn--danger{
  color:#fff;
  background:rgba(239,68,68,.08);
  border-color:rgba(239,68,68,.35);
}

.jk-profile-btn--danger:hover{
  background:rgba(239,68,68,.17);
  border-color:rgba(239,68,68,.55);
}

.jk-profile-btn--ghost{
  background:rgba(5,15,27,.65);
}

.jk-user-details > .jk-profile-btn{
  margin-top:42px;
}

.jk-password-form{
  padding:7px 20px 20px;
  display:flex;
  flex-direction:column;
  gap:12px;
}

.jk-password-form label,
.jk-profile-modal label{
  display:flex;
  flex-direction:column;
  gap:7px;
  color:#eef6ff;
  font-size:13px;
}

.jk-password-field{
  position:relative;
  display:block;
}

.jk-password-field input,
.jk-profile-modal input{
  width:100%;
  height:42px;
  border:1px solid rgba(82,135,190,.32);
  border-radius:7px;
  background:#071523;
  color:#eef6ff;
  outline:none;
  padding:0 43px 0 13px;
  font:500 14px Inter,system-ui,sans-serif;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}

.jk-profile-modal input{
  padding-right:13px;
}

.jk-password-field input::placeholder,
.jk-profile-modal input::placeholder{
  color:#72869d;
}

.jk-password-field input:focus,
.jk-profile-modal input:focus{
  border-color:rgba(39,168,255,.68);
  box-shadow:0 0 0 3px rgba(22,136,255,.14);
  background:#081827;
}

.jk-password-toggle{
  position:absolute;
  right:5px;
  top:5px;
  width:32px;
  height:32px;
  border:0;
  border-radius:7px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:transparent;
  color:#a9bdd2;
  cursor:pointer;
}

.jk-password-toggle:hover{
  background:rgba(39,168,255,.1);
  color:#fff;
}

.jk-password-rules{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:13px 20px;
  padding:6px 0 7px;
}

.jk-password-rules span{
  position:relative;
  color:#91adbf;
  font-size:12px;
  padding-left:18px;
}

.jk-password-rules span::before{
  content:'Ă˘Ĺ›â€ś';
  position:absolute;
  left:0;
  top:-1px;
  width:12px;
  height:12px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#33d45d;
  font-size:10px;
  border:1px solid rgba(51,212,93,.54);
}

.jk-password-rules span.ok{
  color:#cfe9d7;
}

.jk-form-message{
  min-height:18px;
  color:#92a7be;
  font-size:12px;
  line-height:1.35;
}

.jk-form-message.ok{color:#45e177;}
.jk-form-message.err{color:#ff8d8d;}

.jk-role-content{
  display:grid;
  grid-template-columns:92px minmax(0,1fr);
  gap:12px;
  padding:22px 20px 10px;
}

.jk-role-icon{
  width:76px;
  height:76px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#cfe5ff;
  background:
    radial-gradient(circle at 35% 25%,rgba(61,169,255,.2),transparent 45%),
    linear-gradient(145deg,#142d49,#0c1f36);
  border:1px solid rgba(91,144,198,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 36px rgba(0,0,0,.18);
}

.jk-role-icon .jk-profile-svg{
  width:42px;
  height:42px;
}

.jk-role-facts{
  display:grid;
  gap:8px;
  padding-top:8px;
}

.jk-role-facts span{
  margin-top:6px;
  color:#98adbf;
  font-size:13px;
}

.jk-role-facts span:first-child{
  margin-top:0;
}

.jk-role-facts strong{
  color:#fff;
  font-size:15px;
  line-height:1.35;
  font-weight:500;
}

.jk-permissions-card .jk-profile-btn,
.jk-preferences-card .jk-profile-btn{
  margin:26px 20px 20px;
}

.jk-preferences-list{
  padding:18px 22px 6px;
  display:grid;
  gap:18px;
}

.jk-pref-row{
  display:grid;
  grid-template-columns:28px 1fr auto 18px;
  gap:12px;
  align-items:center;
  min-height:31px;
  color:#dcecff;
}

.jk-pref-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  color:#cbdced;
}

.jk-pref-label{
  color:#eef6ff;
  font-size:14px;
}

.jk-pref-value{
  color:#cbd7e4;
  font-size:13px;
  white-space:nowrap;
  max-width:180px;
  overflow:hidden;
  text-overflow:ellipsis;
}

.jk-pref-arrow{
  color:#b9cadb;
  font-size:17px;
  transform:translateY(-1px);
}

.jk-panel-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:0 20px;
}

.jk-panel-title-row h2{
  padding-left:0;
  padding-right:0;
}

.jk-panel-title-row button{
  border:0;
  background:transparent;
  color:#27a8ff;
  cursor:pointer;
  font-size:13px;
  padding:0;
}

.jk-panel-title-row button:hover{
  color:#82ceff;
}

.jk-sessions-list{
  padding:4px 20px 0;
}

.jk-session-row{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto 24px;
  gap:14px;
  align-items:center;
  min-height:77px;
  border-top:1px solid rgba(83,134,188,.13);
}

.jk-session-row:first-child{
  border-top-color:rgba(83,134,188,.18);
}

.jk-session-device{
  width:43px;
  height:43px;
  border-radius:8px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(22,136,255,.12);
  color:#29a8ff;
  border:1px solid rgba(22,136,255,.12);
}

.jk-session-device--phone{
  background:rgba(51,212,93,.12);
  color:#33d45d;
  border-color:rgba(51,212,93,.18);
}

.jk-session-device--laptop{
  background:rgba(255,186,36,.12);
  color:#ffba24;
  border-color:rgba(255,186,36,.18);
}

.jk-session-title{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}

.jk-session-title strong{
  color:#fff;
  font-size:14px;
  font-weight:500;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.jk-session-title span{
  flex:0 0 auto;
  color:#27a8ff;
  font-size:12px;
}

.jk-session-sub{
  margin-top:6px;
  color:#9aabba;
  font-size:13px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.jk-session-time{
  color:#c5d2df;
  font-size:13px;
  line-height:1.45;
  text-align:left;
  min-width:84px;
}

.jk-session-more{
  width:28px;
  height:34px;
  border:0;
  border-radius:8px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#9bb0c5;
  background:transparent;
  cursor:pointer;
}

.jk-session-more:hover{
  color:#fff;
  background:rgba(39,168,255,.1);
}

.jk-sessions-card .jk-profile-btn{
  margin:19px 20px 0;
}

.jk-sessions-note{
  color:#758ba3;
  font-size:12px;
  padding:10px 20px 18px;
}

.jk-profile-svg{
  width:20px;
  height:20px;
  display:block;
  flex:0 0 auto;
}

.jk-profile-loading,
.jk-profile-error{
  min-height:300px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(83,134,188,.24);
  border-radius:12px;
  background:linear-gradient(145deg,rgba(12,29,49,.94),rgba(6,18,32,.96));
  color:#9fb2c7;
  box-shadow:0 20px 55px rgba(0,0,0,.18);
}

.jk-profile-error{
  color:#ffb1b1;
}

.jk-profile-modal{
  position:fixed;
  inset:0;
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease;
}

.jk-profile-modal.open{
  opacity:1;
  pointer-events:auto;
}

.jk-profile-modal[hidden]{
  display:none !important;
}

.jk-profile-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(1,6,13,.72);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.jk-profile-modal__dialog{
  position:relative;
  width:min(720px,100%);
  border:1px solid rgba(94,154,215,.34);
  border-radius:16px;
  padding:0;
  background:linear-gradient(150deg,rgba(13,29,49,.98),rgba(6,18,31,.99));
  box-shadow:0 24px 80px rgba(0,0,0,.52);
  transform:translateY(8px) scale(.98);
  transition:transform .16s ease;
  overflow:hidden;
}

.jk-profile-modal.open .jk-profile-modal__dialog{
  transform:translateY(0) scale(1);
}

.jk-profile-modal__dialog--sm{
  width:min(470px,100%);
}

.jk-profile-modal__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:20px 22px;
  border-bottom:1px solid rgba(83,134,188,.18);
}

.jk-profile-modal__head h2{
  margin:0 0 5px;
  padding:0;
  font-size:18px;
}

.jk-profile-modal__head p{
  margin:0;
  color:#9dafc2;
  font-size:13px;
}

.jk-modal-close{
  width:34px;
  height:34px;
  border:1px solid rgba(83,134,188,.24);
  border-radius:9px;
  background:rgba(7,19,34,.65);
  color:#dcecff;
  font-size:24px;
  line-height:1;
  cursor:pointer;
}

.jk-modal-close:hover{
  color:#fff;
  border-color:rgba(39,168,255,.45);
}

.jk-edit-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  padding:20px 22px 6px;
}

.jk-modal-label{
  padding:0 22px;
  margin-top:16px;
}

.jk-profile-modal__dialog > .jk-form-message{
  margin:12px 22px 0;
}

.jk-profile-modal__actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  padding:18px 22px 22px;
}

@media(max-width:1450px){
  .jk-profile-layout{
    grid-template-columns:minmax(320px,1fr) minmax(320px,1fr);
  }
  .jk-profile-user-card{
    grid-column:1 / -1;
  }
  .jk-password-card,
  .jk-permissions-card,
  .jk-preferences-card,
  .jk-sessions-card{
    min-height:auto;
  }
  .jk-sessions-card{
    grid-column:1 / -1;
  }
}

@media(max-width:980px){
  .app-shell[data-page="profile"] .main-content{
    padding:16px !important;
  }
  .jk-profile-layout{
    grid-template-columns:1fr;
  }
  .jk-profile-user-card,
  .jk-sessions-card{
    grid-column:auto;
  }
  .jk-user-main{
    grid-template-columns:1fr;
    gap:18px;
    padding:20px;
  }
  .jk-user-avatar-wrap{
    justify-content:flex-start;
    width:140px;
    margin-top:0;
  }
  .jk-user-data-list div{
    grid-template-columns:1fr;
    gap:4px;
  }
  .jk-user-details > .jk-profile-btn{
    margin-top:24px;
  }
  .jk-role-content{
    grid-template-columns:1fr;
  }
  .jk-password-rules{
    grid-template-columns:1fr;
  }
  .jk-session-row{
    grid-template-columns:44px minmax(0,1fr) 24px;
  }
  .jk-session-time{
    grid-column:2 / 3;
    color:#8ea7bf;
    min-width:0;
  }
  .jk-session-more{
    grid-column:3;
    grid-row:1 / span 2;
  }
  .jk-edit-grid{
    grid-template-columns:1fr;
  }
}

/* Dynamiczny profil Ă˘â‚¬â€ś brak danych, preferencje, sesje peÄąâ€šne */
.jk-user-avatar img{
  width:100%;
  height:100%;
  border-radius:inherit;
  object-fit:cover;
  display:block;
}

.jk-pref-row{
  width:100%;
  border:0;
  background:transparent;
  font:inherit;
  text-align:left;
  cursor:pointer;
  border-radius:10px;
  padding:2px 4px;
  transition:background .16s ease,transform .16s ease;
}

.jk-pref-row:hover{
  background:rgba(39,168,255,.08);
  transform:translateX(2px);
}

.jk-pref-value.is-empty,
.jk-role-facts .is-empty{
  color:#6f8297;
  font-style:italic;
}

.jk-profile-empty{
  min-height:124px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  border:1px dashed rgba(83,134,188,.24);
  border-radius:12px;
  color:#8398ae;
  background:rgba(5,17,31,.35);
  padding:18px;
  font-size:13px;
}

.jk-profile-empty--modal{
  margin:20px 22px;
}

.jk-profile-modal select{
  width:100%;
  height:42px;
  border:1px solid rgba(82,135,190,.32);
  border-radius:7px;
  background:#071523;
  color:#eef6ff;
  outline:none;
  padding:0 13px;
  font:500 14px Inter,system-ui,sans-serif;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}

.jk-profile-modal select:focus{
  border-color:rgba(39,168,255,.68);
  box-shadow:0 0 0 3px rgba(22,136,255,.14);
  background:#081827;
}

.jk-profile-modal__dialog--wide{
  width:min(980px,100%);
}

.jk-session-full-list{
  display:grid;
  gap:10px;
  padding:18px 22px 22px;
  max-height:min(62vh,620px);
  overflow:auto;
}

.jk-session-full-row{
  display:grid;
  grid-template-columns:48px minmax(180px,1fr) minmax(130px,.55fr) minmax(130px,.55fr) auto;
  gap:14px;
  align-items:center;
  padding:14px;
  border:1px solid rgba(83,134,188,.18);
  border-radius:12px;
  background:rgba(7,19,34,.42);
}

.jk-session-full-row strong{
  display:block;
  color:#fff;
  font-size:13px;
  font-weight:600;
  line-height:1.35;
}

.jk-session-full-row span{
  display:block;
  margin-top:4px;
  color:#8fa4b9;
  font-size:12px;
  line-height:1.35;
}

.jk-current-session-pill{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  color:#45e177 !important;
  border:1px solid rgba(69,225,119,.28);
  background:rgba(69,225,119,.08);
  font-weight:600;
  white-space:nowrap;
}

@media(max-width:980px){
  .jk-session-full-row{
    grid-template-columns:44px minmax(0,1fr);
  }
  .jk-session-full-row > div:nth-child(3),
  .jk-session-full-row > div:nth-child(4),
  .jk-session-full-row > button,
  .jk-current-session-pill{
    grid-column:2;
  }
}


/* ===============================
   Centrum powiadomieÄąâ€ž
================================ */
.notifications-main { padding-top: 24px; }
.notifications-page {
  display:flex;
  flex-direction:column;
  gap:22px;
}
.notifications-page__header {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.notifications-page__eyebrow {
  color: rgba(164,188,214,.8);
  font-size: 13px;
  margin-bottom: 8px;
}
.notifications-page__eyebrow span { color: var(--blue); padding: 0 8px; }
.notifications-page__title {
  margin:0;
  font-size: 42px;
  line-height:1.08;
  font-weight: 800;
  letter-spacing: -.02em;
}
.notifications-page__desc {
  margin:10px 0 0;
  color: rgba(202,220,240,.72);
  font-size: 16px;
}
.notifications-settings-btn {
  white-space: nowrap;
  min-height: 46px;
  margin-top: 12px;
}
/* GLOBAL-KPI-A3: lokalna siatka KPI usunięta — używaj .home-kpis / .home-kpis--N */
.notifications-stat-card {
  position:relative;
  overflow:hidden;
  padding:18px 20px;
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(10,28,48,.9), rgba(5,16,30,.92));
  border:1px solid rgba(77,132,194,.18);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03), 0 14px 38px rgba(0,0,0,.18);
}
.notifications-stat-card::before {
  content:'';
  position:absolute;
  inset:-1px auto auto -20%;
  width:58%;
  height:100%;
  background: radial-gradient(circle at center, rgba(29,127,243,.22), transparent 68%);
  pointer-events:none;
}
.notifications-stat-card--critical::before { background: radial-gradient(circle at center, rgba(239,68,68,.2), transparent 68%); }
.notifications-stat-card--warning::before { background: radial-gradient(circle at center, rgba(245,158,11,.18), transparent 68%); }
.notifications-stat-card--info::before { background: radial-gradient(circle at center, rgba(14,165,233,.2), transparent 68%); }
.notifications-stat-card__label {
  position:relative;
  z-index:1;
  color:#c9dcf5;
  font-size:14px;
}
.notifications-stat-card__value {
  position:relative;
  z-index:1;
  margin-top:14px;
  font-size:42px;
  font-weight:800;
  line-height:1;
}
.notifications-stat-card__sub {
  position:relative;
  z-index:1;
  margin-top:10px;
  color: rgba(172,193,216,.72);
  font-size: 13px;
}
.notifications-layout {
  display:grid;
  grid-template-columns: minmax(0, 2.15fr) minmax(340px, .85fr);
  gap:16px;
  align-items:start;
}
.notifications-board,
.notifications-detail {
  padding:0;
  overflow:hidden;
  border-radius: 22px;
}
.notifications-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:18px 18px 16px;
  border-bottom:1px solid rgba(77,132,194,.14);
}
.notifications-tabs {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.notif-tab {
  border:1px solid rgba(77,132,194,.25);
  background: rgba(10,24,43,.78);
  color:#d4e4f8;
  border-radius: 12px;
  padding:10px 14px;
  font-weight:600;
  cursor:pointer;
  transition:.18s ease;
}
.notif-tab:hover, .notif-tab.active {
  background: linear-gradient(180deg, rgba(18,97,185,.3), rgba(9,43,92,.72));
  border-color: rgba(76,146,230,.55);
  color:#fff;
  box-shadow: 0 0 0 1px rgba(76,146,230,.22) inset;
}
.notifications-toolbar__actions {
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.notif-link-btn,
.notif-filter-btn {
  border:none;
  background: transparent;
  color: var(--blue);
  cursor:pointer;
  font-weight:700;
}
.notif-link-btn:hover,
.notif-filter-btn:hover { color:#78bcff; }
.notif-filter-menu-wrap { position:relative; }
.notif-filter-menu {
  position:absolute;
  top:calc(100% + 10px);
  right:0;
  min-width:190px;
  padding:14px;
  border-radius:16px;
  background: rgba(5,19,35,.96);
  border:1px solid rgba(77,132,194,.22);
  box-shadow: 0 18px 44px rgba(0,0,0,.35);
  display:none;
  z-index:40;
}
.notif-filter-menu.open { display:block; }
.notif-filter-menu label {
  display:flex;
  flex-direction:column;
  gap:8px;
  color:#d9e8f8;
  font-size:13px;
}
.notif-filter-menu label + label { margin-top:12px; }
.notif-filter-menu select {
  width:100%;
  border-radius:10px;
  border:1px solid rgba(77,132,194,.22);
  background:#081a2e;
  color:#fff;
  padding:10px 12px;
}
.notifications-table-wrap { width:100%; }
.notifications-table-head,
.notif-row {
  display:grid;
  grid-template-columns: 34px 138px minmax(250px, 1.2fr) minmax(150px, .9fr) 168px minmax(140px, .9fr) 24px;
  align-items:center;
  gap:14px;
}
.notifications-table-head {
  padding:0 18px 14px;
  color: rgba(169,191,214,.78);
  font-size:13px;
}
.notifications-table-body {
  display:flex;
  flex-direction:column;
}
.notif-row {
  width:100%;
  text-align:left;
  padding:14px 18px;
  border:none;
  background: transparent;
  color:inherit;
  cursor:pointer;
  border-top:1px solid rgba(77,132,194,.1);
  transition: background .16s ease, border-color .16s ease;
}
.notif-row:hover { background: rgba(11,29,50,.55); }
.notif-row.active {
  background: linear-gradient(90deg, rgba(14,72,140,.22), rgba(8,26,46,.72));
  box-shadow: inset 3px 0 0 var(--blue);
}
.notif-row__check input {
  width:16px;
  height:16px;
  accent-color: var(--blue);
  cursor:pointer;
}
.notif-row__titlewrap {
  display:flex;
  flex-direction:column;
  gap:5px;
  min-width:0;
}
.notif-row__title {
  color:#edf5ff;
  font-size:16px;
  font-weight:700;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.notif-row__meta,
.notif-row__source,
.notif-row__date small {
  color: rgba(170,191,214,.72);
  font-size:13px;
}
.notif-row__source {
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.notif-row__date {
  display:flex;
  flex-direction:column;
  gap:4px;
}
.notif-row__date strong { font-size:14px; color:#eef5ff; }
.notif-row__channels {
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.notif-priority {
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:700;
  border:1px solid transparent;
  background: rgba(255,255,255,.04);
}
.notif-priority--critical { color:#ff8b8b; background: rgba(127,29,29,.18); border-color: rgba(239,68,68,.28); }
.notif-priority--warning { color:#f6c45b; background: rgba(120,74,8,.18); border-color: rgba(245,158,11,.24); }
.notif-priority--info { color:#6cc6ff; background: rgba(11,80,133,.16); border-color: rgba(14,165,233,.2); }
.notif-priority__dot,
.notif-unread-dot {
  width:8px;
  height:8px;
  border-radius:50%;
  display:inline-block;
}
.notif-dot--critical,
.notif-unread-dot { background:#ef4444; box-shadow:0 0 0 6px rgba(239,68,68,.13); }
.notif-dot--warning { background:#f59e0b; box-shadow:0 0 0 6px rgba(245,158,11,.12); }
.notif-dot--info { background:#0ea5e9; box-shadow:0 0 0 6px rgba(14,165,233,.12); }
.notif-channel {
  display:inline-flex;
  align-items:center;
  padding:6px 10px;
  border-radius:10px;
  border:1px solid rgba(77,132,194,.18);
  background: rgba(9,24,42,.7);
  color:#e4eefb;
  font-size:12px;
  font-weight:600;
}
.notif-channel--sms { color:#ffd18a; }
.notif-channel--email { color:#7cc8ff; }
.notif-channel--system { color:#d9e6ff; }
.notifications-empty {
  padding:32px 18px;
  text-align:center;
  color: rgba(181,199,218,.74);
}
.notifications-empty--side { padding:40px 28px; }
.notifications-pagination {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:16px 18px 18px;
  border-top:1px solid rgba(77,132,194,.12);
}
.notifications-pagination__nav {
  display:flex;
  align-items:center;
  gap:10px;
}
.page-btn {
  min-width:36px;
  height:36px;
  border-radius:10px;
  border:1px solid rgba(77,132,194,.2);
  background: rgba(8,24,44,.74);
  color:#d9e7f9;
  cursor:pointer;
}
.page-btn.active,
.page-btn:hover:not(:disabled) {
  background: linear-gradient(180deg, rgba(18,97,185,.38), rgba(9,43,92,.74));
  border-color: rgba(76,146,230,.48);
}
.page-btn:disabled { opacity:.45; cursor:not-allowed; }
.page-ellipsis { color: rgba(181,199,218,.74); }
.notifications-detail {
  padding:22px 20px;
  position:sticky;
  top:92px;
}
.notifications-detail__header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.notifications-detail__statusline {
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.notifications-detail__read {
  color: rgba(175,194,214,.78);
  font-size:13px;
}
.notifications-detail__read.is-unread { color: #93c5fd; }
.notifications-detail__close {
  border:none;
  background:transparent;
  color:var(--blue);
  cursor:pointer;
  font-weight:700;
}
.notifications-detail__title {
  margin:18px 0 6px;
  font-size:28px;
  line-height:1.16;
}
.notifications-detail__subtitle {
  color: rgba(174,195,216,.78);
  margin-bottom:18px;
}
.notifications-detail__meta {
  margin:0;
  display:grid;
  gap:12px;
  padding:0 0 18px;
  border-bottom:1px solid rgba(77,132,194,.12);
}
.notifications-detail__meta > div {
  display:grid;
  grid-template-columns: 124px 1fr;
  gap:12px;
}
.notifications-detail__meta dt {
  color: rgba(165,186,208,.68);
}
.notifications-detail__meta dd {
  margin:0;
  color:#eef5ff;
}
.notifications-detail__channels {
  display:flex;
  gap:6px;
  flex-wrap:wrap;
}
.notifications-detail__section {
  padding-top:18px;
  border-bottom:1px solid rgba(77,132,194,.1);
  padding-bottom:18px;
}
.notifications-detail__section:last-child { border-bottom:none; padding-bottom:0; }
.notifications-detail__section h4 {
  margin:0 0 12px;
  font-size:18px;
}
.notifications-detail__section p {
  margin:0;
  color: rgba(220,234,247,.86);
  line-height:1.6;
}
.notifications-tags {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.notifications-tags span {
  padding:10px 12px;
  border-radius:12px;
  background: rgba(8,24,44,.8);
  border:1px solid rgba(77,132,194,.16);
  color:#eaf4ff;
  font-size:13px;
}
.notifications-actions-grid {
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap:10px;
}
.notifications-history-row {
  display:grid;
  grid-template-columns: 42px 1fr auto;
  align-items:center;
  gap:12px;
}
.notifications-history-user {
  width:42px;
  height:42px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background: rgba(15,70,128,.3);
  border:1px solid rgba(77,132,194,.2);
  font-weight:800;
}
.notifications-history-row strong,
.notifications-history-row span {
  display:block;
}
.notifications-history-row span { color: rgba(175,194,214,.72); font-size:13px; margin-top:4px; }
.notifications-history-status {
  color:#d7e8fa;
  font-size:13px;
}
@media (max-width: 1500px) {
  .notifications-layout { grid-template-columns: 1.75fr .95fr; }
  .notifications-table-head,
  .notif-row { grid-template-columns: 34px 130px minmax(220px,1.15fr) minmax(140px,.8fr) 158px minmax(120px,.8fr) 24px; }
}
@media (max-width: 1280px) {
  .notifications-layout { grid-template-columns: 1fr; }
  .notifications-detail { position:relative; top:0; }
}
@media (max-width: 980px) {
  .notifications-page__header,
  .notifications-toolbar,
  .notifications-pagination { flex-direction:column; align-items:stretch; }
  .notifications-table-head { display:none; }
  .notif-row {
    grid-template-columns: 26px 1fr;
    grid-template-areas:
      "check priority"
      "check title"
      "check source"
      "check date"
      "check channels"
      "check status";
    gap:8px 14px;
    align-items:start;
  }
  .notif-row__check { grid-area: check; padding-top:8px; }
  .notif-row__priority { grid-area: priority; }
  .notif-row__titlewrap { grid-area: title; }
  .notif-row__source { grid-area: source; }
  .notif-row__date { grid-area: date; }
  .notif-row__channels { grid-area: channels; }
  .notif-row__status { grid-area: status; }
  .notifications-detail__meta > div { grid-template-columns: 1fr; gap:4px; }
}
@media (max-width: 680px) {
  .notifications-page__title { font-size: 32px; }
  .notifications-actions-grid { grid-template-columns: 1fr; }
}

/* ===== Poprawki: licznik, szerszy podglĂ„â€¦d, czytelne akcje ===== */
.notifications-layout--screen {
  grid-template-columns: minmax(0, 1fr) minmax(460px, 500px) !important;
  align-items: start;
}
.notifications-detail.home-card {
  overflow: visible !important;
  width: 100%;
  max-width: none;
}
.notifications-detail {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}
.notifications-detail__meta > div {
  grid-template-columns: 104px minmax(0, 1fr) !important;
}
.notifications-detail__channels,
.notifications-tags,
.notifications-actions-grid {
  min-width: 0;
}
.notifications-actions-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px 12px !important;
}
.notifications-actions-grid .btn,
.notifications-actions-grid .notif-action {
  width: 100% !important;
  min-width: 0 !important;
  justify-content: center !important;
  padding-left: 10px !important;
  padding-right: 10px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  letter-spacing: .01em !important;
  font-size: 11px !important;
}
.notifications-detail__title {
  word-break: normal;
  overflow-wrap: anywhere;
}
.notifications-detail__section p,
.notifications-detail__line,
.notifications-detail__desc2 {
  overflow-wrap: anywhere;
}
.notifications-tagcard {
  min-width: 112px !important;
  flex: 1 1 0;
}
@media (min-width: 1700px) {
  .notifications-layout--screen {
    grid-template-columns: minmax(0, 1fr) minmax(500px, 540px) !important;
  }
  .notifications-actions-grid .btn,
  .notifications-actions-grid .notif-action {
    font-size: 12px !important;
  }
}
@media (max-width: 1450px) {
  .notifications-layout--screen {
    grid-template-columns: minmax(0, 1fr) minmax(420px, 460px) !important;
  }
  .notifications-actions-grid {
    grid-template-columns: 1fr !important;
  }
  .notifications-actions-grid .btn,
  .notifications-actions-grid .notif-action {
    font-size: 12px !important;
  }
}
@media (max-width: 1200px) {
  .notifications-layout--screen {
    grid-template-columns: 1fr !important;
  }
  .notifications-detail {
    position: relative !important;
    top: 0 !important;
  }
}


/* ===== Powiadomienia: KPI używają globalnego .home-kpis ===== */

/* ===== Powiadomienia: szerszy podgląd i przyciski bez obcinania ===== */
.notifications-layout {
  grid-template-columns: minmax(0, 1fr) minmax(460px, 520px) !important;
  align-items: start;
}
.notifications-detail.home-card {
  overflow: visible !important;
  width: 100%;
  max-width: none;
}
.notifications-detail {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}
.notifications-actions-grid {
  grid-template-columns: repeat(2, minmax(200px, 1fr)) !important;
}
.notifications-actions-grid .btn,
.notifications-actions-grid button {
  width: 100%;
  min-height: 42px;
  white-space: normal !important;
  line-height: 1.25;
  padding-left: 12px;
  padding-right: 12px;
}
@media (max-width: 1280px) {
  .notifications-layout {
    grid-template-columns: 1fr !important;
  }
  .notifications-actions-grid {
    grid-template-columns: repeat(2, minmax(180px, 1fr)) !important;
  }
}
@media (max-width: 680px) {
  .notifications-actions-grid {
    grid-template-columns: 1fr !important;
  }
}


/* ===== Powiadomienia: usuniĂ„â„˘ty nagÄąâ€šÄ‚Ĺ‚wek i przyciski akcji toolbar ===== */
.notifications-page {
  gap: 16px;
}
.notifications-page__header {
  display: none !important;
}
.notifications-main {
  padding-top: 18px;
}
.notifications-toolbar__actions {
  align-items: center;
  gap: 10px;
}
.notif-toolbar-btn {
  min-height: 36px;
  padding: 9px 14px;
  border-radius: var(--r);
  font-size: 12px;
  letter-spacing: .03em;
  text-transform: none;
  white-space: nowrap;
}
.notif-filter-btn.notif-toolbar-btn {
  color: var(--text-primary);
}
.notif-link-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 9px 14px;
  border-radius: var(--r);
  border: 1px solid var(--border-bright);
  background: transparent;
  color: var(--text-primary);
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
}
.notif-link-btn:hover {
  background: rgba(29,111,232,0.10);
  border-color: var(--blue);
}
@media (max-width: 980px) {
  .notifications-toolbar__actions {
    width: 100%;
    align-items: stretch;
  }
  .notif-toolbar-btn,
  .notif-link-btn {
    width: 100%;
    white-space: normal;
  }
}

/* ===== Lokalizacje: mapa taka sama jak na stronie gÄąâ€šÄ‚Ĺ‚wnej ===== */
.locations-main {
  padding-top: 18px;
}
.locations-map-card {
  width: 100%;
  min-height: calc(100vh - var(--topbar-h) - 48px);
  display: flex;
  flex-direction: column;
}
.locations-map-card .panel-title {
  margin-bottom: 12px;
}
.locations-map-wrap {
  flex: 1 1 auto;
  min-height: 620px;
  height: calc(100vh - var(--topbar-h) - 190px);
}
.locations-map-wrap .leaflet-polish-map,
.locations-map-wrap #dashboardPolandMap {
  min-height: 620px;
  height: 100%;
}
.locations-map-card .map-quality-info {
  margin-top: 10px;
}
@media (max-width: 900px) {
  .locations-map-card {
    min-height: auto;
  }
  .locations-map-wrap,
  .locations-map-wrap .leaflet-polish-map,
  .locations-map-wrap #dashboardPolandMap {
    min-height: 520px;
    height: 65vh;
  }
}

/* ===== Lokalizacje: wyszukiwarka stacji i filtrowanie poÄąâ€šĂ„â€¦czeÄąâ€ž ===== */
.locations-map-search {
  display: grid;
  grid-template-columns: minmax(280px, 520px) 1fr;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}
.locations-map-search__field {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.locations-map-search__field input {
  width: 100%;
  height: 42px;
  border-radius: var(--r);
  border: 1px solid rgba(83,134,188,.28);
  background: rgba(5,18,33,.82);
  color: var(--text-primary);
  padding: 0 14px;
  outline: none;
  font: inherit;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025);
}
.locations-map-search__field input::placeholder {
  color: rgba(172,191,213,.55);
}
.locations-map-search__field input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(29,111,232,.14), inset 0 1px 0 rgba(255,255,255,.035);
}
.locations-map-search__field button {
  min-height: 42px;
  white-space: nowrap;
  text-transform: none;
  letter-spacing: .02em;
}
.locations-map-search__info {
  min-height: 42px;
  display: flex;
  align-items: center;
  padding: 9px 12px;
  border-radius: var(--r);
  border: 1px solid rgba(83,134,188,.16);
  background: rgba(8,24,44,.56);
  color: rgba(205,222,241,.78);
  font-size: 13px;
  line-height: 1.35;
}
.locations-map-search__info b {
  color: var(--text-primary);
}
.locations-map-search__info.is-warning {
  color: #ffdca8;
  border-color: rgba(245,158,11,.32);
  background: rgba(122,73,9,.12);
}
.leaflet-container.map-station-filter-mode .route-line-pro,
.leaflet-container.map-station-filter-mode .route-glow,
.leaflet-container.map-station-filter-mode .station-marker,
.leaflet-container.map-station-filter-mode .station-label {
  filter: saturate(1.15);
}
.leaflet-container.map-station-filter-mode .route-line-pro {
  stroke-width: 5px;
}
@media (max-width: 1100px) {
  .locations-map-search {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 640px) {
  .locations-map-search__field {
    flex-direction: column;
    align-items: stretch;
  }
  .locations-map-search__field button {
    width: 100%;
  }
}


/* ===== Lokalizacje: wyszukiwarka dynamiczna bez listy rozwijanej ===== */
.locations-map-toolbar {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px !important;
  width: 100%;
}
.locations-map-toolbar .map-toolbox__toggle {
  flex: 0 0 auto;
  height: 42px;
  border-radius: var(--r);
}
.locations-map-toolbar .map-layers-panel {
  left: auto;
  right: 0;
  top: 50px;
}

/* legacy toolbar placement Ă˘â‚¬â€ť panel jest teraz w map-toolbox--floating */
.locations-map-toolbar:not(.locations-map-toolbar--search) .map-layers-panel {
  left: auto;
  right: 0;
  top: 50px;
}
.locations-map-search--inline {
  flex: 1 1 auto;
  min-width: 260px;
  max-width: 760px;
  display: flex !important;
  grid-template-columns: none !important;
  align-items: center;
  gap: 10px;
  margin: 0 !important;
}
.locations-map-search--inline .locations-map-search__field {
  flex: 1 1 auto;
  min-width: 0;
}
.locations-map-search--inline .locations-map-search__field input {
  height: 42px;
}
.locations-map-search--inline .locations-map-search__field button {
  height: 42px;
}
.locations-map-search--inline .locations-map-search__info {
  flex: 0 1 auto;
  min-height: 42px;
  max-width: 360px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 9px 12px;
}
.locations-map-search--inline .locations-map-search__info[hidden] {
  display: none !important;
}
@media (max-width: 980px) {
  .locations-map-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  .locations-map-search--inline {
    max-width: none;
    width: 100%;
  }
  .locations-map-toolbar .map-toolbox__toggle {
    width: 100%;
    justify-content: center;
  }
  .locations-map-toolbar .map-layers-panel {
    left: 0;
    right: auto;
    width: min(100%, 320px);
  }
}
@media (max-width: 640px) {
  .locations-map-search--inline {
    flex-direction: column;
    align-items: stretch;
  }
  .locations-map-search--inline .locations-map-search__field {
    flex-direction: column;
    align-items: stretch;
  }
  .locations-map-search--inline .locations-map-search__info {
    max-width: none;
    white-space: normal;
  }
}


/* ===== Lokalizacje: spokojniejsza mapa bez automatycznego mĂ„â„˘czenia wzroku ===== */
.locations-map-card {
  background:
    radial-gradient(circle at 35% 10%, rgba(21,93,156,.12), transparent 34%),
    linear-gradient(145deg, rgba(9,24,42,.96), rgba(4,14,27,.98)) !important;
}
.locations-map-wrap {
  min-height: 560px !important;
  height: calc(100vh - var(--topbar-h) - 210px) !important;
  border-radius: 12px !important;
  background:
    radial-gradient(circle at 50% 46%, rgba(14,58,95,.18), transparent 54%),
    #06101d !important;
}
.locations-map-wrap .leaflet-container,
.locations-map-wrap .leaflet-polish-map {
  background: #06101d !important;
}
.locations-map-wrap .leaflet-tile,
.locations-map-wrap .osm-dashboard-tiles,
.locations-map-wrap .locations-carto-tiles {
  filter: none !important;
}
.locations-map-wrap .leaflet-tile {
  opacity: .72 !important;
}
.locations-map-wrap .leaflet-control-zoom a {
  width: 30px !important;
  height: 30px !important;
  line-height: 30px !important;
  background: rgba(5,18,33,.88) !important;
  border-color: rgba(83,134,188,.24) !important;
  color: #d8ebff !important;
}
.locations-map-wrap .leaflet-control-attribution {
  opacity: .62 !important;
}
.locations-map-wrap .route-line-pro {
  filter: drop-shadow(0 0 4px rgba(34,197,94,.20)) !important;
}
.locations-map-wrap .route-line-pro--alert {
  filter: drop-shadow(0 0 6px rgba(239,68,68,.42)) !important;
}
.locations-map-wrap .station-marker-pro span {
  width: 8px !important;
  height: 8px !important;
  box-shadow:
    0 0 0 2px rgba(5,15,27,.96),
    0 0 9px color-mix(in srgb, var(--marker-color), transparent 48%) !important;
}
.locations-map-wrap .station-marker-pro span::before {
  inset: -4px !important;
  opacity: .10 !important;
}
.locations-map-wrap .station-label-pro span {
  height: 18px !important;
  padding: 0 5px !important;
  font-size: 9px !important;
  background: rgba(5,15,27,.62) !important;
  border-color: rgba(57,139,222,.18) !important;
  color: rgba(220,236,255,.86) !important;
  box-shadow: 0 5px 14px rgba(0,0,0,.18) !important;
}
.locations-map-toolbar {
  margin-bottom: 12px !important;
}
.locations-map-search--inline .locations-map-search__field input {
  height: 36px !important;
}
.locations-map-search--inline .btn,
.locations-map-toolbar .map-toolbox__toggle {
  height: 36px !important;
}
.locations-map-card .panel-title {
  margin-bottom: 14px !important;
}
@media (max-width: 900px) {
  .locations-map-wrap {
    min-height: 480px !important;
    height: 62vh !important;
  }
}


/* ===== Animacje statusÄ‚Ĺ‚w szlakÄ‚Ĺ‚w: gÄąâ€šÄ‚Ĺ‚wna mapa i lokalizacje ===== */
.leaflet-pane .route-glow {
  filter: blur(1.8px) drop-shadow(0 0 11px rgba(34,197,94,.42)) !important;
  opacity: .34;
}
.leaflet-pane .route-glow--warning {
  filter: blur(2px) drop-shadow(0 0 16px rgba(245,158,11,.72)) !important;
}
.leaflet-pane .route-glow--fault,
.leaflet-pane .route-glow--alert {
  filter: blur(2.2px) drop-shadow(0 0 20px rgba(239,68,68,.92)) !important;
  animation: routeGlowFaultPulse 1.08s ease-in-out infinite;
}
.leaflet-pane .route-glow--unavailable {
  filter: blur(2px) drop-shadow(0 0 18px rgba(239,68,68,.78)) !important;
  animation: routeGlowUnavailablePulse 1.35s ease-in-out infinite;
}
.leaflet-pane .route-line-pro {
  filter: drop-shadow(0 0 9px rgba(34,197,94,.44)) !important;
  transition: stroke .2s ease, opacity .2s ease, filter .2s ease;
}
.leaflet-pane .route-line-pro--warning {
  filter: drop-shadow(0 0 12px rgba(245,158,11,.78)) drop-shadow(0 0 22px rgba(245,158,11,.26)) !important;
}
.leaflet-pane .route-line-pro--fault {
  filter: drop-shadow(0 0 14px rgba(239,68,68,.96)) drop-shadow(0 0 28px rgba(239,68,68,.34)) !important;
  animation: routeFaultBlink 1.05s ease-in-out infinite;
}
.leaflet-pane .route-line-pro--unavailable {
  stroke: #ef4444 !important;
  stroke-dasharray: 10 12 !important;
  stroke-linecap: round !important;
  filter: drop-shadow(0 0 12px rgba(239,68,68,.88)) drop-shadow(0 0 24px rgba(239,68,68,.30)) !important;
  animation: routeUnavailableDash 0.95s linear infinite;
}
.leaflet-pane .route-line-pro--muted {
  animation: none !important;
  filter: none !important;
  opacity: .13 !important;
}
.leaflet-pane .route-flow {
  stroke-dasharray: 1 14 !important;
  animation: routeFlowMove 1.15s linear infinite;
  filter: drop-shadow(0 0 9px rgba(34,197,94,.45)) !important;
}
.leaflet-pane .route-flow--warning {
  animation-duration: .95s;
  filter: drop-shadow(0 0 12px rgba(245,158,11,.72)) !important;
}
.leaflet-pane .route-flow--alert {
  animation-duration: .72s;
  filter: drop-shadow(0 0 14px rgba(239,68,68,.85)) !important;
}
@keyframes routeUnavailableDash {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -44; }
}
@keyframes routeFaultBlink {
  0%, 100% {
    opacity: .98;
    stroke-width: inherit;
    filter: drop-shadow(0 0 10px rgba(239,68,68,.75)) drop-shadow(0 0 20px rgba(239,68,68,.25));
  }
  50% {
    opacity: .42;
    filter: drop-shadow(0 0 22px rgba(239,68,68,1)) drop-shadow(0 0 38px rgba(239,68,68,.55));
  }
}
@keyframes routeGlowFaultPulse {
  0%, 100% { opacity: .30; }
  50% { opacity: .74; }
}
@keyframes routeGlowUnavailablePulse {
  0%, 100% { opacity: .24; }
  50% { opacity: .55; }
}


/* ===== MAPA PRO: wspÄ‚Ĺ‚lny wyglĂ„â€¦d dla strony gÄąâ€šÄ‚Ĺ‚wnej i lokalizacji ===== */
.dashboard-map-left,
.locations-map-card {
  background:
    radial-gradient(circle at 24% 5%, rgba(30,119,198,.15), transparent 34%),
    radial-gradient(circle at 74% 52%, rgba(18,76,126,.10), transparent 38%),
    linear-gradient(145deg, rgba(8,25,43,.98), rgba(3,12,24,.98)) !important;
  border: 1px solid rgba(70,132,196,.20) !important;
  box-shadow: 0 22px 70px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.025) !important;
}
.dashboard-map-left__wrap,
.locations-map-wrap,
.leaflet-map-wrap {
  border-radius: 13px !important;
  border: 1px solid rgba(73,132,194,.16) !important;
  background:
    radial-gradient(circle at 50% 50%, rgba(17,68,112,.18), transparent 54%),
    linear-gradient(180deg, rgba(3,13,25,.98), rgba(2,8,17,.98)) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.015),
    inset 0 0 90px rgba(0,0,0,.34) !important;
  overflow: hidden !important;
}
.dashboard-map-left__wrap::after,
.locations-map-wrap::after,
.leaflet-map-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 450;
  background:
    radial-gradient(circle at center, transparent 42%, rgba(0,0,0,.28) 100%),
    linear-gradient(180deg, rgba(255,255,255,.025), transparent 13%, transparent 83%, rgba(0,0,0,.16));
  mix-blend-mode: normal;
}
.leaflet-container {
  background: #06101d !important;
}
.leaflet-tile,
.osm-dashboard-tiles,
.locations-carto-tiles,
.pro-rail-map-tiles {
  filter: none !important;
  opacity: .78 !important;
}
.outside-poland-mask {
  fill: #020711 !important;
  fill-opacity: .46 !important;
}
.poland-border-glow-real {
  filter: drop-shadow(0 0 10px rgba(14,165,233,.24)) !important;
}
.poland-border-main-real {
  filter: drop-shadow(0 0 7px rgba(56,189,248,.45)) !important;
}
.voivodeship-border-real {
  filter: none !important;
}
.leaflet-control-zoom {
  border: 1px solid rgba(76,138,200,.22) !important;
  border-radius: 10px !important;
  overflow: hidden !important;
  box-shadow: 0 12px 24px rgba(0,0,0,.22) !important;
}
.leaflet-control-zoom a {
  background: rgba(5,18,33,.90) !important;
  color: #d7ebff !important;
  border-color: rgba(76,138,200,.16) !important;
}
.leaflet-control-zoom a:hover {
  background: rgba(21,82,137,.72) !important;
}
.leaflet-control-attribution {
  opacity: .55 !important;
  border: 1px solid rgba(76,138,200,.12) !important;
}

/* szlaki Ă˘â‚¬â€ť wersja PRO */
.leaflet-pane .route-glow {
  filter: blur(2.4px) drop-shadow(0 0 16px rgba(34,197,94,.48)) !important;
  opacity: .38 !important;
}
.leaflet-pane .route-glow--warning {
  filter: blur(2.6px) drop-shadow(0 0 18px rgba(245,158,11,.78)) !important;
}
.leaflet-pane .route-glow--fault,
.leaflet-pane .route-glow--alert {
  filter: blur(2.8px) drop-shadow(0 0 22px rgba(239,68,68,.96)) !important;
  animation: routeGlowFaultPulsePro 1.08s ease-in-out infinite;
}
.leaflet-pane .route-glow--unavailable {
  filter: blur(2.4px) drop-shadow(0 0 20px rgba(239,68,68,.78)) !important;
  animation: routeGlowUnavailablePulsePro 1.15s ease-in-out infinite;
}
.leaflet-pane .route-line-pro {
  filter: drop-shadow(0 0 9px rgba(34,197,94,.52)) drop-shadow(0 0 18px rgba(34,197,94,.18)) !important;
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
}
.leaflet-pane .route-line-pro--warning {
  stroke: #f59e0b !important;
  filter: drop-shadow(0 0 11px rgba(245,158,11,.86)) drop-shadow(0 0 24px rgba(245,158,11,.28)) !important;
}
.leaflet-pane .route-line-pro--fault {
  stroke: #ef4444 !important;
  filter: drop-shadow(0 0 14px rgba(239,68,68,.98)) drop-shadow(0 0 30px rgba(239,68,68,.36)) !important;
  animation: routeFaultBlinkPro 1.05s ease-in-out infinite;
}
.leaflet-pane .route-line-pro--unavailable {
  stroke: #ef4444 !important;
  stroke-dasharray: 10 12 !important;
  stroke-linecap: round !important;
  filter: drop-shadow(0 0 12px rgba(239,68,68,.90)) drop-shadow(0 0 26px rgba(239,68,68,.32)) !important;
  animation: routeUnavailableDashPro .9s linear infinite;
}
.leaflet-pane .route-line-pro--muted {
  animation: none !important;
  filter: none !important;
  opacity: .14 !important;
}
.leaflet-pane .route-flow {
  stroke-dasharray: 1 16 !important;
  animation: routeFlowMovePro 1.25s linear infinite;
  filter: drop-shadow(0 0 9px rgba(34,197,94,.46)) !important;
  opacity: .40 !important;
}
.leaflet-pane .route-flow--warning {
  animation-duration: .95s;
  filter: drop-shadow(0 0 12px rgba(245,158,11,.72)) !important;
  opacity: .52 !important;
}
.leaflet-pane .route-flow--alert {
  animation-duration: .72s;
  filter: drop-shadow(0 0 14px rgba(239,68,68,.88)) !important;
  opacity: .62 !important;
}

/* stacje Ă˘â‚¬â€ť czytelniejsze, mniej Ă˘â‚¬ĹľpikseloweĂ˘â‚¬ĹĄ */
.station-marker-pro span {
  width: 9px !important;
  height: 9px !important;
  border: 1px solid rgba(222,241,255,.52) !important;
  box-shadow:
    0 0 0 2px rgba(4,13,24,.96),
    0 0 10px color-mix(in srgb, var(--marker-color), transparent 40%),
    0 0 18px color-mix(in srgb, var(--marker-color), transparent 72%) !important;
}
.station-marker-pro span::before {
  inset: -5px !important;
  opacity: .12 !important;
}
.station-marker-pro--alert span::after {
  border-color: rgba(239,68,68,.62) !important;
}
.station-label-pro span {
  height: 19px !important;
  padding: 0 7px !important;
  border-radius: 8px !important;
  background: rgba(4,13,24,.76) !important;
  border: 1px solid rgba(88,154,223,.20) !important;
  color: rgba(228,240,255,.94) !important;
  font-size: 9.5px !important;
  font-weight: 750 !important;
  letter-spacing: .01em !important;
  box-shadow: 0 8px 18px rgba(0,0,0,.22) !important;
}
.map-legend,
.map-quality-info {
  border-color: rgba(81,141,204,.15) !important;
}
.map-quality-info span {
  background: rgba(4,15,28,.62) !important;
}

/* toolbar nad mapĂ„â€¦ */
.locations-map-toolbar,
.map-toolbox {
  gap: 10px !important;
}
.locations-map-search__field input,
.locations-map-search--inline .locations-map-search__field input {
  border-color: rgba(82,145,207,.22) !important;
  background: rgba(4,15,28,.74) !important;
}
.map-toolbox__toggle {
  border-color: rgba(54,153,255,.24) !important;
  background: rgba(4,22,41,.74) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03) !important;
}

/* animacje */
@keyframes routeFlowMovePro {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -66; }
}
@keyframes routeUnavailableDashPro {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -44; }
}
@keyframes routeFaultBlinkPro {
  0%, 100% {
    opacity: .98;
    filter: drop-shadow(0 0 12px rgba(239,68,68,.84)) drop-shadow(0 0 24px rgba(239,68,68,.30));
  }
  50% {
    opacity: .48;
    filter: drop-shadow(0 0 24px rgba(239,68,68,1)) drop-shadow(0 0 42px rgba(239,68,68,.58));
  }
}
@keyframes routeGlowFaultPulsePro {
  0%, 100% { opacity: .28; }
  50% { opacity: .72; }
}
@keyframes routeGlowUnavailablePulsePro {
  0%, 100% { opacity: .25; }
  50% { opacity: .56; }
}

@media (max-width: 900px) {
  .dashboard-map-left__wrap,
  .locations-map-wrap {
    min-height: 500px !important;
  }
}

/* ===== MAPA PRO V2: neonowy szkic kraju, kierunkowe szlaki i rÄ‚Ĺ‚wnolegÄąâ€še linie ===== */
.dashboard-map-left,
.locations-map-card {
  background:
    radial-gradient(circle at 20% 4%, rgba(29,111,232,.22), transparent 33%),
    radial-gradient(circle at 76% 55%, rgba(14,165,233,.12), transparent 38%),
    linear-gradient(145deg, rgba(5,18,33,.98), rgba(2,9,18,.99)) !important;
}
.dashboard-map-left__wrap,
.locations-map-wrap,
.leaflet-map-wrap {
  position: relative !important;
  background:
    linear-gradient(rgba(56,189,248,.032) 1px, transparent 1px),
    linear-gradient(90deg, rgba(56,189,248,.032) 1px, transparent 1px),
    radial-gradient(circle at 50% 48%, rgba(14,165,233,.14), transparent 53%),
    linear-gradient(180deg, #03101f, #020814) !important;
  background-size: 42px 42px, 42px 42px, auto, auto !important;
}
.leaflet-tile,
.osm-dashboard-tiles,
.locations-carto-tiles,
.pro-rail-map-tiles {
  opacity: .34 !important;
  filter: saturate(.8) contrast(1.08) brightness(.72) !important;
}
.outside-poland-mask {
  fill: #020711 !important;
  fill-opacity: .34 !important;
}
.poland-border-glow-real {
  filter:
    drop-shadow(0 0 10px rgba(14,165,233,.52))
    drop-shadow(0 0 24px rgba(14,165,233,.32)) !important;
}
.poland-border-main-real {
  filter:
    drop-shadow(0 0 6px rgba(125,211,252,.72))
    drop-shadow(0 0 18px rgba(14,165,233,.42)) !important;
}
.voivodeship-border-real {
  filter: drop-shadow(0 0 5px rgba(14,165,233,.34)) !important;
}
.leaflet-interactive.voivodeship-border-real:hover {
  filter:
    drop-shadow(0 0 9px rgba(56,189,248,.72))
    drop-shadow(0 0 18px rgba(56,189,248,.35)) !important;
}

/* Szlaki */
.leaflet-pane .route-glow {
  filter: blur(2.6px) drop-shadow(0 0 19px rgba(34,197,94,.58)) !important;
  opacity: .42 !important;
}
.leaflet-pane .route-glow--active {
  animation: routeGlowActivePulse 2.2s ease-in-out infinite;
}
.leaflet-pane .route-glow--warning {
  filter: blur(2.6px) drop-shadow(0 0 20px rgba(245,158,11,.80)) !important;
}
.leaflet-pane .route-glow--fault,
.leaflet-pane .route-glow--alert {
  filter: blur(3px) drop-shadow(0 0 24px rgba(239,68,68,.98)) !important;
  animation: routeGlowFaultPulsePro 1.05s ease-in-out infinite;
}
.leaflet-pane .route-glow--unavailable {
  filter: blur(3px) drop-shadow(0 0 24px rgba(239,68,68,.88)) !important;
  animation: routeGlowUnavailablePulsePro 1.1s ease-in-out infinite;
}
.leaflet-pane .route-line-pro--active {
  filter:
    drop-shadow(0 0 11px rgba(34,197,94,.66))
    drop-shadow(0 0 24px rgba(34,197,94,.22)) !important;
}
.leaflet-pane .route-line-pro--warning {
  stroke: #f59e0b !important;
  filter:
    drop-shadow(0 0 13px rgba(245,158,11,.92))
    drop-shadow(0 0 26px rgba(245,158,11,.32)) !important;
}
.leaflet-pane .route-line-pro--fault {
  stroke: #ef4444 !important;
  filter:
    drop-shadow(0 0 15px rgba(239,68,68,1))
    drop-shadow(0 0 32px rgba(239,68,68,.40)) !important;
  animation: routeFaultBlinkPro .96s ease-in-out infinite;
}
.leaflet-pane .route-line-pro--unavailable,
.leaflet-pane .route-unavailable-dash-flow {
  stroke: #ef4444 !important;
  stroke-dasharray: 10 12 !important;
  stroke-linecap: round !important;
  filter:
    drop-shadow(0 0 14px rgba(239,68,68,.96))
    drop-shadow(0 0 30px rgba(239,68,68,.38)) !important;
  animation: routeUnavailableDashPro .72s linear infinite !important;
}
.leaflet-pane .route-direction-flow {
  stroke-dasharray: 2 16 !important;
  animation: routeDirectionFlow 1.1s linear infinite !important;
}
.leaflet-pane .route-direction-flow--active {
  stroke: #22c55e !important;
  stroke-dasharray: 9 18 !important;
  animation: routeDirectionFlow .95s linear infinite !important;
  filter:
    drop-shadow(0 0 9px rgba(34,197,94,.84))
    drop-shadow(0 0 20px rgba(34,197,94,.30)) !important;
}
.leaflet-pane .route-direction-flow--warning {
  stroke: #f59e0b !important;
  filter: drop-shadow(0 0 12px rgba(245,158,11,.78)) !important;
}
.leaflet-pane .route-direction-flow--fault {
  stroke: #ef4444 !important;
  animation-duration: .7s !important;
  filter: drop-shadow(0 0 14px rgba(239,68,68,.88)) !important;
}
.leaflet-pane .route-line-pro--muted,
.leaflet-pane .route-glow--muted {
  animation: none !important;
  filter: none !important;
  opacity: .14 !important;
}
@keyframes routeDirectionFlow {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -72; }
}
@keyframes routeUnavailableDashPro {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -44; }
}
@keyframes routeFaultBlinkPro {
  0%, 100% { opacity: 1; }
  50% { opacity: .38; }
}
@keyframes routeGlowFaultPulsePro {
  0%, 100% { opacity: .30; }
  50% { opacity: .78; }
}
@keyframes routeGlowUnavailablePulsePro {
  0%, 100% { opacity: .28; }
  50% { opacity: .62; }
}
@keyframes routeGlowActivePulse {
  0%, 100% { opacity: .34; }
  50% { opacity: .54; }
}

/* Punkty i etykiety */
.station-marker-pro span {
  width: 8px !important;
  height: 8px !important;
  border: 1px solid rgba(222,241,255,.62) !important;
  box-shadow:
    0 0 0 2px rgba(2,9,18,.96),
    0 0 10px color-mix(in srgb, var(--marker-color), transparent 36%),
    0 0 21px color-mix(in srgb, var(--marker-color), transparent 72%) !important;
}
.station-label-pro span {
  background: rgba(2,9,18,.74) !important;
  border-color: rgba(125,211,252,.22) !important;
  color: rgba(235,247,255,.95) !important;
  text-shadow: 0 1px 4px rgba(0,0,0,.9) !important;
}


/* ===== FINAL: naturalny neon + dziaÄąâ€šajĂ„â€¦ce animacje kierunku i niedostĂ„â„˘pnoÄąâ€şci ===== */
:root{
  --rail-ok:#34d399;
  --rail-warn:#f59e0b;
  --rail-fault:#fb923c;
  --rail-off:#ef4444;
  --rail-cyan:#38bdf8;
}

/* mapa gÄąâ€šÄ‚Ĺ‚wna ma byĂ„â€ˇ tak czytelna jak Lokalizacje */
.app-shell[data-page="dashboard"] .dashboard-map-left__wrap,
.app-shell[data-page="dashboard"] .leaflet-map-wrap,
.app-shell[data-page="dashboard"] #dashboardPolandMap{
  background:
    radial-gradient(circle at 50% 45%, rgba(14,116,144,.24), transparent 48%),
    linear-gradient(180deg, rgba(5,19,35,.98), rgba(2,10,20,.98)) !important;
}
.app-shell[data-page="dashboard"] .leaflet-tile,
.app-shell[data-page="dashboard"] .osm-dashboard-tiles,
.app-shell[data-page="dashboard"] .pro-rail-map-tiles{
  opacity:.92 !important;
  filter: contrast(1.03) brightness(1.02) saturate(.92) !important;
}
.app-shell[data-page="dashboard"] .outside-poland-mask{
  fill-opacity:.30 !important;
}

/* naturalniejszy neon kraju i wojewÄ‚Ĺ‚dztw */
.leaflet-pane .outside-poland-mask{
  fill:#020711 !important;
  fill-opacity:.34 !important;
  filter:drop-shadow(0 0 18px rgba(0,0,0,.42)) !important;
}
.leaflet-pane .poland-border-glow-real{
  filter:
    drop-shadow(0 0 7px rgba(56,189,248,.44))
    drop-shadow(0 0 18px rgba(14,165,233,.18)) !important;
}
.leaflet-pane .poland-border-main-real{
  filter:
    drop-shadow(0 0 4px rgba(125,211,252,.52))
    drop-shadow(0 0 10px rgba(14,165,233,.24)) !important;
}
.leaflet-pane .voivodeship-border-real{
  filter:drop-shadow(0 0 3px rgba(56,189,248,.16)) !important;
  opacity:.55 !important;
}

/* bazowy szlak - subtelny, nieprzepalony */
.leaflet-pane path.route-glow{
  filter:blur(2px) drop-shadow(0 0 13px rgba(52,211,153,.38)) !important;
  opacity:.30 !important;
}
.leaflet-pane path.route-glow--active{
  filter:blur(2px) drop-shadow(0 0 14px rgba(52,211,153,.44)) !important;
  animation:routeGlowActiveNatural 2.4s ease-in-out infinite !important;
}
.leaflet-pane path.route-glow--warning{
  filter:blur(2px) drop-shadow(0 0 14px rgba(245,158,11,.54)) !important;
  opacity:.28 !important;
}
.leaflet-pane path.route-glow--fault{
  filter:blur(2.2px) drop-shadow(0 0 16px rgba(251,146,60,.68)) !important;
  animation:routeFaultOrangeGlowNatural 1.05s ease-in-out infinite !important;
}
.leaflet-pane path.route-glow--unavailable{
  filter:blur(2.1px) drop-shadow(0 0 16px rgba(239,68,68,.62)) !important;
  animation:routeUnavailableGlowNatural 1.15s ease-in-out infinite !important;
}

.leaflet-pane path.route-line-pro{
  filter:
    drop-shadow(0 0 7px rgba(52,211,153,.38))
    drop-shadow(0 0 15px rgba(52,211,153,.12)) !important;
}
.leaflet-pane path.route-line-pro--active{
  stroke:var(--rail-ok) !important;
  filter:
    drop-shadow(0 0 8px rgba(52,211,153,.48))
    drop-shadow(0 0 16px rgba(52,211,153,.16)) !important;
}
.leaflet-pane path.route-line-pro--warning{
  stroke:var(--rail-warn) !important;
  filter:
    drop-shadow(0 0 8px rgba(245,158,11,.54))
    drop-shadow(0 0 18px rgba(245,158,11,.16)) !important;
}

/* USTERKA: pomaraÄąâ€žczowy szlak + pomaraÄąâ€žczowy neon + miganie */
.leaflet-pane path.route-line-pro--fault,
.leaflet-pane path.route-direction-flow--fault{
  stroke:var(--rail-fault) !important;
  filter:
    drop-shadow(0 0 9px rgba(251,146,60,.70))
    drop-shadow(0 0 20px rgba(251,146,60,.26)) !important;
  animation:routeFaultOrangeBlinkNatural .92s ease-in-out infinite !important;
}

/* NIEDOSTĂ„ÂPNY: czerwona przerywana linia animowana */
.leaflet-pane path.route-line-pro--unavailable,
.leaflet-pane path.route-unavailable-dash-flow,
.leaflet-pane path.route-animation-forced--unavailable{
  stroke:var(--rail-off) !important;
  stroke-dasharray:14 16 !important;
  stroke-linecap:round !important;
  filter:
    drop-shadow(0 0 9px rgba(239,68,68,.66))
    drop-shadow(0 0 19px rgba(239,68,68,.22)) !important;
  animation:routeUnavailableDashNatural .72s linear infinite !important;
}

/* AKTYWNY: widoczna zielona animacja kierunku station_from -> station_to */
.leaflet-pane path.route-direction-flow,
.leaflet-pane path.route-animation-forced--direction{
  stroke-dasharray:18 20 !important;
  stroke-linecap:round !important;
  animation:routeDirectionForwardNatural .86s linear infinite !important;
}
.leaflet-pane path.route-direction-flow--active,
.leaflet-pane path.route-animation-forced--direction{
  stroke:var(--rail-ok) !important;
  opacity:.92 !important;
  filter:
    drop-shadow(0 0 8px rgba(52,211,153,.76))
    drop-shadow(0 0 16px rgba(52,211,153,.22)) !important;
}
.leaflet-pane path.route-direction-flow--warning{
  stroke:var(--rail-warn) !important;
  opacity:.58 !important;
  animation-duration:1.05s !important;
}
.leaflet-pane path.route-line-pro--muted,
.leaflet-pane path.route-glow--muted{
  animation:none !important;
  filter:none !important;
  opacity:.14 !important;
}

@keyframes routeDirectionForwardNatural{
  from{stroke-dashoffset:0;}
  to{stroke-dashoffset:-76;}
}
@keyframes routeUnavailableDashNatural{
  from{stroke-dashoffset:0;}
  to{stroke-dashoffset:-60;}
}
@keyframes routeFaultOrangeBlinkNatural{
  0%,100%{opacity:.98;}
  50%{opacity:.42;}
}
@keyframes routeFaultOrangeGlowNatural{
  0%,100%{opacity:.26;}
  50%{opacity:.62;}
}
@keyframes routeUnavailableGlowNatural{
  0%,100%{opacity:.22;}
  50%{opacity:.50;}
}
@keyframes routeGlowActiveNatural{
  0%,100%{opacity:.24;}
  50%{opacity:.42;}
}


/* === FIX: spokojne wczytywanie mapy dashboardu ===
   WyÄąâ€šĂ„â€¦czamy wizualne Ă˘â‚¬ĹľdoskakiwanieĂ˘â‚¬ĹĄ/migotanie mapy po powrocie na stronĂ„â„˘ gÄąâ€šÄ‚Ĺ‚wnĂ„â€¦. */
.app-shell[data-page="dashboard"] .main-content,
.app-shell[data-page="dashboard"].spa-loading .main-content{
  opacity:1 !important;
  transform:none !important;
  filter:none !important;
  transition:none !important;
}

.app-shell[data-page="dashboard"] #dashboardPolandMap,
.app-shell[data-page="dashboard"] .leaflet-polish-map,
.app-shell[data-page="dashboard"] .leaflet-container,
.app-shell[data-page="dashboard"] .leaflet-pane,
.app-shell[data-page="dashboard"] .leaflet-tile-container,
.app-shell[data-page="dashboard"] .leaflet-overlay-pane svg,
.app-shell[data-page="dashboard"] .leaflet-marker-pane,
.app-shell[data-page="dashboard"] .leaflet-tooltip-pane{
  transition:none !important;
  animation-duration:0s !important;
}

.app-shell[data-page="dashboard"] .leaflet-fade-anim .leaflet-tile,
.app-shell[data-page="dashboard"] .leaflet-zoom-animated,
.app-shell[data-page="dashboard"] .leaflet-zoom-anim .leaflet-zoom-animated{
  transition:none !important;
}

.app-shell[data-page="dashboard"] .map-ready-soft{
  opacity:1 !important;
}

/* Zostawiamy animacje statusÄ‚Ĺ‚w szlakÄ‚Ĺ‚w, ale bez agresywnego startowego fade caÄąâ€šej mapy. */
.app-shell[data-page="dashboard"] .route-direction-flow,
.app-shell[data-page="dashboard"] .route-unavailable-dash-flow,
.app-shell[data-page="dashboard"] .route-animation-forced--direction,
.app-shell[data-page="dashboard"] .route-animation-forced--unavailable,
.app-shell[data-page="dashboard"] .route-line-pro--fault,
.app-shell[data-page="dashboard"] .route-line-pro--unavailable,
.app-shell[data-page="dashboard"] .route-glow--active,
.app-shell[data-page="dashboard"] .route-glow--fault,
.app-shell[data-page="dashboard"] .route-glow--unavailable,
.app-shell[data-page="dashboard"] .station-marker-pro--alert span::after{
  animation-duration:revert !important;
}

/* === POPRAWKA: szlaki majĂ„â€¦ dokÄąâ€šadnie 3 stany + szare braki poÄąâ€šĂ„â€¦czenia === */
:root{
  --rail-ok:#22c55e;
  --rail-fault:#ef4444;
  --rail-off:#94a3b8;
}

.leaflet-pane path.route-line-pro,
.leaflet-pane path.route-line-pro--active{
  stroke:var(--rail-ok) !important;
  stroke-dasharray:none !important;
  filter:
    drop-shadow(0 0 8px rgba(34,197,94,.52))
    drop-shadow(0 0 16px rgba(34,197,94,.18)) !important;
}

.leaflet-pane path.route-glow,
.leaflet-pane path.route-glow--active{
  filter:blur(1.8px) drop-shadow(0 0 13px rgba(34,197,94,.38)) !important;
  animation:none !important;
}

.leaflet-pane path.route-line-pro--fault,
.leaflet-pane path.route-direction-flow--fault,
.leaflet-pane path.route-animation-forced--fault{
  stroke:var(--rail-fault) !important;
  stroke-dasharray:none !important;
  filter:
    drop-shadow(0 0 10px rgba(239,68,68,.86))
    drop-shadow(0 0 22px rgba(239,68,68,.30)) !important;
  animation:routeFaultRedBlinkNatural .95s ease-in-out infinite !important;
}

.leaflet-pane path.route-glow--fault,
.leaflet-pane path.route-glow--alert{
  filter:blur(2.2px) drop-shadow(0 0 20px rgba(239,68,68,.72)) !important;
  animation:routeFaultRedGlowNatural 1.05s ease-in-out infinite !important;
}

.leaflet-pane path.route-line-pro--unavailable,
.leaflet-pane path.route-unavailable-dash-flow,
.leaflet-pane path.route-animation-forced--unavailable{
  stroke:var(--rail-off) !important;
  stroke-dasharray:12 14 !important;
  stroke-linecap:round !important;
  filter:
    drop-shadow(0 0 7px rgba(148,163,184,.48))
    drop-shadow(0 0 15px rgba(148,163,184,.18)) !important;
  animation:none !important;
}

.leaflet-pane path.route-glow--unavailable{
  filter:blur(1.9px) drop-shadow(0 0 14px rgba(148,163,184,.42)) !important;
  animation:none !important;
}

.leaflet-pane path.route-direction-flow,
.leaflet-pane path.route-direction-flow--active,
.leaflet-pane path.route-animation-forced--direction{
  stroke:var(--rail-ok) !important;
  stroke-dasharray:18 20 !important;
  stroke-linecap:round !important;
  animation:routeDirectionForwardNatural .86s linear infinite !important;
}

.leaflet-pane path.route-line-pro--warning,
.leaflet-pane path.route-direction-flow--warning,
.leaflet-pane path.route-glow--warning{
  stroke:var(--rail-fault) !important;
  filter:
    drop-shadow(0 0 10px rgba(239,68,68,.78))
    drop-shadow(0 0 20px rgba(239,68,68,.24)) !important;
}

@keyframes routeFaultRedBlinkNatural{
  0%,100%{opacity:.98;}
  50%{opacity:.48;}
}
@keyframes routeFaultRedGlowNatural{
  0%,100%{opacity:.24;}
  50%{opacity:.56;}
}

/* === POPRAWKA: szlaki ciĂ„â€¦gÄąâ€še, bez animacji + zoomowe wybrzuszenie === */
:root{
  --rail-ok:#22c55e;
  --rail-fault:#ef4444;
  --rail-off:#94a3b8;
}

/* Wszystkie szlaki na mapie majĂ„â€¦ byĂ„â€ˇ zwykÄąâ€šĂ„â€¦, ciĂ„â€¦gÄąâ€šĂ„â€¦ liniĂ„â€¦. */
.leaflet-pane path.route-line-pro,
.leaflet-pane path.route-line-pro--active,
.leaflet-pane path.route-line-pro--fault,
.leaflet-pane path.route-line-pro--warning,
.leaflet-pane path.route-line-pro--unavailable,
.leaflet-pane path.route-animation-forced--fault,
.leaflet-pane path.route-animation-forced--unavailable,
.leaflet-pane path.route-animation-forced--direction{
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:none !important;
  transition:none !important;
}

/* Usuwamy warstwy kierunkowego/przerywanego przepÄąâ€šywu, nawet jeÄąâ€şli zostaÄąâ€šy po starszym cache JS. */
.leaflet-pane path.route-direction-flow,
.leaflet-pane path.route-direction-flow--active,
.leaflet-pane path.route-direction-flow--fault,
.leaflet-pane path.route-direction-flow--warning,
.leaflet-pane path.route-unavailable-dash-flow{
  display:none !important;
  stroke-dasharray:none !important;
  animation:none !important;
}

.leaflet-pane path.route-line-pro,
.leaflet-pane path.route-line-pro--active{
  stroke:var(--rail-ok) !important;
  filter:
    drop-shadow(0 0 7px rgba(34,197,94,.44))
    drop-shadow(0 0 15px rgba(34,197,94,.14)) !important;
}

.leaflet-pane path.route-line-pro--fault,
.leaflet-pane path.route-line-pro--warning{
  stroke:var(--rail-fault) !important;
  filter:
    drop-shadow(0 0 8px rgba(239,68,68,.70))
    drop-shadow(0 0 18px rgba(239,68,68,.22)) !important;
}

.leaflet-pane path.route-line-pro--unavailable{
  stroke:var(--rail-off) !important;
  filter:
    drop-shadow(0 0 6px rgba(148,163,184,.46))
    drop-shadow(0 0 14px rgba(148,163,184,.16)) !important;
}

/* PoÄąâ€şwiata zostaje statyczna, bez pulsowania. */
.leaflet-pane path.route-glow,
.leaflet-pane path.route-glow--active,
.leaflet-pane path.route-glow--fault,
.leaflet-pane path.route-glow--warning,
.leaflet-pane path.route-glow--unavailable,
.leaflet-pane path.route-glow--alert{
  animation:none !important;
  transition:none !important;
}

.leaflet-pane path.route-glow,
.leaflet-pane path.route-glow--active{
  filter:blur(1.8px) drop-shadow(0 0 12px rgba(34,197,94,.34)) !important;
  opacity:.24 !important;
}

.leaflet-pane path.route-glow--fault,
.leaflet-pane path.route-glow--warning,
.leaflet-pane path.route-glow--alert{
  filter:blur(2px) drop-shadow(0 0 16px rgba(239,68,68,.56)) !important;
  opacity:.30 !important;
}

.leaflet-pane path.route-glow--unavailable{
  filter:blur(1.8px) drop-shadow(0 0 13px rgba(148,163,184,.36)) !important;
  opacity:.25 !important;
}

/* Etap 5: lokalny renderer ikon bez CDN Font Awesome. */
.jk-local-icon,
.jk-local-icon.icon-svg,
.jk-local-icon.btn-svg,
.jk-local-icon.kpi-svg,
.jk-local-icon.event-svg,
.jk-local-icon.jk-profile-svg {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  text-align:center;
  stroke:none;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", sans-serif;
  font-weight:800;
  user-select:none;
}
.jk-local-icon.icon-svg { font-size:21px; }
.jk-local-icon.kpi-svg { font-size:25px; }
.jk-local-icon.btn-svg { font-size:17px; }
.jk-local-icon.event-svg { font-size:21px; }
.jk-local-icon.jk-profile-svg { font-size:18px; }
.topbar__chevron .jk-local-icon.icon-svg { font-size:15px; }
.user-dropdown .jk-local-icon.icon-svg { font-size:17px; }
.stat-card__icon .jk-local-icon { color:currentColor; }
.input-icon .jk-local-icon { font-size:14px; }
.users-table-wrap{padding:0 14px 8px;}
.users-table{border-collapse:separate;border-spacing:0 8px;}
.users-table thead tr{border-bottom:0;}
.users-table th{padding:7px 14px 9px;}
.users-table td{background:rgba(8,24,44,.36);border-top:1px solid rgba(77,132,194,.10);border-bottom:1px solid rgba(77,132,194,.10);}
.users-table td:first-child{border-left:1px solid rgba(77,132,194,.10);border-radius:12px 0 0 12px;}
.users-table td:last-child{border-right:1px solid rgba(77,132,194,.10);border-radius:0 12px 12px 0;}
.users-table .user-row:hover td{background:rgba(11,34,60,.56);}
.user-row[aria-selected="true"] td {
  background:linear-gradient(90deg, rgba(14,72,140,.28), rgba(8,26,46,.82));
  border-top-color:rgba(39,168,255,.26);
  border-bottom-color:rgba(39,168,255,.20);
}
.user-row[aria-selected="true"] td:first-child {
  border-left-color:var(--blue);
  box-shadow: inset 3px 0 0 var(--blue);
}
#usersLimit{width:86px;min-width:86px;max-width:86px;flex:0 0 86px;padding-right:34px;}
#userFormMessage{min-height:18px;}

/* UÄąÄ˝ytkownicy Ă˘â‚¬â€ť czystsza tabela, bez blokowego tÄąâ€ša komÄ‚Ĺ‚rek */
.users-table-wrap{
  padding:0 18px 12px !important;
}
.users-table{
  width:100%;
  border-collapse:collapse !important;
  border-spacing:0 !important;
}
.users-table thead tr{
  border-bottom:1px solid rgba(77,132,194,.16) !important;
}
.users-table th{
  padding:10px 14px !important;
}
.users-table tbody tr{
  background:transparent !important;
  border-bottom:1px solid rgba(77,132,194,.11);
  transition:background .16s ease, box-shadow .16s ease;
}
.users-table tbody tr:last-child{
  border-bottom:0;
}
.users-table td{
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:14px 14px !important;
}
.users-table .user-row:hover td{
  background:rgba(11,29,50,.42) !important;
}
.users-table .user-row[aria-selected="true"]{
  background:linear-gradient(90deg, rgba(14,72,140,.22), rgba(8,26,46,.58)) !important;
  box-shadow:inset 3px 0 0 var(--blue);
}
.users-table .user-row[aria-selected="true"] td{
  background:transparent !important;
  border:0 !important;
}
.users-table .user-row[aria-selected="true"] td:first-child{
  box-shadow:none !important;
}
.users-actions{
  gap:6px;
  flex-wrap:nowrap;
}
.users-actions .btn-icon{
  width:30px;
  height:30px;
}
#usersLimit{
  width:86px !important;
  min-width:86px !important;
  max-width:86px !important;
  flex:0 0 86px !important;
  padding-right:34px !important;
}
.user-role-assign{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
}
.user-role-assign .input{
  min-width:0;
  width:100%;
}
.user-email-note{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:12px 14px;
  margin-top:14px;
  border:1px solid rgba(39,168,255,.22);
  border-radius:14px;
  background:rgba(8,28,50,.62);
  color:#9fb7d0;
  font-size:12px;
  line-height:1.45;
}
.user-email-note strong{
  display:block;
  color:#e8f4ff;
  font-size:12.5px;
  margin-bottom:2px;
}
.user-email-note .fa-solid{
  color:var(--blue);
  margin-top:2px;
}
@media (max-width: 1180px){
  .user-role-assign{
    grid-template-columns:1fr;
  }
}

/* ===== UÄąÄ˝ytkownicy: czysta tabela, role w zakÄąâ€šadce, aktywnoÄąâ€şĂ„â€ˇ ===== */
.notifications-board .users-table-wrap{
  padding:0 18px 10px !important;
}
.notifications-board .users-table{
  width:100% !important;
  border-collapse:collapse !important;
  border-spacing:0 !important;
  background:transparent !important;
}
.notifications-board .users-table thead,
.notifications-board .users-table thead tr,
.notifications-board .users-table thead th{
  background:transparent !important;
}
.notifications-board .users-table th{
  padding:12px 14px !important;
  border-bottom:1px solid rgba(77,132,194,.16) !important;
  color:rgba(169,191,214,.78) !important;
}
.notifications-board .users-table tbody,
.notifications-board .users-table tbody tr,
.notifications-board .users-table tbody td{
  background:transparent !important;
}
.notifications-board .users-table tbody tr{
  border-bottom:1px solid rgba(77,132,194,.11) !important;
  box-shadow:none !important;
}
.notifications-board .users-table tbody tr:last-child{
  border-bottom:0 !important;
}
.notifications-board .users-table td{
  padding:15px 14px !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.notifications-board .users-table .user-row:hover{
  background:rgba(11,29,50,.45) !important;
}
.notifications-board .users-table .user-row:hover td{
  background:transparent !important;
}
.notifications-board .users-table .user-row[aria-selected="true"]{
  background:linear-gradient(90deg, rgba(14,72,140,.24), rgba(8,26,46,.62)) !important;
  box-shadow:inset 3px 0 0 var(--blue) !important;
}
.notifications-board .users-table .user-row[aria-selected="true"] td{
  background:transparent !important;
}
.user-detail-tabs{
  margin:18px 0 16px;
}
.user-detail-pane[hidden]{
  display:none !important;
}
.user-current-role{
  margin-bottom:12px;
}
.user-activity-log{
  display:flex;
  flex-direction:column;
  gap:10px;
  max-height:520px;
  overflow:auto;
  padding-right:4px;
}
.user-activity-log__item{
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  gap:10px;
  padding:12px;
  border:1px solid rgba(77,132,194,.13);
  border-radius:14px;
  background:rgba(8,24,44,.42);
}
.user-activity-log__icon{
  width:34px;
  height:34px;
  border-radius:10px;
  display:grid;
  place-items:center;
  color:var(--blue);
  background:rgba(39,168,255,.12);
  border:1px solid rgba(39,168,255,.18);
}
.user-activity-log__top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:5px;
}
.user-activity-log__top strong{
  color:#edf6ff;
  font-size:13px;
}
.user-activity-log__top time{
  color:rgba(174,195,216,.68);
  font-size:11px;
  white-space:nowrap;
}
.user-activity-log__label{
  color:#dcecff;
  font-size:12.5px;
  margin-bottom:8px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.user-activity-log__meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px 12px;
  color:rgba(174,195,216,.72);
  font-size:11px;
}
.user-activity-log__meta span{
  display:inline-flex;
  align-items:center;
  gap:5px;
  min-width:0;
  max-width:100%;
}
.user-activity-log__meta .btn-svg{
  width:13px;
  height:13px;
  flex:0 0 13px;
}
.user-logs-section{
  display:flex;
  flex-direction:column;
  min-height:0;
}
.user-activity-head{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-bottom:12px;
}
.user-activity-head__top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  width:100%;
}
.user-activity-head h4{
  margin:0 !important;
}
.user-activity-head p{
  margin:0 !important;
  color:rgba(174,195,216,.74) !important;
  font-size:12px !important;
}
.user-activity-head .btn{
  flex:0 0 auto;
  min-height:34px;
  padding:0 12px;
  font-size:10px;
}
.user-activity-log__source{
  min-height:19px;
  padding:2px 7px;
  border-radius:999px;
  border:1px solid rgba(39,168,255,.22);
  background:rgba(39,168,255,.10);
  color:#8ed1ff;
  font-family:var(--font-display);
  font-size:10px;
  font-weight:800;
  letter-spacing:.06em;
}
.jk-profile-modal__dialog--logs{
  width:min(980px, calc(100vw - 34px));
  max-height:calc(100vh - 38px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.user-logs-modal__head{
  flex:0 0 auto;
}
.user-logs-filters{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;
  gap:10px;
  align-items:end;
  flex:0 0 auto;
  padding:2px 0 12px;
  border-bottom:1px solid rgba(77,132,194,.16);
}
.user-logs-filters .form-group{
  margin:0;
}
.user-logs-filters .btn{
  min-height:40px;
  white-space:nowrap;
}
.user-logs-modal__meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:32px;
  margin:10px 0 8px;
  padding:8px 11px;
  border:1px solid rgba(39,168,255,.18);
  border-radius:12px;
  background:rgba(39,168,255,.07);
  color:#a7d8ff;
  font-family:var(--font-display);
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.user-logs-modal__list{
  flex:1 1 auto;
  max-height:none;
  min-height:280px;
  overflow:auto;
  padding-right:7px;
}
.user-logs-modal__list .notifications-empty{
  min-height:220px;
  display:grid;
  place-items:center;
}
@media (max-width: 780px){
  .user-activity-head__top{
    align-items:flex-start;
    flex-direction:column;
  }
  .user-activity-head .btn{
    width:100%;
    justify-content:center;
  }
  .user-logs-filters{
    grid-template-columns:1fr;
  }
  .user-logs-filters .btn{
    width:100%;
    justify-content:center;
  }
}
.user-role-assign{
  margin-top:12px;
}

/* ===== Blokada aplikacji do czasu udostĂ„â„˘pnienia lokalizacji ===== */
body.jk-location-locked{
  overflow:hidden !important;
}
.jk-location-gate{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(0,8,16,.78);
  backdrop-filter:blur(16px);
}
.jk-location-gate__card{
  width:min(460px, 100%);
  border:1px solid rgba(77,132,194,.28);
  border-radius:24px;
  background:linear-gradient(180deg, rgba(10,28,50,.96), rgba(4,13,24,.98));
  box-shadow:0 28px 80px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.06);
  padding:28px;
  text-align:center;
  color:#eaf4ff;
}
.jk-location-gate__icon{
  width:56px;
  height:56px;
  border-radius:18px;
  margin:0 auto 16px;
  display:grid;
  place-items:center;
  color:#33d45d;
  background:rgba(51,212,93,.13);
  border:1px solid rgba(51,212,93,.25);
  font-size:30px;
}
.jk-location-gate__card h2{
  margin:0 0 10px;
  font-size:24px;
}
.jk-location-gate__card p{
  margin:0;
  color:rgba(190,208,228,.78);
  line-height:1.55;
}
.jk-location-gate__message{
  margin:18px 0;
  padding:10px 12px;
  border-radius:12px;
  background:rgba(39,168,255,.10);
  border:1px solid rgba(39,168,255,.18);
  color:#9fd7ff;
  font-size:13px;
}
.jk-location-gate__message.is-error{
  background:rgba(255,75,71,.10);
  border-color:rgba(255,75,71,.24);
  color:#ffb4b4;
}
.jk-location-gate .btn{
  width:100%;
  justify-content:center;
}

/* ===== UÄąÄ˝ytkownicy Ă˘â‚¬â€ť finalne czyszczenie tabeli i zakÄąâ€šadek ===== */
.users-table-wrap,
.notifications-board .users-table-wrap{
  padding:0 18px 10px !important;
  background:transparent !important;
}
.users-table,
.notifications-board .users-table{
  width:100% !important;
  border-collapse:collapse !important;
  border-spacing:0 !important;
  background:transparent !important;
}
.users-table thead,
.users-table thead tr,
.users-table thead th,
.notifications-board .users-table thead,
.notifications-board .users-table thead tr,
.notifications-board .users-table thead th{
  background:transparent !important;
}
.users-table th,
.notifications-board .users-table th{
  padding:11px 14px !important;
  border:0 !important;
  border-bottom:1px solid rgba(83,134,188,.18) !important;
  color:rgba(166,188,211,.78) !important;
  letter-spacing:.08em;
}
.users-table tbody,
.users-table tbody tr,
.users-table tbody td,
.notifications-board .users-table tbody,
.notifications-board .users-table tbody tr,
.notifications-board .users-table tbody td{
  background:transparent !important;
  box-shadow:none !important;
}
.users-table tbody tr,
.notifications-board .users-table tbody tr{
  border-bottom:1px solid rgba(83,134,188,.12) !important;
  outline:0 !important;
  transition:background-color .14s ease, box-shadow .14s ease;
}
.users-table tbody tr:last-child,
.notifications-board .users-table tbody tr:last-child{
  border-bottom:0 !important;
}
.users-table td,
.notifications-board .users-table td{
  padding:14px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.users-table .user-row:hover,
.notifications-board .users-table .user-row:hover{
  background:rgba(12,32,54,.38) !important;
}
.users-table .user-row:hover td,
.notifications-board .users-table .user-row:hover td{
  background:transparent !important;
}
.users-table .user-row[aria-selected="true"],
.notifications-board .users-table .user-row[aria-selected="true"]{
  background:rgba(14,72,140,.18) !important;
  box-shadow:inset 3px 0 0 var(--blue) !important;
}
.users-table .user-row[aria-selected="true"] td,
.notifications-board .users-table .user-row[aria-selected="true"] td{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.users-table .user-row[aria-selected="true"] td:first-child,
.notifications-board .users-table .user-row[aria-selected="true"] td:first-child{
  box-shadow:none !important;
}
.user-detail-pane .notifications-detail__section:first-child{
  padding-top:0;
}
.user-role-assign select:disabled{
  opacity:.72;
  cursor:not-allowed;
}
.jk-profile-modal{
  z-index:10000;
}

/* Akcje w nagÄąâ€šÄ‚Ĺ‚wku profilu uÄąÄ˝ytkownika */
.user-detail-header-actions{
  display:flex;
  align-items:flex-end;
  justify-content:flex-start;
  flex:0 0 auto;
}
@media (max-width:780px){
  .user-detail-header-actions{
    align-items:flex-start;
    width:100%;
  }
  .user-activity-head__top{
    align-items:flex-start;
    flex-direction:column;
  }
  .user-activity-head .btn{
    width:100%;
    justify-content:center;
  }
}

/* Poprawka ukÄąâ€šadu: przycisk "PokaÄąÄ˝ caÄąâ€šoÄąâ€şĂ„â€ˇ" w jednej linii z tytuÄąâ€šem "Logi pracownika" */
.user-activity-head__top{
  display:grid !important;
  grid-template-columns:minmax(0, 1fr) auto !important;
  align-items:center !important;
  gap:10px !important;
  width:100% !important;
}
.user-activity-head__top h4{
  min-width:0;
  margin:0 !important;
  line-height:1.2;
}
.user-activity-head__top [data-open-user-logs]{
  justify-self:end !important;
  align-self:center !important;
  width:auto !important;
  margin-left:auto !important;
  white-space:nowrap !important;
}

/* ===== Lokalizacje: cyfrowy pulpit blokady liniowej po klikniĂ„â„˘ciu stacji ===== */
.location-station-panel[hidden] {
  display: none !important;
}
.location-station-panel {
  display: grid;
  gap: 14px;
  margin-top: 16px;
}
.location-station-empty,
.railway-control-card,
.station-data-panel {
  border: 1px solid rgba(83,134,188,.24);
  border-radius: 16px;
  background:
    radial-gradient(circle at 18% 8%, rgba(29,111,232,.16), transparent 34%),
    linear-gradient(145deg, rgba(7,22,39,.98), rgba(3,13,25,.98));
  box-shadow: 0 18px 44px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.035);
}
.location-station-empty {
  padding: 18px;
  color: rgba(205,222,241,.78);
}
.railway-control-card {
  padding: 16px;
  overflow: hidden;
}
.railway-control-card__head,
.station-data-panel__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}
.section-kicker {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: #24e7ff;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .14em;
}
.section-kicker::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: currentColor;
  box-shadow: 0 0 12px currentColor;
}
.railway-control-card__head h3,
.station-data-panel__head h3 {
  margin: 5px 0 0;
  color: var(--text-primary);
  font-size: 22px;
  line-height: 1.1;
}
.railway-control-card__head p {
  margin: 7px 0 0;
  color: rgba(205,222,241,.72);
  font-size: 13px;
}
.railway-control-status {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto;
  min-height: 34px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(83,134,188,.22);
  background: rgba(5,18,33,.72);
  color: rgba(220,236,255,.92);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.railway-control-status i {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  background: #8392a5;
  box-shadow: 0 0 12px rgba(131,146,165,.55);
}
.railway-control-status--ok {
  border-color: rgba(34,197,94,.28);
  color: #bfffe0;
}
.railway-control-status--ok i { background: #22c55e; box-shadow: 0 0 14px rgba(34,197,94,.75); }
.railway-control-status--warn {
  border-color: rgba(245,158,11,.34);
  color: #ffdea7;
}
.railway-control-status--warn i { background: #f59e0b; box-shadow: 0 0 14px rgba(245,158,11,.78); }
.railway-control-status--fail {
  border-color: rgba(239,68,68,.36);
  color: #ffc8c8;
}
.railway-control-status--fail i { background: #ef4444; box-shadow: 0 0 16px rgba(239,68,68,.86); }
.railway-control-status--off {
  border-color: rgba(131,146,165,.28);
  color: #c7d4e6;
}
.railway-mimic-board {
  position: relative;
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(190px, 260px) minmax(260px, 1fr);
  align-items: center;
  gap: 16px;
  min-height: 278px;
  padding: 22px;
  border-radius: 16px;
  border: 1px solid rgba(60,108,163,.22);
  background:
    linear-gradient(rgba(31,79,128,.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(31,79,128,.08) 1px, transparent 1px),
    radial-gradient(circle at 50% 50%, rgba(14,165,233,.10), transparent 38%),
    #020a14;
  background-size: 22px 22px, 22px 22px, auto, auto;
  overflow: hidden;
}
.railway-mimic-board::before {
  content: '';
  position: absolute;
  inset: 12px;
  border-radius: 12px;
  border: 1px solid rgba(56,189,248,.12);
  pointer-events: none;
}
.railway-mimic-side {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 12px;
}
.rail-block {
  position: relative;
  display: grid;
  gap: 9px;
  padding: 12px;
  border-radius: 14px;
  border: 1px solid rgba(83,134,188,.20);
  background: rgba(7,22,39,.78);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035), 0 12px 28px rgba(0,0,0,.22);
}
.rail-block__head,
.rail-block__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.rail-block__head span {
  color: rgba(205,222,241,.70);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.rail-block__head b {
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 10px;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .06em;
  background: rgba(131,146,165,.12);
  color: #cbd5e1;
}
.rail-block__track {
  display: grid;
  grid-template-columns: 14px minmax(90px, 1fr) 14px;
  align-items: center;
  gap: 6px;
}
.rail-signal {
  width: 14px;
  height: 14px;
  border-radius: 999px;
  background: #475569;
  border: 2px solid rgba(5,15,27,.96);
  box-shadow: 0 0 0 1px rgba(148,163,184,.22), 0 0 12px rgba(148,163,184,.18);
}
.rail-track-line {
  position: relative;
  display: block;
  height: 20px;
  border-top: 2px solid rgba(195,218,241,.45);
  border-bottom: 2px solid rgba(195,218,241,.28);
}
.rail-track-line::before,
.rail-track-line::after {
  content: '';
  position: absolute;
  top: -6px;
  width: 2px;
  height: 30px;
  background: rgba(195,218,241,.22);
}
.rail-track-line::before { left: 26%; }
.rail-track-line::after { right: 26%; }
.rail-track-line em {
  position: absolute;
  inset: 7px 0 auto;
  height: 3px;
  border-radius: 999px;
  background: currentColor;
  opacity: .85;
  box-shadow: 0 0 14px currentColor;
}
.rail-block__name {
  min-height: 18px;
  color: var(--text-primary);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rail-block__name small {
  color: rgba(205,222,241,.55);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .04em;
}
.rail-block__meta {
  justify-content: flex-start;
  flex-wrap: wrap;
  color: rgba(205,222,241,.58);
  font-size: 10px;
  line-height: 1.35;
}
.rail-block__meta span {
  padding: 3px 6px;
  border-radius: 999px;
  background: rgba(15,41,70,.72);
  border: 1px solid rgba(83,134,188,.14);
}
.rail-block--ok { color: #22c55e; border-color: rgba(34,197,94,.24); }
.rail-block--ok .rail-signal { background: #22c55e; box-shadow: 0 0 0 1px rgba(34,197,94,.32), 0 0 14px rgba(34,197,94,.72); }
.rail-block--ok .rail-block__head b { color: #bfffe0; background: rgba(34,197,94,.13); }
.rail-block--warn { color: #f59e0b; border-color: rgba(245,158,11,.28); }
.rail-block--warn .rail-signal { background: #f59e0b; box-shadow: 0 0 0 1px rgba(245,158,11,.36), 0 0 15px rgba(245,158,11,.76); }
.rail-block--warn .rail-block__head b { color: #ffdea7; background: rgba(245,158,11,.14); }
.rail-block--fail { color: #ef4444; border-color: rgba(239,68,68,.30); animation: railwayBlockFaultPulse 1.2s ease-in-out infinite; }
.rail-block--fail .rail-signal { background: #ef4444; box-shadow: 0 0 0 1px rgba(239,68,68,.40), 0 0 16px rgba(239,68,68,.82); }
.rail-block--fail .rail-track-line em { animation: railwayDash 1s linear infinite; background-image: linear-gradient(90deg, currentColor 0 48%, transparent 48% 100%); background-size: 24px 100%; }
.rail-block--fail .rail-block__head b { color: #ffc8c8; background: rgba(239,68,68,.15); }
.rail-block--off,
.rail-block--empty { color: #8392a5; opacity: .72; }
.rail-block--off .rail-track-line em,
.rail-block--empty .rail-track-line em { opacity: .32; }
.railway-station-node {
  position: relative;
  z-index: 2;
  display: grid;
  justify-items: center;
  gap: 12px;
  padding: 20px 14px;
  border-radius: 18px;
  border: 1px solid rgba(56,189,248,.26);
  background:
    radial-gradient(circle at 50% 15%, rgba(56,189,248,.18), transparent 42%),
    linear-gradient(180deg, rgba(8,34,58,.96), rgba(3,13,25,.98));
  box-shadow: 0 24px 54px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.05);
}
.railway-station-node__lights {
  display: flex;
  gap: 8px;
}
.railway-station-node__lights i {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: #22c55e;
  box-shadow: 0 0 13px rgba(34,197,94,.7);
}
.railway-station-node__lights i:nth-child(2) { background: #38bdf8; box-shadow: 0 0 13px rgba(56,189,248,.7); }
.railway-station-node__lights i:nth-child(3) { background: #94a3b8; box-shadow: 0 0 10px rgba(148,163,184,.42); }
.railway-station-node__screen {
  width: 100%;
  min-height: 104px;
  display: grid;
  place-items: center;
  gap: 2px;
  padding: 12px;
  border-radius: 14px;
  border: 1px solid rgba(56,189,248,.22);
  background: rgba(1,8,16,.84);
  text-align: center;
  box-shadow: inset 0 0 30px rgba(56,189,248,.07);
}
.railway-station-node__screen span,
.railway-station-node__screen small {
  color: rgba(205,222,241,.62);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.railway-station-node__screen strong {
  max-width: 100%;
  color: #e9f5ff;
  font-size: 30px;
  line-height: 1;
  letter-spacing: .04em;
  text-transform: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 0 18px rgba(56,189,248,.38);
}
.railway-station-node__track {
  display: grid;
  grid-template-columns: 1fr 18px 1fr;
  align-items: center;
  width: 100%;
  gap: 8px;
}
.railway-station-node__track span {
  height: 4px;
  border-radius: 999px;
  background: #38bdf8;
  box-shadow: 0 0 16px rgba(56,189,248,.60);
}
.railway-station-node__track b {
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: #38bdf8;
  box-shadow: 0 0 18px rgba(56,189,248,.75);
}
.railway-station-node--warn { border-color: rgba(245,158,11,.34); }
.railway-station-node--warn .railway-station-node__track span,
.railway-station-node--warn .railway-station-node__track b { background: #f59e0b; box-shadow: 0 0 16px rgba(245,158,11,.72); }
.railway-station-node--fail { border-color: rgba(239,68,68,.38); animation: railwayStationAlarm 1.2s ease-in-out infinite; }
.railway-station-node--fail .railway-station-node__track span,
.railway-station-node--fail .railway-station-node__track b { background: #ef4444; box-shadow: 0 0 18px rgba(239,68,68,.86); }
.railway-station-node--off { opacity: .75; }
.railway-control-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
  color: rgba(205,222,241,.70);
  font-size: 11px;
  font-weight: 700;
}
.railway-control-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border-radius: 999px;
  border: 1px solid rgba(83,134,188,.16);
  background: rgba(5,18,33,.52);
}
.legend-dot--ok { background: #22c55e !important; }
.legend-dot--warn { background: #f59e0b !important; }
.legend-dot--fail { background: #ef4444 !important; }
.legend-dot--off { background: #8392a5 !important; }
.station-data-panel {
  padding: 16px;
}
.station-data-panel__head .btn {
  min-height: 34px;
  white-space: nowrap;
}
.station-data-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.station-data-grid > div {
  min-height: 72px;
  padding: 12px;
  border-radius: 13px;
  border: 1px solid rgba(83,134,188,.16);
  background: rgba(5,18,33,.58);
}
.station-data-grid span {
  display: block;
  margin-bottom: 7px;
  color: rgba(172,191,213,.62);
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.station-data-grid b {
  color: var(--text-primary);
  font-size: 16px;
  line-height: 1.2;
  word-break: break-word;
}
.station-routes-table-wrap {
  margin-top: 12px;
  overflow-x: auto;
  border: 1px solid rgba(83,134,188,.16);
  border-radius: 13px;
  background: rgba(5,18,33,.44);
}
.station-routes-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 680px;
}
.station-routes-table th,
.station-routes-table td {
  padding: 11px 12px;
  border-bottom: 1px solid rgba(83,134,188,.12);
  text-align: left;
  color: rgba(205,222,241,.82);
  font-size: 12px;
}
.station-routes-table th {
  color: rgba(172,191,213,.58);
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.station-routes-table tr:last-child td {
  border-bottom: 0;
}
.station-routes-table small {
  color: rgba(172,191,213,.52);
  font-size: 10px;
}
.station-route-status {
  display: inline-flex;
  padding: 4px 8px;
  border-radius: 999px;
  border: 1px solid rgba(131,146,165,.22);
  background: rgba(131,146,165,.12);
  color: #dbeafe;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.station-route-status--ok { color: #bfffe0; border-color: rgba(34,197,94,.28); background: rgba(34,197,94,.12); }
.station-route-status--warn { color: #ffdea7; border-color: rgba(245,158,11,.30); background: rgba(245,158,11,.13); }
.station-route-status--fail { color: #ffc8c8; border-color: rgba(239,68,68,.32); background: rgba(239,68,68,.14); }
.station-route-status--off { color: #cbd5e1; border-color: rgba(131,146,165,.24); background: rgba(131,146,165,.12); }
.locations-map-wrap .station-marker-pro--selected span {
  width: 12px !important;
  height: 12px !important;
  background: #24e7ff !important;
  box-shadow:
    0 0 0 3px rgba(5,15,27,.96),
    0 0 0 7px rgba(36,231,255,.16),
    0 0 22px rgba(36,231,255,.82) !important;
}
.map-popup-note {
  margin-top: 7px;
  padding: 7px 8px;
  border-radius: 9px;
  border: 1px solid rgba(56,189,248,.18);
  background: rgba(56,189,248,.08);
  color: rgba(205,222,241,.72);
  font-size: 11px;
  line-height: 1.35;
}
@keyframes railwayDash {
  from { background-position-x: 0; }
  to { background-position-x: -48px; }
}
@keyframes railwayBlockFaultPulse {
  0%, 100% { box-shadow: inset 0 1px 0 rgba(255,255,255,.035), 0 12px 28px rgba(0,0,0,.22); }
  50% { box-shadow: inset 0 1px 0 rgba(255,255,255,.035), 0 0 28px rgba(239,68,68,.26); }
}
@keyframes railwayStationAlarm {
  0%, 100% { box-shadow: 0 24px 54px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.05); }
  50% { box-shadow: 0 24px 54px rgba(0,0,0,.36), 0 0 38px rgba(239,68,68,.28), inset 0 1px 0 rgba(255,255,255,.05); }
}
@media (max-width: 1200px) {
  .railway-mimic-board {
    grid-template-columns: 1fr;
  }
  .railway-station-node {
    order: -1;
  }
  .station-data-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 720px) {
  .railway-control-card__head,
  .station-data-panel__head {
    flex-direction: column;
    align-items: stretch;
  }
  .railway-control-status,
  .station-data-panel__head .btn {
    justify-content: center;
    width: 100%;
  }
  .railway-mimic-board {
    padding: 14px;
    gap: 12px;
  }
  .station-data-grid {
    grid-template-columns: 1fr;
  }
  .rail-block__meta {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ===== Lokalizacje: pulpit blokady w popupie po klikniĂ„â„˘ciu Ă˘â‚¬ĹľPokaÄąÄ˝ urzĂ„â€¦dzeniaĂ˘â‚¬ĹĄ ===== */
.leaflet-popup.map-popup-shell .map-popup-button{
  appearance:none;
  font:inherit;
  cursor:pointer;
  text-transform:none;
}
.leaflet-popup.map-popup-shell .map-popup-button:focus-visible{
  outline:2px solid rgba(56,189,248,.9);
  outline-offset:2px;
}
body.station-devices-modal-open{
  overflow:hidden;
}
.station-devices-modal[hidden]{
  display:none !important;
}
.station-devices-modal{
  position:fixed;
  inset:0;
  z-index:9999;
  display:grid;
  place-items:center;
  padding:22px;
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease;
}
.station-devices-modal.is-open{
  opacity:1;
  pointer-events:auto;
}
.station-devices-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(1,6,12,.78);
  backdrop-filter:blur(10px);
}
.station-devices-modal__dialog{
  position:relative;
  z-index:1;
  width:min(1240px, calc(100vw - 44px));
  max-height:calc(100vh - 44px);
  overflow:auto;
  border:1px solid rgba(83,134,188,.34);
  border-radius:20px;
  background:
    radial-gradient(circle at 18% 0%, rgba(29,111,232,.18), transparent 36%),
    linear-gradient(145deg, rgba(7,22,39,.99), rgba(3,11,21,.99));
  box-shadow:0 30px 90px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.045);
  transform:translateY(10px) scale(.985);
  transition:transform .18s ease;
}
.station-devices-modal.is-open .station-devices-modal__dialog{
  transform:translateY(0) scale(1);
}
.station-devices-modal__content{
  display:grid;
  gap:14px;
  padding:18px;
}
.station-devices-modal__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:2px 46px 0 2px;
}
.station-devices-modal__head h2{
  margin:6px 0 0;
  color:var(--text-primary);
  font-size:26px;
  line-height:1.1;
}
.station-devices-modal__code{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:32px;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(56,189,248,.28);
  background:rgba(56,189,248,.10);
  color:#dff3ff;
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.station-devices-modal__close{
  position:absolute;
  top:12px;
  right:12px;
  z-index:2;
  width:34px;
  height:34px;
  border-radius:10px;
  border:1px solid rgba(83,134,188,.28);
  background:rgba(5,18,33,.82);
  color:#dcecff;
  font-size:24px;
  line-height:1;
  cursor:pointer;
  box-shadow:0 10px 24px rgba(0,0,0,.25);
}
.station-devices-modal__close:hover{
  color:#fff;
  border-color:rgba(56,189,248,.50);
  background:rgba(14,165,233,.16);
}
.station-devices-modal .railway-control-card,
.station-devices-modal .station-data-panel{
  margin:0;
}
.station-devices-modal .railway-mimic-board{
  min-height:300px;
}
.station-devices-modal .station-data-panel__head{
  align-items:center;
}
@media (max-width: 820px){
  .station-devices-modal{
    padding:10px;
  }
  .station-devices-modal__dialog{
    width:calc(100vw - 20px);
    max-height:calc(100vh - 20px);
    border-radius:16px;
  }
  .station-devices-modal__content{
    padding:14px;
  }
  .station-devices-modal__head{
    flex-direction:column;
    padding-right:42px;
  }
  .station-devices-modal__head h2{
    font-size:22px;
  }
}

/* ===== Lokalizacje: popup szlaku z dwoma posterunkami i wyjÄąâ€şciami ===== */
.railway-route-mimic{
  position:relative;
  display:grid;
  grid-template-columns:minmax(260px, 1fr) minmax(300px, .9fr) minmax(260px, 1fr);
  gap:16px;
  align-items:stretch;
  min-height:330px;
  padding:22px;
  border-radius:16px;
  border:1px solid rgba(60,108,163,.22);
  background:
    linear-gradient(rgba(31,79,128,.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(31,79,128,.08) 1px, transparent 1px),
    radial-gradient(circle at 50% 50%, rgba(14,165,233,.10), transparent 38%),
    #020a14;
  background-size:22px 22px, 22px 22px, auto, auto;
  overflow:hidden;
}
.railway-route-mimic::before{
  content:'';
  position:absolute;
  inset:12px;
  border-radius:12px;
  border:1px solid rgba(56,189,248,.12);
  pointer-events:none;
}
.route-posterunek,
.route-center-block{
  position:relative;
  z-index:1;
}
.route-posterunek{
  display:grid;
  grid-template-rows:auto 1fr;
  gap:12px;
  min-width:0;
}
.route-posterunek .railway-station-node{
  min-height:218px;
}
.route-posterunek .railway-station-node__screen{
  min-height:92px;
}
.route-posterunek .railway-station-node__screen strong{
  font-size:28px;
}
.route-center-block{
  display:grid;
  align-items:center;
}
.route-main-block{
  min-height:174px;
  align-content:center;
  border-width:1px;
  background:
    radial-gradient(circle at 50% 50%, rgba(56,189,248,.10), transparent 52%),
    rgba(7,22,39,.86);
}
.route-main-block__track{
  grid-template-columns:16px minmax(180px, 1fr) 16px;
  gap:8px;
}
.route-main-block__track .rail-track-line{
  height:26px;
}
.route-main-block__track .rail-track-line::before,
.route-main-block__track .rail-track-line::after{
  height:36px;
}
.route-main-block__name{
  text-align:center;
  white-space:normal;
  text-overflow:clip;
}
.route-exits{
  display:grid;
  gap:10px;
  padding:12px;
  border-radius:15px;
  border:1px solid rgba(83,134,188,.18);
  background:rgba(3,13,25,.54);
  min-width:0;
}
.route-exits__title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  color:rgba(205,222,241,.78);
  font-size:10px;
  font-weight:900;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.route-exits__title b{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  border-radius:999px;
  border:1px solid rgba(56,189,248,.24);
  background:rgba(56,189,248,.10);
  color:#dff3ff;
  font-size:11px;
}
.route-exits__empty{
  padding:12px;
  border-radius:12px;
  border:1px dashed rgba(83,134,188,.24);
  background:rgba(5,18,33,.42);
  color:rgba(205,222,241,.62);
  font-size:12px;
  line-height:1.45;
}
.route-control-card .railway-control-status{
  max-width:270px;
  white-space:normal;
  text-align:right;
  justify-content:flex-end;
}
.route-data-panel .station-devices-modal__code{
  flex:0 0 auto;
}
.station-devices-modal .railway-route-mimic{
  min-height:350px;
}
@media (max-width: 1320px){
  .railway-route-mimic{
    grid-template-columns:1fr;
  }
  .route-center-block{
    order:-1;
  }
  .route-main-block__track{
    grid-template-columns:16px minmax(120px, 1fr) 16px;
  }
}
@media (max-width: 720px){
  .railway-route-mimic{
    padding:14px;
    gap:12px;
  }
  .route-control-card .railway-control-status{
    max-width:none;
    text-align:center;
    justify-content:center;
  }
  .route-posterunek .railway-station-node__screen strong{
    font-size:24px;
  }
}

/* ===== Lokalizacje: uproszczony pulpit blokady liniowej + sygnaÄąâ€š wjazdowy ===== */
.rail-block__signal-row{
  display:grid;
  grid-template-columns:minmax(118px, auto) minmax(110px, 1fr);
  align-items:center;
  gap:10px;
}
.entry-signal{
  display:inline-grid;
  grid-template-columns:18px auto;
  grid-template-areas:"lamp label" "lamp value";
  align-items:center;
  column-gap:8px;
  min-height:38px;
  padding:7px 9px;
  border-radius:12px;
  border:1px solid rgba(83,134,188,.20);
  background:rgba(2,10,20,.72);
  color:rgba(223,243,255,.92);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.entry-signal i{
  grid-area:lamp;
  width:16px;
  height:16px;
  border-radius:999px;
  border:2px solid rgba(2,10,20,.96);
  background:#ef4444;
  box-shadow:0 0 0 1px rgba(239,68,68,.45), 0 0 16px rgba(239,68,68,.78);
}
.entry-signal b{
  grid-area:label;
  color:rgba(205,222,241,.70);
  font-size:9px;
  line-height:1.1;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
  white-space:nowrap;
}
.entry-signal em{
  grid-area:value;
  font-style:normal;
  color:#ffc8c8;
  font-size:11px;
  line-height:1.1;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.entry-signal--green{
  border-color:rgba(34,197,94,.24);
  background:linear-gradient(180deg, rgba(34,197,94,.10), rgba(2,10,20,.72));
}
.entry-signal--green i{
  background:#22c55e;
  box-shadow:0 0 0 1px rgba(34,197,94,.45), 0 0 16px rgba(34,197,94,.78);
}
.entry-signal--green em{ color:#bfffe0; }
.entry-signal--red{
  border-color:rgba(239,68,68,.28);
  background:linear-gradient(180deg, rgba(239,68,68,.10), rgba(2,10,20,.72));
}
.entry-signal-dot{
  width:9px;
  height:9px;
  border-radius:999px;
  display:inline-block;
  box-shadow:0 0 12px currentColor;
}
.entry-signal-dot--green{ background:#22c55e; color:#22c55e; }
.entry-signal-dot--red{ background:#ef4444; color:#ef4444; }
.rail-block__signal-row .rail-track-line{
  height:28px;
  border-top:2px solid rgba(195,218,241,.50);
  border-bottom:2px solid rgba(195,218,241,.25);
}
.rail-block__signal-row .rail-track-line::before,
.rail-block__signal-row .rail-track-line::after{
  height:34px;
  top:-6px;
}
.rail-track-line--left::after,
.rail-track-line--right::before{
  content:'Ă˘â‚¬Ä…';
  width:auto;
  height:auto;
  top:50%;
  transform:translateY(-54%);
  background:transparent;
  color:currentColor;
  font-size:22px;
  line-height:1;
  font-weight:900;
  text-shadow:0 0 12px currentColor;
}
.rail-track-line--right::before{
  content:'Ă˘â‚¬Ĺź';
}
.railway-station-node{
  gap:10px;
}
.railway-station-node__signal{
  width:100%;
  display:flex;
  justify-content:center;
}
.railway-station-node__signal .entry-signal{
  width:min(100%, 210px);
  justify-content:center;
}
.railway-station-node__screen{
  background:
    linear-gradient(180deg, rgba(0,0,0,.92), rgba(2,10,20,.94)),
    rgba(1,8,16,.88);
  border-color:rgba(56,189,248,.28);
}
.route-main-block__direction{
  display:grid;
  grid-template-columns:minmax(90px, auto) minmax(180px, 1fr) minmax(90px, auto);
  align-items:center;
  gap:10px;
  margin:2px 0;
}
.route-blockade-arrow{
  display:grid;
  grid-template-columns:24px minmax(120px, 1fr) 24px;
  align-items:center;
  gap:8px;
  color:currentColor;
}
.route-blockade-arrow b{
  color:currentColor;
  font-size:26px;
  line-height:1;
  text-align:center;
  text-shadow:0 0 14px currentColor;
}
.route-blockade-arrow span{
  position:relative;
  display:block;
  height:30px;
  border-top:3px solid rgba(220,236,255,.52);
  border-bottom:3px solid rgba(220,236,255,.28);
}
.route-blockade-arrow span::before,
.route-blockade-arrow span::after{
  content:'';
  position:absolute;
  top:-7px;
  width:2px;
  height:38px;
  background:rgba(220,236,255,.20);
}
.route-blockade-arrow span::before{ left:24%; }
.route-blockade-arrow span::after{ right:24%; }
.route-blockade-arrow span em{
  position:absolute;
  left:0;
  right:0;
  top:10px;
  height:4px;
  border-radius:999px;
  background:currentColor;
  box-shadow:0 0 18px currentColor;
}
.route-main-block .entry-signal{
  min-width:92px;
  justify-content:center;
}
.route-main-block .rail-block__meta{
  justify-content:center;
}
.rail-block--fail .route-blockade-arrow span em,
.rail-block--fail .rail-block__signal-row .rail-track-line em{
  animation:railwayDash 1s linear infinite;
  background-image:linear-gradient(90deg, currentColor 0 48%, transparent 48% 100%);
  background-size:24px 100%;
}
.rail-block--warn .entry-signal i,
.rail-block--off .entry-signal i,
.rail-block--empty .entry-signal i{
  background:#ef4444;
  box-shadow:0 0 0 1px rgba(239,68,68,.45), 0 0 16px rgba(239,68,68,.78);
}
.rail-block--warn .entry-signal em,
.rail-block--off .entry-signal em,
.rail-block--empty .entry-signal em{
  color:#ffc8c8;
}
@media (max-width:720px){
  .rail-block__signal-row,
  .route-main-block__direction{
    grid-template-columns:1fr;
  }
  .route-blockade-arrow{
    grid-template-columns:24px minmax(80px, 1fr) 24px;
  }
  .entry-signal{
    width:100%;
  }
}

/* ===== Lokalizacje: szerszy popup pulpitu szlaku + przewijanie ===== */
.station-devices-modal{
  padding:22px 5vw !important;
}
.station-devices-modal__dialog{
  width:90vw !important;
  max-width:none !important;
  max-height:calc(100vh - 44px) !important;
  overflow:auto !important;
  scrollbar-gutter:stable both-edges;
}
.station-devices-modal__content{
  min-width:0;
}
.station-devices-modal .route-control-card{
  overflow-x:auto !important;
  overflow-y:hidden !important;
  padding:18px !important;
  scrollbar-gutter:stable;
}
.station-devices-modal .route-control-card .railway-control-card__head,
.station-devices-modal .route-control-card .railway-control-legend{
  min-width:0;
}
.station-devices-modal .railway-route-mimic{
  overflow:visible !important;
}
@media (min-width:901px){
  .station-devices-modal .railway-route-mimic{
    min-width:1460px !important;
    grid-template-columns:minmax(390px, 1.05fr) minmax(390px, .9fr) minmax(390px, 1.05fr) !important;
    gap:24px !important;
    padding:24px !important;
    min-height:500px !important;
  }
  .station-devices-modal .route-posterunek{
    gap:14px !important;
  }
  .station-devices-modal .route-posterunek .railway-station-node{
    min-height:210px !important;
  }
  .station-devices-modal .route-posterunek .railway-station-node__screen{
    min-height:96px !important;
  }
  .station-devices-modal .route-center-block{
    min-width:0;
  }
  .station-devices-modal .route-main-block{
    min-height:220px !important;
    padding:18px !important;
  }
  .station-devices-modal .route-blockade-arrow{
    grid-template-columns:32px minmax(210px, 1fr) 32px !important;
  }
  .station-devices-modal .route-main-block__direction{
    grid-template-columns:minmax(105px, auto) minmax(240px, 1fr) minmax(105px, auto) !important;
  }
  .station-devices-modal .route-exits{
    max-height:430px;
    overflow:auto;
    padding:14px !important;
  }
}
.station-devices-modal__dialog::-webkit-scrollbar,
.station-devices-modal .route-control-card::-webkit-scrollbar,
.station-devices-modal .route-exits::-webkit-scrollbar{
  width:10px;
  height:10px;
}
.station-devices-modal__dialog::-webkit-scrollbar-track,
.station-devices-modal .route-control-card::-webkit-scrollbar-track,
.station-devices-modal .route-exits::-webkit-scrollbar-track{
  background:rgba(2,10,20,.72);
  border-radius:999px;
}
.station-devices-modal__dialog::-webkit-scrollbar-thumb,
.station-devices-modal .route-control-card::-webkit-scrollbar-thumb,
.station-devices-modal .route-exits::-webkit-scrollbar-thumb{
  background:rgba(56,189,248,.42);
  border-radius:999px;
  border:2px solid rgba(2,10,20,.72);
}
.station-devices-modal__dialog::-webkit-scrollbar-thumb:hover,
.station-devices-modal .route-control-card::-webkit-scrollbar-thumb:hover,
.station-devices-modal .route-exits::-webkit-scrollbar-thumb:hover{
  background:rgba(56,189,248,.68);
}
@media (max-width:900px){
  .station-devices-modal{
    padding:10px !important;
  }
  .station-devices-modal__dialog{
    width:calc(100vw - 20px) !important;
    max-height:calc(100vh - 20px) !important;
  }
  .station-devices-modal .route-control-card{
    overflow-x:auto !important;
  }
  .station-devices-modal .railway-route-mimic{
    min-width:920px !important;
    grid-template-columns:minmax(260px, 1fr) minmax(280px, .9fr) minmax(260px, 1fr) !important;
    gap:14px !important;
  }
  .station-devices-modal .route-center-block{
    order:0 !important;
  }
}

/* ===== Lokalizacje: czysty pulpit szlaku bez szlakÄ‚Ĺ‚w pod posterunkiem ===== */
.station-devices-modal .route-control-card{
  overflow:auto !important;
}
.station-devices-modal .railway-route-mimic,
.railway-route-mimic{
  display:block !important;
  min-height:auto !important;
  padding:24px !important;
  overflow:hidden !important;
}
.route-line-layout{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(330px, 1fr) minmax(420px, .9fr) minmax(330px, 1fr);
  align-items:center;
  gap:26px;
  min-width:1180px;
}
.route-line-layout::before{
  content:'';
  position:absolute;
  left:10%;
  right:10%;
  top:50%;
  height:2px;
  transform:translateY(-50%);
  background:linear-gradient(90deg, transparent, rgba(56,189,248,.26), rgba(226,239,255,.34), rgba(56,189,248,.26), transparent);
  box-shadow:0 0 18px rgba(56,189,248,.16);
  pointer-events:none;
}
.route-posterunek{
  display:block !important;
  min-width:0;
}
.route-posterunek .railway-station-node{
  min-height:220px !important;
  height:100%;
  isolation:isolate;
}
.route-posterunek .railway-station-node__track{
  margin-top:4px;
}
.route-center-block{
  display:grid !important;
  align-items:center !important;
  min-width:0;
}
.route-main-block{
  position:relative;
  min-height:190px !important;
  padding:20px !important;
  z-index:2;
}
.route-exits-clean-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  margin-top:14px;
}
.route-exits--clean{
  min-height:0;
  max-height:260px;
  overflow:auto;
  padding:12px;
  border-radius:16px;
  border:1px solid rgba(83,134,188,.20);
  background:
    linear-gradient(180deg, rgba(8,29,51,.88), rgba(3,13,25,.74));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.route-exits--clean .route-exits__title{
  position:sticky;
  top:0;
  z-index:2;
  padding:4px 2px 10px;
  background:linear-gradient(180deg, rgba(8,29,51,.98), rgba(8,29,51,.82));
  border-bottom:1px solid rgba(83,134,188,.16);
  margin-bottom:10px;
}
.route-exit-row{
  display:grid;
  gap:9px;
  padding:12px;
  border-radius:13px;
  border:1px solid rgba(83,134,188,.18);
  background:rgba(5,18,33,.64);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.route-exit-row + .route-exit-row{
  margin-top:9px;
}
.route-exit-row__top,
.route-exit-row__main,
.route-exit-row__meta{
  display:flex;
  align-items:center;
  gap:8px;
}
.route-exit-row__top{
  justify-content:space-between;
}
.route-exit-row__top span{
  color:rgba(205,222,241,.70);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.route-exit-row__top b{
  padding:4px 7px;
  border-radius:999px;
  font-size:10px;
  line-height:1;
  text-transform:uppercase;
  letter-spacing:.06em;
  background:rgba(131,146,165,.12);
  color:#cbd5e1;
}
.route-exit-row__main{
  justify-content:space-between;
  flex-wrap:wrap;
}
.route-exit-row__main strong{
  color:var(--text-primary);
  font-size:13px;
  line-height:1.25;
  font-weight:900;
}
.route-exit-row__main small{
  color:rgba(205,222,241,.55);
  font-size:10px;
  font-weight:900;
  letter-spacing:.04em;
}
.route-exit-row__signal{
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:6px 9px;
  border-radius:999px;
  border:1px solid rgba(83,134,188,.18);
  color:rgba(223,243,255,.88);
  background:rgba(2,10,20,.64);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.route-exit-row__signal i{
  width:10px;
  height:10px;
  border-radius:999px;
  background:#ef4444;
  box-shadow:0 0 12px rgba(239,68,68,.74);
}
.route-exit-row__signal--green{
  border-color:rgba(34,197,94,.24);
  background:rgba(34,197,94,.10);
  color:#bfffe0;
}
.route-exit-row__signal--green i{
  background:#22c55e;
  box-shadow:0 0 12px rgba(34,197,94,.74);
}
.route-exit-row__signal--red{
  border-color:rgba(239,68,68,.24);
  background:rgba(239,68,68,.10);
  color:#ffc8c8;
}
.route-exit-row__meta{
  justify-content:flex-start;
  flex-wrap:wrap;
  color:rgba(205,222,241,.58);
  font-size:10px;
  line-height:1.35;
}
.route-exit-row__meta span{
  padding:3px 6px;
  border-radius:999px;
  background:rgba(15,41,70,.72);
  border:1px solid rgba(83,134,188,.14);
}
.route-exit-row--ok{ border-color:rgba(34,197,94,.22); }
.route-exit-row--ok .route-exit-row__top b{ color:#bfffe0; background:rgba(34,197,94,.13); }
.route-exit-row--warn{ border-color:rgba(245,158,11,.26); }
.route-exit-row--warn .route-exit-row__top b{ color:#ffdea7; background:rgba(245,158,11,.14); }
.route-exit-row--fail{
  border-color:rgba(239,68,68,.30);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 0 28px rgba(239,68,68,.08);
}
.route-exit-row--fail .route-exit-row__top b{ color:#ffc8c8; background:rgba(239,68,68,.15); }
.route-exit-row--off{ opacity:.72; }
.route-exits--clean::-webkit-scrollbar{
  width:10px;
  height:10px;
}
.route-exits--clean::-webkit-scrollbar-track{
  background:rgba(2,10,20,.72);
  border-radius:999px;
}
.route-exits--clean::-webkit-scrollbar-thumb{
  background:rgba(56,189,248,.42);
  border-radius:999px;
  border:2px solid rgba(2,10,20,.72);
}
.route-exits--clean::-webkit-scrollbar-thumb:hover{
  background:rgba(56,189,248,.68);
}
@media (min-width:901px){
  .station-devices-modal .railway-route-mimic{
    min-width:1280px !important;
  }
  .station-devices-modal .route-exits-clean-grid{
    min-width:1280px !important;
  }
}
@media (max-width:900px){
  .station-devices-modal .railway-route-mimic{
    min-width:920px !important;
  }
  .route-line-layout{
    grid-template-columns:minmax(260px, 1fr) minmax(300px, .9fr) minmax(260px, 1fr);
    min-width:880px;
    gap:14px;
  }
  .route-exits-clean-grid{
    min-width:880px;
  }
}
@media (max-width:720px){
  .route-exits-clean-grid{
    grid-template-columns:1fr;
    min-width:0;
  }
}

/* ===== Lokalizacje: pulpit szlaku bez podglĂ„â€¦du szlakÄ‚Ĺ‚w wychodzĂ„â€¦cych + sygnaÄąâ€šy wjazd/wyjazd ===== */
.station-devices-modal .route-control-card{
  overflow-x:auto !important;
  overflow-y:hidden !important;
}
.route-line-layout--signals{
  grid-template-columns:minmax(300px,.82fr) minmax(560px,1.35fr) minmax(300px,.82fr) !important;
  align-items:stretch !important;
  gap:24px !important;
  min-width:1260px !important;
}
.route-line-layout--signals::before{
  top:50%;
  left:12%;
  right:12%;
  opacity:.42;
}
.route-center-block--parallel{
  display:grid !important;
  align-content:center !important;
  gap:14px !important;
}
.route-center-block--parallel .route-main-block{
  min-height:0 !important;
}
.route-main-block__parallel-label{
  justify-self:start;
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 8px;
  border-radius:999px;
  border:1px solid rgba(83,134,188,.18);
  background:rgba(15,41,70,.54);
  color:rgba(205,222,241,.72);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.route-main-block__directions{
  display:grid;
  gap:10px;
}
.route-direction-row{
  display:grid;
  grid-template-columns:minmax(150px,.9fr) auto minmax(120px,1fr) auto;
  align-items:center;
  gap:10px;
  padding:10px;
  border-radius:13px;
  border:1px solid rgba(83,134,188,.18);
  background:rgba(2,10,20,.46);
}
.route-direction-row__label{
  display:grid;
  gap:2px;
  min-width:0;
}
.route-direction-row__label span{
  color:rgba(205,222,241,.55);
  font-size:9px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.route-direction-row__label b{
  color:var(--text-primary);
  font-size:11px;
  line-height:1.15;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.route-direction-line{
  position:relative;
  display:grid;
  place-items:center;
  min-width:110px;
  height:24px;
  color:currentColor;
}
.route-direction-line::before,
.route-direction-line::after{
  content:'';
  position:absolute;
  left:0;
  right:0;
  height:2px;
  border-radius:999px;
  background:rgba(195,218,241,.34);
}
.route-direction-line::before{ top:7px; }
.route-direction-line::after{ bottom:7px; }
.route-direction-line em{
  position:absolute;
  left:0;
  right:0;
  top:50%;
  height:3px;
  transform:translateY(-50%);
  border-radius:999px;
  background:currentColor;
  box-shadow:0 0 14px currentColor;
  opacity:.9;
}
.route-direction-line b{
  position:relative;
  z-index:1;
  display:grid;
  place-items:center;
  width:24px;
  height:24px;
  border-radius:999px;
  background:rgba(2,10,20,.92);
  border:1px solid rgba(83,134,188,.24);
  color:currentColor;
  font-size:18px;
  line-height:1;
  box-shadow:0 0 16px rgba(56,189,248,.12);
}
.rail-block--fail .route-direction-line em{
  animation:railwayDash 1s linear infinite;
  background-image:linear-gradient(90deg, currentColor 0 48%, transparent 48% 100%);
  background-size:24px 100%;
}
.railway-station-node__signals{
  width:100%;
  display:grid;
  place-items:center;
}
.signal-pair{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px;
  width:100%;
}
.signal-pair .entry-signal{
  min-width:138px;
  justify-content:flex-start;
}
.railway-station-node__direction{
  width:100%;
  padding:8px 10px;
  border-radius:12px;
  border:1px solid rgba(83,134,188,.16);
  background:rgba(2,10,20,.46);
  color:rgba(205,222,241,.70);
  font-size:11px;
  line-height:1.25;
  text-align:center;
  font-weight:800;
}
.route-posterunek .railway-station-node__track,
.route-control-card .route-exits-clean-grid{
  display:none !important;
}
.rail-block__direction{
  display:grid;
  gap:3px;
  min-width:0;
}
.rail-block__direction span{
  color:rgba(205,222,241,.55);
  font-size:9px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.rail-block__direction strong{
  color:var(--text-primary);
  font-size:12px;
  line-height:1.18;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.rail-block__direction small{
  color:rgba(205,222,241,.55);
  font-size:10px;
  font-weight:900;
  letter-spacing:.04em;
}
.rail-block__signal-row--dual{
  display:block !important;
}
.rail-block__signal-row--dual .signal-pair{
  justify-content:flex-start;
}
.rail-block__signal-row--dual .entry-signal{
  min-width:128px;
}
.rail-block__line{
  position:relative;
  display:grid;
  grid-template-columns:1fr 28px 1fr;
  align-items:center;
  gap:8px;
  color:currentColor;
}
.rail-block__line span{
  height:4px;
  border-radius:999px;
  background:currentColor;
  box-shadow:0 0 14px currentColor;
  opacity:.85;
}
.rail-block__line b{
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:999px;
  background:rgba(2,10,20,.88);
  border:1px solid rgba(83,134,188,.20);
  font-size:17px;
  line-height:1;
}
.station-routes-table--signals .entry-signal,
.station-routes-table .entry-signal{
  min-width:92px;
  padding:5px 7px;
  gap:5px;
}
.station-routes-table--signals .entry-signal b,
.station-routes-table .entry-signal b{
  font-size:8px;
}
.station-routes-table--signals .entry-signal em,
.station-routes-table .entry-signal em{
  font-size:8px;
}
.station-routes-table--signals .entry-signal i,
.station-routes-table .entry-signal i{
  width:8px;
  height:8px;
}
.station-routes-table small{
  color:rgba(205,222,241,.56);
  font-size:10px;
  font-weight:800;
}
@media (max-width:900px){
  .route-line-layout--signals{
    grid-template-columns:minmax(250px,.8fr) minmax(520px,1.35fr) minmax(250px,.8fr) !important;
    min-width:1060px !important;
  }
  .route-direction-row{
    grid-template-columns:minmax(130px,.9fr) auto minmax(95px,1fr) auto;
  }
  .route-direction-line{
    min-width:90px;
  }
}
@media (max-width:720px){
  .route-direction-row{
    grid-template-columns:1fr;
  }
  .route-direction-line{
    width:100%;
  }
  .signal-pair .entry-signal{
    min-width:0;
    width:100%;
  }
}

/* ===== Lokalizacje: pojedynczy ustawiony kierunek w pulpicie szlaku ===== */
.route-main-block__directions--single{
  align-content:center;
}
.route-main-block__directions--single .route-direction-row{
  min-height:64px;
  border-color:rgba(56,189,248,.26);
  background:linear-gradient(90deg, rgba(2,10,20,.72), rgba(8,29,51,.68));
}
.route-direction-row--active .route-direction-row__label span{
  color:rgba(103,232,249,.78);
}

/* ===== Lokalizacje: warstwa kierunkÄ‚Ĺ‚w i animacji mapy + czystszy pulpit szlaku ===== */
.route-direction-row--no-label{
  grid-template-columns:auto minmax(180px,1fr) auto !important;
}
.route-direction-row--no-label .entry-signal{
  min-width:142px;
}
.route-direction-row--no-label .route-direction-line{
  min-width:160px;
}
.route-direction-row--no-label + .route-direction-row__label,
.route-direction-row--no-label .route-direction-row__label{
  display:none !important;
}
.route-main-block__name{
  text-align:center;
  justify-content:center;
}
.map-direction-badge{
  pointer-events:none;
  background:transparent !important;
  border:none !important;
  display:flex !important;
  align-items:center;
  justify-content:center;
  gap:7px;
  width:150px !important;
  height:34px !important;
  margin-left:0 !important;
  margin-top:0 !important;
  transform:translateZ(0);
  filter:drop-shadow(0 10px 18px rgba(0,0,0,.44));
}
.map-direction-badge b{
  display:grid;
  place-items:center;
  width:26px;
  height:26px;
  border-radius:999px;
  color:#06111f;
  background:#34d399;
  box-shadow:0 0 18px rgba(52,211,153,.70);
  font-size:18px;
  line-height:1;
  animation:mapDirectionBadgePulse 1.15s ease-in-out infinite;
}
.map-direction-badge span{
  max-width:112px;
  padding:6px 8px;
  border-radius:999px;
  color:#dff8ff;
  background:rgba(2,10,20,.86);
  border:1px solid rgba(56,189,248,.26);
  font-size:10px;
  font-weight:900;
  line-height:1.1;
  letter-spacing:.04em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-transform:uppercase;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 0 18px rgba(56,189,248,.14);
}
.map-direction-badge--warn b{
  background:#f59e0b;
  box-shadow:0 0 18px rgba(245,158,11,.72);
}
.map-direction-badge--fail b,
.map-direction-badge--off b{
  color:#fff;
  background:#ef4444;
  box-shadow:0 0 18px rgba(239,68,68,.76);
}
.map-direction-badge--fail span,
.map-direction-badge--off span{
  border-color:rgba(239,68,68,.28);
}
.map-directions-layer-mode .station-marker-pro--animated span{
  animation:mapPosterunekLivePulse 1.65s ease-in-out infinite;
}
.map-directions-layer-mode .station-marker-pro--animated span::after{
  content:'';
  position:absolute;
  inset:-9px;
  border-radius:999px;
  border:1px solid color-mix(in srgb, var(--marker-color) 48%, transparent);
  box-shadow:0 0 18px color-mix(in srgb, var(--marker-color) 32%, transparent);
  animation:mapPosterunekHalo 1.65s ease-out infinite;
}
.map-directions-layer-mode .station-marker-pro--animated.station-marker--alert span::after{
  border-color:rgba(239,68,68,.45);
  box-shadow:0 0 22px rgba(239,68,68,.36);
}
@keyframes mapDirectionBadgePulse{
  0%,100%{ transform:scale(1); opacity:.92; }
  50%{ transform:scale(1.12); opacity:1; }
}
@keyframes mapPosterunekLivePulse{
  0%,100%{ transform:scale(1); filter:brightness(1); }
  50%{ transform:scale(1.18); filter:brightness(1.24); }
}
@keyframes mapPosterunekHalo{
  0%{ transform:scale(.72); opacity:.72; }
  100%{ transform:scale(1.75); opacity:0; }
}
@media (max-width:900px){
  .route-direction-row--no-label{
    grid-template-columns:auto minmax(120px,1fr) auto !important;
  }
  .route-direction-row--no-label .route-direction-line{
    min-width:120px;
  }
}

.map-directions-layer-mode .leaflet-pane path.route-direction-flow,
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--active,
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--fault,
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning,
.map-directions-layer-mode .leaflet-pane path.route-unavailable-dash-flow{
  display:inline !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}
.map-directions-layer-mode .leaflet-pane path.route-direction-flow,
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--active{
  stroke:#34d399 !important;
  stroke-dasharray:18 20 !important;
  animation:routeDirectionForwardNatural .86s linear infinite !important;
  filter:drop-shadow(0 0 10px rgba(52,211,153,.48)) !important;
}
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning{
  stroke:#f59e0b !important;
  stroke-dasharray:6 16 !important;
  animation:routeDirectionForwardNatural 1.05s linear infinite !important;
  filter:drop-shadow(0 0 10px rgba(245,158,11,.50)) !important;
}
.map-directions-layer-mode .leaflet-pane path.route-direction-flow--fault,
.map-directions-layer-mode .leaflet-pane path.route-unavailable-dash-flow{
  stroke:#ef4444 !important;
  stroke-dasharray:12 14 !important;
  animation:routeUnavailableDashNatural .72s linear infinite !important;
  filter:drop-shadow(0 0 12px rgba(239,68,68,.62)) !important;
}

/* === LOKALIZACJE: czysta animacja bezpoÄąâ€şrednio na szlaku ===
   Usuwa pÄąâ€šywajĂ„â€¦ce znaczniki kierunku i zostawia ruch jako przerywanĂ„â€¦ liniĂ„â„˘ na samym szlaku.
   Awaria/usterka nie pokazuje kierunku Ă˘â‚¬â€ť caÄąâ€šy szlak pulsuje. */
.leaflet-pane .map-direction-badge,
.map-direction-badge,
.map-direction-badge b,
.map-direction-badge span{
  display:none !important;
  opacity:0 !important;
  pointer-events:none !important;
}
.map-directions-layer-mode .station-marker-pro--animated span,
.map-directions-layer-mode .station-marker-pro--animated span::after,
.map-directions-layer-mode .station-marker-pro--animated.station-marker--alert span::after{
  animation:none !important;
}

.leaflet-pane path.route-direction-flow,
.leaflet-pane path.route-direction-flow--active,
.leaflet-pane path.route-direction-flow--warning,
.leaflet-pane path.route-direction-flow--fault,
.leaflet-pane path.route-unavailable-dash-flow{
  display:none !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--active,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning{
  display:inline !important;
  stroke-dasharray:16 18 !important;
  stroke-dashoffset:0;
  stroke-linecap:butt !important;
  stroke-linejoin:round !important;
  animation:mapRouteDirectFlow .95s linear infinite !important;
  filter:
    drop-shadow(0 0 8px rgba(52,211,153,.62))
    drop-shadow(0 0 18px rgba(52,211,153,.20)) !important;
}
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning{
  stroke:#f59e0b !important;
  animation:mapRouteDirectFlow 1.05s linear infinite, mapRouteWarningPulse 1.25s ease-in-out infinite !important;
  filter:
    drop-shadow(0 0 8px rgba(245,158,11,.70))
    drop-shadow(0 0 18px rgba(245,158,11,.24)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--fault,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--warning,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--unavailable{
  stroke-dasharray:none !important;
  animation:mapRouteErrorPulse 1.05s ease-in-out infinite !important;
}
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--fault,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--warning,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--unavailable{
  animation:mapRouteGlowPulse 1.05s ease-in-out infinite !important;
}

@keyframes mapRouteDirectFlow{
  0%{ stroke-dashoffset:0; }
  100%{ stroke-dashoffset:-68; }
}
@keyframes mapRouteErrorPulse{
  0%,100%{ opacity:.98; }
  50%{ opacity:.38; }
}
@keyframes mapRouteGlowPulse{
  0%,100%{ opacity:.20; }
  50%{ opacity:.62; }
}
@keyframes mapRouteWarningPulse{
  0%,100%{ opacity:.82; }
  50%{ opacity:.46; }
}

/* === LOKALIZACJE: kierunki bezpoÄąâ€şrednio na szlakach, bez etykiet === */
.leaflet-pane .map-direction-badge,
.map-direction-badge,
.map-direction-badge b,
.map-direction-badge span{
  display:none !important;
  opacity:0 !important;
  pointer-events:none !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--active,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning{
  display:inline !important;
  stroke-dasharray:12 18 !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:butt !important;
  stroke-linejoin:round !important;
  animation:mapRouteTrackDashFlow .78s linear infinite !important;
  filter:
    drop-shadow(0 0 8px rgba(52,211,153,.78))
    drop-shadow(0 0 20px rgba(52,211,153,.28)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-direction-flow--warning{
  stroke:#f59e0b !important;
  animation:mapRouteTrackDashFlow .88s linear infinite !important;
  filter:
    drop-shadow(0 0 8px rgba(245,158,11,.82))
    drop-shadow(0 0 20px rgba(245,158,11,.30)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--fault,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--unavailable{
  animation:mapRouteErrorPulseStrong 1.05s ease-in-out infinite !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--warning{
  animation:none !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--fault,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--unavailable{
  animation:mapRouteGlowPulseStrong 1.05s ease-in-out infinite !important;
}


.leaflet-pane path.route-line-pro--warning,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--warning{
  stroke:#f59e0b !important;
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:none !important;
  filter:
    drop-shadow(0 0 7px rgba(245,158,11,.66))
    drop-shadow(0 0 16px rgba(245,158,11,.22)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--warning,
.leaflet-pane path.route-glow--warning{
  animation:none !important;
  filter:blur(2px) drop-shadow(0 0 15px rgba(245,158,11,.44)) !important;
}

.map-route-flow-arrow{
  width:22px !important;
  height:22px !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  background:transparent !important;
  pointer-events:none !important;
}

.map-route-flow-arrow i{
  position:relative;
  display:block;
  width:22px;
  height:22px;
  transform:rotate(var(--route-angle));
  animation:mapRouteArrowOnTrack .78s linear infinite;
  animation-delay:var(--route-delay);
  filter:
    drop-shadow(0 0 6px rgba(52,211,153,.95))
    drop-shadow(0 0 14px rgba(52,211,153,.34));
}

.map-route-flow-arrow i::before{
  content:'';
  position:absolute;
  left:6px;
  top:4px;
  width:10px;
  height:10px;
  border-top:3px solid #bbf7d0;
  border-right:3px solid #bbf7d0;
  transform:rotate(45deg);
  border-radius:2px;
}

.map-route-flow-arrow--warn i{
  filter:
    drop-shadow(0 0 6px rgba(245,158,11,.98))
    drop-shadow(0 0 14px rgba(245,158,11,.38));
}

.map-route-flow-arrow--warn i::before{
  border-color:#fde68a;
}

.map-directions-layer-mode .station-marker-pro--animated span,
.map-directions-layer-mode .station-marker-pro--animated span::after,
.map-directions-layer-mode .station-marker-pro--animated.station-marker--alert span::after{
  animation:none !important;
}

@keyframes mapRouteTrackDashFlow{
  0%{ stroke-dashoffset:0; }
  100%{ stroke-dashoffset:-60; }
}

@keyframes mapRouteArrowOnTrack{
  0%{ opacity:.25; transform:rotate(var(--route-angle)) translateX(-8px) scale(.82); }
  36%{ opacity:1; transform:rotate(var(--route-angle)) translateX(0) scale(1.05); }
  100%{ opacity:.25; transform:rotate(var(--route-angle)) translateX(8px) scale(.82); }
}

@keyframes mapRouteErrorPulseStrong{
  0%,100%{ opacity:1; filter:drop-shadow(0 0 8px rgba(239,68,68,.72)) drop-shadow(0 0 18px rgba(239,68,68,.28)); }
  50%{ opacity:.34; filter:drop-shadow(0 0 16px rgba(239,68,68,1)) drop-shadow(0 0 30px rgba(239,68,68,.55)); }
}

@keyframes mapRouteGlowPulseStrong{
  0%,100%{ opacity:.22; }
  50%{ opacity:.72; }
}

/* === LOKALIZACJE: finalna animacja kierunku bezpoÄąâ€şrednio na szlaku ===
   Linia szlaku pozostaje ciĂ„â€¦gÄąâ€ša. Kierunek pokazujĂ„â€¦ wyÄąâ€šĂ„â€¦cznie maÄąâ€še strzaÄąâ€ški
   osadzone na osi linii. Awaria/usterka = czerwone pulsowanie, offline = szara linia. */
.leaflet-pane .map-direction-badge,
.map-direction-badge,
.leaflet-pane path.route-direction-flow,
.leaflet-pane path.route-direction-flow--active,
.leaflet-pane path.route-direction-flow--warning,
.leaflet-pane path.route-direction-flow--fault,
.leaflet-pane path.route-unavailable-dash-flow{
  display:none !important;
  opacity:0 !important;
  pointer-events:none !important;
}

.leaflet-pane path.route-line-pro,
.leaflet-pane path.route-line-pro--active,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--active{
  stroke:#22c55e !important;
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:none !important;
  filter:
    drop-shadow(0 0 7px rgba(34,197,94,.50))
    drop-shadow(0 0 15px rgba(34,197,94,.18)) !important;
}

.leaflet-pane path.route-line-pro--fault,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--fault{
  stroke:#ef4444 !important;
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:mapRouteFaultPulseFinal 1s ease-in-out infinite !important;
  filter:
    drop-shadow(0 0 9px rgba(239,68,68,.82))
    drop-shadow(0 0 22px rgba(239,68,68,.34)) !important;
}

.leaflet-pane path.route-line-pro--unavailable,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--unavailable{
  stroke:#94a3b8 !important;
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:none !important;
  filter:
    drop-shadow(0 0 6px rgba(148,163,184,.46))
    drop-shadow(0 0 13px rgba(148,163,184,.16)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--fault,
.leaflet-pane path.route-glow--fault{
  animation:mapRouteFaultGlowFinal 1s ease-in-out infinite !important;
  filter:blur(2.2px) drop-shadow(0 0 21px rgba(239,68,68,.68)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--unavailable,
.leaflet-pane path.route-glow--unavailable{
  animation:none !important;
  filter:blur(1.8px) drop-shadow(0 0 13px rgba(148,163,184,.38)) !important;
}


.leaflet-pane path.route-line-pro--warning,
.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-line-pro--warning{
  stroke:#f59e0b !important;
  stroke-dasharray:none !important;
  stroke-dashoffset:0 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  animation:none !important;
  filter:
    drop-shadow(0 0 7px rgba(245,158,11,.66))
    drop-shadow(0 0 16px rgba(245,158,11,.22)) !important;
}

.leaflet-container.map-directions-layer-mode .leaflet-pane path.route-glow--warning,
.leaflet-pane path.route-glow--warning{
  animation:none !important;
  filter:blur(2px) drop-shadow(0 0 15px rgba(245,158,11,.44)) !important;
}

.map-route-flow-arrow{
  width:18px !important;
  height:18px !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  background:transparent !important;
  pointer-events:none !important;
  z-index:700 !important;
}

.map-route-flow-arrow i{
  position:absolute;
  left:50%;
  top:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  transform:translate(-50%,-50%) rotate(var(--route-angle)) translateX(-10px) scale(.86);
  transform-origin:center center;
  animation:mapRouteArrowOnRailFinal .92s linear infinite;
  animation-delay:var(--route-delay);
  filter:
    drop-shadow(0 0 5px rgba(187,247,208,.98))
    drop-shadow(0 0 12px rgba(34,197,94,.48));
}

.map-route-flow-arrow svg{
  display:block;
  width:16px;
  height:16px;
  overflow:visible;
}

.map-route-flow-arrow path{
  fill:#bbf7d0;
}

.map-route-flow-arrow--warn i{
  filter:
    drop-shadow(0 0 5px rgba(254,240,138,.98))
    drop-shadow(0 0 12px rgba(245,158,11,.48));
}

.map-route-flow-arrow--warn path{
  fill:#fde68a;
}

@keyframes mapRouteArrowOnRailFinal{
  0%{opacity:0; transform:translate(-50%,-50%) rotate(var(--route-angle)) translateX(-12px) scale(.82);}
  18%{opacity:1;}
  72%{opacity:1;}
  100%{opacity:0; transform:translate(-50%,-50%) rotate(var(--route-angle)) translateX(12px) scale(.82);}
}

@keyframes mapRouteFaultPulseFinal{
  0%,100%{opacity:1;}
  50%{opacity:.36;}
}

@keyframes mapRouteFaultGlowFinal{
  0%,100%{opacity:.24;}
  50%{opacity:.72;}
}

.map-route-flow-arrow i::before,
.map-route-flow-arrow i::after{
  content:none !important;
  display:none !important;
}

/* === LOKALIZACJE: warstwa Na ÄąÂ»ywo Ă˘â‚¬â€ť animacja bezpoÄąâ€şrednio na osi szlaku === */
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line,
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow{
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  pointer-events:none !important;
  vector-effect:non-scaling-stroke;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--ok{
  stroke:#22c55e !important;
  stroke-dasharray:none !important;
  animation:none !important;
  filter:drop-shadow(0 0 8px rgba(34,197,94,.72)) drop-shadow(0 0 20px rgba(34,197,94,.24)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--ok{
  stroke:#22c55e !important;
  animation:none !important;
  filter:blur(2px) drop-shadow(0 0 18px rgba(34,197,94,.46)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--warn{
  stroke:#f59e0b !important;
  stroke-dasharray:none !important;
  animation:none !important;
  filter:drop-shadow(0 0 8px rgba(245,158,11,.78)) drop-shadow(0 0 20px rgba(245,158,11,.25)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--warn{
  stroke:#f59e0b !important;
  animation:none !important;
  filter:blur(2px) drop-shadow(0 0 18px rgba(245,158,11,.46)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--fault{
  stroke:#ef4444 !important;
  stroke-dasharray:none !important;
  animation:routeLiveFaultPulse 1s ease-in-out infinite !important;
  filter:drop-shadow(0 0 10px rgba(239,68,68,.95)) drop-shadow(0 0 26px rgba(239,68,68,.40)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--fault{
  stroke:#ef4444 !important;
  animation:routeLiveFaultGlowPulse 1s ease-in-out infinite !important;
  filter:blur(2.5px) drop-shadow(0 0 24px rgba(239,68,68,.72)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--off{
  stroke:#94a3b8 !important;
  stroke-dasharray:none !important;
  animation:none !important;
  filter:drop-shadow(0 0 7px rgba(148,163,184,.48)) drop-shadow(0 0 16px rgba(148,163,184,.16)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--off{
  stroke:#94a3b8 !important;
  animation:none !important;
  filter:blur(2px) drop-shadow(0 0 16px rgba(148,163,184,.35)) !important;
}

.map-route-live-arrow{
  width:18px !important;
  height:18px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  pointer-events:none !important;
}
.map-route-live-arrow i{
  position:absolute;
  left:50%;
  top:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  transform:translate(-50%,-50%) rotate(var(--route-live-angle,0deg));
  transform-origin:center center;
  filter:drop-shadow(0 0 6px rgba(187,247,208,.98)) drop-shadow(0 0 14px rgba(34,197,94,.50));
}
.map-route-live-arrow svg{
  display:block;
  width:15px;
  height:15px;
  overflow:visible;
}
.map-route-live-arrow path{
  fill:#bbf7d0;
}
.map-route-live-arrow--warn i{
  filter:drop-shadow(0 0 6px rgba(254,240,138,.98)) drop-shadow(0 0 14px rgba(245,158,11,.52));
}
.map-route-live-arrow--warn path{
  fill:#fde68a;
}

@keyframes routeLiveFaultPulse{
  0%,100%{ opacity:1; }
  50%{ opacity:.28; }
}
@keyframes routeLiveFaultGlowPulse{
  0%,100%{ opacity:.26; }
  50%{ opacity:.86; }
}

/* === FIX: warstwa Na ÄąÂ»ywo jako samodzielna warstwa szlakÄ‚Ĺ‚w === */
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line,
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow{
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  pointer-events:none !important;
  vector-effect:non-scaling-stroke;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--ok{
  stroke:#22c55e !important;
  stroke-dasharray:none !important;
  animation:none !important;
  opacity:1 !important;
  filter:drop-shadow(0 0 7px rgba(34,197,94,.80)) drop-shadow(0 0 18px rgba(34,197,94,.26)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--ok{
  stroke:#22c55e !important;
  animation:none !important;
  opacity:.26 !important;
  filter:blur(2px) drop-shadow(0 0 18px rgba(34,197,94,.52)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--warn{
  stroke:#f59e0b !important;
  stroke-dasharray:none !important;
  animation:none !important;
  opacity:1 !important;
  filter:drop-shadow(0 0 8px rgba(245,158,11,.86)) drop-shadow(0 0 20px rgba(245,158,11,.30)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--warn{
  stroke:#f59e0b !important;
  animation:none !important;
  opacity:.30 !important;
  filter:blur(2px) drop-shadow(0 0 18px rgba(245,158,11,.56)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--fault{
  stroke:#ef4444 !important;
  stroke-dasharray:none !important;
  animation:routeLiveFaultPulseStrong .85s ease-in-out infinite !important;
  filter:drop-shadow(0 0 10px rgba(239,68,68,.96)) drop-shadow(0 0 28px rgba(239,68,68,.46)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--fault{
  stroke:#ef4444 !important;
  animation:routeLiveFaultGlowPulseStrong .85s ease-in-out infinite !important;
  filter:blur(2.8px) drop-shadow(0 0 26px rgba(239,68,68,.80)) !important;
}

.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--off{
  stroke:#94a3b8 !important;
  stroke-dasharray:none !important;
  animation:none !important;
  opacity:.82 !important;
  filter:drop-shadow(0 0 6px rgba(148,163,184,.42)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--off{
  stroke:#94a3b8 !important;
  animation:none !important;
  opacity:.18 !important;
  filter:blur(2px) drop-shadow(0 0 14px rgba(148,163,184,.32)) !important;
}

.leaflet-marker-icon.map-route-live-arrow{
  width:18px !important;
  height:18px !important;
  margin-left:-9px !important;
  margin-top:-9px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  pointer-events:none !important;
  z-index:650 !important;
}
.leaflet-marker-icon.map-route-live-arrow i{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:18px !important;
  height:18px !important;
  transform:translate(-50%,-50%) rotate(var(--route-live-angle,0deg)) !important;
  transform-origin:center center !important;
  filter:drop-shadow(0 0 6px rgba(187,247,208,.98)) drop-shadow(0 0 14px rgba(34,197,94,.52)) !important;
}
.leaflet-marker-icon.map-route-live-arrow svg{
  display:block !important;
  width:14px !important;
  height:14px !important;
  overflow:visible !important;
}
.leaflet-marker-icon.map-route-live-arrow path{
  fill:#bbf7d0 !important;
}
.leaflet-marker-icon.map-route-live-arrow--warn i{
  filter:drop-shadow(0 0 6px rgba(254,240,138,.98)) drop-shadow(0 0 14px rgba(245,158,11,.52)) !important;
}
.leaflet-marker-icon.map-route-live-arrow--warn path{
  fill:#fde68a !important;
}

@keyframes routeLiveFaultPulseStrong{
  0%,100%{ opacity:1; stroke-opacity:1; }
  50%{ opacity:.38; stroke-opacity:.38; }
}
@keyframes routeLiveFaultGlowPulseStrong{
  0%,100%{ opacity:.22; stroke-opacity:.22; }
  50%{ opacity:.92; stroke-opacity:.92; }
}

/* === LOKALIZACJE: Äąâ€šatwiejsze klikanie w szlaki i posterunki === */
.leaflet-pane.leaflet-live-pane{
  pointer-events:none !important;
}
.leaflet-pane.leaflet-click-pane{
  pointer-events:auto !important;
}
.leaflet-pane path.route-click-target{
  cursor:pointer !important;
  stroke:rgba(255,255,255,.001) !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  pointer-events:stroke !important;
}
.leaflet-pane path.route-click-target--hover,
.leaflet-pane path.route-click-target:hover{
  stroke:rgba(56,189,248,.16) !important;
  filter:drop-shadow(0 0 10px rgba(56,189,248,.30));
}
.leaflet-pane path.station-click-target{
  cursor:pointer !important;
  pointer-events:all !important;
}
.locations-map-wrap .station-marker-pro{
  cursor:pointer !important;
}

/* === STATUS MAPY: urzĂ„â€¦dzenia, posterunki i szlaki === */
.map-layers-panel label.is-disabled{
  opacity:.48;
  cursor:not-allowed;
}
.map-layers-panel label small{
  grid-column:2;
  display:block;
  margin:2px 0 0;
  color:var(--text-muted);
  font-size:10px;
  line-height:1.35;
}

.leaflet-pane path.route-line-pro--active,
.leaflet-pane path.route-line-pro:not(.route-line-pro--fault):not(.route-line-pro--device-offline):not(.route-line-pro--warning):not(.route-line-pro--unavailable):not(.route-line-pro--muted){
  stroke:#38bdf8 !important;
  filter:drop-shadow(0 0 8px rgba(56,189,248,.82)) drop-shadow(0 0 24px rgba(56,189,248,.32)) !important;
}
.leaflet-pane path.route-glow--active,
.leaflet-pane path.route-glow:not(.route-glow--fault):not(.route-glow--device-offline):not(.route-glow--warning):not(.route-glow--unavailable):not(.route-glow--muted){
  stroke:#38bdf8 !important;
  filter:blur(2.2px) drop-shadow(0 0 24px rgba(56,189,248,.56)) !important;
}
.leaflet-pane path.route-line-pro--device-offline,
.leaflet-pane path.route-glow--device-offline{
  stroke:#ef4444 !important;
  stroke-dasharray:12 14 !important;
  stroke-linecap:round !important;
  animation:mapRouteDeviceOfflineRedPulse .82s ease-in-out infinite !important;
  filter:drop-shadow(0 0 10px rgba(239,68,68,.98)) drop-shadow(0 0 28px rgba(239,68,68,.45)) !important;
}
.leaflet-pane path.route-glow--device-offline{
  opacity:.55 !important;
  filter:blur(2.8px) drop-shadow(0 0 26px rgba(239,68,68,.78)) !important;
}

.station-marker-pro span{
  background:var(--marker-color,#22c55e) !important;
  border-color:rgba(220,252,231,.72) !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 12px color-mix(in srgb,var(--marker-color),transparent 20%),0 0 26px color-mix(in srgb,var(--marker-color),transparent 58%) !important;
}
.station-marker-pro--fault span,
.station-marker--alert span::after{
  animation:mapPointRedPulse .78s ease-in-out infinite !important;
}
.station-marker-pro--critical span{
  animation:mapPointRedPulse .55s ease-in-out infinite !important;
}
.station-marker-pro__alarm-badge{
  position:absolute;
  top:-7px;
  right:-8px;
  min-width:14px;
  height:14px;
  padding:0 3px;
  border-radius:999px;
  background:#ef4444;
  color:#fff;
  font:700 9px/14px "Segoe UI",system-ui,sans-serif;
  text-align:center;
  box-shadow:0 0 0 1px rgba(2,9,18,.9);
  z-index:2;
}
.station-marker-pro--warning .station-marker-pro__alarm-badge{
  background:#f59e0b;
}
.device-marker-pro__device-count{
  /* Licznik urządzeń — nie interpretować jako alarmy. */
  font-weight:700;
}
.station-marker-pro--offline span{
  animation:mapPointGrayPulse .95s ease-in-out infinite !important;
}
.station-marker-pro--warning span{
  animation:mapPointWarnPulse 1.05s ease-in-out infinite !important;
}

.device-marker-pro{
  width:16px !important;
  height:16px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  pointer-events:auto !important;
  cursor:pointer !important;
}
.device-marker-pro span{
  position:absolute;
  left:50%;
  top:50%;
  width:10px;
  height:10px;
  border-radius:50%;
  transform:translate(-50%,-50%);
  background:var(--marker-color,#22c55e);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 12px color-mix(in srgb,var(--marker-color),transparent 18%),0 0 28px color-mix(in srgb,var(--marker-color),transparent 58%);
}
.device-marker-pro span::after{
  content:"";
  position:absolute;
  inset:-7px;
  border-radius:999px;
  border:1px solid color-mix(in srgb,var(--marker-color),transparent 15%);
  opacity:.55;
}
.device-marker-pro--fault span,
.device-marker-pro--fault span::after{
  animation:mapPointRedPulse .78s ease-in-out infinite !important;
}
.device-marker-pro--offline span,
.device-marker-pro--offline span::after{
  animation:mapPointGrayPulse .95s ease-in-out infinite !important;
}
.device-marker-pro--warn span,
.device-marker-pro--warn span::after{
  animation:mapPointWarnPulse 1.05s ease-in-out infinite !important;
}

@keyframes mapRouteDeviceOfflineRedPulse{
  0%,100%{ opacity:1; stroke-opacity:1; }
  50%{ opacity:.34; stroke-opacity:.34; }
}
@keyframes mapPointRedPulse{
  0%,100%{ opacity:1; transform:translate(-50%,-50%) scale(1); filter:drop-shadow(0 0 8px rgba(239,68,68,.95)); }
  50%{ opacity:.40; transform:translate(-50%,-50%) scale(1.55); filter:drop-shadow(0 0 18px rgba(239,68,68,1)); }
}
@keyframes mapPointGrayPulse{
  0%,100%{ opacity:1; transform:translate(-50%,-50%) scale(1); filter:drop-shadow(0 0 8px rgba(148,163,184,.92)); }
  50%{ opacity:.38; transform:translate(-50%,-50%) scale(1.5); filter:drop-shadow(0 0 18px rgba(148,163,184,1)); }
}
@keyframes mapPointWarnPulse{
  0%,100%{ opacity:1; transform:translate(-50%,-50%) scale(1); filter:drop-shadow(0 0 8px rgba(245,158,11,.92)); }
  50%{ opacity:.46; transform:translate(-50%,-50%) scale(1.42); filter:drop-shadow(0 0 18px rgba(245,158,11,1)); }
}


/* === POPRAWKA: kierunek niedostĂ„â„˘pny przy offline/bÄąâ€šĂ„â„˘dzie === */
.rail-block--direction-blocked .route-direction-line,
.rail-block--direction-blocked .rail-block__line,
.route-exit-row--direction-blocked .route-exit-row__main strong{
  color:#ef4444;
  border-color:rgba(239,68,68,.45);
  text-shadow:0 0 12px rgba(239,68,68,.65);
}
.rail-block--direction-blocked .route-direction-line em,
.rail-block--direction-blocked .rail-block__line span{
  background:linear-gradient(90deg, rgba(239,68,68,.16), rgba(239,68,68,.75), rgba(239,68,68,.16));
  box-shadow:0 0 16px rgba(239,68,68,.45);
}
.rail-block--direction-blocked .route-direction-line b,
.rail-block--direction-blocked .rail-block__line b{
  color:#fff;
  background:rgba(239,68,68,.22);
  border-color:rgba(239,68,68,.55);
  box-shadow:0 0 18px rgba(239,68,68,.45);
}

/* === POPRAWKA V3: czytelne punkty urzĂ„â€¦dzeÄąâ€ž w warstwie Na ÄąÂ»ywo ===
   Punkty urzĂ„â€¦dzeÄąâ€ž nie sĂ„â€¦ juÄąÄ˝ przesuwane geograficznie po mapie.
   KaÄąÄ˝de urzĂ„â€¦dzenie zostaje przypiĂ„â„˘te do rzeczywistej wspÄ‚Ĺ‚Äąâ€šrzĂ„â„˘dnej posterunku,
   a rozstawienie kilku urzĂ„â€¦dzeÄąâ€ž odbywa siĂ„â„˘ maÄąâ€šym offsetem pikselowym wewnĂ„â€¦trz ikony. */
.leaflet-marker-icon.device-marker-pro{
  width:32px !important;
  height:32px !important;
  margin-left:-16px !important;
  margin-top:-16px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  pointer-events:auto !important;
  cursor:pointer !important;
  overflow:visible !important;
  z-index:720 !important;
}
.leaflet-marker-icon.device-marker-pro:not(.leaflet-interactive),
.leaflet-marker-icon.device-marker-pro--decorative{
  pointer-events:none !important;
  cursor:default !important;
}
.leaflet-marker-icon.device-marker-pro--clustered{
  width:56px !important;
  height:56px !important;
  margin-left:-28px !important;
  margin-top:-28px !important;
}
.leaflet-marker-icon.device-marker-pro span{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:9px !important;
  height:9px !important;
  border-radius:50% !important;
  transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1) !important;
  transform-origin:center center !important;
  background:var(--marker-color,#22c55e) !important;
  border:1px solid rgba(241,245,249,.92) !important;
  box-shadow:
    0 0 0 2px rgba(2,9,18,.94),
    0 0 10px color-mix(in srgb,var(--marker-color),transparent 14%),
    0 0 22px color-mix(in srgb,var(--marker-color),transparent 55%) !important;
  will-change:transform,opacity,filter !important;
}
.leaflet-marker-icon.device-marker-pro span::after{
  content:"" !important;
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:19px !important;
  height:19px !important;
  border-radius:999px !important;
  transform:translate(-50%,-50%) scale(1) !important;
  border:1px solid color-mix(in srgb,var(--marker-color),transparent 18%) !important;
  background:radial-gradient(circle, color-mix(in srgb,var(--marker-color),transparent 70%) 0%, transparent 64%) !important;
  opacity:.48 !important;
  pointer-events:none !important;
  will-change:transform,opacity !important;
}
.leaflet-marker-icon.device-marker-pro--fault span{
  animation:mapDevicePointRedPulse .9s ease-in-out infinite !important;
}
.leaflet-marker-icon.device-marker-pro--fault span::after{
  animation:mapDeviceHaloRedPulse .9s ease-in-out infinite !important;
}
.leaflet-marker-icon.device-marker-pro--offline span{
  animation:mapDevicePointGrayPulse 1.05s ease-in-out infinite !important;
}
.leaflet-marker-icon.device-marker-pro--offline span::after{
  animation:mapDeviceHaloGrayPulse 1.05s ease-in-out infinite !important;
}
.leaflet-marker-icon.device-marker-pro--warn span{
  animation:mapDevicePointWarnPulse 1.1s ease-in-out infinite !important;
}
.leaflet-marker-icon.device-marker-pro--warn span::after{
  animation:mapDeviceHaloWarnPulse 1.1s ease-in-out infinite !important;
}

@keyframes mapDevicePointRedPulse{
  0%,100%{opacity:1; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1); filter:drop-shadow(0 0 7px rgba(239,68,68,.96));}
  50%{opacity:.76; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1.22); filter:drop-shadow(0 0 14px rgba(239,68,68,1));}
}
@keyframes mapDeviceHaloRedPulse{
  0%,100%{opacity:.34; transform:translate(-50%,-50%) scale(.92);}
  50%{opacity:.78; transform:translate(-50%,-50%) scale(1.34);}
}
@keyframes mapDevicePointGrayPulse{
  0%,100%{opacity:1; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1); filter:drop-shadow(0 0 7px rgba(148,163,184,.92));}
  50%{opacity:.72; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1.18); filter:drop-shadow(0 0 13px rgba(148,163,184,1));}
}
@keyframes mapDeviceHaloGrayPulse{
  0%,100%{opacity:.28; transform:translate(-50%,-50%) scale(.92);}
  50%{opacity:.64; transform:translate(-50%,-50%) scale(1.30);}
}
@keyframes mapDevicePointWarnPulse{
  0%,100%{opacity:1; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1); filter:drop-shadow(0 0 7px rgba(245,158,11,.92));}
  50%{opacity:.78; transform:translate(calc(-50% + var(--device-x,0px)), calc(-50% + var(--device-y,0px))) scale(1.18); filter:drop-shadow(0 0 13px rgba(245,158,11,1));}
}
@keyframes mapDeviceHaloWarnPulse{
  0%,100%{opacity:.30; transform:translate(-50%,-50%) scale(.92);}
  50%{opacity:.68; transform:translate(-50%,-50%) scale(1.28);}
}

/* === POPRAWKA V4: jeden punkt dla kilku urzĂ„â€¦dzeÄąâ€ž na posterunku + lepsze klikanie posterunkÄ‚Ĺ‚w === */
.leaflet-marker-icon.device-marker-pro--group{
  width:36px !important;
  height:36px !important;
  margin-left:-18px !important;
  margin-top:-18px !important;
  z-index:920 !important;
  pointer-events:auto !important;
  cursor:pointer !important;
  overflow:visible !important;
}
.leaflet-marker-icon.device-marker-pro--group span{
  width:15px !important;
  height:15px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  transform:translate(-50%,-50%) scale(1) !important;
  font-size:8px !important;
  line-height:1 !important;
  font-weight:900 !important;
  letter-spacing:-.02em !important;
  color:#ffffff !important;
  text-shadow:0 1px 3px rgba(0,0,0,.85) !important;
}
.leaflet-marker-icon.device-marker-pro--multi span{
  width:19px !important;
  height:19px !important;
  border-width:1px !important;
}
.leaflet-marker-icon.device-marker-pro--group span b{
  position:relative !important;
  z-index:2 !important;
  color:#fff !important;
  font:900 9px/1 var(--font, Inter, system-ui, sans-serif) !important;
}
.leaflet-marker-icon.device-marker-pro--group span::after{
  width:27px !important;
  height:27px !important;
  inset:auto !important;
  left:50% !important;
  top:50% !important;
}
.leaflet-popup.map-popup-shell--device-group .leaflet-popup-content{
  min-width:300px !important;
  max-width:430px !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__grid{
  display:grid !important;
  grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
  gap:8px !important;
  margin-top:8px !important;
  padding-top:8px !important;
  border-top:1px solid rgba(125,211,252,.12) !important;
  border-bottom:0 !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:flex-start !important;
  gap:3px !important;
  min-width:0 !important;
  padding:8px 9px !important;
  border:1px solid rgba(125,211,252,.18) !important;
  border-radius:11px !important;
  background:rgba(8,24,42,.74) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item strong{
  margin:0 !important;
  max-width:100% !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-size:12px !important;
  color:#f8fbff !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item span{
  color:#9fb6cc !important;
  font-size:10px !important;
  font-weight:800 !important;
  text-transform:uppercase !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item small{
  max-width:100% !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  color:#6f879d !important;
  font-size:10px !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item--fault{
  border-color:rgba(239,68,68,.46) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 0 18px rgba(239,68,68,.13) !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item--offline{
  border-color:rgba(148,163,184,.42) !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__item--warn{
  border-color:rgba(245,158,11,.42) !important;
}
.leaflet-pane path.station-click-target{
  pointer-events:all !important;
  cursor:pointer !important;
}
.leaflet-pane path.route-click-target{
  pointer-events:stroke !important;
}

/* === POPRAWKA V5: statyczne posterunki, statyczny offline i klikalne kafelki pulpitÄ‚Ĺ‚w === */
.leaflet-marker-icon.station-marker-pro--static span,
.leaflet-marker-icon.station-marker-pro--static span::before,
.leaflet-marker-icon.station-marker-pro--static span::after,
.station-marker-pro--static span,
.station-marker-pro--static span::before,
.station-marker-pro--static span::after{
  animation:none !important;
}
.leaflet-marker-icon.station-marker-pro--static.station-marker--alert span::after,
.station-marker-pro--static.station-marker--alert span::after{
  content:none !important;
}
.leaflet-marker-icon.station-marker-pro--static.station-marker-pro--fault span,
.station-marker-pro--static.station-marker-pro--fault span{
  background:#ef4444 !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 12px rgba(239,68,68,.88),0 0 28px rgba(239,68,68,.42) !important;
}
.leaflet-marker-icon.station-marker-pro--static.station-marker-pro--offline span,
.station-marker-pro--static.station-marker-pro--offline span{
  background:#94a3b8 !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 10px rgba(148,163,184,.74),0 0 22px rgba(148,163,184,.30) !important;
}
.leaflet-marker-icon.station-marker-pro--static.station-marker-pro--warning span,
.station-marker-pro--static.station-marker-pro--warning span{
  background:#f59e0b !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 10px rgba(245,158,11,.76),0 0 22px rgba(245,158,11,.30) !important;
}

/* W warstwie Ă˘â‚¬ĹľNa ÄąÂ»ywoĂ˘â‚¬ĹĄ pulsuje tylko awaria. Offline i ostrzeÄąÄ˝enie sĂ„â€¦ statyczne. */
.leaflet-marker-icon.device-marker-pro--offline span,
.leaflet-marker-icon.device-marker-pro--offline span::after,
.leaflet-marker-icon.device-marker-pro--warn span,
.leaflet-marker-icon.device-marker-pro--warn span::after{
  animation:none !important;
}
.leaflet-marker-icon.device-marker-pro--offline span::after,
.leaflet-marker-icon.device-marker-pro--warn span::after{
  opacity:.42 !important;
  transform:translate(-50%,-50%) scale(1) !important;
}
.leaflet-marker-icon.device-marker-pro--fault span,
.leaflet-marker-icon.device-marker-pro--fault span::after{
  animation:mapPointRedPulse .78s ease-in-out infinite !important;
}

.leaflet-popup.map-popup-shell .map-popup.device-group-popup .device-group-popup__hint{
  display:block !important;
  margin:7px 0 0 !important;
  padding:6px 8px !important;
  border:1px solid rgba(56,189,248,.12) !important;
  border-radius:9px !important;
  background:rgba(14,165,233,.07) !important;
  color:#8eb7d3 !important;
  font-size:10px !important;
  font-weight:700 !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup button.device-group-popup__item{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:100% !important;
  text-align:left !important;
  font-family:inherit !important;
  cursor:pointer !important;
}
.leaflet-popup.map-popup-shell .map-popup.device-group-popup button.device-group-popup__item:hover,
.leaflet-popup.map-popup-shell .map-popup.device-group-popup button.device-group-popup__item:focus-visible{
  border-color:rgba(56,189,248,.64) !important;
  background:rgba(14,165,233,.14) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 18px rgba(56,189,248,.18) !important;
  outline:none !important;
}

/* Mniejszy obszar klikania szlakÄ‚Ĺ‚w, ÄąÄ˝eby nie przykrywaÄąâ€šy posterunkÄ‚Ĺ‚w. */
.leaflet-pane path.route-click-target{
  stroke-width:7px !important;
}
.leaflet-pane path.station-click-target{
  pointer-events:all !important;
  cursor:pointer !important;
}


/* === POPRAWKA V8: mniejsze punkty posterunkÄ‚Ĺ‚w/urzĂ„â€¦dzeÄąâ€ž w warstwie Na ÄąÂ»ywo ===
   W podglĂ„â€¦dzie live punkt nie przykrywa juÄąÄ˝ szlaku. Marker nadal grupuje urzĂ„â€¦dzenia
   i zachowuje klikniĂ„â„˘cie/popup, ale jego rdzeÄąâ€ž i halo sĂ„â€¦ mniejsze. */
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--group{
  width:26px !important;
  height:26px !important;
  margin-left:-13px !important;
  margin-top:-13px !important;
  z-index:910 !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--group span{
  width:10px !important;
  height:10px !important;
  min-width:10px !important;
  min-height:10px !important;
  font-size:7px !important;
  box-shadow:
    0 0 0 1.5px rgba(2,9,18,.96),
    0 0 7px color-mix(in srgb,var(--marker-color),transparent 12%),
    0 0 15px color-mix(in srgb,var(--marker-color),transparent 60%) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--multi span{
  width:13px !important;
  height:13px !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--group span b{
  font-size:7px !important;
  line-height:1 !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--group span::after{
  width:18px !important;
  height:18px !important;
  opacity:.30 !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--fault.device-marker-pro--group span{
  animation:mapLiveSmallFaultPointPulse .82s ease-in-out infinite !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--fault.device-marker-pro--group span::after{
  animation:mapLiveSmallFaultHaloPulse .82s ease-in-out infinite !important;
}
@keyframes mapLiveSmallFaultPointPulse{
  0%,100%{opacity:1; transform:translate(-50%,-50%) scale(1); filter:drop-shadow(0 0 6px rgba(239,68,68,.94));}
  50%{opacity:.78; transform:translate(-50%,-50%) scale(1.22); filter:drop-shadow(0 0 11px rgba(239,68,68,1));}
}
@keyframes mapLiveSmallFaultHaloPulse{
  0%,100%{opacity:.24; transform:translate(-50%,-50%) scale(.95);}
  50%{opacity:.55; transform:translate(-50%,-50%) scale(1.18);}
}


/* === POPRAWKA V9: strona gÄąâ€šÄ‚Ĺ‚wna Ă˘â‚¬â€ť posterunki/stacje bez animacji ===
   Na dashboardzie punkty posterunkÄ‚Ĺ‚w sĂ„â€¦ zawsze statyczne: zielony, szary lub czerwony. */
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro span,
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro span::before,
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro span::after{
  animation:none !important;
}
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro span::after{
  content:none !important;
}
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro--fault span{
  background:#ef4444 !important;
  border-color:rgba(254,202,202,.72) !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 12px rgba(239,68,68,.82),0 0 24px rgba(239,68,68,.34) !important;
}
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro--offline span{
  background:#94a3b8 !important;
  border-color:rgba(226,232,240,.58) !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 10px rgba(148,163,184,.62),0 0 18px rgba(148,163,184,.22) !important;
}
.app-shell[data-page="dashboard"] .leaflet-marker-icon.station-marker-pro:not(.station-marker-pro--fault):not(.station-marker-pro--offline) span{
  background:#22c55e !important;
  border-color:rgba(187,247,208,.72) !important;
  box-shadow:0 0 0 2px rgba(2,9,18,.96),0 0 12px rgba(34,197,94,.78),0 0 24px rgba(34,197,94,.32) !important;
}

/* === POPRAWKA V21: widocznoÄąâ€şĂ„â€ˇ elementÄ‚Ĺ‚w wg uprawnieÄąâ€ž === */
[data-permission-denied="1"]:not([data-permission-mode="disable"]){
  display:none !important;
}
[data-permission-mode="disable"].is-permission-disabled,
[data-permission-mode="disable"][aria-disabled="true"]{
  opacity:.52 !important;
  pointer-events:none !important;
  filter:saturate(.7);
}

/* === POPRAWKA: warstwa Ă˘â‚¬ĹľNa ÄąÄ˝ywoĂ˘â‚¬ĹĄ Ă˘â‚¬â€ť animowane szlaki i posterunki === */
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow{
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
  pointer-events:none !important;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:14 22 !important;
  animation:routeLiveFlowDash 1.05s linear infinite !important;
  filter:drop-shadow(0 0 7px rgba(56,189,248,.55)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--ok{
  stroke:#bbf7d0 !important;
  animation-duration:1.05s !important;
  filter:drop-shadow(0 0 7px rgba(34,197,94,.86)) drop-shadow(0 0 18px rgba(34,197,94,.28)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--warn{
  stroke:#fde68a !important;
  animation-duration:.92s !important;
  filter:drop-shadow(0 0 8px rgba(245,158,11,.88)) drop-shadow(0 0 20px rgba(245,158,11,.32)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--fault{
  stroke:#fecaca !important;
  animation:routeLiveFlowDash .76s linear infinite, routeLiveFaultPulseStrong .9s ease-in-out infinite !important;
  filter:drop-shadow(0 0 9px rgba(239,68,68,.96)) drop-shadow(0 0 24px rgba(239,68,68,.42)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--off{
  stroke:#cbd5e1 !important;
  animation-duration:1.55s !important;
  opacity:.55 !important;
  filter:drop-shadow(0 0 6px rgba(148,163,184,.48)) !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static span::before,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--static span::before{
  content:"" !important;
  position:absolute !important;
  inset:-9px !important;
  border-radius:999px !important;
  background:transparent !important;
  border:1px solid color-mix(in srgb,var(--marker-color,#22c55e),transparent 16%) !important;
  box-shadow:0 0 12px color-mix(in srgb,var(--marker-color,#22c55e),transparent 24%) !important;
  opacity:.75 !important;
  animation:mapLiveStationHalo 1.55s ease-out infinite !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static span,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--static span{
  animation:mapLiveStationCore 1.55s ease-in-out infinite !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--fault span,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--fault span{
  animation:mapLiveStationFaultCore .85s ease-in-out infinite !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--warning span,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--warning span{
  animation:mapLiveStationWarnCore 1.05s ease-in-out infinite !important;
}
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--offline span,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--offline span{
  animation:mapLiveStationOfflineCore 1.3s ease-in-out infinite !important;
}
@keyframes routeLiveFlowDash{
  from{stroke-dashoffset:0;}
  to{stroke-dashoffset:-72;}
}
@keyframes mapLiveStationHalo{
  0%{transform:scale(.55);opacity:.82;}
  72%{opacity:.24;}
  100%{transform:scale(2.05);opacity:0;}
}
@keyframes mapLiveStationCore{
  0%,100%{transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 8px color-mix(in srgb,var(--marker-color,#22c55e),transparent 22%));}
  50%{transform:translate(-50%,-50%) scale(1.18);filter:drop-shadow(0 0 16px color-mix(in srgb,var(--marker-color,#22c55e),transparent 4%));}
}
@keyframes mapLiveStationFaultCore{
  0%,100%{transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 9px rgba(239,68,68,.96));}
  50%{transform:translate(-50%,-50%) scale(1.42);filter:drop-shadow(0 0 22px rgba(239,68,68,1));}
}
@keyframes mapLiveStationWarnCore{
  0%,100%{transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 8px rgba(245,158,11,.90));}
  50%{transform:translate(-50%,-50%) scale(1.28);filter:drop-shadow(0 0 18px rgba(245,158,11,1));}
}
@keyframes mapLiveStationOfflineCore{
  0%,100%{transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 7px rgba(148,163,184,.84));}
  50%{transform:translate(-50%,-50%) scale(1.22);filter:drop-shadow(0 0 16px rgba(148,163,184,.96));}
}


/* === POPRAWKA: warstwa Ă˘â‚¬ĹľNa ÄąÄ˝ywoĂ˘â‚¬ĹĄ bez przyciemniania mapy ===
   Live nie uruchamia juÄąÄ˝ trybu fokus awarii. Te reguÄąâ€šy wzmacniajĂ„â€¦ widocznoÄąâ€şĂ„â€ˇ
   szlakÄ‚Ĺ‚w i posterunkÄ‚Ĺ‚w, ale nie nakÄąâ€šadajĂ„â€¦ ciemnej maski na mapĂ„â„˘. */
.locations-map-wrap .leaflet-container.map-live-layer-mode,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-map-pane,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-tile-pane,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-overlay-pane,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-pane{
  opacity:1 !important;
  filter:none !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-tile,
.locations-map-wrap .leaflet-container.map-live-layer-mode .locations-carto-tiles,
.locations-map-wrap .leaflet-container.map-live-layer-mode .osm-dashboard-tiles{
  opacity:.82 !important;
  filter:none !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode.map-alarm-focus-mode .station-marker-pro--muted,
.locations-map-wrap .leaflet-container.map-live-layer-mode.map-alarm-focus-mode .station-label-pro span{
  opacity:1 !important;
  filter:none !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line{
  opacity:1 !important;
  stroke-width:5px !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow{
  opacity:.46 !important;
  stroke-width:16px !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow{
  opacity:1 !important;
  stroke-width:3.4px !important;
  stroke-dasharray:16 20 !important;
  animation:routeLiveFlowDash .85s linear infinite !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--ok,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--ok{
  stroke:#22ff7a !important;
  filter:drop-shadow(0 0 9px rgba(34,255,122,.98)) drop-shadow(0 0 24px rgba(34,197,94,.45)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--ok{
  stroke:#d9ffe7 !important;
  filter:drop-shadow(0 0 8px rgba(187,247,208,1)) drop-shadow(0 0 20px rgba(34,255,122,.55)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--warn,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--warn{
  stroke:#ffbf1f !important;
  filter:drop-shadow(0 0 9px rgba(255,191,31,.98)) drop-shadow(0 0 24px rgba(245,158,11,.48)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--warn{
  stroke:#fff4b8 !important;
  filter:drop-shadow(0 0 8px rgba(254,240,138,1)) drop-shadow(0 0 20px rgba(245,158,11,.58)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--fault,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--fault{
  stroke:#ff3b3b !important;
  filter:drop-shadow(0 0 10px rgba(255,59,59,1)) drop-shadow(0 0 28px rgba(239,68,68,.58)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-flow--fault{
  stroke:#ffd1d1 !important;
  filter:drop-shadow(0 0 9px rgba(254,202,202,1)) drop-shadow(0 0 24px rgba(239,68,68,.68)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-line--off,
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-pane path.route-live-glow--off{
  stroke:#cbd5e1 !important;
  filter:drop-shadow(0 0 8px rgba(203,213,225,.72)) drop-shadow(0 0 18px rgba(148,163,184,.32)) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live span{
  opacity:1 !important;
  width:12px !important;
  height:12px !important;
  box-shadow:
    0 0 0 2px rgba(2,9,18,.98),
    0 0 10px color-mix(in srgb,var(--marker-color,#22c55e),transparent 6%),
    0 0 24px color-mix(in srgb,var(--marker-color,#22c55e),transparent 35%) !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live span::before{
  inset:-11px !important;
  border-width:2px !important;
  opacity:.92 !important;
}
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-icon.device-marker-pro--group span{
  opacity:1 !important;
  box-shadow:
    0 0 0 2px rgba(2,9,18,.98),
    0 0 10px color-mix(in srgb,var(--marker-color,#22c55e),transparent 4%),
    0 0 24px color-mix(in srgb,var(--marker-color,#22c55e),transparent 36%) !important;
}

/* === FIX: warstwa Na ÄąÄ˝ywo Ă˘â‚¬â€ť bez animowanego okrĂ„â„˘gu dla zielonych posterunkÄ‚Ĺ‚w ===
   Zielone posterunki zostajĂ„â€¦ mocno widoczne, ale bez pulsujĂ„â€¦cego halo/okrĂ„â„˘gu.
   Alarmy, ostrzeÄąÄ˝enia i offline nadal mogĂ„â€¦ uÄąÄ˝ywaĂ„â€ˇ wÄąâ€šasnej animacji. */
.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static:not(.station-marker-pro--fault):not(.station-marker-pro--warning):not(.station-marker-pro--offline) span::before,
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static:not(.station-marker-pro--fault):not(.station-marker-pro--warning):not(.station-marker-pro--offline) span::before,
.leaflet-container.map-live-layer-mode .station-marker-pro--live.station-marker-pro--static:not(.station-marker-pro--fault):not(.station-marker-pro--warning):not(.station-marker-pro--offline) span::before{
  content:none !important;
  display:none !important;
  animation:none !important;
  border:0 !important;
  box-shadow:none !important;
  opacity:0 !important;
}

.locations-map-wrap .leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static:not(.station-marker-pro--fault):not(.station-marker-pro--warning):not(.station-marker-pro--offline) span,
.leaflet-container.map-live-layer-mode .leaflet-marker-icon.station-marker-pro--live.station-marker-pro--static:not(.station-marker-pro--fault):not(.station-marker-pro--warning):not(.station-marker-pro--offline) span{
  animation:none !important;
  transform:translate(-50%,-50%) !important;
  filter:drop-shadow(0 0 10px rgba(34,255,122,.95)) drop-shadow(0 0 22px rgba(34,197,94,.42)) !important;
}


/* ===== Mapa: popup kilku szlakÄ‚Ĺ‚w dla tej samej pary posterunkÄ‚Ĺ‚w ===== */
.map-popup--route-group{
  min-width:280px;
  max-width:min(420px, 86vw);
}
.map-popup__note{
  margin:8px 0 6px;
  padding:7px 9px;
  border:1px solid rgba(56,189,248,.18);
  border-radius:10px;
  background:rgba(8,29,51,.56);
  color:rgba(205,222,241,.72);
  font-size:11px;
  line-height:1.35;
}
.map-popup-route-list{
  display:grid;
  gap:8px;
  max-height:280px;
  overflow:auto;
  padding-right:3px;
  margin-top:8px;
  scrollbar-gutter:stable;
}
.map-popup-route-list::-webkit-scrollbar{
  width:8px;
}
.map-popup-route-list::-webkit-scrollbar-track{
  background:rgba(4,14,28,.55);
  border-radius:999px;
}
.map-popup-route-list::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg, rgba(56,189,248,.62), rgba(37,99,235,.55));
  border-radius:999px;
}
.map-popup-route-item{
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:7px 10px;
  align-items:center;
  text-align:left;
  border:1px solid rgba(83,134,188,.22);
  border-radius:12px;
  background:linear-gradient(135deg, rgba(8,29,51,.78), rgba(2,10,20,.72));
  color:#e5f2ff;
  padding:10px 11px;
  cursor:pointer;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);
}
.map-popup-route-item:hover{
  border-color:rgba(56,189,248,.52);
  background:linear-gradient(135deg, rgba(12,45,78,.9), rgba(5,21,40,.82));
}
.map-popup-route-item--ok{ border-color:rgba(34,197,94,.34); }
.map-popup-route-item--warn{ border-color:rgba(245,158,11,.46); }
.map-popup-route-item--fail{ border-color:rgba(239,68,68,.48); }
.map-popup-route-item--off{ border-color:rgba(148,163,184,.32); }
.map-popup-route-item span{
  display:grid;
  gap:2px;
  min-width:0;
}
.map-popup-route-item b{
  color:#fff;
  font-size:12px;
  letter-spacing:.02em;
}
.map-popup-route-item small{
  color:rgba(205,222,241,.68);
  font-size:11px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.map-popup-route-item em,
.map-popup-route-item i{
  justify-self:end;
  font-style:normal;
  font-size:10px;
  font-weight:900;
  color:rgba(205,222,241,.72);
}
.map-popup-route-item i{
  grid-column:2;
  color:#22c55e;
}
.station-devices-modal .route-center-block--parallel{
  grid-auto-flow:row !important;
  grid-template-columns:1fr !important;
  align-content:center !important;
}
.station-devices-modal .route-center-block--parallel .route-main-block{
  width:100%;
}

/* ===== Mapa: popup i pulpit szlaku pokazujĂ„â€¦ oba kierunki ===== */
.map-popup-route-item__head{
  grid-column:1 / 2;
}
.map-popup-route-directions{
  grid-column:1 / -1;
  display:grid !important;
  gap:6px !important;
  width:100%;
  min-width:0;
}
.map-popup-route-direction{
  display:grid !important;
  grid-template-columns:22px minmax(0,1fr) auto;
  align-items:center;
  gap:7px;
  padding:7px 8px;
  border-radius:10px;
  border:1px solid rgba(83,134,188,.18);
  background:rgba(2,10,20,.42);
}
.map-popup-route-direction b{
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:999px;
  background:rgba(2,10,20,.9);
  border:1px solid rgba(83,134,188,.22);
  font-size:15px;
  line-height:1;
}
.map-popup-route-direction strong{
  min-width:0;
  color:#e5f2ff;
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.map-popup-route-direction em{
  justify-self:end;
  font-style:normal;
  font-size:9px;
  font-weight:900;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.map-popup-route-direction--active{
  border-color:rgba(34,197,94,.42);
  background:linear-gradient(90deg, rgba(16,185,129,.16), rgba(2,10,20,.46));
}
.map-popup-route-direction--active b,
.map-popup-route-direction--active em{
  color:#22c55e;
}
.map-popup-route-direction--standby{
  border-color:rgba(56,189,248,.22);
  opacity:.86;
}
.map-popup-route-direction--standby b,
.map-popup-route-direction--standby em{
  color:#67e8f9;
}
.map-popup-route-direction--blocked{
  border-color:rgba(239,68,68,.42);
  background:linear-gradient(90deg, rgba(239,68,68,.12), rgba(2,10,20,.48));
}
.map-popup-route-direction--blocked b,
.map-popup-route-direction--blocked em{
  color:#f87171;
}
.route-main-block__directions--both{
  gap:8px;
}
.route-direction-row--active{
  border-color:rgba(34,197,94,.42);
  background:linear-gradient(90deg, rgba(16,185,129,.13), rgba(8,29,51,.62));
}
.route-direction-row--active .route-direction-line{
  color:#22c55e;
}
.route-direction-row--standby{
  border-color:rgba(56,189,248,.18);
  background:rgba(2,10,20,.34);
  opacity:.86;
}
.route-direction-row--standby .route-direction-line{
  color:#67e8f9;
}
.route-direction-row--blocked{
  border-color:rgba(239,68,68,.42);
  background:linear-gradient(90deg, rgba(239,68,68,.13), rgba(2,10,20,.46));
}
.route-direction-row--blocked .route-direction-line{
  color:#f87171;
}
.station-routes-table__direction--active td{
  background:rgba(16,185,129,.035);
}
.station-routes-table__direction--standby td{
  background:rgba(56,189,248,.025);
}
.station-routes-table__direction--blocked td{
  background:rgba(239,68,68,.045);
}
.station-routes-table__direction td b{
  display:block;
  color:var(--text-primary);
  font-size:11px;
  white-space:nowrap;
}
.station-routes-table__direction td small{
  display:block;
  margin-top:2px;
  color:rgba(205,222,241,.56);
  font-size:9px;
  font-weight:900;
  letter-spacing:.06em;
  text-transform:uppercase;
}
@media (max-width:720px){
  .map-popup-route-direction{
    grid-template-columns:22px minmax(0,1fr);
  }
  .map-popup-route-direction em{
    grid-column:2;
    justify-self:start;
  }
}

/* ================================================================
   GLOBALNE ANIMACJE ÄąÂADOWANIA DANYCH
================================================================ */
.jk-data-loader{
  position:fixed;
  right:24px;
  bottom:24px;
  z-index:9999;
  width:min(340px, calc(100vw - 32px));
  opacity:0;
  transform:translateY(18px) scale(.98);
  pointer-events:none;
  transition:opacity .22s ease, transform .22s ease;
}
.jk-data-loader.is-visible{
  opacity:1;
  transform:translateY(0) scale(1);
}
.jk-data-loader__bar{
  position:fixed;
  left:0;
  top:0;
  width:100vw;
  height:3px;
  background:linear-gradient(90deg, transparent, var(--blue-bright), var(--cyan), transparent);
  background-size:220% 100%;
  animation:jkLoaderBar 1.15s linear infinite;
  box-shadow:0 0 18px rgba(59,142,255,.38);
}
.jk-data-loader__box{
  display:flex;
  align-items:center;
  gap:12px;
  padding:13px 15px;
  border:1px solid rgba(59,142,255,.38);
  border-radius:16px;
  background:linear-gradient(135deg, rgba(13,21,32,.96), rgba(8,13,20,.94));
  box-shadow:0 18px 55px rgba(0,0,0,.34), 0 0 28px rgba(29,111,232,.18);
  backdrop-filter:blur(14px);
}
.jk-data-loader__spinner,
.jk-local-loader__spinner{
  width:28px;
  height:28px;
  border-radius:50%;
  border:3px solid rgba(122,154,191,.22);
  border-top-color:var(--cyan);
  border-right-color:var(--blue-bright);
  animation:jkLoaderSpin .78s linear infinite;
  flex:0 0 auto;
}
.jk-data-loader__text{
  display:grid;
  gap:2px;
  min-width:0;
}
.jk-data-loader__text strong{
  color:var(--text-primary);
  font-family:var(--font-display);
  font-size:15px;
  font-weight:700;
  letter-spacing:.03em;
}
.jk-data-loader__text small{
  color:var(--text-muted);
  font-size:11px;
}
.jk-local-loader{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:92px;
  padding:22px;
  border:1px solid rgba(59,142,255,.20);
  border-radius:var(--r-lg);
  background:linear-gradient(135deg, rgba(13,21,32,.86), rgba(8,13,20,.72));
  color:var(--text-secondary);
  font-family:var(--font-display);
  font-weight:700;
  letter-spacing:.03em;
}
.jk-local-loader--compact{
  min-height:54px;
  padding:12px;
  justify-content:flex-start;
}
.jk-module-loading{
  display:grid;
  gap:14px;
}
.jk-module-loading__head{
  display:flex;
  align-items:center;
  gap:12px;
}
.jk-skeleton-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:14px;
}
.jk-skeleton-card{
  min-height:104px;
  padding:16px;
  border:1px solid rgba(51,87,132,.25);
  border-radius:var(--r-lg);
  background:linear-gradient(135deg, rgba(17,28,45,.82), rgba(9,16,28,.68));
  overflow:hidden;
}
.jk-skeleton-line,
.jk-skeleton-pill,
.jk-table-skeleton span,
.jk-log-skeleton span{
  position:relative;
  display:block;
  overflow:hidden;
  border-radius:999px;
  background:rgba(122,154,191,.14);
}
.jk-skeleton-line::after,
.jk-skeleton-pill::after,
.jk-table-skeleton span::after,
.jk-log-skeleton span::after{
  content:'';
  position:absolute;
  inset:0;
  transform:translateX(-100%);
  background:linear-gradient(90deg, transparent, rgba(232,240,255,.18), transparent);
  animation:jkSkeletonShimmer 1.25s ease-in-out infinite;
}
.jk-skeleton-line{height:12px;margin-top:11px}
.jk-skeleton-line:first-child{margin-top:0;width:46%;height:15px}
.jk-skeleton-line:nth-child(2){width:72%}
.jk-skeleton-line:nth-child(3){width:58%}
.jk-skeleton-line:nth-child(4){width:88%}
.jk-skeleton-pill{width:86px;height:24px}
.jk-table-skeleton td{padding:14px 12px !important}
.jk-table-skeleton span{height:12px;min-width:62px}
.jk-table-skeleton td:nth-child(1) span{height:16px;max-width:210px}
.jk-table-skeleton td:nth-child(2) span{max-width:150px}
.jk-table-skeleton td:nth-child(3) span{max-width:180px}
.jk-table-skeleton td:nth-child(4) span{max-width:110px}
.jk-table-skeleton td:nth-child(5) span{max-width:95px}
.jk-table-skeleton td:nth-child(6) span{max-width:120px}
.jk-log-skeleton{
  display:grid;
  grid-template-columns:82px 120px 72px 1fr;
  gap:12px;
  align-items:center;
  padding:10px 0;
  border-bottom:1px solid rgba(122,154,191,.08);
}
.jk-log-skeleton span{height:13px}
.jk-content-dimmed{opacity:.58;filter:saturate(.82)}
@keyframes jkLoaderSpin{to{transform:rotate(360deg)}}
@keyframes jkLoaderBar{0%{background-position:220% 0}100%{background-position:-220% 0}}
@keyframes jkSkeletonShimmer{100%{transform:translateX(100%)}}
@media (max-width:720px){
  .jk-data-loader{right:16px;bottom:16px;width:calc(100vw - 32px)}
  .jk-data-loader__box{padding:12px}
  .jk-skeleton-grid{grid-template-columns:1fr}
}


/* ================================================================
   LOADER FIX 2 Ă˘â‚¬â€ť wymuszone animacje na kaÄąÄ˝dej stronie
   DziaÄąâ€ša nawet, gdy loader pojawi siĂ„â„˘ zanim JS doÄąâ€šaduje style.
================================================================ */
body .jk-data-loader{
  position:fixed!important;
  left:auto!important;
  right:24px!important;
  bottom:24px!important;
  top:auto!important;
  z-index:2147483000!important;
  width:min(360px, calc(100vw - 32px))!important;
  max-width:calc(100vw - 32px)!important;
  display:block!important;
  opacity:0!important;
  transform:translateY(18px) scale(.98)!important;
  pointer-events:none!important;
  transition:opacity .22s ease, transform .22s ease!important;
  font-family:var(--font-base, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif)!important;
  color:var(--text-primary, #e8f2ff)!important;
  line-height:1.25!important;
}
body .jk-data-loader.is-visible{
  opacity:1!important;
  transform:translateY(0) scale(1)!important;
}
body .jk-data-loader__bar{
  position:fixed!important;
  left:0!important;
  top:0!important;
  width:100vw!important;
  height:3px!important;
  display:block!important;
  background:linear-gradient(90deg, transparent, var(--blue-bright, #3b8eff), var(--cyan, #22d3ee), transparent)!important;
  background-size:220% 100%!important;
  animation:jkLoaderBar 1.15s linear infinite!important;
  box-shadow:0 0 18px rgba(59,142,255,.42)!important;
}
body .jk-data-loader__box{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  padding:13px 15px!important;
  border:1px solid rgba(59,142,255,.42)!important;
  border-radius:16px!important;
  background:linear-gradient(135deg, rgba(13,21,32,.97), rgba(8,13,20,.95))!important;
  box-shadow:0 18px 55px rgba(0,0,0,.36), 0 0 30px rgba(29,111,232,.20)!important;
  backdrop-filter:blur(14px)!important;
}
body .jk-data-loader__spinner,
body .jk-local-loader__spinner,
body .jk-initial-loading::before{
  width:28px!important;
  height:28px!important;
  border-radius:50%!important;
  border:3px solid rgba(122,154,191,.24)!important;
  border-top-color:var(--cyan, #22d3ee)!important;
  border-right-color:var(--blue-bright, #3b8eff)!important;
  animation:jkLoaderSpin .78s linear infinite!important;
  flex:0 0 auto!important;
  box-sizing:border-box!important;
}
body .jk-data-loader__text{
  display:grid!important;
  gap:2px!important;
  min-width:0!important;
}
body .jk-data-loader__text strong{
  color:var(--text-primary, #e8f2ff)!important;
  font-family:var(--font-display, inherit)!important;
  font-size:15px!important;
  font-weight:800!important;
  letter-spacing:.03em!important;
}
body .jk-data-loader__text small{
  color:var(--text-muted, #9db4d0)!important;
  font-size:11px!important;
  font-weight:600!important;
}
body .jk-local-loader,
body .jk-initial-loading{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:12px!important;
  min-height:92px!important;
  padding:22px!important;
  border:1px solid rgba(59,142,255,.20)!important;
  border-radius:var(--r-lg, 16px)!important;
  background:linear-gradient(135deg, rgba(13,21,32,.86), rgba(8,13,20,.72))!important;
  color:var(--text-secondary, #c6d5ea)!important;
  font-family:var(--font-display, inherit)!important;
  font-weight:800!important;
  letter-spacing:.03em!important;
  text-align:center!important;
}
body .jk-initial-loading::before{
  content:''!important;
  display:block!important;
}
body tr.jk-table-skeleton td.empty-state,
body td.empty-state.jk-initial-loading{
  padding:18px 12px!important;
}
body td.empty-state.jk-initial-loading{
  display:table-cell!important;
}
body td.empty-state.jk-initial-loading::before{
  content:''!important;
  display:inline-block!important;
  vertical-align:middle!important;
  margin-right:10px!important;
}
body .logs-muted.jk-initial-loading,
body .jk-profile-loading.jk-initial-loading{
  min-height:160px!important;
}
body .jk-data-loading .main-content{
  cursor:progress;
}
@media(max-width:720px){
  body .jk-data-loader{right:16px!important;bottom:16px!important;width:calc(100vw - 32px)!important}
  body .jk-data-loader__box{padding:12px!important}
}


/* ===== Mapy: skrÄ‚Ĺ‚cone nazwy posterunkÄ‚Ĺ‚w zawsze jako kompaktowe etykiety ===== */
.station-label-pro--short span {
  justify-content: center !important;
  min-width: 26px !important;
  max-width: 64px !important;
  text-align: center !important;
  font-weight: 850 !important;
  letter-spacing: .025em !important;
}

/* ===== Mapy: peÄąâ€šne nazwy posterunkÄ‚Ĺ‚w z automatycznym zagĂ„â„˘szczaniem ===== */
.station-label-pro--full span {
  justify-content: flex-start !important;
  min-width: max-content !important;
  max-width: none !important;
  padding-inline: 7px !important;
  white-space: nowrap !important;
  text-align: left !important;
  font-weight: 760 !important;
  letter-spacing: .01em !important;
}

/* Aktywne sesje uÄąÄ˝ytkownikÄ‚Ĺ‚w na mapie */
.legend-dot--session{
  background:linear-gradient(135deg,#a855f7,#38bdf8) !important;
  box-shadow:0 0 0 3px rgba(168,85,247,.18),0 0 14px rgba(56,189,248,.38);
}
.map-session-marker{
  background:transparent;
  border:0;
}
.map-session-marker__avatar{
  width:34px;
  height:34px;
  border-radius:999px;
  display:grid;
  place-items:center;
  color:#fff;
  font-weight:900;
  font-size:11px;
  letter-spacing:.03em;
  background:linear-gradient(135deg,#7c3aed 0%,#2563eb 48%,#06b6d4 100%);
  border:2px solid rgba(255,255,255,.92);
  box-shadow:0 0 0 4px rgba(59,130,246,.20),0 12px 30px rgba(15,23,42,.42),0 0 24px rgba(6,182,212,.38);
  position:relative;
}
.map-session-marker__avatar::after{
  content:'';
  position:absolute;
  inset:-8px;
  border-radius:inherit;
  border:1px solid rgba(56,189,248,.45);
  animation:jkSessionPulse 1.8s ease-out infinite;
}
.map-session-marker b{
  position:absolute;
  right:-7px;
  top:-8px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:#ef4444;
  color:#fff;
  border:2px solid rgba(255,255,255,.96);
  font-size:10px;
  line-height:1;
  font-weight:900;
  box-shadow:0 6px 16px rgba(239,68,68,.35);
}
.map-popup--session strong{
  color:#eff6ff;
}
.map-popup-shell--session .leaflet-popup-content-wrapper{
  border-color:rgba(56,189,248,.35);
  box-shadow:0 22px 60px rgba(15,23,42,.55),0 0 0 1px rgba(168,85,247,.18) inset;
}
.map-sessions-layer-mode .map-session-marker{
  filter:drop-shadow(0 10px 20px rgba(14,165,233,.24));
}
@keyframes jkSessionPulse{
  0%{transform:scale(.75);opacity:.75;}
  75%,100%{transform:scale(1.55);opacity:0;}
}

/* === Centrum alarmÄ‚Ĺ‚w === */
.alarms-page { padding-bottom: 28px; }
.alarms-topbar { align-items: flex-start; }
.alarms-topbar__actions { display:flex; align-items:center; justify-content:flex-end; gap:12px; flex-wrap:wrap; }
.alarms-tabs { display:flex; align-items:center; gap:24px; border-bottom:1px solid rgba(83,134,188,.20); margin:2px 0 14px; }
.alarms-tabs .tab-btn { text-decoration:none; background:transparent; }
.alarms-tabs .tab-count--yellow { background:var(--yellow); color:#071523; }
.alarms-stats { grid-template-columns: repeat(5, minmax(150px, 1fr)); margin-bottom:14px; }
.alarms-layout { display:grid; grid-template-columns:minmax(620px, 1fr) minmax(460px, 500px); gap:14px; align-items:stretch; }
.alarms-board, .alarms-detail { min-height:520px; }
.alarms-filters { display:grid; grid-template-columns:minmax(240px, 1.4fr) repeat(4, minmax(132px, .8fr)) auto; gap:10px; align-items:end; padding-bottom:14px; border-bottom:1px solid rgba(83,134,188,.14); margin-bottom:8px; }
.alarms-filters label { display:grid; gap:6px; color:#b9c9dd; font-size:12px; font-weight:700; }
.alarms-filters select, .alarms-filters input { width:100%; height:40px; border:1px solid var(--border); border-radius:8px; background:rgba(4,13,23,.72); color:var(--text-primary); padding:0 12px; outline:none; }
.alarms-filters select:focus, .alarms-filters input:focus { border-color:var(--blue); box-shadow:var(--glow-blue); }
.alarms-search { position:relative; }
.alarms-search span { position:absolute; left:12px; bottom:10px; color:#7f96b0; font-size:17px; z-index:1; }
.alarms-search input { padding-left:36px; }
.alarms-table-wrap { min-height:402px; }
.alarms-table th, .alarms-table td { vertical-align:middle; }
.alarm-row { cursor:pointer; }
.alarm-row.is-selected td { background:rgba(29,111,232,.08); }
.alarm-title-cell { display:flex; align-items:center; gap:11px; min-width:230px; }
.alarm-title-cell strong, .alarms-table td strong { display:block; color:#eaf3ff; font-weight:700; }
.alarm-title-cell small, .alarms-table td small { display:block; color:#8ba1ba; margin-top:2px; font-size:11px; line-height:1.35; }
.alarm-icon { width:34px; height:34px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.alarm-priority { display:inline-flex; align-items:center; justify-content:center; min-width:82px; padding:5px 8px; border-radius:8px; font-size:11px; font-weight:800; }
.alarm-priority--critical { color:var(--red); background:var(--red-bg); border:1px solid var(--red-border); }
.alarm-priority--high { color:#ff9f31; background:rgba(245,112,11,.12); border:1px solid rgba(245,112,11,.25); }
.alarm-priority--medium { color:var(--yellow); background:var(--yellow-bg); border:1px solid var(--yellow-border); }
.alarm-priority--info { color:var(--blue-bright); background:rgba(29,111,232,.12); border:1px solid rgba(29,111,232,.28); }
.alarm-actions { white-space:nowrap; }
.alarm-actions .btn-icon { width:32px; height:32px; margin-right:5px; }
.alarms-pagination { display:grid; grid-template-columns:auto 1fr auto; gap:16px; align-items:center; border-top:1px solid rgba(83,134,188,.14); padding-top:12px; margin-top:8px; color:#b8c9de; font-size:12px; }
.alarms-pagination label { display:flex; align-items:center; gap:8px; }
.alarms-pagination select { height:34px; border:1px solid var(--border); border-radius:8px; background:rgba(4,13,23,.72); color:#fff; padding:0 10px; }
.alarms-pagination__nav { display:flex; justify-content:center; align-items:center; gap:8px; }
.alarms-pagination__info { text-align:right; color:#91a4bb; }
.alarms-detail { padding:0; overflow:hidden; }
.alarms-detail__head { height:54px; padding:0 18px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid rgba(83,134,188,.16); }
.alarms-detail__head h3 { font-size:16px; font-weight:800; color:#fff; margin:0; }
.alarms-detail__body { padding:18px; }
.alarms-detail__statusline { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.alarms-detail__title { display:flex; align-items:center; gap:10px; margin:0 0 18px; color:#fff; font-size:18px; line-height:1.25; }
.alarms-detail__meta { display:grid; gap:10px; padding-bottom:14px; border-bottom:1px solid rgba(83,134,188,.14); }
.alarms-detail__meta div { display:grid; grid-template-columns:138px 1fr; gap:14px; }
.alarms-detail__meta dt { color:#8ba1ba; font-size:12px; }
.alarms-detail__meta dd { color:#e8f0ff; font-weight:600; overflow-wrap:anywhere; }
.alarms-detail__meta dd small { display:block; color:#8ba1ba; font-weight:500; margin-top:2px; }
.alarms-detail__section { border-bottom:1px solid rgba(83,134,188,.14); padding:15px 0; }
.alarms-detail__section h4 { margin:0 0 8px; color:#fff; font-size:13px; }
.alarms-detail__section p, .alarms-detail__section li { color:#b8c9de; font-size:13px; overflow-wrap:anywhere; }
.alarms-detail__section ul { margin-left:18px; display:grid; gap:5px; }
.alarms-detail__section li::marker { color:var(--yellow); }
.alarms-detail__actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding-top:16px; }
@media (max-width: 1500px) { .alarms-layout { grid-template-columns:minmax(580px, 1fr) minmax(420px, 460px); } }
@media (max-width: 1280px) { .alarms-layout { grid-template-columns:1fr; } .alarms-stats { grid-template-columns: repeat(2, minmax(180px, 1fr)); } .alarms-detail { min-height:auto; } }
@media (max-width: 960px) { .alarms-filters { grid-template-columns:1fr 1fr; } .alarms-filters .btn { grid-column:1 / -1; } .alarms-pagination { grid-template-columns:1fr; } .alarms-pagination__info { text-align:left; } }
@media (max-width: 640px) { .alarms-topbar__actions, .alarms-detail__actions { grid-template-columns:1fr; display:grid; width:100%; } .alarms-filters { grid-template-columns:1fr; } .alarms-tabs { overflow-x:auto; gap:16px; } .alarms-stats { grid-template-columns:1fr; } }
.notifications-history-row--note {
  align-items:start;
  padding-top:6px;
}
.notifications-history-note {
  display:block;
  margin-top:7px;
  padding:8px 10px;
  border:1px solid rgba(64, 154, 255, .18);
  border-left:3px solid rgba(30,144,255,.75);
  border-radius:10px;
  background:rgba(7, 20, 34, .48);
  color:#dbeafe !important;
  line-height:1.45;
  white-space:pre-wrap;
}
.notifications-actions-grid .btn[disabled] {
  opacity:.45;
  cursor:not-allowed;
  filter:grayscale(.25);
}


/* Case-sensitive station abbreviations */
.railway-station-node__screen strong,
.route-posterunek .railway-station-node__screen strong,
.station-devices-modal__code[data-station-code="true"]{
  text-transform:none !important;
}


/* WyrÄ‚Ĺ‚wnanie podpisÄ‚Ĺ‚w Ă˘â‚¬ĹľSzlak: Ă˘â‚¬Â¦Ă˘â‚¬ĹĄ na pulpicie szlaku */
.route-line-layout--signals .route-posterunek .railway-station-node{
  display:grid !important;
  grid-template-rows:minmax(104px, auto) auto minmax(48px, auto) !important;
  align-content:stretch !important;
}
.route-line-layout--signals .route-posterunek .railway-station-node__screen{
  align-self:start !important;
}
.route-line-layout--signals .route-posterunek .railway-station-node__signals{
  align-self:center !important;
}
.route-line-layout--signals .route-posterunek .railway-station-node__direction{
  align-self:end !important;
  min-height:48px !important;
  display:grid !important;
  place-items:center !important;
}

/* Pulpit szlaku: jeden szlak, kierunek tylko strzaÄąâ€škĂ„â€¦ */
.route-direction-row--one-route .route-direction-row__label span{
  color:rgba(103,232,249,.82);
}
.route-direction-row--one-route .route-direction-row__label b{
  white-space:normal;
  text-overflow:clip;
}

/* Pulpit szlaku: stan blokady kanaÄąâ€šÄ‚Ĺ‚w A/B zamiast sygnaÄąâ€šÄ‚Ĺ‚w */
.block-state-pair{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:stretch;
  justify-content:center;
  width:100%;
}
.block-state{
  display:grid;
  grid-template-columns:18px minmax(0, 1fr) auto;
  grid-template-areas:
    "lamp label hex"
    "lamp value value";
  align-items:center;
  column-gap:9px;
  row-gap:3px;
  min-height:48px;
  min-width:210px;
  max-width:260px;
  padding:8px 11px;
  border-radius:13px;
  border:1px solid rgba(83,134,188,.22);
  background:rgba(2,10,20,.72);
  color:rgba(223,243,255,.92);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.block-state i{
  grid-area:lamp;
  width:16px;
  height:16px;
  border-radius:999px;
  border:2px solid rgba(2,10,20,.96);
  background:#64748b;
  box-shadow:0 0 0 1px rgba(100,116,139,.45), 0 0 16px rgba(100,116,139,.50);
}
.block-state b{
  grid-area:label;
  min-width:0;
  color:rgba(205,222,241,.74);
  font-size:9px;
  line-height:1.1;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
  white-space:nowrap;
}
.block-state > small{
  grid-area:hex;
  justify-self:end;
  padding:2px 6px;
  border-radius:999px;
  border:1px solid rgba(148,163,184,.20);
  background:rgba(15,23,42,.58);
  color:rgba(219,234,254,.78);
  font-size:9px;
  line-height:1;
  font-weight:900;
  letter-spacing:.04em;
  white-space:nowrap;
}
.block-state em{
  grid-area:value;
  display:block;
  min-width:0;
  font-style:normal;
  color:#dbeafe;
  font-size:11px;
  line-height:1.2;
  font-weight:900;
  letter-spacing:.01em;
  text-transform:none;
  white-space:normal;
  overflow-wrap:anywhere;
}
.block-state--green{
  border-color:rgba(34,197,94,.24);
  background:linear-gradient(180deg, rgba(34,197,94,.10), rgba(2,10,20,.72));
}
.block-state--green i{
  background:#22c55e;
  box-shadow:0 0 0 1px rgba(34,197,94,.45), 0 0 16px rgba(34,197,94,.78);
}
.block-state--green em{ color:#bfffe0; }
.block-state--red{
  border-color:rgba(239,68,68,.28);
  background:linear-gradient(180deg, rgba(239,68,68,.10), rgba(2,10,20,.72));
}
.block-state--red i{
  background:#ef4444;
  box-shadow:0 0 0 1px rgba(239,68,68,.45), 0 0 16px rgba(239,68,68,.78);
}
.block-state--red em{ color:#ffc8c8; }
.block-state--warn{
  border-color:rgba(245,158,11,.28);
  background:linear-gradient(180deg, rgba(245,158,11,.10), rgba(2,10,20,.72));
}
.block-state--warn i{
  background:#f59e0b;
  box-shadow:0 0 0 1px rgba(245,158,11,.45), 0 0 16px rgba(245,158,11,.70);
}
.block-state--warn em{ color:#fde68a; }
.route-direction-row--one-route{
  grid-template-columns:minmax(150px,.62fr) minmax(390px,1.45fr) auto;
}
.route-direction-row--one-route .block-state-pair{
  justify-content:center;
}
.route-direction-row--one-route .block-state{
  flex:1 1 190px;
  min-width:190px;
  max-width:240px;
}
.station-routes-table .block-state{
  min-width:150px;
  max-width:210px;
  padding:6px 8px;
  min-height:42px;
}
.station-routes-table .block-state b{
  font-size:8px;
}
.station-routes-table .block-state em,
.station-routes-table .block-state > small{
  font-size:8px;
}
.station-routes-table .block-state i{
  width:10px;
  height:10px;
}
.route-posterunek .block-state-pair{
  flex-direction:row;
  flex-wrap:nowrap;
  align-items:stretch;
  justify-content:stretch;
  gap:8px;
}
.route-posterunek .block-state{
  flex:1 1 0;
  min-width:0;
  width:100%;
  max-width:none;
}
@media (max-width: 900px){
  .route-direction-row--one-route{
    grid-template-columns:1fr;
  }
  .route-direction-row--one-route .block-state-pair{
    justify-content:center;
  }
}

/* Pulpit szlaku Ă˘â‚¬â€ť uporzĂ„â€¦dkowany ukÄąâ€šad okna Ă˘â‚¬ĹľSzlak gÄąâ€šÄ‚Ĺ‚wnyĂ˘â‚¬ĹĄ */
.route-direction-row--one-route{
  display:grid !important;
  grid-template-columns:minmax(170px,.62fr) minmax(170px,.72fr) minmax(390px,1.35fr) !important;
  align-items:center !important;
  gap:14px !important;
  padding:14px 16px !important;
}
.route-direction-row--one-route .route-direction-row__route{
  display:grid;
  gap:5px;
  min-width:0;
}
.route-direction-row--one-route .route-direction-row__route span{
  color:rgba(103,232,249,.88);
  font-size:10px;
  line-height:1;
  font-weight:950;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.route-direction-row--one-route .route-direction-row__route b{
  color:#f8fbff;
  font-size:13px;
  line-height:1.2;
  font-weight:950;
  white-space:normal;
  overflow-wrap:anywhere;
}
.route-direction-row--one-route .route-direction-line--main{
  width:100%;
  min-width:150px;
  justify-self:stretch;
  align-self:center;
}
.route-direction-row--one-route .block-state-pair{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  gap:10px !important;
  justify-content:stretch !important;
  align-items:stretch !important;
}
.route-direction-row--one-route .block-state{
  min-width:0 !important;
  width:100% !important;
  max-width:none !important;
  min-height:52px;
}
@media (max-width: 1100px){
  .route-direction-row--one-route{
    grid-template-columns:1fr !important;
  }
  .route-direction-row--one-route .route-direction-line--main{
    max-width:360px;
    justify-self:center;
  }
}

/* Pulpit szlaku: Szlak gÄąâ€šÄ‚Ĺ‚wny bez kanaÄąâ€šÄ‚Ĺ‚w A/B w Äąâ€şrodkowym oknie */
.route-direction-row--one-route.route-direction-row--main-only{
  display:grid !important;
  grid-template-columns:1fr !important;
  align-items:center !important;
  gap:12px !important;
  padding:16px 18px !important;
  min-height:112px;
}
.route-direction-row--one-route.route-direction-row--main-only .route-direction-row__route{
  display:grid !important;
  gap:7px !important;
  justify-items:start !important;
}
.route-direction-row--one-route.route-direction-row--main-only .route-direction-row__route span{
  color:rgba(103,232,249,.9);
  font-size:10px;
  line-height:1;
  font-weight:950;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.route-direction-row--one-route.route-direction-row--main-only .route-direction-row__route b{
  color:#f8fbff;
  font-size:15px;
  line-height:1.22;
  font-weight:950;
  white-space:normal;
  overflow-wrap:anywhere;
}
.route-direction-row--one-route.route-direction-row--main-only .route-direction-line--main{
  width:100% !important;
  min-width:0 !important;
  max-width:none !important;
  justify-self:stretch !important;
  align-self:center !important;
}
.route-direction-row--one-route.route-direction-row--main-only .block-state-pair,
.route-direction-row--one-route.route-direction-row--main-only .block-state{
  display:none !important;
}

/* Pulpit szlaku: peÄąâ€šne nazwy posterunkÄ‚Ĺ‚w i skrÄ‚Ĺ‚ty na koÄąâ€žcach linii */
.route-posterunek .railway-station-node__screen--full-name{
  min-height:92px;
  padding:14px 18px;
}
.route-posterunek .railway-station-node__screen--full-name strong{
  font-size:clamp(18px, 1.45vw, 27px) !important;
  line-height:1.16 !important;
  letter-spacing:.01em !important;
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  overflow-wrap:anywhere !important;
  text-transform:none !important;
}
.route-line-layout--signals .route-posterunek .railway-station-node{
  grid-template-rows:minmax(92px, auto) auto !important;
}
.route-line-layout--signals .route-posterunek .railway-station-node__direction{
  display:none !important;
}
.route-direction-row--one-route.route-direction-row--main-only{
  gap:16px !important;
  min-height:130px !important;
}
.route-direction-row--one-route.route-direction-row--main-only .route-direction-row__route{
  justify-items:start !important;
}
.route-main-line-with-codes{
  width:100%;
  display:grid;
  grid-template-columns:minmax(34px, auto) minmax(170px, 1fr) minmax(34px, auto);
  align-items:center;
  gap:12px;
}
.route-main-line-with-codes__code{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  padding:5px 8px;
  border-radius:10px;
  border:1px solid rgba(56,189,248,.24);
  background:rgba(3,13,25,.72);
  color:#e9f5ff;
  font-size:clamp(15px, 1.3vw, 24px);
  line-height:1;
  font-weight:950;
  letter-spacing:.02em;
  text-transform:none;
  text-shadow:0 0 14px rgba(56,189,248,.34);
}
.route-main-line-with-codes .route-direction-line--main{
  min-width:0 !important;
  width:100% !important;
  max-width:none !important;
}
.route-main-block .route-main-block__name{
  display:none !important;
}
@media (max-width: 900px){
  .route-main-line-with-codes{
    grid-template-columns:auto minmax(120px, 1fr) auto;
    gap:8px;
  }
}


/* Pulpit szlaku: status odcinka nad strzaÄąâ€škĂ„â€¦ kierunku */
.route-direction-row--one-route.route-direction-row--main-only{
  display:grid !important;
  grid-template-columns:1fr !important;
  align-content:center !important;
  justify-items:stretch !important;
  gap:10px !important;
}
.track-section-occupancy{
  justify-self:center;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:7px 12px;
  border-radius:999px;
  border:1px solid rgba(83,134,188,.20);
  background:rgba(2,10,20,.72);
  box-shadow:0 10px 24px rgba(0,0,0,.18);
  color:rgba(205,222,241,.82);
  line-height:1;
  white-space:nowrap;
}
.track-section-occupancy::before{
  content:'';
  width:9px;
  height:9px;
  border-radius:999px;
  background:rgba(148,163,184,.92);
  box-shadow:0 0 12px rgba(148,163,184,.45);
}
.track-section-occupancy span{
  color:rgba(205,222,241,.56);
  font-size:9px;
  font-weight:950;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.track-section-occupancy strong{
  color:#f8fbff;
  font-size:12px;
  font-weight:950;
}
.track-section-occupancy small{
  display:inline-flex;
  align-items:center;
  padding:2px 6px;
  border-radius:999px;
  background:rgba(148,163,184,.14);
  border:1px solid rgba(148,163,184,.20);
  color:rgba(226,239,255,.72);
  font-size:9px;
  font-weight:900;
}
.track-section-occupancy--free{
  border-color:rgba(34,197,94,.35);
  background:linear-gradient(90deg, rgba(6,43,30,.76), rgba(4,27,23,.68));
}
.track-section-occupancy--free::before{
  background:#22c55e;
  box-shadow:0 0 16px rgba(34,197,94,.70);
}
.track-section-occupancy--occupied{
  border-color:rgba(239,68,68,.42);
  background:linear-gradient(90deg, rgba(65,16,23,.76), rgba(35,10,17,.70));
}
.track-section-occupancy--occupied::before{
  background:#ef4444;
  box-shadow:0 0 16px rgba(239,68,68,.72);
}
.track-section-occupancy--unknown{
  border-color:rgba(245,158,11,.36);
  background:linear-gradient(90deg, rgba(65,43,12,.72), rgba(35,24,10,.66));
}
.track-section-occupancy--unknown::before{
  background:#f59e0b;
  box-shadow:0 0 16px rgba(245,158,11,.62);
}


/* Ie-104: nowoczesne zobrazowanie stanu odcinka torowego */
.route-direction-line--track-basic,
.route-direction-line--track-free{
  color:#22c55e !important;
}
.route-direction-line--track-occupied{
  color:#ef4444 !important;
}
.route-direction-line--track-no-data{
  color:#f8fafc !important;
}
.route-direction-line--track-control-failure,
.route-direction-line--track-reset-required,
.route-direction-line--track-first-pass{
  color:#f87171 !important;
}
.route-direction-line--track-time-release{
  color:#fb7185 !important;
}
.route-direction-line--track-locked-train{
  color:#22c55e !important;
}
.route-direction-line--track-locked-shunting,
.route-direction-line--track-shunting-area{
  color:#38bdf8 !important;
}
.route-direction-line--track-no-data em{
  background:repeating-linear-gradient(90deg, rgba(248,250,252,.90) 0 14px, rgba(248,250,252,.18) 14px 24px) !important;
  box-shadow:0 0 16px rgba(248,250,252,.42) !important;
}
.route-direction-line--track-control-failure em,
.route-direction-line--track-reset-required em,
.route-direction-line--track-first-pass em{
  background:repeating-linear-gradient(90deg, #f87171 0 12px, rgba(248,250,252,.95) 12px 22px) !important;
  box-shadow:0 0 18px rgba(248,113,113,.72) !important;
  animation:railwayDash 1s linear infinite;
}
.route-direction-line--track-time-release em{
  background:linear-gradient(90deg, rgba(251,113,133,.35), #fb7185, rgba(251,113,133,.35)) !important;
}
.track-section-occupancy--basic{
  border-color:rgba(34,197,94,.35);
  background:linear-gradient(90deg, rgba(6,43,30,.76), rgba(4,27,23,.68));
}
.track-section-occupancy--basic::before{
  background:#22c55e;
  box-shadow:0 0 16px rgba(34,197,94,.70);
}
.track-section-occupancy--no-data{
  border-color:rgba(248,250,252,.40);
  background:linear-gradient(90deg, rgba(71,85,105,.70), rgba(15,23,42,.68));
}
.track-section-occupancy--no-data::before{
  background:#f8fafc;
  box-shadow:0 0 16px rgba(248,250,252,.60);
}
.track-section-occupancy--control-failure,
.track-section-occupancy--reset-required,
.track-section-occupancy--first-pass{
  border-color:rgba(239,68,68,.48);
  background:linear-gradient(90deg, rgba(69,10,10,.76), rgba(35,10,17,.68));
}
.track-section-occupancy--control-failure::before,
.track-section-occupancy--reset-required::before,
.track-section-occupancy--first-pass::before{
  background:#ef4444;
  box-shadow:0 0 16px rgba(239,68,68,.72);
}
.track-section-occupancy--time-release{
  border-color:rgba(251,113,133,.42);
  background:linear-gradient(90deg, rgba(80,20,38,.72), rgba(45,16,31,.66));
}
.track-section-occupancy--time-release::before{
  background:#fb7185;
  box-shadow:0 0 16px rgba(251,113,133,.62);
}
.track-state-dot{
  display:inline-block;
  width:9px;
  height:9px;
  border-radius:999px;
  margin-right:6px;
  vertical-align:middle;
}
.track-state-dot--basic{ background:#22c55e; box-shadow:0 0 10px rgba(34,197,94,.65); }
.track-state-dot--occupied{ background:#ef4444; box-shadow:0 0 10px rgba(239,68,68,.65); }
.track-state-dot--no-data{ background:#f8fafc; box-shadow:0 0 10px rgba(248,250,252,.50); }
.track-state-dot--control-failure{ background:linear-gradient(90deg,#f8fafc 0 45%,#ef4444 45% 100%); box-shadow:0 0 10px rgba(239,68,68,.70); }

/* Pulpit szlaku: strzaÄąâ€ški kierunkowe pod peÄąâ€šnymi nazwami posterunkÄ‚Ĺ‚w */
.railway-station-node__route-arrow{
  width:100%;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:8px;
  margin:8px 0 10px;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid rgba(56,189,248,.18);
  background:linear-gradient(90deg, rgba(2,8,23,.58), rgba(15,23,42,.72));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035), 0 8px 20px rgba(2,8,23,.22);
}
.railway-station-node__route-arrow span{
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg, rgba(148,163,184,.12), rgba(56,189,248,.75), rgba(148,163,184,.12));
  box-shadow:0 0 13px rgba(56,189,248,.42);
}
.railway-station-node__route-arrow b{
  min-width:34px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  color:#e0f2fe;
  font-size:22px;
  line-height:1;
  font-weight:950;
  background:rgba(14,165,233,.18);
  border:1px solid rgba(125,211,252,.32);
  text-shadow:0 0 15px rgba(56,189,248,.68);
}
.railway-station-node__route-arrow--in span{
  background:linear-gradient(90deg, rgba(56,189,248,.75), rgba(148,163,184,.12));
}
.railway-station-node__route-arrow--out span{
  background:linear-gradient(90deg, rgba(148,163,184,.12), rgba(56,189,248,.75));
}
.railway-station-node__route-arrow--blocked{
  border-color:rgba(248,113,113,.3);
  background:linear-gradient(90deg, rgba(69,10,10,.42), rgba(15,23,42,.7));
}
.railway-station-node__route-arrow--blocked span{
  background:linear-gradient(90deg, rgba(248,113,113,.08), rgba(248,113,113,.74), rgba(248,113,113,.08));
  box-shadow:0 0 13px rgba(248,113,113,.42);
}
.railway-station-node__route-arrow--blocked b{
  color:#fecaca;
  background:rgba(239,68,68,.18);
  border-color:rgba(252,165,165,.32);
  text-shadow:0 0 15px rgba(248,113,113,.7);
}
.route-line-layout--signals .route-posterunek .railway-station-node{
  grid-template-rows:minmax(92px, auto) auto auto !important;
}
@media (max-width: 900px){
  .railway-station-node__route-arrow{
    margin:6px 0 8px;
    padding:4px 8px;
  }
  .railway-station-node__route-arrow b{
    height:24px;
    min-width:30px;
    font-size:19px;
  }
}

/* Ie-104: strzaÄąâ€ški blokady liniowej pod nazwami posterunkÄ‚Ĺ‚w */
.railway-station-node__route-arrow--ie104{
  width:100%;
  display:flex !important;
  align-items:center;
  justify-content:center;
  margin:8px 0 10px;
  padding:4px 6px;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 span:not(.ie104-direction-symbol):not(.ie104-direction-symbol__body):not(.ie104-direction-symbol__arrow):not(.ie104-direction-symbol__free){
  display:none !important;
}
.railway-station-node__route-arrow--ie104 b{
  display:none !important;
}
.ie104-direction-symbol{
  --ie104-primary:#facc15;
  --ie104-primary-glow:rgba(250,204,21,.55);
  --ie104-free:#22c55e;
  position:relative;
  width:132px;
  height:54px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  background:#02040a;
  border:1px solid rgba(148,163,184,.24);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035), 0 0 20px rgba(2,8,23,.44);
  overflow:hidden;
}
.ie104-direction-symbol::before{
  content:'';
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--ie104-primary) 23%, transparent), transparent 58%);
  opacity:.28;
  pointer-events:none;
}
.ie104-direction-symbol__body{
  position:absolute;
  left:18px;
  top:50%;
  width:54px;
  height:18px;
  transform:translateY(-50%);
  background:var(--ie104-primary);
  box-shadow:0 0 14px var(--ie104-primary-glow);
}
.ie104-direction-symbol__arrow{
  position:absolute;
  left:56px;
  top:50%;
  width:48px;
  height:34px;
  transform:translateY(-50%);
  display:flex;
  align-items:center;
  justify-content:center;
  color:transparent;
  font-size:0;
}
.ie104-direction-symbol__arrow::before{
  content:'';
  display:block;
  width:0;
  height:0;
  border-top:17px solid transparent;
  border-bottom:17px solid transparent;
  border-left:34px solid var(--ie104-primary);
  filter:drop-shadow(0 0 10px var(--ie104-primary-glow));
}
.ie104-direction-symbol__free{
  position:absolute;
  right:10px;
  top:10px;
  width:22px;
  height:9px;
  border-radius:2px;
  background:var(--ie104-free);
  box-shadow:0 0 10px rgba(34,197,94,.65);
}
.ie104-direction-symbol--left .ie104-direction-symbol__body{
  left:auto;
  right:18px;
}
.ie104-direction-symbol--left .ie104-direction-symbol__arrow{
  left:auto;
  right:56px;
}
.ie104-direction-symbol--left .ie104-direction-symbol__arrow::before{
  border-left:0;
  border-right:34px solid var(--ie104-primary);
}
.ie104-direction-symbol--left .ie104-direction-symbol__free{
  right:auto;
  left:10px;
}
.ie104-direction-symbol--both{
  --ie104-primary:#cbd5e1;
  --ie104-primary-glow:rgba(203,213,225,.45);
}
.ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:none;
}
.ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  inset:0;
  width:auto;
  height:auto;
  transform:none;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--ie104-primary);
  font-size:28px;
  line-height:1;
  font-weight:950;
  letter-spacing:.02em;
  text-shadow:0 0 10px var(--ie104-primary-glow);
}
.ie104-direction-symbol--both .ie104-direction-symbol__arrow::before,
.ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  display:none;
}
.ie104-direction-symbol--both .ie104-direction-symbol__free{
  display:none;
}
.ie104-direction-symbol--free-hidden .ie104-direction-symbol__free{
  display:none !important;
}
.ie104-direction-symbol--set-free{
  --ie104-primary:#facc15;
  --ie104-primary-glow:rgba(250,204,21,.58);
  --ie104-free:#22c55e;
}
.ie104-direction-symbol--occupied{
  --ie104-primary:#facc15;
  --ie104-primary-glow:rgba(250,204,21,.58);
}
.ie104-direction-symbol--occupied .ie104-direction-symbol__free{
  display:none;
}
.ie104-direction-symbol--request{
  --ie104-primary:#fde047;
  --ie104-primary-glow:rgba(253,224,71,.7);
}
.ie104-direction-symbol--request .ie104-direction-symbol__free{
  display:none;
}
.ie104-direction-symbol--request::after,
.ie104-direction-symbol--release::after,
.ie104-direction-symbol--emergency-change::after,
.ie104-direction-symbol--invalid::after{
  content:'Ä‚â€”';
  position:absolute;
  right:12px;
  top:50%;
  transform:translateY(-50%);
  color:var(--ie104-primary);
  font-size:42px;
  line-height:1;
  font-weight:950;
  text-shadow:0 0 12px var(--ie104-primary-glow);
}
.ie104-direction-symbol--release::after{
  content:'Ă˘â€ â€”Ă˘â€ â„˘';
  right:10px;
  font-size:20px;
  letter-spacing:-4px;
}
.ie104-direction-symbol--closed{
  --ie104-primary:#e879f9;
  --ie104-primary-glow:rgba(232,121,249,.7);
}
.ie104-direction-symbol--closed .ie104-direction-symbol__free{
  display:none;
}
.ie104-direction-symbol--emergency-change,
.ie104-direction-symbol--invalid{
  --ie104-primary:#ef4444;
  --ie104-primary-glow:rgba(239,68,68,.72);
}
.ie104-direction-symbol--emergency-change .ie104-direction-symbol__free,
.ie104-direction-symbol--invalid .ie104-direction-symbol__free{
  display:none;
}
.ie104-direction-symbol--emergency-change::after,
.ie104-direction-symbol--invalid::after{
  content:'Ä‚â€”';
  left:50%;
  right:auto;
  transform:translate(-50%, -50%);
  font-size:58px;
  opacity:.95;
}
.ie104-direction-symbol--no-data{
  --ie104-primary:#f8fafc;
  --ie104-primary-glow:rgba(248,250,252,.55);
}
.ie104-direction-symbol--no-data .ie104-direction-symbol__free{
  display:none;
}
.route-posterunek .ie104-direction-symbol{
  transform:scale(.82);
  transform-origin:center;
}
@media (max-width: 900px){
  .ie104-direction-symbol{
    width:112px;
    height:46px;
  }
  .ie104-direction-symbol__body{ width:44px; height:15px; left:15px; }
  .ie104-direction-symbol__arrow{ left:48px; }
  .ie104-direction-symbol__arrow::before{ border-top-width:14px; border-bottom-width:14px; border-left-width:28px; }
  .ie104-direction-symbol--left .ie104-direction-symbol__body{ right:15px; }
  .ie104-direction-symbol--left .ie104-direction-symbol__arrow{ right:48px; }
  .ie104-direction-symbol--left .ie104-direction-symbol__arrow::before{ border-right-width:28px; }
  .ie104-direction-symbol__free{ right:9px; top:8px; width:18px; height:8px; }
}

/* FIX IE-104 Ă˘â‚¬â€ť strzaÄąâ€ška byÄąâ€ša zgniatana przez ogÄ‚Ĺ‚lny selektor .railway-station-node__route-arrow span */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol{
  position:relative !important;
  width:132px !important;
  height:54px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius:8px !important;
  background:#02040a !important;
  border:1px solid rgba(148,163,184,.24) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035), 0 0 20px rgba(2,8,23,.44) !important;
  overflow:hidden !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol__body{
  position:absolute !important;
  left:18px !important;
  top:50% !important;
  width:54px !important;
  height:18px !important;
  transform:translateY(-50%) !important;
  border-radius:0 !important;
  background:var(--ie104-primary) !important;
  box-shadow:0 0 14px var(--ie104-primary-glow) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol__arrow{
  position:absolute !important;
  left:56px !important;
  top:50% !important;
  width:48px !important;
  height:34px !important;
  transform:translateY(-50%) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  box-shadow:none !important;
  color:transparent !important;
  font-size:0 !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol__free{
  position:absolute !important;
  right:10px !important;
  top:10px !important;
  width:22px !important;
  height:9px !important;
  border-radius:2px !important;
  background:var(--ie104-free) !important;
  box-shadow:0 0 10px rgba(34,197,94,.65) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__body{
  left:auto !important;
  right:18px !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__arrow{
  left:auto !important;
  right:56px !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__free{
  right:auto !important;
  left:10px !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  inset:0 !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  box-shadow:none !important;
  color:var(--ie104-primary) !important;
  font-size:28px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.02em !important;
  text-shadow:0 0 10px var(--ie104-primary-glow) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  display:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--occupied .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--request .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--closed .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--emergency-change .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--invalid .ie104-direction-symbol__free,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--no-data .ie104-direction-symbol__free{
  display:none !important;
}
.route-posterunek .railway-station-node__route-arrow--ie104 .ie104-direction-symbol{
  transform:scale(.82) !important;
  transform-origin:center !important;
}
@media (max-width: 640px){
  .route-posterunek .block-state-pair{
    flex-wrap:wrap;
  }
}


/* DOPASOWANIE WYGLĂ„â€žDU STRZAÄąÂEK IE104 do wzorca uÄąÄ˝ytkownika */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol{
  border-color:rgba(255,255,255,.22) !important;
}

/* Kierunek ustawiony Ă˘â‚¬â€ť ÄąÄ˝Ä‚Ĺ‚Äąâ€šta strzaÄąâ€ška jak we wzorcu */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__body{
  left:16px !important;
  width:40px !important;
  height:18px !important;
  background:#ffd400 !important;
  box-shadow:0 0 10px rgba(255,212,0,.45) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow{
  left:50px !important;
  width:38px !important;
  height:30px !important;
  color:transparent !important;
  font-size:0 !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow::before{
  border-top:15px solid transparent !important;
  border-bottom:15px solid transparent !important;
  border-left:28px solid #ffd400 !important;
  filter:drop-shadow(0 0 8px rgba(255,212,0,.42)) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__body{
  left:auto !important;
  right:16px !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__arrow{
  left:auto !important;
  right:50px !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left .ie104-direction-symbol__arrow::before{
  border-left:0 !important;
  border-right:28px solid #ffd400 !important;
}

/* Brak kierunku Ă˘â‚¬â€ť dwa biaÄąâ€še groty ze Äąâ€şrodkowymi segmentami jak we wzorcu */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both{
  --ie104-primary:#f3f4f6 !important;
  --ie104-primary-glow:rgba(255,255,255,.16) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:block !important;
  left:50% !important;
  top:50% !important;
  width:10px !important;
  height:14px !important;
  transform:translate(-50%, -50%) !important;
  background:var(--ie104-primary) !important;
  box-shadow:
    -16px 0 0 0 var(--ie104-primary),
    16px 0 0 0 var(--ie104-primary) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  inset:0 !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  color:transparent !important;
  font-size:0 !important;
  background:
    linear-gradient(var(--ie104-primary), var(--ie104-primary)) 28px 50% / 18px 10px no-repeat,
    linear-gradient(var(--ie104-primary), var(--ie104-primary)) calc(100% - 28px) 50% / 18px 10px no-repeat !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  content:'' !important;
  position:absolute !important;
  top:50% !important;
  width:0 !important;
  height:0 !important;
  transform:translateY(-50%) !important;
  filter:drop-shadow(0 0 6px var(--ie104-primary-glow)) !important;
  display:block !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before{
  left:10px !important;
  border-top:15px solid transparent !important;
  border-bottom:15px solid transparent !important;
  border-right:24px solid var(--ie104-primary) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  right:10px !important;
  border-top:15px solid transparent !important;
  border-bottom:15px solid transparent !important;
  border-left:24px solid var(--ie104-primary) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__free{
  display:none !important;
}

/* KOREKTA 2 Ă˘â‚¬â€ť wyglĂ„â€¦d podwÄ‚Ĺ‚jnej strzaÄąâ€ški IE104 bliÄąÄ˝ej wzorca foto 2 */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both{
  --ie104-primary:#d9dde3 !important;
  --ie104-primary-glow:rgba(217,221,227,.20) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:block !important;
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:10px !important;
  height:16px !important;
  transform:translate(-50%, -50%) !important;
  background:var(--ie104-primary) !important;
  border-radius:0 !important;
  box-shadow:
    -14px 0 0 0 var(--ie104-primary),
    14px 0 0 0 var(--ie104-primary) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  inset:0 !important;
  position:absolute !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  color:transparent !important;
  font-size:0 !important;
  box-shadow:none !important;
  background:
    linear-gradient(var(--ie104-primary), var(--ie104-primary)) 40px 50% / 22px 14px no-repeat,
    linear-gradient(var(--ie104-primary), var(--ie104-primary)) calc(100% - 40px) 50% / 22px 14px no-repeat !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  content:'' !important;
  position:absolute !important;
  top:50% !important;
  width:0 !important;
  height:0 !important;
  transform:translateY(-50%) !important;
  display:block !important;
  filter:drop-shadow(0 0 5px var(--ie104-primary-glow)) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before{
  left:16px !important;
  border-top:18px solid transparent !important;
  border-bottom:18px solid transparent !important;
  border-right:30px solid var(--ie104-primary) !important;
  border-left:0 !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  right:16px !important;
  border-top:18px solid transparent !important;
  border-bottom:18px solid transparent !important;
  border-left:30px solid var(--ie104-primary) !important;
  border-right:0 !important;
}


/* FIX FINAL Ă˘â‚¬â€ť podwÄ‚Ĺ‚jna strzaÄąâ€ška bez Äąâ€şrodkowego X */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both{
  --ie104-primary:#e5e7eb !important;
  --ie104-primary-glow:rgba(229,231,235,.22) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:none !important;
  box-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  position:absolute !important;
  inset:0 !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  background:transparent !important;
  box-shadow:none !important;
  color:transparent !important;
  font-size:0 !important;
  line-height:0 !important;
  text-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  content:'' !important;
  position:absolute !important;
  top:50% !important;
  display:block !important;
  width:50px !important;
  height:28px !important;
  background:var(--ie104-primary) !important;
  border:0 !important;
  transform:translateY(-50%) !important;
  filter:drop-shadow(0 0 5px var(--ie104-primary-glow)) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before{
  left:17px !important;
  clip-path:polygon(0 50%, 26% 0, 26% 30%, 100% 30%, 100% 70%, 26% 70%, 26% 100%) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  right:17px !important;
  clip-path:polygon(100% 50%, 74% 0, 74% 30%, 0 30%, 0 70%, 74% 70%, 74% 100%) !important;
}


/* FIX X Ă˘â‚¬â€ť podwÄ‚Ĺ‚jna strzaÄąâ€ška rysowana jednym SVG, bez nakÄąâ€šadania pseudo-elementÄ‚Ĺ‚w */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both{
  --ie104-primary:#e5e7eb !important;
  --ie104-primary-glow:rgba(229,231,235,.20) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__body{
  display:none !important;
  width:0 !important;
  height:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow{
  position:absolute !important;
  inset:0 !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  background:none !important;
  box-shadow:none !important;
  color:transparent !important;
  font-size:0 !important;
  line-height:0 !important;
  text-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::before{
  content:'' !important;
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:92px !important;
  height:32px !important;
  transform:translate(-50%, -50%) !important;
  display:block !important;
  border:0 !important;
  clip-path:none !important;
  background-color:transparent !important;
  background-image:url("data:image/svg+xml,%3Csvg%20width%3D%22100%22%20height%3D%2232%22%20viewBox%3D%220%200%20100%2032%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M4%2016L26%203V11H44V21H26V29L4%2016Z%22%20fill%3D%22%23E5E7EB%22/%3E%3Cpath%20d%3D%22M96%2016L74%203V11H56V21H74V29L96%2016Z%22%20fill%3D%22%23E5E7EB%22/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:center !important;
  background-size:contain !important;
  filter:drop-shadow(0 0 5px var(--ie104-primary-glow)) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--both .ie104-direction-symbol__arrow::after{
  content:none !important;
  display:none !important;
  width:0 !important;
  height:0 !important;
  border:0 !important;
  background:none !important;
  clip-path:none !important;
}


/* FIX: nie pokazuj znaku X na strzaÄąâ€škach IE104.
   Stan awaryjny ma byĂ„â€ˇ widoczny przez kolor/ramkĂ„â„˘/status, bez dodatkowego krzyÄąÄ˝yka na symbolu. */
.ie104-direction-symbol--request::after,
.ie104-direction-symbol--emergency-change::after,
.ie104-direction-symbol--invalid::after,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--request::after,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--emergency-change::after,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--invalid::after{
  content:none !important;
  display:none !important;
}

/* FIX OSTATECZNY: pojedyncze strzaÄąâ€ški IE104 rysowane SVG, bez nakÄąâ€šadania grotÄ‚Ĺ‚w.
   Usuwa efekt Ă˘â‚¬ĹľkokardyĂ˘â‚¬ĹĄ / dwÄ‚Ĺ‚ch grotÄ‚Ĺ‚w przy kierunku 1/2 wykorzystanym. */
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__body{
  display:none !important;
  width:0 !important;
  height:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow{
  position:absolute !important;
  inset:0 !important;
  left:0 !important;
  right:0 !important;
  top:0 !important;
  bottom:0 !important;
  width:auto !important;
  height:auto !important;
  transform:none !important;
  color:transparent !important;
  font-size:0 !important;
  line-height:0 !important;
  background-repeat:no-repeat !important;
  background-position:center !important;
  background-size:82px 30px !important;
  box-shadow:none !important;
  text-shadow:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow::before,
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow::after{
  content:none !important;
  display:none !important;
  width:0 !important;
  height:0 !important;
  border:0 !important;
  background:none !important;
  clip-path:none !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--right:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow{
  background-image:url("data:image/svg+xml,%3Csvg%20width%3D%2282%22%20height%3D%2230%22%20viewBox%3D%220%200%2082%2030%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M4%207H46V0L78%2015L46%2030V23H4V7Z%22%20fill%3D%22%23FFD400%22/%3E%3C/svg%3E") !important;
  filter:drop-shadow(0 0 8px rgba(255,212,0,.45)) !important;
}
.railway-station-node__route-arrow--ie104 .ie104-direction-symbol--left:not(.ie104-direction-symbol--both) .ie104-direction-symbol__arrow{
  background-image:url("data:image/svg+xml,%3Csvg%20width%3D%2282%22%20height%3D%2230%22%20viewBox%3D%220%200%2082%2030%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M78%207H36V0L4%2015L36%2030V23H78V7Z%22%20fill%3D%22%23FFD400%22/%3E%3C/svg%3E") !important;
  filter:drop-shadow(0 0 8px rgba(255,212,0,.45)) !important;
}

/* === Etap 6: wspÄ‚Ĺ‚lny status "Serwis" === */
.badge--service {
  background: rgba(139, 92, 246, .13);
  color: #c4b5fd;
  border: 1px solid rgba(167, 139, 250, .30);
}
.stat-card--violet::after { background: linear-gradient(90deg, #a78bfa, transparent); }
.stat-card__icon--violet { background: rgba(139, 92, 246, .13); border: 1px solid rgba(167, 139, 250, .28); }
.status-dot.serwis,
.status-serwis,
.is-service {
  color: #c4b5fd !important;
  border-color: rgba(167, 139, 250, .30) !important;
  background: rgba(139, 92, 246, .13) !important;
}
.comm-pill.off + .badge--service,
.comm-pill.service {
  background: rgba(139, 92, 246, .13);
  border-color: rgba(167, 139, 250, .30);
  color: #c4b5fd;
}

/* === Etap 6B: spÄ‚Ĺ‚jny wyglĂ„â€¦d statusÄ‚Ĺ‚w, mapa i diagnostyka === */
:root{
  --status-ok:#22c55e;
  --status-warning:#f59e0b;
  --status-danger:#ef4444;
  --status-offline:#94a3b8;
  --status-service:#a78bfa;
  --status-info:#38bdf8;
}
.status-ui-dot,
.legend-dot{
  width:10px;
  height:10px;
  border-radius:999px;
  display:inline-block;
  flex:0 0 auto;
  box-shadow:0 0 12px currentColor;
  background:currentColor;
}
.legend-dot--ok{color:var(--status-ok)!important;background:var(--status-ok)!important;}
.legend-dot--warning{color:var(--status-warning)!important;background:var(--status-warning)!important;}
.legend-dot--danger{color:var(--status-danger)!important;background:var(--status-danger)!important;}
.legend-dot--offline{color:var(--status-offline)!important;background:var(--status-offline)!important;}
.legend-dot--service{color:var(--status-service)!important;background:var(--status-service)!important;}
.legend-dot--info{color:var(--status-info)!important;background:var(--status-info)!important;}
.map-legend--ops{
  gap:10px 14px;
}
.map-legend--ops span{
  align-items:center;
  gap:7px;
  line-height:1.25;
}
.map-layers-panel__legend{
  gap:6px;
}
.map-layers-panel__legend span{
  align-items:center;
  gap:8px;
  line-height:1.25;
}
.status-badge,
.badge,
.etap5-row-badge,
.module-status-badge,
.diag-device-tab__dot{
  letter-spacing:.01em;
}
.operational-status-strip{
  grid-column:1/-1;
  display:grid;
  grid-template-columns:minmax(220px,1.1fr) repeat(4,minmax(120px,.7fr));
  gap:10px;
  padding:12px;
  border:1px solid rgba(82,135,190,.22);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(8,17,31,.90),rgba(4,10,22,.78));
  box-shadow:0 18px 42px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.04);
}
.operational-status-strip__main,
.operational-status-strip__item{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  border:1px solid rgba(148,163,184,.10);
  border-radius:14px;
  padding:10px 12px;
  background:rgba(15,23,42,.46);
}
.operational-status-strip__main strong,
.operational-status-strip__item strong{
  display:block;
  color:#fff;
  font-size:13px;
  line-height:1.25;
}
.operational-status-strip__main small,
.operational-status-strip__item small{
  display:block;
  color:#8fa6bd;
  font-size:11px;
  margin-top:2px;
}
.operational-status-strip__icon{
  width:34px;
  height:34px;
  border-radius:13px;
  display:grid;
  place-items:center;
  color:#dbeafe;
  background:rgba(56,189,248,.11);
  border:1px solid rgba(56,189,248,.18);
  flex:0 0 auto;
}
.operational-status-strip--ok .operational-status-strip__main{border-color:rgba(34,197,94,.28);background:rgba(34,197,94,.08)}
.operational-status-strip--warning .operational-status-strip__main{border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.10)}
.operational-status-strip--danger .operational-status-strip__main{border-color:rgba(239,68,68,.38);background:rgba(239,68,68,.11)}
.operational-status-strip--offline .operational-status-strip__main{border-color:rgba(148,163,184,.30);background:rgba(148,163,184,.10)}
.operational-status-strip--service .operational-status-strip__main{border-color:rgba(167,139,250,.35);background:rgba(139,92,246,.11)}
.operational-status-strip--ok .operational-status-strip__icon{color:var(--status-ok);border-color:rgba(34,197,94,.24);background:rgba(34,197,94,.10)}
.operational-status-strip--warning .operational-status-strip__icon{color:var(--status-warning);border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.11)}
.operational-status-strip--danger .operational-status-strip__icon{color:var(--status-danger);border-color:rgba(239,68,68,.27);background:rgba(239,68,68,.12)}
.operational-status-strip--offline .operational-status-strip__icon{color:var(--status-offline);border-color:rgba(148,163,184,.22);background:rgba(148,163,184,.10)}
.operational-status-strip--service .operational-status-strip__icon{color:var(--status-service);border-color:rgba(167,139,250,.28);background:rgba(139,92,246,.12)}
.operational-status-strip__metric--ok i{color:var(--status-ok)}
.operational-status-strip__metric--warning i{color:var(--status-warning)}
.operational-status-strip__metric--danger i{color:var(--status-danger)}
.operational-status-strip__metric--offline i{color:var(--status-offline)}
.operational-status-strip__metric--service i{color:var(--status-service)}
.device-status-banner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:13px 14px;
  margin-bottom:12px;
  border-radius:16px;
  border:1px solid rgba(148,163,184,.16);
  background:linear-gradient(180deg,rgba(15,23,42,.68),rgba(2,6,23,.46));
}
.device-status-banner__left{display:flex;align-items:center;gap:11px;min-width:0;}
.device-status-banner__dot{width:14px;height:14px;border-radius:999px;background:currentColor;box-shadow:0 0 18px currentColor;flex:0 0 auto;}
.device-status-banner__text strong{display:block;color:#fff;font-size:15px;line-height:1.2;}
.device-status-banner__text span{display:block;color:#93a4b8;font-size:12px;margin-top:3px;}
.device-status-banner__meta{font-size:12px;color:#a8b8ca;text-align:right;max-width:44%;}
.device-status-banner--online{color:var(--status-ok);border-color:rgba(34,197,94,.26);background:linear-gradient(180deg,rgba(34,197,94,.10),rgba(15,23,42,.50));}
.device-status-banner--ostrzezenie{color:var(--status-warning);border-color:rgba(245,158,11,.30);background:linear-gradient(180deg,rgba(245,158,11,.12),rgba(15,23,42,.50));}
.device-status-banner--usterka{color:var(--status-danger);border-color:rgba(239,68,68,.32);background:linear-gradient(180deg,rgba(239,68,68,.13),rgba(15,23,42,.50));}
.device-status-banner--offline{color:var(--status-offline);border-color:rgba(148,163,184,.26);background:linear-gradient(180deg,rgba(148,163,184,.12),rgba(15,23,42,.50));}
.device-status-banner--serwis{color:var(--status-service);border-color:rgba(167,139,250,.32);background:linear-gradient(180deg,rgba(139,92,246,.13),rgba(15,23,42,.50));}
.device-status-select-label{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:38px;
  padding:0 10px;
  border-radius:12px;
  border:1px solid rgba(148,163,184,.18);
  background:rgba(15,23,42,.50);
  color:#b9c7d8;
  font-size:12px;
}
.device-status-select-label select{
  border:0;
  outline:0;
  background:transparent;
  color:#fff;
  font-weight:600;
  min-width:130px;
}
.device-status-select-label option{background:#0b1220;color:#fff;}
.diagnostics-status-legend{
  display:flex;
  align-items:center;
  gap:8px 12px;
  flex-wrap:wrap;
  margin:0 0 12px;
  color:#9db0c6;
  font-size:12px;
}
.diagnostics-status-legend span{display:inline-flex;align-items:center;gap:6px;}
.rack-card__stats{gap:6px;}
.rack-card:has(.badge--danger){border-color:rgba(239,68,68,.28);box-shadow:0 0 0 1px rgba(239,68,68,.04),0 14px 34px rgba(239,68,68,.08)}
.diag-detail__summary-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(120px,1fr));
  gap:8px;
  margin:12px 0 14px;
}
.diag-detail__summary-strip div{
  border:1px solid rgba(148,163,184,.12);
  border-radius:14px;
  padding:10px 12px;
  background:rgba(15,23,42,.48);
}
.diag-detail__summary-strip span{display:block;color:#8fa6bd;font-size:11px;text-transform:uppercase;letter-spacing:.05em;}
.diag-detail__summary-strip strong{display:block;color:#fff;font-size:14px;margin-top:4px;}
@media(max-width:1100px){
  .operational-status-strip{grid-template-columns:1fr 1fr;}
  .operational-status-strip__main{grid-column:1/-1;}
  .diag-detail__summary-strip{grid-template-columns:1fr 1fr;}
}
@media(max-width:720px){
  .operational-status-strip{grid-template-columns:1fr;}
  .device-status-banner{align-items:flex-start;flex-direction:column;}
  .device-status-banner__meta{text-align:left;max-width:none;}
  .diag-detail__summary-strip{grid-template-columns:1fr;}
}
.station-marker-pro--service span,
.device-marker-pro--service span{
  border-color:rgba(167,139,250,.90)!important;
  background:#a78bfa!important;
  box-shadow:0 0 0 5px rgba(139,92,246,.13),0 0 24px rgba(167,139,250,.62)!important;
}
.route-live-line--service,
.route-line-pro--service{filter:drop-shadow(0 0 9px rgba(167,139,250,.40));}
.map-route-live-arrow--service i{color:#a78bfa;}
.route-glow--service,
.route-live-glow--service{
  stroke:#a78bfa!important;
  opacity:.28!important;
  filter:drop-shadow(0 0 14px rgba(167,139,250,.42));
}
.route-live-flow--service{stroke:#c4b5fd!important;}


/* Etap 6D: bezpieczny fallback ikon bez JS/MutationObserver.
   Przywraca widoczne symbole dla klas Font Awesome po usuniĂ„â„˘ciu CDN,
   ale nie modyfikuje DOM i nie moÄąÄ˝e zawiesiĂ„â€ˇ Äąâ€šadowania strony. */
i.fa-solid,
i.fa-regular,
i.fa-brands {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.1em;
  min-width:1.1em;
  height:1.1em;
  line-height:1;
  font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", sans-serif !important;
  font-style:normal !important;
  font-weight:800 !important;
  text-rendering:auto;
  color:currentColor;
  vertical-align:-.08em;
}

i.fa-solid::before,
i.fa-regular::before,
i.fa-brands::before { content:'Ă˘â‚¬Ë'; }

i.fa-house::before,
i.fa-home::before { content:'Ă˘Ĺšâ€š'; }
i.fa-desktop::before,
i.fa-display::before,
i.fa-tv::before { content:'Ă˘â€“Ĺ'; }
i.fa-microchip::before { content:'Ă˘â€“Â§'; }
i.fa-server::before { content:'Ă˘â€“Â¤'; }
i.fa-stethoscope::before { content:'Ă˘â„˘Â'; }
i.fa-wave-square::before { content:'Ă˘ÂĹĽ'; }
i.fa-route::before { content:'Ă˘ĹšÂ'; }
i.fa-map::before,
i.fa-map-location-dot::before { content:'Ă˘â€“Ë‡'; }
i.fa-location-dot::before,
i.fa-map-marker-alt::before,
i.fa-map-pin::before { content:'Ă˘Ĺšâ€“'; }
i.fa-satellite-dish::before { content:'Ă˘â€”Â '; }
i.fa-train::before { content:'Ă˘â€“Â°'; }
i.fa-traffic-light::before { content:'Ă˘â€“Â¦'; }
i.fa-triangle-exclamation::before,
i.fa-exclamation-triangle::before { content:'Ă˘ĹˇÂ '; }
i.fa-bell::before { content:'Ă˘â€”â€ť'; }
i.fa-calendar-check::before,
i.fa-calendar-days::before { content:'Ă˘â€“Â¦'; }
i.fa-clipboard-list::before,
i.fa-list-check::before,
i.fa-rectangle-list::before { content:'Ă˘ÂÂ·'; }
i.fa-briefcase::before { content:'Ă˘â€“Ĺ'; }
i.fa-chart-line::before,
i.fa-chart-simple::before,
i.fa-chart-column::before,
i.fa-bar-chart::before { content:'Ă˘â€“Ä„'; }
i.fa-users::before { content:'Ă˘â€”â€°'; }
i.fa-user::before { content:'Ă˘â€”Ĺ»'; }
i.fa-user-check::before { content:'Ă˘Ĺ›â€ś'; }
i.fa-shield-halved::before,
i.fa-shield::before { content:'Ă˘Â¬Ĺş'; }
i.fa-gear::before,
i.fa-cog::before,
i.fa-gears::before { content:'Ă˘Ĺˇâ„˘'; }
i.fa-database::before { content:'Ă˘â€“Ä„'; }
i.fa-file-lines::before,
i.fa-file-alt::before { content:'Ă˘â€“Â¤'; }
i.fa-file-pdf::before { content:'PDF'; font-size:.58em; letter-spacing:-.03em; }
i.fa-image::before { content:'Ă˘â€“Â§'; }
i.fa-download::before { content:'Ă˘â€ â€ś'; }
i.fa-upload::before { content:'Ă˘â€ â€'; }
i.fa-eye::before { content:'Ă˘â€”â€°'; }
i.fa-eye-slash::before { content:'Ă˘â€”Ĺš'; }
i.fa-pen::before,
i.fa-pen-to-square::before,
i.fa-edit::before { content:'Ă˘Ĺ›Ĺ˝'; }
i.fa-trash::before,
i.fa-trash-can::before { content:'Ă˘ĹšÂ«'; }
i.fa-floppy-disk::before,
i.fa-save::before { content:'Ă˘â€“Ĺ'; }
i.fa-plus::before { content:'+'; }
i.fa-minus::before { content:'Ă˘Ââ€™'; }
i.fa-xmark::before,
i.fa-times::before { content:'Ä‚â€”'; }
i.fa-check::before { content:'Ă˘Ĺ›â€ś'; }
i.fa-circle-check::before { content:'Ă˘â€”Ĺą'; }
i.fa-circle-xmark::before { content:'Ä‚â€”'; }
i.fa-circle-info::before,
i.fa-info-circle::before { content:'i'; font-family:Georgia,serif !important; font-style:italic !important; }
i.fa-magnifying-glass::before,
i.fa-search::before { content:'Ă˘Ĺšâ€˘'; }
i.fa-filter::before { content:'Ă˘â€“Äľ'; }
i.fa-rotate::before,
i.fa-refresh::before { content:'Ă˘â€ Â»'; }
i.fa-rotate-left::before { content:'Ă˘â€ Ĺź'; }
i.fa-power-off::before { content:'Ă˘ĹąÂ»'; }
i.fa-right-from-bracket::before,
i.fa-sign-out-alt::before { content:'Ă˘â€ˇÄ„'; }
i.fa-chevron-down::before { content:'Ă˘Ĺšâ€ž'; }
i.fa-chevron-up::before { content:'Ă˘ĹšÂ'; }
i.fa-chevron-right::before { content:'Ă˘â‚¬Ĺź'; }
i.fa-chevron-left::before { content:'Ă˘â‚¬Ä…'; }
i.fa-bars::before { content:'Ă˘ÂÂ°'; }
i.fa-clock::before { content:'Ă˘â€”Â·'; }
i.fa-wifi::before { content:'Ă˘â€°â€ą'; }
i.fa-signal::before { content:'Ă˘â€“Ä„'; }
i.fa-lock::before { content:'Ă˘â€“Ĺ'; }
i.fa-unlock::before { content:'Ă˘â€“Ë'; }
i.fa-key::before { content:'Ă˘ĹˇĹĽ'; }
i.fa-phone::before { content:'Ă˘ÂĹ˝'; }
i.fa-envelope::before { content:'Ă˘Ĺ›â€°'; }
i.fa-screwdriver-wrench::before,
i.fa-tools::before { content:'Ă˘Ĺˇâ€™'; }
i.fa-bug::before { content:'Ă˘Ĺˇâ€'; }
i.fa-terminal::before { content:'Ă˘â‚¬Ĺź_'; font-size:.78em; letter-spacing:-.08em; }
i.fa-spinner::before { content:'Ă˘â€”Ĺš'; }
i.fa-spinner,
i.fa-spin { animation:jk-fa-css-spin 1s linear infinite; }

.stat-card__icon i.fa-solid,
.stat-card__icon i.fa-regular,
.stat-card__icon i.fa-brands,
.dev-ico i.fa-solid,
.dev-ico i.fa-regular,
.dev-ico i.fa-brands,
.dash-event-icon i.fa-solid,
.dash-event-icon i.fa-regular,
.dash-event-icon i.fa-brands {
  font-size:21px;
}

.input-icon i.fa-solid,
.input-icon i.fa-regular,
.input-icon i.fa-brands { font-size:14px; }
.btn i.fa-solid,
.btn i.fa-regular,
.btn i.fa-brands { font-size:1em; }
.icon-btn i.fa-solid,
.icon-btn i.fa-regular,
.icon-btn i.fa-brands { font-size:16px; }
.operational-status-strip i.fa-solid,
.operational-status-strip i.fa-regular,
.operational-status-strip i.fa-brands { font-size:18px; }

@keyframes jk-fa-css-spin { to { transform:rotate(360deg); } }

/* Etap 7 Ă˘â‚¬â€ś Raporty */
.visually-hidden{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}
.reports-page{display:flex;flex-direction:column;gap:18px}.reports-toolbar{gap:12px}.reports-toolbar__actions{display:flex;gap:10px;flex-wrap:wrap}.reports-hero{display:flex;justify-content:space-between;gap:18px;align-items:stretch;padding:18px 20px;border:1px solid rgba(47,111,178,.26);border-radius:18px;background:linear-gradient(135deg,rgba(18,41,67,.78),rgba(7,14,24,.86));box-shadow:0 18px 48px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.04)}.reports-hero h3{margin:6px 0 8px;font-size:22px;letter-spacing:.01em}.reports-hero p{margin:0;color:var(--muted,#9db4d0);max-width:850px}.reports-hero__meta{min-width:240px;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:14px 16px;border:1px solid rgba(52,211,153,.22);border-radius:16px;background:rgba(6,78,59,.16)}.reports-hero__meta span{font-size:12px;color:var(--muted,#9db4d0);text-transform:uppercase;letter-spacing:.08em}.reports-hero__meta strong{font-size:22px;color:#dffdf3}.reports-summary:not(.home-kpis){display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.reports-stat{min-height:118px;display:flex;flex-direction:column;justify-content:center;gap:6px}.reports-stat__label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted,#9db4d0);font-weight:900}.reports-stat strong{font-size:30px;line-height:1;color:#e8f2ff}.reports-stat small{font-size:12px;color:var(--muted,#9db4d0)}.reports-stat--primary{border-color:rgba(34,211,238,.32);box-shadow:inset 0 0 0 1px rgba(34,211,238,.08)}.reports-stat--service{border-color:rgba(168,85,247,.34);box-shadow:inset 0 0 0 1px rgba(168,85,247,.08)}.reports-card-toolbar{padding:0;margin-bottom:12px}.reports-muted{color:var(--muted,#9db4d0);font-size:13px}.reports-error{color:#fca5a5}.reports-actions{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(4,minmax(130px,.75fr)) auto auto;gap:10px;align-items:end}.reports-actions label,.reports-filterbar label{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12px;color:var(--muted,#9db4d0);font-weight:800;letter-spacing:.04em;text-transform:uppercase}.reports-actions input,.reports-actions select,.reports-filterbar select{min-height:40px}.reports-filterbar{display:flex;justify-content:flex-end;margin:-4px 0 12px}.reports-filterbar label{min-width:220px}.reports-table-wrap{max-height:calc(100vh - 380px);overflow:auto}.reports-table td{vertical-align:middle}.reports-row-id{display:block;margin-top:5px}.reports-table-actions{display:flex;gap:8px;flex-wrap:wrap}.reports-table-actions .btn{min-height:32px;padding:6px 10px}.reports-modal{position:fixed;inset:0;z-index:2147482000;display:none}.reports-modal.is-visible{display:block}.reports-modal__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.66);backdrop-filter:blur(6px)}.reports-modal__panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(1180px,calc(100vw - 36px));max-height:calc(100vh - 36px);display:flex;flex-direction:column;border:1px solid rgba(64,112,167,.36);border-radius:20px;background:linear-gradient(135deg,rgba(10,18,31,.98),rgba(6,12,22,.98));box-shadow:0 30px 90px rgba(0,0,0,.48);overflow:hidden}.reports-modal__head{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:18px 20px;border-bottom:1px solid rgba(64,112,167,.25)}.reports-modal__head h3{margin:4px 0 0}.reports-modal__actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.reports-modal__body{padding:18px 20px;overflow:auto}.reports-preview-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-bottom:14px}.reports-preview-meta span{padding:10px 12px;border:1px solid rgba(64,112,167,.22);border-radius:12px;background:rgba(7,17,29,.6);color:#dbeafe}.reports-preview-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:18px}.reports-preview-summary div{padding:12px;border:1px solid rgba(34,211,238,.16);border-radius:14px;background:rgba(8,23,38,.72)}.reports-preview-summary span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted,#9db4d0);font-weight:900}.reports-preview-summary strong{display:block;margin-top:5px;color:#e8f2ff;font-size:18px;word-break:break-word}.reports-preview-section{margin-top:18px}.reports-preview-section h4{margin:0 0 10px;font-size:16px}.reports-preview-table-wrap{max-height:360px;overflow:auto}.reports-modal-open{overflow:hidden}.eyebrow{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.13em;font-weight:900;color:#7dd3fc}
@media(max-width:1180px){.reports-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.reports-hero{flex-direction:column}.reports-hero__meta{min-width:0}}
@media(max-width:720px){.reports-actions{grid-template-columns:1fr}.reports-modal__panel{width:calc(100vw - 20px);max-height:calc(100vh - 20px)}.reports-modal__head{align-items:flex-start;flex-direction:column}.reports-filterbar{justify-content:stretch}.reports-filterbar label{width:100%}}
@media print{body.reports-modal-open>*:not(#reportPreviewModal){display:none!important}.reports-modal{position:static!important;display:block!important}.reports-modal__backdrop,.reports-modal__actions{display:none!important}.reports-modal__panel{position:static!important;transform:none!important;width:auto!important;max-height:none!important;border:0!important;box-shadow:none!important;background:#fff!important;color:#111!important}.reports-modal__head,.reports-modal__body{color:#111!important;background:#fff!important}.reports-preview-meta span,.reports-preview-summary div{background:#fff!important;color:#111!important;border:1px solid #ccc!important}.reports-preview-summary strong,.reports-preview-summary span,.reports-preview-section h4{color:#111!important}.generic-table th,.generic-table td{color:#111!important;background:#fff!important;border-color:#ccc!important}}


/* Etap 8J Ă˘â‚¬â€ś Lucide Icons online.
   WyÄąâ€šĂ„â€¦czamy lokalne symbole / Font Awesome fallbacki.
   Ikony sĂ„â€¦ renderowane przez lucide.createIcons() z CDN. */
i.fa-solid::before,
i.fa-regular::before,
i.fa-brands::before,
.jk-local-icon::before {
  content: none !important;
}

.jk-local-icon {
  font-size: 0 !important;
}

.jk-lucide-icon,
.lucide {
  width: 1.15em;
  height: 1.15em;
  min-width: 1.15em;
  display: inline-block;
  vertical-align: -0.16em;
  stroke: currentColor;
  color: currentColor;
  fill: none;
  flex: 0 0 auto;
}

.icon-svg.jk-lucide-icon,
.icon-svg.lucide {
  width: 22px;
  height: 22px;
}

.btn-svg.jk-lucide-icon,
.btn-svg.lucide {
  width: 17px;
  height: 17px;
}

.stat-card__icon .lucide,
.stat-card__icon .jk-lucide-icon,
.dev-ico .lucide,
.dash-event-icon .lucide {
  width: 22px;
  height: 22px;
}

.input-icon .lucide,
.input-icon .jk-lucide-icon {
  width: 15px;
  height: 15px;
}

.btn .lucide,
.btn .jk-lucide-icon {
  width: 1em;
  height: 1em;
}

.icon-btn .lucide,
.icon-btn .jk-lucide-icon,
.btn-icon .lucide,
.btn-icon .jk-lucide-icon {
  width: 16px;
  height: 16px;
}

.topbar__btn .lucide,
.topbar__btn .jk-lucide-icon,
.topbar__chevron .lucide,
.user-dropdown .lucide {
  width: 18px;
  height: 18px;
}

.topbar__btn .lucide {
  color: #bddcff;
}

.user-dropdown a,
.user-dropdown button {
  align-items: center;
}

.user-dropdown .lucide {
  color: #dbeafe;
}

.fa-spin[data-lucide],
.lucide.fa-spin,
.lucide[data-lucide="loader-circle"] {
  animation: jk-fa-css-spin 1s linear infinite;
}

/* ================================================================
   PIN PAD Ă˘â‚¬â€ť uniwersalna klawiatura numeryczna (logowanie / kod SMS)
================================================================ */
.jk-pinpad-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 12px;
}

.jk-pinpad-dot {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid rgba(125, 154, 189, .38);
  background: rgba(125, 154, 189, .08);
  transition: all .16s ease;
}

.jk-pinpad-dot--filled {
  border-color: var(--cyan);
  background: var(--cyan);
  box-shadow: 0 0 12px rgba(0, 194, 204, .65);
  transform: scale(1.08);
}

.jk-pinpad-keys {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  justify-content: center;
  gap: 12px;
  max-width: 300px;
  margin: 0 auto;
}

.jk-pinpad-key {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  min-height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: linear-gradient(180deg, var(--bg-card) 0%, var(--bg-input) 100%);
  color: var(--text-primary);
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  cursor: pointer;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .04),
    0 2px 6px rgba(0, 0, 0, .35);
  transition: transform .08s ease, border-color .15s ease, background .15s ease, box-shadow .15s ease;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}

.jk-pinpad-key:hover {
  border-color: var(--border-bright);
  background: linear-gradient(180deg, var(--bg-card-hover) 0%, var(--bg-card) 100%);
}

.jk-pinpad-key:active,
.jk-pinpad-key.is-pressed {
  transform: scale(.92);
  border-color: var(--blue);
  background: radial-gradient(circle at 50% 35%, rgba(29, 111, 232, .35), var(--bg-input) 75%);
  box-shadow:
    inset 0 2px 6px rgba(0, 0, 0, .45),
    0 0 18px rgba(29, 111, 232, .35);
}

.jk-pinpad-key:disabled {
  opacity: .45;
  cursor: not-allowed;
  transform: none;
}

.jk-pinpad-key--action {
  font-size: 17px;
  color: var(--text-secondary);
  background: linear-gradient(180deg, rgba(17, 28, 45, .6) 0%, rgba(10, 18, 25, .6) 100%);
  border-style: dashed;
}

.jk-pinpad-key--action:hover {
  color: var(--text-primary);
}

.jk-pinpad-key--action svg {
  width: 20px;
  height: 20px;
}

.jk-pinpad-key__sub {
  position: absolute;
  bottom: 7px;
  left: 0;
  right: 0;
  text-align: center;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--text-muted);
  text-transform: uppercase;
}

@media (max-width: 420px) {
  .jk-pinpad-keys { max-width: 260px; gap: 10px; }
  .jk-pinpad-key { min-height: 50px; font-size: 19px; }
}

.jk-pinpad-resend-badge {
  border: none;
  font-family: inherit;
  cursor: pointer;
  transition: all .15s ease;
}

.jk-pinpad-resend-badge:hover:not(:disabled) {
  background: rgba(29, 111, 232, .22);
  border-color: rgba(29, 111, 232, .45);
}

.jk-pinpad-resend-badge:disabled {
  opacity: .55;
  cursor: not-allowed;
}

.jk-profile-modal__actions--center {
  justify-content: center;
}

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Status: Centrum Diagnostyczne Ă˘â‚¬â€ť harmonijki Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
body[data-page="status"] .status-diag-accordion {
  display: grid;
  gap: 16px;
  margin-top: 0;
}

body[data-page="status"] .status-diag-accordion.notifications-stats > .status-diag-accordion__item {
  min-width: 0;
}

body[data-page="status"] .status-diag-accordion.notifications-stats > .status-diag-accordion__item[open] {
  grid-column: 1 / -1;
}

body[data-page="status"] .status-diag-accordion__item.home-card {
  padding: 0;
  overflow: hidden;
}

body[data-page="status"] .status-diag-accordion__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  cursor: pointer;
  list-style: none;
  border-bottom: 1px solid transparent;
  user-select: none;
}

body[data-page="status"] .status-diag-accordion__summary::-webkit-details-marker {
  display: none;
}

body[data-page="status"] .status-diag-accordion__summary:hover {
  background: rgba(29, 111, 232, .08);
}

body[data-page="status"] .status-diag-accordion__item[open] > .status-diag-accordion__summary {
  border-bottom-color: rgba(82, 132, 186, .24);
  background: linear-gradient(90deg, rgba(29, 111, 232, .13), rgba(8, 18, 31, .22));
}

body[data-page="status"] .status-diag-accordion__summary-main {
  min-width: 0;
  flex: 1 1 auto;
}

body[data-page="status"] .status-diag-accordion__summary-main h3 {
  margin: 0 0 6px;
  font-size: 18px;
  font-weight: 650;
  color: #fff;
}

body[data-page="status"] .status-diag-accordion__summary-main p {
  margin: 0;
}

body[data-page="status"] .status-diag-accordion__summary-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}

body[data-page="status"] .status-diag-accordion__chevron {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid rgba(63, 147, 235, .30);
  display: grid;
  place-items: center;
  color: var(--blue-bright, #5eb3ff);
  background: rgba(24, 96, 168, .12);
  transition: transform .18s ease;
  font-size: 18px;
  line-height: 1;
}

body[data-page="status"] .status-diag-accordion__item[open] > .status-diag-accordion__summary .status-diag-accordion__chevron {
  transform: rotate(180deg);
}

body[data-page="status"] .status-diag-accordion__body {
  padding: 0 18px 18px;
}

body[data-page="status"] .status-diag-accordion__body .module-actions {
  margin-bottom: 12px;
}

body[data-page="status"] .status-diag-accordion__body .table {
  margin-top: 0;
}

/* Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ Status Sprint 0B Ă˘â‚¬â€ť Centrum Operacyjne (NOC) Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬Ă˘â€ťâ‚¬ */
body[data-page="status"] .status-noc {
  display: grid;
  gap: 16px;
}

body[data-page="status"] .status-noc-health__grid {
  display: grid;
  grid-template-columns: minmax(120px, 160px) minmax(220px, 1fr) minmax(240px, 1.2fr) auto;
  gap: 20px;
  align-items: center;
}

body[data-page="status"] .status-noc-health__label {
  display: block;
  font-size: 12px;
  color: var(--text-secondary, #8fa7bf);
  text-transform: uppercase;
  letter-spacing: .06em;
}

body[data-page="status"] .status-noc-health__pct {
  display: block;
  font-size: 42px;
  font-weight: 800;
  line-height: 1;
  color: #fff;
}

body[data-page="status"] .status-noc-health__status {
  display: flex;
  align-items: center;
  gap: 12px;
}

body[data-page="status"] .status-noc-health__icon {
  font-size: 28px;
  line-height: 1;
}

body[data-page="status"] .status-noc-health__stats {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-size: 13px;
  color: var(--text-secondary, #8fa7bf);
}

body[data-page="status"] .status-noc-health__stats strong {
  color: #fff;
}

body[data-page="status"] .status-noc-health__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

body[data-page="status"] .status-noc-kpi-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
  gap: 10px;
}

body[data-page="status"] .status-noc-kpi {
  border-radius: 10px;
  padding: 10px 12px;
  background: linear-gradient(145deg, rgba(13, 29, 49, .94), rgba(7, 19, 33, .95));
  border: 1px solid rgba(82, 132, 186, .24);
  min-height: 58px;
  display: grid;
  gap: 4px;
}

body[data-page="status"] .status-noc-kpi__label {
  font-size: 11px;
  color: var(--text-secondary, #8fa7bf);
  text-transform: uppercase;
  letter-spacing: .04em;
}

body[data-page="status"] .status-noc-kpi__value {
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body[data-page="status"] .status-noc-kpi.is-ok { border-color: rgba(51, 212, 93, .35); }
body[data-page="status"] .status-noc-kpi.is-warn { border-color: rgba(245, 158, 11, .45); }
body[data-page="status"] .status-noc-kpi.is-error { border-color: rgba(239, 68, 68, .45); }
body[data-page="status"] .status-noc-kpi.is-off { opacity: .72; }

body[data-page="status"] .status-noc-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

body[data-page="status"] .status-noc-module-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
  gap: 10px;
}

body[data-page="status"] .status-noc-module {
  border-radius: 10px;
  padding: 12px;
  border: 1px solid rgba(82, 132, 186, .24);
  background: rgba(5, 17, 30, .55);
  cursor: pointer;
  transition: border-color .15s ease, transform .15s ease;
}

body[data-page="status"] .status-noc-module:hover { transform: translateY(-1px); border-color: rgba(63, 147, 235, .45); }
body[data-page="status"] .status-noc-module.is-selected { border-color: rgba(47, 145, 255, .75); box-shadow: 0 0 0 1px rgba(47, 145, 255, .25) inset; }
body[data-page="status"] .status-noc-module--ok { border-left: 3px solid var(--green, #33d45d); }
body[data-page="status"] .status-noc-module--warn { border-left: 3px solid var(--yellow, #f59e0b); }
body[data-page="status"] .status-noc-module--error { border-left: 3px solid var(--red, #ef4444); }

body[data-page="status"] .status-noc-module__head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 13px;
}

body[data-page="status"] .status-noc-module__meta,
body[data-page="status"] .status-noc-module__foot {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  color: var(--text-secondary, #8fa7bf);
}

body[data-page="status"] .status-noc-module-detail {
  margin-top: 12px;
  padding: 12px;
  border-radius: 8px;
  border: 1px dashed rgba(63, 147, 235, .28);
}

body[data-page="status"] .status-noc-http-chart {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  min-height: 140px;
  padding: 8px 4px 0;
}

body[data-page="status"] .status-noc-bar {
  flex: 1 1 0;
  min-width: 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  height: 130px;
}

body[data-page="status"] .status-noc-bar__fill {
  width: 100%;
  max-width: 36px;
  border-radius: 6px 6px 2px 2px;
  background: rgba(47, 145, 255, .75);
  min-height: 4px;
  transition: height .2s ease;
}

body[data-page="status"] .status-noc-bar--warn .status-noc-bar__fill { background: rgba(245, 158, 11, .85); }
body[data-page="status"] .status-noc-bar--danger .status-noc-bar__fill { background: rgba(239, 68, 68, .88); }

body[data-page="status"] .status-noc-bar__label,
body[data-page="status"] .status-noc-bar__val {
  font-size: 11px;
  color: var(--text-secondary, #8fa7bf);
}

body[data-page="status"] .status-noc-bar__val { color: #fff; font-weight: 700; }

body[data-page="status"] .status-noc-timeline {
  display: grid;
  gap: 8px;
}

body[data-page="status"] .status-noc-event {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px 12px;
  align-items: start;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(82, 132, 186, .2);
  background: rgba(5, 17, 30, .45);
  cursor: pointer;
}

body[data-page="status"] .status-noc-event--error { border-left: 3px solid #ef4444; }
body[data-page="status"] .status-noc-event--warn { border-left: 3px solid #f59e0b; }
body[data-page="status"] .status-noc-event--info { border-left: 3px solid #3b82f6; }

body[data-page="status"] .status-noc-event__icon { font-size: 16px; line-height: 1.2; }
body[data-page="status"] .status-noc-event__title { font-size: 13px; color: #fff; font-weight: 600; }
body[data-page="status"] .status-noc-event__meta { font-size: 11px; color: var(--text-secondary, #8fa7bf); }
body[data-page="status"] .status-noc-event__time { font-size: 11px; color: var(--text-secondary, #8fa7bf); white-space: nowrap; }
body[data-page="status"] .status-noc-event__detail {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--text-secondary, #8fa7bf);
  padding-top: 4px;
  border-top: 1px solid rgba(82, 132, 186, .15);
}

body[data-page="status"] .status-noc-spark-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}

body[data-page="status"] .status-noc-spark-card {
  border: 1px solid rgba(82, 132, 186, .22);
  border-radius: 10px;
  padding: 10px 12px;
  background: rgba(5, 17, 30, .42);
}

body[data-page="status"] .status-noc-spark-card__label {
  font-size: 11px;
  color: var(--text-secondary, #8fa7bf);
  margin-bottom: 6px;
}

body[data-page="status"] .status-noc-spark-card__value {
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
}

body[data-page="status"] .status-noc-spark {
  width: 100%;
  height: 36px;
  color: #5eb3ff;
}

body[data-page="status"] .status-noc-autodiag .status-diag-accordion__summary {
  padding: 12px 14px;
}

body[data-page="status"] .status-noc-autodiag .status-diag-accordion__summary-main h3 {
  font-size: 18px;
}

body[data-page="status"] .status-noc-autodiag__score {
  font-size: 24px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 6px;
  line-height: 1;
}

body[data-page="status"] .status-noc-autodiag__checks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 4px;
  margin-top: 8px;
}

body[data-page="status"] .status-noc-autodiag__body {
  padding-bottom: 10px;
}

body[data-page="status"] .status-noc-autodiag__body .module-actions {
  margin-bottom: 6px;
}

body[data-page="status"] .status-noc-autodiag .status-noc-check {
  padding: 5px 8px;
  font-size: 11px;
}

body[data-page="status"] #diagSectionVersions[open] .table-wrap {
  max-height: 180px;
  overflow: auto;
}

body[data-page="status"] .status-noc-check {
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(82, 132, 186, .22);
  font-size: 12px;
  background: rgba(5, 17, 30, .4);
}

body[data-page="status"] .status-noc-check.is-ok { border-left: 3px solid #33d45d; }
body[data-page="status"] .status-noc-check.is-warn { border-left: 3px solid #f59e0b; }
body[data-page="status"] .status-noc-check.is-error { border-left: 3px solid #ef4444; }

body[data-page="status"] .status-diag-alert-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px;
}

body[data-page="status"] .status-diag-alert-card {
  padding: 10px 12px;
  margin: 0;
}

body[data-page="status"] .status-diag-alert-card--critical { border-left: 3px solid #ef4444; }
body[data-page="status"] .status-diag-alert-card--warn { border-left: 3px solid #f59e0b; }
body[data-page="status"] .status-diag-alert-card--ok { border-left: 3px solid #33d45d; }

body[data-page="status"] .status-diag-rec-list {
  display: grid;
  gap: 8px;
}

body[data-page="status"] .status-diag-rec-card {
  padding: 10px 12px;
  margin: 0;
  font-size: 13px;
}

body[data-page="status"] .status-diag-rec-card--critical { border-left: 3px solid #ef4444; }
body[data-page="status"] .status-diag-rec-card--warn { border-left: 3px solid #f59e0b; }

@media (max-width: 960px) {
  body[data-page="status"] .status-noc-health__grid {
    grid-template-columns: 1fr 1fr;
  }

  body[data-page="status"] .status-noc-health__meta {
    grid-column: 1 / -1;
  }
}

/* â”€â”€ Global status diagnostics components (Status-B2) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.health-banner{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px;
  padding:18px 20px;
  border-radius:12px;
  border:1px solid rgba(83,134,188,.28);
  background:linear-gradient(145deg,rgba(13,29,49,.94),rgba(7,19,33,.95));
  box-shadow:0 16px 40px rgba(0,0,0,.14);
}
.health-banner[data-tone="ok"]{border-color:rgba(51,212,93,.35)}
.health-banner[data-tone="warn"]{border-color:rgba(255,186,36,.4)}
.health-banner[data-tone="error"]{border-color:rgba(255,75,71,.4)}
.health-banner__main{display:flex;gap:20px;align-items:center;min-width:0;flex:1 1 auto}
.health-banner__score-wrap{display:flex;flex-direction:column;gap:4px;min-width:110px}
.health-banner__eyebrow{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#9eb2c8;font-weight:700}
.health-banner__score{font-size:40px;line-height:1;font-weight:650;color:#fff}
.health-banner__copy{min-width:0}
.health-banner__title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.health-banner__title-row strong{font-size:18px;color:#fff}
.health-banner__desc{margin:0;font-size:14px;color:#c8d7e8;line-height:1.4}
.health-banner__meta{margin:8px 0 0}
.health-banner__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.health-banner__auto{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#c8d7e8;white-space:nowrap}
.health-banner__auto input{accent-color:var(--blue-bright,#2ea7ff)}

.metric-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:16px;
  align-items:stretch;
}
.metric-grid > .stat-card,
.metric-grid > .home-kpi{
  min-width:0;
  position:relative;
}
/* Wyższa specyficzność niż .stat-card > * { position:relative } z etap2-ui */
.metric-grid > .stat-card > .metric-card__status,
.home-kpis > .stat-card > .metric-card__status,
.home-kpis > .home-kpi > .metric-card__status{
  position:absolute;
  top:12px;
  right:12px;
  z-index:2;
  width:auto;
  max-width:none;
  align-self:auto;
  flex:0 0 auto;
}

.service-table-wrap{overflow:auto}
.service-table{width:100%}
.service-table th{white-space:nowrap}
.service-card-list{display:none;gap:12px}
.service-card{
  border:1px solid rgba(83,134,188,.22);
  border-radius:10px;
  padding:12px 14px;
  background:rgba(7,21,35,.55);
}
.service-card__head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.service-card__meta{display:grid;gap:8px;margin:0}
.service-card__meta > div{display:grid;grid-template-columns:140px 1fr;gap:8px;font-size:13px}
.service-card__meta dt{color:#91a4bb;margin:0}
.service-card__meta dd{margin:0;color:#eaf4ff}

.chart-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}
.chart-card{
  border:1px solid rgba(83,134,188,.2);
  border-radius:10px;
  padding:14px;
  background:rgba(6,16,29,.45);
  min-width:0;
}
.chart-card__head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px}
.chart-card__head h4{margin:0;font-size:15px;color:#fff;font-weight:650}
.chart-card__body{min-height:180px}
.chart-range{display:flex;gap:6px;flex-wrap:wrap}
.chart-range .btn.is-active{
  border-color:rgba(46,167,255,.55);
  color:#fff;
  background:rgba(46,167,255,.16);
}
.chart-svg-wrap{display:flex;flex-direction:column;gap:8px}
.chart-svg-wrap svg{width:100%;height:180px;display:block}
.chart-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:#9eb2c8}
.chart-legend__item{display:inline-flex;align-items:center;gap:6px}
.chart-legend__item i{width:10px;height:10px;border-radius:2px;display:inline-block}

.data-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.data-list__item{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:8px 0;
  border-top:1px solid rgba(83,134,188,.14);
  font-size:13px;
  color:#eaf4ff;
}
.data-list__item:first-child{border-top:0;padding-top:0}

.details-accordion{display:flex;flex-direction:column;gap:10px}
.details-accordion__item{
  border:1px solid rgba(83,134,188,.22);
  border-radius:10px;
  background:rgba(7,21,35,.4);
  overflow:hidden;
}
.details-accordion__summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px 16px;
  min-height:46px;
  font-size:15px;
  font-weight:650;
  color:#fff;
}
.details-accordion__summary::-webkit-details-marker{display:none}
.details-accordion__summary:hover{background:rgba(46,167,255,.06)}
.details-accordion__item[open] > .details-accordion__summary{
  border-bottom:1px solid rgba(83,134,188,.22);
  background:rgba(46,167,255,.04);
}
.details-accordion__chevron{color:#8197ad;transition:transform .15s ease;flex-shrink:0}
.details-accordion__item[open] > .details-accordion__summary .details-accordion__chevron{transform:rotate(180deg)}
.details-accordion__body{padding:16px 18px 18px}

/* â”€â”€ Global content measure + diagnostic groups â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.content-measure{
  width:min(100%,1800px);
  margin-inline:auto;
  min-width:0;
}
.details-groups-grid,
.data-groups-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:stretch;
  min-width:0;
}
.details-groups-grid > .data-group:only-child,
.data-groups-grid > .data-group:only-child{
  grid-column:1 / -1;
}
.property-group,
.data-group{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin:0;
  min-width:0;
  min-height:100%;
  padding:14px 14px 12px;
  border-radius:10px;
  background:rgba(6,18,32,.55);
  border:1px solid rgba(83,134,188,.16);
}
.property-group__title,
.data-group-title{
  margin:0;
  min-height:22px;
  padding-bottom:8px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#c2d4e8;
  border-bottom:1px solid rgba(83,134,188,.22);
}
.data-group-content,
.property-group > .property-grid{
  min-width:0;
}
.property-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px 12px;
  min-width:0;
}
.property-item{
  min-width:0;
  min-height:72px;
  padding:10px 14px;
  border-radius:8px;
  background:rgba(8,22,38,.55);
  border:1px solid rgba(83,134,188,.12);
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.property-item--wide{grid-column:span 2}
.property-item--full{grid-column:1 / -1}
.property-item--primary .property-value{
  font-size:18px;
  font-weight:700;
  line-height:1.3;
}
.property-label{
  margin:0 0 6px;
  font-size:12px;
  font-weight:650;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:#b0c4d9;
  line-height:1.35;
}
.property-value{
  margin:0;
  font-size:15px;
  font-weight:650;
  color:#f3f8ff;
  line-height:1.45;
  min-width:0;
  overflow-wrap:break-word;
  word-break:normal;
  hyphens:auto;
}
.property-value.mono,
.property-value--mono,
.property-item .property-value.mono{
  overflow-wrap:anywhere;
  word-break:normal;
  font-family:var(--font-mono, ui-monospace, monospace);
}

.environment-table-wrap{overflow:visible;min-width:0}

.permission-message{
  margin:0 0 12px;
  padding:10px 12px;
  border-radius:8px;
  border:1px solid rgba(83,134,188,.22);
  background:rgba(7,21,35,.45);
  color:#c8d7e8;
  font-size:13px;
}

.status-badge{display:inline-flex;align-items:center}

/* Layout-only stack for Status page sections */
.status-layout{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.status-layout > *{
  margin-top:0;
  margin-bottom:0;
  min-width:0;
}
.status-split{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  margin:0;
}
.status-split > .home-card{
  margin:0;
}

@media (max-width:1799px){
  .metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1366px){
  .details-groups-grid,
  .data-groups-grid{
    grid-template-columns:1fr;
  }
}
@media (max-width:1199px){
  .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chart-grid,.status-split{grid-template-columns:1fr}
  .property-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .property-item--wide{grid-column:1 / -1}
  .details-groups-grid,
  .data-groups-grid{
    grid-template-columns:1fr;
  }
}
@media (max-width:799px){
  /* NajwÄ™ĹĽszy widok: rĂłwny stack sekcji + zwarte KPI */
  .status-layout{
    display:flex !important;
    flex-direction:column;
    gap:12px;
  }
  .status-layout > *{
    margin-top:0 !important;
    margin-bottom:0 !important;
  }
  .status-split{
    grid-template-columns:1fr;
    gap:12px;
  }
  .status-split > .home-card{
    margin:0 !important;
  }
  .metric-grid{
    grid-template-columns:minmax(0,1fr);
    gap:8px;
  }
  .metric-grid > .home-kpi,
  .metric-grid > .stat-card{
    min-height:0;
    padding:10px 12px;
    box-shadow:0 10px 28px rgba(0,0,0,.12);
    display:flex;
    flex-direction:column;
    justify-content:center;
  }
  .metric-grid > .home-kpi .stat-card__head{
    gap:8px;
    margin-bottom:0;
  }
  .metric-grid > .home-kpi .stat-card__icon{
    width:40px;
    height:40px;
  }
  .metric-grid > .home-kpi .stat-card__value{
    font-size:24px;
    line-height:26px;
    min-height:26px;
  }
  .metric-grid > .home-kpi .stat-card__delta{
    margin-top:2px;
    line-height:1.25;
  }
  .metric-grid > .stat-card > .metric-card__status,
  .home-kpis > .stat-card > .metric-card__status,
  .home-kpis > .home-kpi > .metric-card__status{
    top:8px;
    right:8px;
    padding:2px 7px;
    line-height:1.2;
    min-height:22px;
  }
  .health-banner{
    flex-direction:column;
    gap:10px;
    padding:12px 14px;
  }
  .health-banner__main{gap:12px;align-items:flex-start}
  .health-banner__score-wrap{min-width:0}
  .health-banner__score{font-size:32px}
  .health-banner__meta{margin-top:6px}
  .health-banner__actions{
    justify-content:flex-start;
    gap:6px;
    max-width:100%;
  }
  .health-banner__actions .btn--small{
    padding:6px 10px;
  }
  .chart-grid{gap:12px}
  .service-table-wrap{display:none}
  .service-card-list{
    display:grid;
    gap:12px;
  }
  .property-grid{grid-template-columns:minmax(0,1fr)}
  .property-item--wide,
  .property-item--full{grid-column:1 / -1}
  .details-accordion__summary{padding:10px 12px}
  .details-accordion__body{padding:12px}
  .property-item{padding:10px}
}

@container home-layout (max-width: 1499px){
  .metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@container home-layout (max-width: 999px){
  .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container home-layout (max-width: 599px){
  .metric-grid{grid-template-columns:minmax(0,1fr)}
}


/* â”€â”€ Shared layout primitives (DEVICES-B4 / reusable) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.page-stack{
  display:flex;
  flex-direction:column;
  gap:16px;
  min-width:0;
}
.page-stack > *{
  margin-top:0;
  margin-bottom:0;
}
.toolbar,
.page-toolbar{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.filter-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:10px;
  align-items:end;
}
.filter-grid.filter-grid--4,
.filter-grid.device-filters--simple{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.filter-grid__search{grid-column:1 / -1}
.filter-grid__actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.filter-active-count{
  font-size:12px;
  color:var(--text-secondary,#9eb2c8);
  font-weight:700;
  margin-right:auto;
}
.data-table-wrap{overflow:auto;min-width:0}
.data-table{width:100%;border-collapse:collapse}
.empty-state{
  display:grid;
  gap:8px;
  justify-items:center;
  text-align:center;
  padding:28px 16px;
  color:var(--text-secondary,#9eb2c8);
}
.empty-state strong{color:var(--text-primary,#eaf4ff);font-size:15px}
.empty-state .muted{margin:0;font-size:13px}
.empty-state--compact{padding:16px}
.responsive-cards{
  display:none;
  gap:12px;
}
.responsive-cards--grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.responsive-card{
  border:1px solid rgba(83,134,188,.22);
  border-radius:12px;
  padding:12px 14px;
  background:rgba(7,21,35,.55);
  min-width:0;
  display:grid;
  gap:10px;
}
.responsive-card__head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
}
.responsive-card__meta{
  display:grid;
  gap:8px;
  margin:0;
}
.responsive-card__meta > div{
  display:grid;
  grid-template-columns:minmax(96px,38%) minmax(0,1fr);
  gap:8px;
  font-size:13px;
}
.responsive-card__meta dt{color:#91a4bb;margin:0}
.responsive-card__meta dd{
  margin:0;
  color:#eaf4ff;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.responsive-card__actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
}
.action-menu{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.action-menu__trigger:focus-visible,
.action-menu__item:focus-visible,
.page-btn:focus-visible,
.btn:focus-visible{
  outline:2px solid rgba(46,167,255,.7);
  outline-offset:2px;
}
.action-menu__panel{
  position:absolute;
  right:0;
  top:calc(100% + 6px);
  z-index:40;
  min-width:180px;
  display:none;
  gap:2px;
  padding:6px;
  border-radius:10px;
  border:1px solid rgba(83,134,188,.35);
  background:rgba(7,18,31,.98);
  box-shadow:0 16px 40px rgba(0,0,0,.45);
}
.action-menu.is-open .action-menu__panel{
  display:grid;
}
.action-menu__panel[hidden],
.action-menu:not(.is-open) .action-menu__panel{
  display:none!important;
  visibility:hidden;
  pointer-events:none;
}
.action-menu__item{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  border:0;
  background:transparent;
  color:#eaf4ff;
  text-align:left;
  text-decoration:none;
  padding:8px 10px;
  border-radius:8px;
  font:inherit;
  cursor:pointer;
}
.action-menu__item:hover,
.action-menu__item:focus-visible{
  background:rgba(29,111,232,.16);
}
.btn--sm{
  min-height:32px;
  padding:6px 10px;
  font-size:12px;
}
.pagination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}
.pagination__controls{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.pagination__limit{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  color:#91a4bb;
}
.pagination__limit .input{width:78px}
.page-btn{
  min-height:34px;
  padding:0 12px;
  border-radius:8px;
  border:1px solid var(--border,rgba(80,130,180,.35));
  background:transparent;
  color:var(--text-secondary,#9eb2c8);
  cursor:pointer;
}
.page-btn:disabled,
.page-btn.is-disabled{
  opacity:.4;
  cursor:not-allowed;
}
@media (max-width:1199px){
  .responsive-cards--grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:799px){
  .responsive-cards--grid{grid-template-columns:minmax(0,1fr)}
  .filter-grid{grid-template-columns:minmax(0,1fr)}
  .filter-grid__search{grid-column:auto}
  .pagination{flex-direction:column;align-items:stretch}
}

/* â”€â”€ Layout primitives (DEVICES-B4.1) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.split-layout{
  display:flex;
  flex-direction:column;
  gap:16px;
  min-width:0;
}
.section-stack{
  display:flex;
  flex-direction:column;
  gap:16px;
  min-width:0;
}
.section-stack > *{
  margin:0;
  min-width:0;
}
.full-span{
  width:100%;
  max-width:100%;
  min-width:0;
  grid-column:1 / -1;
}
.action-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  padding:14px 16px;
  border:1px solid rgba(83,134,188,.22);
  border-radius:12px;
  background:rgba(7,21,35,.55);
}
.action-toolbar__primary,
.action-toolbar__danger{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.module-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  align-items:stretch;
}
.module-grid > *{height:100%;min-width:0}
.property-grid--wide{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
@media (max-width:1399px){
  .module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .property-grid--wide{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:999px){
  .module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .property-grid--wide{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:699px){
  .module-grid{grid-template-columns:minmax(0,1fr)}
  .property-grid--wide{grid-template-columns:minmax(0,1fr)}
  .action-toolbar{align-items:stretch}
}

/* ================================================================
   HOME-UI-A â€” global section header, event-list, attention-item
================================================================ */
.section-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:32px;
  margin:0 0 10px;
  padding:0;
  flex:0 0 auto;
}
.section-title{
  margin:0;
  min-width:0;
  color:#fff;
  font-size:15px;
  font-weight:650;
  line-height:1.3;
}
.section-action{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin:0;
  padding:2px 0;
  border-radius:6px;
  color:var(--blue-bright,#7ec8ff);
  font-size:12px;
  font-weight:500;
  line-height:1.3;
  text-decoration:none;
  white-space:nowrap;
}
.section-action:hover{
  color:#b7e0ff;
  text-decoration:underline;
}
.section-action:focus-visible{
  outline:2px solid rgba(126,200,255,.65);
  outline-offset:3px;
}
.panel-title.section-header{
  font-size:inherit;
  font-weight:inherit;
  gap:12px;
  margin-bottom:10px;
  min-height:32px;
}
.panel-title.section-header .section-title{
  font-size:15px;
  font-weight:650;
}
.panel-title.section-header .section-action,
.panel-title.section-header a.section-action{
  font-size:12px;
  font-weight:500;
}

.event-list{
  display:flex;
  flex-direction:column;
  gap:0;
  min-width:0;
}
.event-row,
.dash-event.event-row{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) minmax(100px,auto) auto;
  gap:8px 12px;
  align-items:center;
  min-height:52px;
  margin:0;
  padding:8px 6px 8px 2px;
  border:0;
  border-bottom:1px solid rgba(83,134,188,.14);
  border-radius:0;
  background:transparent;
  box-shadow:none;
  cursor:pointer;
  outline:none;
}
.event-row:first-child,
.dash-event.event-row:first-child{
  margin-top:0;
  border-top:0;
}
.event-row:last-child,
.dash-event.event-row:last-child{
  border-bottom-color:transparent;
}
.event-row:hover,
.dash-event.event-row:hover{
  background:rgba(29,111,232,.07);
}
.event-row:focus-visible,
.dash-event.event-row:focus-visible{
  background:rgba(29,111,232,.12);
  box-shadow:inset 0 0 0 2px rgba(126,200,255,.45);
}
.event-icon,
.dash-event-icon.event-icon,
.event-row .dash-event-icon{
  width:28px;
  height:28px;
  border-radius:8px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  font-size:0;
  border:1px solid transparent;
  background:rgba(148,163,184,.10);
}
.event-icon .event-svg,
.event-icon .icon-svg,
.dash-event-icon.event-icon .event-svg,
.dash-event-icon.event-icon .icon-svg{
  width:15px;
  height:15px;
}
.event-icon.red,
.dash-event-icon.event-icon.red{
  background:rgba(255,75,71,.10);
  border-color:rgba(255,75,71,.18);
  color:var(--red,#ff4b47);
}
.event-icon.yellow,
.dash-event-icon.event-icon.yellow{
  background:rgba(245,158,11,.10);
  border-color:rgba(245,158,11,.18);
  color:var(--yellow,#f5b942);
}
.event-icon.green,
.dash-event-icon.event-icon.green{
  background:rgba(34,197,94,.10);
  border-color:rgba(34,197,94,.18);
  color:var(--green,#34c759);
}
.event-icon.blue,
.dash-event-icon.event-icon.blue{
  background:rgba(29,111,232,.10);
  border-color:rgba(29,111,232,.18);
  color:var(--blue-bright,#7ec8ff);
}
.event-content{
  min-width:0;
  display:grid;
  gap:2px;
}
.event-title,
.dash-event-title.event-title{
  color:#f4f8fd;
  font-size:13px;
  font-weight:600;
  line-height:1.3;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
}
.event-subtitle,
.dash-event-sub.event-subtitle{
  color:#91a4bb;
  font-size:11px;
  font-weight:500;
  line-height:1.35;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:1;
  overflow:hidden;
}
.event-meta,
.dash-event-meta.event-meta{
  min-width:100px;
  max-width:160px;
  text-align:right;
  color:#91a4bb;
  font-size:12px;
  line-height:1.3;
}
.event-meta__time{
  color:#c9d8e8;
  font-weight:600;
  white-space:nowrap;
}
.event-meta__location{
  margin-top:2px;
  color:#8496ad;
  font-size:11px;
  font-weight:500;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  overflow-wrap:anywhere;
}
.event-chevron,
.dash-chevron.event-chevron{
  width:16px;
  height:20px;
  margin-right:2px;
  color:#8197ad;
  opacity:.85;
}
.attention-list,
.dashboard-attention-list.attention-list{
  display:grid;
  gap:8px;
  min-width:0;
  align-content:start;
}
.attention-item,
.dashboard-attention-item.attention-item{
  display:grid;
  grid-template-columns:28px minmax(0,1fr) auto;
  align-items:center;
  gap:10px 12px;
  min-width:0;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(83,134,188,.18);
  border-left-width:3px;
  background:rgba(10,22,38,.72) !important;
  color:#eaf3ff;
  text-decoration:none;
  box-shadow:none;
  transition:border-color .16s ease, background .16s ease;
}
.attention-item:hover,
.dashboard-attention-item.attention-item:hover{
  transform:none;
  background:rgba(14,28,48,.88) !important;
}
.attention-item:focus-visible,
.dashboard-attention-item.attention-item:focus-visible{
  outline:2px solid rgba(126,200,255,.55);
  outline-offset:2px;
}
.attention-item__icon,
.attention-item .dashboard-attention-icon{
  width:28px;
  height:28px;
  border-radius:8px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  font-size:0;
  border:1px solid transparent;
  background:rgba(148,163,184,.10);
}
.attention-item__icon .event-svg,
.attention-item__icon .icon-svg{
  width:15px;
  height:15px;
}
.attention-item__body{
  min-width:0;
  display:grid;
  gap:3px;
}
.attention-item__title{
  display:block;
  margin:0;
  color:#f4f8fd;
  font-size:13px;
  font-weight:600;
  line-height:1.3;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.attention-item__desc{
  display:block;
  margin:0;
  color:#91a4bb;
  font-size:11px;
  font-weight:500;
  line-height:1.35;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.attention-item__badge.status-badge,
.attention-item__badge.badge{
  justify-self:end;
  align-self:center;
  padding:3px 8px;
  border-radius:999px;
  font-size:10px;
  font-weight:700;
  letter-spacing:.01em;
  text-transform:none;
  white-space:nowrap;
  line-height:1.2;
}
.attention-item--warning,
.attention-item.is-warning{
  border-left-color:rgba(245,158,11,.85) !important;
  border-color:rgba(245,158,11,.22) !important;
}
.attention-item--warning .attention-item__icon,
.attention-item.is-warning .dashboard-attention-icon{
  background:rgba(245,158,11,.10);
  border-color:rgba(245,158,11,.22);
  color:#fbbf24;
}
.attention-item--alarm,
.attention-item.is-critical{
  border-left-color:rgba(239,68,68,.85) !important;
  border-color:rgba(239,68,68,.22) !important;
}
.attention-item--alarm .attention-item__icon,
.attention-item.is-critical .dashboard-attention-icon{
  background:rgba(239,68,68,.10);
  border-color:rgba(239,68,68,.22);
  color:#fecaca;
}
.attention-item--offline,
.attention-item.is-offline{
  border-left-color:rgba(148,163,184,.75) !important;
  border-color:rgba(148,163,184,.22) !important;
}
.attention-item--offline .attention-item__icon,
.attention-item.is-offline .dashboard-attention-icon{
  background:rgba(148,163,184,.10);
  border-color:rgba(148,163,184,.22);
  color:#cbd5e1;
}
.attention-item--service,
.attention-item.is-service{
  border-left-color:rgba(167,139,250,.85) !important;
  border-color:rgba(167,139,250,.24) !important;
}
.attention-item--service .attention-item__icon,
.attention-item.is-service .dashboard-attention-icon{
  background:rgba(167,139,250,.10);
  border-color:rgba(167,139,250,.22);
  color:#c4b5fd;
}

@media (max-width:1200px){
  .event-row,
  .dash-event.event-row{
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-areas:
      "icon content chevron"
      "icon meta chevron";
  }
  .event-row .event-icon,
  .event-row .dash-event-icon{grid-area:icon;align-self:start;margin-top:2px}
  .event-row .event-content{grid-area:content}
  .event-row .event-meta,
  .event-row .dash-event-meta{
    grid-area:meta;
    max-width:none;
    text-align:left;
    display:flex;
    flex-wrap:wrap;
    gap:4px 10px;
  }
  .event-meta__location{margin-top:0}
  .event-row .event-chevron{grid-area:chevron;align-self:center}
  .attention-item,
  .dashboard-attention-item.attention-item{
    grid-template-columns:28px minmax(0,1fr);
  }
  .attention-item__badge,
  .attention-item .dashboard-attention-badge{
    grid-column:2;
    justify-self:start;
  }
}

@media (max-width:760px){
  .section-header,
  .panel-title.section-header{
    align-items:flex-start;
    gap:8px;
  }
  .section-action{
    white-space:normal;
  }
  .event-row,
  .dash-event.event-row{
    min-height:48px;
    padding:8px 4px;
    gap:8px 10px;
  }
  .event-meta,
  .dash-event-meta.event-meta{
    min-width:0;
  }
}

/* ===== MAP-A/B: cyfrowy pulpit mapy + udostÄ™pnianie ===== */
.map-toolbar{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:10px 14px;
  margin:0 0 10px;
  padding:8px 10px;
  border:1px solid rgba(83,134,188,.22);
  border-radius:12px;
  background:linear-gradient(145deg,rgba(7,22,39,.72),rgba(4,13,24,.55));
}
.map-toolbar__brand{display:grid;gap:2px;min-width:0}
.map-toolbar__brand .panel-title{margin:0;font-size:1.05rem}
.map-toolbar__brand .panel-subtitle{opacity:.72;font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.map-toolbar__actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  min-width:0;
}
.map-toolbar__actions .locations-map-search--inline{flex:1 1 220px;max-width:360px}
.map-toolbar__clock{font-size:12px;color:#9fb5cc;white-space:nowrap}
.map-toolbar__clock b{color:#eaf4ff;font-weight:700}
.map-digital-console__stage{position:relative;min-height:min(68vh,760px)}
.map-digital-console__body,
.map-console-body{
  display:flex;
  flex-direction:column;
  min-height:0;
  flex:1 1 auto;
  gap:10px;
}
.map-digital-console__body > .map-stage,
.map-digital-console__body > .map-digital-console__stage,
.map-console-body > .map-stage{
  flex:1 1 auto;
  min-height:0;
}
.map-digital-console__body > .map-legend,
.map-console-body > .map-legend,
.map-digital-console__body > .map-stats-bar,
.map-digital-console__body > .map-quality-info{
  flex:0 0 auto;
}

/* MAP-C5: pasek statystyk pod legendÄ… */
.map-stats-bar,
.map-quality-info.map-stats-bar{
  display:flex !important;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 18px;
  width:100%;
  min-height:40px;
  padding:10px 14px !important;
  margin:0 !important;
  border:1px solid rgba(83,134,188,.22) !important;
  border-radius:12px;
  background:rgba(4,13,24,.78);
  color:#9fb5cc;
  font-size:12.5px;
  line-height:1.3;
  visibility:visible !important;
  opacity:1 !important;
  position:static !important;
  z-index:auto;
}
.map-stats-bar .map-stat-item{
  display:inline-flex;
  align-items:baseline;
  gap:6px;
  white-space:nowrap;
}
.map-stats-bar .map-stat-label{
  color:#8ea7bf;
  font-weight:550;
}
.map-stats-bar .map-stat-value,
.map-stats-bar b.map-stat-value{
  color:#eaf4ff !important;
  font-weight:750;
  font-variant-numeric:tabular-nums;
}
.map-stats-bar .map-stat-item--updated{
  margin-left:auto;
}
.map-stats-bar__stale{
  color:#fbbf24;
  font-size:11.5px;
  font-weight:650;
}
.map-stats-bar.is-stale{
  border-color:rgba(251,191,36,.35) !important;
}
.map-stats-bar.is-loading{
  opacity:.92;
}

@media (max-width:900px){
  .map-stats-bar .map-stat-item--updated{
    margin-left:0;
    flex:1 1 100%;
  }
}
@media (max-width:520px){
  .map-stats-bar{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px 12px;
  }
  .map-stats-bar .map-stat-item--updated,
  .map-stats-bar__stale{
    grid-column:1 / -1;
  }
}

/* MAP-C5/C6: pasek statystyk pod legendÄ… â€” publiczne animacje statusĂłw
   korzystajÄ… z klas mapy uĹĽytkownika (station-marker-pro / route-line-pro). */
@media (prefers-reduced-motion: reduce){
  .station-marker-pro--fault span,
  .station-marker-pro--fault span::after,
  .station-marker--alert span::after,
  .station-marker-pro--warning span,
  .station-marker-pro--offline span,
  .device-marker-pro--fault span,
  .device-marker-pro--fault span::after,
  .leaflet-pane path.route-live-flow,
  .leaflet-pane path.route-line-pro--fault,
  .leaflet-pane path.route-glow--fault{
    animation:none !important;
  }
}

/* MAP-C3: panel warstw tylko w module Mapa â€” szerokoĹ›Ä‡ wzglÄ™dem viewportu, nie przycisku */
.map-digital-console .map-toolbox--floating.layer-menu{
  width:auto;
  max-width:none;
}
.map-digital-console .map-toolbox--floating .map-layers-panel,
.map-digital-console .layer-menu.map-layers-panel{
  width:min(340px, calc(100vw - 32px));
  max-width:min(340px, calc(100vw - 32px));
  min-width:280px;
  max-height:min(70vh, 520px);
  padding:12px 14px;
  overflow-x:hidden;
  overflow-y:auto;
}
.map-digital-console .map-layers-panel label,
.map-digital-console .layer-option{
  display:grid;
  grid-template-columns:18px minmax(0,1fr);
  align-items:center;
  column-gap:10px;
  padding:7px 8px;
  font-size:13px;
  line-height:1.35;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
}
.map-digital-console .layer-group{
  display:grid;
  gap:2px;
  margin:0 0 10px;
}
.map-digital-console .layer-group__title{
  margin:6px 0 4px;
  padding:0 4px;
  color:#7dd3fc;
  font-size:10px;
  font-weight:750;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.map-digital-console .map-layers-panel__legend .layer-group__title{margin-top:10px}
.map-digital-console .map-layers-panel__legend-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:5px;
}
.map-digital-console .map-legend-item{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:12.5px;
  line-height:1.3;
  white-space:normal;
}

/* MAP-C4: legenda pod mapÄ… (rodzeĹ„stwo kontenera, nie overlay wewnÄ…trz Leaflet) */
.map-legend--below,
.map-legend--overlay,
.map-public-shell .map-legend,
.map-public-main > .map-legend,
.map-public-footer .map-legend{
  position:static !important;
  left:auto;
  right:auto;
  bottom:auto;
  z-index:auto;
  display:flex !important;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-start;
  gap:10px 18px !important;
  width:100%;
  max-width:none;
  min-height:44px;
  padding:12px 16px !important;
  margin:0 !important;
  border:1px solid rgba(83,134,188,.32) !important;
  border-top:1px solid rgba(125,211,252,.22) !important;
  border-radius:12px;
  background:rgba(4,13,24,.92);
  box-shadow:none;
  pointer-events:auto;
}
.map-legend--below .map-legend-item,
.map-legend--overlay .map-legend-item,
.map-legend--below > span,
.map-legend--overlay > span,
.map-public-main > .map-legend .map-legend-item,
.map-public-main > .map-legend > span,
.map-public-footer .map-legend-item,
.map-public-footer .map-legend > span{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:13px !important;
  line-height:1.3;
  color:#d7e7f8;
  white-space:nowrap;
}
.map-legend--below .map-legend-dot,
.map-legend--overlay .map-legend-dot,
.map-legend--below .legend-dot,
.map-legend--overlay .legend-dot,
.map-public-main > .map-legend .legend-dot,
.map-public-footer .legend-dot{
  width:11px;
  height:11px;
  flex:0 0 auto;
}
/* Vignette na wrap nie moĹĽe zasĹ‚aniaÄ‡ markerĂłw/szlakĂłw publicznej mapy */
.map-public-main .leaflet-map-wrap::after,
.map-public-main .map-stage::after{
  display:none !important;
}
.map-public-main .leaflet-container,
.map-public-main .leaflet-polish-map{
  z-index:1;
  position:relative;
}
.map-share-modal[hidden]{display:none !important}
.map-share-modal{
  position:fixed;inset:0;z-index:12000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;
}
.map-share-modal__backdrop{position:absolute;inset:0;background:rgba(2,8,16,.62)}
.map-share-modal__dialog{
  position:relative;z-index:1;
  width:min(640px,100%);
  max-height:min(88vh,900px);
  overflow:auto;
  padding:16px;
  border-radius:14px;
  border:1px solid rgba(83,134,188,.32);
  background:linear-gradient(150deg,rgba(7,24,43,.98),rgba(3,12,22,.98));
  box-shadow:0 24px 60px rgba(0,0,0,.45);
}
.map-share-modal__head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.map-share-form{display:grid;gap:10px}
.map-share-form label{display:grid;gap:4px;font-size:12px;color:#cfe2f5}
.map-share-form input[type=text],
.map-share-form select{
  height:34px;padding:0 10px;border-radius:8px;
  border:1px solid rgba(83,134,188,.35);
  background:rgba(4,13,24,.85);color:#eaf4ff;
}
.map-share-form__layers{
  display:grid;gap:4px;margin:0;padding:10px;
  border:1px solid rgba(83,134,188,.22);border-radius:10px;
}
.map-share-form__layers legend{padding:0 4px;color:#fff;font-size:12px}
.map-share-form__layers label{display:grid;grid-template-columns:16px 1fr;align-items:center;gap:8px}
.map-share-form__layers label.is-disabled{opacity:.45}
.map-share-form__actions{display:flex;gap:8px}
.map-share-created{padding:10px;border-radius:10px;border:1px solid rgba(34,197,94,.28);background:rgba(34,197,94,.08)}
.map-share-created__row{display:flex;gap:8px;margin-top:8px}
.map-share-created__row input{flex:1;min-width:0}
.map-share-list{display:grid;gap:8px;margin-top:8px}
.map-share-item{
  display:grid;gap:8px;padding:10px;border-radius:10px;
  border:1px solid rgba(83,134,188,.22);background:rgba(4,13,24,.55);
}
.map-share-item__main{display:flex;justify-content:space-between;gap:8px;align-items:center}
.map-share-item__meta{display:grid;gap:2px;font-size:11px;color:#9fb5cc}
@media (max-width:900px){
  .map-toolbar__actions{width:100%}
  .map-digital-console__stage{min-height:min(58vh,620px)}
  .map-digital-console .map-toolbox--floating .map-layers-panel,
  .map-digital-console .layer-menu.map-layers-panel{
    width:min(360px, calc(100vw - 24px));
    max-width:min(360px, calc(100vw - 24px));
    min-width:0;
  }
  .map-legend--overlay{max-width:calc(100% - 24px)}
}
@media (max-width:560px){
  .map-toolbar{padding:8px}
  .map-share-created__row{flex-direction:column}
  .map-toolbox--floating{top:10px;right:10px;left:10px}
  .map-digital-console .map-toolbox--floating .map-layers-panel,
  .map-digital-console .layer-menu.map-layers-panel{
    left:0;
    right:0;
    width:calc(100vw - 24px);
    max-width:calc(100vw - 24px);
    min-width:0;
    max-height:min(62vh, 480px);
  }
  .map-legend--overlay{
    left:10px;
    right:10px;
    max-width:none;
    gap:8px 12px !important;
    padding:10px 12px !important;
  }
  .map-legend--overlay .map-legend-item,
  .map-legend--overlay > span{white-space:normal}
}

/* === MAP-C8: public device choice + IE-104 dashboard === */
.leaflet-popup.map-popup-shell .map-popup-subtitle{
  margin:0 0 8px;
  color:#9eb2c8;
  font-size:12px;
  font-weight:650;
}
.leaflet-popup.map-popup-shell .device-choice-list{
  display:flex;
  flex-direction:column;
  gap:6px;
  max-height:min(42vh, 280px);
  overflow:auto;
  padding:2px 0 4px;
  border-bottom:0;
}
.leaflet-popup.map-popup-shell .device-choice-item{
  display:grid;
  grid-template-columns:18px minmax(0,1fr) auto 14px;
  align-items:center;
  gap:8px;
  width:100%;
  margin:0;
  padding:8px 10px;
  border:1px solid rgba(125,211,252,.18);
  border-radius:10px;
  background:rgba(8,20,36,.72);
  color:#eaf4ff;
  text-align:left;
  cursor:pointer;
}
.leaflet-popup.map-popup-shell .device-choice-item:hover,
.leaflet-popup.map-popup-shell .device-choice-item:focus-visible{
  outline:none;
  border-color:rgba(56,189,248,.55);
  background:rgba(14,165,233,.14);
  box-shadow:0 0 0 2px rgba(14,165,233,.18);
}
.leaflet-popup.map-popup-shell .device-choice-item__icon{
  width:10px;
  height:10px;
  border-radius:50%;
  background:#38bdf8;
  box-shadow:0 0 0 3px rgba(56,189,248,.18);
}
.leaflet-popup.map-popup-shell .device-choice-item__main{
  display:flex;
  flex-direction:column;
  gap:1px;
  min-width:0;
}
.leaflet-popup.map-popup-shell .device-choice-item__main strong{
  margin:0 !important;
  font-size:13px;
  overflow-wrap:anywhere;
}
.leaflet-popup.map-popup-shell .device-choice-item__main small,
.leaflet-popup.map-popup-shell .device-choice-item__main em{
  color:#8ea7bf;
  font-size:11px;
  font-style:normal;
  overflow-wrap:anywhere;
}
.leaflet-popup.map-popup-shell .device-choice-item__chevron{
  color:#7dd3fc;
  font-size:18px;
  line-height:1;
}
.leaflet-popup.map-popup-shell .map-popup-loading,
.leaflet-popup.map-popup-shell .empty-state{
  display:block;
  padding:10px 4px;
  color:#9eb2c8;
  text-align:center;
  border-bottom:0;
}

.map-public-dashboard-modal{
  position:fixed;
  inset:0;
  z-index:12000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:5vh 5vw;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease;
}
.map-public-dashboard-modal.is-open{
  opacity:1;
  pointer-events:auto;
}
.map-public-dashboard-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(2,8,18,.78);
  backdrop-filter:blur(2px);
}
.map-public-dashboard-modal__dialog,
.map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  min-height:0;
  width:min(90vw, 1800px);
  height:90dvh;
  max-width:none;
  max-height:90dvh;
  border:1px solid rgba(125,211,252,.28);
  border-radius:16px;
  background:linear-gradient(160deg, rgba(8,20,36,.98), rgba(4,12,22,.97));
  box-shadow:0 28px 80px rgba(0,0,0,.55);
  overflow:hidden;
}
@supports not (height: 90dvh){
  .map-public-dashboard-modal__dialog,
  .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal{
    height:90vh;
    max-height:90vh;
  }
}
.map-public-dashboard-modal__head,
.srk-dashboard-modal__header{
  display:flex;
  align-items:flex-start;
  gap:12px;
  flex:0 0 auto;
  padding:10px 14px;
  border-bottom:1px solid rgba(125,211,252,.16);
}
.map-public-dashboard-modal__titles{
  flex:1 1 auto;
  min-width:0;
}
.map-public-dashboard-modal__titles h2{
  margin:0;
  font-size:16px;
  color:#fff;
  overflow-wrap:anywhere;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.map-public-dashboard-modal__titles p{
  margin:3px 0 0;
  color:#9eb2c8;
  font-size:12px;
  overflow-wrap:anywhere;
}
.map-public-dashboard-modal__body,
.srk-dashboard-modal__content{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:12px 16px 16px;
  display:flex;
  flex-direction:column;
}
body.map-public-dashboard-open{
  overflow:hidden;
}
body.map-public-dashboard-open .leaflet-container{
  pointer-events:none;
}

.ie104-device-dashboard .ie104-dash-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:10px;
  margin:12px 0 14px;
}
.ie104-dash-cell{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-height:74px;
  padding:12px;
  border-radius:12px;
  border:1px solid rgba(125,211,252,.16);
  background:rgba(7,18,32,.78);
}
.ie104-dash-cell span{
  color:#8ea7bf;
  font-size:11px;
  font-weight:650;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.ie104-dash-cell b{
  color:#eaf4ff;
  font-size:15px;
  line-height:1.25;
  overflow-wrap:anywhere;
}
.ie104-dash-cell--ok{
  border-color:rgba(34,197,94,.42);
  box-shadow:inset 0 0 0 1px rgba(34,197,94,.08);
}
.ie104-dash-cell--ok b{ color:#86efac; }
.ie104-dash-cell--warn{
  border-color:rgba(245,158,11,.45);
  animation:ie104DashWarnPulse 2.4s ease-in-out infinite;
}
.ie104-dash-cell--warn b{ color:#fde68a; }
.ie104-dash-cell--fail{
  border-color:rgba(239,68,68,.48);
  animation:ie104DashAlarmPulse 2.1s ease-in-out infinite;
}
.ie104-dash-cell--fail b{ color:#fecaca; }
.ie104-dash-cell--off{
  border-color:rgba(148,163,184,.28);
  opacity:.86;
}
.ie104-dash-cell--off b{ color:#cbd5e1; }
.ie104-dash-meta{
  margin-top:12px;
}
@keyframes ie104DashWarnPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(245,158,11,.0); }
  50%{ box-shadow:0 0 18px rgba(245,158,11,.22); }
}
@keyframes ie104DashAlarmPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(239,68,68,.0); }
  50%{ box-shadow:0 0 16px rgba(239,68,68,.24); }
}
@media (prefers-reduced-motion: reduce){
  .ie104-dash-cell--warn,
  .ie104-dash-cell--fail{ animation:none !important; }
}
@media (max-width: 900px){
  .ie104-device-dashboard .ie104-dash-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
  .map-public-dashboard-modal.modal--srk-dashboard{
    padding:12px;
  }
  .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal,
  .map-public-dashboard-modal.modal--srk-dashboard .map-public-dashboard-modal__dialog{
    width:calc(100vw - 24px);
    height:calc(100dvh - 24px);
    max-width:none;
    max-height:calc(100dvh - 24px);
  }
}
@media (max-width: 560px){
  .ie104-device-dashboard .ie104-dash-grid{
    grid-template-columns:1fr;
  }
  .map-public-dashboard-modal.modal--srk-dashboard{
    padding:0;
    align-items:stretch;
  }
  .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal,
  .map-public-dashboard-modal.modal--srk-dashboard .map-public-dashboard-modal__dialog{
    width:100vw;
    height:100dvh;
    max-width:100vw;
    max-height:100dvh;
    border-radius:0;
  }
  .map-public-dashboard-modal__head{
    flex-wrap:wrap;
  }
}
@media (max-width: 1366px) and (min-width: 901px){
  .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal,
  .map-public-dashboard-modal.modal--srk-dashboard .map-public-dashboard-modal__dialog{
    width:min(94vw, 1800px);
    height:92dvh;
    max-height:92dvh;
  }
  @supports not (height: 92dvh){
    .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard-modal,
    .map-public-dashboard-modal.modal--srk-dashboard .map-public-dashboard-modal__dialog{
      height:92vh;
      max-height:92vh;
    }
  }
}

/* MAP-C8.4 — Ie-104 graphical SRK dashboard */
.map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard{
  margin:0;
  flex:1 1 auto;
  min-height:0;
  height:100%;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:10px 12px 8px;
  overflow:hidden;
  background:transparent;
  border:0;
  box-shadow:none;
}
.srk-dashboard__header{
  flex:0 0 auto;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.srk-dashboard__header .section-kicker{
  margin:0;
}
.srk-dashboard__route{
  margin:4px 0 0;
  color:#9eb2c8;
  font-size:13px;
}
.srk-dashboard__route strong{
  color:#e8f3ff;
  font-weight:700;
}
.srk-dashboard__header-meta{
  color:#7f93ab;
  font-size:12px;
  white-space:nowrap;
}
.srk-data-freshness{
  flex:0 0 auto;
  padding:8px 12px;
  border-radius:10px;
  font-size:13px;
  font-weight:650;
}
.srk-data-freshness--stale{
  border:1px solid rgba(245,158,11,.45);
  background:rgba(120,70,10,.22);
  color:#fde68a;
}
.srk-data-freshness--unknown{
  border:1px solid rgba(255,255,255,.55);
  background:rgba(255,255,255,.08);
  color:#fff;
  letter-spacing:.04em;
}
.srk-alert{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:7px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  letter-spacing:.06em;
  width:fit-content;
}
.srk-alert i{
  width:8px;
  height:8px;
  border-radius:50%;
  background:currentColor;
}
.srk-alert--error{
  color:#fecaca;
  border:1px solid rgba(239,68,68,.5);
  background:rgba(127,29,29,.28);
  animation:srkErrorPulse 2.4s ease-in-out infinite;
}
.srk-alert--reset{
  color:#99f6e4;
  border:1px solid rgba(45,212,191,.4);
  background:rgba(13,80,70,.28);
}
.srk-mimic{
  --srk-grid: rgba(56, 120, 180, .07);
  --srk-panel-border: rgba(148, 163, 184, .28);
  --srk-glow: rgba(14, 165, 233, .08);
  position:relative;
  flex:1 1 auto;
  min-height:0;
  display:grid;
  grid-template-columns:minmax(168px, .78fr) minmax(0, 1.7fr) minmax(168px, .78fr);
  gap:clamp(12px, 1.6vw, 22px);
  align-items:stretch;
  padding:clamp(14px, 1.8vw, 22px) clamp(14px, 1.8vw, 24px);
  border-radius:16px;
  border:1px solid rgba(125,211,252,.18);
  overflow:hidden;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(14,165,233,.07), transparent 55%),
    linear-gradient(180deg, rgba(4,14,28,.35), rgba(2,6,14,.55)),
    linear-gradient(var(--srk-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--srk-grid) 1px, transparent 1px),
    #020914;
  background-size:auto, auto, 28px 28px, 28px 28px, auto;
  box-shadow:inset 0 0 80px rgba(0,0,0,.45);
}
.srk-mimic::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  border-radius:inherit;
  background:radial-gradient(ellipse at center, transparent 48%, rgba(0,0,0,.42) 100%);
}
.srk-station-head{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:stretch;
  text-align:center;
  gap:0;
  min-width:0;
  min-height:0;
  height:100%;
  padding:clamp(14px, 1.5vw, 20px) clamp(12px, 1.2vw, 16px) 12px;
  border-radius:14px;
  border:1px solid var(--srk-panel-border);
  background:
    linear-gradient(180deg, rgba(18,32,52,.92), rgba(8,16,30,.94));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.04),
    0 8px 28px rgba(0,0,0,.28);
  backdrop-filter:blur(6px);
  align-self:stretch;
}
.srk-station-head--a,
.srk-station-head--b{
  text-align:center;
}
.srk-station-head__top{
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  text-align:center;
  min-height:0;
}
.srk-station-head__name{
  color:#f1f7ff;
  font-size:clamp(16px, 1.55vw, 24px);
  font-weight:800;
  line-height:1.18;
  overflow-wrap:anywhere;
  text-align:center;
  letter-spacing:.01em;
}
.srk-station-head__cas{
  color:#8ea7bf;
  font-size:clamp(10px, .85vw, 12px);
  letter-spacing:.07em;
  text-transform:uppercase;
  text-align:center;
  margin-top:-2px;
}
.srk-station-head__stop{
  margin-top:2px;
  padding:5px 10px;
  border-radius:8px;
  background:rgba(185,28,28,.28);
  border:1px solid rgba(248,113,113,.5);
  color:#fecaca;
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-align:center;
}
.srk-signal{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  text-align:center;
  margin-top:4px;
}
.srk-signal__lamp{
  width:clamp(20px, 1.8vw, 28px);
  height:clamp(20px, 1.8vw, 28px);
  border-radius:50%;
  border:2px solid rgba(255,255,255,.35);
  background:#64748b;
  flex:0 0 auto;
  box-shadow:inset 0 0 0 2px rgba(0,0,0,.35);
}
.srk-signal__meta{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  min-width:0;
  text-align:center;
}
.srk-signal__meta b{
  color:#94a3b8;
  font-size:10px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.srk-signal__meta em{
  font-style:normal;
  color:#e2e8f0;
  font-size:clamp(12px, 1.05vw, 14px);
  font-weight:800;
}
.srk-signal--proceed .srk-signal__lamp{
  background:#22c55e;
  border-color:#86efac;
  box-shadow:0 0 14px rgba(34,197,94,.4);
}
.srk-signal--proceed .srk-signal__meta em{ color:#86efac; }
.srk-signal--stop .srk-signal__lamp{
  background:#ef4444;
  border-color:#fecaca;
  box-shadow:0 0 14px rgba(239,68,68,.4);
}
.srk-signal--stop .srk-signal__meta em{ color:#fecaca; }
.srk-signal--unknown .srk-signal__lamp{
  background:#fff;
  border-color:#fff;
  box-shadow:0 0 10px rgba(255,255,255,.18);
}
.srk-signal--unknown .srk-signal__meta em{ color:#fff; }
.srk-signal--service .srk-signal__lamp,
.srk-signal--violet .srk-signal__lamp{
  background:#a855f7;
  border-color:#d8b4fe;
  box-shadow:0 0 12px rgba(168,85,247,.35);
}

.srk-panel-arrows{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:clamp(28px, 3vw, 44px);
  width:100%;
  margin-top:auto;
  padding-top:14px;
  border-top:1px dashed rgba(148,163,184,.28);
}
.srk-panel-arrow{
  display:block;
  width:0;
  height:0;
  border-style:solid;
  flex:0 0 auto;
  opacity:.32;
  filter:none;
  transition:opacity .25s ease, filter .25s ease;
}
.srk-panel-arrow--left{
  border-width:14px 22px 14px 0;
  border-color:transparent #64748b transparent transparent;
}
.srk-panel-arrow--right{
  border-width:14px 0 14px 22px;
  border-color:transparent transparent transparent #64748b;
}
.srk-panel-arrow.is-idle{
  opacity:.28;
}
.srk-panel-arrow.is-active{
  opacity:1;
  animation:srkArrowPulse 2.2s ease-in-out infinite;
}
.srk-panel-arrows--direction-1 .srk-panel-arrow--right.is-active,
.srk-panel-arrows--direction-2 .srk-panel-arrow--left.is-active{
  filter:drop-shadow(0 0 8px rgba(234,179,8,.55));
}
.srk-panel-arrows--direction-1 .srk-panel-arrow--right.is-active{
  border-left-color:#facc15;
}
.srk-panel-arrows--direction-2 .srk-panel-arrow--left.is-active{
  border-right-color:#facc15;
}
.srk-panel-arrows--occupied-dir .srk-panel-arrow.is-active{
  filter:drop-shadow(0 0 8px rgba(239,68,68,.5));
  animation:srkArrowPulse 2.2s ease-in-out infinite;
}
.srk-panel-arrows--occupied-dir .srk-panel-arrow--right.is-active{
  border-left-color:#ef4444;
}
.srk-panel-arrows--occupied-dir .srk-panel-arrow--left.is-active{
  border-right-color:#ef4444;
}
.srk-panel-arrows--unknown .srk-panel-arrow--left,
.srk-panel-arrows--error .srk-panel-arrow--left{
  border-right-color:#cbd5e1;
}
.srk-panel-arrows--unknown .srk-panel-arrow--right,
.srk-panel-arrows--error .srk-panel-arrow--right{
  border-left-color:#cbd5e1;
}
.srk-panel-arrows--stop .srk-panel-arrow{
  opacity:.35;
}

.srk-block-line{
  position:relative;
  z-index:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:14px;
  padding:clamp(6px, 1vw, 12px) 2px;
}
.srk-block-line__caption{
  display:flex;
  justify-content:center;
  gap:8px;
  flex-wrap:wrap;
  color:#8ea7bf;
  font-size:12px;
}
.srk-block-line__sep{ opacity:.5; }
.srk-sbl-state{
  align-self:center;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:7px 14px;
  border-radius:999px;
  border:1px solid rgba(148,163,184,.28);
  background:rgba(8,16,30,.62);
  color:#cbd5e1;
  font-size:11px;
  font-weight:800;
  letter-spacing:.07em;
  backdrop-filter:blur(10px);
  box-shadow:0 4px 18px rgba(0,0,0,.22);
}
.srk-sbl-state span{
  color:#94a3b8;
}
.srk-sbl-state--neutral{ color:#94a3b8; }
.srk-sbl-state--direction{
  color:#facc15;
  border-color:rgba(250,204,21,.45);
}
.srk-sbl-state--occupied-dir{
  color:#fecaca;
  border-color:rgba(239,68,68,.5);
}
.srk-sbl-state--stop{
  color:#fecaca;
  border-color:rgba(239,68,68,.55);
}
.srk-sbl-state--error{
  color:#fff;
  border-color:rgba(255,255,255,.55);
  animation:srkErrorPulse 2.4s ease-in-out infinite;
}
.srk-sbl-state--reset{
  color:#99f6e4;
  border-color:rgba(45,212,191,.4);
}
.srk-sbl-state--unknown{
  color:#fff;
  border-color:rgba(255,255,255,.6);
}

.srk-track-section{
  position:relative;
  display:grid;
  gap:12px;
  padding:16px 8px 10px;
}
.srk-track-section__label{
  justify-self:center;
  padding:5px 12px;
  border-radius:999px;
  background:rgba(12,20,34,.55);
  border:1px solid rgba(248,113,113,.45);
  color:#fecaca;
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
  backdrop-filter:blur(8px);
  box-shadow:0 2px 12px rgba(0,0,0,.2);
}
.srk-track-section__label--free{
  border-color:rgba(74,222,128,.35);
  color:#86efac;
}
.srk-track-section__label--unknown{
  border-color:rgba(255,255,255,.55);
  color:#fff;
}
.srk-track{
  position:relative;
  height:clamp(36px, 4vw, 48px);
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:12px;
  filter:drop-shadow(0 0 6px rgba(125,211,252,.12));
}
.srk-track__rail{
  display:block;
  height:2.5px;
  border-radius:2px;
  background:#94a3b8;
  box-shadow:0 0 6px rgba(148,163,184,.25);
}
.srk-track__ties{
  position:absolute;
  inset:0 3%;
  background:repeating-linear-gradient(
    90deg,
    transparent 0 14px,
    rgba(100,116,139,.42) 14px 16px
  );
  opacity:.7;
  pointer-events:none;
}
.srk-track__state{
  position:absolute;
  inset:8px 0;
  border-radius:6px;
  pointer-events:none;
}
.srk-track-section--base .srk-track__rail{ background:#64748b; }
.srk-track-section--free .srk-track__rail{
  background:#94a3b8;
  box-shadow:0 0 8px rgba(148,163,184,.28);
}
.srk-track-section--occupied .srk-track__rail{
  background:#ef4444;
  box-shadow:0 0 10px rgba(239,68,68,.42);
}
.srk-track-section--occupied .srk-track__state{
  background:rgba(239,68,68,.16);
}
.srk-track-section--unknown .srk-track__rail{
  background:#fff;
  box-shadow:0 0 8px rgba(255,255,255,.2);
}
.srk-track-section--unknown .srk-track__ties{
  background:repeating-linear-gradient(90deg, transparent 0 14px, rgba(255,255,255,.32) 14px 16px);
}

.srk-block-direction{
  display:flex;
  justify-content:center;
  align-items:center;
  min-height:28px;
  margin-top:2px;
}
.srk-direction{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:22px;
  min-width:0;
  height:18px;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  box-shadow:none;
}
.srk-direction__chevron{
  display:block;
  width:0;
  height:0;
  border-style:solid;
  flex:0 0 auto;
  opacity:.3;
}
.srk-direction__chevron--right{
  border-width:7px 0 7px 12px;
  border-color:transparent transparent transparent #64748b;
}
.srk-direction__chevron--left{
  border-width:7px 12px 7px 0;
  border-color:transparent #64748b transparent transparent;
}
.srk-direction__chevron.is-active{
  opacity:1;
}
.srk-direction__chevron.is-idle{
  opacity:.28;
}
.srk-block-line--direction-1 .srk-direction__chevron--right.is-active{
  border-left-color:#eab308;
  filter:drop-shadow(0 0 5px rgba(234,179,8,.45));
}
.srk-block-line--direction-2 .srk-direction__chevron--left.is-active{
  border-right-color:#eab308;
  filter:drop-shadow(0 0 5px rgba(234,179,8,.45));
}
.srk-block-line--occupied-dir .srk-direction__chevron--right.is-active{
  border-left-color:#ef4444;
}
.srk-block-line--occupied-dir .srk-direction__chevron--left.is-active{
  border-right-color:#ef4444;
}
.srk-block-line--unknown .srk-direction__chevron--left,
.srk-block-line--error .srk-direction__chevron--left{
  border-right-color:#fff;
  opacity:.55;
}
.srk-block-line--unknown .srk-direction__chevron--right,
.srk-block-line--error .srk-direction__chevron--right{
  border-left-color:#fff;
  opacity:.55;
}
.srk-block-line--error .srk-direction__chevron{
  animation:srkErrorPulse 2.4s ease-in-out infinite;
}
.srk-direction--flow .srk-direction__chevron.is-active{
  animation:srkArrowPulse 2.2s ease-in-out infinite;
}

.srk-technical-strip{
  flex:0 0 auto;
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:10px 8px;
  padding:12px 4px 2px;
  border-top:1px solid rgba(125,211,252,.16);
  justify-content:space-between;
}
.srk-technical-strip__item,
.srk-technical-strip > div{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:4px;
  min-width:0;
  flex:1 1 120px;
  padding:0 6px;
}
.srk-technical-strip em{
  font-style:normal;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#7f93ab;
}
.srk-technical-strip b{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-size:13px;
  color:#e8f0f8;
  font-weight:650;
}
.srk-tech-dot{
  width:8px;
  height:8px;
  border-radius:50%;
  background:#64748b;
  flex:0 0 auto;
  box-shadow:0 0 6px currentColor;
}
.srk-technical-strip__item--ok .srk-tech-dot{
  background:#22c55e;
  color:#22c55e;
}
.srk-technical-strip__item--warn .srk-tech-dot{
  background:#f59e0b;
  color:#f59e0b;
}
.srk-technical-strip__item--alarm .srk-tech-dot{
  background:#ef4444;
  color:#ef4444;
}
.srk-technical-strip__item--muted .srk-tech-dot{
  background:#64748b;
  color:#64748b;
}
.srk-tech-clock{
  width:11px;
  height:11px;
  border:1.5px solid #7f93ab;
  border-radius:50%;
  position:relative;
  flex:0 0 auto;
}
.srk-tech-clock::before{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:1.5px;
  height:3.5px;
  background:#7f93ab;
  transform:translate(-50%, -90%);
  border-radius:1px;
}
.srk-tech-clock::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:3.5px;
  height:1.5px;
  background:#7f93ab;
  transform:translate(0, -50%);
  border-radius:1px;
}
.srk-dashboard--freshness-stale .srk-mimic .srk-block-line,
.srk-dashboard--freshness-stale .srk-mimic .srk-signal__lamp{
  filter:saturate(.72) brightness(.92);
}
.srk-dashboard--freshness-stale .srk-station-head__name,
.srk-dashboard--freshness-stale .srk-technical-strip,
.srk-dashboard--freshness-stale .srk-dashboard__header{
  filter:none;
  opacity:1;
}

@keyframes srkChevronFlow{
  0%,100%{ opacity:.28; transform:translateX(0); }
  50%{ opacity:1; transform:translateX(0); }
}
@keyframes srkDirectionFlow{
  0%{ background-position:0% 0; }
  100%{ background-position:200% 0; }
}
@keyframes srkArrowPulse{
  0%,100%{ opacity:.82; filter:drop-shadow(0 0 4px rgba(250,204,21,.35)); }
  50%{ opacity:1; filter:drop-shadow(0 0 10px rgba(250,204,21,.65)); }
}
@keyframes srkErrorPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(239,68,68,0); opacity:1; }
  50%{ box-shadow:0 0 12px rgba(239,68,68,.3); opacity:.9; }
}
@media (prefers-reduced-motion: reduce){
  .srk-direction--flow .srk-direction__chevron,
  .srk-panel-arrow.is-active,
  .srk-alert--error,
  .srk-sbl-state--error,
  .srk-block-line--error .srk-direction__chevron{
    animation:none !important;
    opacity:1 !important;
  }
}
@media (max-width: 1440px){
  .srk-mimic{
    grid-template-columns:minmax(150px, .82fr) minmax(0, 1.55fr) minmax(150px, .82fr);
  }
}
@media (max-width: 1366px){
  .srk-station-head__name{ font-size:clamp(15px, 1.4vw, 20px); }
  .srk-panel-arrow--left{ border-width:12px 18px 12px 0; }
  .srk-panel-arrow--right{ border-width:12px 0 12px 18px; }
}
@media (max-width: 900px){
  .map-public-dashboard-modal.modal--srk-dashboard .srk-dashboard{
    overflow:auto;
  }
  .srk-mimic{
    grid-template-columns:1fr;
    height:auto;
    gap:14px;
  }
  .srk-station-head,
  .srk-station-head--a,
  .srk-station-head--b{
    text-align:center;
    width:100%;
    height:auto;
  }
  .srk-technical-strip__item,
  .srk-technical-strip > div{
    min-width:calc(50% - 12px);
    flex:1 1 calc(50% - 12px);
  }
}
@media (max-width: 560px){
  .srk-technical-strip__item,
  .srk-technical-strip > div{ min-width:100%; flex-basis:100%; }
  .srk-dashboard__header{ flex-wrap:wrap; }
}

/* ===== SETTINGS-B2.2 — visual layer (unique composition only; shell untouched) ===== */
body[data-page="config"]{
  --settings-panel:#111A2B;
  --settings-panel-soft:#0F172A;
  --settings-border:#1F2A44;
  --settings-accent-purple:#8B5CF6;
}
body[data-page="config"] .settings-main{min-width:0;}
body[data-page="config"] .settings-page-host{display:grid;gap:16px;min-width:0;width:100%;}
body[data-page="config"] .settings-page-host .is-hidden,
body[data-page="config"] .settings-page-host [hidden]{display:none!important;}
body[data-page="config"] .settings-notice{border:1px solid rgba(63,147,235,.28);border-radius:12px;background:rgba(7,20,35,.45);padding:12px 14px;color:var(--text-secondary);}
body[data-page="config"] .settings-notice--error{border-color:rgba(255,75,71,.35);color:var(--text-primary);}

body[data-page="config"] .settings-layout{
  display:grid;grid-template-columns:minmax(300px,320px) minmax(0,1fr);gap:20px;align-items:start;min-width:0;width:100%;
  grid-template-areas:"nav panel";
}
body[data-page="config"] .settings-mobile-section-picker{
  display:none;grid-area:picker;gap:8px;min-width:0;width:100%;
  padding:12px 14px;border:1px solid var(--settings-border);border-radius:12px;
  background:var(--settings-panel-soft);box-sizing:border-box;
}
body[data-page="config"] .settings-mobile-section-picker__label{
  margin:0;font-size:12.5px;font-weight:650;color:var(--text-secondary);
}
body[data-page="config"] .settings-mobile-section-picker__select{
  width:100%;min-height:42px;border-radius:10px;
}
body[data-page="config"] .settings-mobile-section-picker__select:focus{
  border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,130,246,.16);outline:none;
}
body[data-page="config"] .settings-sections-pane{
  grid-area:nav;min-width:0;border:1px solid var(--settings-border);border-radius:12px;
  background:var(--settings-panel-soft);padding:14px;display:grid;gap:12px;
}
body[data-page="config"] .settings-sections-pane__head{padding:2px 4px 4px;}
body[data-page="config"] .settings-sections-pane__title{
  margin:0;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);
}
body[data-page="config"] .settings-section-nav{display:grid;gap:10px;min-width:0;}
body[data-page="config"] .settings-section-nav__item{
  display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;text-align:left;
  border:1px solid var(--settings-border);border-radius:12px;background:rgba(17,26,43,.72);
  color:var(--text-secondary);padding:12px 14px;cursor:pointer;min-height:76px;
}
body[data-page="config"] .settings-section-nav__item:hover{
  border-color:rgba(59,130,246,.36);color:var(--text-primary);background:rgba(17,26,43,.92);
}
body[data-page="config"] .settings-section-nav__item.is-active{
  border-color:rgba(59,130,246,.55);background:rgba(59,130,246,.10);color:var(--text-primary);
}
body[data-page="config"] .settings-section-nav__item:focus-visible{outline:2px solid rgba(126,200,255,.65);outline-offset:2px;}
body[data-page="config"] .settings-section-nav__icon{
  width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;
  border:1px solid rgba(59,130,246,.28);background:rgba(59,130,246,.10);color:var(--blue-bright);
}
body[data-page="config"] .settings-section-nav__icon .event-svg{
  width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;
}
body[data-page="config"] .settings-section-nav__icon--email{color:#60A5FA;border-color:rgba(59,130,246,.40);background:rgba(59,130,246,.14);}
body[data-page="config"] .settings-section-nav__icon--notifications{color:var(--cyan);border-color:rgba(6,182,212,.40);background:rgba(6,182,212,.12);}
body[data-page="config"] .settings-section-nav__icon--work-orders{color:var(--settings-accent-purple);border-color:rgba(139,92,246,.40);background:rgba(139,92,246,.12);}
body[data-page="config"] .settings-section-nav__icon--smsapi{color:#38BDF8;border-color:rgba(56,189,248,.40);background:rgba(56,189,248,.12);}
body[data-page="config"] .settings-section-nav__icon--udp{color:#22D3EE;border-color:rgba(34,211,238,.40);background:rgba(6,182,212,.12);}
body[data-page="config"] .settings-section-nav__icon--alarms{color:#F59E0B;border-color:rgba(245,158,11,.40);background:rgba(245,158,11,.12);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--email{border-color:rgba(59,130,246,.55);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--notifications{border-color:rgba(6,182,212,.50);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--work-orders{border-color:rgba(139,92,246,.50);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--smsapi{border-color:rgba(56,189,248,.50);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--udp{border-color:rgba(34,211,238,.50);}
body[data-page="config"] .settings-section-nav__item.is-active.settings-section-nav__item--alarms{border-color:rgba(245,158,11,.50);}
body[data-page="config"] .ad-host{display:grid;gap:22px;}
body[data-page="config"] .ad-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;}
body[data-page="config"] .ad-counts{display:flex;flex-wrap:wrap;gap:8px;}
body[data-page="config"] .ad-toolbar__actions{display:flex;flex-wrap:wrap;gap:8px;}
body[data-page="config"] .ad-section{display:grid;gap:10px;}
body[data-page="config"] .ad-section__head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:10px;}
body[data-page="config"] .ad-section__head h3{margin:0;font-size:15px;}
body[data-page="config"] .ad-filters .input{min-width:min(280px,100%);}
body[data-page="config"] .ad-table td.ad-actions{white-space:nowrap;}
body[data-page="config"] .ad-row--new td:first-child{box-shadow:inset 3px 0 0 var(--yellow);}
body[data-page="config"] .ad-fieldset{border:1px solid rgba(63,147,235,.18);border-radius:12px;padding:12px;display:grid;gap:8px;}
body[data-page="config"] .ad-fieldset legend{padding:0 6px;font-size:12px;font-weight:650;color:var(--text-secondary);}
body[data-page="config"] .ad-editor-errors,.ad-field-errors{color:var(--red);font-size:12.5px;margin-top:10px;}
body[data-page="config"] .ad-field-errors{padding-left:18px;}
body[data-page="config"] .settings-section-nav__text{display:grid;gap:4px;min-width:0;}
body[data-page="config"] .settings-section-nav__text strong{font-size:14px;font-weight:700;color:inherit;}
body[data-page="config"] .settings-section-nav__desc{
  font-size:12px;color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

body[data-page="config"] .settings-status-badge{
  display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:0 10px;
  border-radius:999px;font-size:11px;font-weight:650;letter-spacing:.02em;white-space:nowrap;
  border:1px solid transparent;
}
body[data-page="config"] .settings-status-badge--ok{color:var(--green);background:var(--green-bg);border-color:var(--green-border);}
body[data-page="config"] .settings-status-badge--partial{color:var(--yellow);background:var(--yellow-bg);border-color:var(--yellow-border);}
body[data-page="config"] .settings-status-badge--empty,
body[data-page="config"] .settings-status-badge--neutral{color:var(--text-secondary);background:rgba(154,164,178,.08);border-color:rgba(154,164,178,.22);}
body[data-page="config"] .settings-section-nav__badge{justify-self:end;}

body[data-page="config"] .settings-section-panel{
  grid-area:panel;width:100%;min-width:0;border:0;border-radius:0;
  background:transparent;padding:4px 2px 8px;display:grid;gap:0;justify-items:stretch;
}
body[data-page="config"] .settings-section-body{display:grid;gap:0;min-width:0;justify-items:stretch;width:100%;}
body[data-page="config"] .settings-work-surface{
  width:100%;max-width:none;min-width:0;justify-self:stretch;
  border:1px solid var(--settings-border);border-radius:12px;
  background:rgba(17,26,43,.58);padding:22px 24px;
  display:grid;gap:20px;box-sizing:border-box;
}
body[data-page="config"] .settings-section-header{margin:0;display:grid;gap:8px;max-width:100%;width:100%;}
body[data-page="config"] .settings-section-header__topline{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;min-width:0;width:100%;
}
body[data-page="config"] .settings-section-title{margin:0;flex:1 1 auto;min-width:0;font-size:21px;font-weight:700;color:var(--text-primary);line-height:1.25;}
body[data-page="config"] .settings-section-desc{
  margin:0;color:var(--text-secondary);font-size:13.5px;line-height:1.5;
  max-width:720px;max-inline-size:720px;
}
body[data-page="config"] .settings-section-header__badge{flex:0 0 auto;margin:0;}
body[data-page="config"] .settings-section-header__rule{
  height:1px;width:100%;background:rgba(154,164,178,.22);margin-top:6px;
}
body[data-page="config"] .settings-section-message{border:1px solid rgba(63,147,235,.22);border-radius:10px;padding:10px 12px;color:var(--text-secondary);}
body[data-page="config"] .settings-section-message--error{border-color:rgba(255,75,71,.35);color:var(--text-primary);}
body[data-page="config"] .settings-section-content{display:grid;gap:4px;min-width:0;}
body[data-page="config"] .settings-section-footer{
  width:100%;margin-top:24px;padding-top:18px;border-top:1px solid var(--settings-border);
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
}
body[data-page="config"] .settings-section-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;}
body[data-page="config"] .settings-section-actions .btn{min-height:40px;text-transform:none;}
body[data-page="config"] .settings-section-footer__meta{color:var(--text-secondary);font-size:13px;margin-left:auto;}

body[data-page="config"] .settings-field-group{
  display:grid;gap:14px;width:100%;min-width:0;padding:6px 0 18px;margin:0;
  border:0;border-radius:0;background:transparent;border-bottom:1px solid rgba(154,164,178,.16);
}
body[data-page="config"] .settings-form-root > .settings-field-group:last-child,
body[data-page="config"] .settings-work-surface > .settings-field-group:last-of-type,
body[data-page="config"] .settings-work-surface > .settings-field-group:has(+ .settings-section-footer){
  border-bottom:0;margin-bottom:0;padding-bottom:4px;
}
body[data-page="config"] .settings-field-group__head{display:grid;gap:6px;min-width:0;}
body[data-page="config"] .settings-field-group__title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0;}
body[data-page="config"] .settings-field-group__icon{
  width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;
  border:1px solid rgba(59,130,246,.28);background:rgba(59,130,246,.10);color:var(--blue-bright);
}
body[data-page="config"] .settings-field-group__icon-svg{width:15px;height:15px;}
body[data-page="config"] .settings-field-group__title{
  margin:0;font-size:16px;font-weight:650;letter-spacing:0;text-transform:none;color:var(--text-primary);
}
body[data-page="config"] .settings-field-group__desc{
  margin:0;font-size:12.5px;line-height:1.45;color:var(--text-secondary);
  max-width:720px;max-inline-size:720px;
}
body[data-page="config"] .settings-field-group__rule{
  height:1px;width:100%;max-width:100%;background:rgba(154,164,178,.18);margin-top:4px;
}
body[data-page="config"] .settings-field-group__secret-badge{margin-left:2px;}
body[data-page="config"] .settings-form-root{display:grid;gap:0;min-width:0;}
body[data-page="config"] .settings-form-subblock{display:grid;gap:10px;min-width:0;padding:4px 0 8px;}
body[data-page="config"] .settings-form-subblock + .settings-form-subblock{
  margin-top:6px;padding-top:14px;border-top:1px solid rgba(154,164,178,.12);
}
body[data-page="config"] .settings-form-subblock__title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
body[data-page="config"] .settings-form-subblock__title{
  margin:0;font-size:13px;font-weight:650;color:var(--text-secondary);letter-spacing:.02em;
}
body[data-page="config"] .settings-form-fields{
  margin:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px 16px;align-items:start;min-width:0;
}
body[data-page="config"] .settings-form-fields .property-item,
body[data-page="config"] .settings-form-fields .settings-field{
  min-height:0;min-width:0;padding:0;border:0;background:transparent;border-radius:0;
  display:block;justify-content:initial;align-self:start;
}
body[data-page="config"] .settings-form-fields .form-group{gap:7px;}
body[data-page="config"] .settings-form-fields .form-label{font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--text-secondary);font-weight:600;}
body[data-page="config"] .settings-form-fields .input{
  min-height:40px;border-radius:10px;background:var(--bg-input);border-color:var(--settings-border);width:100%;font-size:13.5px;
}
body[data-page="config"] .settings-form-fields .input:focus{
  border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,130,246,.16);
}
body[data-page="config"] .settings-field--content{grid-column:span 3;max-width:220px;}
body[data-page="config"] .settings-field--compact{grid-column:span 2;max-width:140px;}
body[data-page="config"] .settings-field--medium{grid-column:span 4;max-width:360px;}
body[data-page="config"] .settings-field--wide{grid-column:span 6;max-width:560px;}
body[data-page="config"] .settings-field--full{grid-column:1 / -1;max-width:none;}
body[data-page="config"] .settings-field--compact-input{max-width:140px;}
body[data-page="config"] .property-item--switch.settings-field--content{max-width:220px;}
body[data-page="config"] .property-item--switch.settings-field--medium{max-width:280px;}
body[data-page="config"] .property-item--secret,
body[data-page="config"] .settings-field--wide.property-item--secret{
  padding:0;border:0;border-radius:0;background:transparent;max-width:560px;grid-column:span 6;
}
body[data-page="config"] .settings-form-fields--general .settings-field--wide{grid-column:span 7;max-width:640px;}
body[data-page="config"] .settings-form-fields--sender .settings-field--medium{grid-column:span 3;max-width:280px;}
body[data-page="config"] .settings-form-fields--sender .settings-field--wide{grid-column:span 4;max-width:360px;}
body[data-page="config"] .settings-form-fields--server .settings-field--content{grid-column:span 3;max-width:220px;}
body[data-page="config"] .settings-form-fields--server .settings-field--wide{grid-column:span 5;max-width:420px;}
body[data-page="config"] .settings-form-fields--server .settings-field--compact{grid-column:span 2;max-width:140px;}
body[data-page="config"] .settings-form-fields--pin{max-width:420px;}
body[data-page="config"] .settings-form-fields--pin .settings-field--compact{grid-column:span 6;max-width:180px;}
body[data-page="config"] .settings-form-fields--retention{max-width:920px;}
body[data-page="config"] .settings-form-fields--retention .settings-field--compact{grid-column:span 3;max-width:160px;}
body[data-page="config"] .settings-form-fields--retention .settings-field--medium{grid-column:span 5;max-width:320px;}
body[data-page="config"] .settings-form-fields--switch-cards{
  grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;
}
body[data-page="config"] .settings-field--switch-card{
  grid-column:auto;max-width:none;min-width:0;
  border:1px solid rgba(154,164,178,.16);border-radius:12px;
  background:rgba(8,18,34,.42);padding:12px 14px;
}
body[data-page="config"] .settings-field--switch-card .settings-switch-row{align-items:center;}
body[data-page="config"] .settings-field--switch-card .settings-switch-label{font-size:13.5px;}
body[data-page="config"] .property-item--span-3{grid-column:span 3;max-width:140px;}
body[data-page="config"] .property-item--span-4{grid-column:span 4;}
body[data-page="config"] .property-item--span-6{grid-column:span 6;}
body[data-page="config"] .property-item--span-8{grid-column:span 8;}
body[data-page="config"] .property-item--span-12,
body[data-page="config"] .property-item--wide,
body[data-page="config"] .property-item--full{grid-column:1 / -1;max-width:none;}
body[data-page="config"] .settings-field-hint{display:block;margin-top:2px;color:var(--text-secondary);font-size:12px;line-height:1.4;}
body[data-page="config"] .settings-secret-status{display:inline-flex;align-items:center;}
body[data-page="config"] .settings-clear-secret{margin-top:2px;align-self:center;}
body[data-page="config"] .settings-test-extras{margin:0;gap:14px;}
body[data-page="config"] .settings-list-host,
body[data-page="config"] .settings-list-block{min-width:0;}

/* Switch (semantic checkbox) */
body[data-page="config"] .settings-switch-field{gap:8px;}
body[data-page="config"] .settings-switch-row{display:flex;align-items:center;gap:14px;min-width:0;}
body[data-page="config"] .settings-switch{
  position:relative;display:inline-flex;align-items:center;flex:0 0 auto;cursor:pointer;
}
body[data-page="config"] .settings-switch__input{
  position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1;
}
body[data-page="config"] .settings-switch__track{
  width:44px;height:24px;border-radius:999px;display:block;position:relative;
  background:rgba(154,164,178,.22);border:1px solid rgba(154,164,178,.28);
  transition:background-color 160ms ease,border-color 160ms ease;
}
body[data-page="config"] .settings-switch__thumb{
  position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;transition:left 160ms ease;
}
body[data-page="config"] .settings-switch__input:checked + .settings-switch__track{
  background:rgba(59,130,246,.85);border-color:rgba(59,130,246,.95);
}
body[data-page="config"] .settings-switch__input:checked + .settings-switch__track .settings-switch__thumb{left:22px;}
body[data-page="config"] .settings-switch__input:focus-visible + .settings-switch__track{
  outline:2px solid rgba(126,200,255,.65);outline-offset:2px;
}
body[data-page="config"] .settings-switch__input:disabled{cursor:not-allowed;}
body[data-page="config"] .settings-switch__input:disabled + .settings-switch__track{opacity:.45;}
body[data-page="config"] .settings-switch-copy{display:grid;gap:2px;min-width:0;}
body[data-page="config"] .settings-switch-label{font-size:14px;font-weight:600;color:var(--text-primary);}
body[data-page="config"] .settings-switch-state{font-size:12px;color:var(--text-secondary);}

body[data-page="config"] .settings-udp-list{display:grid;gap:12px;min-width:0;}
body[data-page="config"] .udp-ip-key-add{
  display:grid;grid-template-columns:minmax(160px,.9fr) minmax(220px,1.35fr) auto;gap:12px;align-items:end;
  border:1px solid var(--settings-border);border-radius:12px;background:rgba(8,27,48,.35);padding:14px;
}
body[data-page="config"] .udp-ip-key-add > .btn{width:auto;justify-self:start;min-width:0;white-space:nowrap;}
body[data-page="config"] .udp-ip-key-list{display:grid;gap:10px;}
body[data-page="config"] .udp-ip-key-row{
  display:grid;grid-template-columns:42px minmax(160px,.7fr) minmax(200px,1fr) auto;gap:12px;align-items:end;
  border:1px solid var(--settings-border);border-radius:12px;background:rgba(7,20,35,.48);padding:14px;
}
body[data-page="config"] .udp-ip-key-index{
  align-self:center;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border:1px solid var(--settings-border);border-radius:12px;background:rgba(47,145,255,.08);color:var(--text-secondary);font-weight:800;
}
body[data-page="config"] .udp-ip-key-empty{
  display:grid;justify-items:center;align-content:center;gap:6px;text-align:center;
  border:1px dashed rgba(63,147,235,.28);border-radius:12px;
  padding:16px 14px;min-height:110px;max-height:150px;box-sizing:border-box;
  color:var(--text-secondary);background:rgba(9,24,42,.22);
}
body[data-page="config"] .udp-ip-key-empty__icon{
  width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
  border:1px solid rgba(63,147,235,.22);background:rgba(22,136,255,.10);color:var(--blue-bright);
}
body[data-page="config"] .udp-ip-key-empty__icon .event-svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;}
body[data-page="config"] .udp-ip-key-empty strong{color:var(--text-primary);font-size:14px;}
body[data-page="config"] .udp-ip-key-empty p{margin:0;font-size:12.5px;max-width:42ch;}
body[data-page="config"] .udp-ip-key-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap;}

body[data-page="config"] .settings-wo-empty{
  display:grid;justify-items:center;align-content:center;gap:8px;text-align:center;
  border:1px dashed rgba(139,92,246,.28);border-radius:12px;
  padding:18px 16px;min-height:120px;max-height:160px;box-sizing:border-box;
  background:rgba(17,24,39,.28);margin:0 0 12px;
}
body[data-page="config"] .settings-wo-empty__icon{
  width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  border:1px solid rgba(139,92,246,.28);background:rgba(139,92,246,.10);color:var(--settings-accent-purple);
}
body[data-page="config"] .settings-wo-empty__icon .event-svg{width:18px;height:18px;}
body[data-page="config"] .settings-wo-empty strong{color:var(--text-primary);font-size:14px;}
body[data-page="config"] .settings-wo-empty p{margin:0;font-size:12.5px;max-width:46ch;}
body[data-page="config"] .settings-wo-actions{margin-top:4px;}

body[data-page="config"] .wo-category-basic-grid{margin-bottom:18px;padding:0 4px;}
body[data-page="config"] .wo-builder-layout{display:block;width:100%;padding:0;margin-top:2px;}
body[data-page="config"] .wo-field-picker{display:grid;grid-template-columns:minmax(280px,460px) auto;gap:10px;align-items:end;margin:0 0 14px;}
body[data-page="config"] .wo-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:dense;gap:10px;margin-top:10px;align-items:stretch;width:100%;}
body[data-page="config"] .wo-form-grid .empty-state{min-height:54px;padding:16px;border-style:dashed;background:rgba(7,20,35,.30);}
body[data-page="config"] .wo-field-card{position:relative;padding:0;background:rgba(7,20,35,.42);min-width:0;overflow:hidden;height:100%;cursor:grab;}
body[data-page="config"] .wo-field-summary{display:grid;grid-template-columns:34px minmax(0,1fr) auto 22px;gap:10px;align-items:center;padding:10px 12px;cursor:pointer;list-style:none;min-height:72px;}
body[data-page="config"] .wo-field-summary::-webkit-details-marker{display:none;}
body[data-page="config"] .wo-field-title{display:grid;gap:2px;min-width:0;}
body[data-page="config"] .wo-field-title strong{font-size:14px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body[data-page="config"] .wo-field-title small{font-size:11px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body[data-page="config"] .wo-field-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap;}
body[data-page="config"] .wo-field-body{display:none;}
body[data-page="config"] .wo-field-resize-handle{align-self:stretch;display:grid;place-items:center;min-width:22px;border-left:1px solid rgba(63,147,235,.16);color:var(--blue-bright);cursor:ew-resize;user-select:none;touch-action:none;border-radius:8px;background:linear-gradient(180deg,rgba(22,136,255,.11),rgba(22,136,255,.04));font-weight:900;}
body[data-page="config"] .wo-field-config-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;}
body[data-page="config"] .wo-options-list{display:grid;gap:8px;}
body[data-page="config"] .wo-option-row{display:grid;grid-template-columns:minmax(0,1fr) 34px 34px auto;gap:8px;align-items:center;}
body[data-page="config"] .wo-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;}
body[data-page="config"] .wo-priority-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;width:100%;}
body[data-page="config"] .wo-priority-card{display:grid;grid-template-columns:minmax(0,1fr) 46px;align-items:center;gap:10px;min-height:62px;border:1px solid rgba(63,147,235,.18);border-radius:12px;background:rgba(7,20,35,.48);padding:10px 12px;cursor:pointer;}
body[data-page="config"] .wo-priority-card__text{display:grid;gap:2px;min-width:0;}
body[data-page="config"] .wo-priority-card__text strong{display:block;font-size:13px;line-height:1.15;color:var(--text-primary);}
body[data-page="config"] .wo-priority-card__text small{display:block;font-size:11px;line-height:1.2;color:var(--text-secondary);}
body[data-page="config"] .wo-priority-card input{appearance:none;width:42px;height:22px;border-radius:999px;border:1px solid rgba(127,151,178,.32);background:rgba(8,18,31,.92);position:relative;cursor:pointer;}
body[data-page="config"] .wo-priority-card input:before{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#8197ad;}
body[data-page="config"] .wo-priority-card input:checked{background:rgba(0,194,203,.26);border-color:rgba(0,194,203,.62);}
body[data-page="config"] .wo-priority-card input:checked:before{left:23px;background:#33d45d;}
body[data-page="config"] .wo-field-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:28px;background:rgba(0,7,14,.62);}
body[data-page="config"] .wo-field-modal__backdrop{position:absolute;inset:0;}
body[data-page="config"] .wo-field-modal__dialog{position:relative;z-index:1;width:min(1080px,96vw);max-height:min(88vh,920px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;border:1px solid rgba(63,147,235,.32);border-radius:18px;background:linear-gradient(180deg,rgba(17,30,49,.98),rgba(6,16,28,.98));overflow:hidden;}
body[data-page="config"] .wo-field-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid rgba(63,147,235,.18);}
body[data-page="config"] .wo-field-modal__body{overflow:auto;padding:18px;}
body[data-page="config"] .wo-field-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 18px;border-top:1px solid rgba(63,147,235,.18);background:rgba(5,14,25,.64);}
body[data-page="config"] .wo-field-modal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
body[data-page="config"] .settings-accordion__item{border:1px solid var(--border);border-radius:var(--r-lg);background:rgba(9,17,26,.94);overflow:hidden;}
body[data-page="config"] .settings-accordion__summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;cursor:pointer;list-style:none;}
body[data-page="config"] .settings-accordion__summary::-webkit-details-marker{display:none;}
body[data-page="config"] .settings-accordion__title{display:grid;gap:6px;min-width:0;}
body[data-page="config"] .settings-accordion__title h3{margin:0;font-family:var(--font-display);font-size:18px;font-weight:800;color:var(--text-primary);}
body[data-page="config"] .settings-accordion__title p{margin:0;color:var(--text-secondary);font-size:13px;}

@media (min-width:1600px){
  body[data-page="config"] .settings-form-fields{grid-template-columns:repeat(12,minmax(0,1fr));}
  body[data-page="config"] .settings-field--content{grid-column:span 3;max-width:220px;}
  body[data-page="config"] .settings-field--compact{grid-column:span 2;max-width:140px;}
  body[data-page="config"] .settings-field--medium{grid-column:span 3;max-width:320px;}
  body[data-page="config"] .settings-field--wide{grid-column:span 6;max-width:560px;}
  body[data-page="config"] .settings-form-fields--sender .settings-field--medium{grid-column:span 3;}
  body[data-page="config"] .settings-form-fields--sender .settings-field--wide{grid-column:span 4;}
  body[data-page="config"] .settings-form-fields--switch-cards{grid-template-columns:repeat(4,minmax(0,1fr));}
}
@media (max-width:1366px){
  body[data-page="config"] .settings-layout{grid-template-columns:minmax(270px,290px) minmax(0,1fr);gap:16px;}
  body[data-page="config"] .settings-work-surface{width:100%;padding:20px;}
  body[data-page="config"] .settings-field--content{grid-column:span 4;max-width:220px;}
  body[data-page="config"] .settings-field--compact{grid-column:span 3;max-width:140px;}
  body[data-page="config"] .settings-field--medium{grid-column:span 6;max-width:none;}
  body[data-page="config"] .settings-field--wide{grid-column:span 8;max-width:none;}
  body[data-page="config"] .settings-form-fields--sender .settings-field--medium{grid-column:span 6;}
  body[data-page="config"] .settings-form-fields--sender .settings-field--wide{grid-column:span 6;}
  body[data-page="config"] .settings-form-fields--retention{max-width:none;}
  body[data-page="config"] .settings-form-fields--retention .settings-field--compact{grid-column:span 4;}
  body[data-page="config"] .settings-form-fields--retention .settings-field--medium{grid-column:span 8;}
  body[data-page="config"] .settings-form-fields--switch-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
  body[data-page="config"] .property-item--secret,
  body[data-page="config"] .settings-field--wide.property-item--secret{grid-column:span 8;max-width:none;}
}
@media (max-width:1100px){
  body[data-page="config"] .settings-layout{
    grid-template-columns:1fr;
    grid-template-areas:"picker" "panel";
    gap:14px;
  }
  body[data-page="config"] .settings-mobile-section-picker{display:grid;}
  body[data-page="config"] .settings-sections-pane{display:none;}
  body[data-page="config"] .settings-work-surface{width:100%;padding:18px;}
  body[data-page="config"] .settings-field--content{grid-column:span 6;max-width:240px;}
  body[data-page="config"] .settings-field--medium{grid-column:span 6;max-width:none;}
  body[data-page="config"] .settings-field--wide{grid-column:span 12;max-width:none;}
  body[data-page="config"] .settings-field--compact{grid-column:span 4;max-width:140px;}
  body[data-page="config"] .settings-form-fields--switch-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
  body[data-page="config"] .settings-form-fields--sender .settings-field--medium,
  body[data-page="config"] .settings-form-fields--sender .settings-field--wide{grid-column:span 6;}
  body[data-page="config"] .wo-field-config-grid,body[data-page="config"] .wo-field-modal-grid{grid-template-columns:1fr;}
}
@media (max-width:760px){
  body[data-page="config"] .settings-work-surface{width:100%;padding:16px;}
  body[data-page="config"] .settings-form-fields,
  body[data-page="config"] .settings-test-extras{grid-template-columns:1fr;}
  body[data-page="config"] .settings-form-fields--switch-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
  body[data-page="config"] .settings-section-header__topline{
    flex-direction:column;align-items:flex-start;
  }
  body[data-page="config"] .settings-section-header__badge{margin-left:0;}
  body[data-page="config"] .settings-field--content,
  body[data-page="config"] .settings-field--compact,
  body[data-page="config"] .settings-field--medium,
  body[data-page="config"] .settings-field--wide,
  body[data-page="config"] .settings-field--full,
  body[data-page="config"] .property-item--span-3,
  body[data-page="config"] .property-item--span-4,
  body[data-page="config"] .property-item--span-6,
  body[data-page="config"] .property-item--span-8,
  body[data-page="config"] .property-item--span-12,
  body[data-page="config"] .property-item--wide,
  body[data-page="config"] .property-item--full,
  body[data-page="config"] .property-item--secret,
  body[data-page="config"] .settings-field--wide.property-item--secret{grid-column:1 / -1;max-width:none;}
  body[data-page="config"] .settings-field--switch-card{grid-column:auto;max-width:none;}
  body[data-page="config"] .settings-field--compact-input{max-width:none;}
  body[data-page="config"] .property-item--switch.settings-field--content{max-width:none;}
  body[data-page="config"] .settings-field-group{padding-bottom:16px;width:100%;}
  body[data-page="config"] .settings-section-footer{flex-direction:column;align-items:stretch;margin-top:16px;width:100%;}
  body[data-page="config"] .settings-section-footer__meta{margin-left:0;}
  body[data-page="config"] .settings-section-actions{flex-direction:column;align-items:stretch;}
  body[data-page="config"] .settings-section-actions .btn{width:100%;justify-content:center;}
  body[data-page="config"] .udp-ip-key-add,body[data-page="config"] .udp-ip-key-row{grid-template-columns:1fr;}
  body[data-page="config"] .udp-ip-key-actions{justify-content:flex-start;}
  body[data-page="config"] .udp-ip-key-empty{max-height:none;min-height:96px;}
  body[data-page="config"] .settings-wo-empty{max-height:none;min-height:110px;}
  body[data-page="config"] .wo-field-picker{grid-template-columns:1fr;}
  body[data-page="config"] .wo-form-grid{grid-template-columns:1fr;}
  body[data-page="config"] .wo-option-row{grid-template-columns:1fr;}
  body[data-page="config"] .wo-field-modal{padding:10px;}
}
@media (max-width:430px){
  body[data-page="config"] .settings-section-panel{padding:4px 0;width:100%;}
  body[data-page="config"] .settings-work-surface{padding:14px;width:100%;}
  body[data-page="config"] .settings-form-fields--switch-cards{grid-template-columns:1fr;}
  body[data-page="config"] .settings-field--switch-card{grid-column:1 / -1;}
  body[data-page="config"] .settings-mobile-section-picker{padding:12px;}
}

/* SETTINGS-UDP-FRAME-DEFINITION-A1 — edytor definicji ramki */
body[data-page="config"] .udp-frame-def{display:grid;gap:12px;min-width:0;}
body[data-page="config"] .udp-frame-def__hint{margin:0;max-width:72ch;line-height:1.45;}
body[data-page="config"] .udp-frame-def__toolbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
}
body[data-page="config"] .udp-frame-def__meta{font-size:12.5px;}
body[data-page="config"] .udp-frame-def__actions{display:flex;gap:8px;flex-wrap:wrap;}
body[data-page="config"] .udp-frame-def__editor{
  font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
  font-size:12.5px;line-height:1.45;min-height:420px;width:100%;resize:vertical;
  white-space:pre;tab-size:2;overflow:auto;
}
body[data-page="config"] .udp-frame-def__footer{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
}
body[data-page="config"] .udp-frame-def__status{font-size:12.5px;font-weight:600;color:var(--text-secondary);}
body[data-page="config"] .udp-frame-def__status.is-dirty{color:var(--yellow,#EAB308);}
body[data-page="config"] .udp-frame-def__status.is-saved{color:var(--green,#22C55E);}
body[data-page="config"] .udp-frame-def__status.is-error{color:var(--red,#EF4444);}
body[data-page="config"] .udp-frame-def__counter{font-size:12px;}
@media (max-width:720px){
  body[data-page="config"] .udp-frame-def__editor{min-height:280px;}
}

/* SETTINGS-C3 — confirm dialog (reuse jk-profile-modal) */
body.jk-confirm-dialog-open{overflow:hidden;}
.jk-confirm-dialog .jk-profile-modal__dialog--sm{width:min(440px,100%);}
.jk-confirm-dialog .jk-profile-modal__head p{
  white-space:pre-line;
  margin:8px 0 0;
  color:var(--text-secondary,#9bb0c9);
  line-height:1.45;
}
.jk-confirm-dialog__actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  padding:0 20px 18px;
  flex-wrap:wrap;
}
@media (max-width:430px){
  .jk-confirm-dialog__actions{flex-direction:column-reverse;align-items:stretch;}
  .jk-confirm-dialog__actions .btn{width:100%;justify-content:center;}
}
