/* ═══ WhatsApp-style ticket bubbles ═══
   Same look across coach/trainer/admin/client roles:
   - Own messages → right-aligned, neon green gradient
   - Other party  → left-aligned, neutral card
   - Tail: rounded corners, with one corner sharper for direction
   Single .wa-bubble class drives the look; role classes only color the avatar/label. */
.ticket-fs-thread{display:flex;flex-direction:column;gap:6px;padding:8px 4px}

.wa-row{display:flex;flex-direction:column;max-width:78%;animation:waMsgIn .25s ease-out}
@keyframes waMsgIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.wa-row.own{align-self:flex-end;align-items:flex-end}
.wa-row.other{align-self:flex-start;align-items:flex-start}

.wa-meta{display:flex;align-items:center;gap:8px;font-size:.7rem;color:var(--text-dim);margin-bottom:3px;padding:0 6px;font-weight:600}
.wa-row.own .wa-meta{flex-direction:row-reverse}
.wa-meta strong{color:var(--text-secondary);font-weight:700}
.wa-role-pill{padding:2px 8px;border-radius:999px;font-size:.62rem;font-weight:700;letter-spacing:.3px;text-transform:uppercase}
.wa-role-pill.role-admin{background:rgba(168,85,247,.12);color:var(--purple)}
.wa-role-pill.role-coach{background:rgba(200,245,49,.12);color:var(--accent)}
.wa-role-pill.role-trainer{background:rgba(96,165,250,.12);color:var(--blue)}
.wa-role-pill.role-client{background:rgba(16,185,129,.12);color:var(--green)}
.wa-role-pill.role-system{background:rgba(255,255,255,.06);color:var(--text-dim)}

