/* ===========================================
   XSCAVE Deliverables — Stylesheet

   Self-contained: reuses the exact xscave-pub-*
   class names from the Publications plugin so the
   two pages look identical, and still works on its
   own if Publications is ever deactivated.

   Palette switched to the D8.2 brand kit per request:
   olive #778a35, sage #d1e2c4, dark olive/brown #3f4122,
   forest green #0c6012. This now diverges from the live
   Publications page (which stays on the blue #1a56db
   scheme), that divergence is intentional, confirm with
   Maria/UTARTU if both pages should eventually match.

   Status badges (Submitted/Under Review/Due/Delayed) are
   kept semantic rather than brand-mapped on purpose: this
   is an operational tracker, "Delayed" needs to read as
   urgent at a glance even inside a green/olive identity,
   collapsing it into the brand palette would cost
   scannability for a cosmetic win.
   =========================================== */

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap');

:root {
  --xsc-bg:             #ffffff;
  --xsc-surface:        #eef2e3;   /* sage, lightened ~70% toward white for large backgrounds */
  --xsc-surface-strong: #d1e2c4;   /* true sage, for chips/badges/dividers at full strength */
  --xsc-border:         #cdd9bb;
  --xsc-border-dark:    #a9bb8f;
  --xsc-text:           #20271a;
  --xsc-muted:          #5b6b3f;   /* olive-tinted muted text, replaces neutral grey */
  --xsc-accent:         #0c6012;   /* forest green */
  --xsc-accent-hover:   #094c0d;
  --xsc-accent-light:   #e3efe0;
  --xsc-olive:          #778a35;
  --xsc-olive-light:    #f1f4e6;
  --xsc-review-color:   #8a6d1f;
  --xsc-review-bg:      #fdf6e1;
  --xsc-review-bd:      #ecd99a;
  --xsc-wp-bar:         #3f4122;   /* dark olive/brown */
  --xsc-radius:         6px;
  --xsc-font-body:      'IBM Plex Sans', system-ui, sans-serif;
  --xsc-font-mono:      'IBM Plex Mono', monospace;
  --xsc-shadow-sm:      0 1px 3px rgba(20,30,10,.08), 0 1px 2px rgba(20,30,10,.05);
  --xsc-shadow-md:      0 4px 14px rgba(20,30,10,.10), 0 2px 4px rgba(20,30,10,.05);

  /* deliverable status colors — semantic, not brand-mapped, see note above */
  --xsd-submitted-color: #0c6012;
  --xsd-submitted-bg:    #e3efe0;
  --xsd-submitted-bd:    #9fc99a;
  --xsd-due-color:       #5b6b3f;
  --xsd-due-bg:          #eef2e3;
  --xsd-due-bd:          #cdd9bb;
  --xsd-delayed-color:   #b91c1c;
  --xsd-delayed-bg:      #fef2f2;
  --xsd-delayed-bd:      #fecaca;
  --xsd-confidential-color: #fff;
  --xsd-confidential-bg:    #3f4122;
}

.xscave-pub-wrap {
  font-family: var(--xsc-font-body);
  color: var(--xsc-text);
  max-width: 940px;
  margin: 0 auto;
  padding: 0 0 60px;
}

/* ── Filter Bar ── */
.xscave-filters {
  background: var(--xsc-surface);
  border: 1px solid var(--xsc-border);
  border-radius: var(--xsc-radius);
  padding: 20px 24px;
  margin-bottom: 28px;
}

.xscave-filter-form {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: flex-end;
}

.xscave-filter-group {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 160px;
  flex: 1;
}

.xscave-search-group {
  min-width: 220px;
  flex: 2;
}

.xscave-filter-group label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--xsc-muted);
}

.xscave-filter-group select,
.xscave-filter-group input[type="text"] {
  font-family: var(--xsc-font-body);
  font-size: 14px;
  color: var(--xsc-text);
  background: #fff;
  border: 1px solid var(--xsc-border-dark);
  border-radius: 4px;
  padding: 8px 12px;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  -webkit-appearance: none;
  appearance: none;
}

.xscave-filter-group select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235b6b3f' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 30px;
  cursor: pointer;
}

