/* =========================================================================
   کتاب‌خانه | Design Tokens
   پالت: کاغذ گرم، جوهر سبز-تیره کتابخانه‌ای، برنج کهنه، زرشکی چرمی
   ========================================================================= */
:root{
  --paper:      #F6F1E4;
  --paper-2:    #EFE8D6;
  --ink:        #16261F;
  --ink-soft:   #3B4C43;
  --brass:      #B8892F;
  --brass-2:    #8E6A22;
  --maroon:     #6E2A2A;
  --slate:      #33475B;
  --line:       #DCD3B9;
  --white:      #FFFDF8;
  --danger:     #A23B2E;
  --success:    #3E6B4F;

  --font-display: 'Noto Serif Arabic', 'Vazirmatn', serif;
  --font-body:    'Vazirmatn', Tahoma, sans-serif;
  --font-data:    'Vazirmatn', Tahoma, sans-serif;

  --radius-s: 4px;
  --radius-m: 10px;
  --radius-l: 18px;

  --shadow-s: 0 1px 2px rgba(22,38,31,.08);
  --shadow-m: 0 6px 20px rgba(22,38,31,.10);
  --shadow-l: 0 16px 40px rgba(22,38,31,.16);

  --container: 1240px;
  --gap: 24px;
  --header-h: 76px;
}

@media (prefers-color-scheme: dark){
  :root{
    --paper:    #14201A;
    --paper-2:  #192920;
    --ink:      #F3EEDD;
    --ink-soft: #C8D2C7;
    --line:     #2B3A31;
    --white:    #1B2A22;
  }
}

/* =========================================================================
   ریست کامل و پایه تمام تگ‌های HTML
   ========================================================================= */
*, *::before, *::after{ box-sizing: border-box; }
html{
  scroll-behavior: smooth;
  text-size-adjust: 100%;
}
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *, *::before, *::after{ animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}
body{
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.85;
  direction: rtl;
  -webkit-font-smoothing: antialiased;
}
img, svg, video, canvas{ max-width: 100%; height: auto; display: block; }
figure{ margin: 0; }
figcaption{ font-size: .85rem; color: var(--ink-soft); margin-top: 8px; }

h1,h2,h3,h4,h5,h6{
  font-family: var(--font-display);
  color: var(--ink);
  line-height: 1.35;
  margin: 0 0 .6em;
  font-weight: 700;
}
h1{ font-size: clamp(1.9rem, 1.4rem + 2vw, 3.1rem); }
h2{ font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.2rem); }
h3{ font-size: clamp(1.2rem, 1.05rem + .6vw, 1.5rem); }
h4{ font-size: 1.15rem; }
h5{ font-size: 1rem; }
h6{ font-size: .9rem; color: var(--ink-soft); }

p{ margin: 0 0 1.1em; }
a{ color: var(--slate); text-decoration: none; transition: color .15s ease; }
a:hover{ color: var(--brass-2); }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible{
  outline: 2px solid var(--brass);
  outline-offset: 2px;
  border-radius: 3px;
}

strong,b{ font-weight: 700; }
em,i{ font-style: normal; }
small{ font-size: .85em; color: var(--ink-soft); }
mark{ background: rgba(184,137,47,.28); color: inherit; padding: 0 .15em; }
hr{ border: none; border-top: 1px solid var(--line); margin: 2.4em 0; }

ul,ol{ margin: 0 0 1.1em; padding-inline-start: 1.4em; }
li{ margin-bottom: .4em; }
dl{ margin: 0 0 1.1em; }
dt{ font-weight: 700; }
dd{ margin: 0 0 .8em; color: var(--ink-soft); }

blockquote{
  margin: 1.6em 0;
  padding: .9em 1.3em;
  border-inline-start: 4px solid var(--brass);
  background: var(--paper-2);
  border-radius: var(--radius-s);
  font-family: var(--font-display);
  font-style: normal;
  color: var(--ink-soft);
}
blockquote p:last-child{ margin-bottom: 0; }
cite{ font-style: normal; color: var(--ink-soft); }

