.visitor-marker { cursor: pointer; }
.visitor-marker > circle:first-child { stroke: #fff; stroke-width: 3; filter: drop-shadow(0 3px 5px #30364d55); }
.visitor-marker text { paint-order: stroke; stroke: #fff; stroke-width: 4; stroke-linejoin: round; }
.visitor-pulse { opacity: .35; animation: visitor-pulse 1.8s ease-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes visitor-pulse { 0% { transform: scale(.7); opacity: .5; } 100% { transform: scale(1.35); opacity: 0; } }
.visit-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin: 22px 0; }
.visit-metrics span { background: #f7f7fb; border: 1px solid #ececf3; border-radius: 8px; padding: 12px; color: #9297a6; font-size: 10px; }
.visit-metrics strong { display: block; color: #4c5365; font-size: 14px; margin-top: 5px; }
.visit-events { max-height: 300px; overflow: auto; }
.visit-event { display: grid; grid-template-columns: 10px 1fr auto; gap: 10px; align-items: start; padding: 11px 4px; border-bottom: 1px solid #f0f1f5; font-size: 11px; }
.visit-event i { width: 8px; height: 8px; border-radius: 50%; background: #5ac5a0; margin-top: 4px; }
.visit-event.conflict i { background: #d96c77; }
.visit-event strong { font-size: 12px; font-weight: 500; }
.visit-event p { margin: 3px 0 0; color: #9298a7; font-size: 10px; }
.visit-event > span { color: #969cab; }
.report-table { max-height: 55vh; }
.report-table table { white-space: nowrap; }
@media (prefers-reduced-motion: reduce) { .visitor-pulse { animation: none; } }
.check-list { border: 1px solid #e5e7ee; border-radius: 9px; margin: 16px 0; max-height: 180px; overflow: auto; padding: 10px 14px; }
.check-list legend { color: #747b8d; font-size: 12px; font-weight: 600; padding: 0 6px; }
.check-list label { display: flex; align-items: center; gap: 9px; font-weight: 400; margin: 8px 0; }
.check-list input { width: auto; }
#dashboard-select { min-width: 180px; padding: 8px 10px; }
