@import url("../../theme.css?v=4");

/* ==========================================================================
   MMDVM Dashboard – DO2BBC
   Einziges Stylesheet für /css/style.css. Ersetzt style-flat.css und
   style-remote.css (waren Duplikate).

   Aufbau:
     1  Tokens
     2  Seite & Grundlayout
     3  Kopfbereich
     4  Panels
     5  Tabellen
     6  DataTables-Bedienelemente
     7  Formulare & Buttons
     8  Statusanzeigen (Badges, Progress, Alerts)
     9  Kachel "MMDVM Informationen"
    10  Kachel "Raumbuchung"
    11  MMDVM-Fernsteuerung
    12  Fußbereich
    13  Kleine Viewports
    14  Bewegung reduzieren
   ========================================================================== */


/* 1  Tokens ================================================================ */

:root {
  --text:         #edf7ff;
  --muted:        #9bb1c5;
  --cyan:         #61e6ff;

  --panel:        rgba(15, 30, 51, .88);
  --panel2:       rgba(23, 45, 72, .72);
  --panel-hi:     rgba(31, 58, 90, .55);
  --line:         rgba(155, 190, 220, .16);
  --line-soft:    rgba(155, 190, 220, .09);

  --ok:      #55d68a;
  --live:    #ffd166;
  --bad:     #ff8f9a;

  --radius:    18px;
  --radius-sm: 10px;

  --shadow:    0 20px 60px rgba(0, 0, 0, .32);
  --shadow-hi: 0 26px 70px rgba(0, 0, 0, .42);

  --ease: cubic-bezier(.22, .61, .36, 1);

  --mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace;
}

* { box-sizing: border-box }


/* 2  Seite & Grundlayout =================================================== */

html, body {
  min-height: 100%;
  color: var(--text);
  background:
    radial-gradient(900px 520px at 12% -8%,  rgba(23, 60, 91, .85) 0, transparent 70%),
    radial-gradient(700px 420px at 92% 4%,   rgba(97, 230, 255, .07) 0, transparent 70%),
    linear-gradient(155deg, #07111f 0, #0b1829 52%, #060f1b 100%);
  background-attachment: fixed;
}

body {
  max-width: 1240px;
  margin: 0 auto;
  padding: 26px 18px 56px;
  font: 15px/1.55 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}

/* Rasterschleier über der gesamten Seite */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .1;
  background-image:
    linear-gradient(rgba(255, 255, 255, .07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .07) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: linear-gradient(to bottom, #000, transparent 70%);
}

a       { color: var(--cyan); text-decoration: none; transition: color .15s var(--ease) }
a:hover { color: #9df1ff; text-decoration: none }

::selection { background: rgba(97, 230, 255, .28); color: #fff }

:focus-visible {
  outline: 2px solid var(--cyan);
  outline-offset: 2px;
  border-radius: 6px;
}

/* Scrollleisten passend zum Theme */
* { scrollbar-width: thin; scrollbar-color: rgba(155, 190, 220, .28) transparent }
*::-webkit-scrollbar               { width: 10px; height: 10px }
*::-webkit-scrollbar-track         { background: transparent }
*::-webkit-scrollbar-thumb         { background: rgba(155, 190, 220, .24); border: 3px solid transparent; background-clip: content-box; border-radius: 99px }
*::-webkit-scrollbar-thumb:hover   { background: rgba(155, 190, 220, .4); background-clip: content-box }


/* 3  Kopfbereich =========================================================== */

.page-header {
  position: relative;
  overflow: hidden;
  margin: 0 0 22px;
  padding: 32px 34px 26px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(35, 68, 104, .5) 0, rgba(15, 30, 51, .84) 60%);
  box-shadow: var(--shadow);
  backdrop-filter: blur(16px);
}

/* Leuchtender Rand oben */
.page-header::after {
  content: "";
  position: absolute;
  top: 0; left: 12%; right: 12%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(97, 230, 255, .65), transparent);
}

.page-header h1 {
  margin: 0;
  text-align: center;
  color: var(--text);
  font-size: clamp(1.9rem, 4.6vw, 3.4rem);
  font-weight: 760;
  line-height: 1.02;
  letter-spacing: -.045em;
  text-wrap: balance;
}

.page-header h1 small {
  color: var(--muted);
  font-size: .34em;
  font-weight: 500;
  letter-spacing: 0;
}

.page-header hr {
  margin: 22px 0 16px;
  border: 0;
  border-top: 1px solid var(--line);
}

.page-header h5 {
  margin: 0;
  color: var(--muted);
  font-size: .88rem;
  font-weight: 400;
  line-height: 1.7;
}

.header-action-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

/* DMR-Id als Chip statt als loser Text */
.header-dmr-id {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  border: 1px solid var(--line);
  border-radius: 99px;
  background: var(--panel2);
  color: var(--muted);
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .02em;
  white-space: nowrap;
}

.header-dmr-id::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--ok);
  box-shadow: 0 0 0 3px rgba(85, 214, 138, .18);
}

