/* ISOPI Widget · Events
 *
 * Geteilte Styles für das Events-Detail-Modal-Widget
 * (js/widgets/events/detail-modal.js). Wird sowohl in der
 * Events-App als auch im Dashboard-Upcoming-Banner geladen.
 *
 * Form-Modal-Styles (.events-form-*) sitzen weiterhin inline in
 * apps/events/index.html — der Editor lebt nur in der App-Page.
 */

/* === Modal-System (analog Calendar) === */
.events-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(20, 20, 16, 0.5);
  z-index: 1050;
  display: flex; align-items: flex-start; justify-content: center;
  padding: 4rem 1rem 1rem;
  overflow-y: auto;
}

/* Nested-Modal über dem Event-Form (Inline-Create für Event-Menüs).
 * z-index +10 damit's klar über dem Parent liegt. .events-nested-modal
 * hat die gleichen Box-Styles wie das normale events-modal. */
.events-nested-backdrop {
  position: fixed; inset: 0;
  background: rgba(20, 20, 16, 0.55);
  z-index: 1060;
  display: flex; align-items: flex-start; justify-content: center;
  padding: 4rem 1rem 1rem;
  overflow-y: auto;
}
.events-nested-modal {
  background: var(--isopi-sand-light);
  border: 1px solid var(--isopi-ink);
  width: 100%; max-width: 720px;
  position: relative;
}
.events-modal {
  background: var(--isopi-sand-light);
  border: 1px solid var(--isopi-ink);
  width: 100%; max-width: 720px;
  position: relative;
}
.events-modal-close {
  position: absolute; top: 0.6rem; right: 0.6rem;
  width: 2rem; height: 2rem;
  background: transparent; border: none;
  font-size: 1.5rem; line-height: 1; cursor: pointer;
  color: var(--isopi-ink);
}
.events-modal-body { padding: 2rem 1.6rem 1.6rem; }
.events-modal-actions {
  display: flex; gap: 0.6rem; justify-content: flex-end;
  align-items: center;
  margin-top: 1.5rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--isopi-border);
}

/* Print-Icon-Button im Action-Footer — kein Label, Icon-only.
 * Click triggert direkten Druckdialog via Hidden-Iframe (siehe
 * js/widgets/events/print-trigger.js). margin-right:auto schiebt
 * den Button nach links, Bearbeiten/Schließen bleiben rechts. */
.events-modal-print {
  margin-right: auto;
  background: transparent;
  border: 1px solid var(--isopi-border);
  color: var(--isopi-ink);
  padding: 0.5rem;
  cursor: pointer;
  line-height: 0;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.events-modal-print:hover,
.events-modal-print:focus-visible {
  background: var(--isopi-sand);
  border-color: var(--isopi-ink);
  outline: none;
}
.events-modal-print svg { width: 18px; height: 18px; display: block; }

/* === Detail-Section (read-only View) === */
.events-detail-eyebrow {
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  margin-bottom: 0.4rem;
}
.events-detail-title {
  font-family: var(--font-brandon);
  font-weight: 900;
  font-size: 1.6rem;
  line-height: 1.15;
  margin: 0 0 1rem;
}
.events-detail-meta {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.4rem 1.2rem;
  font-family: var(--font-brandon);
  font-size: 0.92rem;
  margin-bottom: 1.4rem;
}
.events-detail-meta dt {
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  align-self: center;
}
.events-detail-meta dd {
  margin: 0;
  font-weight: 300;
}

.events-detail-section {
  margin-top: 1.5rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--isopi-border);
}
.events-detail-section-title {
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  margin: 0 0 0.6rem;
}
.events-detail-notes {
  font-family: var(--font-brandon);
  font-weight: 300;
  white-space: pre-wrap;
  line-height: 1.5;
}

/* Event-Menü-Link in der Detail-Section: führt in die Küchen-App
 * (separater Tab), klar als Link erkennbar. */
.events-detail-menu-link {
  font-family: var(--font-brandon);
  font-weight: 700;
  color: var(--isopi-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--isopi-border-strong);
  padding-bottom: 1px;
  transition: border-color 0.12s ease;
}
.events-detail-menu-link:hover,
.events-detail-menu-link:focus-visible {
  color: var(--isopi-ink);
  border-bottom-color: var(--isopi-ink);
  outline: none;
}

/* === Ablaufplan-Tabelle === */
.events-tasks-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-brandon);
  font-size: 0.92rem;
}
.events-tasks-table th {
  font-weight: 700;
  font-size: 0.65rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  text-align: left;
  padding: 0.4rem 0.6rem 0.5rem;
  border-bottom: 1px solid var(--isopi-border);
}
.events-tasks-table td {
  padding: 0.55rem 0.6rem;
  border-bottom: 1px solid var(--isopi-border);
  vertical-align: top;
  font-weight: 300;
}
.events-tasks-table tr.is-completed td {
  color: var(--isopi-muted);
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}
.events-tasks-table tr.is-completed td.events-tasks-cell-check {
  text-decoration: none;
}
.events-tasks-cell-time { white-space: nowrap; font-weight: 700; }
.events-tasks-cell-resp { white-space: nowrap; }
.events-tasks-cell-check { width: 2rem; text-align: center; padding-top: 0.4rem; }
.events-tasks-cell-check input[type="checkbox"] {
  width: 1.1rem; height: 1.1rem;
  accent-color: var(--isopi-ink);
  cursor: pointer;
}

