/* =============================================================
   MotoMonster-Admin Theme
   Zentrale Styles fuer die Seiten unter /admin/*.
   Farbpalette: Crimson (#DC143C) + BurlyWood (#DEB887) + Sand/Creme.
   Betroffene Seiten u. a.: events.php, instruktoren.php, summary.php
   ============================================================= */

:root {
    --mm-crimson:        #DC143C;
    --mm-crimson-dark:   #a50f2e;
    --mm-crimson-soft:   rgba(220, 20, 60, .12);
    --mm-burlywood:      #DEB887;
    --mm-burlywood-50:   #f6e8d3;
    --mm-burlywood-25:   #faf1e2;
    --mm-sand:           #fdf8f0;
    --mm-ink:            #3d2b1f;
    --mm-ink-soft:       #7a5b3a;
    --mm-ink-muted:      #b89977;
}

/* ----- Basis ------------------------------------------------- */
body.mm-admin {
    background: var(--mm-sand);
}
body.mm-admin .page-wrap {
    max-width: 1280px;
    margin: 1.5rem auto;
    padding: 0 1rem;
}
body.mm-admin .page-wrap.wide {
    max-width: 1400px;
}

/* ----- Header-Leiste ----------------------------------------- */
body.mm-admin h3 .badge-secondary,
body.mm-admin h3 > .badge {
    background: var(--mm-crimson) !important;
    color: #fff !important;
    font-weight: 500;
    padding: .35em .65em;
    border-radius: 6px;
}
body.mm-admin .user-role-name {
    font-size: 75%;
}
body.mm-admin h3 > i,
body.mm-admin h3 > .fas,
body.mm-admin h3 > .far {
    color: var(--mm-crimson);
    margin-right: .25rem;
}

/* ----- Cards ------------------------------------------------- */
body.mm-admin .card {
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(220, 20, 60, .06);
    overflow: hidden;
}
body.mm-admin .card.shadow-sm {
    box-shadow: 0 4px 12px rgba(220, 20, 60, .06) !important;
}

/* ----- Tabellen (generisch fuer Admin-Bereich) -------------- */
/* Greift fuer jede .table innerhalb body.mm-admin -
   auch fuer summary.php mit .table-compact, .table-sortable etc. */
body.mm-admin .table {
    margin-bottom: 0;
    border-collapse: separate;
    border-spacing: 0;
    color: var(--mm-ink);
}
body.mm-admin .table thead tr th,
body.mm-admin .table thead.thead-light tr th,
body.mm-admin .table thead.thead-dark tr th {
    background: linear-gradient(180deg, var(--mm-crimson) 0%, var(--mm-crimson-dark) 100%);
    color: #fff;
    border: none;
    font-weight: 600;
    letter-spacing: .02em;
    font-size: .8rem;
    text-transform: uppercase;
    padding: .65rem .75rem;
    white-space: nowrap;
}
body.mm-admin .card .table thead tr th:first-child { border-top-left-radius: 9px; }
body.mm-admin .card .table thead tr th:last-child  { border-top-right-radius: 9px; }

