/* ------------------------------------------------------------------
   Kundenadmin - Gestaltung
   Bewusst ohne Framework: eine Datei, keine externen Abrufe, damit die
   Content-Security-Policy eng bleiben kann.
   ------------------------------------------------------------------ */

:root {
    --grund: #f4f6f8;
    --flaeche: #ffffff;
    --rand: #d8dee4;
    --text: #1b2733;
    --text-leise: #5c6b7a;
    --akzent: #1f5f8b;
    --akzent-dunkel: #17496b;
    --gut: #1f7a4d;
    --gut-grund: #e6f4ec;
    --warn: #8a6100;
    --warn-grund: #fdf3dd;
    --schlecht: #a32020;
    --schlecht-grund: #fbeaea;
    --neutral: #5c6b7a;
    --neutral-grund: #eceff2;
    --radius: 6px;
    --schatten: 0 1px 2px rgba(27, 39, 51, .08), 0 2px 8px rgba(27, 39, 51, .06);
}

@media (prefers-color-scheme: dark) {
    :root {
        --grund: #151a20;
        --flaeche: #1d242c;
        --rand: #333d48;
        --text: #e6ebf0;
        --text-leise: #9aa8b6;
        --akzent: #5aa7dc;
        --akzent-dunkel: #7cbde9;
        --gut: #6ed49e;
        --gut-grund: #163023;
        --warn: #e8bc5a;
        --warn-grund: #33290f;
        --schlecht: #f0888a;
        --schlecht-grund: #351a1c;
        --neutral: #9aa8b6;
        --neutral-grund: #262f38;
    }
}

* { box-sizing: border-box; }

