2nd release that day

The calendar was a single month grid with a list underneath. It now has a proper working surface: three views, a filter that doubles as the legend, a date picker for jumping around, and a details panel — with every event readable at a glance rather than reduced to a coloured dot.
Three ways to look at the same month
- Month, Week and Agenda. Month is the shape of your commitments; Week gives each day a full column so titles fit; Agenda is the flat "what's coming" list, grouped by day with today marked.
- Agenda shows everything in full — title, type and current status on every row, with empty days skipped rather than padded out.
- Weekends can be hidden in Month and Week, for anyone whose work doesn't run to Saturday.

Filter, jump, and read the detail
- A sidebar filter replaces the legend. Deliverables, reviews and scheduled posts each show a count for the period you're looking at, and can be switched off to cut the view down. One control instead of a legend that explains colours plus a separate filter that hides them.
- A mini calendar for jumping to any month or day, with a marker under every date that carries work — so you can see where the busy weeks are without leaving the month you're in.
- Click any event for the detail panel : what it is, the exact date, its status, whether it came from a campaign deliverable or a marketplace deal, and a button straight through to it.
- Click a day to list everything on it underneath the grid — which is also where "+2 more" now takes you, instead of nowhere.
Readable on a laptop and a phone
- Every event says what it is. Each carries an icon and a label, not just a colour, so the type survives a screenshot, a colour-blind reader, and a small screen.
- On phones the month grid shows markers rather than clipped titles — a seven-column grid can't fit a name at that width, and one-letter titles told you nothing. Tap a day to read it in full.
- Full dark mode , matching the rest of the dashboard.
Sturdier under bad input
- Fifteen campaign and planner addresses used to fail with a server error when handed a malformed link — including the main campaign page. They now return a clean "not found" instead. You'd only have hit this from a truncated or hand-edited URL, but it should never have been an error page.