code, kbd, samp, pre{
  font-family: 'Courier New', monospace;
  background: var(--paper-2);
  border-radius: var(--radius-s);
}
code{ padding: .15em .4em; font-size: .9em; }
pre{ padding: 1em 1.2em; overflow-x: auto; line-height: 1.6; }
pre code{ background: none; padding: 0; }

table{
  width: 100%;
  border-collapse: collapse;
  margin: 1.4em 0;
  font-size: .95rem;
}
th, td{
  border: 1px solid var(--line);
  padding: .6em .8em;
  text-align: right;
}
th{ background: var(--paper-2); font-family: var(--font-display); }
tbody tr:nth-child(even){ background: rgba(0,0,0,.015); }

fieldset{ border: 1px solid var(--line); border-radius: var(--radius-m); padding: 1em 1.2em; }
legend{ padding: 0 .5em; font-family: var(--font-display); }
label{ display: inline-block; margin-bottom: .4em; font-size: .92rem; }

input, textarea, select, button{
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--ink);
}
input[type=text], input[type=search], input[type=email], input[type=tel],
input[type=url], input[type=number], input[type=password], textarea, select{
  width: 100%;
  padding: .7em .9em;
  border: 1px solid var(--line);
  border-radius: var(--radius-m);
  background: var(--white);
  transition: border-color .15s ease, box-shadow .15s ease;
}
input:focus, textarea:focus, select:focus{
  border-color: var(--brass);
  box-shadow: 0 0 0 3px rgba(184,137,47,.18);
  outline: none;
}
textarea{ min-height: 120px; resize: vertical; }

button, .btn, input[type=submit]{
  cursor: pointer;
  border: none;
  border-radius: var(--radius-m);
  padding: .75em 1.5em;
  font-weight: 700;
  background: var(--ink);
  color: var(--paper);
  transition: transform .12s ease, background .15s ease, box-shadow .15s ease;
  display: inline-flex;
  align-items: center;
  gap: .5em;
}
button:hover, .btn:hover, input[type=submit]:hover{ background: var(--brass-2); }
button:active, .btn:active{ transform: translateY(1px); }
.btn.btn-outline{
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--ink);
}
.btn.btn-outline:hover{ background: var(--ink); color: var(--paper); }
.btn.btn-ghost{ background: transparent; color: var(--slate); padding: .4em .6em; }

progress{
  width: 100%;
  height: 10px;
  border-radius: 20px;
  overflow: hidden;
  border: none;
}
progress::-webkit-progress-bar{ background: var(--paper-2); border-radius: 20px; }
progress::-webkit-progress-value{ background: var(--brass); border-radius: 20px; }
progress::-moz-progress-bar{ background: var(--brass); }

::selection{ background: var(--brass); color: var(--white); }

/* =========================================================================
   ابزارهای عمومی / Layout
   ========================================================================= */
