/* ─────────────────────────────────────────────────────────
   GZ Schedule v1.0.2 — 테이블형(무간격) + 라운드(4px) + 주말 강조
   우선순위: 제목 > 내용 > 라벨(구/신·버전·시간: 작고 은은)
   버전칩: 구=오렌지, 신=하늘색 자동 매핑
   ───────────────────────────────────────────────────────── */

.gz-wrap { max-width:1200px; margin:0 auto; }
.gz-schedule { width:100%; font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; }
.gz-wrap, .gz-schedule, .gz-schedule * { box-sizing:border-box; }
.alignfull .gz-wrap, .alignwide .gz-wrap { max-width:1200px !important; margin-left:auto !important; margin-right:auto !important; }

/* 테이블(위/아래) */
.gz-bar--combo-top7,
.gz-cells--top7,
.gz-bar--combo-bottom7,
.gz-cells--bottom7 {
  display:grid; grid-template-columns:repeat(7,1fr); gap:0;
}

/* 테이블 사이 배너 */
.gz-between-weeks { margin:10px 0; }
.gz-between-weeks > * { display:block; width:100%; }

/* 공통 박스: 라운드 4px */
.gz-combo, .gz-day, .gz-item { border-radius:4px; }
.gz-combo, .gz-day {
  border:1px solid #e5e7eb; padding:6px; background:#fff;
}
/* 경계선 공유 */
.gz-bar--combo-top7 .gz-combo, .gz-bar--combo-bottom7 .gz-combo { border-bottom:0; }
.gz-cells--top7 .gz-day, .gz-cells--bottom7 .gz-day { border-top:0; }
.gz-bar--combo-top7  .gz-combo:not(:last-child),
.gz-cells--top7      .gz-day:not(:last-child),
.gz-bar--combo-bottom7 .gz-combo:not(:last-child),
.gz-cells--bottom7     .gz-day:not(:last-child) { border-right:0; }