.header-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.header-actions .admin-links,
.admin-links {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
}

.header-actions form { margin: 0 }


/* 4  Panels ================================================================ */

.panel {
  position: relative;
  margin-bottom: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--panel);
  box-shadow: var(--shadow);
  overflow: hidden;
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}

.panel:hover {
  border-color: rgba(155, 190, 220, .26);
  box-shadow: var(--shadow-hi);
}

/* Bewusst kein Flexbox hier: die Panel-Überschriften der mitgelieferten
   Includes (sysinfo, disk, repeaterinfo) haben unbekanntes Markup, das durch
   ein Flex-Layout umbrechen würde. Akzentstrich daher absolut positioniert,
   .pull-right bleibt der normale Bootstrap-Float. */
.panel-heading {
  position: relative;
  padding: 14px 20px 14px 34px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--line) !important;
  border-radius: 0 !important;
  background: linear-gradient(180deg, rgba(97, 230, 255, .05), transparent) !important;
  color: var(--text) !important;
  font-size: .82rem !important;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

/* Akzentstrich links neben jeder Überschrift */
.panel-heading::before {
  content: "";
  position: absolute;
  top: 50%; left: 20px;
  width: 3px;
  height: 15px;
  margin-top: -7px;
  border-radius: 99px;
  background: var(--cyan);
  box-shadow: 0 0 10px rgba(97, 230, 255, .55);
}

/* Float des Aufklapp-Pfeils einfangen */
.panel-heading::after { content: ""; display: table; clear: both }

.panel-heading .clickable {
  color: var(--muted);
  cursor: pointer;
  transition: color .15s var(--ease), transform .2s var(--ease);
}

.panel-heading .clickable:hover        { color: var(--cyan) }
.panel-heading .clickable.panel-collapsed { transform: translateY(1px) }

.panel-body {
  padding: 16px 20px;
  background: transparent;
}


/* 5  Tabellen ============================================================== */

.table-responsive { border: 0 !important; margin: 0 }

.table {
  margin: 0;
  color: var(--text);
  background: transparent;
}

.table > thead > tr > th {
  padding: 9px 12px;
  border-bottom: 1px solid var(--line) !important;
  color: var(--muted);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
  background: transparent;
}

.table > tbody > tr > td,
.table > tbody > tr > th {
  padding: 9px 12px;
  border-top: 1px solid var(--line-soft) !important;
  vertical-align: middle;
  background: transparent;
  color: var(--text);
}

.table > tbody > tr:first-child > td,
.table > tbody > tr:first-child > th { border-top: 0 !important }

/* Streifen und Hover gehören auf das tr, NICHT auf die Zellen.
   DataTables setzt background-color:#f9f9f9 auf tr.odd; da unsere Zellen
   transparent sind, schlüge das sonst als weiße Zeile durch. */
.table > tbody > tr,
table.dataTable tbody tr { background-color: transparent !important }

