From 1cf17f73010a4292f38ed5267d1bb081f0cad421 Mon Sep 17 00:00:00 2001 From: 4gray <4gray@users.noreply.github.com> Date: Sat, 5 Sep 2026 12:11:56 +0200 Subject: [PATCH] style(website): solid hairlines, Bricolage Grotesque display face, drop TV effects (#1539) * style(website): solid hairlines, Bricolage Grotesque display face, drop TV effects First of three landing redesign PRs. This one only touches tokens and surface treatment so every page (home, blog, /features, /compare, /download) benefits without any structural change: - Replace every dashed border with a solid hairline; `.card-dotted` becomes `.card-panel` (bg step + hairline, lighter hairline on hover) and the section divider is solid `surface-800`. - Swap the display face from Playfair Display to Bricolage Grotesque (DM Sans body and IBM Plex Mono unchanged). The italic accent word that every heading repeated is gone; only page-level h1s keep the accent, and as colour rather than italic. - Remove the CRT/TV effects: the `.btn-tv` block and its nine keyframes, the scanline overlay on the hero screenshot, the CRT hover overlay and teal glow shadows on feature cards, the pulsing mascot, and the unused scan/tv-* Tailwind animations. - The hero download button and the header Download link are now solid accent buttons; the self-host link is a plain text link. - Blog tag chips use neutral surface borders so teal stays reserved for actions. Co-Authored-By: Claude Fable 5.1 * style(website): finish the dashed sweep in prose and package rows The blanket `border-dashed ` removal ate the utility but not the variant prefix in the blog prose classes, leaving `prose-pre:prose-pre:...` and `prose-hr:prose-hr:...`; and the Linux package rows still used `divide-dashed`. Co-Authored-By: Claude Fable 5.1 --------- Co-authored-by: Claude Fable 5.1 --- apps/website/src/components/BaseHead.astro | 4 +- .../website/src/components/BlogPostCard.astro | 4 +- apps/website/src/components/DownloadCTA.astro | 6 +- apps/website/src/components/FeatureGrid.astro | 19 +- .../src/components/FeaturedBlogPost.astro | 4 +- apps/website/src/components/Footer.astro | 4 +- .../src/components/GiscusComments.astro | 2 +- apps/website/src/components/Header.astro | 6 +- apps/website/src/components/Hero.astro | 51 +-- .../src/components/ScreenshotShowcase.astro | 6 +- .../src/components/SupportSection.astro | 8 +- apps/website/src/components/blog/Alert.astro | 2 +- .../src/components/blog/BlogImageSlider.astro | 2 +- .../src/components/blog/ChangeTable.astro | 6 +- .../src/components/blog/CopyCommand.astro | 4 +- .../src/components/blog/FaqAccordion.astro | 4 +- .../src/components/blog/IconFeatureGrid.astro | 2 +- .../src/components/blog/ImageGallery.astro | 2 +- .../src/components/blog/LinkCards.astro | 2 +- .../src/components/blog/PostButton.astro | 2 +- .../src/components/blog/ReleaseMeta.astro | 2 +- .../website/src/components/blog/Spoiler.astro | 4 +- .../src/components/blog/StatusPill.astro | 2 +- .../src/components/blog/StepRail.astro | 4 +- .../src/components/blog/TerminalBlock.astro | 4 +- .../src/components/compare/CompareHero.astro | 4 +- .../components/compare/CompareSwitcher.astro | 4 +- .../components/compare/ComparisonTable.astro | 6 +- .../components/download/DownloadButton.astro | 2 +- .../components/download/DownloadHero.astro | 6 +- .../components/download/DownloadSection.astro | 2 +- .../src/components/download/FeatureList.astro | 2 +- .../download/OfficialSourcesNote.astro | 2 +- .../src/components/download/PackageList.astro | 6 +- .../download/PlatformSwitcher.astro | 6 +- .../src/components/download/SpecList.astro | 2 +- .../src/components/feature/FeatureHero.astro | 8 +- .../components/feature/FeatureSwitcher.astro | 4 +- apps/website/src/layouts/BlogPost.astro | 6 +- apps/website/src/pages/compare/index.astro | 8 +- apps/website/src/pages/download/index.astro | 6 +- apps/website/src/pages/download/windows.astro | 2 +- apps/website/src/pages/features/epg.astro | 2 +- apps/website/src/pages/features/index.astro | 10 +- .../features/stalker-portal-player.astro | 2 +- .../pages/features/xtream-codes-player.astro | 2 +- apps/website/src/pages/index.astro | 2 +- apps/website/src/styles/global.css | 370 +----------------- apps/website/tailwind.config.mjs | 38 +- 49 files changed, 123 insertions(+), 535 deletions(-) diff --git a/apps/website/src/components/BaseHead.astro b/apps/website/src/components/BaseHead.astro index cfda85563..8a963e23b 100644 --- a/apps/website/src/components/BaseHead.astro +++ b/apps/website/src/components/BaseHead.astro @@ -48,11 +48,11 @@ const schemaPayload = jsonLd {keywords.length > 0 && } - + diff --git a/apps/website/src/components/BlogPostCard.astro b/apps/website/src/components/BlogPostCard.astro index ea918eb56..2731fcc55 100644 --- a/apps/website/src/components/BlogPostCard.astro +++ b/apps/website/src/components/BlogPostCard.astro @@ -19,7 +19,7 @@ const formattedDate = pubDate.toLocaleDateString('en-US', { {heroImage && (
@@ -40,7 +40,7 @@ const formattedDate = pubDate.toLocaleDateString('en-US', { <> · {tags.map((tag) => ( - + {tag} ))} diff --git a/apps/website/src/components/DownloadCTA.astro b/apps/website/src/components/DownloadCTA.astro index 40b8c8b51..f1cced931 100644 --- a/apps/website/src/components/DownloadCTA.astro +++ b/apps/website/src/components/DownloadCTA.astro @@ -28,7 +28,7 @@ const packageManagers = [ Get started

- Get IPTVnator + Get IPTVnator

Download for your platform or use it directly in the browser. @@ -41,7 +41,7 @@ const packageManagers = [ platforms.map((platform) => ( @@ -59,7 +59,7 @@ const packageManagers = [

{ packageManagers.map((pm) => ( -
+
{pm.label} diff --git a/apps/website/src/components/FeatureGrid.astro b/apps/website/src/components/FeatureGrid.astro index 270bf2703..05a78c9e4 100644 --- a/apps/website/src/components/FeatureGrid.astro +++ b/apps/website/src/components/FeatureGrid.astro @@ -84,7 +84,7 @@ const carouselFeatures: FeatureCard[] = [ Features

- Everything you need + Everything you need

A full-featured IPTV player packed with the tools for the best viewing experience. @@ -95,7 +95,7 @@ const carouselFeatures: FeatureCard[] = [

{ heroFeatures.map((feature, i) => ( - +
@@ -106,9 +106,6 @@ const carouselFeatures: FeatureCard[] = [
- -
-
@@ -148,10 +145,10 @@ const carouselFeatures: FeatureCard[] = [ { carouselFeatures.map((feature, i) => ( - +
-
- +
+
@@ -167,10 +164,10 @@ const carouselFeatures: FeatureCard[] = [ { carouselFeatures.map((feature, i) => ( -