.xscave-filter-group select:focus,
.xscave-filter-group input:focus {
  border-color: var(--xsc-accent);
  box-shadow: 0 0 0 3px rgba(12, 96, 18, .14);
}

.xscave-filter-actions {
  display: flex;
  gap: 8px;
  align-items: flex-end;
  padding-bottom: 1px;
}

.xscave-btn-filter,
.xscave-btn-reset {
  font-family: var(--xsc-font-body);
  font-size: 13px;
  font-weight: 500;
  padding: 8px 18px;
  border-radius: 4px;
  cursor: pointer;
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.xscave-btn-filter {
  background: var(--xsc-accent);
  color: #fff;
  border: 1px solid var(--xsc-accent);
}

.xscave-btn-filter:hover {
  background: var(--xsc-accent-hover);
  border-color: var(--xsc-accent-hover);
}

.xscave-btn-reset {
  background: #fff;
  color: var(--xsc-muted);
  border: 1px solid var(--xsc-border-dark);
}

.xscave-btn-reset:hover {
  background: var(--xsc-surface);
  color: var(--xsc-text);
}

/* ── Results Meta + Status Breakdown ── */
.xscave-results-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--xsc-muted);
  margin-bottom: 28px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--xsc-border);
}

.xscave-count {
  font-weight: 600;
  color: var(--xsc-text);
}

.xscave-status-chips {
  display: inline-flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-left: 4px;
}

.xscave-chip {
  font-family: var(--xsc-font-mono);
  font-size: 10.5px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  letter-spacing: .03em;
  text-transform: uppercase;
  border: 1px solid transparent;
}

.xscave-chip--submitted    { background: var(--xsd-submitted-bg); color: var(--xsd-submitted-color); border-color: var(--xsd-submitted-bd); }
.xscave-chip--under_review { background: var(--xsc-review-bg);    color: var(--xsc-review-color);    border-color: var(--xsc-review-bd); }
.xscave-chip--due          { background: var(--xsd-due-bg);       color: var(--xsd-due-color);       border-color: var(--xsd-due-bd); }
.xscave-chip--delayed      { background: var(--xsd-delayed-bg);   color: var(--xsd-delayed-color);   border-color: var(--xsd-delayed-bd); }

/* ── Admin diagnostic banner (only ever rendered for logged-in admins, only on a genuinely empty query) ── */
.xscave-admin-debug {
  background: #fdf8e3;
  border: 1px dashed #c9a227;
  color: #5b4a05;
  font-family: var(--xsc-font-mono);
  font-size: 12px;
  line-height: 1.6;
  padding: 12px 16px;
  border-radius: 4px;
  margin-bottom: 24px;
}

/* ── No Results ── */
.xscave-no-results {
  text-align: center;
  padding: 60px 20px;
  color: var(--xsc-muted);
  font-size: 15px;
}

.xscave-no-results a {
  color: var(--xsc-accent);
  font-weight: 600;
  text-decoration: none;
}
.xscave-no-results a:hover { text-decoration: underline; }

/* ── Work Package Group ── */
.xscave-wp-group {
  margin-bottom: 52px;
}

.xscave-wp-heading {
  font-family: var(--xsc-font-body);
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  background: var(--xsc-wp-bar);
  margin: 0 0 24px;
  padding: 12px 18px;
  border-radius: 5px;
  letter-spacing: .01em;
}

.xscave-wp-heading--review {
  background: var(--xsc-review-color);
  display: flex;
  align-items: center;
  gap: 10px;
}

.xscave-review-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.75);
  display: inline-block;
  animation: xsc-pulse 1.8s ease-in-out infinite;
}

@keyframes xsc-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .4; transform: scale(1.4); }
}

/* ── Card ── */
.xscave-pub-card {
  border: 1px solid var(--xsc-border);
  border-radius: var(--xsc-radius);
  background: var(--xsc-bg);
  margin-bottom: 16px;
  box-shadow: var(--xsc-shadow-sm);
  transition: box-shadow .18s, border-color .18s, transform .18s;
}

.xscave-pub-card:hover {
  box-shadow: var(--xsc-shadow-md);
  border-color: var(--xsc-border-dark);
  transform: translateY(-1px);
}

.xscave-pub-card-inner {
  padding: 22px 24px 18px;
}

/* ── Card Header ── */
.xscave-pub-header {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 8px;
}

