/* Extracted from page\events\conference.html */
/* ===== PAGE HERO WITH STATS ===== */
    .page-hero {
      background: linear-gradient(135deg, #0a1f3d 0%, #1a3a6e 50%, #0d2b52 100%);
      padding: 56px 0 48px;
      position: relative;
      overflow: hidden;
    }
    .page-hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image:
        repeating-linear-gradient(45deg, rgba(255,255,255,0.02) 0px, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 80px),
        repeating-linear-gradient(-45deg, rgba(255,255,255,0.02) 0px, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 80px);
    }
    .page-hero::after {
      content: '';
      position: absolute;
      top: -80px; right: -80px;
      width: 350px; height: 350px;
      background: radial-gradient(circle, rgba(201,162,39,0.12) 0%, transparent 70%);
    }
    /* Hero Content with Stats */
    .hero-content {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 40px;
      position: relative;
      z-index: 1;
    }
    .hero-text { flex: 1; min-width: 0; }
    .breadcrumb {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 0.82rem;
      color: rgba(255,255,255,0.6);
      margin-bottom: 16px;
    }
    .breadcrumb a { color: rgba(255,255,255,0.7); transition: color 0.3s; }
    .breadcrumb a:hover { color: #e8bc3c; }
    .breadcrumb span { opacity: 0.5; }
    .hero-title {
      font-size: clamp(1.8rem, 3vw, 2.4rem);
      color: #fff;
      margin-bottom: 12px;
    }
    .hero-desc {
      font-size: 0.95rem;
      color: rgba(255,255,255,0.7);
      line-height: 1.6;
    }

    /* Hero Stats Bar */
    .hero-stats {
      flex-shrink: 0;
      display: flex;
      gap: 20px;
    }
    .hero-stat {
      flex-shrink: 0;
      min-width: 90px;
      text-align: center;
      padding: 16px 20px;
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 12px;
    }
    .hero-stat .num {
      font-size: 1.6rem;
      font-weight: 800;
      color: #e8bc3c;
      display: block;
      line-height: 1;
    }
    .hero-stat .lbl {
      font-size: 0.65rem;
      color: rgba(255,255,255,0.7);
      margin-top: 4px;
      line-height: 1.3;
      text-transform: uppercase;
      letter-spacing: 0.04em;
    }

    /* ===== UPCOMING BANNER ===== */
    .upcoming-banner {
      background: linear-gradient(135deg, #6b3d00, #c9a227);
      border-radius: 16px;
      padding: 32px 36px;
      margin-bottom: 36px;
      color: #fff;
      position: relative;
      overflow: hidden;
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 32px;
      align-items: center;
    }
    .upcoming-banner::before {
      content: '';
      position: absolute;
      top: -40px; right: -40px;
      width: 180px; height: 180px;
      background: rgba(255,255,255,0.08);
      border-radius: 50%;
    }
    .upcoming-banner::after {
      content: '📅';
      position: absolute;
      right: 32px; top: 50%;
      transform: translateY(-50%);
      font-size: 5rem;
      opacity: 0.15;
    }
    .upcoming-content {
      position: relative;
      z-index: 1;
    }
    .upcoming-label {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      background: rgba(255,255,255,0.25);
      color: #fff;
      font-size: 0.72rem;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      padding: 5px 14px;
      border-radius: 14px;
      margin-bottom: 12px;
    }
    .upcoming-title {
      font-size: clamp(1.2rem, 2.5vw, 1.5rem);
      color: #fff;
      margin-bottom: 8px;
      line-height: 1.4;
    }
    .upcoming-desc {
      font-size: 0.85rem;
      color: rgba(255,255,255,0.85);
      line-height: 1.6;
      margin-bottom: 12px;
      max-width: 500px;
    }
    .upcoming-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 14px;
      font-size: 0.8rem;
      color: rgba(255,255,255,0.85);
    }
    .upcoming-meta span { display: flex; align-items: center; gap: 5px; }
    .upcoming-btn {
      position: relative;
      z-index: 1;
      background: #fff;
      color: #6b3d00;
      padding: 12px 26px;
      border-radius: 24px;
      font-weight: 700;
      font-size: 0.88rem;
      transition: all 0.3s;
      white-space: nowrap;
      text-decoration: none;
      display: inline-block;
    }
    .upcoming-btn:hover {
      background: #fffef0;
      transform: scale(1.05);
      box-shadow: 0 4px 16px rgba(0,0,0,0.2);
    }

    /* ===== CONFERENCE CARDS ===== */
    .conf-list {
      display: flex;
      flex-direction: column;
      gap: 24px;
    }
    .conf-card {
      background: #fff;
      border-radius: 14px;
      overflow: hidden;
      border: 1px solid var(--border);
      box-shadow: 0 3px 14px rgba(10,31,61,0.06);
      transition: all 0.3s ease;
      display: grid;
      grid-template-columns: 240px 1fr;
      cursor: pointer;
    }
    .conf-card:hover {
      box-shadow: 0 10px 36px rgba(10,31,61,0.12);
      transform: translateY(-3px);
    }
    .conf-card.status-upcoming {
      border-color: rgba(201,162,39,0.4);
      box-shadow: 0 3px 18px rgba(201,162,39,0.1);
    }
    .conf-card.status-upcoming:hover {
      border-color: #c9a227;
      box-shadow: 0 10px 36px rgba(201,162,39,0.16);
    }
    .conf-card.status-ongoing {
      border-color: rgba(46,111,196,0.4);
      box-shadow: 0 3px 18px rgba(46,111,196,0.1);
    min-height: 345px;
    }
    .conf-card.status-ongoing:hover {
      border-color: #2e6fc4;
      box-shadow: 0 10px 36px rgba(46,111,196,0.16);
    }
    .conf-card.status-ended {
      border-color: var(--border);
    }

    .conf-image {
      height: 100%;
      min-height: 200px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      color: rgba(255,255,255,0.4);
      position: relative;
      overflow: hidden;
    }
    .conf-image::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image:
        repeating-linear-gradient(45deg, rgba(255,255,255,0.03) 0px, rgba(255,255,255,0.03) 1px, transparent 1px, transparent 40px),
        repeating-linear-gradient(-45deg, rgba(255,255,255,0.03) 0px, rgba(255,255,255,0.03) 1px, transparent 1px, transparent 40px);
    }
    .status-upcoming .conf-image { background: linear-gradient(135deg, #6b3d00, #c9a227); }
    .status-ongoing .conf-image { background: linear-gradient(135deg, #1a3a6e, #2e6fc4); }
    .status-ended .conf-image { background: linear-gradient(135deg, #2d3748, #4a5568); }
    .conf-image-label {
      font-size: 0.72rem;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.1em;
      color: rgba(255,255,255,0.5);
    }

    .conf-content {
      padding: 22px 26px;
      display: flex;
      flex-direction: column;
    }
    .conf-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-bottom: 10px;
    }
    .conf-badge {
      display: inline-block;
      font-size: 0.65rem;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      padding: 3px 10px;
      border-radius: 10px;
    }
    .badge-international { background: rgba(46,111,196,0.1); color: var(--accent); }
    .badge-domestic { background: rgba(201,162,39,0.15); color: #a07d1a; }
    .badge-workshop { background: rgba(45,138,94,0.1); color: #2d8a5e; }
    .badge-upcoming { background: rgba(201,162,39,0.2); color: #8a6d1b; }
    .badge-ongoing { background: rgba(46,111,196,0.15); color: #2e6fc4; }
    .badge-ended { background: rgba(108,122,149,0.1); color: var(--text-light); }

    .conf-title {
      font-size: 1.05rem;
      font-weight: 700;
      color: var(--text-dark);
      margin-bottom: 8px;
      line-height: 1.4;
    }
    .conf-title:hover { color: var(--accent); }

    .conf-details {
      display: flex;
flex-direction: column;
      flex-wrap: wrap;
      gap: 12px;
      font-size: 0.78rem;
      color: var(--text-light);
      margin-bottom: 10px;
      line-height: 1.6;

    }
    .conf-details span { display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0; }

    .conf-desc {
      font-size: 0.82rem;
      color: var(--text-medium);
      line-height: 1.6;
      margin-bottom: 14px;
      flex: 1;
  display: -webkit-box;
  -webkit-line-clamp: 6; /* 限制在一个块元素显示的文本的行数 */
  -webkit-box-orient: vertical;
  overflow: hidden; /* 隐藏超出容器的部分 */
  text-overflow: ellipsis; /* 显示省略符号来代表被修剪的文本 */
    }

    .conf-organizers {
      display: flex;
      align-items: center;
      gap: 6px;
      margin-bottom: 12px;
      flex-wrap: wrap;
    }
    .conf-organizers-label {
      font-size: 0.7rem;
      font-weight: 600;
      color: var(--text-light);
    }
    .org-logo {
      width: auto;
      min-width: 28px;
      height: 28px;
      background: var(--off-white);
      border-radius: 5px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 0.6rem;
      font-weight: 700;
      color: var(--text-medium);
      border: 1px solid var(--border);
      padding: 0 8px;
      white-space: nowrap;
    }

    .conf-footer {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding-top: 12px;
      border-top: 1px dashed var(--border);
    }
    .conf-stats {
      display: flex;
      gap: 14px;
      font-size: 0.72rem;
      color: var(--text-light);
    }
    .conf-stats span { display: flex; align-items: center; gap: 4px; }
    .conf-stats .highlight { color: var(--accent); font-weight: 600; }
    .conf-btn {
      font-size: 0.75rem;
      font-weight: 600;
      color: #c9a227;
      padding: 7px 16px;
      border: 1.5px solid #c9a227;
      border-radius: 18px;
      transition: all 0.3s;
      text-decoration: none;
    }
    .conf-btn:hover {
      background: #c9a227;
      color: #0a1f3d;
    }
    .status-ongoing .conf-btn {
      color: #2e6fc4;
      border-color: #2e6fc4;
    }
    .status-ongoing .conf-btn:hover {
      background: #2e6fc4;
      color: #fff;
    }

    .conf-meta,
    .conf-organizers,
    .conf-footer,
    .upcoming-btn {
      display: none;
    }
    .conf-details span:nth-child(n+3),
    .upcoming-meta span:nth-child(n+3) {
      display: none;
    }

    /* ===== PAGINATION ===== */
    .pagination {
      display: flex;
      justify-content: center;
      align-items: center;
      gap: 8px;
      margin-top: 44px;
      padding-top: 28px;
      border-top: 1px solid var(--border);
    }
    .pagination-btn {
      min-width: 40px;
      height: 40px;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 10px;
      font-size: 0.85rem;
      font-weight: 600;
      cursor: pointer;
      transition: all 0.25s;
      border: 1px solid var(--border);
      background: #fff;
      color: var(--text-medium);
    }
    .pagination-btn:hover:not(:disabled) {
      border-color: var(--accent);
      color: var(--accent);
      background: rgba(46,111,196,0.05);
    }
    .pagination-btn.active {
      background: var(--accent);
      border-color: var(--accent);
      color: #fff;
    }
    .pagination-btn:disabled {
      opacity: 0.4;
      cursor: not-allowed;
    }
    .pagination-btn svg {
      width: 18px;
      height: 18px;
    }

    /* Codex desktop refinement */
    @media (min-width: 901px) {
      .page-banner--events {
        min-height: 410px;
        padding: 96px 0 86px;
      }
      .hero-content {
        gap: 76px;
        align-items: center;
      }
      .hero-title {
        font-size: clamp(3.25rem, 5.2vw, 4.85rem);
        line-height: 1.03;
        letter-spacing: 0;
      }
      .banner-subtitle {
        max-width: 820px;
        font-size: 1.14rem;
        line-height: 1.84;
      }
      .hero-stats {
        gap: 16px;
      }
      .hero-stat {
        min-width: 132px;
        min-height: 118px;
        padding: 24px 22px;
        border-radius: 8px;
      }
      .hero-stat .num {
        font-size: 2.35rem;
        color: #fff;
      }
      .hero-stat .lbl {
        font-size: 0.8rem;
        color: rgba(255,255,255,0.7);
      }
      .events-section {
        padding: 92px 0 110px;
      }
      .upcoming-banner {
        min-height: 270px;
        padding: 50px 54px;
        border-radius: 8px;
        gap: 36px;
      }
      .upcoming-title {
        font-size: 2.1rem;
        line-height: 1.2;
      }
      .upcoming-desc {
        font-size: 1.06rem;
        line-height: 1.75;
      }
      .upcoming-label {
        font-size: 0.82rem;
        letter-spacing: 0.08em;
      }
      .section-heading h2 {
        font-size: 2.45rem;
      }
      .section-heading p {
        font-size: 1.08rem;
      }
      .conf-list {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 28px;
      }
      .conf-card {
        grid-template-columns: 190px minmax(0, 1fr);
        min-height: 320px;
        border-radius: 8px;
      }
      .conf-image {
        min-height: 320px;
        padding: 22px 18px;
        background:
          radial-gradient(circle at 50% 28%, rgba(0,149,179,0.16), transparent 42%),
          linear-gradient(180deg, #f7fafc, #eef4f7);
        border-right: 1px solid #e5edf3;
        justify-content: flex-start;
      }
      .conf-image::before {
        display: none;
      }
      .conf-image img {
        width: min(150px, 100%);
        aspect-ratio: 210 / 297;
        height: auto;
        object-fit: cover;
        border-radius: 6px;
        box-shadow: 0 16px 34px rgba(21,32,53,0.15);
      }
      .conf-image:has(img) .conf-image-label {
        display: none;
      }
      .conf-image-label {
        position: relative;
        width: min(150px, 100%);
        aspect-ratio: 210 / 297;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 16px;
        border-radius: 3px;
        border: 0;
        background:
          linear-gradient(180deg, rgba(255,255,255,0.9), rgba(255,255,255,0.72)),
          radial-gradient(circle at 42% 30%, rgba(0,149,179,0.24), transparent 34%),
          radial-gradient(circle at 70% 68%, rgba(10,42,94,0.18), transparent 42%);
        box-shadow: 0 18px 38px rgba(21,32,53,0.18);
        color: #0a2a5e;
        font-size: 0.84rem;
        line-height: 1.45;
        text-align: center;
        letter-spacing: 0.06em;
        overflow: hidden;
        backdrop-filter: blur(10px);
      }
      .conf-image-label::before {
        content: "";
        position: absolute;
        inset: 0;
        background: inherit;
        filter: blur(14px);
        transform: scale(1.08);
        opacity: 0.75;
      }
      .conf-image-label {
        isolation: isolate;
      }
      .conf-image-label::after {
        content: "A4 Poster";
        position: absolute;
        bottom: 15px;
        left: 50%;
        transform: translateX(-50%);
        color: #007a99;
        font-size: 0.62rem;
        font-weight: 900;
        letter-spacing: 0.06em;
        z-index: 1;
      }
      .conf-content {
        padding: 30px 28px 28px;
        justify-content: flex-start;
      }
      .conf-title {
        font-size: 1.22rem;
        line-height: 1.36;
      }
      .conf-desc {
        font-size: 0.95rem;
        line-height: 1.7;
        flex: 0 0 auto;
        margin-bottom: 0;
      }
      .conf-details {
        gap: 8px;
        margin-bottom: 18px;
      }
      .conf-details span,
      .conf-detail {
        font-size: 0.96rem;
      }
      .pagination {
        margin-top: 56px;
      }
      .pagination-btn {
        min-width: 46px;
        height: 46px;
        border-radius: 8px;
      }
    }

    /* ===== RESPONSIVE ===== */
    @media (max-width: 900px) {
      .hero-content { flex-direction: column; }
      .hero-stats { width: 100%; justify-content: flex-start; }
      .upcoming-banner { grid-template-columns: 1fr; }
      .upcoming-btn { width: 100%; text-align: center; }
    }
    @media (max-width: 768px) {
      .conf-card { grid-template-columns: 1fr; }
      .conf-image { min-height: 140px; }
    }
    @media (max-width: 600px) {
      .hero-stat { min-width: 70px; padding: 12px 14px; }
      .hero-stat .num { font-size: 1.3rem; }
    }
    @media (max-width: 480px) {
      .pagination { gap: 4px; }
      .pagination-btn { min-width: 36px; height: 36px; font-size: 0.8rem; }
    }

    /* Unified poster treatment across desktop and mobile */
    .conf-list .conf-card .conf-image {
      background:
        radial-gradient(circle at 50% 28%, rgba(0,149,179,0.16), transparent 42%),
        linear-gradient(180deg, #f7fafc, #eef4f7);
      border-color: #e5edf3;
      color: #0a2a5e;
    }
    .conf-list .conf-card .conf-image::before {
      display: none;
    }
    .conf-list .conf-card .conf-image img {
      width: min(150px, 100%);
      aspect-ratio: 210 / 297;
      height: auto;
      object-fit: cover;
      border-radius: 6px;
      box-shadow: 0 16px 34px rgba(21,32,53,0.15);
    }
    .conf-list .conf-card .conf-image:has(img) .conf-image-label {
      display: none;
    }
    .conf-list .conf-card .conf-image-label {
      position: relative;
      width: min(150px, 100%);
      aspect-ratio: 210 / 297;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 16px;
      border: 0;
      border-radius: 3px;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.9), rgba(255,255,255,0.72)),
        radial-gradient(circle at 42% 30%, rgba(0,149,179,0.24), transparent 34%),
        radial-gradient(circle at 70% 68%, rgba(10,42,94,0.18), transparent 42%);
      box-shadow: 0 18px 38px rgba(21,32,53,0.18);
      color: #0a2a5e;
      font-size: 0.84rem;
      font-weight: 800;
      line-height: 1.45;
      letter-spacing: 0.06em;
      text-align: center;
      overflow: hidden;
      isolation: isolate;
    }
    .conf-list .conf-card .conf-image-label::before {
      content: "";
      position: absolute;
      inset: 0;
      background: inherit;
      filter: blur(14px);
      transform: scale(1.08);
      opacity: 0.75;
      z-index: -1;
    }
    .conf-list .conf-card .conf-image-label::after {
      content: "A4 Poster";
      position: absolute;
      bottom: 15px;
      left: 50%;
      transform: translateX(-50%);
      color: #007a99;
      font-size: 0.62rem;
      font-weight: 900;
      letter-spacing: 0.06em;
      white-space: nowrap;
    }

    @media (max-width: 768px) {
      .conf-list .conf-card .conf-image {
        min-height: 260px;
        padding: 24px;
        align-items: center;
        justify-content: center;
      }
      .conf-list .conf-card .conf-image-label {
        width: min(150px, 52vw);
      }
    }