/* PLT/CRM fixture v0.1 — 2026-08-21, 합성 데모 전용. part_a+part_b 병합. */
/*
 * PLT/CRM fixture v0.1 — 2026-08-21, 합성 데모 전용. 정본: research-development/crm/dev/
 *
 * CRM 포털 part A 전용 (P-04 오늘 할 일 / P-01 환자 목록 / P-02 환자 등록·상세).
 * 모든 규칙은 .af-crm-page 하위로 한정된다 — 기존 포털 화면에 영향 없음(global reset·기존 클래스 재정의 금지).
 * part B(crm_part_b.css)와 조립되어 /css/crm.css 가 된다. 본 파일만으로도 독립 유효.
 * TODO(확인 필요: 기존 badge 색상 토큰 대조) — 아래 색상 변수는 합성 데모 임시 토큰이며 확정 후 교체한다.
 */

.af-crm-page {
    --af-crm-border: #E0E0E0;
    --af-crm-muted: #757575;
    --af-crm-text: #222222;
    --af-crm-soft: #F7F9F8;
    --af-crm-green: #00AF7A;
    --af-crm-green-soft: #E9F8F3;
    --af-crm-amber: #A85E00;
    --af-crm-amber-soft: #FFF4E0;
    --af-crm-red: #C62828;
    --af-crm-red-soft: #FDECEA;
    --af-crm-blue: #1565C0;
    --af-crm-blue-soft: #E8F1FB;

    width: 100%;
    min-width: 0;
    padding-bottom: 24px;
    font-family: Pretendard, sans-serif;
    color: var(--af-crm-text);
}

/* ---- 공통 상태 블록(로딩/에러) ---- */
.af-crm-page .af-crm-state {
    padding: 32px 16px;
    color: var(--af-crm-muted);
}

.af-crm-page .af-crm-state-error {
    color: var(--af-crm-red);
}

.af-crm-page .af-crm-page-sub {
    color: var(--af-crm-muted);
    font-size: 0.9rem;
}

/* ---- 이용권 잠금 안내(데이터 미렌더 전용 블록) ---- */
.af-crm-page .af-crm-lock-notice {
    max-width: 560px;
    margin: 48px auto;
    padding: 32px 28px;
    border: 1px solid var(--af-crm-border);
    border-radius: 8px;
    background: #FFFFFF;
    text-align: center;
}

.af-crm-page .af-crm-lock-notice h2 {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 12px;
    color: var(--af-crm-text);
}

/* ---- 출처 badge (증보 B-2 동결: 2종) ---- */
.af-crm-page .af-crm-source-badge {
    font-weight: 600;
}

.af-crm-page .af-crm-source-badge-direct {
    background-color: var(--af-crm-blue-soft);
    color: var(--af-crm-blue);
}

.af-crm-page .af-crm-source-badge-network {
    background-color: var(--af-crm-green-soft);
    color: var(--af-crm-green);
}

/* ---- 상태 badge (사용자 언어 표시 전용) ---- */
.af-crm-page .af-crm-status-badge {
    font-weight: 600;
}

.af-crm-page .af-crm-status-pending {
    background-color: var(--af-crm-amber-soft);
    color: var(--af-crm-amber);
}

.af-crm-page .af-crm-status-failed {
    background-color: var(--af-crm-red-soft);
    color: var(--af-crm-red);
}

.af-crm-page .af-crm-status-waiting {
    background-color: var(--af-crm-blue-soft);
    color: var(--af-crm-blue);
}

.af-crm-page .af-crm-status-done {
    background-color: var(--af-crm-green-soft);
    color: var(--af-crm-green);
}

/* ---- P-04 오늘 할 일 카드 ---- */
.af-crm-page .af-crm-task-card {
    border: 1px solid var(--af-crm-border);
    border-radius: 8px;
    padding: 12px 14px;
    background: #FFFFFF;
    cursor: pointer;
}

.af-crm-page .af-crm-task-card:hover {
    border-color: var(--af-crm-blue);
}

.af-crm-page .af-crm-task-card-overdue {
    border-left: 4px solid var(--af-crm-red);
}

.af-crm-page .af-crm-dday {
    color: var(--af-crm-muted);
    font-size: 0.85rem;
}

.af-crm-page .af-crm-task-form {
    cursor: default;
}

.af-crm-page .af-crm-field-error {
    color: var(--af-crm-red);
    font-size: 0.85rem;
    margin: 4px 0 0;
}

/* ---- P-01 목록 보조 ---- */
.af-crm-page .af-crm-count {
    color: var(--af-crm-muted);
}

.af-crm-page .af-crm-empty-block {
    color: var(--af-crm-text);
}

/* ---- P-02 통합이력 타임라인 ---- */
.af-crm-page .af-crm-timeline {
    list-style: none;
    margin: 0;
    padding: 4px 0 0;
}

.af-crm-page .af-crm-timeline-item {
    position: relative;
    padding: 0 0 16px 22px;
    border-left: 2px solid var(--af-crm-border);
}

.af-crm-page .af-crm-timeline-item:last-child {
    border-left-color: transparent;
    padding-bottom: 4px;
}

.af-crm-page .af-crm-timeline-dot {
    position: absolute;
    left: -6px;
    top: 4px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--af-crm-blue);
}