/* 바(요일+날짜) */
.gz-combo{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  min-height:44px;
}
.gz-combo__wd{ font-size:11px; font-weight:600; color:#475569; line-height:1; }
.gz-combo__dt{ font-size:16px; font-weight:800; color:#111; line-height:1.1; margin-top:2px; }
.gz-bar--combo-top7    .gz-combo { background:#e6f0ff; }
.gz-bar--combo-bottom7 .gz-combo { background:#efe9ff; }

/* 주말: 바 붉은톤, 셀 연노랑 */
.gz-bar--combo .gz-combo.is-weekend{
  background:#fecaca !important;
  border-color: rgba(239,68,68,0.4) !important;
}
.gz-bar--combo .gz-combo.is-weekend .gz-combo__wd,
.gz-bar--combo .gz-combo.is-weekend .gz-combo__dt { color:#7f1d1d !important; }

.gz-day{
  display:flex; flex-direction:column; gap:4px; min-height:110px;
}
.gz-cells--top7    .gz-day.is-weekend,
.gz-cells--bottom7 .gz-day.is-weekend { background:#fff4d6 !important; }

/* 오늘 강조(안쪽) */
.gz-bar--combo .gz-combo.is-today,
.gz-day.is-today { outline:2px solid #60a5fa; outline-offset:-1px; }

/* 카드 */
.gz-item{
  border:1px solid #e5e7eb;
  background:#fff;
  text-decoration:none;
  position:relative;
  text-align:center; /* 제목/내용 센터 */
}

/* 라벨바 — 작고 은은(투명), 살짝 아래로 */
.gz-item__meta{
  display:flex; align-items:center; justify-content:center;
  gap:4px;
  height:auto;
  background: transparent;
  padding:2px 4px 0;
  margin-top:4px;
  margin-bottom:4px;
  border-radius:4px 4px 0 0;
}

/* 라벨 칩 공통(작게) */
.gz-badge, .gz-version, .gz-time{
  display:inline-flex; align-items:center; justify-content:center;
  height: 12px; padding:0 3px;
  font-size:8px; line-height:1; font-weight:700;
  border-radius:3px;
  opacity:.92;
}

/* 구/신 배지 */
.gz-badge.is-old{ background:#fb923c; color:#fff; }      /* 오렌지-400 */
.gz-badge.is-new{ background:#38bdf8; color:#0b1221; }   /* 스카이-400 */

/* 버전칩 — 구/신에 맞춰 자동 색상 */
.gz-version { border:1px solid rgba(0,0,0,.08); }
.gz-version.is-old{ background:#ffedd5; color:#7c2d12; }  /* 오렌지-100계열 */
.gz-version.is-new{ background:#dbeafe; color:#1e3a8a; }  /* 스카이-100계열 */

/* 시간 범위 칩 (예: 18~20) */
.gz-time{
  background:#f4f4f5; color:#111;
  border:1px solid rgba(0,0,0,.08);
}

/* 본문: 제목 > 내용 */
.gz-item__title  { margin:6px 4px 2px; font-weight:900; font-size:15px; letter-spacing:-0.2px; }
.gz-item__content{ margin:0 4px 6px;  font-size:13px; line-height:1.32; color:#111; }

/* 진한 카드에서 시간칩 대비 보강 */
.gz-item.color-black  .gz-time,
.gz-item.color-purple .gz-time,
.gz-item.color-red    .gz-time,
.gz-item.color-special .gz-time {
  background: rgba(255,255,255,.88); color:#111; border-color: rgba(0,0,0,.1);
}

/* 카드 배경 프리셋 */
.gz-item.color-sky    { background:#e8f5ff; color:#111; }
.gz-item.color-black  { background:#111827; color:#fff; }
.gz-item.color-purple { background:#6d28d9; color:#fff; }
.gz-item.color-red    { background:#ef4444; color:#fff; }

/* 스페셜(노랑→주황→빨강→노랑 그라데이션) */
@keyframes gzGradient {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
.gz-item.color-special{
  background: linear-gradient(270deg,
    #facc15,  /* 노랑 (yellow-400) */
    #f97316,  /* 주황 (orange-500) */
    #dc2626,  /* 빨강 (red-600) */
    #facc15   /* 다시 노랑 */
  );
  background-size: 600% 600%;
  animation: gzGradient 5s ease infinite; /* 3초 주기로 빠르게 */
  color:#111 !important; /* 글자색은 검정 */
}


/* 링크 컬러 상속 */
.gz-item, .gz-item * { color:inherit; }

/* ===== 모바일 7칸 고정 Compact 모드 (no horizontal scroll) ===== */
@media (max-width: 768px){
  /* 0) 레이아웃은 7칸 유지 */
  .gz-schedule{ overflow-x:hidden; }
  .gz-bar--combo-top7,
  .gz-cells--top7,
  .gz-bar--combo-bottom7,
  .gz-cells--bottom7{
    grid-template-columns: repeat(7, 1fr) !important; /* 7칸 고정 */
    grid-auto-flow: initial !important;               /* 가로 스크롤 방지 */
    grid-auto-columns: auto !important;
  }

  /* 1) 바(요일/날짜) 초소형 */
  .gz-combo{ min-height:34px; padding:4px 2px; border-radius:4px; }
  .gz-combo__wd{ font-size:10px; }
  .gz-combo__dt{ font-size:12px; }

  /* 2) 셀 여백/간격 최소화 */
  .gz-day{ padding:4px 2px; gap:3px; border-radius:4px; }

  /* 3) 카드 컴팩트화 */
  .gz-item{ border-radius:4px; }
  .gz-item__meta{
    margin:3px 2px; padding:1px 2px 0;
    gap:3px; flex-wrap:wrap;        /* 라벨이 좁을 때 줄바꿈 허용 */
  }
  .gz-badge, .gz-version, .gz-time{
    height:14px; font-size:9px; padding:0 4px; border-radius:2px;
  }
  .gz-item__title{
    font-size:12px; margin:3px 2px 1px; line-height:1.2; font-weight:900;
    word-break:keep-all; overflow-wrap:anywhere;
  }
  .gz-item__content{
    font-size:10px; margin:0 2px 4px; line-height:1.28;
    word-break:keep-all; overflow-wrap:anywhere;
    display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; /* 최대 3줄 */
    overflow:hidden;
  }

  /* 4) 테두리 과다 강조 완화(좁은 화면에서 눈 피로 줄이기) */
  .gz-combo, .gz-day, .gz-item{ border-color: rgba(0,0,0,.12); }
}

/* 초소형(≤380px): 더 압축 */
@media (max-width: 380px){
  .gz-combo{ min-height:30px; }
  .gz-combo__wd{ font-size:9px; }
  .gz-combo__dt{ font-size:11px; }
  .gz-badge, .gz-version, .gz-time{ height:13px; font-size:8.5px; }
  .gz-item__title{ font-size:11px; }
  .gz-item__content{ -webkit-line-clamp:2; } /* 내용 2줄로 더 줄임 */
}

/* ===== 모바일 초컴팩트 7칸 고정 (todaycp 스타일) ===== */
@media (max-width: 768px){

  /* 0) 7칸 그리드 유지 (가로 스크롤 금지) */
  .gz-schedule{ overflow-x:hidden; }
  .gz-bar--combo-top7,
  .gz-cells--top7,
  .gz-bar--combo-bottom7,
  .gz-cells--bottom7{
    grid-template-columns: repeat(7, 1fr) !important;
    grid-auto-flow: initial !important;
    grid-auto-columns: auto !important;
  }

  /* 1) 요일/날짜 바 아주 얇게 */
  .gz-combo{ min-height:28px; padding:2px 2px; border-radius:4px; }
  .gz-combo__wd{ font-size:9.5px; line-height:1; }
  .gz-combo__dt{ font-size:11px; line-height:1; margin-top:1px; }

  /* 2) 셀 간격 최소화 */
  .gz-day{ padding:2px 1px; gap:2px; border-radius:4px; min-height:auto; }

  /* 3) 카드 초컴팩트: 메타(구/신/버전/시간)는 좌상단 '오버레이',
        제목만 1~2줄 보이게, 내용은 모바일에서 숨김 */
  .gz-item{
    border-radius:4px;
    padding:0;
    margin:0;
    position:relative; /* 오버레이 배치용 */
  }

  /* 메타 오버레이 */
  .gz-item__meta{
    position:absolute; top:2px; left:2px;
    background:transparent;
    gap:2px;
    padding:0; margin:0;
    height:auto; border-radius:0;
    display:flex; align-items:center; justify-content:flex-start;
  }
  .gz-badge, .gz-version, .gz-time{
    height:10px; font-size:8px; padding:0 3px; border-radius:2px;
    opacity:.95;
  }

  /* 제목: 메타가 겹치지 않도록 위 여백 확보, 1~2줄로 자르기 */
  .gz-item__title{
    margin:14px 2px 2px;           /* 오버레이 높이만큼 위로 여백 */
    font-size:11px; line-height:1.18; font-weight:900;
    display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2;
    overflow:hidden; word-break:keep-all; overflow-wrap:anywhere;
  }

  /* 내용은 모바일에선 숨김(2번째 스샷 느낌) */
  .gz-item__content{ display:none !important; }

  /* 라벨 색/보더 살짝 연하게 (좁은 화면 눈 피로↓) */
  .gz-combo, .gz-day, .gz-item{ border-color:rgba(0,0,0,.12); }
  .gz-time{ border-color:rgba(0,0,0,.1); }
}

/* 초소형 기기(≤380px): 더 압축 */
@media (max-width: 380px){
  .gz-combo{ min-height:26px; }
  .gz-combo__wd{ font-size:9px; }
  .gz-combo__dt{ font-size:10.5px; }
  .gz-badge, .gz-version, .gz-time{ height:11px; font-size:8px; padding:0 2.5px; }
  .gz-item__title{ font-size:10.5px; -webkit-line-clamp:2; }
}

/* ===== .gz-compact 강제 컴팩트 모드 (미디어쿼리 우회) ===== */
.gz-schedule.gz-compact{
  overflow-x:hidden;
}
.gz-schedule.gz-compact .gz-bar--combo-top7,
.gz-schedule.gz-compact .gz-cells--top7,
.gz-schedule.gz-compact .gz-bar--combo-bottom7,
.gz-schedule.gz-compact .gz-cells--bottom7{
  grid-template-columns: repeat(7, 1fr) !important;
  grid-auto-flow: initial !important;
  grid-auto-columns: auto !important;
}

/* todaycp 스타일 초컴팩트 */
.gz-schedule.gz-compact .gz-combo{ min-height:28px; padding:2px 2px; border-radius:4px; }
.gz-schedule.gz-compact .gz-combo__wd{ font-size:9.5px; line-height:1; }
.gz-schedule.gz-compact .gz-combo__dt{ font-size:11px; line-height:1; margin-top:1px; }

.gz-schedule.gz-compact .gz-day{ padding:2px 1px; gap:2px; border-radius:4px; min-height:auto; }

.gz-schedule.gz-compact .gz-item{
  border-radius:4px; padding:0; margin:0; position:relative;
}

.gz-schedule.gz-compact .gz-item__meta{
  position:absolute; top:2px; left:2px;
  background:transparent; gap:2px; padding:0; margin:0; height:auto; border-radius:0;
  display:flex; align-items:center; justify-content:flex-start;
}
.gz-schedule.gz-compact .gz-badge,
.gz-schedule.gz-compact .gz-version,
.gz-schedule.gz-compact .gz-time{
  height:12px; font-size:8.5px; padding:0 3px; border-radius:2px; opacity:.95;
}

.gz-schedule.gz-compact .gz-item__title{
  margin:14px 2px 2px;
  font-size:11px; line-height:1.18; font-weight:900;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2;
  overflow:hidden; word-break:keep-all; overflow-wrap:anywhere;
}
.gz-schedule.gz-compact .gz-item__content{ display:none !important; }

.gz-schedule.gz-compact .gz-combo,
.gz-schedule.gz-compact .gz-day,
.gz-schedule.gz-compact .gz-item{ border-color:rgba(0,0,0,.12); }
.gz-schedule.gz-compact .gz-time{ border-color:rgba(0,0,0,.1); }

/* 초소형 폭 보정 */
@media (max-width: 380px){
  .gz-schedule.gz-compact .gz-combo{ min-height:26px; }
  .gz-schedule.gz-compact .gz-combo__wd{ font-size:9px; }
  .gz-schedule.gz-compact .gz-combo__dt{ font-size:10.5px; }
  .gz-schedule.gz-compact .gz-badge,
  .gz-schedule.gz-compact .gz-version,
  .gz-schedule.gz-compact .gz-time{ height:11px; font-size:8px; padding:0 2.5px; }
  .gz-schedule.gz-compact .gz-item__title{ font-size:10.5px; -webkit-line-clamp:2; }
}

/* === 모바일에서도 내용 표시(칸이 커져도 OK) === */
@media (max-width: 768px){
  /* 오버레이 라벨 공간 확보 + 제목/내용 여백 정리 */
  .gz-item__title{
    margin-top:16px;            /* 라벨 오버레이 피해서 조금 더 띄움 */
    margin-left:3px; margin-right:3px;
  }

  /* 내용을 강제로 보이게 (이전에 넣었던 display:none !important 무력화) */
  .gz-item__content{
    display:block !important;   /* ← 핵심 */
    margin:2px 3px 6px;
    font-size:11px;
    line-height:1.34;
    color:#111;
    word-break:keep-all;
    overflow-wrap:anywhere;

    /* 이전에 적용된 잘라내기(-webkit-line-clamp 등) 초기화 */
    -webkit-line-clamp:unset;
    -webkit-box-orient:unset;
    display:block;              /* -webkit-box 초기화 확정 */
    overflow:visible;           /* 숨기지 않음 */
  }

  /* 카드가 길어져도 보이도록 셀 최소높이 제한 해제 */
  .gz-day{ min-height:auto; }
}

/* ===== v1.0.3 content-visible hotfix ===== */
@media (max-width: 768px){
  /* 1) 어떤 규칙보다 강하게: 내용 보이기 */
  html body .gz-schedule.gz-compact .gz-item__content,
  html body .gz-schedule .gz-item__content{
    display:block !important;          /* 핵심 */
    margin:2px 3px 6px;
    font-size:11px;
    line-height:1.34;
    color:#111;
    word-break:keep-all;
    overflow-wrap:anywhere;

    /* 이전 잘라내기 초기화 */
    -webkit-line-clamp:unset;
    -webkit-box-orient:unset;
    overflow:visible;
  }

  /* 2) 라벨 오버레이와 제목 간 간격 보정 */
  html body .gz-schedule.gz-compact .gz-item__title{
    margin-top:18px;                   /* 라벨 높이만큼 확보 */
    margin-left:3px; margin-right:3px;
  }

  /* 3) 카드가 길어져도 칸이 따라 커지도록 */
  html body .gz-schedule.gz-compact .gz-day{ min-height:auto; }
}

/* === 텍스트 색상 매핑 (카드 색상별 본문/제목/내용) === */
.gz-item.color-special { color:#111 !important; }   /* 검정 */
.gz-item.color-red     { color:#fde68a !important; }/* 노랑(노란빛) */
.gz-item.color-black   { color:#ffffff !important; }/* 하양 */
.gz-item.color-purple  { color:#ffffff !important; }/* 하양 */
.gz-item.color-sky     { color:#111111 !important; }/* 검정 */

/* 제목/내용/링크도 상속 */
.gz-item.color-special .gz-item__title,
.gz-item.color-red     .gz-item__title,
.gz-item.color-black   .gz-item__title,
.gz-item.color-purple  .gz-item__title,
.gz-item.color-sky     .gz-item__title,
.gz-item.color-special .gz-item__content,
.gz-item.color-red     .gz-item__content,
.gz-item.color-black   .gz-item__content,
.gz-item.color-purple  .gz-item__content,
.gz-item.color-sky     .gz-item__content,
.gz-item.color-special a,
.gz-item.color-red     a,
.gz-item.color-black   a,
.gz-item.color-purple  a,
.gz-item.color-sky     a { color:inherit !important; }

/* === 모바일: 배지를 '흐름 배치'로 → 제목은 항상 그 아래 === */
@media (max-width: 768px){
  /* gz-compact 강제 모드에도 동일 적용 */
  .gz-schedule.gz-compact .gz-item__meta,
  .gz-schedule            .gz-item__meta{
    position:static !important;   /* 오버레이 해제 */
    padding:2px 4px !important;
    margin:2px 2px 0 !important;
    gap:3px;
    flex-wrap:wrap;
    justify-content:flex-start;
    background:transparent;
  }

  /* 제목을 배지 아래로 붙이기 */
  .gz-schedule.gz-compact .gz-item__title,
  .gz-schedule            .gz-item__title{
    margin-top:2px !important;    /* 오버레이 여백 불필요 */
  }
}
