/* ==========================================================================
   METEOR 2 - Designsystem
   Markenblau #26336a von weger.com. Technische, datenblattartige Optik:
   feste Raster, duenne Linien, Monospace fuer Zahlen und Einheiten.
   Wird NACH bootstrap.css geladen und ueberschreibt dessen Optik gezielt.
   ========================================================================== */

:root {
    /* Marke */
    --mt-blue:        #26336a;
    --mt-blue-deep:   #192144;
    --mt-blue-ink:    #0f1530;
    --mt-blue-bright: #3d54ac;
    --mt-blue-glow:   #5b7cf0;

    /* Flaechen */
    --mt-paper:       #ffffff;
    --mt-bg:          #eef1f7;
    --mt-bg-grid:     #e2e7f1;
    --mt-line:        #ccd4e6;
    --mt-line-soft:   #e6eaf3;

    /* Text */
    --mt-ink:         #131a2e;
    --mt-ink-2:       #4a5673;
    --mt-ink-3:       #7b869f;

    /* Signale */
    --mt-ok:          #1f7a54;
    --mt-warn:        #b3541e;
    --mt-alert:       #a11f3c;

    --mt-mono: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono",
               Consolas, "Liberation Mono", monospace;
    --mt-sans: Montserrat, "Segoe UI", system-ui, sans-serif;

    --mt-r: 2px;                       /* fast eckig - technischer */
    --mt-shadow: 0 1px 2px rgba(15, 21, 48, .06), 0 8px 24px rgba(15, 21, 48, .06);
}

/* --------------------------------------------------------------- Grundlage */

body {
    font-family: var(--mt-sans);
    font-size: 15px;
    line-height: 1.6;
    color: var(--mt-ink);
    background-color: var(--mt-bg);
    background-image:
        linear-gradient(var(--mt-bg-grid) 1px, transparent 1px),
        linear-gradient(90deg, var(--mt-bg-grid) 1px, transparent 1px);
    background-size: 32px 32px;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5 {
    font-family: var(--mt-sans);
    color: var(--mt-ink);
    letter-spacing: -.01em;
    font-weight: 600;
    margin: 0 0 .6em;
}
h1 { font-size: 34px; }
h2 { font-size: 25px; }
h3 { font-size: 20px; letter-spacing: -.01em; margin: 0 0 .6em; color: var(--mt-ink); }
h4 { font-size: 16px; }

a       { color: var(--mt-blue); text-decoration: none; }
a:hover { color: var(--mt-blue-bright); text-decoration: underline; }

code, kbd, samp, .mt-mono { font-family: var(--mt-mono); }

kbd {
    background: var(--mt-blue-ink); color: #fff; border-radius: var(--mt-r);
    padding: 2px 6px; font-size: 12px; box-shadow: none;
}

/* Kleine technische Beschriftung ueber Feldern und Bloecken */
.mt-eyebrow {
    font-family: var(--mt-mono);
    font-size: 11px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--mt-ink-3);
    margin: 0 0 6px;
    display: block;
}

/* ----------------------------------------------------------------- Navbar */

.navbar {
    font-family: var(--mt-sans);
    background: var(--mt-blue-ink);
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    margin-bottom: 0;
    min-height: 56px;
    opacity: 1;
    font-size: 12px !important;
    letter-spacing: .12em;
    border-radius: 0;
}
.navbar-default { background: var(--mt-blue-ink); }

