/* ============================================================
   Gimnasios — carné del socio y panel del gimnasio (app/gym.js).
   Usa las variables de app.css, así que sigue el tema claro/oscuro.
   El carné en sí es siempre oscuro (como una tarjeta física), con el
   color de acento del gimnasio.
   ============================================================ */

/* ── Estados ── */
.gym-st{display:inline-block;font-size:0.66rem;font-weight:800;padding:0.22rem 0.6rem;border-radius:100px;text-transform:uppercase;letter-spacing:0.04em;white-space:nowrap}
.gym-st-ok{background:var(--success-bg);color:var(--success)}
.gym-st-soon,.gym-st-grace{background:var(--warning-bg);color:var(--warning)}
.gym-st-expired{background:var(--danger-bg);color:var(--danger)}
.gym-st-no_plan,.gym-st-cancelled{background:var(--bg-chip);color:var(--text-muted)}
.gym-st-txt{background:none!important;padding:0;font-weight:700;text-transform:none;letter-spacing:0;font-size:inherit}

/* ── Tarjeta pequeña en Mis suscripciones (mismo tamaño que una cita) ── */
.gym-mini{border-left:4px solid var(--accent)}
.gym-mini-expired{border-left-color:var(--danger)}
.gym-mini-soon,.gym-mini-grace{border-left-color:var(--warning)}
.gym-mini-no_plan{border-left-color:var(--text-dim)}
.gym-closed-txt{color:var(--danger)}

/* ── Aviso "Hoy cerrado" ── */
.gym-closed{display:flex;gap:0.7rem;align-items:center;background:var(--danger-bg);border:1px solid var(--danger-bd);color:var(--text);border-radius:14px;padding:0.8rem 0.9rem;margin-bottom:0.9rem}
.gym-closed svg{width:22px;height:22px;flex:0 0 auto;color:var(--danger)}
.gym-closed b{display:block;font-size:0.92rem}
.gym-closed span{display:block;font-size:0.8rem;color:var(--text-muted);margin-top:0.1rem}

/* ── Carné ──
   color-mix() necesita iOS 16.2 / Chrome 111: cada regla que lo usa lleva
   antes un valor fijo, que es el que queda en un móvil más antiguo. */
