* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: #f4f5f7;
  color: #202124;
}

header {
  background: #202124;
  color: white;
  padding: 16px 24px;
}

header div {
  max-width: 1200px;
  margin: auto;
  display: flex;
  gap: 16px;
  align-items: center;
}

header strong {
  font-size: 22px;
}

header span {
  opacity: 0.7;
}

main {
  max-width: 1200px;
  margin: 30px auto;
  padding: 0 20px;
}

h1 {
  margin-bottom: 24px;
}

.grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  margin-bottom: 20px;
}

.card {
  background: white;
  border-radius: 10px;
  padding: 22px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
}

.card h2 {
  margin-top: 0;
}

form {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

label {
  margin-top: 8px;
  font-weight: 600;
}

input,
select,
button {
  min-height: 44px;
  font: inherit;
  border-radius: 6px;
}

input,
select {
  padding: 9px 12px;
  border: 1px solid #c9cdd2;
}

button {
  margin-top: 14px;
  padding: 10px 16px;
  border: 0;
  background: #202124;
  color: white;
  cursor: pointer;
  font-weight: 600;
}

button:hover {
  opacity: 0.9;
}

.error {
  background: #ffe4e4;
  border: 1px solid #dc7777;
  padding: 12px;
  margin-bottom: 20px;
  border-radius: 6px;
}

.area {
  padding: 18px 0;
  border-top: 1px solid #ddd;
}

.area:first-of-type {
  border-top: 0;
}

.area h3 {
  margin: 0 0 12px;
}

.tables {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.table-card {
  min-width: 130px;
  padding: 14px;
  border: 1px solid #d5d8dc;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.table-card span {
  font-size: 14px;
  color: #666;
}

.empty {
  color: #777;
}

@media (max-width: 700px) {

  .grid {
    grid-template-columns: 1fr;
  }

  main {
    margin-top: 20px;
    padding: 0 12px;
  }

  .card {
    padding: 16px;
  }

  .table-card {
    flex: 1 1 120px;
  }
}


/* ---------------------------------------------------------
   Navigation
--------------------------------------------------------- */

.header-inner {
  max-width: 1200px;
  margin: auto;
  display: flex;
  align-items: center;
  gap: 30px;
}

nav {
  display: flex;
  gap: 8px;
}

nav a {
  color: #ddd;
  text-decoration: none;
  padding: 8px 12px;
  border-radius: 6px;
}

nav a:hover {
  background: rgba(255,255,255,0.1);
}

nav a.active {
  background: white;
  color: #202124;
}


/* ---------------------------------------------------------
   Artikel
--------------------------------------------------------- */

.category {
  padding: 18px 0;
  border-top: 1px solid #ddd;
}

.category:first-of-type {
  border-top: 0;
}

.category h3 {
  margin: 0 0 12px;
}

.product-list {
  display: flex;
  flex-direction: column;
}

.product-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;

  padding: 12px 4px;

  border-top: 1px solid #eee;
}

.product-row:first-child {
  border-top: 0;
}

.product-name {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.product-name span {
  color: #777;
  font-size: 13px;
}

.product-price {
  white-space: nowrap;
  font-weight: 700;
  font-size: 17px;
}


@media (max-width: 700px) {

  .header-inner {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }

  nav {
    width: 100%;
  }

  nav a {
    flex: 1;
    text-align: center;
  }

}


/* =========================================================
   Service
========================================================= */

.service-area {
  margin-bottom: 32px;
}

.service-area h2 {
  margin-bottom: 14px;
}

.service-tables {
  display: grid;
  grid-template-columns:
    repeat(auto-fill, minmax(145px, 1fr));
  gap: 12px;
}

.service-table-form {
  display: block;
}

.service-table {
  width: 100%;
  min-height: 115px;

  padding: 16px;

  border-radius: 10px;
  border: 2px solid #d5d8dc;

  background: white;
  color: #202124;

  text-decoration: none;

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;

  gap: 5px;
}

button.service-table {
  margin: 0;
  cursor: pointer;
}

.service-table strong {
  font-size: 20px;
}

.service-table.free {
  background: white;
}

.service-table.occupied {
  border-width: 2px;
  background: #f1f3f4;
}

.service-total {
  margin-top: 6px;
  font-size: 18px;
  font-weight: 700;
}


/* =========================================================
   Bestellung
========================================================= */

.order-page {
  max-width: 1500px;
}

.order-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;

  margin-bottom: 20px;
}

.order-heading h1 {
  margin: 2px 0;
}

.order-area {
  color: #777;
}

.order-status {
  background: white;
  padding: 10px 14px;
  border-radius: 8px;
}

.order-layout {
  display: grid;

  grid-template-columns:
    minmax(0, 2fr)
    minmax(320px, 1fr);

  gap: 20px;
}

.order-products,
.current-order {
  background: white;

  padding: 18px;

  border-radius: 10px;

  box-shadow:
    0 1px 4px rgba(0,0,0,0.12);
}

.order-category {
  margin-bottom: 25px;
}

.order-category h3 {
  margin-bottom: 10px;
}

.product-buttons {
  display: grid;

  grid-template-columns:
    repeat(auto-fill, minmax(135px, 1fr));

  gap: 10px;
}

.product-buttons form {
  display: block;
}

.product-button {
  width: 100%;
  min-height: 90px;

  margin: 0;

  padding: 10px;

  background: #f4f5f7;
  color: #202124;

  border: 1px solid #d5d8dc;

  display: flex;
  flex-direction: column;
  justify-content: center;

  gap: 6px;
}

.product-button strong {
  font-size: 16px;
}

.product-button span {
  font-size: 14px;
  color: #555;
}


/* ---------------------------------------------------------
   Bestellposition
--------------------------------------------------------- */

.order-item {
  padding: 12px 0;

  border-bottom:
    1px solid #e2e4e7;
}

.order-item-main {
  display: flex;
  gap: 7px;
}

.item-quantity {
  min-width: 35px;
}

.order-item-bottom {
  margin-top: 7px;

  display: flex;
  align-items: center;

  gap: 10px;
}

.item-status {
  font-size: 12px;

  background: #eceff1;

  padding: 3px 6px;

  border-radius: 4px;
}

.quantity-buttons {
  display: flex;
  gap: 4px;
}

.quantity-buttons form {
  display: block;
}

.quantity-buttons button {
  margin: 0;

  min-height: 32px;
  width: 34px;

  padding: 2px;

  font-size: 20px;
}

.item-price {
  margin-left: auto;
}


/* ---------------------------------------------------------
   Summe
--------------------------------------------------------- */

.order-total {
  margin-top: 20px;

  padding-top: 15px;

  border-top:
    2px solid #202124;

  display: flex;
  justify-content: space-between;

  font-size: 20px;
}

.send-order {
  width: 100%;

  min-height: 55px;

  margin-top: 20px;

  font-size: 17px;
}

.checkout-ready {
  width: 100%;

  min-height: 50px;

  background: #555;
}

.checkout-note {
  text-align: center;
  color: #777;
  font-size: 12px;
}


@media (max-width: 850px) {

  .order-layout {
    grid-template-columns: 1fr;
  }

  .current-order {
    order: -1;
  }

}


@media (max-width: 600px) {

  .service-tables {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  .product-buttons {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  .order-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }

}


/* =========================================================
   Produktionsrouting
========================================================= */

.routing-list {
  display: flex;
  flex-direction: column;
}

.routing-row {
  display: grid;
  grid-template-columns: 1fr 220px auto;
  gap: 15px;
  align-items: center;

  padding: 12px 0;
  border-bottom: 1px solid #eee;
}

.routing-row > div:first-child {
  display: flex;
  flex-direction: column;
}

.routing-row small {
  color: #777;
}

.routing-target {
  display: flex;
  gap: 10px;
}

.small-button {
  min-height: 34px;
  margin: 0;
  padding: 5px 10px;
}


/* =========================================================
   Produktionsstationen
========================================================= */

.station-grid {
  display: grid;
  grid-template-columns:
    repeat(auto-fill, minmax(180px, 1fr));
  gap: 15px;
}

.station-card {
  min-height: 130px;

  background: white;

  border: 2px solid #ddd;
  border-radius: 10px;

  color: #202124;
  text-decoration: none;

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;

  gap: 8px;

  padding: 20px;
}

.station-card strong {
  font-size: 22px;
}

.station-card span {
  color: #666;
}


/* =========================================================
   Produktionsbons
========================================================= */

.production-page {
  max-width: 1600px;
}

.ticket-grid {
  display: grid;

  grid-template-columns:
    repeat(auto-fill, minmax(280px, 1fr));

  gap: 15px;
}

.production-ticket {
  background: white;

  border-radius: 10px;

  border-top: 7px solid #777;

  padding: 16px;

  box-shadow:
    0 2px 7px rgba(0,0,0,0.15);
}

.production-ticket.status-preparing {
  border-top-width: 9px;
}

.production-ticket.status-ready {
  border-top-width: 12px;
}

.ticket-header {
  display: flex;
  justify-content: space-between;

  font-size: 21px;
}

.ticket-header span {
  font-size: 13px;
  color: #777;
}

.ticket-time {
  margin: 4px 0 15px;

  font-size: 14px;

  color: #555;
}

.ticket-items {
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;

  padding: 8px 0;
}

.ticket-item {
  padding: 8px 0;

  display: flex;
  flex-direction: column;
}

.ticket-item strong {
  font-size: 18px;
}

.ticket-item span {
  margin-top: 3px;

  font-weight: 700;
}

.ticket-actions {
  margin-top: 15px;

  display: flex;
  gap: 8px;
}

.ticket-actions form {
  flex: 1;
}

.ticket-actions button {
  width: 100%;

  margin: 0;

  min-height: 50px;
}

.ready-button {
  font-size: 17px;
}


@media (max-width: 700px) {

  .routing-row {
    grid-template-columns: 1fr;
  }

  .ticket-grid {
    grid-template-columns: 1fr;
  }

}


/* =========================================================
   Print Queue
========================================================= */

.print-job-row {
  display: grid;

  grid-template-columns:
    minmax(180px, 1fr)
    120px
    minmax(140px, 1fr)
    auto;

  gap: 15px;

  align-items: center;

  padding: 12px 0;

  border-bottom:
    1px solid #eee;
}

.print-job-row > div {
  display: flex;
  flex-direction: column;
}

.print-job-row span {
  color: #666;
}

.print-status {
  font-weight: 700;
}

@media (max-width: 700px) {

  .print-job-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }

}

/* Abstand zwischen den Bereichen der Druckerverwaltung */
.printing-page > .card + .card {
  margin-top: 20px;
}


/* =========================================================
   Modifier
========================================================= */

.modifier-group-admin {
  padding: 12px 0;
  border-bottom: 1px solid #eee;

  display: flex;
  flex-direction: column;
  gap: 5px;
}

.modifier-group-admin small {
  color: #666;
}

.modifier-option-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.modifier-option-list span {
  background: #f1f3f4;
  padding: 5px 8px;
  border-radius: 5px;
}


.product-button-link {
  text-decoration: none;
}

.product-button-link small {
  font-size: 11px;
  opacity: .7;
}


.modifier-config-page {
  max-width: 900px;
}

.modifier-base-price {
  font-size: 18px;
}

.modifier-selection-group {
  margin-bottom: 15px;
}

.modifier-rule {
  color: #666;
  margin-top: -8px;
}


.modifier-choice-grid {
  display: grid;

  grid-template-columns:
    repeat(auto-fill, minmax(170px, 1fr));

  gap: 8px;
}

.modifier-choice {
  margin: 0;

  min-height: 60px;

  border: 1px solid #d5d8dc;
  border-radius: 8px;

  padding: 10px;

  display: flex;
  align-items: center;
  gap: 10px;

  cursor: pointer;
}

.modifier-choice input {
  min-height: unset;
  width: 20px;
  height: 20px;
}

.modifier-choice span {
  display: flex;
  flex-direction: column;
}

.modifier-choice small {
  color: #666;
}


.modifier-note {
  margin-top: 15px;
}

.modifier-note textarea {
  width: 100%;
  margin-top: 8px;

  padding: 10px;

  font: inherit;

  border:
    1px solid #c9cdd2;

  border-radius: 6px;

  resize: vertical;
}


.modifier-add-button {
  width: 100%;
  min-height: 60px;
  font-size: 18px;
}


.order-item-description {
  display: flex;
  flex-direction: column;
}

.order-item-modifiers {
  display: flex;
  flex-direction: column;

  margin-top: 4px;

  font-size: 13px;
  color: #555;
}

.order-item-note {
  margin-top: 4px;

  font-size: 13px;
  font-weight: 700;
}


.item-note-form {
  margin-top: 8px;

  display: grid;

  grid-template-columns:
    1fr auto;

  gap: 5px;
}

.item-note-form input {
  min-height: 34px;
}

.item-note-form button {
  margin: 0;
  min-height: 34px;
  padding: 4px 10px;
}


/* =========================================================
   Servierstatus
========================================================= */

.order-item-ready {
  border-left: 5px solid #333;
  padding-left: 10px;
}

.order-item-served {
  opacity: .65;
}

.served-item-form {
  display: block;
}

.served-item-button {
  margin: 0;
  min-height: 34px;
  padding: 5px 10px;
}

.served-all-button {
  width: 100%;
  min-height: 52px;
  margin-top: 12px;
}

.checkout-ready-box {
  margin-top: 18px;
  padding: 14px;

  border: 2px solid #333;
  border-radius: 8px;

  text-align: center;
}

.checkout-ready-box p {
  margin-bottom: 0;
  color: #666;
}

.close-order-button {
  width: 100%;
  min-height: 55px;
  margin-top: 12px;

  font-size: 16px;
}


/* =========================================================
   Bearbeiten / Archivieren
========================================================= */

.edit-page {
  max-width: 700px;
}

.inactive-item {
  opacity: .55;
}

.inactive-label {
  font-size: 12px;
  font-weight: 700;
}

.inactive-warning {
  margin-bottom: 18px;

  padding: 10px;

  background: #f1f3f4;

  border-radius: 6px;

  font-weight: 600;
}


.product-row {
  grid-template-columns:
    minmax(0, 1fr)
    120px
    auto;
}

.product-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.product-actions form {
  display: block;
}

.action-link {
  display: inline-flex;

  min-height: 34px;

  align-items: center;

  padding: 5px 10px;

  border-radius: 5px;

  background: #eceff1;
  color: #202124;

  text-decoration: none;

  font-size: 14px;
  font-weight: 600;
}

.danger-button {
  background: #555;
}


.modifier-option-list {
  display: flex;
  flex-direction: column;

  gap: 7px;
}

.modifier-option-admin {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 15px;

  padding: 8px 10px;

  background: #f1f3f4;

  border-radius: 6px;
}

.modifier-option-admin > div:first-child {
  display: flex;
  flex-wrap: wrap;

  align-items: center;

  gap: 7px;
}

.modifier-option-actions {
  display: flex;
  gap: 6px;
}

.modifier-option-actions form {
  display: block;
}


@media (max-width: 700px) {

  .product-row {
    grid-template-columns: 1fr;
  }

  .product-actions {
    margin-top: 5px;
  }

  .modifier-option-admin {
    align-items: flex-start;
    flex-direction: column;
  }

}

/* =========================================================
   Artikelübersicht – Preise exakt ausrichten
========================================================= */

.product-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px auto;
  gap: 18px;
  align-items: center;
}

