:root {
  --bg: #081018;
  --bg-soft: #0d1721;
  --panel: #101d28;
  --panel-strong: #132433;
  --line: rgba(157, 190, 213, 0.16);
  --line-strong: rgba(157, 190, 213, 0.26);
  --text: #eef5f7;
  --muted: #8fa3ad;
  --muted-strong: #b7c6cc;
  --accent: #f3c56f;
  --accent-hot: #ffdb8b;
  --cyan: #78e5d0;
  --shadow: 0 18px 45px rgba(0, 0, 0, 0.22);
  --radius-xl: 28px;
  --radius-lg: 20px;
  --radius-md: 13px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  min-width: 320px;
  color: var(--text);
  background:
    radial-gradient(circle at 82% -4%, rgba(63, 134, 144, 0.17), transparent 30rem),
    radial-gradient(circle at 6% 8%, rgba(204, 148, 74, 0.08), transparent 25rem),
    var(--bg);
  font-family: "Manrope", "PingFang SC", "Microsoft YaHei", sans-serif;
  line-height: 1.5;
}

button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
button { color: inherit; border: 0; cursor: pointer; }

.app-shell { width: min(1440px, calc(100% - 64px)); margin: 0 auto; }

.topbar {
  height: 80px;
  display: flex;
  align-items: center;
  gap: 28px;
  border-bottom: 1px solid var(--line);
}

.brand { display: inline-flex; align-items: center; gap: 10px; font-weight: 800; letter-spacing: -0.04em; font-size: 1.15rem; }
.brand-mark { color: var(--accent); font-size: 1.35rem; line-height: 1; filter: drop-shadow(0 0 12px rgba(243, 197, 111, 0.35)); }
.brand-mark.small { font-size: 1rem; margin-right: 8px; }
.topbar-note { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font: 500 0.72rem/1 "DM Mono", monospace; letter-spacing: 0.04em; }
.live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 0 4px rgba(120, 229, 208, 0.1), 0 0 14px rgba(120, 229, 208, 0.7); }
.topnav { display: flex; align-items: center; gap: 24px; margin-left: auto; color: var(--muted); font-size: 0.88rem; }
.topnav a, .topnav button { position: relative; padding: 8px 0; background: transparent; color: inherit; }
.topnav .active, .topnav a:hover, .topnav button:hover { color: var(--text); }
.topnav .active::after { content: ""; position: absolute; bottom: -8px; left: 0; width: 18px; height: 2px; background: var(--accent); border-radius: 2px; }
#favorite-count { color: var(--accent); font: 500 0.7rem "DM Mono", monospace; }
.github-link { display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted-strong); font-size: 0.78rem; transition: border-color .2s, background .2s; }
.github-link:hover { border-color: var(--line-strong); background: rgba(255,255,255,0.04); }

.intro { min-height: auto; padding: 30px 0 28px; }
.intro-copy { max-width: 860px; }
.section-kicker { margin: 0 0 16px; color: var(--accent); font: 500 0.7rem/1.2 "DM Mono", monospace; letter-spacing: 0.16em; }
.intro h1 { max-width: 820px; margin: 0; font-size: clamp(2rem, 3.5vw, 3.6rem); line-height: 1.05; letter-spacing: -0.06em; font-weight: 800; }

.controls { margin-bottom: 20px; }
.control-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 22px; }
.control-heading .section-kicker { margin-bottom: 8px; }
.control-heading h2 { margin: 0; font-size: 1.75rem; letter-spacing: -0.05em; }
.result-count { color: var(--muted); font: 0.72rem "DM Mono", monospace; }
.control-row { display: flex; align-items: center; gap: 16px; }
.search-box { flex: 1; max-width: 620px; display: flex; align-items: center; gap: 12px; padding: 13px 14px; border: 1px solid var(--line); border-radius: var(--radius-md); background: rgba(18, 33, 45, .68); transition: border-color .2s, background .2s; }
.search-box:focus-within { border-color: rgba(120, 229, 208, .52); background: rgba(18, 40, 48, .8); }
.search-icon { color: var(--cyan); font-size: 1.35rem; line-height: 1; transform: rotate(-15deg); }
.search-box input { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; font-size: .9rem; }
.search-box input::placeholder { color: #6c828d; }
kbd { min-width: 24px; padding: 3px 6px; border: 1px solid var(--line); border-radius: 5px; color: var(--muted); font: 0.7rem "DM Mono", monospace; text-align: center; }
.sort-buttons { display: flex; gap: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 11px; background: rgba(13, 25, 35, .7); }
.sort-button { padding: 8px 13px; border-radius: 8px; color: var(--muted); background: transparent; font-size: .78rem; }
.sort-button:hover, .sort-button.active { color: var(--bg); background: var(--accent); }
.tag-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.tag-filter { padding: 8px 13px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--muted); font-size: .76rem; transition: all .2s; }
.tag-filter:hover { border-color: var(--line-strong); color: var(--text); }
.tag-filter.active { border-color: rgba(243, 197, 111, .55); background: rgba(243, 197, 111, .12); color: var(--accent-hot); }