.container{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 20px;
}
.visually-hidden{
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.skip-link{
  position: absolute;
  right: -9999px;
  top: 0;
  background: var(--ink);
  color: var(--paper);
  padding: .8em 1.2em;
  z-index: 999;
  border-radius: 0 0 0 var(--radius-m);
}
.skip-link:focus{ right: 0; }

/* عنصر امضادار: جداکننده «قفسه کتاب» ------------------------------------- */
.shelf-divider{
  height: 14px;
  margin: 3em 0 2.2em;
  background-image:
    repeating-linear-gradient(90deg, var(--brass) 0 2px, transparent 2px 22px);
  background-position: bottom;
  background-size: 100% 2px;
  background-repeat: repeat-x;
  position: relative;
}
.shelf-divider::before{
  content:"";
  position:absolute; inset-inline:0; bottom:0;
  height: 14px;
  background-image: repeating-linear-gradient(90deg, var(--brass) 0 2px, transparent 2px 22px);
  background-position: top;
  background-size: 22px 14px;
  background-repeat: repeat-x;
  opacity: .55;
}
.section-title{
  display:flex; align-items:baseline; justify-content:space-between;
  gap: 1em; margin-bottom: 1.2em;
}
.section-title h2{ margin:0; }
.section-title .see-all{ font-size:.92rem; white-space:nowrap; }

/* =========================================================================
   هدر
   ========================================================================= */
.site-header{
  position: sticky; top:0; z-index: 50;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.site-header .header-inner{
  display:flex; align-items:center; gap: 28px;
  min-height: var(--header-h);
}
.site-logo{ display:flex; align-items:center; gap:.6em; flex-shrink:0; }
.site-logo img{ max-height: 42px; width:auto; }
.site-logo .site-title{
  font-family: var(--font-display); font-weight:700; font-size:1.3rem; color: var(--ink);
}
.primary-nav{ flex: 1; }
.primary-nav ul{
  list-style:none; margin:0; padding:0; display:flex; gap: 6px; flex-wrap:wrap;
}
.primary-nav li{ margin:0; position:relative; }
.primary-nav a{
  display:block; padding: .6em .9em; color: var(--ink); font-weight:600; border-radius: var(--radius-s);
}
.primary-nav a:hover{ background: var(--paper-2); color: var(--brass-2); }
.primary-nav .menu-item-has-children > ul{
  position:absolute; top:100%; right:0; min-width: 220px;
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-m);
  box-shadow: var(--shadow-m); padding: 8px; display:none; z-index: 60;
}
.primary-nav .menu-item-has-children:hover > ul,
.primary-nav .menu-item-has-children > a:focus-visible + ul{ display:block; }
.primary-nav .menu-item-has-children ul li a{ padding:.5em .7em; }

.header-search{ flex-shrink:0; width: 300px; max-width: 40vw; }
.header-search form{ position:relative; }
.header-search input[type=search]{ padding-inline-start: 2.4em; border-radius: 999px; background: var(--white); }
.header-search .search-icon{
  position:absolute; inset-inline-start: .9em; top:50%; transform:translateY(-50%);
  color: var(--ink-soft); pointer-events:none;
}
.ajax-search-results{
  position:absolute; top: calc(100% + 8px); right:0; left:0;
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-m);
  box-shadow: var(--shadow-l); max-height: 420px; overflow:auto; z-index: 70; display:none;
}
.ajax-search-results.is-open{ display:block; }
.ajax-search-results a.result-item{
  display:flex; gap:12px; align-items:center; padding: 10px 14px; color: var(--ink);
  border-bottom: 1px solid var(--line);
}
.ajax-search-results a.result-item:last-child{ border-bottom:none; }
.ajax-search-results a.result-item:hover{ background: var(--paper-2); }
.ajax-search-results img{ width:38px; height:54px; object-fit:cover; border-radius:3px; flex-shrink:0; }
.ajax-search-results .r-title{ font-weight:700; font-size:.95rem; }
.ajax-search-results .r-meta{ font-size:.8rem; color: var(--ink-soft); }

.header-toggle{ display:none; padding:0; }

/* =========================================================================
   کارت کتاب (گرید آرشیو)
   ========================================================================= */
