/* Pending moderation list (shared style with reads) */
ul.pending { list-style: none; padding-left: 0; }
.pending-item, .source-row {
  border: 1px solid light-dark(#999, #555);
  padding: 0.75rem 1rem;
  margin: 1rem 0;
}
.pending-item h3, .source-row p:first-child { margin-top: 0; }
.topic-row.topic-child {
  margin-left: 1.5rem;
  border-left: 3px solid light-dark(#1d3557, #9cc3ea);
}

/* Admin /topics list — compact rows with edit form behind a disclosure. */
ul.topic-list-admin .topic-row,
ul.topic-list-admin .topic-group {
  padding: 0;
  margin: 0.5rem 0;
}
ul.topic-list-admin .topic-row {
  padding: 0.55rem 0.85rem;
}
ul.topic-list-admin .topic-group {
  border: 1px solid light-dark(#999, #555);
}
ul.topic-list-admin .topic-orphans-header {
  border: none;
  padding: 0.5rem 0 0;
}
ul.topic-list-admin .topic-head h4.topic-title {
  font-size: 1rem;
  margin: 0;
}
ul.topic-list-admin .topic-head .meta { margin: 0.1rem 0 0; }
ul.topic-list-admin .topic-desc-line {
  margin: 0.25rem 0 0;
  color: light-dark(#444, #bcbcbc);
  font-style: italic;
  font-size: 0.95rem;
}
ul.topic-list-admin details.topic-edit { margin-top: 0.5rem; }
ul.topic-list-admin details.topic-edit > summary {
  cursor: pointer;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 0.85rem;
  color: light-dark(#555, #aaa);
}
ul.topic-list-admin details.topic-edit[open] > summary {
  margin-bottom: 0.4rem;
}
ul.topic-list-admin form.inline-edit { margin: 0.25rem 0 0.5rem; }
ul.topic-list-admin form.inline-edit textarea { min-height: auto; }
.topic-delete { margin-top: 0.25rem; }

/* Collapsible parent group — the summary row is the clickable header. */
details.topic-group-details > summary.topic-group-summary {
  list-style: none;
  cursor: pointer;
  padding: 0.55rem 0.85rem 0.55rem 1.6rem;
  position: relative;
  font-family: Helvetica, Arial, sans-serif;
}
details.topic-group-details > summary.topic-group-summary::-webkit-details-marker { display: none; }
details.topic-group-details > summary.topic-group-summary::before {
  content: "▸";
  position: absolute;
  left: 0.6rem;
  top: 0.55rem;
  color: light-dark(#555, #aaa);
  font-size: 0.85rem;
  transition: transform 0.1s;
}
details.topic-group-details[open] > summary.topic-group-summary::before {
  content: "▾";
}
details.topic-group-details > summary.topic-group-summary:hover {
  background: light-dark(#f4f6fa, #1a1f2a);
}
summary.topic-group-summary .topic-title-line {
  display: block;
  font-size: 1rem;
}
summary.topic-group-summary .topic-title-line strong {
  font-size: 1.05rem;
}
summary.topic-group-summary .meta {
  display: block;
  margin-top: 0.15rem;
}
.topic-group-body {
  padding: 0.4rem 0.85rem 0.75rem;
  border-top: 1px solid light-dark(#ddd, #333);
}

/* Children list nested inside a parent group. */
ul.topic-children-admin {
  list-style: none;
  padding-left: 0.5rem;
  margin: 0.5rem 0 0;
  border-left: 3px solid light-dark(#1d3557, #9cc3ea);
}
ul.topic-children-admin .topic-row {
  border: 1px solid light-dark(#ccc, #444);
  margin: 0.4rem 0 0.4rem 0.4rem;
}

details.add-topic { margin: 0.75rem 0 1rem; }
details.add-topic > summary {
  cursor: pointer;
  padding: 0.5rem 0.75rem;
  border: 1px dashed light-dark(#999, #555);
  display: inline-block;
  font-family: Helvetica, Arial, sans-serif;
}
details.add-topic[open] > summary { margin-bottom: 0.5rem; }

.topic-filter { margin: 0.5rem 0 0.75rem; }
.topic-filter input[type=search] {
  padding: 0.35rem 0.5rem;
  min-width: 16rem;
  font-family: inherit;
  font-size: 0.95rem;
  background: light-dark(#fff, #1a1a1a);
  color: light-dark(inherit, #e8e8e8);
  border: 1px solid light-dark(#999, #666);
}
button.link-button {
  background: none;
  border: none;
  padding: 0;
  margin: 0 0.25rem;
  font: inherit;
  color: light-dark(#1d3557, #9cc3ea);
  cursor: pointer;
  text-decoration: none;
}
button.link-button:hover { text-decoration: underline; }
.pending-item .preview {
  background: light-dark(#f4f4f4, #1a1a1a);
  border: 1px solid light-dark(#ccc, #444);
  padding: 0.75rem 1rem;
  margin: 0.75rem 0;
  max-height: 70vh;
  overflow: auto;
}
.pending-item .actions, .source-row .actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.5rem;
  margin-top: 0.6rem;
  align-items: center;
}

/* ============================================================== */
/* Admin pages — shared layout & calm button family.              */
/* All rules below are scoped to .admin / .admin-tabs so the rest */
/* of the site keeps its current look untouched.                  */
/* ============================================================== */

/* Top tab bar — every admin page renders the same tabs. */
.admin-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin: 0.5rem 0 1.25rem;
  border-bottom: 1px solid light-dark(#999, #555);
  font-family: Helvetica, Arial, sans-serif;
  font-size: 0.95rem;
}
.admin-tabs .admin-tab {
  display: inline-block;
  padding: 0.5rem 0.9rem;
  color: light-dark(#555, #aaa);
  border: 1px solid transparent;
  border-bottom: none;
  margin-bottom: -1px;
  text-decoration: none;
}
.admin-tabs a.admin-tab:hover {
  color: light-dark(#1d3557, #9cc3ea);
  background: light-dark(#f4f6fa, #1a1f2a);
  text-decoration: none;
}
.admin-tabs .admin-tab-current {
  color: light-dark(#1f1f1f, #e8e8e8);
  background: light-dark(#fff, #111);
  border-color: light-dark(#999, #555);
  border-bottom-color: light-dark(#fff, #111);
  font-weight: bold;
}

/* Dashboard summary strip — at-a-glance counts that double as anchors. */
.admin-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1rem;
  align-items: baseline;
  padding: 0.7rem 0.9rem;
  margin: 0 0 1.2rem;
  background: light-dark(#f6f8fb, #141820);
  border-left: 3px solid light-dark(#1d3557, #9cc3ea);
  font-size: 0.95rem;
}
.admin-stats .stat {
  font-family: Helvetica, Arial, sans-serif;
  color: light-dark(#1f1f1f, #d4d4d4);
  text-decoration: none;
}
.admin-stats .stat strong {
  font-size: 1.15rem;
  margin-right: 0.2rem;
  color: light-dark(#1d3557, #9cc3ea);
}
.admin-stats a.stat:hover { text-decoration: underline; }
.admin-stats .stat.zero strong { color: light-dark(#888, #777); }
.admin-stats .stat.poll { margin-left: auto; color: light-dark(#555, #aaa); font-size: 0.9rem; }

/* Section headings inside admin pages get a quiet rule line above so the eye
   can find them when scrolling. */
.admin h3 {
  margin-top: 1.8rem;
  padding-top: 0.6rem;
  border-top: 1px solid light-dark(#e2e2e2, #2a2a2a);
}
.admin h3:first-child,
.admin > .admin-stats + h3,
.admin > details + h3 { /* fine to keep the rule; visual stays calm */ }

/* Collapsible admin sections. */
.admin details.admin-section {
  margin: 1rem 0;
  border-top: 1px solid light-dark(#e2e2e2, #2a2a2a);
  padding-top: 0.6rem;
}
.admin details.admin-section > summary {
  list-style: none;
  cursor: pointer;
  font-family: Helvetica, Arial, sans-serif;
  font-weight: bold;
  font-size: 1.1rem;
  padding-left: 1.2rem;
  position: relative;
}
.admin details.admin-section > summary::-webkit-details-marker { display: none; }
.admin details.admin-section > summary::before {
  content: "▸";
  position: absolute;
  left: 0;
  top: 0.05rem;
  color: light-dark(#555, #aaa);
  font-size: 0.9rem;
}
.admin details.admin-section[open] > summary::before { content: "▾"; }
.admin details.admin-section[open] > summary { margin-bottom: 0.5rem; }
.admin details.admin-section .section-count {
  font-family: Helvetica, Arial, sans-serif;
  color: light-dark(#555, #aaa);
  font-weight: normal;
  font-size: 0.9rem;
  margin-left: 0.4rem;
}

/* ------- Button family — outlined, calm, matching the chip aesthetic. */
.admin form button,
.admin .actions button {
  display: inline-block;
  padding: 0.35rem 0.85rem;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 0.9rem;
  line-height: 1.3;
  background: light-dark(#fff, #1a1a1a);
  color: light-dark(#1d3557, #9cc3ea);
  border: 1px solid light-dark(#1d3557, #9cc3ea);
  border-radius: 0.25rem;
  cursor: pointer;
  vertical-align: middle;
}
.admin form button:hover,
.admin .actions button:hover {
  background: light-dark(#eef2f7, #1a2740);
  text-decoration: none;
}
.admin form button:disabled,
.admin .actions button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Primary actions (Accept, Save, primary submit). Filled accent. */
.admin .actions button.accept,
.admin form.submit-form button[type=submit] {
  background: light-dark(#1d3557, #9cc3ea);
  border-color: light-dark(#1d3557, #9cc3ea);
  color: light-dark(#fff, #0e1929);
}
.admin .actions button.accept:hover,
.admin form.submit-form button[type=submit]:hover {
  background: light-dark(#142540, #b8d3ee);
  border-color: light-dark(#142540, #b8d3ee);
  color: light-dark(#fff, #0e1929);
}

/* Secondary "& allowlist" variant — same color family, subtler. */
.admin .actions button.accept-allow {
  font-size: 0.85rem;
  padding: 0.3rem 0.65rem;
}

/* Destructive — outlined red, never filled-red (loud filled red is ugly here).
   Hover deepens the tint. */
.admin .actions button.reject,
.admin .actions button.reject-block,
.admin form button.reject,
.admin form button.danger {
  color: light-dark(#a33, #ff8a87);
  border-color: light-dark(#a33, #d9534f);
  background: light-dark(#fff, #1a1a1a);
}
.admin .actions button.reject-block { font-size: 0.85rem; padding: 0.3rem 0.65rem; }
.admin .actions button.reject:hover,
.admin .actions button.reject-block:hover,
.admin form button.reject:hover,
.admin form button.danger:hover {
  background: light-dark(#fdecec, #2a1414);
  color: light-dark(#7a2725, #ffb0ad);
}

/* Compact inline mini-buttons (promote / unpublish / remove). */
.admin form.inline button {
  padding: 0.2rem 0.55rem;
  font-size: 0.8rem;
}

/* form.row (allow/block add) buttons share the family. */
.admin form.row button { padding: 0.35rem 0.85rem; font-size: 0.9rem; }

/* link-button (expand all / collapse all). Stays text-style. */
.admin button.link-button {
  background: none;
  border: none;
  padding: 0;
  margin: 0 0.25rem;
  font: inherit;
  color: light-dark(#1d3557, #9cc3ea);
  cursor: pointer;
  border-radius: 0;
}
.admin button.link-button:hover {
  background: none;
  text-decoration: underline;
}

/* Maintenance buttons (Sources page): wrap into a calm row. */
.admin .maintenance-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.6rem;
  margin: 0.5rem 0 1rem;
  align-items: center;
}
.admin .maintenance-grid form { margin: 0; }
.admin .maintenance-grid a.cta,
.admin .maintenance-grid a.cta:visited {
  display: inline-block;
  padding: 0.35rem 0.85rem;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 0.9rem;
  line-height: 1.3;
  background: light-dark(#fff, #1a1a1a);
  color: light-dark(#1d3557, #9cc3ea);
  border: 1px solid light-dark(#1d3557, #9cc3ea);
  border-radius: 0.25rem;
  text-decoration: none;
}
.admin .maintenance-grid a.cta:hover {
  background: light-dark(#eef2f7, #1a2740);
  text-decoration: none;
}

/* Form input visual parity with buttons. */
.admin form.row input[type=email],
.admin form.row input[type=text] {
  padding: 0.35rem 0.5rem;
  min-width: 16rem;
  background: light-dark(#fff, #1a1a1a);
  color: light-dark(inherit, #e8e8e8);
  border: 1px solid light-dark(#999, #666);
  border-radius: 0.25rem;
}
.admin form.submit-form input[type=email],
.admin form.submit-form input[type=text],
.admin form.submit-form input[type=url],
.admin form.submit-form select,
.admin form.submit-form textarea {
  border-radius: 0.25rem;
}

/* Pending list card — calmer border. */
.admin ul.pending { list-style: none; padding-left: 0; margin: 0.4rem 0; }
.admin .pending-item, .admin .source-row {
  border: 1px solid light-dark(#dcdcdc, #3a3a3a);
  border-radius: 0.3rem;
  background: light-dark(#fff, #131313);
  padding: 0.75rem 1rem;
  margin: 0.6rem 0;
}

/* Source cards (Sources page): collapsible per-source block. Tighter padding
   than .pending-item, and consistent font sizing with .meta everywhere. */
.admin ul.source-list .source-row {
  padding: 0;
}
.admin details.source-card > summary {
  list-style: none;
  cursor: pointer;
  padding: 0.55rem 0.9rem 0.55rem 2rem;
  position: relative;
  display: block;
  font-size: 0.95rem;
  line-height: 1.4;
}
.admin details.source-card > summary::-webkit-details-marker { display: none; }
.admin details.source-card > summary::before {
  content: "▸";
  position: absolute;
  left: 0.75rem;
  top: 0.6rem;
  color: light-dark(#555, #aaa);
  font-size: 0.85rem;
}
.admin details.source-card[open] > summary::before { content: "▾"; }
.admin details.source-card > summary .source-name {
  font-family: Helvetica, Arial, sans-serif;
  font-weight: bold;
  font-size: 0.95rem;
  margin-right: 0.3rem;
}
.admin details.source-card > summary .badge { vertical-align: baseline; }
.admin details.source-card > summary .meta {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.85rem;
}
.admin details.source-card.has-error > summary {
  border-left: 3px solid light-dark(#a33, #d9534f);
  padding-left: 1.75rem;
}
.admin details.source-card.has-error > summary::before { left: 0.55rem; }
.admin details.source-card .source-body {
  padding: 0.4rem 0.9rem 0.75rem 2rem;
  border-top: 1px solid light-dark(#eee, #2a2a2a);
}
.admin details.source-card .source-body p.meta {
  font-size: 0.85rem;
  margin: 0.4rem 0 0.6rem;
}
.admin details.source-card .source-body p.meta code { font-size: 0.85rem; }
.admin details.source-card .source-body .error { color: light-dark(#a33, #ff8a87); }
.admin details.source-card .source-body .actions { margin: 0.3rem 0; }
.admin details.source-card .source-body label.inline-weight,
.admin details.source-card .source-body .actions label {
  font-size: 0.9rem;
  color: light-dark(#444, #bcbcbc);
}
.admin .pending-item.is-pending,
.admin .mod-item.is-pending { opacity: 0.55; transition: opacity 0.15s; }
.admin .mod-item.is-removed {
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 0;
  padding-bottom: 0;
  border-top-width: 0;
  border-bottom-width: 0;
  transition: opacity 0.18s ease, max-height 0.25s ease,
              padding 0.25s ease, margin 0.25s ease, border-width 0.25s ease;
}

/* Recently-published rows: tighter, with inline actions on the right. */
.admin ul.article-list li {
  margin: 0.35rem 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem;
}
.admin ul.article-list li > a { margin-right: 0.25rem; }
.admin ul.article-list li form.inline { margin-left: auto; }

/* Floating flash for AJAX action feedback. */
#admin-flash {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  max-width: 20rem;
  z-index: 50;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  pointer-events: none;
}
#admin-flash .flash {
  background: light-dark(#fff, #1a1a1a);
  color: light-dark(#1f1f1f, #e8e8e8);
  border: 1px solid light-dark(#1d3557, #9cc3ea);
  border-left-width: 3px;
  padding: 0.5rem 0.75rem;
  font-size: 0.95rem;
  font-family: Helvetica, Arial, sans-serif;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18);
  pointer-events: auto;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 0.18s ease, transform 0.18s ease;
}
#admin-flash .flash.show { opacity: 1; transform: translateY(0); }
#admin-flash .flash.err { border-color: light-dark(#a33, #d9534f); color: light-dark(#a33, #ff8a87); }
