:root{
  --bg:#eef3f8;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#516074;
  --line:#d5deea;
  --accent:#0055a4;
  --accent-strong:#003a74;
  --route:#1d4c8f;
  --stations:#2563eb;
  --unmanned:#6b7280;
  --milepoints:#0891b2;
  --tracker-legend:#16a34a;
  --delay-minor-legend:#eab308;
  --delay-major-legend:#f97316;
  --delay-severe-legend:#ef4444;
  --atlas-scale:1;
  --atlas-sidebar-width:320px;
  --atlas-map-min-height:520px;
  --atlas-chip-font:0.72rem;
  --tracker-callout-alpha-top:.97;
  --tracker-callout-alpha-bottom:.94;
}

*{ box-sizing:border-box; }
html,body{ height:100%; margin:0; min-width:320px; font-family:"Segoe UI",Tahoma,sans-serif; color:var(--text); background:linear-gradient(180deg,#e9f1fb 0%,var(--bg) 45%,#ecf2f5 100%); transition:background .24s ease,color .24s ease; }

body[data-theme-mode="dark"]{
  --bg:#0b1320;
  --card:#111c2f;
  --text:#e5eef8;
  --muted:#aebfd6;
  --line:#30465f;
  --accent:#3ea7ff;
  --accent-strong:#d9f1ff;
  --route:#7ca4ba;
  --stations:#9ec2cf;
  --unmanned:#b8c1c9;
  --milepoints:#8fb3bf;
  --tracker-legend:#78b68d;
  --delay-minor-legend:#c9af66;
  --delay-major-legend:#cb8d5c;
  --delay-severe-legend:#c88484;
  background:linear-gradient(180deg,#08111d 0%,#0b1320 46%,#111c2f 100%);
}

body[data-display-mode="compact"]{
  --atlas-scale:.92;
  --atlas-sidebar-width:100%;
  --atlas-map-min-height:420px;
  --atlas-chip-font:0.68rem;
}

body[data-display-mode="standard"]{
  --atlas-scale:1;
  --atlas-sidebar-width:320px;
  --atlas-map-min-height:520px;
  --atlas-chip-font:0.72rem;
}

body[data-display-mode="large"]{
  --atlas-scale:1.08;
  --atlas-sidebar-width:360px;
  --atlas-map-min-height:620px;
  --atlas-chip-font:0.76rem;
}

body[data-display-mode="wall"]{
  --atlas-scale:1.18;
  --atlas-sidebar-width:400px;
  --atlas-map-min-height:720px;
  --atlas-chip-font:0.82rem;
}

body[data-display-mode="ultra"]{
  --atlas-scale:1.32;
  --atlas-sidebar-width:460px;
  --atlas-map-min-height:840px;
  --atlas-chip-font:0.9rem;
}

.atlas-header{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:calc(12px * var(--atlas-scale));
  padding:calc(16px * var(--atlas-scale)) calc(18px * var(--atlas-scale));
  border-bottom:1px solid var(--line);
  background:rgba(255,255,255,0.86);
  backdrop-filter:blur(6px);
}

.atlas-brand h1{
  margin:0;
  font-size:calc(1.35rem * var(--atlas-scale));
}

.atlas-brand p{
  margin:4px 0 0;
  color:var(--muted);
  font-size:calc(0.93rem * var(--atlas-scale));
}

.atlas-search{
  flex:1 1 min(620px,100%);
  min-width:min(620px,100%);
}

.atlas-search label{
  display:block;
  margin-bottom:6px;
  font-size:calc(0.82rem * var(--atlas-scale));
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:var(--muted);
}

.atlas-header-actions{
  flex:1 1 340px;
  min-width:min(340px,100%);
}

.atlas-header-actions label{
  display:block;
  margin-bottom:6px;
  font-size:calc(0.82rem * var(--atlas-scale));
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:var(--muted);
}

.atlas-display-row{
  display:grid;
  grid-template-columns:minmax(148px, 1fr) minmax(118px, .8fr) auto auto;
  gap:8px;
  align-items:end;
}

.atlas-select-stack{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
}

.atlas-select-stack label{
  margin:0;
}

.atlas-display-row select{
  width:100%;
  border:1px solid var(--line);
  border-radius:10px;
  padding:calc(10px * var(--atlas-scale)) calc(12px * var(--atlas-scale));
  font:inherit;
  color:var(--text);
  background:var(--card);
}

.atlas-display-note{
  margin:7px 0 0;
  color:var(--muted);
  font-size:calc(0.8rem * var(--atlas-scale));
}

.field-stack{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.field-stack.compact{
  margin-top:8px;
}

.field-stack-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.field-stack-row label{
  margin:0;
  font-size:calc(0.82rem * var(--atlas-scale));
  font-weight:700;
  color:var(--muted);
}

#trackerCalloutOpacity{
  width:100%;
  accent-color:var(--accent);
}

.search-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:8px;
}

.search-row input{
  min-width:0;
  border:1px solid var(--line);
  border-radius:8px;
  padding:calc(10px * var(--atlas-scale)) calc(12px * var(--atlas-scale));
  font-size:calc(0.98rem * var(--atlas-scale));
}

.atlas-layout{
  height:calc(100% - calc(98px * var(--atlas-scale)));
  display:grid;
  grid-template-columns:var(--atlas-sidebar-width) 1fr;
  gap:calc(12px * var(--atlas-scale));
  padding:calc(12px * var(--atlas-scale));
}

.atlas-sidebar{
  overflow:auto;
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:0;
}

.panel{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:calc(12px * var(--atlas-scale));
}

.panel h2{
  margin:0 0 10px;
  font-size:calc(1rem * var(--atlas-scale));
}

.panel-head,
.panel-frame-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}

.panel-head h2,
.panel-frame-head h2{
  margin:0;
}

.panel-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:8px;
}