.book-grid{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 26px;
  margin: 0 0 2.4em;
  list-style:none; padding:0;
}
.book-card{
  background: var(--white);
  border-radius: var(--radius-l);
  overflow:hidden;
  box-shadow: var(--shadow-s);
  transition: transform .18s ease, box-shadow .18s ease;
  position:relative;
  display:flex; flex-direction:column;
}
.book-card:hover{ transform: translateY(-5px); box-shadow: var(--shadow-m); }
.book-card .cover-wrap{ position:relative; aspect-ratio: 2/3; overflow:hidden; background: var(--paper-2); }
.book-card .cover-wrap img{ width:100%; height:100%; object-fit:cover; }
.book-card .genre-ribbon{
  position:absolute; top:10px; inset-inline-start:-6px;
  background: var(--maroon); color:#fff; font-size:.72rem; font-weight:700;
  padding: .35em .9em .35em .7em;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 12px 100%, 0 70%);
  box-shadow: var(--shadow-s);
}
.book-card .body{ padding: 14px 14px 16px; flex:1; display:flex; flex-direction:column; gap:6px; }
.book-card h3{ font-size: 1rem; margin:0; line-height:1.5; }
.book-card h3 a{ color: var(--ink); }
.book-card .authors{ font-size:.85rem; color: var(--ink-soft); }
.book-card .rating{ margin-top:auto; display:flex; align-items:center; gap:6px; font-size:.85rem; }
.book-card .rating .stars{ color: var(--brass); letter-spacing:1px; }

/* =========================================================================
   آرشیو / فیلترها
   ========================================================================= */
.archive-header{ padding: 2.2em 0 1em; }
.archive-header p.archive-desc{ color: var(--ink-soft); max-width: 60ch; }

.archive-toolbar{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap: 14px;
  padding: 14px 16px; background: var(--white); border:1px solid var(--line);
  border-radius: var(--radius-m); margin-bottom: 24px;
}
.archive-toolbar .toolbar-filters{ display:flex; flex-wrap:wrap; gap:10px; }
.archive-toolbar select{ width:auto; min-width: 170px; max-width: 260px; }
.archive-toolbar .results-count{ color:var(--ink-soft); font-size:.9rem; white-space:nowrap; }
.genre-filter-list{
  display:flex; flex-wrap:wrap; gap:8px; list-style:none; padding:0; margin: 0 0 20px;
}
.genre-filter-list a{
  display:inline-block; padding:.4em 1em; border:1px solid var(--line); border-radius:999px;
  font-size:.85rem; color: var(--ink); background: var(--white);
}
.genre-filter-list a.is-active, .genre-filter-list a:hover{
  background: var(--ink); color: var(--paper); border-color: var(--ink);
}

/* نواحی ابزارک اختصاصی --------------------------------------------------- */
.book-archive-widget-area, .single-book-widget-area{ margin-bottom: 2em; }
.book-archive-widget-area .widget, .single-book-widget-area .widget,
.front-page-sidebar .widget{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-m);
  padding: 1.1em 1.3em; margin-bottom: 1.2em;
}
.book-archive-widget-area .widget h3, .single-book-widget-area .widget h3,
.front-page-sidebar .widget h3{ margin-bottom:.5em; font-size:1.05rem; }

/* صفحه اول: چیدمان با سایدبار اختیاری ------------------------------------ */
.front-page-layout{ display:block; }
.front-page-layout.has-sidebar{
  display:grid; grid-template-columns: 1fr 300px; gap: 32px; align-items:start;
}
.front-page-sidebar{ position:sticky; top: calc(var(--header-h) + 20px); }

/* بلوک مقاله HTML صفحه اول ------------------------------------------------ */
.kb-homepage-article{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-l);
  padding: 2em 2.2em;
}
.kb-homepage-article img{ border-radius: var(--radius-m); }
.kb-homepage-article > *:last-child{ margin-bottom:0; }

.load-more-wrap{ text-align:center; margin: 1em 0 3em; }
#load-more-spinner{ display:none; margin: 1em auto; width:26px; height:26px; border-radius:50%;
  border:3px solid var(--paper-2); border-top-color: var(--brass); animation: spin .7s linear infinite; }
@keyframes spin{ to{ transform: rotate(360deg); } }

/* =========================================================================
   صفحه تکی کتاب
   ========================================================================= */
