/* Joshua Lillywhite — shared light/dark theme
   Tokens + intentional light remaps for existing Tailwind arbitrary colors.
   data-theme on <html> is set by the head boot script before paint. */

:root,
[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0A0A0A;
  --bg-elevated: #121212;
  --surface: #121212;
  --surface-2: #1A1A1A;
  --text: #F5F2E9;
  --text-soft: #EDE9E0;
  --text-muted: #A8A29E;
  --text-quote: #CFC9B8;
  --accent: #BFA46F;
  --accent-link: #BFA46F;
  --on-accent: #0A0A0A;
  --border: rgba(255, 255, 255, 0.10);
  --border-soft: rgba(255, 255, 255, 0.05);
  --border-strong: rgba(255, 255, 255, 0.20);
  --nav-bg: rgba(10, 10, 10, 0.95);
  --nav-bg-scrolled: rgba(10, 10, 10, 0.96);
  --overlay: rgba(0, 0, 0, 0.60);
  --shadow-card: 0 25px 50px -12px rgb(0 0 0 / 0.40);
  --shadow-soft: 0 10px 15px -3px rgb(0 0 0 / 0.30), 0 4px 6px -4px rgb(0 0 0 / 0.30);
  --divider: linear-gradient(to right, transparent, #3F3F3F, transparent);
  --grid-line: rgba(191, 164, 111, 0.03);
  --input-bg: #121212;
  --hero-cta-bg: #ffffff;
  --hero-cta-text: #0A0A0A;
}

[data-theme="light"] {
  color-scheme: light;
  --bg: #F7F4EE;
  --bg-elevated: #FAF8F4;
  --surface: #FAF8F4;
  --surface-2: #F0EBE3;
  --text: #1C1917;
  --text-soft: #292524;
  --text-muted: #78716C;
  --text-quote: #57534E;
  --accent: #BFA46F;
  --accent-link: #9A7B3C;
  --on-accent: #1C1917;
  --border: rgba(120, 113, 108, 0.22);
  --border-soft: rgba(120, 113, 108, 0.14);
  --border-strong: rgba(120, 113, 108, 0.34);
  --nav-bg: rgba(247, 244, 238, 0.92);
  --nav-bg-scrolled: rgba(250, 248, 244, 0.96);
  --overlay: rgba(28, 25, 23, 0.45);
  --shadow-card: 0 18px 40px -18px rgba(28, 25, 23, 0.16);
  --shadow-soft: 0 8px 20px -10px rgba(28, 25, 23, 0.12), 0 2px 6px -2px rgba(28, 25, 23, 0.08);
  --divider: linear-gradient(to right, transparent, rgba(120, 113, 108, 0.35), transparent);
  --grid-line: rgba(154, 123, 60, 0.06);
  --input-bg: #FAF8F4;
  --hero-cta-bg: #1C1917;
  --hero-cta-text: #F7F4EE;
}

html {
  background-color: var(--bg);
}

body {
  background-color: var(--bg) !important;
  color: var(--text) !important;
  transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease;
}

/* Smooth theme flips on chrome + cards */
#nav,
#mobile-menu,
footer,
.project-card,
.post-card,
[class*="rounded-2xl"],
[class*="border-white/"],
[class*="bg-[#0A0A0A]"],
[class*="bg-[#121212]"],
[class*="bg-[#1A1A1A]"],
[class*="bg-[#1a1a1a]"] {
  transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

/* —— Semantic helpers —— */
.theme-bg { background-color: var(--bg) !important; }
.theme-surface { background-color: var(--surface) !important; }
.theme-text { color: var(--text) !important; }
.theme-muted { color: var(--text-muted) !important; }
.theme-accent { color: var(--accent) !important; }
.theme-link { color: var(--accent-link) !important; }
.theme-border { border-color: var(--border) !important; }

.section-header { color: var(--text-muted) !important; }
.elegant-divider { background: var(--divider) !important; }
.gold-accent { color: var(--accent) !important; }
.architecture-grid {
  background-image:
    linear-gradient(var(--grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-line) 1px, transparent 1px) !important;
}

.nav-scrolled {
  background-color: var(--nav-bg-scrolled) !important;
  backdrop-filter: blur(12px);
}

.project-card:hover { box-shadow: var(--shadow-card) !important; }
.luxury-shadow { box-shadow: var(--shadow-soft) !important; }

/* —— Light remaps for existing dark Tailwind utilities —— */
[data-theme="light"] [class*="bg-[#0A0A0A]"],
[data-theme="light"] [class*="bg-[#0a0a0a]"] {
  background-color: var(--bg) !important;
}
[data-theme="light"] [class*="bg-[#0A0A0A]/95"],
[data-theme="light"] [class*="bg-[#0a0a0a]/95"] {
  background-color: var(--nav-bg) !important;
}
[data-theme="light"] [class*="bg-[#121212]"] {
  background-color: var(--surface) !important;
}
[data-theme="light"] [class*="bg-[#1A1A1A]"],
[data-theme="light"] [class*="bg-[#1a1a1a]"] {
  background-color: var(--surface-2) !important;
}

[data-theme="light"] [class^="text-[#F5F2E9]"],
[data-theme="light"] [class*=" text-[#F5F2E9]"],
[data-theme="light"] [class^="text-[#f5f2e9]"],
[data-theme="light"] [class*=" text-[#f5f2e9]"] {
  color: var(--text) !important;
}
[data-theme="light"] [class^="text-[#EDE9E0]"],
[data-theme="light"] [class*=" text-[#EDE9E0]"],
[data-theme="light"] [class^="text-[#ede9e0]"],
[data-theme="light"] [class*=" text-[#ede9e0]"] {
  color: var(--text-soft) !important;
}
[data-theme="light"] [class^="text-[#A8A29E]"],
[data-theme="light"] [class*=" text-[#A8A29E]"],
[data-theme="light"] [class^="text-[#a8a29e]"],
[data-theme="light"] [class*=" text-[#a8a29e]"] {
  color: var(--text-muted) !important;
}
[data-theme="light"] [class*="text-[#CFC9B8]"],
[data-theme="light"] [class*="text-[#cfc9b8]"],
[data-theme="light"] [class*="text-[#D9D3C7]"] {
  color: var(--text-quote) !important;
}
/* Exact utility token only — do not match hover:text-[#BFA46F] */
[data-theme="light"] [class^="text-[#BFA46F]"],
[data-theme="light"] [class*=" text-[#BFA46F]"] {
  color: var(--accent-link) !important;
}
[data-theme="light"] a.nav-link[class^="text-[#BFA46F]"],
[data-theme="light"] a.nav-link[class*=" text-[#BFA46F]"] {
  color: var(--accent-link) !important;
}

[data-theme="light"] [class*="hover:text-white"]:hover,
[data-theme="light"] [class*="hover:text-[#F5F2E9]"]:hover {
  color: var(--text) !important;
}
[data-theme="light"] [class*="hover:text-[#BFA46F]"]:hover,
[data-theme="light"] [class*="group-hover:text-[#BFA46F]"]:hover,
[data-theme="light"] .group:hover [class*="group-hover:text-[#BFA46F]"] {
  color: var(--accent-link) !important;
}
[data-theme="light"] [class*="hover:bg-white/5"]:hover {
  background-color: rgba(28, 25, 23, 0.04) !important;
}

[data-theme="light"] [class*="border-white/5"] { border-color: var(--border-soft) !important; }
[data-theme="light"] [class*="border-white/10"],
[data-theme="light"] [class*="divide-white/10"] > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--border) !important;
}
[data-theme="light"] [class*="border-white/20"],
[data-theme="light"] [class*="border-white/30"],
[data-theme="light"] [class*="border-white/60"] {
  border-color: var(--border-strong) !important;
}
[data-theme="light"] [class*="bg-white/20"],
[data-theme="light"] [class*="bg-white/30"] {
  background-color: rgba(120, 113, 108, 0.22) !important;
}
[data-theme="light"] [class*="text-white/50"] {
  color: rgba(28, 25, 23, 0.45) !important;
}

