/* ==== gym ==== Progressive Overload Coach. Tokens only; dark default + [data-theme="light"]. */
.gym .tabs button, .gym .seg button { min-height: 40px; }
.gym .tabs { margin-bottom: 0; padding-bottom: 2px; }

/* split pill (top) */
.gym-splitpill { display: flex; align-items: center; gap: 8px; width: 100%; margin: 4px 0 12px; padding: 8px 14px; min-height: 40px; text-align: left;
  border-radius: var(--r-pill); border: 1px solid var(--line2); background: var(--glass); color: var(--text3);
  font-family: var(--mono); font-size: 10.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; transition: border-color .15s, background .15s; }
.gym-splitpill { cursor: pointer; }
.gym-splitpill:hover { border-color: var(--line3); background: var(--hover); }
.gym-splitpill .gym-sp-date { flex: none; white-space: nowrap; }
.gym-splitpill .gym-sp-sep { flex: none; color: var(--text4); }
.gym-splitpill .gym-sp-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gym-splitpill svg { flex: none; }
.gym .empty { font-style: normal; } /* synthesized italic renders badly on fallback fonts */
.gym-splitpill .gym-sp-name.on { color: var(--success); }
.gym-splitpill .gym-sp-name.rest { color: var(--info); }
.gym-splitpill svg { color: var(--text4); }

/* gym / day selector bars */
.gym-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; min-width: 0; }
.gym-bar-label { flex: none; width: 40px; }
.gym-bar .tabs { flex: 1; min-width: 0; }
.gym-bar .btn.icon { flex: none; min-width: 40px; min-height: 40px; }
.tabs button.gym-tab-add { display: inline-flex; align-items: center; justify-content: center; width: 40px; padding: 0; border-style: dashed; color: var(--text3); }
.tabs button.gym-tab-add:hover { color: var(--text); border-color: var(--line3); }
.gym-pick { margin: 6px 0 12px; }
.gym-pick .sel { min-height: 42px; }

/* exercise / prescription card */
.gym-rx::before { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .9; border-radius: inherit; }
.gym-rx.up::before, .gym-rx.start::before { background: radial-gradient(circle at 15% 0%, color-mix(in srgb, var(--success) 12%, transparent), transparent 55%); }
.gym-rx.hold::before { background: radial-gradient(circle at 15% 0%, color-mix(in srgb, var(--warning) 10%, transparent), transparent 55%); }
.gym-rx.down::before, .gym-rx.repeat::before { background: radial-gradient(circle at 15% 0%, color-mix(in srgb, var(--danger) 10%, transparent), transparent 55%); }
.gym-rx > * { position: relative; }
.gym-last { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding: 8px 12px; margin-bottom: 12px; border-radius: var(--r-sm); background: var(--inset); border: 1px solid var(--line); }
.gym-last-val { font-weight: 700; color: var(--text); font-size: 14px; }
.gym-rx-body { display: flex; flex-direction: column; gap: 8px; }
.gym-kpi { margin: 2px 0; }
.gym-kpi .kpi-num { font-size: 40px; }
.gym-kpi .gym-kpi-x { font-size: 28px; color: var(--text2); }
@media (max-width: 480px) { .gym-kpi .kpi-num { font-size: 34px; } .gym-kpi .gym-kpi-x { font-size: 24px; } }
.gym-rxtag.up, .gym-rxtag.start { background: color-mix(in srgb, var(--success) 12%, transparent); color: var(--success); border-color: color-mix(in srgb, var(--success) 32%, transparent); }
.gym-rxtag.hold { background: color-mix(in srgb, var(--warning) 12%, transparent); color: var(--warning); border-color: color-mix(in srgb, var(--warning) 32%, transparent); }
.gym-rxtag.down, .gym-rxtag.repeat { background: color-mix(in srgb, var(--danger) 12%, transparent); color: var(--danger-text); border-color: color-mix(in srgb, var(--danger) 32%, transparent); }
.gym-rxpills { display: flex; gap: 5px; flex-wrap: wrap; }
.gym-rxpills .pill { font-family: var(--mono); min-width: 34px; justify-content: center; padding: 4px 8px; }
.gym-rxpills .pill.on { background: color-mix(in srgb, var(--success) 14%, transparent); color: var(--success); border-color: color-mix(in srgb, var(--success) 40%, transparent); box-shadow: 0 0 10px var(--success-glow); }

