:root{
  --ink: #14171A;
  --ink-soft: #3A4750;
  --paper-bg: #F0F2F5;
  --surface: #FFFFFF;
  --border: #E1E4E8;
  --border-soft: #EEF1F4;
  --gold: #0F7BC4;
  --gold-soft: #E8F3FC;
  --sage: #D6E2D3;
}
body{
  background-color: var(--paper-bg);
  background-image: radial-gradient(circle, rgba(20,23,26,.05) 1px, transparent 1px);
  background-size: 22px 22px;
  color: var(--ink);
  font-family: 'Inter', -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.55;
}
a{ color: var(--gold); }
.card{
  background: var(--surface);
  border: 1px solid var(--sage);
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.btn-gold{ background: var(--gold); color: #fff; border: none; }
.btn-gold:hover{ background: #0c649e; color: #fff; }
.btn-outline-ink{ background: transparent; color: var(--ink); border: 1px solid var(--border); }
.btn-outline-ink:hover{ background: var(--border-soft); }
.muted{ color: var(--ink-soft); }
.eyebrow{ text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; color: var(--gold); font-weight: 600; }
.paper-code{ font-family: 'JetBrains Mono', monospace; font-size: .85em; color: var(--ink-soft); }
.pub-navbar{ background: var(--ink); color: #fff; padding: .9rem 0; margin-bottom: 2rem; border-bottom: 3px solid var(--gold); }
.pub-navbar a{ color: #fff; text-decoration: none; }
.pub-subbar{
  background: var(--gold-soft);
  border-bottom: 1px solid #CFE6F7;
  padding: .5rem 1.5rem;
}
.pub-subbar-inner{
  max-width: 1180px;
  margin: 0 auto;
  display: flex;
  gap: 1.5rem;
  align-items: center;
}
.pub-subbar a{
  color: var(--brand-dark);
  text-decoration: none;
  font-size: .88rem;
  font-weight: 600;
}
.pub-subbar a:hover{ text-decoration: underline; }
.pub-subbar a.active{ color: var(--ink); }
.doi-link{ font-family: monospace; background: var(--gold-soft); padding: .3rem .6rem; border-radius: 6px; display: inline-block; }

/* ==========================================================================
   v28 - publisher-grade article & search styling
   ========================================================================== */

/* Editorial gravitas: public article/venue titles in a serif display face
   (system serif stack - no extra webfont dependency). */
.article-title{
  font-family: Georgia, 'Times New Roman', 'Source Serif Pro', serif;
  font-size: 1.9rem;
  line-height: 1.25;
  letter-spacing: -0.2px;
  font-weight: 700;
}
@media (min-width: 768px){ .article-title{ font-size: 2.15rem; } }

.article-history{
  display: flex; flex-wrap: wrap; gap: .5rem 1.5rem;
  border-left: 3px solid var(--gold);
  padding: .35rem 0 .35rem .8rem;
  margin: 0 0 1rem;
}
.article-history div{ display: flex; flex-direction: column; }
.article-history dt{
  font-size: .68rem; text-transform: uppercase; letter-spacing: .5px;
  color: var(--muted); font-weight: 700; margin: 0;
}
.article-history dd{ font-size: .9rem; color: var(--ink); margin: 0; font-weight: 600; }

.keyword-chip{
  display: inline-block;
  background: var(--gold-soft);
  color: var(--ink);
  border-radius: 999px;
  padding: .15rem .65rem;
  font-size: .8rem;
  margin: 0 .2rem .3rem 0;
}

.references-list{ font-size: .88rem; color: var(--ink-soft); padding-left: 1.2rem; }
.references-list li{ margin-bottom: .35rem; }

.license-badge{
  display: inline-block;
  background: #1E7145;
  color: #fff !important;
  font-weight: 700;
  font-size: .8rem;
  border-radius: 6px;
  padding: .3rem .7rem;
  text-decoration: none;
}
.license-badge-closed{ background: #65676B; }

/* Sticky sidebar on article pages - the download/cite panel stays with
   the reader as they scroll. */
@media (min-width: 768px){
  .article-sidebar{ position: sticky; top: 1rem; }
}

.search-result-title{
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 1.08rem;
  font-weight: 700;
  color: var(--ink);
  text-decoration: none;
}
.search-result-title:hover{ color: var(--gold); }

/* Flat background for admin/console pages - the dot pattern is a
   landing-page flourish, not a work-surface one. */
body.admin-flat{ background-image: none; background-color: #F6F7F9; }


/* v87: accessibility + responsive polish (publishing module) */
:focus-visible{ outline: 2px solid var(--gold, #0B6BAB); outline-offset: 2px; border-radius: 3px; }
.skip-link{ position:absolute; left:-999px; }
.skip-link:focus{ left:.75rem; top:.5rem; background:#fff; padding:.5rem .9rem; border-radius:6px; z-index:2000; }
/* Bring the AMS console table style into Publishing so its tables match. */
table.app-table{ width:100%; border-collapse:collapse; background:#fff; }
table.app-table th{ text-align:left; font-size:.72rem; text-transform:uppercase; letter-spacing:.6px; color:#65676B; border-bottom:1px solid #E1E4E8; padding:.65rem .7rem; background:#FAFBFC; }
table.app-table td{ padding:.65rem .7rem; border-bottom:1px solid #EEF1F4; vertical-align:middle; }
@media (max-width: 768px){
  table.app-table, table.table{ display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; white-space:nowrap; }
  .topbar{ position:static; }
}


/* v88: kill the phantom horizontal scrollbar. Full-bleed heroes use
   width:100vw, which includes the vertical scrollbar's width, making the
   page a few px wider than the viewport. overflow-x:clip trims that
   overflow WITHOUT creating a scroll container (so position:sticky
   sidebars keep working, which overflow:hidden would break). */
html, body { overflow-x: clip; }

/* ==========================================================================
   v88.3 design system (publishing) — chips, stat tiles, empty states,
   type scale. Mirrors the AMS system so both apps read as one product.
   ========================================================================== */
:root{ --brand:#0B6BAB; --brand-soft:#E8F3FC; --ease-out:cubic-bezier(0.23,1,0.32,1); }
.btn:active{ transform: scale(0.97); }

.t-caption{ font-size:.82rem; line-height:1.5; }
.t-muted{ color: var(--muted, #65676B); }

.chip{ display:inline-flex; align-items:center; gap:.3rem; padding:.18rem .55rem; border-radius:999px; font-size:.74rem; font-weight:600; letter-spacing:.2px; white-space:nowrap; line-height:1.4; }
.chip-type{ background: var(--brand-soft); color:#0B5FA0; border:1px solid #CFE6F7; }
.chip-subject{ background:transparent; color: var(--ink-soft,#3A4750); border:1px solid var(--border,#DCE3EA); }
.chip-neutral{ background:#F1F3F5; color: var(--ink-soft,#3A4750); border:1px solid var(--border,#DCE3EA); }
.chip-ok{ background:#E4F4EA; color:#1E7145; border:1px solid #CDE9D6; }
.chip-warn{ background:#FDF3E2; color:#8A5A12; border:1px solid #F0DCB4; }
.chip-danger{ background:#FBEAE8; color:#C0392B; border:1px solid #F3CFCB; }

.stat-card .stat-num{ font-weight:700; color: var(--ink,#14171A); line-height:1.1; letter-spacing:-0.5px; }
.stat-card .stat-label{ font-size:.8rem; color: var(--muted,#65676B); margin-top:.4rem; }

.empty-state{ text-align:center; padding:2.5rem 1.5rem; color: var(--muted,#65676B); }
.empty-state .empty-icon{ color: var(--border,#DCE3EA); margin-bottom:.75rem; }
.empty-state .empty-icon svg{ width:44px; height:44px; }
.empty-state h6{ color: var(--ink,#14171A); font-weight:700; margin-bottom:.35rem; }
.empty-state p{ font-size:.9rem; max-width:420px; margin:0 auto 1rem; }

table.app-table tbody tr:nth-child(even) td{ background:#FCFDFE; }
table.app-table tbody tr:hover td{ background: var(--brand-soft); }

/* v88.6: filter checkbox lists - stop wrapped long labels overlapping the next row. */
.filter-checks .form-check{ min-height: 0; margin-bottom: .35rem; padding-left: 1.6em; line-height: 1.3; }
.filter-checks .form-check-input{ margin-top: .18rem; }
.filter-checks .form-check-label{ display: inline-block; }


/* ==========================================================================
   v88.42 - article & venue page polish
   ========================================================================== */

/* Section labels ("Abstract", "Keywords") get quiet editorial authority. */
.article-sectionlabel{
  text-transform: uppercase; letter-spacing: .08em; font-size: .74rem;
  color: var(--gold); font-weight: 700; margin: 1.4rem 0 .45rem;
}
/* Abstract set for reading: measured line, slightly larger, justified feel. */
.article-abstract{
  font-size: 1.02rem; line-height: 1.75; color: #2c3742;
  max-width: 66ch; margin-bottom: 1.1rem;
}

/* Sidebar cards: crisper edges, consistent headers, soft hover lift. */
.col-md-4 .card{ border-radius: 14px; border-color: var(--border-soft, #e7e3da); transition: box-shadow .18s ease; }
.col-md-4 .card:hover{ box-shadow: 0 8px 22px rgba(22,33,46,.07); }
.col-md-4 .card h6{
  text-transform: uppercase; letter-spacing: .07em; font-size: .72rem;
  color: var(--muted); font-weight: 700; margin-bottom: .6rem;
}

/* DOI link: presented as the article's permanent handle, not a bare URL. */
a[href^="https://doi.org/"]{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: .92em; background: var(--gold-soft); border-radius: 8px;
  padding: .2rem .55rem; text-decoration: none;
}
a[href^="https://doi.org/"]:hover{ text-decoration: underline; }

/* Citation tabs: calmer pills, readable citation text block. */
.nav-pills .nav-link{ font-size: .8rem; font-weight: 600; }
.tab-content > .tab-pane{ font-size: .9rem; line-height: 1.6; }

/* Byline: give authors a touch more presence under the serif title. */
.article-title + p{ font-size: 1.02rem; }
