/* Isolated controls, retaining Tanya's base, footer and PWA. */
body:has(#memorization-reader) { padding-top: 0; background: #f7f7f2; }
body:has(#memorization-reader) :is(#sr-toolbar, .tanya-header) { display: none; }
body:has(#memorization-reader) .tanya-main { max-width: 850px; padding: 0 16px; }
#memorization-reader {
  --tn-font-step: 0;
  --mem-size: 32px;
  --mem-weight: 700;
  --mem-paper: #fff;
  --mem-ink: #202020;
  --mem-muted: #60605a;
  --mem-line: #d7d7d0;
  --mem-active: #fff9de;
  --mem-accent: #65418a;
  color: var(--mem-ink); background: var(--mem-paper);
  padding: 0 20px 36px; min-width: 0; color-scheme: light;
}
#memorization-reader[data-theme="dark"] {
  --mem-paper: #18191b; --mem-ink: #f4f0e7; --mem-muted: #c0bfb9;
  --mem-line: #494949; --mem-active: #2b281d; --mem-accent: #cfb4f2;
  color-scheme: dark;
}
body:has(#memorization-reader[data-theme="dark"]) {
  background: #18191b;
  --sr-paper: #18191b; --sr-ink: #f4f0e7; --sr-muted: #c0bfb9; --sr-line: #494949;
  --tn-bg: #18191b; --tn-bg-card: #242527; --tn-ink: #f4f0e7;
  --tn-ink-soft: #c0bfb9; --tn-accent: #cfb4f2; --tn-line: #494949;
}
html[data-tn-contrast] #memorization-reader {
  --mem-paper: #fff; --mem-ink: #000; --mem-muted: #222;
  --mem-line: #000; --mem-active: #f1f1f1; --mem-accent: #421d65; color-scheme: light;
}
#memorization-reader :is(button, select, a) { font: inherit; color: inherit; }
#memorization-reader [hidden] { display: none !important; }
#memorization-reader button, #memorization-reader select {
  min-height: 44px; border: 1px solid var(--mem-line); border-radius: 12px;
  background: var(--mem-paper); padding: 8px 12px; cursor: pointer;
}
#memorization-reader button:disabled { opacity: .45; cursor: default; }
#memorization-reader :focus-visible { outline: 3px solid var(--mem-accent); outline-offset: 4px; }
.mem-tools {
  position: sticky; top: 0; z-index: 30; background: var(--mem-paper);
  padding: calc(10px + env(safe-area-inset-top, 0px)) 0 10px;
  border-bottom: 1px solid var(--mem-line); font-size: 15px;
}
.mem-tool-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.mem-tool-row a { min-height: 44px; display: inline-flex; align-items: center; }
.mem-tool-row > strong { min-width: 0; text-align: center; overflow-wrap: anywhere; line-height: 1.4; }
.mem-tool-row > :is(a, button) { flex-shrink: 0; }
.mem-article-links { text-align: center; font-size: 13px; }
.mem-article-links a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px 14px; border: 1px solid var(--mem-line); border-radius: 24px; text-decoration: none; }
.mem-article-links a:hover { background: var(--mem-active); }
.mem-navigation { margin-top: 8px; }
.mem-chapter-label { display: flex; align-items: center; gap: 6px; }
.mem-progress { display: flex; justify-content: space-between; gap: 6px; margin-top: 8px; font-size: 13px; color: var(--mem-muted); }
.mem-intro { padding: 34px 0; }
.mem-kicker { font-size: 14px; color: var(--mem-muted); }
#memorization-reader h1 { font-size: 30px; line-height: 1.6; margin: 12px 0; }
.mem-intro p { font-size: 16px; line-height: 1.8; }
#memorization-reader #mem-resume, #memorization-reader .mem-close { background: #ffcf24; color: #191919; border-color: #ffcf24; font-weight: 700; }
.mem-chapter h2 { text-align: center; font-size: 22px; padding: 22px 0 12px; margin: 0; }
.mem-paragraph { padding: 20px 14px; margin-block: 12px; border-inline-start: 3px solid transparent; border-radius: 12px; }
.mem-paragraph[data-active="true"] { background: var(--mem-active); border-inline-start-color: var(--mem-accent); }
.mem-paragraph-label { color: var(--mem-muted); font-size: 13px; }
#memorization-reader .mem-text {
  --tn-font-step: 0;
  font-family: 'MekorotVilna', 'Noto Serif Hebrew', serif;
  font-size: var(--mem-size); font-weight: var(--mem-weight); line-height: 1.85;
  margin: 12px 0 18px; overflow-wrap: anywhere;
}
#memorization-reader .mem-practice { font-size: 14px; }
#memorization-reader .mem-practice[aria-pressed="true"] { border-color: var(--mem-accent); color: var(--mem-accent); font-weight: 700; }
.mem-source { border-top: 1px solid var(--mem-line); margin-top: 36px; padding-block: 20px; font-size: 14px; }
.mem-source summary { cursor: pointer; min-height: 44px; }
.mem-return { display: inline-block; padding: 14px 0; }
#mem-settings { width: min(420px, calc(100% - 24px)); max-height: calc(100dvh - 30px); overflow: auto; padding: 24px; border: 1px solid var(--mem-line); border-radius: 22px; background: var(--mem-paper); color: var(--mem-ink); }
#mem-settings::backdrop { background: #0009; }
#mem-settings h2 { font-size: 23px; margin-top: 0; }
#mem-settings fieldset { border: 0; padding: 0; }
.mem-sizes { display: flex; gap: 8px; margin: 12px 0; }
#mem-settings [aria-pressed="true"] { background: var(--mem-ink); color: var(--mem-paper); }
.mem-option { display: flex; gap: 10px; align-items: center; padding: 15px 0; }
.mem-option input { width: 22px; height: 22px; accent-color: #76519b; }
.mem-close { width: 100%; margin-top: 16px; }
.mem-modes { margin-block: 8px; justify-content: center; }
.mem-modes button { flex: 1; }
#memorization-reader .mem-modes [aria-pressed="true"] { background: var(--mem-ink); color: var(--mem-paper); }
#mem-training { padding-block: 18px; }
#mem-training h2 { font-size: 23px; margin: 4px 0; }
.mem-help { color: var(--mem-muted); font-size: 14px; line-height: 1.7; }
.mem-field { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-block: 12px; font-size: 15px; }
.mem-field select { max-width: 100%; min-width: 0; }
.mem-train-nav { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 14px; }
.mem-train-nav span { text-align: center; }
#memorization-reader .mem-chunk-text { font: var(--mem-weight) var(--mem-size)/1.85 'MekorotVilna', 'Noto Serif Hebrew', serif; white-space: pre-wrap; overflow-wrap: anywhere; padding: 18px 12px; border-radius: 14px; background: var(--mem-active); margin-block: 14px; }
.mem-word { border-bottom: 1px solid transparent; }
.mem-word[data-masked="true"] .mem-word-text { visibility: hidden; }
.mem-word[data-masked="true"] { border-bottom-color: var(--mem-muted); }
.mem-train-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.mem-training-options, .mem-review-panel { padding-block: 18px; border-bottom: 1px solid var(--mem-line); font-size: 15px; }
.mem-training-options summary, .mem-review-panel summary { cursor: pointer; min-height: 44px; display: list-item; align-content: center; }
#mem-due-list { display: grid; gap: 10px; }
.mem-chunk-card { min-width: 0; background: var(--mem-active); border-radius: 14px; padding: 10px; margin-block: 14px; }
#memorization-reader .mem-chunk-card .mem-chunk-text { margin: 0; padding: 10px 2px; }
.mem-chunk-head, .mem-chunk-end { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.mem-chunk-end { justify-content: flex-end; }
#memorization-reader .mem-icon-button { width: 44px; height: 44px; padding: 10px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; }
.mem-icon-button svg { width: 22px; height: 22px; }
.mem-icon-button span { font-size: 22px; line-height: 1; }
.mem-icon-button[data-active="true"] .mem-icon-idle { display: none; }
#memorization-reader #mem-success { background: var(--mem-ink); color: var(--mem-paper); }
#memorization-reader .mem-again { font-size: 14px; background: transparent; }
.mem-record-options { font-size: 14px; margin-block: 10px; }
.mem-record-options summary { cursor: pointer; min-height: 44px; align-content: center; }
#mem-record-status, #mem-record-timer { font-size: 15px; line-height: 1.6; }
#mem-record-status { margin-block: 8px; }
#mem-record-timer { font-variant-numeric: tabular-nums; }
#mem-record-download { display: inline-flex; align-items: center; min-height: 44px; padding: 8px; }
#memorization-reader #mem-due-list button { text-align: start; }
@media (max-width: 480px) {
  body:has(#memorization-reader) .tanya-main { padding: 0; }
  #memorization-reader { padding-inline: 12px; }
  .mem-paragraph { padding-inline: 10px; }
  .mem-tool-row { font-size: 14px; }
  #memorization-reader h1 { font-size: 27px; }
}

/* Draft explanation is reading-only; source nodes retain their original parents. */
body:has(.mem-has-commentary) .tanya-main { max-width: 1240px; }
.mem-draft-notice { border: 1px solid var(--mem-accent); border-inline-start-width: 4px; border-radius: 12px; padding: 14px 18px; background: var(--mem-active); color: var(--mem-ink); }
.mem-commentary { min-width: 0; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--mem-line); font-family: Arial, 'Noto Sans Hebrew', sans-serif; font-weight: 400; }
.mem-commentary-label { color: var(--mem-muted); font-size: 14px; }
#memorization-reader .mem-commentary h3 { font-size: 21px; line-height: 1.7; font-weight: 600; margin: 10px 0; }
#memorization-reader .mem-commentary-text { font-family: Arial, 'Noto Sans Hebrew', sans-serif; font-weight: 400; font-size: max(20px, calc(var(--mem-size) * .75)); line-height: 1.9; margin: 0; overflow-wrap: anywhere; }
@media (min-width: 900px) {
  .mem-parallel { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 32px; align-items: start; }
  .mem-parallel > .mem-paragraph-label, .mem-parallel > .mem-text, .mem-parallel > .mem-practice { grid-column: 1; }
  .mem-parallel > .mem-practice { justify-self: start; }
  .mem-parallel > .mem-commentary { grid-column: 2; grid-row: 1 / 4; margin-top: 0; padding-top: 0; padding-inline-start: 26px; border-top: 0; border-inline-start: 1px solid var(--mem-line); }
}
