/** * TASKMATE - Base Styles * ====================== * Reset und grundlegende Styles - Modernes Light Theme */ /* Google Fonts Import */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); /* Reset */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { font-family: var(--font-primary); font-size: var(--text-base); line-height: var(--leading-normal); color: var(--text-primary); background-color: var(--bg-main); min-height: 100vh; overflow-x: hidden; } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--scrollbar-bg); border-radius: var(--radius-full); } ::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: var(--radius-full); border: 2px solid var(--scrollbar-bg); } ::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-thumb-hover); } /* Firefox Scrollbar */ * { scrollbar-width: thin; scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-bg); } /* Selection */ ::selection { background: var(--primary); color: var(--text-inverse); } /* Links */ a { color: var(--primary); text-decoration: none; transition: color var(--transition-fast); } a:hover { color: var(--primary-hover); } /* Headings */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-primary); font-weight: var(--font-semibold); line-height: var(--leading-tight); color: var(--text-primary); letter-spacing: -0.025em; } h1 { font-size: var(--text-3xl); font-weight: var(--font-bold); } h2 { font-size: var(--text-2xl); } h3 { font-size: var(--text-xl); } h4 { font-size: var(--text-lg); } /* Paragraphs */ p { margin-bottom: var(--spacing-4); color: var(--text-secondary); } p:last-child { margin-bottom: 0; } /* Lists */ ul, ol { list-style: none; } /* Images */ img { max-width: 100%; height: auto; display: block; } /* Focus States */ :focus { outline: none; } :focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: var(--radius-sm); } /* Hidden */ .hidden { display: none !important; } /* Screen reader only */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Text utilities */ .text-primary { color: var(--text-primary); } .text-secondary { color: var(--text-secondary); } .text-tertiary { color: var(--text-tertiary); } .text-muted { color: var(--text-muted); } .text-accent { color: var(--primary); } .text-success { color: var(--success); } .text-warning { color: var(--warning); } .text-danger, .text-error { color: var(--error); } /* Font weights */ .font-normal { font-weight: var(--font-normal); } .font-medium { font-weight: var(--font-medium); } .font-semibold { font-weight: var(--font-semibold); } .font-bold { font-weight: var(--font-bold); } /* Icons */ .icon { width: 20px; height: 20px; flex-shrink: 0; color: currentColor; } .icon-sm { width: 16px; height: 16px; } .icon-lg { width: 24px; height: 24px; } .icon-xl { width: 32px; height: 32px; } /* Spinner */ .spinner { display: inline-block; width: 20px; height: 20px; border: 2px solid var(--border-default); border-top-color: var(--primary); border-radius: 50%; animation: spin 0.8s linear infinite; } .spinner-sm { width: 16px; height: 16px; border-width: 2px; } .spinner-lg { width: 32px; height: 32px; border-width: 3px; } @keyframes spin { to { transform: rotate(360deg); } } /* Skeleton Loading */ .skeleton { background: linear-gradient( 90deg, var(--bg-tertiary) 0%, var(--bg-hover) 50%, var(--bg-tertiary) 100% ); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; border-radius: var(--radius-md); } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Empty State */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: var(--spacing-8); color: var(--text-tertiary); } .empty-state .icon { width: 48px; height: 48px; margin-bottom: var(--spacing-4); color: var(--text-muted); } .empty-state h3 { font-size: var(--text-lg); font-weight: var(--font-medium); color: var(--text-secondary); margin-bottom: var(--spacing-2); } .empty-state p { font-size: var(--text-sm); color: var(--text-tertiary); max-width: 300px; } /* Divider */ .divider { height: 1px; background: var(--border-default); margin: var(--spacing-4) 0; } /* Keyboard shortcuts */ kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 var(--spacing-2); font-family: var(--font-mono); font-size: var(--text-xs); font-weight: var(--font-medium); color: var(--text-secondary); background: var(--bg-tertiary); border: 1px solid var(--border-default); border-radius: var(--radius-md); box-shadow: 0 1px 0 var(--border-dark); } /* Truncate */ .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Line clamp */ .line-clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } /* Flex utilities */ .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .gap-1 { gap: var(--spacing-1); } .gap-2 { gap: var(--spacing-2); } .gap-3 { gap: var(--spacing-3); } .gap-4 { gap: var(--spacing-4); } /* Cursor utilities */ .cursor-pointer { cursor: pointer; } .cursor-grab { cursor: grab; } .cursor-grabbing { cursor: grabbing; } /* Transition utility */ .transition { transition: all var(--transition-default); }