.panel-body{
  min-width:0;
}

.atlas-panel.is-collapsed{
  padding-bottom:10px;
}

.atlas-panel.is-collapsed .panel-frame-head{
  margin-bottom:0;
}

.atlas-panel.is-collapsed .panel-body{
  display:none;
}

.check{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 0 8px;
}

.check.compact{
  margin:0;
  gap:7px;
  font-size:calc(0.82rem * var(--atlas-scale));
}

.check.compact.wide{
  grid-column:1 / -1;
}

.subchecks{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:8px 12px;
  margin:2px 0 10px 18px;
  padding:10px 0 0 12px;
  border-left:2px solid rgba(148,163,184,.35);
}

.btn{
  border:1px solid var(--line);
  border-radius:8px;
  padding:calc(8px * var(--atlas-scale)) calc(12px * var(--atlas-scale));
  font-weight:600;
  cursor:pointer;
  background:#ffffff;
  color:var(--text);
  font-size:calc(0.92rem * var(--atlas-scale));
}

body[data-theme-mode="dark"] .atlas-header{
  background:rgba(10,18,31,.9);
}

body[data-theme-mode="dark"] .btn,
body[data-theme-mode="dark"] .search-row input,
body[data-theme-mode="dark"] .atlas-display-row select,
body[data-theme-mode="dark"] .map-view-panel select{
  background:#18253a;
  color:var(--text);
  border-color:var(--line);
}

.btn.primary{
  background:var(--accent);
  color:#ffffff;
  border-color:var(--accent);
}

.btn.primary:hover{
  background:var(--accent-strong);
}

.btn.ghost:hover{
  border-color:#a8b7cb;
  background:#f8fafc;
}

.btn-compact{
  padding:calc(6px * var(--atlas-scale)) calc(10px * var(--atlas-scale));
  font-size:calc(0.76rem * var(--atlas-scale));
}

.legend-item{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:0;
  white-space:nowrap;
}

.dot{
  width:10px;
  height:10px;
  border-radius:999px;
  display:inline-block;
}

.dot.stations{ background:var(--stations); }
.dot.unmanned{ background:var(--unmanned); }
.dot.milepoints{ background:var(--milepoints); }
.dot.tracker{ background:var(--tracker-legend); }
.dot.delay-minor{ background:var(--delay-minor-legend); }
.dot.delay-major{ background:var(--delay-major-legend); }
.dot.delay-severe{ background:var(--delay-severe-legend); }

.line{
  width:22px;
  height:0;
  border-top:3px solid transparent;
  display:inline-block;
}

.line.route{ border-top-color:var(--route); }

.muted{
  color:var(--muted);
  font-size:calc(0.88rem * var(--atlas-scale));
  margin:0 0 10px;
}

.tracker-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  flex:1 1 auto;
  min-height:0;
  max-height:min(38vh, 420px);
  overflow:auto;
  padding-right:2px;
}

.tracker-panel .panel-body{
  display:flex;
  flex-direction:column;
  min-height:0;
}

.tracker-panel.has-selection .tracker-list{
  max-height:min(23vh, 250px);
}

.tracker-panel.show-selected-only #trackerHint,
.tracker-panel.show-selected-only .tracker-list{
  display:none;
}

.tracker-panel.show-selected-only .tracker-selection{
  order:0;
  margin:0;
  max-height:none;
  flex:1 1 auto;
}

