/* 인증/시험 관리 (.cert-*) */
.cert-page-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.cert-page-title { font-size:17px; font-weight:700; color:var(--text); }
.cert-page-sub { font-size:12px; color:var(--text3); margin-top:2px; }

.cert-toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.cert-input {
  font-size:13px; padding:7px 11px; border:1px solid var(--border); border-radius:8px;
  background:#fff; color:var(--text); outline:none;
}
.cert-input:focus { border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.12); }
.cert-search { flex:1; min-width:220px; max-width:420px; }
.cert-textarea { width:100%; min-height:160px; resize:vertical; line-height:1.5; font-family:inherit; }
.cert-muted { font-size:12px; color:var(--text3); }

.cert-btn, .cert-btn-primary {
  font-size:13px; padding:7px 13px; border-radius:8px; cursor:pointer; border:1px solid var(--border);
  background:#fff; color:var(--text2); white-space:nowrap;
}
.cert-btn:hover { background:#f8fafc; }
.cert-btn.danger { color:#b91c1c; border-color:#fecaca; }
.cert-btn.danger:hover { background:#fee2e2; }
.cert-btn-primary { background:#2563eb; color:#fff; border-color:#2563eb; font-weight:600; }
.cert-btn-primary:hover { background:#1d4ed8; }

/* 인증 항목 카드 그리드 */
.cert-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:12px; }
.cert-card {
  background:#fff; border:1px solid var(--border); border-radius:10px; padding:14px 16px;
  cursor:pointer; transition:border-color .15s, box-shadow .15s; display:flex; flex-direction:column; gap:7px;
}
.cert-card:hover { border-color:#cbd5e1; box-shadow:0 2px 8px rgba(0,0,0,.05); }
.cert-card-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cert-card-name { font-size:14.5px; font-weight:700; color:#0f172a; }
.cert-card-summary { font-size:12.5px; color:#475569; line-height:1.45; }
.cert-card-meta { display:flex; gap:10px; flex-wrap:wrap; font-size:11px; color:var(--text3); }

.cert-chip { display:inline-block; padding:1px 8px; border-radius:999px; background:#eef2f5; color:#475569; font-size:11px; font-weight:600; }
.cert-chip.sm { font-size:10.5px; padding:1px 7px; background:#e0e7ff; color:#3730a3; }

/* 카드 드래그 정렬 — 손잡이(.cert-card-drag) 잡고 이동. 편집 권한자·검색 미적용 시만 표시. */
.cert-card-drag { cursor:grab; color:#cbd5e1; font-size:14px; line-height:1; letter-spacing:-2px; user-select:none; padding:0 2px; transition:color .15s; }
.cert-card-drag:hover { color:#3b82f6; }
.cert-card-drag:active { cursor:grabbing; }
.cert-card-ghost { opacity:.4; background:#eff6ff; border:2px dashed #3b82f6; }
.cert-card-chosen { box-shadow:0 8px 24px rgba(0,0,0,.12); }
.cert-card-drag-on { transform:rotate(1deg); }

.cert-empty { padding:44px; text-align:center; color:var(--text3); grid-column:1/-1; }

/* 인증 비용·기간 — 카드 요약 (행마다 신규 윗줄 / 변경 아랫줄) */
.cert-card-cost { display:flex; flex-direction:column; gap:6px; }
.cert-cost-group { display:flex; flex-direction:column; gap:2px; }
.cert-cost-row { font-size:12px; color:#334155; display:flex; align-items:center; gap:5px; flex-wrap:wrap; }
.cert-cost-sub { padding-left:10px; }
.cert-cost-lbl { font-weight:700; color:#0f172a; }
.cert-cost-tag { font-size:10.5px; font-weight:700; padding:1px 6px; border-radius:999px; flex:none; }
.cert-cost-tag.new { background:#dcfce7; color:#166534; }
.cert-cost-tag.der { background:#fef3c7; color:#92400e; }

/* 인증 비용·기간 — 편집 폼 행 (구분 + 신규/변경 비용·기간) */
.cert-costrows-edit { display:flex; flex-direction:column; gap:8px; }
.cert-costrow-edit { border:1px solid var(--border); border-radius:8px; padding:8px 10px; display:flex; flex-direction:column; gap:6px; background:#fafbfc; }
.cert-costrow-top { display:flex; gap:8px; align-items:center; }
.cert-costrow-top input { flex:1; }
.cert-costrow-line { display:flex; gap:6px; align-items:center; }
.cert-costrow-line .cert-cost-tag { width:38px; text-align:center; }
.cert-costrow-line input { flex:1; min-width:0; }

/* 인증 비용·기간 — 상세 보기 표 */
.cert-cost-tablewrap { overflow-x:auto; }
.cert-cost-table { width:100%; border-collapse:collapse; margin:4px 0 6px; font-size:13px; }
.cert-cost-table th, .cert-cost-table td { border:1px solid var(--border); padding:6px 10px; text-align:left; }
.cert-cost-table thead th { background:#f1f5f9; font-weight:700; color:#334155; }
.cert-cost-table tbody th { background:#f8fafc; font-weight:600; color:#475569; width:64px; }
.cert-cost-table tbody td { color:#0f172a; }

/* 모달 */
.cert-modal { width:min(680px,94vw); display:flex; flex-direction:column; gap:10px; }
.cert-modal.cert-form { max-height:84vh; overflow:auto; }
.cert-modal-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.cert-modal-title { font-size:16px; font-weight:700; color:var(--text); }
.cert-modal-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:8px; }
.cert-label { font-size:12px; font-weight:600; color:var(--text2); margin-top:6px; }
.cert-detail-summary { font-size:13.5px; color:#334155; background:#f8fafc; border-radius:8px; padding:10px 12px; }
.cert-detail-body { font-size:13.5px; color:#1e293b; line-height:1.6; white-space:normal; }
.cert-detail-sub { font-size:12px; font-weight:700; color:var(--text2); margin-top:6px; }

.cert-attach-list { display:flex; flex-wrap:wrap; gap:8px; }
.cert-attach { font-size:12.5px; padding:5px 10px; background:#f1f5f9; border-radius:6px; color:#2563eb; text-decoration:none; border:1px solid var(--border); }
.cert-attach:hover { background:#e2e8f0; }
.cert-attach-edit { display:flex; flex-direction:column; gap:6px; }
.cert-attach-row { display:flex; align-items:center; gap:8px; }
.cert-attach-row a { font-size:12.5px; color:#2563eb; text-decoration:none; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cert-x { border:none; background:#fee2e2; color:#b91c1c; border-radius:6px; width:24px; height:24px; cursor:pointer; flex-shrink:0; }
.cert-upload-btn { display:inline-block; font-size:12.5px; padding:6px 12px; border:1px dashed var(--border); border-radius:8px; cursor:pointer; color:var(--text2); width:fit-content; }
.cert-upload-btn:hover { background:#f8fafc; }

/* 품목별 인증 */
.cert-prows { display:flex; flex-direction:column; gap:8px; }
.cert-prow { display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--border); border-radius:10px; padding:10px 14px; }
.cert-prow:hover { border-color:#cbd5e1; }
.cert-prow-cb { flex-shrink:0; width:16px; height:16px; margin:0; cursor:pointer; }
.cert-bulk-bar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:-4px 0 12px; min-height:20px; }
.cert-prow-img { width:46px; height:46px; flex-shrink:0; border-radius:8px; overflow:hidden; background:var(--surface2); display:flex; align-items:center; justify-content:center; }
.cert-prow-img img { width:100%; height:100%; object-fit:cover; }
.cert-prow-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.cert-prow-name { font-size:13.5px; font-weight:700; color:#0f172a; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cert-prow-meta { font-size:11.5px; color:var(--text3); }
.cert-prow-chips { display:flex; gap:5px; flex-wrap:wrap; margin-top:2px; }
.cert-src { font-size:10px; font-weight:700; padding:1px 6px; border-radius:4px; }
.cert-src.so { background:#dcfce7; color:#166534; }
.cert-src.pl { background:#fef3c7; color:#92400e; }

.cert-check-list { display:flex; flex-direction:column; gap:4px; max-height:50vh; overflow:auto; border:1px solid var(--border); border-radius:8px; padding:8px 10px; }
.cert-check { display:flex; align-items:center; gap:9px; font-size:13px; padding:5px 4px; cursor:pointer; border-radius:6px; }
.cert-check:hover { background:#f8fafc; }
.cert-check input { width:16px; height:16px; }