.navbar .navbar-brand {
    font-family: var(--mt-mono);
    font-weight: 700;
    font-size: 15px;
    letter-spacing: .18em;
    color: #fff !important;
    height: auto;
    padding: 18px 20px;
}
.navbar .navbar-brand::before {
    content: "";
    display: inline-block;
    width: 9px; height: 9px;
    margin-right: 10px;
    background: var(--mt-blue-glow);
    box-shadow: 0 0 10px var(--mt-blue-glow);
}
.navbar li > a {
    color: rgba(255, 255, 255, .68) !important;
    text-transform: uppercase;
    padding: 20px 14px;
}
.navbar li > a:hover,
.navbar li > a:focus { color: #fff !important; background: rgba(255, 255, 255, .06) !important; }
.navbar-nav > li.active > a {
    color: #fff !important;
    background: transparent !important;
    box-shadow: inset 0 -2px 0 var(--mt-blue-glow);
}
.navbar-default .navbar-toggle { border-color: rgba(255, 255, 255, .3); }
.navbar-default .navbar-toggle .icon-bar { background-color: #fff; }
.navbar-default .navbar-collapse { border-color: rgba(255, 255, 255, .08); }
.dropdown-menu {
    background: var(--mt-blue-deep);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: var(--mt-r);
    padding: 4px;
}
.dropdown-menu li a { color: rgba(255, 255, 255, .8) !important; padding: 8px 14px; }
.dropdown-menu li a:hover { background: var(--mt-blue) !important; color: #fff !important; }
.dropdown-menu form button {
    background: none; border: 0; color: rgba(255, 255, 255, .8);
    padding: 8px 14px; width: 100%; text-align: left;
}

/* Sprachumschalter in der Navigation */
.mt-lang form { display: flex; gap: 4px; padding: 12px 14px; margin: 0; }
.mt-lang__btn {
    font-family: var(--mt-mono); font-size: 11px; letter-spacing: .1em;
    padding: 5px 9px; cursor: pointer;
    color: rgba(255, 255, 255, .6);
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: var(--mt-r);
    transition: all .12s;
}
.mt-lang__btn:hover { color: #fff; border-color: rgba(255, 255, 255, .45); }
.mt-lang__btn.is-active {
    color: #fff; background: var(--mt-blue); border-color: var(--mt-blue-bright);
    cursor: default;
}
@media (max-width: 767px) {
    .mt-lang form { padding: 10px 14px; }
}

/* --------------------------------------------------------------- Kopfzone */

.mt-hero {
    background: var(--mt-blue-ink);
    background-image:
        radial-gradient(900px 320px at 12% -20%, rgba(61, 84, 172, .55), transparent 60%),
        linear-gradient(180deg, var(--mt-blue-deep), var(--mt-blue-ink));
    color: #fff;
    padding: 54px 0 46px;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.mt-hero h1 { color: #fff; margin-bottom: 10px; font-size: 38px; }
.mt-hero p  { color: rgba(255, 255, 255, .72); max-width: 62ch; margin: 0; }
.mt-hero .mt-eyebrow { color: var(--mt-blue-glow); }

/* Kennzahlenleiste unter dem Kopf */
.mt-specs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1px;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .12);
    margin-top: 30px;
}
.mt-spec { background: var(--mt-blue-ink); padding: 14px 16px; }
.mt-spec dt {
    font-family: var(--mt-mono); font-size: 10px; letter-spacing: .16em;
    text-transform: uppercase; color: rgba(255, 255, 255, .5); font-weight: 400;
}
.mt-spec dd {
    font-family: var(--mt-mono); font-size: 19px; color: #fff; margin: 4px 0 0;
}

/* ------------------------------------------------------------------ Karte */

.mt-card {
    background: var(--mt-paper);
    border: 1px solid var(--mt-line);
    border-radius: var(--mt-r);
    box-shadow: var(--mt-shadow);
    margin-bottom: 22px;
}
.mt-card__head {
    display: flex; align-items: baseline; gap: 14px;
    padding: 16px 22px;
    border-bottom: 1px solid var(--mt-line-soft);
    background: linear-gradient(180deg, #fbfcfe, #f4f6fb);
}
.mt-card__idx {
    font-family: var(--mt-mono); font-size: 12px; font-weight: 700;
    color: #fff; background: var(--mt-blue);
    padding: 3px 8px; border-radius: var(--mt-r); letter-spacing: .06em;
}
.mt-card__title { font-size: 16px; font-weight: 600; margin: 0; }
.mt-card__hint  { font-size: 13px; color: var(--mt-ink-3); margin-left: auto; }
.mt-card__body  { padding: 22px; }

/* ------------------------------------------------------------- Datenblatt */

.mt-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 18px 26px;
}
.mt-grid--wide { grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); }

.mt-field { display: flex; flex-direction: column; min-width: 0; }
.mt-field > label,
.mt-field .mt-label {
    font-size: 13px; font-weight: 600; color: var(--mt-ink);
    margin: 0 0 6px; display: flex; align-items: center; gap: 8px;
}
.mt-field .mt-unit {
    font-family: var(--mt-mono); font-size: 11px; font-weight: 400;
    color: var(--mt-ink-3);
    border: 1px solid var(--mt-line); border-radius: var(--mt-r);
    padding: 1px 6px; background: #f7f9fc; white-space: nowrap;
}
.mt-field .mt-help { font-size: 12px; color: var(--mt-ink-3); margin-top: 6px; }

/* Alle Formularelemente innerhalb eines Datenblatts */
.mt-sheet input[type="text"],
.mt-sheet input[type="number"],
.mt-sheet input[type="email"],
.mt-sheet input[type="password"],
.mt-sheet select,
.mt-sheet textarea {
    width: 100%;
    font-family: var(--mt-mono);
    font-size: 15px;
    color: var(--mt-ink);
    background: #fff;
    border: 1px solid var(--mt-line);
    border-bottom-width: 2px;
    border-radius: var(--mt-r);
    padding: 9px 12px;
    transition: border-color .12s, box-shadow .12s, background .12s;
    box-shadow: none;
    height: auto;
}
.mt-sheet textarea { font-family: var(--mt-sans); min-height: 90px; resize: vertical; }
.mt-sheet select   { appearance: none; -webkit-appearance: none; padding-right: 34px;
    background-image: linear-gradient(45deg, transparent 50%, var(--mt-ink-2) 50%),
                      linear-gradient(135deg, var(--mt-ink-2) 50%, transparent 50%);
    background-position: calc(100% - 17px) 55%, calc(100% - 12px) 55%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}
.mt-sheet input:hover,
.mt-sheet select:hover,
.mt-sheet textarea:hover { border-color: #aab6d2; }

.mt-sheet input:focus,
.mt-sheet select:focus,
.mt-sheet textarea:focus {
    outline: none;
    border-color: var(--mt-blue);
    border-bottom-color: var(--mt-blue-bright);
    box-shadow: 0 0 0 3px rgba(61, 84, 172, .18);
    background: #fdfdff;
}
.mt-sheet input::placeholder, .mt-sheet textarea::placeholder { color: var(--mt-ink-3); }

/* Kontrollkaestchen als deutliche Schalter */
.mt-check {
    display: flex; align-items: flex-start; gap: 10px;
    border: 1px solid var(--mt-line); border-radius: var(--mt-r);
    padding: 11px 13px; background: #fafbfe; cursor: pointer;
    transition: border-color .12s, background .12s;
}
.mt-check:hover { border-color: #aab6d2; background: #f5f8ff; }
.mt-check input[type="checkbox"] { width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--mt-blue); flex: none; }
.mt-check span { font-size: 13px; line-height: 1.45; }
.mt-check small { display: block; color: var(--mt-ink-3); }

/* Wochentage als Chips */
.mt-days { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-day  { position: relative; }
.mt-day input {
    position: absolute; opacity: 0; width: 0; height: 0;
}
.mt-day span {
    display: block; min-width: 62px; text-align: center;
    font-family: var(--mt-mono); font-size: 13px; letter-spacing: .08em;
    padding: 10px 12px; cursor: pointer;
    border: 1px solid var(--mt-line); border-radius: var(--mt-r);
    background: #fff; color: var(--mt-ink-3);
    transition: all .12s;
    user-select: none;
}
.mt-day span:hover { border-color: var(--mt-blue); color: var(--mt-blue); }
.mt-day input:checked + span {
    background: var(--mt-blue); border-color: var(--mt-blue); color: #fff;
    box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .18);
}
.mt-day input:focus-visible + span { box-shadow: 0 0 0 3px rgba(61, 84, 172, .3); }

/* Zeitspanne: zwei Felder nebeneinander mit Trenner */
.mt-range { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; }
.mt-range__sep { font-family: var(--mt-mono); color: var(--mt-ink-3); font-size: 13px; }

/* ---------------------------------------------------------------- Buttons */

.btn {
    font-family: var(--mt-sans);
    font-size: 13px; font-weight: 600; letter-spacing: .04em;
    border-radius: var(--mt-r);
    padding: 11px 22px;
    border: 1px solid transparent;
    background: var(--mt-blue); color: #fff;
    transition: background .12s, border-color .12s, transform .06s;
}
.btn:hover, .btn:focus { background: var(--mt-blue-bright); color: #fff; border-color: transparent; }
.btn:active { transform: translateY(1px); }
.btn-ghost {
    background: transparent; color: var(--mt-blue); border-color: var(--mt-line);
}
.btn-ghost:hover { background: #fff; color: var(--mt-blue-bright); border-color: var(--mt-blue); }
.btn-danger { background: var(--mt-alert); }
.btn-danger:hover { background: #c02a4a; }

.mt-submit {
    display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
    padding: 20px 22px;
    border-top: 1px solid var(--mt-line-soft);
    background: linear-gradient(180deg, #f7f9fd, #eef2f9);
}
.mt-submit .btn { padding: 13px 30px; font-size: 14px; }
.mt-submit__note { font-size: 12.5px; color: var(--mt-ink-3); margin: 0; }

/* ---------------------------------------------------------- Tabellen/Daten */

.table { background: var(--mt-paper); font-size: 14px; margin-bottom: 0; }
.table > thead > tr > th {
    font-family: var(--mt-mono); font-size: 11px; letter-spacing: .12em;
    text-transform: uppercase; color: var(--mt-ink-2); font-weight: 600;
    border-bottom: 1px solid var(--mt-line); background: #f6f8fc;
    padding: 10px 14px;
}
.table > tbody > tr > td,
.table > tbody > tr > th {
    border-top: 1px solid var(--mt-line-soft); padding: 10px 14px; vertical-align: middle;
}
.table > tbody > tr:hover { background: #f7f9ff; }
.table td.mt-num, .table .mt-num { font-family: var(--mt-mono); text-align: right; }
.table-dark { color: var(--mt-ink); }

/* Ergebniskacheln */
.mt-kpis {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 1px; background: var(--mt-line); border: 1px solid var(--mt-line);
}
.mt-kpi { background: #fff; padding: 16px 18px; }
.mt-kpi dt {
    font-family: var(--mt-mono); font-size: 10.5px; letter-spacing: .14em;
    text-transform: uppercase; color: var(--mt-ink-3); font-weight: 400;
}
.mt-kpi dd { font-family: var(--mt-mono); font-size: 23px; color: var(--mt-blue); margin: 6px 0 0; }
.mt-kpi--good dd { color: var(--mt-ok); }
.mt-kpi--bad  dd { color: var(--mt-alert); }

/* ------------------------------------------------------------ Hinweisbox */

.mt-note {
    border: 1px solid var(--mt-line);
    border-left: 3px solid var(--mt-blue);
    background: #f7f9fd;
    padding: 14px 18px;
    border-radius: var(--mt-r);
    font-size: 13.5px;
    color: var(--mt-ink-2);
}
.mt-note strong { color: var(--mt-ink); }

/* Schrittfolge in der Hilfe */
.mt-steps { list-style: none; padding: 0; margin: 0; counter-reset: mtstep; }
.mt-steps > li {
    position: relative; padding: 0 0 22px 52px; counter-increment: mtstep;
    border-left: 1px solid var(--mt-line); margin-left: 15px;
}
.mt-steps > li:last-child { border-left-color: transparent; padding-bottom: 0; }
.mt-steps > li::before {
    content: counter(mtstep, decimal-leading-zero);
    position: absolute; left: -16px; top: 0;
    width: 31px; height: 31px; border-radius: 50%;
    background: var(--mt-blue); color: #fff;
    font-family: var(--mt-mono); font-size: 12px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}
.mt-steps h4 { margin: 4px 0 6px; font-size: 15px; }
.mt-steps p  { margin: 0 0 6px; font-size: 14px; color: var(--mt-ink-2); }

/* ------------------------------------------------------------------ Seite */

.mt-page { padding: 34px 0 56px; }
.mt-container { max-width: 1180px; margin: 0 auto; padding: 0 22px; }
.mt-section-title {
    display: flex; align-items: baseline; gap: 12px;
    margin: 34px 0 16px;
}
.mt-section-title::after {
    content: ""; flex: 1; height: 1px; background: var(--mt-line);
}

/* Bootstrap-Container im Innenbereich entschaerfen */
.mt-page .container { padding: 0; width: auto; }

footer {
    background: var(--mt-blue-ink);
    color: rgba(255, 255, 255, .62);
    padding: 34px 0;
    font-size: 13px;
    border-top: 1px solid rgba(255, 255, 255, .08);
}
footer a { color: rgba(255, 255, 255, .82); }
footer a:hover { color: #fff; }
footer .mt-eyebrow { color: rgba(255, 255, 255, .38); }

/* --------------------------------------------------------------- Sonstiges */

hr { border-top: 1px solid var(--mt-line); }

.mt-badge {
    display: inline-block; font-family: var(--mt-mono); font-size: 11px;
    letter-spacing: .1em; text-transform: uppercase;
    padding: 3px 9px; border-radius: var(--mt-r);
    background: rgba(38, 51, 106, .09); color: var(--mt-blue);
    border: 1px solid rgba(38, 51, 106, .18);
}

/* Fehlermeldungen von Django-Formularen */
.mt-sheet .errorlist {
    list-style: none; padding: 0; margin: 6px 0 0;
    font-size: 12.5px; color: var(--mt-alert);
}
.mt-sheet .errorlist li::before { content: "! "; font-family: var(--mt-mono); }

@media (max-width: 767px) {
    .mt-hero { padding: 34px 0 30px; }
    .mt-hero h1 { font-size: 27px; }
    .mt-card__head { flex-wrap: wrap; gap: 8px; }
    .mt-card__hint { margin-left: 0; width: 100%; }
    .mt-card__body { padding: 16px; }
    .mt-day span { min-width: 44px; padding: 9px 8px; }
}