.tracker-card{
  width:100%;
  appearance:none;
  -webkit-appearance:none;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  background:linear-gradient(180deg, rgba(255,255,255,0.99), rgba(240,247,255,0.98));
  font:inherit;
  color:inherit;
  text-align:left;
  position:relative;
  cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

body[data-theme-mode="dark"] .tracker-card{
  background:linear-gradient(180deg, rgba(24,37,58,.98), rgba(14,26,44,.98));
  box-shadow:0 12px 28px rgba(2,8,23,.28);
}

.tracker-card::before{
  content:"";
  position:absolute;
  left:0;
  top:10px;
  bottom:10px;
  width:4px;
  border-radius:999px;
  background:linear-gradient(180deg, #0ea5e9, #0369a1);
}

.tracker-card:hover{
  transform:translateY(-1px);
  border-color:#b7c7da;
  box-shadow:0 10px 24px rgba(15,23,42,.08);
}

body[data-theme-mode="dark"] .tracker-card:hover{
  border-color:#4c6b8d;
  box-shadow:0 14px 28px rgba(2,8,23,.34);
}

.tracker-card:focus-visible{
  outline:2px solid rgba(0,85,164,.28);
  outline-offset:2px;
}

.tracker-card.is-selected{
  border-color:rgba(0,85,164,.38);
  background:linear-gradient(180deg, rgba(235,246,255,1), rgba(227,241,255,0.98));
  box-shadow:0 12px 28px rgba(0,85,164,.12);
}

body[data-theme-mode="dark"] .tracker-card.is-selected{
  border-color:rgba(62,167,255,.46);
  background:linear-gradient(180deg, rgba(26,50,82,.98), rgba(14,32,57,.98));
  box-shadow:0 14px 32px rgba(14,165,233,.16);
}

.tracker-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  padding-left:8px;
}

.tracker-train{
  font-weight:800;
  color:var(--accent-strong);
}

.tracker-route{
  margin-top:3px;
  font-size:calc(0.8rem * var(--atlas-scale));
  color:var(--muted);
}

.tracker-status-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:calc(26px * var(--atlas-scale));
  padding:0 calc(10px * var(--atlas-scale));
  border-radius:999px;
  background:rgba(0,85,164,.08);
  border:1px solid rgba(0,85,164,.14);
  color:var(--accent-strong);
  font-size:calc(0.74rem * var(--atlas-scale));
  font-weight:800;
  white-space:nowrap;
}

.tracker-metrics{
  margin-top:8px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px 10px;
  font-size:calc(0.82rem * var(--atlas-scale));
  padding-left:8px;
}

.tracker-metric-label{
  display:block;
  font-size:calc(0.73rem * var(--atlas-scale));
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.03em;
}

.tracker-metric-value{
  display:block;
  margin-top:2px;
  font-weight:700;
  color:var(--text);
}

.tracker-note{
  margin-top:8px;
  font-size:calc(0.8rem * var(--atlas-scale));
  color:var(--muted);
  padding-left:8px;
}

.tracker-card-action{
  margin-top:8px;
  padding-left:8px;
  font-size:calc(0.75rem * var(--atlas-scale));
  font-weight:800;
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.03em;
}

.tracker-selection{
  order:-1;
  margin:0 0 12px;
  max-height:min(34vh, 400px);
  overflow:auto;
  padding-right:2px;
}

.tracker-selection:not(.has-content){
  display:none;
}

.tracker-selection-card{
  border:1px solid #cfe0f4;
  border-radius:16px;
  padding:12px;
  background:linear-gradient(180deg, rgba(248,252,255,0.99), rgba(238,246,255,0.98));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72);
}

body[data-theme-mode="dark"] .tracker-selection-card,
body[data-theme-mode="dark"] .tracker-selection-stops-panel,
body[data-theme-mode="dark"] .tracker-selection-metric,
body[data-theme-mode="dark"] .tracker-selection-empty{
  background:rgba(17,28,47,.94);
  border-color:rgba(65,89,116,.9);
}

.tracker-selection-head{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}

.tracker-selection-head-actions{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  flex:1 1 220px;
  min-width:min(220px, 100%);
}

.tracker-selection-action-row{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  gap:6px;
}

.tracker-selection-action-row .btn{
  flex:0 0 auto;
  white-space:nowrap;
}

.tracker-selection-kicker{
  font-size:calc(0.72rem * var(--atlas-scale));
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--muted);
}

.tracker-selection-train{
  margin-top:3px;
  font-size:calc(1rem * var(--atlas-scale));
  font-weight:900;
  color:var(--accent-strong);
}

.tracker-selection-route{
  margin-top:4px;
  font-size:calc(0.82rem * var(--atlas-scale));
  color:var(--muted);
}

.tracker-selection-status{
  display:inline-flex;
  align-items:center;
  min-height:calc(28px * var(--atlas-scale));
  padding:0 calc(10px * var(--atlas-scale));
  border-radius:999px;
  background:rgba(0,85,164,.1);
  border:1px solid rgba(0,85,164,.16);
  color:var(--accent-strong);
  font-size:calc(0.75rem * var(--atlas-scale));
  font-weight:800;
  text-align:center;
}

.tracker-selection-summary{
  margin-top:8px;
  font-size:calc(0.76rem * var(--atlas-scale));
  font-weight:700;
  color:var(--muted);
}

.tracker-selection-body{
  margin-top:10px;
}

.tracker-selection-card.is-collapsed .tracker-selection-body{
  display:none;
}

