diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
new file mode 100644
index 0000000..5155206
--- /dev/null
+++ b/.github/workflows/pages.yml
@@ -0,0 +1,32 @@
+name: Deploy Prototype to Pages
+
+on:
+ push:
+ branches:
+ - claude/fitness-app-styling-7giJD
+ - main
+ workflow_dispatch:
+
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+concurrency:
+ group: pages
+ cancel-in-progress: false
+
+jobs:
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/configure-pages@v5
+ - uses: actions/upload-pages-artifact@v3
+ with:
+ path: fabio-antunes-app/prototype
+ - id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/fabio-antunes-app/prototype/README.md b/fabio-antunes-app/prototype/README.md
new file mode 100644
index 0000000..1530908
--- /dev/null
+++ b/fabio-antunes-app/prototype/README.md
@@ -0,0 +1,43 @@
+# Fabio Antunes — Prime Coaching · Prototyp
+
+Erste Design-Vorschau im "Dark & Athletic / Premium Gold"-Stil.
+
+## Ansehen
+
+```bash
+# Im Browser direkt öffnen:
+open fabio-antunes-app/prototype/index.html
+
+# Oder mit Live-Server (Auto-Reload):
+cd fabio-antunes-app/prototype && python3 -m http.server 8080
+# Dann http://localhost:8080 öffnen
+```
+
+Auf dem Handy: einfach die `index.html` im mobilen Browser öffnen, sieht in der Realität noch besser aus.
+
+## Stand
+
+- ✅ **Heute-Screen** (`index.html`) — Greeting, Workout-Hero, Tagesziele, Schnellzugriff, Coach-Chat-Preview, Bottom-Nav
+- ⏳ Workout-Detail (kommt nach Freigabe)
+- ⏳ Übungs-Tracking (kommt nach Freigabe)
+- ⏳ Fortschritt mit Charts (kommt nach Freigabe)
+
+## Design-Tokens
+
+- **Akzent**: Gold `#DAAC2F` (mit `#F5C75A` als Highlight, `#CFA847` als Subtle)
+- **Hintergrund**: Tiefschwarz `#0A0A0A` → Surface `#141414`
+- **Typo**: Inter (300–800)
+
+Alle Farben sind als CSS-Variablen in `assets/styles.css` definiert (oben unter `:root`).
+
+## Logo austauschen
+
+Aktuell ist ein **SVG-Platzhalter** in `assets/logo.svg`. So tauschst du dein PNG ein:
+
+1. PNG (transparent, mind. 256×256) in `assets/logo.png` ablegen
+2. In `index.html` ersetzen:
+ ```html
+
+
+
+ ```
diff --git a/fabio-antunes-app/prototype/assets/logo.png b/fabio-antunes-app/prototype/assets/logo.png
new file mode 100644
index 0000000..7b5c736
Binary files /dev/null and b/fabio-antunes-app/prototype/assets/logo.png differ
diff --git a/fabio-antunes-app/prototype/assets/logo.svg b/fabio-antunes-app/prototype/assets/logo.svg
new file mode 100644
index 0000000..468ecc6
--- /dev/null
+++ b/fabio-antunes-app/prototype/assets/logo.svg
@@ -0,0 +1,38 @@
+
diff --git a/fabio-antunes-app/prototype/assets/styles.css b/fabio-antunes-app/prototype/assets/styles.css
new file mode 100644
index 0000000..7b8cbb7
--- /dev/null
+++ b/fabio-antunes-app/prototype/assets/styles.css
@@ -0,0 +1,1381 @@
+/* ============================================
+ FABIO ANTUNES — PRIME COACHING
+ Design System v0.1
+ ============================================ */
+
+:root {
+ /* Backgrounds */
+ --bg-primary: #0A0A0A;
+ --bg-secondary: #1A1A1A;
+ --bg-elevated: #1C1C1C;
+ --bg-overlay: rgba(20, 20, 20, 0.85);
+
+ /* Borders */
+ --border-subtle: #1F1F1F;
+ --border: #2A2A2A;
+ --border-strong: #3A3A3A;
+
+ /* Brand — Gold */
+ --gold: #D4AF37;
+ --gold-light: #F4C430;
+ --gold-dark: #8B6914;
+ --gold-muted: #8C7028;
+ --gold-glow: rgba(212, 175, 55, 0.18);
+
+ /* Text */
+ --text-primary: #FFFFFF;
+ --text-secondary: #B8B8B8;
+ --text-tertiary: #6E6E6E;
+ --text-quaternary: #4A4A4A;
+ --text-on-gold: #0A0A0A;
+
+ /* Semantic */
+ --success: #4ADE80;
+ --warning: #F59E0B;
+ --danger: #EF4444;
+
+ /* Spacing */
+ --space-1: 4px;
+ --space-2: 8px;
+ --space-3: 12px;
+ --space-4: 16px;
+ --space-5: 20px;
+ --space-6: 24px;
+ --space-8: 32px;
+ --space-10: 40px;
+ --space-12: 48px;
+
+ /* Radius */
+ --radius-sm: 8px;
+ --radius: 14px;
+ --radius-lg: 20px;
+ --radius-xl: 28px;
+ --radius-full: 999px;
+
+ /* Type */
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
+ --font-display: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
+
+ /* Shadows */
+ --shadow-card: 0 4px 24px -8px rgba(0, 0, 0, 0.6);
+ --shadow-gold: 0 8px 32px -12px rgba(212, 175, 55, 0.4);
+}
+
+/* Reset */
+*, *::before, *::after { box-sizing: border-box; }
+* { margin: 0; padding: 0; }
+
+html, body {
+ height: 100%;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ text-rendering: optimizeLegibility;
+}
+
+body {
+ font-family: var(--font-sans);
+ font-size: 15px;
+ line-height: 1.5;
+ color: var(--text-primary);
+ background: var(--bg-primary);
+ -webkit-tap-highlight-color: transparent;
+ overscroll-behavior: none;
+}
+
+img, svg { display: block; max-width: 100%; }
+button, input, textarea { font: inherit; color: inherit; }
+button { cursor: pointer; border: none; background: none; }
+a { color: inherit; text-decoration: none; }
+
+/* ============================================
+ Phone Frame (Desktop preview)
+ ============================================ */
+.viewport {
+ min-height: 100dvh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background:
+ radial-gradient(circle at 20% 0%, rgba(212, 175, 55, 0.06) 0%, transparent 50%),
+ radial-gradient(circle at 80% 100%, rgba(212, 175, 55, 0.04) 0%, transparent 50%),
+ var(--bg-primary);
+ padding: var(--space-6) var(--space-4);
+}
+
+.phone {
+ width: 100%;
+ max-width: 412px;
+ min-height: 100dvh;
+ background: var(--bg-primary);
+ position: relative;
+ overflow: hidden;
+}
+
+@media (min-width: 768px) {
+ .phone {
+ min-height: 880px;
+ max-height: 880px;
+ border-radius: 44px;
+ border: 1px solid var(--border);
+ box-shadow:
+ 0 0 0 8px #050505,
+ 0 0 0 9px #1a1a1a,
+ 0 40px 80px -20px rgba(0,0,0,0.8),
+ 0 0 120px rgba(212, 175, 55, 0.05);
+ overflow: hidden;
+ }
+}
+
+.screen {
+ height: 100%;
+ min-height: 100dvh;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding-bottom: 96px; /* nav space */
+}
+
+@media (min-width: 768px) {
+ .screen { min-height: 880px; max-height: 880px; }
+}
+
+.screen::-webkit-scrollbar { width: 0; }
+
+/* iOS-style status bar */
+.statusbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--space-4) var(--space-6) var(--space-2);
+ font-size: 14px;
+ font-weight: 600;
+ letter-spacing: 0.02em;
+ color: var(--text-primary);
+}
+.statusbar-icons { display: flex; gap: 6px; align-items: center; opacity: 0.95; }
+.statusbar-icons svg { width: 18px; height: 12px; }
+
+/* ============================================
+ Layout
+ ============================================ */
+.container {
+ padding: 0 var(--space-5);
+}
+
+/* ============================================
+ Header (greeting)
+ ============================================ */
+.header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--space-4) var(--space-5) var(--space-6);
+}
+
+.greeting-label {
+ font-size: 13px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+ letter-spacing: 0.02em;
+ text-transform: uppercase;
+}
+.greeting-name {
+ font-size: 26px;
+ font-weight: 700;
+ letter-spacing: -0.02em;
+ margin-top: 2px;
+}
+.greeting-name .accent { color: var(--gold); }
+
+.avatar {
+ width: 44px;
+ height: 44px;
+ border-radius: var(--radius-full);
+ background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%);
+ border: 1px solid var(--border);
+ display: grid;
+ place-items: center;
+ font-weight: 700;
+ font-size: 14px;
+ color: var(--gold);
+ position: relative;
+}
+.avatar::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ width: 11px;
+ height: 11px;
+ background: var(--success);
+ border: 2px solid var(--bg-primary);
+ border-radius: var(--radius-full);
+}
+
+/* ============================================
+ Brand bar
+ ============================================ */
+.brandbar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: var(--space-3) 0 var(--space-3);
+ border-bottom: 1px solid var(--border-subtle);
+ margin: 0 var(--space-5) var(--space-4);
+}
+.brandbar-logo {
+ height: 44px;
+ width: auto;
+ max-width: 100%;
+ object-fit: contain;
+}
+.brandbar-text {
+ font-size: 11px;
+ letter-spacing: 0.24em;
+ color: var(--gold-dark);
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+/* ============================================
+ Hero Workout Card
+ ============================================ */
+.hero-card {
+ position: relative;
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-6);
+ border-radius: var(--radius-lg);
+ background:
+ linear-gradient(135deg, rgba(212, 175, 55, 0.08) 0%, transparent 50%),
+ var(--bg-secondary);
+ border: 1px solid var(--border);
+ overflow: hidden;
+}
+
+.hero-card::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 1px;
+ background: linear-gradient(90deg, transparent, var(--gold), transparent);
+ opacity: 0.5;
+}
+
+.hero-eyebrow {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 11px;
+ font-weight: 600;
+ letter-spacing: 0.16em;
+ text-transform: uppercase;
+ color: var(--gold);
+ padding: 6px 10px;
+ border: 1px solid var(--gold-muted);
+ border-radius: var(--radius-full);
+ background: var(--gold-glow);
+}
+.hero-eyebrow .pulse {
+ width: 6px; height: 6px;
+ border-radius: 50%;
+ background: var(--gold);
+ box-shadow: 0 0 8px var(--gold);
+ animation: pulse 1.6s ease-in-out infinite;
+}
+@keyframes pulse {
+ 0%, 100% { opacity: 1; transform: scale(1); }
+ 50% { opacity: 0.5; transform: scale(1.3); }
+}
+
+.hero-title {
+ font-size: 28px;
+ font-weight: 800;
+ line-height: 1.1;
+ letter-spacing: -0.03em;
+ margin-top: var(--space-4);
+}
+.hero-subtitle {
+ font-size: 14px;
+ color: var(--text-secondary);
+ margin-top: var(--space-2);
+}
+
+.hero-meta {
+ display: flex;
+ gap: var(--space-5);
+ margin-top: var(--space-5);
+ padding-top: var(--space-5);
+ border-top: 1px solid var(--border-subtle);
+}
+.hero-meta-item { flex: 1; }
+.hero-meta-value {
+ font-size: 18px;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+}
+.hero-meta-value .unit {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+ margin-left: 2px;
+}
+.hero-meta-label {
+ font-size: 11px;
+ color: var(--text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ margin-top: 2px;
+}
+
+.btn-primary {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-2);
+ width: 100%;
+ margin-top: var(--space-5);
+ padding: 16px;
+ background: var(--gold);
+ color: var(--text-on-gold);
+ font-weight: 700;
+ font-size: 15px;
+ letter-spacing: 0.02em;
+ border-radius: var(--radius);
+ transition: transform 0.1s ease, box-shadow 0.2s ease;
+ box-shadow: var(--shadow-gold);
+}
+.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 12px 36px -10px rgba(212, 175, 55, 0.6); }
+.btn-primary:active { transform: translateY(0); }
+.btn-primary svg { width: 18px; height: 18px; }
+
+/* ============================================
+ Section
+ ============================================ */
+.section {
+ padding: 0 var(--space-5);
+ margin-bottom: var(--space-6);
+}
+.section-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: var(--space-4);
+}
+.section-title {
+ font-size: 13px;
+ font-weight: 600;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+}
+.section-action {
+ font-size: 13px;
+ color: var(--gold);
+ font-weight: 600;
+}
+
+/* ============================================
+ Goals (rings)
+ ============================================ */
+.goals {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: var(--space-3);
+}
+.goal-card {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ padding: var(--space-4);
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--space-3);
+ transition: border-color 0.2s ease;
+}
+.goal-card:hover { border-color: var(--border-strong); }
+
+.ring {
+ --pct: 60;
+ --size: 44px;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ background:
+ conic-gradient(var(--gold) calc(var(--pct) * 1%), #232323 0);
+ display: grid;
+ place-items: center;
+ position: relative;
+}
+.ring::before {
+ content: '';
+ position: absolute;
+ inset: 4px;
+ background: var(--bg-secondary);
+ border-radius: 50%;
+}
+.ring svg {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ z-index: 1;
+ color: var(--gold);
+}
+
+.goal-value {
+ font-size: 17px;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+ letter-spacing: -0.01em;
+}
+.goal-value .small {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+}
+.goal-label {
+ font-size: 11px;
+ color: var(--text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ margin-top: -8px;
+}
+
+/* ============================================
+ Quick Actions
+ ============================================ */
+.actions {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: var(--space-3);
+}
+.action {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ padding: var(--space-4);
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+ text-align: left;
+ transition: all 0.15s ease;
+}
+.action:hover { border-color: var(--gold-muted); transform: translateY(-1px); }
+
+.action-icon {
+ width: 40px;
+ height: 40px;
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ display: grid;
+ place-items: center;
+ color: var(--gold);
+ border: 1px solid var(--border);
+ flex-shrink: 0;
+}
+.action-icon svg { width: 18px; height: 18px; }
+
+.action-label {
+ font-size: 14px;
+ font-weight: 600;
+ letter-spacing: -0.01em;
+}
+.action-sub {
+ font-size: 11px;
+ color: var(--text-tertiary);
+ margin-top: 2px;
+}
+.action-badge {
+ margin-left: auto;
+ background: var(--gold);
+ color: var(--text-on-gold);
+ font-size: 11px;
+ font-weight: 700;
+ padding: 2px 7px;
+ border-radius: var(--radius-full);
+ min-width: 20px;
+ text-align: center;
+}
+
+/* ============================================
+ Coach card
+ ============================================ */
+.coach-card {
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-4);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+}
+.coach-avatar {
+ width: 44px;
+ height: 44px;
+ border-radius: 50%;
+ background: linear-gradient(135deg, #3a2f0e, #1a1a1a);
+ border: 1.5px solid var(--gold-muted);
+ display: grid;
+ place-items: center;
+ font-weight: 800;
+ font-size: 14px;
+ color: var(--gold);
+ flex-shrink: 0;
+}
+.coach-text { flex: 1; min-width: 0; }
+.coach-name {
+ font-size: 14px;
+ font-weight: 600;
+}
+.coach-msg {
+ font-size: 13px;
+ color: var(--text-secondary);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin-top: 2px;
+}
+.coach-time {
+ font-size: 11px;
+ color: var(--text-tertiary);
+ align-self: flex-start;
+}
+
+/* ============================================
+ Bottom Nav
+ ============================================ */
+.nav {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(10, 10, 10, 0.92);
+ backdrop-filter: blur(20px) saturate(180%);
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
+ border-top: 1px solid var(--border-subtle);
+ padding: var(--space-3) var(--space-2) calc(var(--space-3) + 8px);
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+}
+.nav-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+ padding: 6px 12px;
+ color: var(--text-quaternary);
+ font-size: 10px;
+ font-weight: 600;
+ letter-spacing: 0.04em;
+ flex: 1;
+ transition: color 0.15s ease;
+}
+.nav-item svg { width: 22px; height: 22px; }
+.nav-item.active { color: var(--gold); }
+.nav-item:hover { color: var(--text-secondary); }
+.nav-item.active:hover { color: var(--gold-light); }
+
+/* ============================================
+ Top bar (back / title / action)
+ ============================================ */
+.topbar {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+ padding: var(--space-2) var(--space-4) var(--space-4);
+}
+.iconbtn {
+ width: 40px;
+ height: 40px;
+ border-radius: var(--radius-full);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ display: grid;
+ place-items: center;
+ color: var(--text-primary);
+ flex-shrink: 0;
+ transition: border-color 0.15s ease, color 0.15s ease;
+}
+.iconbtn:hover { border-color: var(--gold-muted); color: var(--gold); }
+.iconbtn svg { width: 20px; height: 20px; }
+.topbar-title { flex: 1; min-width: 0; text-align: center; }
+.topbar-eyebrow {
+ font-size: 11px;
+ color: var(--text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.12em;
+ font-weight: 600;
+}
+.topbar-name {
+ font-size: 17px;
+ font-weight: 700;
+ letter-spacing: -0.01em;
+ margin-top: 2px;
+}
+
+/* ============================================
+ Banner (workout summary)
+ ============================================ */
+.banner {
+ position: relative;
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-6);
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+ background: var(--bg-secondary);
+ border: 1px solid var(--border);
+}
+.banner-bg {
+ position: absolute;
+ inset: 0;
+ background:
+ radial-gradient(circle at 100% 0%, rgba(212, 175, 55, 0.18), transparent 60%),
+ radial-gradient(circle at 0% 100%, rgba(212, 175, 55, 0.08), transparent 50%);
+ pointer-events: none;
+}
+.banner::before {
+ content: '';
+ position: absolute;
+ top: 0; left: 0; right: 0; height: 1px;
+ background: linear-gradient(90deg, transparent, var(--gold), transparent);
+ opacity: 0.6;
+}
+.banner-content { position: relative; }
+.muscle-tags {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+ margin-bottom: var(--space-4);
+}
+.muscle-tag {
+ font-size: 11px;
+ font-weight: 600;
+ letter-spacing: 0.04em;
+ padding: 5px 10px;
+ border-radius: var(--radius-full);
+ background: var(--bg-elevated);
+ border: 1px solid var(--border);
+ color: var(--text-secondary);
+ text-transform: uppercase;
+}
+.muscle-tag.primary {
+ background: var(--gold-glow);
+ border-color: var(--gold-muted);
+ color: var(--gold);
+}
+.banner-title {
+ font-size: 30px;
+ font-weight: 800;
+ line-height: 1.05;
+ letter-spacing: -0.03em;
+}
+.banner-stats {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: var(--space-3);
+ margin-top: var(--space-5);
+ padding-top: var(--space-5);
+ border-top: 1px solid var(--border-subtle);
+}
+.banner-stats > div { display: flex; flex-direction: column; gap: 2px; }
+.banner-stats strong {
+ font-size: 16px;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+}
+.banner-stats span {
+ font-size: 10px;
+ color: var(--text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ font-weight: 600;
+}
+
+/* ============================================
+ Coach Note
+ ============================================ */
+.coach-note {
+ display: flex;
+ gap: var(--space-3);
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-4);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-left: 3px solid var(--gold);
+ border-radius: var(--radius);
+}
+.coach-note-icon {
+ width: 32px;
+ height: 32px;
+ border-radius: var(--radius-sm);
+ background: var(--gold-glow);
+ color: var(--gold);
+ display: grid;
+ place-items: center;
+ flex-shrink: 0;
+}
+.coach-note-icon svg { width: 16px; height: 16px; }
+.coach-note-label {
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ color: var(--gold);
+ font-weight: 700;
+}
+.coach-note-text {
+ font-size: 13px;
+ color: var(--text-secondary);
+ margin-top: 4px;
+ line-height: 1.5;
+}
+
+/* ============================================
+ Exercise list
+ ============================================ */
+.exercise-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-2);
+}
+.exercise {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+ padding: var(--space-3);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ transition: all 0.15s ease;
+ cursor: pointer;
+}
+.exercise:hover { border-color: var(--gold-muted); transform: translateX(2px); }
+.exercise.superset { border-left: 3px solid var(--gold); }
+
+.exercise-num {
+ width: 28px;
+ height: 28px;
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ display: grid;
+ place-items: center;
+ font-size: 12px;
+ font-weight: 700;
+ color: var(--text-secondary);
+ font-variant-numeric: tabular-nums;
+ flex-shrink: 0;
+}
+.exercise-img {
+ width: 48px;
+ height: 48px;
+ border-radius: var(--radius-sm);
+ display: grid;
+ place-items: center;
+ color: var(--gold);
+ flex-shrink: 0;
+ border: 1px solid var(--border-subtle);
+}
+.exercise-img svg { width: 22px; height: 22px; }
+.exercise-body { flex: 1; min-width: 0; }
+.exercise-name {
+ font-size: 15px;
+ font-weight: 600;
+ letter-spacing: -0.01em;
+}
+.exercise-meta {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ margin-top: 2px;
+ font-variant-numeric: tabular-nums;
+}
+.exercise-tag {
+ display: inline-block;
+ margin-top: 4px;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ padding: 2px 8px;
+ border-radius: var(--radius-full);
+ background: var(--gold-glow);
+ color: var(--gold);
+}
+.exercise-tag.finisher { background: rgba(239, 68, 68, 0.12); color: #FCA5A5; }
+
+.exercise-status {
+ width: 28px;
+ height: 28px;
+ display: grid;
+ place-items: center;
+ color: var(--text-quaternary);
+ flex-shrink: 0;
+}
+.exercise-status svg { width: 18px; height: 18px; }
+
+.superset-label {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+ margin: var(--space-3) 0 var(--space-1);
+ font-size: 10px;
+ color: var(--gold);
+ text-transform: uppercase;
+ letter-spacing: 0.2em;
+ font-weight: 700;
+}
+.superset-label span {
+ flex: 1;
+ height: 1px;
+ background: linear-gradient(90deg, transparent, var(--gold-muted), transparent);
+}
+
+/* ============================================
+ Sticky CTA bar
+ ============================================ */
+.sticky-cta {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: var(--space-4) var(--space-5) calc(var(--space-4) + 8px);
+ background: linear-gradient(180deg, transparent, rgba(10,10,10,0.95) 30%);
+ backdrop-filter: blur(12px);
+ -webkit-backdrop-filter: blur(12px);
+}
+
+/* ============================================
+ Workout progress bar
+ ============================================ */
+.workout-progress {
+ height: 3px;
+ background: var(--border-subtle);
+ margin: 0 var(--space-5) var(--space-5);
+ border-radius: 2px;
+ overflow: hidden;
+}
+.workout-progress-bar {
+ height: 100%;
+ background: linear-gradient(90deg, var(--gold-dark), var(--gold-light));
+ border-radius: 2px;
+ box-shadow: 0 0 8px var(--gold-glow);
+ transition: width 0.4s ease;
+}
+
+/* ============================================
+ Exercise hero (media + targets)
+ ============================================ */
+.exercise-hero {
+ margin: 0 var(--space-5) var(--space-5);
+}
+.exercise-media {
+ position: relative;
+ aspect-ratio: 16 / 9;
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+ border: 1px solid var(--border);
+ display: grid;
+ place-items: center;
+ background: linear-gradient(135deg, #1a1409 0%, #0a0a0a 100%);
+ margin-bottom: var(--space-3);
+}
+.exercise-media-bg {
+ position: absolute;
+ inset: 0;
+ background:
+ radial-gradient(circle at 50% 50%, rgba(212, 175, 55, 0.12), transparent 60%);
+}
+.exercise-media-icon {
+ width: 60%;
+ height: auto;
+ color: var(--gold-dark);
+ position: relative;
+ opacity: 0.7;
+}
+.play-btn {
+ position: absolute;
+ width: 64px;
+ height: 64px;
+ border-radius: 50%;
+ background: var(--gold);
+ color: var(--text-on-gold);
+ display: grid;
+ place-items: center;
+ box-shadow: var(--shadow-gold);
+ transition: transform 0.15s ease;
+}
+.play-btn:hover { transform: scale(1.05); }
+.play-btn svg { width: 24px; height: 24px; margin-left: 3px; }
+
+.exercise-targets {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+}
+
+/* ============================================
+ Last performance
+ ============================================ */
+.lastperf {
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-4);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+}
+.lastperf-label {
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 0.12em;
+ color: var(--text-tertiary);
+ font-weight: 600;
+ margin-bottom: var(--space-3);
+}
+.lastperf-grid {
+ display: grid;
+ grid-template-columns: 1fr auto 1fr;
+ align-items: center;
+ gap: var(--space-3);
+}
+.lastperf-item {
+ padding: var(--space-3);
+ border-radius: var(--radius-sm);
+ border: 1px solid var(--border-subtle);
+}
+.lastperf-item.target {
+ border-color: var(--gold-muted);
+ background: var(--gold-glow);
+}
+.lastperf-value {
+ font-size: 22px;
+ font-weight: 800;
+ font-variant-numeric: tabular-nums;
+ letter-spacing: -0.02em;
+}
+.lastperf-value .unit {
+ font-size: 13px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+ margin-left: 2px;
+}
+.lastperf-item.target .lastperf-value { color: var(--gold-light); }
+.lastperf-item.target .lastperf-value .unit { color: var(--gold); }
+.lastperf-meta {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ margin-top: 2px;
+ font-variant-numeric: tabular-nums;
+}
+.lastperf-arrow {
+ color: var(--text-quaternary);
+}
+.lastperf-arrow svg { width: 18px; height: 18px; }
+
+/* ============================================
+ Sets tracker
+ ============================================ */
+.sets {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ padding: var(--space-3);
+}
+.sets-header,
+.set {
+ display: grid;
+ grid-template-columns: 32px 1fr 70px 70px 40px;
+ gap: var(--space-2);
+ align-items: center;
+}
+.sets-header {
+ padding: 0 var(--space-2) var(--space-2);
+ font-size: 10px;
+ color: var(--text-tertiary);
+ font-weight: 700;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ border-bottom: 1px solid var(--border-subtle);
+ margin-bottom: var(--space-2);
+}
+.sets-header > div:nth-child(3),
+.sets-header > div:nth-child(4) { text-align: center; }
+
+.set {
+ padding: var(--space-2);
+ border-radius: var(--radius-sm);
+ transition: background 0.15s ease;
+}
+.set + .set { border-top: 1px solid var(--border-subtle); margin-top: var(--space-1); padding-top: var(--space-3); }
+.set.active { background: var(--gold-glow); border: 1px solid var(--gold-muted); }
+.set.done { opacity: 0.6; }
+
+.set-num {
+ font-size: 14px;
+ font-weight: 700;
+ color: var(--text-secondary);
+ font-variant-numeric: tabular-nums;
+ text-align: center;
+}
+.set.active .set-num { color: var(--gold); }
+.set-prev {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ font-variant-numeric: tabular-nums;
+}
+.set-input {
+ width: 100%;
+ height: 38px;
+ padding: 0 var(--space-2);
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ border: 1px solid var(--border);
+ color: var(--text-primary);
+ font-size: 15px;
+ font-weight: 600;
+ font-variant-numeric: tabular-nums;
+ text-align: center;
+ outline: none;
+ transition: border-color 0.15s ease, background 0.15s ease;
+}
+.set-input:focus { border-color: var(--gold); background: var(--bg-primary); }
+.set.active .set-input { border-color: var(--gold-muted); }
+.set-input::placeholder { color: var(--text-quaternary); }
+
+.set-check {
+ width: 36px;
+ height: 36px;
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ border: 1px solid var(--border);
+ display: grid;
+ place-items: center;
+ color: var(--text-quaternary);
+ transition: all 0.15s ease;
+}
+.set-check:hover { border-color: var(--gold-muted); color: var(--gold); }
+.set-check svg { width: 18px; height: 18px; }
+.set-check.checked {
+ background: var(--gold);
+ border-color: var(--gold);
+ color: var(--text-on-gold);
+}
+
+.add-set {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 6px;
+ width: 100%;
+ margin-top: var(--space-3);
+ padding: var(--space-3);
+ background: transparent;
+ border: 1px dashed var(--border-strong);
+ border-radius: var(--radius-sm);
+ color: var(--text-secondary);
+ font-size: 13px;
+ font-weight: 600;
+ transition: all 0.15s ease;
+}
+.add-set:hover { border-color: var(--gold-muted); color: var(--gold); }
+.add-set svg { width: 16px; height: 16px; }
+
+/* ============================================
+ Rest timer overlay
+ ============================================ */
+.rest-timer {
+ position: absolute;
+ left: var(--space-5);
+ right: var(--space-5);
+ bottom: 90px;
+ background: linear-gradient(135deg, #1a1409 0%, #0e0e0e 100%);
+ border: 1px solid var(--gold-muted);
+ border-radius: var(--radius);
+ padding: var(--space-4);
+ display: flex;
+ align-items: center;
+ gap: var(--space-4);
+ box-shadow: 0 12px 40px -8px rgba(0,0,0,0.7), 0 0 24px var(--gold-glow);
+}
+.rest-timer-label {
+ font-size: 10px;
+ color: var(--gold);
+ letter-spacing: 0.18em;
+ text-transform: uppercase;
+ font-weight: 700;
+}
+.rest-timer-time {
+ font-size: 28px;
+ font-weight: 800;
+ font-variant-numeric: tabular-nums;
+ letter-spacing: -0.02em;
+ color: var(--text-primary);
+ margin-top: 2px;
+ flex: 1;
+}
+.rest-timer-actions {
+ display: flex;
+ gap: 6px;
+}
+.timer-btn {
+ display: grid;
+ place-items: center;
+ width: 44px;
+ height: 44px;
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ border: 1px solid var(--border);
+ color: var(--text-secondary);
+ font-size: 11px;
+ font-weight: 700;
+ position: relative;
+ transition: all 0.15s ease;
+}
+.timer-btn:hover { border-color: var(--gold-muted); color: var(--gold); }
+.timer-btn svg { width: 12px; height: 12px; }
+.timer-btn span {
+ font-size: 9px;
+ margin-top: 1px;
+}
+.timer-btn.skip {
+ background: var(--gold);
+ border-color: var(--gold);
+ color: var(--text-on-gold);
+ font-size: 12px;
+ width: auto;
+ padding: 0 var(--space-3);
+}
+
+/* ============================================
+ Tabs
+ ============================================ */
+.tabs {
+ display: flex;
+ gap: 4px;
+ padding: 0 var(--space-5);
+ margin-bottom: var(--space-5);
+ overflow-x: auto;
+ scrollbar-width: none;
+}
+.tabs::-webkit-scrollbar { display: none; }
+.tab {
+ flex-shrink: 0;
+ padding: 8px var(--space-4);
+ font-size: 13px;
+ font-weight: 600;
+ color: var(--text-tertiary);
+ border-radius: var(--radius-full);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ transition: all 0.15s ease;
+}
+.tab:hover { color: var(--text-primary); }
+.tab.active {
+ background: var(--gold-glow);
+ border-color: var(--gold-muted);
+ color: var(--gold);
+}
+
+/* ============================================
+ Metric card with chart
+ ============================================ */
+.metric-card {
+ margin: 0 var(--space-5) var(--space-6);
+ padding: var(--space-5);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius-lg);
+}
+.metric-row {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: var(--space-4);
+}
+.metric-label {
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 0.12em;
+ color: var(--text-tertiary);
+ font-weight: 600;
+}
+.metric-value {
+ font-size: 38px;
+ font-weight: 800;
+ font-variant-numeric: tabular-nums;
+ letter-spacing: -0.03em;
+ margin-top: 2px;
+ line-height: 1;
+}
+.metric-value .unit {
+ font-size: 16px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+ margin-left: 4px;
+ letter-spacing: 0;
+}
+.metric-delta {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ padding: 6px 10px;
+ border-radius: var(--radius-full);
+ font-size: 12px;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+}
+.metric-delta.positive {
+ background: rgba(74, 222, 128, 0.12);
+ color: var(--success);
+}
+.metric-delta svg { width: 14px; height: 14px; }
+
+.chart {
+ margin-top: var(--space-5);
+}
+.chart svg {
+ width: 100%;
+ height: 140px;
+}
+.chart-x {
+ display: flex;
+ justify-content: space-between;
+ margin-top: var(--space-2);
+ font-size: 10px;
+ color: var(--text-quaternary);
+ font-weight: 600;
+ letter-spacing: 0.04em;
+}
+.chart-x .active { color: var(--gold); }
+
+.metric-footer {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: var(--space-3);
+ margin-top: var(--space-5);
+ padding-top: var(--space-4);
+ border-top: 1px solid var(--border-subtle);
+}
+.metric-foot-label {
+ font-size: 10px;
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ color: var(--text-tertiary);
+ font-weight: 600;
+}
+.metric-foot-value {
+ font-size: 14px;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+ margin-top: 2px;
+}
+
+/* ============================================
+ Personal Records
+ ============================================ */
+.pr-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-2);
+}
+.pr-card {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+ padding: var(--space-3) var(--space-4);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+ transition: border-color 0.15s ease;
+}
+.pr-card:hover { border-color: var(--gold-muted); }
+.pr-card.new {
+ background: linear-gradient(135deg, rgba(212, 175, 55, 0.1), transparent 60%), var(--bg-secondary);
+ border-color: var(--gold-muted);
+}
+.pr-icon {
+ width: 36px;
+ height: 36px;
+ border-radius: var(--radius-sm);
+ background: var(--gold-glow);
+ color: var(--gold);
+ display: grid;
+ place-items: center;
+ flex-shrink: 0;
+}
+.pr-icon svg { width: 18px; height: 18px; }
+.pr-body { flex: 1; min-width: 0; }
+.pr-name { font-size: 14px; font-weight: 600; }
+.pr-meta {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ margin-top: 2px;
+ font-variant-numeric: tabular-nums;
+}
+.pr-badge {
+ background: var(--gold);
+ color: var(--text-on-gold);
+ font-size: 10px;
+ font-weight: 800;
+ letter-spacing: 0.1em;
+ padding: 4px 8px;
+ border-radius: var(--radius-full);
+}
+.pr-delta {
+ font-size: 12px;
+ font-weight: 700;
+ color: var(--success);
+ font-variant-numeric: tabular-nums;
+}
+
+/* ============================================
+ Health grid
+ ============================================ */
+.health-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: var(--space-3);
+}
+.health-card {
+ padding: var(--space-4);
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-subtle);
+ border-radius: var(--radius);
+}
+.health-head {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ color: var(--text-tertiary);
+ font-weight: 600;
+ margin-bottom: var(--space-2);
+}
+.health-head svg { width: 14px; height: 14px; color: var(--gold); }
+.health-value {
+ font-size: 22px;
+ font-weight: 800;
+ font-variant-numeric: tabular-nums;
+ letter-spacing: -0.02em;
+}
+.health-value .unit {
+ font-size: 12px;
+ color: var(--text-tertiary);
+ font-weight: 500;
+ margin-left: 2px;
+}
+.health-trend {
+ font-size: 11px;
+ margin-top: 4px;
+ font-variant-numeric: tabular-nums;
+}
+.health-trend.up { color: var(--success); }
+.health-trend.down { color: var(--success); }
+
+/* ============================================
+ Utilities
+ ============================================ */
+.spacer-sm { height: var(--space-4); }
+.spacer { height: var(--space-6); }
diff --git a/fabio-antunes-app/prototype/exercise.html b/fabio-antunes-app/prototype/exercise.html
new file mode 100644
index 0000000..133d346
--- /dev/null
+++ b/fabio-antunes-app/prototype/exercise.html
@@ -0,0 +1,192 @@
+
+
+