:root[data-light="morning"] {
  --paper: #fbede5;
  --panel: #fff8ef;
  --ink: #31473e;
  --muted: #5d6b60;
  --line: #e2d3c7;
  --forest: #38745e;
  --forest-dark: #2b5748;
  --sage: #e3eddb;
  --amber: #f7e2c5;
  --blue: #e2eef0;
  --violet: #efe3ee;
  --header: #fff5e8;
  --surface: #f5eee5;
  --hover: #ece4db;
  --warm-ink: #795133;
  --accent: #386b56;
  --lavender-ink: #6b5678;
  --log-bg: #f8f7ef;
  --portrait-bg: #cbe6e9;
}

:root[data-light="dusk"] {
  --paper: #e9d7d0;
  --panel: #faebe4;
  --ink: #402f37;
  --muted: #675660;
  --line: #d5bfb9;
  --forest: #57516f;
  --forest-dark: #41384f;
  --sage: #e5e1d5;
  --amber: #f3d9bd;
  --blue: #e2dfe9;
  --violet: #e9d8e8;
  --header: #f5e2d9;
  --surface: #f2e2dc;
  --hover: #e7d4ce;
  --warm-ink: #7c4937;
  --accent: #4b5269;
  --lavender-ink: #64486d;
  --log-bg: #f8ede7;
  --portrait-bg: #d3d7e3;
}

:root[data-light="night"] {
  color-scheme: dark;
  --paper: #131d29;
  --panel: #202d3b;
  --ink: #f2eee6;
  --muted: #bdc9cf;
  --line: #43525e;
  --forest: #396d62;
  --forest-dark: #a3d6be;
  --sage: #2b453f;
  --amber: #49392f;
  --blue: #293f53;
  --violet: #40364d;
  --red: #ffb3a3;
  --shadow: 0 2px 1px #040a1145, 0 12px 26px #080e193b;
  --header: #172331;
  --surface: #273543;
  --hover: #344653;
  --warm-ink: #f5ce97;
  --accent: #a1d5c0;
  --lavender-ink: #e0c7f3;
  --log-bg: #1d3038;
  --portrait-bg: #39566d;
}

:root:not([data-light="day"]) .site-header { background: var(--header, #fffcf3); }
:root:is([data-light="morning"], [data-light="dusk"], [data-light="night"]) {
  .main-nav, .station-tabs, .dialog-head, .log-empty, .log-empty > span, fieldset,
  .route-materials > div, .station-empty, .deposit-card.unfound, input:disabled { background: var(--surface); border-color: var(--line); }
  .main-nav button:hover, .station-tabs button:hover, .journal-row:hover { background: var(--hover); color: var(--ink); }
  .main-nav button[aria-current="page"], .button.active { background: var(--sage); color: var(--accent); border-color: var(--line); }
  .station-tabs button.selected, .button.paper, .profile-bonuses span, input, select { background: var(--panel); border-color: var(--line); }
  .button.paper:not(:disabled):hover, .button.quiet:not(:disabled):hover, .button.text:not(:disabled):hover {
    background: var(--hover); border-color: var(--line); color: var(--ink);
  }
  .button.text, .core-button > span:first-child, .presence, .route-option-action, .xp-line strong,
  .station-tabs button.selected, .log-empty > span { color: var(--accent); }
  .button.primary, .route-arrow { border-color: var(--forest); box-shadow: 0 2px #141c2450; }
  .button.primary:not(:disabled):hover, .gathering-open:hover .route-arrow { background: var(--forest); filter: brightness(1.15); }
  .log-card { background: var(--log-bg); }
  .log-card, .village, .quest-card, .echo-card, .gathering-card, .special-card,
  .route-art, .special-empty, .journal-row, .route-option, .panel, .deposit-card,
  .bank-balances > div, .bank-stock, .station-history, .shop-row, .stock-row, .roll-table td, .roll-table th { border-color: var(--line); }
  .village, .echo-card, .bank-balances > div, .refine-progress, .deposit-card, .success-message { background: var(--sage); }
  .quest-card { background: var(--surface); }
  .gathering-card, .route-option { background: var(--panel); }
  .special-card, .route-option.closed, .special-star { background: var(--violet); }
  .special-empty { background: var(--surface); }
  .portrait { background: var(--portrait-bg); border-color: var(--line); }
  .balance, .quest-row, .recipe, .core-wallet, .session-banner, .pill.amber { background: var(--amber); color: var(--warm-ink); border-color: var(--line); }
  .quest-row strong { color: var(--ink); }
  .quest-reward, .quest-total span { color: var(--warm-ink); }
  .quest-row:hover, button.route-option:not(:disabled):hover { background: var(--hover); border-color: var(--accent); }
  .quest-completion, .quest-completion:hover { background: var(--sage); border-color: var(--accent); }
  .quest-completion .quest-reward, .roll-table .pass, .success-message { color: var(--accent); }
  .roll-table .miss, .reset-tools .button.danger { color: var(--red); }
  .section-mark, .pill.sage { background: var(--sage); color: var(--accent); }
  .section-mark.amber, .section-mark.sale, .section-mark.quest, .section-mark.harvest, .section-mark.risk { background: var(--amber); color: var(--warm-ink); }
  .section-mark.blue, .section-mark.search, .section-mark.travel { background: var(--blue); color: var(--ink); }
  .section-mark.violet, .section-mark.refine, .section-mark.transfer, .section-mark.craft, .pill.violet { background: var(--violet); color: var(--lavender-ink); }
  .route-option.closed .route-option-action, .special-star { color: var(--lavender-ink); }
  .meter, .quest-row .meter { background: var(--line); }
  .meter i { background: var(--accent); }
  label { color: var(--ink); }
}

:root[data-light="night"] {
  body { background-image: radial-gradient(#b2c1d211 .65px, transparent .65px); }
  .guild-mark { background: #2a3e48; border-color: #4a655e; }
  .guild-mark::before { background: #64887c; }
  .guild-mark::after { background: #95ae9d; }
  .quest-row .meter > i { background: #d6ab72; }
  .panel::backdrop { background: #07101bd0; }
  .penalty-body .button { color: var(--ink); }
}
