diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico new file mode 100644 index 0000000..29a7839 Binary files /dev/null and b/apps/web/public/favicon.ico differ diff --git a/apps/web/public/images/animations/ambient_atom.svg b/apps/web/public/images/animations/ambient_atom.svg new file mode 100644 index 0000000..c5d0173 --- /dev/null +++ b/apps/web/public/images/animations/ambient_atom.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/ambient_atom_light.svg b/apps/web/public/images/animations/ambient_atom_light.svg new file mode 100644 index 0000000..6b8023a --- /dev/null +++ b/apps/web/public/images/animations/ambient_atom_light.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/ambient_leaf.svg b/apps/web/public/images/animations/ambient_leaf.svg new file mode 100644 index 0000000..e07db7d --- /dev/null +++ b/apps/web/public/images/animations/ambient_leaf.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/ambient_leaf_light.svg b/apps/web/public/images/animations/ambient_leaf_light.svg new file mode 100644 index 0000000..e9466fa --- /dev/null +++ b/apps/web/public/images/animations/ambient_leaf_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/ambient_mesh.svg b/apps/web/public/images/animations/ambient_mesh.svg new file mode 100644 index 0000000..db4ed44 --- /dev/null +++ b/apps/web/public/images/animations/ambient_mesh.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/ambient_mesh_light.svg b/apps/web/public/images/animations/ambient_mesh_light.svg new file mode 100644 index 0000000..c165b36 --- /dev/null +++ b/apps/web/public/images/animations/ambient_mesh_light.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/anim1_pulse.svg b/apps/web/public/images/animations/anim1_pulse.svg index 9e07648..f5d747d 100644 --- a/apps/web/public/images/animations/anim1_pulse.svg +++ b/apps/web/public/images/animations/anim1_pulse.svg @@ -1,127 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/animations/anim1_pulse_light.svg b/apps/web/public/images/animations/anim1_pulse_light.svg index cfc4c87..ce760cc 100644 --- a/apps/web/public/images/animations/anim1_pulse_light.svg +++ b/apps/web/public/images/animations/anim1_pulse_light.svg @@ -1,127 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/animations/anim3_matrix.svg b/apps/web/public/images/animations/anim3_matrix.svg index 48aff06..cc6405f 100644 --- a/apps/web/public/images/animations/anim3_matrix.svg +++ b/apps/web/public/images/animations/anim3_matrix.svg @@ -1,205 +1,80 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - 01 - { } - S - 10 - U - 0x - C - fn - H - ; - => - [] + + 01 + { } + S + 10 + U + 0x + C + fn + H + ; + => + [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/animations/anim3_matrix_light.svg b/apps/web/public/images/animations/anim3_matrix_light.svg index 8a3215f..f615ea0 100644 --- a/apps/web/public/images/animations/anim3_matrix_light.svg +++ b/apps/web/public/images/animations/anim3_matrix_light.svg @@ -1,205 +1,80 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 01 - { } - S - 10 - U - 0x - C - fn - H - ; - => - [] + + + + + 01 + { } + S + 10 + U + 0x + C + fn + H + ; + => + [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/animations/anim_type_v4.svg b/apps/web/public/images/animations/anim_type_v4.svg index c17ad50..438a0fe 100644 --- a/apps/web/public/images/animations/anim_type_v4.svg +++ b/apps/web/public/images/animations/anim_type_v4.svg @@ -1,125 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - > - - - - - s - - - - - u - - - - - c - - - - - h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + > + s + u + c + h + + + + + + diff --git a/apps/web/public/images/animations/anim_type_v4_light.svg b/apps/web/public/images/animations/anim_type_v4_light.svg index ce381e6..0b01881 100644 --- a/apps/web/public/images/animations/anim_type_v4_light.svg +++ b/apps/web/public/images/animations/anim_type_v4_light.svg @@ -1,125 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - s - - - - - u - - - - - c - - - - - h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + > + s + u + c + h + + + + + + diff --git a/apps/web/public/images/animations/games_pulse.svg b/apps/web/public/images/animations/games_pulse.svg new file mode 100644 index 0000000..4b1ee0a --- /dev/null +++ b/apps/web/public/images/animations/games_pulse.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/games_pulse_light.svg b/apps/web/public/images/animations/games_pulse_light.svg new file mode 100644 index 0000000..97a9390 --- /dev/null +++ b/apps/web/public/images/animations/games_pulse_light.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/morph.svg b/apps/web/public/images/animations/morph.svg new file mode 100644 index 0000000..bce8068 --- /dev/null +++ b/apps/web/public/images/animations/morph.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/animations/morph_light.svg b/apps/web/public/images/animations/morph_light.svg new file mode 100644 index 0000000..d77c536 --- /dev/null +++ b/apps/web/public/images/animations/morph_light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/images/branding/OG_banner_v2_light.png b/apps/web/public/images/branding/OG_banner_v2_light.png index 2632ead..69f3e78 100644 Binary files a/apps/web/public/images/branding/OG_banner_v2_light.png and b/apps/web/public/images/branding/OG_banner_v2_light.png differ diff --git a/apps/web/public/images/branding/clean_dark.svg b/apps/web/public/images/branding/clean_dark.svg index 08e567d..5af4dd8 100644 --- a/apps/web/public/images/branding/clean_dark.svg +++ b/apps/web/public/images/branding/clean_dark.svg @@ -1,38 +1,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/branding/clean_dark_w_text.svg b/apps/web/public/images/branding/clean_dark_w_text.svg index 893bff0..95aa79d 100644 --- a/apps/web/public/images/branding/clean_dark_w_text.svg +++ b/apps/web/public/images/branding/clean_dark_w_text.svg @@ -1,131 +1,10 @@ - - - - - - - - - - - - - - - - SuchSoftware - - - - - - - - - + + + + + + + + Such + Software diff --git a/apps/web/public/images/branding/clean_light.svg b/apps/web/public/images/branding/clean_light.svg index 2f490bc..bc8d912 100644 --- a/apps/web/public/images/branding/clean_light.svg +++ b/apps/web/public/images/branding/clean_light.svg @@ -1,28 +1,8 @@ - - - - - - - - - - - - - - - - + + + + + diff --git a/apps/web/public/images/branding/clean_light_w_text.svg b/apps/web/public/images/branding/clean_light_w_text.svg index 68e12ae..607cf9f 100644 --- a/apps/web/public/images/branding/clean_light_w_text.svg +++ b/apps/web/public/images/branding/clean_light_w_text.svg @@ -1,117 +1,10 @@ - - - - - - - SuchSoftware - - - - - - - - - - - + + + + + + + + Such + Software diff --git a/apps/web/public/images/branding/favicon_dark.png b/apps/web/public/images/branding/favicon_dark.png index f20f2d2..6eccfcb 100644 Binary files a/apps/web/public/images/branding/favicon_dark.png and b/apps/web/public/images/branding/favicon_dark.png differ diff --git a/apps/web/public/images/branding/favicon_dark.svg b/apps/web/public/images/branding/favicon_dark.svg index 9b23a18..bcf2803 100644 --- a/apps/web/public/images/branding/favicon_dark.svg +++ b/apps/web/public/images/branding/favicon_dark.svg @@ -1,106 +1,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/apps/web/public/images/branding/favicon_dots_dark.svg b/apps/web/public/images/branding/favicon_dots_dark.svg new file mode 100644 index 0000000..346b077 --- /dev/null +++ b/apps/web/public/images/branding/favicon_dots_dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/web/public/images/branding/favicon_dots_light.svg b/apps/web/public/images/branding/favicon_dots_light.svg new file mode 100644 index 0000000..99dfdd4 --- /dev/null +++ b/apps/web/public/images/branding/favicon_dots_light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/web/public/images/branding/favicon_light.png b/apps/web/public/images/branding/favicon_light.png index 01586e5..8ee6f89 100644 Binary files a/apps/web/public/images/branding/favicon_light.png and b/apps/web/public/images/branding/favicon_light.png differ diff --git a/apps/web/public/images/branding/favicon_light.svg b/apps/web/public/images/branding/favicon_light.svg index a5fe241..d6e62f7 100644 --- a/apps/web/public/images/branding/favicon_light.svg +++ b/apps/web/public/images/branding/favicon_light.svg @@ -1,80 +1,9 @@ - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/apps/web/public/images/branding/favicon_live_dark.svg b/apps/web/public/images/branding/favicon_live_dark.svg new file mode 100644 index 0000000..7a89cd3 --- /dev/null +++ b/apps/web/public/images/branding/favicon_live_dark.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/apps/web/public/images/branding/favicon_live_light.svg b/apps/web/public/images/branding/favicon_live_light.svg new file mode 100644 index 0000000..b135463 --- /dev/null +++ b/apps/web/public/images/branding/favicon_live_light.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/apps/web/public/images/branding/icon-192.png b/apps/web/public/images/branding/icon-192.png new file mode 100644 index 0000000..8ee6f89 Binary files /dev/null and b/apps/web/public/images/branding/icon-192.png differ diff --git a/apps/web/public/images/branding/icon-512.png b/apps/web/public/images/branding/icon-512.png new file mode 100644 index 0000000..4fc03b4 Binary files /dev/null and b/apps/web/public/images/branding/icon-512.png differ diff --git a/apps/web/public/images/branding/maskable-512.png b/apps/web/public/images/branding/maskable-512.png new file mode 100644 index 0000000..f85a8bd Binary files /dev/null and b/apps/web/public/images/branding/maskable-512.png differ diff --git a/apps/web/public/images/branding/splash-such.svg b/apps/web/public/images/branding/splash-such.svg index 23e2126..b66c0c0 100644 --- a/apps/web/public/images/branding/splash-such.svg +++ b/apps/web/public/images/branding/splash-such.svg @@ -1,18 +1 @@ - - - - - - - - - - - - - - - - - - + diff --git a/apps/web/public/manifest.json b/apps/web/public/manifest.json index 420903d..4b1fd43 100644 --- a/apps/web/public/manifest.json +++ b/apps/web/public/manifest.json @@ -1,11 +1,11 @@ { "name": "Such Software", "short_name": "Such Software", - "description": "Next-generation web applications engineered for scale, compliance, and performance.", + "description": "A Kennett Square, PA software studio building custom online stores, web apps, mobile games, and Monero & crypto tools.", "start_url": "/", "display": "standalone", - "background_color": "#000000", - "theme_color": "#000000", + "background_color": "#0a0a0a", + "theme_color": "#0a0a0a", "icons": [ { "src": "/images/branding/favicon_light.svg", @@ -13,9 +13,20 @@ "purpose": "any" }, { - "src": "/images/branding/favicon_light.png", + "src": "/images/branding/icon-192.png", "sizes": "192x192", "type": "image/png" + }, + { + "src": "/images/branding/icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/images/branding/maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" } ] } diff --git a/apps/web/src/app/apps/page.tsx b/apps/web/src/app/apps/page.tsx index d4ff8b1..9bc2848 100644 --- a/apps/web/src/app/apps/page.tsx +++ b/apps/web/src/app/apps/page.tsx @@ -115,18 +115,8 @@ export default function LinksPage() {
- - + +
diff --git a/apps/web/src/app/blog/page.tsx b/apps/web/src/app/blog/page.tsx index c2114e4..30dbfb8 100644 --- a/apps/web/src/app/blog/page.tsx +++ b/apps/web/src/app/blog/page.tsx @@ -30,18 +30,8 @@ export default function BlogPage() { {/* Animated accent */}
- - + +
{posts.length === 0 ? ( diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index ecfcd96..81841b6 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -286,14 +286,29 @@ /* Hero title: an animated gradient sheen. LCP-safe — the text paints immediately with the gradient; only the gradient POSITION animates, which never delays the largest paint. The global reduced-motion rule freezes it to the base gradient. */ +/* The brand's four-colour system (S green, U magenta, C blue, H teal), one per glyph. + Light theme uses the light palette; .dark swaps in the dark palette, which is the + same hues lifted for contrast on near-black -- from packs/such-software/pack.json. */ .hero-title { - background-image: linear-gradient(110deg, #22d3ee 0%, #3b82f6 30%, #7dd3fc 50%, #3b82f6 70%, #22d3ee 100%); + background-image: linear-gradient(110deg, #1a5c38 0%, #b83670 30%, #176a92 55%, #12857e 80%, #1a5c38 100%); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: hero-sheen 9s ease-in-out infinite; } +.dark .hero-title { + background-image: linear-gradient(110deg, #35925c 0%, #e8689e 30%, #4aade0 55%, #3ad4c6 80%, #35925c 100%); +} +.brand-gradient-text { + background-image: linear-gradient(90deg, #1a5c38, #b83670, #176a92, #12857e); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} +.dark .brand-gradient-text { + background-image: linear-gradient(90deg, #35925c, #e8689e, #4aade0, #3ad4c6); +} @keyframes hero-sheen { 0%, 100% { background-position: 0% center; } 50% { background-position: 100% center; } diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index 2645aca..d06f0de 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -58,8 +58,8 @@ const structuredData = { "@type": "Organization", name: "Such Software LLC", url: "https://such.software", - logo: "https://such.software/images/branding/clean_dark_w_text.svg", - description: "E-commerce infrastructure, custom app development, and accessible web applications. Engineered for scale, compliance, and performance.", + logo: "https://such.software/images/branding/icon-512.png", + description: "A Kennett Square, PA software studio building custom online stores, web apps, mobile games, and Monero & crypto tools.", address: { "@type": "PostalAddress", streetAddress: "110 E State St, Suite 300", diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index bebe568..64dbe6c 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -21,23 +21,23 @@ export default function Home() { {/* Decorative aura behind the title (aria-hidden, LCP-safe, motion-safe). */}