{"version":3,"file":"camp2gether-c2g-ui-presets.mjs","sources":["../../../projects/c2g-ui/presets/packing-list/packing-list.models.ts","../../../projects/c2g-ui/presets/packing-list/packing-list.categories.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-item.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-item.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list-category.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-category.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list-filters.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-filters.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list-private-list.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-private-list.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list-item-create.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-item-create.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list.component.html","../../../projects/c2g-ui/presets/packing-list/packing-list-stats.component.ts","../../../projects/c2g-ui/presets/packing-list/packing-list-stats.component.html","../../../projects/c2g-ui/presets/weather-widget/weather-icon.utils.ts","../../../projects/c2g-ui/presets/weather-widget/weather-widget.component.ts","../../../projects/c2g-ui/presets/weather-widget/weather-widget.component.html","../../../projects/c2g-ui/presets/member-list/member-tags/member-tags.component.ts","../../../projects/c2g-ui/presets/member-list/member-tags/member-tags.component.html","../../../projects/c2g-ui/presets/action-menu/action-menu.component.ts","../../../projects/c2g-ui/presets/action-menu/action-menu.component.html","../../../projects/c2g-ui/presets/member-list/member-item/member-item.component.ts","../../../projects/c2g-ui/presets/member-list/member-item/member-item.component.html","../../../projects/c2g-ui/presets/member-list/member-list/member-list.component.ts","../../../projects/c2g-ui/presets/member-list/member-list/member-list.component.html","../../../projects/c2g-ui/presets/member-list/member-panel/member-panel.component.ts","../../../projects/c2g-ui/presets/member-list/member-panel/member-panel.component.html","../../../projects/c2g-ui/presets/menu/menu.component.ts","../../../projects/c2g-ui/presets/menu/menu.component.html","../../../projects/c2g-ui/presets/menu/main-navigation/submenu-item.component.ts","../../../projects/c2g-ui/presets/menu/main-navigation/submenu-item.component.html","../../../projects/c2g-ui/presets/menu/main-navigation/submenu.component.ts","../../../projects/c2g-ui/presets/menu/main-navigation/submenu.component.html","../../../projects/c2g-ui/presets/menu/main-navigation/main-navigation-item.component.ts","../../../projects/c2g-ui/presets/menu/main-navigation/main-navigation-item.component.html","../../../projects/c2g-ui/presets/menu/main-navigation/main-navigation.component.ts","../../../projects/c2g-ui/presets/menu/main-navigation/main-navigation.component.html","../../../projects/c2g-ui/presets/dashboard/next-adventure-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/next-adventure-widget.component.html","../../../projects/c2g-ui/presets/dashboard/pack-status-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/pack-status-widget.component.html","../../../projects/c2g-ui/presets/dashboard/pack-weight-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/pack-weight-widget.component.html","../../../projects/c2g-ui/presets/dashboard/member-readiness-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/member-readiness-widget.component.html","../../../projects/c2g-ui/presets/dashboard/streak-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/streak-widget.component.html","../../../projects/c2g-ui/presets/dashboard/camping-score-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/camping-score-widget.component.html","../../../projects/c2g-ui/presets/dashboard/rain-visualization-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/rain-visualization-widget.component.html","../../../projects/c2g-ui/presets/dashboard/group-composition-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/group-composition-widget.component.html","../../../projects/c2g-ui/presets/dashboard/confetti-success.lottie.ts","../../../projects/c2g-ui/presets/dashboard/critical-items-alert-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/critical-items-alert-widget.component.html","../../../projects/c2g-ui/presets/dashboard/wind-indicator-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/wind-indicator-widget.component.html","../../../projects/c2g-ui/presets/dashboard/total-km-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/total-km-widget.component.html","../../../projects/c2g-ui/presets/dashboard/tour-type-split-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/tour-type-split-widget.component.html","../../../projects/c2g-ui/presets/dashboard/tour-rhythm-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/tour-rhythm-widget.component.html","../../../projects/c2g-ui/presets/dashboard/season-dna-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/season-dna-widget.component.html","../../../projects/c2g-ui/presets/dashboard/weight-history-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/weight-history-widget.component.html","../../../projects/c2g-ui/presets/dashboard/gear-value-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/gear-value-widget.component.html","../../../projects/c2g-ui/presets/dashboard/weight-breakdown-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/weight-breakdown-widget.component.html","../../../projects/c2g-ui/presets/dashboard/adventure-score-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/adventure-score-widget.component.html","../../../projects/c2g-ui/presets/dashboard/top-gear-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/top-gear-widget.component.html","../../../projects/c2g-ui/presets/dashboard/group-activity-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/group-activity-widget.component.html","../../../projects/c2g-ui/presets/dashboard/gear-sharing-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/gear-sharing-widget.component.html","../../../projects/c2g-ui/presets/dashboard/adventure-radius-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/adventure-radius-widget.component.html","../../../projects/c2g-ui/presets/dashboard/pack-progress-widget.component.ts","../../../projects/c2g-ui/presets/dashboard/pack-progress-widget.component.html","../../../projects/c2g-ui/presets/feature-unavailable/feature-unavailable.component.ts","../../../projects/c2g-ui/presets/feature-unavailable/feature-unavailable.component.html","../../../projects/c2g-ui/presets/camp2gether-c2g-ui-presets.ts"],"sourcesContent":["export type C2gPackingVisibility = 'shared' | 'personal' | 'private';\nexport type C2gPackingAssignmentStatus = 'assigned' | 'packed' | 'confirmed';\n\nexport interface C2gPackingListAssignment {\n  itemId: string;\n  memberId: string;\n  memberName?: string;\n  packedBy?: string;\n  packedByName?: string;\n  status: C2gPackingAssignmentStatus;\n  quantity?: number;\n}\n\nexport interface C2gPackingItemAssignedEvent {\n  itemId: string;\n  memberId: string;\n  assigned: boolean;\n  quantity?: number;\n}\n\nexport interface C2gPackingListItem {\n  id: string;\n  name: string;\n  category: string;\n  essential?: boolean;\n  visibility: C2gPackingVisibility;\n  quantity?: number;\n  weightKg?: number;\n  packedVolumeL?: number;\n  priority?: string;\n  reason?: string;\n  weather?: boolean;\n  hint?: string;\n  confirmed?: boolean;\n  createdBy?: string;\n  privateOwnerVisible?: boolean;\n  assignments?: C2gPackingListAssignment[];\n  /** How many times this item was removed (1-2 = suggested again, ≥3 = suppressed). */\n  removedCount?: number;\n  /** True when the item was removed 1-2× and is being re-suggested. */\n  suggested?: boolean;\n}\n\nexport type C2gPackingGapSeverity = 'critical' | 'warning';\nexport type C2gPackingGapType = 'missing_category' | 'missing_dependency';\n\nexport interface C2gPackingGap {\n  type: C2gPackingGapType;\n  severity: C2gPackingGapSeverity;\n  /** The ItemKey that triggered the gap (empty for category gaps). */\n  item_key: string;\n  /** Keys of the items that are absent. */\n  missing_keys: string[];\n  /** English fallback message when no i18n key is available. */\n  message: string;\n}\n\nexport interface C2gPackingListMember {\n  id: string;\n  name: string;\n  initials?: string;\n  color?: string;\n  type?: 'adult' | 'child' | 'baby' | 'pet';\n  hasAccount?: boolean;\n}\n\nexport interface C2gPackingCategoryInfo {\n  key: string;\n  labelKey: string;\n  label?: string;   // optional human-readable fallback (used when no i18n pipe is available)\n  icon: string;\n}\n\nexport interface C2gPackingListFilterState {\n  query: string;\n  visibility: 'all' | C2gPackingVisibility;\n  essentialsOnly: boolean;\n  memberIds: string[];\n}\n\nexport interface C2gPackingListMemberStatus {\n  memberId: string;\n  memberName: string;\n  initials?: string;\n  checked: boolean;\n  canToggle: boolean;\n}\n\nexport interface C2gPackingListMemberOverlayRequest {\n  itemId: string;\n  itemName: string;\n  members: C2gPackingListMemberStatus[];\n}\n\nexport interface C2gPackingListLabels {\n  searchPlaceholderKey: string;\n  essentialsOnlyKey: string;\n  showAllVisibilityKey: string;\n  sharedVisibilityKey: string;\n  personalVisibilityKey: string;\n  privateVisibilityKey: string;\n  privateSectionTitleKey: string;\n  emptyStateKey: string;\n  categoryStatsKey: string;\n  deleteConfirmKey: string;\n  addItemKey?: string;\n  createItemKey?: string;\n  itemNameKey?: string;\n  categoryKey?: string;\n  visibilityKey?: string;\n  essentialKey?: string;\n  weatherTagKey?: string;\n  quantityKey?: string;\n  weightKey?: string;\n  volumeKey?: string;\n  hintKey?: string;\n  cancelKey?: string;\n  createKey?: string;\n  suggestedBadgeKey?: string;\n  suggestedBadge2xKey?: string;\n  suggestedHint1xKey?: string;\n  suggestedHint2xKey?: string;\n  suggestedTooltip1xKey?: string;\n  suggestedTooltip2xKey?: string;\n}\n\nexport const DEFAULT_PACKING_LIST_LABEL_KEYS: C2gPackingListLabels = {\n  searchPlaceholderKey: 'packingList.search.placeholder',\n  essentialsOnlyKey: 'packingList.filters.essentialsOnly',\n  showAllVisibilityKey: 'packingList.filters.visibility.all',\n  sharedVisibilityKey: 'packingList.filters.visibility.shared',\n  personalVisibilityKey: 'packingList.filters.visibility.personal',\n  privateVisibilityKey: 'packingList.filters.visibility.private',\n  privateSectionTitleKey: 'packingList.private.title',\n  emptyStateKey: 'packingList.empty',\n  categoryStatsKey: 'packingList.category.stats',\n  deleteConfirmKey: 'packingList.delete.confirm',\n  addItemKey: 'packingList.addItem',\n  createItemKey: 'packingList.createItem',\n  itemNameKey: 'packingList.itemName',\n  categoryKey: 'packingList.category',\n  visibilityKey: 'packingList.visibility',\n  essentialKey: 'packingList.essential',\n  weatherTagKey: 'packingList.weather',\n  quantityKey: 'packingList.quantity',\n  weightKey: 'packingList.weight',\n  volumeKey: 'packingList.volume',\n  hintKey: 'packingList.hint',\n  cancelKey: 'packingList.cancel',\n  createKey: 'packingList.create',\n  suggestedBadgeKey: 'Suggestion',\n  suggestedBadge2xKey: 'Removed 2×',\n  suggestedHint1xKey: 'Removed once — still recommended for this trip.',\n  suggestedHint2xKey: 'Removed twice — final suggestion, will not appear again after this.',\n  suggestedTooltip1xKey: 'Removed once — keep the suggestion?',\n  suggestedTooltip2xKey: 'Removed twice — final suggestion',\n};\n\nexport interface C2gPackingListPermissions {\n  isOrganizer: boolean;\n  isGuest: boolean;\n  isSolo: boolean;\n  readOnly: boolean;\n  canManageAssignments?: boolean;\n  canMembersManageSharedItems?: boolean;\n  canMembersAddSharedItems?: boolean;\n}\n\n// === Generics: Host defines available fields ===\n\n/**\n * Feature flags (like GridOptions booleans).\n * Applied globally to all rows.\n */\nexport interface C2gPackingListFeatures {\n  search?: boolean;           // show search bar (default: true)\n  filters?: boolean;          // show visibility/member filter bar (default: true)\n  stats?: boolean;            // show category weight/count stats (default: true)\n  create?: boolean;           // show add-item button + dialog (default: false)\n  editItem?: boolean;         // trigger edit action per item (default: per permissions)\n  deleteItem?: boolean;       // trigger delete action per item (default: per permissions)\n  assignments?: boolean;      // show member assignment chips/overlay (default: true)\n  privateSection?: boolean;   // separate list for private items (default: false)\n  expandAllOnLoad?: boolean;  // expand all categories on mount (default: false)\n}\n\n/**\n * Column definition - generic over host-defined field type.\n * Host specifies which fields are available via TField generic.\n */\nexport interface C2gPackingListColumnDef<TField extends string = string> {\n  field: TField;\n  visible?: boolean;    // default: true\n  editable?: boolean;   // default: driven by permissions\n  sortable?: boolean;   // default: false\n  labelKey?: string;    // i18n key override for this field\n}\n\n/**\n * Sort state - generic over host-defined field type.\n */\nexport type C2gPackingSortDir = 'asc' | 'desc';\n\nexport interface C2gPackingListSortState<TField extends string = string> {\n  field: TField;\n  dir: C2gPackingSortDir;\n}\n\n/**\n * Custom row action - host can trigger these via (rowActionTriggered).\n */\nexport interface C2gPackingListRowAction {\n  id: string;\n  labelKey: string;\n  icon?: string;\n  showWhen?: (item: C2gPackingListItem, permissions: C2gPackingListPermissions) => boolean;\n}\n\n/**\n * Main config object - generic over host-defined field type.\n * Like AgGrid GridOptions.\n */\nexport interface C2gPackingListConfig<TField extends string = string> {\n  features?: C2gPackingListFeatures;\n  columnDefs?: C2gPackingListColumnDef<TField>[];\n  sort?: C2gPackingListSortState<TField>;\n  rowActions?: C2gPackingListRowAction[];\n  initialFilter?: Partial<C2gPackingListFilterState>;\n  defaultExpandedCount?: number;  // how many categories auto-expand (default: 3)\n}\n\nexport const DEFAULT_PACKING_LIST_CONFIG: C2gPackingListConfig = {\n  features: {\n    search: true,\n    filters: true,\n    stats: true,\n    create: false,\n    assignments: true,\n    privateSection: false,\n    expandAllOnLoad: false,\n  },\n  defaultExpandedCount: 3,\n};\n","import { C2gPackingCategoryInfo } from './packing-list.models';\n\nexport const C2G_PACKING_CATEGORY_INFO: Record<string, C2gPackingCategoryInfo> = {\n  shelter:      { key: 'shelter',      labelKey: 'packingList.categories.shelter',      label: 'Unterkunft',        icon: 'home' },\n  sleeping:     { key: 'sleeping',     labelKey: 'packingList.categories.sleeping',     label: 'Schlafen',          icon: 'bed' },\n  cookingEating:{ key: 'cookingEating',labelKey: 'packingList.categories.cookingEating',label: 'Kochen & Essen',    icon: 'restaurant' },\n  clothing:     { key: 'clothing',     labelKey: 'packingList.categories.clothing',     label: 'Kleidung',          icon: 'checkroom' },\n  navigation:   { key: 'navigation',   labelKey: 'packingList.categories.navigation',   label: 'Navigation',        icon: 'explore' },\n  lighting:     { key: 'lighting',     labelKey: 'packingList.categories.lighting',     label: 'Beleuchtung',       icon: 'light_mode' },\n  safety:       { key: 'safety',       labelKey: 'packingList.categories.safety',       label: 'Sicherheit',        icon: 'medical_services' },\n  tools:        { key: 'tools',        labelKey: 'packingList.categories.tools',        label: 'Werkzeug',          icon: 'build' },\n  hygiene:      { key: 'hygiene',      labelKey: 'packingList.categories.hygiene',      label: 'Hygiene',           icon: 'wash' },\n  furniture:    { key: 'furniture',    labelKey: 'packingList.categories.furniture',    label: 'Möbel & Ausstattung', icon: 'chair' },\n  hydration:    { key: 'hydration',    labelKey: 'packingList.categories.hydration',    label: 'Getränke',          icon: 'water_drop' },\n  mobility:     { key: 'mobility',     labelKey: 'packingList.categories.mobility',     label: 'Transport',         icon: 'backpack' },\n  activity:     { key: 'activity',     labelKey: 'packingList.categories.activity',     label: 'Aktivitäten',       icon: 'sports' },\n  documents:    { key: 'documents',    labelKey: 'packingList.categories.documents',    label: 'Dokumente',         icon: 'description' },\n  other:        { key: 'other',        labelKey: 'packingList.categories.other',        label: 'Sonstiges',         icon: 'category' }\n};\n\nexport function resolvePackingCategory(categoryKey: string): C2gPackingCategoryInfo {\n  return (\n    C2G_PACKING_CATEGORY_INFO[categoryKey] ?? {\n      key: categoryKey,\n      labelKey: `packingList.categories.${categoryKey}`,\n      icon: 'inventory_2'\n    }\n  );\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { AvatarComponent, BadgeComponent, TagComponent, DropdownMenuComponent } from '@camp2gether/c2g-ui';\nimport { C2gAvatarBadge, C2gDropdownMenuItem } from '@camp2gether/c2g-ui';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n  C2gPackingItemAssignedEvent,\n  C2gPackingListItem,\n  C2gPackingListLabels,\n  C2gPackingListMember,\n  C2gPackingListMemberOverlayRequest,\n  C2gPackingListMemberStatus,\n  C2gPackingListPermissions,\n  DEFAULT_PACKING_LIST_LABEL_KEYS\n} from './packing-list.models';\n\n@Component({\n  selector: 'c2g-packing-list-item',\n  standalone: true,\n  imports: [AvatarComponent, BadgeComponent, TagComponent, DropdownMenuComponent, MatIconModule],\n  templateUrl: './packing-list-item.component.html',\n  styleUrls: ['./packing-list-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListItemComponent {\n  readonly item = input.required<C2gPackingListItem>();\n  readonly members = input.required<C2gPackingListMember[]>();\n  readonly currentUserId = input.required<string>();\n  readonly permissions = input.required<C2gPackingListPermissions>();\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n  readonly selectedMemberIds = input<string[]>([]);\n\n  readonly itemChecked = output<{ itemId: string; checked: boolean }>();\n  readonly itemAssigned = output<C2gPackingItemAssignedEvent>();\n  readonly itemDeleted = output<string>();\n  readonly itemEditRequested = output<string>();\n  readonly personalItemToggled = output<{ itemId: string; memberId: string; checked: boolean }>();\n  readonly memberOverlayRequested = output<C2gPackingListMemberOverlayRequest>();\n\n  readonly overlayOpen = signal(false);\n  readonly overlaySearch = signal('');\n  readonly quantityPickerOpen = signal(false);\n  readonly quantityPickerValue = signal(1);\n  readonly delegateDialogOpen = signal(false);\n  readonly delegateMemberId = signal<string | null>(null);\n  readonly delegateQuantity = signal(1);\n  readonly avatarDialogOpen = signal(false);\n  readonly avatarDialogMemberId = signal<string | null>(null);\n  readonly avatarDialogQuantity = signal(1);\n  readonly personalAssignDialogOpen = signal(false);\n  readonly personalAssignSearch = signal('');\n  readonly personalAssignMemberId = signal<string | null>(null);\n\n  readonly applicableMembers = computed(() => {\n    const item = this.item();\n    if (item.visibility === 'personal') {\n      return this.members().filter(m => m.type !== 'pet' && m.type !== 'baby');\n    }\n    return this.members().filter(m => m.type !== 'child' && m.type !== 'pet');\n  });\n\n  readonly visibleMembers = computed(() => {\n    const selected = this.selectedMemberIds();\n    if (selected.length === 0) {\n      return this.applicableMembers();\n    }\n    const allowed = new Set(selected);\n    return this.applicableMembers().filter(member => allowed.has(member.id));\n  });\n\n  readonly packedCount = computed(() => {\n    const assignments = this.item().assignments ?? [];\n    return assignments\n      .filter(a => a.status === 'packed' || a.status === 'confirmed')\n      .reduce((sum, a) => sum + Math.max(1, a.quantity ?? 1), 0);\n  });\n\n  readonly isPacked = computed(() => this.packedCount() > 0 || !!this.item().confirmed);\n\n  readonly requiredQuantity = computed(() => Math.max(1, this.item().quantity ?? 1));\n\n  readonly checkedMembers = computed(() => {\n    const currentUserId = this.currentUserId();\n    const checked = this.visibleMembers().filter(member => this.isMemberChecked(member.id));\n    return checked.sort((a, b) => {\n      if (a.id === currentUserId) return -1;\n      if (b.id === currentUserId) return 1;\n      return 0;\n    });\n  });\n\n  readonly personalAssignedMembers = computed(() => {\n    if (this.item().visibility !== 'personal') {\n      return [] as C2gPackingListMember[];\n    }\n\n    const currentUserId = this.currentUserId();\n    const assigned = this.visibleMembers().filter(member => this.hasAnyAssignment(member.id));\n    return assigned.sort((a, b) => {\n      if (a.id === currentUserId) return -1;\n      if (b.id === currentUserId) return 1;\n      return 0;\n    });\n  });\n\n  readonly missingMembers = computed(() =>\n    this.visibleMembers().filter(member => !this.isMemberChecked(member.id))\n  );\n\n  readonly checkedPreview = computed(() => this.checkedMembers().slice(0, 3));\n  readonly hiddenCheckedCount = computed(() => Math.max(0, this.checkedMembers().length - this.checkedPreview().length));\n  readonly personalAssignedPreview = computed(() => this.personalAssignedMembers().slice(0, 3));\n  readonly personalHiddenAssignedCount = computed(() => Math.max(0, this.personalAssignedMembers().length - this.personalAssignedPreview().length));\n  readonly missingPreview = computed(() => this.missingMembers().slice(0, 3));\n  readonly hiddenMissingCount = computed(() => Math.max(0, this.missingMembers().length - this.missingPreview().length));\n\n  readonly currentUserMember = computed(() =>\n    this.members().find(member => member.id === this.currentUserId()) ?? null\n  );\n\n  readonly isItemOwner = computed(() => {\n    const ownerId = this.item().createdBy;\n    if (!ownerId) {\n      // Legacy items may not carry ownership metadata.\n      return true;\n    }\n    return ownerId === this.currentUserId();\n  });\n\n  readonly canEditOrDeleteItem = computed(() => {\n    const permissions = this.permissions();\n    if (permissions.readOnly) {\n      return false;\n    }\n\n    const item = this.item();\n    if (item.visibility === 'shared') {\n      return permissions.isOrganizer || !!permissions.canMembersManageSharedItems || this.isItemOwner();\n    }\n\n    return permissions.isOrganizer || this.isItemOwner();\n  });\n\n  readonly canShowAssignCta = computed(() => {\n    const permissions = this.permissions();\n    if (permissions.readOnly) {\n      return false;\n    }\n    if (permissions.isSolo) {\n      return false;\n    }\n    const canManage = permissions.isOrganizer || !!permissions.canManageAssignments;\n    if (!canManage) {\n      return false;\n    }\n    // For shared items: non-organizers only see the CTA when slots are open.\n    // Organizers always see it so they can manage existing assignments.\n    if (this.item().visibility === 'shared' && !permissions.isOrganizer) {\n      return this.sharedMissingSlots() > 0;\n    }\n    return true;\n  });\n\n  readonly menuItems = computed<C2gDropdownMenuItem[]>(() => {\n    const items: C2gDropdownMenuItem[] = [];\n    if (this.canShowAssignCta()) {\n      items.push({ id: 'assign', label: this.isPlanner() ? 'Zuweisen' : 'Einpacken', icon: 'person' });\n    }\n    if (this.canEditOrDeleteItem()) {\n      items.push({ id: 'edit', label: 'Bearbeiten', icon: 'edit' });\n      items.push({ id: 'delete', label: 'Löschen', icon: 'delete', danger: true, dividerBefore: true });\n    }\n    return items;\n  });\n\n  onMenuItemSelected(item: C2gDropdownMenuItem): void {\n    if (item.id === 'assign') this.requestAssign();\n    else if (item.id === 'edit') this.requestEdit();\n    else if (item.id === 'delete') this.deleteItem();\n  }\n\n  readonly sharedAssignmentsCount = computed(() => {\n    const assignments = this.item().assignments ?? [];\n    return assignments\n      .filter(a => a.status === 'confirmed' || a.status === 'packed')\n      .reduce((sum, a) => sum + Math.max(1, a.quantity ?? 1), 0);\n  });\n\n  readonly sharedTotalAssignedCount = computed(() => {\n    const assignments = this.item().assignments ?? [];\n    return assignments.reduce((sum, a) => sum + Math.max(1, a.quantity ?? 1), 0);\n  });\n\n  readonly sharedMissingSlots = computed(() => Math.max(0, this.requiredQuantity() - this.sharedTotalAssignedCount()));\n\n  readonly selfAssignableMaxQuantity = computed(() => Math.max(1, this.sharedMissingSlots()));\n\n  readonly delegateCandidates = computed(() =>\n    this.visibleMembers().filter(member => this.canAssignShared(member.id))\n  );\n\n  readonly selfAssignedToShared = computed(() => this.isSharedAssigned(this.currentUserId()));\n\n  readonly isPlanner = computed(() => {\n    const p = this.permissions();\n    return p.isOrganizer || !!p.canManageAssignments;\n  });\n\n  // Label for the \"join / adjust\" button on shared items\n  readonly joinBtnLabel = computed(() => {\n    if (!this.selfAssignedToShared()) return '+ Eintragen';\n    return this.isPlanner() ? 'Menge anpassen' : 'Meine Menge anpassen';\n  });\n\n  // Context label inside the quantity picker\n  readonly pickerLabel = computed(() => {\n    if (this.isPlanner()) return 'Wie viel wird mitgenommen?';\n    return 'Wie viel nimmst du mit?';\n  });\n\n  // Context label inside the delegate dialog\n  readonly delegatePickerLabel = computed(() => 'Wer bringt es mit? Menge festlegen:');\n\n  readonly canSelfAssignShared = computed(() => {\n    const currentUserId = this.currentUserId();\n    if (!this.canAssignShared(currentUserId)) {\n      return false;\n    }\n    if (this.selfAssignedToShared()) {\n      return true;\n    }\n    return this.sharedMissingSlots() > 0;\n  });\n\n  readonly selectedDelegateMember = computed(() => {\n    const memberId = this.delegateMemberId();\n    if (!memberId) {\n      return null;\n    }\n    return this.members().find(member => member.id === memberId) ?? null;\n  });\n\n  readonly canManagePersonalAssignments = computed(() => {\n    const permissions = this.permissions();\n    if (permissions.readOnly || permissions.isSolo) {\n      return false;\n    }\n\n    return permissions.isOrganizer || !!permissions.canManageAssignments || this.isItemOwner();\n  });\n\n  readonly personalAssignableMembers = computed(() => {\n    if (this.item().visibility !== 'personal' || !this.canManagePersonalAssignments()) {\n      return [] as C2gPackingListMember[];\n    }\n\n    return this.visibleMembers().filter(member => !this.hasAnyAssignment(member.id));\n  });\n\n  readonly filteredPersonalAssignableMembers = computed(() => {\n    const query = this.personalAssignSearch().trim().toLowerCase();\n    if (!query) {\n      return this.personalAssignableMembers();\n    }\n\n    return this.personalAssignableMembers().filter(member => {\n      const searchable = `${member.name} ${member.initials ?? ''}`.toLowerCase();\n      return searchable.includes(query);\n    });\n  });\n\n  readonly selectedPersonalAssignMember = computed(() => {\n    const memberId = this.personalAssignMemberId();\n    if (!memberId) {\n      return null;\n    }\n\n    return this.members().find(member => member.id === memberId) ?? null;\n  });\n\n  readonly personalDenominator = computed(() => {\n    const q = this.item().quantity;\n    const memberCount = this.visibleMembers().length;\n    // quantity < memberCount means a targeted rule (per_infant, per_pet, per_group)\n    // where only a subset needs the item → use quantity as the authoritative count.\n    // quantity >= memberCount means a per_person rule (baby counted in Size by the\n    // backend but excluded from the assignable member list) → use memberCount.\n    if (q != null && q < memberCount) return Math.max(1, q);\n    return Math.max(1, memberCount);\n  });\n\n  readonly completionText = computed(() => {\n    if (this.item().visibility === 'shared') {\n      return `${this.sharedAssignmentsCount()}/${this.requiredQuantity()} bereit`;\n    }\n\n    if (this.item().visibility === 'personal') {\n      return `${this.checkedMembers().length}/${this.personalDenominator()} bereit`;\n    }\n\n    return this.isPacked() ? 'bereit' : 'offen';\n  });\n\n  readonly progressNumerator = computed(() => {\n    if (this.item().visibility === 'shared') {\n      return this.sharedAssignmentsCount();\n    }\n\n    if (this.item().visibility === 'personal') {\n      return this.checkedMembers().length;\n    }\n\n    return this.isPacked() ? 1 : 0;\n  });\n\n  readonly progressDenominator = computed(() => {\n    if (this.item().visibility === 'shared') {\n      return this.requiredQuantity();\n    }\n\n    if (this.item().visibility === 'personal') {\n      return this.personalDenominator();\n    }\n\n    return 1;\n  });\n\n  readonly progressRatioText = computed(() => `${this.progressNumerator()}/${this.progressDenominator()}`);\n\n  // Badge shown top-right: \"x/y\" packed — only for group items\n  readonly quantityBadge = computed(() => {\n    const vis = this.item().visibility;\n    if (this.permissions().isSolo || vis === 'private') return null;\n    const n = this.progressNumerator();\n    const d = this.progressDenominator();\n    if (d <= 1 && vis === 'shared') return null; // single shared item, dot is enough\n    return { value: `${n}/${d}`, tone: this.progressTone() } as const;\n  });\n\n  readonly progressPercentage = computed(() => {\n    const denominator = this.progressDenominator();\n    if (denominator <= 0) {\n        return 0;\n    }\n\n    return Math.min(100, Math.round((this.progressNumerator() / denominator) * 100));\n  });\n\n  readonly progressTone = computed<'danger' | 'warning' | 'success'>(() => {\n    const progress = this.progressPercentage();\n    if (progress === 100) {\n      return 'success';\n    }\n    if (progress >= 50) {\n      return 'warning';\n    }\n    return 'danger';\n  });\n\n  readonly needsPackLabel = computed(() => {\n    if (this.item().visibility === 'shared') {\n      return `${this.sharedMissingSlots()} offen`;\n    }\n    const missing = this.personalDenominator() - this.checkedMembers().length;\n    return `${Math.max(0, missing)} müssen packen`;\n  });\n\n  readonly overlayMembers = computed<C2gPackingListMemberStatus[]>(() =>\n    this.visibleMembers().map(member => ({\n      memberId: member.id,\n      memberName: member.name,\n      initials: member.initials,\n      checked: this.isMemberChecked(member.id),\n      canToggle: this.item().visibility === 'shared'\n        ? this.canAssignShared(member.id)\n        : this.canPackForMember(member.id)\n    }))\n  );\n\n  readonly filteredOverlayMembers = computed(() => {\n    const query = this.overlaySearch().trim().toLowerCase();\n    if (!query) {\n      return this.overlayMembers();\n    }\n\n    return this.overlayMembers().filter(member => {\n      const searchable = `${member.memberName} ${member.initials ?? ''}`.toLowerCase();\n      return searchable.includes(query);\n    });\n  });\n\n  readonly personalStatusBadges = computed(() => {\n    if (this.item().visibility !== 'personal') {\n      return [] as Array<{ key: string; text: string; tone: 'success' | 'warning'; dotColor: string }>;\n    }\n\n    const badges: Array<{ key: string; text: string; tone: 'success' | 'warning'; dotColor: string }> = [];\n\n    for (const assignment of this.item().assignments ?? []) {\n      const targetMember = this.members().find(m => m.id === assignment.memberId);\n      const targetName = targetMember?.name ?? assignment.memberName ?? assignment.memberId;\n      const sourceMember = assignment.packedBy ? this.members().find(m => m.id === assignment.packedBy) : null;\n      const sourceName = sourceMember?.name ?? assignment.packedByName ?? assignment.packedBy;\n      const isTakeover = !!assignment.packedBy && assignment.packedBy !== assignment.memberId;\n\n      badges.push({\n        key: `${assignment.memberId}:${assignment.packedBy ?? assignment.memberId}:${assignment.status}`,\n        text: isTakeover ? `${sourceName} -> ${targetName}` : targetName,\n        tone: assignment.status === 'assigned' ? 'warning' : 'success',\n        dotColor: this.memberRingColor(assignment.memberId)\n      });\n    }\n\n    return badges.sort((a, b) => {\n      const aIsCurrent = a.key.startsWith(`${this.currentUserId()}:`);\n      const bIsCurrent = b.key.startsWith(`${this.currentUserId()}:`);\n      if (aIsCurrent && !bIsCurrent) return -1;\n      if (!aIsCurrent && bIsCurrent) return 1;\n      return a.text.localeCompare(b.text);\n    });\n  });\n\n  readonly sharedCountChips = computed(() => {\n    if (this.item().visibility !== 'shared') {\n      return [] as Array<{ key: string; text: string; tone: 'success' | 'warning' }>;\n    }\n\n    const byMember = new Map<string, { quantity: number; hasPacked: boolean }>();\n    for (const assignment of this.item().assignments ?? []) {\n      const quantity = Math.max(1, assignment.quantity ?? 1);\n      const prev = byMember.get(assignment.memberId) ?? { quantity: 0, hasPacked: false };\n      byMember.set(assignment.memberId, {\n        quantity: prev.quantity + quantity,\n        hasPacked: prev.hasPacked || assignment.status === 'packed' || assignment.status === 'confirmed'\n      });\n    }\n\n    return Array.from(byMember.entries())\n      .map(([memberId, value]) => {\n        const member = this.members().find(m => m.id === memberId);\n        return {\n          key: memberId,\n          text: `${member?.name ?? memberId}: ${value.quantity}x`,\n          tone: (value.hasPacked ? 'success' : 'warning') as 'success' | 'warning'\n        };\n      })\n      .sort((a, b) => {\n        const aIsCurrent = a.key === this.currentUserId();\n        const bIsCurrent = b.key === this.currentUserId();\n        if (aIsCurrent && !bIsCurrent) return -1;\n        if (!aIsCurrent && bIsCurrent) return 1;\n        return a.text.localeCompare(b.text);\n      });\n  });\n\n  memberAssignmentStatus(memberId: string): 'confirmed' | 'packed' | 'assigned' | 'none' {\n    const assignments = this.item().assignments ?? [];\n    const a = assignments.find(a => a.memberId === memberId);\n    if (!a) return 'none';\n    if (a.status === 'confirmed') return 'confirmed';\n    if (a.status === 'packed') return 'packed';\n    return 'assigned';\n  }\n\n  memberAssignedQuantity(memberId: string): number {\n    const assignments = this.item().assignments ?? [];\n    const assignment = assignments.find(a => a.memberId === memberId);\n    if (!assignment) {\n      return 0;\n    }\n    return Math.max(1, assignment.quantity ?? 1);\n  }\n\n  memberRingTone(memberId: string): 'custom' {\n    return 'custom';\n  }\n\n  memberRingColor(memberId: string): string {\n    const status = this.memberAssignmentStatus(memberId);\n    if (status === 'confirmed' || status === 'packed') return '#4caf50';\n    if (status === 'assigned') return '#f1c84a';\n    return '#cad8d0';\n  }\n\n  memberBadge(memberId: string): C2gAvatarBadge | null {\n    const status = this.memberAssignmentStatus(memberId);\n    if (status === 'confirmed' || status === 'packed') {\n      return { icon: '✓', tone: 'success', ariaLabel: 'Bestätigt' };\n    }\n    if (status === 'assigned') {\n      return { icon: '?', tone: 'neutral', ariaLabel: 'Zugewiesen' };\n    }\n    return null;\n  }\n\n  memberBackground(member: C2gPackingListMember): string {\n    switch (member.type) {\n      case 'child':\n      case 'baby':\n        return '#fdf2d9';\n      case 'pet':\n        return '#efe6fb';\n      default:\n        return '#e8f0ea';\n    }\n  }\n\n  isMemberChecked(memberId: string): boolean {\n    return this.item().visibility === 'shared'\n      ? this.isSharedAssigned(memberId)\n      : this.isAssignmentChecked(memberId);\n  }\n\n  hasAnyAssignment(memberId: string): boolean {\n    const assignments = this.item().assignments ?? [];\n    return assignments.some(a => a.memberId === memberId);\n  }\n\n  canPackForMember(memberId: string): boolean {\n    const permissions = this.permissions();\n    if (permissions.readOnly) {\n      return false;\n    }\n    return memberId === this.currentUserId() || permissions.isOrganizer;\n  }\n\n  isAssignmentChecked(memberId: string): boolean {\n    const assignments = this.item().assignments ?? [];\n    return assignments.some(a => a.memberId === memberId && (a.status === 'packed' || a.status === 'confirmed'));\n  }\n\n  isSharedAssigned(memberId: string): boolean {\n    const assignments = this.item().assignments ?? [];\n    return assignments.some(a => a.memberId === memberId);\n  }\n\n  canAssignShared(memberId: string): boolean {\n    const permissions = this.permissions();\n    if (permissions.readOnly) {\n      return false;\n    }\n    if (permissions.isGuest && memberId !== this.currentUserId()) {\n      return false;\n    }\n    return true;\n  }\n\n  onSoloToggle(checked: boolean): void {\n    this.itemChecked.emit({ itemId: this.item().id, checked });\n  }\n\n  onPrivateToggle(checked: boolean): void {\n    this.itemChecked.emit({ itemId: this.item().id, checked });\n  }\n\n  onSharedToggle(memberId: string, quantity = 1): void {\n    const assigned = !this.isSharedAssigned(memberId);\n    const safeQuantity = Math.max(1, quantity);\n\n    const label = assigned\n      ? `Willst du dich mit ${safeQuantity}x fuer dieses Shared-Item eintragen?`\n      : 'Willst du deine Zuordnung fuer dieses Shared-Item entfernen?';\n\n    if (!globalThis.confirm(label)) {\n      return;\n    }\n\n    this.itemAssigned.emit({ itemId: this.item().id, memberId, assigned, quantity: assigned ? safeQuantity : undefined });\n  }\n\n  private setSharedAssignment(memberId: string, assigned: boolean, quantity?: number): void {\n    const safeQuantity = quantity !== undefined ? Math.max(1, quantity) : undefined;\n    this.itemAssigned.emit({\n      itemId: this.item().id,\n      memberId,\n      assigned,\n      quantity: assigned ? safeQuantity : undefined\n    });\n  }\n\n  private setPersonalAssignment(memberId: string, assigned: boolean): void {\n    this.itemAssigned.emit({\n      itemId: this.item().id,\n      memberId,\n      assigned\n    });\n  }\n\n  onPersonalToggle(memberId: string): void {\n    const checked = !this.isAssignmentChecked(memberId);\n    this.personalItemToggled.emit({ itemId: this.item().id, memberId, checked });\n  }\n\n  deleteItem(): void {\n    if (!this.canEditOrDeleteItem()) {\n      return;\n    }\n    this.itemDeleted.emit(this.item().id);\n  }\n\n  requestEdit(): void {\n    if (!this.canEditOrDeleteItem()) {\n      return;\n    }\n    this.itemEditRequested.emit(this.item().id);\n  }\n\n  requestAssign(): void {\n    if (!this.canShowAssignCta()) {\n      return;\n    }\n    if (this.item().visibility === 'personal') {\n      this.openPersonalAssignDialog();\n      return;\n    }\n    this.openOverlay();\n  }\n\n  openPersonalAssignDialog(): void {\n    if (this.item().visibility !== 'personal') {\n      return;\n    }\n\n    const candidates = this.personalAssignableMembers();\n    if (candidates.length === 0) {\n      return;\n    }\n\n    this.closeOverlay();\n    this.closeDelegateDialog();\n    this.closeAvatarDialog();\n    this.quantityPickerOpen.set(false);\n    this.personalAssignSearch.set('');\n    this.personalAssignMemberId.set(candidates[0].id);\n    this.personalAssignDialogOpen.set(true);\n  }\n\n  closePersonalAssignDialog(): void {\n    this.personalAssignDialogOpen.set(false);\n    this.personalAssignSearch.set('');\n    this.personalAssignMemberId.set(null);\n  }\n\n  onPersonalAssignSearch(event: Event): void {\n    this.personalAssignSearch.set((event.target as HTMLInputElement).value);\n    const filtered = this.filteredPersonalAssignableMembers();\n    const selectedMemberId = this.personalAssignMemberId();\n    if (!selectedMemberId || !filtered.some(member => member.id === selectedMemberId)) {\n      this.personalAssignMemberId.set(filtered[0]?.id ?? null);\n    }\n  }\n\n  selectPersonalAssignMember(memberId: string): void {\n    this.personalAssignMemberId.set(memberId);\n  }\n\n  confirmPersonalAssignment(): void {\n    const member = this.selectedPersonalAssignMember();\n    if (!member) {\n      return;\n    }\n\n    if (!globalThis.confirm(`${member.name} diesem Personal-Item zuweisen?`)) {\n      return;\n    }\n\n    this.setPersonalAssignment(member.id, true);\n    this.closePersonalAssignDialog();\n  }\n\n  onPersonalAvatarClick(memberId: string): void {\n    if (this.item().visibility !== 'personal' || !this.hasAnyAssignment(memberId)) {\n      return;\n    }\n    // Own chip: direct pack toggle\n    if (memberId === this.currentUserId()) {\n      this.onPersonalToggle(memberId);\n      return;\n    }\n    if (!this.canManagePersonalAssignments()) {\n      return;\n    }\n    const member = this.members().find(entry => entry.id === memberId);\n    if (!globalThis.confirm(`${member?.name ?? memberId} von diesem Personal-Item entfernen?`)) {\n      return;\n    }\n    this.setPersonalAssignment(memberId, false);\n  }\n\n  onAssignMeToggle(): void {\n    if (this.selfAssignedToShared()) {\n      this.openDelegateDialog();\n      return;\n    }\n\n    if (this.requiredQuantity() <= 1) {\n      this.onSharedToggle(this.currentUserId(), 1);\n      return;\n    }\n\n    const missing = this.sharedMissingSlots();\n    if (missing <= 0) {\n      return;\n    }\n\n    this.quantityPickerValue.set(Math.min(this.quantityPickerValue(), missing));\n    this.quantityPickerOpen.update(open => !open);\n  }\n\n  openDelegateDialog(): void {\n    if (this.item().visibility !== 'shared') {\n      return;\n    }\n    const candidates = this.delegateCandidates();\n    if (candidates.length === 0) {\n      return;\n    }\n    this.closeAvatarDialog();\n    this.quantityPickerOpen.set(false);\n    this.delegateMemberId.set(candidates[0].id);\n    this.delegateQuantity.set(1);\n    this.delegateDialogOpen.set(true);\n  }\n\n  closeDelegateDialog(): void {\n    this.delegateDialogOpen.set(false);\n    this.delegateMemberId.set(null);\n    this.delegateQuantity.set(1);\n  }\n\n  onDelegateMemberChange(event: Event): void {\n    this.delegateMemberId.set((event.target as HTMLSelectElement).value || null);\n  }\n\n  increaseDelegateQuantity(): void {\n    this.delegateQuantity.update(value => Math.min(this.requiredQuantity(), value + 1));\n  }\n\n  decreaseDelegateQuantity(): void {\n    this.delegateQuantity.update(value => Math.max(1, value - 1));\n  }\n\n  confirmDelegateAssignment(): void {\n    const memberId = this.delegateMemberId();\n    if (!memberId) {\n      return;\n    }\n\n    const target = this.members().find(member => member.id === memberId);\n    const quantity = Math.max(1, this.delegateQuantity());\n    const confirmationText = `Auch User mit Account können von anderen übernommen werden.`;\n\n    if (!globalThis.confirm(`Zuordnung setzen: ${target?.name ?? memberId} (${quantity}x)?\\n${confirmationText}`)) {\n      return;\n    }\n\n    this.setSharedAssignment(memberId, true, quantity);\n    this.closeDelegateDialog();\n  }\n\n  onSelfPackToggle(): void {\n    const memberId = this.currentUserId();\n    const item = this.item();\n    if (item.visibility === 'personal') {\n      this.onPersonalToggle(memberId);\n    } else if (item.visibility === 'shared') {\n      const checked = !this.isAssignmentChecked(memberId);\n      this.personalItemToggled.emit({ itemId: item.id, memberId, checked });\n    }\n  }\n\n  onSharedAvatarClick(memberId: string): void {\n    if (this.item().visibility !== 'shared') {\n      return;\n    }\n    // Own chip: direct pack toggle (no dialog)\n    if (memberId === this.currentUserId() && !this.permissions().isOrganizer) {\n      this.onSelfPackToggle();\n      return;\n    }\n    const quantity = this.memberAssignedQuantity(memberId);\n    if (quantity <= 0) {\n      return;\n    }\n    this.closeDelegateDialog();\n    this.quantityPickerOpen.set(false);\n    this.avatarDialogMemberId.set(memberId);\n    this.avatarDialogQuantity.set(quantity);\n    this.avatarDialogOpen.set(true);\n  }\n\n  closeAvatarDialog(): void {\n    this.avatarDialogOpen.set(false);\n    this.avatarDialogMemberId.set(null);\n    this.avatarDialogQuantity.set(1);\n  }\n\n  increaseAvatarDialogQuantity(): void {\n    this.avatarDialogQuantity.update(value => Math.min(this.requiredQuantity(), value + 1));\n  }\n\n  decreaseAvatarDialogQuantity(): void {\n    this.avatarDialogQuantity.update(value => Math.max(0, value - 1));\n  }\n\n  confirmAvatarDialogUpdate(): void {\n    const memberId = this.avatarDialogMemberId();\n    if (!memberId) {\n      return;\n    }\n\n    const quantity = this.avatarDialogQuantity();\n    const member = this.members().find(m => m.id === memberId);\n\n    if (quantity === 0) {\n      if (!globalThis.confirm(`Zuordnung fuer ${member?.name ?? memberId} entfernen?`)) {\n        return;\n      }\n      this.setSharedAssignment(memberId, false);\n      this.closeAvatarDialog();\n      return;\n    }\n\n    if (!globalThis.confirm(`Menge fuer ${member?.name ?? memberId} auf ${quantity} setzen?`)) {\n      return;\n    }\n    this.setSharedAssignment(memberId, true, quantity);\n    this.closeAvatarDialog();\n  }\n\n  increaseSelfAssignQuantity(): void {\n    const max = this.selfAssignableMaxQuantity();\n    this.quantityPickerValue.update(value => Math.min(max, value + 1));\n  }\n\n  decreaseSelfAssignQuantity(): void {\n    this.quantityPickerValue.update(value => Math.max(1, value - 1));\n  }\n\n  cancelSelfAssignQuantity(): void {\n    this.quantityPickerOpen.set(false);\n    this.quantityPickerValue.set(1);\n  }\n\n  confirmSelfAssignQuantity(): void {\n    const quantity = Math.max(1, Math.min(this.quantityPickerValue(), this.selfAssignableMaxQuantity()));\n    this.quantityPickerOpen.set(false);\n    if (!globalThis.confirm(`Willst du dich mit ${quantity}x fuer dieses Shared-Item eintragen?`)) {\n      return;\n    }\n    this.setSharedAssignment(this.currentUserId(), true, quantity);\n  }\n\n  openOverlay(): void {\n    this.overlaySearch.set('');\n    this.quantityPickerOpen.set(false);\n    this.closeDelegateDialog();\n    this.closeAvatarDialog();\n    this.closePersonalAssignDialog();\n    this.overlayOpen.set(true);\n    this.memberOverlayRequested.emit({\n      itemId: this.item().id,\n      itemName: this.item().name,\n      members: this.overlayMembers()\n    });\n  }\n\n  closeOverlay(): void {\n    this.overlayOpen.set(false);\n    this.overlaySearch.set('');\n  }\n\n  onOverlaySearch(event: Event): void {\n    this.overlaySearch.set((event.target as HTMLInputElement).value);\n  }\n\n  toggleFromOverlay(memberId: string): void {\n    if (this.item().visibility === 'shared') {\n      this.onSharedToggle(memberId);\n      return;\n    }\n\n    if (this.item().visibility === 'personal') {\n      this.onPersonalToggle(memberId);\n    }\n  }\n\n  privateItemOwnerLabel(): string {\n    if (!this.item().privateOwnerVisible) {\n      return 'Privat';\n    }\n\n    const ownerId = this.item().createdBy ?? this.item().assignments?.[0]?.memberId;\n    const owner = this.members().find(member => member.id === ownerId);\n    return owner?.name ?? 'Privat';\n  }\n}\n","<div class=\"c2g-pl-item\"\n  [class.c2g-pl-item--packed]=\"isPacked()\"\n  [class.c2g-pl-item--suggested-1]=\"item().suggested && item().removedCount === 1\"\n  [class.c2g-pl-item--suggested-2]=\"item().suggested && item().removedCount === 2\">\n\n  <div class=\"c2g-pl-item__row\">\n\n    <!-- Solo: echte Checkbox -->\n    @if (permissions().isSolo) {\n      <button\n        class=\"c2g-pl-item__check\"\n        [class.c2g-pl-item__check--done]=\"isPacked()\"\n        type=\"button\"\n        [disabled]=\"permissions().readOnly\"\n        [attr.aria-pressed]=\"isPacked()\"\n        [attr.aria-label]=\"isPacked() ? 'Als ungepackt markieren' : 'Als gepackt markieren'\"\n        (click)=\"onSoloToggle(!isPacked())\">\n        @if (isPacked()) {\n          <span class=\"c2g-pl-item__check-mark\" aria-hidden=\"true\">✓</span>\n        }\n      </button>\n    } @else {\n      <!-- Gruppen-Item: farbiger Fortschritts-Dot -->\n      <span\n        class=\"c2g-pl-item__dot\"\n        [class.c2g-pl-item__dot--danger]=\"progressTone() === 'danger'\"\n        [class.c2g-pl-item__dot--warning]=\"progressTone() === 'warning'\"\n        [class.c2g-pl-item__dot--success]=\"progressTone() === 'success'\"\n        [attr.title]=\"progressRatioText() + ' bereit'\"\n        aria-hidden=\"true\">\n      </span>\n    }\n\n    <!-- Body -->\n    <div class=\"c2g-pl-item__body\">\n\n      <!-- Zeile 1: Name + Tags + Mengen-Badge -->\n      <div class=\"c2g-pl-item__title-row\">\n        <span class=\"c2g-pl-item__name\">{{ item().name }}</span>\n        <div class=\"c2g-pl-item__tags\">\n          @if (item().essential) {\n            <c2g-tag size=\"sm\" tone=\"warning\" variant=\"subtle\" [label]=\"labels().essentialKey ?? 'Pflicht'\"></c2g-tag>\n          }\n          @if (item().weather) {\n            <c2g-tag size=\"sm\" tone=\"info\" variant=\"subtle\" [label]=\"labels().weatherTagKey ?? 'Wetter'\"></c2g-tag>\n          }\n          @if (item().visibility === 'private') {\n            <c2g-tag size=\"sm\" tone=\"accent\" variant=\"subtle\" [label]=\"'🔒 ' + privateItemOwnerLabel()\"></c2g-tag>\n          }\n          @if (item().suggested) {\n            <c2g-tag\n              size=\"sm\"\n              tone=\"warning\"\n              variant=\"outline\"\n              [dashed]=\"true\"\n              [label]=\"item().removedCount === 2 ? (labels().suggestedBadge2xKey ?? '2× entfernt') : (labels().suggestedBadgeKey ?? 'Vorschlag')\"\n              [ariaLabel]=\"item().removedCount === 2 ? (labels().suggestedTooltip2xKey ?? '2× entfernt') : (labels().suggestedTooltip1xKey ?? '1× entfernt')\">\n            </c2g-tag>\n          }\n        </div>\n\n        @if (quantityBadge(); as badge) {\n          <c2g-badge\n            class=\"c2g-pl-item__qty-badge\"\n            [value]=\"badge.value\"\n            [tone]=\"badge.tone\"\n            variant=\"subtle\"\n            size=\"sm\"\n            [attr.aria-label]=\"'Gepackt: ' + badge.value\">\n          </c2g-badge>\n        }\n      </div>\n\n      <!-- Zeile 2: Mitglieder / Avatare -->\n      @if (!permissions().isSolo) {\n        <div class=\"c2g-pl-item__members-row\">\n\n          @if (item().visibility === 'shared') {\n            <!-- Assigned-Avatare -->\n            @for (member of checkedPreview(); track member.id) {\n              <button\n                class=\"c2g-pl-item__avatar-btn\"\n                type=\"button\"\n                [disabled]=\"permissions().readOnly\"\n                [attr.aria-label]=\"member.name + ' – antippen zum Bearbeiten'\"\n                (click)=\"onSharedAvatarClick(member.id)\">\n                <c2g-avatar\n                  size=\"sm\"\n                  [name]=\"member.name\"\n                  [initials]=\"member.initials || ''\"\n                  [backgroundColor]=\"memberBackground(member)\"\n                  [ringTone]=\"memberRingTone(member.id)\"\n                  [ringColor]=\"memberRingColor(member.id)\"\n                  [badge]=\"memberBadge(member.id)\">\n                </c2g-avatar>\n              </button>\n            }\n\n            @if (hiddenCheckedCount() > 0) {\n              <div class=\"c2g-pl-item__more-wrap\">\n                <button class=\"c2g-pl-item__more\" type=\"button\" (click)=\"openOverlay()\">\n                  +{{ hiddenCheckedCount() }}\n                </button>\n                @if (overlayOpen()) {\n                  <div class=\"c2g-pl-item__overlay\" role=\"dialog\" aria-label=\"Alle Mitglieder\">\n                    <div class=\"c2g-pl-item__overlay-head\">\n                      <strong>{{ item().name }}</strong>\n                      <button type=\"button\" class=\"c2g-pl-item__overlay-close\" (click)=\"closeOverlay()\">✕</button>\n                    </div>\n                    <input class=\"c2g-pl-item__overlay-search\" type=\"search\" [value]=\"overlaySearch()\" placeholder=\"Mitglied suchen...\" (input)=\"onOverlaySearch($event)\" />\n                    <div class=\"c2g-pl-item__overlay-list\">\n                      @for (member of filteredOverlayMembers(); track member.memberId) {\n                        <button class=\"c2g-pl-item__overlay-row\" type=\"button\" [disabled]=\"!member.canToggle\" (click)=\"toggleFromOverlay(member.memberId)\">\n                          <span>{{ member.memberName }}</span>\n                          <span class=\"c2g-pl-item__overlay-status\" [class.c2g-pl-item__overlay-status--done]=\"member.checked\">{{ member.checked ? '✓ bereit' : 'ausstehend' }}</span>\n                        </button>\n                      }\n                    </div>\n                  </div>\n                }\n              </div>\n            }\n\n            <!-- Empty state -->\n            @if (checkedMembers().length === 0) {\n              <span class=\"c2g-pl-item__empty\">{{ labels().emptyStateKey }}</span>\n            }\n\n            <!-- + Eintragen Button -->\n            @if (canSelfAssignShared()) {\n              <button\n                class=\"c2g-pl-item__join-btn\"\n                [class.c2g-pl-item__join-btn--active]=\"selfAssignedToShared()\"\n                type=\"button\"\n                (click)=\"onAssignMeToggle()\">\n                {{ joinBtnLabel() }}\n              </button>\n            }\n\n          } @else if (item().visibility === 'personal') {\n            <!-- Personal: wer hat es für sich -->\n            @for (member of personalAssignedPreview(); track member.id) {\n              <button\n                class=\"c2g-pl-item__avatar-btn\"\n                type=\"button\"\n                [disabled]=\"!canManagePersonalAssignments()\"\n                [attr.aria-label]=\"member.name + ' – antippen zum Entfernen'\"\n                (click)=\"onPersonalAvatarClick(member.id)\">\n                <c2g-avatar\n                  size=\"sm\"\n                  [name]=\"member.name\"\n                  [initials]=\"member.initials || ''\"\n                  [backgroundColor]=\"memberBackground(member)\"\n                  [ringTone]=\"memberRingTone(member.id)\"\n                  [ringColor]=\"memberRingColor(member.id)\"\n                  [badge]=\"memberBadge(member.id)\">\n                </c2g-avatar>\n              </button>\n            }\n\n            @if (personalHiddenAssignedCount() > 0) {\n              <div class=\"c2g-pl-item__more-wrap\">\n                <button class=\"c2g-pl-item__more\" type=\"button\" (click)=\"openOverlay()\">\n                  +{{ personalHiddenAssignedCount() }}\n                </button>\n                @if (overlayOpen()) {\n                  <div class=\"c2g-pl-item__overlay\" role=\"dialog\" aria-label=\"Alle Mitglieder\">\n                    <div class=\"c2g-pl-item__overlay-head\">\n                      <strong>{{ item().name }}</strong>\n                      <button type=\"button\" class=\"c2g-pl-item__overlay-close\" (click)=\"closeOverlay()\">✕</button>\n                    </div>\n                    <input class=\"c2g-pl-item__overlay-search\" type=\"search\" [value]=\"overlaySearch()\" placeholder=\"Mitglied suchen...\" (input)=\"onOverlaySearch($event)\" />\n                    <div class=\"c2g-pl-item__overlay-list\">\n                      @for (member of filteredOverlayMembers(); track member.memberId) {\n                        <button class=\"c2g-pl-item__overlay-row\" type=\"button\" [disabled]=\"!member.canToggle\" (click)=\"toggleFromOverlay(member.memberId)\">\n                          <span>{{ member.memberName }}</span>\n                          <span class=\"c2g-pl-item__overlay-status\" [class.c2g-pl-item__overlay-status--done]=\"member.checked\">{{ member.checked ? '✓ bereit' : 'ausstehend' }}</span>\n                        </button>\n                      }\n                    </div>\n                  </div>\n                }\n              </div>\n            }\n\n            @if (personalAssignedMembers().length === 0) {\n              <span class=\"c2g-pl-item__empty\">Nicht zugewiesen</span>\n            }\n\n            @if (canManagePersonalAssignments() && personalAssignableMembers().length > 0) {\n              <button class=\"c2g-pl-item__join-btn\" type=\"button\" (click)=\"openPersonalAssignDialog()\">\n                + Zuweisen\n              </button>\n            }\n          }\n\n        </div>\n      }\n\n    </div>\n\n    <!-- Aktions-Spalte: ⋯ Menü -->\n    @if (menuItems().length > 0) {\n      <c2g-dropdown-menu\n        [items]=\"menuItems()\"\n        triggerLabel=\"Optionen\"\n        [alignEnd]=\"true\"\n        (itemSelected)=\"onMenuItemSelected($event)\">\n      </c2g-dropdown-menu>\n    }\n\n  </div>\n\n  <!-- Quantity Picker (Shared: eigene Menge) -->\n  @if (quantityPickerOpen()) {\n    <div class=\"c2g-pl-item__picker\" role=\"group\" aria-label=\"Menge wählen\">\n      <span class=\"c2g-pl-item__picker-label\">{{ pickerLabel() }}</span>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"decreaseSelfAssignQuantity()\">−</button>\n      <span class=\"c2g-pl-item__qty-val\">{{ quantityPickerValue() }}x</span>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"increaseSelfAssignQuantity()\">+</button>\n      <button class=\"c2g-pl-item__qty-ok\" type=\"button\" (click)=\"confirmSelfAssignQuantity()\">Bestätigen</button>\n      <button class=\"c2g-pl-item__qty-cancel\" type=\"button\" (click)=\"cancelSelfAssignQuantity()\">Abbrechen</button>\n    </div>\n  }\n\n  <!-- Delegate Dialog (Organizer weist anderem zu) -->\n  @if (delegateDialogOpen()) {\n    <div class=\"c2g-pl-item__picker\" role=\"dialog\" aria-label=\"Mitglied zuweisen\">\n      <span class=\"c2g-pl-item__picker-label\">{{ delegatePickerLabel() }}</span>\n      <select class=\"c2g-pl-item__select\" [value]=\"delegateMemberId() ?? ''\" (change)=\"onDelegateMemberChange($event)\">\n        @for (member of delegateCandidates(); track member.id) {\n          <option [value]=\"member.id\">{{ member.name }}</option>\n        }\n      </select>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"decreaseDelegateQuantity()\">−</button>\n      <span class=\"c2g-pl-item__qty-val\">{{ delegateQuantity() }}x</span>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"increaseDelegateQuantity()\">+</button>\n      <button class=\"c2g-pl-item__qty-ok\" type=\"button\" (click)=\"confirmDelegateAssignment()\">Bestätigen</button>\n      <button class=\"c2g-pl-item__qty-cancel\" type=\"button\" (click)=\"closeDelegateDialog()\">Abbrechen</button>\n    </div>\n  }\n\n  <!-- Avatar Dialog (Menge eines Zugewiesenen ändern) -->\n  @if (avatarDialogOpen()) {\n    <div class=\"c2g-pl-item__picker\" role=\"dialog\" aria-label=\"Zuteilung bearbeiten\">\n      <span class=\"c2g-pl-item__picker-label\">Menge anpassen – 0 zum Entfernen</span>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"decreaseAvatarDialogQuantity()\">−</button>\n      <span class=\"c2g-pl-item__qty-val\">{{ avatarDialogQuantity() }}x</span>\n      <button class=\"c2g-pl-item__qty-btn\" type=\"button\" (click)=\"increaseAvatarDialogQuantity()\">+</button>\n      <button class=\"c2g-pl-item__qty-ok\" type=\"button\" (click)=\"confirmAvatarDialogUpdate()\">Bestätigen</button>\n      <button class=\"c2g-pl-item__qty-cancel\" type=\"button\" (click)=\"closeAvatarDialog()\">Abbrechen</button>\n    </div>\n  }\n\n  <!-- Personal Assign Panel -->\n  @if (personalAssignDialogOpen()) {\n    <div class=\"c2g-pl-item__assign-panel\" role=\"dialog\" aria-label=\"Mitglied zuweisen\">\n      <input\n        class=\"c2g-pl-item__assign-search\"\n        type=\"search\"\n        [value]=\"personalAssignSearch()\"\n        placeholder=\"Mitglied suchen...\"\n        (input)=\"onPersonalAssignSearch($event)\" />\n      <div class=\"c2g-pl-item__assign-list\">\n        @for (member of filteredPersonalAssignableMembers(); track member.id) {\n          <button\n            class=\"c2g-pl-item__assign-option\"\n            [class.c2g-pl-item__assign-option--active]=\"personalAssignMemberId() === member.id\"\n            type=\"button\"\n            (click)=\"selectPersonalAssignMember(member.id)\">\n            <c2g-avatar\n              size=\"sm\"\n              [name]=\"member.name\"\n              [initials]=\"member.initials || ''\"\n              [backgroundColor]=\"memberBackground(member)\">\n            </c2g-avatar>\n            <span>{{ member.name }}</span>\n          </button>\n        }\n      </div>\n      <div class=\"c2g-pl-item__assign-footer\">\n        <button class=\"c2g-pl-item__qty-ok\" type=\"button\" [disabled]=\"!selectedPersonalAssignMember()\" (click)=\"confirmPersonalAssignment()\">Zuweisen</button>\n        <button class=\"c2g-pl-item__qty-cancel\" type=\"button\" (click)=\"closePersonalAssignDialog()\">Abbrechen</button>\n      </div>\n    </div>\n  }\n\n  <!-- Shared Assign Overlay (opened via menu → Zuweisen) -->\n  @if (overlayOpen() && item().visibility !== 'private') {\n    <div class=\"c2g-pl-item__assign-panel\" role=\"dialog\" aria-label=\"Mitglied zuweisen\">\n      <div class=\"c2g-pl-item__overlay-head\">\n        <strong>{{ item().name }}</strong>\n        <button type=\"button\" class=\"c2g-pl-item__overlay-close\" (click)=\"closeOverlay()\">✕</button>\n      </div>\n      <input class=\"c2g-pl-item__assign-search\" type=\"search\" [value]=\"overlaySearch()\"\n        placeholder=\"Mitglied suchen...\" (input)=\"onOverlaySearch($event)\" />\n      <div class=\"c2g-pl-item__overlay-list\">\n        @for (member of filteredOverlayMembers(); track member.memberId) {\n          <button class=\"c2g-pl-item__overlay-row\" type=\"button\"\n            [disabled]=\"!member.canToggle\"\n            (click)=\"toggleFromOverlay(member.memberId)\">\n            <span>{{ member.memberName }}</span>\n            <span class=\"c2g-pl-item__overlay-status\"\n              [class.c2g-pl-item__overlay-status--done]=\"member.checked\">\n              {{ member.checked ? '✓ bereit' : 'ausstehend' }}\n            </span>\n          </button>\n        }\n      </div>\n    </div>\n  }\n\n  <!-- Vorschlag-Hinweis (1× oder 2× entfernt) -->\n  @if (item().suggested) {\n    <p class=\"c2g-pl-item__suggestion-hint\">\n      <span class=\"c2g-pl-item__suggestion-hint-icon\" aria-hidden=\"true\">{{ item().removedCount === 2 ? '🟠' : '🟡' }}</span>\n      {{ item().removedCount === 2\n        ? (labels().suggestedHint2xKey ?? '2× aus der Liste entfernt — letzte Empfehlung, danach nicht mehr vorgeschlagen.')\n        : (labels().suggestedHint1xKey ?? '1× entfernt — trotzdem empfohlen für diese Tour.') }}\n    </p>\n  }\n\n  <!-- Hinweis -->\n  @if (item().hint) {\n    <p class=\"c2g-pl-item__hint\">{{ item().hint }}</p>\n  }\n\n  <!-- Shared: Mengen-Chips -->\n  @if (sharedCountChips().length > 0) {\n    <div class=\"c2g-pl-item__chip-row\">\n      @for (chip of sharedCountChips(); track chip.key) {\n        <c2g-badge [value]=\"chip.text\" [tone]=\"chip.tone\" variant=\"subtle\" size=\"sm\"></c2g-badge>\n      }\n    </div>\n  }\n\n  <!-- Personal: Status-Chips -->\n  @if (personalStatusBadges().length > 0) {\n    <div class=\"c2g-pl-item__chip-row\">\n      @for (badge of personalStatusBadges(); track badge.key) {\n        <c2g-badge\n          [value]=\"badge.text\"\n          [tone]=\"badge.tone\"\n          variant=\"subtle\"\n          size=\"sm\"\n          [dot]=\"true\"\n          [dotColor]=\"badge.dotColor\">\n        </c2g-badge>\n      }\n    </div>\n  }\n\n\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { resolvePackingCategory } from './packing-list.categories';\nimport {\n  C2gPackingItemAssignedEvent,\n  C2gPackingListItem,\n  C2gPackingListLabels,\n  C2gPackingListMemberOverlayRequest,\n  C2gPackingListMember,\n  C2gPackingListPermissions,\n  DEFAULT_PACKING_LIST_LABEL_KEYS\n} from './packing-list.models';\nimport { PackingListItemComponent } from './packing-list-item.component';\n\n@Component({\n  selector: 'c2g-packing-list-category',\n  standalone: true,\n  imports: [PackingListItemComponent, MatIconModule],\n  templateUrl: './packing-list-category.component.html',\n  styleUrls: ['./packing-list-category.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListCategoryComponent {\n  readonly categoryKey = input.required<string>();\n  readonly items = input.required<C2gPackingListItem[]>();\n  readonly members = input.required<C2gPackingListMember[]>();\n  readonly selectedMemberIds = input<string[]>([]);\n  readonly currentUserId = input.required<string>();\n  readonly permissions = input.required<C2gPackingListPermissions>();\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n  readonly expanded = input(true);\n\n  readonly toggle = output<string>();\n\n  readonly itemChecked = output<{ itemId: string; checked: boolean }>();\n  readonly itemAssigned = output<C2gPackingItemAssignedEvent>();\n  readonly itemDeleted = output<string>();\n  readonly itemEditRequested = output<string>();\n  readonly personalItemToggled = output<{ itemId: string; memberId: string; checked: boolean }>();\n  readonly memberOverlayRequested = output<C2gPackingListMemberOverlayRequest>();\n\n  readonly category = computed(() => resolvePackingCategory(this.categoryKey()));\n\n  readonly stats = computed(() => {\n    const list = this.items();\n    return {\n      total: list.length,\n      essential: list.filter(item => !!item.essential).length,\n      packed: list.filter(item => (item.assignments ?? []).some(a => a.status === 'packed' || a.status === 'confirmed')).length\n    };\n  });\n\n  onToggle(): void {\n    this.toggle.emit(this.categoryKey());\n  }\n}\n","<section class=\"c2g-pl-category\">\n  <button type=\"button\" class=\"c2g-pl-category__header\" [class.c2g-pl-category__header--done]=\"stats().packed === stats().total && stats().total > 0\" (click)=\"onToggle()\">\n    <mat-icon class=\"c2g-pl-category__icon\" aria-hidden=\"true\">{{ category().icon }}</mat-icon>\n    <span class=\"c2g-pl-category__label\">{{ category().label ?? category().labelKey }}</span>\n    <span class=\"c2g-pl-category__meta\">{{ stats().packed }}/{{ stats().total }}</span>\n    <span class=\"c2g-pl-category__chevron\" [class.c2g-pl-category__chevron--open]=\"expanded()\" aria-hidden=\"true\">▾</span>\n  </button>\n\n  @if (expanded()) {\n    <div class=\"c2g-pl-category__items\">\n      @for (item of items(); track item.id) {\n        <c2g-packing-list-item\n          [item]=\"item\"\n          [members]=\"members()\"\n          [selectedMemberIds]=\"selectedMemberIds()\"\n          [currentUserId]=\"currentUserId()\"\n          [permissions]=\"permissions()\"\n          [labels]=\"labels()\"\n          (itemChecked)=\"itemChecked.emit($event)\"\n          (itemAssigned)=\"itemAssigned.emit($event)\"\n          (itemDeleted)=\"itemDeleted.emit($event)\"\n          (itemEditRequested)=\"itemEditRequested.emit($event)\"\n          (personalItemToggled)=\"personalItemToggled.emit($event)\"\n          (memberOverlayRequested)=\"memberOverlayRequested.emit($event)\">\n        </c2g-packing-list-item>\n      }\n    </div>\n  }\n</section>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent, CheckboxComponent, InputComponent, SelectComponent } from '@camp2gether/c2g-ui';\nimport { SelectOption } from '@camp2gether/c2g-ui';\nimport {\n  C2gPackingListFilterState,\n  C2gPackingListLabels,\n  C2gPackingListMember,\n  DEFAULT_PACKING_LIST_LABEL_KEYS\n} from './packing-list.models';\n\n@Component({\n  selector: 'c2g-packing-list-filters',\n  standalone: true,\n  imports: [FormsModule, ButtonComponent, CheckboxComponent, InputComponent, SelectComponent],\n  templateUrl: './packing-list-filters.component.html',\n  styleUrls: ['./packing-list-filters.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListFiltersComponent {\n  readonly filter = input.required<C2gPackingListFilterState>();\n  readonly members = input<C2gPackingListMember[]>([]);\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n  readonly disabled = input(false);\n\n  readonly filterChange = output<C2gPackingListFilterState>();\n  readonly overlayRequested = output<void>();\n\n  readonly membersPanelOpen = signal(false);\n  readonly memberQuery = signal('');\n\n  readonly visibilityOptions = computed<SelectOption<C2gPackingListFilterState['visibility']>[]>(() => [\n    { value: 'all',      label: this.labels().showAllVisibilityKey  ?? 'Alle' },\n    { value: 'shared',   label: this.labels().sharedVisibilityKey   ?? 'Geteilt' },\n    { value: 'personal', label: this.labels().personalVisibilityKey ?? 'Persönlich' },\n    { value: 'private',  label: this.labels().privateVisibilityKey  ?? 'Privat' },\n  ]);\n\n  readonly memberSelectionLabel = computed(() => {\n    const selected = this.filter().memberIds.length;\n    if (selected === 0) {\n      return 'Alle User';\n    }\n    if (selected === 1) {\n      return '1 User';\n    }\n    return `${selected} User`;\n  });\n\n  readonly filteredMembers = computed(() => {\n    const query = this.memberQuery().trim().toLowerCase();\n    if (!query) {\n      return this.members();\n    }\n    return this.members().filter(member => {\n      const searchable = `${member.name} ${member.initials ?? ''}`.toLowerCase();\n      return searchable.includes(query);\n    });\n  });\n\n  onQueryChange(value: string): void {\n    this.filterChange.emit({ ...this.filter(), query: value });\n  }\n\n  onVisibilityChange(value: C2gPackingListFilterState['visibility'] | null): void {\n    if (value == null) return;\n    this.filterChange.emit({ ...this.filter(), visibility: value });\n  }\n\n  onEssentialsOnlyToggle(checked: boolean): void {\n    this.filterChange.emit({ ...this.filter(), essentialsOnly: checked });\n  }\n\n  toggleMembersPanel(): void {\n    if (this.disabled()) {\n      return;\n    }\n    this.membersPanelOpen.update(open => !open);\n  }\n\n  onMemberSearch(event: Event): void {\n    this.memberQuery.set((event.target as HTMLInputElement).value);\n  }\n\n  isMemberSelected(memberId: string): boolean {\n    return this.filter().memberIds.includes(memberId);\n  }\n\n  toggleMember(memberId: string): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    const selected = new Set(this.filter().memberIds);\n    if (selected.has(memberId)) {\n      selected.delete(memberId);\n    } else {\n      selected.add(memberId);\n    }\n    this.filterChange.emit({ ...this.filter(), memberIds: Array.from(selected) });\n  }\n\n  clearMemberSelection(): void {\n    this.filterChange.emit({ ...this.filter(), memberIds: [] });\n  }\n\n  selectAllMembers(): void {\n    this.filterChange.emit({ ...this.filter(), memberIds: this.members().map(member => member.id) });\n  }\n\n  requestExternalOverlay(): void {\n    this.overlayRequested.emit();\n  }\n}\n","<div class=\"c2g-pl-filters\">\n  <c2g-input\n    class=\"c2g-pl-filters__search\"\n    type=\"search\"\n    [compact]=\"true\"\n    [ngModel]=\"filter().query\"\n    [placeholder]=\"labels().searchPlaceholderKey\"\n    [disabled]=\"disabled()\"\n    (valueChanged)=\"onQueryChange($event)\">\n  </c2g-input>\n\n  <c2g-select\n    class=\"c2g-pl-filters__visibility\"\n    [compact]=\"true\"\n    [options]=\"visibilityOptions()\"\n    [ngModel]=\"filter().visibility\"\n    [disabled]=\"disabled()\"\n    (valueChanged)=\"onVisibilityChange($event)\">\n  </c2g-select>\n\n  <c2g-checkbox\n    class=\"c2g-pl-filters__essential\"\n    [label]=\"labels().essentialsOnlyKey\"\n    [ngModel]=\"filter().essentialsOnly\"\n    [disabled]=\"disabled()\"\n    (checkedChange)=\"onEssentialsOnlyToggle($event)\">\n  </c2g-checkbox>\n\n  <div class=\"c2g-pl-filters__member-filter\">\n    <c2g-button\n      variant=\"secondary\"\n      size=\"sm\"\n      icon=\"group\"\n      [disabled]=\"disabled()\"\n      [attr.aria-expanded]=\"membersPanelOpen()\"\n      (clicked)=\"toggleMembersPanel()\">\n      {{ memberSelectionLabel() }}\n    </c2g-button>\n\n    @if (membersPanelOpen()) {\n      <div class=\"c2g-pl-filters__member-panel\" role=\"dialog\" aria-label=\"User-Filter\">\n        <c2g-input\n          class=\"c2g-pl-filters__member-search\"\n          type=\"search\"\n          [ngModel]=\"memberQuery()\"\n          placeholder=\"User suchen\"\n          (valueChanged)=\"memberQuery.set($event)\">\n        </c2g-input>\n\n        <div class=\"c2g-pl-filters__member-actions\">\n          <c2g-button variant=\"ghost\" size=\"sm\" (clicked)=\"selectAllMembers()\">Alle</c2g-button>\n          <c2g-button variant=\"ghost\" size=\"sm\" (clicked)=\"clearMemberSelection()\">Zurücksetzen</c2g-button>\n          <c2g-button variant=\"ghost\" size=\"sm\" (clicked)=\"requestExternalOverlay()\">Externe View</c2g-button>\n        </div>\n\n        <div class=\"c2g-pl-filters__member-list\">\n          @for (member of filteredMembers(); track member.id) {\n            <c2g-checkbox\n              [label]=\"member.name\"\n              [ngModel]=\"isMemberSelected(member.id)\"\n              (checkedChange)=\"toggleMember(member.id)\">\n            </c2g-checkbox>\n          }\n        </div>\n      </div>\n    }\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n  C2gPackingItemAssignedEvent,\n  C2gPackingListItem,\n  C2gPackingListLabels,\n  C2gPackingListMember,\n  C2gPackingListMemberOverlayRequest,\n  C2gPackingListPermissions,\n  DEFAULT_PACKING_LIST_LABEL_KEYS\n} from './packing-list.models';\nimport { PackingListItemComponent } from './packing-list-item.component';\n\n@Component({\n  selector: 'c2g-packing-list-private-list',\n  standalone: true,\n  imports: [PackingListItemComponent],\n  templateUrl: './packing-list-private-list.component.html',\n  styleUrls: ['./packing-list-private-list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListPrivateListComponent {\n  readonly items = input.required<C2gPackingListItem[]>();\n  readonly members = input.required<C2gPackingListMember[]>();\n  readonly selectedMemberIds = input<string[]>([]);\n  readonly currentUserId = input.required<string>();\n  readonly permissions = input.required<C2gPackingListPermissions>();\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n\n  readonly privateItems = computed(() => this.items().filter(item => item.visibility === 'private'));\n\n  readonly itemChecked = output<{ itemId: string; checked: boolean }>();\n  readonly itemAssigned = output<C2gPackingItemAssignedEvent>();\n  readonly itemDeleted = output<string>();\n  readonly itemEditRequested = output<string>();\n  readonly personalItemToggled = output<{ itemId: string; memberId: string; checked: boolean }>();\n  readonly memberOverlayRequested = output<C2gPackingListMemberOverlayRequest>();\n}\n","@if (privateItems().length > 0) {\n  <section class=\"c2g-pl-private\">\n    <h3>{{ labels().privateSectionTitleKey }}</h3>\n    <div class=\"c2g-pl-private__items\">\n      @for (item of privateItems(); track item.id) {\n        <c2g-packing-list-item\n          [item]=\"item\"\n          [members]=\"members()\"\n          [selectedMemberIds]=\"selectedMemberIds()\"\n          [currentUserId]=\"currentUserId()\"\n          [permissions]=\"permissions()\"\n          (itemChecked)=\"itemChecked.emit($event)\"\n          (itemAssigned)=\"itemAssigned.emit($event)\"\n          (itemDeleted)=\"itemDeleted.emit($event)\"\n          (itemEditRequested)=\"itemEditRequested.emit($event)\"\n          (personalItemToggled)=\"personalItemToggled.emit($event)\"\n          (memberOverlayRequested)=\"memberOverlayRequested.emit($event)\">\n        </c2g-packing-list-item>\n      }\n    </div>\n  </section>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  output,\n  signal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n  C2gPackingVisibility,\n  C2gPackingListLabels,\n  C2gPackingListPermissions,\n  C2gPackingCategoryInfo,\n  C2gPackingListItem,\n  DEFAULT_PACKING_LIST_LABEL_KEYS\n} from './packing-list.models';\nimport { C2G_PACKING_CATEGORY_INFO } from './packing-list.categories';\nimport { ButtonComponent } from '@camp2gether/c2g-ui';\nimport { RadioGroupComponent } from '@camp2gether/c2g-ui';\nimport { CheckboxComponent } from '@camp2gether/c2g-ui';\nimport { SelectComponent } from '@camp2gether/c2g-ui';\nimport { InputComponent } from '@camp2gether/c2g-ui';\nimport { TextareaComponent } from '@camp2gether/c2g-ui';\n\n@Component({\n  selector: 'c2g-packing-list-item-create',\n  standalone: true,\n  imports: [CommonModule, FormsModule, ButtonComponent, RadioGroupComponent, CheckboxComponent, SelectComponent, InputComponent, TextareaComponent],\n  templateUrl: './packing-list-item-create.component.html',\n  styleUrls: ['./packing-list-item-create.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListItemCreateComponent {\n  readonly permissions = input<C2gPackingListPermissions>({\n    isOrganizer: false,\n    isGuest: false,\n    isSolo: false,\n    readOnly: false\n  });\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n  readonly readOnly = input(false);\n  readonly categories = input<C2gPackingCategoryInfo[]>(Object.values(C2G_PACKING_CATEGORY_INFO));\n\n  readonly itemCreated = output<Partial<C2gPackingListItem>>();\n\n  readonly dialogOpen = signal(false);\n  readonly formData = signal({\n    name: '',\n    category: Object.values(C2G_PACKING_CATEGORY_INFO)[0]?.key ?? 'other',\n    visibility: 'private' as C2gPackingVisibility,\n    essential: false,\n    quantity: 1,\n    weightKg: undefined as number | undefined,\n    packedVolumeL: undefined as number | undefined,\n    hint: ''\n  });\n\n  readonly availableVisibilities = computed(() => {\n    const perms = this.permissions();\n    const labels = this.labels();\n    const visibilities: { value: C2gPackingVisibility; label: string }[] = [];\n\n    // Private is always available\n    visibilities.push({\n      value: 'private',\n      label: labels.privateVisibilityKey ?? 'Private'\n    });\n\n    // Personal is available if not a guest\n    if (!perms.isGuest) {\n      visibilities.push({\n        value: 'personal',\n        label: labels.personalVisibilityKey ?? 'Personal'\n      });\n    }\n\n    // Shared is available for organizers or if tour allows members\n    if (perms.isOrganizer || perms.canMembersAddSharedItems) {\n      visibilities.push({\n        value: 'shared',\n        label: labels.sharedVisibilityKey ?? 'Shared'\n      });\n    }\n\n    return visibilities;\n  });\n\n  readonly categoryOptions = computed(() => {\n    return this.categories().map(cat => ({\n      value: cat.key as string,\n      label: cat.label || cat.key\n    }));\n  });\n\n  openDialog(): void {\n    this.dialogOpen.set(true);\n  }\n\n  closeDialog(): void {\n    this.dialogOpen.set(false);\n    this.resetForm();\n  }\n\n  resetForm(): void {\n    this.formData.set({\n      name: '',\n      category: Object.values(C2G_PACKING_CATEGORY_INFO)[0]?.key ?? 'other',\n      visibility: this.availableVisibilities()[0]?.value ?? 'private',\n      essential: false,\n      quantity: 1,\n      weightKg: undefined,\n      packedVolumeL: undefined,\n      hint: ''\n    });\n  }\n\n  submit(): void {\n    const data = this.formData();\n    if (!data.name.trim()) {\n      return;\n    }\n\n    const newItem: Partial<C2gPackingListItem> = {\n      name: data.name.trim(),\n      category: data.category,\n      visibility: data.visibility,\n      essential: data.essential,\n      quantity: data.quantity > 0 ? data.quantity : undefined,\n      weightKg: data.weightKg && data.weightKg > 0 ? data.weightKg : undefined,\n      packedVolumeL: data.packedVolumeL && data.packedVolumeL > 0 ? data.packedVolumeL : undefined,\n      hint: data.hint.trim() || undefined\n    };\n\n    this.itemCreated.emit(newItem);\n    this.closeDialog();\n  }\n\n  updateVisibility(visibility: C2gPackingVisibility): void {\n    this.formData.update(data => ({ ...data, visibility }));\n  }\n\n  getCategoryLabel(categoryKey: string): string {\n    return this.categories().find(c => c.key === categoryKey)?.label ?? categoryKey;\n  }\n}\n","<c2g-button\n  variant=\"secondary\"\n  size=\"md\"\n  icon=\"+\"\n  [disabled]=\"readOnly()\"\n  (clicked)=\"openDialog()\">\n  {{ labels().addItemKey || 'Item hinzufügen' }}\n</c2g-button>\n\n@if (dialogOpen()) {\n  <div class=\"c2g-pl-item-create__overlay\" (click)=\"closeDialog()\"></div>\n  <dialog class=\"c2g-pl-item-create__dialog\" open>\n    <div class=\"c2g-pl-item-create__header\">\n      <h2>{{ labels().createItemKey || 'Neues Item' }}</h2>\n      <c2g-button\n        variant=\"icon\"\n        size=\"sm\"\n        icon=\"✕\"\n        aria-label=\"Schließen\"\n        (clicked)=\"closeDialog()\">\n      </c2g-button>\n    </div>\n\n    <form class=\"c2g-pl-item-create__form\" (ngSubmit)=\"submit()\">\n      <!-- Name Input -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-input\n          [label]=\"labels().itemNameKey || 'Name'\"\n          [required]=\"true\"\n          [(ngModel)]=\"formData().name\"\n          [ngModelOptions]=\"{ updateOn: 'blur' }\"\n          name=\"name\"\n          placeholder=\"z.B. Zelt, Schlafsack...\">\n        </c2g-input>\n      </div>\n\n      <!-- Category Select -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-select\n          [label]=\"(labels().categoryKey || 'Kategorie') + ' *'\"\n          [options]=\"categoryOptions()\"\n          [required]=\"true\"\n          [(ngModel)]=\"formData().category\"\n          name=\"category\">\n        </c2g-select>\n      </div>\n\n      <!-- Visibility Radio -->\n      @if (availableVisibilities().length > 1) {\n        <div class=\"c2g-pl-item-create__field\">\n          <c2g-radio-group\n            [label]=\"(labels().visibilityKey || 'Sichtbarkeit') + ' *'\"\n            [options]=\"availableVisibilities()\"\n            [(ngModel)]=\"formData().visibility\"\n            name=\"visibility\"\n            orientation=\"vertical\">\n          </c2g-radio-group>\n        </div>\n      }\n\n      <!-- Essential Checkbox -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-checkbox\n          [label]=\"labels().essentialKey || 'Essentiell'\"\n          [(ngModel)]=\"formData().essential\"\n          name=\"essential\">\n        </c2g-checkbox>\n      </div>\n\n      <!-- Quantity -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-input\n          [label]=\"labels().quantityKey || 'Menge'\"\n          [(ngModel)]=\"formData().quantity\"\n          name=\"quantity\"\n          placeholder=\"z.B. 1\">\n        </c2g-input>\n      </div>\n\n      <!-- Weight -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-input\n          [label]=\"labels().weightKey || 'Gewicht (kg)'\"\n          [(ngModel)]=\"formData().weightKg\"\n          name=\"weightKg\"\n          placeholder=\"z.B. 0.5\">\n        </c2g-input>\n      </div>\n\n      <!-- Volume -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-input\n          [label]=\"labels().volumeKey || 'Volumen (l)'\"\n          [(ngModel)]=\"formData().packedVolumeL\"\n          name=\"packedVolumeL\"\n          placeholder=\"z.B. 1.5\">\n        </c2g-input>\n      </div>\n\n      <!-- Hint -->\n      <div class=\"c2g-pl-item-create__field\">\n        <c2g-textarea\n          [label]=\"labels().hintKey || 'Notiz'\"\n          [(ngModel)]=\"formData().hint\"\n          name=\"hint\"\n          [rows]=\"2\"\n          placeholder=\"z.B. Schlafsack für Kinder, Wetterschutz...\">\n        </c2g-textarea>\n      </div>\n\n      <!-- Buttons -->\n      <div class=\"c2g-pl-item-create__actions\">\n        <c2g-button\n          type=\"button\"\n          variant=\"secondary\"\n          size=\"md\"\n          (clicked)=\"closeDialog()\">\n          {{ labels().cancelKey || 'Abbrechen' }}\n        </c2g-button>\n        <c2g-button\n          type=\"submit\"\n          variant=\"primary\"\n          size=\"md\"\n          [disabled]=\"!formData().name.trim()\">\n          {{ labels().createKey || 'Erstellen' }}\n        </c2g-button>\n      </div>\n    </form>\n  </dialog>\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\nimport { PackingListCategoryComponent } from './packing-list-category.component';\nimport { PackingListFiltersComponent } from './packing-list-filters.component';\nimport { PackingListPrivateListComponent } from './packing-list-private-list.component';\nimport { PackingListItemCreateComponent } from './packing-list-item-create.component';\nimport {\n  C2gPackingListFilterState,\n  C2gPackingItemAssignedEvent,\n  C2gPackingGap,\n  C2gPackingListItem,\n  C2gPackingListLabels,\n  C2gPackingListMember,\n  C2gPackingListMemberOverlayRequest,\n  C2gPackingListPermissions,\n  C2gPackingCategoryInfo,\n  C2gPackingListConfig,\n  C2gPackingListSortState,\n  DEFAULT_PACKING_LIST_LABEL_KEYS,\n  DEFAULT_PACKING_LIST_CONFIG\n} from './packing-list.models';\nimport { C2G_PACKING_CATEGORY_INFO } from './packing-list.categories';\nimport { ButtonComponent } from '@camp2gether/c2g-ui';\n\n@Component({\n  selector: 'c2g-packing-list',\n  standalone: true,\n  imports: [\n    PackingListFiltersComponent,\n    PackingListCategoryComponent,\n    PackingListPrivateListComponent,\n    PackingListItemCreateComponent,\n    ButtonComponent,\n  ],\n  templateUrl: './packing-list.component.html',\n  styleUrls: ['./packing-list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListComponent<TField extends string = string> {\n  readonly items = input.required<C2gPackingListItem[]>();\n  readonly gaps = input<C2gPackingGap[]>([]);\n  readonly members = input.required<C2gPackingListMember[]>();\n  readonly currentUserId = input.required<string>();\n  readonly permissions = input<C2gPackingListPermissions>({\n    isOrganizer: false,\n    isGuest: false,\n    isSolo: false,\n    readOnly: false\n  });\n  readonly labels = input<C2gPackingListLabels>(DEFAULT_PACKING_LIST_LABEL_KEYS);\n  readonly categories = input<C2gPackingCategoryInfo[]>(Object.values(C2G_PACKING_CATEGORY_INFO));\n  readonly config = input<C2gPackingListConfig<TField>>(DEFAULT_PACKING_LIST_CONFIG as C2gPackingListConfig<TField>);\n\n  readonly gapBannerCollapsed = signal(false);\n  readonly criticalGaps = computed(() => this.gaps().filter(g => g.severity === 'critical'));\n  readonly warningGaps = computed(() => this.gaps().filter(g => g.severity === 'warning'));\n  readonly hasAnyGaps = computed(() => this.gaps().length > 0);\n\n  toggleGapBanner(): void {\n    this.gapBannerCollapsed.update(v => !v);\n  }\n\n  togglePersonalItemsView(): void {\n    this.showAllPersonalItems.update(v => !v);\n  }\n\n  // Compat layer for deprecated inputs (showStats, showPrivateAsSeparateList)\n  readonly showPrivateAsSeparateList = input(false);\n  readonly showStats = input(true);\n  readonly showAddButton = input(true);\n\n  readonly itemChecked = output<{ itemId: string; checked: boolean }>();\n  readonly itemAssigned = output<C2gPackingItemAssignedEvent>();\n  readonly itemDeleted = output<string>();\n  readonly itemEditRequested = output<string>();\n  readonly itemCreated = output<Partial<C2gPackingListItem>>();\n  readonly personalItemToggled = output<{ itemId: string; memberId: string; checked: boolean }>();\n  readonly memberOverlayRequested = output<C2gPackingListMemberOverlayRequest>();\n  readonly externalMemberViewRequested = output<void>();\n  readonly filterChanged = output<C2gPackingListFilterState>();\n  readonly sortChanged = output<C2gPackingListSortState<TField>>();\n  readonly rowActionTriggered = output<{ actionId: string; item: C2gPackingListItem }>();\n\n  // Merged config: config input takes precedence over deprecated inputs\n  readonly mergedConfig = computed(() => {\n    const cfg = this.config();\n    const features = cfg.features ?? {};\n    \n    // Apply deprecated inputs if config doesn't override\n    return {\n      ...cfg,\n      features: {\n        ...features,\n        stats: features.stats !== undefined ? features.stats : this.showStats(),\n        privateSection: features.privateSection !== undefined ? features.privateSection : this.showPrivateAsSeparateList(),\n      }\n    } as C2gPackingListConfig<TField>;\n  });\n\n  readonly filter = signal<C2gPackingListFilterState>({\n    query: '',\n    visibility: 'all',\n    essentialsOnly: false,\n    memberIds: []\n  });\n\n  readonly showAllPersonalItems = signal(false);\n\n  readonly expandedCategories = signal<Set<string>>(new Set());\n  readonly hasUserToggled = signal(false);\n\n  readonly filteredItems = computed(() => {\n    const filter = this.filter();\n    const q = filter.query.trim().toLowerCase();\n    const isOrganizer = this.permissions().isOrganizer;\n    const showAllPersonal = this.showAllPersonalItems();\n    const currentUserId = this.currentUserId();\n\n    return this.items().filter(item => {\n      // Participants see only their own personal items unless toggle is on\n      if (item.visibility === 'personal' && !isOrganizer && !showAllPersonal) {\n        const assignments = item.assignments ?? [];\n        const isAssignedToMe = assignments.some(a => a.memberId === currentUserId);\n        const isUnassigned = assignments.length === 0;\n        if (!isAssignedToMe && !isUnassigned) {\n          return false;\n        }\n      }\n      if (filter.visibility !== 'all' && item.visibility !== filter.visibility) {\n        return false;\n      }\n      if (filter.essentialsOnly && !item.essential) {\n        return false;\n      }\n      if (filter.memberIds.length > 0) {\n        const selected = new Set(filter.memberIds);\n        const assignments = item.assignments ?? [];\n        const hasSelectedAssignment = assignments.some(assignment => selected.has(assignment.memberId));\n        if (!hasSelectedAssignment) {\n          return false;\n        }\n      }\n      if (!q) {\n        return true;\n      }\n      const searchable = `${item.name} ${item.hint ?? ''} ${item.reason ?? ''}`.toLowerCase();\n      return searchable.includes(q);\n    });\n  });\n\n  readonly categoryGroups = computed(() => {\n    const grouped = new Map<string, C2gPackingListItem[]>();\n    for (const item of this.filteredItems()) {\n      const key = item.category || 'other';\n      if (!grouped.has(key)) {\n        grouped.set(key, []);\n      }\n      grouped.get(key)!.push(item);\n    }\n\n    // Category order: follow C2G_PACKING_CATEGORY_INFO definition, unknowns at end.\n    // A category sinks to the bottom only when ALL its items are packed/confirmed.\n    const knownOrder = Object.keys(C2G_PACKING_CATEGORY_INFO);\n    const isPacked = (i: C2gPackingListItem) =>\n      !!i.assignments?.some(a => a.status === 'packed' || a.status === 'confirmed');\n\n    const entries = Array.from(grouped.entries());\n    entries.sort(([a, aItems], [b, bItems]) => {\n      const aDone = aItems.every(isPacked) ? 1 : 0;\n      const bDone = bItems.every(isPacked) ? 1 : 0;\n      if (aDone !== bDone) return aDone - bDone;\n      const ai = knownOrder.indexOf(a);\n      const bi = knownOrder.indexOf(b);\n      return (ai === -1 ? knownOrder.length : ai) - (bi === -1 ? knownOrder.length : bi);\n    });\n\n    return entries.map(([key, items]) => ({ key, items }));\n  });\n\n  constructor() {\n    effect(() => {\n      if (this.hasUserToggled()) {\n        return;\n      }\n\n      const defaults = this.categoryGroups().slice(0, 3).map(group => group.key);\n      if (defaults.length === 0) {\n        return;\n      }\n\n      if (this.expandedCategories().size === 0) {\n        this.expandedCategories.set(new Set(defaults));\n      }\n    });\n  }\n\n  onFilterChange(next: C2gPackingListFilterState): void {\n    this.filter.set(next);\n    this.filterChanged.emit(next);\n  }\n\n  onExternalMemberViewRequested(): void {\n    this.externalMemberViewRequested.emit();\n  }\n\n  onItemCreated(item: Partial<C2gPackingListItem>): void {\n    this.itemCreated.emit(item);\n  }\n\n  isCategoryExpanded(category: string): boolean {\n    return this.expandedCategories().has(category);\n  }\n\n  toggleCategory(category: string): void {\n    this.hasUserToggled.set(true);\n    const next = new Set(this.expandedCategories());\n    if (next.has(category)) {\n      next.delete(category);\n    } else {\n      next.add(category);\n    }\n    this.expandedCategories.set(next);\n  }\n}\n","<section class=\"c2g-packing-list\">\n  <header class=\"c2g-packing-list__header\">\n    <c2g-packing-list-filters\n      [filter]=\"filter()\"\n      [members]=\"members()\"\n      [labels]=\"labels()\"\n      [disabled]=\"permissions().readOnly\"\n      (filterChange)=\"onFilterChange($event)\"\n      (overlayRequested)=\"onExternalMemberViewRequested()\">\n    </c2g-packing-list-filters>\n\n    @if (!permissions().isOrganizer && !permissions().isSolo) {\n      <button\n        class=\"c2g-packing-list__personal-toggle\"\n        type=\"button\"\n        (click)=\"togglePersonalItemsView()\">\n        @if (showAllPersonalItems()) {\n          <span>Nur meine Items</span>\n        } @else {\n          <span>Alle Personal Items</span>\n        }\n      </button>\n    }\n\n    @if (showAddButton()) {\n      <div class=\"c2g-packing-list__header-actions\">\n        <c2g-packing-list-item-create\n          [permissions]=\"permissions()\"\n          [labels]=\"labels()\"\n          [readOnly]=\"permissions().readOnly\"\n          [categories]=\"categories()\"\n          (itemCreated)=\"onItemCreated($event)\">\n        </c2g-packing-list-item-create>\n      </div>\n    }\n  </header>\n\n  @if (hasAnyGaps()) {\n    <div class=\"c2g-packing-list__gap-banner\" [class.c2g-packing-list__gap-banner--collapsed]=\"gapBannerCollapsed()\">\n      <c2g-button\n        class=\"c2g-packing-list__gap-banner-header\"\n        variant=\"ghost\"\n        size=\"sm\"\n        [icon]=\"gapBannerCollapsed() ? 'chevron_right' : 'expand_more'\"\n        iconPosition=\"end\"\n        [attr.aria-expanded]=\"!gapBannerCollapsed()\"\n        (clicked)=\"toggleGapBanner()\">\n        <span class=\"c2g-packing-list__gap-banner-icon\">\n          @if (criticalGaps().length > 0) { ⚠ } @else { ℹ }\n        </span>\n        <span class=\"c2g-packing-list__gap-banner-title\">\n          @if (criticalGaps().length > 0) {\n            {{ criticalGaps().length }} kritische Lücke{{ criticalGaps().length !== 1 ? 'n' : '' }}\n            @if (warningGaps().length > 0) { + {{ warningGaps().length }} Hinweis{{ warningGaps().length !== 1 ? 'e' : '' }} }\n          } @else {\n            {{ warningGaps().length }} Hinweis{{ warningGaps().length !== 1 ? 'e' : '' }}\n          }\n        </span>\n      </c2g-button>\n\n      @if (!gapBannerCollapsed()) {\n        <ul class=\"c2g-packing-list__gap-list\" role=\"list\">\n          @for (gap of criticalGaps(); track gap.item_key + gap.type) {\n            <li class=\"c2g-packing-list__gap-item c2g-packing-list__gap-item--critical\">\n              <span class=\"c2g-packing-list__gap-dot\"></span>\n              <span class=\"c2g-packing-list__gap-msg\">{{ gap.message }}</span>\n            </li>\n          }\n          @for (gap of warningGaps(); track gap.item_key + gap.type) {\n            <li class=\"c2g-packing-list__gap-item c2g-packing-list__gap-item--warning\">\n              <span class=\"c2g-packing-list__gap-dot\"></span>\n              <span class=\"c2g-packing-list__gap-msg\">{{ gap.message }}</span>\n            </li>\n          }\n        </ul>\n      }\n    </div>\n  }\n\n  @if (filteredItems().length === 0) {\n    <p class=\"c2g-packing-list__empty\">{{ labels().emptyStateKey }}</p>\n  }\n\n  <div class=\"c2g-packing-list__categories\">\n    @for (group of categoryGroups(); track group.key) {\n      <c2g-packing-list-category\n        [categoryKey]=\"group.key\"\n        [items]=\"group.items\"\n        [members]=\"members()\"\n        [selectedMemberIds]=\"filter().memberIds\"\n        [currentUserId]=\"currentUserId()\"\n        [permissions]=\"permissions()\"\n        [labels]=\"labels()\"\n        [expanded]=\"isCategoryExpanded(group.key)\"\n        (toggle)=\"toggleCategory($event)\"\n        (itemChecked)=\"itemChecked.emit($event)\"\n        (itemAssigned)=\"itemAssigned.emit($event)\"\n        (itemDeleted)=\"itemDeleted.emit($event)\"\n        (itemEditRequested)=\"itemEditRequested.emit($event)\"\n        (personalItemToggled)=\"personalItemToggled.emit($event)\"\n        (memberOverlayRequested)=\"memberOverlayRequested.emit($event)\">\n      </c2g-packing-list-category>\n    }\n  </div>\n\n  @if (showPrivateAsSeparateList()) {\n    <c2g-packing-list-private-list\n      [items]=\"filteredItems()\"\n      [members]=\"members()\"\n      [selectedMemberIds]=\"filter().memberIds\"\n      [currentUserId]=\"currentUserId()\"\n      [permissions]=\"permissions()\"\n      [labels]=\"labels()\"\n      (itemChecked)=\"itemChecked.emit($event)\"\n      (itemAssigned)=\"itemAssigned.emit($event)\"\n      (itemDeleted)=\"itemDeleted.emit($event)\"\n      (itemEditRequested)=\"itemEditRequested.emit($event)\"\n      (personalItemToggled)=\"personalItemToggled.emit($event)\"\n      (memberOverlayRequested)=\"memberOverlayRequested.emit($event)\">\n    </c2g-packing-list-private-list>\n  }\n</section>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { C2gPackingListItem } from './packing-list.models';\n\n@Component({\n  selector: 'c2g-packing-list-stats',\n  standalone: true,\n  templateUrl: './packing-list-stats.component.html',\n  styleUrls: ['./packing-list-stats.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackingListStatsComponent {\n  readonly items = input.required<C2gPackingListItem[]>();\n\n  readonly stats = computed(() => {\n    const items = this.items();\n    const packed = items.filter(item => (item.assignments ?? []).some(a => a.status === 'packed' || a.status === 'confirmed')).length;\n    const essential = items.filter(item => !!item.essential).length;\n    return { total: items.length, packed, essential };\n  });\n}\n","<div class=\"c2g-pl-stats\">\n  <span>{{ stats().packed }}/{{ stats().total }}</span>\n  <span>essential: {{ stats().essential }}</span>\n</div>\n","export const WEATHER_ICON_MAP: Record<string, string> = {\n  'sunny': '☀️',\n  'clear': '☀️',\n  'partly-cloudy': '⛅',\n  'partly_cloudy': '⛅',\n  'cloudy': '☁️',\n  'overcast': '☁️',\n  'light-rain': '🌦️',\n  'light_rain': '🌦️',\n  'rain': '🌧️',\n  'heavy-rain': '⛈️',\n  'heavy_rain': '⛈️',\n  'snow': '❄️',\n  'fog': '🌫️',\n  'thunder': '⛈️',\n  'wind': '💨',\n};\n\n/**\n * Resolves a backend weather icon string to an emoji.\n * @param icon    Raw icon string from the API (e.g. \"partly-cloudy\")\n * @param fallback Emoji to return for unrecognised keys. Defaults to '🌤️'.\n *                 Pass `icon` as fallback to preserve the raw string (useful\n *                 for debugging in the full weather widget).\n */\nexport function resolveWeatherIcon(icon: string, fallback = '🌤️'): string {\n  if (!icon) return fallback;\n  return WEATHER_ICON_MAP[icon.toLowerCase()] ?? fallback;\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { resolveWeatherIcon } from './weather-icon.utils';\nimport { WeatherDay } from './weather-widget.models';\n\n@Component({\n  selector: 'c2g-weather-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './weather-widget.component.html',\n  styleUrls: ['./weather-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WeatherWidgetComponent {\n  readonly currentDay = input<WeatherDay | null>(null);\n  readonly forecastSlots = input<WeatherDay[]>([]);\n  readonly destination = input<string>('');\n  readonly dates = input<{ from: string; to: string } | null>(null);\n\n  getWeatherIcon(icon: string): string {\n    return resolveWeatherIcon(icon, icon);\n  }\n\n  formatDate(date: string): string {\n    return new Date(date).toLocaleDateString('de-DE', {\n      weekday: 'short',\n      day: 'numeric',\n      month: 'short'\n    });\n  }\n\n  formatShortDate(date: string): string {\n    return new Date(date).toLocaleDateString('de-DE', { day: 'numeric', month: 'short' });\n  }\n\n  getSlotLabel(index: number, total: number): string {\n    if (total === 1) return 'Reise';\n    if (index === 0) return 'Anreise';\n    if (index === total - 1) return 'Abreise';\n    return 'Mitte';\n  }\n}\n","@if (currentDay()) {\n  <div class=\"wx-widget\">\n    <!-- Hero: current/start-day weather -->\n    <div class=\"wx-hero\">\n      <span class=\"wx-hero__icon\">{{ getWeatherIcon(currentDay()!.icon) }}</span>\n      <div class=\"wx-hero__body\">\n        <div class=\"wx-hero__temp\">{{ currentDay()!.temperature.max }}<sup>°</sup></div>\n        <div class=\"wx-hero__condition\">{{ currentDay()!.description }}</div>\n        @if (destination()) {\n          <div class=\"wx-hero__meta\">\n            <span class=\"wx-hero__location\">📍 {{ destination() }}</span>\n            @if (dates()) {\n              <span class=\"wx-hero__daterange\">\n                {{ formatShortDate(dates()!.from) }} – {{ formatShortDate(dates()!.to) }}\n              </span>\n            }\n          </div>\n        }\n      </div>\n      <div class=\"wx-hero__range\">\n        <span class=\"wx-range__high\">↑ {{ currentDay()!.temperature.max }}°</span>\n        <span class=\"wx-range__low\">↓ {{ currentDay()!.temperature.min }}°</span>\n      </div>\n    </div>\n\n    <!-- Forecast slots -->\n    @if (forecastSlots().length > 1) {\n      <div class=\"wx-forecast\" [attr.data-slots]=\"forecastSlots().length\">\n        @for (slot of forecastSlots(); track $index) {\n          <div class=\"wx-slot\">\n            <span class=\"wx-slot__label\">{{ getSlotLabel($index, forecastSlots().length) }}</span>\n            <span class=\"wx-slot__date\">{{ formatDate(slot.date) }}</span>\n            <span class=\"wx-slot__icon\">{{ getWeatherIcon(slot.icon) }}</span>\n            <div class=\"wx-slot__temps\">\n              <span class=\"wx-slot__max\">{{ slot.temperature.max }}°</span>\n              <span class=\"wx-slot__min\">{{ slot.temperature.min }}°</span>\n            </div>\n          </div>\n        }\n      </div>\n    }\n  </div>\n} @else {\n  <div class=\"wx-empty\">Wetter erscheint nach Ziel- und Datumsauswahl.</div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MemberRoleKey } from '../member-list.models';\n\n@Component({\n  selector: 'c2g-member-tags',\n  standalone: true,\n  templateUrl: './member-tags.component.html',\n  styleUrls: ['./member-tags.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MemberTagsComponent {\n  readonly isCurrentUser = input(false);\n  readonly isRegistered = input(true);\n  readonly roleKey = input<MemberRoleKey>(null);\n\n  getRoleLabel(roleKey: MemberRoleKey): string {\n    switch (roleKey) {\n      case 'organizer':\n        return '🧭 Organisator';\n      case 'treasurer':\n        return '💰 Kassenwart';\n      case 'transport':\n        return '🚙 Fahrkoordination';\n      case 'cook':\n        return '👨‍🍳 Kochen';\n      case 'firstaid':\n        return '🩺 Erste Hilfe';\n      case 'equipment':\n        return '🎒 Ausrüstung';\n      default:\n        return '';\n    }\n  }\n}\n","@if (isCurrentUser()) {\n  <span class=\"tw-member__you-badge\">Du</span>\n}\n\n@if (!isRegistered()) {\n  <span class=\"tw-member__unreg-badge\">Ohne Account</span>\n}\n\n@if (roleKey()) {\n  <span class=\"tw-member__role\">{{ getRoleLabel(roleKey()) }}</span>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  input,\n  output\n} from '@angular/core';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ActionMenuItem } from './action-menu.models';\n\n@Component({\n  selector: 'c2g-action-menu',\n  standalone: true,\n  imports: [CdkMenu, CdkMenuItem, CdkMenuTrigger],\n  templateUrl: './action-menu.component.html',\n  styleUrls: ['./action-menu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionMenuComponent {\n  readonly items = input.required<ActionMenuItem[]>();\n  readonly triggerLabel = input('...');\n  readonly ariaLabel = input('Aktionen');\n\n  readonly itemSelected = output<ActionMenuItem>();\n\n  select(item: ActionMenuItem): void {\n    if (item.disabled) return;\n    this.itemSelected.emit(item);\n  }\n}\n","<div class=\"c2g-action-menu\">\n  <button\n    class=\"c2g-action-menu__trigger\"\n    type=\"button\"\n    [attr.aria-label]=\"ariaLabel()\"\n    [cdkMenuTriggerFor]=\"menuPanel\">\n    {{ triggerLabel() }}\n  </button>\n\n  <ng-template #menuPanel>\n    <ul class=\"c2g-action-menu__list\" cdkMenu>\n      @for (item of items(); track item.key) {\n        <li role=\"none\">\n          <button\n            class=\"c2g-action-menu__item\"\n            [class.c2g-action-menu__item--danger]=\"item.variant === 'danger'\"\n            [class.c2g-action-menu__item--disabled]=\"item.disabled\"\n            [disabled]=\"item.disabled ?? false\"\n            cdkMenuItem\n            type=\"button\"\n            (cdkMenuItemTriggered)=\"select(item)\">\n            @if (item.icon) {\n              <span class=\"c2g-action-menu__item-icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n            }\n            <span>{{ item.label }}</span>\n          </button>\n        </li>\n      }\n    </ul>\n  </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ActionMenuComponent } from '../../action-menu/action-menu.component';\nimport { ActionMenuItem } from '../../action-menu/action-menu.models';\nimport { AvatarComponent } from '@camp2gether/c2g-ui';\nimport { MemberTagsComponent } from '../member-tags/member-tags.component';\nimport { C2gMember } from '../member-list.models';\n\n@Component({\n  selector: 'c2g-member-item',\n  standalone: true,\n  imports: [MemberTagsComponent, ActionMenuComponent, AvatarComponent],\n  templateUrl: './member-item.component.html',\n  styleUrls: ['./member-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MemberItemComponent {\n  readonly member = input.required<C2gMember>();\n\n  readonly remove = output<C2gMember>();\n  readonly invite = output<C2gMember>();\n  readonly edit = output<C2gMember>();\n\n  readonly avatarBackgroundColor = computed(() =>\n    this.member().isCurrentUser ? '#1a6044' : '#e8f0ea'\n  );\n\n  readonly avatarTextColor = computed(() =>\n    this.member().isCurrentUser ? '#ffffff' : '#1a6044'\n  );\n\n  readonly menuItems = computed<ActionMenuItem[]>(() => {\n    const m = this.member();\n    const items: ActionMenuItem[] = [];\n    if (m.isRegistered !== false) {\n      items.push({ key: 'invite', label: 'Einladen', icon: '✉️' });\n    } else {\n      items.push({ key: 'edit', label: 'Bearbeiten', icon: '✏️' });\n    }\n    items.push({ key: 'remove', label: 'Entfernen', icon: '🗑️', variant: 'danger' });\n    return items;\n  });\n\n  onMenuItemSelected(item: ActionMenuItem): void {\n    const m = this.member();\n    if (item.key === 'remove') this.remove.emit(m);\n    else if (item.key === 'invite') this.invite.emit(m);\n    else if (item.key === 'edit') this.edit.emit(m);\n  }\n\n  getMemberTypeLabel(type: string): string {\n    switch (type) {\n      case 'adult':\n        return 'Erwachsener';\n      case 'child':\n        return 'Kind';\n      case 'pet':\n        return 'Haustier';\n      default:\n        return type;\n    }\n  }\n}\n","<c2g-avatar\n  [initials]=\"member().avatarInitials\"\n  [name]=\"member().name\"\n  [backgroundColor]=\"avatarBackgroundColor()\"\n  [textColor]=\"avatarTextColor()\"\n  ringTone=\"neutral\">\n</c2g-avatar>\n\n<div class=\"tw-member__info\">\n  <span class=\"tw-member__name\">\n    {{ member().name }}\n    <c2g-member-tags\n      [isCurrentUser]=\"member().isCurrentUser ?? false\"\n      [isRegistered]=\"member().isRegistered ?? true\">\n    </c2g-member-tags>\n  </span>\n  <span class=\"tw-member__type\">{{ getMemberTypeLabel(member().type) }}</span>\n</div>\n\n<c2g-member-tags\n  [isCurrentUser]=\"false\"\n  [isRegistered]=\"true\"\n  [roleKey]=\"member().roleKey\">\n</c2g-member-tags>\n\n<c2g-action-menu\n  [items]=\"menuItems()\"\n  ariaLabel=\"Mitglied-Aktionen\"\n  (itemSelected)=\"onMenuItemSelected($event)\">\n</c2g-action-menu>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MemberItemComponent } from '../member-item/member-item.component';\nimport { C2gMember } from '../member-list.models';\n\n@Component({\n  selector: 'c2g-member-list',\n  standalone: true,\n  imports: [MemberItemComponent],\n  templateUrl: './member-list.component.html',\n  styleUrls: ['./member-list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MemberListComponent {\n  readonly members = input.required<C2gMember[]>();\n\n  readonly memberRemove = output<C2gMember>();\n  readonly memberInvite = output<C2gMember>();\n  readonly memberEdit = output<C2gMember>();\n}\n","<ul class=\"tw-member-list\">\n  @for (member of members(); track member.id) {\n    <li class=\"tw-member\">\n      <c2g-member-item\n        [member]=\"member\"\n        (remove)=\"memberRemove.emit($event)\"\n        (invite)=\"memberInvite.emit($event)\"\n        (edit)=\"memberEdit.emit($event)\">\n      </c2g-member-item>\n    </li>\n  }\n</ul>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MemberListComponent } from '../member-list/member-list.component';\nimport { C2gMember } from '../member-list.models';\n\n@Component({\n  selector: 'c2g-member-panel',\n  standalone: true,\n  imports: [MemberListComponent],\n  templateUrl: './member-panel.component.html',\n  styleUrls: ['./member-panel.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MemberPanelComponent {\n  readonly members = input.required<C2gMember[]>();\n\n  readonly memberRemove = output<C2gMember>();\n  readonly memberInvite = output<C2gMember>();\n  readonly memberEdit = output<C2gMember>();\n}\n","<div class=\"tw-card\">\n  <div class=\"tw-card__header\">\n    <h2 class=\"tw-card__title\">Teilnehmer ({{ members().length }})</h2>\n    <ng-content select=\"[slot=header-actions]\"></ng-content>\n  </div>\n\n  <c2g-member-list\n    [members]=\"members()\"\n    (memberRemove)=\"memberRemove.emit($event)\"\n    (memberInvite)=\"memberInvite.emit($event)\"\n    (memberEdit)=\"memberEdit.emit($event)\">\n  </c2g-member-list>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  output\n} from '@angular/core';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { C2gMenuItem, C2gMenuSelection } from './menu.models';\n\n@Component({\n  selector: 'c2g-menu',\n  standalone: true,\n  imports: [CdkMenu, CdkMenuItem, CdkMenuTrigger],\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MenuComponent {\n  readonly items = input.required<C2gMenuItem[]>();\n  readonly triggerLabel = input('Menü');\n  readonly triggerAriaLabel = input('Menü öffnen');\n\n  readonly itemSelected = output<C2gMenuSelection>();\n\n  readonly flatItems = computed(() => this.items());\n\n  select(item: C2gMenuItem): void {\n    if (item.disabled || (item.children?.length ?? 0) > 0) return;\n    this.itemSelected.emit({ item });\n  }\n\n  selectChild(parent: C2gMenuItem, child: C2gMenuItem): void {\n    if (child.disabled) return;\n    this.itemSelected.emit({ item: child, parent });\n  }\n}\n","<div class=\"c2g-menu\">\n  <button\n    class=\"c2g-menu__trigger\"\n    type=\"button\"\n    [attr.aria-label]=\"triggerAriaLabel()\"\n    [cdkMenuTriggerFor]=\"menuPanel\">\n    {{ triggerLabel() }}\n  </button>\n\n  <ng-template #menuPanel>\n    <ul class=\"c2g-menu__list\" cdkMenu>\n      @for (item of flatItems(); track item.key) {\n        <li\n          class=\"c2g-menu__entry\"\n          [class.c2g-menu__entry--has-children]=\"(item.children?.length ?? 0) > 0\">\n\n          @if ((item.children?.length ?? 0) > 0) {\n            <button\n              class=\"c2g-menu__item\"\n              cdkMenuItem\n              [cdkMenuTriggerFor]=\"subMenu\"\n              [disabled]=\"item.disabled ?? false\"\n              type=\"button\">\n              @if (item.icon) {\n                <span class=\"c2g-menu__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n              }\n              <span>{{ item.label }}</span>\n              <span class=\"c2g-menu__caret\" aria-hidden=\"true\">›</span>\n            </button>\n\n            <ng-template #subMenu>\n              <ul class=\"c2g-menu__submenu\" cdkMenu>\n                @for (child of item.children ?? []; track child.key) {\n                  <li role=\"none\">\n                    <button\n                      class=\"c2g-menu__item\"\n                      [class.c2g-menu__item--danger]=\"child.variant === 'danger'\"\n                      [disabled]=\"child.disabled ?? false\"\n                      cdkMenuItem\n                      type=\"button\"\n                      (cdkMenuItemTriggered)=\"selectChild(item, child)\">\n                      @if (child.icon) {\n                        <span class=\"c2g-menu__icon\" aria-hidden=\"true\">{{ child.icon }}</span>\n                      }\n                      <span>{{ child.label }}</span>\n                    </button>\n                  </li>\n                }\n              </ul>\n            </ng-template>\n          } @else {\n            <button\n              class=\"c2g-menu__item\"\n              [class.c2g-menu__item--danger]=\"item.variant === 'danger'\"\n              [disabled]=\"item.disabled ?? false\"\n              cdkMenuItem\n              type=\"button\"\n              (cdkMenuItemTriggered)=\"select(item)\">\n              @if (item.icon) {\n                <span class=\"c2g-menu__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n              }\n              <span>{{ item.label }}</span>\n            </button>\n          }\n        </li>\n      }\n    </ul>\n  </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, HostListener, input, output } from '@angular/core';\nimport { C2gSubmenuItem } from '../menu.models';\n\n@Component({\n  selector: 'c2g-submenu-item',\n  standalone: true,\n  templateUrl: './submenu-item.component.html',\n  styleUrls: ['./submenu-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubmenuItemComponent {\n  readonly item = input.required<C2gSubmenuItem>();\n  readonly active = input(false);\n\n  readonly selected = output<C2gSubmenuItem>();\n  readonly mouseenter = output<void>();\n\n  onClick(): void {\n    if (this.item().disabled) {\n      return;\n    }\n    this.selected.emit(this.item());\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.mouseenter.emit();\n  }\n}\n","<li role=\"none\">\n  <button\n    class=\"c2g-submenu-item\"\n    [class.c2g-submenu-item--active]=\"active() || item().active\"\n    [disabled]=\"item().disabled ?? false\"\n    role=\"menuitem\"\n    type=\"button\"\n    (click)=\"onClick()\">\n    {{ item().label }}\n  </button>\n</li>\n","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { C2gSubmenuItem } from '../menu.models';\nimport { SubmenuItemComponent } from './submenu-item.component';\n\n@Component({\n  selector: 'c2g-submenu',\n  standalone: true,\n  imports: [SubmenuItemComponent],\n  templateUrl: './submenu.component.html',\n  styleUrls: ['./submenu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubmenuComponent {\n  readonly items = input.required<C2gSubmenuItem[]>();\n  readonly open = input(false);\n\n  readonly itemSelected = output<C2gSubmenuItem>();\n\n  readonly activeIndex = signal(0);\n\n  onItemSelected(item: C2gSubmenuItem): void {\n    if (item.disabled) {\n      return;\n    }\n    this.itemSelected.emit(item);\n  }\n\n  setActiveIndex(index: number): void {\n    this.activeIndex.set(index);\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    const list = this.items();\n    if (!list.length) {\n      return;\n    }\n\n    if (event.key === 'ArrowDown') {\n      event.preventDefault();\n      this.activeIndex.set((this.activeIndex() + 1) % list.length);\n      return;\n    }\n\n    if (event.key === 'ArrowUp') {\n      event.preventDefault();\n      this.activeIndex.set((this.activeIndex() - 1 + list.length) % list.length);\n      return;\n    }\n\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      const selected = list[this.activeIndex()];\n      this.onItemSelected(selected);\n    }\n  }\n}\n","@if (open()) {\n  <ul class=\"c2g-submenu\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n    @for (item of items(); track item.key; let index = $index) {\n      <c2g-submenu-item\n        [item]=\"item\"\n        [active]=\"activeIndex() === index\"\n        (mouseenter)=\"setActiveIndex(index)\"\n        (selected)=\"onItemSelected($event)\">\n      </c2g-submenu-item>\n    }\n  </ul>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport {\n  C2gMainNavigationItem,\n  C2gSubmenuSelection,\n  C2gSubmenuItem\n} from '../menu.models';\nimport { SubmenuComponent } from './submenu.component';\n\n@Component({\n  selector: 'c2g-main-navigation-item',\n  standalone: true,\n  imports: [SubmenuComponent],\n  templateUrl: './main-navigation-item.component.html',\n  styleUrls: ['./main-navigation-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainNavigationItemComponent {\n  readonly item = input.required<C2gMainNavigationItem>();\n\n  readonly itemSelected = output<C2gMainNavigationItem>();\n  readonly subItemSelected = output<C2gSubmenuSelection>();\n\n  readonly submenuOpen = signal(false);\n  readonly hasSubmenu = computed(() => (this.item().subItems?.length ?? 0) > 0);\n\n  onItemClick(): void {\n    if (this.item().disabled) {\n      return;\n    }\n    if (this.hasSubmenu()) {\n      this.submenuOpen.update(open => !open);\n      return;\n    }\n    this.itemSelected.emit(this.item());\n  }\n\n  onMouseEnter(): void {\n    if (this.hasSubmenu()) {\n      this.submenuOpen.set(true);\n    }\n  }\n\n  onMouseLeave(): void {\n    this.submenuOpen.set(false);\n  }\n\n  onSubItemSelected(sub: C2gSubmenuItem): void {\n    this.subItemSelected.emit({ main: this.item(), sub });\n    this.submenuOpen.set(false);\n  }\n\n  onItemKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.onItemClick();\n      return;\n    }\n\n    if (event.key === 'ArrowDown' && this.hasSubmenu()) {\n      event.preventDefault();\n      this.submenuOpen.set(true);\n      return;\n    }\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      this.submenuOpen.set(false);\n    }\n  }\n}\n","<li class=\"c2g-main-nav-item\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n  <button\n    class=\"c2g-main-nav-item__button\"\n    [class.c2g-main-nav-item__button--active]=\"item().active\"\n    [disabled]=\"item().disabled ?? false\"\n    [attr.aria-haspopup]=\"hasSubmenu() ? 'menu' : null\"\n    [attr.aria-expanded]=\"hasSubmenu() ? submenuOpen() : null\"\n    type=\"button\"\n    (click)=\"onItemClick()\"\n    (keydown)=\"onItemKeydown($event)\">\n    <span>{{ item().label }}</span>\n    @if (hasSubmenu()) {\n      <span class=\"c2g-main-nav-item__caret\" aria-hidden=\"true\">▾</span>\n    }\n  </button>\n\n  @if (hasSubmenu()) {\n    <c2g-submenu\n      [items]=\"item().subItems ?? []\"\n      [open]=\"submenuOpen()\"\n      (itemSelected)=\"onSubItemSelected($event)\">\n    </c2g-submenu>\n  }\n</li>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport {\n  C2gMainNavigationItem,\n  C2gSubmenuItem,\n  C2gSubmenuSelection\n} from '../menu.models';\nimport { MainNavigationItemComponent } from './main-navigation-item.component';\n\n@Component({\n  selector: 'c2g-main-navigation',\n  standalone: true,\n  imports: [MainNavigationItemComponent],\n  templateUrl: './main-navigation.component.html',\n  styleUrls: ['./main-navigation.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainNavigationComponent {\n  readonly items = input.required<C2gMainNavigationItem[]>();\n  readonly ariaLabel = input('Hauptnavigation');\n\n  readonly mainItemSelected = output<C2gMainNavigationItem>();\n  readonly subItemSelected = output<C2gSubmenuSelection>();\n\n  onMainItemSelected(item: C2gMainNavigationItem): void {\n    this.mainItemSelected.emit(item);\n  }\n\n  onSubItemSelected(selection: C2gSubmenuSelection): void {\n    this.subItemSelected.emit(selection);\n  }\n\n  trackByKey = (_index: number, item: C2gMainNavigationItem): string => item.key;\n  trackSubByKey = (_index: number, item: C2gSubmenuItem): string => item.key;\n}\n","<nav class=\"c2g-main-navigation\" [attr.aria-label]=\"ariaLabel()\">\n  <ul class=\"c2g-main-navigation__list\">\n    @for (item of items(); track trackByKey($index, item)) {\n      <c2g-main-navigation-item\n        [item]=\"item\"\n        (itemSelected)=\"onMainItemSelected($event)\"\n        (subItemSelected)=\"onSubItemSelected($event)\">\n      </c2g-main-navigation-item>\n    }\n  </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { NextAdventureData } from './dashboard-widgets.models';\n\nconst WEATHER_ICONS: Record<string, string> = {\n  sunny: '☀️', 'partly-cloudy': '⛅', cloudy: '☁️',\n  rain: '🌧️', storm: '⛈️', snow: '❄️', wind: '💨', fog: '🌫️'\n};\n\nconst TOUR_TYPE_ICONS: Record<string, string> = {\n  hiking: '🥾', camping: '⛺', cycling: '🚴', climbing: '🧗',\n  kayaking: '🚣', skiing: '⛷️', backpacking: '🎒', road_trip: '🚗'\n};\n\n@Component({\n  selector: 'c2g-next-adventure-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './next-adventure-widget.component.html',\n  styleUrls: ['./next-adventure-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NextAdventureWidgetComponent {\n  readonly data = input.required<NextAdventureData>();\n\n  readonly countdown = computed(() => {\n    const from = new Date(this.data().fromDate);\n    from.setHours(0, 0, 0, 0);\n    const today = new Date();\n    today.setHours(0, 0, 0, 0);\n    return Math.max(0, Math.ceil((from.getTime() - today.getTime()) / 86400000));\n  });\n\n  readonly duration = computed(() => {\n    const from = new Date(this.data().fromDate);\n    const to = new Date(this.data().toDate);\n    return Math.ceil((to.getTime() - from.getTime()) / 86400000) + 1;\n  });\n\n  readonly countdownLabel = computed(() => {\n    const d = this.countdown();\n    if (d === 0) return 'Heute gehts los!';\n    if (d === 1) return 'Morgen gehts los!';\n    return `Noch ${d} Tage`;\n  });\n\n  readonly dateRange = computed(() => {\n    const fmt = (s: string) => new Date(s).toLocaleDateString('de-DE', { day: '2-digit', month: 'short' });\n    return `${fmt(this.data().fromDate)} – ${fmt(this.data().toDate)}`;\n  });\n\n  readonly tourTypeIcon = computed(() =>\n    TOUR_TYPE_ICONS[this.data().tourType ?? ''] ?? '🏕️'\n  );\n\n  readonly weatherSlots = computed(() => (this.data().weather ?? []).slice(0, 5));\n\n  readonly urgencyClass = computed(() => {\n    const d = this.countdown();\n    if (d <= 1) return 'c2g-next-adventure--now';\n    if (d <= 7) return 'c2g-next-adventure--soon';\n    return '';\n  });\n\n  weatherIcon(icon: string): string {\n    return WEATHER_ICONS[icon] ?? '🌤️';\n  }\n\n  formatWeatherDate(date: string): string {\n    return new Date(date).toLocaleDateString('de-DE', { weekday: 'short', day: 'numeric' });\n  }\n}\n","<div class=\"c2g-next-adventure\" [class]=\"urgencyClass()\">\n\n  <!-- Row 1: type icon + meta + optional pulse orb -->\n  <div class=\"c2g-next-adventure__header\">\n    <span class=\"c2g-next-adventure__type-icon\" aria-hidden=\"true\">{{ tourTypeIcon() }}</span>\n\n    <div class=\"c2g-next-adventure__meta\">\n      <span class=\"c2g-next-adventure__label\">Nächstes Abenteuer</span>\n      <span class=\"c2g-next-adventure__dates\">{{ dateRange() }} · {{ duration() }} Tage</span>\n    </div>\n\n    @if (data().showPulse) {\n      <div class=\"c2g-next-adventure__pulse-orb\" aria-hidden=\"true\">\n        <span class=\"c2g-next-adventure__pulse-ring c2g-next-adventure__pulse-ring--1\"></span>\n        <span class=\"c2g-next-adventure__pulse-ring c2g-next-adventure__pulse-ring--2\"></span>\n        <span class=\"c2g-next-adventure__pulse-ring c2g-next-adventure__pulse-ring--3\"></span>\n        <span class=\"c2g-next-adventure__pulse-core\">🔴</span>\n      </div>\n    }\n  </div>\n\n  <!-- Tour name + destination -->\n  <div class=\"c2g-next-adventure__body\">\n    <h2 class=\"c2g-next-adventure__name\">{{ data().tourName }}</h2>\n    <p class=\"c2g-next-adventure__destination\">📍 {{ data().destination }}</p>\n  </div>\n\n  <!-- Countdown -->\n  <div class=\"c2g-next-adventure__countdown\">\n    <span class=\"c2g-next-adventure__countdown-number\">{{ countdown() }}</span>\n    <span class=\"c2g-next-adventure__countdown-label\">{{ countdownLabel() }}</span>\n  </div>\n\n  <!-- Weather strip -->\n  @if (weatherSlots().length > 0) {\n    <div class=\"c2g-next-adventure__weather\">\n      @for (day of weatherSlots(); track day.date) {\n        <div class=\"c2g-next-adventure__weather-day\" [class.c2g-next-adventure__weather-day--locked]=\"day.locked\">\n          @if (day.locked) {\n            <span class=\"c2g-next-adventure__weather-date\">{{ formatWeatherDate(day.date) }}</span>\n            <span class=\"c2g-next-adventure__weather-lock\" aria-hidden=\"true\">🔒</span>\n            <span class=\"c2g-next-adventure__weather-badge\">Premium</span>\n          } @else {\n            <span class=\"c2g-next-adventure__weather-date\">{{ formatWeatherDate(day.date) }}</span>\n            <span class=\"c2g-next-adventure__weather-icon\" aria-hidden=\"true\">{{ weatherIcon(day.icon) }}</span>\n            <span class=\"c2g-next-adventure__weather-temp\">\n              {{ day.tempMax }}° <span class=\"c2g-next-adventure__weather-min\">{{ day.tempMin }}°</span>\n            </span>\n          }\n        </div>\n      }\n    </div>\n  }\n\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  signal,\n  effect,\n} from '@angular/core';\nimport { PackStatusData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-pack-status-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './pack-status-widget.component.html',\n  styleUrls: ['./pack-status-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackStatusWidgetComponent {\n  readonly data = input.required<PackStatusData>();\n\n  readonly percent = computed(() => {\n    const d = this.data();\n    if (d.totalItems === 0) return 0;\n    return Math.round((d.completedItems / d.totalItems) * 100);\n  });\n\n  readonly criticalOpen = computed(() =>\n    this.data().criticalTotal - this.data().criticalCompleted\n  );\n\n  readonly statusColor = computed((): 'success' | 'warning' | 'primary' => {\n    if (this.percent() === 100) return 'success';\n    if (this.criticalOpen() > 0) return 'warning';\n    return 'primary';\n  });\n\n  readonly statusLabel = computed(() => {\n    const p = this.percent();\n    if (p === 100) return 'Alles gepackt!';\n    if (p >= 80)   return 'Fast fertig';\n    if (p >= 50)   return 'Gut dabei';\n    if (p > 0)     return 'Packen gestartet';\n    return 'Noch nicht gepackt';\n  });\n\n  // SVG ring\n  readonly radius = 44;\n  readonly strokeWidth = 8;\n  readonly circumference = 2 * Math.PI * this.radius;\n\n  readonly strokeDashoffset = computed(() =>\n    this.circumference * (1 - this.percent() / 100)\n  );\n\n  // Segment tick marks (every 10%)\n  readonly ticks = Array.from({ length: 10 }, (_, i) => {\n    const angle = (i / 10) * 360 - 90;\n    const rad   = (angle * Math.PI) / 180;\n    const r1 = this.radius + this.strokeWidth / 2 + 3;\n    const r2 = r1 + 4;\n    const cx = 56, cy = 56;\n    return {\n      x1: cx + r1 * Math.cos(rad),\n      y1: cy + r1 * Math.sin(rad),\n      x2: cx + r2 * Math.cos(rad),\n      y2: cy + r2 * Math.sin(rad),\n    };\n  });\n\n  // Packed items as individual visual \"dots\" (up to 20 shown)\n  readonly itemDots = computed(() => {\n    const total = Math.min(this.data().totalItems, 20);\n    const done  = Math.round((this.data().completedItems / Math.max(this.data().totalItems, 1)) * total);\n    return Array.from({ length: total }, (_, i) => i < done);\n  });\n\n  // Count-up for percent display\n  readonly displayPercent = signal(0);\n  private raf = 0;\n\n  constructor() {\n    effect(() => {\n      const target = this.percent();\n      cancelAnimationFrame(this.raf);\n      const start = performance.now();\n      const duration = 800;\n      const tick = (now: number) => {\n        const t = Math.min((now - start) / duration, 1);\n        const ease = 1 - Math.pow(1 - t, 3);\n        this.displayPercent.set(Math.round(ease * target));\n        if (t < 1) this.raf = requestAnimationFrame(tick);\n      };\n      this.raf = requestAnimationFrame(tick);\n    });\n  }\n}\n","<div class=\"c2g-ps\" [class]=\"'c2g-ps--' + statusColor()\">\n\n  <!-- Header -->\n  <div class=\"c2g-ps__header\">\n    <div class=\"c2g-ps__title-row\">\n      <span class=\"c2g-ps__label\">🎒 Packstatus</span>\n      @if (data().tourName) {\n        <span class=\"c2g-ps__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    <span class=\"c2g-ps__status-badge\">{{ statusLabel() }}</span>\n  </div>\n\n  <!-- Main: ring + info side by side -->\n  <div class=\"c2g-ps__body\">\n\n    <!-- SVG Ring -->\n    <div class=\"c2g-ps__ring-wrap\">\n      <svg class=\"c2g-ps__ring\" viewBox=\"0 0 112 112\" aria-hidden=\"true\">\n        <!-- Track -->\n        <circle class=\"c2g-ps__ring-track\"\n          cx=\"56\" cy=\"56\" [attr.r]=\"radius\"\n          fill=\"none\" [attr.stroke-width]=\"strokeWidth\" />\n        <!-- Fill -->\n        <circle class=\"c2g-ps__ring-fill\"\n          cx=\"56\" cy=\"56\" [attr.r]=\"radius\"\n          fill=\"none\" [attr.stroke-width]=\"strokeWidth\"\n          stroke-linecap=\"round\"\n          [attr.stroke-dasharray]=\"circumference\"\n          [attr.stroke-dashoffset]=\"strokeDashoffset()\"\n          transform=\"rotate(-90 56 56)\" />\n        <!-- Tick marks -->\n        @for (t of ticks; track $index) {\n          <line class=\"c2g-ps__tick\"\n            [attr.x1]=\"t.x1\" [attr.y1]=\"t.y1\"\n            [attr.x2]=\"t.x2\" [attr.y2]=\"t.y2\" />\n        }\n      </svg>\n      <!-- Center content -->\n      <div class=\"c2g-ps__ring-center\">\n        <span class=\"c2g-ps__percent\">{{ displayPercent() }}<span class=\"c2g-ps__percent-unit\">%</span></span>\n        @if (statusColor() === 'success') {\n          <span class=\"c2g-ps__ring-emoji\">🎉</span>\n        }\n      </div>\n    </div>\n\n    <!-- Info panel -->\n    <div class=\"c2g-ps__info\">\n\n      <!-- Item count -->\n      <div class=\"c2g-ps__count-row\">\n        <span class=\"c2g-ps__count-main\">{{ data().completedItems }}</span>\n        <span class=\"c2g-ps__count-sep\">/</span>\n        <span class=\"c2g-ps__count-total\">{{ data().totalItems }}</span>\n        <span class=\"c2g-ps__count-unit\">Items</span>\n      </div>\n\n      <!-- Item dots grid -->\n      @if (itemDots().length > 0) {\n        <div class=\"c2g-ps__dots\">\n          @for (done of itemDots(); track $index) {\n            <span class=\"c2g-ps__dot\" [class.c2g-ps__dot--done]=\"done\"></span>\n          }\n        </div>\n      }\n\n      <!-- Critical alert / all clear -->\n      @if (criticalOpen() > 0) {\n        <div class=\"c2g-ps__alert\">\n          <span class=\"c2g-ps__alert-icon\">⚠️</span>\n          <span class=\"c2g-ps__alert-text\">\n            {{ criticalOpen() }} kritische{{ criticalOpen() === 1 ? 's' : '' }} fehlt{{ criticalOpen() === 1 ? '' : 'en' }}\n          </span>\n        </div>\n      } @else if (data().criticalTotal > 0) {\n        <div class=\"c2g-ps__all-clear\">\n          <span>✓ Alle kritischen Items gepackt</span>\n        </div>\n      }\n\n    </div>\n  </div>\n\n  <!-- Progress bar strip at bottom -->\n  <div class=\"c2g-ps__strip-track\">\n    <div class=\"c2g-ps__strip-fill\" [style.width.%]=\"percent()\"></div>\n  </div>\n\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  OnDestroy,\n  computed,\n  effect,\n  input,\n  signal,\n} from '@angular/core';\nimport { PackWeightData } from './dashboard-widgets.models';\n\nconst SCALE_MAX_G = 30_000;\n\nconst ZONES = [\n  { label: 'Ultraleicht', maxG:  7_000, color: '#22c55e', bgColor: 'rgba(34,197,94,0.18)'  },\n  { label: 'Leicht',      maxG: 12_000, color: '#84cc16', bgColor: 'rgba(132,204,22,0.15)' },\n  { label: 'Mittel',      maxG: 18_000, color: '#f59e0b', bgColor: 'rgba(245,158,11,0.14)' },\n  { label: 'Schwer',      maxG: 25_000, color: '#f97316', bgColor: 'rgba(249,115,22,0.14)' },\n  { label: 'Sehr schwer', maxG: 30_000, color: '#ef4444', bgColor: 'rgba(239,68,68,0.15)'  },\n] as const;\n\n@Component({\n  selector: 'c2g-pack-weight-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './pack-weight-widget.component.html',\n  styleUrls: ['./pack-weight-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackWeightWidgetComponent implements OnDestroy {\n  readonly data = input.required<PackWeightData>();\n\n  readonly zone = computed(() =>\n    ZONES.find(z => this.data().currentWeightG <= z.maxG) ?? ZONES[ZONES.length - 1]\n  );\n\n  readonly scalePercent = computed(() =>\n    Math.min(100, (this.data().currentWeightG / SCALE_MAX_G) * 100)\n  );\n\n  readonly prevScalePercent = computed(() => {\n    const prev = this.data().previousWeightG;\n    if (prev == null) return null;\n    return Math.min(100, (prev / SCALE_MAX_G) * 100);\n  });\n\n  readonly diffG = computed(() => {\n    const prev = this.data().previousWeightG;\n    if (prev == null) return null;\n    return this.data().currentWeightG - prev;\n  });\n\n  readonly diffKg = computed(() => {\n    const d = this.diffG();\n    if (d == null) return null;\n    return (Math.abs(d) / 1000).toFixed(1);\n  });\n\n  readonly diffTrend = computed((): 'better' | 'worse' | 'same' | null => {\n    const d = this.diffG();\n    if (d == null) return null;\n    if (d < 0) return 'better';\n    if (d > 0) return 'worse';\n    return 'same';\n  });\n\n  // Animated values\n  readonly animatedPercent = signal(0);\n  readonly displayKg = signal('0.0');\n\n  private rafMarker = 0;\n  private rafKg = 0;\n\n  constructor() {\n    effect(() => {\n      const targetPct = this.scalePercent();\n      const targetKg  = this.data().currentWeightG / 1000;\n\n      // Marker animation\n      cancelAnimationFrame(this.rafMarker);\n      const fromPct = this.animatedPercent();\n      const startM  = performance.now();\n      const tickMarker = (now: number) => {\n        const t = Math.min((now - startM) / 900, 1);\n        const e = 1 - Math.pow(1 - t, 4);\n        this.animatedPercent.set(fromPct + (targetPct - fromPct) * e);\n        if (t < 1) this.rafMarker = requestAnimationFrame(tickMarker);\n      };\n      this.rafMarker = requestAnimationFrame(tickMarker);\n\n      // Count-up kg\n      cancelAnimationFrame(this.rafKg);\n      const startK = performance.now();\n      const tickKg = (now: number) => {\n        const t = Math.min((now - startK) / 900, 1);\n        const e = 1 - Math.pow(1 - t, 3);\n        this.displayKg.set((e * targetKg).toFixed(1));\n        if (t < 1) this.rafKg = requestAnimationFrame(tickKg);\n      };\n      this.rafKg = requestAnimationFrame(tickKg);\n    });\n  }\n\n  // Zone segments for colour gradient bar\n  readonly zoneSegments = computed(() => {\n    let prev = 0;\n    return ZONES.map(z => {\n      const right = (z.maxG / SCALE_MAX_G) * 100;\n      const seg   = { left: prev, width: right - prev, color: z.color, bgColor: z.bgColor, label: z.label };\n      prev = right;\n      return seg;\n    });\n  });\n\n  // Tick marks: 0 5 10 15 20 25 30 kg\n  readonly ticks = Array.from({ length: 7 }, (_, i) => ({\n    pct:   (i * 5_000 / SCALE_MAX_G) * 100,\n    label: `${i * 5}`,\n  }));\n\n  ngOnDestroy(): void {\n    cancelAnimationFrame(this.rafMarker);\n    cancelAnimationFrame(this.rafKg);\n  }\n}\n","<div class=\"c2g-pw\">\n\n  <!-- Header -->\n  <div class=\"c2g-pw__header\">\n    <div class=\"c2g-pw__title-col\">\n      <span class=\"c2g-pw__label\">Packgewicht</span>\n      @if (data().tourName) {\n        <span class=\"c2g-pw__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    <!-- Zone badge -->\n    <span class=\"c2g-pw__zone-badge\"\n      [style.background]=\"zone().bgColor\"\n      [style.color]=\"zone().color\">\n      {{ zone().label }}\n    </span>\n  </div>\n\n  <!-- Big value -->\n  <div class=\"c2g-pw__value-row\">\n    <span class=\"c2g-pw__value\" [style.color]=\"zone().color\">{{ displayKg() }}</span>\n    <span class=\"c2g-pw__unit\">kg</span>\n\n    <!-- Diff pill -->\n    @if (diffG() != null) {\n      <span class=\"c2g-pw__diff-pill\"\n        [class.c2g-pw__diff-pill--better]=\"diffTrend() === 'better'\"\n        [class.c2g-pw__diff-pill--worse]=\"diffTrend() === 'worse'\">\n        @if (diffTrend() === 'better') { ↓ {{ diffKg() }} kg }\n        @else if (diffTrend() === 'worse') { ↑ {{ diffKg() }} kg }\n        @else { → gleich }\n      </span>\n    }\n  </div>\n\n  <!-- Scale bar -->\n  <div class=\"c2g-pw__scale\">\n\n    <!-- Colour zone segments -->\n    <div class=\"c2g-pw__zones\">\n      @for (seg of zoneSegments(); track seg.label) {\n        <div class=\"c2g-pw__zone-seg\"\n          [style.width.%]=\"seg.width\"\n          [style.background]=\"seg.bgColor\"\n          [style.border-right]=\"'1px solid ' + seg.color + '22'\">\n        </div>\n      }\n    </div>\n\n    <!-- Gradient fill up to current value -->\n    <div class=\"c2g-pw__fill-track\">\n      <div class=\"c2g-pw__fill\"\n        [style.width.%]=\"animatedPercent()\"\n        [style.background]=\"'linear-gradient(90deg, #22c55e, ' + zone().color + ')'\">\n      </div>\n    </div>\n\n    <!-- Previous marker -->\n    @if (prevScalePercent() != null) {\n      <div class=\"c2g-pw__marker c2g-pw__marker--prev\"\n        [style.left.%]=\"prevScalePercent()\">\n        <div class=\"c2g-pw__marker-line\"></div>\n        <span class=\"c2g-pw__marker-label\">Letzte Tour</span>\n      </div>\n    }\n\n    <!-- Current marker -->\n    <div class=\"c2g-pw__marker c2g-pw__marker--current\"\n      [style.left.%]=\"animatedPercent()\"\n      [style.--marker-color]=\"zone().color\">\n      <div class=\"c2g-pw__marker-pin\"></div>\n      <div class=\"c2g-pw__marker-line\"></div>\n    </div>\n\n    <!-- Tick marks -->\n    <div class=\"c2g-pw__ticks\">\n      @for (tick of ticks; track tick.pct) {\n        <div class=\"c2g-pw__tick\" [style.left.%]=\"tick.pct\">\n          <div class=\"c2g-pw__tick-line\"></div>\n          <span class=\"c2g-pw__tick-label\">{{ tick.label }}</span>\n        </div>\n      }\n    </div>\n\n  </div>\n\n  <!-- Zone legend -->\n  <div class=\"c2g-pw__legend\">\n    @for (seg of zoneSegments(); track seg.label) {\n      <div class=\"c2g-pw__legend-item\"\n        [class.c2g-pw__legend-item--active]=\"seg.label === zone().label\">\n        <span class=\"c2g-pw__legend-dot\" [style.background]=\"seg.color\"></span>\n        <span class=\"c2g-pw__legend-label\">{{ seg.label }}</span>\n      </div>\n    }\n  </div>\n\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MemberReadinessEntry } from './dashboard-widgets.models';\n\nexport interface ReadinessGroup {\n  label: string;\n  emoji: string;\n  color: 'success' | 'warning' | 'danger' | 'neutral';\n  min: number;\n  max: number;\n  members: MemberReadinessEntry[];\n}\n\n@Component({\n  selector: 'c2g-member-readiness-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './member-readiness-widget.component.html',\n  styleUrls: ['./member-readiness-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MemberReadinessWidgetComponent {\n  readonly members = input.required<MemberReadinessEntry[]>();\n  readonly tourName = input<string | undefined>(undefined);\n\n  readonly overallPercent = computed(() => {\n    const m = this.members();\n    if (!m.length) return 0;\n    const total = m.reduce((s, e) => s + e.totalItems, 0);\n    if (total === 0) return 0;\n    return Math.round((m.reduce((s, e) => s + e.completedItems, 0) / total) * 100);\n  });\n\n  readonly fullyReady = computed(() =>\n    this.members().filter(m => this.readyPercent(m) === 100).length\n  );\n\n  // Groups only shown when >= 6 members, otherwise flat list\n  readonly useGrouped = computed(() => this.members().length >= 6);\n\n  readonly groups = computed((): ReadinessGroup[] => {\n    const buckets: ReadinessGroup[] = [\n      { label: 'Bereit',       emoji: '✅', color: 'success', min: 100, max: 100, members: [] },\n      { label: 'Fast fertig',  emoji: '🔜', color: 'warning', min: 75,  max: 99,  members: [] },\n      { label: 'Unterwegs',    emoji: '📦', color: 'warning', min: 40,  max: 74,  members: [] },\n      { label: 'Kaum gepackt', emoji: '😴', color: 'danger',  min: 1,   max: 39,  members: [] },\n      { label: 'Nicht gestartet', emoji: '❌', color: 'neutral', min: 0, max: 0,  members: [] },\n    ];\n    for (const m of this.members()) {\n      const p = this.readyPercent(m);\n      const bucket = buckets.find(b => p >= b.min && p <= b.max) ?? buckets[buckets.length - 1];\n      bucket.members.push(m);\n    }\n    return buckets.filter(b => b.members.length > 0);\n  });\n\n  readonly flatSorted = computed(() =>\n    [...this.members()].sort((a, b) => this.readyPercent(b) - this.readyPercent(a))\n  );\n\n  readyPercent(entry: MemberReadinessEntry): number {\n    if (entry.totalItems === 0) return 100;\n    return Math.round((entry.completedItems / entry.totalItems) * 100);\n  }\n\n  readyColor(entry: MemberReadinessEntry): 'success' | 'warning' | 'danger' | 'neutral' {\n    const p = this.readyPercent(entry);\n    if (p === 100) return 'success';\n    if (p >= 75)   return 'warning';\n    if (p >= 40)   return 'warning';\n    if (p > 0)     return 'danger';\n    return 'neutral';\n  }\n\n  // Collapse state per group index\n  readonly collapsed = new Map<number, boolean>();\n\n  toggleGroup(index: number): void {\n    this.collapsed.set(index, !this.collapsed.get(index));\n  }\n\n  isCollapsed(index: number): boolean {\n    // Collapse groups with only-ready members by default if many groups\n    return this.collapsed.get(index) ?? false;\n  }\n}\n","<div class=\"c2g-mr\">\n\n  <!-- Header -->\n  <div class=\"c2g-mr__header\">\n    <div class=\"c2g-mr__title-col\">\n      <span class=\"c2g-mr__label\">👥 Gruppenbereitschaft</span>\n      @if (tourName()) {\n        <span class=\"c2g-mr__tour\">{{ tourName() }}</span>\n      }\n    </div>\n    <div class=\"c2g-mr__summary-pill\">\n      <span class=\"c2g-mr__summary-ready\">{{ fullyReady() }}</span>\n      <span class=\"c2g-mr__summary-sep\">/</span>\n      <span class=\"c2g-mr__summary-total\">{{ members().length }}</span>\n      <span class=\"c2g-mr__summary-unit\">bereit</span>\n    </div>\n  </div>\n\n  <!-- Overall progress bar -->\n  <div class=\"c2g-mr__overall-track\" [attr.aria-valuenow]=\"overallPercent()\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n    <div class=\"c2g-mr__overall-fill\"\n      [style.width.%]=\"overallPercent()\"\n      [class.c2g-mr__overall-fill--success]=\"overallPercent() === 100\">\n    </div>\n    <span class=\"c2g-mr__overall-pct\">{{ overallPercent() }}%</span>\n  </div>\n\n  <!-- GROUPED layout (6+ members) -->\n  @if (useGrouped()) {\n    <div class=\"c2g-mr__groups\">\n      @for (group of groups(); track group.label; let gi = $index) {\n        <div class=\"c2g-mr__group\" [class]=\"'c2g-mr__group--' + group.color\">\n\n          <!-- Group header (clickable to toggle) -->\n          <button class=\"c2g-mr__group-header\" (click)=\"toggleGroup(gi)\" type=\"button\">\n            <span class=\"c2g-mr__group-emoji\">{{ group.emoji }}</span>\n            <span class=\"c2g-mr__group-name\">{{ group.label }}</span>\n            <span class=\"c2g-mr__group-count\">{{ group.members.length }}</span>\n            <!-- Avatar stack preview (max 4) -->\n            <div class=\"c2g-mr__avatar-stack\">\n              @for (m of group.members.slice(0, 4); track m.name) {\n                <span class=\"c2g-mr__avatar-tiny\" [class]=\"'c2g-mr__avatar-tiny--' + group.color\"\n                  [title]=\"m.name\">{{ m.initials }}</span>\n              }\n              @if (group.members.length > 4) {\n                <span class=\"c2g-mr__avatar-tiny c2g-mr__avatar-tiny--more\">+{{ group.members.length - 4 }}</span>\n              }\n            </div>\n            <span class=\"c2g-mr__group-chevron\" [class.c2g-mr__group-chevron--open]=\"!isCollapsed(gi)\">›</span>\n          </button>\n\n          <!-- Member rows (collapsible) -->\n          @if (!isCollapsed(gi)) {\n            <ul class=\"c2g-mr__member-list\">\n              @for (m of group.members; track m.name) {\n                <li class=\"c2g-mr__member\" [class.c2g-mr__member--self]=\"m.isSelf\">\n                  <span class=\"c2g-mr__avatar-sm\" [class]=\"'c2g-mr__avatar-sm--' + group.color\">\n                    {{ m.initials }}\n                  </span>\n                  <span class=\"c2g-mr__member-name\">\n                    {{ m.name }}\n                    @if (m.isSelf) { <span class=\"c2g-mr__self-tag\">Du</span> }\n                  </span>\n                  <div class=\"c2g-mr__mini-track\">\n                    <div class=\"c2g-mr__mini-fill\"\n                      [class]=\"'c2g-mr__mini-fill--' + group.color\"\n                      [style.width.%]=\"readyPercent(m)\">\n                    </div>\n                  </div>\n                  <span class=\"c2g-mr__member-pct\" [class]=\"'c2g-mr__member-pct--' + group.color\">\n                    {{ readyPercent(m) }}%\n                  </span>\n                </li>\n              }\n            </ul>\n          }\n        </div>\n      }\n    </div>\n\n  } @else {\n    <!-- FLAT layout (< 6 members) -->\n    <ul class=\"c2g-mr__flat-list\">\n      @for (m of flatSorted(); track m.name) {\n        <li class=\"c2g-mr__member\" [class.c2g-mr__member--self]=\"m.isSelf\">\n          <span class=\"c2g-mr__avatar-sm\" [class]=\"'c2g-mr__avatar-sm--' + readyColor(m)\">\n            {{ m.initials }}\n          </span>\n          <span class=\"c2g-mr__member-name\">\n            {{ m.name }}\n            @if (m.isSelf) { <span class=\"c2g-mr__self-tag\">Du</span> }\n          </span>\n          <div class=\"c2g-mr__mini-track\">\n            <div class=\"c2g-mr__mini-fill\"\n              [class]=\"'c2g-mr__mini-fill--' + readyColor(m)\"\n              [style.width.%]=\"readyPercent(m)\">\n            </div>\n          </div>\n          <span class=\"c2g-mr__member-pct\" [class]=\"'c2g-mr__member-pct--' + readyColor(m)\">\n            {{ readyPercent(m) }}%\n          </span>\n        </li>\n      }\n    </ul>\n  }\n\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { StreakData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-streak-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './streak-widget.component.html',\n  styleUrls: ['./streak-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StreakWidgetComponent {\n  readonly data = input.required<StreakData>();\n\n  readonly xpPercent = computed(() => {\n    const d = this.data();\n    if (d.nextLevelXp === 0) return 100;\n    return Math.min(100, Math.round((d.experiencePoints / d.nextLevelXp) * 100));\n  });\n\n  readonly streakTier = computed((): 'cold' | 'warm' | 'hot' | 'legendary' => {\n    const s = this.data().streakDays;\n    if (s >= 365) return 'legendary';\n    if (s >= 30)  return 'hot';\n    if (s >= 7)   return 'warm';\n    return 'cold';\n  });\n\n  readonly streakEmoji = computed(() => {\n    switch (this.streakTier()) {\n      case 'legendary': return '🏆';\n      case 'hot':       return '🔥';\n      case 'warm':      return '⚡';\n      default:          return '🌱';\n    }\n  });\n\n  readonly levelLabel = computed(() => {\n    const lvl = this.data().level;\n    if (lvl >= 50) return 'Legende';\n    if (lvl >= 30) return 'Experte';\n    if (lvl >= 15) return 'Erfahren';\n    if (lvl >= 5)  return 'Fortgeschritten';\n    return 'Einsteiger';\n  });\n\n  readonly streakLabel = computed(() => {\n    const s = this.data().streakDays;\n    if (s === 0) return 'Noch kein Streak';\n    if (s === 1) return '1 Tag Streak';\n    return `${s} Tage Streak`;\n  });\n\n  readonly xpToNext = computed(() =>\n    Math.max(0, this.data().nextLevelXp - this.data().experiencePoints)\n  );\n}\n","<div class=\"c2g-streak\" [class]=\"'c2g-streak--' + streakTier()\">\n\n  <div class=\"c2g-streak__header\">\n    <span class=\"c2g-streak__title\">Abenteurer-Level</span>\n    <span class=\"c2g-streak__level-badge\">Lvl {{ data().level }}</span>\n  </div>\n\n  <div class=\"c2g-streak__hero\">\n    <span class=\"c2g-streak__emoji\">{{ streakEmoji() }}</span>\n    <div class=\"c2g-streak__streak-info\">\n      <span class=\"c2g-streak__streak-count\">{{ data().streakDays }}</span>\n      <span class=\"c2g-streak__streak-unit\">{{ data().streakDays === 1 ? 'Tag' : 'Tage' }}</span>\n    </div>\n  </div>\n\n  <div class=\"c2g-streak__level-row\">\n    <span class=\"c2g-streak__level-label\">{{ levelLabel() }}</span>\n    <span class=\"c2g-streak__xp-label\">{{ data().experiencePoints }} / {{ data().nextLevelXp }} XP</span>\n  </div>\n\n  <div class=\"c2g-streak__xp-track\">\n    <div class=\"c2g-streak__xp-fill\" [style.width.%]=\"xpPercent()\"></div>\n  </div>\n\n  <div class=\"c2g-streak__stats\">\n    @if (data().totalDistanceKm != null) {\n      <div class=\"c2g-streak__stat\">\n        <span class=\"c2g-streak__stat-value\">{{ data().totalDistanceKm }}</span>\n        <span class=\"c2g-streak__stat-label\">km</span>\n      </div>\n    }\n    @if (data().totalNightsCamped != null) {\n      <div class=\"c2g-streak__stat\">\n        <span class=\"c2g-streak__stat-value\">{{ data().totalNightsCamped }}</span>\n        <span class=\"c2g-streak__stat-label\">Nächte</span>\n      </div>\n    }\n    @if (data().favoriteSeason) {\n      <div class=\"c2g-streak__stat\">\n        <span class=\"c2g-streak__stat-value\">\n          @switch (data().favoriteSeason) {\n            @case ('spring') { 🌸 }\n            @case ('summer') { ☀️ }\n            @case ('autumn') { 🍂 }\n            @case ('winter') { ❄️ }\n            @default { 🏕️ }\n          }\n        </span>\n        <span class=\"c2g-streak__stat-label\">Lieblingszeit</span>\n      </div>\n    }\n  </div>\n\n  @if (xpToNext() > 0) {\n    <div class=\"c2g-streak__next-level\">\n      Noch {{ xpToNext() }} XP bis Level {{ data().level + 1 }}\n    </div>\n  } @else {\n    <div class=\"c2g-streak__next-level c2g-streak__next-level--ready\">\n      Level Up bereit! 🎉\n    </div>\n  }\n\n</div>\n","import {\n  ChangeDetectionStrategy, Component, computed, effect, input, signal, OnDestroy\n} from '@angular/core';\nimport { CampingScoreData, CampingScoreFactor } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-camping-score-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './camping-score-widget.component.html',\n  styleUrls: ['./camping-score-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CampingScoreWidgetComponent implements OnDestroy {\n  readonly data = input.required<CampingScoreData>();\n\n  readonly tier = computed((): 'great' | 'good' | 'ok' | 'bad' => {\n    const s = this.data().score;\n    if (s >= 8) return 'great';\n    if (s >= 6) return 'good';\n    if (s >= 4) return 'ok';\n    return 'bad';\n  });\n\n  readonly tierLabel = computed(() => {\n    if (this.data().label) return this.data().label!;\n    switch (this.tier()) {\n      case 'great': return 'Perfektes Camping-Wetter';\n      case 'good':  return 'Gute Bedingungen';\n      case 'ok':    return 'Akzeptables Wetter';\n      default:      return 'Schwierige Bedingungen';\n    }\n  });\n\n  readonly tierEmoji = computed(() => {\n    switch (this.tier()) {\n      case 'great': return '☀️';\n      case 'good':  return '⛅';\n      case 'ok':    return '🌤';\n      default:      return '🌧️';\n    }\n  });\n\n  readonly factors = computed((): CampingScoreFactor[] =>\n    this.data().factors ?? []\n  );\n\n  factorBarPct(score: number): number {\n    return Math.min(score / 10, 1) * 100;\n  }\n\n  factorTier(score: number, inverted = false): string {\n    const s = inverted ? 10 - score : score;\n    if (s >= 6.5) return 'good';\n    if (s >= 3.5) return 'mid';\n    return 'bad';\n  }\n\n  // Count-up animation\n  readonly displayScore = signal('0.0');\n  private raf = 0;\n\n  constructor() {\n    effect(() => {\n      const target = this.data().score;\n      cancelAnimationFrame(this.raf);\n      const start = performance.now();\n      const tick = (now: number) => {\n        const t = Math.min((now - start) / 900, 1);\n        const e = 1 - Math.pow(1 - t, 3);\n        this.displayScore.set((e * target).toFixed(1));\n        if (t < 1) this.raf = requestAnimationFrame(tick);\n      };\n      this.raf = requestAnimationFrame(tick);\n    });\n  }\n\n  ngOnDestroy() { cancelAnimationFrame(this.raf); }\n}\n","<article class=\"c2g-cs\" [class]=\"'c2g-cs--' + tier()\">\n\n  <!-- Ambient glow orb behind score -->\n  <div class=\"c2g-cs__glow-orb\" aria-hidden=\"true\"></div>\n\n  <div class=\"c2g-cs__header\">\n    <div class=\"c2g-cs__title-col\">\n      <span class=\"c2g-cs__label\">Camping-Score</span>\n      @if (data().tourName) {\n        <span class=\"c2g-cs__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    <span class=\"c2g-cs__tier-badge\">\n      {{ tierEmoji() }} {{ tierLabel() }}\n    </span>\n  </div>\n\n  <!-- Score hero -->\n  <div class=\"c2g-cs__score-hero\">\n    <span class=\"c2g-cs__score-value\">{{ displayScore() }}</span>\n    <div class=\"c2g-cs__score-meta\">\n      <span class=\"c2g-cs__score-max\">/10</span>\n      <!-- Progress bar -->\n      <div class=\"c2g-cs__progress-track\">\n        <div class=\"c2g-cs__progress-fill\"\n          [style.width.%]=\"(data().score / 10) * 100\">\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <!-- Factor tiles (optional) -->\n  @if (factors().length > 0) {\n    <div class=\"c2g-cs__factors\">\n      @for (f of factors(); track f.label) {\n        <div class=\"c2g-cs__factor\"\n          [class]=\"'c2g-cs__factor--' + factorTier(f.score, f.inverted)\"\n          [class.c2g-cs__factor--inverted]=\"f.inverted\">\n          <span class=\"c2g-cs__factor-icon\">{{ f.icon }}</span>\n          <span class=\"c2g-cs__factor-label\">{{ f.label }}</span>\n          <div class=\"c2g-cs__factor-bar-track\">\n            <div class=\"c2g-cs__factor-bar-fill\"\n              [style.width.%]=\"factorBarPct(f.score)\">\n            </div>\n          </div>\n          @if (f.rawLabel) {\n            <span class=\"c2g-cs__factor-raw\">{{ f.rawLabel }}</span>\n          } @else {\n            <span class=\"c2g-cs__factor-score\">{{ f.score.toFixed(0) }}</span>\n          }\n        </div>\n      }\n    </div>\n  }\n\n  <!-- Highlights -->\n  @if (data().highlights?.length) {\n    <ul class=\"c2g-cs__highlights\">\n      @for (h of data().highlights!.slice(0, 3); track h) {\n        <li class=\"c2g-cs__highlight\">\n          <span class=\"c2g-cs__highlight-dot\"></span>\n          {{ h }}\n        </li>\n      }\n    </ul>\n  }\n\n  <!-- Warnings -->\n  @if (data().warnings?.length) {\n    <div class=\"c2g-cs__warnings\">\n      @for (w of data().warnings!.slice(0, 2); track w) {\n        <div class=\"c2g-cs__warning\">⚠️ {{ w }}</div>\n      }\n    </div>\n  }\n\n</article>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RainVisualizationData, RainForecastDay } from './dashboard-widgets.models';\n\ninterface RainDay extends RainForecastDay {\n  dayLabel: string;\n  probPct: number;\n  barPct: number;\n  level: 'none' | 'light' | 'moderate' | 'heavy';\n  icon: string;\n}\n\n@Component({\n  selector: 'c2g-rain-visualization-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './rain-visualization-widget.component.html',\n  styleUrls: ['./rain-visualization-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RainVisualizationWidgetComponent {\n  readonly data = input.required<RainVisualizationData>();\n\n  readonly enriched = computed((): RainDay[] => {\n    const raw = this.data().days.slice(0, 7);\n    const maxPrecip = Math.max(...raw.map(d => d.precipitation), 5);\n    return raw.map(d => {\n      const prob = d.precipitationProbability;\n      const level: RainDay['level'] =\n        prob < 0.2 ? 'none' :\n        prob < 0.5 ? 'light' :\n        prob < 0.75 ? 'moderate' : 'heavy';\n      return {\n        ...d,\n        dayLabel: new Date(d.date).toLocaleDateString('de-DE', { weekday: 'short', day: 'numeric' }),\n        probPct: Math.round(prob * 100),\n        barPct: Math.round((d.precipitation / maxPrecip) * 100),\n        level,\n        icon: d.icon ?? (level === 'none' ? '☀️' : level === 'light' ? '🌦' : level === 'moderate' ? '🌧' : '⛈'),\n      };\n    });\n  });\n\n  readonly overallRisk = computed((): 'low' | 'medium' | 'high' => {\n    const days = this.enriched();\n    const avg = days.reduce((s, d) => s + d.precipitationProbability, 0) / (days.length || 1);\n    return avg >= 0.6 ? 'high' : avg >= 0.3 ? 'medium' : 'low';\n  });\n\n  readonly riskLabel = computed(() => {\n    const days = this.enriched();\n    const rainyDays = days.filter(d => d.precipitationProbability >= 0.4).length;\n    const totalMm = days.reduce((s, d) => s + d.precipitation, 0);\n    if (this.overallRisk() === 'high') return `${rainyDays} Regentage · ${totalMm.toFixed(0)} mm gesamt`;\n    if (this.overallRisk() === 'medium') return `${rainyDays} Schauertag${rainyDays !== 1 ? 'e' : ''} möglich`;\n    return 'Kaum Niederschlag erwartet';\n  });\n\n  readonly summaryIcon = computed(() => {\n    switch (this.overallRisk()) {\n      case 'high':   return '⛈';\n      case 'medium': return '🌦';\n      default:       return '☀️';\n    }\n  });\n}\n","<article class=\"c2g-rain\" [class]=\"'c2g-rain--' + overallRisk()\">\n\n  <header class=\"c2g-rain__header\">\n    <div class=\"c2g-rain__title-col\">\n      <span class=\"c2g-rain__label\">🌧 Niederschlag</span>\n      @if (data().tourName) {\n        <span class=\"c2g-rain__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    <div class=\"c2g-rain__summary\">\n      <span class=\"c2g-rain__summary-icon\">{{ summaryIcon() }}</span>\n      <span class=\"c2g-rain__summary-text\">{{ riskLabel() }}</span>\n    </div>\n  </header>\n\n  <!-- Bar chart grid -->\n  <div class=\"c2g-rain__grid\" aria-label=\"Niederschlagsvorhersage\" role=\"list\">\n    @for (day of enriched(); track day.date) {\n      <div class=\"c2g-rain__day c2g-rain__day--{{ day.level }}\" role=\"listitem\">\n\n        <!-- Weather icon -->\n        <span class=\"c2g-rain__day-icon\">{{ day.icon }}</span>\n\n        <!-- Probability badge -->\n        <span class=\"c2g-rain__prob c2g-rain__prob--{{ day.level }}\">\n          {{ day.probPct }}%\n        </span>\n\n        <!-- Bar (precipitation mm) -->\n        <div class=\"c2g-rain__bar-wrap\" [title]=\"day.precipitation + ' mm'\">\n          <div\n            class=\"c2g-rain__bar c2g-rain__bar--{{ day.level }}\"\n            [style.height.%]=\"day.barPct\"\n          ></div>\n        </div>\n\n        @if (day.precipitation > 0) {\n          <span class=\"c2g-rain__mm\">{{ day.precipitation.toFixed(1) }}<small>mm</small></span>\n        } @else {\n          <span class=\"c2g-rain__mm c2g-rain__mm--dry\">–</span>\n        }\n\n        <!-- Day label -->\n        <span class=\"c2g-rain__date\">{{ day.dayLabel }}</span>\n      </div>\n    }\n  </div>\n\n</article>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { GroupCompositionData, MemberType } from './dashboard-widgets.models';\n\nconst TYPE_CONFIG: Record<MemberType, { emoji: string; label: string; color: string }> = {\n  adult:   { emoji: '🧑', label: 'Erwachsene',  color: '#ff6b35' },\n  senior:  { emoji: '👴', label: 'Senioren',    color: '#a855f7' },\n  teen:    { emoji: '🧒', label: 'Jugendliche', color: '#f59e0b' },\n  child:   { emoji: '👧', label: 'Kinder',      color: '#84cc16' },\n  toddler: { emoji: '👶', label: 'Kleinkinder', color: '#06b6d4' },\n  dog:     { emoji: '🐕', label: 'Hunde',       color: '#f97316' },\n  cat:     { emoji: '🐈', label: 'Katzen',      color: '#ec4899' },\n  pet:     { emoji: '🐾', label: 'Haustiere',   color: '#6b7280' },\n};\n\nconst TYPE_ORDER: MemberType[] = ['adult', 'senior', 'teen', 'child', 'toddler', 'dog', 'cat', 'pet'];\n\n@Component({\n  selector: 'c2g-group-composition-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './group-composition-widget.component.html',\n  styleUrls: ['./group-composition-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupCompositionWidgetComponent {\n  readonly data = input.required<GroupCompositionData>();\n\n  readonly sorted = computed(() =>\n    [...this.data().members]\n      .filter(m => m.count > 0)\n      .sort((a, b) => TYPE_ORDER.indexOf(a.type) - TYPE_ORDER.indexOf(b.type))\n  );\n\n  readonly totalPeople = computed(() =>\n    this.data().members\n      .filter(m => ['adult', 'teen', 'child', 'toddler', 'senior'].includes(m.type))\n      .reduce((s, m) => s + m.count, 0)\n  );\n\n  readonly totalPets = computed(() =>\n    this.data().members\n      .filter(m => ['dog', 'cat', 'pet'].includes(m.type))\n      .reduce((s, m) => s + m.count, 0)\n  );\n\n  readonly maxCount = computed(() =>\n    Math.max(...this.data().members.map(m => m.count), 1)\n  );\n\n  // Avatar cluster: up to 12 individual icons for the visual summary strip\n  readonly avatars = computed(() => {\n    const result: { emoji: string; color: string; key: string }[] = [];\n    for (const entry of this.sorted()) {\n      const cfg = TYPE_CONFIG[entry.type];\n      const n = Math.min(entry.count, 6);\n      for (let i = 0; i < n; i++) {\n        result.push({ emoji: cfg.emoji, color: cfg.color, key: `${entry.type}-${i}` });\n      }\n    }\n    return result.slice(0, 14);\n  });\n\n  configFor(type: MemberType) {\n    return TYPE_CONFIG[type];\n  }\n}\n","<div class=\"c2g-gc\">\n\n  <div class=\"c2g-gc__header\">\n    <div class=\"c2g-gc__title-col\">\n      <span class=\"c2g-gc__label\">Gruppenkomposition</span>\n      @if (data().groupName) {\n        <span class=\"c2g-gc__name\">{{ data().groupName }}</span>\n      }\n    </div>\n    <div class=\"c2g-gc__summary-pills\">\n      <span class=\"c2g-gc__pill\">\n        <span class=\"c2g-gc__pill-num\">{{ totalPeople() }}</span>\n        <span class=\"c2g-gc__pill-sub\">Personen</span>\n      </span>\n      @if (totalPets() > 0) {\n        <span class=\"c2g-gc__pill c2g-gc__pill--pets\">\n          <span class=\"c2g-gc__pill-num\">{{ totalPets() }}</span>\n          <span class=\"c2g-gc__pill-sub\">Tiere</span>\n        </span>\n      }\n    </div>\n  </div>\n\n  <!-- Avatar cluster strip -->\n  <div class=\"c2g-gc__avatars\">\n    @for (a of avatars(); track a.key) {\n      <span class=\"c2g-gc__avatar\" [style.--av-color]=\"a.color\">{{ a.emoji }}</span>\n    }\n    @if (totalPeople() + totalPets() > avatars().length) {\n      <span class=\"c2g-gc__avatar-more\">+{{ totalPeople() + totalPets() - avatars().length }}</span>\n    }\n  </div>\n\n  <!-- Bar chart breakdown -->\n  <div class=\"c2g-gc__bars\">\n    @for (entry of sorted(); track entry.type) {\n      <div class=\"c2g-gc__bar-row\">\n        <span class=\"c2g-gc__bar-emoji\">{{ configFor(entry.type).emoji }}</span>\n        <span class=\"c2g-gc__bar-label\">{{ configFor(entry.type).label }}</span>\n        <div class=\"c2g-gc__bar-track\">\n          <div class=\"c2g-gc__bar-fill\"\n            [style.width.%]=\"(entry.count / maxCount()) * 100\"\n            [style.background]=\"configFor(entry.type).color\">\n          </div>\n        </div>\n        <span class=\"c2g-gc__bar-count\" [style.color]=\"configFor(entry.type).color\">\n          {{ entry.count }}\n        </span>\n        @if (entry.names?.length) {\n          <span class=\"c2g-gc__bar-names\">{{ entry.names!.join(', ') }}</span>\n        }\n      </div>\n    }\n  </div>\n\n</div>\n","// Minimal hand-crafted Lottie confetti animation.\n// 6 colored rectangles fall from top with rotation — ~3KB, no external dependency.\nexport const CONFETTI_ANIMATION_DATA = {\n  v: '5.7.4',\n  fr: 30,\n  ip: 0,\n  op: 60,\n  w: 200,\n  h: 160,\n  nm: 'confetti',\n  ddd: 0,\n  assets: [],\n  layers: [\n    makeRect(0,  '#22c55e', 40,  -10, 140, 150,  120, 0),\n    makeRect(1,  '#f59e0b', 80,  -10, 160, 145,  90,  5),\n    makeRect(2,  '#3b82f6', 120, -10, 120, 155,  80,  -5),\n    makeRect(3,  '#ef4444', 60,  -10, 150, 148,  140, 10),\n    makeRect(4,  '#a855f7', 100, -10, 130, 152,  60,  -8),\n    makeRect(5,  '#f97316', 140, -10, 110, 146,  100, 6),\n    makeRect(6,  '#22c55e', 30,  -10, 145, 153,  110, -12),\n    makeRect(7,  '#3b82f6', 170, -10, 155, 149,  70,  15),\n  ],\n};\n\nfunction makeRect(\n  ind: number,\n  color: string,\n  startX: number,\n  startY: number,\n  endX: number,\n  endY: number,\n  startRot: number,\n  rotSpeed: number,\n): object {\n  const hex = color.replace('#', '');\n  const r = parseInt(hex.slice(0, 2), 16) / 255;\n  const g = parseInt(hex.slice(2, 4), 16) / 255;\n  const b = parseInt(hex.slice(4, 6), 16) / 255;\n\n  return {\n    ddd: 0,\n    ind,\n    ty: 4,\n    nm: `confetti-${ind}`,\n    sr: 1,\n    ks: {\n      o:  { a: 0, k: 100 },\n      r:  {\n        a: 1,\n        k: [\n          { t: 0,  s: [startRot],               e: [startRot + rotSpeed * 60], i: { x: [0.5], y: [1] }, o: { x: [0.5], y: [0] } },\n          { t: 60, s: [startRot + rotSpeed * 60] },\n        ],\n      },\n      p:  {\n        a: 1,\n        k: [\n          { t: 0,  s: [startX, startY, 0], e: [endX, endY, 0], i: { x: [0.5], y: [1] }, o: { x: [0.5], y: [0] } },\n          { t: 60, s: [endX, endY, 0] },\n        ],\n      },\n      a:  { a: 0, k: [0, 0, 0] },\n      s:  { a: 0, k: [100, 100, 100] },\n    },\n    ao: 0,\n    shapes: [\n      {\n        ty: 'rc',\n        d: 1,\n        s:  { a: 0, k: [8, 8] },\n        p:  { a: 0, k: [0, 0] },\n        r:  { a: 0, k: 1 },\n        nm: 'rect',\n      },\n      {\n        ty: 'fl',\n        c:  { a: 0, k: [r, g, b, 1] },\n        o:  { a: 0, k: 100 },\n        r:  1,\n        nm: 'fill',\n      },\n    ],\n    ip: 0,\n    op: 60,\n    st: 0,\n    bm: 0,\n  };\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { LottieComponent, AnimationOptions } from 'ngx-lottie';\nimport { CriticalItemsAlertData, CriticalItemAlertEntry } from './dashboard-widgets.models';\nimport { CONFETTI_ANIMATION_DATA } from './confetti-success.lottie';\n\n@Component({\n  selector: 'c2g-critical-items-alert-widget',\n  standalone: true,\n  imports: [LottieComponent],\n  templateUrl: './critical-items-alert-widget.component.html',\n  styleUrls: ['./critical-items-alert-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CriticalItemsAlertWidgetComponent {\n  readonly data = input.required<CriticalItemsAlertData>();\n\n  readonly daysUntil = computed(() => {\n    const from = new Date(this.data().tourFromDate);\n    from.setHours(0, 0, 0, 0);\n    const today = new Date();\n    today.setHours(0, 0, 0, 0);\n    return Math.max(0, Math.ceil((from.getTime() - today.getTime()) / 86400000));\n  });\n\n  readonly urgency = computed((): 'critical' | 'warning' | 'ok' => {\n    const open = this.data().openItems.length;\n    const days = this.daysUntil();\n    if (open === 0) return 'ok';\n    if (days <= 2 || (days <= 5 && open > 3)) return 'critical';\n    return 'warning';\n  });\n\n  readonly urgencyLabel = computed(() => {\n    const d = this.daysUntil();\n    if (d === 0) return 'Heute gehts los!';\n    if (d === 1) return 'Morgen gehts los!';\n    return `Noch ${d} Tage`;\n  });\n\n  readonly allClear = computed(() => this.data().openItems.length === 0);\n\n  readonly personalItems = computed(() =>\n    this.data().openItems.filter(i => i.scope === 'personal').slice(0, 4)\n  );\n\n  readonly sharedItems = computed(() =>\n    this.data().openItems.filter(i => i.scope === 'shared').slice(0, 4)\n  );\n\n  readonly personalHidden = computed(() =>\n    Math.max(0, this.data().openItems.filter(i => i.scope === 'personal').length - 4)\n  );\n\n  readonly sharedHidden = computed(() =>\n    Math.max(0, this.data().openItems.filter(i => i.scope === 'shared').length - 4)\n  );\n\n  // Resolved visual type for the all-clear state\n  readonly successVisualType = computed(() =>\n    this.data().successVisual?.type ?? 'lottie'\n  );\n\n  readonly lottieOptions = computed((): AnimationOptions => {\n    const v = this.data().successVisual;\n    return {\n      animationData: v?.type === 'lottie' ? v.value : CONFETTI_ANIMATION_DATA,\n      loop: false,\n      autoplay: true,\n    };\n  });\n\n  readonly imageValue = computed(() => {\n    const v = this.data().successVisual;\n    return v?.type === 'image' ? (v.value as string) : null;\n  });\n\n  readonly imageAlt = computed(() =>\n    this.data().successVisual?.alt ?? 'Erfolg'\n  );\n\n  readonly iconValue = computed(() => {\n    const v = this.data().successVisual;\n    return v?.type === 'icon' ? (v.value as string) : '🎉';\n  });\n\n  sharedProgress(item: CriticalItemAlertEntry): number {\n    if (!item.neededCount) return 0;\n    return Math.min((item.coveredCount ?? 0) / item.neededCount, 1) * 100;\n  }\n}\n","<div class=\"c2g-cia\" [class]=\"'c2g-cia--' + urgency()\">\n\n  <div class=\"c2g-cia__header\">\n    <div class=\"c2g-cia__title-col\">\n      <span class=\"c2g-cia__label\">\n        @if (urgency() === 'critical') { 🚨 }\n        @else if (urgency() === 'warning') { ⚠️ }\n        @else { ✅ }\n        Kritische Items\n      </span>\n      @if (data().tourName) {\n        <span class=\"c2g-cia__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    <div class=\"c2g-cia__countdown\">\n      <span class=\"c2g-cia__countdown-number\">{{ daysUntil() }}</span>\n      <span class=\"c2g-cia__countdown-unit\">{{ daysUntil() === 1 ? 'Tag' : 'Tage' }}</span>\n    </div>\n  </div>\n\n  @if (allClear()) {\n    <div class=\"c2g-cia__all-clear\">\n\n      <!-- Visual slot -->\n      <div class=\"c2g-cia__success-visual\" aria-hidden=\"true\">\n        @switch (successVisualType()) {\n          @case ('lottie') {\n            <ng-lottie [options]=\"lottieOptions()\" width=\"100px\" height=\"80px\" />\n          }\n          @case ('image') {\n            <img class=\"c2g-cia__success-img\"\n              [src]=\"imageValue()\"\n              [alt]=\"imageAlt()\" />\n          }\n          @case ('icon') {\n            <span class=\"c2g-cia__success-icon\">{{ iconValue() }}</span>\n          }\n        }\n      </div>\n\n      <div class=\"c2g-cia__all-clear-text-block\">\n        <span class=\"c2g-cia__all-clear-headline\">Alles dabei! 🎉</span>\n        <span class=\"c2g-cia__all-clear-sub\">Alle kritischen Items sind gepackt — bereit für das Abenteuer.</span>\n      </div>\n    </div>\n  } @else {\n\n    <!-- Progress summary -->\n    <div class=\"c2g-cia__summary\">\n      <span class=\"c2g-cia__open-count\">{{ data().openItems.length }}</span>\n      <span class=\"c2g-cia__summary-text\">\n        von {{ data().totalCritical }} kritischen\n        {{ data().totalCritical === 1 ? 'Item fehlt' : 'Items fehlen' }}\n      </span>\n    </div>\n    <div class=\"c2g-cia__progress-track\">\n      <div class=\"c2g-cia__progress-fill\"\n        [style.width.%]=\"((data().totalCritical - data().openItems.length) / data().totalCritical) * 100\">\n      </div>\n    </div>\n\n    <!-- Side-by-side sections -->\n    <div class=\"c2g-cia__sections\">\n\n      <!-- Personal items -->\n      @if (personalItems().length > 0) {\n        <div class=\"c2g-cia__section c2g-cia__section--personal\">\n          <div class=\"c2g-cia__section-header\">\n            <span class=\"c2g-cia__section-icon c2g-cia__section-icon--personal\">👤</span>\n            <div class=\"c2g-cia__section-titles\">\n              <span class=\"c2g-cia__section-title\">Persönlich</span>\n              <span class=\"c2g-cia__section-hint\">Jeder braucht es selbst</span>\n            </div>\n          </div>\n          <ul class=\"c2g-cia__list\">\n            @for (item of personalItems(); track item.name) {\n              <li class=\"c2g-cia__item c2g-cia__item--personal\">\n                <span class=\"c2g-cia__item-dot\"></span>\n                <span class=\"c2g-cia__item-name\">{{ item.name }}</span>\n                @if (item.missingFor?.length) {\n                  <span class=\"c2g-cia__item-missing\">{{ item.missingFor!.join(', ') }}</span>\n                }\n              </li>\n            }\n            @if (personalHidden() > 0) {\n              <li class=\"c2g-cia__item c2g-cia__item--more\">+ {{ personalHidden() }} weitere</li>\n            }\n          </ul>\n        </div>\n      }\n\n      <!-- Shared items -->\n      @if (sharedItems().length > 0) {\n        <div class=\"c2g-cia__section c2g-cia__section--shared\">\n          <div class=\"c2g-cia__section-header\">\n            <span class=\"c2g-cia__section-icon c2g-cia__section-icon--shared\">👥</span>\n            <div class=\"c2g-cia__section-titles\">\n              <span class=\"c2g-cia__section-title\">Geteilt</span>\n              <span class=\"c2g-cia__section-hint\">Mindestmenge muss gedeckt sein</span>\n            </div>\n          </div>\n          <ul class=\"c2g-cia__list\">\n            @for (item of sharedItems(); track item.name) {\n              <li class=\"c2g-cia__item c2g-cia__item--shared\">\n                <div class=\"c2g-cia__shared-top\">\n                  <span class=\"c2g-cia__item-dot\"></span>\n                  <span class=\"c2g-cia__item-name\">{{ item.name }}</span>\n                  @if (item.neededCount) {\n                    <span class=\"c2g-cia__shared-ratio\">\n                      {{ item.coveredCount ?? 0 }}/{{ item.neededCount }}\n                    </span>\n                  }\n                </div>\n                @if (item.neededCount && item.neededCount > 1) {\n                  <div class=\"c2g-cia__shared-bar-track\">\n                    <div class=\"c2g-cia__shared-bar-fill\" [style.width.%]=\"sharedProgress(item)\"></div>\n                  </div>\n                }\n                @if (item.coveredBy?.length) {\n                  <span class=\"c2g-cia__shared-covered\">✓ {{ item.coveredBy!.join(', ') }}</span>\n                }\n              </li>\n            }\n            @if (sharedHidden() > 0) {\n              <li class=\"c2g-cia__item c2g-cia__item--more\">+ {{ sharedHidden() }} weitere</li>\n            }\n          </ul>\n        </div>\n      }\n\n    </div>\n  }\n\n  <div class=\"c2g-cia__footer\">{{ urgencyLabel() }}</div>\n\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { WindIndicatorData, WindForecastDay } from './dashboard-widgets.models';\n\nconst BEAUFORT: { max: number; label: string; emoji: string; color: string }[] = [\n  { max: 1,   label: 'Windstille',    emoji: '🌬️', color: '#22c55e' },\n  { max: 5,   label: 'Leichte Brise', emoji: '🌬️', color: '#84cc16' },\n  { max: 11,  label: 'Schwache Brise',emoji: '💨',  color: '#84cc16' },\n  { max: 19,  label: 'Schwacher Wind',emoji: '💨',  color: '#f59e0b' },\n  { max: 28,  label: 'Mäßiger Wind',  emoji: '💨',  color: '#f59e0b' },\n  { max: 38,  label: 'Frischer Wind', emoji: '🌀',  color: '#f97316' },\n  { max: 49,  label: 'Starker Wind',  emoji: '🌀',  color: '#f97316' },\n  { max: 61,  label: 'Stürmisch',     emoji: '⛈️',  color: '#ef4444' },\n  { max: 74,  label: 'Sturm',         emoji: '⛈️',  color: '#ef4444' },\n  { max: 88,  label: 'Schwerer Sturm',emoji: '🌪️',  color: '#dc2626' },\n  { max: 102, label: 'Orkan',         emoji: '🌪️',  color: '#dc2626' },\n  { max: 999, label: 'Schwerer Orkan',emoji: '🌪️',  color: '#dc2626' },\n];\n\nfunction beaufortFor(kmh: number) {\n  return BEAUFORT.find(b => kmh <= b.max) ?? BEAUFORT[BEAUFORT.length - 1];\n}\n\nfunction directionLabel(deg: number): string {\n  const dirs = ['N','NO','O','SO','S','SW','W','NW'];\n  return dirs[Math.round(deg / 45) % 8];\n}\n\n@Component({\n  selector: 'c2g-wind-indicator-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './wind-indicator-widget.component.html',\n  styleUrls: ['./wind-indicator-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WindIndicatorWidgetComponent {\n  readonly data = input.required<WindIndicatorData>();\n\n  readonly days = computed(() => this.data().days.slice(0, 7));\n\n  readonly peak = computed(() =>\n    this.days().reduce((max, d) => d.windSpeed > max.windSpeed ? d : max, this.days()[0])\n  );\n\n  readonly peakBeaufort = computed(() => beaufortFor(this.peak()?.windSpeed ?? 0));\n\n  readonly overallRisk = computed((): 'calm' | 'breezy' | 'windy' | 'stormy' => {\n    const avg = this.days().reduce((s, d) => s + d.windSpeed, 0) / (this.days().length || 1);\n    if (avg >= 50) return 'stormy';\n    if (avg >= 28) return 'windy';\n    if (avg >= 11) return 'breezy';\n    return 'calm';\n  });\n\n  enriched = computed(() =>\n    this.days().map(d => ({\n      ...d,\n      bf: beaufortFor(d.windSpeed),\n      dirLabel: directionLabel(d.windDirection),\n      // Arrow rotation: wind direction = where it comes FROM → arrow points that way\n      arrowDeg: d.windDirection,\n      barPct: Math.min(100, (d.windSpeed / 100) * 100),\n    }))\n  );\n\n  formatDate(iso: string): string {\n    return new Date(iso).toLocaleDateString('de-DE', { weekday: 'short', day: 'numeric' });\n  }\n}\n","<article class=\"c2g-wind\" [class]=\"'c2g-wind--' + overallRisk()\">\n\n  <header class=\"c2g-wind__header\">\n    <div class=\"c2g-wind__title-col\">\n      <span class=\"c2g-wind__label\">💨 Wind</span>\n      @if (data().tourName) {\n        <span class=\"c2g-wind__tour\">{{ data().tourName }}</span>\n      }\n    </div>\n    @if (peak()) {\n      <div class=\"c2g-wind__peak-badge\">\n        <span class=\"c2g-wind__peak-emoji\">{{ peakBeaufort().emoji }}</span>\n        <div class=\"c2g-wind__peak-text\">\n          <span class=\"c2g-wind__peak-speed\">{{ peak().windSpeed }}<small>km/h</small></span>\n          <span class=\"c2g-wind__peak-sublabel\">Spitze</span>\n        </div>\n      </div>\n    }\n  </header>\n\n  <div class=\"c2g-wind__days\">\n    @for (day of enriched(); track day.date) {\n      <div class=\"c2g-wind__day\">\n\n        <!-- Compass rose -->\n        <svg class=\"c2g-wind__compass\" viewBox=\"0 0 40 40\" aria-hidden=\"true\">\n          <circle cx=\"20\" cy=\"20\" r=\"18\" class=\"c2g-wind__compass-ring\"/>\n          <text class=\"c2g-wind__compass-n\" x=\"20\" y=\"7\">N</text>\n          <g [style.transform-origin]=\"'20px 20px'\" [style.transform]=\"'rotate(' + day.arrowDeg + 'deg)'\">\n            <polygon points=\"20,4 23,18 20,16 17,18\" [attr.fill]=\"day.bf.color\"/>\n            <polygon points=\"20,36 17,22 20,24 23,22\" fill=\"rgba(255,255,255,0.18)\"/>\n          </g>\n          <circle cx=\"20\" cy=\"20\" r=\"2.5\" [attr.fill]=\"day.bf.color\"/>\n        </svg>\n\n        <!-- Date -->\n        <span class=\"c2g-wind__date\">{{ formatDate(day.date) }}</span>\n\n        <!-- Speed bar -->\n        <div class=\"c2g-wind__bar-track\">\n          <div class=\"c2g-wind__bar-fill\"\n            [style.width.%]=\"day.barPct\"\n            [style.background]=\"day.bf.color\">\n          </div>\n        </div>\n\n        <!-- Speed value -->\n        <span class=\"c2g-wind__speed\" [style.color]=\"day.bf.color\">\n          {{ day.windSpeed }}<small>km/h</small>\n        </span>\n\n        <!-- Beaufort + direction -->\n        <span class=\"c2g-wind__meta\">{{ day.dirLabel }} · {{ day.bf.label }}</span>\n\n      </div>\n    }\n  </div>\n\n</article>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  input,\n  OnDestroy,\n  signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { TotalKmData, TotalKmSparkPoint } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-total-km-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './total-km-widget.component.html',\n  styleUrl: './total-km-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TotalKmWidgetComponent implements OnDestroy {\n  readonly data = input.required<TotalKmData>();\n\n  readonly displayKm = signal(0);\n  readonly displayYearKm = signal(0);\n\n  private rafId = 0;\n  private rafYearId = 0;\n\n  constructor() {\n    effect(() => {\n      const target = this.data().totalKm;\n      this.animateCount(target, this.displayKm, 'rafId');\n    });\n    effect(() => {\n      const target = this.data().yearKm ?? 0;\n      this.animateCount(target, this.displayYearKm, 'rafYearId');\n    });\n  }\n\n  private animateCount(\n    target: number,\n    sig: ReturnType<typeof signal<number>>,\n    rafKey: 'rafId' | 'rafYearId',\n  ): void {\n    cancelAnimationFrame(this[rafKey]);\n    const start = performance.now();\n    const duration = 1400;\n    const step = (now: number) => {\n      const t = Math.min((now - start) / duration, 1);\n      const eased = 1 - Math.pow(1 - t, 4);\n      sig.set(Math.round(eased * target));\n      if (t < 1) this[rafKey] = requestAnimationFrame(step);\n    };\n    this[rafKey] = requestAnimationFrame(step);\n  }\n\n  readonly sparklinePath = computed(() => {\n    const points = this.data().sparkline;\n    if (!points || points.length < 2) return null;\n    const W = 200, H = 48;\n    const maxKm = Math.max(...points.map(p => p.km));\n    const minKm = Math.min(...points.map(p => p.km));\n    const range = maxKm - minKm || 1;\n    const xs = points.map((_, i) => (i / (points.length - 1)) * W);\n    const ys = points.map(p => H - ((p.km - minKm) / range) * (H - 8) - 2);\n\n    let line = `M ${xs[0]} ${ys[0]}`;\n    for (let i = 1; i < points.length; i++) {\n      const cpx = (xs[i - 1] + xs[i]) / 2;\n      line += ` C ${cpx} ${ys[i - 1]}, ${cpx} ${ys[i]}, ${xs[i]} ${ys[i]}`;\n    }\n    const area = `${line} L ${xs[xs.length - 1]} ${H} L ${xs[0]} ${H} Z`;\n    return { line, area, lastX: xs[xs.length - 1], lastY: ys[ys.length - 1] };\n  });\n\n  ngOnDestroy(): void {\n    cancelAnimationFrame(this.rafId);\n    cancelAnimationFrame(this.rafYearId);\n  }\n}\n","<article class=\"c2g-tkm\">\n  <header class=\"c2g-tkm__header\">\n    <span class=\"c2g-tkm__icon\" aria-hidden=\"true\">🗺️</span>\n    <div class=\"c2g-tkm__titles\">\n      <h3 class=\"c2g-tkm__title\">Gesamt-Kilometer</h3>\n      @if (data().tourCount) {\n        <span class=\"c2g-tkm__sub\">{{ data().tourCount }} Touren</span>\n      }\n    </div>\n  </header>\n\n  <div class=\"c2g-tkm__hero\">\n    <span class=\"c2g-tkm__value\">{{ displayKm() | number:'1.0-0' }}</span>\n    <span class=\"c2g-tkm__unit\">km</span>\n  </div>\n\n  @if (data().yearKm) {\n    <div class=\"c2g-tkm__year-row\">\n      <span class=\"c2g-tkm__year-label\">Dieses Jahr</span>\n      <span class=\"c2g-tkm__year-value\">{{ displayYearKm() | number:'1.0-0' }} km</span>\n    </div>\n  }\n\n  @if (sparklinePath()) {\n    <div class=\"c2g-tkm__chart\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 200 48\" preserveAspectRatio=\"none\" class=\"c2g-tkm__svg\">\n        <defs>\n          <linearGradient id=\"tkm-area-grad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n            <stop offset=\"0%\" stop-color=\"var(--c2g-theme-primary, #ff6b35)\" stop-opacity=\"0.35\"/>\n            <stop offset=\"100%\" stop-color=\"var(--c2g-theme-primary, #ff6b35)\" stop-opacity=\"0\"/>\n          </linearGradient>\n        </defs>\n        <path class=\"c2g-tkm__area\" [attr.d]=\"sparklinePath()!.area\" fill=\"url(#tkm-area-grad)\" />\n        <path class=\"c2g-tkm__line\" [attr.d]=\"sparklinePath()!.line\" />\n        <circle\n          class=\"c2g-tkm__dot\"\n          [attr.cx]=\"sparklinePath()!.lastX\"\n          [attr.cy]=\"sparklinePath()!.lastY\"\n          r=\"3\"\n        />\n      </svg>\n    </div>\n  }\n</article>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { TourTypeSplitData, TourType } from './dashboard-widgets.models';\n\ninterface Segment {\n  type: TourType;\n  label: string;\n  emoji: string;\n  color: string;\n  count: number;\n  km: number;\n  pct: number;\n  offset: number;\n  dash: number;\n}\n\nconst TYPE_CONFIG: Record<TourType, { label: string; emoji: string; color: string }> = {\n  hiking:   { label: 'Wandern',   emoji: '🥾', color: '#ff6b35' },\n  cycling:  { label: 'Radfahren', emoji: '🚵', color: '#22c55e' },\n  paddling: { label: 'Paddeln',   emoji: '🛶', color: '#3b82f6' },\n  climbing: { label: 'Klettern',  emoji: '🧗', color: '#a855f7' },\n  skiing:   { label: 'Skifahren', emoji: '⛷️', color: '#06b6d4' },\n  other:    { label: 'Sonstige',  emoji: '🏕️', color: '#94a3b8' },\n};\n\nconst CIRCUMFERENCE = 2 * Math.PI * 52; // r=52\n\n@Component({\n  selector: 'c2g-tour-type-split-widget',\n  standalone: true,\n  imports: [CommonModule, TranslateModule],\n  templateUrl: './tour-type-split-widget.component.html',\n  styleUrl: './tour-type-split-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TourTypeSplitWidgetComponent {\n  readonly data = input.required<TourTypeSplitData>();\n\n  readonly segments = computed((): Segment[] => {\n    const entries = this.data().entries.filter(e => e.count > 0);\n    const total = entries.reduce((s, e) => s + e.count, 0) || 1;\n    const GAP = CIRCUMFERENCE * 0.012;\n    let offset = 0;\n    return entries.map(e => {\n      const pct = e.count / total;\n      const dash = Math.max(0, pct * CIRCUMFERENCE - GAP);\n      const cfg = TYPE_CONFIG[e.type];\n      const seg: Segment = {\n        type: e.type,\n        label: cfg.label,\n        emoji: cfg.emoji,\n        color: cfg.color,\n        count: e.count,\n        km: e.km ?? 0,\n        pct,\n        offset,\n        dash,\n      };\n      offset += pct * CIRCUMFERENCE;\n      return seg;\n    });\n  });\n\n  readonly isEmpty = computed(() => this.segments().length === 0);\n\n  readonly dominantSegment = computed(() => {\n    const segs = this.segments();\n    return segs.length > 0 ? segs.reduce((a, b) => (a.count > b.count ? a : b)) : null;\n  });\n\n  readonly circumference = CIRCUMFERENCE;\n\n  trackByType(_: number, seg: Segment): TourType {\n    return seg.type;\n  }\n}\n","<article class=\"c2g-tts\">\n  <header class=\"c2g-tts__header\">\n    <span class=\"c2g-tts__icon\" aria-hidden=\"true\">🧭</span>\n    <div class=\"c2g-tts__titles\">\n      <h3 class=\"c2g-tts__title\">Tour-Typen</h3>\n      <span class=\"c2g-tts__sub\">{{ data().totalTours }} Touren gesamt</span>\n    </div>\n  </header>\n\n  @if (isEmpty()) {\n    <div class=\"c2g-tts__empty\">\n      <span class=\"c2g-tts__empty-icon\">🧭</span>\n      <span class=\"c2g-tts__empty-text\">{{ 'dashboard.retro.emptySection' | translate }}</span>\n    </div>\n  } @else {\n    <div class=\"c2g-tts__body\">\n      <div class=\"c2g-tts__donut-wrap\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 128 128\" class=\"c2g-tts__donut\">\n          <circle cx=\"64\" cy=\"64\" r=\"52\" class=\"c2g-tts__track\"/>\n          @for (seg of segments(); track trackByType($index, seg)) {\n            <circle\n              cx=\"64\" cy=\"64\" r=\"52\"\n              class=\"c2g-tts__arc\"\n              [style.stroke]=\"seg.color\"\n              [style.stroke-dasharray]=\"seg.dash + ' ' + circumference\"\n              [style.stroke-dashoffset]=\"-seg.offset\"\n            />\n          }\n        </svg>\n        @if (dominantSegment(); as dom) {\n          <div class=\"c2g-tts__center\">\n            <span class=\"c2g-tts__center-emoji\">{{ dom.emoji }}</span>\n            <span class=\"c2g-tts__center-label\">{{ dom.label }}</span>\n          </div>\n        }\n      </div>\n\n      <ul class=\"c2g-tts__legend\" role=\"list\">\n        @for (seg of segments(); track trackByType($index, seg)) {\n          <li class=\"c2g-tts__legend-item\">\n            <span class=\"c2g-tts__legend-dot\" [style.background]=\"seg.color\"></span>\n            <span class=\"c2g-tts__legend-emoji\">{{ seg.emoji }}</span>\n            <span class=\"c2g-tts__legend-name\">{{ seg.label }}</span>\n            <span class=\"c2g-tts__legend-count\">{{ seg.count }}</span>\n            <span class=\"c2g-tts__legend-pct\">{{ (seg.pct * 100) | number:'1.0-0' }}%</span>\n          </li>\n        }\n      </ul>\n    </div>\n  }\n</article>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { TourRhythmData, TourRhythmWeek } from './dashboard-widgets.models';\n\nconst MONTH_LABELS = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];\n\ninterface WeekCell extends TourRhythmWeek {\n  col: number;\n  monthLabel: string | null;\n}\n\n@Component({\n  selector: 'c2g-tour-rhythm-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './tour-rhythm-widget.component.html',\n  styleUrl: './tour-rhythm-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TourRhythmWidgetComponent {\n  readonly data = input.required<TourRhythmData>();\n\n  readonly cells = computed((): WeekCell[] => {\n    const weeks = this.data().weeks;\n    let prevMonth = -1;\n    return weeks.map((w, i) => {\n      const d = new Date(w.weekStart);\n      const month = d.getMonth();\n      const monthLabel = month !== prevMonth ? MONTH_LABELS[month] : null;\n      prevMonth = month;\n      return { ...w, col: i, monthLabel };\n    });\n  });\n\n  readonly totalCols = computed(() => this.data().weeks.length);\n\n  readonly levelColors = ['#1e293b', '#166534', '#16a34a', '#4ade80', '#86efac'];\n\n  levelColor(level: 0 | 1 | 2 | 3 | 4): string {\n    return this.levelColors[level];\n  }\n\n  trackByCol(_: number, cell: WeekCell): number {\n    return cell.col;\n  }\n}\n","<article class=\"c2g-trh\">\n  <header class=\"c2g-trh__header\">\n    <span class=\"c2g-trh__icon\" aria-hidden=\"true\">📅</span>\n    <div class=\"c2g-trh__titles\">\n      <h3 class=\"c2g-trh__title\">Tour-Rhythmus</h3>\n      <span class=\"c2g-trh__sub\">Letzte 52 Wochen</span>\n    </div>\n    <div class=\"c2g-trh__stats\">\n      @if (data().currentStreakWeeks) {\n        <span class=\"c2g-trh__streak\">🔥 {{ data().currentStreakWeeks }} Wochen-Streak</span>\n      }\n    </div>\n  </header>\n\n  <div class=\"c2g-trh__grid-wrap\" aria-label=\"Aktivitäts-Heatmap der letzten 52 Wochen\" role=\"img\">\n    <div class=\"c2g-trh__month-labels\" aria-hidden=\"true\">\n      @for (cell of cells(); track cell.col) {\n        @if (cell.monthLabel) {\n          <span class=\"c2g-trh__month-label\" [style.grid-column]=\"cell.col + 1\">\n            {{ cell.monthLabel }}\n          </span>\n        }\n      }\n    </div>\n    <div class=\"c2g-trh__grid\">\n      @for (cell of cells(); track trackByCol($index, cell)) {\n        <div\n          class=\"c2g-trh__cell c2g-trh__cell--level-{{ cell.level }}\"\n          [style.background]=\"levelColor(cell.level)\"\n          [title]=\"cell.tourName ? cell.tourName + (cell.km ? ' · ' + cell.km + ' km' : '') : cell.weekStart\"\n        ></div>\n      }\n    </div>\n  </div>\n\n  <div class=\"c2g-trh__legend\" aria-hidden=\"true\">\n    <span class=\"c2g-trh__legend-label\">Weniger</span>\n    @for (l of [0, 1, 2, 3, 4]; track l) {\n      <div class=\"c2g-trh__legend-cell\" [style.background]=\"levelColors[l]\"></div>\n    }\n    <span class=\"c2g-trh__legend-label\">Mehr</span>\n  </div>\n</article>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { SeasonDnaData, Season } from './dashboard-widgets.models';\n\ninterface SeasonSegment {\n  season: Season;\n  label: string;\n  emoji: string;\n  color: string;\n  tourCount: number;\n  km: number;\n  nights: number;\n  pct: number;\n  startAngle: number;\n  endAngle: number;\n  pathD: string;\n  labelX: number;\n  labelY: number;\n}\n\nconst SEASON_CONFIG: Record<Season, { label: string; emoji: string; color: string }> = {\n  spring: { label: 'Frühling', emoji: '🌸', color: '#84cc16' },\n  summer: { label: 'Sommer',   emoji: '☀️',  color: '#f59e0b' },\n  autumn: { label: 'Herbst',   emoji: '🍂',  color: '#ef4444' },\n  winter: { label: 'Winter',   emoji: '❄️',  color: '#3b82f6' },\n};\n\nconst CX = 64, CY = 64, R_OUTER = 56, R_INNER = 28;\n\nfunction polarToXY(cx: number, cy: number, r: number, angleDeg: number): [number, number] {\n  const rad = ((angleDeg - 90) * Math.PI) / 180;\n  return [cx + r * Math.cos(rad), cy + r * Math.sin(rad)];\n}\n\nfunction donutSegmentPath(cx: number, cy: number, ro: number, ri: number, start: number, end: number): string {\n  const [ox1, oy1] = polarToXY(cx, cy, ro, start);\n  const [ox2, oy2] = polarToXY(cx, cy, ro, end);\n  const [ix1, iy1] = polarToXY(cx, cy, ri, end);\n  const [ix2, iy2] = polarToXY(cx, cy, ri, start);\n  const large = end - start > 180 ? 1 : 0;\n  return [\n    `M ${ox1} ${oy1}`,\n    `A ${ro} ${ro} 0 ${large} 1 ${ox2} ${oy2}`,\n    `L ${ix1} ${iy1}`,\n    `A ${ri} ${ri} 0 ${large} 0 ${ix2} ${iy2}`,\n    'Z',\n  ].join(' ');\n}\n\nconst SEASON_ORDER: Season[] = ['spring', 'summer', 'autumn', 'winter'];\n\n@Component({\n  selector: 'c2g-season-dna-widget',\n  standalone: true,\n  imports: [CommonModule, TranslateModule],\n  templateUrl: './season-dna-widget.component.html',\n  styleUrl: './season-dna-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeasonDnaWidgetComponent {\n  readonly data = input.required<SeasonDnaData>();\n\n  readonly segments = computed((): SeasonSegment[] => {\n    const entries = this.data().entries;\n    const total = entries.reduce((s, e) => s + e.tourCount, 0) || 1;\n    const GAP = 3;\n    let angle = 0;\n    return SEASON_ORDER.map(season => {\n      const entry = entries.find(e => e.season === season);\n      const count = entry?.tourCount ?? 0;\n      const pct = count / total;\n      const span = Math.max(0, pct * 360 - GAP);\n      const start = angle;\n      const end = angle + span;\n      angle += pct * 360;\n      const cfg = SEASON_CONFIG[season];\n      const mid = (start + end) / 2;\n      const [lx, ly] = polarToXY(CX, CY, (R_OUTER + R_INNER) / 2, mid);\n      return {\n        season,\n        label: cfg.label,\n        emoji: cfg.emoji,\n        color: cfg.color,\n        tourCount: count,\n        km: entry?.km ?? 0,\n        nights: entry?.nights ?? 0,\n        pct,\n        startAngle: start,\n        endAngle: end,\n        pathD: span > 2 ? donutSegmentPath(CX, CY, R_OUTER, R_INNER, start, end) : '',\n        labelX: lx,\n        labelY: ly,\n      };\n    }).filter(s => s.pct > 0);\n  });\n\n  readonly isEmpty = computed(() => this.segments().length === 0);\n\n  readonly dominantSeason = computed(() => {\n    const segs = this.segments();\n    if (segs.length === 0) return null;\n    const dom = segs.reduce((a, b) => (a.tourCount > b.tourCount ? a : b));\n    return SEASON_CONFIG[dom.season];\n  });\n\n  trackBySeason(_: number, seg: SeasonSegment): Season {\n    return seg.season;\n  }\n}\n","<article class=\"c2g-sdn\">\n  <header class=\"c2g-sdn__header\">\n    <span class=\"c2g-sdn__icon\" aria-hidden=\"true\">🌍</span>\n    <div class=\"c2g-sdn__titles\">\n      <h3 class=\"c2g-sdn__title\">Saison-DNA</h3>\n      <span class=\"c2g-sdn__sub\">{{ data().totalTours }} Touren analysiert</span>\n    </div>\n  </header>\n\n  @if (isEmpty()) {\n    <div class=\"c2g-sdn__empty\">\n      <span class=\"c2g-sdn__empty-icon\">🌍</span>\n      <span class=\"c2g-sdn__empty-text\">{{ 'dashboard.retro.emptySection' | translate }}</span>\n    </div>\n  } @else {\n  <div class=\"c2g-sdn__body\">\n    <div class=\"c2g-sdn__chart-wrap\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 128 128\" class=\"c2g-sdn__svg\">\n        @for (seg of segments(); track trackBySeason($index, seg)) {\n          @if (seg.pathD) {\n            <path\n              class=\"c2g-sdn__segment\"\n              [attr.d]=\"seg.pathD\"\n              [style.fill]=\"seg.color\"\n            />\n          }\n        }\n      </svg>\n      @if (dominantSeason(); as dom) {\n        <div class=\"c2g-sdn__center\">\n          <span class=\"c2g-sdn__center-emoji\">{{ dom.emoji }}</span>\n          <span class=\"c2g-sdn__center-label\">{{ dom.label }}</span>\n        </div>\n      }\n    </div>\n\n    <ul class=\"c2g-sdn__legend\" role=\"list\">\n      @for (seg of segments(); track trackBySeason($index, seg)) {\n        <li class=\"c2g-sdn__legend-item\">\n          <span class=\"c2g-sdn__legend-dot\" [style.background]=\"seg.color\"></span>\n          <span class=\"c2g-sdn__legend-emoji\">{{ seg.emoji }}</span>\n          <div class=\"c2g-sdn__legend-text\">\n            <span class=\"c2g-sdn__legend-name\">{{ seg.label }}</span>\n            <span class=\"c2g-sdn__legend-detail\">\n              {{ seg.tourCount }} Tour{{ seg.tourCount !== 1 ? 'en' : '' }}\n              @if (seg.km) { · {{ seg.km | number:'1.0-0' }} km }\n            </span>\n          </div>\n          <span class=\"c2g-sdn__legend-pct\">{{ (seg.pct * 100) | number:'1.0-0' }}%</span>\n        </li>\n      }\n    </ul>\n  </div>\n  }\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { WeightHistoryData, WeightHistoryPoint } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-weight-history-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './weight-history-widget.component.html',\n  styleUrl: './weight-history-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WeightHistoryWidgetComponent {\n  readonly data = input.required<WeightHistoryData>();\n\n  readonly points = computed(() => this.data().points.slice(-12));\n\n  readonly sparklinePath = computed(() => {\n    const pts = this.points();\n    if (pts.length < 2) return null;\n    const W = 200, H = 48;\n    const weights = pts.map(p => p.weightG);\n    const maxW = Math.max(...weights);\n    const minW = Math.min(...weights);\n    const range = maxW - minW || 1;\n    const xs = pts.map((_, i) => (i / (pts.length - 1)) * W);\n    const ys = pts.map(p => H - ((p.weightG - minW) / range) * (H - 8) - 2);\n    let line = `M ${xs[0]} ${ys[0]}`;\n    for (let i = 1; i < pts.length; i++) {\n      const cpx = (xs[i - 1] + xs[i]) / 2;\n      line += ` C ${cpx} ${ys[i - 1]}, ${cpx} ${ys[i]}, ${xs[i]} ${ys[i]}`;\n    }\n    const area = `${line} L ${xs[xs.length - 1]} ${H} L ${xs[0]} ${H} Z`;\n    const improving = pts[pts.length - 1].weightG <= pts[0].weightG;\n    return { line, area, lastX: xs[xs.length - 1], lastY: ys[ys.length - 1], improving };\n  });\n\n  readonly trend = computed(() => {\n    const pts = this.points();\n    if (pts.length < 2) return null;\n    const first = pts[0].weightG;\n    const last = pts[pts.length - 1].weightG;\n    const diffG = last - first;\n    const pct = Math.round((diffG / first) * 100);\n    return { diffG, pct, improving: diffG < 0 };\n  });\n\n  formatKg(g: number): string {\n    return (g / 1000).toFixed(2);\n  }\n\n  formatDate(iso: string): string {\n    return new Date(iso).toLocaleDateString('de-DE', { month: 'short', year: '2-digit' });\n  }\n}\n","<article class=\"c2g-wh\">\n  <header class=\"c2g-wh__header\">\n    <span class=\"c2g-wh__icon\">⚖️</span>\n    <div class=\"c2g-wh__titles\">\n      <h3 class=\"c2g-wh__title\">Gewichts-Historie</h3>\n      @if (data().points.length) {\n        <span class=\"c2g-wh__sub\">{{ data().points.length }} Touren</span>\n      }\n    </div>\n    @if (trend(); as t) {\n      <span class=\"c2g-wh__trend\" [class.c2g-wh__trend--good]=\"t.improving\" [class.c2g-wh__trend--bad]=\"!t.improving\">\n        {{ t.improving ? '↓' : '↑' }} {{ t.pct | number:'1.0-0' }}%\n      </span>\n    }\n  </header>\n\n  <div class=\"c2g-wh__hero\">\n    @if (data().latestG) {\n      <span class=\"c2g-wh__value\">{{ formatKg(data().latestG!) }}</span>\n      <span class=\"c2g-wh__unit\">kg</span>\n      <span class=\"c2g-wh__label\">aktuell</span>\n    }\n    @if (data().bestG) {\n      <div class=\"c2g-wh__best\">\n        <span class=\"c2g-wh__best-icon\">🏆</span>\n        <span class=\"c2g-wh__best-val\">{{ formatKg(data().bestG!) }} kg</span>\n        <span class=\"c2g-wh__best-label\">Rekord</span>\n      </div>\n    }\n  </div>\n\n  @if (sparklinePath(); as sp) {\n    <div class=\"c2g-wh__chart\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 200 48\" preserveAspectRatio=\"none\" class=\"c2g-wh__svg\">\n        <defs>\n          <linearGradient id=\"wh-grad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n            <stop offset=\"0%\" [attr.stop-color]=\"sp.improving ? '#22c55e' : '#f97316'\" stop-opacity=\"0.3\"/>\n            <stop offset=\"100%\" [attr.stop-color]=\"sp.improving ? '#22c55e' : '#f97316'\" stop-opacity=\"0\"/>\n          </linearGradient>\n        </defs>\n        <path [attr.d]=\"sp.area\" fill=\"url(#wh-grad)\"/>\n        <path class=\"c2g-wh__line\" [attr.d]=\"sp.line\"\n          [style.stroke]=\"sp.improving ? '#22c55e' : '#f97316'\"/>\n        <circle class=\"c2g-wh__dot\" [attr.cx]=\"sp.lastX\" [attr.cy]=\"sp.lastY\" r=\"3\"\n          [style.fill]=\"sp.improving ? '#22c55e' : '#f97316'\"/>\n      </svg>\n    </div>\n  }\n\n  <div class=\"c2g-wh__dates\">\n    @if (points().length >= 2) {\n      <span>{{ formatDate(points()[0].date) }}</span>\n      <span>{{ formatDate(points()[points().length - 1].date) }}</span>\n    }\n  </div>\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { GearValueData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-gear-value-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './gear-value-widget.component.html',\n  styleUrl: './gear-value-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GearValueWidgetComponent {\n  readonly data = input.required<GearValueData>();\n\n  readonly topCategories = computed(() =>\n    [...(this.data().categories ?? [])]\n      .sort((a, b) => b.value - a.value)\n      .slice(0, 5)\n  );\n\n  readonly maxCatValue = computed(() =>\n    Math.max(...(this.data().categories ?? []).map(c => c.value), 1)\n  );\n\n  readonly formattedTotal = computed(() => {\n    const v = this.data().totalValue;\n    if (v >= 1000) return `${(v / 1000).toFixed(1)}k`;\n    return v.toFixed(0);\n  });\n\n  formatValue(v: number): string {\n    if (v >= 1000) return `${(v / 1000).toFixed(1)}k`;\n    return v.toFixed(0);\n  }\n}\n","<article class=\"c2g-gv\">\n  <header class=\"c2g-gv__header\">\n    <span class=\"c2g-gv__icon\">💰</span>\n    <div class=\"c2g-gv__titles\">\n      <h3 class=\"c2g-gv__title\">Gear-Wert</h3>\n      <span class=\"c2g-gv__sub\">{{ data().itemCount }} Items</span>\n    </div>\n  </header>\n\n  <div class=\"c2g-gv__hero\">\n    <span class=\"c2g-gv__value\">{{ formattedTotal() }}</span>\n    <span class=\"c2g-gv__currency\">{{ data().currency }}</span>\n  </div>\n\n  @if (topCategories().length) {\n    <ul class=\"c2g-gv__cats\" role=\"list\">\n      @for (cat of topCategories(); track cat.label) {\n        <li class=\"c2g-gv__cat\">\n          <div class=\"c2g-gv__cat-header\">\n            <span class=\"c2g-gv__cat-name\">{{ cat.label }}</span>\n            <span class=\"c2g-gv__cat-value\">{{ formatValue(cat.value) }} {{ data().currency }}</span>\n          </div>\n          <div class=\"c2g-gv__bar-track\">\n            <div class=\"c2g-gv__bar-fill\"\n              [style.width.%]=\"(cat.value / maxCatValue()) * 100\">\n            </div>\n          </div>\n        </li>\n      }\n    </ul>\n  }\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { WeightBreakdownData, WeightBreakdownEntry } from './dashboard-widgets.models';\n\nconst DEFAULT_COLORS = [\n  '#ff6b35', '#22c55e', '#3b82f6', '#f59e0b', '#a855f7',\n  '#ec4899', '#06b6d4', '#84cc16', '#f97316', '#6b7280',\n];\n\ninterface EnrichedEntry extends WeightBreakdownEntry {\n  pct: number;\n  color: string;\n  barOffset: number;\n}\n\n@Component({\n  selector: 'c2g-weight-breakdown-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './weight-breakdown-widget.component.html',\n  styleUrl: './weight-breakdown-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WeightBreakdownWidgetComponent {\n  readonly data = input.required<WeightBreakdownData>();\n\n  readonly entries = computed((): EnrichedEntry[] => {\n    const total = this.data().totalG || 1;\n    let offset = 0;\n    return [...this.data().entries]\n      .sort((a, b) => b.weightG - a.weightG)\n      .map((e, i) => {\n        const pct = (e.weightG / total) * 100;\n        const entry: EnrichedEntry = {\n          ...e,\n          pct,\n          color: e.color ?? DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n          barOffset: offset,\n        };\n        offset += pct;\n        return entry;\n      });\n  });\n\n  readonly totalKg = computed(() => (this.data().totalG / 1000).toFixed(2));\n\n  // SVG stacked horizontal bar — single rect per entry using stroke-dasharray trick\n  readonly circumference = 100; // we work in percentage units\n\n  formatKg(g: number): string {\n    if (g >= 1000) return `${(g / 1000).toFixed(2)} kg`;\n    return `${g} g`;\n  }\n}\n","<article class=\"c2g-wb\">\n  <header class=\"c2g-wb__header\">\n    <span class=\"c2g-wb__icon\">🏋️</span>\n    <div class=\"c2g-wb__titles\">\n      <h3 class=\"c2g-wb__title\">Gewichts-Breakdown</h3>\n      <span class=\"c2g-wb__sub\">{{ totalKg() }} kg gesamt</span>\n    </div>\n  </header>\n\n  <!-- Stacked horizontal bar -->\n  <div class=\"c2g-wb__stacked\" aria-hidden=\"true\">\n    @for (e of entries(); track e.category) {\n      <div\n        class=\"c2g-wb__stack-seg\"\n        [style.width.%]=\"e.pct\"\n        [style.background]=\"e.color\"\n        [title]=\"e.category + ': ' + (e.pct | number:'1.0-1') + '%'\"\n      ></div>\n    }\n  </div>\n\n  <!-- Legend rows -->\n  <ul class=\"c2g-wb__legend\" role=\"list\">\n    @for (e of entries(); track e.category) {\n      <li class=\"c2g-wb__row\">\n        <span class=\"c2g-wb__dot\" [style.background]=\"e.color\"></span>\n        <span class=\"c2g-wb__cat\">{{ e.category }}</span>\n        <div class=\"c2g-wb__bar-track\">\n          <div class=\"c2g-wb__bar-fill\" [style.width.%]=\"e.pct\" [style.background]=\"e.color\"></div>\n        </div>\n        <span class=\"c2g-wb__pct\">{{ e.pct | number:'1.0-1' }}%</span>\n        <span class=\"c2g-wb__weight\">{{ formatKg(e.weightG) }}</span>\n      </li>\n    }\n  </ul>\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, effect, input, OnDestroy, signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { AdventureScoreData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-adventure-score-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './adventure-score-widget.component.html',\n  styleUrl: './adventure-score-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdventureScoreWidgetComponent implements OnDestroy {\n  readonly data = input.required<AdventureScoreData>();\n\n  readonly displayScore = signal(0);\n  private raf = 0;\n\n  constructor() {\n    effect(() => {\n      const target = this.data().score;\n      cancelAnimationFrame(this.raf);\n      const start = performance.now();\n      const tick = (now: number) => {\n        const t = Math.min((now - start) / 1200, 1);\n        const e = 1 - Math.pow(1 - t, 4);\n        this.displayScore.set(Math.round(e * target));\n        if (t < 1) this.raf = requestAnimationFrame(tick);\n      };\n      this.raf = requestAnimationFrame(tick);\n    });\n  }\n\n  // Circular progress arc (0–100)\n  readonly arcPath = computed(() => {\n    const pct = Math.min(this.data().score / 100, 1);\n    const r = 52, cx = 60, cy = 60;\n    const angle = pct * 360;\n    if (angle >= 359.9) {\n      return `M ${cx} ${cy - r} A ${r} ${r} 0 1 1 ${cx - 0.01} ${cy - r}`;\n    }\n    const rad = ((angle - 90) * Math.PI) / 180;\n    const x = cx + r * Math.cos(rad);\n    const y = cy + r * Math.sin(rad);\n    const large = angle > 180 ? 1 : 0;\n    return `M ${cx} ${cy - r} A ${r} ${r} 0 ${large} 1 ${x} ${y}`;\n  });\n\n  readonly trackPath = `M 60 8 A 52 52 0 1 1 59.99 8`;\n\n  readonly levelColor = computed(() => {\n    const l = this.data().level;\n    if (l >= 80) return '#f59e0b';\n    if (l >= 60) return '#ff6b35';\n    if (l >= 40) return '#22c55e';\n    if (l >= 20) return '#3b82f6';\n    return '#94a3b8';\n  });\n\n  readonly sparklinePath = computed(() => {\n    const pts = this.data().sparkline;\n    if (!pts || pts.length < 2) return null;\n    const W = 120, H = 28;\n    const maxS = Math.max(...pts.map(p => p.score));\n    const minS = Math.min(...pts.map(p => p.score));\n    const range = maxS - minS || 1;\n    const xs = pts.map((_, i) => (i / (pts.length - 1)) * W);\n    const ys = pts.map(p => H - ((p.score - minS) / range) * (H - 4) - 2);\n    let d = `M ${xs[0]} ${ys[0]}`;\n    for (let i = 1; i < pts.length; i++) {\n      const cpx = (xs[i - 1] + xs[i]) / 2;\n      d += ` C ${cpx} ${ys[i - 1]}, ${cpx} ${ys[i]}, ${xs[i]} ${ys[i]}`;\n    }\n    return d;\n  });\n\n  ngOnDestroy() { cancelAnimationFrame(this.raf); }\n}\n","<article class=\"c2g-as\">\n  <header class=\"c2g-as__header\">\n    <span class=\"c2g-as__icon\">🏆</span>\n    <div class=\"c2g-as__titles\">\n      <h3 class=\"c2g-as__title\">Abenteuer-Score</h3>\n      <span class=\"c2g-as__level-label\">{{ data().levelLabel }}</span>\n    </div>\n    @if (sparklinePath(); as sp) {\n      <svg class=\"c2g-as__sparkline\" viewBox=\"0 0 120 28\" aria-hidden=\"true\">\n        <path [attr.d]=\"sp\" [style.stroke]=\"levelColor()\" class=\"c2g-as__spark-line\"/>\n      </svg>\n    }\n  </header>\n\n  <div class=\"c2g-as__body\">\n    <!-- Circular progress -->\n    <div class=\"c2g-as__circle-wrap\" aria-hidden=\"true\">\n      <svg class=\"c2g-as__circle\" viewBox=\"0 0 120 120\">\n        <path class=\"c2g-as__track\" [attr.d]=\"trackPath\" fill=\"none\" stroke-width=\"10\" stroke-linecap=\"round\"/>\n        <path class=\"c2g-as__arc\" [attr.d]=\"arcPath()\" fill=\"none\" stroke-width=\"10\" stroke-linecap=\"round\"\n          [style.stroke]=\"levelColor()\"/>\n      </svg>\n      <div class=\"c2g-as__center\">\n        <span class=\"c2g-as__score\" [style.color]=\"levelColor()\">{{ displayScore() }}</span>\n        <span class=\"c2g-as__score-max\">/100</span>\n      </div>\n    </div>\n\n    <!-- Stats -->\n    <div class=\"c2g-as__stats\">\n      <div class=\"c2g-as__stat\">\n        <span class=\"c2g-as__stat-val\">{{ data().totalTours }}</span>\n        <span class=\"c2g-as__stat-label\">Touren</span>\n      </div>\n      <div class=\"c2g-as__stat\">\n        <span class=\"c2g-as__stat-val\">{{ data().totalKm | number:'1.0-0' }}</span>\n        <span class=\"c2g-as__stat-label\">km</span>\n      </div>\n      <div class=\"c2g-as__stat\">\n        <span class=\"c2g-as__stat-val\">{{ data().totalNights }}</span>\n        <span class=\"c2g-as__stat-label\">Nächte</span>\n      </div>\n      <div class=\"c2g-as__stat\">\n        <span class=\"c2g-as__stat-val\">{{ data().uniqueTypes }}</span>\n        <span class=\"c2g-as__stat-label\">Typen</span>\n      </div>\n    </div>\n  </div>\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { TopGearData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-top-gear-widget',\n  standalone: true,\n  imports: [CommonModule, TranslateModule],\n  templateUrl: './top-gear-widget.component.html',\n  styleUrl: './top-gear-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TopGearWidgetComponent {\n  readonly data = input.required<TopGearData>();\n\n  readonly isEmpty = computed(() => this.data().entries.length === 0);\n  readonly top = computed(() => this.data().entries.slice(0, 5));\n\n  readonly maxUsage = computed(() =>\n    Math.max(...this.data().entries.map(e => e.usageCount), 1)\n  );\n\n  usagePct(count: number): number {\n    return Math.round((count / this.maxUsage()) * 100);\n  }\n\n  medal(index: number): string {\n    return ['🥇', '🥈', '🥉', '', ''][index] ?? '';\n  }\n}\n","<article class=\"c2g-tg\">\n  <header class=\"c2g-tg__header\">\n    <span class=\"c2g-tg__icon\">🎒</span>\n    <h3 class=\"c2g-tg__title\">Top-Gear</h3>\n  </header>\n\n  @if (isEmpty()) {\n    <div class=\"c2g-tg__empty\">\n      <span class=\"c2g-tg__empty-icon\">🎒</span>\n      <span class=\"c2g-tg__empty-text\">{{ 'dashboard.retro.emptySection' | translate }}</span>\n    </div>\n  } @else {\n    <ol class=\"c2g-tg__list\" role=\"list\">\n      @for (entry of top(); track entry.name; let i = $index) {\n        <li class=\"c2g-tg__item\" [class.c2g-tg__item--top3]=\"i < 3\">\n          <span class=\"c2g-tg__rank\">\n            @if (medal(i)) { {{ medal(i) }} } @else { {{ i + 1 }} }\n          </span>\n          <div class=\"c2g-tg__info\">\n            <span class=\"c2g-tg__name\">{{ entry.name }}</span>\n            @if (entry.category) {\n              <span class=\"c2g-tg__cat\">{{ entry.category }}</span>\n            }\n          </div>\n          <div class=\"c2g-tg__bar-track\">\n            <div class=\"c2g-tg__bar-fill\" [style.width.%]=\"usagePct(entry.usageCount)\"></div>\n          </div>\n          <span class=\"c2g-tg__count\">{{ entry.usageCount }}×</span>\n        </li>\n      }\n    </ol>\n  }\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { GroupActivityData, GroupActivityEntry } from './dashboard-widgets.models';\n\ninterface RankedEntry extends GroupActivityEntry {\n  rank: number;\n  pct: number;\n}\n\n@Component({\n  selector: 'c2g-group-activity-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './group-activity-widget.component.html',\n  styleUrl: './group-activity-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupActivityWidgetComponent {\n  readonly data = input.required<GroupActivityData>();\n\n  readonly ranked = computed((): RankedEntry[] => {\n    const sorted = [...this.data().members]\n      .sort((a, b) => b.completedItems - a.completedItems);\n    const maxItems = Math.max(...sorted.map(m => m.completedItems), 1);\n    return sorted.map((m, i) => ({\n      ...m,\n      rank: i + 1,\n      pct: Math.round((m.completedItems / maxItems) * 100),\n    }));\n  });\n\n  medal(rank: number): string {\n    if (rank === 1) return '🥇';\n    if (rank === 2) return '🥈';\n    if (rank === 3) return '🥉';\n    return '';\n  }\n\n  completionPct(m: GroupActivityEntry): number {\n    if (!m.totalItems) return 0;\n    return Math.round((m.completedItems / m.totalItems) * 100);\n  }\n}\n","<article class=\"c2g-ga\">\n  <header class=\"c2g-ga__header\">\n    <span class=\"c2g-ga__icon\">🏅</span>\n    <div class=\"c2g-ga__titles\">\n      <h3 class=\"c2g-ga__title\">Aktivste Mitglieder</h3>\n      @if (data().groupName) {\n        <span class=\"c2g-ga__sub\">{{ data().groupName }}</span>\n      }\n    </div>\n  </header>\n\n  <ol class=\"c2g-ga__list\" role=\"list\">\n    @for (m of ranked(); track m.name) {\n      <li class=\"c2g-ga__item\" [class.c2g-ga__item--self]=\"m.isSelf\">\n        <!-- Avatar -->\n        <div class=\"c2g-ga__avatar\">\n          @if (m.avatarUrl) {\n            <img [src]=\"m.avatarUrl\" [alt]=\"m.name\" class=\"c2g-ga__avatar-img\"/>\n          } @else {\n            <span class=\"c2g-ga__initials\">{{ m.initials }}</span>\n          }\n          @if (medal(m.rank)) {\n            <span class=\"c2g-ga__medal\">{{ medal(m.rank) }}</span>\n          }\n        </div>\n\n        <div class=\"c2g-ga__info\">\n          <span class=\"c2g-ga__name\">{{ m.name }}{{ m.isSelf ? ' (du)' : '' }}</span>\n          <div class=\"c2g-ga__bar-track\">\n            <div class=\"c2g-ga__bar-fill\" [style.width.%]=\"m.pct\"></div>\n          </div>\n        </div>\n\n        <div class=\"c2g-ga__nums\">\n          <span class=\"c2g-ga__completed\">{{ m.completedItems }}</span>\n          @if (m.totalItems) {\n            <span class=\"c2g-ga__total\">/ {{ m.totalItems }}</span>\n          }\n        </div>\n      </li>\n    }\n  </ol>\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, effect, input, OnDestroy, signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { GearSharingData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-gear-sharing-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './gear-sharing-widget.component.html',\n  styleUrl: './gear-sharing-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GearSharingWidgetComponent implements OnDestroy {\n  readonly data = input.required<GearSharingData>();\n\n  readonly displayPct = signal(0);\n  private raf = 0;\n\n  constructor() {\n    effect(() => {\n      const target = this.sharingPct();\n      cancelAnimationFrame(this.raf);\n      const start = performance.now();\n      const tick = (now: number) => {\n        const t = Math.min((now - start) / 1000, 1);\n        const e = 1 - Math.pow(1 - t, 3);\n        this.displayPct.set(Math.round(e * target));\n        if (t < 1) this.raf = requestAnimationFrame(tick);\n      };\n      this.raf = requestAnimationFrame(tick);\n    });\n  }\n\n  readonly sharingPct = computed(() => {\n    const d = this.data();\n    if (!d.totalItems) return 0;\n    return Math.round((d.sharedItems / d.totalItems) * 100);\n  });\n\n  readonly tier = computed((): 'high' | 'medium' | 'low' => {\n    const p = this.sharingPct();\n    if (p >= 40) return 'high';\n    if (p >= 20) return 'medium';\n    return 'low';\n  });\n\n  readonly arcPath = computed(() => {\n    const pct = Math.min(this.sharingPct() / 100, 1);\n    const r = 44, cx = 52, cy = 52;\n    if (pct >= 0.999) return `M ${cx} ${cy - r} A ${r} ${r} 0 1 1 ${cx - 0.01} ${cy - r}`;\n    const angle = pct * 360;\n    const rad = ((angle - 90) * Math.PI) / 180;\n    const x = cx + r * Math.cos(rad);\n    const y = cy + r * Math.sin(rad);\n    const large = angle > 180 ? 1 : 0;\n    return `M ${cx} ${cy - r} A ${r} ${r} 0 ${large} 1 ${x} ${y}`;\n  });\n\n  ngOnDestroy() { cancelAnimationFrame(this.raf); }\n}\n","<article class=\"c2g-gs\" [class]=\"'c2g-gs--' + tier()\">\n  <header class=\"c2g-gs__header\">\n    <span class=\"c2g-gs__icon\">🤝</span>\n    <div class=\"c2g-gs__titles\">\n      <h3 class=\"c2g-gs__title\">Gear-Sharing</h3>\n      <span class=\"c2g-gs__sub\">{{ data().memberCount }} Mitglieder</span>\n    </div>\n  </header>\n\n  <div class=\"c2g-gs__body\">\n    <div class=\"c2g-gs__circle-wrap\" aria-hidden=\"true\">\n      <svg class=\"c2g-gs__circle\" viewBox=\"0 0 104 104\">\n        <circle cx=\"52\" cy=\"52\" r=\"44\" class=\"c2g-gs__track\" fill=\"none\" stroke-width=\"10\"/>\n        <path class=\"c2g-gs__arc\" [attr.d]=\"arcPath()\" fill=\"none\" stroke-width=\"10\" stroke-linecap=\"round\"/>\n      </svg>\n      <div class=\"c2g-gs__center\">\n        <span class=\"c2g-gs__pct\">{{ displayPct() }}%</span>\n        <span class=\"c2g-gs__pct-label\">geteilt</span>\n      </div>\n    </div>\n\n    <div class=\"c2g-gs__stats\">\n      <div class=\"c2g-gs__stat\">\n        <span class=\"c2g-gs__stat-val\">{{ data().sharedItems }}</span>\n        <span class=\"c2g-gs__stat-label\">geteilt</span>\n      </div>\n      <div class=\"c2g-gs__stat\">\n        <span class=\"c2g-gs__stat-val\">{{ data().totalItems - data().sharedItems }}</span>\n        <span class=\"c2g-gs__stat-label\">eigene</span>\n      </div>\n      @if (data().savedWeightPerPersonG) {\n        <div class=\"c2g-gs__stat c2g-gs__stat--highlight\">\n          <span class=\"c2g-gs__stat-val\">{{ (data().savedWeightPerPersonG! / 1000) | number:'1.1-1' }} kg</span>\n          <span class=\"c2g-gs__stat-label\">gespart/Person</span>\n        </div>\n      }\n    </div>\n  </div>\n</article>\n","import {\n  ChangeDetectionStrategy, Component, computed, input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { AdventureRadiusData } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-adventure-radius-widget',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './adventure-radius-widget.component.html',\n  styleUrl: './adventure-radius-widget.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdventureRadiusWidgetComponent {\n  readonly data = input.required<AdventureRadiusData>();\n\n  readonly buckets = computed(() => this.data().buckets ?? []);\n\n  readonly maxBucketCount = computed(() =>\n    Math.max(...this.buckets().map(b => b.count), 1)\n  );\n\n  bucketPct(count: number): number {\n    return Math.round((count / this.maxBucketCount()) * 100);\n  }\n\n  readonly radiusTier = computed((): 'local' | 'regional' | 'national' | 'international' => {\n    const max = this.data().maxRadiusKm;\n    if (max >= 1000) return 'international';\n    if (max >= 300) return 'national';\n    if (max >= 100) return 'regional';\n    return 'local';\n  });\n\n  readonly tierEmoji = computed(() => {\n    switch (this.radiusTier()) {\n      case 'international': return '🌍';\n      case 'national': return '🗺️';\n      case 'regional': return '🏔️';\n      default: return '🏡';\n    }\n  });\n\n  readonly tierLabel = computed(() => {\n    switch (this.radiusTier()) {\n      case 'international': return 'Weltenbummler';\n      case 'national': return 'Deutschlandreisender';\n      case 'regional': return 'Regionalentdecker';\n      default: return 'Heimatverbunden';\n    }\n  });\n}\n","<article class=\"c2g-ar\">\n  <header class=\"c2g-ar__header\">\n    <span class=\"c2g-ar__icon\">{{ tierEmoji() }}</span>\n    <div class=\"c2g-ar__titles\">\n      <h3 class=\"c2g-ar__title\">Abenteuer-Radius</h3>\n      @if (data().homeLabel) {\n        <span class=\"c2g-ar__sub\">ab {{ data().homeLabel }}</span>\n      }\n    </div>\n    <span class=\"c2g-ar__tier-badge c2g-ar__tier-badge--{{ radiusTier() }}\">\n      {{ tierLabel() }}\n    </span>\n  </header>\n\n  <div class=\"c2g-ar__hero\">\n    <div class=\"c2g-ar__stat\">\n      <span class=\"c2g-ar__val\">{{ data().avgRadiusKm | number:'1.0-0' }}</span>\n      <span class=\"c2g-ar__unit\">km</span>\n      <span class=\"c2g-ar__label\">Ø Radius</span>\n    </div>\n    <div class=\"c2g-ar__divider\"></div>\n    <div class=\"c2g-ar__stat\">\n      <span class=\"c2g-ar__val\">{{ data().maxRadiusKm | number:'1.0-0' }}</span>\n      <span class=\"c2g-ar__unit\">km</span>\n      <span class=\"c2g-ar__label\">Maximum</span>\n    </div>\n  </div>\n\n  @if (data().maxTourName) {\n    <div class=\"c2g-ar__max-tour\">\n      <span class=\"c2g-ar__max-icon\">📍</span>\n      <span class=\"c2g-ar__max-name\">{{ data().maxTourName }}</span>\n    </div>\n  }\n\n  @if (buckets().length) {\n    <div class=\"c2g-ar__buckets\">\n      @for (b of buckets(); track b.labelKm) {\n        <div class=\"c2g-ar__bucket\">\n          <div class=\"c2g-ar__bucket-bar-wrap\">\n            <div class=\"c2g-ar__bucket-bar\" [style.height.%]=\"bucketPct(b.count)\"></div>\n          </div>\n          <span class=\"c2g-ar__bucket-label\">{{ b.labelKm }}</span>\n          <span class=\"c2g-ar__bucket-count\">{{ b.count }}</span>\n        </div>\n      }\n    </div>\n  }\n</article>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { PackProgressData, PackProgressRow } from './dashboard-widgets.models';\n\n@Component({\n  selector: 'c2g-pack-progress-widget',\n  standalone: true,\n  imports: [],\n  templateUrl: './pack-progress-widget.component.html',\n  styleUrls: ['./pack-progress-widget.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PackProgressWidgetComponent {\n  readonly data = input.required<PackProgressData>();\n\n  readonly rows = computed(() => this.data().rows);\n\n  readonly overallPacked = computed(() =>\n    this.rows().reduce((s, r) => s + r.packed, 0)\n  );\n\n  readonly overallTotal = computed(() =>\n    this.rows().reduce((s, r) => s + r.total, 0)\n  );\n\n  readonly overallPercent = computed(() => {\n    const t = this.overallTotal();\n    return t === 0 ? 0 : Math.round((this.overallPacked() / t) * 100);\n  });\n\n  pct(row: PackProgressRow): number {\n    return row.total === 0 ? 0 : Math.round((row.packed / row.total) * 100);\n  }\n\n  tone(row: PackProgressRow): 'success' | 'warning' | 'danger' {\n    const p = this.pct(row);\n    if (p === 100) return 'success';\n    if (p >= 50)  return 'warning';\n    return 'danger';\n  }\n}\n","<div class=\"c2g-pp\">\n\n  <div class=\"c2g-pp__header\">\n    <span class=\"c2g-pp__title\">📦 Packfortschritt</span>\n    @if (data().tourName) {\n      <span class=\"c2g-pp__tour\">{{ data().tourName }}</span>\n    }\n    <span class=\"c2g-pp__overall\">{{ overallPacked() }}/{{ overallTotal() }}</span>\n  </div>\n\n  <div class=\"c2g-pp__rows\">\n    @for (row of rows(); track row.label) {\n      <div class=\"c2g-pp__row\" [class.c2g-pp__row--highlight]=\"row.highlight\">\n\n        <div class=\"c2g-pp__row-label\">\n          <span class=\"c2g-pp__row-icon\" aria-hidden=\"true\">{{ row.icon }}</span>\n          <span class=\"c2g-pp__row-name\">{{ row.label }}</span>\n        </div>\n\n        <div class=\"c2g-pp__bar-wrap\" [attr.aria-label]=\"row.label + ': ' + row.packed + ' von ' + row.total + ' gepackt'\">\n          <div\n            class=\"c2g-pp__bar-fill\"\n            [class.c2g-pp__bar-fill--success]=\"tone(row) === 'success'\"\n            [class.c2g-pp__bar-fill--warning]=\"tone(row) === 'warning'\"\n            [class.c2g-pp__bar-fill--danger]=\"tone(row) === 'danger'\"\n            [style.width.%]=\"pct(row)\">\n          </div>\n        </div>\n\n        <span\n          class=\"c2g-pp__count\"\n          [class.c2g-pp__count--success]=\"tone(row) === 'success'\"\n          [class.c2g-pp__count--warning]=\"tone(row) === 'warning'\"\n          [class.c2g-pp__count--danger]=\"tone(row) === 'danger'\">\n          {{ row.packed }}/{{ row.total }}\n        </span>\n\n      </div>\n    }\n  </div>\n\n  <!-- Overall strip -->\n  <div class=\"c2g-pp__strip-track\">\n    <div class=\"c2g-pp__strip-fill\" [style.width.%]=\"overallPercent()\"></div>\n  </div>\n\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nconst FEATURE_ICONS: Record<string, string> = {\n  equipment: '🎒',\n  groups:    '👥',\n};\n\n@Component({\n  selector: 'c2g-feature-unavailable',\n  standalone: true,\n  imports: [],\n  templateUrl: './feature-unavailable.component.html',\n  styleUrls: ['./feature-unavailable.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'c2g-feature-unavailable-host' },\n})\nexport class FeatureUnavailableComponent {\n  readonly featureKey  = input<'equipment' | 'groups' | string>('');\n  readonly title       = input<string>('');\n  readonly description = input<string>('');\n\n  readonly icon = computed(() => FEATURE_ICONS[this.featureKey()] ?? '🚀');\n}\n","<div class=\"c2g-feature-unavailable\">\n\n  <!-- Decorative blobs are rendered via ::before / ::after on the host class -->\n\n  <div class=\"c2g-feature-unavailable__card\">\n\n    <!-- Icon -->\n    <div class=\"c2g-feature-unavailable__icon\" aria-hidden=\"true\">{{ icon() }}</div>\n\n    <!-- \"Kommt bald\" pill -->\n    <span class=\"c2g-feature-unavailable__badge\">Kommt bald</span>\n\n    <!-- Title -->\n    @if (title()) {\n      <h2 class=\"c2g-feature-unavailable__title\">{{ title() }}</h2>\n    }\n\n    <!-- Description -->\n    @if (description()) {\n      <p class=\"c2g-feature-unavailable__description\">{{ description() }}</p>\n    }\n\n    <!-- CTA slot — the app injects its own button here -->\n    <div class=\"c2g-feature-unavailable__cta\">\n      <ng-content />\n    </div>\n\n  </div>\n\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","TYPE_CONFIG"],"mappings":"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"}