body {
    margin: 0;
    background: var(--grund);
    color: var(--text);
    font: 16px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

a { color: var(--akzent); }

.skip-link {
    position: absolute;
    left: -9999px;
}
.skip-link:focus {
    left: 1rem;
    top: 1rem;
    z-index: 10;
    background: var(--flaeche);
    padding: .5rem .75rem;
    border-radius: var(--radius);
}

/* --- Kopf und Navigation --- */

.kopf {
    background: var(--flaeche);
    border-bottom: 1px solid var(--rand);
}

.kopf-innen {
    max-width: 1180px;
    margin: 0 auto;
    padding: .75rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.marke {
    font-weight: 700;
    font-size: 1.05rem;
    text-decoration: none;
    color: var(--text);
}

.hauptnavigation {
    display: flex;
    gap: 1.1rem;
    flex-wrap: wrap;
    flex: 1;
}

.hauptnavigation a {
    text-decoration: none;
    color: var(--text-leise);
    padding: .25rem 0;
    border-bottom: 2px solid transparent;
}

.hauptnavigation a:hover,
.hauptnavigation a:focus {
    color: var(--text);
    border-bottom-color: var(--akzent);
}

.konto {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.konto form { margin: 0; }

/* --- Sprachwahl --- */

/*
 * Nur fuer Screenreader: das Element bleibt im Baum, verschwindet aber
 * aus der Darstellung. clip-path statt display:none, damit
 * Vorlesewerkzeuge es weiterhin ankuendigen.
 */
.sr-nur {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    white-space: nowrap;
    clip-path: inset(50%);
    border: 0;
}

.sprachwahl {
    display: inline-flex;
    align-items: stretch;
    margin: 0;
    border: 1px solid var(--rand);
    border-radius: var(--radius);
    overflow: hidden;
}

.sprachwahl-knopf,
.sprachwahl-aktiv {
    font: inherit;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .04em;
    line-height: 1;
    padding: .4rem .55rem;
    border: 0;
    display: inline-flex;
    align-items: center;
}

.sprachwahl-knopf {
    background: transparent;
    color: var(--text-leise);
    cursor: pointer;
}

.sprachwahl-knopf:hover,
.sprachwahl-knopf:focus-visible {
    background: var(--neutral-grund);
    color: var(--text);
}

.sprachwahl-aktiv {
    background: var(--akzent);
    color: #ffffff;
    cursor: default;
}

/* Auf der Anmeldeseite steht die Wahl allein unter dem Formular. */
.karte-mittig .sprachwahl {
    margin: 1.25rem auto 0;
    display: flex;
    width: max-content;
}

/* --- Inhalt --- */

.inhalt {
    max-width: 1180px;
    margin: 0 auto;
    padding: 1.5rem 1.25rem 3rem;
}

.seite-schmal {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 1.25rem;
}

.karte {
    background: var(--flaeche);
    border: 1px solid var(--rand);
    border-radius: var(--radius);
    box-shadow: var(--schatten);
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.25rem;
}

.karte-mittig {
    width: 100%;
    max-width: 24rem;
}

h1 { font-size: 1.5rem; margin: 0 0 1rem; }
h2 { font-size: 1.15rem; margin: 1.75rem 0 .75rem; }
h2:first-child { margin-top: 0; }

.kopfzeile {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.kopfzeile h1 { margin: 0; }

/* --- Kennzahlen --- */

.kennzahlen {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: .85rem;
    margin-bottom: 1.25rem;
}

.kennzahl {
    background: var(--flaeche);
    border: 1px solid var(--rand);
    border-radius: var(--radius);
    padding: .9rem 1rem;
}

.kennzahl .wert {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.kennzahl .bezeichnung {
    color: var(--text-leise);
    font-size: .85rem;
}

.kennzahl-gut .wert { color: var(--gut); }
.kennzahl-warn .wert { color: var(--warn); }
.kennzahl-schlecht .wert { color: var(--schlecht); }

/* --- Tabellen --- */

.tabellenrahmen {
    /* Breite Tabellen scrollen fuer sich, die Seite bleibt ruhig. */
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: collapse;
    font-size: .94rem;
}

th, td {
    text-align: left;
    padding: .6rem .7rem;
    border-bottom: 1px solid var(--rand);
    vertical-align: top;
}

th {
    font-size: .8rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--text-leise);
    white-space: nowrap;
}

tbody tr:last-child td { border-bottom: 0; }

td.zahl { text-align: right; font-variant-numeric: tabular-nums; }
td.knopfspalte { white-space: nowrap; text-align: right; }

.leer {
    color: var(--text-leise);
    padding: 1.5rem 0;
    text-align: center;
}

/* --- Statusmarken --- */

.marke-status {
    display: inline-block;
    padding: .12rem .5rem;
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 600;
    white-space: nowrap;
}

.status-up { background: var(--gut-grund); color: var(--gut); }
.status-degraded { background: var(--warn-grund); color: var(--warn); }
.status-down { background: var(--schlecht-grund); color: var(--schlecht); }
.status-unknown { background: var(--neutral-grund); color: var(--neutral); }

/* --- Formulare --- */

.feld { margin-bottom: 1rem; }

.feld label {
    display: block;
    font-weight: 600;
    margin-bottom: .3rem;
    font-size: .92rem;
}

.feld input[type=text],
.feld input[type=email],
.feld input[type=password],
.feld input[type=number],
.feld input[type=url],
.feld select,
.feld textarea {
    width: 100%;
    padding: .5rem .6rem;
    border: 1px solid var(--rand);
    border-radius: var(--radius);
    background: var(--flaeche);
    color: var(--text);
    font: inherit;
}

.feld input:focus,
.feld select:focus,
.feld textarea:focus {
    outline: 2px solid var(--akzent);
    outline-offset: 1px;
    border-color: var(--akzent);
}

.feld-hinweis {
    color: var(--text-leise);
    font-size: .85rem;
    margin: .3rem 0 0;
}

.feldfehler {
    color: var(--schlecht);
    font-size: .87rem;
    margin: .3rem 0 0;
}

.feld-schalter {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.feld-schalter label { margin: 0; font-weight: 400; }

.feldgruppe {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: 0 1rem;
}

fieldset {
    border: 1px solid var(--rand);
    border-radius: var(--radius);
    padding: 1rem 1.1rem .3rem;
    margin: 0 0 1.25rem;
}

legend {
    font-weight: 600;
    padding: 0 .4rem;
}

.adresszeile {
    display: flex;
    align-items: center;
    gap: .4rem;
}

.adresszeile input { flex: 1; }
.adresszeile .at { color: var(--text-leise); }

/* --- Knoepfe --- */

.knopf {
    display: inline-block;
    padding: .45rem .9rem;
    border: 1px solid var(--akzent);
    border-radius: var(--radius);
    background: var(--akzent);
    color: #fff;
    font: inherit;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.knopf:hover { background: var(--akzent-dunkel); border-color: var(--akzent-dunkel); }

.knopf-voll { width: 100%; }

.knopf-zweit {
    background: transparent;
    color: var(--akzent);
}

.knopf-zweit:hover { background: var(--neutral-grund); }

.knopf-schlicht {
    background: transparent;
    border-color: transparent;
    color: var(--text-leise);
    font-weight: 400;
    padding: .25rem .4rem;
}

.knopf-schlicht:hover { background: var(--neutral-grund); color: var(--text); }

.knopf-gefahr {
    background: var(--schlecht);
    border-color: var(--schlecht);
    color: #fff;
}

.knopf-klein { padding: .25rem .6rem; font-size: .87rem; }

.knopfreihe {
    display: flex;
    gap: .6rem;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 1.25rem;
}

/* --- Meldungen --- */

.meldungen { margin-bottom: 1.25rem; }

.meldung {
    padding: .7rem .9rem;
    border-radius: var(--radius);
    border: 1px solid;
    margin-bottom: .6rem;
}

.meldung-success { background: var(--gut-grund); border-color: var(--gut); color: var(--gut); }
.meldung-error { background: var(--schlecht-grund); border-color: var(--schlecht); color: var(--schlecht); }
.meldung-info { background: var(--neutral-grund); border-color: var(--rand); color: var(--text); }

.hinweis {
    color: var(--text-leise);
    font-size: .9rem;
}

.warnkasten {
    background: var(--warn-grund);
    border: 1px solid var(--warn);
    color: var(--warn);
    border-radius: var(--radius);
    padding: .8rem 1rem;
    margin-bottom: 1.25rem;
}

/* --- Verlaufsbalken --- */

.verlauf {
    display: flex;
    gap: 2px;
    align-items: flex-end;
    height: 2.5rem;
    margin: .5rem 0 1rem;
}

.verlauf span {
    flex: 1;
    min-width: 3px;
    border-radius: 1px;
    background: var(--neutral-grund);
}

.verlauf .v-up { background: var(--gut); height: 100%; }
.verlauf .v-degraded { background: var(--warn); height: 70%; }
.verlauf .v-down { background: var(--schlecht); height: 45%; }
.verlauf .v-unknown { background: var(--neutral); height: 25%; }

.balken {
    height: .5rem;
    background: var(--neutral-grund);
    border-radius: 999px;
    overflow: hidden;
}

.balken > div { height: 100%; background: var(--gut); }
.balken.warn > div { background: var(--warn); }
.balken.schlecht > div { background: var(--schlecht); }

/* --- Fuss --- */

.fuss {
    border-top: 1px solid var(--rand);
    padding: 1.25rem;
    text-align: center;
    color: var(--text-leise);
    font-size: .87rem;
}

.fehler-status {
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--text-leise);
    margin: 0;
}

.leiste {
    display: flex;
    gap: .75rem;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.leiste form { display: flex; gap: .5rem; align-items: center; margin: 0; }

code {
    background: var(--neutral-grund);
    padding: .1rem .3rem;
    border-radius: 3px;
    font-size: .9em;
}

.blaettern {
    display: flex;
    gap: .5rem;
    align-items: center;
    justify-content: center;
    margin-top: 1.25rem;
}

/* --- Bereitstehendes Zugangsdatenblatt --- */

.zugangsblatt {
    display: flex;
    gap: 1.25rem;
    align-items: center;
    flex-wrap: wrap;
    justify-content: space-between;
    background: var(--gut-grund);
    border: 1px solid var(--gut);
    border-left-width: 4px;
    border-radius: var(--radius);
    padding: 1rem 1.15rem;
    margin-bottom: 1.25rem;
}

.zugangsblatt-text { flex: 1 1 22rem; }
.zugangsblatt-text strong { color: var(--gut); }
.zugangsblatt-text p { margin: .35rem 0 0; font-size: .9rem; }

.zugangsblatt-knoepfe {
    display: flex;
    gap: .6rem;
    align-items: center;
    flex-wrap: wrap;
}

.zugangsblatt-knoepfe form { margin: 0; }