.single-book-hero{
  display:grid; grid-template-columns: 300px 1fr; gap: 42px;
  padding: 2.4em 0; align-items:start;
}
.single-book-hero .cover{
  border-radius: var(--radius-l); overflow:hidden; box-shadow: var(--shadow-l);
  aspect-ratio: 2/3; background: var(--paper-2);
}
.single-book-hero .cover img{ width:100%; height:100%; object-fit:cover; }
.book-title{ margin-bottom:.3em; }
.book-authors{ font-size:1.1rem; color: var(--ink-soft); margin-bottom:1em; }
.book-genres{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom: 1.2em; }
.genre-badge{
  display:inline-flex; align-items:center; gap:.4em;
  background: var(--paper-2); color: var(--ink); font-size:.82rem; font-weight:700;
  padding:.4em 1em .4em .8em;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 10px 100%, 0 65%);
  border: 1px solid var(--line);
}
.genre-badge:hover{ background: var(--brass); color:#fff; }

.book-rating-block{ display:flex; align-items:center; gap:.7em; margin-bottom:1.4em; }
.book-rating-block .stars{ color: var(--brass); font-size:1.3rem; letter-spacing:2px; }
.book-rating-block .rating-num{ font-weight:700; }
.book-rating-block .rating-count{ color: var(--ink-soft); font-size:.9rem; }

.book-info-list{
  display:grid; grid-template-columns: repeat(auto-fill, minmax(220px,1fr));
  gap: 14px 22px; list-style:none; padding: 1.2em; margin: 0 0 1.6em;
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-m);
}
.book-info-list li{ margin:0; display:flex; flex-direction:column; gap:2px; }
.book-info-list .label{ font-size:.78rem; color: var(--ink-soft); }
.book-info-list .value{ font-family: var(--font-data); font-weight:700; }
.book-info-list .value.ltr{ direction: ltr; text-align: right; unicode-bidi: plaintext; }

.book-source-link{ font-size:.85rem; color: var(--ink-soft); }
.book-content{ margin-top: 1.6em; }
.book-more-content{ margin-top: 2.4em; padding-top: 2em; border-top: 1px dashed var(--line); }

/* گزارش کتاب --------------------------------------------------------------*/
.report-book{
  margin: 2.6em 0; padding: 1.4em; background: var(--paper-2);
  border-radius: var(--radius-m); border:1px solid var(--line);
}
.report-book summary{ cursor:pointer; font-weight:700; color: var(--maroon); list-style:none; display:flex; align-items:center; gap:.5em; }
.report-book summary::-webkit-details-marker{ display:none; }
.report-book summary::before{ content:"⚑"; }
.report-book form{ margin-top: 1em; display:grid; gap: 10px; max-width: 480px; }
.report-book .report-msg{ font-size:.9rem; padding:.6em .9em; border-radius: var(--radius-s); }
.report-book .report-msg.ok{ background: rgba(62,107,79,.15); color: var(--success); }
.report-book .report-msg.err{ background: rgba(162,59,46,.15); color: var(--danger); }

/* نظرات --------------------------------------------------------------------*/
.comments-area{ margin-top: 3em; }
.comment-list{ list-style:none; padding:0; margin:0; }
.comment-list .children{ list-style:none; padding-inline-start: 2.2em; margin:0; }
.comment-body{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius-m);
  padding: 1.1em 1.3em; margin-bottom: 14px;
}
.comment-meta{ display:flex; align-items:center; gap:.7em; margin-bottom:.5em; }
.comment-author .avatar{ border-radius:50%; }
.comment-author b{ font-size:.95rem; }
.comment-metadata{ font-size:.8rem; color: var(--ink-soft); }
.comment-reply-link{ font-size:.82rem; }
#respond{ margin-top: 1.6em; }
.comment-form p{ margin-bottom: .9em; }
.comment-form-comment textarea{ min-height: 130px; }

/* =========================================================================
   فوتر
   ========================================================================= */
