/* Shared shell; theme changes only the foundation tokens and paired media. */
html { scrollbar-gutter: stable; scroll-behavior: smooth; }
.jone-site { padding-top: var(--jone-header-height); }
.jone-header {
  position: fixed;
  inset: var(--jone-admin-offset) 0 auto;
  z-index: 40;
  min-height: var(--jone-header-height);
  background: var(--jone-header);
  border-bottom: 1px solid var(--jone-line);
  backdrop-filter: blur(18px);
}
.jone-header__inner { width: calc(100% - var(--jone-gutter) * 2); min-height: var(--jone-header-height); display: flex; align-items: center; justify-content: space-between; gap: 1.25rem; }
.jone-brand { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 144px; min-height: 52px; padding: 8px 12px; background: transparent; border-radius: 2px; }
.jone-brand .jone-image { width: 120px; height: 36px; object-fit: contain; }
html[data-theme="noir"] .jone-brand .jone-image { filter: brightness(0) invert(1); }
.jone-primary-nav { margin-inline-start: auto; }
.jone-primary-nav > ul { display: flex; align-items: center; gap: 1.8125rem; }
.jone-primary-nav a { position: relative; font-size: .8125rem; font-weight: 400; white-space: nowrap; }
.jone-primary-nav a::after { content: ""; position: absolute; inset: auto 0 .35rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .2s; }
.jone-primary-nav a:hover::after, .jone-primary-nav a[aria-current="location"]::after { transform: scaleX(1); }
.jone-primary-nav a[aria-current="location"] { color: var(--jone-accent); }
.jone-reading-progress { position: absolute; inset: auto 0 -1px; height: 1px; background: var(--jone-line); pointer-events: none; }
.jone-reading-progress span { display: block; height: 100%; background: var(--jone-accent); transform: scaleX(0); transform-origin: left; }
.jone-header__preferences { position: fixed; z-index: 45; left: 22px; bottom: 18px; max-width: calc(100% - 32px); padding: 5px 12px 5px 5px; border: 1px solid var(--jone-line); border-radius: 30px; background: var(--jone-header); backdrop-filter: blur(18px); box-shadow: 0 7px 28px #0002; }
.jone-preferences { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.jone-theme-control, .jone-language-control { display: inline-flex; gap: .25rem; align-items: center; }
.jone-theme-control { padding: 2px; border: 1px solid var(--jone-control-line); border-radius: 999px; }
.jone-theme-control button { border: 0; border-radius: 999px; background: transparent; color: var(--jone-muted); min-width: 44px; min-height: 44px; padding: .4rem .5rem; font-size: .6875rem; line-height: 1.5; }
.jone-theme-control button[aria-pressed="true"] { background: var(--jone-text); color: var(--jone-bg); }
.jone-language-control a { display: inline-flex; align-items: center; min-height: 44px; padding: .35rem .25rem; color: var(--jone-muted); text-decoration: none; font-size: .75rem; }
.jone-language-control a[aria-current="page"], .jone-language-control a:hover { color: var(--jone-text); text-decoration: underline; }
.jone-menu-button { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; gap: .65rem; min-width: 44px; min-height: 44px; border: 0; padding: .5rem 0; background: transparent; color: var(--jone-text); font-size: .75rem; line-height: 1.5; white-space: nowrap; list-style: none; }
.jone-menu-button::-webkit-details-marker { display: none; }
.jone-menu-button__label { font-size: .625rem; letter-spacing: .1em; }
.jone-menu-lines { display: block; width: 20px; height: 8px; border-block: 1px solid currentColor; }
.jone-menu-fallback { flex: 0 0 auto; }
.jone-menu-fallback[open] > .jone-menu-button { color: var(--jone-accent); }
.jone-menu-fallback > .jone-menu-content { position: fixed; inset: calc(var(--jone-header-height) + var(--jone-admin-offset) + 8px) var(--jone-gutter) auto; max-height: calc(100svh - var(--jone-header-height) - var(--jone-admin-offset) - 24px); overflow: auto; border: 1px solid var(--jone-line); box-shadow: var(--jone-shadow); }
.jone-menu-content { padding: 2rem 2.75rem 2.75rem; background: var(--jone-bg); color: var(--jone-text); }
.jone-menu-content__heading { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 0 1.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--jone-line); background: var(--jone-bg); }
.jone-menu-content__heading h2 { font-size: 1.25rem; letter-spacing: -.025em; }
.jone-menu-content__heading .jone-action { font-size: 1.75rem; }
.jone-menu-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: clamp(2rem, 5vw, 5rem); }
.jone-menu-caption { margin: 0 0 1.25rem; color: var(--jone-muted); font-size: .6875rem; font-weight: 500; letter-spacing: .06em; }
.jone-menu-sections a { display: flex; width: 100%; gap: 1.25rem; padding-block: 1rem; border-bottom: 1px solid var(--jone-line); font-size: clamp(1.5rem, 3vw, 2.125rem); line-height: 1.4; letter-spacing: -.04em; }
.jone-menu-sections .jone-menu-index { color: var(--jone-accent); font-size: .625rem; letter-spacing: .05em; }
.jone-menu-sections .jone-menu-arrow { margin-inline-start: auto; font-size: 1.25rem; }
.jone-menu-sections a[aria-current="location"] { color: var(--jone-accent); }
.jone-full-nav > ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.75rem 1.5rem; }
.jone-full-nav__label { margin: 0 0 .5rem; color: var(--jone-text); font-size: .75rem; font-weight: 600; }
.jone-full-nav ul ul { padding-inline-start: 0; margin-top: 0; }
.jone-full-nav ul ul a { min-height: 36px; color: var(--jone-muted); font-size: .8125rem; line-height: 1.6; }
.jone-full-nav ul ul a:hover, .jone-full-nav ul ul a[aria-current="page"] { color: var(--jone-accent); }
.jone-menu-content > .jone-preferences { border-top: 1px solid var(--jone-line); padding-top: 1.5rem; margin-top: 2rem; justify-content: space-between; }
.jone-menu-dialog { width: min(1150px, calc(100% - 40px)); max-width: none; max-height: calc(100svh - 40px); padding: 0; border: 1px solid var(--jone-line); background: var(--jone-bg); color: var(--jone-text); overscroll-behavior: contain; box-shadow: var(--jone-shadow); }
.jone-menu-dialog::backdrop { background: #02050ad9; backdrop-filter: blur(6px); }
.jone-footer { padding: 3rem 0 7rem; border-top: 1px solid var(--jone-line); }
.jone-footer__main { display: grid; grid-template-columns: .85fr 1.4fr; gap: 4rem; padding-bottom: 3rem; }
.jone-footer__legal { color: var(--jone-muted); font-size: .875rem; margin-top: 1.25rem; }
.jone-footer__contact { min-width: 0; }
.jone-footer__contact h2 { margin-bottom: 1rem; color: var(--jone-muted); font-size: .875rem; font-weight: 500; letter-spacing: 0; }
.jone-footer__contact address { font-size: .9375rem; font-style: normal; line-height: 1.9; }
.jone-footer__contact-links { display: flex; flex-wrap: wrap; gap: .5rem 2rem; margin-top: .75rem; }
.jone-footer__contact-links a { display: inline-flex; min-height: 44px; align-items: center; color: var(--jone-text); font-size: .9375rem; }
.jone-footer__metadata { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin-top: 1rem; }
.jone-footer__metadata .jone-metadata__item { display: flex; flex-wrap: wrap; gap: .25rem .75rem; border: 0; padding: 0; }
.jone-footer__metadata :is(dt, dd) { font-size: .8125rem; color: var(--jone-muted); margin: 0; }
.jone-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 2rem; border-top: 1px solid var(--jone-line); padding-top: 1.5rem; color: var(--jone-muted); }
.jone-footer__nav { flex: 1 1 100%; }
.jone-footer__nav > ul, .jone-footer__more > ul { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.jone-footer__nav a[aria-current="location"] { color: var(--jone-accent); text-decoration: underline; }
.jone-footer__nav a, .jone-footer__more a, .jone-footer__bottom p, .jone-admin-link { font-size: .75rem; }
.jone-footer__policies { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.jone-footer__policies a { display: inline-flex; align-items: center; min-height: 44px; color: var(--jone-muted); font-size: .75rem; }
.jone-admin-link { min-height: 44px; display: inline-flex; align-items: center; gap: .75rem; }
html[data-theme="ivory"] [data-jone-theme-image="noir"],
html[data-theme="noir"] [data-jone-theme-image="ivory"] { display: none !important; }
@media (max-width: 1100px) {
  .jone-primary-nav > ul { gap: 1.125rem; }
  .jone-header__inner { gap: 1.5rem; }
}
@media (max-width: 800px) {
  .jone-primary-nav { display: none; }
  .jone-header__inner { gap: 1rem; }
  .jone-brand { width: 136px; min-height: 48px; padding: 6px 8px; }
  .jone-menu-content { padding-inline: 1.75rem; }
  .jone-menu-layout { gap: 2rem; grid-template-columns: minmax(0, .9fr) minmax(0, 1fr); }
  .jone-full-nav > ul { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
  .jone-footer__main { grid-template-columns: 1fr; gap: 2rem; padding-bottom: 2rem; }
}
@media (max-width: 560px) {
  .jone-menu-button__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .jone-menu-content { padding: .5rem 1.25rem 1.5rem; }
  .jone-menu-content__heading { padding-block: .75rem 1rem; margin-bottom: 1rem; }
  .jone-menu-layout { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
  .jone-menu-sections a { padding-block: .875rem; }
  .jone-full-nav > ul { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 1rem; }
  .jone-full-nav ul ul a { min-height: 44px; }
  .jone-menu-dialog { width: calc(100% - 20px); max-height: calc(100svh - 20px); }
  .jone-menu-fallback > .jone-menu-content { inset-inline: 10px; }
  .jone-menu-content > .jone-preferences { align-items: flex-start; flex-direction: column; }
  .jone-footer { padding-top: 2rem; }
  .jone-footer__bottom { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .jone-primary-nav a::after { transition: none; }
}
@media (forced-colors: active) {
  .jone-theme-control { border-color: ButtonText; }
  .jone-theme-control button[aria-pressed="true"] { outline: 1px solid Highlight; }
}