/* Cards: soft stone + gentle daylight shadow */
[data-theme="light"] a.group.block[class*="rounded-2xl"],
[data-theme="light"] .post-card,
[data-theme="light"] .project-card {
  box-shadow: var(--shadow-soft);
}

/* Article body (posts often hardcode dark in <style>) */
[data-theme="light"] .article-content,
[data-theme="light"] .article-content.prose-invert {
  color: var(--text-soft) !important;
}
[data-theme="light"] .article-content h1,
[data-theme="light"] .article-content h2,
[data-theme="light"] .article-content h3,
[data-theme="light"] .article-content h4 {
  color: var(--text) !important;
}
[data-theme="light"] .article-content a {
  color: var(--accent-link);
}
[data-theme="light"] .article-content blockquote {
  color: var(--text-quote) !important;
  border-left-color: var(--accent) !important;
}
[data-theme="light"] .article-content img {
  box-shadow: var(--shadow-soft) !important;
}

/* Forms / inputs */
[data-theme="light"] input,
[data-theme="light"] textarea,
[data-theme="light"] select {
  background-color: var(--input-bg) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}
[data-theme="light"] ::placeholder,
[data-theme="light"] [class*="placeholder:text-[#A8A29E]"]::placeholder {
  color: var(--text-muted) !important;
}

