/* ══════════════════════════════════════════════════════════════
   BaCo SmartLab — Design System
   Ballerstaedt & Co. OHG CI + Labor-optimiert
   ══════════════════════════════════════════════════════════════ */

:root {
    --magenta: #E6007E;
    --magenta-light: #F5CCE3;
    --magenta-dark: #B8005F;
    --dark: #1A2332;
    --dark-light: #2A3442;
    --light-gray: #F0F4F8;
    --medium-gray: #5A6878;  /* Light-Mode: dunkler für Kontrast auf Weiß (6.3:1 WCAG AA) */
    --white: #FFFFFF;
    --green: #4CAF50;
    --green-light: #C8E6C9;
    --red: #E53935;
    --red-light: #FFCDD2;
    --orange: #FF9800;
    --orange-light: #FFE0B2;
    --yellow-input: #FFF9C4;
    --shadow-sm: 0 1px 3px rgba(26,35,50,0.08);
    --shadow-md: 0 4px 12px rgba(26,35,50,0.12);
    --shadow-lg: 0 8px 24px rgba(26,35,50,0.16);
    --radius: 8px;
    --radius-lg: 13px;
    --font: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-mono: 'IBM Plex Mono', monospace;
    /* Fibonacci spacing */
    --sp-2: 2px; --sp-3: 3px; --sp-5: 5px; --sp-8: 8px;
    --sp-13: 13px; --sp-21: 21px; --sp-34: 34px; --sp-55: 55px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
    font-family: var(--font);
    background: var(--light-gray);
    color: var(--dark);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

/* ── Layout ── */
.app-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--sp-13);
}

/* ── Header / Navbar ── */
.navbar {
    background: var(--dark);
    padding: var(--sp-13) var(--sp-21);
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: var(--shadow-md);
}

.navbar-brand {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    text-decoration: none;
    color: var(--white);
    font-weight: 700;
    font-size: 1.1rem;
}

.navbar-brand .accent { color: var(--magenta); }

.navbar-nav {
    display: flex;
    gap: var(--sp-5);
    list-style: none;
}

.navbar-nav a {
    color: var(--medium-gray);
    text-decoration: none;
    padding: var(--sp-5) var(--sp-13);
    border-radius: var(--radius);
    font-size: 0.9rem;
    transition: all 0.2s;
}

.navbar-nav a:hover, .navbar-nav a.active {
    color: var(--white);
    background: var(--dark-light);
}

.navbar-user {
    color: var(--medium-gray);
    font-size: 0.85rem;
    display: flex;
    align-items: center;
    gap: var(--sp-8);
}

.navbar-user a { color: var(--magenta); text-decoration: none; font-size: 0.85rem; }

/* ── Cards ── */
.card {
    background: var(--white);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: var(--sp-21);
    margin-bottom: var(--sp-21);
}

.card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--sp-13);
    padding-bottom: var(--sp-8);
    border-bottom: 2px solid var(--light-gray);
}

.card-header h2 {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--dark);
}

.card-header .badge {
    background: var(--magenta);
    color: var(--white);
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius);
    font-size: 0.75rem;
    font-weight: 600;
}

/* ── Stats Grid ── */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--sp-13);
    margin-bottom: var(--sp-21);
}

.stat-card {
    background: var(--white);
    border-radius: var(--radius-lg);
    padding: var(--sp-21);
    text-align: center;
    box-shadow: var(--shadow-sm);
    border-top: 3px solid var(--magenta);
}

.stat-card .number {
    font-size: 2rem;
    font-weight: 700;
    color: var(--dark);
    font-family: var(--font-mono);
}

.stat-card .label {
    font-size: 0.8rem;
    color: var(--medium-gray);
    margin-top: var(--sp-3);
}

