/* Textbook composition extends the existing public article skin. */
.textbook-library { padding-top: var(--space-8); }
.textbook-header { max-width: 74ch; margin-bottom: var(--space-8); }
.textbook-header h1 { font-size: clamp(2rem, 4vw, 3rem); line-height: 1.15; }
.textbook-header .textbook-tools__actions { margin-top: var(--space-4); }
.textbook-portal .article-header nav [aria-current] { text-decoration: underline; text-underline-offset: .3em; }
.textbook-reader > header { margin-bottom: var(--space-8); }
.textbook-reader .article-meta:empty { display: none; }
.textbook-filters { display: flex; align-items: end; gap: var(--space-4); flex-wrap: wrap; margin: var(--space-6) 0; padding: var(--space-5); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); }
.textbook-filters > div { min-width: 0; flex: 1 1 140px; }
.textbook-filters .textbook-filters__search { flex-basis: 270px; }
.textbook-filters label { display: block; font-weight: 600; margin-bottom: var(--space-2); }
.textbook-filters .ui-input, .textbook-filters .ui-select { width: 100%; min-width: 0; }
.textbook-filters .btn { flex-shrink: 0; }
.textbook-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.textbook-topic { display: flex; flex-direction: column; min-width: 0; gap: var(--space-3); padding: var(--space-6); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); }
.textbook-topic > * { margin: 0; }
.textbook-topic h2 { font-size: 1.25rem; line-height: 1.35; }
.textbook-topic h2 a { text-decoration: none; }
.textbook-topic__read { margin-top: auto; padding-top: var(--space-3); font-weight: 600; }
.textbook-tools { margin: var(--space-10) 0; padding: var(--space-6); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); }
.textbook-tools > h2 { margin-top: var(--space-5); }
.textbook-tools h2 { font-size: 1.5rem; line-height: 1.25; margin: var(--space-3) 0 var(--space-4); }
.textbook-tools__navigation, .textbook-tools__actions { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.textbook-tools__navigation { justify-content: space-between; font-size: var(--text-sm); }
.textbook-diagram { min-width: 0; margin-top: var(--space-5); }
.textbook-diagram > summary { min-height: 44px; padding: var(--space-3) 0; cursor: pointer; font-weight: 600; }
.textbook-diagram__scroll { min-width: 0; max-width: 100%; overflow: auto; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); }
.article-portal .textbook-diagram__scroll img { display: block; width: 1200px; max-width: none; height: auto; }
.textbook-mark { display: flex; gap: var(--space-3); align-items: flex-start; cursor: pointer; padding: var(--space-3) 0; }
.textbook-mark input.ui-choice { flex: 0 0 auto; width: 22px; height: 22px; margin-top: 2px; }
.textbook-mark:has(input:disabled) { cursor: default; }
.textbook-mark > span { min-width: 0; }
.textbook-note, .textbook-skill-note, .textbook-status { color: var(--color-text-muted); font-size: var(--text-sm); }
.textbook-status[data-state="error"] { color: var(--ui-danger); }
.textbook-tools [hidden], .textbook-library [hidden] { display: none; }
.textbook-personal, .textbook-course { margin-top: var(--space-8); padding-top: var(--space-6); border-top: 1px solid var(--color-border); }
.textbook-practice { margin-top: var(--space-8); min-width: 0; }
.textbook-practice [data-textbook-practice] { min-width: 0; }
.textbook-practice__title { font-weight: 600; }
.textbook-practice .learner-lab-native-player { min-width: 0; margin-top: var(--space-5); }
.textbook-practice .learner-lab-native-player__content { min-width: 0; }
.textbook-practice fieldset { min-width: 0; }
.textbook-related { margin: var(--space-10) 0; }
.textbook-related h2 { font-size: 1.5rem; line-height: 1.3; }
.textbook-related ul { list-style: none; margin: var(--space-5) 0; padding: 0; }
.textbook-related li { display: grid; gap: var(--space-2); padding: var(--space-4) 0; border-top: 1px solid var(--color-border); }
.textbook-checklists { display: grid; gap: var(--space-4); margin-top: var(--space-6); }
.textbook-checklist { border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); min-width: 0; }
.textbook-checklist > summary { padding: var(--space-5); cursor: pointer; font-weight: 700; }
.textbook-checklist > summary > span { display: block; margin-left: var(--space-5); }
.textbook-checklist > summary .textbook-note { margin-top: var(--space-2); font-weight: 400; }
.textbook-checklist__body { padding: 0 var(--space-6) var(--space-6); }
.textbook-checklist__section + .textbook-checklist__section { border-top: 1px solid var(--color-border); margin-top: var(--space-5); padding-top: var(--space-4); }
.textbook-checklist__section h2 { font-size: 1.2rem; line-height: 1.35; }
.textbook-skills { list-style: none; margin: 0; padding: 0; }
.textbook-skills li + li { border-top: 1px solid var(--color-border); }
.textbook-skill { padding: var(--space-3) 0; }
.textbook-skill-note { display: block; margin-top: var(--space-2); }
.textbook-gate { max-width: 70ch; padding: var(--space-6); background: var(--portal-surface-soft); border: 1px solid var(--color-border); border-radius: var(--radius-lg); }
.article-reader .article-body pre { white-space: pre; overflow-x: auto; max-width: 100%; padding: var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--portal-surface); font-family: var(--font-mono, monospace); font-size: 1em; line-height: 1.6; }
.article-reader .article-body code { font-family: var(--font-mono, monospace); }
@media (min-width: 701px) and (max-width: 1023px) { .textbook-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 960px) { .textbook-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .textbook-grid { grid-template-columns: minmax(0, 1fr); }
  .textbook-tools, .textbook-topic, .textbook-gate { padding: var(--space-4); }
  .textbook-filters { padding: var(--space-4); }
  .textbook-filters > div, .textbook-filters .textbook-filters__search { flex-basis: 100%; }
  .textbook-tools__actions .btn { max-width: 100%; white-space: normal; text-align: center; }
  .textbook-checklist__body { padding: 0 var(--space-4) var(--space-4); }
}
@media print { .textbook-tools, .textbook-filters, .textbook-mark, .textbook-status { display: none; } }

.textbook-registration .textbook-consent { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: var(--space-3); text-align: left; cursor: pointer; }
.textbook-registration .textbook-consent > span { min-width: 0; }
.textbook-registration .textbook-consent input[type="checkbox"] { width: 22px; height: 22px; min-height: 22px; margin-top: 3px; }
.textbook-registration .textbook-consent-help { text-align: left; font-size: var(--text-sm); line-height: 1.6; }