.xscave-pub-title {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.45;
  color: var(--xsc-text);
  margin: 0;
  flex: 1;
}

/* ── Badges (per-card status, always rendered regardless of active filter) ── */
.xscave-badge {
  display: inline-flex;
  align-items: center;
  font-family: var(--xsc-font-mono);
  font-size: 10px;
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 3px;
  white-space: nowrap;
  flex-shrink: 0;
  margin-top: 3px;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.xscave-badge--submitted    { background: var(--xsd-submitted-bg);    color: var(--xsd-submitted-color);    border: 1px solid var(--xsd-submitted-bd); }
.xscave-badge--under_review { background: var(--xsc-review-bg);      color: var(--xsc-review-color);       border: 1px solid var(--xsc-review-bd); }
.xscave-badge--due          { background: var(--xsd-due-bg);          color: var(--xsd-due-color);          border: 1px solid var(--xsd-due-bd); }
.xscave-badge--delayed      { background: var(--xsd-delayed-bg);      color: var(--xsd-delayed-color);      border: 1px solid var(--xsd-delayed-bd); }
.xscave-badge--confidential { background: var(--xsd-confidential-bg); color: var(--xsd-confidential-color); border: 1px solid var(--xsd-confidential-bg); }

/* ── Authors / Venue equivalents ── */
.xscave-pub-authors {
  font-size: 13.5px;
  color: var(--xsc-muted);
  margin: 0 0 4px;
  line-height: 1.6;
  font-style: italic;
}

.xscave-pub-venue {
  font-size: 12px;
  font-family: var(--xsc-font-mono);
  color: var(--xsc-muted);
  margin: 0 0 10px;
  letter-spacing: .02em;
}

/* ── Summary ── */
.xscave-pub-abstract-wrap {
  margin: 10px 0 14px;
  padding: 14px 16px;
  background: var(--xsc-surface);
  border-left: 3px solid var(--xsc-olive);
  border-radius: 0 4px 4px 0;
}

.xscave-pub-abstract {
  font-size: 13.5px;
  line-height: 1.75;
  color: #2c331f;
  margin: 0;
}

/* ── Links ── */
.xscave-pub-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}

.xscave-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  padding: 6px 14px;
  border-radius: 4px;
  border: 1px solid;
  transition: background .15s, color .15s;
}

.xscave-link--paper {
  color: var(--xsc-accent);
  border-color: var(--xsc-accent);
  background: transparent;
}

.xscave-link--paper:hover {
  background: var(--xsc-accent);
  color: #fff;
}

/* ── Pulled-out "Not Yet Submitted" section ── */
.xscave-under-review-section {
  margin-top: 52px;
  padding-top: 32px;
  border-top: 2px dashed var(--xsc-border);
}

/* ── Summary toggle ── */
.xscave-abstract-toggle {
  background: none;
  border: none;
  font-family: var(--xsc-font-body);
  font-size: 12px;
  font-weight: 600;
  color: var(--xsc-accent);
  cursor: pointer;
  padding: 6px 0 0;
  display: block;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.xscave-abstract-toggle:hover {
  text-decoration: underline;
}

/* ── Thumbnail ── */
.xscave-pub-thumb {
  margin-bottom: 16px;
  border-radius: 5px;
  overflow: hidden;
  background: var(--xsc-surface);
  max-height: 220px;
}

.xscave-pub-img {
  width: 100%;
  max-height: 220px;
  object-fit: cover;
  display: block;
  border-radius: 5px;
  transition: transform .3s ease;
}

.xscave-pub-card:hover .xscave-pub-img {
  transform: scale(1.02);
}

/* ── Responsive ── */
@media (max-width: 680px) {
  .xscave-filter-form {
    flex-direction: column;
  }
  .xscave-filter-group {
    min-width: 100%;
  }
  .xscave-filter-actions {
    width: 100%;
  }
  .xscave-btn-filter,
  .xscave-btn-reset {
    flex: 1;
    justify-content: center;
  }
  .xscave-pub-card-inner {
    padding: 16px;
  }
  .xscave-pub-header {
    flex-direction: column;
    gap: 6px;
  }
  .xscave-results-meta {
    flex-direction: column;
    align-items: flex-start;
  }
}
