/* =========================================================================
   Soouo · issue archive (frontend/pages/issueArchive.tpl) and single-issue
   table of contents (frontend/pages/issue.tpl / objects/issue_toc.tpl).
   OJS core markup: ul.issues_archive > li > .obj_issue_summary
   Soouo's issue_summary.tpl override adds data-year/-volume/-number for the
   client-side filter in js/issue-filters.js — no data is invented, only the
   real Issue::getYear()/getVolume()/getNumber() values already used by core.
   ========================================================================= */

/* ---- filter toolbar (issue archive page) ---- */
.soouo-issue-filters {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px;
  margin: 22px 0 28px; padding: 18px 20px;
  background: var(--soouo-surface); border: 1px solid var(--soouo-border);
  border-radius: var(--soouo-radius);
}
.soouo-issue-filters .soouo-field { display: grid; gap: 6px; min-width: 140px; }
.soouo-issue-filters label { font-size: 11.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--soouo-text-3); }
.soouo-issue-filters select {
  height: 42px; padding: 0 12px; border: 1px solid var(--soouo-border-2);
  border-radius: var(--soouo-radius-sm); background: var(--soouo-bg); color: var(--soouo-text);
  font-size: 13.5px;
}
.soouo-issue-filters select:focus-visible { outline: none; box-shadow: var(--soouo-ring); border-color: var(--soouo-accent); }
.soouo-issue-filters button[data-issue-filter-reset] {
  height: 42px; padding: 0 16px; border: 1px solid var(--soouo-border-2); border-radius: var(--soouo-radius-sm);
  background: transparent; color: var(--soouo-text-2); font-size: 13px; font-weight: 600;
}
.soouo-issue-filters button[data-issue-filter-reset]:hover { border-color: var(--soouo-accent); color: var(--soouo-text); }
.soouo-issue-filters__count { margin-left: auto; align-self: center; font-size: 12.5px; color: var(--soouo-text-3); }
[data-issue-hidden="1"] { display: none !important; }

/* ---- desktop card grid ---- */
@media (min-width: 641px) {
  .page_issue_archive .issues_archive {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 26px 22px; align-items: start;
  }
}
@media (min-width: 1200px) {
  .page_issue_archive .issues_archive { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.page_issue_archive .issues_archive > li { min-width: 0; margin: 0; padding: 0; }

.page_issue_archive .obj_issue_summary {
  height: 100%; min-width: 0; display: flex; flex-direction: column; gap: 10px;
  padding: 14px; border: 1px solid var(--soouo-border); border-radius: var(--soouo-radius-lg);
  background: var(--soouo-surface); box-shadow: var(--soouo-shadow-sm);
  transition: transform var(--soouo-dur) var(--soouo-ease), box-shadow var(--soouo-dur) var(--soouo-ease);
}
.page_issue_archive .obj_issue_summary:hover { transform: translateY(calc(-4px * var(--soouo-motion))); box-shadow: var(--soouo-shadow); }
.page_issue_archive .obj_issue_summary .cover { display: block; width: 100%; margin: 0; border-radius: var(--soouo-radius-sm); overflow: hidden; aspect-ratio: 3/4; background: var(--soouo-bg-2); }
.page_issue_archive .obj_issue_summary .cover img {
  display: block; width: 100%; height: 100%; object-fit: cover; margin: 0;
}
.page_issue_archive .obj_issue_summary .title {
  display: block; margin: 0; font-family: var(--soouo-font-heading);
  font-size: 16px; line-height: 1.35; font-weight: 700; color: var(--soouo-text);
  overflow-wrap: anywhere;
}
.page_issue_archive .obj_issue_summary .series,
.page_issue_archive .obj_issue_summary .description {
  font-size: 12.5px; line-height: 1.55; color: var(--soouo-text-3);
}
.page_issue_archive .obj_issue_summary .description { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.page_issue_archive .obj_issue_summary .soouo-issue-date {
  font-size: 11.5px; color: var(--soouo-text-3); display: flex; align-items: center; gap: 4px;
}
.page_issue_archive .obj_issue_summary .soouo-issue-date .material-symbols-outlined { font-size: 15px; }
.page_issue_archive .obj_issue_summary .soouo-btn { margin-top: auto; align-self: flex-start; }

/* ---- single-issue table of contents ---- */
.obj_issue_toc .heading { margin-bottom: 30px; }
.obj_issue_toc .cover { max-width: 220px; margin: 0 0 16px; border-radius: var(--soouo-radius); overflow: hidden; box-shadow: var(--soouo-shadow); }
.obj_issue_toc .cover img { display: block; width: 100%; height: auto; }
.obj_issue_toc .description { color: var(--soouo-text-2); line-height: 1.8; max-width: 60rem; }
.obj_issue_toc .pub_id { font-size: 12.5px; color: var(--soouo-text-3); margin-top: 6px; }
.obj_issue_toc .pub_id .type { font-weight: 700; margin-right: 4px; }
.obj_issue_toc .published { font-size: 12.5px; color: var(--soouo-text-3); margin-top: 6px; }
.obj_issue_toc .sections .section { margin-top: 36px; }
.obj_issue_toc .section > h2, .obj_issue_toc .section > h3 {
  font-size: 13px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--soouo-accent); margin-bottom: 16px; padding-bottom: 10px;
  border-bottom: 1px solid var(--soouo-border);
}
.obj_issue_toc .cmp_article_list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.obj_issue_toc .obj_article_summary { padding: 20px 0; border-bottom: 1px solid var(--soouo-border); }
.obj_issue_toc .obj_article_summary:last-child { border-bottom: 0; }
.obj_issue_toc .obj_article_summary .title { font-size: 17px; }
.obj_issue_toc .obj_article_summary .title a { text-decoration: none; }