.site-footer{ background: var(--ink); color: var(--paper); margin-top: 4em; }
.site-footer a{ color: var(--paper); }
.site-footer a:hover{ color: var(--brass); }
.footer-widgets{
  display:grid; grid-template-columns: repeat(3,1fr); gap: 40px;
  padding: 3.2em 0 2.4em;
}
.footer-widgets .widget h3{ color: var(--paper); font-size:1.05rem; margin-bottom:.8em; position:relative; }
.footer-widgets .widget ul{ list-style:none; padding:0; margin:0; }
.footer-widgets .widget li{ margin-bottom:.55em; font-size:.92rem; }
.footer-widgets .widget-about p{ color: rgba(246,241,228,.75); font-size:.92rem; }
.footer-contact li{ display:flex; align-items:center; gap:.5em; }
.footer-bottom{
  border-top: 1px solid rgba(246,241,228,.15);
  padding: 1.2em 0; text-align:center; font-size:.85rem; color: rgba(246,241,228,.65);
}

/* =========================================================================
   ادمین ایمپورتر (پیشرفت/کرون)
   ========================================================================= */
.importer-wrap .card{ background:#fff; border:1px solid #ddd; border-radius:8px; padding:20px; max-width:640px; }
.importer-wrap .progress-row{ display:flex; align-items:center; gap:12px; margin-top:14px; }
.importer-wrap .progress-num{ font-weight:700; }
.importer-wrap .status-badge{ display:inline-block; padding:.2em .7em; border-radius:999px; font-size:.8rem; }
.importer-wrap .status-badge.running{ background:#fff3cd; color:#7a5b00; }
.importer-wrap .status-badge.done{ background:#d7f0dd; color:#1e6b39; }
.importer-wrap .status-badge.idle{ background:#eee; color:#666; }
.importer-wrap .status-badge.error{ background:#fbdada; color:#a23b2e; }

/* =========================================================================
   ریسپانسیو
   ========================================================================= */
@media (max-width: 1024px){
  .footer-widgets{ grid-template-columns: 1fr 1fr; }
  .single-book-hero{ grid-template-columns: 240px 1fr; gap: 28px; }
  .front-page-layout.has-sidebar{ grid-template-columns: 1fr; }
  .front-page-sidebar{ position:static; }
}

@media (max-width: 782px){
  :root{ --header-h: 64px; }
  .primary-nav{
    position: fixed; inset-inline: 0; top: var(--header-h); bottom:0;
    background: var(--paper); padding: 20px; overflow:auto;
    transform: translateY(-8px); opacity:0; pointer-events:none;
    transition: opacity .18s ease, transform .18s ease;
  }
  .primary-nav.is-open{ opacity:1; pointer-events:auto; transform:none; }
  .primary-nav ul{ flex-direction:column; }
  .primary-nav .menu-item-has-children > ul{ position:static; box-shadow:none; display:block; border:none; padding-inline-start: 1em; }
  .header-search{ width:auto; max-width:none; flex:1; order:3; }
  .header-toggle{
    display:inline-flex; align-items:center; justify-content:center;
    width:40px; height:40px; padding:0; background:transparent; color:var(--ink); order:4;
    border-radius: var(--radius-s); flex-shrink:0;
  }
  .header-toggle svg{ flex-shrink:0; }
  .header-toggle:hover{ background: var(--paper-2); }
  .site-header .header-inner{ flex-wrap:wrap; padding: 10px 0; gap: 12px; }

  .single-book-hero{ grid-template-columns: 1fr; }
  .single-book-hero .cover{ max-width: 260px; margin: 0 auto; }
  .footer-widgets{ grid-template-columns: 1fr; padding: 2.4em 0 1.6em; }
  .book-grid{ grid-template-columns: repeat(auto-fill, minmax(140px,1fr)); gap:16px; }
}

@media (max-width: 480px){
  body{ font-size: 15px; }
  .book-info-list{ grid-template-columns: 1fr 1fr; }
}
