/* Portal – Basis-Layout (identisch zur E-Scooter-App, assets/style.css).
   Farb-Tokens aus der validierten dataviz-Referenzpalette (light/dark). */

:root {
    color-scheme: light;
    --surface-1:      #fcfcfb;
    --surface-2:      #f9f9f7;
    --surface-3:      #f0efec;
    --text-primary:   #0b0b0b;
    --text-secondary: #52514e;
    --text-muted:     #898781;
    --border:         rgba(11, 11, 11, 0.10);
    --gridline:       #e1e0d9;
    --series-1:       #2a78d6; /* blau – primär */
    --series-2:       #eb6834; /* orange */
    --series-3:       #1baf7a; /* aqua/grün */
    --series-4:       #eda100; /* gelb */
    --series-5:       #e87ba4; /* magenta */
    --series-6:       #008300; /* grün */
    --series-7:       #4a3aa7; /* violett */
    --series-8:       #e34948; /* rot */
    --good:           #0ca30c;
    --warning:        #a66a00;
    --critical:       #d03b3b;
    --radius: 10px;
    --font: system-ui, -apple-system, "Segoe UI", sans-serif;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        color-scheme: dark;
        --surface-1:      #1a1a19;
        --surface-2:      #0d0d0d;
        --surface-3:      #232322;
        --text-primary:   #ffffff;
        --text-secondary: #c3c2b7;
        --text-muted:     #898781;
        --border:         rgba(255, 255, 255, 0.10);
        --gridline:       #2c2c2a;
        --series-1:       #3987e5;
        --series-2:       #d95926;
        --series-3:       #199e70;
        --series-4:       #c98500;
        --series-5:       #d55181;
        --series-6:       #008300;
        --series-7:       #9085e9;
        --series-8:       #e66767;
        --good:           #0ca30c;
        --warning:        #eda100;
        --critical:       #e66767;
    }
}
:root[data-theme="dark"] {
    color-scheme: dark;
    --surface-1:      #1a1a19;
    --surface-2:      #0d0d0d;
    --surface-3:      #232322;
    --text-primary:   #ffffff;
    --text-secondary: #c3c2b7;
    --text-muted:     #898781;
    --border:         rgba(255, 255, 255, 0.10);
    --gridline:       #2c2c2a;
    --series-1:       #3987e5;
    --series-2:       #d95926;
    --series-3:       #199e70;
    --series-4:       #c98500;
    --series-5:       #d55181;
    --series-6:       #008300;
    --series-7:       #9085e9;
    --series-8:       #e66767;
    --good:           #0ca30c;
    --warning:        #eda100;
    --critical:       #e66767;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--font);
    background: var(--surface-2);
    color: var(--text-primary);
    -webkit-font-smoothing: antialiased;
}

a { color: var(--series-1); text-decoration: none; }
a:hover { text-decoration: underline; }

.app-header {
    background: var(--surface-1);
    border-bottom: 1px solid var(--border);
    padding: 12px 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    position: sticky;
    top: 0;
    z-index: 10;
}

.app-header .brand {
    font-weight: 700;
    font-size: 1.05rem;
    display: flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}

nav.main-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

nav.main-nav a, nav.main-nav button.nav-link {
    padding: 8px 12px;
    border-radius: 8px;
    color: var(--text-secondary);
    font-size: 0.92rem;
    font-weight: 500;
    background: none;
    border: none;
    cursor: pointer;
    font-family: var(--font);
}

nav.main-nav a:hover, nav.main-nav button.nav-link:hover {
    background: var(--surface-3);
    text-decoration: none;
}

nav.main-nav a.active {
    background: var(--series-1);
    color: #fff;
}

.container {
    max-width: 1080px;
    margin: 0 auto;
    padding: 20px 16px 60px;
}

