Dateien
TaskMate/frontend/css/responsive.css
Server Deploy 4bd57d653f UI-Redesign: AegisSight Design, Filter-Popover, Header-Umbau
- Session-Timeout auf 60 Minuten erhöht (ACCESS_TOKEN_EXPIRY + SESSION_TIMEOUT)
- AegisSight Light Theme: Gold-Akzent (#C8A851) statt Indigo
- Navigation-Tabs in eigene Zeile unter Header verschoben (HTML-Struktur)
- Filter-Bar durch kompaktes Popover mit Checkboxen ersetzt (Mehrfachauswahl)
- Archiv-Funktion repariert (lädt jetzt per API statt leerem Store)
- Filter-Bugs behoben: Reset-Button ID, Default-Werte, Ohne-Datum-Filter
- Mehrspalten-Layout Feature entfernt
- Online-Status vom Header an User-Avatar verschoben (grüner Punkt)
- Lupen-Icon entfernt
- CLAUDE.md: Docker-Deploy und CSS-Tricks Regeln aktualisiert

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:49:38 +01:00

557 Zeilen
8.9 KiB
CSS

/**
* TASKMATE - Responsive Styles
* ============================
* Mobile und Tablet Anpassungen
*/
/* ========================================
GLOBALE RESPONSIVE ANPASSUNGEN
======================================== */
/* Verhindere horizontales Scrollen */
html {
overflow-x: hidden;
width: 100%;
}
body {
overflow-x: hidden;
width: 100%;
margin: 0;
padding: 0;
}
/* App Container */
.app {
width: 100%;
max-width: 100%;
overflow-x: hidden;
position: relative;
}
/* Hauptcontainer */
.main {
width: 100%;
max-width: 100%;
overflow-x: hidden;
position: relative;
}
/* Alle Views */
.view {
width: 100%;
max-width: 100%;
overflow-x: hidden;
box-sizing: border-box;
}
/* Verhindere Überlauf bei allen Elementen */
* {
max-width: 100%;
}
/* Responsive Box-Sizing für alle Elemente */
* {
box-sizing: border-box;
}
/* ========================================
TABLET (max 1024px)
======================================== */
@media (max-width: 1024px) {
:root {
--column-width: 280px;
--column-min-width: 260px;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
.dashboard-row {
grid-template-columns: 1fr;
}
.shortcuts-grid {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
}
/* ========================================
MEDIUM SCREENS (max 1200px)
======================================== */
@media (max-width: 1200px) {
/* Header-Anpassungen für mittlere Bildschirme */
.header {
padding: var(--spacing-sm) var(--spacing-md);
}
.header-left {
gap: var(--spacing-sm);
}
.header-right {
gap: var(--spacing-sm);
}
/* Project Selector schmaler */
.project-select {
max-width: 200px;
}
/* Search Container schmaler */
.search-container {
max-width: 200px;
}
/* Navigation tabs - kompakter und zentriert bei mittleren Bildschirmen */
.view-tabs {
gap: var(--spacing-xs);
flex-wrap: nowrap;
justify-content: center;
}
.view-tab {
padding: 6px 8px;
font-size: 11px;
flex-shrink: 0;
}
/* Modals anpassen */
.modal {
margin: var(--spacing-md);
}
.modal-large {
max-width: calc(100vw - 32px);
}
/* Tabellen responsiv */
table {
display: block;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
}
/* ========================================
SMALL TABLET (max 768px)
======================================== */
@media (max-width: 768px) {
.header {
display: flex;
align-items: center;
height: 60px;
padding: 0 var(--spacing-sm);
gap: var(--spacing-xs);
overflow: hidden;
}
.header-left {
flex: 0 0 auto;
display: flex;
align-items: center;
gap: var(--spacing-xs);
}
.view-tabs-bar {
display: none; /* Navigation wird ins Mobile Menu verschoben */
}
.header-right {
flex: 0 0 auto;
}
.logo {
font-size: var(--text-base);
}
.project-selector {
display: none;
}
.search-container {
display: none;
}
/* Mobile Navigation wird über Hamburger Menu gesteuert */
.mobile-menu {
display: block;
}
/* Logo kleiner auf Mobile */
.logo {
font-size: var(--text-lg);
}
.filter-bar-actions {
display: none;
}
.view-board {
padding: var(--spacing-md);
gap: var(--spacing-md);
}
/* Mobile Board - One column at a time */
.board-container {
overflow-x: hidden !important;
scroll-snap-type: none !important;
width: 100%;
padding: 0;
}
.column {
width: 100%;
min-width: unset;
max-width: 100%;
max-height: calc(100vh - 200px);
margin: 0;
padding: var(--spacing-sm);
box-sizing: border-box;
}
.column.mobile-active {
display: flex !important;
}
.btn-add-column {
width: 100%;
min-width: unset;
min-height: 100px;
margin: 0;
box-sizing: border-box;
}
/* Hide scrollbar in mobile board */
.board-container::-webkit-scrollbar {
display: none;
}
/* Fix for views in mobile */
.view.active {
display: flex !important;
}
/* List view mobile adjustments */
.view-list.active {
padding: var(--spacing-sm);
}
.list-header {
flex-direction: column;
align-items: stretch;
gap: var(--spacing-md);
padding: var(--spacing-md);
}
.list-controls {
flex-direction: column;
align-items: stretch;
}
.list-view-toggle {
justify-content: center;
}
.list-sort {
margin-left: 0;
justify-content: space-between;
}
/* Table responsive */
.list-table-container {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.list-table {
min-width: 600px;
}
/* Calendar view mobile adjustments */
.view-calendar {
padding: var(--spacing-sm);
}
.calendar-header {
flex-direction: column;
gap: var(--spacing-md);
padding: var(--spacing-md);
}
.calendar-nav {
width: 100%;
justify-content: space-between;
}
.calendar-actions {
width: 100%;
justify-content: center;
}
.calendar-grid {
font-size: var(--text-xs);
}
.calendar-day-header {
padding: var(--spacing-sm);
}
.calendar-day {
min-height: 60px;
padding: var(--spacing-xs);
}
.calendar-task {
font-size: 9px;
padding: 1px 2px;
}
.modal {
width: calc(100% - 16px);
max-height: calc(100vh - 32px);
}
.modal-large {
max-width: none;
}
.add-link-form {
flex-direction: column;
}
.attachments-container {
grid-template-columns: repeat(2, 1fr);
}
.task-table th,
.task-table td {
padding: var(--spacing-sm);
}
.col-labels {
display: none;
}
.bulk-actions {
flex-wrap: wrap;
}
.calendar-day {
min-height: 80px;
}
.calendar-task {
font-size: 10px;
padding: 1px 4px;
}
}
/* ========================================
MOBILE (max 480px)
======================================== */
@media (max-width: 480px) {
.header-right {
gap: var(--spacing-xs);
}
.connection-status .status-text {
display: none;
}
.user-dropdown {
right: -50px;
}
.stats-grid {
grid-template-columns: 1fr;
}
.stat-card {
padding: var(--spacing-md);
}
.stat-icon {
width: 48px;
height: 48px;
}
.stat-icon svg {
width: 24px;
height: 24px;
}
.stat-value {
font-size: var(--text-xl);
}
.view-calendar {
padding: var(--spacing-sm);
}
.calendar-header {
flex-wrap: wrap;
gap: var(--spacing-sm);
}
.calendar-header h2 {
flex: 1;
min-width: auto;
font-size: var(--text-base);
}
.calendar-weekday {
padding: var(--spacing-xs);
font-size: var(--text-xs);
}
.calendar-day {
padding: var(--spacing-xs);
min-height: 60px;
}
.calendar-day-number {
width: 24px;
height: 24px;
font-size: var(--text-xs);
}
.calendar-day-tasks {
display: none;
}
.calendar-day.has-tasks::after {
content: '';
display: block;
width: 6px;
height: 6px;
background: var(--accent);
border-radius: 50%;
margin: var(--spacing-xs) auto 0;
}
.calendar-day.has-overdue::after {
background: var(--error);
}
.modal-footer {
flex-direction: column;
gap: var(--spacing-sm);
}
.modal-footer-left,
.modal-footer-right {
width: 100%;
justify-content: center;
}
.time-estimate-inputs {
flex-wrap: wrap;
}
.attachments-container {
grid-template-columns: 1fr;
}
.toast-container {
left: var(--spacing-md);
right: var(--spacing-md);
bottom: var(--spacing-md);
bottom: calc(var(--spacing-md) + env(safe-area-inset-bottom, 0px));
}
.toast {
width: 100%;
}
}
/* ========================================
REDUCED MOTION
======================================== */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* ========================================
PRINT STYLES
======================================== */
@media print {
.header,
.view-tabs-bar,
.btn-add-column,
.column-actions,
.btn-add-task,
.modal,
.modal-overlay,
.toast-container,
.onboarding-overlay {
display: none !important;
}
body {
background: white;
color: black;
}
.app {
display: block;
}
.board {
display: block;
}
.column {
display: block;
width: 100%;
max-height: none;
page-break-inside: avoid;
margin-bottom: 20px;
border: 1px solid #ccc;
}
.task-card {
page-break-inside: avoid;
border: 1px solid #ddd;
margin-bottom: 10px;
}
}
/* ========================================
HIGH CONTRAST
======================================== */
@media (prefers-contrast: high) {
:root {
--border-default: rgba(255, 255, 255, 0.3);
}
.light-mode {
--border-default: rgba(0, 0, 0, 0.3);
}
.task-card,
.column,
.modal,
.dropdown-menu {
border-width: 2px;
}
}