/* Grundlegendes Setup */ :root { /* ===== App‑Farben ===== */ --primary: #1b4332; /* dunkles Grün – Hauptfarbe */ --primary-light: #d8f3dc; /* sehr helles Grün – Flächen */ --primary-dark: #081c15; /* noch dunkleres Grün – Hover */ --primary-rgb: 27, 67, 50; /* RGB für rgba() */ --primary-soft: rgba(27, 67, 50, 0.12); --accent: #cb6b2f; /* warmes Orange – Akzente, Highlights */ --accent-rgb: 203, 107, 47; /* ===== Neutrale Farben ===== */ --bg: #f7fafc; /* Seitenhintergrund */ --surface: #ffffff; /* Kartenhintergrund */ --surface-glass: rgba(255, 255, 255, 0.78); --text: #1a1a2e; /* Haupttext */ --text-muted: #6b6b7b; /* Sekundärtext */ --text-inverse: #ffffff; --border: rgba(0, 0, 0, 0.07); --border-strong: rgba(0, 0, 0, 0.12); /* ===== Liturgische Farben ===== */ --liturgical-green: #4caf50; --liturgical-red: #f44336; --liturgical-purple: #9c27b0; --liturgical-white: #ffffff; --liturgical-gold: #ffd700; /* ===== Schatten ===== */ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06); --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.1); --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.15); /* ===== Radien ===== */ --radius-sm: 10px; --radius-md: 14px; --radius-lg: 18px; --radius-xl: 24px; /* ===== Typografie & Effekte ===== */ --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; --transition-fast: 0.18s cubic-bezier(0.4, 0, 0.2, 1); --transition-slow: 0.35s cubic-bezier(0.4, 0, 0.2, 1); /* ===== Safe Area ===== */ --safe-bottom: env(safe-area-inset-bottom, 0px); } * { box-sizing: border-box; margin: 0; padding: 0; } /* ===== BASIS ===== */ body { font-family: var(--font); background-color: var(--bg); /* Hier war #f7fafc hardcodiert! */ color: var(--text); /* Hier war #2d3748 hardcodiert! */ display: flex; flex-direction: column; min-height: 100vh; padding-bottom: 70px; transition: background-color var(--transition-slow), color var(--transition-slow); } /* OBERE LEISTE (Top Bar) */ .top-bar { background-color: var(--surface); /* Vorher #ffffff */ border-bottom: 1px solid var(--border); /* Vorher #e2e8f0 */ padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 1000; transition: background-color var(--transition-slow), border-color var(--transition-slow); } .header-icon { width: 36px; height: 36px; border-radius: 10px; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.35); transition: background-color var(--transition-slow), box-shadow var(--transition-slow); } .header-icon img { width: 25px; height: 30px; /*invert colors for dark icon on light background*/ filter: invert(100%); } .header-title { font-size: 0.9rem; font-weight: 700; letter-spacing: -0.01em; color: var(--text); } .header-subtitle { font-size: 0.7rem; color: var(--text-muted); font-weight: 500; letter-spacing: 0.02em; text-transform: uppercase; } .brand { display: flex; align-items: center; gap: 10px; } .app-name { font-size: 1.1rem; font-weight: 700; color: #1a365d; } .location { font-size: 0.75rem; color: #718096; } /* DESKTOP NAVIGATION (Standardmäßig ausgeblendet) */ /* DESKTOP NAVIGATION */ .desktop-nav { display: none; gap: 6px; align-items: center; position: absolute; left: 50%; transform: translateX(-50%); } .desktop-nav .tab-btn { display: inline-block; padding: 8px 18px; border-radius: var(--radius-sm); font-size: 0.9rem; font-weight: 500; color: var(--text-muted); text-decoration: none; background: transparent; border: none; cursor: pointer; transition: all var(--transition-fast); position: relative; letter-spacing: 0.01em; } .desktop-nav .tab-btn:hover { color: var(--text); background: rgba(0, 0, 0, 0.04); } .desktop-nav .tab-btn.active { color: var(--primary); background: var(--primary-soft); font-weight: 600; } /* Optional: Unterstrich-Effekt für aktive Tabs */ .desktop-nav .tab-btn.active::after { content: ''; position: absolute; bottom: 2px; left: 50%; transform: translateX(-50%); width: 20px; height: 3px; border-radius: 2px; background: var(--primary); } /* INHALTSBEREICH */ .content { flex: 1; padding: 20px; max-width: 900px; margin: 0 auto; width: 100%; } .tab-section { background: #ffffff; padding: 24px; border-radius: 12px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } .tab-section h2 { margin-bottom: 12px; color: #1a365d; } /* MOBILE BOTTOM NAVIGATION (Standardmäßig angezeigt) */ .bottom-nav { display: flex; position: fixed; bottom: 0; left: 0; width: 100%; background-color: var(--surface); /* Vorher #ffffff */ border-top: 1px solid var(--border); /* Vorher #e2e8f0 */ height: 60px; z-index: 1000; justify-content: space-around; align-items: center; transition: background-color var(--transition-slow), border-color var(--transition-slow); } .bottom-tab { display: flex; flex-direction: column; align-items: center; text-decoration: none; color: var(--text-muted); font-size: 0.7rem; flex: 1; transition: color var(--transition-fast); } .bottom-tab .icon { font-size: 1.25rem; margin-bottom: 2px; } .bottom-tab.active { color: var(--primary); font-weight: 600; } .settings-btn { background: none; border: none; cursor: pointer; padding: 6px; margin-left: 12px; border-radius: 50%; width: 40px; height: 40px; display: grid; place-items: center; transition: background var(--transition-fast); flex-shrink: 0; } .settings-btn:hover { background: rgba(0, 0, 0, 0.06); } .settings-btn img { width: 24px; height: 24px; filter: invert(0.4); } /* ===== Settings-Modal spezifische Anpassungen ===== */ .settings-modal .modal-icon { background: var(--primary-soft); color: var(--primary); } .settings-modal .modal-icon img { filter: none; /* Icon soll originalfarben bleiben */ } /* Einstellungs-Items */ .setting-item { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 12px 0; } .setting-label { display: flex; flex-direction: column; gap: 2px; } .setting-label span:first-child { font-weight: 600; color: var(--text); } /* Toggle Switch */ .switch { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; inset: 0; background-color: #ccc; transition: var(--transition-fast); border-radius: 26px; } .slider::before { content: ""; position: absolute; height: 20px; width: 20px; left: 3px; bottom: 3px; background-color: white; transition: var(--transition-fast); border-radius: 50%; } .switch input:checked+.slider { background-color: var(--primary); } .switch input:checked+.slider::before { transform: translateX(22px); } /* Trennlinie */ .settings-divider { border: none; border-top: 1px solid var(--border); margin: 8px 0 12px; } /* Info-Block */ .settings-info { display: grid; gap: 6px; font-size: 0.95rem; color: var(--text); } .settings-info a { color: var(--primary); text-decoration: none; font-weight: 500; } .settings-info a:hover { text-decoration: underline; } /* ===== Heute‑Dashboard: Allgemeine Struktur ===== */ .today-dashboard { display: flex; flex-direction: column; gap: 24px; } /* ===== Basis Karte (bereits vorhanden, aber angepasst) ===== */ .card { background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); padding: 20px; transition: box-shadow var(--transition-fast); } .card:hover { box-shadow: var(--shadow-md); } /* Top‑Zusammenfassung */ .today-summary-card { display: flex; flex-direction: column; gap: 16px; background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); padding: 20px; } .summary-date { display: flex; flex-direction: column; gap: 2px; } .summary-date #weekday { font-size: 1.4rem; font-weight: 700; color: var(--text); } .summary-date #date { font-size: 0.9rem; color: var(--text-muted); } .summary-details { display: flex; flex-wrap: wrap; gap: 16px; } .summary-item { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 140px; } .summary-item img { width: 30px; height: 30px; color: var(--primary); } .summary-item strong { display: block; font-size: 0.85rem; color: var(--text-muted); } .summary-item span { display: block; font-size: 1.2rem; font-weight: 600; color: var(--text); } /* Platzierungs‑Viewer */ .placement-card { display: flex; flex-direction: column; gap: 16px; background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); padding: 20px; } .placement-header { display: flex; justify-content: space-between; align-items: center; } .placement-header h3 { margin: 0; font-size: 1.3rem; color: var(--text); } .placement-toggle { display: flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font-size: 0.85rem; cursor: pointer; transition: all var(--transition-fast); } .placement-toggle.active { background: var(--primary); color: var(--text-inverse); border-color: var(--primary); } .placement-toggle img { width: 20px; height: 20px; } .placement-toggle.active img { width: 20px; height: 20px; filter: invert(100%); } .placement-stage { width: 100%; aspect-ratio: 14 / 9; background: rgba(0, 0, 0, 0.03); border-radius: var(--radius-sm); overflow: hidden; position: relative; } .placement-stage img { width: 100%; height: 100%; object-fit: contain; transition: opacity var(--transition-fast); position: absolute; top: 0; left: 0; } .placement-controls { display: flex; justify-content: center; align-items: center; gap: 16px; } .placement-controls button { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border); background: var(--surface); display: grid; place-items: center; cursor: pointer; transition: background var(--transition-fast); } .placement-controls button:hover { background: rgba(0, 0, 0, 0.05); } .placement-controls img { width: 20px; height: 20px; } #placement-label { font-weight: 600; font-size: 0.9rem; color: var(--text); min-width: 80px; text-align: center; } .placement-legend { display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; } .legend-item { display: flex; align-items: center; gap: 6px; font-size: 0.8rem; color: var(--text-muted); } /* ===== Liturgische Karte (Gewand) ===== */ .liturgical-card { display: flex; flex-direction: column; gap: 16px; } .liturgical-title-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; } .liturgical-title-row h3 { margin: 0; font-size: 22px; letter-spacing: -0.03em; color: var(--text); } .info-stack { display: grid; gap: 9px; } .info-line { display: flex; gap: 10px; align-items: flex-start; padding: 11px; border-radius: 13px; background: rgba(255, 255, 255, 0.62); border: 1px solid rgba(255, 255, 255, 0.65); } .info-line-icon { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; color: var(--text-inverse); background: var(--liturgical-green); flex: 0 0 auto; } .info-line-icon-green { background: var(--liturgical-green); } .info-line-icon-lilac { background: var(--liturgical-purple); } .info-line-icon-red { background: var(--liturgical-red); } .info-line-icon img { width: 25px; height: 25px; } .info-line strong { display: block; margin-bottom: 2px; font-size: 0.85rem; color: var(--text); } .info-line span { display: block; color: var(--text-muted); font-size: 0.75rem; } .card-header { display: flex; justify-content: space-between; align-items: center; } .card-header h3 { margin: 0; font-size: 20px; letter-spacing: -0.02em; color: var(--text); } .card-hint { font-size: 0.8rem; color: var(--text-muted); text-align: center; margin: 0; } /* ===== Aufgaben‑Bereich ===== */ .tasks-section { display: flex; flex-direction: column; gap: 16px; } .tasks-section h2 { font-size: 1.5rem; letter-spacing: -0.02em; color: var(--text); margin: 0; } .tasks-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; } @media (min-width: 480px) { .tasks-grid { gap: 16px; } } .task-card { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 18px; background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); cursor: pointer; transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast); text-align: left; font-family: inherit; } .task-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--border-strong); } .task-card:active { transform: translateY(0); box-shadow: var(--shadow-sm); } .task-card img { width: 28px; height: 28px; color: var(--primary); } .task-name { font-weight: 600; font-size: 1rem; color: var(--text); } .task-arrow { position: absolute; top: 12px; right: 12px; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: rgba(0, 0, 0, 0.04); transition: background var(--transition-fast); } .task-arrow img { width: 13px; height: 13px; } .task-card:hover .task-arrow { background: rgba(0, 0, 0, 0.08); } /* ===== Modal ===== */ .modal-overlay { position: fixed; inset: 0; z-index: 2067; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(0, 0, 0, 0.5); opacity: 0; pointer-events: none; transition: opacity var(--transition-slow); } .modal-overlay.active { opacity: 1; pointer-events: auto; } .modal-content { position: relative; width: 100%; max-width: 560px; max-height: 85vh; background: var(--surface); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); padding: 32px 32px 24px; display: flex; flex-direction: column; gap: 20px; transform: translateY(20px); transition: transform var(--transition-slow); } @media (min-width: 768px) { .modal-content { max-width: 640px; padding: 40px 40px 28px; gap: 24px; border-radius: calc(var(--radius-xl) * 1.2); } .modal-title { font-size: 1.75rem; } .modal-description { font-size: 1.05rem; } .modal-steps { max-height: 360px; font-size: 1rem; gap: 12px; padding-left: 24px; } .modal-icon { width: 64px; height: 64px; border-radius: 20px; } .modal-icon img { width: 36px; height: 36px; } .modal-close { width: 40px; height: 40px; } .modal-close img { width: 20px; height: 20px; } } /* Noch großzügiger auf großen Bildschirmen */ @media (min-width: 1200px) { .modal-content { max-width: 720px; padding: 48px 48px 32px; gap: 28px; } .modal-title { font-size: 2rem; } .modal-description { font-size: 1.1rem; } .modal-steps { max-height: 400px; font-size: 1.05rem; gap: 14px; } .modal-icon { width: 72px; height: 72px; border-radius: 24px; } .modal-icon img { width: 40px; height: 40px; } } .modal-close { top: 12px; right: 12px; margin-left: auto; width: 36px; height: 36px; border-radius: 50%; border: none; background: rgba(0, 0, 0, 0.04); display: grid; place-items: center; cursor: pointer; transition: background var(--transition-fast); flex-shrink: 0; z-index: 1; } .modal-header { flex-shrink: 0; display: flex; flex-direction: column; gap: 12px; } .modal-top-row { display: flex; justify-content: space-between; align-items: center; } .modal-close:hover { background: rgba(0, 0, 0, 0.08); } .modal-close img { width: 18px; height: 18px; } .modal-icon { width: 56px; height: 56px; border-radius: 16px; background: var(--primary-soft); display: grid; place-items: center; color: var(--primary); flex-shrink: 0; } .modal-icon img { width: 32px; height: 32px; } .task-icon { width: 20px; height: 20px; } .modal-title { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.02em; color: var(--text); margin: 0; flex-shrink: 0; } .modal-description { font-size: 0.95rem; color: var(--text-muted); line-height: 1.5; margin: 0; flex-shrink: 0; } .modal-steps { flex: 1; overflow-y: auto; max-height: 300px; margin: 0; padding-left: 20px; list-style: none; padding-right: 4px; display: grid; gap: 8px; font-size: 0.9rem; color: var(--text); } .modal-steps li { line-height: 1.5; } .modal-steps::-webkit-scrollbar { width: 6px; } .modal-steps::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.05); border-radius: 3px; } .modal-steps::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } .modal-steps::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.3); } .segmented-control { display: flex; background: var(--border); border-radius: var(--radius-sm); padding: 4px; margin-bottom: 16px; position: relative; border: 1px solid var(--border); } .segmented-btn { flex: 1; padding: 10px 12px; border-radius: 8px; border: none; background: transparent; font-size: 0.8rem; font-weight: 600; cursor: pointer; font-family: var(--font); color: var(--text-muted); min-height: 42px; transition: all var(--transition-fast); position: relative; z-index: 1; -webkit-user-select: none; user-select: none; } .segmented-btn.active { color: var(--text); background: var(--surface); box-shadow: var(--shadow-sm); font-weight: 700; } body.dark-mode .segmented-control { background: var(--surface-2); border-color: var(--border-strong); } body.dark-mode .segmented-btn.active { background: var(--surface-glass); color: var(--text); } /* ===== Filter‑Leiste ===== */ .filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 20px; } .filter-label { font-weight: 600; font-size: 0.85rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.04em; margin-right: 4px; } .filter-chips { display: flex; flex-wrap: wrap; gap: 8px; } .filter-chip { padding: 8px 16px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface-glass); color: var(--text); font-size: 0.85rem; cursor: pointer; transition: all var(--transition-fast); font-family: inherit; } .filter-chip:hover { border-color: var(--border-strong); background: var(--surface); } .filter-chip.active { background: var(--primary); color: var(--text-inverse); border-color: var(--primary); box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3); } /* ===== Ablauf‑Liste (Akkordeon) ===== */ .sequence-list { display: flex; flex-direction: column; gap: 10px; } .ablauf-item { background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); overflow: hidden; transition: box-shadow var(--transition-fast); } .ablauf-item:hover { box-shadow: var(--shadow-md); } .sequence-header { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 16px 20px; background: transparent; border: none; cursor: pointer; font-family: inherit; font-size: 1rem; font-weight: 600; color: var(--text); text-align: left; transition: background var(--transition-fast); } .sequence-header:hover { background: rgba(255, 255, 255, 0.4); } .sequence-title { flex: 1; } .ablauf-arrow { transition: transform var(--transition-fast); } .ablauf-item.active .ablauf-arrow { transform: rotate(180deg); } .sequence-content { max-height: 0; overflow: hidden; transition: max-height var(--transition-slow), padding var(--transition-slow); padding: 0 20px; color: var(--text-muted); font-size: 0.9rem; line-height: 1.5; } .ablauf-item.active .sequence-content { max-height: 500px; /* ausreichend für längere Texte */ padding: 0 20px 20px; } /* ===== Wissens‑Seite: Tabs ===== */ .wissen-tabs { display: flex; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; } .wissen-tab { padding: 10px 20px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface-glass); color: var(--text); font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all var(--transition-fast); font-family: inherit; } .wissen-tab:hover { background: var(--surface); border-color: var(--border-strong); } .wissen-tab.active { background: var(--primary); color: var(--text-inverse); border-color: var(--primary); box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3); } /* ===== Wissens‑Panel (Tab‑Inhalt) ===== */ .wissen-panel { display: none; } .wissen-panel.active { display: block; } /* ===== Wissens‑Liste & Akkordeon‑Einträge ===== */ .wissen-list { display: flex; flex-direction: column; gap: 10px; } .wissen-item { background: var(--surface-glass); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); overflow: hidden; transition: box-shadow var(--transition-fast); } .wissen-item:hover { box-shadow: var(--shadow-md); } .wissen-header { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 16px 20px; background: transparent; border: none; cursor: pointer; font-family: inherit; font-size: 1rem; font-weight: 600; color: var(--text); text-align: left; transition: background var(--transition-fast); } .wissen-header:hover { background: rgba(255, 255, 255, 0.4); } .wissen-arrow { transition: transform var(--transition-fast); width: 12px; height: 12px; } .wissen-item.active .wissen-arrow { transform: rotate(180deg); } .wissen-content { max-height: 0; overflow: hidden; transition: max-height var(--transition-slow), padding var(--transition-slow); padding: 0 20px; color: var(--text-muted); font-size: 0.9rem; line-height: 1.6; } .wissen-item.active .wissen-content { max-height: 1000px; /* großzügig für längere Texte */ padding: 0 20px 20px; } /* ===== Formatierte Dialoge innerhalb der Wissens‑Inhalte ===== */ .dialog-box { background: rgba(255, 255, 255, 0.6); border-left: 4px solid var(--primary); padding: 12px 16px; margin-top: 10px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; font-size: 0.9rem; line-height: 1.5; color: var(--text); } .dialog-box p { margin: 0 0 8px; } .dialog-box p:last-child { margin-bottom: 0; } .dialog-speaker { font-weight: 600; color: var(--primary); } /* ===== Zusätzliche Textformatierungen ===== */ .wissen-content strong { color: var(--text); } .wissen-content em { color: var(--text-muted); } /* ===== PDF-Download (Heute) ===== */ .pdf-download-card { display: flex; flex-direction: column; gap: 14px; padding: 16px 20px; } .pdf-download-content { display: flex; align-items: center; gap: 12px; } .pdf-download-content img { width: 24px; height: 24px; color: var(--primary); } .pdf-download-content strong { display: block; font-size: 1rem; color: var(--text); } .pdf-download-content span { font-size: 0.8rem; color: var(--text-muted); } /* ===== Download-Button (allgemein) ===== */ .btn-download { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 18px; border-radius: var(--radius-sm); background: var(--primary); color: var(--text-inverse); text-decoration: none; font-weight: 600; font-size: 0.9rem; transition: background var(--transition-fast), box-shadow var(--transition-fast); border: none; cursor: pointer; text-align: center; } .btn-download:hover { background: var(--primary-dark); box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3); } .btn-download img { width: 18px; height: 18px; filter: invert(100%); } /* ===== Download-Button in Ablauf-Seite ===== */ .ablauf-download-bar { position: fixed; left: 0; right: 0; z-index: 999; /* unterhalb der Top‑Bar (1000) und Bottom‑Nav (1000) */ padding: 12px 20px; background: var(--surface-glass); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border-top: 1px solid var(--border); box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05); display: flex; justify-content: center; } @media (min-width: 768px) { .ablauf-download-bar { bottom: 0; } } @media (max-width: 767px) { .ablauf-download-bar { bottom: calc(60px + env(safe-area-inset-bottom, 0px)); } } .btn-download-large { width: 100%; padding: 14px 20px; font-size: 1rem; border-radius: var(--radius-md); } @media (min-width: 768px) { body { padding-bottom: 0; } .header-title { font-size: 1.05rem; } .desktop-nav { display: flex; } .bottom-nav { display: none; } } body.dark-mode { --bg: #121415; --surface: #1a1d1e; --surface-glass: rgba(26, 29, 30, 0.85); --surface-2: #24282a; --text: #e2e8f0; --text-muted: #94a3b8; --text-inverse: #ffffff; /* Rahmen */ --border: rgba(255, 255, 255, 0.08); --border-strong: rgba(255, 255, 255, 0.15); --primary: #2d6a4f; --primary-soft: rgba(45, 106, 79, 0.25); --shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.4); --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.6); --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.8); } body.dark-mode .modal-content { background: var(--surface-2); border: 1px solid var(--border-strong); } body.dark-mode .modal-close { background: rgba(255, 255, 255, 0.08); } body.dark-mode .modal-close:hover { background: rgba(255, 255, 255, 0.15); } body.dark-mode .slider { background-color: #3d444d; } body.dark-mode .switch input:checked+.slider { background-color: var(--primary); } body.dark-mode .settings-info a { color: #4ade80; } body.dark-mode .info-line { background: rgba(255, 255, 255, 0.03); } body.dark-mode .filter-chip, body.dark-mode .placement-toggle { background: var(--surface-2); border-color: var(--border); } body.dark-mode .filter-chip.active, body.dark-mode .placement-toggle.active { background: var(--primary); border-color: var(--primary); color: var(--text-inverse); } body.dark-mode .placement-stage { background: rgba(255, 255, 255, 0.04); } body.dark-mode .task-card img, body.dark-mode .summary-item img, body.dark-mode .info-line-icon img, body.dark-mode .placement-toggle img, body.dark-mode .modal-icon img, body.dark-mode .pdf-download-content img, body.dark-mode .bottom-tab img, body.dark-mode .settings-btn img, body.dark-mode .placement-controls img, body.dark-mode .modal-close img, body.dark-mode .ablauf-arrow img, body.dark-mode .wissen-arrow img, body.dark-mode .legend-item img, body.dark-mode .filter-chip img, body.dark-mode .sequence-header img, body.dark-mode .wissen-header img, body.dark-mode .task-arrow img { filter: invert(0.9) brightness(1.2); } body.dark-mode .placement-toggle.active img, body.dark-mode .placement-stage img { filter: none !important; }