@font-face { font-family: "Vazirmatn"; src: url("./fonts/Vazirmatn%5Bwght%5D.ttf") format("truetype"); font-style: normal; font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Noto Serif"; src: url("./fonts/NotoSerif-Regular.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Noto Serif"; src: url("./fonts/NotoSerif-Italic.ttf") format("truetype"); font-style: italic; font-weight: 400; font-display: swap; }
@font-face { font-family: "Noto Sans"; src: url("./fonts/NotoSans-Regular.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Noto Sans"; src: url("./fonts/NotoSans-Italic.ttf") format("truetype"); font-style: italic; font-weight: 400; font-display: swap; }
:root { --book-font: "Vazirmatn"; --reading-font: var(--book-font), Georgia, serif; --reading-size: 100%; }
* { box-sizing: border-box; }
html { min-height: 100%; overflow-x: hidden; overflow-y: scroll; background: var(--book-background); scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: var(--book-border) var(--book-code); }
* { scrollbar-width: thin; scrollbar-color: var(--book-border) var(--book-code); }
*::-webkit-scrollbar { width: .7rem; height: .7rem; }
*::-webkit-scrollbar-track { background: var(--book-code); }
*::-webkit-scrollbar-thumb { background: var(--book-border); border: .15rem solid var(--book-code); border-radius: 999px; }
*::-webkit-scrollbar-thumb:hover { background: var(--book-muted); }
body { min-height: 100vh; margin: 0; background: var(--book-background); color: var(--book-text); font-family: var(--reading-font); font-size: var(--reading-size); line-height: 1.7; text-rendering: optimizeLegibility; }
button, input, select { font-size: 16px; }
body[data-reading-font="book"], body[data-reading-font="lora"] { --reading-font: var(--book-font), Georgia, serif; }
body[data-reading-font="noto-serif"] { --reading-font: "Noto Serif", Georgia, serif; }
body[data-reading-font="noto-sans"] { --reading-font: "Noto Sans", ui-sans-serif, system-ui, sans-serif; }
a { color: var(--book-accent); text-decoration: none; }
a:hover, a:focus-visible { color: var(--book-accentStrong); text-decoration: underline; }
button, select, input { font: inherit; }
button { cursor: pointer; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.topbar { position: sticky; top: 0; z-index: 20; display: grid; font-size: 1rem; grid-template-columns: minmax(0, 1fr) minmax(12rem, 24rem) minmax(0, 1fr); align-items: center; gap: 1rem; min-height: 4rem; padding: .65rem 1.25rem; background: color-mix(in srgb, var(--book-surfaceElevated) 94%, transparent); border-bottom: 1px solid var(--book-border); box-shadow: 0 2px 14px var(--book-shadow); backdrop-filter: blur(12px); }
.topbar-leading { display: flex; min-width: 0; align-items: center; gap: 1rem; }
.topbar-title { min-width: 0; overflow: hidden; color: var(--book-text); font-size: 1rem; font-weight: 700; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.topbar-title:hover { color: var(--book-accent); text-decoration: none; }
.menu-button { display: inline-grid; flex: 0 0 2.25rem; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0; color: var(--book-text); background: transparent; border: 1px solid transparent; border-radius: .35rem; font-size: 1rem; }
.menu-button:hover, .menu-button:focus-visible { border-color: var(--book-border); background: var(--book-code); }
.topbar-actions { position: relative; display: flex; align-items: center; justify-content: flex-end; gap: .7rem; }
.language-control { position: relative; }
.language-control-toggle { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.25rem; padding: .25rem .45rem; color: var(--book-muted); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .3rem; }
.language-control-toggle:hover, .language-control-toggle:focus-visible, .language-control-toggle[aria-expanded="true"] { color: var(--book-text); background: var(--book-code); border-color: var(--book-accent); outline: none; }
.language-control-chevron { color: var(--book-muted); font-size: .9rem; line-height: 1; }
.language-flag { display: inline-block; flex: 0 0 auto; width: 1.45rem; height: 1rem; object-fit: cover; border-radius: .12rem; box-shadow: 0 0 0 1px color-mix(in srgb, var(--book-border) 65%, transparent); }
.language-flag-emoji { width: 1.45rem; height: 1.15rem; box-shadow: none; font-size: 1.2rem; line-height: 1; object-fit: contain; }
.language-menu { position: absolute; inset-block-start: calc(100% + .55rem); inset-inline-end: 0; z-index: 30; min-width: 10rem; padding: .35rem; background: var(--book-surfaceElevated); border: 1px solid var(--book-border); border-radius: .45rem; box-shadow: 0 10px 30px var(--book-shadow); }
.language-menu[hidden] { display: none; }
.language-option { display: flex; align-items: center; gap: .55rem; padding: .55rem .65rem; color: var(--book-text); border-radius: .3rem; white-space: nowrap; }
.language-option:hover, .language-option:focus-visible, .language-option.is-current { color: var(--book-accentStrong); background: var(--book-code); text-decoration: none; outline: none; }
.theme-control { position: relative; }
.theme-control-toggle { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.25rem; padding: .25rem .45rem; color: var(--book-muted); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .3rem; white-space: nowrap; }
.theme-control-toggle:hover, .theme-control-toggle:focus-visible, .theme-control-toggle[aria-expanded="true"] { color: var(--book-text); background: var(--book-code); border-color: var(--book-accent); outline: none; }
.theme-control-chevron { color: var(--book-muted); font-size: .9rem; line-height: 1; }
.theme-menu { position: absolute; inset-block-start: calc(100% + .55rem); inset-inline-end: 0; z-index: 30; min-width: 10rem; max-width: calc(100vw - 1.5rem); padding: .35rem; background: var(--book-surfaceElevated); border: 1px solid var(--book-border); border-radius: .45rem; box-shadow: 0 10px 30px var(--book-shadow); }
.theme-menu[hidden] { display: none; }
.theme-option { display: block; width: 100%; padding: .55rem .65rem; color: var(--book-text); background: transparent; border: 0; border-radius: .3rem; text-align: start; white-space: nowrap; }
.theme-option:hover, .theme-option:focus-visible, .theme-option.is-current { color: var(--book-accentStrong); background: var(--book-code); outline: none; }
.reader-settings-toggle { min-width: 2.25rem; height: 2.25rem; padding: 0 .35rem; color: var(--book-muted); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .3rem; font-size: 1rem; }
.reader-settings-toggle:hover, .reader-settings-toggle:focus-visible, .reader-settings-toggle[aria-expanded="true"] { color: var(--book-text); background: var(--book-code); border-color: var(--book-accent); outline: none; }
.reader-settings { position: fixed; top: calc(4rem + .75rem); right: .75rem; z-index: 30; width: min(23rem, calc(100vw - 1.5rem)); max-width: calc(100vw - 1.5rem); padding: 1rem; color: var(--book-text); background: var(--book-surfaceElevated); border: 1px solid var(--book-border); border-radius: .55rem; box-shadow: 0 10px 30px var(--book-shadow); }
.reader-settings[hidden] { display: none; }
.mobile-settings { display: none; }
.mobile-settings-toolbar { display: flex; align-items: center; gap: .4rem; }
.mobile-settings-toggle { display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0; color: var(--book-muted); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .3rem; font-size: 1rem; line-height: 1; }
.mobile-settings-toggle:hover, .mobile-settings-toggle:focus-visible, .mobile-settings-toggle[aria-expanded="true"] { color: var(--book-text); background: var(--book-code); border-color: var(--book-accent); outline: none; }
.mobile-settings-content[hidden] { display: none; }
.mobile-settings-content { padding-top: .6rem; }
.mobile-settings-label { display: flex; align-items: center; justify-content: space-between; margin: .8rem 0 .5rem; color: var(--book-muted); font-size: .85rem; font-weight: 700; }
.mobile-theme-options { display: grid; gap: .4rem; }
.mobile-language-options { display: grid; gap: .25rem; }
.reader-settings-section + .reader-settings-section { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--book-border); }
.reader-settings-label { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; color: var(--book-muted); font-size: .85rem; font-weight: 700; }
.font-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr)); gap: .4rem; }
.font-choice { min-height: 2.5rem; padding: .45rem .35rem; color: var(--book-text); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .35rem; font-size: 1rem; }
.font-choice:hover, .font-choice:focus-visible, .font-choice[aria-pressed="true"] { color: var(--book-accentStrong); border-color: var(--book-accent); background: var(--book-code); outline: none; }
.font-choice-book, .font-choice-lora { font-family: var(--book-font), Georgia, serif; }
.font-choice-noto-serif { font-family: "Noto Serif", Georgia, serif; }
.font-choice-noto-sans { font-family: "Noto Sans", ui-sans-serif, system-ui, sans-serif; }
.size-setting input[type="range"] { display: block; width: 100%; accent-color: var(--book-accent); }
.search-control { width: 100%; max-width: 22rem; justify-self: center; transition: max-width .2s ease; }
body.search-open .topbar { grid-template-columns: minmax(0, 1fr); }
body.search-open .topbar-leading, body.search-open .topbar-actions { display: none; }
body.search-open .search-control { grid-column: 1; max-width: none; justify-self: stretch; }
.search-control input { display: block; width: 100%; padding: .35rem .65rem; color: var(--book-text); background: var(--book-surface); border: 1px solid var(--book-border); border-radius: 99px; outline: none; font-size: 1rem; }
.search-control input:focus { border-color: var(--book-accent); box-shadow: 0 0 0 3px var(--book-selection); }
.search-results { position: absolute; top: calc(100% + .75rem); left: 50%; width: min(24rem, 80vw); max-height: 60vh; overflow: auto; padding: .4rem; transform: translateX(-50%); background: var(--book-surfaceElevated); border: 1px solid var(--book-border); border-radius: .5rem; box-shadow: 0 10px 30px var(--book-shadow); }
.search-results a { display: block; padding: .55rem .7rem; border-radius: .3rem; }
.search-results a:hover { background: var(--book-code); text-decoration: none; }
.search-result-title { display: block; color: var(--book-text); font-weight: 600; line-height: 1.35; }
.search-results small { display: block; color: var(--book-muted); font-size: .78rem; line-height: 1.45; }
.search-results mark { padding: 0 .12em; color: var(--book-text); background: var(--book-selection); border-radius: .15rem; }
.site-layout { display: flex; min-height: calc(100vh - 4rem); }
.sidebar { position: sticky; top: 4rem; align-self: flex-start; width: 18rem; height: calc(100vh - 4rem); overflow: auto; scrollbar-gutter: stable; padding: .75rem 1.25rem 3rem; background: var(--book-surface); border-inline-end: 1px solid var(--book-border); }
.sidebar-header { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .45rem; padding: 0 .35rem .45rem; border-bottom: 1px solid var(--book-border); }
.sidebar-label { color: var(--book-text); font-size: .9rem; font-weight: 700; line-height: 1.2; }
.sidebar-controls { display: flex; gap: .15rem; padding: 0; }
.sidebar-controls button { display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem; padding: 0; color: var(--book-muted); background: transparent; border: 0; border-radius: 50%; font-size: 1rem; line-height: 1; }
.sidebar-controls button:hover, .sidebar-controls button:focus-visible { color: var(--book-accent); background: var(--book-code); outline: none; }
.sidebar-controls button:focus-visible, .toc-toggle:focus-visible { box-shadow: 0 0 0 2px var(--book-selection); }
.page-main { width: 100%; min-width: 0; }
.book-main { max-width: 60rem; margin: 0 auto; }
.book-content { max-width: 47rem; margin: 0 auto; padding: 4rem 2rem 2rem; }
.book-content h1, .book-content h2, .book-content h3, .book-content h4, .book-content h5, .book-content h6, .message-page h1 { color: var(--book-text); line-height: 1.2; text-wrap: balance; }
.book-content h1 { margin: 0 0 3rem; padding-bottom: 1.25rem; text-align: center; font-size: clamp(2em, 5vw, 3.15em); border-bottom: 1px solid var(--book-border); }
.book-content h2 { margin: 3.2rem 0 1rem; font-size: 1.7em; }
.book-content h3 { margin: 2.4rem 0 .75rem; font-size: 1.35em; }
.book-content h4, .book-content h5, .book-content h6 { margin: 1.8rem 0 .55rem; font-size: 1.1em; }
.book-content p, .book-content ul, .book-content ol, .book-content blockquote, .book-content table { margin: 0 0 1.2rem; }
.book-content p { text-align: justify; text-wrap: pretty; }
.book-content li { margin: .35rem 0; }
.book-content blockquote { margin-inline: 0; padding: .2rem 1.25rem; color: var(--book-muted); border-inline-start: 3px solid var(--book-accent); }
.book-content blockquote p:last-child { margin-bottom: 0; }
.book-content img { display: block; max-width: 100%; height: auto; margin: 1.5rem auto; }
.book-content code { padding: .13rem .3rem; color: var(--book-accentStrong); background: var(--book-code); border-radius: .2rem; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .88em; }
.book-content pre { overflow-x: auto; padding: 1rem; background: var(--book-code); border: 1px solid var(--book-border); border-radius: .45rem; line-height: 1.5; }
.book-content pre code { padding: 0; color: inherit; background: transparent; }
.book-content table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; }
.book-content th, .book-content td { padding: .45rem .7rem; border: 1px solid var(--book-border); text-align: start; }
.book-content th { background: var(--book-code); }
.toc-list { list-style: none; margin: 0; padding: 0; }
.toc-item { margin: 0; padding: 0; }
.toc-entry { display: flex; align-items: flex-start; }
.toc-item a { min-width: 0; flex: 1; display: block; padding: .3rem .45rem; color: var(--book-muted); line-height: 1.4; }
.toc-item a:hover, .toc-item a:focus-visible { color: var(--book-accent); background: var(--book-code); text-decoration: none; }
.toc-toggle, .toc-toggle-spacer { display: inline-grid; flex: 0 0 1.25rem; place-items: center; width: 1.25rem; height: 1.55rem; margin-top: .25rem; padding: 0; color: var(--book-muted); background: transparent; border: 0; border-radius: 50%; line-height: 1; }
.toc-toggle:hover, .toc-toggle:focus-visible { color: var(--book-accent); background: var(--book-code); }
.toc-toggle-spacer { pointer-events: none; }
.toc-toggle span { display: block; width: auto; height: auto; font-size: .95rem; line-height: 1; }
.toc-children { list-style: none; margin: 0; padding: 0; padding-inline-start: 1rem; }
.toc-item[data-collapsed] > .toc-children { display: none; }
.sidebar-toc .toc-item { font-size: .9rem; }
.sidebar-toc .toc-item.level-1 { margin-top: .35rem; font-weight: 700; }
.sidebar-toc .toc-item.level-1 > .toc-entry > a { color: var(--book-text); }
.sidebar-toc .toc-item.is-current > .toc-entry > a { color: var(--book-accent); }
.eyebrow { margin: 0 0 .75rem; color: var(--book-accent); font-size: .82rem; font-weight: 700; letter-spacing: .12em; text-align: center; text-transform: uppercase; }
.front-matter { max-width: 65rem; padding: 2rem 3rem 3rem; }
.front-title { margin-bottom: 2.5rem !important; }
.front-columns { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: clamp(2rem, 7vw, 5rem); }
.front-cover { display: flex; align-items: flex-start; justify-content: center; }
.front-details { min-width: 0; padding-top: .25rem; text-align: center; }
.details-list { max-width: 34rem; margin: 0 auto 2.5rem; padding: 1.25rem 1.5rem; background: var(--book-surface); border: 1px solid var(--book-border); border-radius: .55rem; text-align: start; }
.detail-row { display: grid; grid-template-columns: minmax(7rem, 35%) 1fr; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--book-border); }
.detail-row:last-child { border-bottom: 0; }
.detail-row dt { color: var(--book-muted); font-weight: 700; }
.detail-row dd { margin: 0; overflow-wrap: anywhere; }
.empty-details { color: var(--book-muted); }
.cover-image { display: block; width: min(27rem, 100%); max-height: calc(100vh - 10rem); object-fit: contain; border-radius: .2rem; box-shadow: 0 1.4rem 3rem var(--book-shadow); }
.cover-actions, .details-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem; }
.primary-button, .secondary-button { display: inline-block; padding: .65rem 1.2rem; border: 1px solid var(--book-accent); border-radius: .35rem; font-weight: 700; }
.primary-button { color: var(--book-surfaceElevated); background: var(--book-accent); }
.primary-button:hover, .primary-button:focus-visible { color: var(--book-surfaceElevated); background: var(--book-accentStrong); text-decoration: none; }
.secondary-button { color: var(--book-accent); background: transparent; }
.secondary-button:hover, .secondary-button:focus-visible { background: var(--book-code); text-decoration: none; }
.page-navigation { display: flex; justify-content: space-between; gap: 1rem; max-width: 47rem; margin: 0 auto; padding: 2rem; border-top: 1px solid var(--book-border); }
.nav-previous, .nav-next { display: flex; align-items: center; gap: .7rem; max-width: 48%; color: var(--book-text); }
.nav-next { text-align: end; }
.nav-previous:hover, .nav-next:hover { text-decoration: none; }
.nav-previous small, .nav-next small { display: block; color: var(--book-muted); font-size: .75rem; font-weight: 400; }
.nav-spacer { flex: 1; }
.message-page { max-width: 40rem; margin: 0 auto; padding: 7rem 2rem; text-align: center; }
html[dir="rtl"] .book-content p { text-align: justify; text-justify: inter-word; }
html[dir="rtl"] .nav-next { text-align: start; }
html[dir="rtl"] .nav-previous { text-align: start; }
@media (min-width: 901px) {
  body.sidebar-collapsed .sidebar { display: none; }
}
@media (max-width: 900px) {
  .topbar { grid-template-columns: auto minmax(0, 1fr); gap: .7rem; }
  .topbar-leading { grid-column: 1; }
  .search-control { grid-column: 2; max-width: none; justify-self: stretch; }
  .topbar-actions { display: none; }
  .mobile-settings { display: block; margin: 0 0 .75rem; padding: 0; }
  .sidebar { position: fixed; inset-block: 4rem 0; inset-inline-start: 0; inset-inline-end: auto; left: 0; right: auto; z-index: 15; transform: translate3d(-105%, 0, 0); transition: transform .2s ease; box-shadow: 8px 0 25px var(--book-shadow); }
  html[dir="rtl"] .sidebar { inset-inline-start: auto; inset-inline-end: 0; left: auto; right: 0; transform: translate3d(105%, 0, 0); box-shadow: -8px 0 25px var(--book-shadow); }
  body.sidebar-open .sidebar { transform: translate3d(0, 0, 0); }
  .book-main { max-width: 100%; }
}
@media (max-width: 680px) {
  .topbar { grid-template-columns: auto minmax(0, 1fr); gap: .45rem; padding-inline: .7rem; }
  .topbar-leading { gap: .35rem; }
  .topbar-title { max-width: 11rem; }
  .language-current-name, .language-control-chevron { display: none; }
  .language-control-toggle { padding-inline: .2rem; }
  .reader-settings-toggle { min-width: 2rem; }
  .book-content { padding-inline: 1rem; padding-top: 2.5rem; }
  .front-matter { padding-inline: 1rem; }
  .front-columns { grid-template-columns: 1fr; gap: 2.5rem; }
  .book-content h1 { margin-bottom: 2rem; }
  .detail-row { grid-template-columns: 1fr; gap: .15rem; }
  .page-navigation { padding-inline: 1rem; }
}
@media print {
  .topbar, .sidebar, .page-navigation, .cover-actions, .details-actions, .language-menu, .theme-menu { display: none !important; }
  .site-layout, .page-main { display: block; min-height: 0; }
  .book-content { max-width: none; padding: 0; }
  .book-content h1 { page-break-before: always; }
  a { color: inherit; text-decoration: none; }
}
