/* Timeline vertical line */
.timeline-track { position: relative; padding-left: 2.5rem; }
.timeline-track::before {
  content: ''; position: absolute; left: 1rem; top: 0; bottom: 0;
  width: 2px; background: #e2e8f0; z-index: 0;
}

/* Timeline node dot */
.timeline-node {
  position: relative; z-index: 1; width: 11px; height: 11px;
  border-radius: 50%; border: 2px solid white; flex-shrink: 0; margin-top: 1.15rem;
}

/* Category colors — node dots */
.cat-vorgeschichte    { background-color: #6b7280; box-shadow: 0 0 0 2px #6b7280; }
.cat-vermisstenfall   { background-color: #2563eb; box-shadow: 0 0 0 2px #2563eb; }
.cat-tatzeitfenster   { background-color: #dc2626; box-shadow: 0 0 0 2px #dc2626; }
.cat-suche            { background-color: #0891b2; box-shadow: 0 0 0 2px #0891b2; }
.cat-spur             { background-color: #7c3aed; box-shadow: 0 0 0 2px #7c3aed; }
.cat-fund             { background-color: #b91c1c; box-shadow: 0 0 0 2px #b91c1c; }
.cat-forensik         { background-color: #4338ca; box-shadow: 0 0 0 2px #4338ca; }
.cat-ermittlung       { background-color: #1d4ed8; box-shadow: 0 0 0 2px #1d4ed8; }
.cat-öffentlichkeit   { background-color: #0891b2; box-shadow: 0 0 0 2px #0891b2; }
.cat-zeugenaufruf     { background-color: #16a34a; box-shadow: 0 0 0 2px #16a34a; }
.cat-durchsuchung     { background-color: #ea580c; box-shadow: 0 0 0 2px #ea580c; }
.cat-festnahme        { background-color: #b91c1c; box-shadow: 0 0 0 2px #b91c1c; }
.cat-justiz           { background-color: #475569; box-shadow: 0 0 0 2px #475569; }
.cat-anklage          { background-color: #b45309; box-shadow: 0 0 0 2px #b45309; }
.cat-prozess          { background-color: #1d4ed8; box-shadow: 0 0 0 2px #1d4ed8; }
.cat-prozess_forensik { background-color: #7c3aed; box-shadow: 0 0 0 2px #7c3aed; }
.cat-prozess_tatort   { background-color: #be123c; box-shadow: 0 0 0 2px #be123c; }

/* Category badges */
.badge-vorgeschichte    { background: #f3f4f6; color: #374151; border: 1px solid #d1d5db; }
.badge-vermisstenfall   { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }
.badge-tatzeitfenster   { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }
.badge-suche            { background: #ecfeff; color: #0e7490; border: 1px solid #a5f3fc; }
.badge-spur             { background: #f5f3ff; color: #6d28d9; border: 1px solid #ddd6fe; }
.badge-fund             { background: #fff1f2; color: #be123c; border: 1px solid #fecdd3; }
.badge-forensik         { background: #eef2ff; color: #3730a3; border: 1px solid #c7d2fe; }
.badge-ermittlung       { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }
.badge-öffentlichkeit   { background: #ecfeff; color: #0e7490; border: 1px solid #a5f3fc; }
.badge-zeugenaufruf     { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; }
.badge-durchsuchung     { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; }
.badge-festnahme        { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
.badge-justiz           { background: #f8fafc; color: #475569; border: 1px solid #cbd5e1; }
.badge-anklage          { background: #fffbeb; color: #b45309; border: 1px solid #fde68a; }
.badge-prozess          { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }
.badge-prozess_forensik { background: #f5f3ff; color: #6d28d9; border: 1px solid #ddd6fe; }
.badge-prozess_tatort   { background: #fff1f2; color: #be123c; border: 1px solid #fecdd3; }

/* Card left border */
.card-border-vorgeschichte    { border-left: 3px solid #6b7280; }
.card-border-vermisstenfall   { border-left: 3px solid #2563eb; }
.card-border-tatzeitfenster   { border-left: 3px solid #dc2626; }
.card-border-suche            { border-left: 3px solid #0891b2; }
.card-border-spur             { border-left: 3px solid #7c3aed; }
.card-border-fund             { border-left: 3px solid #b91c1c; }
.card-border-forensik         { border-left: 3px solid #4338ca; }
.card-border-ermittlung       { border-left: 3px solid #1d4ed8; }
.card-border-öffentlichkeit   { border-left: 3px solid #0891b2; }
.card-border-zeugenaufruf     { border-left: 3px solid #16a34a; }
.card-border-durchsuchung     { border-left: 3px solid #ea580c; }
.card-border-festnahme        { border-left: 3px solid #b91c1c; }
.card-border-justiz           { border-left: 3px solid #475569; }
.card-border-anklage          { border-left: 3px solid #b45309; }
.card-border-prozess          { border-left: 3px solid #1d4ed8; }
.card-border-prozess_forensik { border-left: 3px solid #7c3aed; }
.card-border-prozess_tatort   { border-left: 3px solid #be123c; }

/* Relevance dots */
.rel-kritisch { background-color: #dc2626; }
.rel-hoch     { background-color: #f97316; }
.rel-mittel   { background-color: #eab308; }
.rel-niedrig  { background-color: #22c55e; }

/* Card interactions */
.event-card { transition: box-shadow 0.1s; }
.event-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.event-card.selected { box-shadow: 0 0 0 2px #1d4ed8; }

/* Sidebar */
.sidebar-item { transition: background 0.1s; }
.sidebar-item:hover { background: #f1f5f9; }
.sidebar-item.active { background: #eff6ff; color: #1d4ed8; }

/* Scrollbar */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

/* Modal */
@keyframes fadeIn { from { opacity: 0; transform: scale(0.97); } to { opacity: 1; transform: scale(1); } }

/* Line clamp */
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
