Dieser Commit ist enthalten in:
hendrik_gebhardt@gmx.de
2026-01-06 21:49:26 +00:00
committet von Server Deploy
Ursprung 623bbdf5dd
Commit 7d67557be4
34 geänderte Dateien mit 21416 neuen und 2367 gelöschten Zeilen

283
frontend/css/contacts.css Normale Datei
Datei anzeigen

@ -0,0 +1,283 @@
/**
* 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;
}
}