/* Открытый доступ: шапка + оглавление слева + контент; использует токены и компоненты из styles.css */
body.pub { overflow: auto; height: auto; background: var(--bg); }
.pub-top { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 10px; padding: 10px 20px; background: var(--bg); border-bottom: 1px solid var(--line); }
.pub-top .brand { display: flex; align-items: center; gap: 10px; color: var(--text); }
.pub-spacer { flex: 1; }
.pub-top .ghost-btn { flex: none; width: 40px; }
.pub-menu { display: none; }
.pub-layout { display: grid; grid-template-columns: 280px minmax(0, 1fr); min-height: calc(100vh - 58px); }
.pub-nav { border-right: 1px solid var(--line); padding: 16px 12px; background: var(--bg-soft); position: sticky; top: 58px; height: calc(100vh - 58px); overflow-y: auto; }
.pub-space { margin-bottom: 14px; }
.pub-space-link { display: flex; gap: 8px; align-items: center; padding: 6px 10px; border-radius: 8px; font-weight: 600; color: var(--text); font-size: 14px; }
.pub-space-link .sp-icon { width: 22px; height: 22px; border-radius: 6px; display: grid; place-items: center; font-size: 13px; }
.pub-art { display: block; padding: 4px 10px 4px 20px; border-radius: 7px; color: var(--text-2); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pub-art.on-shelf { padding-left: 28px; }
.pub-art:hover, .pub-space-link:hover { background: var(--bg-sunk); color: var(--text); }
.pub-art.active, .pub-space-link.active { background: var(--primary-soft); color: var(--primary-text); }
.pub-nav .shelf-label { padding-left: 20px; }
.pub-main { min-width: 0; }
.pub-main .page, .pub-main .article-layout { padding-top: 28px; }
.pub-crumbs { margin-bottom: 14px; font-size: 13px; }
@media (max-width: 860px) {
  .pub-menu { display: inline-block; }
  .pub-layout { grid-template-columns: 1fr; }
  .pub-nav { display: none; position: fixed; inset: 58px 0 0 0; height: auto; z-index: 9; }
  body.nav-open .pub-nav { display: block; }
  .pub-top { padding: 10px 16px; }
  .pub-top .brand small { display: none; }
}
