/* ============================================================
   CAVUNET — page-program.css  (프로그램/이벤트)
   ============================================================ */
@import url('pages-common.css');

.cv-page-hero--program { background: linear-gradient(135deg, #1A1A1A 0%, #2E2016 100%); }

/* -- 프로그램 그리드 랩 -- */
.cv-program-grid-wrap { padding: 48px 0 80px; }

.cv-program-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 24px;
}

/* -- 프로그램 카드 -- */
.cv-program-card {
  background: var(--cv-white);
  border: 1px solid var(--cv-border);
  border-radius: var(--cv-radius-lg);
  overflow: hidden;
  transition: transform 0.22s var(--cv-ease), box-shadow 0.22s var(--cv-ease);
  position: relative;
}

.cv-program-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--cv-shadow-md);
}

.cv-program-card--open {
  border-color: rgba(200, 90, 60, 0.25);
}

.cv-program-card--closed {
  opacity: 0.72;
}

.cv-program-card__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

/* 썸네일 */
.cv-program-card__thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--cv-parchment-dk);
  flex-shrink: 0;
}

.cv-program-card__img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s var(--cv-ease);
}

.cv-program-card:hover .cv-program-card__img { transform: scale(1.04); }

.cv-program-card__no-img {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--cv-parchment-dk) 0%, var(--cv-border) 100%);
}

.cv-program-card__type-bg {
  font-family: var(--cv-font-serif);
  font-size: 22px;
  color: var(--cv-warm-gray);
  opacity: 0.6;
}

/* 상태/유형 뱃지 레이어 */
.cv-program-card__status-wrap {
  position: absolute;
  top: 12px; left: 12px;
  display: flex; gap: 6px;
  z-index: 2;
}

/* 상태 뱃지 */
.cv-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  backdrop-filter: blur(8px);
}

.cv-status-badge--open {
  background: rgba(200, 90, 60, 0.92);
  color: var(--cv-white);
}

.cv-status-badge--closed {
  background: rgba(50, 50, 50, 0.75);
  color: rgba(255,255,255,0.75);
}

.cv-status-pulse {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--cv-white);
  display: inline-block;
  animation: cv-status-pulse 1.5s ease-in-out infinite;
}

@keyframes cv-status-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(0.6); }
}

.cv-type-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 500;
  background: rgba(245,243,238,0.90);
  color: var(--cv-charcoal);
  backdrop-filter: blur(8px);
}

/* 카드 본문 */
.cv-program-card__body {
  padding: 18px 20px 20px;
  display: flex;
  flex-direction: column;
  flex: 1;
  border-top: 1px solid var(--cv-border);
}

.cv-program-card__title {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--cv-charcoal);
  margin: 0 0 8px;
}

.cv-program-card__excerpt {
  font-size: 13px;
  color: var(--cv-warm-gray);
  line-height: 1.6;
  margin: 0 0 14px;
  flex: 1;
}

/* 날짜 (Monospace) */
.cv-program-card__date {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px 10px;
  background: var(--cv-parchment);
  border-radius: var(--cv-radius);
  border: 1px solid var(--cv-border);
  margin-bottom: 12px;
  color: var(--cv-warm-gray);
}

.cv-program-card__date .cv-date-mono {
  font-size: 12px;
}

/* 추가 정보 */
.cv-program-card__info {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.cv-info-item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--cv-warm-gray);
}

/* CTA */
.cv-program-card__cta { margin-top: auto; }

.cv-btn-apply {
  display: inline-block;
  padding: 8px 16px;
  background: var(--cv-charcoal);
  color: var(--cv-white);
  border-radius: var(--cv-radius);
  font-size: 13px;
  font-weight: 500;
  transition: background 0.15s;
}

.cv-program-card:hover .cv-btn-apply {
  background: var(--cv-coral);
}

/* 모집중 카드 상단 강조선 */
.cv-program-card--open::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--cv-coral), #E88060);
  border-radius: var(--cv-radius-lg) var(--cv-radius-lg) 0 0;
}

/* 숨김 */
.cv-program-card.cv-hidden { display: none; }

/* 반응형 */
@media (max-width: 1024px) {
  .cv-program-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
}

@media (max-width: 768px) {
  .cv-program-grid-wrap { padding: 32px 0 60px; }
  .cv-program-grid { grid-template-columns: 1fr; gap: 16px; }
  .cv-program-card__thumb { aspect-ratio: 4 / 3; }
}