/* log form */
.gym-form .field { margin-bottom: 12px; }
.gym-wrow { display: flex; align-items: stretch; gap: 8px; }
.gym-wrow .btn.sq { width: 46px; height: 48px; }
.gym-w { flex: 1; text-align: center; font-size: 24px; font-weight: 700; padding: 8px 10px; height: 48px; }
.gym-w::-webkit-outer-spin-button, .gym-w::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.gym .seg.compact.gym-repseg { display: grid; grid-template-columns: repeat(auto-fill, minmax(44px, 1fr)); width: 100%; gap: 4px; }
.gym .seg.compact.gym-repseg button { min-width: 0; min-height: 40px; padding: 6px 4px; font-family: var(--mono); font-size: 13px; }
.gym-bwhint { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; font-size: 10.5px; font-weight: 700; letter-spacing: .10em; text-transform: uppercase; color: var(--violet); }
.gym-form .btn.block { min-height: 46px; margin-top: 2px; }

/* stats + history */
.gym-stats { margin-bottom: 12px; }
.gym-unit { font-size: 12px; font-weight: 600; letter-spacing: 0; color: var(--text3); margin-left: 3px; }
.gym-spark-x { display: flex; justify-content: space-between; margin-top: 4px; font-size: 9.5px; color: var(--text3); }
.gym-hist .li { padding: 6px 6px 6px 10px; min-height: 48px; }
.gym .li-del { min-width: 40px; min-height: 40px; }
.gym-hist-date { min-width: 58px; flex: none; white-space: nowrap; }
.gym-hist-1rm { flex: none; }
.gym-hist .li-text { font-weight: 700; }

/* today's rollup */
.gym-status { width: 24px; height: 24px; flex: none; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1.5px solid var(--line3); background: var(--f-input); color: var(--ink-on-light); }
.gym-status.on { background: var(--success); border-color: var(--success); box-shadow: 0 0 10px var(--success-glow); }
.gym .li.done { opacity: .78; }
.gym .li.done .li-text { text-decoration: none; }
.gym-extra { list-style: none; padding: 8px 4px 4px; }
.gym-streakgrid { margin-bottom: 12px; }
.gym-heat .hm { display: grid; grid-template-columns: repeat(14, minmax(0, 24px)); gap: 4px; }
.gym-heat .hm i { width: auto; height: auto; aspect-ratio: 1; border-radius: 4px; }
.gym-streakgrid .stat-num { display: flex; align-items: center; gap: 5px; }
.gym-streakgrid .stat-num svg { color: var(--warning); }

/* split rotation */
.gym-cycle { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.gym-cycle-arrow { color: var(--text4); font-size: 12px; }
.gym-srow { display: grid; grid-template-columns: 16px 1fr auto auto auto auto; align-items: center; gap: 6px; padding: 6px 8px; margin-bottom: 6px; border-radius: var(--r-sm); border: 1px solid var(--line); background: var(--inset); }
.gym-srow.today { background: color-mix(in srgb, var(--success) 8%, transparent); border-color: color-mix(in srgb, var(--success) 30%, transparent); }
.gym-srow .btn.icon, .gym-srow .li-del { min-width: 40px; min-height: 40px; padding: 4px; }
.gym-srow .btn.xs { min-height: 36px; }
.gym-srow .btn.icon:disabled { opacity: .3; }
.gym-srow .btn.xs { white-space: nowrap; }
@media (max-width: 440px) { .gym-srow { grid-template-columns: 14px 1fr auto auto; } .gym-srow .btn.icon { display: none; } }

/* manage sheet */
.gym-mrow { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.gym-mrow .li-del { min-width: 40px; min-height: 40px; }
.gym-bwrow { display: flex; align-items: center; gap: 12px; padding: 10px 12px; margin-bottom: 12px; border-radius: var(--r-sm); border: 1px solid var(--line); background: var(--inset); cursor: pointer; }
.gym-bwrow > span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gym-bwrow b { color: var(--text); font-size: 13.5px; }

/* past workouts accordion */
.gym-past { padding: 0; }
.gym-past-head { display: flex; align-items: center; gap: 10px; width: 100%; padding: 14px 16px; border: 0; background: transparent; color: inherit; text-align: left; min-height: 56px; }
.gym-past-head:hover { background: var(--hover); }
.gym-past-head > svg { color: var(--text3); transition: transform .2s; flex: none; }
.gym-past.open .gym-past-head > svg { transform: rotate(180deg); }
.gym-past-l { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.gym-past-l .small { display: flex; gap: 4px; min-width: 0; overflow: hidden; white-space: nowrap; }
.gym-past-l .ellipsis { display: inline-block; max-width: 100%; }
.gym-past .list { padding: 0 12px 12px; margin-top: 0; }
