/* swin-admin.css — 2026-10-12 SWIN 디자인 정리 (라운드 B) */
/* 관리자 "입찰자료 등록 → 읽은 결과(요약·목록·회원별 건수·등록) → 등록 결과" 화면 배치(봇3).
   부품 모양(.swin-badge/.swin-btn/.swin-kpi/.swin-table/.swin-advanced)은 swin-ds.css. 여기는 배치·간격만.
   카드 안 카드 금지: 패널 안 구역은 위 경계선 하나로만 나눈다. */

/* ---------- 대체 모양(특이도 0) ---------- */
:where(.swin-run, .swin-intake) :where(.swin-badge) { display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; border-radius: 999px; border: 1px solid #c9ced6; background: #f6f7f8; color: #1f2329; font-size: 14px; font-weight: 600; line-height: 1.5; white-space: nowrap; vertical-align: middle; }
:where(.swin-run, .swin-intake) :where(.swin-badge--ok) { background: #e8f5ec; border-color: #9ccfae; color: #145c2e; }
:where(.swin-run, .swin-intake) :where(.swin-badge--info) { background: #eaf1fb; border-color: #a9c2e6; color: #1b3f73; }
:where(.swin-run, .swin-intake) :where(.swin-badge--warn) { background: #fff5e0; border-color: #e5c27a; color: #6b4500; }
:where(.swin-run, .swin-intake) :where(.swin-badge--danger) { background: #fdecec; border-color: #ef9a9a; color: #a00300; }
:where(.swin-run, .swin-intake) :where(.swin-badge--muted) { background: #f1f2f4; border-color: #d3d6db; color: #3b4048; }
:where(.swin-run) :where(.swin-card) { border: 1px solid #dfe2e6; border-radius: 12px; background: #fff; padding: 16px 20px; }

/* ---------- 읽은 결과 패널 ---------- */
.swin-run { font-size: 16px; line-height: 1.6; color: var(--swin-text, #111827); }
.swin-run .bps-comment, .swin-run .swin-help { font-size: 15px; line-height: 1.6; color: var(--swin-text-2, #475569); }
.swin-run .swin-run-title { text-align: left; font-size: var(--swin-fs-section, 20px); font-weight: 700; margin: 0 0 12px; }
.swin-run .swin-run-title .swin-num { font-size: 20px; font-weight: 700; margin-left: 4px; }
.swin-run .swin-run-title .bps-comment { display: block; margin-top: 2px; font-weight: 500; }
.swin-run .swin-run-sub { text-align: left; font-size: var(--swin-fs-section, 20px); font-weight: 700; margin: 0 0 10px; }
.swin-run .swin-run-sub .bps-comment { font-weight: 500; }
.swin-run .swin-run-section { border-top: 1px solid var(--swin-border, #E5E7EB); padding-top: 20px; margin-top: 20px; }

/* 입력별 한 줄 — 상자 대신 줄 */
.swin-run .swin-run-items { list-style: none; margin: 0 0 4px; padding: 0; }
.swin-run .swin-run-items li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0; padding: 8px 0; border-bottom: 1px solid var(--swin-border, #E5E7EB); font-size: 16px; }
.swin-run .swin-run-items li:last-child { border-bottom: 0; }
.swin-run .swin-run-items li strong { font-weight: 700; word-break: break-all; }
.swin-run .swin-run-items .swin-run-msg { color: var(--swin-text-2, #475569); font-weight: 500; }

/* 요약 타일 4개 — 기존 대시보드 카드(.bps-bid-dash-card) 모양은 끄고 .swin-kpi 모양으로 */
.swin-run .swin-kpi-row { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 12px !important; margin: 0 0 12px !important; }
.swin-run .swin-kpi-row .swin-kpi { align-items: flex-start; gap: 4px; padding: 12px 16px !important; min-height: 0; box-shadow: none !important; text-align: left; transform: none !important; }
.swin-run .swin-kpi-row .bps-bid-dash-count { font-size: 28px !important; font-weight: 700; line-height: 1.2; color: var(--swin-text, #111827); font-variant-numeric: tabular-nums; }
.swin-run .swin-kpi-row .bps-bid-dash-label { font-size: 14px !important; font-weight: 500; line-height: 1.4; color: var(--swin-text-2, #475569); word-break: keep-all; }

/* 배포를 막는 사유 — 요약에 바로 노출 */
.swin-run .swin-run-reasons { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 20px; }
.swin-run .swin-run-reasons li { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 600; word-break: keep-all; }

/* 필터 + 목록 */
.swin-run .swin-run-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
.swin-run .swin-run-tab { min-height: 44px; padding: 0 16px; font-weight: 600; }
.swin-run .swin-run-tab .swin-num { font-size: 16px; margin-left: 4px; }
.swin-run .swin-run-table td { vertical-align: top; }
.swin-run .swin-run-table td:nth-child(1) { white-space: nowrap; }
.swin-run .swin-run-table td:nth-child(3) { white-space: nowrap; }
.swin-run .swin-run-table td:nth-child(2) { min-width: 14em; word-break: keep-all; overflow-wrap: anywhere; }
.swin-run .swin-run-table td.swin-run-act { min-width: 9em; }
.swin-run .swin-run-why { margin-top: 4px; font-size: 14px; line-height: 1.5; color: var(--swin-text-2, #475569); word-break: keep-all; overflow-wrap: anywhere; }
.swin-run .swin-run-cant { font-size: 14px; color: var(--swin-text-2, #475569); word-break: keep-all; }
/* 결과 화면에서 바로 고치기(4.13.11) — 번호 입력·빼기·합치기·되살리기·전체 취소 */
.swin-run .swin-run-fix { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 6px 0 0; max-width: 100%; }
.swin-run .swin-run-fix input[type="text"], .swin-run .swin-run-fix select { flex: 1 1 10em; min-width: 0; max-width: 100%; min-height: 40px; box-sizing: border-box; }
.swin-run .swin-run-fix .swin-btn { flex: 0 0 auto; white-space: nowrap; }
.swin-run .swin-run-cancel { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0 12px; }
.swin-run .swin-run-more { color: var(--swin-text-2, #475569); font-size: 15px; }
.swin-run .bps-run-edit { min-height: 40px; white-space: nowrap; }
.swin-run .swin-run-row[hidden] { display: none !important; }
.swin-run .bps-run-app { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0 0; }
.swin-run .bps-run-app input { min-height: 40px; font-size: 15px; width: 12em; max-width: 100%; }

/* 회원별 건수 */
.swin-run .bps-run-members td, .swin-run .bps-run-members th, .swin-run .swin-run-batch-sum td, .swin-run .swin-run-batch-sum th { vertical-align: top; text-align: left; }
.swin-run .bps-run-members .swin-num, .swin-run .swin-run-batch-sum .swin-num { font-size: 18px; font-weight: 700; }
.swin-run .swin-run-chips { list-style: none; margin: 4px 0 12px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.swin-run .swin-run-chips li { margin: 0; padding: 2px 10px; border: 1px solid var(--swin-border, #E5E7EB); border-radius: 6px; background: var(--swin-bg, #F5F6F8); font-size: 15px; font-weight: 600; }
.swin-run .swin-run-chips-head { margin: 8px 0 0; }
.swin-run details.bps-run-member-why { margin: 6px 0; }

/* 주 행동: 버튼 바로 옆에 영향 안내 */
.swin-run .swin-run-action .bps-run-register { display: flex; flex-wrap: nowrap; align-items: flex-start; gap: 16px 20px; margin: 0; }
.swin-run .swin-run-action .bps-run-register-btn { flex: 0 0 auto; min-height: 52px; padding: 0 28px; font-size: 18px; font-weight: 700; }
.swin-run .swin-run-impact-wrap { flex: 1 1 auto; min-width: 0; }
.swin-run .swin-run-impact-wrap > .bps-comment { display: block; font-size: 16px; font-weight: 600; color: var(--swin-text, #111827); }
.swin-run .swin-run-impact { list-style: disc; margin: 6px 0 0 1.2em; padding: 0; }
.swin-run .swin-run-impact li { margin: 0; font-size: 15px; color: var(--swin-text-2, #475569); }

/* 등록 결과 — 패널 안 첫 구역(테두리 상자 대신 굵은 왼쪽 선 하나) */
.swin-run .swin-run-done { border: 0 !important; border-left: 4px solid var(--swin-text, #111827) !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; padding: 4px 0 4px 16px !important; margin: 16px 0 0; }
.swin-run .swin-run-done > .swin-run-sub { margin-top: 0; }
.swin-run .swin-run-total { font-size: 17px; line-height: 1.6; }
.swin-run .bps-run-read-detail { margin-top: 16px; }
.swin-nowrap { white-space: nowrap; }

/* 입력 패널: 엑셀 받기 묶음 */
.swin-intake .swin-ui-dl-group { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.swin-intake .swin-ui-dl-label { font-size: 15px; font-weight: 600; color: #3b4048; }


@media (max-width: 1100px) {
	.swin-run .swin-kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* ---------- 모바일 360/390: 카드형·44px·가로 스크롤 없음 ---------- */
@media (max-width: 640px) {
	.swin-run.bps-panel { padding-left: 12px !important; padding-right: 12px !important; }
	.swin-run .swin-kpi-row { gap: 8px !important; }
	.swin-run .swin-kpi-row .swin-kpi { padding: 10px 12px !important; }
	.swin-run .swin-kpi-row .bps-bid-dash-count { font-size: 24px !important; }
	.swin-run .swin-run-tab { flex: 1 1 0; padding: 0 8px; }
	.swin-run .swin-run-action .bps-run-register { display: block; }
	.swin-run .swin-run-action .bps-run-register-btn { width: 100%; min-height: 56px; margin: 0 0 10px; }
	.swin-run .swin-run-table td:nth-child(2) { min-width: 0; }
	.swin-run .swin-run-table td.swin-run-act { min-width: 0; padding-left: 0 !important; }
	.swin-run .swin-run-table td.swin-run-act::before { content: none; }
	.swin-run .swin-run-table td.swin-run-more { padding-left: 0 !important; }
	.swin-run .bps-run-edit { width: 100%; min-height: 44px; justify-content: center; }
	.swin-run .bps-run-app input { width: 100%; min-height: 44px; font-size: 16px; }
	.swin-run .bps-run-app .bps-btn { flex: 1 1 100%; min-height: 44px; }
	.swin-run .swin-run-done { padding-left: 10px !important; }
	.swin-run .swin-run-batch-sum td[colspan] { padding-left: 0 !important; }
	.swin-run .swin-advanced .bps-panel, .bps-run-batches .bps-panel, .bps-run-held-conflicts .bps-panel { padding-left: 0 !important; padding-right: 0 !important; border: 0 !important; box-shadow: none !important; margin-left: 0; margin-right: 0; }
	.swin-run .bps-mi-cards tr { padding: 10px 10px; }
	.swin-run .bps-mi-cards td { padding-left: 84px !important; }
	.swin-run .bps-mi-cards td::before { width: 78px; }
	.swin-run .bps-mi-cards td:first-child, .swin-run .bps-mi-cards td:not([data-label]), .swin-run .bps-mi-cards td.bps-mi-title { padding-left: 0 !important; }
	.bps-run-batches select, .bps-run-batches table select { width: 100% !important; min-width: 0 !important; max-width: 100%; min-height: 44px; font-size: 16px; box-sizing: border-box; }
	.swin-intake .swin-ui-dl-label { grid-column: 1 / -1; }
	#bps-unified-intake .bps-ui-actions > .swin-ui-dl-group { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; width: 100%; }
	#bps-unified-intake .swin-ui-dl-group .bps-ui-dl { width: 100%; min-height: 48px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; text-align: center; white-space: normal; word-break: keep-all; line-height: 1.3; padding: 6px 8px; margin: 0; }
	#bps-unified-intake .bps-ui-actions > .bps-ui-count:empty, #bps-unified-intake .bps-ui-actions > .bps-ui-sep { display: none; }
}

/* 결과를 볼 때 입력칸은 낮게, 엑셀 받기는 중립 버튼(빨강·진한 채움은 주 행동에만) */
.swin-intake #bps-ui-text[rows="4"] { min-height: 104px !important; height: 104px; }
.swin-intake .swin-ui-dl-group .bps-ui-dl { background: #fff !important; color: var(--swin-text, #111827) !important; border: 1px solid var(--swin-border-strong, #8A919C) !important; box-shadow: none !important; font-weight: 600; }
.swin-intake .swin-ui-dl-group .bps-ui-dl:hover, .swin-intake .swin-ui-dl-group .bps-ui-dl:focus-visible { background: var(--swin-surface-2, #F1F2F4) !important; }

/* 2026-10-12 통합(메인): 가격정보 표 공고번호 칸은 줄바꿈 금지 — d1366에서 77px로 줄어 2~3줄로 끊기던 문제(봇5 r2) */
.bps-run-prices table td:first-child,
.bps-run-prices table th:first-child { white-space: nowrap; min-width: 9.5em; }
@media (max-width: 640px) { .bps-run-prices table td:first-child { white-space: normal; min-width: 0; } }

/* 라운드 B: 카드 안 카드 없애기 — 패널 안 표가 모바일 카드가 될 때 남색 왼쪽 띠 대신 중립 테두리 하나, 결과 구역의 왼쪽 선도 모바일에선 없앰 */
.swin-run .bps-mi-cards tr { border-left-width: 1px; }
@media (max-width: 640px) {
	.swin-run .bps-mi-cards tr { border: 1px solid var(--swin-border, #E5E7EB) !important; box-shadow: none !important; border-radius: 8px; }
	.swin-run .swin-run-done { border-left: 0 !important; padding-left: 0 !important; }
}
.swin-run .swin-run-items li { background: transparent !important; border-left: 0 !important; border-right: 0 !important; border-top: 0 !important; border-radius: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
.swin-run .swin-run-tab { white-space: nowrap; }
@media (max-width: 640px) {
	.swin-run .swin-run-tabs { flex-wrap: wrap; gap: 6px; } /* 390px에서 칩 4개가 한 줄에 겹치던 것 — 두 줄(한 줄 2개) */
	.swin-run .swin-run-tab { flex: 1 1 calc(50% - 6px); padding: 0 6px; font-size: 15px; }
	.swin-run .swin-run-tab .swin-num { font-size: 15px; margin-left: 2px; }
}

/* 화면 제목 위계: 화면 제목 28/700(.swin-title) > 구역 제목 20/700(.swin-section) > 보조 14/400 — 예전 #bps-unified-intake h4 20px 규칙을 이긴다 */
#bps-unified-intake .bps-ui-head h4.swin-title { font-size: var(--swin-fs-title, 28px); font-weight: 700; line-height: 1.3; color: var(--swin-text, #111827); }
#bps-unified-intake .bps-ui-head span.swin-secondary { font-size: 14px; font-weight: 400; color: var(--swin-text-2, #475569); }
.swin-run .swin-run-title .bps-comment, .swin-run .swin-run-sub .bps-comment { font-size: 14px; font-weight: 400; }

/* 라운드 B-2: 수정 도착 위치·배치 표 폭·배치 표시 기준선 */
#bps-nt-edit, [id^="bps-row-"], details.bps-row-fix { scroll-margin-top: 80px; }
.swin-run .swin-run-items li { align-items: baseline; }
.swin-run .swin-run-items li .bps-comment { font-size: 15px; line-height: inherit; vertical-align: baseline; }
@media (min-width: 641px) {
	/* 접힌 배치 상세 안 표가 화면 폭에 눌려 2~3자씩 끊기던 것 — 표는 제 폭을 갖고 상자 안에서만 가로 스크롤 */
	.bps-run-batches table.bps-fixed-cols { min-width: 1600px; }
	.bps-run-batches table.bps-fixed-cols td[data-label="행"], .bps-run-batches table.bps-fixed-cols td[data-label="공고번호"] { white-space: nowrap; }
	.bps-run-batches details.bps-row-fix .bps-field-row { display: flex; flex-direction: column; gap: 2px; margin-bottom: 6px; }
	.bps-run-batches details.bps-row-fix input[type="text"] { width: 100%; box-sizing: border-box; }
}

/* 2026-10-12 통합(메인, 봇5 B2): 공고 수정 폼 — 제목은 구역 제목 역할(왼쪽 20/700), 선택칸은 입력칸과 같은 44px */
#bps-nt-edit > h4.swin-section { text-align: left; font-size: 20px; font-weight: 700; color: var(--swin-text, #111827); }
#bps-nt-edit select { min-height: 44px; padding: 8px 12px; font: inherit; font-size: 16px; color: var(--swin-text, #111827); background: #fff; border: 1px solid #C4CAD2; border-radius: 8px; }
/* 공고 목록 PC: 상태(사유) 칸이 좁아 8줄로 늘어나던 문제 — 상태 칸 폭 확보, 사유는 보조 글씨 */
@media (min-width: 601px) {
	.bps-nt-list th:nth-child(8), .bps-nt-list td:nth-child(8) { min-width: 190px; }
	.bps-nt-list td:nth-child(8) small, .bps-nt-list td:nth-child(8) .bps-comment { font-size: 14px; line-height: 1.45; color: var(--swin-text-2, #475569); }
}

/* 엑셀 받기 접힘(#bps-ui-dl-fold, unified-intake.php) — 2026-10-13 PHP 안 <style>에서 옮김.
   PC: 접힘 머리를 "엑셀 받기" 글자 라벨처럼(항상 펼침) / 휴대폰: 한 줄 전체 + 버튼 2열. 특이도 (1,0,1)로 swin-ds 접힘 규칙(0,1,1)을 이김. */
@media (min-width: 641px) {
	#bps-ui-dl-fold { display: inline-flex; align-items: center; gap: 8px; border: 0; background: none; padding: 0; margin: 0; overflow: visible; }
	#bps-ui-dl-fold > summary { pointer-events: none; list-style: none; padding: 0; margin: 0; min-height: 0; background: none; border: 0; white-space: nowrap; overflow: visible; }
	#bps-ui-dl-fold > summary::before { display: none; }
	#bps-ui-dl-fold > summary::-webkit-details-marker { display: none; }
}
@media (max-width: 640px) {
	#bps-unified-intake .bps-ui-actions > #bps-ui-dl-fold { grid-column: 1 / -1; width: 100%; margin: 0; }
	#bps-ui-dl-fold .swin-ui-dl-group { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0 0 12px; }
}

/* ---------- 2026-10-17 관리자 = care79 톤 (봇J) ----------
 * 사장님 지시 "care79.com 디자인 그대로, 토스·애플 수준". 회원 화면(swin-ds.css body.bps-member-home 블록, 봇A3)과 같은 토큰 값을
 * 관리 포털(body.bps-admin-portal)에도 준다. 표 밀도(글자 크기·칸 여백)는 그대로, 색·모서리·그림자만 바꾼다.
 * 선택 상태 규칙(swin-ds.css :is(.swin-tab…).is-active)·접힘 box model 은 재지정하지 않음 — 토큰 값만 따라 바뀐다. !important 없음.
 * 대비(흰/아이보리 #FBF8F2): #6B5B4E 6.5/6.1 · #776B62 5.2/4.9 · #7D6747 5.4/5.1 · 챔페인 버튼 글자 #66533E/#E8D8BB 5.2 · 위험 #8F3A24 7.3. */
body.bps-admin-portal {
	--swin-red: #9A3F28; --swin-red-dark: #8F3A24; --swin-red-tint: #FBEDE8;
	--swin-text: #6B5B4E; --swin-text-2: #776B62;
	--swin-bg: #FBF8F2; --swin-panel: #FFFFFF; --swin-surface-2: #F7F1E6;
	--swin-border: #EFE6D6; --swin-border-strong: #DCCDB3; --swin-focus: #7D6747;
	--swin-link: #7D6747;
	--swin-nav-bg: #FFFFFF; --swin-nav-fg: #6B5B4E;
	--swin-danger-bg: #FBEDE8; --swin-danger-fg: #8F3A24; --swin-danger-line: #C98A76;
	--swin-ok-bg: #EEF2EA;     --swin-ok-fg: #4F6B45;     --swin-ok-line: #8FA685;
	--swin-warn-bg: #F7F1E6;   --swin-warn-fg: #7A5A24;   --swin-warn-line: #C9AE80;
	--swin-muted-bg: #F7F1E6;  --swin-muted-fg: #6B5B4E;  --swin-muted-line: #DCCDB3;
	--swin-gold: #C9AE80; --swin-gold-d: #7D6747;
	--swin-champ-a: #F4EBDA; --swin-champ-b: #E8D8BB; --swin-champ-t: #66533E; --swin-champ-line: #DCC69F;
	--swin-radius-lg: 20px;
	--swin-shadow-card: 0 18px 40px -24px rgba(107, 91, 78, .28), 0 1px 2px rgba(107, 91, 78, .05);
	--swin-ease: cubic-bezier(.22, .61, .36, 1);
	--swin-primary-bg: linear-gradient(180deg, #F4EBDA 0%, #E8D8BB 100%);
	--swin-primary-bg-hover: linear-gradient(180deg, #F0E4CD 0%, #E2CFAC 100%);
	--swin-primary-fg: #66533E; --swin-primary-line: #DCC69F; --swin-primary-line-hover: #CDB384;
	--swin-primary-shadow: 0 10px 24px -14px rgba(150, 120, 75, .55), inset 0 1px 0 rgba(255, 255, 255, .7);
	/* bid-price.css 옛 변수도 같은 값으로 (주 강조 = 갈색, 완료 = 올리브 녹색, 위험 = 적갈색) */
	--bps-primary: #7D6747; --bps-primary-dark: #66533E; --bps-primary-tint: #F6EFE3;
	--bps-select: #4F6B45; --bps-select-text: #4F6B45; --bps-success: #4F6B45; --bps-calc: #4F6B45; --bps-mint-tint: #EEF2EA;
	--bps-danger: #8F3A24; --bps-warn: #C9AE80;
	--bps-border: #EFE6D6; --bps-border-strong: #DCCDB3; --bps-page-bg: #FBF8F2; --bps-text: #6B5B4E; --bps-muted: #776B62;
	letter-spacing: -0.01em;
}
body.bps-admin-portal ::selection { background: #EFE3CC; color: #6B5B4E; }

/* 상단: 흰 메뉴 바 + 챔페인 현재 위치 (care79 머리줄) */
body.bps-admin-portal .bps-topbar-actions a:hover { background: var(--swin-surface-2); }
body.bps-admin-portal .bps-flat-nav { padding: 6px; gap: 2px; border: 1px solid var(--swin-border); border-radius: var(--swin-radius-pill); box-shadow: var(--swin-shadow-card); }
body.bps-admin-portal .bps-flat-nav a { min-height: 44px; border-radius: var(--swin-radius-pill); transition: background .2s var(--swin-ease), color .2s var(--swin-ease); }
body.bps-admin-portal .bps-flat-nav a:hover { color: var(--swin-gold-d); background: var(--swin-bg); }
body.bps-admin-portal .bps-flat-nav a.is-active { color: var(--swin-champ-t); background: var(--swin-primary-bg); box-shadow: inset 0 0 0 1px var(--swin-champ-line), var(--swin-primary-shadow); font-weight: 700; }
body.bps-admin-portal .bps-flat-nav a:focus-visible { outline: 3px solid var(--swin-focus); }
@media (max-width: 600px) {
	body.bps-admin-portal .bps-flat-nav { border-radius: var(--swin-radius-lg); }
	body.bps-admin-portal .bps-flat-nav a { border-radius: 14px; }
	body.bps-admin-portal .bps-flat-nav a.is-active { background: var(--swin-primary-bg); }
	body.bps-admin-portal .bps-bid-suite-header { border-bottom-color: var(--swin-border); }
	body.bps-admin-portal .bps-topbar-actions a { border-color: var(--swin-border-strong); border-radius: var(--swin-radius-pill); background: var(--swin-panel); }
}

/* 패널·카드 = 둥근 흰 카드 + 부드러운 그림자 */
body.bps-admin-portal .bps-panel { border-color: var(--swin-border); border-radius: var(--swin-radius-lg); box-shadow: var(--swin-shadow-card); }
body.bps-admin-portal :is(.bps-bid-dash-card, .bps-member-summary-card, .swin-kpi) { border-color: var(--swin-border); border-radius: 16px; background: var(--swin-panel); }
body.bps-admin-portal .bps-bid-dash-card:hover { border-color: var(--swin-gold); }
body.bps-admin-portal :is(.bps-bid-dash-count, .bps-admin-app-stat-value, .bps-admin-app-menu-card-title, .bps-detail-table td, .bps-simple-title b) { color: var(--swin-text); }

/* 버튼: 주 = 챔페인 pill, 보조 = 흰 pill. 크기·여백은 그대로(밀도 유지) */
body.bps-admin-portal .bps-btn { border-radius: var(--swin-radius-pill); transition: background .2s var(--swin-ease), border-color .2s var(--swin-ease), box-shadow .2s var(--swin-ease), color .2s var(--swin-ease); }
body.bps-admin-portal .bps-btn:hover { opacity: 1; transform: none; }
body.bps-admin-portal :is(.bps-btn:not(.bps-btn-outline), .bps-btn-primary) { background: var(--swin-primary-bg); border-color: var(--swin-primary-line); color: var(--swin-primary-fg); box-shadow: var(--swin-primary-shadow); }
body.bps-admin-portal :is(.bps-btn:not(.bps-btn-outline), .bps-btn-primary):hover { background: var(--swin-primary-bg-hover); border-color: var(--swin-primary-line-hover); }
body.bps-admin-portal .bps-btn-outline { background: var(--swin-panel); border-color: var(--swin-border-strong); color: var(--swin-text); }
body.bps-admin-portal .bps-btn-outline:not(.is-active, [aria-pressed="true"], [aria-selected="true"]):hover { background: var(--swin-bg); border-color: var(--swin-gold); color: var(--swin-gold-d); }
/* 4.15.0: 위험 버튼(가입 신청 거절·삭제) — 보조 pill 모양 그대로, 글자·테두리만 적갈색 */
body.bps-admin-portal .bps-btn.swin-btn--danger { color: var(--swin-red-dark); border-color: var(--swin-danger-line); }
body.bps-admin-portal .bps-btn.swin-btn--danger:hover { background: var(--swin-red-tint); border-color: var(--swin-red); color: var(--swin-red-dark); }
body.bps-admin-portal .swin-btn { border-radius: var(--swin-radius-pill); }
body.bps-admin-portal .swin-btn:not(.swin-btn--danger, .is-active, [aria-pressed="true"], [aria-selected="true"]):hover { background: var(--swin-bg); border-color: var(--swin-gold); color: var(--swin-gold-d); }
body.bps-admin-portal .swin-btn--primary:hover { background: var(--swin-primary-bg-hover); color: var(--swin-primary-fg); }
body.bps-admin-portal :is(.bps-btn, .swin-btn):disabled { background: #F3EEE6; border-color: var(--swin-border); color: #776B62; box-shadow: none; opacity: 1; }

/* 입력칸 */
body.bps-admin-portal :is(input[type="text"], input[type="search"], input[type="number"], input[type="date"], input[type="password"], select, textarea) { border: 1px solid #9C8A70; border-radius: 10px; color: var(--swin-text); background-color: var(--swin-panel); }  /* 입력칸 테두리 3.3:1 (UI 대비 3:1+) */
body.bps-admin-portal :is(input, select, textarea):focus { border-color: var(--swin-gold-d); }
body.bps-admin-portal input[type="checkbox"], body.bps-admin-portal input[type="radio"] { accent-color: var(--swin-gold-d); }

/* 표: 머리 아이보리, 줄 선 따뜻한 베이지 (칸 여백·글자 크기 그대로) */
body.bps-admin-portal :is(.bps-competitor-table, .bps-simple-table, .bps-info-table, .bps-detail-table) :is(th, td) { border-color: var(--swin-border); }
body.bps-admin-portal :is(.bps-competitor-table, .bps-simple-table, .bps-info-table, .bps-bid-notices-table) th { background: var(--swin-bg); color: var(--swin-text-2); }
body.bps-admin-portal .bps-simple-table th { border-bottom-color: var(--swin-border-strong); }
body.bps-admin-portal :is(.bps-competitor-table, .bps-simple-table) tbody tr:hover { background: #FDFBF7; }
body.bps-admin-portal .swin-table thead th { border-bottom-color: var(--swin-border-strong); }
body.bps-admin-portal .swin-table tbody tr:hover { background: #FDFBF7; }
body.bps-admin-portal .bps-simple-table a { color: var(--swin-link); }
body.bps-admin-portal .bps-simple-link { border-color: var(--swin-border-strong); border-radius: var(--swin-radius-pill); color: var(--swin-text); background: var(--swin-panel); }
body.bps-admin-portal .bps-simple-link:hover { border-color: var(--swin-gold); color: var(--swin-gold-d); }

/* 배지·표시 — 색 + 글자로 의미. 확인필요(노랑 3.9:1)·대기 없음(민트 2.0:1) 대비 부족 고침 */
body.bps-admin-portal :is(.bps-badge-channel, .bps-badge-stage, .bps-badge-dday, .bps-badge-region, .bps-flag, .bps-status-neutral, .bps-keyword-tag) { background: var(--swin-muted-bg); color: var(--swin-muted-fg); }
body.bps-admin-portal :is(.bps-badge-review, .bps-flag-warn, .bps-notice-flag-warn) { background: var(--swin-warn-bg); color: var(--swin-warn-fg); box-shadow: inset 0 0 0 1px var(--swin-warn-line); }
body.bps-admin-portal .bps-flag-done { background: var(--swin-ok-bg); color: var(--swin-ok-fg); }
body.bps-admin-portal .bps-flag-calc { background: var(--bps-primary-tint); color: var(--bps-primary-dark); }

/* 읽은 결과 패널(이 파일 위쪽 :where 대체 모양)·입력 패널 */
body.bps-admin-portal .swin-run .swin-run-chips li { border-color: var(--swin-border); border-radius: var(--swin-radius-pill); }
body.bps-admin-portal .swin-run .swin-run-done { border-left-color: var(--swin-gold); }
body.bps-admin-portal .swin-intake .swin-ui-dl-label { color: var(--swin-text-2); }
body.bps-admin-portal #bps-unified-intake { border-color: var(--swin-border); border-radius: var(--swin-radius-lg); box-shadow: var(--swin-shadow-card); }
body.bps-admin-portal #bps-unified-intake .bps-ui-one { border-color: var(--swin-border-strong); border-radius: 16px; background: var(--swin-bg); }
body.bps-admin-portal #bps-unified-intake .bps-ui-one:focus-within { border-color: var(--swin-gold-d); background: var(--swin-panel); }
body.bps-admin-portal #bps-unified-intake .bps-ui-one.bps-dropzone-drag { border-color: var(--swin-gold-d); background: var(--swin-champ-a); }
body.bps-admin-portal #bps-unified-intake .bps-ui-one .bps-paste-textarea { border: 0; background: transparent; border-radius: 0; }
body.bps-admin-portal .bps-ui-one-bar { border-top-color: var(--swin-border); }
body.bps-admin-portal #bps-unified-intake :is(.bps-ui-submit, #bps-ui-clear, .bps-ui-dl) { border-radius: var(--swin-radius-pill); }
body.bps-admin-portal #bps-unified-intake .bps-ui-dl.is-sub { color: var(--swin-text); }
body.bps-admin-portal .bps-ui-one-bar .bps-ui-files li { background: var(--swin-bg); }
@media (prefers-reduced-motion: reduce) {
	body.bps-admin-portal :is(.bps-btn, .bps-flat-nav a) { transition: none; }
}

/* ---------- 2026-10-28 관리 포털 가독성 통일 (P4) — CSS만, 값·문구·입력보호 표시는 그대로 ----------
 * ① 구역 제목 위계 ② 상태 칩 크기 통일 ③ 숫자 칸 오른쪽·고정폭 숫자 ④ 긴 표 머리 고정(#bps-g2b-discover 방식) ⑤ PC 버튼·입력칸 44px.
 * 휴대폰(640 이하)은 admin-m-*.css 카드 배치를 그대로 쓰므로 ③④⑤는 PC·태블릿에만. */

/* ① 구역 제목: 본문(16)과 같은 크기·가운데 → 20/700 왼쪽, 하위 제목 17/700 */
body.bps-admin-portal .bps-panel > h4.bps-channel-name { text-align: left; font-size: 20px; line-height: 1.35; margin-bottom: 14px; color: var(--swin-text); word-break: keep-all; }
body.bps-admin-portal :is(.bps-panel, .bps-kepco-key-form) > h5.bps-channel-name { text-align: left; font-size: 17px; line-height: 1.4; color: var(--swin-text); word-break: keep-all; }
@media (max-width: 640px) { body.bps-admin-portal .bps-panel > h4.bps-channel-name { font-size: 18px; margin-bottom: 10px; } }

/* ② 상태 칩: 글자 14/600, 높이·모서리·테두리 한 가지로 (색 의미는 그대로) */
body.bps-admin-portal :is(.bps-badge, .bps-flag, .bps-badge-review, .bps-badge-applied, .bps-status-good, .bps-status-alert, .bps-status-neutral, .bps-keyword-tag, .bps-notice-flag-warn, .swin-badge) {
	display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; border: 1px solid var(--swin-muted-line); border-radius: var(--swin-radius-pill);
	font-size: 14px; font-weight: 600; line-height: 1.5; white-space: nowrap; vertical-align: middle; box-sizing: border-box; font-variant-numeric: tabular-nums;
}
body.bps-admin-portal :is(.bps-badge-review, .bps-flag-warn, .bps-notice-flag-warn, .bps-status-alert, .bps-badge-dday.is-urgent) { background: var(--swin-warn-bg); color: var(--swin-warn-fg); border-color: var(--swin-warn-line); box-shadow: none; }
body.bps-admin-portal :is(.bps-flag-done, .bps-status-good, .bps-badge-applied) { background: var(--swin-ok-bg); color: var(--swin-ok-fg); border-color: var(--swin-ok-line); }
body.bps-admin-portal .bps-flag-calc { border-color: var(--swin-primary-line); font-weight: 700; }
body.bps-admin-portal .bps-badge-dday.is-urgent { color: var(--swin-danger-fg); border-color: var(--swin-danger-line); }

/* ③ 숫자: 모든 표 고정폭 숫자(자릿수 세로 정렬) */
body.bps-admin-portal :is(table, .bps-bid-dash-count, .swin-num) { font-variant-numeric: tabular-nums; }

@media (min-width: 641px) {
	/* ③ 숫자 칸 오른쪽 정렬 — 머리도 같은 쪽 */
	body.bps-admin-portal .bps-simple-cards :is(th, td):is(:nth-child(6), :nth-child(7)),
	body.bps-admin-portal .bps-nt-list :is(th, td):nth-child(9),
	body.bps-admin-portal #bps-m-match .bps-m-match-list :is(th:nth-child(n+3):nth-child(-n+6), td.bps-m-num),
	body.bps-admin-portal #bps-m-goods .bps-bid-table :is(th, td):is(:nth-child(4), :nth-child(5)),
	body.bps-admin-portal #bps-assess-reference .bps-competitor-table :is(th, td):nth-child(n+2):nth-child(-n+6) { text-align: right; white-space: nowrap; }
	body.bps-admin-portal #bps-m-match .bps-m-match-list td.bps-m-title { text-align: left; }
	/* 매칭 목록은 7칸뿐인데 최소 1220px 이라 1440 화면에서도 '승인됨·상세'가 가로 스크롤 밖에 숨던 것 — 화면 폭에 맞춤(공고명이 줄바꿈) */
	body.bps-admin-portal #bps-m-match .bps-m-match-list table.bps-wide-table { width: 100%; min-width: 0; }

	/* ④ 긴 표: 기존 가로 스크롤 상자 안에서 최대 높이 + 표 머리 고정 */
	body.bps-admin-portal .bps-bid-table-scroll { max-height: min(75vh, 900px); overflow: auto; }
	body.bps-admin-portal .bps-bid-table-scroll > table > thead th { position: sticky; top: 0; z-index: 2; background: var(--swin-bg); border-top-width: 0; box-shadow: inset 0 1px 0 var(--swin-border), inset 0 -1px 0 var(--swin-border-strong); } /* 위 테두리는 겹침 표에서 아래 글자가 1px 비쳐 그림자로 대신 */

	/* ⑤ 버튼·입력칸 최소 44px (글자 세로 가운데) */
	body.bps-admin-portal :is(.bps-btn, .swin-btn) { min-height: 44px; box-sizing: border-box; line-height: 1.25; padding-top: calc((44px - 1.25em - 2px) / 2); padding-bottom: calc((44px - 1.25em - 2px) / 2); }
	body.bps-admin-portal #bps-bid-suite :is(input[type="text"], input[type="search"], input[type="number"], input[type="date"], input[type="password"], select) { min-height: 44px; box-sizing: border-box; }
}