.tracker-selection-columns{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  align-items:start;
}

.tracker-selection-stops-panel,
.tracker-selection-side{
  min-width:0;
}

.tracker-selection-stops-panel{
  border:1px solid rgba(207,224,244,.92);
  border-radius:14px;
  padding:10px 12px;
  background:rgba(255,255,255,.92);
}

.tracker-selection-side{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.tracker-selection-section-label{
  display:block;
  margin:0 0 8px;
  font-size:calc(0.7rem * var(--atlas-scale));
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--muted);
}

.tracker-selection-metrics{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  gap:8px 10px;
}

.tracker-selection-metric{
  border:1px solid rgba(213,222,234,.88);
  border-radius:12px;
  padding:8px 9px;
  background:rgba(255,255,255,.88);
}

.tracker-selection-label{
  display:block;
  font-size:calc(0.7rem * var(--atlas-scale));
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--muted);
}

.tracker-selection-value{
  display:block;
  margin-top:3px;
  font-size:calc(0.83rem * var(--atlas-scale));
  font-weight:800;
  color:var(--text);
}

.tracker-stop-list{
  display:flex;
  flex-direction:column;
  gap:0;
}

.tracker-selection-empty{
  border:1px dashed rgba(148,163,184,.42);
  border-radius:12px;
  padding:10px;
  font-size:calc(0.82rem * var(--atlas-scale));
  color:var(--muted);
  background:rgba(255,255,255,.72);
}

.tracker-stop-row{
  display:grid;
  grid-template-columns:18px minmax(0, 1fr);
  gap:10px;
  padding:10px 0;
}

.tracker-stop-row + .tracker-stop-row{
  border-top:1px solid rgba(213,222,234,.78);
}

.tracker-stop-rail{
  display:flex;
  justify-content:center;
  position:relative;
}

.tracker-stop-rail::before{
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  left:50%;
  width:2px;
  transform:translateX(-50%);
  background:linear-gradient(180deg, rgba(148,163,184,.18), rgba(148,163,184,.48), rgba(148,163,184,.18));
}

.tracker-stop-row:last-child .tracker-stop-rail::before{
  bottom:50%;
}

.tracker-stop-dot{
  position:relative;
  z-index:1;
  width:12px;
  height:12px;
  margin-top:3px;
  border-radius:999px;
  border:2px solid #ffffff;
  background:#94a3b8;
  box-shadow:0 0 0 1px rgba(148,163,184,.25);
}

.tracker-stop-dot.passed{
  background:#16a34a;
  box-shadow:0 0 0 1px rgba(22,163,74,.24);
}

.tracker-stop-dot.next{
  width:14px;
  height:14px;
  background:#0ea5e9;
  box-shadow:0 0 0 1px rgba(14,165,233,.3), 0 0 0 5px rgba(14,165,233,.12);
}

.tracker-stop-dot.upcoming{
  background:#f59e0b;
  box-shadow:0 0 0 1px rgba(245,158,11,.24);
}

.tracker-stop-main{
  min-width:0;
}

.tracker-stop-topline{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}

.tracker-stop-name{
  font-size:calc(0.86rem * var(--atlas-scale));
  font-weight:800;
  color:var(--text);
}

.tracker-stop-stage{
  display:inline-flex;
  align-items:center;
  min-height:calc(22px * var(--atlas-scale));
  padding:0 calc(8px * var(--atlas-scale));
  border-radius:999px;
  font-size:calc(0.68rem * var(--atlas-scale));
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
  white-space:nowrap;
}

.tracker-stop-stage.passed{
  background:rgba(22,163,74,.1);
  color:#166534;
}

.tracker-stop-stage.next{
  background:rgba(14,165,233,.12);
  color:#075985;
}

.tracker-stop-stage.upcoming{
  background:rgba(245,158,11,.12);
  color:#92400e;
}

.tracker-stop-time{
  margin-top:4px;
  font-size:calc(0.82rem * var(--atlas-scale));
  font-weight:800;
  color:var(--accent-strong);
}

.tracker-stop-subline{
  margin-top:3px;
  font-size:calc(0.75rem * var(--atlas-scale));
  color:var(--muted);
}

.train-tracker-marker{
  --tracker-marker-top:#16a34a;
  --tracker-marker-bottom:#15803d;
  --tracker-marker-top-rgb:22,163,74;
  --tracker-marker-bottom-rgb:21,128,61;
  --tracker-marker-shadow:rgba(21,128,61,.32);
  --tracker-marker-halo:rgba(74,222,128,.48);
  --tracker-marker-leader-end:rgba(21,128,61,.72);
  --tracker-marker-leader-selected:rgba(22,163,74,.95);
  min-width:0;
  min-height:0;
  border:none;
  background:transparent;
  color:#ffffff;
  display:block;
  padding:0;
  position:relative;
  overflow:visible;
  width:0;
  height:0;
}

