/* ═══════════════════════════════════════════════════════════════════════════
   qa-button.css – QA-Button, Stack-Buttons und Public-Buttons (v1.11)
   /css/ | MoAktor

   ── Changelog ───────────────────────────────────────────────────────────
   v1.11 | 16.09.2026 | Modal-Contract-Migration (Welle M2 des Plans
         |             Modal1.0). Der QA-Dialog folgt jetzt dem
         |             gemeinsamen Contract aus /css/aura-modal.css:
         |
         |             - ENTFERNT: #qaModal-Grundregeln (display,
         |               position: fixed, inset, background, z-index,
         |               flex-center). Diese Rolle übernimmt
         |               .aura-modal.
         |
         |             - ENTFERNT: #qaModal.visible-Regel. Die
         |               Öffnungs-/Schließ-Mechanik ist jetzt das
         |               hidden-Attribut (Plan §5.1).
         |
         |             - ERGÄNZT: .qa-modal-content hat jetzt
         |               position: relative + z-index: 1, damit es
         |               zuverlässig über dem absolut positionierten
         |               .aura-modal__backdrop schwebt.
         |
         |             Nicht betroffen: QA-Button (unten links),
         |             Stack-Buttons, Public-Buttons, alle anderen
         |             Modal-Styles (Überschrift, Form, Issues-Section).
   v1.10 | 16.09.2026 | Firefox-Mobile-Fix: schwebende Buttons werden
         |             bei sichtbarer Adressleiste teilweise verdeckt.
         |             --vv-bottom-offset in bottom-Berechnungen.
   v1.9  | –          | Vorherige Fassung.

   Teil des MoAktor-Ökosystems | Lizenz: Lichtarchitekt-Lizenz #7
   ═══════════════════════════════════════════════════════════════════════════ */

/* QA-Button – schwebend, dezentes Gold */
#qaReportBtn {
  position: fixed;
  bottom: calc(24px + var(--vv-bottom-offset, 0px));
  left: 24px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(212,175,55, var(--qa-circle-opacity, 0.2));
  border: 1px solid rgba(212,175,55, var(--qa-ring-opacity, 0.5));
  color: #d4af37;
  cursor: pointer;
  z-index: 20;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transform: translate(var(--qa-drag-x, 0px), var(--qa-drag-y, 0px));
  touch-action: none;
}
#qaReportBtn:hover {
  box-shadow: 0 0 15px rgba(212,175,55,0.4);
}

/* Icon-Zustände: Standard = Bild (qa.png), verwandelt/kaputt = SVG-Symbol */
.qa-btn-icon,
.qa-btn-icon-fallback {
  width: 28px;
  height: 28px;
  object-fit: contain;
}
.qa-btn-icon-fallback {
  display: none;
  color: #d4af37;
}
#qaReportBtn.qa-img-broken .qa-btn-icon {
  display: none;
}
#qaReportBtn.qa-img-broken .qa-btn-icon-fallback {
  display: block;
}

/* Dezentes Feedback bei jedem Klick auf den Haupt-Button */
@keyframes qa-click-feedback {
  0%   { box-shadow: 0 0 0 0 rgba(212,175,55,0.5); }
  100% { box-shadow: 0 0 0 9px rgba(212,175,55,0); }
}
#qaReportBtn.qa-click-pulse {
  animation: qa-click-feedback 0.45s ease-out;
}

/* Zusatz-Button (z. B. Admin-Link für Trust-Level 4) */
.qa-stack-btn {
  position: fixed;
  bottom: calc(
    24px + 44px + 12px
    + var(--vv-bottom-offset, 0px)
    + (var(--qa-stack-index, 1) - 1) * 56px
  );
  left: 24px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(212,175,55,0.2);
  border: 1px solid rgba(212,175,55,0.5);
  color: #d4af37;
  z-index: 19;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  opacity: 0;
  transform: translate(var(--qa-drag-x, 0px), var(--qa-drag-y, 0px)) translateY(56px) scale(0.6);
  transition: transform 0.35s cubic-bezier(.34,1.56,.64,1), opacity 0.3s ease;
  pointer-events: none;
}
.qa-stack-btn.visible {
  opacity: 1;
  transform: translate(var(--qa-drag-x, 0px), var(--qa-drag-y, 0px)) translateY(0) scale(1);
  pointer-events: auto;
}

/* Positions-Modi (gesteuert von einstellungen-button.php) */
html.qa-anchor-right #qaReportBtn,
html.qa-anchor-right .qa-stack-btn {
  left: auto;
  right: 24px;
}
html.qa-dragging #qaReportBtn,
html.qa-dragging .qa-stack-btn {
  transition: none !important;
}
.qa-stack-btn:hover {
  background: rgba(212,175,55,0.35);
  box-shadow: 0 0 15px rgba(212,175,55,0.4);
}