.events-tasks-empty {
  font-family: var(--font-brandon);
  font-weight: 300;
  font-size: 0.9rem;
  color: var(--isopi-muted);
  font-style: italic;
  padding: 0.5rem 0;
}

/* === Form-Modal === */
.events-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.8rem 1rem;
}
.events-form-grid > .col-full { grid-column: 1 / -1; }
@media (max-width: 600px) {
  .events-form-grid { grid-template-columns: 1fr; }
}
.events-form-label {
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.65rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  display: block;
  margin-bottom: 0.25rem;
}
.events-form-input,
.events-form-textarea {
  width: 100%;
  font-family: var(--font-brandon);
  font-weight: 300;
  font-size: 0.95rem;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--isopi-border);
  background: var(--isopi-sand-light);
  color: var(--isopi-ink);
  border-radius: 0;
}
.events-form-input:focus,
.events-form-textarea:focus {
  outline: 2px solid var(--isopi-ink);
  outline-offset: -1px;
  border-color: var(--isopi-ink);
}
/* Auto-grow: das Feld passt sich automatisch dem Inhalt an
 * (siehe autoGrowTextarea in form-modal.js). resize:none + overflow:
 * hidden verhindern, dass der User manuell zieht oder ein interner
 * Scrollbar aufkommt — die Höhe wird komplett vom JS-Listener
 * gesteuert. min-height: 4.5rem bleibt als initialer Floor. */
.events-form-textarea {
  min-height: 4.5rem;
  resize: none;
  overflow: hidden;
}

/* Menu-Picker: Select + Inline-"+ Neues Menü"-Button nebeneinander.
 * Mobile fällt's auf 1fr — Button rutscht unter den Select. */
.events-form-menu-picker {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.5rem;
  align-items: center;
}
@media (max-width: 560px) {
  .events-form-menu-picker { grid-template-columns: 1fr; }
}

.events-tasks-editor {
  border: 1px solid var(--isopi-border);
  margin-top: 0.4rem;
}
.events-tasks-editor-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-brandon);
  font-size: 0.9rem;
}
.events-tasks-editor-table th {
  font-weight: 700;
  font-size: 0.6rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--isopi-muted);
  text-align: left;
  padding: 0.45rem 0.5rem;
  border-bottom: 1px solid var(--isopi-border);
  background: var(--isopi-sand-light);
}
.events-tasks-editor-table td {
  padding: 0.4rem 0.45rem;
  border-bottom: 1px solid var(--isopi-border);
  vertical-align: top;
}
.events-tasks-editor-table tr:last-child td { border-bottom: none; }
.events-tasks-editor-table input[type="text"] {
  width: 100%;
  font-family: var(--font-brandon);
  font-weight: 300;
  font-size: 0.9rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--isopi-border);
  background: var(--isopi-sand-light);
  border-radius: 0;
}
.events-tasks-editor-actions {
  display: flex; gap: 0.2rem;
  white-space: nowrap;
}
.events-tasks-editor-actions button {
  background: transparent;
  border: 1px solid var(--isopi-border);
  width: 1.8rem; height: 1.8rem;
  cursor: pointer;
  font-family: var(--font-brandon);
  font-weight: 700;
  color: var(--isopi-muted);
  border-radius: 0;
}
.events-tasks-editor-actions button:hover {
  border-color: var(--isopi-ink);
  color: var(--isopi-ink);
}
.events-tasks-editor-add {
  padding: 0.55rem 0.8rem;
  background: var(--isopi-sand-light);
  border: none;
  border-top: 1px solid var(--isopi-border);
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--isopi-ink);
}
.events-tasks-editor-add:hover { background: var(--isopi-sand); }
.events-tasks-editor-empty {
  padding: 1rem;
  text-align: center;
  color: var(--isopi-muted);
  font-family: var(--font-brandon);
  font-weight: 300;
  font-style: italic;
  font-size: 0.9rem;
}
.events-tasks-editor-resp { min-width: 150px; }

.events-form-error {
  color: var(--isopi-red);
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 0.55rem 0.8rem;
  border: 1px solid var(--isopi-red);
  margin-bottom: 1rem;
  display: none;
}
.events-form-error.is-visible { display: block; }

.events-modal-actions .btn-danger-link {
  background: transparent;
  border: none;
  color: var(--isopi-red);
  font-family: var(--font-brandon);
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.5rem 0.7rem;
  cursor: pointer;
  margin-right: auto;
}
.events-modal-actions .btn-danger-link:hover { text-decoration: underline; }