body.mm-admin .table tbody tr {
    transition: background .15s ease;
}
body.mm-admin .table tbody tr:nth-child(odd)  { background: #fff; }
body.mm-admin .table tbody tr:nth-child(even) { background: var(--mm-burlywood-25); }
body.mm-admin .table tbody tr:hover {
    background: var(--mm-burlywood-50);
    box-shadow: inset 4px 0 0 var(--mm-crimson);
}
body.mm-admin .table tbody td {
    vertical-align: middle;
    border-top: 1px solid rgba(222, 184, 135, .45);
    padding: .55rem .75rem;
    color: var(--mm-ink);
}
body.mm-admin .table tbody td strong { color: var(--mm-ink); }

/* Zahlen-/Euro-Spalten bekommen eine ruhige, leicht monospace-Optik */
body.mm-admin .table td.text-right,
body.mm-admin .table th.text-right {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

/* Kompakte Tabellen (summary.php) */
body.mm-admin .table-compact td,
body.mm-admin .table-compact th { padding: .4rem .65rem; vertical-align: middle; }
body.mm-admin .table-compact thead th { white-space: nowrap; }

/* Sortierbare Kopfzeilen */
body.mm-admin .table-sortable thead th { cursor: pointer; user-select: none; }
body.mm-admin .table-sortable thead th::after {
    content: "\2195";                /* Unicode: ↕  – "sortierbar" */
    display: inline-block;
    margin-left: .45em;
    color: #fff;
    opacity: .55;
    font-size: .9em;
    transition: opacity .15s ease;
}
body.mm-admin .table-sortable thead th:hover::after { opacity: .85; }
body.mm-admin .table-sortable thead th.sort-asc::after  { content: "\25B2"; opacity: 1; font-size: .75em; } /* ▲ */
body.mm-admin .table-sortable thead th.sort-desc::after { content: "\25BC"; opacity: 1; font-size: .75em; } /* ▼ */
body.mm-admin .table-sortable thead th:hover { background: linear-gradient(180deg, var(--mm-crimson-dark) 0%, #8a0a25 100%); }

/* Sanft ausgeblendete Zeilen (Loesch-Animation) */
body.mm-admin .mm-table tr.row-gone,
body.mm-admin .ev-table tr.row-gone,
body.mm-admin .ins-table tr.row-deleted { opacity: .35; transition: opacity .3s; }

/* Spezielle Spalten */
body.mm-admin .ev-table td.turnplan,
body.mm-admin .mm-table td.turnplan {
    font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
    font-size: .82em;
    color: var(--mm-ink-soft);
}
body.mm-admin .ev-table td.days small,
body.mm-admin .mm-table td.days small { color: var(--mm-ink-soft); }
body.mm-admin .ev-table td .event-id,
body.mm-admin .mm-table td .event-id {
    font-size: .7em; color: var(--mm-ink-muted);
    font-family: monospace; letter-spacing: .05em;
}
body.mm-admin .ins-table td.color-swatch { font-family: monospace; text-align: center; }
body.mm-admin .ins-table td.color-swatch .swatch {
    display: inline-block; width: 1.2em; height: 1.2em;
    vertical-align: middle; border: 1px solid rgba(0,0,0,.15);
    border-radius: 3px; margin-right: .35rem;
}

/* ----- Badges ------------------------------------------------ */
body.mm-admin .badge.badge-info,
body.mm-admin .badge.badge-primary {
    background: var(--mm-crimson) !important;
    color: #fff !important;
    font-weight: 500;
    padding: .35em .65em;
    border-radius: 6px;
}
body.mm-admin .badge.badge-light {
    background: var(--mm-burlywood-50) !important;
    color: var(--mm-ink-soft) !important;
    border: 1px solid var(--mm-burlywood);
    font-weight: 500;
    padding: .3em .55em;
    border-radius: 6px;
}
body.mm-admin .badge.badge-warning {
    background: var(--mm-burlywood) !important;
    color: var(--mm-ink) !important;
    border-radius: 6px;
    padding: .3em .6em;
}
body.mm-admin .badge.badge-success {
    background: #6c8e3c !important;
    color: #fff !important;
    border-radius: 6px;
    padding: .3em .6em;
}
body.mm-admin .badge.badge-danger {
    background: var(--mm-crimson) !important;
    color: #fff !important;
    border-radius: 999px;
    padding: .3em .6em;
}

/* ----- Action-Buttons in Tabellen --------------------------- */
body.mm-admin .mm-table td.actions,
body.mm-admin .ev-table td.actions,
body.mm-admin .ins-table td.actions { white-space: nowrap; }

body.mm-admin td.actions .btn { border-radius: 6px; }
body.mm-admin td.actions .btn-outline-secondary {
    color: var(--mm-ink);
    border-color: var(--mm-burlywood);
    background: #fff;
}
body.mm-admin td.actions .btn-outline-secondary:hover {
    background: var(--mm-burlywood-50);
    border-color: var(--mm-burlywood);
    color: var(--mm-ink);
}
body.mm-admin td.actions .btn-primary {
    background: var(--mm-ink);
    border-color: var(--mm-ink);
}
body.mm-admin td.actions .btn-primary:hover {
    background: #24180f;
    border-color: #24180f;
}
body.mm-admin td.actions .btn-outline-danger,
body.mm-admin .btn-outline-danger {
    color: var(--mm-crimson);
    border-color: var(--mm-crimson);
}
body.mm-admin td.actions .btn-outline-danger:hover:not(:disabled),
body.mm-admin .btn-outline-danger:hover:not(:disabled) {
    background: var(--mm-crimson);
    border-color: var(--mm-crimson);
    color: #fff;
}

/* Primary + Success global (Neu-Buttons im Kopf) */
body.mm-admin .btn-success {
    background: var(--mm-crimson);
    border-color: var(--mm-crimson);
    font-weight: 500;
}
body.mm-admin .btn-success:hover {
    background: var(--mm-crimson-dark);
    border-color: var(--mm-crimson-dark);
}
body.mm-admin .btn-outline-secondary {
    color: var(--mm-ink);
    border-color: var(--mm-burlywood);
}
body.mm-admin .btn-outline-secondary:hover {
    background: var(--mm-burlywood-50);
    border-color: var(--mm-burlywood);
    color: var(--mm-ink);
}

/* ----- Formularelemente ------------------------------------- */
body.mm-admin .form-control,
body.mm-admin .custom-select {
    border-color: var(--mm-burlywood);
}
body.mm-admin .form-control:focus,
body.mm-admin .custom-select:focus {
    border-color: var(--mm-crimson);
    box-shadow: 0 0 0 .15rem var(--mm-crimson-soft);
}
body.mm-admin .form-row label,
body.mm-admin form label.small {
    color: var(--mm-ink);
    font-weight: 600;
    letter-spacing: .02em;
}

/* ----- KPI- und Gruppen-Karten (summary.php) ---------------- */
body.mm-admin .kpi-card {
    border-left: 4px solid var(--mm-crimson);
    background: #fff;
}
body.mm-admin .kpi-card .kpi-label {
    font-size: .8rem;
    color: var(--mm-ink-soft);
    text-transform: uppercase;
    letter-spacing: .05em;
}
body.mm-admin .kpi-card .kpi-value {
    font-size: 1.6rem;
    font-weight: 600;
    color: var(--mm-ink);
}
body.mm-admin .group-card {
    border-top: 3px solid var(--mm-burlywood);
    background: #fff;
}
body.mm-admin .group-card .group-label {
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    font-weight: 600;
    color: var(--mm-ink);
}
body.mm-admin .group-card .group-sum  { font-size: 1.2rem; font-weight: 600; color: var(--mm-ink); }
body.mm-admin .group-card .group-anz  { font-size: .8rem; color: var(--mm-ink-soft); }
body.mm-admin .section-title {
    display: flex; align-items: center; gap: .5rem;
    margin: 1.75rem 0 .75rem;
    padding-left: .5rem;
    border-left: 4px solid var(--mm-crimson);
}
body.mm-admin .section-title h5 {
    margin: 0;
    color: var(--mm-ink);
    font-weight: 700;
    letter-spacing: .01em;
}
body.mm-admin .section-title h5 > i {
    color: var(--mm-crimson);
    margin-right: .25rem;
}
body.mm-admin .section-title .text-muted,
body.mm-admin .section-title small { color: var(--mm-ink-soft) !important; }
body.mm-admin .group-dot {
    display: inline-block;
    width: .8em; height: .8em;
    border-radius: 50%;
    vertical-align: middle;
    margin-right: .35rem;
    box-shadow: 0 0 0 2px rgba(255,255,255,.9), 0 0 0 3px rgba(222, 184, 135, .5);
}

/* ----- Accordion (summary.php) ------------------------------ */
body.mm-admin .accordion > .card {
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 8px !important;
    margin-bottom: .5rem;
    overflow: hidden;
}
body.mm-admin .accordion .card-header {
    background: var(--mm-burlywood-25);
    border-bottom: 1px solid var(--mm-burlywood-50);
    padding: 0;
}
body.mm-admin .accordion .card-header .btn-link {
    color: var(--mm-ink);
    font-weight: 600;
    text-decoration: none;
}
body.mm-admin .accordion .card-header .btn-link:hover,
body.mm-admin .accordion .card-header .btn-link:focus {
    color: var(--mm-crimson);
    text-decoration: none;
}
body.mm-admin .accordion .card-header .btn-link:not(.collapsed) {
    background: var(--mm-burlywood-50);
    color: var(--mm-crimson);
}
body.mm-admin .accordion .card-header .text-muted,
body.mm-admin .accordion .card-header .small { color: var(--mm-ink-soft) !important; }

/* ----- Modal ------------------------------------------------- */
body.mm-admin .modal-content {
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 12px;
    overflow: hidden;
}
body.mm-admin .modal-header {
    background: var(--mm-burlywood-25);
    border-bottom: 1px solid var(--mm-burlywood-50);
}
body.mm-admin .modal-title { color: var(--mm-ink); font-weight: 600; }
body.mm-admin .modal-footer { background: #fffdf8; border-top: 1px solid var(--mm-burlywood-50); }

/* Bootstrap-Accordion in summary.php */
body.mm-admin .card .btn-link {
    color: var(--mm-ink);
    font-weight: 600;
}
body.mm-admin .card .btn-link:hover { color: var(--mm-crimson); text-decoration: none; }

/* Danger-Zone (Delete-Bereich in Modals) */
body.mm-admin .danger-zone {
    background: #fff5f5;
    border: 1px solid #fed3d3;
    border-radius: 6px;
    padding: .75rem;
}

/* Tag-Inputs im Event-Modal */
body.mm-admin .day-group {
    background: var(--mm-burlywood-25);
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 6px;
    padding: .5rem;
}
body.mm-admin .day-group label {
    font-size: .8rem;
    color: var(--mm-ink-soft);
    margin-bottom: .15rem;
    text-transform: none;
    font-weight: 500;
}
body.mm-admin .day-group input[type=date] { font-family: monospace; }
body.mm-admin .turnplan-hint {
    font-size: .75rem;
    color: var(--mm-ink-soft);
    margin-top: .25rem;
}

/* Token-Liste (instruktoren.php) */
body.mm-admin .token-list .token-item {
    display: flex; align-items: center; gap: .5rem;
    padding: .35rem .5rem;
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 4px;
    margin-bottom: .35rem;
    background: var(--mm-burlywood-25);
    font-family: monospace; font-size: .85em;
}
body.mm-admin .token-list .token-item code {
    flex: 1; word-break: break-all; color: var(--mm-ink);
}
body.mm-admin .btn-xs { padding: .1rem .4rem; font-size: .75rem; line-height: 1.2; }
body.mm-admin .push-result { font-size: .85rem; }
body.mm-admin .push-result.ok  { color: #6c8e3c; }
body.mm-admin .push-result.err { color: var(--mm-crimson); }

/* ----- Toast-Stack ------------------------------------------ */
#toastStack {
    position: fixed; top: 1rem; right: 1rem; z-index: 1080;
    width: 320px; max-width: calc(100vw - 2rem);
}
#toastStack .toast-item {
    background: var(--mm-ink); color: #fff;
    padding: .6rem .8rem; border-radius: 6px;
    margin-bottom: .4rem; font-size: .9rem;
    box-shadow: 0 2px 8px rgba(0,0,0,.15);
    transition: opacity .3s ease;
}
#toastStack .toast-item.ok  { background: #6c8e3c; }
#toastStack .toast-item.err { background: var(--mm-crimson); }

/* =============================================================
   admin/index.php — spezifisches Layout
   ============================================================= */

/* Kleine Labels im Anlage-Formular */
body.mm-admin .small-label {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--mm-ink-soft);
    margin-bottom: .15rem;
    font-weight: 600;
    display: block;
}

/* Event-Kopfzeile ueber den Tabs */
body.mm-admin .event-head {
    font-weight: 600;
    color: var(--mm-ink);
    font-size: 1rem;
}
body.mm-admin .event-head .event-track {
    font-weight: 400;
    color: var(--mm-ink-soft);
    font-size: .85rem;
}
body.mm-admin .event-dates { font-size: .8rem; }

/* Sektionsueberschrift innerhalb von Cards */
body.mm-admin .section-sub {
    font-size: .85rem;
    color: var(--mm-ink-soft);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 700;
    margin: 0;
}
body.mm-admin .section-sub > i { color: var(--mm-crimson); }

/* Kompakte Event-Auswahl-Zeile (oben, volle Breite) */
/* Einheitlicher Admin-Header ("Titel | Page-Controls | Nav")
   ----------------------------------------------------------- */
body.mm-admin .admin-header { row-gap: .35rem; column-gap: .5rem; }

/* Page-spezifischer Picker-Bereich zwischen Titel und Nav. */
body.mm-admin .admin-header-picker {
    row-gap: .25rem;
    column-gap: .35rem;
    flex-wrap: wrap;
    align-items: center;
}
body.mm-admin .admin-header-picker label { white-space: nowrap; }
body.mm-admin .event-year-select { width: auto; min-width: 5rem; }
body.mm-admin .event-select      { min-width: 13rem; max-width: 22rem; flex: 0 1 auto; }

/* Nav-Bar (oben rechts, gemeinsam fuer alle Admin-Seiten). */
body.mm-admin .admin-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    align-items: center;
}
body.mm-admin .admin-nav .btn { white-space: nowrap; }
body.mm-admin .admin-nav .btn.active,
body.mm-admin .admin-nav .btn:focus {
    background: var(--mm-crimson);
    border-color: var(--mm-crimson);
    color: #fff;
    box-shadow: none;
}
body.mm-admin .admin-nav .btn.active:hover {
    background: var(--mm-crimson-dark);
    border-color: var(--mm-crimson-dark);
    color: #fff;
}
body.mm-admin .admin-nav-logout { margin-left: .4rem; }

/* Matrix "Instruktionen pro Instruktor & Tag" (jetzt unter den Nachrichten) */
body.mm-admin .ins-per-day-card { font-size: .78rem; }
body.mm-admin .ins-per-day-title {
    font-weight: 700;
    color: var(--mm-ink);
    letter-spacing: .03em;
    text-transform: uppercase;
    font-size: .75rem;
}
body.mm-admin .ins-per-day-title > i { color: var(--mm-crimson); margin-right: .25rem; }
body.mm-admin .ins-per-day-matrix {
    width: 100%;
    font-variant-numeric: tabular-nums;
}
body.mm-admin .ins-per-day-matrix th,
body.mm-admin .ins-per-day-matrix td {
    padding: .15rem .35rem;
    line-height: 1.15;
}
body.mm-admin .ins-per-day-matrix thead th {
    font-size: .7rem;
    text-transform: uppercase;
    color: var(--mm-ink-soft);
    border-bottom: 1px solid var(--mm-burlywood-50);
    letter-spacing: .03em;
}
body.mm-admin .ins-per-day-matrix th.ins-name-col,
body.mm-admin .ins-per-day-matrix td.ins-name-col {
    text-align: left;
    padding-right: .6rem;
    white-space: nowrap;
}
body.mm-admin .ins-per-day-matrix td.ins-name-col {
    color: var(--mm-ink);
    font-size: .78rem;
}
body.mm-admin .ins-per-day-matrix th.ins-day-col,
body.mm-admin .ins-per-day-matrix td.ins-day-col {
    text-align: center;
}
body.mm-admin .ins-per-day-matrix td.ins-day-col .count-pill {
    display: inline-block;
    min-width: 1.5rem;
    padding: .08rem .4rem;
    border-radius: 10px;
    background: var(--mm-burlywood-25);
    color: var(--mm-ink);
    font-size: .72rem;
    font-weight: 600;
    border: 1px solid var(--mm-burlywood-50);
}
body.mm-admin .ins-per-day-matrix td.ins-day-col .count-pill.is-top {
    background: var(--mm-crimson);
    color: #fff;
    border-color: var(--mm-crimson);
}
body.mm-admin .ins-per-day-matrix td.ins-day-col .count-pill.is-zero {
    color: var(--mm-ink-muted);
    background: transparent;
    border-color: transparent;
}
body.mm-admin .ins-per-day-matrix .ins-pdf-link {
    width: 1.35rem;
    height: 1.35rem;
    margin-left: .25rem;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 50%;
    background: transparent;
    color: var(--mm-crimson);
    cursor: pointer;
    font-size: .78rem;
    line-height: 1;
    vertical-align: middle;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
body.mm-admin .ins-per-day-matrix .ins-pdf-link:hover,
body.mm-admin .ins-per-day-matrix .ins-pdf-link:focus {
    background: rgba(220, 20, 60, .1);
    border-color: var(--mm-crimson);
    color: var(--mm-crimson-dark);
    outline: none;
    transform: translateY(-1px);
}
body.mm-admin .ins-per-day-matrix tfoot td {
    border-top: 1px solid var(--mm-burlywood-50);
    font-weight: 600;
    color: var(--mm-ink-soft);
    font-size: .72rem;
}

/* Tabs fuer Tages-Auswahl */
body.mm-admin .job-tabs {
    background: var(--mm-burlywood-25);
    border-bottom: 1px solid var(--mm-burlywood-50);
    padding: .2rem .5rem 0;
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    align-items: flex-end;
}
body.mm-admin .job-tabs .nav-item { margin-bottom: -1px; }
body.mm-admin .job-tabs .nav-link {
    color: var(--mm-ink-soft);
    padding: .35rem .75rem;
    border-radius: 6px 6px 0 0;
    border: 1px solid transparent;
    font-size: .85rem;
    font-weight: 500;
    letter-spacing: .02em;
}
body.mm-admin .job-tabs .nav-link:hover {
    background: #fff;
    color: var(--mm-crimson);
}
body.mm-admin .job-tabs .nav-link.active {
    background: #fff;
    color: var(--mm-crimson);
    border-color: var(--mm-burlywood-50) var(--mm-burlywood-50) #fff;
    font-weight: 700;
}
body.mm-admin .job-tabs .nav-link .badge {
    margin-left: .4rem;
    font-size: .7rem;
    padding: .2em .55em;
}
body.mm-admin .job-tabs .tab-tools {
    margin-left: auto;
    padding-bottom: .15rem;
}
body.mm-admin .job-tabs .tab-tools .btn {
    padding: .2rem .5rem;
    font-size: .75rem;
}

body.mm-admin .tab-content .tab-pane { padding: 0; }

/* Jobs-Card: Hintergrund in dezentem Creme-Ton, damit die gerundeten Ecken
   der roten thead-Zeile nicht auf Weiss "aufsitzen". */
body.mm-admin .jobs-card { background: #FAF1E2; }

/* Event-Head + "Neuen Instruktor-Job anlegen":
   kein Card-Hintergrund, direkt auf die Seite geschrieben, kompaktes Padding. */
body.mm-admin .jobform-block {
    background: transparent;
    border: none;
    box-shadow: none;
}
body.mm-admin .jobform-head {
    padding: .15rem 0 .35rem;
    border-bottom: 1px solid var(--mm-burlywood-50);
    margin-bottom: .4rem;
}
body.mm-admin .jobform-body { padding: 0; }
body.mm-admin .jobform-body .section-sub {
    margin-top: 0;
    margin-bottom: .3rem;
    font-size: .8rem;
}

/* Kompakte Jobs-Tabelle (Zielbild: moeglichst viele Zeilen sichtbar) */
body.mm-admin .job-table {
    margin-bottom: 0;
    font-size: .82rem;
}
body.mm-admin .job-table thead tr th {
    padding: .4rem .5rem;
    font-size: .7rem;
}
body.mm-admin .job-table tbody td {
    padding: .28rem .5rem;
    line-height: 1.25;
    vertical-align: middle;
}
body.mm-admin .job-table td.col-time {
    font-family: 'JetBrains Mono', Consolas, monospace;
    font-weight: 600;
    text-align: center;
    min-width: 3.4rem;
    white-space: nowrap;
    border-left: 4px solid transparent; /* Gruppe-Akzent */
}
body.mm-admin .job-table td.col-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-family: 'JetBrains Mono', Consolas, monospace;
    font-size: .78rem;
    color: var(--mm-ink-soft);
}
body.mm-admin .job-table td.col-cost {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
body.mm-admin .job-table td.col-cost .kostenalert {
    color: #fff;
    background: var(--mm-crimson);
    padding: .05rem .4rem;
    border-radius: 4px;
}
body.mm-admin .job-table td.col-actions {
    white-space: nowrap;
    text-align: right;
}
body.mm-admin .job-table td.col-actions .btn {
    padding: .12rem .4rem;
    font-size: .7rem;
    margin-left: .2rem;
}
body.mm-admin .job-table td.col-ins .ins {
    cursor: pointer;
    text-decoration: underline dotted;
    color: var(--mm-ink);
}
body.mm-admin .job-table td.col-ins .ins:hover { color: var(--mm-crimson); }
body.mm-admin .job-table td.col-ins .ins-warn {
    color: var(--mm-crimson);
    margin-left: .25rem;
}

/* Gruppen-Badges (klein + farbig) in der Jobs-Tabelle */
body.mm-admin .job-table .grp-badge {
    display: inline-block;
    min-width: 4rem;
    padding: .1rem .45rem;
    border-radius: 4px;
    font-size: .72rem;
    font-weight: 600;
    text-align: center;
    letter-spacing: .02em;
    color: #fff;
    line-height: 1.2;
}
body.mm-admin .grp-schwarz { background: #111; }
body.mm-admin .grp-blau    { background: #0278f7; }
body.mm-admin .grp-gruen   { background: #3ca302; }
body.mm-admin .grp-gelb    { background: #e2c300; color: #221a00; }
body.mm-admin .grp-orange  { background: #ed8a00; }
body.mm-admin .grp-rot     { background: #d61717; }
body.mm-admin .grp-unknown { background: var(--mm-ink-muted); }

/* Fieldset-Wrap (Job-Anlage) — kompakter Look */
body.mm-admin .fieldset-wrap .fieldsetRow {
    position: relative;
    background: var(--mm-burlywood-25);
    border: 1px solid var(--mm-burlywood-50);
    border-radius: 6px;
    padding: .35rem 2.6rem .2rem .5rem; /* rechts Platz fuer X-Button */
    margin-bottom: .35rem;
}
body.mm-admin .fieldset-wrap .fieldsetRow:first-child { margin-top: .15rem; }

/* "Zeile entfernen" als X oben rechts in der Zeile */
body.mm-admin .fieldset-remove {
    position: absolute;
    top: .3rem;
    right: .3rem;
    width: 2rem;
    height: 2rem;
    padding: 0;
    line-height: 1;
    background: transparent;
    border: 1px solid transparent;
    color: var(--mm-crimson);
    opacity: .75;
    cursor: pointer;
    border-radius: 6px;
    font-size: 1.1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s ease, opacity .15s ease, border-color .15s ease;
}
body.mm-admin .fieldset-remove:hover {
    opacity: 1;
    background: rgba(220, 20, 60, .12);
    border-color: var(--mm-crimson);
}

/* ------------------------------------------------------------------
   Select2 exakt an Bootstrap .form-control-sm angleichen.
   Select2 laedt seine eigenen Regeln mit hoher Specificity (und die Hoehe
   wird via inline-Berechnung gesetzt), darum nutzen wir hier !important,
   um das Widget optisch deckungsgleich zum nativen "Art"-Select zu bekommen.
   Referenz Bootstrap 4 .form-control-sm:
     height: calc(1.5em + .5rem + 2px)
     padding: .25rem .5rem
     font-size: .875rem
     line-height: 1.5
     border-radius: .2rem
   ------------------------------------------------------------------ */
body.mm-admin .select2-container {
    display: block;
    font-size: .875rem !important;   /* matches form-control-sm */
}
body.mm-admin .select2-container .select2-selection--single {
    height: calc(1.5em + .5rem + 2px) !important;
    min-height: 0 !important;
    border: 1px solid var(--mm-burlywood) !important;
    border-radius: .2rem !important;
    background-color: #fff !important;
    padding: 0 !important;
    box-sizing: border-box;
    font-size: .875rem !important;
}
body.mm-admin .select2-container .select2-selection--single
    .select2-selection__rendered {
    height: calc(1.5em + .5rem) !important;   /* innen, ohne Border */
    line-height: calc(1.5em + .5rem) !important;
    padding: 0 1.75rem 0 .5rem !important;
    font-size: .875rem !important;
    color: var(--mm-ink) !important;
    display: block;
}
/* Select2-Dropdown (geoeffnete Liste) ebenfalls in Small-Size rendern. */
body.mm-admin .select2-container--open .select2-dropdown,
.select2-dropdown.select2-dropdown--mm-admin {
    font-size: .875rem !important;
}
body.mm-admin .select2-container--open .select2-results__option,
.select2-dropdown.select2-dropdown--mm-admin .select2-results__option {
    font-size: .875rem !important;
    padding: .25rem .5rem;
}
body.mm-admin .select2-container--open .select2-search__field,
.select2-dropdown.select2-dropdown--mm-admin .select2-search__field {
    font-size: .875rem !important;
}
body.mm-admin .select2-container .select2-selection--single
    .select2-selection__arrow {
    height: calc(1.5em + .5rem) !important;
    top: 0 !important;
    right: 0 !important;
    width: 1.5rem !important;
}
body.mm-admin .select2-container .select2-selection--single
    .select2-selection__placeholder {
    color: var(--mm-ink-muted) !important;
    line-height: calc(1.5em + .5rem);
}
body.mm-admin .select2-container--default.select2-container--focus
    .select2-selection--single,
body.mm-admin .select2-container--default.select2-container--open
    .select2-selection--single {
    border-color: var(--mm-crimson) !important;
    box-shadow: 0 0 0 .15rem var(--mm-crimson-soft);
}

/* Select2 im Modal: selbe kompakte Hoehe. */
body.mm-admin .job-modal .select2-container .select2-selection--single {
    height: calc(1.5em + .5rem + 2px) !important;
}

/* is-invalid auf Select2-Wrapper sichtbar machen (Bootstrap targetiert nur
   das native <select>, das bei Select2 aber visuell unsichtbar ist). */
body.mm-admin .select2-container .select2-selection.is-invalid,
body.mm-admin .select2-container .select2-selection--single.is-invalid {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 .15rem rgba(220, 53, 69, .15) !important;
}

/* Disabled-Duplizieren-Button: klar inaktiv und mit Tooltip-Cursor. */
body.mm-admin #duplicate_fieldset:disabled {
    cursor: not-allowed;
    opacity: .55;
}

/* ----- Nachrichten (kleine Liste rechts) ------------------------ */
body.mm-admin #messages {
    width: 100%;
    margin: 0 !important;
    padding: 0 !important;
}
body.mm-admin #messages ul {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    /* Kein max-height/overflow: Liste soll auf Inhalt schrumpfen,
       damit die "Instruktionen pro Tag"-Card direkt darunter andockt. */
}
body.mm-admin #messages:empty {
    display: none;
}
body.mm-admin .messages-card .card-body { padding-bottom: .5rem; }
body.mm-admin #messages li {
    display: flex !important;
    align-items: flex-start;
    gap: .4rem;
    height: auto !important;
    margin: 0 0 .3rem 0 !important;
    padding: .4rem .5rem !important;
    border: none;
    border-radius: 6px;
    background: #F3D400 !important;
    color: var(--mm-ink) !important;
    font-size: .82rem;
    line-height: 1.3;
    min-width: 0;
    position: static !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}
body.mm-admin #messages li:last-child { margin-bottom: 0 !important; }
body.mm-admin #messages li .msg-text {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--mm-ink);
    word-break: break-word;
    overflow-wrap: anywhere;
    white-space: normal;
}
body.mm-admin #messages li button,
body.mm-admin #messages li .btn {
    flex: 0 0 auto;
    position: static !important;
    margin: 0 !important;
    padding: .05rem .3rem !important;
    font-size: .7rem !important;
    line-height: 1 !important;
}
/* Legacy-Gelbband auf #messages_head komplett neutralisieren,
   falls der alte Container doch wieder auftaucht. */
body.mm-admin #messages_head {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    width: auto !important;
    padding: 0 !important;
}

/* Import-Statusmodal */
body.mm-admin .import-modal .modal-content {
    border: 1px solid var(--mm-burlywood);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(0, 0, 0, .18);
}
body.mm-admin .import-modal .modal-header {
    background: var(--mm-burlywood-25);
    border-bottom: 1px solid var(--mm-burlywood);
}
body.mm-admin .import-modal .modal-title {
    color: var(--mm-crimson-dark);
    font-weight: 700;
}
body.mm-admin .import-modal .import-response {
    max-height: 220px;
    overflow-y: auto;
    color: var(--mm-ink);
    line-height: 1.45;
}
body.mm-admin .import-modal .loader {
    display: inline-block;
    width: 1rem; height: 1rem;
    border: 2px solid var(--mm-burlywood-50);
    border-top-color: var(--mm-crimson);
    border-radius: 50%;
    animation: mm-spin 1s linear infinite;
    vertical-align: middle;
    margin: 0 .4rem 0 0;
}
@keyframes mm-spin { to { transform: rotate(360deg); } }

/* Modal: Job-Bearbeiten */
body.mm-admin .job-modal .modal-header { padding: .6rem 1rem; }
body.mm-admin .job-modal .modal-body   { padding: .9rem 1rem; }
body.mm-admin .job-modal label { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--mm-ink-soft); margin-bottom: .15rem; }
body.mm-admin .job-modal .modal-title .job-id {
    font-family: monospace;
    font-size: .75rem;
    color: var(--mm-ink-muted);
    margin-left: .4rem;
}

/* ----- bootstrap-confirmation Popover (Delete-Dialog) --------- */
.popover.mm-confirm,
body.mm-admin ~ .popover,
body .popover {
    border: 1px solid var(--mm-burlywood);
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .18);
    font-family: inherit;
    max-width: 320px;
}
/* Bootstrap 3 (bootstrap-confirmation.min.js) benutzt .popover-title,
   Bootstrap 4 .popover-header — beide stylen. */
