/* Research page — project lists and publications by year.
   Mirrors issgjs/src/app/research/page.tsx and publication-item.tsx. */

.research-page {
  padding-block: 3rem;
}
@media (min-width: 48em) {
  .research-page {
    padding-block: 5rem;
  }
}

.research-head {
  margin-bottom: 3.5rem;
}
.research-head h1 {
  color: var(--issg-dark);
  margin-bottom: 1rem;
}
.research-head p {
  font-size: 1.125rem;
  color: var(--gray-600);
}

/* Section heading + optional action, stacked on narrow screens */
.research-bar {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
@media (min-width: 30em) {
  .research-bar {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
}
.research-bar h2 {
  color: var(--issg-dark);
  font-size: 1.25rem;
  line-height: 1.2;
}

.research-bar--end {
  justify-content: flex-end;
}

/* "Completed Projects" has no action beside it, so it is a plain heading. */
.research-subhead {
  color: var(--issg-dark);
  font-size: 1.25rem;
  line-height: 1.2;
  margin-bottom: 1.5rem;
}

.project-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-bottom: 4rem;
}
.project-list--last {
  margin-bottom: 5rem;
}

.research-empty {
  color: var(--gray-500);
  padding-block: 2rem;
  text-align: center;
}

/* --- Project row -------------------------------------------------------- */

.project-row {
  display: flex;
  position: relative;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-md);
  min-height: 90px;
  transition: box-shadow 0.2s, border-color 0.2s;
}
.project-row:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--gray-300);
}
@media (min-width: 48em) {
  .project-row {
    min-height: 110px;
  }
}

.project-row__admin {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 1;
}

.project-row__body {
  flex: 1;
  padding: 1.25rem 0.75rem 1.25rem 1.25rem;
  min-width: 0;
}

.project-row__title {
  font-size: 1rem;
  /* lineHeight="snug" is not a Chakra token; the raw string was invalid CSS and
     dropped, leaving the Heading size style's 1.2. */
  line-height: 1.2;
  color: var(--issg-dark);
  margin-bottom: 0.5rem;
  padding-right: 1.5rem;
}
@media (min-width: 48em) {
  .project-row__title {
    padding-right: 2rem;
  }
}

.project-row__team {
  font-size: 0.875rem;
  color: var(--gray-500);
}

.project-row__summary {
  font-size: 0.875rem;
  color: var(--gray-600);
  margin-top: 0.5rem;
}

.project-row__media {
  position: relative;
  width: 100px;
  flex-shrink: 0;
}
@media (min-width: 48em) {
  .project-row__media {
    width: 160px;
  }
}

.project-row__thumb {
  width: 100%;
  height: 100%;
  background: var(--gray-100);
  overflow: hidden;
}
.project-row__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.thumb-placeholder {
  width: 100%;
  height: 100%;
  background-image: repeating-conic-gradient(#d1d5db 0% 25%, #f3f4f6 0% 50%);
  background-size: 20px 20px;
}

/* --- Badges ------------------------------------------------------------- */

.badge {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 700;
  padding: 0.25rem 0.5rem;
  border-radius: var(--radius-md);
}
.badge--done { background: var(--green-100); color: var(--green-800); }
.badge--live { background: var(--blue-100);  color: var(--blue-800); }

/* The absolutely-placed flag on a project thumbnail */
.badge--flag {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  border-radius: var(--radius-sm);
  letter-spacing: 0.05em;
  color: var(--gray-800);
}
.badge--done-solid { background: var(--green-400); }
.badge--live-solid { background: var(--yellow-400); }

/* --- Publications ------------------------------------------------------- */

.pub-year {
  margin-bottom: 3rem;
}
.pub-year > h2 {
  font-size: 1.25rem;
  line-height: 1.2;
  margin-bottom: 1.5rem;
  color: var(--issg-dark);
  border-bottom: 2px solid var(--issg-dark);
  padding-bottom: 0.5rem;
  width: fit-content;
}

.pub-item {
  margin-bottom: 2rem;
}

.pub-item__row {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}

.pub-item__icon {
  display: flex;
  padding: 0.75rem;
  background: var(--issg-sage);
  border-radius: var(--radius-lg);
  color: var(--issg-dark);
  flex-shrink: 0;
}

.pub-item__body {
  flex: 1;
  min-width: 0;
}

.pub-item__title {
  font-size: 1.25rem;
  line-height: 1.2;
  margin-bottom: 0.5rem;
  color: var(--issg-dark);
}

.pub-item__authors {
  color: var(--gray-600);
  margin-bottom: 0.25rem;
}

.pub-item__meta {
  font-size: 0.875rem;
  color: var(--gray-500);
  font-style: italic;
}

.pub-item__link {
  display: flex;
  align-items: center;
  padding: 0.5rem;
  border-radius: var(--radius-md);
  color: var(--issg-dark);
  transition: background 0.2s;
}
.pub-item__link:hover {
  background: var(--issg-sage);
}

.pub-item__rule {
  border: 0;
  border-top: 1px solid var(--gray-200);
  margin-top: 1.5rem;
}
