After a rejected login the site redirects back to /login carrying the API's
error message in the query string. That message is Persian, and HTTP header
values must be ASCII, so Kestrel threw InvalidOperationException and the user
got an error page instead of the login form with the reason for the failure.
Encode both the path and the message.
Not noticed before because IIS Express tolerates the non-ASCII Location header;
it surfaces as soon as the site is run on Kestrel.
- Refine #page-hierarchy h2 a style: IranNastaliq, 2.1rem, line-height 2.4,
5px 20px padding, max-width 575px, font-smoothing and legibility hints.
- Keep tooltip dark in both color schemes.
- Style tooltip links with white text and a subtle white hover highlight.
- Match the tooltip arrow to the dark tooltip background.
- Make the tooltip close button separator gold for better visibility.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
- Add explicit 3-column grid for desktop footer
- Switch to a 2+1 responsive layout under 768px
- Keep desktop-only 50px indent on tools list
- Balance the bottom 'about' list by flowing it into two columns on mobile
- Use solid #f3e9d0 for .poem light-mode background (average of 7% papere.jpg overlay)
- Refined dark mode color palette
- 18px border-radius (12px on mobile) for #main/.poem/.sitem
- Golden 1px border and shadow for #main/.poem/.sitem in dark mode
- Remove background-image, background-repeat, background-position,
background-size, background-attachment and background-blend-mode
from body, leaving only background-color
- Remove now-unused CSS vars: --damask-medallion, --damask-ground
and --page-pattern-size (light, dark and mobile override)