.wa-bubble{
  position:relative;
  padding:9px 13px;
  border-radius:14px;
  font-size:.88rem;line-height:1.5;
  word-wrap:break-word;word-break:break-word;white-space:pre-wrap;
  max-width:100%;
}
.wa-row.own .wa-bubble{
  background:linear-gradient(135deg,var(--accent),#A8E600);
  color:#000;
  border-bottom-right-radius:5px;
  font-weight:600;
}
.wa-row.other .wa-bubble{
  background:var(--bg-card);
  color:var(--text-primary);
  border:1px solid var(--border);
  border-bottom-left-radius:5px;
}
.wa-row.other.role-admin .wa-bubble{border-left:3px solid var(--purple)}
.wa-row.other.role-coach .wa-bubble{border-left:3px solid var(--accent)}
.wa-row.other.role-trainer .wa-bubble{border-left:3px solid var(--blue)}
.wa-row.other.role-client .wa-bubble{border-left:3px solid var(--green)}

.wa-time{font-size:.62rem;color:var(--text-dim);margin-top:3px;font-weight:600;padding:0 6px}
.wa-edit-btn{
  position:absolute;top:6px;right:6px;
  width:24px;height:24px;border-radius:50%;
  background:rgba(0,0,0,.18);color:inherit;
  border:none;cursor:pointer;
  font-size:.75rem;font-weight:700;
  opacity:0;transition:opacity .15s,background .2s;
  display:flex;align-items:center;justify-content:center;
}
.wa-bubble:hover .wa-edit-btn{opacity:.7}
.wa-edit-btn:hover{opacity:1!important;background:rgba(0,0,0,.32)}
.wa-edited-footer{font-size:.66rem;color:var(--text-dim);font-style:italic;margin-top:4px;opacity:.85}

/* Day separator */
.wa-day-divider{display:flex;align-items:center;justify-content:center;margin:10px 0 4px}
.wa-day-divider span{font-size:.66rem;font-weight:700;color:var(--text-dim);background:rgba(255,255,255,.04);padding:5px 12px;border-radius:999px;letter-spacing:.5px}

/* Original (first) message in coach<->trainer/admin tickets — same look,
   marked subtly so users can tell it's the opening message. */
.wa-row.original .wa-bubble{box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}

/* Legacy classes — keep them as no-ops in case any place still references them */
.ticket-bubble,.ticket-bubble-original,.ticket-bubble-trainer,.ticket-bubble-coach,.ticket-bubble-admin,.ticket-bubble-client{all:unset}
.ticket-bubble-head{font-size:.78rem;margin-bottom:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ticket-bubble-body{font-size:.85rem;color:var(--text-secondary);line-height:1.6;white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word}
/* Prominent sender name at top of ticket row */
.ticket-sender-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:rgba(96,165,250,.08);border:1px solid rgba(96,165,250,.2);color:var(--blue);border-radius:20px;font-size:.72rem;margin-bottom:8px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticket-sender-pill strong{color:var(--text-primary);font-weight:700}

/* Month Picker Options (Yeni Ay Başlat modal) */
.month-picker-opt{display:flex;align-items:center;gap:14px;width:100%;padding:16px 18px;background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:12px;color:var(--text-primary);font-family:inherit;cursor:pointer;transition:all .2s;text-align:left}
.month-picker-opt:hover{background:rgba(200,245,49,.05);border-color:rgba(200,245,49,.35);transform:translateY(-1px)}
.month-picker-opt:active{transform:translateY(0)}
.mp-icon{width:44px;height:44px;border-radius:10px;background:var(--accent-dim);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
.mp-title{font-weight:700;font-size:.95rem;margin-bottom:3px;color:var(--text-primary)}
.mp-sub{font-size:.75rem;color:var(--text-dim);line-height:1.5}

/* Gym group (admin support) */
.gym-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:rgba(168,85,247,.1);border:1px solid rgba(168,85,247,.2);color:var(--purple);border-radius:20px;font-size:.68rem;font-weight:700;white-space:nowrap}
.gym-count-pill{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;background:var(--accent-dim);color:var(--accent);border-radius:12px;font-size:.78rem;font-weight:800}
.gym-group{background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:border-color .2s}
.gym-group:hover{border-color:rgba(168,85,247,.2)}
.gym-group-head{display:flex;align-items:center;gap:10px;padding:14px 18px;cursor:pointer;user-select:none}
.gym-group-head:hover{background:rgba(168,85,247,.03)}
.gym-chevron{display:inline-block;transition:transform .25s;color:var(--text-dim);font-size:.7rem}
.gym-group.open .gym-chevron{transform:rotate(180deg)}
.gym-group-body{max-height:0;overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1)}
.gym-group.open .gym-group-body{max-height:3000px}

/* Full-screen ticket conversation */
/* Destek/sohbet modalı genel .modal-overlay'in (200) üstüne çıkmalı:
   sticky sidebar z-index 9800 — split-screen/dar ekranda 96vw'lik modalın
   sol tarafını örtüyordu (2026-07-09, §4.1 altıncı vaka). 10200 = resmi
   ölçekteki modal istisna katmanı; #confirmModal (10250) yine üstte kalır. */
/* [C3] #ticketDetailModal z-index istisnası kaldırıldı — kp fabrikası varsayılanı zaten 10200 */
.modal.ticket-fullscreen{max-width:min(1100px,96vw);width:96vw;max-height:94vh;height:94vh;padding:0;display:flex;flex-direction:column;overflow:hidden}
.ticket-fs-header{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.02);flex-shrink:0}
.ticket-fs-subject{margin:0;flex:1;min-width:0;word-break:break-word;font-size:1.1rem;font-weight:700;line-height:1.3}
.ticket-fs-close{width:36px;height:36px;min-width:36px;border-radius:50%;border:1px solid var(--border);background:rgba(255,255,255,.03);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:1rem;transition:all .2s;flex-shrink:0;margin-left:4px}
.ticket-fs-close:hover{background:rgba(255,80,80,.1);border-color:rgba(255,80,80,.3);color:var(--red)}
.ticket-back-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border);background:rgba(255,255,255,.03);color:var(--text-primary);border-radius:10px;cursor:pointer;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .2s;white-space:nowrap;flex-shrink:0}
.ticket-back-btn:hover{background:var(--accent-dim);border-color:rgba(200,245,49,.25);color:var(--accent);transform:translateX(-2px)}
.ticket-fs-body{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:20px 28px 24px}
.ticket-fs-thread{flex:1;overflow-y:auto;padding-right:4px;margin-bottom:16px;min-height:0}
.ticket-fs-actions{flex-shrink:0;border-top:1px solid var(--border);padding-top:16px}

