/* Shared control; page palettes are defined below and in each page's own CSS. */
.sp-theme-toggle {
  flex:none; display:inline-flex; align-items:center; justify-content:center; gap:.4rem;
  min-height:38px; padding:.35rem .72rem; border:1px solid currentColor; border-radius:4px;
  background:transparent; color:inherit; font:600 .78rem/1.2 system-ui,sans-serif;
  opacity:.8; cursor:pointer; white-space:nowrap;
}
.sp-theme-toggle:hover { opacity:1; }
.sp-theme-toggle:focus-visible { outline:2px solid var(--sp-accent,#3157c8); outline-offset:3px; opacity:1; }
.sp-theme-toggle > span:first-child { font-size:1.12rem; line-height:1; }
.sp-theme-toggle--floating { position:fixed; z-index:1000; top:1rem; right:1rem; background:var(--bg,#1a1a1a); color:var(--fg,var(--text,#e8e6e1)); box-shadow:0 2px 12px rgba(0,0,0,.16); }
[data-theme-page="serpent"] .sp-theme-toggle { min-height:30px; padding:.22rem .35rem; opacity:.85; }
[data-theme-page="serpent"] .sp-theme-toggle__label { display:none; }
@media (max-width:640px) {
  .sp-header__inner > .sp-theme-toggle { align-self:flex-end; }
  .sp-theme-toggle--floating { top:.65rem; right:.65rem; }
}
@media print { .sp-theme-toggle { display:none !important; } }

:root[data-theme="light"] .sp-header, :root[data-theme="light"] .sp-footer { --sp-accent:#205e76; }
:root[data-theme="dark"] .sp-header, :root[data-theme="dark"] .sp-footer { --sp-accent:#98d5e5; }
:root[data-theme="light"] body.sp-index-page { background:#f3f7f7; color:#142b38; }
:root[data-theme="dark"] body.sp-index-page { background:#102530; color:#e5eef0; }
:root[data-theme="light"] :is(.sp-index .sp-kicker,.sp-entry__links a) { color:#205e76; }
:root[data-theme="dark"] :is(.sp-index .sp-kicker,.sp-entry__links a) { color:#98d5e5; }
:root[data-theme="light"] .sp-skip { background:#fdfdfc; color:#1a1a1a; }
:root[data-theme="dark"] .sp-skip { background:#1a1a1a; color:#e8e6e1; }

/* Editorial pages originally followed the OS preference. Explicit selectors win either way. */
:root[data-theme="light"][data-theme-page="home"] { --bg:#f3f7f7; --fg:#142b38; --muted:#4e6974; --line:#cad9dc; --accent:#205e76; --feature:#e7f0f1; --feature-line:#cad9dc; }
:root[data-theme="dark"][data-theme-page="home"] { --bg:#102530; --fg:#e5eef0; --muted:#a8c0c8; --line:#365560; --accent:#98d5e5; --feature:#183642; --feature-line:#365560; }
:root[data-theme="light"][data-theme-page="reading"] { --bg:#fdfdfc; --fg:#1a1a1a; --muted:rgba(26,26,26,.58); --line:rgba(26,26,26,.14); --quote:rgba(26,26,26,.055); --code-bg:rgba(26,26,26,.04); }
:root[data-theme="dark"][data-theme-page="reading"] { --bg:#1a1a1a; --fg:#e8e6e1; --muted:rgba(232,230,225,.6); --line:rgba(232,230,225,.15); --quote:rgba(232,230,225,.06); --code-bg:rgba(232,230,225,.06); }
:root[data-theme="light"][data-theme-page="git"] { --bg:#fdfdfc; --fg:#1b1b1b; --muted:rgba(27,27,27,.61); --line:rgba(27,27,27,.14); --soft:#f6f2ef; --accent:#c84b2b; --accent-soft:#f8e9e3; --code:#f1efed; --branch:#3157c8; }
:root[data-theme="dark"][data-theme-page="git"] { --bg:#191817; --fg:#edeae6; --muted:rgba(237,234,230,.62); --line:rgba(237,234,230,.14); --soft:#24211f; --accent:#ff8e6e; --accent-soft:#3a2520; --code:#292624; --branch:#9ab2ff; }
:root[data-theme="light"][data-theme-page="jev"] { --bg:#fdfdfc; --fg:#191919; --muted:rgba(25,25,25,.62); --line:rgba(25,25,25,.14); --soft:#f2f4f9; --accent:#3157c8; --accent-soft:#e8edff; --code:#eef1f7; }
:root[data-theme="dark"][data-theme-page="jev"] { --bg:#181818; --fg:#eceae5; --muted:rgba(236,234,229,.62); --line:rgba(236,234,229,.14); --soft:#21242b; --accent:#9ab2ff; --accent-soft:#242d4b; --code:#242730; }
:root[data-theme="light"][data-theme-page="skills"] { --paper:#fdfdfc; --ink:#20242b; --muted:#626a74; --line:#d9dee6; --accent:#3157c8; --blue-tint:#eef2fc; --panel:#f5f7fb; --file:#fff; --forest:#315f57; }
:root[data-theme="dark"][data-theme-page="skills"] { --paper:#181c23; --ink:#e8ebf0; --muted:#aab2bf; --line:#3a4351; --accent:#9ab2ff; --blue-tint:#252e45; --panel:#202733; --file:#1b222d; --forest:#9bd0bf; }
:root[data-theme="light"][data-theme-page="reading"] code { background:rgba(26,26,26,.04); }
:root[data-theme="dark"][data-theme-page="reading"] code { background:rgba(232,230,225,.08); }

/* The research field notes have many individually colored diagrams. The paired
   filter keeps their contrast relationships while retaining the original hues. */
:root[data-theme="light"][data-theme-page="night"] { background:#f4f5f6; }
:root[data-theme="light"][data-theme-page="night"] body { filter:invert(1) hue-rotate(180deg); }
:root[data-theme="light"][data-theme-page="night"] :is(img,video,canvas) { filter:invert(1) hue-rotate(180deg); }
:root[data-theme="light"][data-theme-page="night"] .sp-nav a[aria-current] { color:#fff; border-color:#fff; }
@media print {
  :root[data-theme="light"][data-theme-page="night"] body,
  :root[data-theme="light"][data-theme-page="night"] :is(img,video,canvas) { filter:none; }
}

/* The Serpent canvas keeps its game colors while its surrounding UI changes. */
:root[data-theme="light"][data-theme-page="serpent"] { --bg:#f7f5f0; --bg-deep:#ece7dd; --fg:#28251f; --fg-dim:rgba(40,37,31,.62); --fg-faint:rgba(40,37,31,.16); --accent:#77541f; --accent-bright:#93682b; --grid-line:rgba(40,37,31,.07); --snake:#8d6d3d; --snake-dark:#5c4729; --snake-light:#b89455; --wall-1:#918475; --wall-2:#6d6255; --wall-3:#b3a99c; }
:root[data-theme="light"][data-theme-page="replay"] { --bg:#faf8f3; --fg:#29251f; --dim:#665f56; --line:#d8d1c5; --accent:#79552d; }
:root[data-theme="light"][data-theme-page="replay"] .canvas-frame { background:#050505; }
