diff --git a/app/cookies/page.tsx b/app/cookies/page.tsx index 0c341521..c82bbde7 100644 --- a/app/cookies/page.tsx +++ b/app/cookies/page.tsx @@ -13,6 +13,7 @@ import type { Metadata } from "next"; import Link from "next/link"; import { site } from "@/content"; +import ThemeToggle from "@/components/ThemeToggle"; const lastUpdated = "2 May 2026"; @@ -37,7 +38,7 @@ export default function CookiePolicyPage() { {/* Lightweight header — just a back-link */}
-
+
← Back to Novarix Networks +
@@ -78,7 +80,7 @@ export default function CookiePolicyPage() { What we store

- We use one small browser storage entry. It is first-party, + We use two small browser storage entries. Both are first-party, confined to your browser, and never shared with anyone:

@@ -96,6 +98,21 @@ export default function CookiePolicyPage() { every page. Persists until you clear your browser data.

+ +
+

+ novarix-theme +

+

+ + Preference. + {" "} + Stored in localStorage. Remembers whether you + chose light mode or dark mode so the site uses your preferred + theme on future visits. Persists until you clear your browser + data. +

+
diff --git a/app/globals.css b/app/globals.css index 65b57a42..df08f610 100644 --- a/app/globals.css +++ b/app/globals.css @@ -66,8 +66,7 @@ `@media (prefers-color-scheme: dark)` block. --------------------------------------------------------------------------- */ :root { - color-scheme: light dark; - + color-scheme: light; --bg: var(--color-ink-50); --surface: oklch(1 0 0 / 0.7); --surface-strong: oklch(1 0 0 / 0.92); @@ -85,8 +84,28 @@ --button-hover: var(--color-ink-800); } +:root[data-theme="dark"] { + color-scheme: dark; + --bg: var(--color-ink-950); + --surface: oklch(0.13 0.028 255 / 0.55); + --surface-strong: oklch(0.13 0.028 255 / 0.85); + --text: var(--color-ink-100); + --text-soft: var(--color-ink-400); + --border: oklch(1 0 0 / 0.08); + --border-strong: oklch(1 0 0 / 0.16); + --accent: var(--color-brand-400); + --accent-soft: oklch(0.7 0.14 240 / 0.18); + --ring: oklch(0.7 0.14 240 / 0.5); + --grid: oklch(0.84 0.012 250 / 0.06); + + --button-bg: var(--color-ink-100); + --button-fg: var(--color-ink-950); + --button-hover: var(--color-ink-50); +} + @media (prefers-color-scheme: dark) { - :root { + :root:not([data-theme]) { + color-scheme: dark; --bg: var(--color-ink-950); --surface: oklch(0.13 0.028 255 / 0.55); --surface-strong: oklch(0.13 0.028 255 / 0.85); @@ -218,12 +237,20 @@ display: none; } +:root[data-theme="dark"] .brand-light { + display: none; +} + +:root[data-theme="dark"] .brand-dark { + display: block; +} + @media (prefers-color-scheme: dark) { - .brand-light { + :root:not([data-theme]) .brand-light { display: none; } - .brand-dark { + :root:not([data-theme]) .brand-dark { display: block; } } diff --git a/app/layout.tsx b/app/layout.tsx index a15c36c3..272511de 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -63,6 +63,35 @@ export default function RootLayout({ }: Readonly<{ children: React.ReactNode }>) { return ( + +