.product-price {
  width: 110px;
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 700px) {

  .product-row {
    grid-template-columns: minmax(0, 1fr) 100px;
  }

  .product-price {
    width: 100px;
  }

  .product-actions {
    grid-column: 1 / -1;
  }

}


/* =========================================================
   Warengruppenverwaltung
========================================================= */

.category-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;

  gap: 15px;

  margin-bottom: 12px;
}

.category-heading h3 {
  margin: 0;
}

.category-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.category-actions form {
  display: block;
}

.category:not(:has(.category-heading .inactive-label)) {
  opacity: 1;
}


@media (max-width: 700px) {

  .category-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .category-actions {
    flex-wrap: wrap;
  }

}


/* =========================================================
   Bereiche / Tische verwalten
========================================================= */

.area-management-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;

  gap: 15px;

  margin-bottom: 14px;
}

.area-management-heading h3 {
  margin: 0;
}

.management-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.management-actions form,
.table-admin-actions form {
  display: block;
}


.admin-table-card {
  min-width: 220px;

  justify-content: space-between;
}

.admin-table-card > div:first-child {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.table-admin-actions {
  display: flex;
  flex-wrap: wrap;

  gap: 5px;

  margin-top: 12px;
}

.table-admin-actions .action-link,
.table-admin-actions .small-button {
  font-size: 12px;
}

.table-admin-actions .small-button {
  min-height: 32px;
  margin: 0;
}


@media (max-width: 700px) {

  .area-management-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .management-actions {
    flex-wrap: wrap;
  }

  .admin-table-card {
    min-width: 100%;
  }

}


/* =========================================================
   Tischkombinationen
========================================================= */

.combined-table {
  border-width: 3px;
}

.combined-member {
  opacity: .75;
}

.combined-table-list {
  font-size: 13px;
  font-weight: 700;
}


.table-combination {
  margin-top: 25px;

  padding-top: 18px;

  border-top:
    1px solid #ddd;
}

.table-combination h3 {
  margin-top: 0;
}

.assigned-tables {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.assigned-table {
  display: flex;
  justify-content: space-between;
  align-items: center;

  padding: 7px 0;
}

.assigned-table > span {
  display: flex;
  flex-direction: column;
}

.assigned-table small {
  color: #666;
}

.assigned-table form {
  display: block;
}

.assigned-table button {
  margin: 0;
}


.merge-tables {
  margin-top: 15px;
}

.merge-tables summary {
  cursor: pointer;
  font-weight: 600;
}

.merge-table-list {
  display: grid;

  grid-template-columns:
    repeat(
      auto-fill,
      minmax(150px, 1fr)
    );

  gap: 7px;

  margin-top: 12px;
}

.merge-table-list label,
.reservation-table-select label {
  margin: 0;

  display: flex;
  align-items: center;

  gap: 8px;

  padding: 8px;

  border:
    1px solid #ddd;

  border-radius: 6px;

  cursor: pointer;
}

.merge-table-list input,
.reservation-table-select input {
  width: 18px;
  height: 18px;
  min-height: auto;
}

.merge-table-list span,
.reservation-table-select span {
  display: flex;
  flex-direction: column;
}


/* =========================================================
   Reservierungen
========================================================= */

.reservations-page {
  max-width: 1400px;
}

.reservation-layout {
  display: grid;

  grid-template-columns:
    minmax(320px, 420px)
    minmax(0, 1fr);

  gap: 20px;

  align-items: start;
}

.reservation-table-select {
  max-height: 300px;

  overflow-y: auto;

  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 6px;
}

.reservation-table-select small {
  color: #666;
}

.reservations-page textarea {
  width: 100%;

  padding: 10px;

  font: inherit;

  border:
    1px solid #c9cdd2;

  border-radius: 6px;
}


.reservation-list {
  display: flex;
  flex-direction: column;

  gap: 12px;
}

.reservation-card {
  background: white;

  border-radius: 10px;

  padding: 18px;

  box-shadow:
    0 1px 4px
    rgba(0, 0, 0, .12);

  display: grid;

  grid-template-columns:
    90px minmax(0, 1fr);

  gap: 18px;
}

.reservation-time {
  display: flex;
  flex-direction: column;
}

.reservation-time strong {
  font-size: 25px;
}

.reservation-time span {
  color: #666;
}


.reservation-heading {
  display: flex;
  justify-content: space-between;

  gap: 10px;
}

.reservation-heading h2 {
  margin: 0;
}

.reservation-status {
  font-size: 12px;
  font-weight: 700;

  background: #eceff1;

  padding: 4px 7px;

  border-radius: 5px;
}


.reservation-tables {
  display: flex;
  flex-wrap: wrap;

  gap: 5px;
}

.reservation-tables span {
  background: #f1f3f4;

  padding: 5px 8px;

  border-radius: 5px;

  font-weight: 600;
}

.reservation-note {
  font-style: italic;
}


.reservation-actions {
  display: flex;
  flex-wrap: wrap;

  gap: 7px;

  margin-top: 15px;
}

.reservation-actions form {
  display: block;
}

.reservation-actions button {
  margin: 0;
}


@media (max-width: 850px) {

  .reservation-layout {
    grid-template-columns: 1fr;
  }

}


@media (max-width: 600px) {

  .reservation-card {
    grid-template-columns: 1fr;
  }

  .reservation-table-select {
    grid-template-columns: 1fr;
  }

}


/* =========================================================
   Login
========================================================= */

.login-body {
  min-height: 100vh;

  display: flex;
  justify-content: center;

  background: #f4f5f7;
}

.login-page {
  width: 100%;
  max-width: 850px;

  margin: auto;

  padding: 30px 20px;
}

.login-title {
  text-align: center;

  margin-bottom: 25px;
}

.login-title h1 {
  margin-bottom: 4px;

  font-size: 38px;
}

.login-title p {
  margin-top: 0;

  color: #666;
}

.login-grid {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 20px;
}

.login-help {
  color: #666;

  margin-top: -5px;
}


@media (max-width: 650px) {

  .login-grid {
    grid-template-columns: 1fr;
  }

}


/* =========================================================
   Benutzerverwaltung
========================================================= */

.users-page {
  max-width: 1400px;
}

.user-admin-layout {
  display: grid;

  grid-template-columns:
    minmax(300px, 420px)
    minmax(0, 1fr);

  gap: 20px;

  align-items: start;
}

.user-list {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.user-row {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 15px;

  padding: 11px 0;

  border-bottom:
    1px solid #e2e4e7;
}

.user-row:last-child {
  border-bottom: 0;
}

.user-main {
  display: flex;
  flex-direction: column;

  gap: 2px;
}

.user-main > span {
  color: #555;
}

.user-main small {
  color: #777;
}

.user-actions {
  display: flex;
  align-items: center;

  gap: 6px;

  flex-shrink: 0;
}

.user-actions form {
  display: block;
}

.user-actions button {
  margin: 0;
}

.user-security-card {
  margin-top: 20px;
}


@media (max-width: 850px) {

  .user-admin-layout {
    grid-template-columns: 1fr;
  }

}


@media (max-width: 600px) {

  .user-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .user-actions {
    flex-wrap: wrap;
  }

}


/* =========================================================
   Gemeinsame rollenabhängige Navigation
========================================================= */

.brand {
  color: inherit;
  text-decoration: none;
  font-weight: 800;
  font-size: 20px;
}

.header-inner {
  display: flex;
  align-items: center;
  gap: 20px;
}

.main-nav {
  display: flex;
  align-items: center;
  gap: 5px;

  flex: 1;
}

.main-nav > a,
.nav-admin-menu > summary {
  display: inline-flex;
  align-items: center;

  min-height: 38px;

  padding: 6px 10px;

  border-radius: 6px;

  cursor: pointer;

  text-decoration: none;

  color: inherit;

  font-weight: 600;
}

.main-nav > a.active,
.nav-admin-menu[open] > summary {
  background: rgba(255, 255, 255, .16);
}


.nav-admin-menu {
  position: relative;
}

.nav-admin-menu > summary {
  list-style: none;
}

.nav-admin-menu > summary::-webkit-details-marker {
  display: none;
}

.nav-admin-menu > summary::after {
  content: "▾";

  margin-left: 6px;

  font-size: 11px;
}


.nav-dropdown {
  position: absolute;

  z-index: 100;

  top: calc(100% + 5px);
  left: 0;

  min-width: 210px;

  padding: 6px;

  background: white;
  color: #202124;

  border-radius: 8px;

  box-shadow:
    0 4px 18px
    rgba(0, 0, 0, .2);
}

.nav-dropdown a {
  display: block;

  padding: 9px 10px;

  border-radius: 5px;

  color: inherit;

  text-decoration: none;

  white-space: nowrap;
}

.nav-dropdown a:hover,
.nav-dropdown a.active {
  background: #eef0f2;
}


.current-user {
  display: flex;
  align-items: center;

  gap: 12px;

  margin-left: auto;
}

.current-user > div {
  display: flex;
  flex-direction: column;

  text-align: right;
}

.current-user small {
  opacity: .75;
}

.logout-link {
  display: inline-flex;

  min-height: 34px;

  align-items: center;

  padding: 5px 9px;

  border-radius: 5px;

  color: inherit;

  text-decoration: none;

  border: 1px solid
    rgba(255, 255, 255, .3);
}


@media (max-width: 900px) {

  .header-inner {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .main-nav {
    order: 3;

    width: 100%;

    flex-basis: 100%;

    flex-wrap: wrap;
  }

  .current-user {
    margin-left: auto;
  }

}


@media (max-width: 600px) {

  .current-user > div {
    display: none;
  }

  .nav-dropdown {
    position: fixed;

    left: 10px;
    right: 10px;
    top: auto;

    min-width: 0;
  }

}


/* =========================================================
   Gemeinsame rollenabhängige Navigation
========================================================= */

.brand {
  color: inherit;
  text-decoration: none;
  font-weight: 800;
  font-size: 20px;
}

.header-inner {
  display: flex;
  align-items: center;
  gap: 20px;
}

.main-nav {
  display: flex;
  align-items: center;
  gap: 5px;

  flex: 1;
}

.main-nav > a,
.nav-admin-menu > summary {
  display: inline-flex;
  align-items: center;

  min-height: 38px;

  padding: 6px 10px;

  border-radius: 6px;

  cursor: pointer;

  text-decoration: none;

  color: inherit;

  font-weight: 600;
}

.main-nav > a.active,
.nav-admin-menu[open] > summary {
  background: rgba(255, 255, 255, .16);
}


.nav-admin-menu {
  position: relative;
}

.nav-admin-menu > summary {
  list-style: none;
}

.nav-admin-menu > summary::-webkit-details-marker {
  display: none;
}

.nav-admin-menu > summary::after {
  content: "▾";

  margin-left: 6px;

  font-size: 11px;
}


.nav-dropdown {
  position: absolute;

  z-index: 100;

  top: calc(100% + 5px);
  left: 0;

  min-width: 210px;

  padding: 6px;

  background: white;
  color: #202124;

  border-radius: 8px;

  box-shadow:
    0 4px 18px
    rgba(0, 0, 0, .2);
}

.nav-dropdown a {
  display: block;

  padding: 9px 10px;

  border-radius: 5px;

  color: inherit;

  text-decoration: none;

  white-space: nowrap;
}

.nav-dropdown a:hover,
.nav-dropdown a.active {
  background: #eef0f2;
}


.current-user {
  display: flex;
  align-items: center;

  gap: 12px;

  margin-left: auto;
}

.current-user > div {
  display: flex;
  flex-direction: column;

  text-align: right;
}

.current-user small {
  opacity: .75;
}

.logout-link {
  display: inline-flex;

  min-height: 34px;

  align-items: center;

  padding: 5px 9px;

  border-radius: 5px;

  color: inherit;

  text-decoration: none;

  border: 1px solid
    rgba(255, 255, 255, .3);
}


@media (max-width: 900px) {

  .header-inner {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .main-nav {
    order: 3;

    width: 100%;

    flex-basis: 100%;

    flex-wrap: wrap;
  }

  .current-user {
    margin-left: auto;
  }

}


@media (max-width: 600px) {

  .current-user > div {
    display: none;
  }

  .nav-dropdown {
    position: fixed;

    left: 10px;
    right: 10px;
    top: auto;

    min-width: 0;
  }

}


/* =========================================================
   Gästezahl
========================================================= */

.guest-count-box {
  display: flex;
  justify-content: space-between;
  align-items: center;

  gap: 15px;

  margin-top: 20px;
  padding-top: 18px;

  border-top: 1px solid #ddd;
}

.guest-count-box > div {
  display: flex;
  align-items: center;

  gap: 10px;
}

.guest-count-box h3 {
  margin: 0;
}

.guest-count-value {
  font-size: 22px;
}

.guest-count-form {
  display: flex;
  align-items: center;

  gap: 6px;
}

.guest-count-form input {
  width: 75px;
  margin: 0;
}

.guest-count-form button {
  margin: 0;
}


@media (max-width: 500px) {

  .guest-count-box {
    align-items: flex-start;
    flex-direction: column;
  }

}


/* =========================================================
   Personen-/Teilgruppenaufteilung
========================================================= */

.order-split-entry {
  display: flex;
  justify-content: space-between;
  align-items: center;

  gap: 15px;

  margin-top: 18px;
  padding-top: 18px;

  border-top: 1px solid #ddd;
}

.order-split-entry > div {
  display: flex;
  flex-direction: column;
}

.order-split-entry small {
  color: #666;
}


.split-page {
  max-width: 1300px;
}

.split-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;

  gap: 20px;
}

.split-heading h1 {
  margin-bottom: 4px;
}

.split-heading p {
  margin-top: 0;
  color: #666;
}


.guest-label-grid {
  display: grid;

  grid-template-columns:
    repeat(
      auto-fill,
      minmax(220px, 1fr)
    );

  gap: 8px;
}

.guest-label-card {
  display: grid;

  grid-template-columns:
    28px minmax(0, 1fr) auto;

  gap: 6px;

  align-items: center;

  padding: 8px;

  border: 1px solid #ddd;
  border-radius: 7px;
}

.guest-label-card input,
.guest-label-card button {
  margin: 0;
}


.split-items-card {
  margin-top: 20px;
}

.split-item {
  padding: 15px 0;

  border-bottom:
    1px solid #ddd;
}

.split-item:last-child {
  border-bottom: 0;
}

.split-item-main {
  display: flex;
  justify-content: space-between;

  gap: 15px;

  margin-bottom: 10px;
}

.split-item-main > div {
  display: flex;
  flex-direction: column;
}

.split-item-total {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.split-modifiers {
  display: flex;
  flex-wrap: wrap;

  gap: 5px;

  font-size: 13px;
  color: #555;
}


.allocation-grid {
  display: grid;

  grid-template-columns:
    repeat(
      auto-fill,
      minmax(130px, 1fr)
    );

  gap: 7px;
}

.allocation-grid label {
  margin: 0;
}

.allocation-grid label span {
  display: block;

  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;

  font-size: 13px;
}

.allocation-grid input {
  width: 100%;
  margin: 3px 0 0;
}


.allocation-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;

  gap: 10px;

  margin-top: 9px;
}

.allocation-footer button {
  margin: 0;
}


.split-summary {
  max-width: 600px;
}

.split-summary > div {
  display: flex;
  justify-content: space-between;

  gap: 20px;

  padding: 7px 0;

  border-bottom:
    1px solid #eee;
}

.split-summary strong {
  white-space: nowrap;

  font-variant-numeric:
    tabular-nums;
}

.unassigned-summary {
  font-style: italic;
}

.split-grand-total {
  margin-top: 5px;

  font-size: 19px;
  font-weight: 700;
}

.internal-document-note {
  margin-top: 18px;

  font-size: 13px;
  color: #666;
}


@media (max-width: 600px) {

  .split-heading,
  .allocation-footer,
  .order-split-entry {
    align-items: flex-start;
    flex-direction: column;
  }

  .guest-label-card {
    grid-template-columns:
      25px minmax(0, 1fr);
  }

  .guest-label-card button {
    grid-column: 2;
  }

}


/* =========================================================
   Interne Abrechnungsübersicht
========================================================= */

.split-heading-actions {
  display: flex;
  gap: 7px;
}


.checkout-sheet {
  max-width: 800px;

  margin-left: auto;
  margin-right: auto;
}

.checkout-sheet-actions {
  display: flex;
  justify-content: space-between;

  gap: 10px;

  margin-bottom: 20px;
}

.checkout-sheet-actions button {
  margin: 0;
}


.checkout-warning {
  padding: 12px;

  margin-bottom: 20px;

  border: 2px solid #555;

  text-align: center;

  font-size: 13px;
  letter-spacing: .04em;
}


.checkout-document-header {
  position: static;

  padding: 0;
  margin: 0 0 20px;

  background: none;
  color: inherit;
}

.checkout-document-header h1 {
  margin-top: 0;
}


.checkout-document-meta {
  display: grid;

  grid-template-columns:
    repeat(3, minmax(0, 1fr));

  gap: 10px;
}

.checkout-document-meta > div {
  display: flex;
  flex-direction: column;
}

.checkout-document-meta span {
  font-size: 12px;
  color: #666;
}


.checkout-person {
  margin: 18px 0;

  padding-top: 10px;

  border-top: 2px solid #333;
}

.checkout-person-heading {
  display: flex;
  justify-content: space-between;

  gap: 20px;

  margin-bottom: 8px;
}

.checkout-person-heading h2 {
  margin: 0;

  font-size: 19px;
}

.checkout-person-heading strong,
.checkout-line-price,
.checkout-total strong {
  white-space: nowrap;

  font-variant-numeric:
    tabular-nums;
}


.checkout-line {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    100px;

  gap: 15px;

  padding: 5px 0;

  border-bottom:
    1px dotted #bbb;
}

.checkout-line-description {
  display: flex;
  flex-direction: column;
}

.checkout-line-description small {
  padding-left: 20px;

  color: #555;
}

.checkout-line-price {
  text-align: right;
}


.checkout-unassigned {
  border-top-style: dashed;
}


.checkout-total {
  display: flex;
  justify-content: space-between;

  gap: 20px;

  margin-top: 25px;

  padding-top: 12px;

  border-top: 3px double #222;

  font-size: 20px;
  font-weight: 700;
}


.checkout-footer-note {
  margin-top: 30px;

  padding-top: 10px;

  border-top: 1px solid #aaa;

  font-size: 11px;
  text-align: center;
}


@media (max-width: 600px) {

  .checkout-document-meta {
    grid-template-columns: 1fr;
  }

  .split-heading-actions {
    width: 100%;

    flex-wrap: wrap;
  }

}


@media print {

  body {
    background: white;
  }

  body > header,
  .checkout-sheet-actions {
    display: none !important;
  }

  .checkout-sheet {
    max-width: none;

    margin: 0;
    padding: 0;

    box-shadow: none;
  }

  .checkout-warning {
    margin-top: 0;
  }

  .checkout-person {
    break-inside: avoid;
  }

  .checkout-footer-note {
    margin-top: 20px;
  }

}


/* =========================================================
   Tischwechsel
========================================================= */

.table-change-box {
  margin-top: 18px;
  padding-top: 18px;

  border-top: 1px solid #ddd;
}

.table-change-box details > summary {
  cursor: pointer;

  font-weight: 700;
}

.table-change-box p {
  font-size: 13px;
  color: #666;
}

.table-change-button {
  margin-top: 12px;
}


/* =========================================================
   Reservierung bearbeiten
========================================================= */

.reservation-edit-heading {
  display: flex;

  justify-content: space-between;
  align-items: flex-start;

  gap: 20px;

  margin-bottom: 20px;
}

.reservation-edit-heading h1 {
  margin-bottom: 4px;
}

.reservation-edit-heading p {
  margin-top: 0;
  color: #666;
}


@media (max-width: 600px) {

  .reservation-edit-heading {
    flex-direction: column;
  }

}


/* =========================================================
   Storno gesendeter Positionen
========================================================= */

.item-cancel-box {
  margin-top: 10px;
}

.item-cancel-box summary {
  cursor: pointer;

  font-size: 13px;
  color: #666;
}

.item-cancel-box form {
  display: flex;
  align-items: center;

  gap: 7px;

  margin-top: 7px;
}

.item-cancel-box input {
  flex: 1;

  margin: 0;
}

.item-cancel-box button {
  margin: 0;

  flex-shrink: 0;
}


@media (max-width: 600px) {

  .item-cancel-box form {
    align-items: stretch;
    flex-direction: column;
  }

}


/* =========================================================
   Teilstorno
========================================================= */

.item-partial-cancel-box {
  margin-top: 10px;
}

.item-partial-cancel-box summary {
  cursor: pointer;

  font-size: 13px;
  color: #666;
}

.item-partial-cancel-box form {
  display: flex;
  align-items: center;

  gap: 7px;

  margin-top: 7px;
}

.item-partial-cancel-box input,
.item-partial-cancel-box button {
  margin: 0;
}

.cancel-quantity-input {
  width: 70px;
  flex: 0 0 70px;
}

.item-partial-cancel-box input[name="reason"] {
  flex: 1;
}


@media (max-width: 600px) {

  .item-partial-cancel-box form {
    align-items: stretch;
    flex-direction: column;
  }

  .cancel-quantity-input {
    width: 100%;
  }

}


/* =========================================================
   Temporäre Verfügbarkeit
========================================================= */

.availability-page {
  max-width: 1200px;
}

.availability-layout {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 20px;

  align-items: start;
}

.availability-group {
  margin:
    22px 0
    5px;

  padding-bottom: 5px;

  border-bottom:
    1px solid #ddd;
}

.availability-group:first-of-type {
  margin-top: 8px;
}


.availability-row {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 15px;

  padding: 8px 0;

  border-bottom:
    1px solid #eee;
}

.availability-row > div {
  display: flex;
  flex-direction: column;
}

.availability-row small {
  color: #666;
}

.availability-row form,
.availability-row button {
  margin: 0;
}

.sold-out-row {
  opacity: .6;
}

.sold-out-row small {
  font-weight: 700;
}


@media (max-width: 750px) {

  .availability-layout {
    grid-template-columns: 1fr;
  }

}

/* =========================================================
   Reservierungen in der Service-Tischübersicht
========================================================= */

.table-reservation-hint {
  display: flex;
  flex-wrap: wrap;
  align-items: center;

  gap: 3px;

  margin-top: 7px;
  padding-top: 6px;

  border-top:
    1px solid rgba(0, 0, 0, .15);

  font-size: 12px;
}

.table-reservation-hint strong {
  font-variant-numeric:
    tabular-nums;
}

.table-reservation-hint small {
  width: 100%;

  font-size: 11px;
}

.reservation-soon {
  font-weight: 700;

  border-top-width: 2px;
}


/* =========================================================
   Service – Tischstatus farblich kennzeichnen
========================================================= */

/* Frei */
.service-table.free {
  background: #dff3e4;
  border-color: #68a878;
  color: #183d22;
}


/* Tisch geöffnet, noch nichts gesendet */
.service-table.status-open {
  background: #e1eefb;
  border-color: #72a4d2;
  color: #173b5d;
}


/* Bestellung wurde gesendet */
.service-table.status-ordered {
  background: #fff1bd;
  border-color: #d5aa32;
  color: #57430c;
}


/* Küche / Theke arbeitet */
.service-table.status-preparing {
  background: #ffe0bd;
  border-color: #dc8a34;
  color: #5f340b;
}


/* Abholbereit */
.service-table.status-ready {
  background: #ccefeb;
  border-color: #4baaa0;
  color: #123e39;
}


/* Alles serviert */
.service-table.status-served {
  background: #e2dcf5;
  border-color: #8174b5;
  color: #342b5f;
}


/* Zur Abrechnung vorbereitet */
.service-table.status-checkout_ready {
  background: #e4e6e8;
  border-color: #858b91;
  color: #303438;
}


/*
 * Reservierung innerhalb der nächsten 90 Minuten:
 * rote Zusatzmarkierung, Statusfarbe bleibt erhalten.
 */
.service-table:has(.reservation-soon) {
  box-shadow:
    inset 0 0 0 3px #c43c3c;
}

.service-table:has(.reservation-soon)
.table-reservation-hint {
  color: #a61f1f;
}


/* Status etwas deutlicher lesbar */
.service-table.occupied > span:not(.service-total):not(.table-reservation-hint) {
  font-weight: 600;
}


/* =========================================================
   Service – OPEN und READY gemeinsam als "Belegt"
========================================================= */

.service-table.status-open,
.service-table.status-ready {
  background: #e1eefb;
  border-color: #72a4d2;
  color: #173b5d;
}


/* =========================================================
   Vereinfachte Tischstatusfarben
========================================================= */

/* Belegt */
.service-table.status-open,
.service-table.status-ready,
.service-table.status-served {
  background: #e1eefb;
  border-color: #72a4d2;
  color: #173b5d;
}


/* Bestellung offen */
.service-table.status-ordered,
.service-table.status-preparing {
  background: #ffe0bd;
  border-color: #dc8a34;
  color: #5f340b;
}


/* Zur Abrechnung */
.service-table.status-checkout_ready {
  background: #e4e6e8;
  border-color: #858b91;
  color: #303438;
}


/* =========================================================
   Optionsgruppen verwalten
========================================================= */

.modifier-group-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;

  gap: 7px;

  margin-bottom: 10px;
}

.modifier-group-actions form,
.modifier-group-actions button {
  margin: 0;
}

.inactive-badge {
  font-size: 12px;
  font-weight: 700;

  padding: 4px 7px;

  border-radius: 4px;

  background: #e4e6e8;
  color: #555;
}


/* =========================================================
   Abgeschlossene Vorgänge
========================================================= */

.history-page,
.history-detail-page {
  max-width: 1200px;
}

.history-filter {
  display: flex;
  flex-wrap: wrap;

  gap: 8px;

  margin: 18px 0;
}

.history-filter a {
  padding: 8px 12px;

  border: 1px solid #ccc;
  border-radius: 6px;

  text-decoration: none;
}

.history-filter a.active {
  font-weight: 700;

  border-width: 2px;
}


.history-order {
  padding: 12px 0;

  border-bottom:
    1px solid #e3e5e7;
}

.history-order:last-child {
  border-bottom: 0;
}

.history-order-main {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    130px
    130px;

  gap: 15px;

  color: inherit;
  text-decoration: none;
}

.history-order-main > div {
  display: flex;
  flex-direction: column;
}

.history-order-main span {
  color: #666;
}

.history-order-actions {
  display: flex;
  flex-wrap: wrap;

  gap: 7px;

  margin-top: 10px;
}

.history-order-actions form,
.history-order-actions button {
  margin: 0;
}

.history-processed {
  opacity: .72;
}

.processed-badge {
  display: inline-flex;
  align-items: center;

  padding: 4px 8px;

  border-radius: 5px;

  font-size: 12px;
  font-weight: 700;

  background: #e1eefb;
}


.history-meta {
  display: grid;

  grid-template-columns:
    repeat(4, minmax(0, 1fr));

  gap: 15px;

  margin: 15px 0;
}

.history-meta > div {
  display: flex;
  flex-direction: column;
}

.history-meta span {
  color: #666;
  font-size: 13px;
}


.internal-document-warning {
  padding: 10px;

  margin: 15px 0;

  border: 2px solid #777;

  text-align: center;
  font-weight: 700;
}


.history-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;

  gap: 20px;

  padding: 10px 0;

  border-bottom:
    1px solid #eee;
}

.history-item-main {
  display: flex;
  flex-direction: column;
}

.history-item-main small {
  margin-top: 3px;
  color: #666;
}

.cancelled-label {
  font-size: 12px;
  font-weight: 700;
}

.history-total {
  display: flex;
  justify-content: space-between;

  margin-top: 15px;

  padding-top: 12px;

  border-top: 2px solid #444;

  font-size: 18px;
}

.history-detail-actions {
  display: flex;
  flex-wrap: wrap;

  gap: 8px;
}

.history-detail-actions form,
.history-detail-actions button {
  margin: 0;
}


.deleted-history-row {
  display: flex;
  align-items: center;
  justify-content: space-between;

  gap: 15px;

  padding: 10px 0;

  border-bottom:
    1px solid #eee;
}

.deleted-history-row > div {
  display: flex;
  flex-direction: column;
}

.deleted-history-row form,
.deleted-history-row button {
  margin: 0;
}


@media (max-width: 700px) {

  .history-order-main {
    grid-template-columns: 1fr;
    gap: 5px;
  }

  .history-meta {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

}


@media (max-width: 430px) {

  .history-meta {
    grid-template-columns: 1fr;
  }

  .deleted-history-row {
    align-items: stretch;
    flex-direction: column;
  }

}


/* =========================================================
   Papierkorb komplett leeren
========================================================= */

.history-purge-all-warning {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 20px;

  margin: 18px 0;
  padding: 14px;

  border: 2px solid #a33;
  border-radius: 7px;
}

.history-purge-all-warning > div {
  display: flex;
  flex-direction: column;
}

.history-purge-all-warning form,
.history-purge-all-warning button {
  margin: 0;
}

.success-message {
  margin: 15px 0;
  padding: 10px 12px;

  border: 1px solid #777;
  border-radius: 6px;
}


@media (max-width: 600px) {

  .history-purge-all-warning {
    align-items: stretch;
    flex-direction: column;
  }

  .history-purge-all-warning button {
    width: 100%;
  }

}


/* =========================================================
   Reservierungsübersicht V2
========================================================= */

.reservation-tabs {
  display: grid;

  grid-template-columns:
    repeat(4, minmax(0, 1fr));

  gap: 7px;

  margin-bottom: 14px;
}

.reservation-tabs a {
  display: flex;

  justify-content: center;
  align-items: center;

  gap: 7px;

  min-height: 42px;

  padding: 7px 10px;

  border:
    1px solid #c9cdd1;

  border-radius: 6px;

  text-decoration: none;

  color: inherit;
}

.reservation-tabs a.active {
  border-width: 2px;

  font-weight: 700;
}

.reservation-tabs a span {
  display: inline-flex;

  align-items: center;
  justify-content: center;

  min-width: 22px;
  height: 22px;

  padding: 0 5px;

  border-radius: 11px;

  background:
    rgba(0, 0, 0, .08);

  font-size: 12px;

  font-variant-numeric:
    tabular-nums;
}


.reservation-time small {
  margin-top: 3px;

  font-size: 12px;
}


.reservation-overdue {
  border:
    2px solid #b13a3a;
}

.reservation-overdue-warning {
  margin:
    4px 0 9px;

  padding:
    7px 9px;

  border-radius: 5px;

  background:
    rgba(177, 58, 58, .10);

  font-size: 13px;
  font-weight: 700;
}


.reservation-persons {
  margin:
    6px 0 10px;
}


.reservation-no-table {
  opacity: .7;

  font-style: italic;
}


/* Erledigte Reservierungen etwas zurücknehmen */
.reservation-status-completed,
.reservation-status-cancelled,
.reservation-status-no_show {
  opacity: .72;
}


@media (max-width: 700px) {

  .reservation-tabs {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

}


@media (max-width: 380px) {

  .reservation-tabs {
    grid-template-columns: 1fr;
  }

}


/* =========================================================
   Service Favoriten / Schnellbestellung
========================================================= */

.service-product-admin {
  max-width: 1000px;
}

.service-product-header,
.service-product-row {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    130px
    130px;

  gap: 10px;

  align-items: center;
}

.service-product-header {
  padding-bottom: 8px;

  border-bottom:
    2px solid #bbb;
}

.service-product-row {
  padding: 8px 0;

  border-bottom:
    1px solid #eee;
}

.service-product-row > div {
  display: flex;
  flex-direction: column;
}

.service-product-row form,
.service-product-row button {
  margin: 0;
}

.service-product-category {
  margin-top: 22px;
}

.service-setting-active {
  font-weight: 700;
}


.service-favorites {
  margin-bottom: 20px;
}

.service-favorites h2 {
  margin-bottom: 8px;
}

.service-favorite-grid {
  display: grid;

  grid-template-columns:
    repeat(
      auto-fill,
      minmax(115px, 1fr)
    );

  gap: 7px;
}

.service-favorite-grid form {
  margin: 0;
}

.service-favorite-button {
  display: flex;

  align-items: center;
  justify-content: center;

  width: 100%;
  min-height: 52px;

  padding: 8px;

  border:
    1px solid #aaa;

  border-radius: 7px;

  text-align: center;
  text-decoration: none;

  color: inherit;
  background: inherit;

  cursor: pointer;
}

.quick-repeat-item {
  margin-top: 7px;
}

.quick-repeat-item button {
  margin: 0;
}


@media (max-width: 600px) {

  .service-product-header {
    display: none;
  }

  .service-product-row {
    grid-template-columns:
      minmax(0, 1fr)
      110px
      110px;
  }

}


@media (max-width: 420px) {

  .service-product-row {
    grid-template-columns:
      1fr 1fr;
  }

  .service-product-row > div {
    grid-column:
      1 / -1;
  }

}


/* =========================================================
   Letzte Getränkerunde
========================================================= */

.last-beverage-round {
  display: flex;

  align-items: center;
  justify-content: space-between;

  gap: 15px;

  margin: 15px 0;
  padding: 12px;

  border:
    2px solid #72a4d2;

  border-radius: 8px;

  background:
    rgba(114, 164, 210, .10);
}

.last-beverage-round > div {
  display: flex;
  flex-direction: column;

  min-width: 0;
}

.last-beverage-round small {
  margin-top: 3px;

  color: #555;

  overflow-wrap: anywhere;
}

.last-beverage-round form,
.last-beverage-round button {
  margin: 0;
}

.repeat-round-button {
  white-space: nowrap;
}


@media (max-width: 600px) {

  .last-beverage-round {
    align-items: stretch;
    flex-direction: column;
  }

  .repeat-round-button {
    width: 100%;
  }

}