/* ── Tables ── */
.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.data-table th {
    background: var(--dark);
    color: var(--white);
    padding: var(--sp-8) var(--sp-13);
    text-align: left;
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.data-table td {
    padding: var(--sp-8) var(--sp-13);
    border-bottom: 1px solid var(--light-gray);
}

.data-table tr:hover { background: var(--light-gray); }

.data-table a { color: var(--magenta); text-decoration: none; font-weight: 600; }
.data-table a:hover { text-decoration: underline; }

/* ── Ampel (Status) ── */
.ampel { display: inline-flex; align-items: center; gap: var(--sp-5); }
.ampel-dot {
    width: 10px; height: 10px; border-radius: 50%;
    display: inline-block;
}
.ampel-green { background: var(--green); }
.ampel-red { background: var(--red); }
.ampel-orange { background: var(--orange); }
.ampel-gray { background: var(--medium-gray); }

.status-badge {
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
}
.status-bestanden { background: var(--green-light); color: #2E7D32; }
.status-bedingt { background: var(--orange-light); color: #E65100; }
.status-nicht_bestanden { background: var(--red-light); color: #C62828; }
.status-offen { background: #E3F2FD; color: #1565C0; }
.status-laufend { background: var(--magenta-light); color: var(--magenta-dark); }
.status-abgeschlossen { background: var(--green-light); color: #2E7D32; }

/* ── Forms ── */
.form-group {
    margin-bottom: var(--sp-13);
}

.form-group label {
    display: block;
    font-weight: 600;
    font-size: 0.85rem;
    margin-bottom: var(--sp-3);
    color: var(--dark);
}

.form-group .hint {
    font-size: 0.75rem;
    color: var(--medium-gray);
    margin-top: var(--sp-2);
}

input[type="text"], input[type="number"], input[type="date"],
input[type="password"], input[type="file"], select, textarea {
    width: 100%;
    padding: 12px var(--sp-13);
    border: 1.5px solid #D0D8E0;
    border-radius: var(--radius);
    font-family: var(--font);
    font-size: 16px; /* WICHTIG: 16px verhindert iOS auto-zoom bei Fokus */
    background: var(--white);
    transition: border-color 0.2s;
    min-height: 44px; /* Apple HIG Touch-Target Minimum */
    -webkit-appearance: none; /* iOS: Native Styling entfernen fuer Konsistenz */
}

select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238896A4' stroke-width='2' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}

input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--magenta);
    box-shadow: 0 0 0 3px rgba(230, 0, 126, 0.1);
}

.input-yellow {
    background: var(--yellow-input) !important;
    border-color: #E6D666;
}

textarea { min-height: 80px; resize: vertical; }

.form-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--sp-13);
}

/* ── Buttons ── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--sp-5);
    padding: 12px var(--sp-21);
    border: none;
    border-radius: var(--radius);
    font-family: var(--font);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s;
    min-height: 44px; /* Apple HIG Touch-Target */
    -webkit-tap-highlight-color: transparent;
}

.btn-primary {
    background: var(--magenta);
    color: var(--white);
}
.btn-primary:hover { background: var(--magenta-dark); }

.btn-secondary {
    background: var(--dark);
    color: var(--white);
}
.btn-secondary:hover { background: var(--dark-light); }

.btn-outline {
    background: transparent;
    color: var(--dark);
    border: 1.5px solid #D0D8E0;
}
.btn-outline:hover { border-color: var(--magenta); color: var(--magenta); }

.btn-sm { padding: var(--sp-5) var(--sp-13); font-size: 0.8rem; }

.btn-success { background: var(--green); color: var(--white); }
.btn-danger { background: var(--red); color: var(--white); }

/* ── Alerts ── */
.alert {
    padding: var(--sp-13);
    border-radius: var(--radius);
    margin-bottom: var(--sp-13);
    font-size: 0.9rem;
}
.alert-success { background: var(--green-light); color: #2E7D32; border-left: 4px solid var(--green); }
.alert-error { background: var(--red-light); color: #C62828; border-left: 4px solid var(--red); }
.alert-warning { background: var(--orange-light); color: #E65100; border-left: 4px solid var(--orange); }

/* ── Klimaschrank Warning ── */
.climate-alert {
    background: var(--red-light);
    border: 2px solid var(--red);
    border-radius: var(--radius-lg);
    padding: var(--sp-13);
    margin-bottom: var(--sp-13);
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.85; }
}

.climate-alert h3 { color: var(--red); margin-bottom: var(--sp-5); }

/* ── Search ── */
.search-bar {
    display: flex;
    gap: var(--sp-8);
    margin-bottom: var(--sp-21);
}

.search-bar input {
    flex: 1;
    font-size: 1rem;
    padding: var(--sp-13);
}

.search-filters {
    display: flex;
    gap: var(--sp-8);
    flex-wrap: wrap;
    margin-bottom: var(--sp-13);
}

.search-filters select {
    width: auto;
    min-width: 150px;
}

/* ── Login ── */
.login-container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--dark) 0%, var(--dark-light) 100%);
}

