
.afm-calendar-wrap,.afm-manager{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1f2937}
.afm-cal-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 18px;padding:10px 0}
.afm-nav{border:0;background:#e5e7eb;color:#111827;width:40px;height:40px;border-radius:10px;font-size:28px;line-height:1;cursor:pointer}
.afm-nav:hover{background:#d1d5db}
.afm-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.afm-month{border:1px solid #e5e7eb;border-radius:14px;padding:14px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.afm-month h3{margin:0 0 12px;text-align:center;font-size:18px}
.afm-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.afm-head{margin-bottom:6px}
.afm-head span{text-align:center;font-size:12px;font-weight:700;color:#6b7280}
.afm-day{min-width:0;aspect-ratio:1;border:0;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:.15s;display:flex;align-items:center;justify-content:center}
.afm-day.is-free{background:#dcfce7;color:#166534}
.afm-day.is-booked{background:#fecaca;color:#991b1b;cursor:not-allowed}
.afm-day.is-today{outline:2px solid #2563eb;outline-offset:1px}
.afm-day.is-selected{box-shadow:inset 0 0 0 3px #2563eb}
.afm-day:not(.is-booked):hover{transform:translateY(-1px);filter:brightness(.97)}
.afm-empty{aspect-ratio:1}
.afm-legend{display:flex;gap:22px;margin-top:14px;font-size:14px;flex-wrap:wrap}
.afm-dot{display:inline-block;width:13px;height:13px;border-radius:4px;vertical-align:-2px;margin-right:6px}
.afm-dot.free{background:#bbf7d0}.afm-dot.booked{background:#fca5a5}
.afm-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:20px;margin:0 0 20px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.afm-card h3{margin-top:0}
.afm-help,.afm-muted{color:#6b7280;font-size:14px}
.afm-manager-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}
.afm-manager-head h2{margin-bottom:4px}
.afm-logout{white-space:nowrap}
.afm-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}
.afm-form-grid label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px}
.afm-form-grid input{padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font:inherit;font-weight:400;background:#fff}
.afm-primary,.afm-cancel{border:0;border-radius:8px;padding:11px 16px;cursor:pointer;font-weight:700}
.afm-primary{background:#2563eb;color:#fff}.afm-primary:hover{background:#1d4ed8}
.afm-cancel{background:#fee2e2;color:#991b1b}.afm-cancel:hover{background:#fecaca}
.afm-form-message{margin-top:10px;font-weight:600}
.afm-error{color:#991b1b}.afm-success{color:#166534}
.afm-booking-row{display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid #e5e7eb;padding:14px 0}
.afm-booking-row:first-child{border-top:0}
.afm-booking-row div{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.afm-booking-row strong{width:100%}
.afm-booking-row span{font-size:14px;color:#4b5563}
.afm-login-box{max-width:440px;border:1px solid #e5e7eb;border-radius:14px;padding:24px;background:#fff}
.afm-login-box input{max-width:100%}
@media(max-width:900px){.afm-months{grid-template-columns:1fr}.afm-form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.afm-form-grid{grid-template-columns:1fr}.afm-manager-head{align-items:flex-start;flex-direction:column}.afm-month{padding:10px}.afm-grid{gap:3px}.afm-day{font-size:13px}}

.afm-form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.afm-secondary,.afm-edit{border:1px solid #d1d5db;border-radius:8px;padding:10px 14px;cursor:pointer;font-weight:700;background:#fff;color:#374151}
.afm-secondary:hover,.afm-edit:hover{background:#f3f4f6}
.afm-bookings-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:10px}
.afm-bookings-head h3{margin-bottom:4px}
.afm-selection-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.afm-booking-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;border-top:1px solid #e5e7eb;padding:14px 0}
.afm-select-booking{display:flex;align-items:center;justify-content:center}
.afm-select-booking input{width:20px;height:20px;cursor:pointer}
.afm-booking-details{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.afm-booking-details strong{width:100%}
.afm-booking-details span{font-size:14px;color:#4b5563}
.afm-booking-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.afm-print-sheet{display:none}
@media(max-width:760px){
  .afm-bookings-head{flex-direction:column}
  .afm-selection-actions{justify-content:flex-start}
  .afm-booking-row{grid-template-columns:auto minmax(0,1fr)}
  .afm-booking-actions{grid-column:2;justify-content:flex-start}
}
@media print{
  body *{visibility:hidden !important}
  #afm-print-area,#afm-print-area *{visibility:visible !important}
  #afm-print-area{display:block !important;position:absolute;left:0;top:0;width:100%;background:#fff;color:#000}
  .afm-print-sheet{display:block !important;font-family:Arial,sans-serif;padding:10mm}
  .afm-print-sheet h1{font-size:22pt;margin:0 0 5mm}
  .afm-print-meta,.afm-print-count{font-size:10pt;color:#444}
  .afm-print-sheet table{width:100%;border-collapse:collapse;margin-top:7mm;font-size:10pt}
  .afm-print-sheet th,.afm-print-sheet td{border:1px solid #777;padding:7px;text-align:left;vertical-align:top}
  .afm-print-sheet th{background:#eee}
  @page{size:A4 portrait;margin:12mm}
}

.afm-filter-bar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px;padding:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px}
.afm-filter-bar label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700}
.afm-filter-bar input{padding:9px 10px;border:1px solid #d1d5db;border-radius:7px;background:#fff;font:inherit}
@media(max-width:600px){.afm-filter-bar{align-items:stretch;flex-direction:column}.afm-filter-bar label input{width:100%;box-sizing:border-box}}
@media print{.afm-print-sheet table{font-size:9pt}.afm-print-sheet th,.afm-print-sheet td{padding:5px}}


/* 1.3.2: explicit interactive controls, independent of the active WordPress theme */
.afm-manager button, .afm-manager input, .afm-manager label, .afm-manager a {
  pointer-events: auto !important;
}
.afm-manager button {
  position: relative !important;
  z-index: 5 !important;
  user-select: none;
}
.afm-manager .afm-select-booking {
  position: relative !important;
  z-index: 10 !important;
  cursor: pointer !important;
}
.afm-manager .afm-select-booking input[type=checkbox] {
  appearance: auto !important;
  -webkit-appearance: checkbox !important;
  opacity: 1 !important;
  visibility: visible !important;
  position: static !important;
  display: inline-block !important;
  pointer-events: auto !important;
  cursor: pointer !important;
}
.afm-manager button.afm-edit:hover,
.afm-manager button.afm-secondary:hover {
  background: #e5e7eb !important;
  color: #111827 !important;
  border-color: #9ca3af !important;
}
.afm-manager button.afm-primary:hover {
  background: #1d4ed8 !important;
  color: #fff !important;
}
.afm-manager button.afm-cancel:hover {
  background: #fecaca !important;
  color: #7f1d1d !important;
}
.afm-manager .afm-booking-actions { position: relative !important; z-index: 10 !important; }
.afm-manager .afm-selection-actions { position: relative !important; z-index: 10 !important; }

/* 1.4.0: Manager layout – bookings top, form underneath, calendar to the right */
.afm-manager-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr);
  gap: 20px;
  align-items: start;
}
.afm-manager-left {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.afm-manager-right {
  min-width: 0;
}
.afm-manager .afm-bookings-card,
.afm-manager .afm-form-card,
.afm-manager .afm-calendar-card {
  height: auto;
  box-sizing: border-box;
}
.afm-manager .afm-calendar-card {
  position: sticky;
  top: 20px;
}
/* Months in the manager calendar are deliberately stacked vertically. */
.afm-manager .afm-calendar-card .afm-months {
  grid-template-columns: 1fr;
  gap: 14px;
}
.afm-manager .afm-calendar-card .afm-month {
  width: 100%;
  box-sizing: border-box;
}
.afm-manager .afm-calendar-card .afm-cal-nav {
  margin-bottom: 12px;
}
@media (max-width: 1000px) {
  .afm-manager-layout {
    grid-template-columns: 1fr;
  }
  .afm-manager .afm-calendar-card {
    position: static;
  }
}

/* 1.4.1: Kalender links, Buchungen/Formular rechts; kompakte Bedienelemente */
.afm-manager-layout {
  display: grid;
  grid-template-columns: minmax(300px, .82fr) minmax(0, 1.18fr);
  gap: 20px;
  align-items: start;
}
.afm-manager-calendar,
.afm-manager-content { min-width: 0; }
.afm-manager .afm-calendar-card { position: sticky; top: 20px; }
.afm-manager .afm-calendar-card .afm-months { grid-template-columns: 1fr; gap: 14px; }
.afm-manager .afm-calendar-card .afm-month { width: 100%; box-sizing: border-box; }

/* Drei Auswahlbuttons kompakt und immer in einer Reihe, sofern genügend Platz vorhanden ist. */
.afm-selection-actions-top {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: nowrap;
  margin: 0 0 12px;
  padding: 0;
}
.afm-small-button {
  padding: 7px 10px !important;
  min-height: 34px;
  border-radius: 6px !important;
  font-size: 12px !important;
  line-height: 1.2;
  white-space: nowrap;
}

/* Allgemeine Buttons in der Verwaltung kompakter */
.afm-manager .afm-filter-bar button,
.afm-manager .afm-form-actions button,
.afm-manager .afm-booking-actions button {
  padding: 7px 10px;
  min-height: 32px;
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.2;
}
.afm-manager .afm-booking-actions { gap: 5px; }
.afm-manager .afm-form-actions { gap: 7px; }
.afm-manager .afm-filter-bar { gap: 7px; }

@media (max-width: 1100px) {
  .afm-manager-layout { grid-template-columns: minmax(260px, .75fr) minmax(0, 1.25fr); }
}
@media (max-width: 900px) {
  .afm-manager-layout { grid-template-columns: 1fr; }
  .afm-manager .afm-calendar-card { position: static; }
}
@media (max-width: 600px) {
  .afm-selection-actions-top { flex-wrap: wrap; }
  .afm-small-button { flex: 0 0 auto; }
}


/* 1.5.1: Neve-safe calendar sizing and three-month row layout */
.afm-public { --afm-free:#dcfce7; --afm-booked:#fecaca; --afm-free-text:#166534; --afm-booked-text:#991b1b; --afm-day-size:12px; --afm-radius:6px; width:100%; max-width:100%; box-sizing:border-box; }
.afm-public *, .afm-manager * { box-sizing:border-box; }
.afm-public .afm-months { display:grid !important; width:100% !important; min-width:0 !important; gap:12px !important; }
.afm-public.afm-layout-row .afm-months { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
.afm-public.afm-layout-stacked .afm-months { grid-template-columns:1fr !important; }
.afm-public .afm-month { min-width:0 !important; width:100% !important; max-width:100% !important; overflow:hidden !important; padding:10px !important; }
.afm-public .afm-month h3 { font-size:15px !important; margin:0 0 8px !important; }
.afm-public .afm-grid { display:grid !important; grid-template-columns:repeat(7,minmax(0,1fr)) !important; gap:3px !important; width:100% !important; min-width:0 !important; }
.afm-public .afm-head span { min-width:0 !important; width:auto !important; overflow:hidden !important; text-align:center !important; font-size:10px !important; }
.afm-public .afm-day { width:100% !important; min-width:0 !important; max-width:100% !important; height:auto !important; aspect-ratio:1 / 1 !important; margin:0 !important; padding:0 !important; border:0 !important; box-sizing:border-box !important; font-size:var(--afm-day-size) !important; border-radius:var(--afm-radius) !important; line-height:1 !important; min-height:0 !important; }
.afm-public .afm-day.is-free { background:var(--afm-free) !important; color:var(--afm-free-text) !important; }
.afm-public .afm-day.is-booked { background:var(--afm-booked) !important; color:var(--afm-booked-text) !important; }
.afm-public .afm-empty { min-width:0 !important; width:100% !important; aspect-ratio:1 / 1 !important; }
/* Manager calendar: three months side-by-side on desktop, stacked on narrow screens. */
.afm-manager .afm-calendar-card .afm-months { grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:10px !important; }
.afm-manager .afm-calendar-card .afm-month { padding:10px !important; }
.afm-manager .afm-calendar-card .afm-month h3 { font-size:15px !important; margin-bottom:8px !important; }
.afm-manager .afm-calendar-card .afm-grid { grid-template-columns:repeat(7,minmax(0,1fr)) !important; gap:3px !important; }
.afm-manager .afm-calendar-card .afm-day { aspect-ratio:1 / 1 !important; width:100% !important; min-width:0 !important; height:auto !important; padding:0 !important; font-size:12px !important; line-height:1 !important; }
.afm-manager .afm-calendar-card .afm-head span { font-size:10px !important; }
@media (max-width:1100px) {
  .afm-manager .afm-calendar-card .afm-months { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
}
@media (max-width:899px) {
  .afm-public.afm-layout-row .afm-months { grid-template-columns:1fr !important; }
  .afm-manager .afm-calendar-card .afm-months { grid-template-columns:1fr !important; }
}
