:root {
  --archive-canvas: #f3f5f8;
  --archive-paper: #fbfcfe;
  --archive-ink: #151821;
  --archive-muted: #626875;
  --archive-line: rgba(21, 24, 33, .18);
  --archive-blue: #315dca;
  --archive-blue-soft: #86a9df;
  --archive-periwinkle: #daddf3;
  --archive-green: #dce8b8;
  --archive-signal: #d8f04c;
  --archive-serif: "Noto Serif SC", "Songti SC", STSong, serif;
  --archive-sans: Geist, "Noto Sans SC", system-ui, sans-serif;
  --archive-utility: "Space Grotesk", Geist, "Noto Sans SC", sans-serif;
}

body.route-archive {
  background: var(--archive-canvas);
  color: var(--archive-ink);
  font-family: var(--archive-sans);
}

.route-archive::before {
  display: none;
}

.route-archive .page-shell {
  width: min(1260px, calc(100% - 48px));
  padding: 30px 0 96px;
}

.route-archive .archive-head {
  margin: 0;
  padding: 34px 0 86px;
  text-align: center;
}

.archive-head-art {
  width: min(510px, 72vw);
  height: 220px;
  margin: 0 auto 22px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  overflow: hidden;
}

.archive-head-art picture,
.archive-head-art img {
  width: 100%;
  height: 100%;
  display: block;
}

.archive-head-art img {
  object-fit: cover;
  filter: contrast(.99) saturate(.92);
  mix-blend-mode: multiply;
}

.archive-head-ucl img {
  object-position: 31% 62%;
}

.archive-head-glasgow img {
  object-position: 67% 47%;
}