.login-card {
    background: var(--white);
    border-radius: var(--radius-lg);
    padding: var(--sp-55);
    width: 100%;
    max-width: 400px;
    box-shadow: var(--shadow-lg);
    text-align: center;
}

.login-card h1 {
    font-size: 1.5rem;
    margin-bottom: var(--sp-5);
    color: var(--dark);
}

.login-card .subtitle {
    color: var(--medium-gray);
    font-size: 0.9rem;
    margin-bottom: var(--sp-34);
}

.login-card .brand { color: var(--magenta); font-weight: 700; }

.login-card input {
    text-align: center;
    font-size: 1.2rem;
    letter-spacing: 2px;
    font-family: var(--font-mono);
    padding: var(--sp-13);
}

.login-card .btn { width: 100%; justify-content: center; margin-top: var(--sp-13); }

.login-error {
    background: var(--red-light);
    color: var(--red);
    padding: var(--sp-8);
    border-radius: var(--radius);
    margin-bottom: var(--sp-13);
    font-size: 0.9rem;
}

/* ── Experiment Detail ── */
.detail-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: var(--sp-21);
}

.detail-header h1 { font-size: 1.5rem; }
.detail-header .exp-nr {
    color: var(--magenta);
    font-family: var(--font-mono);
    font-weight: 700;
}

.detail-meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--sp-13);
    margin-bottom: var(--sp-21);
}

.meta-item {
    padding: var(--sp-8);
    background: var(--light-gray);
    border-radius: var(--radius);
}
.meta-item .meta-label {
    font-size: 0.75rem;
    color: var(--medium-gray);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.meta-item .meta-value {
    font-weight: 600;
    margin-top: var(--sp-2);
}

/* ── Ampel-Statistik ── */
.ampel-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    gap: var(--sp-8);
    padding: var(--sp-13);
    background: var(--light-gray);
    border-radius: var(--radius);
    margin-bottom: var(--sp-13);
}

.ampel-stat {
    text-align: center;
}

.ampel-stat .value {
    font-size: 1.3rem;
    font-weight: 700;
    font-family: var(--font-mono);
}

.ampel-stat .label {
    font-size: 0.7rem;
    color: var(--medium-gray);
    text-transform: uppercase;
}

.ampel-stat.ok .value { color: var(--green); }
.ampel-stat.fail .value { color: var(--red); }
.ampel-stat.warn .value { color: var(--orange); }

