Style suff frontend mobile-first

Dark theme matching GOA palette, standalone microsite (no nav).
- Landing/login: GOA subhead + big "Suff" wordmark, large tap targets
- me page: 2-col 4:3 drink grid, bordered total box, day-grouped
  history with zebra rows, emoji empty-state
- Booking confirmation toast (amber, 5s, then 800ms CSS collapse)
- Touch feedback via :active scale, SVG beer favicon
- no_pin.html link-buttons styled
This commit is contained in:
2026-05-14 12:41:45 +02:00
parent 47d46e8e6f
commit 2d5ec8fc6d
8 changed files with 480 additions and 46 deletions
+9 -1
View File
@@ -166,12 +166,20 @@ def pin_view(request):
def me_view(request):
phase = _require_open(request)
drinks = Drink.objects.order_by("name") if phase == "booking" else Drink.objects.none()
booked_drink = None
booked_id = request.GET.get("booked")
if booked_id:
try:
booked_drink = Drink.objects.get(pk=int(booked_id))
except (Drink.DoesNotExist, TypeError, ValueError):
booked_drink = None
context = _tab_context(request.user)
context.update(
{
"phase": phase,
"drinks": drinks,
"current_day": _current_festival_day(),
"booked_drink": booked_drink,
}
)
return render(request, "suff/me.html", context)
@@ -197,7 +205,7 @@ def book_view(request):
day=_current_festival_day(),
for_free=False,
)
return HttpResponseRedirect(reverse("suff:me"))
return HttpResponseRedirect(f"{reverse('suff:me')}?booked={drink.id}")
@require_http_methods(["POST"])