.project-grid { column-width: 300px; column-gap: 20px; }
.project-card { display: inline-block; width: 100%; margin: 0 0 20px; overflow: hidden; vertical-align: top; break-inside: avoid; border: 1px solid var(--line); border-radius: var(--radius-lg); background: linear-gradient(145deg, rgba(18, 33, 45, .98), rgba(11, 22, 31, .98)); box-shadow: 0 8px 24px rgba(0,0,0,.08); transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.project-card:hover { transform: translateY(-4px); border-color: rgba(120, 229, 208, .34); box-shadow: var(--shadow); }
.project-cover { position: relative; height: var(--cover-height, 194px); overflow: hidden; background: var(--cover-bg, #152735); }
.project-cover::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 35%, rgba(5, 12, 18, .55) 100%); pointer-events: none; }
.project-cover img { width: 100%; height: 100%; display: block; object-fit: cover; opacity: .9; transition: transform .5s ease, opacity .3s; }
.project-card:hover .project-cover img { transform: scale(1.04); opacity: 1; }
.cover-fallback { position: absolute; inset: 0; display: grid; place-items: center; padding: 30px; text-align: center; }
.cover-fallback strong { max-width: 240px; color: rgba(238, 245, 247, .85); font-size: clamp(1.3rem, 2vw, 2rem); letter-spacing: -0.06em; line-height: 1.05; }
.cover-fallback span { position: absolute; right: 15px; bottom: 13px; color: rgba(238, 245, 247, .72); font: .65rem "DM Mono", monospace; }
.cover-overlay { position: absolute; z-index: 1; left: 15px; top: 15px; right: 15px; display: flex; justify-content: space-between; align-items: start; }
.signal-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 9px; border: 1px solid rgba(255,255,255,.2); border-radius: 999px; background: rgba(5, 12, 18, .55); color: #f4f9f8; font: 500 .65rem "DM Mono", monospace; backdrop-filter: blur(9px); }
.signal-badge::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.score-mark { color: var(--accent-hot); font: 500 .68rem "DM Mono", monospace; text-shadow: 0 1px 14px rgba(243, 197, 111, .7); }
.card-body { padding: 18px 18px 15px; }
.card-title-row { display: flex; align-items: start; gap: 10px; justify-content: space-between; }
.card-title { margin: 0; color: var(--text); font-size: 1.1rem; line-height: 1.15; letter-spacing: -0.04em; }
.card-title a:hover { color: var(--accent-hot); }
.repo-name { margin: 6px 0 0; color: var(--muted); font: .68rem "DM Mono", monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-description { display: -webkit-box; overflow: hidden; margin: 14px 0 16px; color: var(--muted-strong); font-size: .83rem; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.card-tags { display: flex; flex-wrap: wrap; gap: 6px; min-height: 23px; }
.card-tag { padding: 4px 7px; border-radius: 5px; background: rgba(120, 229, 208, .08); color: #a6d8d1; font: .63rem "DM Mono", monospace; }
.card-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 17px; padding-top: 13px; border-top: 1px solid var(--line); color: var(--muted); font: .67rem "DM Mono", monospace; }
.meta-left, .meta-right { display: inline-flex; align-items: center; gap: 11px; }
.meta-left span { display: inline-flex; align-items: center; gap: 4px; }
.language-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--cyan); }
.card-actions { display: flex; align-items: center; gap: 6px; margin-top: 13px; }
.action-button { display: inline-flex; align-items: center; gap: 5px; padding: 7px 8px; border: 1px solid transparent; border-radius: 8px; color: var(--muted); background: transparent; font-size: .7rem; transition: all .2s; }
.action-button:hover { border-color: var(--line); color: var(--text); background: rgba(255,255,255,.04); }
.action-button.is-saved { color: var(--accent); background: rgba(243, 197, 111, .09); }
.action-icon { font-size: .9rem; line-height: 1; }

.empty-state { padding: 85px 20px; text-align: center; }
.empty-icon { color: var(--accent); font-size: 2rem; }
.empty-state h2 { margin: 14px 0 6px; font-size: 1.2rem; }
.empty-state p { margin: 0 0 20px; color: var(--muted); font-size: .85rem; }
.ghost-button { padding: 10px 15px; border: 1px solid var(--line-strong); border-radius: 9px; background: transparent; color: var(--muted-strong); font-size: .78rem; }
.ghost-button:hover { color: var(--text); background: rgba(255,255,255,.04); }

.site-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 72px; padding: 24px 0 38px; border-top: 1px solid var(--line); color: var(--muted); font-size: .72rem; }
.site-footer > div { display: flex; align-items: center; color: var(--muted-strong); font-weight: 700; }
.site-footer p { margin: 0; font: .66rem "DM Mono", monospace; }

