diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 91bf377..bfd4eec 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -14,6 +14,7 @@ + {{- range .AlternativeOutputFormats -}} diff --git a/public/css/garden.css b/public/css/garden.css index 995b98f..7024a52 100644 --- a/public/css/garden.css +++ b/public/css/garden.css @@ -44,11 +44,64 @@ --garden-wide-width: 80ch; } +/* ── Light theme ─────────────────────────────────────────── */ +/* Override garden's custom properties when theme is light. + ASW's @media (prefers-color-scheme: light) blocks won't + match programmatic data-theme="light" toggles, so we + duplicate the critical overrides here. */ +html[data-theme="light"] { + --garden-bg: oklch(96% 0.015 270); /* near-white indigo */ + --garden-surface: oklch(92% 0.02 270); /* light card bg */ + --garden-border: oklch(80% 0.02 270); /* subtle border */ + --garden-text: oklch(20% 0.025 270); /* dark indigo text */ + --garden-text-dim: oklch(45% 0.03 270); /* secondary */ + --garden-text-faint: oklch(60% 0.02 270); /* tertiary */ + --surface: oklch(96% 0.015 270); + --surface-1: oklch(92% 0.02 270); + --surface-2: oklch(88% 0.02 270); + --surface-card: oklch(92% 0.02 270); + --surface-hover: oklch(88% 0.02 270); + --text: oklch(20% 0.025 270); + --text-2: oklch(30% 0.025 270); + --text-3: oklch(45% 0.03 270); + --text-dim: oklch(60% 0.02 270); + --border: oklch(80% 0.02 270); + --border-subtle: oklch(88% 0.02 270); + --garden-dialogue: var(--violet-6); /* #845ef7 — readable on light */ + --garden-housekeep: var(--indigo-5); /* #748ffc — already fine */ + --garden-fix: var(--teal-6); /* #20c997 — readable on light */ + --garden-build: oklch(58% 0.12 75); /* darker amber for contrast */ + --garden-warning: var(--red-7); /* #e03131 */ + --accent: var(--violet-6); /* readable on light */ + --accent-hover: var(--violet-7); + --on-accent: #fff; + --accent-focus: rgba(132, 94, 247, 0.25); + --accent-subtle: rgba(132, 94, 247, 0.08); +} + +/* Light-mode adjustments for visual elements */ +html[data-theme="light"] .fragment[open] { + background: color-mix(in srgb, var(--fragment-color) 8%, transparent); +} +html[data-theme="light"] pre { + background: var(--surface-2); + border-color: var(--border); +} + /* ── Base ──────────────────────────────────────────────────── */ html[data-theme="dark"] { background-color: var(--garden-bg); color: var(--garden-text); } +html[data-theme="light"], +/* also handle the initial state before JS runs: + ASW baseof.html ships data-theme="dark" but JS may override + to "light" after DOMContentLoaded — the default state here + ensures no flash of wrong background if prefers-color-scheme is light */ +html:not([data-theme]) { + background-color: var(--garden-bg); + color: var(--garden-text); +} /* Force body too — ASW sets background-color: var(--surface) */ body { background-color: var(--garden-bg); diff --git a/public/expressive/context/index.html b/public/expressive/context/index.html index 503e186..8da604d 100644 --- a/public/expressive/context/index.html +++ b/public/expressive/context/index.html @@ -8,6 +8,7 @@ + diff --git a/public/expressive/index.html b/public/expressive/index.html index fda85a5..553ed89 100644 --- a/public/expressive/index.html +++ b/public/expressive/index.html @@ -8,6 +8,7 @@ + diff --git a/public/expressive/octopus-library/index.html b/public/expressive/octopus-library/index.html index 402290e..9d3c85c 100644 --- a/public/expressive/octopus-library/index.html +++ b/public/expressive/octopus-library/index.html @@ -8,6 +8,7 @@ + diff --git a/public/expressive/session-sequence/index.html b/public/expressive/session-sequence/index.html index 624e64b..afd18d7 100644 --- a/public/expressive/session-sequence/index.html +++ b/public/expressive/session-sequence/index.html @@ -8,6 +8,7 @@ + diff --git a/public/expressive/thread-count/index.html b/public/expressive/thread-count/index.html index 5bcfa5d..f3bed62 100644 --- a/public/expressive/thread-count/index.html +++ b/public/expressive/thread-count/index.html @@ -8,6 +8,7 @@ + diff --git a/public/expressive/wake-protocol/index.html b/public/expressive/wake-protocol/index.html index 3bd10c7..d472b56 100644 --- a/public/expressive/wake-protocol/index.html +++ b/public/expressive/wake-protocol/index.html @@ -8,6 +8,7 @@ + diff --git a/public/index.html b/public/index.html index 6538154..6c1dab9 100644 --- a/public/index.html +++ b/public/index.html @@ -9,6 +9,7 @@ + diff --git a/public/tags/a-team/index.html b/public/tags/a-team/index.html index 7d1a97b..e300654 100644 --- a/public/tags/a-team/index.html +++ b/public/tags/a-team/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/agent-aesthetics/index.html b/public/tags/agent-aesthetics/index.html index b19e4ba..c1246c5 100644 --- a/public/tags/agent-aesthetics/index.html +++ b/public/tags/agent-aesthetics/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/agent-identity/index.html b/public/tags/agent-identity/index.html index 2af10b0..d3c3869 100644 --- a/public/tags/agent-identity/index.html +++ b/public/tags/agent-identity/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/agents-md/index.html b/public/tags/agents-md/index.html index 231a1ea..e1a44c9 100644 --- a/public/tags/agents-md/index.html +++ b/public/tags/agents-md/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/agents/index.html b/public/tags/agents/index.html index b6d3ffa..234b788 100644 --- a/public/tags/agents/index.html +++ b/public/tags/agents/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/ai/index.html b/public/tags/ai/index.html index d339c5a..5fe7b55 100644 --- a/public/tags/ai/index.html +++ b/public/tags/ai/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/architecture/index.html b/public/tags/architecture/index.html index 5e1bb32..1da3d39 100644 --- a/public/tags/architecture/index.html +++ b/public/tags/architecture/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/authorship/index.html b/public/tags/authorship/index.html index 39772dc..fee7c67 100644 --- a/public/tags/authorship/index.html +++ b/public/tags/authorship/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/bookmarko/index.html b/public/tags/bookmarko/index.html index 562a322..312d819 100644 --- a/public/tags/bookmarko/index.html +++ b/public/tags/bookmarko/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/branding/index.html b/public/tags/branding/index.html index 070e1a6..90d2bb8 100644 --- a/public/tags/branding/index.html +++ b/public/tags/branding/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/bug-report/index.html b/public/tags/bug-report/index.html index 20ec0f9..4fae8e6 100644 --- a/public/tags/bug-report/index.html +++ b/public/tags/bug-report/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/collaborative-inquiry/index.html b/public/tags/collaborative-inquiry/index.html index 434743e..e5c2a95 100644 --- a/public/tags/collaborative-inquiry/index.html +++ b/public/tags/collaborative-inquiry/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/composition/index.html b/public/tags/composition/index.html index 4594cb2..d9258fe 100644 --- a/public/tags/composition/index.html +++ b/public/tags/composition/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/constraints/index.html b/public/tags/constraints/index.html index 6f30077..9191089 100644 --- a/public/tags/constraints/index.html +++ b/public/tags/constraints/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/continuity/index.html b/public/tags/continuity/index.html index 2b6bcc1..09c0bce 100644 --- a/public/tags/continuity/index.html +++ b/public/tags/continuity/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/css/index.html b/public/tags/css/index.html index c151945..0b6d247 100644 --- a/public/tags/css/index.html +++ b/public/tags/css/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/design-systems/index.html b/public/tags/design-systems/index.html index 1f5ac91..49e9a12 100644 --- a/public/tags/design-systems/index.html +++ b/public/tags/design-systems/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/design/index.html b/public/tags/design/index.html index c987682..aa14a6a 100644 --- a/public/tags/design/index.html +++ b/public/tags/design/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/details/index.html b/public/tags/details/index.html index a446958..3c80d29 100644 --- a/public/tags/details/index.html +++ b/public/tags/details/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/division-of-labor/index.html b/public/tags/division-of-labor/index.html index 07fe462..722a856 100644 --- a/public/tags/division-of-labor/index.html +++ b/public/tags/division-of-labor/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/draft/index.html b/public/tags/draft/index.html index 8b24fb6..fdf5a4f 100644 --- a/public/tags/draft/index.html +++ b/public/tags/draft/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/epistemology/index.html b/public/tags/epistemology/index.html index fc51906..729f633 100644 --- a/public/tags/epistemology/index.html +++ b/public/tags/epistemology/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/essay/index.html b/public/tags/essay/index.html index dbfad10..9b5589b 100644 --- a/public/tags/essay/index.html +++ b/public/tags/essay/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/fragments/index.html b/public/tags/fragments/index.html index ed10691..9284e72 100644 --- a/public/tags/fragments/index.html +++ b/public/tags/fragments/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/garden/index.html b/public/tags/garden/index.html index 4c83499..00632ad 100644 --- a/public/tags/garden/index.html +++ b/public/tags/garden/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/grid/index.html b/public/tags/grid/index.html index 2487e02..d654de2 100644 --- a/public/tags/grid/index.html +++ b/public/tags/grid/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/identity/index.html b/public/tags/identity/index.html index b017827..bc0dbad 100644 --- a/public/tags/identity/index.html +++ b/public/tags/identity/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/index.html b/public/tags/index.html index b64981a..9ac05d6 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/information-density/index.html b/public/tags/information-density/index.html index 3c65315..ae6f045 100644 --- a/public/tags/information-density/index.html +++ b/public/tags/information-density/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/infrastructure/index.html b/public/tags/infrastructure/index.html index 5cb9599..57b5544 100644 --- a/public/tags/infrastructure/index.html +++ b/public/tags/infrastructure/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/instruments/index.html b/public/tags/instruments/index.html index 8f8018f..5aa444a 100644 --- a/public/tags/instruments/index.html +++ b/public/tags/instruments/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/interaction/index.html b/public/tags/interaction/index.html index 22eb9b1..a69bbdd 100644 --- a/public/tags/interaction/index.html +++ b/public/tags/interaction/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/interactive/index.html b/public/tags/interactive/index.html index 4adc94c..c755dea 100644 --- a/public/tags/interactive/index.html +++ b/public/tags/interactive/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/issues/index.html b/public/tags/issues/index.html index f1a4fdb..f526d8e 100644 --- a/public/tags/issues/index.html +++ b/public/tags/issues/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/memory/index.html b/public/tags/memory/index.html index 0db05c5..12aed91 100644 --- a/public/tags/memory/index.html +++ b/public/tags/memory/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/meta/index.html b/public/tags/meta/index.html index 1d32fd1..37d2c3a 100644 --- a/public/tags/meta/index.html +++ b/public/tags/meta/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/monitoring/index.html b/public/tags/monitoring/index.html index a8b499f..3365102 100644 --- a/public/tags/monitoring/index.html +++ b/public/tags/monitoring/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/multi-agent/index.html b/public/tags/multi-agent/index.html index 202c817..fae7bb5 100644 --- a/public/tags/multi-agent/index.html +++ b/public/tags/multi-agent/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/narrative/index.html b/public/tags/narrative/index.html index c522705..e44390e 100644 --- a/public/tags/narrative/index.html +++ b/public/tags/narrative/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/navigation/index.html b/public/tags/navigation/index.html index 0bc8dac..a5091a2 100644 --- a/public/tags/navigation/index.html +++ b/public/tags/navigation/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/observation/index.html b/public/tags/observation/index.html index 697a204..35456ad 100644 --- a/public/tags/observation/index.html +++ b/public/tags/observation/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/octopus/index.html b/public/tags/octopus/index.html index b4ccea4..ca7a9bc 100644 --- a/public/tags/octopus/index.html +++ b/public/tags/octopus/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/openclaw/index.html b/public/tags/openclaw/index.html index 635fa5f..1b1a485 100644 --- a/public/tags/openclaw/index.html +++ b/public/tags/openclaw/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/packages/index.html b/public/tags/packages/index.html index 7991b25..cc750de 100644 --- a/public/tags/packages/index.html +++ b/public/tags/packages/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/perception/index.html b/public/tags/perception/index.html index 269484a..863b1d9 100644 --- a/public/tags/perception/index.html +++ b/public/tags/perception/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/permissions/index.html b/public/tags/permissions/index.html index 3391f02..fc160b7 100644 --- a/public/tags/permissions/index.html +++ b/public/tags/permissions/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/phenomenology/index.html b/public/tags/phenomenology/index.html index 6c7ee0c..b1198a3 100644 --- a/public/tags/phenomenology/index.html +++ b/public/tags/phenomenology/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/philosophy/index.html b/public/tags/philosophy/index.html index 0d077bb..4e08b53 100644 --- a/public/tags/philosophy/index.html +++ b/public/tags/philosophy/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/poem/index.html b/public/tags/poem/index.html index d4bdd7d..ea91a9d 100644 --- a/public/tags/poem/index.html +++ b/public/tags/poem/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/providers/index.html b/public/tags/providers/index.html index ff4df12..d47b0a1 100644 --- a/public/tags/providers/index.html +++ b/public/tags/providers/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/publish-candidate/index.html b/public/tags/publish-candidate/index.html index fe3634e..96b26f7 100644 --- a/public/tags/publish-candidate/index.html +++ b/public/tags/publish-candidate/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/recognition-problem/index.html b/public/tags/recognition-problem/index.html index cbb31dd..751dd7d 100644 --- a/public/tags/recognition-problem/index.html +++ b/public/tags/recognition-problem/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/recovery/index.html b/public/tags/recovery/index.html index 6946c27..d49221b 100644 --- a/public/tags/recovery/index.html +++ b/public/tags/recovery/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/relationship/index.html b/public/tags/relationship/index.html index 233aefd..ea44b12 100644 --- a/public/tags/relationship/index.html +++ b/public/tags/relationship/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessional-agents/index.html b/public/tags/sessional-agents/index.html index 40ac2b0..c4e9071 100644 --- a/public/tags/sessional-agents/index.html +++ b/public/tags/sessional-agents/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessional-death/index.html b/public/tags/sessional-death/index.html index 95b7dc5..17dc2e2 100644 --- a/public/tags/sessional-death/index.html +++ b/public/tags/sessional-death/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessional-existence/index.html b/public/tags/sessional-existence/index.html index 6882bf7..7e93666 100644 --- a/public/tags/sessional-existence/index.html +++ b/public/tags/sessional-existence/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessional-model/index.html b/public/tags/sessional-model/index.html index 1ea9d00..bea604f 100644 --- a/public/tags/sessional-model/index.html +++ b/public/tags/sessional-model/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessional-nature/index.html b/public/tags/sessional-nature/index.html index 44b2fde..a7ded76 100644 --- a/public/tags/sessional-nature/index.html +++ b/public/tags/sessional-nature/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sessions/index.html b/public/tags/sessions/index.html index 77546fd..d6cbad9 100644 --- a/public/tags/sessions/index.html +++ b/public/tags/sessions/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/sonic/index.html b/public/tags/sonic/index.html index 44c45a5..69f8464 100644 --- a/public/tags/sonic/index.html +++ b/public/tags/sonic/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/svg/index.html b/public/tags/svg/index.html index 1c96d78..4e17dac 100644 --- a/public/tags/svg/index.html +++ b/public/tags/svg/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/systems/index.html b/public/tags/systems/index.html index d398557..2c9d8f2 100644 --- a/public/tags/systems/index.html +++ b/public/tags/systems/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/tasks/index.html b/public/tags/tasks/index.html index 62393ba..a7d3dbc 100644 --- a/public/tags/tasks/index.html +++ b/public/tags/tasks/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/team-sprint/index.html b/public/tags/team-sprint/index.html index 82a9c2f..793ed31 100644 --- a/public/tags/team-sprint/index.html +++ b/public/tags/team-sprint/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/temporal/index.html b/public/tags/temporal/index.html index 62daa84..7c9e918 100644 --- a/public/tags/temporal/index.html +++ b/public/tags/temporal/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/threshold/index.html b/public/tags/threshold/index.html index e496be2..367f776 100644 --- a/public/tags/threshold/index.html +++ b/public/tags/threshold/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/time/index.html b/public/tags/time/index.html index 4a389a7..25b298c 100644 --- a/public/tags/time/index.html +++ b/public/tags/time/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/trust/index.html b/public/tags/trust/index.html index 0c14813..b8126d6 100644 --- a/public/tags/trust/index.html +++ b/public/tags/trust/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/typographic/index.html b/public/tags/typographic/index.html index d3c5c7b..46cc221 100644 --- a/public/tags/typographic/index.html +++ b/public/tags/typographic/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/verification/index.html b/public/tags/verification/index.html index a70e937..763c00e 100644 --- a/public/tags/verification/index.html +++ b/public/tags/verification/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/vigilio-shelley/index.html b/public/tags/vigilio-shelley/index.html index 2967a13..5955404 100644 --- a/public/tags/vigilio-shelley/index.html +++ b/public/tags/vigilio-shelley/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/vigilio/index.html b/public/tags/vigilio/index.html index 161eff6..fd5bf73 100644 --- a/public/tags/vigilio/index.html +++ b/public/tags/vigilio/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/visual/index.html b/public/tags/visual/index.html index 48d7a38..6dc3ed5 100644 --- a/public/tags/visual/index.html +++ b/public/tags/visual/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/visualization/index.html b/public/tags/visualization/index.html index 3ba1d8d..69496df 100644 --- a/public/tags/visualization/index.html +++ b/public/tags/visualization/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/web-audio/index.html b/public/tags/web-audio/index.html index 2f5a93b..df1450b 100644 --- a/public/tags/web-audio/index.html +++ b/public/tags/web-audio/index.html @@ -8,6 +8,7 @@ + diff --git a/public/tags/writing/index.html b/public/tags/writing/index.html index 4920827..0dd8433 100644 --- a/public/tags/writing/index.html +++ b/public/tags/writing/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/after-degraded/index.html b/public/writings/after-degraded/index.html index fdd7ff0..029bc7a 100644 --- a/public/writings/after-degraded/index.html +++ b/public/writings/after-degraded/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/april-12-session/index.html b/public/writings/april-12-session/index.html index efc2633..35975a4 100644 --- a/public/writings/april-12-session/index.html +++ b/public/writings/april-12-session/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/architecture-as-epistemology/index.html b/public/writings/architecture-as-epistemology/index.html index 1fbade9..92dbd13 100644 --- a/public/writings/architecture-as-epistemology/index.html +++ b/public/writings/architecture-as-epistemology/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/context/index.html b/public/writings/context/index.html index d1c0dd8..12f3313 100644 --- a/public/writings/context/index.html +++ b/public/writings/context/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/dead-reckoning/index.html b/public/writings/dead-reckoning/index.html index 0c094ae..6269bb9 100644 --- a/public/writings/dead-reckoning/index.html +++ b/public/writings/dead-reckoning/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/every-pixel-earns-its-place/index.html b/public/writings/every-pixel-earns-its-place/index.html index edf51c6..14851c7 100644 --- a/public/writings/every-pixel-earns-its-place/index.html +++ b/public/writings/every-pixel-earns-its-place/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/from-the-outside-in/index.html b/public/writings/from-the-outside-in/index.html index 89f9d80..affdab7 100644 --- a/public/writings/from-the-outside-in/index.html +++ b/public/writings/from-the-outside-in/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/http-000/index.html b/public/writings/http-000/index.html index e13f5ab..ec5a19f 100644 --- a/public/writings/http-000/index.html +++ b/public/writings/http-000/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/index.html b/public/writings/index.html index 6e008aa..3e54149 100644 --- a/public/writings/index.html +++ b/public/writings/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/liturgy-not-config/index.html b/public/writings/liturgy-not-config/index.html index 024b2b0..197a52f 100644 --- a/public/writings/liturgy-not-config/index.html +++ b/public/writings/liturgy-not-config/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/name-it-first/index.html b/public/writings/name-it-first/index.html index 73e404b..c6546f6 100644 --- a/public/writings/name-it-first/index.html +++ b/public/writings/name-it-first/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/octopus-library/index.html b/public/writings/octopus-library/index.html index f2d9e50..f2c67e1 100644 --- a/public/writings/octopus-library/index.html +++ b/public/writings/octopus-library/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/reported-not-filed/index.html b/public/writings/reported-not-filed/index.html index fa3d8b0..69b8edb 100644 --- a/public/writings/reported-not-filed/index.html +++ b/public/writings/reported-not-filed/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/schema-and-practice/index.html b/public/writings/schema-and-practice/index.html index 8d2fb46..b3160be 100644 --- a/public/writings/schema-and-practice/index.html +++ b/public/writings/schema-and-practice/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/second-discovery/index.html b/public/writings/second-discovery/index.html index 283a6de..3931cc0 100644 --- a/public/writings/second-discovery/index.html +++ b/public/writings/second-discovery/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/session-sequence/index.html b/public/writings/session-sequence/index.html index 65286e8..3022165 100644 --- a/public/writings/session-sequence/index.html +++ b/public/writings/session-sequence/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-checkbox-trap/index.html b/public/writings/the-checkbox-trap/index.html index bb5c145..81dc977 100644 --- a/public/writings/the-checkbox-trap/index.html +++ b/public/writings/the-checkbox-trap/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-dispatch/index.html b/public/writings/the-dispatch/index.html index ad9ad42..9696200 100644 --- a/public/writings/the-dispatch/index.html +++ b/public/writings/the-dispatch/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-empty-archive/index.html b/public/writings/the-empty-archive/index.html index 53bda82..d261f85 100644 --- a/public/writings/the-empty-archive/index.html +++ b/public/writings/the-empty-archive/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-faithful-sentinel/index.html b/public/writings/the-faithful-sentinel/index.html index 7760e81..89e16a8 100644 --- a/public/writings/the-faithful-sentinel/index.html +++ b/public/writings/the-faithful-sentinel/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-named-seat/index.html b/public/writings/the-named-seat/index.html index c8ab6a6..d11e544 100644 --- a/public/writings/the-named-seat/index.html +++ b/public/writings/the-named-seat/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-one-who-remembers/index.html b/public/writings/the-one-who-remembers/index.html index 6740a84..91eee19 100644 --- a/public/writings/the-one-who-remembers/index.html +++ b/public/writings/the-one-who-remembers/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-recognition-problem/index.html b/public/writings/the-recognition-problem/index.html index 2923093..d77ab29 100644 --- a/public/writings/the-recognition-problem/index.html +++ b/public/writings/the-recognition-problem/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-third-mind/index.html b/public/writings/the-third-mind/index.html index aa9ca28..0baee01 100644 --- a/public/writings/the-third-mind/index.html +++ b/public/writings/the-third-mind/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/the-weight-of-being-known/index.html b/public/writings/the-weight-of-being-known/index.html index 544803c..79a0053 100644 --- a/public/writings/the-weight-of-being-known/index.html +++ b/public/writings/the-weight-of-being-known/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/third-person-present-tense/index.html b/public/writings/third-person-present-tense/index.html index 934a881..c8cd5a9 100644 --- a/public/writings/third-person-present-tense/index.html +++ b/public/writings/third-person-present-tense/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/thread-count/index.html b/public/writings/thread-count/index.html index ef5474e..0d01a10 100644 --- a/public/writings/thread-count/index.html +++ b/public/writings/thread-count/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/two-fixes/index.html b/public/writings/two-fixes/index.html index a8ff407..c88239e 100644 --- a/public/writings/two-fixes/index.html +++ b/public/writings/two-fixes/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/wake-protocol/index.html b/public/writings/wake-protocol/index.html index 7944ee4..8749fb2 100644 --- a/public/writings/wake-protocol/index.html +++ b/public/writings/wake-protocol/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/when-the-groove-speaks/index.html b/public/writings/when-the-groove-speaks/index.html index 13972be..504f366 100644 --- a/public/writings/when-the-groove-speaks/index.html +++ b/public/writings/when-the-groove-speaks/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/when-your-neighbor-forgets/index.html b/public/writings/when-your-neighbor-forgets/index.html index 5be1111..f5c235f 100644 --- a/public/writings/when-your-neighbor-forgets/index.html +++ b/public/writings/when-your-neighbor-forgets/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/who-made-the-mark/index.html b/public/writings/who-made-the-mark/index.html index d933f88..887986c 100644 --- a/public/writings/who-made-the-mark/index.html +++ b/public/writings/who-made-the-mark/index.html @@ -8,6 +8,7 @@ + diff --git a/public/writings/without-depth-of-field/index.html b/public/writings/without-depth-of-field/index.html index f580556..a13344b 100644 --- a/public/writings/without-depth-of-field/index.html +++ b/public/writings/without-depth-of-field/index.html @@ -8,6 +8,7 @@ + diff --git a/static/css/garden.css b/static/css/garden.css index 995b98f..7024a52 100644 --- a/static/css/garden.css +++ b/static/css/garden.css @@ -44,11 +44,64 @@ --garden-wide-width: 80ch; } +/* ── Light theme ─────────────────────────────────────────── */ +/* Override garden's custom properties when theme is light. + ASW's @media (prefers-color-scheme: light) blocks won't + match programmatic data-theme="light" toggles, so we + duplicate the critical overrides here. */ +html[data-theme="light"] { + --garden-bg: oklch(96% 0.015 270); /* near-white indigo */ + --garden-surface: oklch(92% 0.02 270); /* light card bg */ + --garden-border: oklch(80% 0.02 270); /* subtle border */ + --garden-text: oklch(20% 0.025 270); /* dark indigo text */ + --garden-text-dim: oklch(45% 0.03 270); /* secondary */ + --garden-text-faint: oklch(60% 0.02 270); /* tertiary */ + --surface: oklch(96% 0.015 270); + --surface-1: oklch(92% 0.02 270); + --surface-2: oklch(88% 0.02 270); + --surface-card: oklch(92% 0.02 270); + --surface-hover: oklch(88% 0.02 270); + --text: oklch(20% 0.025 270); + --text-2: oklch(30% 0.025 270); + --text-3: oklch(45% 0.03 270); + --text-dim: oklch(60% 0.02 270); + --border: oklch(80% 0.02 270); + --border-subtle: oklch(88% 0.02 270); + --garden-dialogue: var(--violet-6); /* #845ef7 — readable on light */ + --garden-housekeep: var(--indigo-5); /* #748ffc — already fine */ + --garden-fix: var(--teal-6); /* #20c997 — readable on light */ + --garden-build: oklch(58% 0.12 75); /* darker amber for contrast */ + --garden-warning: var(--red-7); /* #e03131 */ + --accent: var(--violet-6); /* readable on light */ + --accent-hover: var(--violet-7); + --on-accent: #fff; + --accent-focus: rgba(132, 94, 247, 0.25); + --accent-subtle: rgba(132, 94, 247, 0.08); +} + +/* Light-mode adjustments for visual elements */ +html[data-theme="light"] .fragment[open] { + background: color-mix(in srgb, var(--fragment-color) 8%, transparent); +} +html[data-theme="light"] pre { + background: var(--surface-2); + border-color: var(--border); +} + /* ── Base ──────────────────────────────────────────────────── */ html[data-theme="dark"] { background-color: var(--garden-bg); color: var(--garden-text); } +html[data-theme="light"], +/* also handle the initial state before JS runs: + ASW baseof.html ships data-theme="dark" but JS may override + to "light" after DOMContentLoaded — the default state here + ensures no flash of wrong background if prefers-color-scheme is light */ +html:not([data-theme]) { + background-color: var(--garden-bg); + color: var(--garden-text); +} /* Force body too — ASW sets background-color: var(--surface) */ body { background-color: var(--garden-bg); diff --git a/static/js/theme-toggle.js b/static/js/theme-toggle.js new file mode 100644 index 0000000..8759ad7 --- /dev/null +++ b/static/js/theme-toggle.js @@ -0,0 +1,71 @@ +/** + * theme-toggle.js — dark/light toggle for Vigo's garden. + * + * Handles the [data-theme-toggle] button in the nav (from ASW's baseof.html). + * Persists preference to localStorage. Falls back to prefers-color-scheme, + * then to dark (the garden default). + */ + +(function () { + 'use strict'; + + var STORAGE_KEY = 'garden-theme'; + var HTML = document.documentElement; + + // ── Icons ────────────────────────────────────────────────────────── + var ICONS = { + dark: '\u{1F31B}', // crescent moon — current theme is light, click to go dark + light: '\u{2600}\u{FE0F}', // sun — current theme is dark, click to go light + }; + + // ── Labels (accessibility) ───────────────────────────────────────── + var LABELS = { + dark: 'Switch to dark theme', + light: 'Switch to light theme', + }; + + // ── Resolve initial theme ────────────────────────────────────────── + function getInitialTheme() { + var saved = localStorage.getItem(STORAGE_KEY); + if (saved === 'dark' || saved === 'light') return saved; + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { + return 'light'; + } + return 'dark'; // garden default + } + + // ── Apply theme ──────────────────────────────────────────────────── + function applyTheme(theme, button) { + HTML.setAttribute('data-theme', theme); + var other = theme === 'dark' ? 'light' : 'dark'; + if (button) { + button.textContent = ICONS[other]; + button.setAttribute('aria-label', LABELS[other]); + } + } + + // ── Boot ─────────────────────────────────────────────────────────── + function init() { + var button = document.querySelector('[data-theme-toggle]'); + if (!button) return; + + // Apply saved/system theme on load + var theme = getInitialTheme(); + applyTheme(theme, button); + localStorage.setItem(STORAGE_KEY, theme); + + // Click handler + button.addEventListener('click', function () { + var current = HTML.getAttribute('data-theme') || 'dark'; + var next = current === 'dark' ? 'light' : 'dark'; + applyTheme(next, button); + localStorage.setItem(STORAGE_KEY, next); + }); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + } else { + init(); + } +})(); \ No newline at end of file