appview: deduplicate newsletter widget, single-render timeline grid master
the newsletter widget was being rendered twice on the timeline (once for mobile, once for desktop) via hidden/visible wrapper divs. both copies shared the same element ids (newsletter-widget, newsletter-widget-msg), so desktop submissions swapped into the hidden mobile copy and appeared to do nothing. collapse the two layouts into one responsive grid with tailwind order/col-start utilities so the widget lives in the dom exactly once, and drop the mutationobserver wiring in favour of a small delegated click listener that also handles gfi banner widening on dismiss. consolidate the three signup form variants (banner, widget, home hero) into a single newsletterForm fragment that takes a dict(Id, Variant). each instance gets a unique response-span id (newsletter-msg-<Id>) so multiple forms can coexist on a page without id collisions. move the handler's inline html/tailwind response strings into a newsletterResponse template rendered through pages, so the response id round-trips with the form's hx-target via an hx-vals target field. drop the stray blank line in base.html. Signed-off-by: eti <eti@eti.tf>