.af-crm-page .af-crm-timeline-date {
    color: var(--af-crm-muted);
    font-size: 0.85rem;
    white-space: nowrap;
}

/* ---- 합성 fixture 표기 ---- */
.af-crm-page .af-crm-fixture-note {
    border: 1px dashed var(--af-crm-border);
    border-radius: 6px;
    padding: 8px 10px;
    background: var(--af-crm-soft);
}

.af-crm-page .af-crm-fixture-note-badge,
.af-crm-page .af-crm-source-badge,
.af-crm-page .af-crm-status-badge {
    display: inline-block;
    padding: 0.2em 0.5em;
    border-radius: 0.25rem;
    font-size: 0.78rem;
    line-height: 1.4;
    vertical-align: middle;
}

.af-crm-page .af-crm-fixture-note-badge {
    background-color: var(--af-crm-soft);
    border: 1px solid var(--af-crm-border);
    color: var(--af-crm-muted);
    font-weight: 600;
}


/* PLT/CRM fixture v0.1 — 2026-08-21, 합성 데모 전용. 정본: research-development/crm/dev/ */
/*
 * crm_part_b.css — M2 파트 B (CRM-P-03 리콜 큐 / P-05 발송 이력 / P-06 요금제 안내 / P-07 계정·역할)
 * 조립 시 crm.css 로 병합된다. 모든 규칙은 .af-crm-page 하위로 한정한다.
 * global reset·기존(AdminLTE/Bootstrap 4) 클래스 재정의 금지 — 기존 컴포넌트(card/table/badge/btn)는 그대로 사용.
 * 셀렉터는 첨부 템플릿 4종(crm_recall_queue / crm_send_history / crm_pricing / crm_account)에
 * 실재하는 클래스만 사용한다. 최소 커스텀 원칙.
 */

/* ── 공통: 화면 상태 블록(.af-crm-state — §2.4 공통 패턴) ─────────────────────── */
.af-crm-page .af-crm-state {
  padding: 1.1rem 0.25rem;
  color: #6b7280;
  font-size: 0.95rem;
}

.af-crm-page .af-crm-state-error {
  color: #b02a37;
  font-weight: 600;
}

/* ── 공통: 테이블 래퍼(긴 목록 세로 스크롤) ──────────────────────────────────── */
.af-crm-page .af-crm-table-wrap {
  max-height: 26rem;
  overflow-y: auto;
}

/* ── 공통: 툴바(역할 칩 행) 간격 ─────────────────────────────────────────────── */
.af-crm-page .af-crm-toolbar {
  gap: 0.5rem;
}

/* ── P-03: 고급 필터(details/summary) ───────────────────────────────────────── */
.af-crm-page .af-crm-advanced > summary {
  cursor: pointer;
  color: #0b62a4;
  font-size: 0.9rem;
}

/* ── P-03: 승인 모달 미리보기 박스 · 감사 기록 박스 ───────────────────────────── */
.af-crm-page .af-crm-preview-box {
  border: 1px solid #dee2e6;
  border-radius: 0.35rem;
  background: #f8f9fa;
  padding: 0.65rem 0.85rem;
}

.af-crm-page .af-crm-preview-box p {
  margin: 0.4rem 0 0;
}

.af-crm-page .af-crm-audit {
  font-size: 0.82rem;
  color: #495057;
  white-space: pre-wrap;
  word-break: break-all;
}

/* ── P-05: 상세 드로어(overlay + 우측 슬라이드 패널) ──────────────────────────── */
.af-crm-page .af-crm-drawer-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1040;
  background: rgba(33, 37, 41, 0.4);
}

.af-crm-page .af-crm-drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1050;
  width: min(430px, 94vw);
  background: #fff;
  padding: 1rem 1.1rem;
  overflow-y: auto;
  box-shadow: -3px 0 14px rgba(0, 0, 0, 0.18);
}

.af-crm-page .af-crm-drawer dl {
  margin-bottom: 0.75rem;
  font-size: 0.875rem;
}

.af-crm-page .af-crm-drawer dt {
  color: #6b7280;
  font-weight: 600;
  margin-top: 0.45rem;
}

.af-crm-page .af-crm-drawer dd {
  margin-left: 0;
  word-break: break-all;
}

/* attempt 이력 타임라인(사용자 언어) */
.af-crm-page .af-crm-timeline {
  padding-left: 1.15rem;
  margin: 0;
  font-size: 0.83rem;
  color: #374151;
}

.af-crm-page .af-crm-timeline li {
  margin-top: 0.3rem;
}

/* ── P-06: 3가치 카드 타이틀 · 접힘 토글 · 비교표 ─────────────────────────────── */
.af-crm-page .af-crm-value-title {
  color: #0b62a4;
}

.af-crm-page .af-crm-collapse-toggle {
  text-decoration: none;
  color: #212529;
  font-size: 0.95rem;
}

.af-crm-page .af-crm-compare-table th[scope="row"] {
  width: 7.5em;
  white-space: nowrap;
}

/* ── P-07: 계정 테이블 · 고급 영역 ───────────────────────────────────────────── */
.af-crm-page .af-crm-account-table th,
.af-crm-page .af-crm-account-table td {
  vertical-align: middle;
}

.af-crm-page .af-crm-col-actions {
  white-space: nowrap;
  text-align: right;
}

.af-crm-page .af-crm-last-login-table {
  font-size: 0.875rem;
}
