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

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background: #f5f5f0;
    color: #1a1a1a;
    font-size: 15px;
    line-height: 1.5;
    min-height: 100vh;
    margin: 0;
    padding-bottom: 60px;
    position: relative;
}

.container {
    max-width: 860px;
    margin: 0 auto;
    padding: 32px 20px;
}

/* Header */
header {
    background: #fff;
    border-bottom: 1px solid #e0e0e0;
    padding: 0 20px;
}
header .inner {
    max-width: 860px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 52px;
}
header .brand {
    font-weight: 600;
    font-size: 16px;
    color: #1a1a1a;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 8px;
}
header .brand svg {
    height: 20px;
    width: auto;
}
.logo-svg { display: inline-block; }
header .brand span { color: #888; font-weight: 400; }
header nav a {
    color: #555;
    text-decoration: none;
    margin-left: 20px;
    font-size: 14px;
}
header nav a:hover { color: #1a1a1a; }

/* Cards */
.card {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 24px;
    margin-bottom: 20px;
}
.card h2 {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid #f0f0f0;
}
.card h3 {
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 12px;
    color: #444;
}

/* Forms */
.form-row {
    margin-bottom: 14px;
}
.form-row label {
    display: block;
    font-size: 13px;
    color: #555;
    margin-bottom: 4px;
    font-weight: 500;
}
.form-row input[type=text],
.form-row input[type=password],
.form-row input[type=url],
.form-row input[type=number],
.form-row select,
.form-row textarea {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #d0d0d0;
    border-radius: 5px;
    font-size: 14px;
    font-family: inherit;
    background: #fafafa;
    color: #1a1a1a;
    transition: border-color 0.15s;
}
.form-row input:focus,
.form-row select:focus,
.form-row textarea:focus {
    outline: none;
    border-color: #888;
    background: #fff;
}
.form-row small {
    display: block;
    color: #999;
    font-size: 12px;
    margin-top: 3px;
}

/* Buttons */
.btn {
    display: inline-block;
    padding: 8px 18px;
    border-radius: 5px;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    border: 1px solid transparent;
    text-decoration: none;
    transition: background 0.15s, opacity 0.15s;
}
.btn-primary {
    background: #2c2826;
    color: #fff;
    border-color: #1a1a1a;
}
.btn-primary:hover { background: #333; }
.btn-secondary {
    background: #fff;
    color: #333;
    border-color: #d0d0d0;
}
.btn-secondary:hover { background: #f5f5f5; }
.btn-danger {
    background: #fff;
    color: #c0392b;
    border-color: #e0b0b0;
}
.btn-danger:hover { background: #fff5f5; }
.btn-sm { padding: 5px 12px; font-size: 13px; }

/* Alerts */
.alert {
    padding: 10px 14px;
    border-radius: 5px;
    font-size: 14px;
    margin-bottom: 16px;
}
.alert-error   { background: #fff0f0; border: 1px solid #f5c6c6; color: #c0392b; }
.alert-success { background: #f0fff4; border: 1px solid #b6e8c4; color: #217a3c; }
.alert-info    { background: #f0f4ff; border: 1px solid #c4d0f0; color: #2c4a8a; }

/* Calendar list */
.cal-list { list-style: none; }
.cal-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid #f0f0f0;
    font-size: 14px;
    gap: 10px;
}
.cal-list li:last-child { border-bottom: none; }
.cal-list .cal-name { font-weight: 500; flex: 1; }
.cal-list .cal-url {
    color: #999;
    font-size: 12px;
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cal-dot {
    width: 10px; height: 10px;
    border-radius: 50%;
    background: #888;
    flex-shrink: 0;
}

/* Group list */
.group-item {
    border: 1px solid #e8e8e8;
    border-radius: 6px;
    padding: 14px;
    margin-bottom: 10px;
}
.group-item h4 { font-size: 14px; font-weight: 600; margin-bottom: 6px; }
.group-item .group-cals { font-size: 13px; color: #666; margin-bottom: 8px; }
.group-item .group-schedule { font-size: 12px; color: #999; }

/* Status badge */
.badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 500;
}
.badge-ok      { background: #e8f5ec; color: #2a7a40; }
.badge-pending { background: #fff8e8; color: #8a6200; }
.badge-error   { background: #fff0f0; color: #c0392b; }

/* Grid helpers */
.row { display: flex; gap: 16px; flex-wrap: wrap; }
.col { flex: 1; min-width: 200px; }

/* Setup page center */
.setup-wrap {
    min-height: 80vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
.setup-box {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 10px;
    padding: 36px 32px;
    width: 100%;
    max-width: 440px;
}
.setup-box h1 { font-size: 20px; font-weight: 600; margin-bottom: 6px; }
.setup-box .sub { color: #777; font-size: 14px; margin-bottom: 24px; }
.setup-box .step {
    background: #f8f8f8;
    border-radius: 6px;
    padding: 12px 14px;
    font-size: 13px;
    color: #555;
    margin-bottom: 20px;
    line-height: 1.6;
}
.setup-box .step a { color: #1a1a1a; font-weight: 500; }

/* Send now button area */
.send-area {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.last-sent { font-size: 13px; color: #999; }

hr { border: none; border-top: 1px solid #f0f0f0; margin: 20px 0; }

/* Mobile nav toggle */
.nav-toggle {
    display: none; background: none; border: none; font-size: 22px;
    cursor: pointer; color: #333; padding: 4px 8px;
}

@media (max-width: 700px) {
    header .inner { flex-wrap: wrap; height: auto; padding: 10px 0; }
    .nav-toggle { display: block; }
    header nav {
        display: none; width: 100%; padding-top: 8px;
        border-top: 1px solid #f0f0f0; margin-top: 8px;
    }
    header nav.open { display: flex; flex-wrap: wrap; gap: 4px; }
    header nav a { margin-left: 0; padding: 6px 12px; font-size: 13px; }
    .container { padding: 20px 14px; }
    .row { flex-direction: column; gap: 8px; }
    .col { min-width: 100%; }
    .setup-box { padding: 24px 18px; }
}

/* Footer */
.site-footer {
    text-align: center; padding: 20px; font-size: 12px; color: #aaa;
    position: absolute; bottom: 0; left: 0; right: 0;
}
.site-footer a { color: #999; text-decoration: none; }
.site-footer a:hover { color: #555; }

/* Cookie banner */
.cookie-banner {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1000;
    background: #2c2826; color: #ccc; padding: 12px 20px;
    display: flex; align-items: center; justify-content: center; gap: 16px;
    font-size: 13px;
}
.cookie-banner a { color: #fff; }
.cookie-banner button {
    background: #fff; color: #1a1a1a; border: none; border-radius: 4px;
    padding: 6px 16px; font-size: 13px; font-weight: 500; cursor: pointer;
}

/* Dark mode toggle */
.darkmode-toggle {
    background: none; border: 1px solid #ccc; border-radius: 4px;
    cursor: pointer; font-size: 14px; padding: 3px 8px;
    color: #999; margin-left: 10px; vertical-align: middle;
    line-height: 1; transition: border-color 0.15s, color 0.15s;
}
.darkmode-toggle:hover { border-color: #888; color: #555; }

/* ── Dark mode ────────────────────────────────────────────────────────── */

/* Prevent flash: html.dark sets bg before body.dark is available */
html.dark { background: #2c2826; }

body.dark {
    background: #2c2826;
    color: #e0e0e0;
}

body.dark header {
    background: #2c2826;
    border-bottom-color: #443f3c;
}
body.dark header .brand { color: #e0e0e0; }
body.dark header .brand span { color: #888; }
body.dark header nav a { color: #aaa; }
body.dark header nav a:hover { color: #e0e0e0; }
body.dark .nav-toggle { color: #ccc; }

body.dark .card {
    background: #363230;
    border-color: #443f3c;
}
body.dark .card h2 {
    border-bottom-color: #443f3c;
    color: #e0e0e0;
}
body.dark .card h3 { color: #bbb; }

body.dark .form-row label { color: #bbb; }
body.dark .form-row input[type=text],
body.dark .form-row input[type=password],
body.dark .form-row input[type=url],
body.dark .form-row input[type=number],
body.dark .form-row select,
body.dark .form-row textarea {
    background: #1e1e1e;
    border-color: #444;
    color: #e0e0e0;
}
body.dark .form-row input:focus,
body.dark .form-row select:focus,
body.dark .form-row textarea:focus {
    border-color: #777;
    background: #363230;
}
body.dark .form-row small { color: #777; }

body.dark .btn-primary {
    background: #e0e0e0;
    color: #1a1a1a;
    border-color: #e0e0e0;
}
body.dark .btn-primary:hover { background: #ccc; }
body.dark .btn-secondary {
    background: #363230;
    color: #ccc;
    border-color: #444;
}
body.dark .btn-secondary:hover { background: #333; }
body.dark .btn-danger {
    background: #363230;
    color: #e74c3c;
    border-color: #5a2020;
}
body.dark .btn-danger:hover { background: #2e1a1a; }

body.dark .alert-error   { background: #2e1a1a; border-color: #5a2020; color: #e74c3c; }
body.dark .alert-success { background: #1a2e1a; border-color: #205a20; color: #4caf50; }
body.dark .alert-info    { background: #1a1a2e; border-color: #20205a; color: #64b5f6; }

body.dark .cal-list li { border-bottom-color: #443f3c; }
body.dark .cal-list .cal-url { color: #777; }

body.dark .group-item {
    border-color: #443f3c;
    background: #363230;
}
body.dark .group-item .group-cals { color: #999; }
body.dark .group-item .group-schedule { color: #777; }

body.dark .badge-ok      { background: #1a2e1a; color: #4caf50; }
body.dark .badge-pending { background: #2e2a1a; color: #e0a800; }
body.dark .badge-error   { background: #2e1a1a; color: #e74c3c; }

body.dark .setup-box {
    background: #363230;
    border-color: #443f3c;
}
body.dark .setup-box .sub { color: #999; }
body.dark .setup-box .step {
    background: #1e1e1e;
    color: #bbb;
}
body.dark .setup-box .step a { color: #e0e0e0; }

body.dark .last-sent { color: #777; }
body.dark hr { border-top-color: #443f3c; }

body.dark .site-footer { color: #666; }
body.dark .site-footer a { color: #777; }
body.dark .site-footer a:hover { color: #aaa; }

body.dark .darkmode-toggle { border-color: #665e5a; color: #999; }
body.dark .darkmode-toggle:hover { border-color: #888; color: #ccc; }

body.dark .logo-svg path { fill: #f0e8e0; }

body.dark .cookie-banner { background: #363230; color: #ccc; }
body.dark .cookie-banner button { background: #e0e0e0; color: #1a1a1a; }

/* Dark mode: all white-background elements → warm dark */
body.dark .setting-card,
body.dark .send-bar,
body.dark .stat-card,
body.dark .sys-card,
body.dark .pricing-card,
body.dark .book-card,
body.dark .feed-chip,
body.dark .wx-current,
body.dark .search-bar,
body.dark .source-tab,
body.dark .filter-tag,
body.dark .faq-item,
body.dark details,
body.dark .help-nav a,
body.dark .quota-bar,
body.dark .upload-card,
body.dark .game-card {
    background: #363230 !important;
    border-color: #443f3c !important;
    color: #e0d8d0;
}
body.dark .setting-card .setting-title,
body.dark .stat-card .stat-num,
body.dark .sys-card .sys-value,
body.dark .pricing-name,
body.dark .pricing-price,
body.dark .book-title,
body.dark .faq-item summary {
    color: #f0e8e0;
}
body.dark .setting-card .setting-desc,
body.dark .stat-card .stat-label,
body.dark .sys-card .sys-label,
body.dark .pricing-desc,
body.dark .book-author,
body.dark .book-meta,
body.dark .results-info {
    color: #998f85;
}
body.dark .source-tabs { border-bottom: 2px solid #443f3c !important; }
body.dark .source-tab { color: #998f85; background: transparent !important; }
body.dark .source-tab.active { color: #f0e8e0; border-bottom-color: #f0e8e0; background: transparent !important; }
body.dark .source-tab:hover { color: #e0d8d0; }
body.dark .filter-tag { color: #998f85; border-color: #554f4a; }
body.dark .filter-tag:hover,
body.dark .filter-tag.active { background: #f0e8e0 !important; color: #2c2826 !important; }
body.dark .pricing-card.featured { border-color: #f0e8e0 !important; }
body.dark .pricing-features li { color: #c0b8b0; }
body.dark .section-title { color: #c0b8b0; }
body.dark .help-nav { background: #2c2826 !important; border-bottom-color: #443f3c !important; }
body.dark .help-nav a { background: transparent !important; border-color: #554f4a !important; color: #998f85 !important; }
body.dark .help-nav a:hover { background: #443f3c !important; color: #f0e8e0 !important; }
body.dark .note { background: #3a3220; border-left-color: #8a7a00; color: #d0c080; }
body.dark .user-table th { color: #998f85; border-bottom-color: #443f3c; }
body.dark .user-table td { border-bottom-color: #3a3634; }
body.dark .user-table tr:hover td { background: #3a3634; }

body.dark .game-card { background: #6e635e !important; color: #f0e8e0; }
body.dark .game-card .game-title { color: #fff; }
body.dark .game-card .game-desc { color: #d0c8c0; }

/* Dark mode: catch-all for ANY white-background element */
body.dark [style*="background:#fff"],
body.dark [style*="background: #fff"],
body.dark [style*="background:#f5f5f5"],
body.dark [style*="background: #f5f5f5"],
body.dark [style*="background:#fafafa"],
body.dark [style*="background: #fafafa"] {
    background: #363230 !important;
    border-color: #443f3c !important;
    color: #e0d8d0 !important;
}

/* Dark mode: page-specific <style> overrides for calendars, news, weather */
body.dark .group-item,
body.dark .wizard,
body.dark .add-source-btn,
body.dark .cal-chip,
body.dark .multi-content,
body.dark .multi-modal .multi-content {
    background: #363230 !important;
    border-color: #443f3c !important;
    color: #e0d8d0 !important;
}
body.dark .wizard .wizard-tabs { border-bottom-color: #443f3c; }
body.dark .wizard .wizard-tab { color: #998f85; }
body.dark .wizard .wizard-tab.active { color: #f0e8e0; border-bottom-color: #f0e8e0; }
body.dark .group-item .group-name { color: #f0e8e0; }
body.dark .g-card { background: #363230 !important; border-color: #443f3c !important; color: #e0d8d0 !important; }
body.dark .g-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.2); }
body.dark .g-card-title { color: #f0e8e0; }
body.dark .g-card-preview { border-color: #443f3c !important; background: #2c2826 !important; }
body.dark .g-card-meta { color: #998f85; }
body.dark .group-item .group-cals,
body.dark .group-item .group-schedule { color: #998f85; }
body.dark .cal-chip { background: #443f3c !important; border-color: #554f4a !important; }
body.dark .cal-chip button { color: #998f85; }
body.dark .add-source-btn { border-style: dashed !important; border-color: #554f4a !important; color: #998f85 !important; }

/* Hilfe-Karte unter Account */
body.dark .section a[href*="help"] { background: #363230 !important; border-color: #443f3c !important; color: #e0d8d0 !important; }
body.dark .section a[href*="help"] div { color: #e0d8d0 !important; }
body.dark .section a[href*="help"] div[style*="color:#888"] { color: #998f85 !important; }

/* DRM Marginalia */
body.dark #drmAside .drm-intro { color: #998f85; }
body.dark #drmAside .drm-intro strong { color: #e0d8d0; }
body.dark #drmAside .drm-card { background: #363230; border-color: #443f3c; color: #e0d8d0; }
body.dark #drmAside .drm-card:hover { border-color: #665e5a; }
body.dark #drmAside .drm-name { color: #f0e8e0; }
body.dark #drmAside .drm-desc { color: #998f85; }

/* Help aside on calendars */
body.dark #helpAside a { background: #363230 !important; border-color: #443f3c !important; color: #e0d8d0 !important; }
body.dark #helpAside .help-title { color: #f0e8e0; }
body.dark #helpAside .help-desc { color: #998f85; }

/* Send-bar (news) */
body.dark .send-bar { background: #363230 !important; border-color: #443f3c !important; }
body.dark .sendbar-section { background: transparent !important; }
body.dark .sendbar-section-title { color: #c0b8b0; background: transparent !important; }
body.dark .sendbar-chips { background: transparent !important; border-top: 1px solid #443f3c !important; }
body.dark .sendbar-settings { background: transparent !important; }
body.dark .sendbar-settings-row { background: transparent !important; border-top: 1px solid #443f3c !important; }
body.dark .sendbar-footer { color: #998f85; }
body.dark .sendbar-footer strong { color: #c0b8b0; }
body.dark .setting-field select { background: #363230 !important; border-color: #443f3c !important; color: #e0d8d0 !important; }
body.dark .setting-field select:focus { border-color: #665e5a !important; }
body.dark .setting-field label { color: #998f85 !important; }

/* Weather settings */
body.dark .wx-temp { color: #f0e8e0; }
body.dark .wx-label { color: #998f85; }
body.dark .wx-details { color: #776e66; }

/* Calendar group cards / edit wizard */
body.dark .group-item .group-name,
body.dark .group-item strong { color: #f0e8e0; }
body.dark .wizard-step { background: #363230; border-color: #443f3c; color: #e0d8d0; }
body.dark .wizard-step.active { background: #443f3c; border-color: #f0e8e0; color: #f0e8e0; }
body.dark .btn-secondary { background: #443f3c !important; border-color: #554f4a !important; color: #e0d8d0 !important; }
body.dark .btn-secondary:hover { background: #554f4a !important; }
body.dark .btn-primary { background: #e0d8d0 !important; color: #2c2826 !important; border-color: #e0d8d0 !important; }
body.dark .btn-primary:hover { background: #f0e8e0 !important; }

/* Discover tabs (news) */
body.dark .discover-pane button,
body.dark .discover-desc { color: #998f85; }
body.dark .discover-pane button { background: #363230 !important; border-color: #443f3c !important; color: #e0d8d0 !important; }
body.dark .discover-pane button div[style*="font-weight:600"] { color: #f0e8e0 !important; }
body.dark .discover-pane button div[style*="color:#999"] { color: #998f85 !important; }

/* Misc inline white backgrounds */
body.dark .add-inline { color: #e0d8d0; }
body.dark .log-line { color: #998f85; border-bottom-color: #3a3634; }
body.dark .error-msg { color: #e74c3c; }

body.dark a { color: #d0c8c0; }
body.dark a:hover { color: #f0e8e0; }

body.dark h1, body.dark h2, body.dark h3 { color: #f0e8e0; }

/* Dark mode text: cream tone */
body.dark { color: #e0d8d0; }
body.dark p, body.dark li { color: #d0c8c0; }

/* Mobile: dark mode nav border */
@media (max-width: 700px) {
    body.dark header nav { border-top-color: #443f3c; }
}
