/* gyms.html additions. Everything else comes from styles.css. */

/* ---- hero demo ---------------------------------------------------------- */
.gyms .hero .stage-fig{display:flex;justify-content:center}
.gyms .demo{width:min(400px,100%);margin:0;position:static}
.gyms .demo .phone-bar{position:relative}
.demo-replay{margin-left:auto;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink);cursor:pointer;transition:background-color 180ms ease,color 180ms ease}
.demo-replay:hover{background:var(--oxblood);color:var(--on-dark);border-color:var(--oxblood)}
.demo-replay svg{width:18px;height:18px}
.gyms .demo .phone-thread{min-height:420px;justify-content:flex-end}
.gyms .demo .msg{opacity:0;transform:translateY(8px);transition:opacity 260ms ease,transform 260ms ease}
.gyms .demo .msg.in{opacity:1;transform:none}
.gyms .demo .msg.kai{border-color:var(--tan)}
.gyms .demo .msg time .read{color:var(--oxblood)}
.gyms .demo .typing{align-self:flex-start;display:inline-flex;gap:5px;padding:12px 14px;border:1px solid var(--tan);border-radius:6px;background:var(--surface);opacity:0;transition:opacity 200ms ease}
.gyms .demo .typing.in{opacity:1}
.gyms .demo .typing i{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:demo-dot 1.1s ease-in-out infinite!important}
.gyms .demo .typing i:nth-child(2){animation-delay:.18s!important}
.gyms .demo .typing i:nth-child(3){animation-delay:.36s!important}
@keyframes demo-dot{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.gyms .demo .booking-preview{color:var(--oxblood)}
.gyms .demo .preview-caption{border-top:1px solid var(--border)}

/* ---- offer band --------------------------------------------------------- */
.offer-band sup a{color:inherit;text-decoration:none;font-size:.8em}

/* ---- pain moments ------------------------------------------------------- */
.moments{list-style:none;padding:0;margin:40px 0 0;display:grid;gap:16px;max-width:60ch}
.moments li{padding:0 0 0 20px;border-left:3px solid var(--tan);color:var(--muted);font-size:16px;line-height:1.6}
.moments strong{display:block;color:var(--ink);font-weight:600}

/* ---- features ----------------------------------------------------------- */
.soon{display:inline-block;vertical-align:middle;margin-left:8px;padding:3px 8px;border-radius:4px;background:var(--canvas);border:1px solid var(--border);color:var(--oxblood);font:500 11px/1.4 var(--font-sans);letter-spacing:.08em;text-transform:uppercase}

/* ---- comparison --------------------------------------------------------- */
.compare-wrap{position:relative;margin:40px 0 0;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.compare{width:100%;min-width:820px;border-collapse:collapse;font-size:15px;line-height:1.5}
.compare th,.compare td{padding:18px 20px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border)}
.compare thead th{font-weight:600;font-size:16px;color:var(--ink);border-bottom:2px solid var(--border)}
.compare thead th small{display:block;font-weight:400;font-size:12px;color:var(--muted);margin-top:4px}
.compare tbody th{font-weight:500;color:var(--ink);width:19%;position:sticky;left:0;background:var(--surface);z-index:1}
.compare thead th:first-child{position:sticky;left:0;background:var(--surface);z-index:1}
.compare td{color:var(--muted)}
.compare .us{background:var(--canvas);color:var(--ink);font-weight:500}
.compare thead .us{border-top:3px solid var(--oxblood)}
.compare tbody tr:last-child th,.compare tbody tr:last-child td{border-bottom:0}
.compare svg{width:20px;height:20px;vertical-align:middle;color:var(--muted)}
.compare svg:has(use[href="#i-check"]){color:#2f7d4f}
.compare svg:has(use[href="#i-x"]){color:#b3261e}

.compare-hint{display:none;margin:12px 0 0;font-size:12px;color:var(--muted)}

/* ---- reviews + badges --------------------------------------------------- */
.reviews{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:40px 0 0}
.review{margin:0;padding:28px;border:1px solid var(--border);border-radius:8px;background:var(--surface);display:flex;flex-direction:column;gap:14px}
.review .stars{display:flex;gap:2px;color:var(--oxblood)}
.review .stars svg{width:16px;height:16px}
.review blockquote{margin:0;font-size:17px;line-height:1.6;color:var(--ink);text-wrap:pretty}
.review figcaption{font-size:13px;color:var(--muted);margin-top:auto}
.badges{list-style:none;padding:32px 0 0;margin:40px 0 0;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:12px 32px;font-size:13px;color:var(--muted)}
.badges li{display:flex;align-items:center;gap:8px}
.badges svg{width:18px;height:18px;color:var(--oxblood)}

/* ---- close -------------------------------------------------------------- */
.film-icon{width:18px;height:18px}

@media(max-width:899px){
  .gyms .demo{width:100%}
  .gyms .demo .phone-thread{min-height:380px}
  .compare-wrap{margin-top:28px}
  .compare{min-width:720px;font-size:14px}
  .compare th,.compare td{padding:14px 14px}
  .compare tbody th{width:110px;min-width:110px}
  .compare .us{position:sticky;right:0;min-width:130px;max-width:130px;box-shadow:-1px 0 0 var(--border)}
  .compare thead .us{z-index:1}
  .compare-hint{display:block}
  .reviews{grid-template-columns:1fr;gap:16px;margin-top:28px}
  .review{padding:22px}
  .review blockquote{font-size:16px}
  .moments{margin-top:28px}
}
@media(prefers-reduced-motion:reduce){
  .gyms .demo .msg{transition:none}
  .gyms .demo .typing i{animation:none!important}
}
