Privacy & cookies
This is a personal portfolio. It collects as little as possible, sets no advertising or third-party tracking cookies, and asks for consent before storing the one cookie on your device that is not strictly necessary.
Cookies
| Cookie | Purpose | Category |
|---|---|---|
| visitor_id | An anonymous, random per-browser key used to keep feature rollouts consistent for you and to let the backend rate-limit fairly. It identifies a browser, not a person. | Functional — only set after you accept. |
| cookie_consent | Remembers whether you accepted or declined the functional cookie, so you are not asked again. | Strictly necessary. |
| Auth session | Keeps you signed in if you log in (encrypted session, set by Auth0). Only present for signed-in visitors. | Strictly necessary. |
Analytics
Page-performance data (Core Web Vitals) is collected with Vercel Speed Insights and a small first-party beacon. Both are cookieless, store nothing on your device, and carry no identifier — just anonymous timing numbers per page. There is no Google Analytics, no advertising pixels, and no cross-site tracking.
Data kept in your browser
Some features remember your preferences in your browser's local storage — your light/dark theme, weather-effect settings, and various per-feature state (game scores, audio settings, and so on). This never leaves your device and is not sent anywhere.
Changing your choice
Declining leaves the site fully working — feature rollouts just fall back to a default and rate-limiting uses your IP. To change your mind, clear this site's cookies in your browser and the consent banner will appear again. Questions? Reach me from the home page.