Destiny Fitness
Transformation Dashboard
/* Styling for the badge that appears for Champion/Legend */ .elite-badge { background: linear-gradient(135deg, var(--gold-light), var(--gold-deep)); color: #000; padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: 800; text-transform: uppercase; margin-bottom: 4px; display: inline-block; box-shadow: 0 0 10px rgba(212,163,95,0.4); } .xp-tier.elite { color: var(--gold-deep); text-shadow: 0 0 8px rgba(212,163,95,0.3); }
Beginner 0 XP
Beginner 0 XP
/* LEVEL BANNER */ .level-banner{display:none;position:fixed;inset:0;background:rgba(61,10,30,0.88);z-index:999;align-items:center;justify-content:center} .level-banner.show{display:flex} .level-banner-card{background:linear-gradient(135deg,#fff5f7,#fff);border-radius:20px;padding:32px 28px;text-align:center;max-width:300px;width:90%;box-shadow:0 20px 60px rgba(201,88,106,0.3);animation:levelUpIn 0.45s cubic-bezier(0.34,1.56,0.64,1) forwards} @keyframes levelUpIn{0%{transform:scale(0.7) translateY(20px);opacity:0}60%{transform:scale(1.05)}100%{transform:scale(1) translateY(0);opacity:1}} .level-banner-icon{font-size:52px;margin-bottom:12px;display:block} .level-banner-title{font-family:'Cormorant Garamond',serif;font-size:30px;color:var(--pink-deep);margin-bottom:4px} .level-banner-sub{font-size:13px;color:var(--text-2);margin-bottom:8px} .level-banner-tier{display:inline-block;padding:4px 12px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:1px;background:linear-gradient(135deg,var(--gold-light),var(--gold-classic));color:#7a4a10;margin-bottom:16px} .level-banner-btn{background:linear-gradient(135deg,var(--pink-mid),var(--pink-deep));color:#fff;border:none;border-radius:10px;padding:12px 28px;font-size:13px;font-weight:700;cursor:pointer;font-family:'Montserrat',sans-serif;width:100%} /* PAGES */ .page{display:none;padding:16px;padding-bottom:80px} .page.active{display:block} /* CARDS */ .card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:12px;overflow:hidden} .card.champion-glow{animation:championGlow 3s ease-in-out infinite} @keyframes championGlow{0%,100%{box-shadow:0 0 8px rgba(212,163,95,0.3)}50%{box-shadow:0 0 22px rgba(212,163,95,0.7),0 0 40px rgba(212,163,95,0.2)}} .card-header{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none} .card-title{font-size:13px;font-weight:600;color:var(--text);letter-spacing:0.2px} .card-toggle{font-size:18px;color:var(--text-3);transition:transform 0.25s} .card-toggle.open{transform:rotate(180deg)} .card-body{padding:0 16px 16px;display:none} .card-body.open{display:block;animation:fadeSlideDown 0.2s ease-out} @keyframes fadeSlideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}} .card-static{padding:16px} /* METRIC GRID */ .metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px} .metric-card{background:var(--card-bg);border-radius:var(--radius-sm);padding:14px;border:1px solid var(--border);position:relative;overflow:hidden;transition:border-color 0.3s} .metric-card.goal-hit{border-color:var(--gold-classic);animation:goldPulse 0.8s ease} @keyframes goldPulse{0%{box-shadow:0 0 0 0 rgba(212,163,95,0.6)}50%{box-shadow:0 0 0 10px rgba(212,163,95,0)}100%{box-shadow:0 0 0 0 rgba(212,163,95,0)}} .metric-label{font-size:10px;color:var(--text-3);font-weight:500;letter-spacing:0.5px;text-transform:uppercase;margin-bottom:4px} .metric-value{font-size:22px;font-weight:600;color:var(--text);line-height:1} .metric-unit{font-size:12px;color:var(--text-3);font-weight:400} .metric-delta{font-size:10px;margin-top:4px} .metric-bar{margin-top:6px;height:3px;background:#f0e8ea;border-radius:2px;overflow:hidden} .metric-bar-fill{height:100%;border-radius:2px;transition:width 0.5s ease} /* COMPACT CALENDARS & LAYOUT FIXES */ .streak-section { display: flex; flex-direction: column; gap: 12px; max-width: 320px; } .heatmap-grid, .photo-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; max-width: 300px; } .hd, .photo-day { aspect-ratio: 1; border-radius: 4px; background: #f0e8ea; position: relative; font-size: 9px; display: flex; align-items: center; justify-content: center; cursor: pointer; } .date-num { position: absolute; top: 2px; right: 2px; font-size: 7px; opacity: 0.6; } .hd.done { background: linear-gradient(135deg, var(--pink-mid), var(--pink-deep)); color: white; } /* CONSTRAINED CONTAINERS */ .chain-days { display: flex; gap: 4px; flex-wrap: wrap; width: fit-content; border: 1px solid var(--border); padding: 8px; border-radius: 12px; } /* FORMS & S */ .field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; } .field label { font-size: 11px; color: var(--text-2); font-weight: 500; } .field input { border: 1px solid var(--border); border-radius: 8px; padding: 10px; width: 100%; } .row-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; } .btn { border: none; border-radius: 8px; padding: 10px 18px; font-weight: 600; cursor: pointer; transition: 0.2s; } .btn-primary { background: linear-gradient(135deg, var(--pink-mid), var(--pink-deep)); color: #fff; width: 100%; } .btn-ghost { background: transparent; border: 1px solid var(--border); color: var(--text-2); } /* QUICK STAT CARDS */ .stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 15px; } .stat-card { background: #fff; padding: 12px; border-radius: 12px; border: 1px solid var(--border); text-align: center; } .stat-val { font-size: 18px; font-weight: 700; color: var(--pink-deep); } /* CHART PLACEHOLDERS */ .chart-container { background: #fff; padding: 10px; border-radius: 12px; margin-bottom: 10px; height: 200px; border: 1px solid var(--border); } /* PRESETS */ .preset-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px} .preset-chip{padding:5px 10px;border-radius:20px;border:1px solid var(--border);background:#fdf5f6;font-size:10px;font-weight:500;color:var(--text-2);cursor:pointer;transition:all 0.15s;font-family:'Montserrat',sans-serif} .preset-chip:hover{border-color:var(--pink-mid);color:var(--pink-deep);background:#fff5f6} .preset-label{font-size:10px;color:var(--text-3);font-weight:700;letter-spacing:0.5px;text-transform:uppercase;margin-bottom:6px} /* AUTOCOMPLETE */ .autocomplete-wrap{position:relative} .autocomplete-list{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 6px 20px rgba(201,88,106,0.12);z-index:50;overflow:hidden;margin-top:2px;display:none} .autocomplete-list.show{display:block} .autocomplete-item{padding:10px 12px;font-size:13px;color:var(--text);cursor:pointer;transition:background 0.1s} .autocomplete-item:hover{background:#fdf5f6} /* LOG ENTRIES */ .log-list{display:flex;flex-direction:column;gap:6px;margin-top:8px} .log-item{background:#fdf5f6;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px} .log-item-info{flex:1;min-width:0} .log-item-title{font-size:13px;font-weight:500;color:var(--text)} .log-item-sub{font-size:11px;color:var(--text-3);margin-top:2px} .log-item-actions{display:flex;gap:4px;flex-shrink:0} .icon-btn{background:none;border:none;cursor:pointer;font-size:14px;padding:4px;border-radius:4px;transition:background 0.15s} .icon-btn:hover{background:rgba(0,0,0,0.06)} /* EDIT INLINE */ .edit-inline{background:#fff8f9;border:1px solid var(--pink-light);border-radius:var(--radius-sm);padding:10px;margin-top:6px;display:none} .edit-inline.open{display:block;animation:fadeSlideDown 0.2s ease-out} /* MACRO BARS */ .macro-row{display:flex;align-items:center;gap:8px;margin-bottom:8px} .macro-label{font-size:11px;color:var(--text-2);width:52px;flex-shrink:0} .macro-bar-track{flex:1;height:7px;background:#f0e8ea;border-radius:4px;overflow:hidden} .macro-bar-fill{height:100%;border-radius:4px;transition:width 0.5s ease} .macro-pct{font-size:10px;color:var(--text-3);width:34px;text-align:right} /* GOALS */ .goals-display{display:grid;grid-template-columns:1fr 1fr;gap:8px} .goal-chip{background:#fdf5f6;border:1px solid var(--border);border-radius:6px;padding:8px 10px} .goal-chip-label{font-size:9px;color:var(--text-3);text-transform:uppercase;letter-spacing:0.5px} .goal-chip-val{font-size:16px;font-weight:600;color:var(--pink-deep)} .goal-chip-unit{font-size:10px;color:var(--text-3)} /* PROGRESS PHOTOS */ .photo-cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} .photo-cal-nav{background:none;border:1px solid var(--border);border-radius:6px;padding:4px 10px;cursor:pointer;font-size:12px;color:var(--text-2);font-family:'Montserrat',sans-serif} .photo-cal-title{font-size:13px;font-weight:600;color:var(--text)} .photo-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:10px} .photo-day{aspect-ratio:1;border-radius:4px;border:1px solid var(--border);background:#fdf5f6;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--text-3);cursor:pointer;transition:all 0.15s;position:relative} .photo-day.has-photo{background:linear-gradient(135deg,var(--pink-light),var(--pink-mid));color:#fff;font-weight:600;border-color:transparent} .photo-day.selected{border-color:var(--pink-deep);box-shadow:0 0 0 2px rgba(201,88,106,0.25)} .photo-day.today-marker{border-color:var(--gold-classic)} .photo-slots{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px} .photo-slot{border:1.5px dashed var(--border);border-radius:var(--radius-sm);aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden;background:#fdf5f6;transition:all 0.2s} .photo-slot:hover{border-color:var(--pink-mid)} .photo-slot img{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0} .photo-slot-label{font-size:10px;color:var(--text-3);font-weight:500;position:relative;z-index:1} .photo-slot .remove-photo{position:absolute;top:4px;right:4px;background:rgba(201,88,106,0.9);color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:11px;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:2;font-family:'Montserrat',sans-serif} .photo-slot:hover .remove-photo{display:flex} input[type="file"]{display:none} /* ACHIEVEMENTS */ .badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px} .badge{background:var(--card-bg);border-radius:var(--radius-sm);padding:14px 10px;text-align:center;border:1px solid var(--border);position:relative;transition:all 0.3s} .badge.locked{opacity:0.42;filter:grayscale(0.6)} .badge.unlocked{border-color:rgba(212,163,95,0.5);box-shadow:0 2px 12px rgba(212,163,95,0.12)} .badge.unlocked::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--gold-classic),var(--gold-deep));border-radius:0 0 var(--radius-sm) var(--radius-sm)} .badge-icon{font-size:28px;margin-bottom:6px} .badge-name{font-size:10px;font-weight:600;color:var(--text);letter-spacing:0.2px} .badge-desc{font-size:9px;color:var(--text-3);margin-top:2px} .badge-new{position:absolute;top:5px;right:5px;background:var(--pink-deep);color:#fff;font-size:8px;font-weight:700;padding:2px 5px;border-radius:4px;letter-spacing:0.3px} /* TIER GUIDE */ .tier-list{display:flex;flex-direction:column;gap:6px} .tier-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;transition:background 0.2s} .tier-row.current{background:#fdf5f6;border:1px solid var(--border)} .tier-icon{font-size:18px;width:28px;text-align:center} .tier-info{flex:1} .tier-name{font-size:12px;font-weight:600;color:var(--text)} .tier-range{font-size:10px;color:var(--text-3)} .tier-xp{font-size:10px;color:var(--text-2);font-weight:500} .you-badge{font-size:9px;font-weight:700;background:var(--pink-deep);color:#fff;padding:1px 6px;border-radius:4px;margin-left:4px;letter-spacing:0.3px} /* HISTORY NAV */ .history-date-nav{display:flex;align-items:center;gap:8px;margin-bottom:10px} .history-date-btn{background:none;border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:11px;color:var(--text-2);cursor:pointer;font-family:'Montserrat',sans-serif} .history-date-select{flex:1} /* SECTION LABEL */ .section-label{font-size:10px;font-weight:700;color:var(--text-3);letter-spacing:1px;text-transform:uppercase;margin:14px 0 8px} /* EMPTY STATE */ .empty-state{text-align:center;padding:24px 16px;color:var(--text-3);font-size:12px} .empty-state .es-icon{font-size:32px;margin-bottom:8px;opacity:0.5} /* TOAST */ .toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(16px);background:linear-gradient(135deg,var(--pink-mid),var(--pink-deep));color:#fff;padding:10px 20px;border-radius:20px;font-size:12px;font-weight:600;opacity:0;pointer-events:none;z-index:998;transition:all 0.3s;white-space:nowrap;box-shadow:0 4px 20px rgba(201,88,106,0.35)} .toast.show{opacity:1;transform:translateX(-50%) translateY(0)} /* STREAK BONUS BAR */ .streak-bonus-row{margin-top:10px} .streak-bonus-label{display:flex;justify-content:space-between;font-size:10px;color:var(--text-3);margin-bottom:4px} .streak-bonus-bar{height:5px;background:#f0e8ea;border-radius:3px;overflow:hidden} .streak-bonus-fill{height:100%;border-radius:3px;transition:width 0.5s ease} /* MOTIVATION CARD */ .motivation-card{border-radius:var(--radius);padding:16px;text-align:center;margin-bottom:12px;border:1px solid var(--border)} .motivation-card.gold{background:linear-gradient(135deg,#fffbf0,#fff8e8);border-color:rgba(212,163,95,0.35)} .motivation-card.pink{background:linear-gradient(135deg,#fff5f7,#fff);border-color:var(--border)} /* DIVIDER */ hr{border:none;border-top:1px solid var(--border);margin:12px 0} @media(max-width:360px){.metric-grid{grid-template-columns:1fr 1fr}.row-3{grid-template-columns:1fr 1fr}}
🏆
Level Up!
You've reached a new tier!
Total Volume
0 lbs
Consistency
0%

Weight Trend

Muscle Focus

Log Workout

🏋️ Log Workout Session
📋 Workout History
Current Weight
Body Fat
Chest
Waist
Hips
📏 Log Measurements

🏆 Personal Bests

Progress Photos

📅 Photo Calendar

Workout History

Calories
0
Protein
0 g
Carbs
0 g
Fat
0 g
🎯 Daily Goals
🍽 Log Meal
📋 Meal History
Current streak
0 days
Best streak
0 days
This month
0 workouts
All time
0 days
0 days Streak
S
M
T
W
T
F
S
Next 7-day bonus0/7
🌱
Rookie
Level 1
0 XP
total earned
Earn XP
💪 Log a workout+50 XP
🥗 Hit all macro goals+30 XP
✅ Daily check-in+10 XP
🔥 7-day streak bonus+150 XP
0/12