.gym-card{position:relative;overflow:hidden;border-radius:22px;padding:1.1rem 1.1rem 1.2rem;color:#f4efe6;
  background:#14110c;border:1px solid #4a3d22;
  background:radial-gradient(120% 90% at 0% 0%,color-mix(in srgb,var(--gym-accent) 34%,#15120c) 0%,#14110c 55%,#0d0b08 100%);
  border:1px solid color-mix(in srgb,var(--gym-accent) 45%,transparent);box-shadow:0 18px 44px rgba(0,0,0,0.38);text-align:center}
.gym-card.is-bad{border-color:#b4473a}
.gym-holo{position:absolute;inset:-40%;pointer-events:none;mix-blend-mode:screen;opacity:0.55;
  --tx:50%;--ty:50%;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,0.12) 50%,transparent 70%);
  background:radial-gradient(28% 22% at var(--tx) var(--ty),color-mix(in srgb,var(--gym-accent) 70%,#fff) 0%,transparent 70%),
             linear-gradient(115deg,transparent 30%,rgba(255,255,255,0.10) 45%,color-mix(in srgb,var(--gym-accent) 35%,transparent) 50%,rgba(255,255,255,0.08) 55%,transparent 70%);
  background-size:100% 100%,300% 300%;animation:gymShine 6s linear infinite}
@keyframes gymShine{0%{background-position:0 0,0% 0%}100%{background-position:0 0,300% 300%}}
.gym-card-head{position:relative;display:flex;align-items:center;gap:0.75rem;text-align:left;margin-bottom:1rem}
.gym-card-who{flex:1;min-width:0}
.gym-card-name{font-weight:800;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gym-card-no{font-size:0.78rem;color:var(--gym-accent);font-weight:700;letter-spacing:0.04em}
.gym-card .gym-st-ok{background:rgba(74,222,128,0.16);color:#6ee7a0}
.gym-card .gym-st-soon,.gym-card .gym-st-grace{background:rgba(251,191,36,0.16);color:#fcd34d}
.gym-card .gym-st-expired{background:rgba(248,113,113,0.18);color:#fca5a5}
.gym-card .gym-st-no_plan{background:rgba(255,255,255,0.10);color:#d6cfc4}
.gym-qr-wrap{position:relative;width:min(70vw,250px);margin:0 auto;border-radius:16px;overflow:hidden;background:#fff;padding:8px;box-shadow:0 0 0 1px rgba(255,255,255,0.08),0 0 32px rgba(201,168,76,0.35);box-shadow:0 0 0 1px rgba(255,255,255,0.08),0 0 32px color-mix(in srgb,var(--gym-accent) 40%,transparent)}
.gym-qr{aspect-ratio:1/1}
.gym-qr svg{display:block;width:100%;height:100%}
.gym-qr-fresh{animation:gymQrIn .35s ease}
@keyframes gymQrIn{from{opacity:.35;transform:scale(.97)}to{opacity:1;transform:none}}
.gym-qr-shine{position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,0.55) 50%,transparent 65%);background-size:250% 100%;animation:gymQrShine 3.2s ease-in-out infinite;mix-blend-mode:soft-light}
@keyframes gymQrShine{0%{background-position:130% 0}100%{background-position:-130% 0}}
.gym-qr-err{color:#333;font-size:0.8rem;padding:2.5rem 1rem}
.gym-card.is-hidden .gym-qr{filter:blur(14px)}
.gym-count{position:relative;max-width:250px;margin:0.8rem auto 0}
.gym-count-bar{height:6px;border-radius:100px;background:rgba(255,255,255,0.12);overflow:hidden}
.gym-count-bar i{display:block;height:100%;width:100%;background:var(--gym-accent);border-radius:100px;transition:width .25s linear}
.gym-count-txt{font-size:0.74rem;color:#b9b0a3;margin-top:0.35rem}
.gym-clock{position:relative;font-size:2rem;font-weight:800;letter-spacing:0.06em;font-variant-numeric:tabular-nums;margin-top:0.55rem}
.gym-card-plan{position:relative;font-size:0.85rem;color:#d9d1c4}
.gym-help{text-align:center;color:var(--text-muted);font-size:0.78rem;line-height:1.5;margin:0.7rem 0.4rem 0}

/* ── Bloques de información ── */
.gym-static{cursor:default}
.gym-static:active{border-color:var(--border)}
.gym-row{display:flex;justify-content:space-between;align-items:center;gap:0.8rem;padding:0.45rem 0;border-bottom:1px solid var(--border);font-size:0.88rem}
.gym-row:last-child{border-bottom:none}
.gym-row > span:first-child{color:var(--text-muted)}
.gym-row a{color:var(--accent-ink);text-decoration:none;font-weight:600}
.gym-dim{color:var(--text-muted);font-size:0.8rem;line-height:1.45}
.gym-r{text-align:right;white-space:nowrap}
.gym-sub{font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-muted);margin:0.8rem 0 0.2rem}
.gym-acts{display:flex;gap:0.5rem;flex-wrap:wrap}
.gym-acts .btn-soft{flex:1 1 30%}
.gym-ok{color:var(--success);font-weight:700}
.gym-ko{color:var(--danger);font-weight:700}
.gym-ellipsis{max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-notes{white-space:pre-wrap;font-size:0.88rem;line-height:1.5}

/* ── Avatares ── */
.gym-av{width:2.6rem;height:2.6rem;border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--bg-soft)}
.gym-av-ini{display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:0.9rem;color:var(--on-accent);background:linear-gradient(135deg,var(--accent-light),var(--accent))}
.gym-av-lg{width:3.3rem;height:3.3rem;font-size:1.05rem}
.gym-av-xl{width:4.2rem;height:4.2rem;font-size:1.3rem}
.gym-card .gym-av-ini{background:var(--gym-accent);color:#1a1307}

/* ── Panel: inicio ── */
.gym-tip{display:flex;gap:0.7rem;background:var(--accent-dim);border:1px solid rgba(var(--accent-rgb),0.35);border-radius:14px;padding:0.9rem;margin-bottom:1rem}
.gym-tip > svg{width:22px;height:22px;color:var(--accent-ink);flex:0 0 auto}
.gym-tip b{display:block}
.gym-tip span{display:block;font-size:0.82rem;color:var(--text-muted);margin:0.2rem 0 0.7rem;line-height:1.45}
.gym-tip .btn-primary{width:auto;display:inline-block;padding:0.55rem 1.1rem}
.gym-stats{display:grid;grid-template-columns:1fr 1fr;gap:0.6rem}
.gym-stat{font:inherit;cursor:pointer;color:var(--text)}
.gym-stat.warn .stat-number{color:var(--warning)}
.gym-stat.ko .stat-number{color:var(--danger)}
.gym-quick{display:grid;grid-template-columns:1fr;gap:0.5rem;margin:0.9rem 0 0.4rem}
@media (min-width:520px){.gym-quick{grid-template-columns:repeat(3,1fr)}.gym-stats{grid-template-columns:repeat(4,1fr)}}

/* ── Panel: listado ── */
.gym-search{margin-bottom:0.7rem}
/* ── Barra inferior dentro del carné (Carné · Rutinas · Horario · Mensajes) ── */
body.gym-member #tabbar{display:none}
body.gym-member #viewRoot{padding-bottom:calc(86px + env(safe-area-inset-bottom))}
body.chat-open #gymNav{display:none}
#gymNav{position:fixed;left:50%;transform:translateX(-50%);width:calc(100% - var(--nav-side) * 2);max-width:520px;
  bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;display:flex;align-items:center;background:var(--nav-bg);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--nav-border);border-radius:22px;padding:0.3rem 0.5rem;box-shadow:var(--nav-shadow);
  transition:width .32s cubic-bezier(.4,0,.2,1),padding .32s cubic-bezier(.4,0,.2,1),border-radius .32s cubic-bezier(.4,0,.2,1)}
#gymNav button{flex:1 1 0;min-width:0;background:none;border:none;color:var(--text-dim);padding:0.55rem 0 0.5rem;font-size:var(--nav-lbl);
  font-weight:700;display:flex;flex-direction:column;align-items:center;gap:0.22rem;cursor:pointer;font-family:inherit;
  transition:color .15s,padding .32s cubic-bezier(.4,0,.2,1)}
#gymNav .ti{line-height:0}
#gymNav .ti svg{width:var(--nav-ico);height:var(--nav-ico);display:block}
#gymNav .tl{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;max-height:1.2em;opacity:1;
  transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .22s ease,margin .3s cubic-bezier(.4,0,.2,1)}
#gymNav button.on{color:var(--accent-ink)}
#gymNav.compact{width:max-content;max-width:calc(100% - var(--nav-side) * 2);padding:0.18rem 0.3rem;border-radius:18px;gap:0.1rem}
#gymNav.compact button{flex:0 1 auto;padding:0.55rem var(--nav-padx);gap:0}
#gymNav.compact .tl{max-height:0;opacity:0;margin:0}

/* ── Clases con plazas ── */
.gym-cls{display:flex;align-items:center;gap:0.75rem;cursor:pointer}
.gym-cls.is-off{opacity:0.6}
.gym-cls.is-mine{border-color:var(--accent)}
.gym-cls-time{flex:0 0 3.4rem;display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}
.gym-cls-time b{font-size:1rem}
.gym-cls-time small{font-size:0.72rem;color:var(--text-muted)}
.gym-cls-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:0.1rem}
.gym-cls-main b{font-size:0.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-cls-main small{font-size:0.78rem;color:var(--text-muted)}
.gym-cls-act{flex:0 0 auto;display:flex;align-items:center;gap:0.3rem}
.gym-cls-act .btn-sm{width:auto;padding:0.4rem 0.8rem}
.gym-att{display:flex;gap:0.35rem;flex:0 0 auto}
.gym-att-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--bg-chip);color:var(--text-muted);font:inherit;font-size:1.05rem;font-weight:800;cursor:pointer}
.gym-att-btn.yes.on{background:var(--success);border-color:var(--success);color:#fff}
.gym-att-btn.no.on{background:var(--danger);border-color:var(--danger);color:#fff}
.gym-att-row{cursor:default}
.gym-cat-new{border-style:dashed;justify-content:center;align-items:center;color:var(--text-muted)}

.gym-att-who{display:flex;gap:0.9rem;align-items:center;margin-bottom:0.8rem}
.gym-att-warn{display:flex;gap:0.45rem;align-items:flex-start;font-size:0.84rem;line-height:1.4;background:var(--warning-bg);color:var(--text);border-radius:10px;padding:0.55rem 0.7rem;margin-bottom:0.5rem}
.gym-att-warn svg{width:16px;height:16px;flex:0 0 auto;color:var(--warning);margin-top:0.1rem}
.gym-att-warn.ko{background:var(--danger-bg)}
.gym-att-warn.ko svg{color:var(--danger)}
.gym-att-big{display:grid;grid-template-columns:1fr 1fr;gap:0.7rem;margin-top:0.9rem}
.gym-att-big button{height:72px;border-radius:16px;border:none;font:inherit;font-size:1.25rem;font-weight:800;cursor:pointer;color:#fff}
.gym-att-yes{background:var(--success)}
.gym-att-no{background:var(--danger)}
.gym-att-big button:active{transform:scale(.97)}

/* ── Rutinas ── */
.gym-cats{display:grid;grid-template-columns:1fr 1fr;gap:0.6rem;margin-bottom:0.8rem}
.gym-cat{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:0.2rem;min-height:84px;text-align:left;
  background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:0.8rem 0.9rem;font:inherit;color:var(--text);cursor:pointer}
.gym-cat b{font-size:0.98rem;line-height:1.2}
.gym-cat small{font-size:0.75rem;color:var(--text-muted)}
.gym-cat:active{transform:scale(.98)}
.gym-rt{display:flex;align-items:center;gap:0.75rem;width:100%;text-align:left;font:inherit;color:var(--text);cursor:pointer}
.gym-rt-ic{flex:0 0 auto;width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:var(--danger-bg);color:var(--danger);font-size:0.68rem;font-weight:800;letter-spacing:0.04em}
.gym-rt-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:0.1rem}
.gym-rt-main b{font-size:0.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-rt-main small{font-size:0.78rem;color:var(--text-muted)}
.gym-rt-size{flex:0 0 auto;font-size:0.72rem;color:var(--text-muted)}

/* ── Visor de PDF integrado ── */
.gym-pdf{position:fixed;inset:0;z-index:300;display:flex;flex-direction:column;background:var(--bg);opacity:0;transform:translateY(12px);transition:opacity .18s ease,transform .18s ease}
.gym-pdf.show{opacity:1;transform:none}
.gym-pdf-bar{display:flex;align-items:center;gap:0.4rem;padding:calc(0.55rem + env(safe-area-inset-top)) 0.6rem 0.55rem;border-bottom:1px solid var(--border);background:var(--bg-card)}
.gym-pdf-back,.gym-pdf-btn{flex:0 0 auto;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--bg-chip);color:var(--text);font:inherit;font-size:1.3rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.gym-pdf-title{flex:1;min-width:0;display:flex;flex-direction:column}
.gym-pdf-title b{font-size:0.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-pdf-title small{font-size:0.74rem;color:var(--text-muted)}
.gym-pdf-pages{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:8px 8px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--bg-chip)}
.gym-pdf-pages.zoomed{align-items:flex-start}
.gym-pdf-page{flex:0 0 auto;background:#fff;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.25);overflow:hidden}
.gym-pdf-page canvas{display:block}
.gym-pdf-msg{margin:auto;max-width:300px;text-align:center;color:var(--text-muted);font-size:0.9rem;display:flex;flex-direction:column;align-items:center;gap:0.8rem}
.gym-pdf-spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:gymPdfSpin .8s linear infinite}
@keyframes gymPdfSpin{to{transform:rotate(360deg)}}
body.pdf-open #gymNav,body.pdf-open #tabbar{display:none}

/* ── Ficha: matrícula y tarifa en dos recuadros ── */
.gym-duo{display:grid;grid-template-columns:1fr 1fr;gap:0.6rem;margin-bottom:0.7rem}
.gym-duo-one{grid-template-columns:1fr}
.gym-tile{display:flex;flex-direction:column;align-items:flex-start;gap:0.15rem;text-align:left;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:0.75rem 0.85rem;font:inherit;color:var(--text);cursor:pointer;min-width:0}
.gym-tile:disabled{cursor:default;opacity:1}
.gym-tile b{font-size:1rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gym-tile small{font-size:0.76rem;color:var(--text-muted)}
.gym-tile-lbl{display:flex;align-items:center;gap:0.3rem;font-size:0.68rem;font-weight:800;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted)}
.gym-tile-lbl svg{width:14px;height:14px}
.gym-tile-ok{border-color:var(--success-bd,var(--border))}.gym-tile-ok b{color:var(--success)}
.gym-tile-ko{border-color:var(--danger-bd,var(--border))}.gym-tile-ko b{color:var(--danger)}
.gym-tile-muted b{color:var(--text-muted)}
.gym-chips.gym-chips-scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-1rem;margin-right:-1rem;padding:0 1rem}
.gym-chips-scroll::-webkit-scrollbar{display:none}
.gym-chips-scroll .gym-chip{flex:0 0 auto}
.gym-chips{display:flex;gap:0.4rem;flex-wrap:wrap;margin-bottom:0.9rem}
.gym-chip{background:var(--bg-chip);border:1px solid var(--border);color:var(--text-muted);border-radius:100px;padding:0.4rem 0.8rem;font:inherit;font-size:0.78rem;font-weight:600;cursor:pointer}
.gym-chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.gym-mrow{display:flex;align-items:center;gap:0.75rem}
.gym-mrow-main{flex:1;min-width:0}
.gym-mrow-top{display:flex;justify-content:space-between;align-items:center;gap:0.5rem}
.gym-mrow-top b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── Panel: ficha ── */
.gym-ficha-head{display:flex;gap:0.9rem;align-items:center;margin:0.2rem 0 1rem}
.gym-ficha-name{font-weight:800;font-size:1.15rem}
.gym-ficha-head + .bk-card + .btn-primary{margin:0.2rem 0 0.4rem}
.gym-plan.is-off{opacity:0.6}
.gym-plan-acts{display:flex;flex-direction:column;align-items:flex-end;gap:0.3rem}
.gym-soon{display:flex;gap:0.6rem;align-items:flex-start;border:1px dashed var(--border);border-radius:12px;padding:0.7rem 0.8rem;margin:0.6rem 0;color:var(--text-muted);font-size:0.82rem}
.gym-soon svg{width:18px;height:18px;flex:0 0 auto;margin-top:0.1rem}
.gym-soon b{display:block;color:var(--text);font-size:0.86rem}
.gym-soon span{display:block;line-height:1.45;margin-top:0.15rem}

/* ── Hoja inferior (formularios) ── */
.gym-sheet-ov{position:fixed;inset:0;z-index:520;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .2s}
.gym-sheet-ov.show{opacity:1}
.gym-sheet{width:100%;max-width:560px;max-height:88vh;display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:20px 20px 0 0;transform:translateY(30px);transition:transform .22s ease;padding-bottom:env(safe-area-inset-bottom)}
.gym-sheet-ov.show .gym-sheet{transform:none}
.gym-sheet-head{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.1rem 0.6rem}
.gym-x{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:0.2rem 0.4rem}
.gym-sheet-body{overflow-y:auto;padding:0 1.1rem 0.5rem}
.gym-sheet-foot{padding:0.7rem 1.1rem 1rem}
.gym-sheet textarea.cfg-input{resize:vertical;min-height:4.5rem;font-family:inherit}
.gym-preview{font-size:0.84rem;color:var(--accent-ink);font-weight:600;margin:0.8rem 0 0}

/* ── Resultado de escanear un carné ── */
.gym-scanres{position:fixed;inset:0;z-index:530;display:flex;align-items:center;justify-content:center;padding:1.3rem;opacity:0;transition:opacity .2s;background:var(--overlay-strong)}
.gym-scanres.show{opacity:1}
.gym-sr-box{width:100%;max-width:420px;border-radius:22px;padding:1.6rem 1.3rem 1.2rem;text-align:center;color:#fff;display:flex;flex-direction:column;gap:0.7rem;align-items:stretch}
.gym-sr-box > svg{width:64px;height:64px;margin:0 auto}
.gym-sr-box h3{margin:0;font-size:1.5rem;text-transform:uppercase;letter-spacing:0.03em}
.gym-sr-box p{margin:0;font-size:0.92rem;line-height:1.5;opacity:0.92}
.gym-scanres.is-ok .gym-sr-box{background:#1f6b3a}
.gym-scanres.is-ko .gym-sr-box{background:#8f2a22}
.gym-scanres.is-info .gym-sr-box{background:#2a2620}
.gym-sr-who{display:flex;gap:0.7rem;align-items:center;justify-content:center;text-align:left}
.gym-sr-who b{display:block;font-size:1.05rem}
.gym-sr-who span{display:block;font-size:0.82rem;opacity:0.85}
.gym-sr-box .btn-primary{background:#fff;color:#111;box-shadow:none}
.gym-sr-box .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,0.4)}
.gym-sr-box .gym-av-ini{background:rgba(255,255,255,0.2);color:#fff}

/* ── Escáner ── */
.gym-scan-box{position:relative;border-radius:18px;overflow:hidden;background:#000;aspect-ratio:3/4;max-height:62vh;margin:0 auto;display:flex;align-items:center;justify-content:center}
.gym-scan-box video{width:100%;height:100%;object-fit:cover}
.gym-scan-frame{position:absolute;inset:18%;border:3px solid var(--accent);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,0.35)}
.gym-scan-alt{color:#e9e2d6;text-align:center;padding:2rem 1.5rem;font-size:0.92rem;line-height:1.55}
.gym-scan-alt svg{width:46px;height:46px;color:var(--accent);margin-bottom:0.6rem}

/* ── Esperar escaneo ── */
.gym-link-qr{width:min(78vw,300px);margin:0 auto;background:#fff;border-radius:18px;padding:10px;box-shadow:var(--shadow)}
.gym-link-qr svg{display:block;width:100%;height:auto}
.gym-link-wait{display:flex;align-items:center;justify-content:center;gap:0.5rem;color:var(--text-muted);font-size:0.88rem;margin-top:1rem}
.gym-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);animation:gymPulse 1.2s ease-in-out infinite}
@keyframes gymPulse{0%,100%{opacity:.3;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}

@media (prefers-reduced-motion:reduce){.gym-holo,.gym-qr-shine,.gym-dot{animation:none}}

/* ── Pase de 1 día ── */
.gym-st-day{background:var(--info-bg);color:var(--info)}
.gym-st-day_unpaid{background:var(--danger-bg);color:var(--danger)}
.gym-mini-day{border-left-color:var(--info)}
.gym-mini-day_unpaid{border-left-color:var(--danger)}
.gym-card .gym-st-day{background:rgba(96,165,250,0.18);color:#93c5fd}
.gym-card .gym-st-day_unpaid{background:rgba(248,113,113,0.18);color:#fca5a5}
.gym-pass-hero{text-align:center;padding:1.2rem 0.5rem 1.4rem}
.gym-pass-hero svg{width:52px;height:52px;color:var(--accent-ink);margin-bottom:0.4rem}
.gym-pass-hero h2{margin:0 0 0.5rem;font-size:1.25rem}
.gym-btn-sub{display:block;font-size:0.76rem;font-weight:500;opacity:0.8;margin-top:0.15rem}
.gym-pass-pay{width:auto!important;display:inline-block;padding:0.45rem 0.9rem;flex:0 0 auto}
