1
0
Files
test.br0tcraft.de/mini/style.css
2026-08-20 20:36:47 +02:00

1538 lines
30 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Grundlegendes Setup */
:root {
/* ===== AppFarben ===== */
--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;
}
/* ===== HeuteDashboard: 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);
}
/* TopZusammenfassung */
.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);
}
/* PlatzierungsViewer */
.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;
}
/* ===== AufgabenBereich ===== */
.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);
}
/* ===== FilterLeiste ===== */
.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);
}
/* ===== AblaufListe (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;
}
/* ===== WissensSeite: 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);
}
/* ===== WissensPanel (TabInhalt) ===== */
.wissen-panel {
display: none;
}
.wissen-panel.active {
display: block;
}
/* ===== WissensListe & AkkordeonEinträ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 WissensInhalte ===== */
.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 TopBar (1000) und BottomNav (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;
}