.table-striped > tbody > tr:nth-of-type(odd),
table.dataTable.stripe tbody tr.odd,
table.dataTable.display tbody tr.odd { background-color: rgba(97, 230, 255, .03) !important }

.table-hover > tbody > tr:hover,
table.dataTable.hover tbody tr:hover,
table.dataTable.display tbody tr:hover { background-color: rgba(97, 230, 255, .085) !important }

/* DataTables hebt zusätzlich die sortierte Spalte hell hervor – ebenfalls
   überschreiben, sonst leuchtet eine einzelne Spalte weiß auf. */
table.dataTable.stripe tbody tr.odd > .sorting_1,
table.dataTable.display tbody tr.odd > .sorting_1,
table.dataTable.stripe tbody tr.even > .sorting_1,
table.dataTable.display tbody tr.even > .sorting_1,
table.dataTable.order-column tbody tr > .sorting_1,
table.dataTable.display tbody tr:hover > .sorting_1 { background-color: transparent !important }

.table > tbody > tr > td a { color: var(--cyan) }

.nowrap { white-space: nowrap }

/* Zahlenspalten in Tabellenschrift – Zeiten und Werte fluchten dadurch */
.lastHeard  td:first-child,
.curTx      td:first-child,
.lastHeard  td:nth-last-child(-n+3),
.curTx      td:last-child {
  font-family: var(--mono);
  font-size: .92em;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}

/* Kompakte "Heute gehört"-Liste */
.lastHeard { font-size: .84rem; white-space: nowrap }
.lastHeard > thead > tr > th,
.lastHeard > tbody > tr > td { padding: 7px 10px !important }

/* Laufende Aussendung: grüner Marker links + sanftes Pulsieren.
   :not([colspan]) schließt eine eventuelle Platzhalterzeile ("keine
   Aussendung") aus – die soll keinen Aktiv-Marker bekommen. */
.curTx > tbody > tr > td:first-child:not([colspan]) { position: relative; padding-left: 20px }

.curTx > tbody > tr > td:first-child:not([colspan])::before {
  content: "";
  position: absolute;
  top: 50%; left: 6px;
  width: 6px; height: 6px;
  margin-top: -3px;
  border-radius: 50%;
  background: var(--ok);
  animation: tx-pulse 1.6s ease-in-out infinite;
}

@keyframes tx-pulse {
  0%, 100% { box-shadow: 0 0 0 0   rgba(85, 214, 138, .5) }
  50%      { box-shadow: 0 0 0 6px rgba(85, 214, 138, 0)  }
}


/* 6  DataTables-Bedienelemente ============================================ */
/* Ohne diesen Block bleiben Suchfeld, Blätterleiste und Info-Zeile
   im hellen Standarddesign von DataTables 1.10 stehen. */

.dataTables_wrapper { position: relative; padding: 0 }

.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_paginate {
  color: var(--muted) !important;
  font-size: .8rem;
}

.dataTables_wrapper .dataTables_length { margin-bottom: 10px }
.dataTables_wrapper .dataTables_filter { margin-bottom: 10px }
.dataTables_wrapper .dataTables_info   { padding-top: 14px }

.dataTables_wrapper .dataTables_length select,
.dataTables_wrapper .dataTables_filter input {
  min-height: 32px;
  margin-left: 6px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel2);
  color: var(--text);
  outline: none;
  transition: border-color .15s var(--ease), box-shadow .15s var(--ease);
}

.dataTables_wrapper .dataTables_filter input { min-width: 200px }

.dataTables_wrapper .dataTables_length select:focus,
.dataTables_wrapper .dataTables_filter input:focus {
  border-color: rgba(97, 230, 255, .5);
  box-shadow: 0 0 0 3px rgba(97, 230, 255, .12);
}

.dataTables_wrapper .dataTables_paginate { padding-top: 12px }