/* Header chrome */
#nav {
  background-color: var(--nav-bg) !important;
  border-bottom-color: var(--border) !important;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}
#mobile-menu {
  background-color: var(--bg) !important;
}
#mobile-menu a {
  border-bottom-color: var(--border) !important;
  color: var(--text);
}
footer {
  color: var(--text-muted) !important;
  border-top-color: var(--border) !important;
}
footer a:hover {
  color: var(--text) !important;
}

/* Theme segmented control — Light · Dark · System */
.theme-seg {
  display: inline-flex;
  align-items: stretch;
  gap: 2px;
  padding: 3px;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
  vertical-align: middle;
}
.theme-seg__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.32rem;
  margin: 0;
  padding: 0.34rem 0.58rem;
  border-radius: 9999px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.62rem;
  font-weight: 560;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1;
  white-space: nowrap;
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}
.theme-seg__btn svg {
  width: 0.92rem;
  height: 0.92rem;
  flex-shrink: 0;
  display: block;
}
.theme-seg__btn:hover {
  color: var(--text);
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  background-color: color-mix(in srgb, var(--accent) 10%, transparent);
}
.theme-seg__btn.is-active,
.theme-seg__btn[aria-pressed="true"],
html[data-theme-pref="light"] .theme-seg__btn[data-theme-set="light"],
html[data-theme-pref="dark"] .theme-seg__btn[data-theme-set="dark"],
html[data-theme-pref="system"] .theme-seg__btn[data-theme-set="system"],
html:not([data-theme-pref]) .theme-seg__btn[data-theme-set="system"] {
  color: var(--text);
  border-color: var(--accent);
  background-color: color-mix(in srgb, var(--accent) 18%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}

/* Legacy single-button (kept harmless if any remain) */
.theme-toggle:not(.theme-seg) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  cursor: pointer;
}

/* —— Full-bleed photo hero: cream type + scrim, theme-independent ——
   Preferred: keep #F5F2E9 on dark cliff photo; below-fold uses light tokens. */