.train-tracker-marker .tracker-marker-pill{
  position:absolute;
  left:0;
  top:0;
  min-width:38px;
  min-height:38px;
  border-radius:999px;
  border:2px solid #ffffff;
  background:linear-gradient(180deg, var(--tracker-marker-top), var(--tracker-marker-bottom));
  color:#ffffff;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 8px;
  font-size:0.76rem;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  box-shadow:0 8px 20px var(--tracker-marker-shadow);
  transform:translate(-50%, -50%);
}

.train-tracker-marker.is-moving:not(.is-selected):not(.with-details):not(.with-compact-callout) .tracker-marker-pill{
  animation:atlasMarkerLivePulse 1.35s ease-in-out infinite;
}

.train-tracker-marker.with-details,
.train-tracker-marker.with-compact-callout{
  min-width:0;
  min-height:0;
  border:none;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  padding:0;
  width:0;
  height:0;
  display:block;
  position:relative;
  overflow:visible;
}

.train-tracker-marker.is-selected{
  z-index:8;
}

.train-tracker-marker.is-selected:not(.with-details):not(.with-compact-callout) .tracker-marker-pill{
  animation:atlasMarkerChipPulse 1.6s ease-in-out infinite;
}

.train-tracker-marker:not(.with-details):not(.with-compact-callout) .tracker-marker-pill::after{
  content:"";
  position:absolute;
  inset:-5px;
  border-radius:inherit;
  border:2px solid var(--tracker-marker-halo);
  opacity:0;
  pointer-events:none;
}

.train-tracker-marker.is-moving:not(.is-selected):not(.with-details):not(.with-compact-callout) .tracker-marker-pill::after{
  opacity:1;
  animation:atlasMarkerLiveHalo 1.45s ease-out infinite;
}

.train-tracker-marker.with-details .tracker-marker-anchor,
.train-tracker-marker.with-compact-callout .tracker-marker-anchor{
  position:absolute;
  left:0;
  top:0;
  width:16px;
  height:16px;
  border-radius:999px;
  border:3px solid rgba(255,255,255,.98);
  background:linear-gradient(180deg, var(--tracker-marker-top), var(--tracker-marker-bottom));
  box-shadow:0 4px 14px var(--tracker-marker-shadow);
  transform:translate(-50%, -50%);
}

.train-tracker-marker.with-details .tracker-marker-anchor::after,
.train-tracker-marker.with-compact-callout .tracker-marker-anchor::after{
  content:"";
  position:absolute;
  inset:-4px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,.2);
  opacity:0;
}

.train-tracker-marker.is-moving:not(.is-selected).with-details .tracker-marker-anchor::after,
.train-tracker-marker.is-moving:not(.is-selected).with-compact-callout .tracker-marker-anchor::after{
  opacity:1;
  border-color:var(--tracker-marker-halo);
  animation:atlasMarkerLiveHalo 1.45s ease-out infinite;
}

.train-tracker-marker.with-details .tracker-marker-leader,
.train-tracker-marker.with-compact-callout .tracker-marker-leader{
  position:absolute;
  left:0;
  top:0;
  width:var(--tracker-leader-len, 0px);
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg, rgba(255,255,255,.06), var(--tracker-marker-leader-end));
  box-shadow:0 0 0 1px rgba(255,255,255,.4);
  transform-origin:0 50%;
  transform:translate(0, -50%) rotate(var(--tracker-leader-angle, 0deg));
}

.train-tracker-marker.with-details .tracker-marker-label{
  position:absolute;
  left:var(--tracker-label-x, 0px);
  top:var(--tracker-label-y, 0px);
  transform:translate(-50%, -50%);
  min-width:168px;
  max-width:168px;
  min-height:68px;
  border-radius:16px;
  border:2px solid #ffffff;
  background:linear-gradient(180deg, rgba(var(--tracker-marker-top-rgb), var(--tracker-callout-alpha-top)), rgba(var(--tracker-marker-bottom-rgb), var(--tracker-callout-alpha-bottom)));
  color:#ffffff;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:4px;
  padding:9px 11px;
  line-height:1.1;
  box-shadow:0 10px 22px var(--tracker-marker-shadow);
}

body[data-theme-mode="dark"] .train-tracker-marker.with-details .tracker-marker-label{
  border-color:rgba(232,242,252,.72);
  background:
    linear-gradient(135deg, rgba(var(--tracker-marker-top-rgb), .16), rgba(var(--tracker-marker-bottom-rgb), .1)),
    linear-gradient(180deg, rgba(18,31,43, var(--tracker-callout-alpha-top)), rgba(12,22,33, var(--tracker-callout-alpha-bottom)));
  box-shadow:0 14px 28px rgba(1,8,16,.36), inset 0 0 0 1px rgba(var(--tracker-marker-top-rgb), .18);
}

