:root {
  --bg: #fafaf8;
  --fg: #1d1d1b;
  --muted: #8a8a85;
  --line: #e4e4df;
  --side: 260px;
  --pad: 32px;
  --gap: 14px;
  font-family: "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--fg); }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--muted); }

/* Sidebar */
.side { font-size: 13px; line-height: 1.55; }
.logo img { display: block; width: 190px; height: auto; }
nav h2 {
  font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: var(--muted); margin: 22px 0 6px;
}
nav ul { list-style: none; margin: 0; padding: 0; }
nav a[aria-current] { font-weight: 600; }
nav a[aria-current]::before { content: "— "; color: var(--muted); }
nav .meta { margin-top: 26px; padding-top: 14px; border-top: 1px solid var(--line); color: var(--muted); }
.menu-btn { display: none; }

/* Intro block */
.intro h1 { font-size: 26px; font-weight: 400; letter-spacing: -.01em; margin: 0 0 18px; line-height: 1.15; }
.intro dl { margin: 0; font-size: 13px; display: grid; grid-template-columns: auto 1fr; gap: 3px 14px; }
.intro dt { color: var(--muted); }
.intro dd { margin: 0; }
.intro dd a { border-bottom: 1px solid var(--line); }
.hint { font-size: 12px; color: var(--muted); margin-top: 28px; }

.next { font-size: 13px; color: var(--muted); line-height: 1.6; }
.next strong { color: var(--fg); font-weight: 400; font-size: 18px; }
.counter { display: none; }

/* Desktop: horizontal strip */
@media (min-width: 900px) {
  body { overflow: hidden; height: 100vh; }
  .side {
    position: fixed; inset: 0 auto 0 0; width: var(--side);
    padding: var(--pad) 24px var(--pad) var(--pad); overflow-y: auto;
  }
  .strip {
    position: fixed; inset: 0 0 0 var(--side);
    display: flex; align-items: center; gap: var(--gap);
    padding: var(--pad) var(--pad) var(--pad) 0;
    overflow-x: auto; overflow-y: hidden;
    scrollbar-width: none; outline: none;
    scroll-snap-type: x proximity;
  }
  .strip::-webkit-scrollbar { display: none; }
  .strip img {
    flex: none; height: 100%; width: auto; max-height: 1100px;
    scroll-snap-align: center; background: var(--line);
  }
  .intro { flex: none; width: 260px; align-self: flex-start; padding-top: 6px; scroll-snap-align: start; }
  .next { flex: none; width: 240px; padding-left: 40px; scroll-snap-align: end; }
  .counter {
    display: block; position: fixed; right: var(--pad); bottom: 10px;
    font-size: 11px; letter-spacing: .08em; color: var(--muted);
  }
}

/* Mobile: vertical stack */
@media (max-width: 899px) {
  .side { position: sticky; top: 0; z-index: 2; background: var(--bg); padding: 12px 16px; border-bottom: 1px solid var(--line); }
  .side-top { display: flex; align-items: center; justify-content: space-between; }
  .logo img { width: 130px; }
  .menu-btn {
    display: block; font: inherit; font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
    background: none; border: 1px solid var(--fg); color: var(--fg); padding: 7px 12px; cursor: pointer;
  }
  nav { display: none; padding: 4px 0 18px; font-size: 15px; line-height: 1.8; }
  .side.open nav { display: block; max-height: calc(100vh - 70px); overflow-y: auto; }
  .strip { display: flex; flex-direction: column; gap: 10px; padding: 24px 16px 40px; }
  .strip img { width: 100%; height: auto; object-fit: contain; background: var(--line); }
  .intro { margin-bottom: 14px; }
  .hint { display: none; }
  .next { padding: 30px 0 10px; }
}

/* Series text and text pages */
.intro .text { font-size: 13px; line-height: 1.6; color: #555; margin: 16px 0 0; max-width: 260px; }
.textpage { max-width: 640px; font-size: 15px; line-height: 1.65; }
.textpage h1 { font-size: 26px; font-weight: 400; margin: 0 0 24px; }
.textpage h2 { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin: 32px 0 8px; }
.textpage a { border-bottom: 1px solid var(--line); }
.textpage .portrait { display: block; width: 100%; max-width: 360px; height: auto; margin: 0 0 24px; }
.todo { background: #fff3c4; color: #6b5200; }
@media (min-width: 900px) {
  body.text { overflow: auto; height: auto; }
  .textpage { margin-left: var(--side); padding: var(--pad) var(--pad) 80px 0; }
}
@media (max-width: 899px) {
  .textpage { padding: 24px 16px 60px; }
}