header.photo-hero,
header.relative.h-\[100dvh\] {
  color: #F5F2E9 !important;
}
header.photo-hero > .photo-hero__scrim,
header.relative.h-\[100dvh\] > .absolute.inset-0[class*="bg-black"] {
  /* subtle radial darkening behind type (works light + dark) */
  background:
    radial-gradient(ellipse 75% 60% at 50% 42%, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.68) 100%) !important;
}
[data-theme="light"] header.photo-hero,
[data-theme="light"] header.relative.h-\[100dvh\],
[data-theme="light"] header.photo-hero h1,
[data-theme="light"] header.relative.h-\[100dvh\] h1,
[data-theme="light"] header.photo-hero .heading-serif,
[data-theme="light"] header.relative.h-\[100dvh\] .heading-serif,
[data-theme="light"] header.photo-hero p,
[data-theme="light"] header.relative.h-\[100dvh\] p {
  color: #F5F2E9 !important;
}
[data-theme="light"] header.photo-hero [class*="text-[#EDE9E0]"],
[data-theme="light"] header.photo-hero [class*="text-[#ede9e0]"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="text-[#EDE9E0]"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="text-[#ede9e0]"] {
  color: #EDE9E0 !important;
}
[data-theme="light"] header.photo-hero [class*="text-white/50"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="text-white/50"] {
  color: rgba(245, 242, 233, 0.55) !important;
}
[data-theme="light"] header.photo-hero [class*="border-white/30"],
[data-theme="light"] header.photo-hero [class*="border-white/60"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="border-white/30"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="border-white/60"],
[data-theme="light"] header.photo-hero [class*="bg-white/30"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="bg-white/30"] {
  border-color: rgba(255, 255, 255, 0.55) !important;
  color: #F5F2E9 !important;
}
[data-theme="light"] header.photo-hero [class*="bg-white/30"],
[data-theme="light"] header.relative.h-\[100dvh\] [class*="bg-white/30"] {
  background-color: rgba(255, 255, 255, 0.28) !important;
}
/* Primary CTA stays high-contrast on photo (white pill) */
[data-theme="light"] header.photo-hero .group.inline-flex[class*="bg-white"],
[data-theme="light"] header.relative.h-\[100dvh\] .group.inline-flex[class*="bg-white"] {
  background-color: #ffffff !important;
  color: #0A0A0A !important;
}
[data-theme="light"] header.photo-hero .group.inline-flex[class*="bg-white"]:hover,
[data-theme="light"] header.relative.h-\[100dvh\] .group.inline-flex[class*="bg-white"]:hover {
  background-color: #BFA46F !important;
  color: #ffffff !important;
}
/* Secondary outline CTA readable on photo */
[data-theme="light"] header.photo-hero a[class*="border-white"],
[data-theme="light"] header.relative.h-\[100dvh\] a[class*="border-white"] {
  color: #F5F2E9 !important;
  border-color: rgba(255, 255, 255, 0.65) !important;
}
[data-theme="light"] header.photo-hero a[class*="border-white"]:hover,
[data-theme="light"] header.relative.h-\[100dvh\] a[class*="border-white"]:hover {
  background-color: rgba(255, 255, 255, 0.08) !important;
  color: #ffffff !important;
}
[data-theme="light"] header.photo-hero [class*="bg-white/30"],
[data-theme="light"] header.relative.h-\[100dvh\] .absolute.bottom-12 [class*="bg-white"] {
  background-color: rgba(255, 255, 255, 0.30) !important;
}

/* Focus rings stay gold */
a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}



/* —— Theme control: desktop pills vs mobile icon+popover —— */
/* Hide wide segmented cluster on mobile — do not squeeze */
@media (max-width: 767px) {
  .theme-seg {
    display: none !important;
  }
}
@media (min-width: 768px) {
  .theme-mobile {
    display: none !important;
  }
}

.theme-mobile {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}
.theme-mobile__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: 0;
  padding: 0;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
  color: var(--text);
  cursor: pointer;
  font: inherit;
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}
.theme-mobile__btn svg {
  width: 1.15rem;
  height: 1.15rem;
  display: block;
}
.theme-mobile__btn:hover,
.theme-mobile__btn[aria-expanded="true"] {
  border-color: var(--accent);
  background-color: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--text);
}

.theme-mobile__popover {
  position: absolute;
  top: calc(100% + 0.45rem);
  right: 0;
  z-index: 80;
  min-width: 11.5rem;
  padding: 0.35rem;
  border-radius: 0.85rem;
  border: 1px solid var(--border);
  background: var(--surface);
  box-shadow: var(--shadow-soft), 0 18px 40px -18px rgba(0, 0, 0, 0.35);
}
.theme-mobile__popover[hidden] {
  display: none !important;
}

