/* Gym Membership — Floating Account Widget */

/* Dark theme (default) */
.gym-fab-wrap {
  --fab-bg:           #181716;
  --fab-surface:      #1e1d1b;
  --fab-surface-2:    #252320;
  --fab-border:       #333028;
  --fab-text:         #e8e6e2;
  --fab-text-muted:   #8a8680;
  --fab-text-faint:   #504e4a;
  --fab-primary:      var(--gym-primary, #1a6b3c);
  --fab-primary-dark: var(--gym-primary-dark, #134d2c);
  --fab-success:      #4caf6e;
  --fab-danger:       #e05a5a;
  --fab-inactive:     #6b7c71;
  --fab-ease:         180ms cubic-bezier(0.16, 1, 0.3, 1);
  position:fixed; bottom:clamp(2rem,5vw,3.5rem); right:clamp(1.25rem,4vw,2rem);
  z-index:99999; display:flex; flex-direction:column; align-items:flex-end;
  gap:.75rem; font-family:inherit; line-height:1.4;
}

/* Light theme */
.gym-fab-wrap[data-theme="light"] {
  --fab-bg:           #f5f4f0;
  --fab-surface:      #faf9f7;
  --fab-surface-2:    #ffffff;
  --fab-border:       #ccc8c0;
  --fab-text:         #1a1916;
  --fab-text-muted:   #706d67;
  --fab-text-faint:   #b0ada7;
  --fab-success:      #2e7d46;
  --fab-danger:       #c43a3a;
  --fab-inactive:     #9ca3a0;
}

/* Wrapper — fixed bottom right, panel stacks above trigger */

/* FAB trigger button */
.gym-fab-btn { width:56px; height:56px; border-radius:50%; background:var(--fab-primary); color:#fff !important; border:none; cursor:pointer; display:flex !important; align-items:center; justify-content:center; box-shadow:0 4px 20px rgba(0,0,0,.35); position:relative; flex-shrink:0; transition:background var(--fab-ease), transform var(--fab-ease), box-shadow var(--fab-ease); padding:0; margin:0; }
.gym-fab-btn:hover { background:var(--fab-primary-dark); transform:translateY(-3px); box-shadow:0 8px 28px rgba(0,0,0,.45); }
.gym-fab-btn:active { transform:translateY(0); box-shadow:0 2px 10px rgba(0,0,0,.3); }
.gym-fab-btn svg { width:24px !important; height:24px !important; display:block !important; flex-shrink:0; stroke-width:2; pointer-events:none; max-width:none !important; }
.gym-fab-btn .gym-fab-icon-close { display:none !important; }
.gym-fab-wrap.open .gym-fab-btn .gym-fab-icon-user { display:none !important; }
.gym-fab-wrap.open .gym-fab-btn .gym-fab-icon-close { display:block !important; }

/* Status dot */
.gym-fab-dot { position:absolute; top:5px; right:5px; width:12px; height:12px; border-radius:50%; border:2.5px solid var(--fab-primary); display:block; }
.gym-fab-dot-active    { background:#4caf6e; }
.gym-fab-dot-expired   { background:#e05a5a; }
.gym-fab-dot-suspended { background:#e05a5a; }
.gym-fab-dot-inactive  { background:#6b7c71; }
.gym-fab-dot-guest     { display:none !important; }

/* Tooltip */
.gym-fab-label { position:absolute; right:calc(100% + .75rem); top:50%; transform:translateY(-50%) translateX(6px); white-space:nowrap; background:var(--fab-surface); color:var(--fab-text); font-size:.75rem; font-weight:500; padding:.2rem .65rem; border-radius:6px; border:1px solid var(--fab-border); box-shadow:0 2px 8px rgba(0,0,0,.25); opacity:0; pointer-events:none; transition:opacity var(--fab-ease), transform var(--fab-ease); }
.gym-fab-btn:hover .gym-fab-label { opacity:1; transform:translateY(-50%) translateX(0); }
.gym-fab-wrap.open .gym-fab-label { opacity:0 !important; pointer-events:none; }

/* Panel — hidden by default, shown when .open added to wrapper */
.gym-fab-panel { display:none; width:300px; background:var(--fab-bg); border:1px solid var(--fab-border); border-radius:16px; box-shadow:0 12px 40px rgba(0,0,0,.55); overflow:hidden; }
.gym-fab-wrap.open .gym-fab-panel { display:block; animation:gym-fab-in 200ms cubic-bezier(0.16,1,0.3,1) both; }
@keyframes gym-fab-in { from { opacity:0; transform:translateY(10px) scale(.96); } to { opacity:1; transform:translateY(0) scale(1); } }

/* Panel header */
.gym-fab-header { display:flex; align-items:center; gap:.75rem; padding:1rem 1rem .85rem; border-bottom:1px solid var(--fab-border); }
.gym-fab-avatar { width:42px; height:42px; border-radius:50%; background:var(--fab-primary); color:#fff !important; display:flex !important; align-items:center; justify-content:center; font-size:.9rem; font-weight:700; letter-spacing:.02em; flex-shrink:0; border:2px solid var(--fab-primary-dark); }
.gym-fab-avatar svg { width:20px !important; height:20px !important; display:block !important; max-width:none !important; }
.gym-fab-avatar-guest { background:var(--fab-surface-2); border-color:var(--fab-border); color:var(--fab-text-faint) !important; }
.gym-fab-name { font-size:.9rem; font-weight:600; color:var(--fab-text); line-height:1.2; margin:0; padding:0; }
.gym-fab-role { font-size:.72rem; color:var(--fab-text-muted); margin-top:.15rem; }
.gym-fab-close { margin-left:auto; width:28px; height:28px; border-radius:50%; border:none; cursor:pointer; display:flex !important; align-items:center; justify-content:center; background:var(--fab-surface-2); color:var(--fab-text-faint); flex-shrink:0; transition:background var(--fab-ease), color var(--fab-ease); padding:0; }
.gym-fab-close:hover { background:var(--fab-border); color:var(--fab-text); }
.gym-fab-close svg { width:12px !important; height:12px !important; display:block !important; max-width:none !important; stroke-width:2.5; }

/* Stats row */
.gym-fab-stats { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--fab-border); border-bottom:1px solid var(--fab-border); }
.gym-fab-stat { background:var(--fab-surface); padding:.75rem 1rem; text-align:center; }
.gym-fab-stat-num { font-size:1rem; font-weight:700; color:var(--fab-text); line-height:1.2; margin:0; }
.gym-fab-stat-label { font-size:.68rem; color:var(--fab-text-faint); margin-top:.2rem; text-transform:uppercase; letter-spacing:.04em; font-weight:600; }

/* Nav links */
.gym-fab-nav { padding:.5rem 0; }
.gym-fab-nav-item { display:flex !important; align-items:center; gap:.65rem; padding:.6rem 1rem; font-size:.85rem; color:var(--fab-text-muted) !important; text-decoration:none !important; transition:background var(--fab-ease), color var(--fab-ease); }
.gym-fab-nav-item:hover { background:var(--fab-surface); color:var(--fab-text) !important; }
.gym-fab-nav-item svg { width:16px !important; height:16px !important; display:block !important; max-width:none !important; stroke-width:1.75; flex-shrink:0; }
.gym-fab-nav-badge { margin-left:auto; background:var(--fab-primary); color:#fff !important; font-size:.65rem; font-weight:700; padding:.15rem .45rem; border-radius:50px; min-width:18px; text-align:center; line-height:1.4; }
.gym-fab-divider { height:1px; background:var(--fab-border); margin:.35rem 0; }

/* Logout link */
.gym-fab-logout { display:flex !important; align-items:center; gap:.65rem; width:100%; padding:.65rem 1rem; font-size:.85rem; color:var(--fab-danger) !important; border:none; cursor:pointer; background:none; text-align:left; border-top:1px solid var(--fab-border); transition:background var(--fab-ease); text-decoration:none !important; }
.gym-fab-logout:hover { background:var(--fab-surface); }
.gym-fab-logout svg { width:16px !important; height:16px !important; display:block !important; max-width:none !important; stroke-width:1.75; }

/* Guest body */
.gym-fab-guest-body { padding:1rem; }
.gym-fab-guest-sub { font-size:.8rem; color:var(--fab-text-faint); line-height:1.55; margin-bottom:.85rem; }
.gym-fab-btn-primary { display:block !important; width:100%; padding:.6rem 1rem; background:var(--fab-primary); color:#fff !important; border-radius:8px; text-align:center; font-size:.85rem; font-weight:600; text-decoration:none !important; margin-bottom:.5rem; transition:background var(--fab-ease); box-sizing:border-box; }
.gym-fab-btn-primary:hover { background:var(--fab-primary-dark); color:#fff !important; }
.gym-fab-btn-ghost { display:block !important; width:100%; padding:.6rem 1rem; background:var(--fab-surface-2); color:var(--fab-text-muted) !important; border-radius:8px; text-align:center; font-size:.85rem; font-weight:600; text-decoration:none !important; border:1px solid var(--fab-border); transition:background var(--fab-ease), color var(--fab-ease); box-sizing:border-box; }
.gym-fab-btn-ghost:hover { background:var(--fab-border); color:var(--fab-text) !important; }