.train-tracker-marker.with-compact-callout .tracker-marker-compact-label{
  position:absolute;
  left:var(--tracker-label-x, 0px);
  top:var(--tracker-label-y, 0px);
  transform:translate(-50%, -50%);
  min-width:42px;
  min-height:32px;
  border-radius:999px;
  border:2px solid #ffffff;
  background:linear-gradient(180deg, rgba(var(--tracker-marker-top-rgb), var(--tracker-callout-alpha-top)), rgba(var(--tracker-marker-bottom-rgb), var(--tracker-callout-alpha-bottom)));
  color:#ffffff;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 11px;
  font-size:0.74rem;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  box-shadow:0 6px 14px var(--tracker-marker-shadow);
}

body[data-theme-mode="dark"] .train-tracker-marker.with-compact-callout .tracker-marker-compact-label{
  border-color:rgba(232,242,252,.72);
  background:
    linear-gradient(135deg, rgba(var(--tracker-marker-top-rgb), .18), rgba(var(--tracker-marker-bottom-rgb), .11)),
    linear-gradient(180deg, rgba(20,34,47, var(--tracker-callout-alpha-top)), rgba(13,24,36, var(--tracker-callout-alpha-bottom)));
  box-shadow:0 9px 18px rgba(1,8,16,.3), inset 0 0 0 1px rgba(var(--tracker-marker-top-rgb), .16);
}

body[data-theme-mode="dark"] .train-tracker-marker.with-details .tracker-marker-leader,
body[data-theme-mode="dark"] .train-tracker-marker.with-compact-callout .tracker-marker-leader{
  background:linear-gradient(90deg, rgba(255,255,255,.08), rgba(var(--tracker-marker-top-rgb), .24));
  box-shadow:0 0 0 1px rgba(192,210,228,.18);
}

body[data-theme-mode="dark"] .train-tracker-marker .tracker-marker-pill{
  border-color:rgba(235,244,250,.82);
  box-shadow:0 8px 18px rgba(1,8,16,.28);
}

body[data-theme-mode="dark"] .train-tracker-marker.with-details .tracker-marker-anchor,
body[data-theme-mode="dark"] .train-tracker-marker.with-compact-callout .tracker-marker-anchor{
  border-color:rgba(235,244,250,.84);
  box-shadow:0 4px 12px rgba(1,8,16,.28);
}

.train-tracker-marker .tracker-marker-train{
  display:block;
  font-size:0.86rem;
  font-weight:900;
  letter-spacing:.01em;
}

.train-tracker-marker .tracker-marker-meta{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  align-items:center;
}

.train-tracker-marker .tracker-marker-chip{
  display:inline-flex;
  align-items:center;
  padding:2px 6px;
  border-radius:999px;
  background:rgba(255,255,255,0.18);
  color:#ffffff;
  font-size:var(--atlas-chip-font);
  font-weight:800;
  line-height:1.2;
}

.train-tracker-marker .tracker-marker-speed{
  display:block;
  font-size:calc(0.68rem * var(--atlas-scale));
  opacity:0.92;
}

.train-tracker-marker .tracker-marker-stop{
  display:block;
  max-width:100%;
  font-size:calc(0.72rem * var(--atlas-scale));
  font-weight:700;
  white-space:normal;
  overflow:hidden;
  line-height:1.2;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}

.train-tracker-marker.delay-minor{
  --tracker-marker-top:#eab308;
  --tracker-marker-bottom:#ca8a04;
  --tracker-marker-top-rgb:234,179,8;
  --tracker-marker-bottom-rgb:202,138,4;
  --tracker-marker-shadow:rgba(202,138,4,.34);
  --tracker-marker-halo:rgba(250,204,21,.64);
  --tracker-marker-leader-end:rgba(202,138,4,.78);
  --tracker-marker-leader-selected:rgba(234,179,8,.96);
}

body[data-theme-mode="dark"] .train-tracker-marker{
  --tracker-marker-top:#2f8f63;
  --tracker-marker-bottom:#2a6f52;
  --tracker-marker-top-rgb:47,143,99;
  --tracker-marker-bottom-rgb:42,111,82;
  --tracker-marker-shadow:rgba(16,24,36,.34);
  --tracker-marker-halo:rgba(120,182,141,.34);
  --tracker-marker-leader-end:rgba(78,131,102,.48);
  --tracker-marker-leader-selected:rgba(120,182,141,.72);
}

body[data-theme-mode="dark"] .train-tracker-marker.delay-minor{
  --tracker-marker-top:#c3a45c;
  --tracker-marker-bottom:#9f8344;
  --tracker-marker-top-rgb:195,164,92;
  --tracker-marker-bottom-rgb:159,131,68;
  --tracker-marker-shadow:rgba(16,24,36,.34);
  --tracker-marker-halo:rgba(201,175,102,.34);
  --tracker-marker-leader-end:rgba(170,143,82,.48);
  --tracker-marker-leader-selected:rgba(201,175,102,.72);
}

