# TabataFit β€” Brand Design Specification v2.0 > Apple Liquid Glass Design for Tabata --- ## Brand Positioning **TabataFit = Apple Fitness+ avec Liquid Glass (iOS 18.4)** | Attribute | Description | |-----------|-------------| | **Analogy** | "If Apple made a Tabata app in 2026" | | **Vibe** | Premium, glassy, fluid, immersive | | **Emotion** | Confident, empowering, sleek | | **Differentiator** | Video-led + Liquid Glass UI | --- ## πŸͺŸ Liquid Glass System (iOS 18.4 Style) ### Concept Le **Liquid Glass** est le nouveau design language d'Apple qui combine : - **Glassmorphism avancΓ©** β€” Blur dynamique, transparence multicouche - **FluiditΓ© organique** β€” Formes arrondies, animations liquides - **LumiΓ¨re rΓ©active** β€” Reflets, glows qui rΓ©pondent au contenu - **Profondeur atmosphΓ©rique** β€” Layers de verre empilΓ©s ### Glass Layers ```typescript const GLASS = { // Base glass (surfaces) BASE: { backgroundColor: 'rgba(255, 255, 255, 0.05)', backdropFilter: 'blur(40px)', borderWidth: 1, borderColor: 'rgba(255, 255, 255, 0.1)', shadowColor: '#000', shadowOffset: { width: 0, height: 8 }, shadowOpacity: 0.3, shadowRadius: 32, }, // Elevated glass (cards, modals) ELEVATED: { backgroundColor: 'rgba(255, 255, 255, 0.08)', backdropFilter: 'blur(60px)', borderWidth: 1, borderColor: 'rgba(255, 255, 255, 0.15)', shadowColor: '#000', shadowOffset: { width: 0, height: 12 }, shadowOpacity: 0.4, shadowRadius: 48, }, // Inset glass (input fields, controls) INSET: { backgroundColor: 'rgba(0, 0, 0, 0.2)', backdropFilter: 'blur(20px)', borderWidth: 1, borderColor: 'rgba(255, 255, 255, 0.05)', }, // Tinted glass (accent overlays) TINTED: { backgroundColor: 'rgba(255, 107, 53, 0.15)', // Brand tint backdropFilter: 'blur(40px)', borderWidth: 1, borderColor: 'rgba(255, 107, 53, 0.3)', }, } ``` ### Liquid Animations ```typescript const LIQUID = { // Morphing shapes MORPH: { duration: 600, easing: 'cubic-bezier(0.4, 0, 0.2, 1)', }, // Ripple effect on tap RIPPLE: { scale: { from: 0.8, to: 1 }, opacity: { from: 0.5, to: 0 }, duration: 400, }, // Breathing glow BREATHE: { scale: { from: 1, to: 1.02 }, shadowRadius: { from: 20, to: 30 }, duration: 2000, loop: true, }, // Slide with liquid easing SLIDE: { damping: 20, stiffness: 300, mass: 1, }, } ``` --- ## Visual Identity ### Logo Concept ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ TABATA β”‚ ← Bold, black β”‚ FIT β”‚ ← Accent orange β”‚ β”‚ β”‚ [Flame icon] β”‚ ← Optional mark β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Brand Voice | DO | DON'T | |----|-------| | "Let's burn." | "Get ripped fast!" | | "4 minutes to stronger." | "Lose weight now!" | | "Your daily dose of HIIT." | "The #1 fitness app!" | | Minimal, confident copy | Excessive exclamation marks!! | --- ## Color Palette ### Primary Colors ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ BLACK β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #000000 Background β”‚ β”‚ CHARCOAL β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #1C1C1E Surfaces β”‚ β”‚ SLATE β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #2C2C2E Elevated β”‚ β”‚ β”‚ β”‚ FLAME β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #FF6B35 Brand accent β”‚ β”‚ FLAME LIGHT β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #FF8C5A Highlights β”‚ β”‚ β”‚ β”‚ ICE β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #5AC8FA Rest phases β”‚ β”‚ GLOW β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #FFD60A Achievement β”‚ β”‚ ENERGY β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ #30D158 Success/Completeβ”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Semantic Usage | Color | Hex | Usage | |-------|-----|-------| | **Black** | #000000 | Main background, video frames | | **Charcoal** | #1C1C1E | Cards, raised surfaces | | **Slate** | #2C2C2E | Modals, elevated elements | | **Flame** | #FF6B35 | Work phase, CTAs, brand | | **Ice** | #5AC8FA | Rest phase, calm states | | **Glow** | #FFD60A | Achievement badges, streaks | | **Energy** | #30D158 | Complete states, success | ### Phase Colors (Critical) ```typescript const PHASE_COLORS = { PREP: '#FF9500', // Orange-yellow - get ready WORK: '#FF6B35', // Flame orange - WORK! REST: '#5AC8FA', // Ice blue - recover COMPLETE: '#30D158', // Energy green - done! } ``` --- ## Typography ### Font Stack **Primary**: Inter (Google Fonts) - Clean, modern, excellent readability - Variable weight support - Apple SF Pro alternative ### Type Scale | Style | Size | Weight | Use Case | |-------|------|--------|----------| | **HERO** | 48px | 900 | Marketing, celebration | | **TITLE_1** | 34px | 700 | Screen titles | | **TITLE_2** | 28px | 700 | Section headers | | **TITLE_3** | 22px | 600 | Card titles | | **BODY** | 17px | 400 | Default text | | **BODY_BOLD** | 17px | 600 | Emphasis | | **CAPTION** | 15px | 400 | Metadata | | **MICRO** | 13px | 400 | Small labels | | **TIMER** | 96px | 900 | Countdown display | ### Timer Typography (Special) ```typescript const TIMER_STYLES = { // Main countdown number NUMBER: { fontFamily: 'Inter_900Black', fontSize: 96, fontVariant: ['tabular-nums'], // Monospace digits letterSpacing: -2, }, // Phase label (WORK, REST) PHASE: { fontFamily: 'Inter_700Bold', fontSize: 24, letterSpacing: 2, textTransform: 'uppercase', }, // Round indicator ROUND: { fontFamily: 'Inter_500Medium', fontSize: 17, fontVariant: ['tabular-nums'], }, } ``` --- ## Spacing System ```typescript const SPACING = { // Base unit: 4px 0: 0, 1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, 8: 32, 10: 40, 12: 48, 16: 64, // Semantic XS: 4, SM: 8, MD: 16, LG: 24, XL: 32, XXL: 48, } const LAYOUT = { SCREEN_PADDING: 24, // Horizontal screen padding CARD_RADIUS: 16, // Standard card radius BUTTON_RADIUS: 12, // Button radius TAB_BAR_HEIGHT: 80, // Bottom tab bar STATUS_BAR: 44, // iOS status bar } ``` --- ## Component Styles ### Cards ```typescript const CARD = { CONTAINER: { backgroundColor: '#1C1C1E', borderRadius: 16, overflow: 'hidden', }, THUMBNAIL: { aspectRatio: 16/9, backgroundColor: '#2C2C2E', }, CONTENT: { padding: 16, }, // Variants FEATURED: { borderRadius: 20, }, COMPACT: { flexDirection: 'row', borderRadius: 12, }, } ``` ### Buttons ```typescript const BUTTON = { PRIMARY: { backgroundColor: '#FF6B35', paddingVertical: 16, paddingHorizontal: 24, borderRadius: 12, alignItems: 'center', justifyContent: 'center', }, PRIMARY_TEXT: { color: '#FFFFFF', fontFamily: 'Inter_600SemiBold', fontSize: 17, letterSpacing: 0.5, }, SECONDARY: { backgroundColor: 'transparent', borderWidth: 1, borderColor: '#3A3A3C', }, GHOST: { backgroundColor: 'transparent', }, } ``` ### Timer Display ```typescript const TIMER = { CONTAINER: { position: 'absolute', bottom: 0, left: 0, right: 0, padding: 24, background: 'linear-gradient(transparent, rgba(0,0,0,0.8))', }, NUMBER: { fontFamily: 'Inter_900Black', fontSize: 96, color: '#FFFFFF', textAlign: 'center', }, PROGRESS_BAR: { height: 4, backgroundColor: 'rgba(255,255,255,0.2)', borderRadius: 2, marginTop: 16, }, PROGRESS_FILL: { height: '100%', borderRadius: 2, // Color based on phase }, } ``` --- ## Animation Specifications ### Timing Constants ```typescript const DURATION = { INSTANT: 100, FAST: 200, NORMAL: 300, SLOW: 500, XSLow: 800, } const EASING = { // Standard iOS ease DEFAULT: 'ease-out', // Spring animations BOUNCY: { damping: 15, stiffness: 180, }, GENTLE: { damping: 20, stiffness: 100, }, } ``` ### Key Animations **Timer Countdown:** ```typescript // Number pulses slightly each second Animated.sequence([ Animated.timing(scale, { toValue: 1.05, duration: 100 }), Animated.timing(scale, { toValue: 1, duration: 100 }), ]) ``` **Progress Bar:** ```typescript // Smooth linear fill during phase Animated.timing(width, { toValue: 100, duration: phaseDuration, easing: Easing.linear, }) ``` **Phase Transition:** ```typescript // Color crossfade Animated.timing(colorProgress, { toValue: 1, duration: 300, }) ``` **Workout Complete:** ```typescript // Celebration with scale + fade Animated.parallel([ Animated.spring(scale, { toValue: 1, ...BOUNCY }), Animated.timing(opacity, { toValue: 1, duration: 500 }), ]) ``` --- ## Icon System Using SF Symbols / Ionicons equivalent: | Context | Icon | Size | |---------|------|------| | Home Tab | house.fill | 24 | | Workouts Tab | flame.fill | 24 | | Activity Tab | chart.bar.fill | 24 | | Browse Tab | square.grid.2x2.fill | 24 | | Profile Tab | person.fill | 24 | | Play | play.fill | 20 | | Pause | pause.fill | 20 | | Close | xmark | 20 | | Back | chevron.left | 20 | | Forward | chevron.right | 20 | | Heart | heart.fill | 20 | | Search | magnifyingglass | 20 | --- ## Video Player UI ### Overlay Layout ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ [Close X] [β™₯︎] [Β·Β·Β·] β”‚ ← Top bar β”‚ β”‚ β”‚ β”‚ β”‚ [VIDEO CONTENT] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ πŸ”₯ WORK β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ 00:14 β”‚ β”‚ ← Timer overlay β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Round 3 of 8 β”‚ β”‚ β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Video Requirements - **Resolution**: 1080p minimum - **Aspect**: 16:9 (landscape) or 9:16 (portrait mode) - **Format**: HLS (m3u8) for streaming - **Audio**: AAC, 128kbps minimum - **Thumbnail**: JPG, same aspect ratio --- ## Sound Design ### Sound Effects | Event | Sound | Description | |-------|-------|-------------| | Phase Start | "ding" | Quick, bright chime | | Count 3-2-1 | "tick" | Subtle tick sound | | Workout Start | "whoosh" | Energy whoosh | | Workout Complete | "success" | Celebratory chime | | Button Tap | "tap" | Soft tap feedback | | Streak Achieved | "fire" | Crackling fire | ### Haptics | Event | Haptic | |-------|--------| | Phase change | Medium | | Button tap | Light | | Countdown tick | Selection | | Workout complete | Success | | Error | Error | --- ## Dark Mode Only TabataFit is **dark mode only** β€” no light mode. This is a deliberate design choice matching Apple Fitness+ and creating an immersive, cinematic experience. Reasons: 1. Better video contrast 2. Less eye strain during workouts 3. Premium feel 4. Consistent with fitness studio lighting --- ## Image Guidelines ### Trainer Photos - Professional, high-quality headshots - Warm, approachable expressions - Fitness attire visible - Consistent lighting style - Background: Dark or studio setting ### Workout Thumbnails - Action shot from the workout - Clear exercise demonstration - Trainer visible - Dark/gradient background - Text overlay: Title, duration, level ### Collection Banners - 16:9 aspect ratio - Composite of trainer + exercises - Gradient overlay for text - Brand accent color elements --- ## Copy Guidelines ### Tone - **Confident** but not arrogant - **Encouraging** but not cheesy - **Clear** and direct - **Minimal** β€” let the content speak ### Examples | Context | Good | Bad | |---------|------|-----| | CTA | "Start Workout" | "Start Your Workout Now!" | | Empty state | "No workouts yet" | "You haven't done any workouts :(" | | Error | "Connection lost" | "Oh no! Something went wrong!" | | Success | "Workout complete" | "AMAZING! You crushed it!!!" | ### Coach Dialogue - Motivational but authentic - Form cues during exercises - Breathing reminders during rest - Encouragement without clichΓ©s --- *Document created: February 18, 2026* *Version: 2.0* *Brand: Apple Fitness+ inspired*