.dataTables_wrapper .dataTables_paginate .paginate_button {
  min-width: 32px;
  margin: 0 2px;
  padding: 5px 11px;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius-sm) !important;
  background: var(--panel2) !important;
  color: var(--muted) !important;
  font-size: .8rem;
  cursor: pointer;
  transition: color .15s var(--ease), border-color .15s var(--ease), background .15s var(--ease);
}

.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
  border-color: rgba(97, 230, 255, .45) !important;
  background: rgba(42, 76, 111, .8) !important;
  color: var(--text) !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  border-color: rgba(97, 230, 255, .5) !important;
  background: rgba(97, 230, 255, .14) !important;
  color: var(--cyan) !important;
  font-weight: 700;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
  border-color: var(--line-soft) !important;
  background: transparent !important;
  color: rgba(155, 177, 197, .35) !important;
  cursor: default;
}

/* Sortierpfeile: Standardgrafiken raus, eigene Marker rein */
table.dataTable thead th.sorting,
table.dataTable thead th.sorting_asc,
table.dataTable thead th.sorting_desc {
  position: relative;
  padding-right: 24px !important;
  background-image: none !important;
  cursor: pointer;
}

table.dataTable thead th.sorting::after,
table.dataTable thead th.sorting_asc::after,
table.dataTable thead th.sorting_desc::after {
  position: absolute;
  right: 9px;
  bottom: 8px;
  font-size: .75rem;
  line-height: 1;
}

table.dataTable thead th.sorting::after     { content: "\2195"; color: rgba(155, 177, 197, .35) }
table.dataTable thead th.sorting_asc::after { content: "\2191"; color: var(--cyan) }
table.dataTable thead th.sorting_desc::after{ content: "\2193"; color: var(--cyan) }

table.dataTable thead th.sorting:hover { color: var(--text) }

table.dataTable.no-footer { border-bottom: 0 !important }

.dataTables_wrapper .dataTables_empty,
td.dataTables_empty {
  padding: 26px 12px !important;
  color: var(--muted) !important;
  text-align: center;
  font-style: italic;
}

.dataTables_wrapper .dataTables_processing {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel);
  color: var(--text);
  box-shadow: var(--shadow);
}


/* 7  Formulare & Buttons =================================================== */

.form-control {
  height: auto;
  min-height: 38px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel2) !important;
  color: var(--text) !important;
  box-shadow: none;
  transition: border-color .15s var(--ease), box-shadow .15s var(--ease);
}

.form-control:focus {
  border-color: rgba(97, 230, 255, .5);
  box-shadow: 0 0 0 3px rgba(97, 230, 255, .12);
}

.form-control::placeholder { color: rgba(155, 177, 197, .55) }

select.form-control  { appearance: none; padding-right: 30px;
  background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%),
                    linear-gradient(135deg, var(--muted) 50%, transparent 50%) !important;
  background-position: calc(100% - 16px) calc(50% + 1px), calc(100% - 11px) calc(50% + 1px) !important;
  background-size: 5px 5px, 5px 5px !important;
  background-repeat: no-repeat !important;
}

/* Betriebssystem-Dropdowns bleiben sonst weiß */
option { background: #0f1e33; color: var(--text) }

label { color: var(--text); font-weight: 600 }

.btn {
  padding: 7px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel2);
  color: var(--text);
  font-size: .85rem;
  font-weight: 600;
  text-shadow: none;
  box-shadow: none;
  transition: border-color .15s var(--ease), background .15s var(--ease),
              color .15s var(--ease), transform .1s var(--ease);
}

.btn:hover,
.btn:focus {
  border-color: rgba(97, 230, 255, .45);
  background: var(--panel-hi);
  color: var(--text);
}

.btn:active { transform: translateY(1px) }

.btn-active {
  border-color: rgba(97, 230, 255, .5) !important;
  background: rgba(97, 230, 255, .14) !important;
  color: var(--cyan) !important;
}

.navbar-btn { margin: 0 }

.btn .glyphicon { opacity: .7; margin-right: 2px }


/* 8  Statusanzeigen ======================================================== */

.badge,
.label {
  padding: 4px 10px;
  border-radius: 99px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .02em;
}