/* Two-pane ticket layout for Super Admin */
.ticket-twopane{display:grid;grid-template-columns:300px 1fr;gap:0;flex:1;overflow:hidden;padding:0;min-height:0}
.ticket-twopane-list{border-right:1px solid var(--border);overflow-y:auto;padding:14px;background:rgba(255,255,255,.01);display:flex;flex-direction:column;gap:6px}
.ticket-twopane-list-item{padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.02);cursor:pointer;transition:all .2s}
.ticket-twopane-list-item:hover{background:rgba(200,245,49,.04);border-color:rgba(200,245,49,.2)}
.ticket-twopane-list-item.active{background:rgba(200,245,49,.08);border-color:var(--accent)}
.ticket-twopane-list-item .tp-sub{font-weight:700;font-size:.82rem;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4}
.ticket-twopane-list-item .tp-meta{font-size:.7rem;color:var(--text-dim);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ticket-twopane-list-item .tp-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:middle}
.ticket-twopane-detail{overflow:hidden;padding:22px 28px 26px;display:flex;flex-direction:column;min-height:0}
.gym-conv-header{margin-bottom:16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:0}
.gym-conv-thread{flex:1;overflow-y:auto;min-height:0;padding-right:4px}
.gym-conv-thread::-webkit-scrollbar{width:6px}
.gym-conv-thread::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:3px}
.gym-conv-actions{flex-shrink:0;margin-top:12px}
.ticket-twopane-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:var(--text-dim);gap:10px;padding:40px}
@media(max-width:768px){.ticket-twopane{grid-template-columns:1fr}.ticket-twopane-list{max-height:220px;border-right:none;border-bottom:1px solid var(--border)}}