/* ══════════════════════════════════════════════════════════════════════════
   QA-MODAL (v1.11)
   ══════════════════════════════════════════════════════════════════════════
   Container-Regeln (Position, display, Flex-Center, Öffnungs-Mechanik)
   kommen aus /css/aura-modal.css. Hier bleibt nur das Panel selbst
   (.qa-modal-content) — plus position:relative + z-index:1, damit
   es über dem Backdrop schwebt.
   ══════════════════════════════════════════════════════════════════════════ */

.qa-modal-content {
  position: relative;
  z-index: 1;

  background: rgba(11,26,47,0.95);
  border: 1px solid rgba(212,175,55,0.4);
  border-radius: 16px;
  padding: 24px;
  max-width: 400px;
  width: 90%;
  color: #f5f0e8;
  font-family: 'Segoe UI', system-ui, sans-serif;
}
.qa-modal-content h3 {
  color: #d4af37;
  margin: 0 0 16px 0;
}
.qa-modal-content label {
  display: block;
  margin-bottom: 12px;
  font-size: 0.9rem;
}
.qa-modal-content input,
.qa-modal-content select,
.qa-modal-content textarea {
  width: 100%;
  padding: 8px;
  border-radius: 8px;
  border: 1px solid rgba(212,175,55,0.3);
  background: rgba(255,255,255,0.05);
  color: #f5f0e8;
  margin-top: 4px;
  box-sizing: border-box;
}
.qa-form-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 16px;
}
.qa-form-actions button {
  padding: 8px 16px;
  border-radius: 8px;
  cursor: pointer;
  border: 1px solid rgba(255,255,255,0.2);
  background: rgba(255,255,255,0.1);
  color: #f5f0e8;
}
.qa-form-actions button[type="submit"] {
  background: rgba(212,175,55,0.2);
  border-color: rgba(212,175,55,0.5);
  color: #d4af37;
}
.qa-success { color: #4caf50; font-size: 0.9rem; margin-top: 12px; }
.qa-error   { color: #ff6b6b; font-size: 0.9rem; margin-top: 12px; }

/* Bestehende Meldungen (Trust-Level 3+4) */
.qa-issues-section {
  border: 1px solid rgba(212,175,55,0.25);
  border-radius: 10px;
  padding: 10px 12px;
  margin-bottom: 16px;
  max-height: 160px;
  overflow-y: auto;
}
.qa-issues-heading {
  margin: 0 0 8px 0;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #d4af37;
}
.qa-issues-loading,
.qa-issues-empty,
.qa-issues-error {
  margin: 0;
  font-size: 0.85rem;
  color: rgba(245,240,232,0.7);
}
.qa-issues-error { color: #ff6b6b; }
.qa-issue-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 0;
  font-size: 0.85rem;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.qa-issue-row:first-of-type { border-top: none; }
.qa-issue-cat {
  color: rgba(245,240,232,0.6);
  font-size: 0.8rem;
}
.qa-issue-status {
  color: #d4af37;
  font-size: 0.8rem;
  white-space: nowrap;
}
.qa-issue-status-select {
  font-size: 0.8rem;
  padding: 3px 6px;
  border-radius: 6px;
  border: 1px solid rgba(212,175,55,0.4);
  background: rgba(255,255,255,0.05);
  color: #f5f0e8;
}

/* ══════════════════════════════════════════════════════════════════════════
   PUBLIC BUTTONS – immer sichtbar (a11y, backtotop, debug)
   ══════════════════════════════════════════════════════════════════════════ */

.qa-public-btn {
  position: fixed;
  right: 24px;
  bottom: calc(
    24px
    + var(--vv-bottom-offset, 0px)
    + var(--qa-public-index, 0) * 56px
  );
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(212,175,55,0.2);
  border: 1px solid rgba(212,175,55,0.5);
  color: #d4af37;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  cursor: pointer;
  text-decoration: none;
  opacity: 1;
  pointer-events: auto;
  transition: opacity 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
  touch-action: none;
}

.qa-public-btn:hover {
  background: rgba(212,175,55,0.35);
  box-shadow: 0 0 15px rgba(212,175,55,0.4);
}

.qa-public-btn.qa-public-hidden {
  opacity: 0;
  pointer-events: none;
}

@media (max-width: 768px) {
  .qa-public-btn {
    width: 40px;
    height: 40px;
    right: 16px;
    bottom: calc(
      16px
      + var(--vv-bottom-offset, 0px)
      + var(--qa-public-index, 0) * 50px
    );
  }
}