/** * TASKMATE - Contacts Styles * ========================== * Kartenansicht für Kontakte */ /* ============================================================================= HEADER & CONTROLS ============================================================================= */ .contacts-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-md); flex-wrap: wrap; gap: var(--space-sm); } .contacts-controls { display: flex; gap: var(--space-sm); align-items: center; flex-wrap: wrap; justify-content: flex-end; } .contacts-filters { display: flex; gap: var(--space-xs); } /* ============================================================================= GRID LAYOUT ============================================================================= */ .contacts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-md); margin-top: var(--space-md); } /* ============================================================================= CONTACT CARD ============================================================================= */ .contact-card { background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: var(--radius); padding: var(--space-md); transition: all 0.2s; cursor: pointer; position: relative; } .contact-card:hover { border-color: var(--primary); transform: translateY(-2px); box-shadow: var(--shadow-md); } .contact-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--space-sm); } .contact-avatar { width: 48px; height: 48px; background: var(--primary); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 18px; flex-shrink: 0; } .contact-actions { opacity: 0; transition: opacity 0.2s; } .contact-card:hover .contact-actions { opacity: 1; } .contact-actions .btn-icon { background: var(--bg-tertiary); border: 1px solid var(--border-color); color: var(--text-secondary); width: 32px; height: 32px; padding: 0; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); transition: all 0.2s; } .contact-actions .btn-icon:hover { background: var(--primary); color: white; border-color: var(--primary); } /* ============================================================================= CONTACT INFO ============================================================================= */ .contact-card-body { margin-bottom: var(--space-sm); } .contact-name { font-size: 18px; font-weight: 600; margin: 0 0 var(--space-xs); color: var(--text-primary); } .contact-company { font-size: 14px; color: var(--primary); margin-bottom: 4px; } .contact-position { font-size: 13px; color: var(--text-secondary); margin-bottom: var(--space-sm); } .contact-email, .contact-phone, .contact-mobile { font-size: 13px; color: var(--text-secondary); margin-bottom: 4px; display: flex; align-items: center; gap: 8px; } .contact-email i, .contact-phone i, .contact-mobile i { width: 14px; color: var(--text-tertiary); } .contact-email:hover, .contact-phone:hover, .contact-mobile:hover { color: var(--primary); } /* ============================================================================= TAGS ============================================================================= */ .contact-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: var(--space-sm); } .contact-tag { background: var(--bg-tertiary); color: var(--text-secondary); font-size: 11px; padding: 2px 8px; border-radius: var(--radius-sm); border: 1px solid var(--border-color); } /* ============================================================================= EMPTY STATE ============================================================================= */ .contacts-empty { text-align: center; padding: var(--space-xl) var(--space-md); background: var(--bg-secondary); border-radius: var(--radius); border: 1px solid var(--border-color); } .contacts-empty i { font-size: 48px; color: var(--text-tertiary); margin-bottom: var(--space-md); } .contacts-empty h3 { font-size: 20px; margin-bottom: var(--space-xs); color: var(--text-primary); } .contacts-empty p { color: var(--text-secondary); margin-bottom: var(--space-md); } /* ============================================================================= CONTACT MODAL ============================================================================= */ #contact-form { display: grid; gap: var(--space-md); } #contact-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-md); } #contact-form .form-group.full-width { grid-column: 1 / -1; } #contact-form .tags-input-wrapper { position: relative; } #contact-form .tags-input-wrapper input { padding-right: 32px; } #contact-form .tags-help { font-size: 11px; color: var(--text-tertiary); margin-top: 4px; } /* ============================================================================= RESPONSIVE ============================================================================= */ @media (max-width: 768px) { .contacts-header { flex-direction: column; align-items: stretch; } .contacts-controls { flex-direction: column; } .contacts-search { max-width: none; } .contacts-grid { grid-template-columns: 1fr; } .form-row { grid-template-columns: 1fr; } .modal-actions { flex-direction: column-reverse; gap: var(--space-sm); } .modal-actions-left { width: 100%; justify-content: space-between; } }