body[data-theme-mode="dark"] .train-tracker-marker.delay-major{
  --tracker-marker-top:#c38655;
  --tracker-marker-bottom:#9c623b;
  --tracker-marker-top-rgb:195,134,85;
  --tracker-marker-bottom-rgb:156,98,59;
  --tracker-marker-shadow:rgba(16,24,36,.34);
  --tracker-marker-halo:rgba(203,141,92,.34);
  --tracker-marker-leader-end:rgba(171,119,80,.48);
  --tracker-marker-leader-selected:rgba(203,141,92,.72);
}

body[data-theme-mode="dark"] .train-tracker-marker.delay-severe{
  --tracker-marker-top:#bf7d7d;
  --tracker-marker-bottom:#975f5f;
  --tracker-marker-top-rgb:191,125,125;
  --tracker-marker-bottom-rgb:151,95,95;
  --tracker-marker-shadow:rgba(16,24,36,.34);
  --tracker-marker-halo:rgba(200,132,132,.34);
  --tracker-marker-leader-end:rgba(165,111,111,.48);
  --tracker-marker-leader-selected:rgba(200,132,132,.72);
}

.train-tracker-marker.delay-major{
  --tracker-marker-top:#f97316;
  --tracker-marker-bottom:#c2410c;
  --tracker-marker-top-rgb:249,115,22;
  --tracker-marker-bottom-rgb:194,65,12;
  --tracker-marker-shadow:rgba(194,65,12,.34);
  --tracker-marker-halo:rgba(251,146,60,.64);
  --tracker-marker-leader-end:rgba(194,65,12,.78);
  --tracker-marker-leader-selected:rgba(249,115,22,.96);
}

.train-tracker-marker.delay-severe{
  --tracker-marker-top:#ef4444;
  --tracker-marker-bottom:#b91c1c;
  --tracker-marker-top-rgb:239,68,68;
  --tracker-marker-bottom-rgb:185,28,28;
  --tracker-marker-shadow:rgba(185,28,28,.34);
  --tracker-marker-halo:rgba(248,113,113,.64);
  --tracker-marker-leader-end:rgba(185,28,28,.78);
  --tracker-marker-leader-selected:rgba(239,68,68,.96);
}

.train-tracker-marker.is-selected.with-details .tracker-marker-label,
.train-tracker-marker.is-selected.with-compact-callout .tracker-marker-compact-label{
  border-color:#fef3c7;
  box-shadow:0 0 0 3px rgba(254,243,199,.34), 0 12px 26px rgba(15,23,42,.24);
}

.train-tracker-marker.is-selected.with-details .tracker-marker-anchor,
.train-tracker-marker.is-selected.with-compact-callout .tracker-marker-anchor{
  border-color:#fef3c7;
  width:18px;
  height:18px;
  box-shadow:0 0 0 3px rgba(254,243,199,.28), 0 4px 14px rgba(15,23,42,.22);
}

.train-tracker-marker.is-selected.with-details .tracker-marker-leader,
.train-tracker-marker.is-selected.with-compact-callout .tracker-marker-leader{
  background:linear-gradient(90deg, rgba(255,255,255,.12), var(--tracker-marker-leader-selected));
  box-shadow:0 0 0 1px rgba(254,243,199,.72);
}

.train-tracker-marker.is-selected.with-details .tracker-marker-anchor::after,
.train-tracker-marker.is-selected.with-compact-callout .tracker-marker-anchor::after{
  opacity:1;
  border-color:rgba(254,243,199,.82);
  animation:atlasMarkerPulse 1.7s ease-out infinite;
}

.atlas-map-wrap{
  position:relative;
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#e4edf7;
}

body[data-theme-mode="dark"] .atlas-map-wrap{
  background:#09121f;
}

#map{
  width:100%;
  height:100%;
  min-height:var(--atlas-map-min-height);
}

#map .maplibregl-canvas{
  transition:filter .22s ease;
}

.atlas-focus-exit{
  position:absolute;
  top:14px;
  left:14px;
  z-index:4;
  display:none;
  pointer-events:auto;
  box-shadow:0 8px 22px rgba(15,23,42,.18);
}

body[data-theme-mode="dark"] #map .maplibregl-canvas-container{
  position:relative;
  background:#0f1721;
}

body[data-theme-mode="dark"] #map .maplibregl-canvas-container::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg, rgba(255,255,255,.015), rgba(0,0,0,.03));
}

body[data-theme-mode="dark"] #map .maplibregl-canvas{
  filter:brightness(1.12) contrast(1.14) saturate(.92);
}

.map-overlay-bar{
  position:absolute;
  left:14px;
  right:14px;
  bottom:14px;
  z-index:4;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  pointer-events:none;
}

.map-overlay-group{
  pointer-events:auto;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(213,222,234,.95);
  border-radius:14px;
  padding:10px 12px;
  box-shadow:0 12px 28px rgba(15,23,42,.12);
  backdrop-filter:blur(6px);
}

