/* Shared palette. Explicit choice wins; CSS follows the device without JavaScript. */
:root {
  --ink: #f4f8ff;
  --muted: #a9bdd3;
  --paper: #040d1b;
  --line: #294461;
  --green: #35d9f2;
  --mint: #102b49;
  --amber: #ff7a00;
  --blue: #35d9f2;
  --navy: #071e3d;
  --night: #040d1b;
  --surface: #102b49;
  --header-background: rgba(7, 30, 61, 0.94);
  --field-border: #6687a6;
  --control-border: #3d5976;
  --secondary-border: #52718e;
  --panel-background: #0d233c;
  --panel-border: #31516e;
  --editor-background: #102740;
  --empty-background: #0c2037;
  --empty-border: #47627e;
  --club-background: #0b2038;
  --card-alternate: #142d46;
  --footer-background: #06172c;
  --language-hover: #1b3d5e;
  --button-background: #ff7a00;
  --button-text: #040d1b;
  --text-link: #73dff0;
  --text-link-hover: #b1f3fc;
  --hero-text: #aec4da;
  --brand-subtitle: #9eb5cf;
  --placeholder: #9bb3cb;
  --location-text: #8eaac5;
  --card-text: #d6e6f5;
  --date-text: #d7efff;
  --date-label: #bfd0e2;
  --date-accent: #ffaf68;
  --row-arrow: #7cdaeb;
  --places-text: #78e1bb;
  --tag-text: #81dce9;
  --feature-text: #afc7dd;
  --club-icon: #9bc4e4;
  --orange-accent: #ffac60;
  --breadcrumb-text: #8fe8f5;
  --list-link: #a3e8f4;
  --table-text: #d6e5f4;
  --footer-link: #adc5dc;
  --footer-link-hover: #8be9f5;
  --info-background: #34281b;
  --info-border: #83613b;
  --info-text: #ffe0ad;
  --error-background: #3c2028;
  --error-border: #a15c68;
  --error-text: #ffc3cc;
  --success-background: #17392e;
  --success-border: #4b8b74;
  --success-text: #a1f0cb;
  --pending-background: #3a2c1c;
  --pending-text: #ffda9c;
  --refused-background: #40242b;
  --demo-background: #211c18;
  --demo-text: #ffd8a6;
  --demo-border: #654122;
  --visual-background: #0c2238e8;
  --visual-border: #356075;
  --feature-start: #0e2e4c;
  --filter-background: #102b4970;
  --filter-border: #31526e;
  --card-gradient-start: #102b4980;
  --card-gradient-end: #071e3d44;
  --card-hover: #102b494d;
  --secondary-background: #102b492e;
  --offline-text: #c6d6e5;
  --offline-subtitle: #b7cadc;
  --offline-accent: #ffae64;
  --offline-start: #102b49e8;
  --offline-end: #071e3df5;
  --body-glow-start: #153e592d;
  --body-glow-end: #0e395524;
}
:root[data-theme="light"] {
  color-scheme: light;
  --ink: #142b43;
  --muted: #4b6178;
  --paper: #f5f7fb;
  --line: #b5c5d5;
  --green: #00677d;
  --mint: #e8f0f7;
  --amber: #a94700;
  --blue: #00677d;
  --navy: #ffffff;
  --night: #f5f7fb;
  --surface: #ffffff;
  --header-background: rgba(255, 255, 255, 0.96);
  --field-border: #738ba2;
  --control-border: #738ba2;
  --secondary-border: #738ba2;
  --panel-background: #ffffff;
  --panel-border: #b5c5d5;
  --editor-background: #edf3f8;
  --empty-background: #edf3f8;
  --empty-border: #738ba2;
  --club-background: #ffffff;
  --card-alternate: #edf3f8;
  --footer-background: #e8f0f7;
  --language-hover: #dce9f3;
  --button-background: #ff7a00;
  --button-text: #071e3d;
  --text-link: #00677d;
  --text-link-hover: #004e60;
  --hero-text: #4b6178;
  --brand-subtitle: #4b6178;
  --placeholder: #526a80;
  --location-text: #4b6178;
  --card-text: #142b43;
  --date-text: #142b43;
  --date-label: #4b6178;
  --date-accent: #a94700;
  --row-arrow: #00677d;
  --places-text: #176747;
  --tag-text: #00677d;
  --feature-text: #4b6178;
  --club-icon: #00677d;
  --orange-accent: #a94700;
  --breadcrumb-text: #00677d;
  --list-link: #00677d;
  --table-text: #142b43;
  --footer-link: #4b6178;
  --footer-link-hover: #00677d;
  --info-background: #fff2d5;
  --info-border: #b48644;
  --info-text: #634719;
  --error-background: #fcf0ec;
  --error-border: #bd7466;
  --error-text: #8b3627;
  --success-background: #eaf3e9;
  --success-border: #67906d;
  --success-text: #305c38;
  --pending-background: #fff1d6;
  --pending-text: #7a5116;
  --refused-background: #fae8df;
  --demo-background: #fff0ce;
  --demo-text: #654916;
  --demo-border: #b48644;
  --visual-background: #fffffff0;
  --visual-border: #b5c5d5;
  --feature-start: #e8f0f7;
  --filter-background: #edf3f8;
  --filter-border: #b5c5d5;
  --card-gradient-start: #ffffff;
  --card-gradient-end: #edf3f8;
  --card-hover: #e8f0f7;
  --secondary-background: #ffffff;
  --offline-text: #4b6178;
  --offline-subtitle: #4b6178;
  --offline-accent: #a94700;
  --offline-start: #ffffff;
  --offline-end: #edf3f8;
  --body-glow-start: #00677d08;
  --body-glow-end: #00677d05;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
    color-scheme: light;
    --ink: #142b43;
    --muted: #4b6178;
    --paper: #f5f7fb;
    --line: #b5c5d5;
    --green: #00677d;
    --mint: #e8f0f7;
    --amber: #a94700;
    --blue: #00677d;
    --navy: #ffffff;
    --night: #f5f7fb;
    --surface: #ffffff;
    --header-background: rgba(255, 255, 255, 0.96);
    --field-border: #738ba2;
    --control-border: #738ba2;
    --secondary-border: #738ba2;
    --panel-background: #ffffff;
    --panel-border: #b5c5d5;
    --editor-background: #edf3f8;
    --empty-background: #edf3f8;
    --empty-border: #738ba2;
    --club-background: #ffffff;
    --card-alternate: #edf3f8;
    --footer-background: #e8f0f7;
    --language-hover: #dce9f3;
    --button-background: #ff7a00;
    --button-text: #071e3d;
    --text-link: #00677d;
    --text-link-hover: #004e60;
    --hero-text: #4b6178;
    --brand-subtitle: #4b6178;
    --placeholder: #526a80;
    --location-text: #4b6178;
    --card-text: #142b43;
    --date-text: #142b43;
    --date-label: #4b6178;
    --date-accent: #a94700;
    --row-arrow: #00677d;
    --places-text: #176747;
    --tag-text: #00677d;
    --feature-text: #4b6178;
    --club-icon: #00677d;
    --orange-accent: #a94700;
    --breadcrumb-text: #00677d;
    --list-link: #00677d;
    --table-text: #142b43;
    --footer-link: #4b6178;
    --footer-link-hover: #00677d;
    --info-background: #fff2d5;
    --info-border: #b48644;
    --info-text: #634719;
    --error-background: #fcf0ec;
    --error-border: #bd7466;
    --error-text: #8b3627;
    --success-background: #eaf3e9;
    --success-border: #67906d;
    --success-text: #305c38;
    --pending-background: #fff1d6;
    --pending-text: #7a5116;
    --refused-background: #fae8df;
    --demo-background: #fff0ce;
    --demo-text: #654916;
    --demo-border: #b48644;
    --visual-background: #fffffff0;
    --visual-border: #b5c5d5;
    --feature-start: #e8f0f7;
    --filter-background: #edf3f8;
    --filter-border: #b5c5d5;
    --card-gradient-start: #ffffff;
    --card-gradient-end: #edf3f8;
    --card-hover: #e8f0f7;
    --secondary-background: #ffffff;
    --offline-text: #4b6178;
    --offline-subtitle: #4b6178;
    --offline-accent: #a94700;
    --offline-start: #ffffff;
    --offline-end: #edf3f8;
    --body-glow-start: #00677d08;
    --body-glow-end: #00677d05;
  }
}