.toast { position: fixed; z-index: 20; left: 50%; bottom: 26px; max-width: calc(100% - 40px); padding: 10px 14px; border: 1px solid var(--line-strong); border-radius: 10px; opacity: 0; pointer-events: none; transform: translate(-50%, 14px); background: #142735; color: var(--text); font-size: .78rem; box-shadow: var(--shadow); transition: opacity .2s, transform .2s; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }

@media (max-width: 820px) {
  .app-shell { width: min(100% - 36px, 680px); }
  .topbar { height: 68px; gap: 16px; }
  .topbar-note { display: none; }
  .github-link { margin-left: auto; }
  .intro { padding: 28px 0 24px; }
  .intro h1 { font-size: clamp(2rem, 8vw, 3rem); }
  .control-row { display: block; }
  .search-box { max-width: none; }
  .sort-buttons { width: fit-content; margin-top: 12px; }
  .site-footer { display: block; }
  .site-footer p { margin-top: 13px; line-height: 1.7; }
}

@media (max-width: 500px) {
  .app-shell { width: min(100% - 26px, 680px); }
  .topnav { gap: 12px; font-size: .8rem; }
  .topnav a { display: none; }
  .github-link { padding: 8px 10px; }
  .control-heading { display: block; }
  .result-count { display: block; margin-top: 12px; }
  .project-grid { column-count: 1; }
  .project-card { margin-bottom: 15px; }
  .card-body { padding: 16px; }
}

/* Era themes: the page structure and catalog copy stay the same; only the
   visual language changes between 8-bit, Windows 98, and Vista Aero. */
.era-switcher {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 15;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(13, 25, 35, .88);
  box-shadow: var(--shadow);
  backdrop-filter: blur(12px);
}

.era-switcher-title {
  color: var(--muted);
  font: .62rem/1 "DM Mono", monospace;
  letter-spacing: .08em;
  white-space: nowrap;
}

.era-options { display: flex; gap: 4px; }

.era-option {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  font: .62rem/1 "DM Mono", monospace;
  white-space: nowrap;
}

.era-option:hover,
.era-option.is-selected {
  border-color: var(--line-strong);
  color: var(--text);
  background: rgba(255, 255, 255, .08);
}

.era-swatch {
  display: block;
  width: 13px;
  height: 13px;
  border: 1px solid currentColor;
  border-radius: 3px;
}

.swatch-pixel {
  color: #d7f64a;
  background-color: #171a3c;
  background-image: linear-gradient(90deg, #d7f64a 0 3px, transparent 3px 6px), linear-gradient(#ff7a70 0 3px, transparent 3px 6px);
  background-size: 6px 6px;
}

.swatch-win98 {
  color: #fff;
  background: linear-gradient(135deg, #000080 0 48%, #c0c0c0 49% 100%);
}

.swatch-vista {
  color: #fff;
  background: linear-gradient(145deg, #e9ffff, #77bad6 50%, #55aa7b);
}

body[data-style="win98"] {
  --bg: #008080;
  --bg-soft: #c0c0c0;
  --panel: #c0c0c0;
  --panel-strong: #d4d0c8;
  --line: #808080;
  --line-strong: #000080;
  --text: #000;
  --muted: #333;
  --muted-strong: #000;
  --accent: #000080;
  --accent-hot: #800000;
  --cyan: #008000;
  --shadow: 4px 4px 0 rgba(0, 0, 0, .55);
  --radius-xl: 0px;
  --radius-lg: 0px;
  --radius-md: 0px;
  min-height: 100vh;
  background-color: #008080;
  background-image: radial-gradient(rgba(255, 255, 255, .12) .7px, transparent .8px);
  background-size: 4px 4px;
  font-family: "MS Sans Serif", "Microsoft Sans Serif", Tahoma, "PingFang SC", sans-serif;
}

body[data-style="win98"] .topbar,
body[data-style="win98"] .era-switcher {
  border: 2px outset #fff;
  border-radius: 0;
  background: #c0c0c0;
  box-shadow: 3px 3px 0 #000;
  backdrop-filter: none;
}

body[data-style="win98"] .topbar { padding: 6px 9px; color: #000080; }
body[data-style="win98"] .brand-mark { filter: none; }
body[data-style="win98"] .topbar-note,
body[data-style="win98"] .topnav,
body[data-style="win98"] .github-link,
body[data-style="win98"] .era-switcher-title,
body[data-style="win98"] .era-option { color: #000080; }
body[data-style="win98"] .live-dot { border-radius: 0; background: #008000; box-shadow: none; }
body[data-style="win98"] .topnav .active::after { border-radius: 0; background: #800000; }
body[data-style="win98"] .github-link,
body[data-style="win98"] .era-option,
body[data-style="win98"] .sort-button,
body[data-style="win98"] .tag-filter,
body[data-style="win98"] .action-button,
body[data-style="win98"] .ghost-button {
  border: 2px outset #fff;
  border-radius: 0;
  background: #c0c0c0;
  color: #000080;
}
body[data-style="win98"] .github-link:hover,
body[data-style="win98"] .era-option:hover,
body[data-style="win98"] .era-option.is-selected,
body[data-style="win98"] .sort-button:hover,
body[data-style="win98"] .sort-button.active,
body[data-style="win98"] .tag-filter:hover,
body[data-style="win98"] .ghost-button:hover {
  border-color: #fff;
  background: #000080;
  color: #fff;
}
body[data-style="win98"] .era-swatch { border-radius: 0; }
body[data-style="win98"] .intro h1,
body[data-style="win98"] .control-heading h2,
body[data-style="win98"] .card-title { letter-spacing: 0; }
body[data-style="win98"] .section-kicker,
body[data-style="win98"] .result-count,
body[data-style="win98"] .repo-name,
body[data-style="win98"] .card-meta,
body[data-style="win98"] .card-tag,
body[data-style="win98"] .era-switcher-title,
body[data-style="win98"] .era-option { font-family: "Courier New", monospace; }
body[data-style="win98"] .section-kicker { color: #800000; }
body[data-style="win98"] .search-box {
  border: 2px inset #fff;
  border-radius: 0;
  background: #fff;
  color: #000;
}
body[data-style="win98"] .search-box:focus-within { border-color: #000080; background: #fff; }
body[data-style="win98"] .search-box input { color: #000; }
body[data-style="win98"] .search-box input::placeholder { color: #666; }
body[data-style="win98"] kbd { border: 1px solid #808080; border-radius: 0; background: #d4d0c8; color: #000; }
body[data-style="win98"] .sort-buttons { gap: 0; padding: 2px; border: 2px inset #fff; border-radius: 0; background: #c0c0c0; }
body[data-style="win98"] .sort-button.active { border-style: inset; background: #000080; color: #fff; }
body[data-style="win98"] .tag-filter.active { border-style: inset; border-color: #808080; background: #000080; color: #fff; }
body[data-style="win98"] .project-card {
  border: 2px outset #fff;
  border-radius: 0;
  background: #c0c0c0;
  box-shadow: 4px 4px 0 #000;
  transition: none;
}
body[data-style="win98"] .project-card:hover { transform: none; border-color: #fff; box-shadow: 4px 4px 0 #000; }
body[data-style="win98"] .project-cover { background: #000080; }
body[data-style="win98"] .project-cover::after { background: linear-gradient(180deg, transparent 35%, rgba(0, 0, 0, .45)); }
body[data-style="win98"] .project-cover img { image-rendering: pixelated; opacity: .92; }
body[data-style="win98"] .signal-badge { border: 1px solid #fff; border-radius: 0; background: #000080; color: #fff; backdrop-filter: none; }
body[data-style="win98"] .signal-badge::before { border-radius: 0; background: #00ff00; }
body[data-style="win98"] .score-mark { color: #fff; text-shadow: 1px 1px #000; }
body[data-style="win98"] .card-title a:hover { color: #800000; }
body[data-style="win98"] .card-description,
body[data-style="win98"] .card-meta,
body[data-style="win98"] .site-footer,
body[data-style="win98"] .site-footer > div { color: #222; }
body[data-style="win98"] .card-tag { border-radius: 0; background: #d4d0c8; color: #000080; }
body[data-style="win98"] .card-meta { border-top-color: #808080; }
body[data-style="win98"] .language-dot { border-radius: 0; background: #008000; }
body[data-style="win98"] .action-button.is-saved { border-style: inset; background: #000080; color: #fff; }
body[data-style="win98"] .empty-state,
body[data-style="win98"] .toast { color: #000; }
body[data-style="win98"] .toast { border: 2px outset #fff; border-radius: 0; background: #c0c0c0; box-shadow: 3px 3px 0 #000; }
body[data-style="win98"] .site-footer { border-top: 2px solid #808080; }

body[data-style="pixel"] {
  --bg: #12162e;
  --bg-soft: #1c2144;
  --panel: #1c2144;
  --panel-strong: #252b54;
  --line: #4f5a8c;
  --line-strong: #d7f64a;
  --text: #f7f0da;
  --muted: #a8acc6;
  --muted-strong: #d7d9ea;
  --accent: #d7f64a;
  --accent-hot: #ff7a70;
  --cyan: #70e7d5;
  --shadow: 5px 5px 0 #090b1a;
  --radius-xl: 0px;
  --radius-lg: 0px;
  --radius-md: 0px;
  min-height: 100vh;
  background-color: #12162e;
  background-image: linear-gradient(90deg, rgba(215, 246, 74, .18) 0 2px, transparent 2px 8px), linear-gradient(rgba(215, 246, 74, .12) 0 2px, transparent 2px 8px);
  background-size: 8px 8px;
  font-family: "Courier New", "MS Gothic", monospace;
}

body[data-style="pixel"] .era-switcher,
body[data-style="pixel"] .project-card,
body[data-style="pixel"] .search-box,
body[data-style="pixel"] .sort-buttons,
body[data-style="pixel"] .sort-button,
body[data-style="pixel"] .tag-filter,
body[data-style="pixel"] .github-link,
body[data-style="pixel"] .action-button,
body[data-style="pixel"] .ghost-button,
body[data-style="pixel"] .toast {
  border-radius: 0;
  box-shadow: 5px 5px 0 #090b1a;
}
body[data-style="pixel"] .topbar { border-bottom: 3px solid var(--line); }
body[data-style="pixel"] .brand-mark { filter: none; }
body[data-style="pixel"] .topbar-note,
body[data-style="pixel"] .section-kicker,
body[data-style="pixel"] .result-count,
body[data-style="pixel"] .repo-name,
body[data-style="pixel"] .card-meta,
body[data-style="pixel"] .card-tag,
body[data-style="pixel"] .era-switcher-title,
body[data-style="pixel"] .era-option { font-family: "Courier New", monospace; }
body[data-style="pixel"] .live-dot,
body[data-style="pixel"] .language-dot,
body[data-style="pixel"] .signal-badge::before { border-radius: 0; box-shadow: none; }
body[data-style="pixel"] .topnav .active::after { border-radius: 0; }
body[data-style="pixel"] .era-switcher { background: #1c2144; }
body[data-style="pixel"] .era-option:hover,
body[data-style="pixel"] .era-option.is-selected { border: 3px solid var(--accent); background: #252b54; color: var(--accent); }
body[data-style="pixel"] .search-box,
body[data-style="pixel"] .sort-buttons { border: 3px solid var(--line); background: #1c2144; }
body[data-style="pixel"] .search-box:focus-within { border-color: var(--accent); background: #252b54; }
body[data-style="pixel"] .search-box input { color: var(--text); }
body[data-style="pixel"] .sort-buttons { gap: 3px; padding: 3px; }
body[data-style="pixel"] .sort-button,
body[data-style="pixel"] .tag-filter,
body[data-style="pixel"] .github-link,
body[data-style="pixel"] .action-button,
body[data-style="pixel"] .ghost-button { border: 2px solid var(--line); background: #1c2144; }
body[data-style="pixel"] .sort-button:hover,
body[data-style="pixel"] .sort-button.active,
body[data-style="pixel"] .tag-filter.active { border-color: var(--accent); border-radius: 0; background: #d7f64a; color: #12162e; }
body[data-style="pixel"] .project-card { border: 3px solid var(--line); background: #1c2144; transition: none; }
body[data-style="pixel"] .project-card:hover { transform: none; border-color: var(--accent); box-shadow: 5px 5px 0 #090b1a; }
body[data-style="pixel"] .project-cover::after { background-image: linear-gradient(90deg, rgba(215, 246, 74, .15) 0 2px, transparent 2px 6px), linear-gradient(rgba(255, 122, 112, .1) 0 2px, transparent 2px 6px); background-size: 6px 6px; }
body[data-style="pixel"] .project-cover img { image-rendering: pixelated; filter: saturate(.8) contrast(1.15); }
body[data-style="pixel"] .signal-badge { border: 2px solid var(--line-strong); border-radius: 0; background: #12162e; color: var(--accent); backdrop-filter: none; }
body[data-style="pixel"] .score-mark { color: var(--accent-hot); text-shadow: 2px 2px #090b1a; }
body[data-style="pixel"] .card-title a:hover { color: var(--accent-hot); }
body[data-style="pixel"] .card-tag { border: 1px solid var(--line); background: #252b54; color: var(--cyan); }
body[data-style="pixel"] .card-meta { border-top: 2px solid var(--line); }
body[data-style="pixel"] .action-button.is-saved { border-color: var(--accent); background: #252b54; color: var(--accent); }
body[data-style="pixel"] .toast { border: 3px solid var(--accent); background: #1c2144; }

body[data-style="vista"] {
  --bg: #c7e9fb;
  --bg-soft: rgba(255, 255, 255, .58);
  --panel: rgba(241, 252, 255, .62);
  --panel-strong: rgba(255, 255, 255, .82);
  --line: rgba(255, 255, 255, .72);
  --line-strong: rgba(38, 115, 153, .52);
  --text: #15364b;
  --muted: #4a6b7d;
  --muted-strong: #244b62;
  --accent: #126091;
  --accent-hot: #c85d80;
  --cyan: #47a9c9;
  --shadow: 0 18px 44px rgba(38, 92, 119, .26), inset 0 1px 0 rgba(255, 255, 255, .8);
  --radius-xl: 18px;
  --radius-lg: 16px;
  --radius-md: 10px;
  min-height: 100vh;
  background: radial-gradient(circle at 76% 8%, rgba(255, 255, 255, .82), transparent 22rem), radial-gradient(circle at 9% 30%, rgba(255, 255, 255, .55), transparent 18rem), linear-gradient(180deg, #9bd8f6 0%, #e9f8ff 45%, #8dd19d 100%);
  background-attachment: fixed;
  font-family: "Segoe UI", "Trebuchet MS", "PingFang SC", sans-serif;
}

body[data-style="vista"] .topbar,
body[data-style="vista"] .era-switcher,
body[data-style="vista"] .project-card,
body[data-style="vista"] .search-box,
body[data-style="vista"] .sort-buttons,
body[data-style="vista"] .github-link,
body[data-style="vista"] .toast {
  border: 1px solid rgba(255, 255, 255, .82);
  background: linear-gradient(145deg, rgba(255, 255, 255, .78), rgba(191, 235, 250, .48) 50%, rgba(117, 193, 211, .38));
  box-shadow: var(--shadow);
  backdrop-filter: blur(14px) saturate(1.15);
}
body[data-style="vista"] .topbar { border-radius: 16px; padding: 0 16px; }
body[data-style="vista"] .brand-mark { filter: drop-shadow(0 0 10px rgba(255, 255, 255, .9)); }
body[data-style="vista"] .topbar-note,
body[data-style="vista"] .topnav,
body[data-style="vista"] .github-link,
body[data-style="vista"] .era-switcher-title,
body[data-style="vista"] .era-option { color: #24536b; }
body[data-style="vista"] .live-dot { background: #2a9a9d; box-shadow: 0 0 0 4px rgba(255, 255, 255, .3), 0 0 14px rgba(49, 172, 190, .8); }
body[data-style="vista"] .topnav .active::after { background: #126091; box-shadow: 0 0 10px rgba(18, 96, 145, .45); }
body[data-style="vista"] .github-link:hover,
body[data-style="vista"] .era-option:hover,
body[data-style="vista"] .era-option.is-selected { border-color: rgba(255, 255, 255, .98); background: rgba(255, 255, 255, .46); color: #126091; }
body[data-style="vista"] .era-swatch { border-color: rgba(255, 255, 255, .9); border-radius: 50%; box-shadow: 0 1px 4px rgba(18, 96, 145, .25); }
body[data-style="vista"] .intro h1,
body[data-style="vista"] .control-heading h2,
body[data-style="vista"] .card-title { text-shadow: 0 1px 0 rgba(255, 255, 255, .92), 0 0 18px rgba(255, 255, 255, .42); }
body[data-style="vista"] .section-kicker { color: #126091; text-shadow: 0 1px #fff; }
body[data-style="vista"] .search-box { background: rgba(255, 255, 255, .48); }
body[data-style="vista"] .search-box:focus-within { border-color: rgba(18, 96, 145, .56); background: rgba(255, 255, 255, .72); }
body[data-style="vista"] .search-box input { color: #15364b; }
body[data-style="vista"] .search-box input::placeholder { color: #5e7f91; }
body[data-style="vista"] kbd { border: 1px solid rgba(255, 255, 255, .7); border-radius: 6px; background: rgba(255, 255, 255, .4); color: #3b6b80; }
body[data-style="vista"] .sort-buttons { gap: 3px; padding: 3px; }
body[data-style="vista"] .sort-button,
body[data-style="vista"] .tag-filter,
body[data-style="vista"] .action-button,
body[data-style="vista"] .ghost-button { border: 1px solid rgba(255, 255, 255, .66); border-radius: 10px; background: rgba(255, 255, 255, .26); color: #3a6479; }
body[data-style="vista"] .sort-button:hover,
body[data-style="vista"] .sort-button.active,
body[data-style="vista"] .tag-filter.active { border-color: rgba(255, 255, 255, .92); background: linear-gradient(135deg, rgba(255, 255, 255, .78), rgba(108, 190, 215, .62)); color: #124f6c; box-shadow: inset 0 1px 0 #fff, 0 5px 12px rgba(33, 117, 145, .16); }
body[data-style="vista"] .project-card { background: linear-gradient(145deg, rgba(255, 255, 255, .72), rgba(214, 244, 251, .48) 45%, rgba(111, 199, 207, .42)); }
body[data-style="vista"] .project-card:hover { transform: translateY(-4px); border-color: rgba(255, 255, 255, .98); box-shadow: 0 22px 48px rgba(37, 104, 130, .31), inset 0 1px 0 #fff; }
body[data-style="vista"] .project-cover { background: linear-gradient(145deg, #dffaff, #7fc5dc 50%, #65ad87); }
body[data-style="vista"] .project-cover::after { background: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(18, 75, 101, .5)); }
body[data-style="vista"] .project-cover img { filter: saturate(.9) contrast(1.04); }
body[data-style="vista"] .signal-badge { border: 1px solid rgba(255, 255, 255, .78); border-radius: 999px; background: rgba(15, 74, 103, .42); color: #fff; box-shadow: inset 0 1px rgba(255, 255, 255, .46), 0 3px 10px rgba(30, 97, 119, .22); }
body[data-style="vista"] .signal-badge::before { background: #d6ff98; box-shadow: 0 0 8px #fff; }
body[data-style="vista"] .score-mark { color: #fff; text-shadow: 0 1px 5px rgba(18, 80, 106, .76); }
body[data-style="vista"] .card-title a:hover { color: #c85d80; }
body[data-style="vista"] .card-description,
body[data-style="vista"] .card-meta,
body[data-style="vista"] .site-footer,
body[data-style="vista"] .site-footer > div { color: #315e72; }
body[data-style="vista"] .card-tag { border: 1px solid rgba(255, 255, 255, .62); border-radius: 7px; background: rgba(255, 255, 255, .32); color: #2c7897; }
body[data-style="vista"] .card-meta { border-top-color: rgba(255, 255, 255, .62); }
body[data-style="vista"] .language-dot { background: #43a3b9; box-shadow: 0 0 8px rgba(67, 163, 185, .6); }
body[data-style="vista"] .action-button:hover,
body[data-style="vista"] .action-button.is-saved { border-color: rgba(255, 255, 255, .9); background: rgba(255, 255, 255, .5); color: #126091; }
body[data-style="vista"] .toast { color: #15364b; }

@media (max-width: 500px) {
  .era-switcher { right: 13px; bottom: 13px; }
  .era-switcher-title { display: none; }
  .era-option { padding: 8px; }
}

/* RetroWhisper Aero parity: the same sky/grass light field, specular edges,
   physical glass depth, and glossy blue controls used by the reference site. */
body[data-style="vista"] {
  position: relative;
  isolation: isolate;
  --bg: #8bd3f1;
  --bg-soft: rgba(255, 255, 255, .34);
  --panel: rgba(255, 255, 255, .34);
  --panel-strong: rgba(255, 255, 255, .64);
  --line: rgba(255, 255, 255, .78);
  --line-strong: #0a73be;
  --text: #123956;
  --muted: #245770;
  --muted-strong: #244b62;
  --accent: #0a73be;
  --accent-hot: #5a9f36;
  --cyan: #47a9c9;
  --shadow: rgba(15, 63, 101, .35);
  --radius-xl: 18px;
  --radius-lg: 18px;
  --radius-md: 18px;
  min-height: 100vh;
  background-color: #8bd3f1;
  background-image: linear-gradient(to bottom, #6fc7ee 0%, #e4faff 38%, #b6e9e6 52%, #84cf91 67%, #2f8374 100%);
  background-attachment: fixed;
  color-scheme: light;
  font-family: "Segoe UI", Arial, sans-serif;
}

body[data-style="vista"]::before,
body[data-style="vista"]::after {
  position: fixed;
  inset: 0;
  pointer-events: none;
  content: "";
}

body[data-style="vista"]::before {
  z-index: -1;
  opacity: 1;
  filter: none;
  background: radial-gradient(ellipse at 12% 18%, rgba(255, 255, 255, .78) 0 7%, transparent 21%), radial-gradient(ellipse at 78% 14%, rgba(255, 255, 255, .58) 0 6%, transparent 18%), radial-gradient(circle at 78% 25%, rgba(255, 255, 226, .92) 0 2%, transparent 10%), radial-gradient(ellipse at 30% 78%, rgba(255, 255, 255, .25) 0 12%, transparent 28%);
  mix-blend-mode: screen;
}

body[data-style="vista"]::after {
  z-index: -1;
  opacity: .34;
  background-image: radial-gradient(circle at 20% 61%, rgba(255, 255, 255, .72) 0 2px, transparent 3px), radial-gradient(circle at 83% 54%, rgba(255, 255, 255, .62) 0 3px, transparent 4px), radial-gradient(circle at 44% 84%, rgba(255, 255, 255, .3) 0 2px, transparent 4px);
  background-size: 180px 150px, 240px 180px, 140px 120px;
}

body[data-style="vista"] .topbar {
  min-height: 72px;
  padding: 10px 16px;
  border: 1px solid rgba(255, 255, 255, .82);
  border-top-color: #fff;
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .86) 0%, rgba(220, 246, 255, .6) 44%, rgba(84, 154, 192, .42) 100%);
  box-shadow: 0 12px 22px var(--shadow), inset 0 1px 0 #fff, inset 0 -4px 10px rgba(34, 111, 157, .22);
  backdrop-filter: blur(15px) saturate(1.35);
}

body[data-style="vista"] .brand-mark {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .88);
  border-radius: 12px;
  background: linear-gradient(145deg, #c6ffff 0%, #62d9ee 47%, #167fc0 53%, #70bfea 100%);
  color: #064979;
  box-shadow: 0 6px 12px rgba(18, 91, 132, .32), inset 0 1px 1px #fff, inset 0 -4px 6px rgba(10, 86, 139, .28);
  text-shadow: 0 1px #fff;
  filter: none;
}

body[data-style="vista"] .topbar-note,
body[data-style="vista"] .topnav,
body[data-style="vista"] .github-link,
body[data-style="vista"] .era-switcher-title,
body[data-style="vista"] .era-option,
body[data-style="vista"] .card-description,
body[data-style="vista"] .card-meta,
body[data-style="vista"] .site-footer,
body[data-style="vista"] .site-footer > div {
  color: #245770;
}

body[data-style="vista"] .topnav .active::after {
  background: #0a73be;
  box-shadow: 0 0 10px rgba(10, 115, 190, .45);
}

body[data-style="vista"] .live-dot {
  background: #43a3b9;
  box-shadow: 0 0 0 4px rgba(255, 255, 255, .3), 0 0 14px rgba(49, 172, 190, .8);
}

body[data-style="vista"] .project-card,
body[data-style="vista"] .search-box,
body[data-style="vista"] .sort-buttons,
body[data-style="vista"] .era-switcher,
body[data-style="vista"] .empty-state,
body[data-style="vista"] .toast {
  border: 1px solid rgba(255, 255, 255, .86);
  border-top-color: #fff;
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(255, 255, 255, .64) 0%, rgba(255, 255, 255, .34) 42%, rgba(80, 157, 192, .34) 100%);
  box-shadow: 0 18px 36px var(--shadow), inset 0 1px 0 rgba(255, 255, 255, .96), inset 0 -14px 24px rgba(37, 111, 161, .15);
  backdrop-filter: blur(18px) saturate(1.4);
}

body[data-style="vista"] .project-card {
  position: relative;
}

body[data-style="vista"] .project-card::before {
  position: absolute;
  top: 0;
  right: 12px;
  left: 12px;
  z-index: 4;
  height: 2px;
  content: "";
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .98) 20% 80%, transparent);
  pointer-events: none;
}

body[data-style="vista"] .project-card:hover {
  transform: translateY(-8px);
  border-color: rgba(139, 244, 219, .7);
  box-shadow: 0 24px 45px var(--shadow), 0 0 24px rgba(139, 244, 219, .11), inset 0 1px 0 rgba(255, 255, 255, .3);
}

body[data-style="vista"] .intro h1,
body[data-style="vista"] .control-heading h2,
body[data-style="vista"] .card-title {
  text-shadow: 0 1px 0 rgba(255, 255, 255, .92), 0 0 18px rgba(255, 255, 255, .42);
}

body[data-style="vista"] .section-kicker,
body[data-style="vista"] .result-count {
  color: #0a73be;
  text-shadow: 0 1px #fff;
}

body[data-style="vista"] .search-box,
body[data-style="vista"] .sort-buttons {
  background: linear-gradient(180deg, rgba(255, 255, 255, .58), rgba(110, 189, 220, .2));
  box-shadow: inset 0 1px rgba(255, 255, 255, .76), 0 4px 8px rgba(28, 100, 137, .24);
}

body[data-style="vista"] .search-box:focus-within {
  border-color: #0a73be;
  background: linear-gradient(180deg, rgba(255, 255, 255, .78), rgba(110, 189, 220, .3));
  box-shadow: inset 0 1px #fff, inset 0 -4px 8px rgba(25, 104, 155, .2), 0 5px 10px rgba(28, 100, 137, .28);
}

body[data-style="vista"] .search-icon,
body[data-style="vista"] .search-box,
body[data-style="vista"] .sort-button,
body[data-style="vista"] .tag-filter,
body[data-style="vista"] .github-link,
body[data-style="vista"] .action-button,
body[data-style="vista"] .ghost-button,
body[data-style="vista"] .era-option,
body[data-style="vista"] kbd {
  border: 1px solid rgba(255, 255, 255, .78);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .58), rgba(110, 189, 220, .2));
  box-shadow: inset 0 1px rgba(255, 255, 255, .76), 0 4px 8px rgba(28, 100, 137, .24);
}

body[data-style="vista"] .search-icon {
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  color: #0a73be;
}

body[data-style="vista"] .search-box input,
body[data-style="vista"] .sort-button,
body[data-style="vista"] .tag-filter,
body[data-style="vista"] .action-button,
body[data-style="vista"] .ghost-button,
body[data-style="vista"] .era-option,
body[data-style="vista"] .github-link {
  color: #245770;
}

body[data-style="vista"] .sort-button:hover,
body[data-style="vista"] .tag-filter:hover,
body[data-style="vista"] .github-link:hover,
body[data-style="vista"] .action-button:hover,
body[data-style="vista"] .ghost-button:hover,
body[data-style="vista"] .era-option:hover {
  transform: translateY(-2px);
  border-color: rgba(255, 255, 255, .98);
  color: #075482;
  box-shadow: inset 0 1px #fff, 0 7px 13px rgba(28, 100, 137, .3);
}

body[data-style="vista"] .era-option.is-selected,
body[data-style="vista"] .sort-button.active,
body[data-style="vista"] .tag-filter.active,
body[data-style="vista"] .action-button.is-saved,
body[data-style="vista"] .ghost-button:active {
  border-color: #0a73be;
  background: linear-gradient(180deg, rgba(255, 255, 255, .8), rgba(87, 190, 226, .45) 47%, rgba(28, 122, 180, .42) 52%, rgba(255, 255, 255, .34));
  color: #075482;
  box-shadow: inset 0 1px #fff, inset 0 -4px 8px rgba(25, 104, 155, .2), 0 5px 10px rgba(28, 100, 137, .28);
}

body[data-style="vista"] .era-option.is-selected:hover,
body[data-style="vista"] .sort-button.active:hover,
body[data-style="vista"] .tag-filter.active:hover,
body[data-style="vista"] .action-button.is-saved:hover {
  box-shadow: inset 0 1px #fff, inset 0 -4px 8px rgba(25, 104, 155, .2), 0 8px 14px rgba(28, 100, 137, .36);
}

body[data-style="vista"] .project-cover {
  border-radius: 15px 15px 0 0;
  background: linear-gradient(145deg, #dffaff, #7fc5dc 50%, #65ad87);
}

body[data-style="vista"] .project-cover::after {
  background: linear-gradient(180deg, rgba(12, 78, 110, .02) 12%, rgba(15, 78, 104, .67) 100%);
}

body[data-style="vista"] .project-cover img {
  opacity: .86;
  filter: saturate(1.18) contrast(1.02);
}

body[data-style="vista"] .signal-badge,
body[data-style="vista"] .card-tag {
  border: 1px solid rgba(255, 255, 255, .78);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .7), rgba(95, 190, 219, .22));
  color: #0a6b9f;
  box-shadow: inset 0 1px #fff, 0 2px 5px rgba(28, 100, 137, .22);
}

body[data-style="vista"] .signal-badge::before {
  background: #d6ff98;
  box-shadow: 0 0 8px #fff;
}

body[data-style="vista"] .score-mark {
  color: #fff;
  text-shadow: 0 1px 5px rgba(18, 80, 106, .76);
}

body[data-style="vista"] .card-title a:hover {
  color: #5a9f36;
}

body[data-style="vista"] .card-meta {
  border-top-color: rgba(255, 255, 255, .62);
}

body[data-style="vista"] .language-dot {
  background: #43a3b9;
  box-shadow: 0 0 8px rgba(67, 163, 185, .6);
}

body[data-style="vista"] .toast {
  color: #123956;
}
