/* Wiederverwendbare Komponenten: Status-Banner, Buttons, Ergebnis-Cards, Karten-Marker/Popups. */ .app-status { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); background: #fdecea; color: var(--color-danger); padding: var(--space-sm) var(--space-lg); font-size: 0.9rem; border-bottom: 1px solid var(--color-danger); } .app-status[hidden] { display: none; } .app-status__text { flex: 1; margin: 0; } .app-status__close { flex-shrink: 0; border: none; background: transparent; color: var(--color-danger); font-size: 1rem; line-height: 1; cursor: pointer; padding: 0 var(--space-xs); } .btn { border: none; border-radius: var(--radius-sm); padding: var(--space-sm) var(--space-md); font-size: 0.85rem; font-weight: 600; box-shadow: var(--shadow-card); } .btn:disabled { opacity: 0.6; cursor: not-allowed; } .btn--secondary { background: var(--color-surface); color: var(--color-primary-dark); } .btn--primary { background: var(--color-primary); color: #fff; text-decoration: none; display: inline-flex; align-items: center; } .btn--active { background: var(--color-primary); color: #fff; } .btn--danger { background: var(--color-danger); color: #fff; } .map-panel__loading { padding: var(--space-md); color: var(--color-text-muted); } /* Ergebnisliste */ .place-list { display: flex; flex-direction: column; gap: var(--space-md); } .list-empty { color: var(--color-text-muted); padding: var(--space-md) 0; } .place-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-md); display: flex; flex-direction: column; gap: var(--space-xs); cursor: pointer; transition: box-shadow 0.15s ease, transform 0.15s ease; } .place-card:hover, .place-card:focus-visible { box-shadow: var(--shadow-card); transform: translateY(-1px); outline: none; } .place-card__name { font-size: 1rem; font-weight: 700; } .place-card__category { align-self: flex-start; color: #fff; font-size: 0.75rem; font-weight: 600; padding: 2px var(--space-sm); border-radius: 999px; } .place-card__desc { color: var(--color-text-muted); font-size: 0.875rem; line-height: 1.4; } .place-card__distance { color: var(--color-text-muted); font-size: 0.8rem; font-weight: 600; } /* Karten-Marker (L.divIcon) */ .eventmap-marker { background: transparent; border: none; } .eventmap-marker__glyph { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; box-shadow: var(--shadow-card); font-size: 1rem; line-height: 1; border: 2px solid #fff; } /* "Hier bist du"-Marker für den übermittelten/manuell eingegebenen Nutzerstandort (Gitea Issue #2 "Standort auf Karte anzeigen"). */ .eventmap-user-marker { background: transparent; border: none; position: relative; } .eventmap-user-marker__dot { position: absolute; top: 50%; left: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; background: #1a73e8; border: 2px solid #fff; border-radius: 50%; box-shadow: var(--shadow-card); } .eventmap-user-marker__pulse { position: absolute; top: 50%; left: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; background: rgba(26, 115, 232, 0.35); border-radius: 50%; animation: eventmap-user-marker-pulse 2s ease-out infinite; } @keyframes eventmap-user-marker-pulse { 0% { transform: scale(0.6); opacity: 0.8; } 100% { transform: scale(1.8); opacity: 0; } } /* Karten-Popup */ .eventmap-popup { display: flex; flex-direction: column; gap: 4px; max-width: 220px; } .eventmap-popup__title { font-size: 0.95rem; } .eventmap-popup__category { font-size: 0.8rem; font-weight: 600; } .eventmap-popup__desc { font-size: 0.85rem; color: var(--color-text-muted); } /* Hover-Vorschau (Leaflet-Tooltip) auf Kartenmarkern */ .leaflet-tooltip.eventmap-tooltip-wrapper { background: var(--color-surface); color: var(--color-text); border: none; border-radius: var(--radius-sm); box-shadow: var(--shadow-card); padding: var(--space-sm) var(--space-md); /* Leaflet setzt auf .leaflet-tooltip standardmäßig white-space: nowrap, wodurch der Vorschau-Text (Kurzbeschreibung) über den Rahmen hinausläuft statt umzubrechen - hier gezielt für unsere Vorschau überschrieben. */ white-space: normal; max-width: 240px; } .leaflet-tooltip.eventmap-tooltip-wrapper::before { border-top-color: var(--color-surface); } .eventmap-tooltip { display: flex; flex-direction: column; gap: 4px; max-width: 220px; } .eventmap-tooltip__title { font-size: 0.9rem; } .eventmap-tooltip__category { font-size: 0.78rem; font-weight: 600; } .eventmap-tooltip__desc { font-size: 0.82rem; color: var(--color-text-muted); } .eventmap-tooltip__facts { font-size: 0.78rem; color: var(--color-text-muted); font-weight: 600; }