{% extends "base.html" %} {% block title %}Goals{% endblock %} {% block page_title %}Goals & Savings{% endblock %} {% block extra_css %} .goal-card { border-radius: 12px; border: 1px solid var(--border); background: var(--card-bg); padding: 18px 20px; } .goal-progress { height: 10px; background: #f1f5f9; border-radius: 5px; overflow: hidden; margin: 10px 0 6px; } .goal-progress-fill { height: 100%; border-radius: 5px; transition: width .6s ease; } {% endblock %} {% block topbar_actions %} New Goal {% endblock %} {% block content %} {% if emergency and emergency.avg_monthly_expense > 0 %}
Emergency Fund
Based on avg monthly expense of {{ emergency.avg_monthly_expense | currency }}
{{ emergency.months_covered }}mo
3-Month Target: {{ emergency.target_3mo | currency }}
{{ emergency.pct_3mo }}%
6-Month Target: {{ emergency.target_6mo | currency }}
{{ emergency.pct_6mo }}%
Liquid assets: {{ emergency.liquid_assets | currency }}
{% endif %} {% if active_goals %}
{% for goal in active_goals %}
{{ goal.name }}
{% if goal.target_date %}
By {{ goal.target_date.strftime('%b %d, %Y') }}
{% endif %}
{{ goal.current_amount | currency }} / {{ goal.target_amount | currency }}
{{ goal.progress_percent }}% complete {% if projections[goal.id] %} ~{{ projections[goal.id].strftime('%b %Y') }} {% endif %}
{% if goal.description %}
{{ goal.description | truncate(80) }}
{% endif %} Add Contribution
{% endfor %}
{% else %}
No active goals

Set savings goals and track your progress.

Create First Goal
{% endif %} {% if completed_goals %}
Completed Goals 🎉
{% for goal in completed_goals %} {% endfor %}
GoalTargetCompleted
{{ goal.name }}
{{ goal.target_amount | currency }} {{ goal.completed_at.strftime('%b %d, %Y') if goal.completed_at else '—' }}
{% endif %} {% endblock %}