/* ── Reset & Telegram-native theming ─────────────────────────── */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background-color: var(--tg-theme-bg-color, #ffffff); color: var(--tg-theme-text-color, #000000); min-height: 100vh; -webkit-font-smoothing: antialiased; } /* ── Tab navigation ──────────────────────────────────────────── */ #tabs { display: flex; background: var(--tg-theme-secondary-bg-color, #f0f0f0); position: sticky; top: 0; z-index: 100; border-bottom: 1px solid var(--tg-theme-hint-color, #999999)33; } .tab { flex: 1; padding: 12px 0; border: none; background: none; color: var(--tg-theme-hint-color, #999999); font-size: 14px; font-weight: 600; cursor: pointer; transition: color 0.2s, border-color 0.2s; border-bottom: 2px solid transparent; } .tab.active { color: var(--tg-theme-button-color, #3390ec); border-bottom-color: var(--tg-theme-button-color, #3390ec); } /* ── Views ───────────────────────────────────────────────────── */ .view { display: none; padding: 16px; padding-bottom: 32px; } .view.active { display: block; } /* ── Cards ───────────────────────────────────────────────────── */ .card { background: var(--tg-theme-secondary-bg-color, #f0f0f0); border-radius: 12px; padding: 16px; margin-bottom: 12px; } /* ── Buttons ─────────────────────────────────────────────────── */ .btn { display: inline-flex; align-items: center; justify-content: center; border: none; border-radius: 10px; font-size: 15px; font-weight: 600; cursor: pointer; padding: 12px 20px; width: 100%; transition: opacity 0.15s; } .btn:active { opacity: 0.7; } .btn-primary { background: var(--tg-theme-button-color, #3390ec); color: var(--tg-theme-button-text-color, #ffffff); } .btn-danger { background: #e53935; color: #ffffff; } .btn-sm { padding: 8px 16px; font-size: 13px; width: auto; } /* ── Inputs ──────────────────────────────────────────────────── */ .input { width: 100%; padding: 10px 12px; border-radius: 10px; border: 1.5px solid var(--tg-theme-hint-color, #999999)44; background: var(--tg-theme-bg-color, #ffffff); color: var(--tg-theme-text-color, #000000); font-size: 15px; outline: none; transition: border-color 0.2s; -webkit-appearance: none; } .input:focus { border-color: var(--tg-theme-button-color, #3390ec); } select.input { cursor: pointer; } /* ── Workout view specifics ──────────────────────────────────── */ .workout-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; padding: 12px 16px; background: var(--tg-theme-secondary-bg-color, #f0f0f0); border-radius: 12px; } #workout-timer { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; } .set-inputs { display: flex; gap: 12px; margin: 12px 0; } .input-group { flex: 1; } .input-group label { display: block; font-size: 12px; font-weight: 600; color: var(--tg-theme-hint-color, #999999); margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.5px; } /* ── Set list items ──────────────────────────────────────────── */ .exercise-group { margin-bottom: 16px; } .exercise-group-name { font-size: 14px; font-weight: 700; color: var(--tg-theme-hint-color, #999999); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; } .set-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; background: var(--tg-theme-secondary-bg-color, #f0f0f0); border-radius: 10px; margin-bottom: 4px; font-size: 15px; } .set-item .set-number { color: var(--tg-theme-hint-color, #999999); font-weight: 600; min-width: 50px; } .set-item .set-detail { font-weight: 600; } .set-item .set-delete { background: none; border: none; color: #e53935; font-size: 18px; cursor: pointer; padding: 4px 8px; border-radius: 6px; } /* ── Exercise list ───────────────────────────────────────────── */ .add-exercise-row { display: flex; gap: 8px; align-items: center; } .add-exercise-row .input { flex: 1; } .exercise-item { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; background: var(--tg-theme-secondary-bg-color, #f0f0f0); border-radius: 10px; margin-bottom: 4px; font-size: 15px; font-weight: 500; } .exercise-item .exercise-delete { background: none; border: none; color: var(--tg-theme-hint-color, #999999); font-size: 18px; cursor: pointer; padding: 4px 8px; } /* ── History ─────────────────────────────────────────────────── */ .history-card { background: var(--tg-theme-secondary-bg-color, #f0f0f0); border-radius: 12px; padding: 16px; margin-bottom: 12px; } .history-card-header { display: flex; justify-content: space-between; margin-bottom: 10px; } .history-date { font-size: 13px; color: var(--tg-theme-hint-color, #999999); } .history-volume { font-size: 13px; font-weight: 600; color: var(--tg-theme-button-color, #3390ec); } .history-exercise { margin-bottom: 6px; } .history-exercise-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; } .history-exercise-sets { font-size: 13px; color: var(--tg-theme-hint-color, #999999); } /* ── Empty state ─────────────────────────────────────────────── */ .empty-state { text-align: center; padding: 48px 16px; } .empty-icon { font-size: 48px; margin-bottom: 12px; } .empty-state p { color: var(--tg-theme-hint-color, #999999); font-size: 16px; margin-bottom: 20px; } /* ── Haptic-like tap feedback ────────────────────────────────── */ .btn:active, .tab:active, .set-delete:active, .exercise-delete:active { transform: scale(0.97); } /* ── Toast notification ──────────────────────────────────────── */ .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(80px); background: var(--tg-theme-text-color, #000000); color: var(--tg-theme-bg-color, #ffffff); padding: 10px 20px; border-radius: 10px; font-size: 14px; font-weight: 600; opacity: 0; transition: transform 0.3s, opacity 0.3s; z-index: 1000; pointer-events: none; } .toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }