:root {
  --primary: #192B52;
  --sidebar-bg: #f7f6fb;
  --sidebar-border: #e2e1f0;
  --text-main: #222222;
  --text-muted: #555555;
  --link: #0d1ad3;
  --participants-count: "323";
  --submission-count: "0";
}

.stat-submissions .stat-number::before {
  content: var(--submission-count);
  font-size: 24px;
  font-weight: 700;
  color: #28B6AD; /* 顺便修正你之前的 ## */
}

/* 全局基础样式 */
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui,
    sans-serif;
  color: var(--text-main);
  background: #ffffff;
}

a {
  color: var(--link);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* 布局 */
.app-layout {
  display: flex;
  min-height: 100vh;
}

/* 左侧栏加宽 */
.sidebar {
  width: 260px;
  background: var(--sidebar-bg);
  border-right: 1px solid var(--sidebar-border);
  padding: 24px 16px;
  display: flex;
  flex-direction: column;
  gap: 24px;

  /* 关键：滚动时固定在视口左侧 */
  position: sticky;
  top: 0;
  align-self: flex-start;
  height: 100vh;       /* 占满屏幕高度 */
  overflow-y: auto;    /* 菜单很多时，侧栏内部可以单独滚动 */
}

/* 左上角标题 */
.sidebar-header {
  display: flex;
  align-items: center;
  gap: 8px;
}

.sidebar-logo-mark {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 2px solid var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: var(--primary);
  font-weight: 600;
}

.sidebar-title {
  font-weight: 700;
  font-size: 20px;
  color: var(--primary);
  font-family: "Microsoft YaHei";
}

/* 左侧导航 */
.sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 16px;
}

.nav-item {
  display: block;
  padding: 8px 10px;
  border-radius: 8px;
  color: #505060;
}

.nav-item:hover {
  background: #ecebfb;
}

.nav-item.active {
  background: #ffffff;
  color: var(--primary);
  font-weight: 600;
  border-left: 3px solid var(--primary);
  padding-left: 7px;
}

/* 右侧区域 */
.content-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* 顶部栏 */
.top-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 32px;
  border-bottom: 1px solid #ececf3;
}

.top-brand {
  display: flex;
  align-items: center;
  gap: 8px;
}

.top-logo-mark {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 2px solid var(--primary);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  color: var(--primary);
}

.top-title {
  font-weight: 600;
  font-size: 28px;
  color: var(--primary);
  font-family: "Microsoft YaHei";
}

/* 搜索框 */
.search-box {
  position: relative;             /* 作为结果浮层的定位容器 */
  display: flex;
  align-items: center;
  max-width: 360px;
  width: 100%;
}

.search-input {
  width: 100%;
  padding: 8px 34px 8px 14px;
  border-radius: 999px;
  border: 1px solid #d5d5e5;
  font-size: 14px;
  outline: none;
}

.search-input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(75, 108, 255, 0.2);
}

.search-icon {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 16px;
  color: #a0a0b5;
  pointer-events: none;
}

/* 正文区域 */
.main-content {
  max-width: 1200px;          /* 正文最大宽度 */
  margin: 32px auto 64px;
  padding: 0 32px;
}

.page-title {
  font-size: 30px;
  color: #07689f;
  font-weight: 600;
  margin: 0 0 0px;
}

/* 横幅图片：自定义大小 + 居中 */
.hero-center {
  text-align: center;          /* 让图片居中 */
  margin: 8px 0 28px;
}

/*
 * 这里就是图片大小控制：
 * - width: 900px      → 正常情况下的“理想”宽度，你可以随意改，比如 800、1000
 * - max-width: calc(100vw - 320px)
 *   100vw  是视口宽度
 *   320px ≈ 左侧栏260px + 右侧内边距/安全间距
 *   这样可以防止太窄屏幕时出现横向滚动条
 */
.hero-img {
  display: inline-block;
  width: 1100px;                         /* ✅ 自定义大小，想多大改这里 */
  max-width: calc(100vw - 320px);       /* ✅ 窄屏时自动缩小，避免横向滚动 */
  height: auto;
  border-radius: 10px;                  /* 可选：圆角 */
}

/* 副标题 & 正文文字 */
.subtitle {
  font-size: 30px;
  color: #07689f;
  font-weight: 600;
  margin: 0 0 16px;
}

.main-content p {
  font-size: 18px;
  line-height: 1.7;
  color: var(--text-muted);
  margin: 0 0 14px;
  text-align: justify;
  text-justify: inter-word;  
}

/* 响应式：窗口非常窄时（比如平板/手机）简单调整一下布局 */
@media (max-width: 900px) {
  .app-layout {
    flex-direction: column;
  }

  .sidebar {
    width: 100%;
    flex-direction: row;
    align-items: flex-start;
    overflow-x: auto;
  }

  .main-content {
    padding: 0 16px;
  }

  .hero-img {
    width: 100%;
    max-width: 100%;
  }
}
/* 标题样式（上面那句长标题） */
.schedule-heading {
  font-family: "Nunito", "Georgia", serif;
  font-size: 22px;
  font-weight: 600;
  color: #C01A34;            /* 接近你截图里的暗红色 */
  margin: 32px 0 24px;
}