.route-archive .archive-head h1 {
  margin: 0;
  font-family: var(--archive-serif);
  font-size: clamp(3rem, 6.2vw, 5.6rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: 1.12;
}

.route-archive .archive-head .lead {
  max-width: 620px;
  margin: 22px auto 0;
  color: var(--archive-muted);
  font-size: .95rem;
  font-weight: 400;
  line-height: 1.8;
}

.route-archive .stat-line {
  margin-top: 23px;
  justify-content: center;
  color: var(--archive-muted);
  font-family: var(--archive-utility);
  font-size: .7rem;
  font-variant-numeric: tabular-nums;
}

.route-archive .stat-line span + span::before {
  color: var(--archive-blue);
}

.route-archive .preview-ribbon {
  margin: 0 0 44px;
  padding: 32px 36px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 28px 42px;
  align-items: end;
  border: 0;
  border-radius: 30px;
  background: var(--archive-periwinkle);
  box-shadow: none;
}

.route-archive .preview-ribbon p {
  margin: 0;
  max-width: 70ch;
  color: #353a46;
  font-size: .86rem;
  line-height: 1.75;
}

.route-archive .preview-ribbon .pr-label {
  margin-bottom: 13px;
  color: var(--archive-blue);
  font-family: var(--archive-utility);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.route-archive .preview-ribbon a:not(.btn) {
  color: var(--archive-ink);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}

.route-archive .pr-actions {
  align-items: center;
}

.route-archive .pr-actions .btn {
  height: 42px;
  padding: 0 17px;
  border-width: 1px;
  border-radius: 11px;
  box-shadow: none;
  font-size: .78rem;
  font-weight: 650;
}

.route-archive .pr-actions .btn:hover {
  transform: translateY(-2px);
  box-shadow: none;
}

.route-archive .pr-actions .btn-primary {
  border-color: var(--archive-ink);
  background: var(--archive-ink);
  color: #fff;
}

.route-archive .pr-actions .btn-ghost {
  border-color: rgba(21, 24, 33, .36);
  background: rgba(255, 255, 255, .3);
}

.route-archive .filter-block {
  margin: 0 0 64px;
  padding: 24px 0 26px;
  gap: 14px;
  border: 0;
  border-top: 1px solid var(--archive-line);
  border-bottom: 1px solid var(--archive-line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.route-archive .filter-row {
  gap: 9px;
}

.route-archive .filter-row .filter-label {
  min-width: 76px;
  color: var(--archive-muted);
  font-family: var(--archive-utility);
  font-size: .65rem;
  letter-spacing: .1em;
}

.route-archive .chip-btn {
  height: 34px;
  padding: 0 13px;
  border: 1px solid rgba(21, 24, 33, .24);
  border-radius: 9px;
  background: transparent;
  box-shadow: none;
  color: var(--archive-muted);
  font-size: .74rem;
  font-weight: 600;
}

.route-archive .chip-btn:hover {
  transform: translateY(-1px);
  box-shadow: none;
  color: var(--archive-ink);
}

.route-archive .chip-btn.active {
  border-color: var(--archive-blue);
  background: var(--archive-blue);
  box-shadow: none;
  color: #fff;
  font-weight: 700;
}

.route-archive .section-label {
  margin: 70px 0 24px;
  padding: 0 0 13px;
  border-bottom: 1px solid var(--archive-ink);
}

.route-archive .section-label:first-child {
  margin-top: 0;
}

.route-archive .section-label > span:first-child {
  font-family: var(--archive-serif);
  font-size: clamp(1.55rem, 2.6vw, 2.25rem);
  font-weight: 500;
  letter-spacing: -.035em;
}

.route-archive .section-label .count {
  color: var(--archive-blue);
  font-family: var(--archive-utility);
  font-size: .68rem;
}

.route-archive .uni-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 38px;
}

.route-archive .uni-card {
  position: relative;
  min-height: 176px;
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr);
  gap: 17px;
  align-items: start;
  padding: 24px 2px 27px;
  border: 0;
  border-top: 1px solid var(--archive-line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: inherit;
  opacity: 1;
  transition: color .2s ease, opacity .2s ease, transform .25s ease;
}

.route-archive .uni-card:nth-child(-n + 2):not(.featured) {
  border-top-color: transparent;
}

.route-archive .uni-card:hover {
  transform: translateY(-3px);
  box-shadow: none;
}

.route-archive .uni-card.tier-g5,
.route-archive .uni-card.tier-russell,
.route-archive .uni-card.tier-other {
  border-left: 0;
}

.route-archive .uni-card .crest {
  position: relative;
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border: 1px solid var(--archive-ink);
  border-radius: 50%;
  filter: none;
  opacity: 1;
}

.route-archive .uni-card .crest span {
  position: static;
  display: block;
  padding: 0;
  color: var(--archive-ink);
  font-family: var(--archive-utility);
  font-size: .68rem;
  font-weight: 700;
}

.route-archive .uni-body {
  min-width: 0;
  padding-right: 74px;
}

.route-archive .uni-head h3 {
  margin: 0 0 5px;
  font-family: var(--archive-serif);
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: -.025em;
  line-height: 1.32;
}

.route-archive .uni-head .en,
.route-archive .uni-card .meta-line {
  color: var(--archive-muted);
  font-family: var(--archive-utility);
  font-size: .66rem;
  letter-spacing: .02em;
}

.route-archive .uni-card .meta-line {
  margin-top: 12px;
}

.route-archive .uni-card .meta-line .sep {
  color: var(--archive-blue);
}

.route-archive .uni-card .pitch {
  margin-top: 12px;
  color: var(--archive-muted);
  font-size: .78rem;
  line-height: 1.66;
}

.route-archive .uni-card .status-chip {
  top: 26px;
  right: 2px;
  height: auto;
  padding: 0 0 4px;
  border: 0;
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--archive-muted);
  font-family: var(--archive-utility);
  font-size: .62rem;
  letter-spacing: .04em;
}

.route-archive .uni-card .status-chip.lock,
.route-archive .uni-card .status-chip.published,
.route-archive .uni-card .status-chip.free {
  border-color: currentColor;
  background: transparent;
  box-shadow: none;
}

.route-archive .uni-card .status-chip.free,
.route-archive .uni-card .status-chip.published {
  color: var(--archive-blue);
}

.route-archive .uni-card.locked {
  opacity: .67;
}

.route-archive .uni-card.locked:hover {
  opacity: 1;
}

.route-archive .uni-card.featured {
  grid-column: 1 / -1;
  min-height: 320px;
  grid-template-columns: minmax(300px, .9fr) minmax(320px, 1fr);
  gap: 0;
  align-items: stretch;
  margin-bottom: 28px;
  padding: 0;
  border: 0;
  border-radius: 30px;
  background: var(--archive-paper);
  overflow: hidden;
}

.route-archive .uni-card.featured-glasgow {
  background: var(--archive-green);
}

.route-archive .uni-plate {
  min-height: 320px;
  display: block;
  overflow: hidden;
}

.route-archive .uni-plate img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  filter: contrast(.99) saturate(.92);
  mix-blend-mode: multiply;
  transition: transform .45s ease;
}

.route-archive .uni-card.featured:hover .uni-plate img {
  transform: scale(1.018);
}

.route-archive .uni-card.featured .uni-body {
  align-self: end;
  padding: 42px 88px 42px 42px;
}

.route-archive .uni-card.featured .uni-head h3 {
  font-size: clamp(1.8rem, 3vw, 2.7rem);
  letter-spacing: -.045em;
}

.route-archive .uni-card.featured .pitch {
  max-width: 460px;
  margin-top: 18px;
  font-size: .86rem;
}

.route-archive .uni-card.featured .status-chip {
  top: 28px;
  right: 30px;
}

.route-archive .empty-state {
  border: 0;
  border-top: 1px solid var(--archive-line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.route-archive #unlockModal .modal {
  border: 0;
  border-radius: 30px;
  background: var(--archive-paper);
  box-shadow: none;
}

.route-archive #unlockModal .btn {
  border-width: 1px;
  border-radius: 11px;
  box-shadow: none;
}

@media (max-width: 820px) {
  .route-archive .preview-ribbon {
    grid-template-columns: 1fr;
  }

  .route-archive .uni-card.featured {
    grid-template-columns: minmax(230px, .8fr) 1fr;
  }
}

@media (max-width: 660px) {
  .route-archive .page-shell {
    width: min(100% - 24px, 520px);
    padding: 18px 0 72px;
  }

  .route-archive .archive-head {
    padding: 22px 0 62px;
  }

  .archive-head-art {
    width: min(340px, 92vw);
    height: 154px;
    margin-bottom: 16px;
  }

  .route-archive .archive-head h1 {
    font-size: clamp(2.85rem, 15vw, 4.1rem);
  }

  .route-archive .archive-head .lead {
    max-width: 33ch;
    font-size: .86rem;
  }

  .route-archive .preview-ribbon {
    margin-bottom: 34px;
    padding: 28px 24px;
    border-radius: 24px;
  }

  .route-archive .pr-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .route-archive .filter-block {
    margin-bottom: 46px;
    padding-block: 20px;
  }

  .route-archive .filter-row .filter-label {
    width: 100%;
  }

  .route-archive .section-label {
    margin-top: 56px;
  }

  .route-archive .uni-grid {
    grid-template-columns: 1fr;
  }

  .route-archive .uni-card:nth-child(-n + 2):not(.featured) {
    border-top-color: var(--archive-line);
  }

  .route-archive .uni-card.featured {
    min-height: 0;
    grid-template-columns: 1fr;
    margin-bottom: 20px;
    border-radius: 24px;
  }

  .route-archive .uni-plate {
    min-height: 225px;
    height: 225px;
  }

  .route-archive .uni-card.featured .uni-body {
    padding: 29px 28px 33px;
  }

  .route-archive .uni-card.featured .status-chip {
    top: 20px;
    right: 22px;
  }

  .route-archive .uni-card.featured .uni-body {
    padding-right: 28px;
  }

  .route-archive .uni-card {
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 14px;
    min-height: 164px;
    padding-block: 22px 24px;
  }

  .route-archive .uni-card .crest {
    width: 42px;
    height: 42px;
  }

  .route-archive .uni-body {
    padding-right: 72px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .route-archive .uni-card,
  .route-archive .uni-plate img,
  .route-archive .pr-actions .btn {
    transition: none !important;
  }
}