body[data-theme-mode="dark"] .map-overlay-group{
  background:rgba(10,20,36,.88);
  border-color:rgba(67,91,117,.9);
  box-shadow:0 14px 30px rgba(2,8,23,.34);
}

.map-overlay-title{
  display:block;
  margin:0 0 6px;
  font-size:calc(0.72rem * var(--atlas-scale));
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--muted);
}

.map-legend-panel{
  flex:1 1 auto;
  min-width:0;
}

.map-legend-grid{
  display:flex;
  flex-wrap:wrap;
  gap:8px 14px;
}

.map-view-panel{
  flex:0 0 170px;
}

.map-view-panel select{
  width:100%;
  border:1px solid var(--line);
  border-radius:10px;
  padding:calc(8px * var(--atlas-scale)) calc(10px * var(--atlas-scale));
  background:#ffffff;
  font:inherit;
  color:var(--text);
}

@keyframes atlasMarkerPulse{
  0%{
    transform:scale(1);
    opacity:.7;
  }
  100%{
    transform:scale(1.75);
    opacity:0;
  }
}

@keyframes atlasMarkerLiveHalo{
  0%{
    transform:scale(1);
    opacity:.62;
  }
  100%{
    transform:scale(1.9);
    opacity:0;
  }
}

@keyframes atlasMarkerChipPulse{
  0%, 100%{
    box-shadow:0 8px 20px rgba(3,105,161,.35);
  }
  50%{
    box-shadow:0 0 0 8px rgba(254,243,199,.14), 0 10px 24px rgba(3,105,161,.32);
  }
}

@keyframes atlasMarkerLivePulse{
  0%, 100%{
    box-shadow:0 8px 20px rgba(3,105,161,.35);
  }
  50%{
    box-shadow:0 0 0 10px rgba(125,211,252,.14), 0 10px 24px rgba(3,105,161,.34);
  }
}

.popup-table{
  border-collapse:collapse;
  width:100%;
}

.popup-table td{
  font-size:calc(0.82rem * var(--atlas-scale));
  padding:2px 0;
  vertical-align:top;
}

.popup-table td:first-child{
  font-weight:700;
  min-width:95px;
  padding-right:8px;
}

.maplibregl-popup-content{
  border-radius:10px;
  border:1px solid var(--line);
  box-shadow:0 8px 22px rgba(15,23,42,.2);
  padding:calc(10px * var(--atlas-scale)) calc(12px * var(--atlas-scale));
}

body[data-theme-mode="dark"] .maplibregl-popup-content{
  background:#15243a;
  color:var(--text);
}

body[data-focus-map="yes"] .atlas-search,
body[data-focus-map="yes"] .atlas-header-actions{
  display:none;
}

body[data-focus-map="yes"] .atlas-layout{
  grid-template-columns:1fr;
}

body[data-focus-map="yes"] .atlas-sidebar{
  display:none;
}

body[data-focus-map="yes"] .atlas-map-wrap{
  min-height:calc(100vh - calc(94px * var(--atlas-scale)));
}

body[data-focus-map="yes"] #map{
  min-height:calc(100vh - calc(94px * var(--atlas-scale)));
}

body[data-focus-map="yes"] .atlas-focus-exit{
  display:inline-flex;
}

@media (max-width:980px){
  .atlas-layout{
    grid-template-columns:1fr;
    height:auto;
  }
  .atlas-map-wrap{
    min-height:65vh;
    display:flex;
    flex-direction:column;
  }
  .search-row{
    grid-template-columns:1fr;
  }
  .atlas-display-row{
    grid-template-columns:1fr;
  }
  .panel-frame-head,
  .tracker-selection-head{
    align-items:flex-start;
  }
  .panel-actions,
  .tracker-selection-head-actions{
    width:100%;
    justify-content:flex-start;
    align-items:flex-start;
  }
  .tracker-selection-action-row{
    justify-content:flex-start;
  }
  .tracker-selection-metrics{
    grid-template-columns:1fr;
  }
  .tracker-selection-columns{
    grid-template-columns:1fr;
  }
  .tracker-list,
  .tracker-panel.has-selection .tracker-list,
  .tracker-selection{
    max-height:none;
  }
  .tracker-stop-topline{
    flex-direction:column;
    gap:6px;
  }
  .map-overlay-bar{
    position:static;
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
    padding:12px;
    background:linear-gradient(180deg, rgba(255,255,255,.94), rgba(247,250,252,.96));
    border-top:1px solid var(--line);
  }
  body[data-theme-mode="dark"] .map-overlay-bar{
    background:linear-gradient(180deg, rgba(8,16,29,.95), rgba(15,27,45,.97));
  }
  .map-view-panel{
    flex:1 1 auto;
  }
  .atlas-focus-exit{
    top:10px;
    left:10px;
  }
  #map{
    min-height:58vh;
  }
}