body .popover .popover-title,
body .popover .popover-header {
    background: linear-gradient(180deg, var(--mm-crimson) 0%, var(--mm-crimson-dark) 100%);
    color: #fff;
    font-weight: 600;
    border-bottom: 1px solid var(--mm-crimson-dark);
    padding: .45rem .6rem;
    font-size: .85rem;
    border-top-left-radius: 7px;
    border-top-right-radius: 7px;
}
body .popover .popover-content,
body .popover .popover-body {
    padding: .55rem .6rem;
    background: #fff;
    border-bottom-left-radius: 7px;
    border-bottom-right-radius: 7px;
}

/* Button-Reihe im Confirmation-Popover */
body .popover .btn.confirm-yes {
    background: var(--mm-crimson) !important;
    border-color: var(--mm-crimson) !important;
    color: #fff !important;
    font-weight: 600;
    margin-right: .35rem;
}
body .popover .btn.confirm-yes:hover {
    background: var(--mm-crimson-dark) !important;
    border-color: var(--mm-crimson-dark) !important;
}
body .popover .btn.confirm-no {
    background: #fff !important;
    color: var(--mm-ink) !important;
    border-color: var(--mm-burlywood) !important;
    font-weight: 500;
}
body .popover .btn.confirm-no:hover {
    background: var(--mm-burlywood-25) !important;
    border-color: var(--mm-burlywood) !important;
}
body .popover .btn i { margin-right: .25rem; }