.theme-opt {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  width: 100%;
  margin: 0;
  padding: 0.62rem 0.7rem;
  border: 1px solid transparent;
  border-radius: 0.65rem;
  background: transparent;
  color: var(--text);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.92rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-align: left;
  line-height: 1.2;
  transition: background-color 140ms ease, border-color 140ms ease, color 140ms ease;
}
.theme-opt__icon {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--text-muted);
}
.theme-opt__icon svg {
  width: 1.05rem;
  height: 1.05rem;
  display: block;
}
.theme-opt__label {
  flex: 1 1 auto;
}
.theme-opt__check {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  opacity: 0;
  color: var(--accent);
}
.theme-opt:hover {
  background-color: color-mix(in srgb, var(--accent) 10%, transparent);
  border-color: color-mix(in srgb, var(--accent) 35%, transparent);
}
.theme-opt.is-active,
.theme-opt[aria-checked="true"],
.theme-opt[aria-pressed="true"] {
  background-color: color-mix(in srgb, var(--accent) 16%, transparent);
  border-color: var(--accent);
  color: var(--text);
}
.theme-opt.is-active .theme-opt__icon,
.theme-opt[aria-checked="true"] .theme-opt__icon {
  color: var(--accent);
}
.theme-opt.is-active .theme-opt__check,
.theme-opt[aria-checked="true"] .theme-opt__check,
.theme-opt[aria-pressed="true"] .theme-opt__check {
  opacity: 1;
}

/* Appearance group inside hamburger drawer */
.theme-appearance {
  margin-top: 0.35rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border);
}
.theme-appearance__title {
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 0.4rem;
}
.theme-appearance__opts {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.theme-appearance .theme-opt {
  padding: 0.65rem 0.7rem;
  font-size: 1rem;
  border-radius: 0.7rem;
  border-color: var(--border-soft);
  background: color-mix(in srgb, var(--surface-2) 70%, transparent);
}
.theme-appearance .theme-opt.is-active,
.theme-appearance .theme-opt[aria-checked="true"] {
  border-color: var(--accent);
  background-color: color-mix(in srgb, var(--accent) 16%, transparent);
}

/* Keep header controls clickable above the mobile drawer */
#nav {
  z-index: 70 !important;
}
/* iPhone: body scroll-lock stays; drawer itself must scroll so Appearance (Match device) is reachable under Safari chrome */
#mobile-menu {
  top: 5rem !important; /* below h-20 nav */
  bottom: 0 !important;
  height: calc(100dvh - 5rem) !important;
  max-height: calc(100dvh - 5rem) !important;
  padding-top: 1.25rem !important;
  padding-bottom: calc(1.5rem + env(safe-area-inset-bottom, 0px)) !important;
  overflow-x: hidden;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}


/* —— Journal sticky filters (mobile compact) ——
   Target: sticky chrome ≪ 120px under nav @390 (was ~391px from wrap).
   Desktop (≥md) keeps richer search + chips + archive note. */
:root,
[data-theme="dark"],
[data-theme="light"] {
  --nav-offset: 5rem; /* h-20 */
  --journal-sticky-pad-y: 1.5rem;
  --journal-search-py: 1rem;
  --journal-search-fs: 1.125rem;
}

.journal-filters-sentinel {
  height: 1px;
  width: 100%;
  pointer-events: none;
  visibility: hidden;
}

.journal-filters {
  top: var(--nav-offset);
  z-index: 40;
  background-color: var(--bg) !important;
  border-bottom-color: var(--border) !important;
  padding-top: var(--journal-sticky-pad-y);
  padding-bottom: var(--journal-sticky-pad-y);
  transition: top 220ms ease, padding 180ms ease, background-color 180ms ease, border-color 180ms ease;
}

.journal-filters__bar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
}

.journal-filters__search-wrap {
  flex: 1 1 auto;
  min-width: 0;
}

