/* BookShell v1.0.0: outer geometry only. See docs/book-shell.md. */
body[data-cc-section='book'] {
  --cc-book-nav-width: 232px;
  --cc-book-outline-width: 224px;
  --cc-book-outline-gutter: 12px;
  --cc-book-article-gutter: 44px;
  --cc-book-article-width: 1050px;
}

body[data-cc-section='book'] .cc-section-header-inner { width:calc(100% - 32px); max-width:none; margin-inline:16px; }
.cc-chapter-hero { width:100%; box-sizing:border-box; padding:24px 32px; background:var(--chapter-tint); border-bottom:1px solid var(--line); }
.cc-chapter-hero .chapter-heading { margin:0; }
body[data-cc-section='book'] .chapter-back { display:none; }
.cc-book-navigation { position:fixed; inset:0 auto 0 0; z-index:110; width:var(--cc-book-nav-width); height:100dvh; box-sizing:border-box; }

/* The chapter sheets retain typography, local-outline padding and resources. */
.chapter-main { max-width:var(--cc-book-article-width); padding-block:26px 64px; }
.chapter-reader { display:grid; grid-template-columns:var(--cc-book-outline-width) minmax(0,var(--cc-book-article-width)); justify-content:space-between; align-items:start; gap:var(--cc-book-article-gutter); width:min(1340px,calc(100% - 64px)); }
.chapter-reader > .chapter-main { min-width:0; width:100%; margin:0; }
.chapter-contents { position:sticky; align-self:start; margin-top:36px; min-width:0; max-height:calc(100vh - 48px); overflow-y:auto; overscroll-behavior:contain; }
body[data-cc-section='book'] .chapter-contents { top:calc(var(--cc-header-height) + 24px); max-height:calc(100dvh - var(--cc-header-height) - 48px); }

/* Preserve the shared fragment baseline and the chapter reader's fallbacks.
   chapter-reading.js/text.css retain their dynamic, !important reading line. */
body[data-cc-section='book'] :is(main [id], .chapter-section, #book, #apps) { scroll-margin-top:calc(var(--cc-header-height) + 32px); }
.chapter-reader .chapter-heading, .chapter-reader .algorithm-teaching [id] { scroll-margin-top:24px; }
.chapter-cases { scroll-margin-top:24px; }
.chapter-page .algorithm-teaching [id] { scroll-margin-top:calc(var(--cc-header-height,80px) + 32px); }

@media (min-width:1280px) {
  body[data-cc-section='book'] { padding-left:0; }
  body[data-cc-section='book'] .skip-link { left:10px; }
  body[data-cc-section='book'] .chapter-reader { grid-template-columns:var(--cc-book-nav-width) var(--cc-book-outline-gutter) var(--cc-book-outline-width) var(--cc-book-article-gutter) minmax(0,var(--cc-book-article-width)); gap:0; width:min(1562px,calc(100% - 32px)); margin:24px 0 0; justify-content:start; }
  .chapter-reader > .cc-book-navigation { grid-column:1; position:sticky; inset:auto; top:var(--cc-header-height); width:var(--cc-book-nav-width); height:calc(100dvh - var(--cc-header-height)); z-index:50; }
  body[data-cc-section='book'] .chapter-reader > .chapter-contents { grid-column:3; margin:0; top:calc(var(--cc-header-height) + var(--cc-book-outline-gutter)); max-height:calc(100dvh - var(--cc-header-height) - 24px); }
  body[data-cc-section='book'] .chapter-reader > .chapter-main { grid-column:5; padding-top:0; }
  body[data-cc-section='book']:not(.chapter-page) > .cc-book-navigation { top:var(--cc-book-home-top,var(--cc-header-height)); height:calc(100dvh - var(--cc-book-home-top,var(--cc-header-height))); z-index:50; }
  body[data-cc-section='book']:not(.chapter-page) main > :not(.hero) { margin-left:276px; width:calc(100% - 308px); }
}

@media (max-width:1279px) {
  .cc-chapter-hero { padding:20px 32px; }
  .cc-book-navigation { width:min(86vw,320px); }
  .chapter-reader { margin-top:24px; }
  .chapter-reader > .chapter-main { padding-top:0; }
  .chapter-reader > .chapter-contents { margin-top:0; }
  .cc-book-backdrop:not([hidden]) { position:fixed; inset:0; z-index:105; }
}
@media (max-width:1100px) {
  .chapter-reader { grid-template-columns:200px minmax(0,1fr); gap:28px; }
}
@media (max-width:960px) {
  .chapter-reader { display:block; max-width:var(--cc-book-article-width); padding-top:18px; }
  .chapter-reader > .chapter-main { padding-top:0; }
  .chapter-contents { z-index:70; overflow:visible; margin:0 0 16px; }
  body[data-cc-section='book'] .chapter-contents { top:var(--cc-header-height); max-height:none; }
  .chapter-reader .chapter-heading, .chapter-reader .algorithm-teaching, .chapter-reader .algorithm-teaching [id], .chapter-cases { scroll-margin-top:80px; }
  .chapter-page .algorithm-teaching [id] { scroll-margin-top:calc(var(--cc-header-height,80px) + 82px); }
}
@media (max-width:760px) {
  .cc-chapter-hero { padding:20px 16px; }
  body[data-cc-section='book'] .cc-section-header-inner { min-height:0; }
  .chapter-main { width:calc(100% - 32px); padding-top:16px; padding-bottom:36px; }
  .chapter-reader { width:calc(100% - 32px); padding-top:16px; }
}

/* Shell stacking contains the existing diagram toolbar beneath the outline. */
body[data-cc-section='book'] .diagram-scroll { position:relative; isolation:isolate; z-index:0; }
@media screen and (min-width:1280px) {
  body[data-cc-section='book'] > .site-footer,
  body[data-cc-section='book'] > .site-footer ~ p:has(> a[href='/learning-privacy']) { margin-left:var(--cc-book-nav-width); }
}
@media print {
  body[data-cc-section='book'] { padding-left:0; }
  .cc-chapter-hero { background:none; padding:0; }
  .chapter-main { width:100%; padding:0; }
  .chapter-contents { display:none; }
  .chapter-reader { display:block !important; width:100% !important; margin:0 !important; padding:0; }
}