h1 { font-size: 1.5rem; margin: 0 0 4px; }
h2 { font-size: 1.15rem; margin: 28px 0 12px; }
h3 { font-size: 1rem; margin: 0 0 8px; color: var(--text-secondary); }
p.subtitle { color: var(--text-secondary); margin: 0 0 20px; }

.card {
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px;
    margin-bottom: 16px;
}

.grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    margin-bottom: 20px;
}

.stat-tile {
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px;
}
.stat-tile .label {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-bottom: 6px;
}
.stat-tile .value {
    font-size: 1.6rem;
    font-weight: 700;
    font-variant-numeric: proportional-nums;
}
.stat-tile .sub {
    font-size: 0.8rem;
    color: var(--text-secondary);
    margin-top: 4px;
}
.stat-tile .value.accent-1 { color: var(--series-1); }
.stat-tile .value.accent-2 { color: var(--series-2); }
.stat-tile .value.accent-3 { color: var(--series-3); }

form .field {
    margin-bottom: 14px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
form label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-secondary);
}
form .hint {
    font-size: 0.78rem;
    color: var(--text-muted);
}
input, select, textarea {
    font-family: var(--font);
    font-size: 1rem;
    padding: 10px 12px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface-1);
    color: var(--text-primary);
    width: 100%;
}
input:focus, select:focus, textarea:focus {
    outline: 2px solid var(--series-1);
    outline-offset: 1px;
}
.row-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
@media (max-width: 520px) {
    .row-2 { grid-template-columns: 1fr; }
}

button, .btn {
    font-family: var(--font);
    font-size: 0.95rem;
    font-weight: 600;
    padding: 11px 18px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--series-1);
    color: #fff;
    cursor: pointer;
    display: inline-block;
}
button:hover, .btn:hover { opacity: 0.92; text-decoration: none; }
button.secondary, .btn.secondary {
    background: var(--surface-1);
    color: var(--text-primary);
}
button.danger, .btn.danger {
    background: var(--critical);
}
.actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 6px; }

table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}
th, td {
    text-align: left;
    padding: 9px 10px;
    border-bottom: 1px solid var(--gridline);
    white-space: nowrap;
}
th {
    color: var(--text-muted);
    font-weight: 600;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
.table-scroll { overflow-x: auto; }

/* Lässt ein Element (z. B. eine breite Tabelle mit vielen Spalten) aus dem
   zentrierten, auf 1080px begrenzten .container ausbrechen und die volle
   Fensterbreite nutzen - z. B. für die Ladehistorie, die sonst horizontal
   gescrollt werden müsste, um die Aktionen-Spalte (Bearbeiten/Löschen) zu
   erreichen. */
.full-bleed {
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding-left: 16px;
    padding-right: 16px;
    box-sizing: border-box;
}

.badge {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    background: var(--surface-3);
    color: var(--text-secondary);
}
.badge.good { background: rgba(12,163,12,0.14); color: var(--good); }
.badge.warning { background: rgba(234,161,0,0.16); color: var(--warning); }
.badge.critical { background: rgba(208,59,59,0.14); color: var(--critical); }
.badge.muted { background: var(--surface-3); color: var(--text-muted); }

.flash {
    padding: 12px 14px;
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 0.9rem;
}
.flash.success { background: rgba(12,163,12,0.12); color: var(--good); }
.flash.error { background: rgba(208,59,59,0.12); color: var(--critical); }

.login-wrap {
    max-width: 380px;
    margin: 10vh auto;
    padding: 0 16px;
}
.login-wrap .card { padding: 28px 24px; }

.chart-wrap {
    position: relative;
    width: 100%;
    height: 320px;
}
.chart-wrap.short { height: 240px; }

.legend-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
    margin: 8px 0 4px;
    font-size: 0.82rem;
    color: var(--text-secondary);
}
.legend-row .dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 3px;
    margin-right: 6px;
    vertical-align: middle;
}

.help-text {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
@media (max-width: 760px) {
    .two-col { grid-template-columns: 1fr; }
    .app-header { flex-wrap: wrap; }
}
