/* admin-deploylog.css — 관리자 배포 이력 팝업  (2026-09-23 신설)
   ⛔ 색은 전부 theme.css 토큰을 쓰고, 없을 때만 되돌아갈 값을 둔다(admin.html은 라이트/다크 둘 다).
   ⚠ 모양의 정본은 이 파일이다 — JS 문자열에 스타일을 넣지 않는다(CLAUDE.md 7항). */

.adl-ov {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(15, 23, 42, .5);
  display: flex; align-items: center; justify-content: center;
  padding: 18px;
}
.adl-pop {
  width: min(680px, 100%); max-height: min(720px, 88vh);
  display: flex; flex-direction: column;
  background: var(--bg-surface-elevated, #fff);
  color: var(--text-primary, #0f172a);
  border-radius: 14px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, .3);
  font: 13px/1.55 var(--font-sans, system-ui, sans-serif);
  overflow: hidden;
}

.adl-top {
  display: flex; align-items: center; gap: 8px;
  padding: 13px 14px; border-bottom: 1px solid var(--border-subtle, #e2e8f0);
}
.adl-top b { font-size: 15px }
.adl-top em { font-style: normal; font-size: 11px; color: var(--text-tertiary, #64748b) }
.adl-x {
  margin-left: auto; border: 0; background: none; cursor: pointer;
  font-size: 15px; line-height: 1; padding: 4px 6px; border-radius: 6px;
  color: var(--text-tertiary, #64748b);
}
.adl-x:hover { background: var(--bg-sunken, #f1f5f9) }

.adl-body { padding: 12px 14px; overflow: auto; display: grid; gap: 10px }

.adl-msg { padding: 22px 6px; text-align: center; color: var(--text-tertiary, #64748b) }
.adl-msg.err { color: var(--text-danger, #b91c1c) }

.adl-card {
  border: 1px solid var(--border-subtle, #e2e8f0);
  border-radius: 10px; padding: 10px 12px;
  background: var(--bg-surface, #fff);
}
/* 마지막으로 본 것보다 새 배포 — 왼쪽에 띠 하나로만 구별한다(색 대비에 기대지 않는다) */
.adl-card.is-new { border-left: 3px solid var(--accent-indigo, #4f46e5) }

.adl-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap }
.adl-when { font-weight: 700; font-variant-numeric: tabular-nums }
.adl-topic {
  font-family: var(--font-mono, ui-monospace, monospace); font-size: 12px;
  color: var(--text-secondary, #475569); word-break: break-all;
}
/* 요약 쪽지(_bk_*/요약.txt)가 있으면 그 제목이 주제 슬러그 자리를 대신한다 */
.adl-title { font-weight: 600; color: var(--text-primary, #0f172a) }
.adl-note-body {
  margin: 6px 0 0; font-size: 12.5px; line-height: 1.6;
  color: var(--text-secondary, #475569); white-space: normal;
}
/* ⭐ 요약 두 줄 (2026-09-23 운영자 지시 「수정내용을 두줄정도로 요약해」) — 카드에서 **가장 먼저** 읽히는 줄.
   .is-auto는 요약 쪽지가 없어 파일에서 세어 만든 문장이라 한 톤 흐리게 둔다(사람이 쓴 말과 구별). */
.adl-sum {
  margin: 6px 0 0; font-size: 12.5px; line-height: 1.65;
  color: var(--text-secondary, #475569);
}
.adl-sum.is-auto { color: var(--text-tertiary, #94a3b8) }
/* 접기 — 수정 파일 목록·긴 요약. ⛔ 기본은 닫힘(details에 open을 주지 않는다) */
.adl-fold { margin-top: 6px }
.adl-fold > summary {
  cursor: pointer; font-size: 11.5px; color: var(--text-tertiary, #64748b);
  list-style: none; display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border: 1px solid var(--border-subtle, #e2e8f0); border-radius: 999px;
  background: var(--bg-sunken, #f6f8fa); min-height: 24px;
}
.adl-fold > summary::-webkit-details-marker { display: none }
.adl-fold > summary::before { content: '▸'; font-size: 10px }
.adl-fold[open] > summary::before { content: '▾' }
.adl-fold > summary:hover { color: var(--text-secondary, #475569) }
.adl-slug {
  margin-top: 5px; font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 10.5px; color: var(--text-tertiary, #94a3b8); word-break: break-all;
}
.adl-new {
  margin-left: auto; font-size: 10.5px; padding: 1px 7px; border-radius: 999px;
  background: var(--accent-indigo-bg, #eef2ff); color: var(--accent-indigo, #4f46e5);
  white-space: nowrap;
}

.adl-meta { display: flex; align-items: center; gap: 7px; margin: 5px 0 2px }
.adl-kind {
  font-size: 10.5px; padding: 1px 7px; border-radius: 999px;
  background: var(--bg-sunken, #f1f5f9); color: var(--text-secondary, #475569);
}
.adl-backend { background: #ecfdf5; color: #047857 }
.adl-frontend { background: #eff6ff; color: #1d4ed8 }
.adl-both { background: #fef3c7; color: #92400e }
.adl-n { font-size: 11px; color: var(--text-tertiary, #64748b) }

.adl-files { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 2px }
.adl-files li { font-size: 12px; display: flex; gap: 2px; min-width: 0 }
.adl-dir {
  color: var(--text-tertiary, #94a3b8); font-size: 11px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: rtl;
}
.adl-files b { font-weight: 600; white-space: nowrap }
.adl-more { margin-top: 4px; font-size: 11px; color: var(--text-tertiary, #64748b) }

.adl-foot {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 14px; border-top: 1px solid var(--border-subtle, #e2e8f0);
}
.adl-note { font-size: 11px; color: var(--text-tertiary, #64748b) }
.adl-note code { font-family: var(--font-mono, ui-monospace, monospace); font-size: 10.5px }
.adl-ok {
  margin-left: auto; border: 0; cursor: pointer;
  padding: 7px 16px; border-radius: 8px; font: inherit; font-weight: 600;
  background: var(--accent-indigo, #4f46e5); color: #fff;
}
.adl-ok:hover { filter: brightness(1.08) }

/* ⭐ 본문 칸 모드 (2026-09-23, 운영자 지시 「팝업을 닫아도 왼쪽 메뉴를 눌러서 다시 볼 수 있게」)
   칸은 셸(.adm-pane)이 스스로 스크롤한다 — 여기서 높이를 잡거나 overflow를 걸지 않는다.
   ⛔ 제목(「최근 배포」)은 셸이 칸 머리에 그린다 — 여기서 다시 적으면 두 줄이 된다. */
.adl-inline {
  font: 13px/1.55 var(--font-sans, system-ui, sans-serif);
  color: var(--text-primary, #0f172a);
  max-width: 820px;
}
.adl-inline-top {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding-bottom: 10px; border-bottom: 1px solid var(--border-subtle, #e2e8f0);
}
.adl-inline-top .adl-note { flex: 1 1 260px }
.adl-inline .adl-body { padding: 12px 0 0; overflow: visible }
.adl-inline .adl-btn[disabled] { opacity: .55; cursor: default }

/* 다시 읽기 단추 (칸 모드) */
.adl-btn {
  border: 1px solid var(--border-medium, #cbd5e1); cursor: pointer;
  padding: 5px 11px; border-radius: 8px; font: inherit; font-size: 12px;
  background: var(--bg-surface, #fff); color: var(--text-secondary, #475569);
}
.adl-btn:hover { background: var(--bg-sunken, #f1f5f9) }

/* 다크 — admin.html은 data-theme으로 바뀐다 */
:root[data-theme="dark"] .adl-backend { background: #064e3b; color: #6ee7b7 }
:root[data-theme="dark"] .adl-frontend { background: #1e3a8a; color: #93c5fd }
:root[data-theme="dark"] .adl-both { background: #78350f; color: #fcd34d }

/* 폰 — 관리자도 폰으로 본다 */
@media (max-width: 560px) {
  .adl-ov { padding: 0; align-items: flex-end }
  .adl-pop { width: 100%; max-height: 90vh; border-radius: 14px 14px 0 0 }
  .adl-foot .adl-ok { min-height: 42px }
}

/* 요약 쪽지가 없는 회차 — 맨 아래 접기 하나로 묶는다 (2026-09-23 운영자 지시 「이런 내용 없는건 숨겨」).
   ⛔ 버리지 않는다: 이력이 사라지면 「그날 무엇이 올라갔나」를 되짚을 수 없다. */
.adl-quiet { margin-top: 10px }
.adl-quiet-list { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 3px }
.adl-quiet-list li {
  display: flex; align-items: baseline; gap: 8px; font-size: 11.5px;
  color: var(--text-tertiary, #94a3b8);
}
.adl-quiet-list code {
  font-family: var(--font-mono, ui-monospace, monospace); font-size: 11px;
  color: var(--text-secondary, #475569); word-break: break-all;
}

/* ── 메뉴별 요약 (2026-09-27 운영자 지시 「큰 틀로 어떤 내용이 바뀌었는지 요약해서」) ──────────
   날짜 머리 → 메뉴 한 줄(<details>) → 펼치면 종전 카드. 한 줄은 넘치면 말줄임(폰에서도 한 줄). */
.adl-view { display: flex; gap: 4px; justify-self: start }
.adl-vbtn {
  width: auto; border: 1px solid var(--border-medium, #cbd5e1); background: var(--bg-surface, #fff);
  color: var(--text-secondary, #475569); font: inherit; font-size: 12px; font-weight: 600;
  padding: 3px 10px; border-radius: 999px; cursor: pointer;
}
.adl-vbtn.on { background: var(--accent-indigo, #4f46e5); border-color: var(--accent-indigo, #4f46e5); color: #fff }
.adl-day { display: grid; gap: 6px; min-width: 0 }   /* 격자 칸은 기본 min-width:auto라 긴 한 줄이 상자를 밀어낸다 */
.adl-day-h { display: flex; align-items: baseline; gap: 8px; padding: 2px 2px 0 }
.adl-day-h b { font-size: 13.5px }
.adl-day-h span { font-size: 11.5px; color: var(--text-tertiary, #64748b) }
.adl-grp {
  min-width: 0;
  border: 1px solid var(--border-subtle, #e2e8f0); border-radius: 10px;
  background: var(--bg-surface, #fff);
}
.adl-grp.is-new { border-left: 3px solid var(--accent-indigo, #4f46e5) }
.adl-grp > summary {
  display: flex; align-items: baseline; gap: 7px; padding: 9px 12px; cursor: pointer;
  list-style: none; min-width: 0;
}
.adl-grp > summary::-webkit-details-marker { display: none }
.adl-grp > summary::before { content: '▸'; color: var(--text-tertiary, #64748b); font-size: 11px; flex: none }
.adl-grp[open] > summary::before { content: '▾' }
.adl-grp-m { font-weight: 700; flex: none }
.adl-grp-n { flex: none; font-size: 11px; font-weight: 700; color: var(--text-secondary, #475569);
  background: var(--bg-sunken, #f1f5f9); border-radius: 999px; padding: 0 7px }
.adl-grp-new { flex: none; font-size: 11px; font-weight: 700; color: var(--accent-indigo, #4f46e5) }
.adl-grp-w { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  color: var(--text-secondary, #475569) }
.adl-grp-body { display: grid; gap: 8px; padding: 0 10px 10px }
