.ex-head{padding:22px 0 0}
/* Named areas, not source order. On a phone the single column used to be [everything text] then
   [video], which put the clip — the entire reason the page exists and the thing a visitor arriving
   from a Google Video result came for — below the title, the lead paragraph, three chips and four
   stat boxes: about a full screen of scrolling before anything moves. The areas let the player sit
   directly under the heading on mobile while the desktop two-column layout is unchanged. */
.ex-grid{display:grid;grid-template-columns:1.02fr .98fr;
  grid-template-areas:"title player" "meta player";gap:0 34px;align-items:start;padding:14px 0 8px}
.ex-title{grid-area:title}
.player{grid-area:player}
.ex-meta{grid-area:meta}
@media (max-width:900px){
  .ex-grid{grid-template-columns:1fr;grid-template-areas:"title" "player" "meta";gap:18px 0}
  .ex-meta .ex-lead{margin-top:0}
}
/* No negative letter-spacing on Persian headings — see the note in theme.py. */
.ex-grid h1{font-size:clamp(26px,4.2vw,40px);font-weight:800;line-height:1.38}
.ex-en{font-size:14px;color:var(--muted);font-weight:700;direction:ltr;text-align:right;margin-top:4px}
.ex-lead{font-size:15.5px;color:var(--text-2);line-height:2.05;margin-top:14px}
.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.tags a.chip{color:var(--green-3);border-color:var(--line-2)}
.tags a.chip:hover{border-color:var(--green-3);background:var(--bg-tint)}
.player{position:relative;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);
  box-shadow:var(--shadow-lg);background:#fff}
.player video{width:100%;aspect-ratio:1/1;object-fit:cover;background:#f2f5ef}
.player .lbl{position:absolute;top:12px;inset-inline-start:12px;background:rgba(255,255,255,.94);
  border-radius:10px;padding:5px 11px;font-size:11.5px;font-weight:800;color:var(--green-3)}
.quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:14px}
.quick div{background:var(--bg-soft);border:1px solid var(--line);border-radius:13px;padding:11px 13px}
.quick small{display:block;font-size:11px;color:var(--muted);font-weight:700}
.quick b{font-size:14px;font-weight:800}
.steps-ol{counter-reset:st;margin-top:14px;padding:0;list-style:none}
.steps-ol li{position:relative;padding:13px 52px 13px 16px;background:#fff;border:1px solid var(--line);
  border-radius:14px;margin-bottom:9px;font-size:15px;line-height:2}
.steps-ol li::before{counter-increment:st;content:counter(st);position:absolute;inset-inline-start:14px;top:14px;
  width:26px;height:26px;border-radius:99px;background:var(--bg-tint);color:var(--green-3);
  display:grid;place-items:center;font-weight:800;font-size:13px}
.cues li{margin:7px 0;font-size:15px;color:var(--text-2);line-height:2.05}
.mistake{background:#fff;border:1px solid var(--line);border-inline-start:3px solid #f0a03c;
  border-radius:13px;padding:13px 16px;margin-bottom:9px}
.mistake b{display:block;font-size:15px;font-weight:800;margin-bottom:3px}
.mistake p{font-size:14px;color:var(--muted);margin:0}
.rel{display:grid;grid-template-columns:repeat(auto-fit,minmax(184px,1fr));gap:12px;margin-top:16px}
.rel a{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  box-shadow:var(--shadow);transition:transform .18s var(--ease),box-shadow .2s;display:block}
.rel a:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.rel img{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--bg-soft)}
.rel .n{padding:11px 13px;font-size:14px;font-weight:800;line-height:1.6}
.rel .m{padding:0 13px 12px;font-size:11.5px;color:var(--muted);font-weight:700}
.appbox{background:linear-gradient(150deg,#f2fadf,#ffffff);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:26px;margin-top:34px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.appbox img{width:58px;height:58px;border-radius:15px}
.appbox .tx{flex:1;min-width:230px}
.appbox h3{font-size:19px;font-weight:800}
.appbox p{font-size:14.5px;color:var(--text-2);margin-top:5px;line-height:1.95}

@media (max-width:520px){
  /* Same reason as the homepage .exgrid: minmax(184px) collapses to one column under ~380px of
     content width, so the six related movements became six full-width squares. */
  .rel{grid-template-columns:1fr 1fr;gap:10px}
  .rel .n{font-size:13px;padding:9px 11px}
  .rel .m{padding:0 11px 10px}
  .appbox{padding:20px;gap:14px}
  /* «باز کردن app.gymfarsi.ir» plus 28px of padding each side is wider than a 320px screen. */
  .appbox .btn{width:100%}
  .steps-ol li{padding:12px 46px 12px 14px}
  /* This table is two columns of two or three words. It has no reason to force a sideways scroll —
     the 420px floor is there for the three-column tables on the hub pages. */
  .tablewrap table{min-width:0}
}
/* See theme.py — :hover latches after a tap on a touch screen. */
@media (hover:none){.rel a:hover{transform:none;box-shadow:var(--shadow)}}