/* Pfeil-Rand an Popover-Rand anpassen */
body .popover .arrow::before { border-color: transparent; }

/* Admin-Notice (Legacy) */
body.mm-admin .admin-notice {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 1070;
    max-width: 420px;
    pointer-events: none;
}
body.mm-admin .admin-notice .admin-notice-item {
    pointer-events: auto;
    position: relative;
    background: var(--mm-ink);
    color: #fff;
    padding: .5rem 2rem .5rem .75rem;
    border-radius: 6px;
    margin-bottom: .4rem;
    font-size: .85rem;
    box-shadow: 0 2px 8px rgba(0,0,0,.15);
}
body.mm-admin .admin-notice .admin-notice-success { background: #6c8e3c; }
body.mm-admin .admin-notice .admin-notice-warning { background: #c88a00; }
body.mm-admin .admin-notice .admin-notice-error   { background: var(--mm-crimson); }
body.mm-admin .admin-notice .admin-notice-close {
    position: absolute;
    top: .2rem; right: .35rem;
    background: transparent;
    border: 0; color: #fff;
    font-size: 1.1rem; line-height: 1;
    cursor: pointer;
}

/* =========================================================
   Timetables (admin/timetables.php)
   ========================================================= */

body.mm-admin .tt-day-card {
    border: 1px solid var(--mm-burlywood);
    border-radius: 10px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06);
    background: #fff;
}
body.mm-admin .tt-day-card > .card-header {
    background: var(--mm-sand);
    border-bottom: 1px solid var(--mm-burlywood);
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    color: var(--mm-ink);
    font-size: .95rem;
}
body.mm-admin .tt-day-card > .card-header .btn-outline-secondary {
    border-color: var(--mm-crimson);
    color: var(--mm-crimson);
}
body.mm-admin .tt-day-card > .card-header .btn-outline-secondary:hover {
    background: var(--mm-crimson);
    border-color: var(--mm-crimson);
    color: #fff;
}

/* Die eigentliche Turn-Matrix (kompakte Tabelle). */
body.mm-admin .tt-matrix {
    margin-bottom: 0;
    table-layout: auto;
}
body.mm-admin .tt-matrix thead th {
    background: var(--mm-crimson);
    color: #fff;
    font-weight: 600;
    font-size: .8rem;
    text-transform: capitalize;
    padding: .35rem .5rem;
    border: none;
    white-space: nowrap;
}
body.mm-admin .tt-matrix thead th:first-child { border-top-left-radius: 6px; }
body.mm-admin .tt-matrix thead th:last-child  { border-top-right-radius: 6px; }

body.mm-admin .tt-matrix tbody td {
    vertical-align: middle;
    padding: .3rem .4rem;
    border-top: 1px solid #eee;
    font-size: .85rem;
}
body.mm-admin .tt-matrix tbody tr:nth-child(odd) td { background: #fafafa; }
body.mm-admin .tt-matrix tbody tr:hover td         { background: #fff4e4; }

body.mm-admin .tt-matrix .tt-col-turn   { width: 5.5rem; white-space: nowrap; }
body.mm-admin .tt-matrix .tt-col-group  { min-width: 6.5rem; }
body.mm-admin .tt-matrix .tt-col-actions{ width: 2.2rem; text-align: center; }

body.mm-admin .tt-matrix input[type="time"] {
    font-size: .82rem;
    padding: .15rem .4rem;
    height: calc(1.5em + .5rem + 2px);
}

/* Gruppenfarb-Akzente in Header und Zellen (dezent). */
body.mm-admin .tt-matrix .tt-grp-schwarz { background: #333; color: #fff; }
body.mm-admin .tt-matrix .tt-grp-blau    { background: #2e6da4; color: #fff; }
body.mm-admin .tt-matrix .tt-grp-gruen,
body.mm-admin .tt-matrix .tt-grp-grün    { background: #3c763d; color: #fff; }
body.mm-admin .tt-matrix .tt-grp-gelb    { background: #f0ad4e; color: #333; }
body.mm-admin .tt-matrix .tt-grp-orange  { background: #e8872b; color: #fff; }
body.mm-admin .tt-matrix .tt-grp-rot     { background: var(--mm-crimson); color: #fff; }

body.mm-admin .tt-matrix tbody td.tt-grp-schwarz,
body.mm-admin .tt-matrix tbody td.tt-grp-blau,
body.mm-admin .tt-matrix tbody td.tt-grp-gruen,
body.mm-admin .tt-matrix tbody td.tt-grp-grün,
body.mm-admin .tt-matrix tbody td.tt-grp-gelb,
body.mm-admin .tt-matrix tbody td.tt-grp-orange,
body.mm-admin .tt-matrix tbody td.tt-grp-rot {
    /* Zellen bleiben neutral, nur die Header-Zeile ist farbig. */
    background: inherit;
    color: inherit;
}
body.mm-admin .tt-matrix tbody td.tt-col-group {
    border-left: 3px solid transparent;
}
body.mm-admin .tt-matrix tbody td.tt-grp-schwarz { border-left-color: #333; }
body.mm-admin .tt-matrix tbody td.tt-grp-blau    { border-left-color: #2e6da4; }
body.mm-admin .tt-matrix tbody td.tt-grp-gruen,
body.mm-admin .tt-matrix tbody td.tt-grp-grün    { border-left-color: #3c763d; }
body.mm-admin .tt-matrix tbody td.tt-grp-gelb    { border-left-color: #f0ad4e; }
body.mm-admin .tt-matrix tbody td.tt-grp-orange  { border-left-color: #e8872b; }
body.mm-admin .tt-matrix tbody td.tt-grp-rot     { border-left-color: var(--mm-crimson); }

body.mm-admin .tt-matrix .del-turn {
    padding: .15rem .35rem;
    line-height: 1;
}
