.paper{background:var(--paper-bg,#fffefa);color:var(--paper-text,#24231f);font-family:var(--reading-font,Vazirmatn),Tahoma,sans-serif;line-height:var(--reading-line,2.2);min-height:800px;display:flex;flex-direction:column}
:root{--paper-bg:#20221f;--paper-text:#f0eee7;--paper-heading:#e4c785;--paper-note:#c7bb9c;--paper-label:#2c2e28;--paper-red:#ffaaa3}
:root[data-theme=light]{--paper-bg:#fffefa;--paper-text:#24231f;--paper-heading:#78551b;--paper-note:#65553b;--paper-label:#f2eddf;--paper-red:#a62926}
.paper h2{color:var(--paper-heading);font-weight:600}.paper .important{color:var(--paper-red);border-inline-start:3px solid currentColor;padding-inline-start:14px}.paper .caption,.paper .footnote,.paper figcaption{color:var(--paper-note)}
.running-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;border-bottom:1px solid var(--paper-note);padding-bottom:7px;margin-bottom:22px;font-size:.78em;color:var(--paper-note)}.running-head p{margin:0!important}.page_number{white-space:nowrap!important}.page-body{flex:1}.page-footnotes{border-top:1px solid var(--paper-note);padding-top:12px;margin-top:28px;font-size:.85em}.page-footnotes p{margin-bottom:8px}.running_footer{font-size:.8em}
.paper .formula img{max-height:none;height:auto}.paper .katex-display{overflow:visible!important}.math-inline,.math-block{direction:ltr!important;unicode-bidi:isolate!important;text-align:left;max-width:100%;vertical-align:baseline}.math-inline{display:inline-block;line-height:normal;padding:5px 2px;overflow-x:auto;overflow-y:hidden;vertical-align:middle}.math-block{overflow-x:auto;padding:18px 2px}.math-block .katex-display{margin:0;text-align:left}.paper .katex{color:inherit}.math-fallback{border:1px dashed var(--paper-red);padding:6px;color:var(--paper-red)}.math-warning,.paper .warning{color:var(--paper-note);background:var(--paper-label);border:1px solid var(--paper-note);padding:12px;font-size:14px}.paper pre{background:var(--paper-label);color:var(--paper-text)}
.paper .labels{background:var(--paper-label);padding:12px;border-radius:6px;font-size:.85em}.label-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;direction:ltr;border-bottom:1px solid #8883;padding:7px 0;align-items:start}.label-row:last-child{border:0}.label-row>[dir=ltr]{text-align:left;unicode-bidi:isolate}.label-row>[dir=rtl]{text-align:right;unicode-bidi:isolate}.figure-stage{position:relative;direction:ltr;line-height:0;width:fit-content;max-width:100%;margin:auto}.figure-stage img{max-width:100%;height:auto}.image-label{position:absolute;display:flex;align-items:center;justify-content:center;background:#fff;color:#161616;font:14px/1.15 var(--reading-font,Vazirmatn),Tahoma,sans-serif;direction:rtl;text-align:center;overflow:hidden;padding:0}.image-label.unfitted{visibility:hidden}.original-only .image-label{visibility:hidden}.overlay-toggle{display:block;font-size:13px;margin:10px 0;color:var(--paper-note)}
@media print{.overlay-toggle,.export-controls{display:none!important}.paper{box-shadow:none;border:0;width:auto;max-width:none;margin:0;padding:0;min-height:245mm;background:#fff;color:#222;font-size:12pt!important}.paper h2{break-after:avoid}.paper p{orphans:3;widows:3}.paper figure,.math-block,.running-head,.page-footnotes{break-inside:avoid}.book-page{break-after:page}.book-page:last-child{break-after:auto}.paper .math-inline{overflow:visible}.math-block{overflow:visible}.paper .formula img{max-height:220mm}.book-page .page-meta{font-size:9pt;color:#65553b;margin:0 0 6mm}.paper{--paper-heading:#78551b;--paper-note:#65553b;--paper-label:#f2eddf;--paper-red:#a62926}}

:root[data-theme=dark] .paper .formula img{filter:invert(.88) hue-rotate(180deg)}

@media print{.paper .formula img{filter:none!important}}
.paper{min-height:0;box-sizing:border-box;overflow:visible}.paper p{overflow:visible;line-height:inherit}.math-inline{overflow:visible;line-height:1.6;padding:.22em .08em;max-width:100%}.math-block{padding:1em .3em;overflow-x:auto;overflow-y:visible;min-height:2em}.math-fallback{border:0;background:var(--paper-label);color:var(--paper-note);font:inherit}.math-fallback img{max-width:100%;height:auto}.source-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.6em;direction:rtl}.source-columns>div{min-width:0}.toc-row{display:flex;direction:rtl;align-items:baseline;gap:.35em;margin:.3em 0;padding-inline-start:calc(var(--level,0)*1em);line-height:1.8}.toc-title{min-width:0;overflow-wrap:anywhere}.toc-dots{flex:1;min-width:1em;border-bottom:1px dotted currentColor;align-self:flex-end;margin-bottom:.6em}.toc-page{flex:none;white-space:nowrap}.toc-row.level-0{font-weight:700;color:var(--paper-heading);margin-top:.8em}.image-translations{font-size:.78em;margin:.35em 0;line-height:1.6}.image-translations summary{cursor:pointer;color:var(--paper-note)}.paper .labels{padding:.4em .7em}.label-row{gap:.8em;padding:.25em 0}.paper figure{height:auto;overflow:visible}.figure-stage img{display:block}.overlay-toggle{margin:.35em 0}.source-match{outline:3px solid #d4ad50;outline-offset:4px;background:#d4ad5020}.latin{unicode-bidi:isolate;direction:ltr}
@media print{.paper{min-height:0!important}.source-columns{break-inside:auto}.math-fallback{background:transparent}.image-translations{break-inside:avoid}.image-translations[hidden]{display:none}.paper details.image-translations:not([open]){display:none}}
/* 0.18.7 — owner, PDF of page 247: «راهنمای نوشته های تصویر … در خروجی اکسپورت پی دی اف ظاهر میشه با اینکه در
   پی دی اف اون رو نمیشه باز یا بسته کرد بی دلیل هست». A closed panel on paper is its one-line title and nothing
   else, so it is not printed; a guide the reader keeps open under the picture (0.13.2) is printed in full. */

.explanation-mode{font-size:.8em;color:var(--paper-note);border-bottom:1px solid var(--paper-note);padding-bottom:.5em}

/* Source formula fallback remains LTR inside RTL prose. */
.source-math-inline{display:inline-block!important;max-width:100%;max-height:6em;width:auto;vertical-align:middle;direction:ltr;unicode-bidi:isolate;background:#fff;padding:2px;border-radius:3px}
.source-columns>div{min-width:0;overflow-wrap:anywhere}
.source-columns{align-items:start;gap:1.4em}
@media print{.source-columns{break-inside:auto}.source-math-inline{max-height:none;max-width:100%}}

/* 0.13.25 — THE COLUMN ORDER FOLLOWS THE READER, NOT THE SOURCE PAGE.
   Reported on a two-column page of SLUP261: the column holding the section
   heading and the page's opening sat on the LEFT, where a Persian eye
   arrives last, and its continuation sat on the right, where the eye starts.
   Every two-column page the reader has ever produced was read backwards, and
   it was invisible because each column on its own reads perfectly.
   The contents of a column were already rtl; only the order of the columns
   was left ltr, carried over from the class's name and its first use.
   The container is rtl so grid track 1 sits on the RIGHT and keeps its own
   width -- reversing the column array instead would also need the width list
   reversed, and a mismatch there gives every column its neighbour's width.
   `document.js` sets the same direction inline; both must agree. */
.source-columns{direction:rtl}.source-columns>div{direction:rtl;text-align:right}
/* 0.14.4 (owner, German page in two columns: every line was flush right, the full stop at the start): a
   left-to-right target's columns read left to right, its first column on the left as in the book */
.source-columns[dir=ltr]{direction:ltr}.source-columns[dir=ltr]>div{direction:ltr;text-align:left}

.toc-row{align-items:flex-end}.toc-page{line-height:1.8}

.document-metrics{display:none!important}.paper.paginated-paper{padding:0!important;border:0!important;box-shadow:none!important}.paper.paginated-paper:has(>.document-leaf){background:transparent!important}.document-leaf{position:relative;padding:36px;box-sizing:border-box;background:var(--paper-bg);color:var(--paper-text);margin-bottom:18px;box-shadow:0 2px 8px #0002;overflow:visible}.leaf-body{position:relative;display:flow-root;box-sizing:border-box}.continuation-label{height:28px;font-size:12px;line-height:24px;color:var(--paper-heading);border-bottom:1px solid currentColor}.document-leaf .source-columns{margin-top:0}.document-leaf .figure-stage{max-width:100%}@media print{.paginated-paper .document-leaf{height:auto!important;min-height:0!important;padding:0;box-shadow:none;margin:0;break-after:page}.leaf-body{height:auto!important}.continuation-label{display:none}}

/* Optional physical one-page fit, shared with HTML and print. */
.paper.fit-paper{min-height:0!important}.fit-paper .single-page-leaf{height:var(--fit-height)!important;min-height:0!important;padding:24px!important;margin:0!important;overflow:clip;break-after:auto!important}.fit-frame{position:relative;display:block}.fit-content{position:absolute;top:0;right:0;width:100%;display:flow-root;transform-origin:top right}.fit-content .math-block,.fit-content .math-inline{overflow:visible}.fit-content>*:first-child{margin-top:0}.fit-content>*:last-child{margin-bottom:0}
@media print{.fit-paper .single-page-leaf{box-shadow:none;background:#fff;color:#222}.fit-paper .fit-content{break-inside:avoid}.fit-paper .single-page-leaf .fit-frame{height:calc(var(--fit-height) - 48px)!important}}
/* Semantic colors use the same renderer in reader, HTML and PDF. */
:root{--semantic-example:#1c6659;--semantic-question:#564095;--semantic-important:#a02b37;--semantic-caption:#556473;--semantic-footnote:#77542f}
[data-theme=dark]{--semantic-example:#8dd5ba;--semantic-question:#c6b4f0;--semantic-important:#ffa2ac;--semantic-caption:#b3c5d5;--semantic-footnote:#dbc29a}
html:not([data-smart-colors=false]) .paper .example{color:var(--semantic-example)}html:not([data-smart-colors=false]) .paper .question{color:var(--semantic-question)}html:not([data-smart-colors=false]) .paper .important{color:var(--semantic-important)}html:not([data-smart-colors=false]) .paper figcaption,html:not([data-smart-colors=false]) .paper .caption{color:var(--semantic-caption)}html:not([data-smart-colors=false]) .paper .footnote{color:var(--semantic-footnote)}
html[data-smart-colors=false] .paper :is(h2,.heading,.important,.example,.question,.caption,figcaption,.footnote,.running_header,.running_footer){color:var(--paper-text)!important}
.technical-term{position:relative;border-bottom:1px dotted currentColor;cursor:help}.term-tip{display:none;position:absolute;bottom:calc(100% + 4px);right:0;min-width:max-content;max-width:280px;padding:5px 9px;border:1px solid #9a7a37;border-radius:6px;background:#20221f;color:#fff;font:13px/1.6 Tahoma,sans-serif;text-align:left;z-index:30;white-space:normal;box-shadow:0 3px 12px #0003}.technical-term:hover>.term-tip,.technical-term:focus>.term-tip,.technical-term:focus-within>.term-tip{display:block}.image-label{opacity:1!important;box-sizing:border-box;overflow:hidden;isolation:isolate;padding:0!important;line-height:1.15!important}.image-label.unfitted{outline:1px dotted #b18339}
@media print{.term-tip{display:none!important}.technical-term{border:0}.overlay-toggle,.export-controls{display:none!important}}

/* Width is owned by the page, not intrinsic min-content widths of PDF columns. */
.page-body,.leaf-body,.fit-content{min-width:0;width:100%;box-sizing:border-box}.source-columns{width:100%;min-width:0}.source-columns>div{width:auto;max-width:100%;overflow-wrap:normal;word-break:normal}.paper .math-inline{white-space:nowrap}.reference-source{display:block;direction:ltr;text-align:left;unicode-bidi:isolate}.image-label{background-clip:border-box;white-space:normal;overflow-wrap:normal}.version-change .paper{min-height:0}

/* 0.13.29 — A LATIN RUN MAY WRAP, BECAUSE SOME OF THEM ARE LONGER THAN THE SHEET.
   `.paper .latin` shared the `white-space:nowrap` above with `.math-inline`, and
   the reason it was written there holds only for the second of the two: an
   inline formula is one visual object and `.math-inline` carries its own
   `max-width:100%` plus `overflow-x:auto`, so it can be scrolled when it does not
   fit. A `latin` run has neither. It is written by `document.js`'s `inline()` as
   `<bdi dir="ltr" class="latin">`, it holds whatever the transcription typed in
   Latin script — a URL, a DOI, an English title, a part number — and under
   `nowrap` it became one unbreakable box. Measured at 1900px, a 914px URL then
   started 176px BEFORE the start edge of the paper, 272px of it lay outside the
   scroller, the scroller's own `scrollLeft` range was [0,0] and a hit-test at the
   run's far end returned nothing: the text was drawn on the grey behind the sheet
   and the reader could not reach it. In a heading it was 280px out.
   `unicode-bidi:isolate` (with `direction:ltr`, set above) is what holds the run
   left-to-right; the nowrap never contributed to that. So the run wraps like the
   prose around it, and `overflow-wrap:anywhere` lets a single long token break
   rather than overflow — it only ever breaks a token that would not fit a line of
   its own, so a short one such as `RS-232` or `TPS7A4700` still stays whole. */
.paper .latin{white-space:normal;overflow-wrap:anywhere}

.image-label{padding:0!important;overflow:visible}.label-ink9{position:absolute;left:50%;top:50%;display:flex;align-items:center;justify-content:center;text-align:center;direction:rtl;line-height:1.15;white-space:normal;overflow:hidden;padding:1px;box-sizing:border-box}.image-label.unfitted{outline:1px dotted #b88433}.image-dark-toggle9{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--paper-note);margin:3px 0}.image-dark-toggle9 select{font:inherit;padding:2px 4px;background:var(--paper-bg);color:var(--paper-text);border:1px solid currentColor;border-radius:5px}[data-theme=dark] .figure-stage[data-image-dark=on]{mix-blend-mode:normal}.persian-number9{font-family:Vazirmatn,Tahoma,sans-serif!important}.formula-reference9{font-size:.7em;margin:8px 0;border:1px solid #a4854250;padding:8px}.formula-reference9 img{display:block;max-width:100%}.source-reference-marker9{font-size:.7em;color:var(--paper-note);white-space:nowrap}@media print{.image-dark-toggle9{display:none}.formula-reference9{display:block}.formula-reference9>img{display:block!important}}
/* 0.18.9 (owner, page 308) — a label is aligned like the source line it covers, in the label's own (the target's)
   direction: `data-align0189` is start/end of the SOURCE line (`label_rules0189`), so flush left in English is
   flush right on a Persian page and stays flush left in German. Without it a label is centred, as before. */
.image-label[data-align0189=start],.image-label[data-align0189=start] .label-ink9{justify-content:flex-start;text-align:start}
.image-label[data-align0189=end],.image-label[data-align0189=end] .label-ink9{justify-content:flex-end;text-align:end}
.figure-stage>img{filter:none!important}
@media print{
 html[data-theme=dark] body{background:#20221f!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 html[data-theme=dark] .paper,html[data-theme=dark] .document-leaf,html[data-theme=dark] .single-page-leaf,html[data-theme=dark] .book-page{background:#20221f!important;color:#f0eee7!important;--paper-heading:#e4c785;--paper-note:#c7bb9c;--paper-label:#2c2e28;--paper-red:#ffaaa3;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 html[data-theme=light] body,html[data-theme=light] .paper,html[data-theme=light] .document-leaf,html[data-theme=light] .book-page{print-color-adjust:exact;-webkit-print-color-adjust:exact}
}

@font-face{font-family:Amiri;src:url(vendor/Amiri.ttf);font-display:swap}
@font-face{font-family:Shabnam;src:url(vendor/Shabnam.woff2);font-display:swap}
@font-face{font-family:Sahel;src:url(vendor/Sahel.woff2);font-display:swap}

html:not([data-smart-colors=false]) .paper .tip{color:var(--semantic-example)}html .paper .muted-emphasis11,html[data-smart-colors=false] .paper .tip{color:var(--paper-text)!important;border:0;padding-inline-start:0}.paper :is(.important,.example,.question,.tip) :is(.math-inline,.math-block,.latin){color:var(--paper-text)}

.technical-term.term-open11>.term-tip{display:block}.term-tip{min-width:0;width:max-content;max-width:min(280px,70vw);overflow-wrap:anywhere}.technical-term:focus-visible{outline:1px solid currentColor;outline-offset:3px}
@media print{.technical-term.term-open11>.term-tip{display:none!important}}

/* 0.11.4: consistent image typography and compact per-image controls. */
/* 0.11.10: the label follows the reading font of the page it sits on. It was
   pinned to Vazirmatn, so a book set in نسخ/امیری/ساحل had figure text in a
   different typeface from the prose beside it. Vazirmatn stays as the fallback. */
.paper .image-label,.paper .label-ink9{font-family:var(--reading-font,Vazirmatn),Vazirmatn,Tahoma,sans-serif!important;font-weight:500;letter-spacing:normal;line-height:1.35!important}
.image-translations>summary{display:flex;align-items:center;gap:6px;list-style:none;font-size:12px;line-height:1.6;padding:4px 0}
.image-translations>summary::-webkit-details-marker{display:none}
.image-translations>summary:before{content:'+';display:inline-flex;align-items:center;justify-content:center;flex:none;width:20px;height:20px;border:1px solid currentColor;border-radius:5px;font:16px/1 Tahoma,sans-serif}
.image-translations[open]>summary:before{content:'−'}
.image-translations>summary:focus-visible{outline:2px solid var(--paper-note);outline-offset:3px}
.paper .image-dark-toggle9{display:flex;justify-content:flex-start;align-items:center;gap:5px;font:11px/1.5 Vazirmatn,Tahoma,sans-serif;margin:4px 0;direction:rtl}
.paper .image-dark-toggle9 :is(select,.gold-trigger){font:11px/1.4 Vazirmatn,Tahoma,sans-serif!important;height:28px!important;min-height:28px!important;width:auto!important;min-width:104px!important;max-width:140px!important;padding:3px 8px!important;border-radius:6px!important;margin:0!important;background:var(--paper-bg)!important;color:var(--paper-text)!important}
.paper .image-dark-toggle9 .gold-select{width:auto!important;max-width:140px!important;margin:0!important}
.label-fit-note114{display:block;color:var(--paper-note);font:11px/1.7 Vazirmatn,Tahoma,sans-serif;margin:4px 0}
/* 0.13.37 — «۳ نوشته در این تصویر جا نشد»: the figure says what it is hiding.
   Immediately under the picture, in the figure's flow, where
   `.label-fit-note114` above has always sat — NOT inside `.figure-stage`, which
   is the rectangle `label_edit150` maps a pointer through for the label drag and
   for «ترجمهٔ محدوده». Warm gold on the paper's own background, a hairline rule,
   no fill: the reader's existing visual language for «this is the reader
   talking, not the book». It replaces the note above rather than joining it.
   0.14.5 — centred under the picture like the tool row beneath it (owner: «قرار بود وسط چین … باشه»). */
.label-unfit-mark247{display:block;width:max-content;max-width:100%;margin:3px auto 0;padding:1px 7px;border:1px solid #b8843366;border-radius:999px;background:transparent;color:#8a6420;font:11px/1.7 Vazirmatn,Tahoma,sans-serif;text-align:right;direction:rtl;cursor:pointer}
.label-unfit-mark247:hover,.label-unfit-mark247:focus-visible{border-color:#b88433;color:#6f4f16;background:#b884331a}
[data-theme=dark] .label-unfit-mark247{color:#d8ab5e;border-color:#d8ab5e55}
.original-only .label-unfit-mark247{display:none}
@media(pointer:coarse){.paper .image-dark-toggle9 :is(select,.gold-trigger){height:34px!important;min-height:34px!important}.image-translations>summary{min-height:34px}}
@media print{.label-fit-note114,.label-unfit-mark247{display:none}}

/* 0.11.14b — the reader's controls are the reader's, not the book's.
   Reported with the two pages side by side: «یک نمونه از تغییراتی هست که صفحه
   ترجمه شده رو از شکل و شمایل کتاب اصلی خارج میکنه». BookylensChrome114 moves every
   control into one of these trays; the tray takes no room in the page's flow and
   shows nothing until the reader points at what it belongs to. Nothing is lost:
   the mark is a real button, reachable by keyboard, and opens the same controls.
   On paper the tray flattens back into the flow, where the existing print rules
   already decide which of its contents belong in an exported document. */
.paper figure{position:relative}
/* 0.11.17 — the page tray is absolute and its only anchor was whatever happened
   to be positioned above the sheet, so the «یادداشت‌های این صفحه» mark could sit
   against the pane instead of the corner of the page it belongs to. The figure
   tray was always anchored, because `figure` is positioned just above. */
.paper{position:relative}
.chrome-tray114{position:absolute;z-index:4;line-height:1;direction:rtl;font:12px/1.6 Vazirmatn,Tahoma,sans-serif}
.figure-tools114{inset-inline-end:0;top:0}
.page-notes114{inset-inline-start:2px;top:2px}
/* 0.13.0 — «آیکون شناورش» is a target you have to hit on a tablet, and 22px
   is not one. Bigger, and bigger again under a finger. */
.tray-mark114{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;
  border:1px solid var(--paper-note);border-radius:7px;background:var(--paper-bg);color:var(--paper-note);
  font:14px/1 Tahoma,sans-serif;cursor:pointer;opacity:0;transition:opacity .15s ease}
@media(pointer:coarse){.tray-mark114{width:38px;height:38px;font-size:17px;opacity:.85}}
/* 0.13.0 — «بزرگ تر بشه به صورتی که وقتی آیکون شناورش رو میزنیم به وضوح این
   پنجره راهنمای نوشته‌های تصویر رو نشون بده». It was 210–320px wide, which is
   two columns of bilingual labels squeezed into a tooltip. Wide enough to
   read now, tall enough to hold a real figure's worth, and it scrolls rather
   than growing past the screen. */
.tray-body114{display:none;position:absolute;top:34px;min-width:min(340px,86vw);
  max-width:min(560px,88vw);max-height:min(60vh,520px);overflow:auto;
  padding:12px 14px;border:1px solid var(--paper-note);border-radius:10px;
  background:var(--paper-bg);color:var(--paper-text);box-shadow:0 10px 28px #0005;
  text-align:start;font-size:13px;line-height:1.75}
.tray-body114 .image-translations{font-size:1em}
.tray-body114 .label-row{gap:1.1em;padding:.42em 0}
.tray-body114 summary{font-size:1.02em;padding:2px 0}
/* The one control the tray adds of its own. */
.dock114{margin-top:8px;font:12px/1.6 Vazirmatn,Tahoma,sans-serif;padding:5px 10px;
  border:1px solid var(--paper-note);border-radius:7px;background:transparent;
  color:var(--paper-note);cursor:pointer}
.dock114:hover{color:var(--paper-text);border-color:var(--paper-text)}
figure > .dock114{display:block;margin:6px auto 0}
/* Docked under the picture it is CONTENT, so it prints and exports — but the
   button that moves it is still a control, and never does. */
@media print{.dock114{display:none!important}}
.figure-tools114 .tray-body114{inset-inline-end:0}
.page-notes114 .tray-body114{inset-inline-start:0}
.chrome-tray114.open114 .tray-body114{display:block}
.chrome-tray114.open114 .tray-mark114,.tray-mark114:focus-visible{opacity:1}
.paper figure:hover .tray-mark114,.paper figure:focus-within .tray-mark114,
.paper:hover .page-notes114 .tray-mark114,.page-notes114:focus-within .tray-mark114{opacity:1}
.tray-body114>*{margin:0 0 6px}
.tray-body114>*:last-child{margin-bottom:0}
.tray-body114 :is(.warning,.explanation-mode){font-size:12px;line-height:1.7;margin:0 0 6px}
:is(.ghost-thumb,.ghost-preview11,.preview-paper10,.album-preview11) .chrome-tray114{display:none}
@media(pointer:coarse){.tray-mark114{opacity:1;width:28px;height:28px}}
@media print{
  .chrome-tray114{position:static}
  .tray-mark114{display:none}
  .tray-body114{display:block;position:static;border:0;background:transparent;box-shadow:none;padding:0;min-width:0;max-width:none}
}

/* 0.11.15 — the one control that stays on the page: «نمایش ترجمه روی تصویر».
   «کوچک و زیر عکس بدون اینکه لایوت رو یا سایز نوشته‌ها در کل صفحه رو تحت تاثیر
   قرار بده». Small, directly under the picture, centred with it, and excluded
   from the page-fit measurement by BookylensChrome114 — so it is visible without
   costing the page a single point of font size. Not printed. */
.paper .overlay-toggle{display:flex;align-items:center;justify-content:center;gap:5px;
  margin:3px 0 0;font:10.5px/1.6 Vazirmatn,Tahoma,sans-serif;color:var(--paper-note);
  opacity:.72;cursor:pointer;user-select:none}
.paper .overlay-toggle:hover,.paper .overlay-toggle:focus-within{opacity:1}
.paper .overlay-toggle input{width:12px;height:12px;margin:0;flex:none}
@media(pointer:coarse){.paper .overlay-toggle{font-size:11.5px}
  .paper .overlay-toggle input{width:15px;height:15px}}
@media print{.paper .overlay-toggle{display:none!important}}

/* 0.11.24 — a mark printed BESIDE a paragraph, drawn beside it.
   «چرا … موقعیت این عکس و پاراگراف متنی بعدش مشابه‌سازی نشده» — of an O'Reilly
   scorpion sitting in the source's left margin next to a note. It was being torn
   out of the margin, given a line of its own and centred above the note.
   `inline-start`, not `left`: the paper is RTL, so a mark in the source's left
   margin lands in the Persian page's right one — mirrored, the way the running
   head and everything else on this page already is. */
.paper figure.margin-mark114{
  float:inline-start;margin:2px 0 4px;max-width:14%;
  shape-outside:margin-box;
}
.paper figure.margin-mark114 img{margin:0;width:100%}
.paper figure.margin-mark114 figcaption{display:none}
.paper figure.margin-mark114 .image-translations{display:none}
.paper .mark-clear018{clear:both;height:0}
/* 0.14.9 — a small figure printed BESIDE text is drawn beside it (document.js `sideGroup`): the text in
   one column, the figure in the other, on the side the translation's direction puts it. Only where
   the group is wide enough for both; narrower, it reads text first and the figure under it, as before. */
.paper .side-group268{container-type:inline-size;margin:0}
@container (min-width:520px){
  .side-inner268{display:grid;column-gap:18px;align-items:start}
  .side-inner268.fig-end268{grid-template-columns:minmax(0,1fr) var(--side-w268,44%)}
  .side-inner268.fig-start268{grid-template-columns:var(--side-w268,44%) minmax(0,1fr)}
  .side-inner268>.side-text268{grid-row:1;min-width:0}
  .side-inner268>figure.side268{grid-row:1;margin:0;min-width:0}
  .side-inner268.fig-end268>.side-text268,.side-inner268.fig-start268>figure.side268{grid-column:1}
  .side-inner268.fig-end268>figure.side268,.side-inner268.fig-start268>.side-text268{grid-column:2}
}
/* On a phone the text column is too narrow to give a seventh of it away. */
@media(max-width:600px){
  .paper figure.margin-mark114{float:none;max-width:22%;margin:0 0 6px}
}
/* 0.18.13 — a photo printed at the start of a paragraph (an author's head shot beside his biography): floated
   on the side document.js `wrap01813` gives it (the source's, mirrored for the translation's direction), as
   wide a share of the column as in the book, and the paragraph's lines run beside it and then under it. The
   group holds its own float, so the next paragraph never runs up beside this photo. In a column narrower
   than 240px the picture is drawn above its text, as before. */
.paper .wrap01813{display:flow-root;container-type:inline-size}
@container (min-width:240px){
  .paper .wrap01813>figure.wrap-fig01813{width:var(--wrap-w01813,30%);margin:.35em 0 .3em;padding:0}
  .paper .wrap01813.wrap-left01813>figure.wrap-fig01813{float:left;margin-right:.9em}
  .paper .wrap01813.wrap-right01813>figure.wrap-fig01813{float:right;margin-left:.9em}
  .paper .wrap01813>figure.wrap-fig01813 .figure-stage{width:100%;margin:0}
  .paper .wrap01813>figure.wrap-fig01813 .figure-stage>img{width:100%;margin:0}
  .paper .wrap01813>figure.wrap-fig01813+*{margin-top:0}
}

/* 0.18.13 — a page of a short DOCUMENT (document_layout01813.py, document.js `doc01813`): its letterhead, and a
   stamp and signature side by side, are each one row — a grid of the source's own gaps and cells, laid in the page's
   direction (so it mirrors in a right-to-left translation; the pictures never do). In a cell a logo stands beside its
   text, as wide a share of the cell as in the source; a signature's name stands under it. In a pane too narrow for
   the row, the cells wrap one after another. A reference number printed in the body keeps its side of the line. */
.paper .doc-row01813{container-type:inline-size;margin:0 0 1.1em}
.paper .doc-grid01813{display:grid;align-items:center}
.paper .doc-cell01813{display:flex;align-items:center;gap:.6em;min-width:0}
.paper .doc-cell01813>figure.doc-logo01813{flex:0 0 var(--doc-logo01813,30%);margin:0;padding:0;min-width:0}
.paper .doc-cell01813>figure.doc-logo01813 .figure-stage{width:100%;margin:0}
.paper .doc-cell01813>figure.doc-logo01813 .figure-stage>img{width:100%;margin:0}
.paper .doc-text01813{flex:1 1 0;min-width:0}
.paper .doc-text01813>*{margin:0!important}
.paper .doc-letterhead01813 .doc-text01813>h2{font-size:1.05em;line-height:1.45}
.paper .doc-letterhead01813 .doc-text01813>p{font-size:.8em;line-height:1.5}
.paper .doc-cell01813.doc-under01813{flex-direction:column;align-items:stretch;text-align:center}
.paper .doc-cell01813.doc-under01813>figure.doc-logo01813{flex:none;width:100%}
@container (max-width:420px){
  .paper .doc-grid01813{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.8em}
  .paper .doc-cell01813{flex:1 1 40%}
}
.paper .doc-place01813[data-align01813=end]>*{text-align:end}
.paper .doc-place01813[data-align01813=center]>*{text-align:center}
.paper .doc-place01813[data-align01813=start]>*{text-align:start}

/* 0.11.26 — a subscript on a label must not change the line box.
   The overlay is fitted by shrinking the ink until `scrollHeight` fits the
   box the source text occupied. A default `<sub>` raises the line height, so
   a label that fits perfectly would measure as overflowing and be shrunk, or
   marked `unfitted` and HIDDEN — re-exposing the English underneath, which is
   the one outcome this overlay exists to prevent. `line-height:0` with the
   position set explicitly keeps the script inside its own line box. */
.paper .image-label sub,.paper .image-label sup,
.paper .label-ink9 sub,.paper .label-ink9 sup,
.paper .label-row sub,.paper .label-row sup{
  font-size:.68em;line-height:0;position:relative;vertical-align:baseline}
.paper .image-label sub,.paper .label-ink9 sub,.paper .label-row sub{bottom:-.22em}
.paper .image-label sup,.paper .label-ink9 sup,.paper .label-row sup{top:-.42em}

/* 0.11.34 — the table's own text under its picture. Plain, small, and it
   scrolls sideways instead of stretching the page: a wide parameter table
   must never widen the sheet on a phone. */
/* 0.13.29 — AND THE SCROLLER IS LEFT-TO-RIGHT, BECAUSE ITS CONTENT IS.
   The scroller carried no `direction` of its own, so it inherited `rtl` from
   `.paper` while the table inside it is `direction:ltr` (the line below). A
   scroll container's origin sits at its inline START, so an `rtl` box holding
   `ltr` content rests at the content's RIGHT-hand end: a 20-column English table
   opened showing columns 7–20, and columns 1–6 — where the table begins — were
   reachable only at a NEGATIVE `scrollLeft` (measured range [-315,1]). Naming
   the direction here puts the resting position back at the first column. This is
   the same mistake 0.13.25 corrected for `.source-columns`, in the opposite
   direction: there the container had been given the CONTENT's direction when it
   should have had the reader's; here it had inherited the reader's when the
   thing it scrolls is the original English. The `<details>` and its summary stay
   `rtl` — they are Persian chrome and only the scroller moves. */
.source-grid134 .grid134-scroll{direction:ltr;overflow-x:auto;-webkit-overflow-scrolling:touch}
.source-grid134 table.grid134{border-collapse:collapse;direction:ltr;font-size:.92em;min-width:100%}
.source-grid134 table.grid134 :is(th,td){border:1px solid #8884;padding:.28em .5em;text-align:left;vertical-align:top}
.source-grid134 table.grid134 th{font-weight:700;background:var(--paper-label)}

/* 0.11.41 — the reconstructed figure of «نسبت طلایی ۳», kept where it cannot be
   mistaken for the book: below the real picture, behind a closed summary, and
   with the warning above the image rather than under it. */
.rebuilt140>summary{color:var(--paper-note,#8a7c5a)}
.rebuilt-note140{margin:6px 0 8px;font-size:12px;line-height:1.9;color:var(--paper-note,#8a7c5a)}
.rebuilt-image140{display:block;max-width:100%;height:auto;border:1px dashed var(--paper-note,#8a7c5a);border-radius:6px;padding:4px}
:is(.ghost-thumb,.ghost-preview11,.preview-paper10,.album-preview11) .rebuilt140{display:none}

/* 0.12.0 — taking hold of a label. The handles exist only while the figure is
   in edit mode, so nothing about a page being READ changes: no extra nodes, no
   extra paint, and the labels keep `overflow:hidden` and their own colours.
   13px is deliberate — smaller is neat on a mouse and unusable with a finger,
   and this project's rule is that the tablet comes first. */
.edit150{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:6px 0;font-size:12px;color:var(--paper-note)}
/* 0.12.2 — the two controls that belong to a picture, on one centred line
   under it: «نمایش ترجمه روی تصویر» and «جابه‌جایی برچسب‌ها». */
.figure-tools152{display:flex;align-items:center;justify-content:center;
  gap:14px;flex-wrap:wrap;margin:4px 0 0}
.figure-tools152 .overlay-toggle,.figure-tools152 .edit150{margin:0}
/* 0.13.1 — `.edit150` by name too: on a figure with no overlay checkbox the
   editor's row has no strip to live in and is appended to the figure itself,
   where this rule could not reach it. */
@media print{.figure-tools152,.edit150{display:none!important}}
.edit150-live{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 0.12.2 — and it stays hidden on its own. `display:flex` outranks the
   browser's own `[hidden]{display:none}`, so until now this span was kept
   invisible only by a rule in `style.css`, a stylesheet the figure does not
   carry. Anywhere document.css is loaded by itself the whole editing row was
   laid out while nobody was editing. */
.edit150-live[hidden]{display:none}
.figure-stage[data-editing150="1"] .image-label{cursor:move;touch-action:none;outline:1px dashed #b8954999;outline-offset:1px}
/* 0.13.2 — `!important`, and not for taste. An earlier layer in this same
   file pins `.image-label{opacity:1!important}`, which silently beat this
   rule: the «being saved» dim has never once appeared on the screen since
   the day it was written. Two `!important`s are decided by specificity, and
   this selector is the more specific of the two. */
.figure-stage[data-editing150="1"] .image-label.saving150{opacity:.72!important}
/* 0.13.2 — «وقتی گوشه هاشون رو میگیریم یا درحال دراگ کردن ... opacity 50%
   بشه که زیرش رو بتونیم ببینیم ... یک border رنگی هم واسش شکل بگیره ... ولی
   وقتی ریسایز تموم شد ... به حالت عادی ... در بیاد». Half-transparent while
   it is held, so the part of the picture the box is being placed over is
   visible under it, and a two-tone edge — the gold the rest of the editor
   uses, on a dark line — so the box's own boundary is still readable against
   both a white page and a dark drawing. `outline` outranks the dashed one
   above by being later; nothing here is inline, so the moment the class comes
   off the label is exactly what it was, with no stored value to restore.
   There is deliberately NO transition on it: a fade means the reader sees
   the old opacity for the first frames of the drag, which is the one moment
   the feedback is for. It is on at the press and off at the release. */
.figure-stage[data-editing150="1"] .image-label.moving153{
  opacity:.5!important;
  outline:2px solid #d8b45c;outline-offset:0;
  box-shadow:0 0 0 1px #2b2317cc, 0 6px 18px #0000004d}
/* 0.13.1 — «این مربع ها رو از نظر ابعاد حدود 30 درصد کوچک تر کن و اگه
   میتونی opacity اون ها رو 70 درصد بذار». Done — but the DRAWN square shrinks
   and the TARGET does not. The comment above is the rule this file already
   keeps: 13px is what a finger needs, and a 9px target on a tablet is a
   handle nobody can take hold of. So the element keeps its size and stays
   transparent, and the mark is painted by `::before` at 70% of it — exactly
   the 30% the reader asked for, on the picture, with the hit area untouched.
   `opacity` sits on the element so it covers the mark and nothing else. */
.grip150{position:absolute;width:13px;height:13px;margin:-7px 0 0 -7px;border:0;background:none;box-shadow:none;display:grid;place-items:center;opacity:.7;touch-action:none;z-index:4}
.grip150::before{content:'';display:block;width:70%;height:70%;box-sizing:border-box;border:1px solid #6d5320;border-radius:2px;background:#f0d9a4;box-shadow:0 1px 3px #0005}
.grip150:hover,.grip150:focus-visible{opacity:1}
.grip150-n,.grip150-s{cursor:ns-resize}
.grip150-w,.grip150-e{cursor:ew-resize}
.grip150-nw,.grip150-se{cursor:nwse-resize}
.grip150-ne,.grip150-sw{cursor:nesw-resize}
@media (pointer:coarse){.grip150{width:17px;height:17px;margin:-9px 0 0 -9px}}
/* 0.13.0 — taking a label off the picture. Outside the top-left corner, so it
   never sits over the words; red, because it is the one control here that
   removes something; and a real <button>, which is what makes the pane's pan
   handler step aside for it without another rule. */
.grip150-remove{position:absolute;left:0;top:0;transform:translate(-55%,-55%);
  width:18px;height:18px;padding:0;line-height:16px;text-align:center;
  border:1px solid #7a1f1f;border-radius:50%;background:#e9d9d9;color:#8c1c1c;
  font:13px/16px Tahoma,sans-serif;cursor:pointer;z-index:5;
  box-shadow:0 1px 3px #0006}
.grip150-remove::before{content:'\00d7'}
.grip150-remove:hover{background:#f6caca;color:#6d1010}
@media (pointer:coarse){.grip150-remove{width:24px;height:24px;line-height:22px;
  font-size:16px}}
@media print{.grip150-remove{display:none!important}}
/* 0.12.0 — the rectangle the reader draws over a part that was missed. Gold,
   like everything else the app draws on a page, and dashed so it reads as a
   selection rather than as another patch. */
.figure-stage[data-drawing150="1"]{cursor:crosshair;touch-action:none}
.figure-stage[data-drawing150="1"] .image-label{pointer-events:none}
/* 0.13.5 — a figure is content, not a file to drag out of the page. The
   browser's native image drag is what put a ghost of the table under the
   reader's cursor while he was editing its labels; the attribute in
   `document.js` covers the element and this covers every other path that
   builds a stage, an exported file included. It is not conditional on the
   editor being open: with hand mode off the pan handler returns early and
   the ghost could appear there too. */
.figure-stage img{-webkit-user-drag:none;user-drag:none}
/* 0.13.2 — «اون مستطیلی که میکشم میخوام بجای اینکه رنگ نارنجی داشته باشه
   رنگ طلایی پرمیوم داشته باشه». It is the palette's own gold now, so it
   follows the theme the reader is in: the premium palette's light-mode gold
   is a darker one on purpose, which is the answer to «وقتی تم روشن هست و
   کتاب بک گراندش سفیده افکتش و خودش دیده میشه؟» — on a white page the edge
   reads at better than 4:1 against the paper. The literal after each `var`
   is not decoration: `document.css` is embedded whole into an exported file,
   where the palette variables do not exist.
   The edge is TWO-TONE — the gold line with a dark hairline outside it — so
   it is equally readable over a white diagram and over a black photograph,
   which one colour alone never is. */
.region150{position:absolute;pointer-events:none;z-index:6;border-radius:3px;
  border:2px dashed var(--gold2,#d8b45c);
  background:color-mix(in srgb,var(--gold,#b89549) 16%,transparent);
  box-shadow:0 0 0 1px #1c170ccc,0 0 0 3px color-mix(in srgb,var(--gold,#b89549) 30%,transparent)}
@supports not (background:color-mix(in srgb,red 10%,transparent)){
  .region150{background:#b8954926;box-shadow:0 0 0 1px #1c170ccc,0 0 0 3px #b8954950}}

/* And while the model is reading it: «هاله انیمیشنی پر رنگ نور و برق زدن
   روی این محدوده مستطیلی ... تا زمانی که کارش تموم بشه». Two things at once,
   both cheap: the halo is a box-shadow that breathes, and the «برق» is one
   band of light sweeping across the rectangle. Neither moves layout and
   neither repaints the picture underneath — `transform` and `opacity` only,
   which is the rule this project keeps for anything that runs while the
   reader is waiting. */
.region150-busy{border-style:solid;overflow:hidden;
  animation:region150-halo 1.5s ease-in-out infinite}
.region150-busy::before{content:'';position:absolute;inset:-60%;
  background:linear-gradient(115deg,transparent 40%,
    color-mix(in srgb,var(--gold2,#edd69e) 55%,transparent) 50%,transparent 60%);
  animation:region150-spark 1.5s linear infinite}
@keyframes region150-halo{
  0%,100%{box-shadow:0 0 0 1px #1c170ccc,0 0 0 3px color-mix(in srgb,var(--gold,#b89549) 30%,transparent),0 0 10px 2px color-mix(in srgb,var(--gold,#b89549) 35%,transparent)}
  50%{box-shadow:0 0 0 1px #1c170ccc,0 0 0 4px color-mix(in srgb,var(--gold2,#edd69e) 55%,transparent),0 0 26px 8px color-mix(in srgb,var(--gold,#b89549) 65%,transparent)}}
@keyframes region150-spark{from{transform:translateX(-70%)}to{transform:translateX(70%)}}
@media (prefers-reduced-motion:reduce){
  .region150-busy{animation:none;box-shadow:0 0 0 1px #1c170ccc,0 0 14px 4px #b8954988}
  .region150-busy::before{display:none}}
:root[data-effects=off] .region150-busy{animation:none}
:root[data-effects=off] .region150-busy::before{display:none}
.edit150 .is-on150{border-color:#b89549;color:#b89549}

/* 0.13.16 — the label toolbar's three repeat actions are icons with their
   words in the tooltip: «بجای اینکه متنشون نشون داده بشه متن به شکل tips
   باشه و روی دکمه ها آیکون مرتبط بذار». The word is still in the DOM, for a
   screen reader and for a screen narrow enough that a tooltip is useless. */
.edit150 .icon150{display:inline-flex;align-items:center;justify-content:center;
 gap:.35em;padding:.32em .5em;min-width:2.1em}
.edit150 .icon150 svg{width:1.15em;height:1.15em;flex:0 0 auto}
.edit150 .icon150 .icon150-word{position:absolute;width:1px;height:1px;overflow:hidden;
 clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.edit150 .icon150.is-on150{outline:2px solid currentColor;outline-offset:-2px}
@media (pointer:coarse){
 /* No tooltip on a touch screen, so the words come back. */
 .edit150 .icon150 .icon150-word{position:static;width:auto;height:auto;overflow:visible;
  clip:auto;clip-path:none}
}

/* 0.13.26 — one footer, one line. «همه پاورقی‌ها رو در یک خط بنویس نه مثل اینجا
   که در ۴ خط اومده»: the model returns the footer row AND its cells, and after
   `footer_rows205` has dropped the repeats, `document.js` puts what is left of
   one row in one of these. Each cell still renders as its own block, so its
   direction and its spans are its own; only the line is shared. The separator is
   « · », which the reader already uses, and it is drawn between cells rather
   than written into any of them, so nothing is added to the text itself. */
.footer-row205{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15em .6em}
.footer-row205>*{margin:0}
.footer-row205>*+*::before{content:'· ';color:var(--paper-note)}
/* 0.18.11 — a running head the book sets at one edge, with the page number outermost, sits at that edge (mirrored):
   on a Persian page the end of the line is its left (document.js `edgeFolio01811`) */
.running-head>.folio-end01811{margin-inline-start:auto}
/* and a group cut from a longer row keeps its page number on the line of its title: a long title wraps inside itself */
.running-head>.folio-group01811{flex-wrap:nowrap}
.running-head>.folio-group01811>.page_number{flex:none}
/* 0.14.5 — the running footer is margin furniture, not text (owner, page 39: «فضای زیادی رو
   اشغال کرده … ارتفاع کمتری اشغال کنه و ظریف تر بشه»). Its lines kept a paragraph's margins and
   the page's 2.2 line height, under 28px of space and 12px of padding. They are now tight small
   lines under a lighter rule; a footer that holds a real footnote keeps the note's spacing. */
.page-footnotes:not(:has(.footnote)){margin-top:14px;padding-top:4px;border-top-color:color-mix(in srgb,var(--paper-note) 55%,transparent)}
.page-footnotes :is(.running_footer,.running_header,.page_number,.footer-row205){margin:0!important;line-height:1.5!important}
.page-footnotes :is(.running_footer,.running_header,.page_number,.footer-row205)+:is(.running_footer,.running_header,.page_number,.footer-row205){margin-top:1px!important}
/* 0.13.47 — the page's notices in one thin box, small type, one line each (owner's choice). */
/* 0.18.12 — on the reading desk too, 35% smaller (owner: «در مورد کوچک‌تر کردن کادر هشدار روی میز مطالعه هم … رو
   انجام بده», after the PDF's 35% in 0.18.11): 11.5px → 7.5px, padding and gaps to match. */
.paper .warning.warnings257,.warning.warnings257{padding:2px 7px!important;margin:5px 0!important;font-size:7.5px!important;line-height:1.45!important;border-radius:4px;border-width:1px}
.warnings257 p{margin:0!important;padding:0!important;white-space:normal!important;font-size:inherit!important;line-height:inherit!important}
.warnings257 p::before{content:"⚠ ";opacity:.7}
/* 0.14.8 — and in a PDF or a printout smaller still (owner, datasheet page 1: «وقتی خروجی PDF گرفتم هنوز کوچک‌تر … بشه»):
   tighter lines, less padding, a hairline border. The desk is unchanged. */
/* 0.18.10 — 35% smaller again (owner: «پاورقی های زرد رنگ … هنوز به نظرم باید کوچک تر شود ما روی فایل پی دی اف
   میتونیم زوم کنیم و بخونیمش … 30 تا 40 درصد هنوز کوچک تر شود»): 10px → 6.5px, padding and gaps to match. */
@media print{.paper .warning.warnings257,.warning.warnings257{font-size:6.5px!important;line-height:1.3!important;padding:1px 5px!important;margin:3px 0!important;border-width:.5px;border-radius:3px}}
/* 0.14.5 (owner, page 75) — a code listing is left-to-right and flush left wherever the page is
   drawn. The desk's rule lives in style.css, which an exported page does not load, so in the export
   every line inherited the Persian page's right alignment. And a table's rows, given under its
   picture one per line, keep their lines instead of running together. A line of code too long for
   the page wraps rather than being cut at the edge: a PDF cannot be scrolled sideways. */
.paper pre{direction:ltr;text-align:left;unicode-bidi:isolate;white-space:pre-wrap;overflow-wrap:anywhere;overflow:visible;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;line-height:1.6;padding:10px 14px}
.paper pre code{font:inherit;white-space:inherit}
.paper figure.table>figcaption{white-space:pre-line}
/* 0.14.10 (owner, page 151: «بهتره متن ترجمه شده کل جدول ها زیر جدول با فونت کوچک تری نشون داده بشه تا فضای زیادی از
   صفحه رو نگیره») — a table's translated rows written under its picture are set smaller and closer. */
.paper figure.table:not(.table266)>figcaption{font-size:.8em;line-height:1.65}
/* 0.14.6 — a simple text table drawn as a real table (document.js `table266`). Each cell keeps the
   alignment of its source cell in the page's own direction; the picture of the table is closed under
   it on the desk and never printed or exported. */
.paper .table266-scroll{max-width:100%;overflow-x:auto;margin:10px 0 6px}
.paper table.table266{border-collapse:collapse;width:100%;font-size:.92em;line-height:1.75}
.paper table.table266 :is(td,th){border:1px solid color-mix(in srgb,var(--paper-note) 55%,transparent);padding:4px 10px;vertical-align:top;text-align:start;white-space:pre-line;overflow-wrap:break-word}
.paper table.table266 .latin{overflow-wrap:break-word}
.paper table.table266 th{font-weight:700;background:color-mix(in srgb,var(--paper-note) 10%,transparent)}
.paper table.table266 .a266-start{text-align:start}
.paper table.table266 .a266-center{text-align:center}
.paper table.table266 .a266-end{text-align:end}
/* 0.18.7 — a picture printed in a source cell, drawn in the same cell (document.js `table266`) */
.paper table.table266 .cellpic018{display:block;position:relative;overflow:hidden;width:100%;min-width:6em;margin:2px 0}
.paper table.table266 .cellpic018>img{position:absolute;max-width:none;margin:0}
/* 0.18.7 — the notes under a table, one row across it (document.js `table266`, `footers`) */
.paper table.table266 tr.footer018 td{font-size:.9em}
/* 0.18.15 — the caption of a table whose rows were rebuilt from its grid and labels (document.js `cap01815`) */
.paper figure.table266>figcaption.caption01815{text-align:center;font-weight:600;margin:8px 0 0}
.paper .table-source266{margin:2px 0 12px;font-size:.8em}
.paper .table-source266>summary{cursor:pointer;color:var(--paper-note);width:max-content;max-width:100%}
.paper .table-source266 img{display:block;max-width:100%;height:auto;margin:6px auto}
@media print{.paper .table-source266{display:none!important}}
/* 0.14.8 — the source's column widths are where the columns START: a column never gets narrower than its
   longest word («حداقل» was broken into «حداق / ل» in a datasheet's narrow «Min» column); a table that
   then outgrows the page scrolls sideways in its own frame (.table266-scroll) */
.paper table.table266.fixed266{table-layout:auto}
/* the source's own frame: horizontal rules only (top, under the header, bottom), or none at all */
.paper table.table266.frame-rules266 :is(td,th){border-left:0;border-right:0;border-top:0;border-bottom:0}
.paper table.table266.frame-rules266{border-top:1.5px solid var(--paper-note);border-bottom:1.5px solid var(--paper-note)}
.paper table.table266.frame-rules266 tr:first-child>:is(td,th){border-bottom:1px solid var(--paper-note)}
.paper table.table266.frame-none266 :is(td,th){border:0}
.paper table.table266:is(.frame-rules266,.frame-none266) th{background:transparent}
/* 0.18.9 — a shaded or framed box of the book (document.js `drawBox189`, sidebar189.py): one unit with the
   source's shade, its own columns side by side where there is room, one under the other in a narrow pane. */
.paper .box189{container-type:inline-size;box-sizing:border-box;margin:1em 0;padding:.75em 1em;border-radius:3px;print-color-adjust:exact;-webkit-print-color-adjust:exact}
.paper .box189-fill{background:var(--box189-fill)}
.paper .box189-frame{border:1px solid var(--box189-frame)}
.paper .box189>:first-child{margin-top:0}.paper .box189>:last-child{margin-bottom:0}
.paper .box189 .box189-cols{gap:1.2em;margin:0}
html[data-theme=dark] .paper .box189-fill{background:color-mix(in srgb,var(--box189-fill) 18%,transparent)}
html[data-theme=dark] .paper .box189-frame{border-color:color-mix(in srgb,var(--box189-frame) 45%,#f0eee7)}
@container (max-width:519px){.paper .box189 .box189-cols{display:block}}
/* 0.18.9 — margin notes level with their paragraph (document.js `row189`): the main text keeps one width beside
   the side track on the whole page; in a narrow pane each note follows its paragraph. */
.paper .margin-row189{container-type:inline-size;margin:0}
.margin-side189{border-inline-start:2px solid var(--paper-note);padding-inline-start:.6em;margin:.2em 0 .8em;font-size:.88em}
@container (min-width:520px){
  .margin-inner189{display:grid;column-gap:1.2em;align-items:start}
  .margin-inner189.note-end189{grid-template-columns:minmax(0,1fr) var(--note-w189,24%)}
  .margin-inner189.note-start189{grid-template-columns:var(--note-w189,24%) minmax(0,1fr)}
  .margin-inner189>div{grid-row:1;min-width:0}
  .margin-inner189.note-end189>.margin-main189,.margin-inner189.note-start189>.margin-side189{grid-column:1}
  .margin-inner189.note-end189>.margin-side189,.margin-inner189.note-start189>.margin-main189{grid-column:2}
  .margin-side189{border:0;padding:0;margin:0}
}
/* 0.18.13 — a display formula wider than its box (marked by math.js `fit`) is drawn at the size that fits it:
   min(1em, box ÷ its natural width in ems), at least .6em on a page that scrolls; on a fitted page and on paper
   as small as it must be, never cut. A formula that fits is never marked and is drawn exactly as before. */
.math-fit01813{container-type:inline-size}
.math-fit01813>.katex-display{font-size:max(.6em,min(1em,calc(99.5cqi / var(--fit01813))))}
.fit-content .math-fit01813>.katex-display{font-size:min(1em,calc(99.5cqi / var(--fit01813)))}
@media print{.math-fit01813>.katex-display{font-size:min(1em,calc(99.5cqi / var(--fit01813)))}}
/* 0.18.13 — an inline formula longer than its line (marked by math.js `fitInline`) flows and breaks like text,
   after a relation or an operator, in its own left-to-right order; a piece wider than the line is drawn smaller. */
.paper .math-inline.math-wrap01813{display:inline;white-space:normal;max-width:none;overflow:visible}
.math-wrap01813>.katex,.math-wrap01813>.katex>.katex-html{white-space:normal}
.math-wrap01813>.katex{font-size:calc(1.21em * var(--wrap01813,1))}
/* 0.18.13 — an equation and its number side by side, the number at the line's end (mirrored on a right-to-left
   page); the formula keeps the rest of the row and is fitted to it like any other. */
.eq-row01813{display:flex;align-items:center;gap:.6em}.eq-row01813>.math-block{flex:1 1 auto;min-width:0}
.eq-number01813{flex:none;white-space:nowrap}
/* 0.18.15 [21] — EXPERIMENT (BOOKYLENS_SLIDE_FIT01815, off): a slide's prose at the slide's own size (document.js `slideFit01815`);
   headings, formulas, figures and their labels are not scaled. Without the switch no paper carries the class. */
.paper.slide01815 :is(p,li,.tip,.important,.example){font-size:calc(var(--slide-scale01815,1)*1em)}
