/* =================================================================
   WP Client Feedback – Frontend CSS v5.0
   Pins via position:absolute+left/top in % im stabilen Container.
   Kein negativer top-Versatz → kein overflow:hidden Problem.
   Flatsome-kompatibel.
================================================================= */

:root {
  --cf-blue:   #4ccdb9;
  --cf-blue-d: #38b8a5;
  --cf-red:    #ef4444;
  --cf-orange: #f97316;
  --cf-green:  #22c55e;
  --cf-white:  #ffffff;
  --cf-text:   #1e293b;
  --cf-muted:  #64748b;
  --cf-border: #e2e8f0;
  --cf-shadow: 0 4px 24px rgba(0,0,0,.12), 0 1px 4px rgba(0,0,0,.06);
  --cf-r:      8px;
  --cf-font:   -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --cf-z:      999900;
  --cf-sw:     300px;
}

#cf-root { position: static; }

/* =================================================================
   SIDEBAR
================================================================= */
:root {
  --cf-head-h: 49px; /* Höhe der Sidebar-Kopfzeile */
  --cf-tabs-h: 37px; /* Höhe der Tab-Leiste */
}

#cf-sidebar {
  position: fixed;
  top: 0; right: 0;
  width: var(--cf-sw);
  height: 100vh;
  z-index: var(--cf-z);
  font-family: var(--cf-font);
  background: var(--cf-white);
  border-left: 1px solid var(--cf-border);
  box-shadow: -3px 0 16px rgba(0,0,0,.07);
  transition: transform .2s ease;
  /* kein overflow:hidden – verhindert Scroll-Context in absolut positionierten Kindern */
}
#cf-sidebar.cf-sb-collapsed {
  transform: translateX(100%);
}
#cf-sb-toggle {
  position: absolute;
  top: 50%;
  left: -28px;
  transform: translateY(-50%);
  width: 28px; height: 48px;
  background: var(--cf-white);
  border: 1px solid var(--cf-border);
  border-right: none;
  border-radius: 6px 0 0 6px;
  box-shadow: -2px 0 8px rgba(0,0,0,.07);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: var(--cf-muted);
  transition: color .15s, background .15s;
  padding: 0;
  font-family: var(--cf-font);
}
#cf-sb-toggle:hover { background: #f8fafc; color: var(--cf-blue); }
/* Admin-Bar versetzt die Sidebar nach unten */
.admin-bar #cf-sidebar {
  top: 32px;
  height: calc(100vh - 32px);
}
@media screen and (max-width: 782px) {
  .admin-bar #cf-sidebar { top: 46px; height: calc(100vh - 46px); }
}
.cfs-head {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: var(--cf-head-h);
  box-sizing: border-box;
  display: flex; align-items: center; gap: 8px;
  padding: 0 16px;
  border-bottom: 1px solid var(--cf-border);
  background: var(--cf-white);
  z-index: 1;
}
.cfs-title {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; font-weight: 700;
  color: var(--cf-text);
  text-transform: uppercase; letter-spacing: .07em;
}
.cfs-title svg { color: var(--cf-blue); }
.cfs-tabs {
  position: absolute;
  top: var(--cf-head-h); left: 0; right: 0;
  height: var(--cf-tabs-h);
  display: flex;
  border-bottom: 1px solid var(--cf-border);
  background: var(--cf-white);
  z-index: 1;
}
.cfs-tab {
  flex: 1; border: none; border-bottom: 2px solid transparent;
  background: none; padding: 0;
  font-size: 12px; font-weight: 600; font-family: var(--cf-font);
  color: var(--cf-muted); cursor: pointer;
  transition: color .15s, border-color .15s;
}
.cfs-tab.active { color: var(--cf-blue); border-bottom-color: var(--cf-blue); }
.cfs-tab:hover:not(.active) { color: var(--cf-text); }

