/* ========= 그리드 ========= */
.vny-deals-grid{
  display:grid; gap:16px;
  grid-template-columns:repeat(4, minmax(0,1fr));
}
@media (max-width:1200px){ .vny-deals-grid{ grid-template-columns:repeat(3,1fr) } }
@media (max-width:768px){  .vny-deals-grid{ grid-template-columns:repeat(2,1fr) } }
/* 480px 이하에서도 2열 유지 */
@media (max-width:480px){  .vny-deals-grid{ grid-template-columns:repeat(2,1fr) } }

/* ========= 카드 공통 ========= */
.vny-deal-card{ border:1px solid #eee; border-radius:12px; overflow:hidden; background:#fff; }
.vny-deal-open{ all:unset; cursor:pointer; display:block; }

/* 썸네일: PC/모바일 모두 1:1 고정 */
.vny-deal-thumb{ position:relative; overflow:hidden; aspect-ratio:1/1; }
.vny-deal-thumb img{
  width:100%; height:100%;
  object-fit:cover; object-position:center;
  display:block; transition:transform .25s;
}
.vny-deal-open:hover .vny-deal-thumb img{ transform:scale(1.03); }

/* 할인 뱃지 */
.vny-deal-badge{
  position:absolute; left:12px; top:12px;
  background:#111; color:#fff; font-size:12px; padding:6px 10px; border-radius:999px;
}

/* 기간/상태 한 줄 */
.vny-deal-meta-line{
  display:flex; align-items:center; gap:8px;
  padding:10px 14px; border-top:1px solid #f0f0f0; background:#fff;
  font-size:13px; line-height:1.3; color:#666;
}
.vny-deal-status{
  display:inline-block; padding:4px 8px; border-radius:999px;
  font-size:12px; font-weight:700; border:1px solid transparent;
}
.vny-status-ongoing{  background:#eef7ee; color:#1e7a1e; border-color:#cfe8cf; }
.vny-status-ended{    background:#f2f2f2; color:#888;   border-color:#e0e0e0; text-decoration:line-through; }
.vny-status-upcoming{ background:#eef3ff; color:#2d56c8; border-color:#d6e0ff; }
.vny-deal-period-inline{ color:#888; }

/* 텍스트 영역 */
.vny-deal-info{ padding:12px 14px; }
.vny-deal-info h3{ font-size:16px; line-height:1.35; margin:0 0 6px; font-weight:700; }
.vny-deal-brief{ margin:0; color:#666; font-size:14px; }

/* 종료 오버레이 */
.vny-deal-ended{
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.55); color:#fff; font-weight:800; font-size:16px; letter-spacing:.08em;
  opacity:0; transition:opacity .2s; text-shadow:0 1px 2px rgba(0,0,0,.5); pointer-events:none;
}
.vny-deal-card.is-ended .vny-deal-ended{ opacity:1; }
.vny-deal-card.is-ended .vny-deal-thumb img{ filter:grayscale(100%) brightness(.65); }
.vny-deal-card.is-ended .vny-deal-badge{ opacity:.6; }

/* ========= 모달 공통 ========= */
.vny-deal-modal{
  position:fixed; inset:0; width:100vw; height:100dvh;
  z-index:100000; overscroll-behavior:contain;
}
.vny-deal-modal[aria-hidden="true"]{ display:none; }
.vny-deal-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.55); }
.vny-deal-close{
  position:absolute; right:12px; top:8px;
  border:0; background:transparent; font-size:28px; cursor:pointer; line-height:1; z-index:100002;
}

/* 데스크톱 모달: 중앙 배치 */
.vny-deal-dialog{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:min(960px, 90vw); max-height:90dvh;
  background:#fff; border-radius:14px; overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.2); z-index:100001;
}
.vny-deal-dialog-inner{ display:grid; grid-template-columns:1fr 1fr; }
.vny-deal-dialog-left{ aspect-ratio:1/1; background:#f6f7f8; }
.vny-deal-dialog-left img{ width:100%; height:100%; object-fit:cover; display:block; }
.vny-deal-dialog-right{ padding:24px; overflow:auto; }
.vny-deal-period{ color:#888; font-size:13px; margin:8px 0 16px; }
.vny-deal-btn{ display:inline-block; padding:12px 16px; border-radius:10px; background:#111; color:#fff; text-decoration:none; font-weight:700; }

/* 모바일 모달: '컴팩트'(내용만큼) */
@media (max-width:768px){
  .vny-deal-dialog{
    position:fixed; left:50%; top:10dvh; transform:translateX(-50%);
    width:min(560px,96vw); height:auto; max-height:calc(100dvh - 20dvh);
    border-radius:12px; overflow:hidden; display:block;
  }
  .vny-deal-dialog-inner{ display:block; max-height:inherit; overflow:auto; -webkit-overflow-scrolling:touch; }
  .vny-deal-dialog-left{ aspect-ratio:1/1; }
  .vny-deal-dialog-left img{ height:100% !important; }
  .vny-deal-dialog-right{ padding:16px 18px; overflow:visible; }
}

/* 스크롤 잠금(모달 열릴 때) */
html.vny-modal-open, body.vny-modal-open{ overflow:hidden; height:100%; }

/* ========= 모바일 카드 트림: 기간+제목만, 제목 2줄 ========= */
@media (max-width:768px){
  /* 진행상태/요약 숨김 → 기간 + 제목만 */
  .vny-deal-status{ display:none !important; }
  .vny-deal-brief{ display:none !important; }

  /* 기간 라인: 한 줄 */
  .vny-deal-meta-line{ padding:8px 12px; font-size:12px; line-height:1.3; }
  .vny-deal-period-inline{
    display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }

  /* 제목: 정확히 2줄로 고정(크로스브라우저 폴백 포함) */
  .vny-deal-card .vny-deal-info{ padding:10px 12px; }
  .vny-deal-card .vny-deal-info h3,
  .vny-deal-card .vny-deal-info h3 a{
    font-size:14px !important; line-height:1.4 !important; margin:0 !important;
    /* 폴백(모든 브라우저에서 2줄 높이로 자름) */
    height: calc(1.4em * 2) !important;
    overflow: hidden !important;
    /* WebKit/Blink 줄클램프(… 출력) */
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    white-space: normal !important;
    word-break: keep-all;
    text-overflow: ellipsis;
  }
}