/* ── SOP-Badges ── */
.sop-badge {
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius);
    font-size: 0.7rem;
    font-weight: 700;
    font-family: var(--font-mono);
}
.sop-001 { background: #E3F2FD; color: #1565C0; }
.sop-002 { background: #FFF3E0; color: #E65100; }
.sop-003 { background: #F3E5F5; color: #7B1FA2; }

/* ── Priority ── */
.priority-dringend { color: var(--red); font-weight: 700; }
.priority-normal { color: var(--dark); }
.priority-niedrig { color: var(--medium-gray); }

/* ── Action Bar ── */
.action-bar {
    display: flex;
    gap: var(--sp-8);
    flex-wrap: wrap;
    margin-bottom: var(--sp-21);
}

/* ── Tabs ── */
.tabs {
    display: flex;
    border-bottom: 2px solid var(--light-gray);
    margin-bottom: var(--sp-21);
    flex-wrap: wrap;
}
body.dark .tabs { border-bottom-color: rgba(255,255,255,0.1); }

.tab {
    padding: var(--sp-8) var(--sp-21);
    cursor: pointer;
    font-weight: 600;
    color: var(--medium-gray);
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    font-family: inherit;
    font-size: inherit;
    transition: all 0.2s;
}

.tab:hover { color: var(--dark); background: rgba(230,0,126,0.05); }
.tab.active { color: var(--magenta); border-bottom-color: var(--magenta); }
body.dark .tab { color: rgba(255,255,255,0.55); }
body.dark .tab:hover { color: rgba(255,255,255,0.9); background: rgba(230,0,126,0.1); }
body.dark .tab.active { color: var(--magenta); border-bottom-color: var(--magenta); background: transparent; }

/* ── Table Scroll Wrapper (Mobile) ── */
.table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin: 0 calc(-1 * var(--sp-13));
    padding: 0 var(--sp-13);
}

/* ── Hamburger Menu ── */
.menu-toggle {
    display: none;
    background: none;
    border: none;
    color: var(--white);
    font-size: 1.5rem;
    cursor: pointer;
    padding: var(--sp-8);
    min-height: 44px;
    min-width: 44px;
    -webkit-tap-highlight-color: transparent;
}

/* ── Safe Area (iPhone Notch / Dynamic Island) ── */
@supports (padding: env(safe-area-inset-top)) {
    .navbar {
        padding-top: max(var(--sp-13), env(safe-area-inset-top));
        padding-left: max(var(--sp-21), env(safe-area-inset-left));
        padding-right: max(var(--sp-21), env(safe-area-inset-right));
    }
    .app-container {
        padding-left: max(var(--sp-13), env(safe-area-inset-left));
        padding-right: max(var(--sp-13), env(safe-area-inset-right));
        padding-bottom: max(var(--sp-13), env(safe-area-inset-bottom));
    }
}

/* ── Responsive: Tablet (iPad) ── */
@media (max-width: 1024px) {
    .navbar-nav a { padding: var(--sp-5) var(--sp-8); font-size: 0.85rem; }
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── Responsive: Phone (iPhone) ── */
@media (max-width: 768px) {
    .menu-toggle { display: flex; align-items: center; justify-content: center; }

    .navbar {
        flex-wrap: wrap;
        gap: 0;
        padding: var(--sp-8);
    }

    .navbar-top {
        display: flex;
        width: 100%;
        justify-content: space-between;
        align-items: center;
    }

    .navbar-nav {
        display: none;
        width: 100%;
        flex-direction: column;
        gap: 0;
        padding-top: var(--sp-8);
    }

    .navbar-nav.open { display: flex; }

    .navbar-nav a {
        display: block;
        padding: 12px var(--sp-13);
        border-radius: 0;
        border-bottom: 1px solid var(--dark-light);
        min-height: 44px;
        display: flex;
        align-items: center;
    }

    .navbar-user {
        display: none;
        width: 100%;
        justify-content: space-between;
        padding-top: var(--sp-8);
        border-top: 1px solid var(--dark-light);
    }

    .navbar-user.open { display: flex; }

    .form-row { grid-template-columns: 1fr; }
    .detail-meta { grid-template-columns: 1fr; }
    .app-container { padding: var(--sp-5); }
    .card { padding: var(--sp-13); margin-bottom: var(--sp-13); }

    /* Tabellen horizontal scrollbar */
    .data-table { min-width: 600px; }

    .detail-header { flex-direction: column; gap: var(--sp-8); }
    .action-bar { flex-direction: column; }
    .action-bar .btn { width: 100%; }

    .search-bar { flex-direction: column; }
    .search-filters { flex-direction: column; }
    .search-filters select { width: 100%; }

    .ampel-stats { grid-template-columns: repeat(3, 1fr); }

    .login-card { padding: var(--sp-34); margin: var(--sp-13); }
}

/* ── Responsive: Very small phones ── */
@media (max-width: 375px) {
    .stats-grid { grid-template-columns: 1fr; }
    .ampel-stats { grid-template-columns: repeat(2, 1fr); }
}

/* ── Print ── */
@media print {
    .navbar, .action-bar, .btn, .no-print, .menu-toggle { display: none !important; }
    body { background: white; }
    .card { box-shadow: none; border: 1px solid #ddd; }
    .data-table { min-width: unset; }
}

/* ═══ DARK MODE ═══ */
body.dark {
    --dark: #0a0e14;
    --dark-light: #151b24;
    --light-gray: #1a2030;
    --medium-gray: #6b7a8d;
    --white: #151b24;
    --yellow-input: rgba(255,249,196,0.08);
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
    --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
    --shadow-lg: 0 8px 24px rgba(0,0,0,0.5);
    background: #0a0e14;
    color: rgba(255,255,255,0.9);
}
body.dark .navbar { background: #0d1117; border-color: rgba(255,255,255,0.06); }
body.dark .navbar-nav a { color: rgba(255,255,255,0.6); }
body.dark .navbar-nav a:hover, body.dark .navbar-nav a.active { color: #fff !important; background: rgba(230,0,126,0.2); }
body.dark .navbar-user { color: rgba(255,255,255,0.5); }
body.dark .navbar-user a { color: var(--magenta); }
body.dark .card { background: #151b24; border: 1px solid rgba(255,255,255,0.06); }
body.dark input:not([type="submit"]):not([type="button"]),
body.dark select, body.dark textarea {
    background: #0a0e14; color: rgba(255,255,255,0.9);
    border-color: rgba(255,255,255,0.1);
}
body.dark button, body.dark [type="submit"] {
    color: #fff;
}
body.dark input:focus, body.dark select:focus { border-color: var(--magenta); }
body.dark .input-yellow { background: rgba(255,249,196,0.06); }
body.dark .data-table th { background: #0d1117; color: rgba(255,255,255,0.7); }
body.dark .data-table td { border-color: rgba(255,255,255,0.06); color: rgba(255,255,255,0.85); }
body.dark .data-table tr:hover td { background: rgba(230,0,126,0.05); }
body.dark .hint { color: rgba(255,255,255,0.45); }
body.dark .form-group label { color: rgba(255,255,255,0.85); }
body.dark .card-header h2 { color: rgba(255,255,255,0.95); }
body.dark .card-header { border-color: rgba(255,255,255,0.08); }
body.dark select option { background: #151b24; color: rgba(255,255,255,0.9); }
body.dark .input-yellow { background: rgba(255,249,196,0.1) !important; color: #fff; border-color: rgba(255,249,196,0.25); }
body.dark .sop-badge { color: inherit; opacity: 1; }
body.dark .sop-badge.sop-001 { background: rgba(21,101,192,0.25); color: #64B5F6; }
body.dark .sop-badge.sop-002 { background: rgba(230,81,0,0.25); color: #FFB74D; }
body.dark .sop-badge.sop-003 { background: rgba(123,31,162,0.25); color: #CE93D8; }
body.dark .badge { border-color: rgba(255,255,255,0.1); }
body.dark a { color: var(--magenta); }
body.dark h1, body.dark h2, body.dark h3 { color: rgba(255,255,255,0.95); }
body.dark .stat-card .number { color: rgba(255,255,255,0.95); }
body.dark .stat-card .label { color: rgba(255,255,255,0.5); }
/* Buttons im Dark Mode: Text IMMER weiss, nie inherit von --white */
body.dark .btn { color: #fff !important; }
body.dark .btn-primary { background: var(--magenta); }
body.dark .btn-secondary { background: #2a3442; }
body.dark .btn-outline { background: transparent; color: rgba(255,255,255,0.8) !important; border-color: rgba(255,255,255,0.2); }
body.dark .btn-outline:hover { border-color: var(--magenta); color: var(--magenta) !important; }
body.dark .btn-success { background: var(--green); }
body.dark .btn-danger { background: var(--red); }
/* Status-Badges: Im Dark Mode eigene Farben mit garantiertem Kontrast */
body.dark .status-bestanden { background: rgba(76,175,80,0.2); color: #66BB6A; }
body.dark .status-bedingt { background: rgba(255,152,0,0.2); color: #FFB74D; }
body.dark .status-nicht_bestanden { background: rgba(229,57,53,0.2); color: #EF5350; }
body.dark .status-offen { background: rgba(21,101,192,0.2); color: #64B5F6; }
body.dark .status-laufend { background: rgba(230,0,126,0.2); color: #F48FB1; }
body.dark .status-abgeschlossen { background: rgba(76,175,80,0.2); color: #66BB6A; }
body.dark .priority-dringend { color: #EF5350; }
body.dark .priority-normal { color: rgba(255,255,255,0.7); }
body.dark .badge { background: var(--magenta); color: #fff !important; }
body.dark .card-header .badge { color: #fff !important; }
body.dark .card-header h2 a { color: var(--magenta); }
body.dark .sop-badge { opacity: 0.85; }
body.dark .alert { border-color: rgba(255,255,255,0.1); }
body.dark .meta-item { background: #1a2030; }
body.dark .meta-item .meta-label { color: rgba(255,255,255,0.4); }
body.dark .meta-item .meta-value { color: rgba(255,255,255,0.9); }
body.dark .ampel-stats { background: #1a2030; }
body.dark .login-container { background: linear-gradient(135deg, #0a0e14 0%, #151b24 100%); }
body.dark .login-card { background: #151b24; }
body.dark .login-card h1 { color: rgba(255,255,255,0.95); }
body.dark .login-card .subtitle { color: rgba(255,255,255,0.5); }
body.dark .login-error { background: rgba(229,57,53,0.15); }
/* Edit-Modal im Dark Mode */
body.dark .edit-row { background: #1a2030; }
body.dark .edit-row input, body.dark .edit-row select { background: #0d1117; }

/* === Hero-Banner (Dashboard-CTA, Simulator, Brain) — Light/Dark Dual === */
.hero-banner {
    position: relative;
    background: linear-gradient(135deg, #F7F9FC 0%, #E8EDF2 100%);
    color: var(--dark);
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
}
.hero-banner h1, .hero-banner h2, .hero-banner h3 { color: var(--dark); }
.hero-banner .hero-sub { color: var(--medium-gray); }
.hero-banner .hero-tag { color: var(--magenta); }
body.dark .hero-banner {
    background: linear-gradient(135deg, #0d1117 0%, #1A2332 100%);
    color: #fff;
    border-color: rgba(255,255,255,0.06);
}
body.dark .hero-banner h1, body.dark .hero-banner h2, body.dark .hero-banner h3 { color: #fff; }
body.dark .hero-banner .hero-sub { color: rgba(255,255,255,0.75); }
/* Hero-Banner mit Magenta-Variante (Brain) */
.hero-banner.hero-magenta {
    background: linear-gradient(135deg, #FCEEF5 0%, #F5CCE3 70%, #E8EDF2 100%);
}
body.dark .hero-banner.hero-magenta {
    background: linear-gradient(135deg, #0d1117 0%, #1A2332 70%, #2a1525 100%);
}

/* === QM-Cockpit (Siegelnahtfestigkeit) — Light/Dark Dual =========== */
.qm-cockpit-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: var(--sp-8);
    padding: var(--sp-13) var(--sp-21);
    background: #F0F4F8;              /* Light-Mode: hellgrau */
    border-bottom: 1px solid var(--border);
}
.qm-cockpit-stats .qm-stat { text-align: center; }
.qm-cockpit-stats .qm-stat .qm-value {
    font-family: var(--font-mono);
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--dark);              /* Light: schwarz */
}
.qm-cockpit-stats .qm-stat .qm-value.accent { color: var(--magenta); }
.qm-cockpit-stats .qm-stat .qm-label {
    font-size: 0.72rem;
    color: var(--medium-gray);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.qm-cockpit-patterns {
    padding: var(--sp-8) var(--sp-21);
    background: #E8EDF2;
    border-bottom: 1px solid var(--border);
    font-size: 0.85rem;
    display: flex;
    gap: var(--sp-13);
    align-items: center;
    flex-wrap: wrap;
    color: var(--dark);
}
.qm-cockpit-patterns .qm-pattern-label {
    color: var(--medium-gray);
    text-transform: uppercase;
    font-size: 0.72rem;
    letter-spacing: 0.5px;
}
/* Dark-Mode Overrides */
body.dark .qm-cockpit-stats { background: rgba(13,17,23,0.4); }
body.dark .qm-cockpit-stats .qm-stat .qm-value { color: #fff; }
body.dark .qm-cockpit-patterns { background: rgba(13,17,23,0.25); color: rgba(255,255,255,0.9); }

/* Chart-Legende (unter Siegelnaht- & Kraft-Weg-Diagramm) */
.chart-legend-box {
    padding: var(--sp-13) var(--sp-21);
    background: #F0F4F8;
    border-top: 1px solid var(--border);
    font-size: 0.88rem;
    line-height: 1.6;
    color: var(--dark);
}
body.dark .chart-legend-box { background: rgba(13,17,23,0.4); color: rgba(255,255,255,0.9); }
body.dark .chart-legend-box strong { color: rgba(255,255,255,0.95); }

/* === Erklär-Boxen ("Was zeigt das?") =========================== */
/* Damit Außenstehende (Vertrieb, Mgmt, Hilfskräfte) Lab-Inhalte sofort verstehen */
.explain-box {
    padding: var(--sp-13) var(--sp-21);
    background: rgba(13, 17, 23, 0.04);
    border-top: 1px solid var(--border);
    font-size: 0.88rem;
    line-height: 1.6;
}
.explain-legend {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-21);
    align-items: center;
    margin-bottom: var(--sp-8);
}
.explain-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--dark-gray);
}
.explain-icon {
    font-size: 1.1rem;
    line-height: 1;
}
.explain-swatch {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
}
.explain-line {
    display: inline-block;
    width: 22px;
    height: 0;
}
.explain-text {
    color: var(--medium-gray);
    font-size: 0.84rem;
}
.explain-text strong:first-child {
    color: var(--magenta);
    text-transform: uppercase;
    font-size: 0.78rem;
    letter-spacing: 0.5px;
    margin-right: 6px;
}
body.dark .explain-box { background: rgba(13, 17, 23, 0.4); border-top-color: rgba(255,255,255,0.08); }
body.dark .explain-item { color: rgba(255,255,255,0.85); }
body.dark .explain-text { color: rgba(255,255,255,0.6); }

/* ── Dark-Mode Fix für Alert-Boxen — Kontrast-Problem (2026-04-15) ── */
body.dark .climate-alert {
    background: rgba(248, 81, 73, 0.12);
    border-color: rgba(248, 81, 73, 0.55);
    color: #fecaca;
}
body.dark .climate-alert h3 { color: #ff8a80; }
body.dark .climate-alert p { color: rgba(255, 220, 220, 0.92); }
body.dark .climate-alert .data-table th { background: rgba(0,0,0,0.45); color: rgba(255,255,255,0.85); }
body.dark .climate-alert .data-table td { color: rgba(255,255,255,0.92); border-color: rgba(255,255,255,0.08); }
body.dark .climate-alert .data-table a { color: #ff8a80; }

body.dark .alert-error,
body.dark .alert-danger { background: rgba(248,81,73,0.14); color: #ffb4b4; border-left-color: #f85149; }
body.dark .alert-warning { background: rgba(212,167,44,0.14); color: #ffd870; border-left-color: #d29922; }
body.dark .alert-success { background: rgba(63,185,80,0.14); color: #b7f0c2; border-left-color: #3fb950; }
body.dark .alert-info { background: rgba(100,165,246,0.14); color: #b3d4ff; border-left-color: #58a6ff; }