body {
  background:
    radial-gradient(
      ellipse at 85% 2%,
      var(--body-glow-start),
      transparent 36rem
    ),
    radial-gradient(ellipse at 5% 35%, var(--body-glow-end), transparent 42rem),
    var(--night);
}
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 44px;
  min-height: 44px;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  font-size: 0.75rem;
  white-space: nowrap;
}
.theme-toggle[hidden] {
  display: none;
}
.theme-toggle:hover {
  border-color: var(--green);
}
.theme-sun {
  display: inline-flex;
}
.theme-moon {
  display: none;
}
html[data-theme="light"] .theme-sun {
  display: none;
}
html[data-theme="light"] .theme-moon {
  display: inline-flex;
}
.utility-inner {
  flex-wrap: wrap;
  gap: 0.6rem 1rem;
}
.btn:not(.secondary):not(.danger),
.feature-band .btn {
  background: var(--button-background);
  color: var(--button-text);
}
.btn:not(.secondary):not(.danger):hover {
  background: #ff9533;
}
:root .feature-band {
  color: var(--ink);
}
:root .rubric {
  --rubric-accent: var(--green);
}
:root .rubric-orange {
  --rubric-accent: var(--amber);
}
:root .rubric-mint {
  --rubric-accent: var(--places-text);
}
:root .rubric-rose {
  --rubric-accent: var(--error-text);
}
:root .rubric-blue {
  --rubric-accent: var(--green);
}
.date-box,
.account-link,
.activity-row,
.club-card,
.resource-card,
.footer-bottom,
.management-nav a,
details.editor {
  border-color: var(--line);
}
:root .resource-card:nth-child(2n) {
  background: var(--surface);
  border-color: var(--line);
}
.btn.secondary {
  border-color: var(--field-border);
}
@media (max-width: 620px) {
  .utility-inner {
    gap: 0.5rem;
  }
  .theme-toggle {
    font-size: 0.7rem;
  }
}
/* The fallback page uses only these neutral, cached presentation assets. */
.offline-page {
  background: var(--paper);
  color: var(--ink);
}
.offline-page main {
  background: linear-gradient(145deg, var(--offline-start), var(--offline-end));
  border-color: var(--line);
}
.offline-page p {
  color: var(--offline-text);
}
.offline-page .brand {
  color: var(--ink);
}
.offline-page .brand span {
  color: var(--offline-subtitle);
}
.offline-page .status {
  color: var(--offline-accent);
}
.offline-page h2 {
  color: var(--green);
}
.offline-page section {
  border-color: var(--line);
}
.offline-page a {
  background: var(--button-background);
  color: var(--button-text);
}
.offline-page a:focus-visible {
  outline-color: var(--green);
}