.cfs-list {
  position: absolute;
  top: calc(var(--cf-head-h) + var(--cf-tabs-h));
  bottom: 0; left: 0; right: 0;
  height: calc(100vh - var(--cf-head-h) - var(--cf-tabs-h));
  max-height: calc(100vh - var(--cf-head-h) - var(--cf-tabs-h));
  overflow-y: scroll !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 8px;
  display: flex; flex-direction: column; gap: 6px;
  box-sizing: border-box;
}
.admin-bar .cfs-list {
  height: calc(100vh - 32px - var(--cf-head-h) - var(--cf-tabs-h));
  max-height: calc(100vh - 32px - var(--cf-head-h) - var(--cf-tabs-h));
}
@media screen and (max-width: 782px) {
  .admin-bar .cfs-list {
    height: calc(100vh - 46px - var(--cf-head-h) - var(--cf-tabs-h));
    max-height: calc(100vh - 46px - var(--cf-head-h) - var(--cf-tabs-h));
  }
}
.cfs-list::-webkit-scrollbar { width: 4px; }
.cfs-list::-webkit-scrollbar-thumb { background: var(--cf-border); border-radius: 4px; }
.cfs-empty {
  padding: 32px 16px; text-align: center;
  font-size: 13px; color: var(--cf-muted); margin: 0;
}