/* Gym Card Grid (Super Admin — replaces horizontal rows) */
.gym-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}
.gym-card{position:relative;padding:22px 16px 18px;background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:16px;cursor:pointer;transition:all .25s;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.gym-card:hover{background:rgba(200,245,49,.04);border-color:rgba(200,245,49,.25);transform:translateY(-2px);box-shadow:0 12px 32px rgba(0,0,0,.3)}
.gym-card-avatar-wrap{position:relative;width:72px;height:72px;margin-bottom:4px}
.gym-card-avatar{width:72px;height:72px;border-radius:18px;background:linear-gradient(135deg,rgba(168,85,247,.2),rgba(168,85,247,.05));border:1px solid rgba(168,85,247,.25);display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;color:var(--purple);background-size:cover;background-position:center;cursor:pointer;transition:all .2s;position:relative;overflow:hidden}
.gym-card-avatar:hover{border-color:rgba(200,245,49,.4);transform:scale(1.04)}
.gym-card-avatar.has-logo{border-color:rgba(200,245,49,.25)}
.gym-card-avatar-hint{position:absolute;bottom:0;left:0;right:0;padding:3px;background:rgba(0,0,0,.65);color:#fff;font-size:.75rem;opacity:0;transition:opacity .2s}
.gym-card-avatar:hover .gym-card-avatar-hint{opacity:1}
.gym-logo-remove{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:none;background:var(--red);color:#fff;font-size:.7rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;z-index:3;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.gym-card:hover .gym-logo-remove{opacity:1;pointer-events:auto}
.gym-card-badge{position:absolute;bottom:-6px;left:-6px;min-width:26px;height:26px;padding:0 8px;border-radius:13px;background:var(--red);color:#fff;font-size:.78rem;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(255,80,80,.45);z-index:2}
.gym-card-name{font-weight:700;font-size:.92rem;color:var(--text-primary);word-break:break-word;line-height:1.35;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.gym-card-meta{font-size:.72rem;color:var(--text-dim);font-weight:600}

/* Presence indicator (Admin only sees coach status — coaches/trainers never see admin) */
.presence-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;flex-shrink:0}
.presence-online{background:#10B981;box-shadow:0 0 0 3px rgba(16,185,129,.18);animation:presencePulse 2s ease-in-out infinite}
.presence-offline{background:#6B7280;box-shadow:0 0 0 2px rgba(107,114,128,.15)}
@keyframes presencePulse{0%,100%{box-shadow:0 0 0 3px rgba(16,185,129,.18)}50%{box-shadow:0 0 0 5px rgba(16,185,129,.28)}}
.gym-card-presence{display:flex;align-items:center;justify-content:center;font-size:.66rem;color:var(--text-dim);font-weight:600;margin-top:2px;padding:2px 6px;background:rgba(255,255,255,.02);border-radius:8px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-presence-chip{display:inline-flex;align-items:center;font-size:.72rem;color:var(--text-dim);font-weight:600}
.presence-inline{display:inline-flex;align-items:center;margin-left:8px;font-size:.68rem;color:var(--text-dim);font-weight:500}

/* Typing indicator (WhatsApp-style) */
.typing-indicator{display:flex;align-items:center;gap:10px;padding:8px 14px;margin-bottom:12px;background:rgba(200,245,49,.06);border:1px solid rgba(200,245,49,.15);border-radius:20px;width:fit-content;font-size:.78rem;color:var(--accent);font-weight:600}
.typing-dots{display:inline-flex;gap:4px;align-items:center}
.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block;animation:typingBounce 1.3s ease-in-out infinite}
.typing-dots span:nth-child(2){animation-delay:.18s}
.typing-dots span:nth-child(3){animation-delay:.36s}
@keyframes typingBounce{0%,60%,100%{transform:scale(.6);opacity:.4}30%{transform:scale(1.2);opacity:1}}

/* Closed-ticket notice (shown in place of reply form when ticket is locked) */
.ticket-closed-notice{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;background:rgba(255,80,80,.06);border:1px solid rgba(255,80,80,.2);border-radius:12px;margin-top:14px}

/* Request count pill in gym conversation header (next to ✕ close) */
.ticket-count-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--accent-dim);border:1px solid rgba(200,245,49,.22);color:var(--accent);border-radius:999px;font-size:.75rem;font-weight:800;white-space:nowrap;flex-shrink:0}
.ticket-count-pill-clickable{cursor:pointer;transition:all .2s}
.ticket-count-pill-clickable:hover{background:rgba(200,245,49,.18);border-color:var(--accent);transform:translateY(-1px)}

/* Reply edit button (Instagram-style: only on own bubbles, no delete) */
.reply-edit-btn{margin-left:auto;padding:2px 8px;border:none;background:rgba(255,255,255,.05);color:var(--text-dim);border-radius:6px;cursor:pointer;font-size:.72rem;opacity:0;transition:opacity .2s,color .2s,background .2s;font-family:inherit}
.ticket-bubble:hover .reply-edit-btn{opacity:1}
.reply-edit-btn:hover{color:var(--accent);background:rgba(200,245,49,.1)}
.reply-edit-textarea{width:100%;min-height:80px;padding:8px 10px;background:rgba(15,15,20,.6);border:1px solid rgba(200,245,49,.3);border-radius:8px;color:var(--text-primary);font-family:inherit;font-size:.85rem;resize:vertical;outline:none}
.reply-edited-footer{margin-top:6px;padding-top:6px;border-top:1px dashed rgba(255,255,255,.06);font-size:.66rem;color:var(--text-dim);font-style:italic;line-height:1.5;word-break:break-word}

/* Trainer "wait for coach" notice (spam protection) */
.trainer-wait-notice{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;background:rgba(255,159,67,.06);border:1px solid rgba(255,159,67,.2);border-radius:12px;margin-top:18px}

/* Gym logo + search */
.gym-search-wrap{position:relative;margin-bottom:16px}
.gym-search-wrap input{width:100%;padding:10px 14px 10px 40px;background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:10px;color:var(--text-primary);font-family:inherit;font-size:.88rem;outline:none;transition:border-color .2s}
.gym-search-wrap input:focus{border-color:var(--accent)}
.gym-search-wrap::before{content:'🔍';position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:.9rem;opacity:.6;pointer-events:none}
.gym-logo-avatar{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,rgba(168,85,247,.15),rgba(168,85,247,.05));border:1px solid rgba(168,85,247,.2);display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:var(--purple);font-weight:800;flex-shrink:0;overflow:hidden;background-size:cover;background-position:center}
.gym-logo-upload-btn{padding:4px 10px;border:1px dashed rgba(200,245,49,.3);background:transparent;color:var(--accent);border-radius:8px;font-size:.7rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s}
.gym-logo-upload-btn:hover{background:rgba(200,245,49,.08);border-style:solid}

/* Measurement Tooltip */
.measure-tooltip{position:fixed;z-index:800;background:rgba(15,15,20,.96);border:1px solid rgba(200,245,49,.25);border-radius:10px;padding:10px 14px;font-size:.78rem;color:var(--text-primary);line-height:1.7;white-space:pre-wrap;max-width:240px;box-shadow:0 12px 40px rgba(0,0,0,.5);pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .18s,transform .18s}
.measure-tooltip.show{opacity:1;transform:translateY(0)}
.measure-tooltip::before{content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid rgba(15,15,20,.98)}
.month-num{font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px}
.month-label{font-size:.95rem;font-weight:700}
.month-status{font-size:.65rem;color:var(--text-dim);margin-top:4px}
.analysis-card{background:linear-gradient(135deg,rgba(96,165,250,.08),rgba(96,165,250,.02));border:1px solid rgba(96,165,250,.2);border-radius:var(--radius);padding:20px;margin-bottom:16px;text-align:center}
.analysis-card h4{color:var(--blue);font-size:.9rem;margin-bottom:6px}
.analysis-card p{font-size:.78rem;color:var(--text-dim);margin-bottom:12px}
.btn-analysis{background:linear-gradient(135deg,#60A5FA,#3B82F6);color:#fff;border:none;padding:10px 20px;border-radius:10px;font-family:inherit;font-size:.82rem;font-weight:700;cursor:pointer}
.metric-mini{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.metric-mini-card{background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center}
.metric-mini-val{font-size:1.2rem;font-weight:800;letter-spacing:-1px;color:var(--text-dim)}
.metric-mini-label{font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;margin-top:2px}

/* SETTINGS */
.settings-grid{display:grid;grid-template-columns:220px 1fr;gap:24px}
.settings-menu{list-style:none;display:flex;flex-direction:column;gap:2px}
.settings-menu a{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;text-decoration:none}
.settings-menu a:hover{background:rgba(255,255,255,.04);color:var(--text-primary)}
.settings-menu a.active{background:var(--accent-dim);color:var(--accent)}
.section-title{font-size:1.1rem;font-weight:700;margin-bottom:6px}
.section-desc{font-size:.82rem;color:var(--text-dim);margin-bottom:24px}
.profile-avatar-edit{display:flex;align-items:center;gap:20px;margin-bottom:24px}
.profile-avatar-lg{width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#DDF98B);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.4rem;color:var(--bg-dark);background-size:cover;background-position:center;flex-shrink:0}

/* TOGGLE */
.toggle-sw{position:relative;width:44px;height:24px;background:rgba(255,255,255,.08);border-radius:12px;cursor:pointer;flex-shrink:0}
.toggle-sw.on{background:var(--accent)}
.toggle-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s}
.toggle-sw.on .toggle-knob{transform:translateX(20px);background:var(--bg-dark)}

/* ADMIN STATS */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden}
.stat-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--purple)}
.stat-label{font-size:.72rem;color:var(--text-dim);font-weight:500;margin-bottom:8px}
.stat-value{font-size:2rem;font-weight:800;letter-spacing:-1px}
.stat-sub{font-size:.7rem;color:var(--text-dim);margin-top:4px}

/* TOAST */