.progress {
  height: 18px;
  margin-bottom: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 99px;
  background: rgba(7, 17, 31, .6) !important;
  box-shadow: none !important;
  overflow: hidden;
}

.progress-bar {
  border-radius: 99px;
  background-image: none;
  box-shadow: none;
  font-size: .7rem;
  font-weight: 700;
  line-height: 16px;
  transition: width .4s var(--ease);
}

.progress-bar-success { background-color: var(--ok)   !important; color: #07111f }
.progress-bar-warning { background-color: var(--live) !important; color: #07111f }
.progress-bar-danger  { background-color: var(--bad)  !important; color: #07111f }
.progress-bar-info    { background-color: var(--cyan) !important; color: #07111f }

.alert {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel2);
  color: var(--text);
}

.alert-danger  { border-color: rgba(255, 143, 154, .35); background: rgba(255, 143, 154, .1) }
.alert-warning { border-color: rgba(255, 209, 102, .35); background: rgba(255, 209, 102, .1) }
.alert-success { border-color: rgba(85, 214, 138, .35);  background: rgba(85, 214, 138, .1) }

.well,
.list-group-item {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel2);
  color: var(--text);
  box-shadow: none;
}

hr { border-top-color: var(--line) }


/* 9  Kachel "MMDVM Informationen" ========================================= */

.active-modes-panel .panel-body { padding: 6px 14px 14px }

.active-modes-table { table-layout: auto; font-size: .85rem }

.active-modes-table > thead > tr > th        { padding: 8px 10px }
.active-modes-table > tbody > tr > th,
.active-modes-table > tbody > tr > td        { padding: 9px 10px !important; vertical-align: middle }

.active-modes-table > tbody > tr > th {
  width: 15%;
  color: var(--text);
  font-weight: 700;
  letter-spacing: .01em;
}

.active-mode-channel {
  width: 12%;
  color: var(--cyan);
  font-family: var(--mono);
  font-size: .92em;
  font-weight: 600;
  white-space: nowrap;
}

.active-mode-detail { color: var(--text); font-weight: 500 }

.active-mode-state {
  width: 1%;
  color: var(--muted);
  font-size: .76rem;
  font-weight: 600;
  text-align: right;
  white-space: nowrap;
}

.mode-state-dot {
  display: inline-block;
  width: 8px; height: 8px;
  margin-right: 7px;
  border-radius: 50%;
  background: #8091a4;
  box-shadow: 0 0 0 3px rgba(128, 145, 164, .14);
  vertical-align: 1px;
}

.active-mode-row { transition: background .15s var(--ease) }

.is-online  .mode-state-dot { background: var(--ok);   box-shadow: 0 0 0 3px rgba(85, 214, 138, .16) }
.is-offline .mode-state-dot { background: var(--bad);  box-shadow: 0 0 0 3px rgba(255, 143, 154, .14) }

.is-offline .active-mode-detail,
.is-offline .active-mode-state { color: var(--bad) }

/* Aktuell laufender Modus wird hervorgehoben */
.is-current > th,
.is-current > td { background: rgba(255, 209, 102, .09) !important }

.is-current > th,
.is-current .active-mode-channel,
.is-current .active-mode-state { color: var(--live) }

.is-current .mode-state-dot {
  background: var(--live);
  box-shadow: 0 0 0 3px rgba(255, 209, 102, .2);
  animation: tx-pulse-live 1.8s ease-in-out infinite;
}

@keyframes tx-pulse-live {
  0%, 100% { box-shadow: 0 0 0 0   rgba(255, 209, 102, .55) }
  50%      { box-shadow: 0 0 0 7px rgba(255, 209, 102, 0)   }
}

.mode-detail {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 500;
  line-height: 1.25;
  white-space: normal;
}


/* 10  Kachel "Raumbuchung" ================================================ */

.booking-panel .panel-body { padding-bottom: 16px }

.booking-login-hint {
  padding: 14px 16px;
  border: 1px dashed var(--line);
  border-radius: var(--radius-sm);
  background: rgba(97, 230, 255, .04);
  color: var(--muted);
  font-size: .88rem;
}

.ysf-switch-control {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(23, 45, 72, .45);
  color: var(--muted);
}

.ysf-switch-control > form:first-child,
.dmrplus-booking form {
  display: grid;
  grid-template-columns: 120px 280px max-content;
  align-items: center;
  gap: 10px;
  margin: 0;
  justify-content: start;
}

.ysf-switch-control > form:first-child label,
.dmrplus-booking form label {
  margin: 0;
  color: var(--text);
  font-size: .82rem;
  font-weight: 700;
}

.dmrplus-booking {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 12px 0 0;
  border-top: 1px solid var(--line-soft);
}

.dmrplus-booking form { flex: 0 0 auto }
.dmrplus-booking > a  { flex: 0 0 auto }

#ysf-reflector-search,
#dmrplus-reflector { width: 280px; min-width: 280px; max-width: 280px }


/* 11  MMDVM-Fernsteuerung ================================================= */

.mmdvm-remote-control {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.mmdvm-remote-title {
  margin-bottom: 10px;
  color: var(--muted);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.mmdvm-remote-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

.mmdvm-remote-row form { margin: 0 }

.mmdvm-remote-control .btn {
  padding: 6px 12px;
  font-size: .78rem;
  font-weight: 600;
}

.mmdvm-remote-message {
  margin-bottom: 12px;
  padding: 10px 14px;
  border: 1px solid rgba(97, 230, 255, .3);
  border-radius: var(--radius-sm);
  background: rgba(97, 230, 255, .08);
  color: var(--text);
  font-size: .85rem;
}

.mmdvm-page-form {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 4px;
}

.mmdvm-page-form .form-control {
  min-height: 32px;
  padding: 4px 10px;
  font-size: .8rem;
}

.mmdvm-page-form input[name="ric"]     { width: 90px; font-family: var(--mono) }
.mmdvm-page-form input[name="message"] { flex: 1 1 220px; min-width: 180px }


/* 12  Fußbereich ========================================================== */

.dashboard-footer .panel-body {
  padding: 14px 20px;
  text-align: center;
}

.footer-status {
  color: var(--muted);
  font-size: .8rem;
}

.service-versions {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line-soft);
  color: rgba(155, 177, 197, .7);
  font-family: var(--mono);
  font-size: .74rem;
}


/* 13  Kleine Viewports ==================================================== */

@media (max-width: 760px) {
  .ysf-switch-control > form:first-child,
  .dmrplus-booking form,
  .dmrplus-booking { grid-template-columns: 1fr }

  .ysf-switch-control > form:first-child,
  .dmrplus-booking form { display: grid; grid-template-columns: 1fr }

  .dmrplus-booking .btn { width: max-content }

  #ysf-reflector-search,
  #dmrplus-reflector { width: 100%; min-width: 0; max-width: none }
}

@media (max-width: 700px) {
  body           { padding: 14px 10px 34px }
  .page-header   { padding: 24px 18px 20px; border-radius: 18px }
  .page-header h1{ font-size: 1.9rem }
  .header-action-row { justify-content: flex-start }
  .header-actions    { justify-content: flex-start }

  .panel-heading { padding: 12px 14px !important; font-size: .76rem !important }
  .panel-body    { padding: 12px 12px }

  .table                  { font-size: .82rem }
  .lastHeard              { font-size: .76rem }
  .active-modes-table     { font-size: .78rem }
  .active-modes-table > tbody > tr > th,
  .active-modes-table > tbody > tr > td { padding: 8px 6px !important }
  .active-mode-state      { font-size: .7rem }
  .mode-state-dot         { margin-right: 5px }

  .dataTables_wrapper .dataTables_filter input { min-width: 0; width: 100% }
  .dataTables_wrapper .dataTables_filter label { display: block }
}


/* 14  Bewegung reduzieren ================================================= */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}