/* ── Karte ───────────────────────────────────────────────── */
.cfs-card {
  border-radius: var(--cf-r);
  border: 1.5px solid var(--cf-border);
  padding: 10px 12px 10px 15px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, background .15s;
  background: var(--cf-white);
  position: relative; overflow: hidden;
  flex-shrink: 0; /* verhindert Schrumpfen im Flex-Container → Scroll funktioniert */
}
.cfs-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
}
.cfs-card-open::before        { background: var(--cf-red);    }
.cfs-card-in_progress::before { background: var(--cf-orange); }
.cfs-card-resolved::before    { background: var(--cf-green);  }
.cfs-card:hover { border-color: var(--cf-blue); box-shadow: 0 0 0 3px rgba(76,205,185,.08); }
.cfs-card.active { border-color: var(--cf-blue); background: #f0fbf9; box-shadow: 0 0 0 3px rgba(76,205,185,.13); }

.cfs-card-head { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.cfs-num {
  width: 18px; height: 18px; border-radius: 50%;
  font-size: 10px; font-weight: 700; color: var(--cf-white);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.cfs-num-open        { background: var(--cf-red);    }
.cfs-num-in_progress { background: var(--cf-orange); }
.cfs-num-resolved    { background: var(--cf-green);  }

.cfs-badge { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 20px; text-transform: uppercase; letter-spacing: .04em; }
.cfs-badge-open        { background: #fee2e2; color: #b91c1c; }
.cfs-badge-in_progress { background: #ffedd5; color: #c2410c; }
.cfs-badge-resolved    { background: #dcfce7; color: #15803d; }
.cfs-date  { margin-left: auto; font-size: 10px; color: var(--cf-muted); white-space: nowrap; }
.cfs-comment {
  font-size: 12.5px; line-height: 1.5; color: var(--cf-text); margin: 0 0 2px;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;
}
.cfs-comment.expanded {
  display: block; -webkit-line-clamp: unset; overflow: visible;
}
.cfs-read-more {
  display: none; background: none; border: none; padding: 0;
  font-size: 11px; font-family: var(--cf-font); color: var(--cf-blue);
  cursor: pointer; margin-bottom: 5px;
}
.cfs-read-more:hover { text-decoration: underline; }
.cfs-author { display: flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--cf-text); flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.cfs-actions { margin-top: 7px; }
.cfs-sel {
  width: 100%; padding: 4px 6px;
  border: 1px solid var(--cf-border); border-radius: 5px;
  font-size: 12px; font-family: var(--cf-font); background: var(--cf-white); cursor: pointer;
}
.cfs-sel:focus { outline: 2px solid var(--cf-blue); outline-offset: 1px; }

/* =================================================================
   FAB WIDGET
================================================================= */
#cf-widget {
  position: fixed;
  bottom: 24px;
  right: calc(var(--cf-sw) + 16px);
  z-index: calc(var(--cf-z) + 10);
  display: flex; flex-direction: column; align-items: flex-end; gap: 10px;
  font-family: var(--cf-font);
}
#cf-fab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 20px;
  background: var(--cf-blue); color: var(--cf-white);
  border: none; border-radius: 50px;
  font-size: 14px; font-weight: 600; font-family: var(--cf-font);
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(76,205,185,.38);
  transition: background .15s, transform .15s, box-shadow .15s;
  user-select: none; white-space: nowrap; line-height: 1;
}
#cf-fab svg    { flex-shrink: 0; }
#cf-fab:hover  { background: var(--cf-blue-d); transform: translateY(-2px); box-shadow: 0 6px 22px rgba(76,205,185,.46); }
#cf-fab:active { transform: none; }
#cf-fab.active { background: #2a9485; }
#cf-statusbar {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 16px;
  background: rgba(15,23,42,.9); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: var(--cf-white); border-radius: 50px;
  font-size: 13px; font-family: var(--cf-font);
  pointer-events: none; animation: cf-rise .18s ease;
}
.cf-sb-hint { opacity: .5; font-size: 11px; border-left: 1px solid rgba(255,255,255,.2); padding-left: 10px; }

/* =================================================================
   AUSWAHLMODUS
================================================================= */
body.cf-selecting,
body.cf-selecting * { cursor: crosshair !important; }
body.cf-selecting .cf-pin { pointer-events: none !important; }

.cf-hl {
  outline: 2px solid var(--cf-blue) !important;
  outline-offset: 3px !important;
  background-color: rgba(76,205,185,.06) !important;
}

/* =================================================================
   POPUP
================================================================= */
.cf-popup {
  position: fixed; width: 310px;
  z-index: calc(var(--cf-z) + 20);
  font-family: var(--cf-font);
  border-radius: var(--cf-r); box-shadow: var(--cf-shadow); overflow: hidden;
  opacity: 0; transform: scale(.95) translateY(6px); transform-origin: top left;
  transition: opacity .17s ease, transform .17s ease; pointer-events: none;
}
.cf-popup.in { opacity: 1; transform: scale(1) translateY(0); pointer-events: auto; }
.cf-popup-head {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 14px; background: var(--cf-blue); color: var(--cf-white);
  font-size: 13px; font-weight: 600;
}
.cf-popup-head svg { flex-shrink: 0; opacity: .9; }
.cf-popup-head span { flex: 1; }
.cf-popup-close {
  margin-left: auto; background: none; border: none;
  color: var(--cf-white); font-size: 20px; line-height: 1;
  cursor: pointer; opacity: .75; padding: 0 2px; transition: opacity .1s;
}
.cf-popup-close:hover { opacity: 1; }
.cf-popup-body { padding: 13px 14px 15px; background: var(--cf-white); }
.cf-popup-body input,
.cf-popup-body textarea {
  display: block; width: 100%; box-sizing: border-box;
  padding: 8px 10px; margin-bottom: 9px;
  border: 1px solid var(--cf-border); border-radius: 6px;
  font-size: 13px; font-family: var(--cf-font);
  color: var(--cf-text); background: #f8fafc;
  outline: none; transition: border-color .14s, box-shadow .14s; resize: vertical;
}
.cf-popup-body input:focus,
.cf-popup-body textarea:focus {
  border-color: var(--cf-blue); box-shadow: 0 0 0 3px rgba(76,205,185,.12);
  background: var(--cf-white);
}
.cf-popup-body textarea { min-height: 88px; }
.cf-popup-foot { display: flex; justify-content: flex-end; gap: 8px; }
.cf-btn-cancel {
  padding: 7px 14px; background: #f1f5f9; border: 1px solid var(--cf-border); border-radius: 6px;
  font-size: 13px; font-weight: 500; font-family: var(--cf-font);
  color: var(--cf-muted); cursor: pointer; transition: background .13s;
}
.cf-btn-cancel:hover { background: #e2e8f0; }
.cf-btn-ok {
  padding: 7px 16px; background: var(--cf-blue); border: none; border-radius: 6px;
  font-size: 13px; font-weight: 600; font-family: var(--cf-font);
  color: var(--cf-white); cursor: pointer; transition: background .13s;
}
.cf-btn-ok:hover:not(:disabled) { background: var(--cf-blue-d); }
.cf-btn-ok:disabled { opacity: .55; cursor: not-allowed; }
.cf-msg { padding: 7px 10px; border-radius: 6px; font-size: 12.5px; margin-top: 9px; }
.cf-msg-ok  { background: #f0fdf4; color: #16a34a; border: 1px solid #bbf7d0; }
.cf-msg-err { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }

/* =================================================================
   PIN-LAYER
   position:absolute am <html>-Element, top/left 0.
   → Ausserhalb von body und allen body-Transforms/Transforms in
     Flatsome-Sections. Pins scrollen natürlich mit der Seite mit,
     kein scroll-Listener nötig. z-index greift im Root-Stacking-
     Context → immer über Seiteninhalten.
================================================================= */
#cf-pin-layer {
  position: absolute;
  top: 0; left: 0;
  width: 0; height: 0;
  overflow: visible;
  pointer-events: none;
  z-index: var(--cf-z);
}
#cf-pin-layer .cf-pin {
  pointer-events: auto;
}

/* =================================================================
   PINS
================================================================= */
.cf-pin {
  /* Browser-Button-Reset – Flatsome/Theme-CSS überschreiben verhindern */
  -webkit-appearance: none;
  appearance: none;
  position: absolute;
  /* Mittelpunkt des Punkts auf den Klickpunkt zentrieren */
  transform: translate(-13px, -13px);
  width: 26px !important; height: 26px !important;
  min-width: 0; min-height: 0;
  box-sizing: border-box;
  border-radius: 50% !important;
  border: 2.5px solid #ffffff !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.3);
  z-index: 9999;
  cursor: pointer;
  display: flex !important; align-items: center; justify-content: center;
  transition: box-shadow .15s, transform .15s;
  padding: 0 !important; outline: none;
  font-family: var(--cf-font);
  pointer-events: auto;
}
.cf-pin:hover,
.cf-pin.cf-pin-active {
  transform: translate(-13px, -13px) scale(1.28);
  box-shadow: 0 4px 16px rgba(0,0,0,.38);
}
.cf-pin.cf-pin-active::after {
  content: '';
  position: absolute; inset: -5px;
  border-radius: 50%;
  border: 2px solid currentColor;
  animation: cf-pulse 1.3s ease-out infinite;
}
.cf-pin-open        { background: #ef4444 !important; color: #ef4444; }
.cf-pin-in_progress { background: #f97316 !important; color: #f97316; }
.cf-pin-resolved    { background: #22c55e !important; color: #22c55e; }

/* Draft-Pin (temporär während Eingabe, liegt im fixed Pin-Layer) */
.cf-pin-draft {
  background: var(--cf-blue) !important;
  opacity: .5;
  pointer-events: none;
}

/* =================================================================
   ELEMENT-HIGHLIGHT bei Aktivierung
================================================================= */
.cf-target-active {
  outline: 3px solid var(--cf-blue) !important;
  outline-offset: 4px !important;
  animation: cf-flash 2.5s ease forwards;
}
@keyframes cf-flash {
  0%   { box-shadow: 0 0 0 6px rgba(76,205,185,.25); }
  60%  { box-shadow: 0 0 0 10px rgba(76,205,185,.04); }
  100% { box-shadow: none; }
}

/* =================================================================
   ANIMATIONEN
================================================================= */
@keyframes cf-rise {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}
@keyframes cf-pulse {
  from { transform: scale(1);   opacity: .5; }
  to   { transform: scale(1.9); opacity: 0;  }
}

/* =================================================================
   RESPONSIVE
================================================================= */
@media (max-width: 700px) {
  :root { --cf-sw: 240px; }
  #cf-fab span { display: none; }
  #cf-fab { padding: 12px; border-radius: 50%; }
}
@media (max-width: 480px) {
  #cf-sidebar { display: none; }
  #cf-widget  { right: 16px; bottom: 16px; }
}



.cf-pin-open,
.cf-pin-resolved,
.cf-pin-in_progress{
  max-width: unset !important;
  border: none !important;
}

.cfs-card-head .cfs-num.cfs-num-open,
.cfs-card-head .cfs-num.cfs-num-resolved,
.cfs-card-head .cfs-num.cfs-num-in_progress{
  display: none !important;
}