/* 整个时间表容器 */
.schedule {
  margin-top: 8px;
}

/* 每一行（一个阶段） */
.schedule-item {
  display: flex;
  column-gap: 40px;          /* 日期和内容之间的间距 */
  margin-bottom: 24px;       /* 行间距 */
}

/* 左侧日期 */
.schedule-date {
  min-width: 100px;          /* 日期栏宽度，根据需要可调 */
  font-size: 18px;
  color: #555;
}

/* 右侧标题 + 文本容器 */
.schedule-body {
  flex: 1;
}

/* 阶段标题 */
.schedule-title {
  font-family: "Nunito", "Georgia", serif;
  font-size: 20px;
  font-weight: 600;
  color: #C01A34;
  margin-bottom: 4px;
}

/* 描述文字 */
.schedule-desc {
  font-size: 16px;
  color: #555;
  line-height: 1.6;
  text-align: justify;       /* 左右对齐，和你正文保持一致 */
}

/* 窄屏下的响应式：改成上下排列 */
@media (max-width: 768px) {
  .schedule-item {
    flex-direction: column;
    row-gap: 4px;
  }

  .schedule-date {
    min-width: auto;
    font-weight: 500;
  }
}

/* 下拉结果浮层：紧贴输入框下方，覆盖在内容上，不挤开布局 */
.site-search-results {
  position: absolute;
  top: calc(100% + 4px);          /* 正好在输入框下面，再留 4px 间距 */
  left: 0;
  width: 100%;

  background: #ffffff;
  border-radius: 12px;
  box-shadow: 0 8px 16px rgba(15, 23, 42, 0.12);
  border: 1px solid #e2e1f0;
  z-index: 999;                   /* 保证浮在图片和正文上面 */

  max-height: 320px;              /* 结果太多时内部滚动 */
  overflow-y: auto;
}

/* 结果条目卡片样式 */
.sr-item {
  display: block;
  padding: 8px 12px;
  text-decoration: none;
  border-bottom: 1px solid #f1f0fb;
}

.sr-item:last-child {
  border-bottom: none;
}

.sr-title {
  font-size: 14px;
  font-weight: 600;
  color: #1f2933;
}

.sr-text {
  font-size: 12px;
  color: #6b7280;
  margin-top: 2px;
}

.sr-item:hover {
  background: #f5f4ff;
}

.sr-empty {
  padding: 8px 12px;
  font-size: 12px;
  color: #6b7280;
}

.docker-icon {
  margin-left: 4px;
}

.axis-tick {
  position: absolute;
  top: 0;
  transform: translateX(-50%);
  white-space: nowrap;
}
.page-footer {
  margin-top: 40px;              /* 和正文留点间距 */
  padding-top: 12px;
  padding-bottom: 24px;
  border-top: 1px solid #e5e7eb; /* 上面一条浅线 */
  font-size: 12px;
  color: var(--text-muted);      /* 用你定义的次级文字颜色 */
  text-align: center;
}
/* 整体卡片 */
.timeline-card {
  margin-top: 24px;
  margin-bottom: 32px;
  padding: 50px 40px 20px;
  border-radius: 18px;
  background: #f9fafb;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
}

/* 时间线容器 */
.timeline-main {
  position: relative;
  padding: 90px 1px;          /* 上下空一点，给文字留位置 */
}

