/*! app.css — 2025-10-15T19:26:12 (clean, PHP-free) */

/* -------------------------------------------------- */
/* Base + Variables                                   */
/* -------------------------------------------------- */
:root{
  --brand:#0b5ed7;
  --accent:#0d6efd;
  --muted:#6b7280;
  --dark:#0b1220;

  /* header offsets (JS can update) */
  --topbar-h: 32px;
  --nav-top: var(--topbar-h);
  --page-offset: 0px;

  /* TOC offset (desktop) */
  --toc-top: 60px;

  /* Surfaces */
  --bg:#f7f8fb;
  --card:#fff;
}
html, body{
  background:#fff;
  color:#222;
  font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial;
  width:100%;
  overflow-x:hidden;
}

/* Bootstrap container max width (site-wide) */
@media (min-width: 1200px){
  .container, .container-lg, .container-md, .container-sm, .container-xl{ max-width:1240px !important; }
}

/* Small helpers */
.shadow-soft{ box-shadow:0 8px 28px rgba(2,6,23,.06); }
.small-muted{ color:var(--muted); font-size:.9rem; }

/* -------------------------------------------------- */
/* Auth: login / register / forgot / reset            */
/* (deduped into generic classes)                     */
/* -------------------------------------------------- */
.auth-hero{
  background:linear-gradient(135deg,#6c5ce7 0%, #00b4d8 100%);
  color:#fff; border-radius:1rem; height:100%;
}
.brand-small { color:#0b5ed7; font-weight:700; font-size:1.05rem; }
.form-hint{ color:var(--muted); font-size:.9rem; }
.pw-meter{ height:6px; background:#eef2f7; border-radius:6px; overflow:hidden; }
.pw-bar{ height:6px; width:0; background:var(--accent); transition:width .25s; }
.social-btn{
  display:flex; gap:8px; align-items:center; justify-content:center;
  border-radius:8px; padding:.6rem .8rem; font-weight:600; width:100%;
}
.social-btn.google{ background:#fff; color:#111; border:1px solid #e6e6e6; }
.social-btn.orcid{ background:#2fb6be; color:#fff; border:0; }

@media (min-width:768px){
  .match-height{ display:flex; }
  .match-height > *{ flex:1 1 0; }
}

/* -------------------------------------------------- */
/* Page layout (page.php, article pages)              */
/* -------------------------------------------------- */
.container.page-wrap{ position:relative; }
.page-wrap{ padding-top:20px; padding-bottom:30px; }

.bb{
  background:#fff; border:1px solid rgba(0,0,0,.06);
  border-radius:8px; padding:8px 12px; margin-bottom:16px;
}
.breadcrumb{ margin:0; }
.breadcrumb .breadcrumb-item a{ text-decoration:none; color:#0b3d91; }
.breadcrumb .breadcrumb-item.active{ color:#333; }

/* Grid: TOC + Content */
.grid{ display:grid; grid-template-columns:280px 1fr; gap:24px; align-items:start; }
.container, .page-wrap, .grid{ overflow:visible; }
@media (max-width:992px){ .grid{ grid-template-columns:1fr; } }

/* TOC wrapper + spacer */
.toc-col{ position:relative; }
#tocSpacer{ height:0; transition:height .15s ease; }

/* TOC box */
.toc{
  background:#fff; border:1px solid rgba(0,0,0,.06);
  border-radius:8px; padding:14px 12px;
  position:sticky; top:var(--toc-top);
  max-height:calc(100vh - (var(--toc-top) + 20px));
  overflow:auto; scrollbar-width:thin;
}
.toc.is-fixed{
  position:fixed !important; top:var(--toc-top) !important;
  left:0; width:280px; z-index:1030;
}
.toc.stuck-bottom{
  position:absolute !important; top:auto !important; bottom:0 !important;
  left:0 !important; width:280px;
}
.toc h6{
  font-weight:700; color:#0b2e59; margin:2px 0 8px;
  font-size:.95rem; position:sticky; top:0; background:#fff;
  padding-top:4px; padding-bottom:6px;
}
.toc ul{ list-style:none; margin:0; padding:0; }
.toc li{ margin:3px 0; }
.toc a{
  display:block; text-decoration:none; color:#0b2e59;
  padding:6px 8px; border-radius:6px; line-height:1.3;
  transition:background .12s ease, color .12s ease, padding-left .12s ease;
  font-weight:600; font-size:.95rem;
}
.toc a.small{ font-weight:500; font-size:.9rem; }
.toc a.xsmall{ font-weight:500; font-size:.86rem; }
.toc a:hover{ background:rgba(13,110,253,.08); color:#0b2e59; padding-left:12px; }
.toc a.active{ background:rgba(13,110,253,.15); color:#0b2e59; }

/* Article card */
.card-article{
  background:#fff; border:1px solid rgba(0,0,0,.06);
  border-radius:8px; padding:22px; line-height:1.75;
}
.card-article h1,.card-article h2,.card-article h3,.card-article h4{ color:#0b3d91; margin-top:.4rem; }
.meta{ color:#6c757d; font-size:.92rem; }

.subfoot{ color:#6c757d; font-size:.93rem; }
.subfoot a{ text-decoration:none; }

/* Mobile: TOC normal flow */
@media (max-width:992px){
  .toc, .toc.is-fixed{
    position:static !important; top:auto !important; left:auto !important; width:auto !important;
    max-height:none !important; overflow:visible !important;
  }
  #tocSpacer{ height:0 !important; }
}

/* -------------------------------------------------- */
/* Editorial board (editorial.php)                    */
/* -------------------------------------------------- */
.eb-toolbar{ display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; margin-bottom:1rem; }
.eb-search{ max-width:420px; }
.eb-role-filter{ max-width:260px; }

.eb-section{ margin-bottom:2rem; }
.eb-heading{
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; margin:0 0 .75rem 0; padding:.25rem 0; border-bottom:1px solid #e9ecef;
}
.eb-heading h3{ margin:0; font-size:1.25rem; font-weight:800; }
.eb-count{ color:#6c757d; font-size:.9rem; }

.eb-grid{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:1rem; }
@media (min-width:576px){ .eb-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:992px){ .eb-grid{ grid-template-columns:repeat(3,1fr); } }

.eb-card{
  border:1px solid #e9ecef; border-radius:.75rem; background:#fff;
  transition:box-shadow .2s ease, transform .2s ease;
}
.eb-card:hover{ box-shadow:0 .5rem 1rem rgba(0,0,0,.08); transform:translateY(-2px); }
.eb-card .eb-body{ padding:1rem 1rem .75rem; }
.eb-card .eb-footer{ padding:.75rem 1rem; background:#fcfcfd; border-top:1px solid #f1f3f5; border-radius:0 0 .75rem .75rem; }

.eb-avatar{
  width:48px; height:48px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#eef2ff,#e3f2fd); color:#2b2d42; font-weight:700;
  border:1px solid #e5e7eb;
}
.eb-title{ margin:0; font-size:1.05rem; font-weight:800; }
.eb-sub{ color:#6c757d; font-size:.9rem; }
.eb-bio{ color:#495057; font-size:.95rem; margin:.5rem 0 0; }
.eb-role-pill{
  display:inline-block; font-size:.75rem; line-height:1; font-weight:700;
  padding:.35rem .5rem; border-radius:999px; border:1px solid #e9ecef; background:#f8f9fa; color:#495057;
  margin-bottom:.35rem;
}
.eb-actions .btn{ padding:.25rem .5rem; font-size:.8rem; }
.eb-empty{ padding:1rem; border:1px dashed #e9ecef; border-radius:.75rem; color:#6c757d; background:#fcfcfd; }

/* -------------------------------------------------- */
/* Home (index.php)                                   */
/* -------------------------------------------------- */
body.home{ background:#f7f8fb; }
.section-pad{ padding:1.25rem 0; }

.hero-spot-full{ width:100vw; position:relative; left:50%; right:50%; margin-left:-50vw; margin-right:-50vw; overflow:hidden; background:#0d6efd; box-shadow:0 10px 40px rgba(0,0,0,.12); }
.hero-spot-full img{ width:100%; height:clamp(280px, 32vw, 520px); object-fit:cover; display:block; }
.hero-overlay{ position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.35)); }
.hero-title{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); color:#fff; text-align:center; padding:0 1rem; }
.hero-title h1{ font-weight:800; letter-spacing:.2px; text-shadow:0 4px 18px rgba(0,0,0,.25); }

.card{  /*! border-radius:14px; */ box-shadow:0 1px 3px rgba(0, 0, 0, 0.06); border-color: #e8e8e8;}
.card h5, .card h4{ font-weight:800; }

.article-card{ /*! border:1px; */ /*! border-radius:14px; */ overflow:hidden; box-shadow:0 2px 14px rgba(15,23,42,.07); background:#fff; /*! border-color: red; */}
.article-card .thumb{ width:100%; height:180px; object-fit:cover; display:block; }
.article-card .meta{ color:#64748b; font-size:.9rem; }
.article-card .title{ font-weight:800; font-size:1.02rem; }
.article-card .actions .btn{ padding:.3rem .6rem; }

.list-linked li+li{ border-top:1px dashed #e5e7eb; }
.list-linked a{ text-decoration:none; }

.eic-avatar{
  width:56px; height:56px; border-radius:50%;
  background:linear-gradient(135deg,#eef2ff,#e3f2fd);
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:800; color:#334155; border:1px solid #e5e7eb;
}

/* -------------------------------------------------- */
/* Issue view                                         */
/* -------------------------------------------------- */
.article-title{ color:#174f86; font-weight:700; font-size:1.25rem; margin-bottom:.25rem; }
.open-access-badge{ color:#d63384; font-weight:700; font-size:.85rem; display:inline-flex; align-items:center; gap:.35rem; }
.meta-line{ color:#6c757d; margin-bottom:4px; }
.authors-line{ margin-bottom:6px; color:#2b2b2b; }
.article-actions a{ margin-right:12px; text-decoration:none; }
.lock-icon{ font-size:.95rem; }
.card-sep{ border-bottom:1px solid #e9ecef; padding-bottom:18px; margin-bottom:18px; }
.article-actions .btn-link{ text-decoration:none; color:var(--accent); }

/* -------------------------------------------------- */
/* Dashboard: view                                    */
/* -------------------------------------------------- */
:root{
  --surface:#f8fafc;
  --radius:12px;
}
.wf-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.wf-title h1{font-size:1.25rem;margin:0}
.wf-topbar{display:flex;gap:10px;align-items:center}
.wf-topbar .btn{padding:.4rem .75rem}
.wf-steps{display:flex;gap:10px;flex-wrap:wrap}
.wf-step{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:10px;padding:10px 12px}
.wf-step .dot{width:36px;height:36px;border-radius:8px;color:#fff;display:grid;place-items:center;font-weight:700}
.wf-step.active{border-color:rgba(13,110,253,.45);box-shadow:0 6px 18px rgba(13,110,253,.12)}
.dot.submission{background:#6b7280}.dot.review{background:#0d6efd}.dot.production{background:#f59e0b}.dot.publication{background:#10b981}
.card-like{background:var(--card);border-radius:12px;box-shadow:0 4px 14px rgba(0,0,0,.06);padding:14px}
.sticky-side{position:sticky;top:84px}
.right-actions .btn{justify-content:flex-start}
.wf-tabs{border-bottom:1px solid #e5e7eb;margin-top:8px}
.wf-tabs .nav-link{border:none;border-bottom:3px solid transparent;color:#111827;padding:.65rem .9rem}
.wf-tabs .nav-link.active{border-color:#0d6efd;color:#0d6efd;background:transparent}

/* -------------------------------------------------- */
/* Dashboard: layout (admin shell)                    */
/* -------------------------------------------------- */
body.admin{ background: linear-gradient(180deg,#f6f8fb,#ffffff); }

.sidebar{
  border-right:1px solid rgba(0,0,0,0.05);
  background:#fff; padding-top:1rem;
  box-shadow: 0 6px 18px rgba(22,28,37,0.06);
}
.sidebar .nav-link{ color:#495057; padding:.5rem 1rem; border-radius:6px; }
.sidebar .nav-link.active, .sidebar .nav-link:hover{
  background:linear-gradient(90deg,rgba(11,94,215,0.06),rgba(23,79,134,0.03));
  color:#0b5ed7; font-weight:600;
}
.sidebar .sidebar-heading{ font-size:.75rem; text-transform:uppercase; color:#6c757d; letter-spacing:.06em; }

.topbar{ background:transparent; padding:.65rem 1rem; display:flex; align-items:center; gap:1rem; }
.topbar .brand{ font-weight:700; color:#174f86; font-size:1.15rem; letter-spacing:.4px; }
.topbar .search{ min-width:260px; max-width:520px; width:40vw; }
.topbar .quick-btn{ margin-left:.5rem; }

.content-card{
  background:#fff; border-radius:12px; box-shadow:0 6px 18px rgba(22,28,37,0.06);
  padding:1.25rem; margin-bottom:1.25rem;
}

.breadcrumbs{ font-size:.9rem; color:#6c757d; }
.avatar{
  width:36px; height:36px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#e9eefb,#dcefff); color:#174f86; font-weight:700; font-size:.9rem;
}
.alert-floating{ position:sticky; top:1rem; z-index:50; }

@media (max-width:767px){
  .sidebar{ position:fixed; z-index:1030; left:-280px; width:260px; transition:left .25s ease-in-out; height:100vh; overflow:auto; }
  .sidebar.show{ left:0; background:#fff; }
  main{ padding-top:0px; }
}

/* Admin modals (editorial board) */
.eb-modal{ max-height:90vh; display:flex; flex-direction:column; overflow:hidden; }
.eb-scroll{ overflow-y:auto; padding:1rem; max-height:calc(90vh - 112px); }
.eb-sticky{ position:sticky; z-index:2; background:#fff; }
.eb-sticky:first-of-type{ top:0; }
.eb-sticky:last-of-type{ bottom:0; }
.modal{ overflow-y:auto !important; }
.main-content .card:first-child{ margin-top:0 !important; }
.list-group-item{ border-radius:.5rem; }

/* -------------------------------------------------- */
/* Dashboard: editor                                  */
/* -------------------------------------------------- */
.list-group-item.submission-card{ position:relative; }
.submission-title{ font-weight:600; line-height:1.3; }
.submission-meta small{ color:#6c757d; }
.badge-status{ font-weight:500; }
.submission-actions{
  display:flex; gap:.5rem; flex-wrap:nowrap;
  position:absolute; right:1rem; bottom:1rem;
}
@media (max-width:576px){
  .submission-actions{ position:static; margin-top:.75rem; justify-content:flex-end; }
}

/* -------------------------------------------------- */
/* Dashboard: users                                   */
/* -------------------------------------------------- */
:root{ --ojs-bg:#f2f4f7; --ojs-card:#fff; --ojs-border:#e5e7eb; --ojs-accent:#0d6efd; }
body.users{ background:var(--ojs-bg); }
.ojs-strip{ border-bottom:1px solid var(--ojs-border); margin-bottom:.75rem; }
.ojs-strip .nav-link{ color:#111827; padding:.5rem .75rem; }
.ojs-strip .nav-link.active{
  border:1px solid var(--ojs-border); border-bottom-color:#fff; background:#fff;
  border-top-left-radius:.4rem; border-top-right-radius:.4rem;
}
.ojs-head{ background:linear-gradient(180deg,#fff,#f9fafb); border:1px solid var(--ojs-border); border-radius:.5rem; padding:.85rem 1rem; }
.ojs-title{ font-weight:700; }
.ojs-list{ display:flex; flex-direction:column; gap:.75rem; }
.ojs-item{
  background:var(--ojs-card); border:1px solid var(--ojs-border); border-radius:.6rem;
  padding:.75rem .9rem; box-shadow:0 1px 0 rgba(16,24,40,.02);
}
.ojs-row{ display:flex; gap:.75rem; align-items:flex-start; }
.ojs-col-main{ flex:1 1 auto; min-width:0; }
.ojs-col-actions{ flex:0 0 auto; display:flex; gap:.5rem; align-items:center; }
.ojs-name{ font-weight:700; }
.ojs-meta{ color:#6b7280; font-size:.875rem; }
.ojs-badges{ margin-top:.25rem; display:flex; flex-wrap:wrap; gap:.35rem; }
.role-chip{ display:inline-block; padding:.22rem .5rem; font-size:.78rem; background:#eef2f7; border:1px solid var(--ojs-border); border-radius:999px; color:#111827; }
.badge-primary-role{ padding:.3rem .55rem; border-radius:999px; font-weight:600; }
.ojs-expand{ color:#6b7280; font-size:.85rem; cursor:pointer; user-select:none; }
.ojs-extra{ display:none; padding-top:.5rem; border-top:1px dashed var(--ojs-border); margin-top:.5rem; color:#374151; }
.ojs-item:hover{ background:#fbfcff; }
.ojs-actions .btn{ white-space:nowrap; }

@media (max-width:768px){
  .ojs-row{ flex-direction:column; align-items:stretch; }
  .ojs-col-actions{ justify-content:flex-end; }
}

/* -------------------------------------------------- */
/* Header/Nav (includes/header.php styles)            */
/* -------------------------------------------------- */
.dropdown-menu{ z-index:1080; }
.top-utility{ z-index:1090; }
.main-nav{ z-index:180; }

header, .navbar, .navbar .container, .navbar-collapse, .top-utility, .main-nav{
  overflow:visible !important; transform:none !important;
}

/* Top dark utility bar (JS toggles .hidden) */
.top-utility{
  position:relative;
  background:var(--dark); color:#fff; font-size:.875rem;
  transition:transform .28s ease, opacity .28s ease;
  will-change:transform, opacity;
}
.top-utility.hidden{ transform:translateY(-100%); opacity:0; pointer-events:none; }

/* Utility links (desktop) */
.top-inline-list{ display:flex; gap:1rem; align-items:center; margin:0; padding:0; list-style:none; }
.top-inline-link{ color:#fff; text-decoration:none; opacity:.95; }
.top-inline-link:hover{ text-decoration:underline; opacity:1; }
@media (max-width:767.98px){ .top-inline-list{ display:none; } }

/* Social icons */
.social-list{
  display:flex; gap:.5rem; align-items:center; margin:0; padding:0; list-style:none;
}
.social-list a{
  color:#fff; opacity:.9; display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:50%; border:1px solid rgba(255,255,255,.25);
}
.social-list a:hover{ opacity:1; background:rgba(255,255,255,.1); }

/* Main navbar (JS adds .is-fixed) */
.main-nav{
  position:relative;
  background:#fff; box-shadow:0 2px 10px rgba(15,23,42,0.04);
  transition:transform .2s ease;
}
.main-nav.is-fixed{
  position:fixed; top:var(--nav-top); left:0; right:0;
  top: 0;
}

.nav-link{ color:#374151; font-weight:500; padding:.6rem .9rem; border-radius:6px; }
.nav-link:hover, .nav-link:focus, .nav-link.active{
  background:rgba(11,94,215,0.06); color:var(--brand); text-decoration:none;
}
.brand-wrap{ display:flex; align-items:center; gap:.5rem; min-width:0; text-decoration:none; }
.brand-logo{ height:28px; width:auto; display:block; }
.brand-text{
  font-weight:700; color:var(--brand); letter-spacing:.2px; font-size:1.05rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:50vw;
}
@media (min-width:992px){ .brand-text{ max-width:30vw; } }

.submit-btn{
  background:linear-gradient(90deg,var(--brand),#0a66ff); color:#fff; border-radius:8px;
  padding:.45rem .8rem; font-weight:600;
}
.submit-btn:hover{ opacity:.95; }
.user-avatar{
  width:36px;height:36px;border-radius:50%;
  background: rgba(11,94,215,0.08); color:var(--brand);
  display:inline-flex; align-items:center; justify-content:center; font-weight:700;
}
.search-btn{ background:transparent; border:1px solid rgba(15,23,42,0.06); padding:.45rem .6rem; border-radius:8px; }

@media (min-width:992px){ .navbar-nav .nav-link{ padding-left:1rem; padding-right:1rem; } }
.nav-user .dropdown-menu{ right:0 !important; left: 0 !important; }

/* Submenu */
@media (min-width:992px){
  .dropdown-submenu{ position:relative; }
  .dropdown-submenu > .dropdown-menu{ top:0; left:100%; margin-left:.1rem; margin-right:.1rem; }
}
.dropdown-toggle::after{ margin-left:.25rem; }
/* -------------------------------------------------- */
/* Article reader (article/view.php)                  */
/* -------------------------------------------------- */
.reader-top{ margin-bottom:18px; }
.badge-open{
  color:#d63384; font-weight:700; background:transparent;
  border:1px solid rgba(214,51,132,0.08); padding:.12rem .45rem; border-radius:4px;
}
.reader-title{ color:var(--brand); font-weight:700; font-size:1.6rem; line-height:1.15; }
.reader-meta small{ color:#6c757d; }
.authors-list a.mail{ text-decoration:none; margin-left:.4rem; color:var(--brand); }
.toolbar .btn{ margin-right:8px; }
.section-heading{ border-left:4px solid #e9ecef; padding-left:12px; margin:18px 0 12px; font-weight:700; }
.toc a{ display:block; padding:6px 0; color:var(--brand); text-decoration:none; }
.right-tabs .nav-link{ cursor:pointer; }
.reader-body img{ max-width:100%; height:auto; }

/* Popover content */
.bs-popover-auto .popover-body,
.bs-popover-start .popover-body,
.bs-popover-end .popover-body,
.bs-popover-top .popover-body,
.bs-popover-bottom .popover-body{ padding:12px; }
.author-card{ min-width:260px; max-width:360px; }
.author-card h5{ margin:0 0 8px; font-size:1.05rem; }
.author-card .orcid{ color:#16a34a; font-weight:600; font-size:.9rem; display:flex; align-items:center; gap:6px; }
.author-card .aff{ margin-top:8px; color:#495057; font-size:.9rem; }
.author-card .more{ margin-top:10px; font-size:.85rem; }

.ojs-issue-list .list-group-item {
  border: 1px solid #e5e7eb;
  margin-bottom: .5rem;
  border-radius: .5rem;
  background: #fff;
}
.ojs-issue-item .fw-semibold a { text-decoration: none; }
.ojs-issue-item .fw-semibold a:hover { text-decoration: underline; }
.ojs-handle {
  cursor: grab;
  user-select: none;
  font-size: 18px;
  width: 1.5rem;
  text-align: center;
  color: #6b7280;
}
.ojs-issue-item.dragging { opacity: .6; }
.ojs-order-on .ojs-row-actions { opacity: .35; pointer-events: none; }
#issueOrderBar.saved::after {
  content: ' Saved';
  margin-left: .5rem;
  color: #198754;
  font-weight: 600;
}