.journal-filters__search {
  width: 100%;
  background-color: var(--input-bg) !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
  padding-top: var(--journal-search-py);
  padding-bottom: var(--journal-search-py);
  font-size: var(--journal-search-fs);
  transition: padding 180ms ease, font-size 180ms ease;
}

.journal-filters__search::placeholder {
  color: var(--text-muted) !important;
}

.journal-filters__search:focus {
  border-color: var(--accent) !important;
}

.journal-filters__toggle {
  display: none; /* mobile only */
  flex: 0 0 auto;
  align-items: center;
  gap: 0.35rem;
  height: 2.5rem;
  padding: 0 0.85rem;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
}

.journal-filters__toggle[aria-expanded="true"] {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 14%, var(--surface));
  color: var(--text);
}

.journal-filters__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.1rem;
  height: 1.1rem;
  padding: 0 0.3rem;
  border-radius: 9999px;
  background: var(--accent);
  color: var(--on-accent);
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.journal-filters__badge[hidden] {
  display: none !important;
}

.journal-filters__panel {
  margin-top: 0.75rem;
}

.journal-filters__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.journal-filters__meta {
  margin-top: 0.75rem;
  color: var(--text-muted) !important;
}

/* Desktop: richer layout — search + chips row, archive note visible */
@media (min-width: 768px) {
  .journal-filters__toggle {
    display: none !important;
  }
  .journal-filters__panel {
    display: block !important;
    margin-top: 0.75rem;
  }
  .journal-filters__bar {
    margin-bottom: 0;
  }
  /* On large screens, put chips beside search when space allows */
  @media (min-width: 1024px) {
    .journal-filters {
      display: block;
    }
    .journal-filters__bar {
      display: flex;
      align-items: flex-start;
      gap: 1rem;
    }
    .journal-filters__panel {
      /* chips flow under search on lg too unless we restructure; keep wrap under bar */
      margin-top: 0.75rem;
    }
  }
}

/* Mobile < md: slim sticky row (~48–56px content) + Filters sheet; no chip wrap in sticky chrome */
@media (max-width: 767.98px) {
  :root,
  [data-theme="dark"],
  [data-theme="light"] {
    --journal-sticky-pad-y: 0.5rem; /* py-2 */
    --journal-search-py: 0.625rem; /* py-2.5 */
    --journal-search-fs: 1rem; /* text-base */
  }

  .journal-filters__toggle {
    display: inline-flex;
  }

  .journal-filters__search {
    border-radius: 1rem !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }

  /* Panel is a dropdown sheet — NOT in sticky flow when closed (keeps chrome ≪ 120px) */
  .journal-filters__panel {
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    margin-top: 0;
    padding: 0.75rem 1rem 1rem;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    box-shadow: var(--shadow-soft);
    z-index: 41;
  }

  .journal-filters.is-open .journal-filters__panel {
    display: block;
  }

  /* Horizontal chip scroller — never wrap in the sheet either (height killer) */
  .journal-filters__chips {
    flex-wrap: nowrap !important;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    gap: 0.4rem;
    padding-bottom: 0.15rem;
    scrollbar-width: thin;
  }

  .journal-filters__chips .category-pill {
    flex: 0 0 auto;
  }

  /* Hide archive note while sticky/scrolled; also hide in slim sticky chrome always on mobile
     (note lives in sheet — hide when stuck even if sheet open to keep chrome short) */
  .journal-filters.is-stuck .journal-filters__meta {
    display: none !important;
  }

  /* Ensure sticky root can host absolute panel */
  .journal-filters {
    position: sticky;
  }
}

/* Optional: hide main nav on scroll-down, reveal on scroll-up (mobile only) */
@media (max-width: 767.98px) {
  #nav {
    transition: transform 220ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
    will-change: transform;
  }
  #nav.nav-hide-down {
    transform: translateY(-100%);
  }
  html.nav-concealed {
    --nav-offset: 0px;
  }
  /* Keep drawer under visible nav; when nav hidden drawer still from top */
  html.nav-concealed #mobile-menu {
    top: 0 !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
  }
}