/* 中间的粗线 */
.timeline-bar {
  position: absolute;
  left: 0px;
  right: 1px;
  top: 46%;
  height: 15px;
  background: var(--primary, #c0165a);   /* 主色：接近示例图的洋红 */
  border-radius: 999px;
}

/* 所有节点横向排列 */
.timeline-steps {
  position: relative;
  display: flex;
  justify-content: space-between;
}

/* 单个节点 */
.timeline-step {
  position: relative;
  flex: 0;
  min-width: 0;
  text-align: center;
}

/* 圆点（比之前小一点） */
.timeline-circle {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 0 0 4px var(--primary, #c0165a);
  color: var(--primary, #c0165a);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-weight: 700;
  z-index: 2;
}

/* 节点上方的小灰点 + 虚线 */
.timeline-step::before {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #9ca3af;                /* 小灰点 */
  top: calc(50% - 52px);              /* 在圆点上方一定距离 */
  z-index: 1;
}

.timeline-step::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: calc(50% - 46px);
  bottom: calc(50% - 20px);           /* 从灰点连到圆点上方一点 */
  border-left: 1.5px dashed #d1d5db;  /* 竖向虚线 */
  z-index: 0;
}

/* 上方标题（粗体、居中） */
.timeline-title {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(50% + 70px);
  max-width: 220px;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
  color: #3f3f46;
}

/* 下方日期（洋红色） */
.timeline-date {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: calc(50% + 26px);
  font-size: 18px;
  font-weight: 600;
  color: var(--primary, #c0165a);
}

/* 下方说明文字（灰色、略大） */
.timeline-desc {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: calc(50% + 56px);
  max-width: 260px;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.4;
  color: #4b5563;
}

/* 如果某个节点没有说明，可以不写 .timeline-desc。
   下面这句只是防止空元素占位，可有可无 */
.timeline-step:not(:has(.timeline-desc)) .timeline-desc {
  display: none;
}
/* ===== Leaderboard section ===== */

.leaderboard-section {
  margin-top: 3rem;
  margin-bottom: 3rem;
}

.leaderboard-section .section-title {
  font-size: 2rem;
  font-weight: 600;
  margin-bottom: 1.5rem;
  color: var(--text-main, #222222);
}

/* 外层卡片：白底 + 圆角 + 阴影 */
.leaderboard-card {
  background: #ffffff;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);
  padding: 1.5rem 2rem;
  overflow-x: auto; /* 窄屏时可以横向滚动 */
}

/* 表格基础样式 */
.leaderboard-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.95rem;
  color: var(--text-main, #222222);
}

.leaderboard-table thead tr {
  border-bottom: 1px solid #edf2f7;
}

.leaderboard-table th,
.leaderboard-table td {
  padding: 0.9rem 1rem;
  vertical-align: center;
  text-align: left;
}

/* 表头 */
.leaderboard-table th {
  font-weight: 600;
  font-size: 0.9rem;
  color: #414855ff;
  background: #D1EAFF;
}

/* 行分隔线 */
.leaderboard-table tbody tr {
  border-bottom: 1px solid #f1f5f9;
}

/* 斑马纹可选：打开就有交替背景 */

.leaderboard-table tbody tr:nth-child(even) {
  background: #fafafa;
}


.leaderboard-table tbody tr:last-child {
  border-bottom: none;
}

/* 各列对齐方式 */
.leaderboard-table .col-rank {
  width: 60px;
  text-align: center;
  font-weight: 500;
}

.leaderboard-table .col-team-name {
  width: 150px;
  text-align: center;
  font-weight: 500;
}

.leaderboard-table .col-members {
  width: 220px;
  text-align: center;
}

.leaderboard-table .col-affiliation {
  width: 220px;
  text-align: center;
}

.leaderboard-table .col-score {
  width: 120px;
  text-align: center;
  white-space: nowrap;
}

/* 高亮分数列（Final Score） */
.highlight-score {
  font-weight: 600;
  text-align: center;
  color: var(--primary, #a174a5); /* 用你的主色 */
}

/* 小屏优化：字号略小 */
@media (max-width: 900px) {
  .leaderboard-section .section-title {
    font-size: 1.6rem;
  }

  .leaderboard-card {
    padding: 1rem 1.25rem;
  }

  .leaderboard-table {
    font-size: 0.9rem;
  }
}
/*organziers*/
/* 网格容器：每行4列 */
.organizers-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列，每列等宽 */
  gap: 30px 20px; /* 行间距30px，列间距20px */
  margin-top: 30px;
}

.author-item {
    display: flex; /* 启用弹性布局 */
    flex-direction: column; /* 垂直排列：图片在上，文字在下 */
    align-items: center; /* 水平居中 */
    text-align: center; /* 文字居中 */
}

/* 照片样式 */
.author-photo {
  width: 150px;       /* 宽度：设置为正方形（宽高相等） */
  height: 150px;      /* 高度：与宽度一致 */
  border-radius: 50%; /* 关键：圆角半径设为50%，正方形会变成圆形 */
  object-fit: cover; /* 图片裁剪适配圆形，避免变形 */
  /* 可选：添加边框增强美观 */
  border: 2px solid #f0f0f0;
  margin-bottom: 12px; /* 图片和文字之间的间距 */
}

/* 文字样式 */
.author-info {
    line-height: 1.5; /* 文字行高，增强可读性 */
}

/* 响应式：窄屏时改为2列 */
@media (max-width: 900px) {
  .organizers-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* 响应式：手机屏幕改为1列 */
@media (max-width: 600px) {
  .organizers-grid {
    grid-template-columns: 1fr;
  }
}

/* 文件夹架构整体容器 */
/* 保留格式的code块，调整padding并去除text-align */
pre {
  background: #f2f7fa;
  padding: 5px;  
  border-radius: 4px;
  white-space: pre-wrap;  /* 自动换行 */
  line-height: 1.6;
  font-size: 20px;
  font-family: 'Courier New', monospace;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}

code {
  font-family: 'Courier New', monospace;
  font-size: 18px;
}

.language-text {
  color: #000000;
}

.stat-participants .stat-number::before {
  content: var(--participants-count);
  font-size: 18px;
  font-weight: 700;
  color: #e6007a;
}

.stat-submissions .stat-number::before {
  content: var(--submission-count);
  font-size: 18px;
  font-weight: 700;
  color: #28B6AD;
}

tr.row-bold td{
  font-weight: 700 !important;/* 加粗 */
  color:  #e6007a;
}