91696ba089
Та же миграция что и в exam9: убран inline-overlay HTML, дубликаты CSS (.ex-overlay/.ex-panel/.ex-panel-* + .ax-error/.ax-success/ .ax-actions/.ax-btn) — всё это теперь .ls-mod-* из LS.modal. Глобальные window.openAssignModal/closeAssignModal/onAssignOverlayClick/ onAssignEsc/setAssignTab/submitAssign и assignSlug/assignTitle/assignTab переменные заменены на одну window.openAssignModal с локальным closure по slug/title/currentTab. Сохранены внутренние form-классы (.ax-form/.ax-classes/.ax-class/ .ax-tabs/.ax-tab/.ax-student-results/.ax-input/.ax-hint) — они используются в body модалки. Student search и tab-switching теперь обработчики на элементах модалки (m.body.querySelector), а не глобальные document-listener'ы — автоматически очищаются вместе с модалкой при close(). textbooks.html: 945 → 824 строки