/* Author styles override the browser's default `[hidden]` rule. */
[hidden] {
  display: none !important;
}

button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 3px solid rgba(142, 240, 191, .72);
  outline-offset: 2px;
}

/* ── 운영 콘솔 공통 보완 ── */
.last-refreshed { color: #7890a7; font-size: 12px; font-weight: 650; letter-spacing: 0; }
.console-message { margin: -8px 0 18px; border: 1px solid #7c3b42; border-radius: 9px; padding: 11px 13px; background: rgba(124, 59, 66, .14); color: #ffc1c1; font-size: 12px; font-weight: 700; }
.console-message.is-warning { border-color: #7c632d; background: rgba(124, 99, 45, .14); color: #ffe09a; }
.console-message.is-success { border-color: #2e7d5a; background: rgba(46, 125, 90, .14); color: #a7ffd1; }
.retry-job-button { border: 1px solid #d28b53; border-radius: 7px; padding: 6px 9px; background: rgba(210, 139, 83, .12); color: #ffd0a6; font-size: 12px; font-weight: 800; cursor: pointer; }
.retry-job-button:hover { border-color: #ffd0a6; background: rgba(210, 139, 83, .2); }
.retry-job-button:disabled { cursor: wait; opacity: .55; }
.board-review-button { margin-left: 5px; padding: 6px 8px; font-size: 12px; }
.status.failed { background: rgba(181, 61, 67, .2); color: #ffc1c1; }
.secondary-button { border: 1px solid #3d5872; border-radius: 8px; padding: 9px 11px; background: #111d2a; color: #d5e4f0; font-size: 12px; font-weight: 800; cursor: pointer; }
.secondary-button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.dashboard-intro, .section-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.dashboard-intro p:not(.eyebrow) { margin: 6px 0 0; color: #92a7ba; font-size: 13px; }
.quick-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.quick-actions button { border: 1px solid #344f68; border-radius: 999px; padding: 8px 12px; background: rgba(17, 33, 47, .75); color: #c6d8e6; font-size: 12px; font-weight: 750; cursor: pointer; }
.quick-actions button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.section-heading h2 { margin: 7px 0 0; font-size: 20px; }
.section-heading small { color: #7890a7; font-size: 12px; }
.attention-panel { border: 1px solid #2a4056; border-radius: 12px; padding: 20px; background: linear-gradient(135deg, rgba(17, 33, 47, .92), rgba(13, 23, 35, .84)); }
.attention-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.attention-card { min-width: 0; border: 1px solid #334b63; border-radius: 10px; padding: 14px; background: rgba(8, 17, 27, .52); color: #e7f0f8; text-align: left; cursor: pointer; }
.attention-card:hover { border-color: #9bb8d1; transform: translateY(-1px); }
.attention-card > span, .attention-card small { display: block; color: #9ab0c3; font-size: 12px; font-weight: 750; }
.attention-card strong { display: block; margin: 8px 0 4px; font-size: 28px; line-height: 1; }
.attention-card.is-warning strong { color: #f7d66b; }
.attention-card.is-danger strong { color: #f78b8b; }
.operations-summary, .board-work-panel { border: 1px solid #2a4056; border-radius: 12px; padding: 20px; background: linear-gradient(135deg, rgba(14, 30, 43, .9), rgba(13, 23, 35, .84)); }
.operations-summary { margin-top: 18px; }
.operations-verdict { display: flex; align-items: center; justify-content: space-between; gap: 18px; border: 1px solid #3d5872; border-radius: 10px; padding: 13px 14px; background: rgba(7, 17, 27, .58); }
.operations-verdict strong { display: block; color: #eaf5ff; font-size: 15px; }
.operations-verdict p { margin: 5px 0 0; color: #a8bac9; font-size: 12px; line-height: 1.45; }
.operations-verdict.is-healthy { border-color: #398766; background: rgba(32, 95, 70, .13); }
.operations-verdict.is-healthy strong { color: #8ef0bf; }
.operations-verdict.is-warning { border-color: #8a6d36; background: rgba(121, 92, 37, .13); }
.operations-verdict.is-warning strong { color: #f3d278; }
.operations-verdict.is-critical { border-color: #914b53; background: rgba(124, 59, 66, .14); }
.operations-verdict.is-critical strong { color: #ffc1c1; }
.operations-verdict-checks { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: end; gap: 6px; }
.operations-verdict-checks span { border: 1px solid #3b5368; border-radius: 99px; padding: 6px 8px; color: #b8cad8; font-size: 12px; font-weight: 800; }
.operations-verdict-checks .is-ok { border-color: #398766; color: #8ef0bf; background: rgba(57, 135, 102, .12); }
.operations-verdict-checks .is-alert { border-color: #916f35; color: #f3d278; background: rgba(154, 126, 53, .12); }
.operations-answer-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.operations-answer-grid article:nth-child(4) { display: none; }
.operations-answer-grid article { min-width: 0; border: 1px solid #314b64; border-radius: 10px; padding: 15px; background: rgba(7, 17, 27, .5); }
.operations-answer-grid span { display: block; color: #aebfcd; font-size: 12px; font-weight: 800; }
.operations-answer-grid strong { display: block; margin: 7px 0 5px; color: #edf7ff; font-size: 25px; letter-spacing: -.04em; }
.operations-answer-grid small { display: block; min-height: 28px; color: #8298ac; font-size: 12px; line-height: 1.4; }
.operations-answer-grid .is-pages strong { color: #76d6ff; }
.operations-answer-grid .is-boards strong { color: #8ef0bf; }
.operations-answer-grid .is-program strong { color: #f78b8b; }
.operations-answer-grid .is-posted strong { color: #8ef0bf; }
.operations-summary-note { margin: 12px 0 0; color: #8298ac; font-size: 12px; line-height: 1.5; }
.dashboard-intro > .secondary-button,
.quick-actions,
.dashboard-health-bar,
.operations-summary,
.attention-panel,
.saved-search-panel,
.operations-lanes,
.queue-hold-panel,
.board-work-panel,
.campaign-operations-panel,
#overview > .activity-panel { display: none; }

/* 첫 화면은 판단용 세 레인만 남기고, 보드·글쓰기·누적 상세는 메뉴에서 연다. */
#overview > .board-operation-summary,
#overview > .operations-workbench { display: none; }

/* 첫 화면은 발견 기록·글쓰기 작업·실제 게시 결과를 섞지 않는 세 업무 카드만 사용한다. */
.board-operation-summary { margin-top: 18px; border: 1px solid #2f4a61; border-radius: 14px; padding: 20px; background: linear-gradient(135deg, rgba(12, 29, 42, .96), rgba(10, 19, 29, .9)); }
.board-operation-summary > header { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.board-operation-summary .eyebrow { margin: 0; }
.board-operation-summary h2 { margin: 5px 0 0; color: #eef8ff; font-size: 21px; letter-spacing: -.03em; }
.board-operation-summary header p:not(.eyebrow) { max-width: 690px; margin: 7px 0 0; color: #9ab0c1; font-size: 12px; line-height: 1.5; }
.board-operation-summary > header small { flex: 0 0 auto; color: #7790a4; font-size: 12px; white-space: nowrap; }
.board-operation-next-action { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 15px; border: 1px solid #796337; border-radius: 10px; padding: 13px 14px; background: rgba(120, 91, 35, .11); }
.board-operation-next-action span { display: block; color: #f1cf6f; font-size: 12px; font-weight: 850; }
.board-operation-next-action strong { display: block; margin-top: 4px; color: #f6e0a1; font-size: 14px; }
.board-operation-next-action p { margin: 5px 0 0; color: #b5c1c9; font-size: 12px; line-height: 1.45; }
.board-operation-next-action button, .board-operation-card button { border: 1px solid #3d5872; border-radius: 8px; padding: 8px 10px; background: #111d2a; color: #d5e4f0; font-size: 12px; font-weight: 800; cursor: pointer; }
.board-operation-next-action button { flex: 0 0 auto; border-color: #a7833b; color: #f6df9f; }
.board-operation-next-action button:hover, .board-operation-card button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.board-operation-lanes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.board-operation-card { display: flex; min-width: 0; min-height: 224px; flex-direction: column; border: 1px solid #314b64; border-radius: 10px; padding: 14px; background: rgba(5, 14, 22, .48); }
.board-operation-card > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.board-operation-card > header span { color: #dbeaf4; font-size: 12px; font-weight: 850; }
.board-operation-card > header em { border: 1px solid #455f74; border-radius: 99px; padding: 4px 7px; color: #a9bfce; font-size: 12px; font-style: normal; font-weight: 800; white-space: nowrap; }
.board-operation-card > strong { display: block; margin-top: 15px; color: #edf8ff; font-size: 27px; letter-spacing: -.045em; }
.board-operation-card > p { min-height: 34px; margin: 7px 0 0; color: #9eb4c5; font-size: 12px; line-height: 1.45; }
.board-operation-card dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin: 14px 0 0; }
.board-operation-card dl div { min-width: 0; border-top: 1px solid #23394d; padding-top: 7px; }
.board-operation-card dt { overflow: hidden; color: #778fa2; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.board-operation-card dd { margin: 4px 0 0; color: #dcebf5; font-size: 15px; font-weight: 850; }
.board-operation-runtime { display: block; min-height: 28px; margin-top: 9px; color: #8199ab; font-size: 12px; line-height: 1.4; }
.board-operation-card button { width: 100%; margin-top: auto; padding: 8px 9px; }
.board-operation-card.is-discovery { border-color: #36607a; }
.board-operation-card.is-discovery > strong { color: #8bdcff; }
.board-operation-card.is-writing { border-color: #396e58; }
.board-operation-card.is-writing > strong { color: #9cf2c3; }
.board-operation-card.is-publishing { border-color: #796337; }
.board-operation-card.is-publishing > strong { color: #f3d278; }
.board-operation-summary > footer { margin-top: 12px; color: #7f97a9; font-size: 12px; line-height: 1.45; }
.operations-command-center { margin-top: 18px; border: 1px solid #2a4056; border-radius: 14px; padding: 20px; background: linear-gradient(135deg, rgba(14, 30, 43, .94), rgba(10, 20, 30, .88)); }
.operations-command-header { display: flex; align-items: end; justify-content: space-between; gap: 18px; padding-bottom: 16px; border-bottom: 1px solid #293e52; }
.operations-command-header .eyebrow { margin: 0; }
.operations-command-header h2 { margin: 5px 0 0; color: #edf7ff; font-size: 21px; letter-spacing: -.03em; }
.operations-command-header p:not(.eyebrow) { max-width: 700px; margin: 7px 0 0; color: #a7bbc9; font-size: 12px; line-height: 1.5; }
.operations-command-header > small { flex: 0 0 auto; color: #7890a7; font-size: 12px; white-space: nowrap; }
.operations-command-header.is-stopped h2 { color: #ffc1c1; }
.operations-command-header.is-attention h2 { color: #f3d278; }
.operations-command-header.is-unknown h2 { color: #bdd0df; }
.operations-command-lanes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.operation-lane { position: relative; display: flex; min-width: 0; min-height: 205px; flex-direction: column; border: 1px solid #314b64; border-radius: 10px; padding: 14px; background: rgba(7, 17, 27, .48); }
.operation-lane-status { display: flex; align-items: center; gap: 8px; }
.operation-lane-status span { border: 1px solid #3e576c; border-radius: 99px; padding: 4px 7px; color: #b7c8d6; font-size: 12px; font-weight: 850; }
.operation-lane-status strong { color: #e8f2fa; font-size: 13px; }
.operation-lane-result { margin-top: 15px; }
.operation-lane-result b { display: block; color: #edf7ff; font-size: 20px; letter-spacing: -.04em; }
.operation-lane-result p { min-height: 50px; margin: 8px 0 0; color: #9fb4c5; font-size: 12px; line-height: 1.5; }
.operation-lane footer { display: grid; gap: 3px; margin-top: auto; padding-top: 10px; border-top: 1px solid #223649; color: #70879a; font-size: 12px; line-height: 1.4; }
.operation-lane button { width: 100%; margin-top: 11px; border: 1px solid #3d5872; border-radius: 7px; padding: 8px 9px; background: #111d2a; color: #d5e4f0; font-size: 12px; font-weight: 800; cursor: pointer; }
.operation-lane button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.operation-lane.is-healthy { border-color: #326f57; }
.operation-lane.is-healthy .operation-lane-status span { border-color: #398766; background: rgba(57, 135, 102, .12); color: #8ef0bf; }
.operation-lane.is-healthy .operation-lane-result b { color: #8ef0bf; }
.operation-lane.is-attention { border-color: #7b6435; }
.operation-lane.is-attention .operation-lane-status span { border-color: #916f35; background: rgba(154, 126, 53, .12); color: #f3d278; }
.operation-lane.is-attention .operation-lane-result b { color: #f3d278; }
.operation-lane.is-stopped { border-color: #874b54; background: rgba(124, 59, 66, .12); }
.operation-lane.is-stopped .operation-lane-status span { border-color: #a85861; background: rgba(168, 88, 97, .15); color: #ffc1c1; }
.operation-lane.is-stopped .operation-lane-result b { color: #ffc1c1; }
.operation-lane.is-unknown { border-color: #53677a; }
.operation-lane.is-unknown .operation-lane-status span { color: #c4d5e2; }
.operations-workbench { margin-top: 12px; border: 1px solid #3b4e62; border-radius: 14px; padding: 18px; background: rgba(10, 21, 31, .82); }
.operations-workbench > header { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.operations-workbench h2 { margin: 5px 0 0; color: #eaf5ff; font-size: 17px; }
.operations-workbench header p:not(.eyebrow) { margin: 6px 0 0; color: #91a8b9; font-size: 12px; }
.operations-workbench header small { color: #71899b; font-size: 12px; }
.operations-work-list { display: grid; gap: 9px; margin-top: 14px; }
.operation-work-item { border: 1px solid #30475d; border-radius: 10px; padding: 13px; background: rgba(7, 17, 27, .48); }
.operation-work-heading { display: flex; align-items: center; gap: 8px; min-width: 0; }
.operation-work-heading > span { flex: 0 0 auto; border: 1px solid #466078; border-radius: 99px; padding: 4px 7px; color: #c1d2df; font-size: 12px; font-weight: 850; }
.operation-work-heading strong { overflow: hidden; color: #e9f3fa; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.operation-work-heading em { margin-left: auto; flex: 0 0 auto; color: #9bb0bf; font-size: 12px; font-style: normal; }
.operation-work-impact { margin: 9px 0 0; color: #91a9ba; font-size: 12px; }
.operation-work-guidance { margin: 5px 0 0; color: #c2d2dd; font-size: 12px; line-height: 1.45; }
.operation-work-item footer { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 11px; }
.operation-work-item footer button { border: 1px solid #3d5872; border-radius: 7px; padding: 7px 9px; background: #111d2a; color: #d5e4f0; font-size: 12px; font-weight: 800; cursor: pointer; }
.operation-work-item footer button:first-child { border-color: #39755e; background: rgba(57, 135, 102, .12); color: #9cf2c3; }
.operation-work-item footer button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.operation-work-item.is-critical { border-color: #804852; background: rgba(124, 59, 66, .1); }
.operation-work-item.is-critical .operation-work-heading > span { border-color: #a85861; color: #ffc1c1; }
.operation-work-item.is-warning { border-color: #796337; }
.operation-work-item.is-warning .operation-work-heading > span { border-color: #916f35; color: #f3d278; }
.operations-work-empty { margin: 0; color: #9db2c2; font-size: 12px; }
.operations-work-queue { border: 1px solid #314d63; border-radius: 12px; padding: 20px; background: linear-gradient(135deg, rgba(14, 30, 43, .9), rgba(13, 23, 35, .84)); }
.operations-work-queue > header { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.operations-work-queue h2 { margin: 5px 0 0; color: #eaf5ff; font-size: 19px; }
.operations-work-queue header small, .operations-work-queue-note { color: #8da4b6; font-size: 12px; line-height: 1.5; }
.operations-work-queue-note { margin: 12px 0; }
.operations-work-queue-list { display: grid; gap: 9px; }
.operations-work-queue-item { display: flex; align-items: center; justify-content: space-between; gap: 18px; border: 1px solid #30475d; border-radius: 10px; padding: 13px; background: rgba(7,17,27,.46); }
.operations-work-queue-main { min-width: 0; }
.operations-work-queue-main > div { display: flex; align-items: center; gap: 8px; }
.operations-work-queue-main span { border: 1px solid #466078; border-radius: 99px; padding: 4px 7px; color: #c1d2df; font-size: 12px; font-weight: 850; }
.operations-work-queue-main strong { overflow: hidden; color: #e9f3fa; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.operations-work-queue-main em { margin-left: auto; color: #a4b6c4; font-size: 12px; font-style: normal; white-space: nowrap; }
.operations-work-queue-main p { margin: 8px 0 0; color: #91a9ba; font-size: 12px; }
.operations-work-queue-main small { display: block; margin-top: 5px; color: #c0d0dc; font-size: 12px; line-height: 1.45; }
.operations-work-queue-item footer { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: end; gap: 7px; }
.operations-work-queue-item footer button { border: 1px solid #3d5872; border-radius: 7px; padding: 7px 9px; background: #111d2a; color: #d5e4f0; font-size: 12px; font-weight: 800; cursor: pointer; }
.operations-work-queue-item footer button:first-child { border-color: #39755e; color: #9cf2c3; }
.operations-work-queue-item.is-critical { border-color: #804852; background: rgba(124,59,66,.1); }
.operations-work-queue-item.is-critical .operations-work-queue-main span { border-color: #a85861; color: #ffc1c1; }
.operations-work-queue-item.is-warning { border-color: #796337; }
.operations-work-queue-item.is-warning .operations-work-queue-main span { border-color: #916f35; color: #f3d278; }
.board-work-case-panel { border: 1px solid #2d475f; border-radius: 12px; padding: 20px; background: linear-gradient(135deg, rgba(14, 30, 43, .9), rgba(13, 23, 35, .84)); }
.board-work-case-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.board-work-actions { display: grid; justify-items: end; gap: 8px; }
.board-work-actions .primary-button { min-height: 34px; padding: 8px 11px; font-size: 12px; }
.board-origin-filters { margin-top: 10px; }
.origin-badge { display: inline-flex; align-items: center; border: 1px solid #52687a; border-radius: 99px; padding: 4px 7px; color: #b8cad8; font-size: 12px; font-weight: 850; white-space: nowrap; }
.origin-badge.is-crawler { border-color: #3e789a; background: rgba(79,195,247,.1); color: #9bdcff; }
.origin-badge.is-manual { border-color: #8065a4; background: rgba(181,140,255,.1); color: #d3bbff; }
.origin-badge.is-legacy_import { border-color: #5e6e7a; background: rgba(116,137,154,.1); color: #b6c4cf; }
.board-work-case-panel h2 { margin: 5px 0 0; color: #eaf5ff; font-size: 19px; }
.board-work-case-panel header small, .board-work-case-note { color: #8da4b6; font-size: 12px; line-height: 1.5; }
.board-work-case-note { margin: 12px 0; }
.origin-summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin: 12px 0; }
.origin-summary-card { display: grid; gap: 6px; min-width: 0; border: 1px solid #30475d; border-radius: 9px; padding: 11px; background: rgba(7, 17, 27, .45); }
.origin-summary-card strong { color: #eaf5ff; font-size: 17px; }
.origin-summary-card small, .origin-summary-card em, .origin-summary-card p { color: #91a9ba; font-size: 12px; font-style: normal; line-height: 1.4; }
.origin-summary-card em { color: #b9cbd7; }
.origin-summary-card p { min-height: 28px; margin: 1px 0 0; }
.origin-summary-card .secondary-button { justify-self: start; margin-top: 2px; padding: 6px 8px; font-size: 12px; }
.operations-report-panel { margin-top: 12px; border: 1px solid #304a60; border-radius: 12px; padding: 18px; background: linear-gradient(135deg, rgba(10, 23, 35, .92), rgba(13, 23, 35, .82)); }
.operations-report-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.report-actions { display: grid; justify-items: end; gap: 8px; }
.report-actions .secondary-button { padding: 6px 9px; font-size: 12px; }
.report-actions .report-date-filter { display: flex; align-items: center; gap: 6px; color: #9bb1c0; font-size: 12px; font-weight: 750; }
.report-actions .report-date-filter input { min-height: 28px; border: 1px solid #38566d; border-radius: 7px; padding: 3px 6px; background: #0b1723; color: #e4f0f7; font: inherit; }
.operations-report-panel h2 { margin: 4px 0 0; color: #eaf5ff; font-size: 18px; }
.operations-report-panel header small, .operations-report-footnote { display: block; margin-top: 7px; color: #91a9ba; font-size: 12px; line-height: 1.45; }
.operations-report-footnote { margin-bottom: 0; }
.report-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.board-inventory-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 14px 0; }
.board-inventory-summary article { display: grid; gap: 5px; min-width: 0; border: 1px solid #294359; border-radius: 9px; padding: 10px; background: rgba(6, 16, 25, .42); }
.board-inventory-summary span, .board-inventory-summary small { color: #91a9ba; font-size: 12px; line-height: 1.35; }
.board-inventory-summary strong { color: #eaf5ff; font-size: 18px; }
.report-card { display: grid; gap: 8px; min-width: 0; border: 1px solid #2d475f; border-radius: 10px; padding: 14px; background: rgba(5, 14, 22, .48); }
.report-card > span { color: #82a4ba; font-size: 12px; font-weight: 800; }
.report-card strong { color: #eaf5ff; font-size: 14px; line-height: 1.45; }
.report-card small { color: #9ab0c1; font-size: 12px; line-height: 1.45; }
.report-trend { margin-top: 14px; border-top: 1px solid #294257; padding-top: 14px; }
.report-trend header h3 { margin: 4px 0 0; color: #e8f5fb; font-size: 14px; }
.report-trend header small { display: block; margin-top: 5px; color: #91a9ba; font-size: 12px; }
.report-trend-list { display: grid; gap: 7px; margin-top: 12px; }
.report-trend-list article { display: grid; grid-template-columns: 86px minmax(70px, 1fr) 58px 52px; align-items: center; gap: 9px; color: #a9c0cf; font-size: 12px; }
.report-trend-list article > i { display: block; height: 8px; overflow: hidden; border-radius: 99px; background: #172a3a; }
.report-trend-list article > i > b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4fc3f7, #8ef0bf); }
.report-trend-list strong { color: #eaf5ff; font-size: 12px; text-align: right; }
.report-trend-list small { color: #8da4b6; text-align: right; }
.data-quality-list { display: grid; gap: 0; margin-top: 12px; }
.quality-item { display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid #24394c; padding: 12px 0; }
.quality-item:first-child { border-top: 0; }
.quality-item > div { min-width: 0; }
.quality-item span { display: inline-block; margin-right: 7px; color: #f3d278; font-size: 12px; font-weight: 800; }
.quality-item strong { color: #e7f3fa; font-size: 13px; }
.quality-item p, .quality-item small { margin: 5px 0 0; color: #91a9ba; font-size: 12px; line-height: 1.4; }
.quality-item-actions { display: grid; justify-items: end; gap: 7px; flex: 0 0 auto; }
.quality-item-actions > b, .quality-count { flex: 0 0 auto; border: 1px solid #6e5934; border-radius: 99px; padding: 6px 8px; color: #f3d278; font-size: 12px; }
.quality-item.is-critical .quality-item-actions > b { border-color: #9d555c; color: #ffc1c1; }
.quality-item-actions .secondary-button { padding: 6px 8px; font-size: 12px; }
@media (max-width: 820px) { .operations-report-panel > header { align-items: stretch; flex-direction: column; } .report-actions { justify-items: start; } .report-grid { grid-template-columns: 1fr; } .board-inventory-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .report-trend-list article { grid-template-columns: 72px minmax(50px, 1fr) 48px; } .report-trend-list small { display: none; } }
.origin-summary-card.is-crawler { border-color: #356886; }
.origin-summary-card.is-manual { border-color: #695288; }
.origin-summary-card.is-legacy_import { border-color: #4d5d69; }
.board-work-case-panel td strong { color: #e5f2fa; font-size: 12px; }
.board-work-case-panel td small { display: inline-block; max-width: 250px; overflow: hidden; color: #8da4b6; text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; }
.board-work-case-panel .muted { color: #8198aa; font-size: 12px; }
.terminal-confirmed { display: inline-block; border: 1px solid #52687a; border-radius: 7px; padding: 6px 8px; color: #a7bdcb; font-size: 12px; font-weight: 800; }
.board-review-dialog { width: min(560px, calc(100vw - 32px)); border: 1px solid #3b5871; border-radius: 14px; padding: 0; background: #0d1722; color: #e9f4fb; box-shadow: 0 30px 90px rgba(0,0,0,.68); }
.board-review-dialog::backdrop { background: rgba(0,0,0,.65); }
.board-review-dialog form { display: grid; gap: 13px; padding: 20px; }
.board-review-dialog header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.board-review-dialog header h2 { margin: 4px 0 0; font-size: 18px; }
.board-review-dialog form > p { margin: 0; color: #9ab0c1; font-size: 12px; line-height: 1.5; }
.board-review-dialog label { display: grid; gap: 6px; color: #bbcedb; font-size: 12px; font-weight: 750; }
.board-review-dialog input, .board-review-dialog select, .board-review-dialog textarea { width: 100%; box-sizing: border-box; border: 1px solid #30475d; border-radius: 8px; padding: 9px 10px; background: #09121b; color: #eaf5ff; font: inherit; font-size: 12px; }
.board-review-dialog input[readonly] { color: #8399aa; }
.board-review-dialog textarea { resize: vertical; }
.board-review-dialog footer { display: flex; justify-content: end; padding-top: 4px; }
#campaign-posts-dialog { width: min(1240px, calc(100vw - 48px)); max-height: calc(100vh - 56px); }
#campaign-posts-dialog > form { max-height: calc(100vh - 56px); box-sizing: border-box; }
#campaign-posts-dialog .campaign-posts-tools { display: flex; align-items: end; gap: 9px; margin: -2px 0 1px; }
#campaign-posts-dialog .campaign-posts-tools label { flex: 0 0 160px; }
#campaign-posts-dialog .campaign-posts-tools .campaign-posts-search-label { flex: 1 1 360px; }
#campaign-posts-dialog .campaign-posts-tools input { min-height: 37px; }
#campaign-posts-dialog .campaign-posts-tools button { flex: 0 0 auto; min-height: 37px; border: 1px solid #42647d; border-radius: 8px; padding: 0 14px; background: #14263a; color: #e7f3fb; font: inherit; font-size: 12px; font-weight: 750; cursor: pointer; }
#campaign-posts-dialog .campaign-posts-tools button:hover { border-color: #8ef0bf; color: #8ef0bf; }
#campaign-posts-dialog .table-wrap { max-height: min(56vh, 620px); overflow: auto; }
#campaign-posts-dialog table { min-width: 860px; }
@media (max-width: 760px) { #campaign-posts-dialog { width: calc(100vw - 24px); max-height: calc(100vh - 24px); } #campaign-posts-dialog > form { max-height: calc(100vh - 24px); padding: 15px; } #campaign-posts-dialog .campaign-posts-tools { align-items: stretch; flex-direction: column; } #campaign-posts-dialog .campaign-posts-tools label, #campaign-posts-dialog .campaign-posts-tools .campaign-posts-search-label { flex: 1 1 auto; } }
.saved-search-panel { margin-top: 12px; border: 1px solid #35516a; border-radius: 12px; padding: 18px; background: rgba(13, 23, 35, .84); }
.saved-search-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.saved-search-panel h2 { margin: 4px 0 0; color: #e7f0f8; font-size: 15px; }
.saved-search-note { margin: 10px 0 0; color: #9fb4c5; font-size: 12px; line-height: 1.45; }
.saved-search-list { display: grid; gap: 0; margin-top: 10px; }
.saved-search-list article { display: flex; align-items: center; justify-content: space-between; gap: 14px; border-top: 1px solid #203245; padding: 10px 0; }
.saved-search-list article > div { min-width: 0; }
.saved-search-list strong, .saved-search-list span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.saved-search-list strong { color: #eaf5ff; font-size: 12px; }
.saved-search-list span { margin-top: 4px; color: #8298ac; font-size: 12px; }
.saved-search-list b { flex: 0 0 auto; border: 1px solid #486882; border-radius: 99px; padding: 5px 8px; color: #76d6ff; font-size: 12px; }
.operations-lanes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 12px; }
.operations-lane { border: 1px solid #2a4056; border-radius: 12px; padding: 18px; background: rgba(13, 23, 35, .84); }
.operations-lane > header { display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.operations-lane .eyebrow { margin: 0; }
.operations-lane h2 { margin: 4px 0 0; color: #e7f0f8; font-size: 15px; }
.operations-lane button { flex: 0 0 auto; border: 1px solid #42647d; border-radius: 7px; padding: 7px 9px; background: transparent; color: #b8cbd9; font-size: 12px; cursor: pointer; }
.operations-lane button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.lane-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 14px; }
.lane-metrics div { min-width: 0; border-radius: 8px; padding: 10px; background: rgba(7, 17, 27, .54); }
.lane-metrics span, .lane-metrics small { display: block; color: #8298ac; font-size: 12px; line-height: 1.4; }
.lane-metrics strong { display: block; overflow: hidden; margin: 5px 0 3px; color: #edf7ff; font-size: 20px; letter-spacing: -.04em; text-overflow: ellipsis; white-space: nowrap; }
.is-crawl-lane .lane-metrics strong { color: #76d6ff; }
.is-macro-lane .lane-metrics strong { color: #cbb0ff; }
.lane-callout { margin: 12px 0 0; border-left: 3px solid #f3c969; padding: 8px 10px; background: rgba(154, 126, 53, .1); color: #f4d68a; font-size: 12px; line-height: 1.45; }
.operations-lane > footer { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 11px; color: #8298ac; font-size: 12px; }
.queue-hold-panel { margin-top: 12px; border: 1px solid #594438; border-radius: 12px; padding: 18px; background: linear-gradient(135deg, rgba(50, 34, 27, .62), rgba(13, 23, 35, .84)); }
.queue-hold-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.queue-hold-panel h2 { margin: 4px 0 0; color: #f4e6db; font-size: 15px; }
.queue-hold-note { margin: 10px 0 0; color: #c7ada0; font-size: 12px; line-height: 1.45; }
.queue-hold-list { display: grid; gap: 0; margin-top: 10px; }
.queue-hold-list article { display: flex; align-items: center; justify-content: space-between; gap: 14px; border-top: 1px solid rgba(116, 79, 62, .42); padding: 10px 0; }
.queue-hold-list article > div { min-width: 0; }
.queue-hold-list strong, .queue-hold-list span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.queue-hold-list strong { color: #f2e6de; font-size: 12px; }
.queue-hold-list span { margin-top: 4px; color: #b59688; font-size: 12px; }
.queue-hold-list b { flex: 0 0 auto; border: 1px solid #795744; border-radius: 99px; padding: 5px 8px; color: #f3c969; font-size: 12px; }
.lane-reasons { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.lane-reasons span { display: inline-flex; gap: 7px; align-items: center; border: 1px solid #344d63; border-radius: 99px; padding: 6px 8px; color: #afc2cf; font-size: 12px; }
.lane-reasons b { color: #dce8f2; font-weight: 700; }
.lane-reasons strong { color: #f3c969; font-size: 12px; }
.board-work-panel { margin-top: 12px; }
.campaign-operations-panel { margin-top: 12px; border: 1px solid #40516e; border-radius: 12px; padding: 18px; background: linear-gradient(135deg, rgba(22, 27, 54, .78), rgba(13, 23, 35, .84)); }
.campaign-operations-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.campaign-operations-panel h2 { margin: 4px 0 0; color: #e9ebff; font-size: 15px; }
.campaign-operations-note { margin: 10px 0 0; color: #aeb7d6; font-size: 12px; line-height: 1.45; }
.campaign-operations-list { display: grid; gap: 0; margin-top: 10px; }
.campaign-operations-list article { display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid rgba(81, 98, 137, .42); padding: 11px 0; }
.campaign-main { min-width: 0; }
.campaign-main strong, .campaign-main span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.campaign-main strong { color: #ecf0ff; font-size: 12px; }
.campaign-main span { margin-top: 4px; color: #a4b0cc; font-size: 12px; }
.campaign-counts { flex: 0 0 auto; text-align: right; }
.campaign-counts b { display: block; color: #8ef0bf; font-size: 13px; }
.campaign-counts b i { margin-right: 6px; color: #9eb1ca; font-size: 12px; font-style: normal; font-weight: 700; }
.campaign-counts span { display: block; margin-top: 4px; color: #a4b0cc; font-size: 12px; }
.board-work-summary { margin: 11px 0 0; color: #aebfcd; font-size: 12px; line-height: 1.5; }
.board-work-list { display: grid; gap: 0; margin-top: 13px; }
.board-work-item { display: flex; align-items: center; justify-content: space-between; gap: 14px; border-top: 1px solid #203245; padding: 11px 0; }
.board-work-item > div { min-width: 0; }
.board-work-item strong { display: block; overflow: hidden; color: #e7f0f8; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.board-work-item span { display: block; overflow: hidden; margin-top: 4px; color: #8298ac; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.board-work-item b { flex: 0 0 auto; border: 1px solid #60788c; border-radius: 99px; padding: 5px 8px; color: #b8cad8; font-size: 12px; }
.board-work-item b.is-needed { border-color: #9a7e35; color: #f7d66b; background: rgba(154, 126, 53, .12); }
.board-work-item b.is-registered { border-color: #398766; color: #8ef0bf; background: rgba(57, 135, 102, .12); }
.technical-briefing, .technical-details, .technical-metrics { display: none; }
.seed-management { display: grid; gap: 18px; }
.seed-management .discovery-panel { margin-top: 0; }
.activity-panel { border: 1px solid #26394c; border-radius: 12px; padding: 20px; background: rgba(13, 23, 35, .84); }
.activity-list { display: grid; gap: 0; margin-top: 14px; }
.activity-item { display: flex; align-items: start; justify-content: space-between; gap: 16px; border-top: 1px solid #203245; padding: 12px 0; }
.activity-item strong { color: #dce8f2; font-size: 13px; }
.activity-item p { margin: 4px 0 0; color: #8298ac; font-size: 12px; }
.activity-item time { flex: 0 0 auto; color: #7890a7; font-size: 12px; white-space: nowrap; }
.briefing-panel { border: 1px solid #2a4056; border-radius: 12px; padding: 20px; background: linear-gradient(135deg, rgba(14, 30, 43, .9), rgba(13, 23, 35, .84)); }
.pipeline-note { margin: 10px 0 0; color: #8fa6b9; font-size: 12px; line-height: 1.5; }
.pipeline-readout { display: flex; align-items: center; gap: 10px; margin-top: 16px; border: 1px solid #35516a; border-radius: 11px; padding: 13px; background: rgba(7, 17, 27, .48); color: #9eb4c7; font-size: 12px; }
.pipeline-readout b { flex: 0 0 auto; color: #4fc3f7; font-size: 18px; }
.flow-step { flex: 1; min-width: 0; }
.flow-step > span { display: block; color: #8fa6b9; font-size: 12px; font-weight: 800; }
.flow-step strong { display: block; margin: 6px 0 8px; color: #eef7ff; font-size: 22px; letter-spacing: -.03em; }
.flow-step small { display: block; overflow: hidden; color: #8fa6b9; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.flow-track { height: 5px; overflow: hidden; margin-bottom: 7px; border-radius: 99px; background: #1e3244; }
.flow-track i { display: block; width: 0; height: 100%; border-radius: inherit; transition: width .35s ease; }
.is-crawl .flow-track i { background: #4fc3f7; }
.is-macro .flow-track i { background: #b58cff; }
.is-publish .flow-track i { background: #8ef0bf; }
.briefing-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.briefing-grid article { border: 1px solid #314b64; border-radius: 10px; padding: 16px; background: rgba(7, 17, 27, .45); }
.briefing-grid article > header { display: flex; justify-content: space-between; gap: 14px; color: #9ab0c3; font-size: 12px; font-weight: 800; }
.briefing-grid article > header strong { color: #eef7ff; font-size: 16px; }
.briefing-grid article > p { min-height: 36px; margin: 12px 0; color: #b7cad9; font-size: 12px; line-height: 1.5; }
.briefing-grid dl { display: grid; gap: 9px; margin: 0; }
.briefing-grid dl div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; }
.briefing-grid dt { color: #7890a7; font-size: 12px; }
.briefing-grid dd { min-width: 0; margin: 0; color: #d5e4f0; font-size: 12px; line-height: 1.5; }
.outcome-visual { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 12px; }
.outcome-visual article { border: 1px solid #2d455d; border-radius: 10px; padding: 13px; background: rgba(7, 17, 27, .36); }
.outcome-visual header, .outcome-visual footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.outcome-visual header span { color: #9eb4c7; font-size: 12px; font-weight: 800; }
.outcome-visual header strong { color: #eef7ff; font-size: 15px; }
.status-meter { display: flex; overflow: hidden; height: 8px; margin: 11px 0 9px; border-radius: 99px; background: #1e3244; }
.status-meter i { display: block; width: 0; min-width: 0; height: 100%; transition: width .35s ease; }
.status-meter .is-success { background: #69dca0; }
.status-meter .is-danger { background: #f78b8b; }
.status-meter .is-pending { background: #f3c969; }
.outcome-visual footer { justify-content: flex-start; color: #8298ac; font-size: 12px; }
.journey-panel { margin-top: 12px; border: 1px solid #2d455d; border-radius: 10px; padding: 15px; background: rgba(7, 17, 27, .3); }
.journey-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.journey-panel .eyebrow { margin: 0; }
.journey-panel h3 { margin: 4px 0 0; color: #e7f0f8; font-size: 14px; }
.journey-panel > header small { color: #7890a7; font-size: 12px; }
.journey-list { display: grid; gap: 7px; margin-top: 12px; }
.journey-item { display: grid; grid-template-columns: minmax(0, 1fr) minmax(190px, .8fr); gap: 12px; align-items: center; border-top: 1px solid #203245; padding-top: 9px; }
.journey-source { min-width: 0; }
.journey-source a { display: block; overflow: hidden; color: #dce8f2; font-size: 12px; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.journey-source a:hover { color: #8ef0bf; text-decoration: underline; }
.journey-source time { display: block; margin-top: 3px; color: #7890a7; font-size: 12px; }
.journey-state { min-width: 0; border-left: 3px solid #657c91; padding-left: 9px; }
.journey-state strong, .journey-state span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.journey-state strong { color: #d5e4f0; font-size: 12px; }
.journey-state span { margin-top: 3px; color: #8298ac; font-size: 12px; }
.journey-state.is-unlinked { border-color: #f3c969; }
.journey-state.is-unlinked strong { color: #f7d66b; }
.journey-state.is-pending { border-color: #b58cff; }
.journey-state.is-pending strong { color: #cbb0ff; }
.journey-state.is-posted { border-color: #69dca0; }
.journey-state.is-posted strong { color: #8ef0bf; }
.journey-state.is-ready { border-color: #4fc3f7; }
.journey-state.is-ready strong { color: #76d6ff; }
.journey-state.is-failed { border-color: #f78b8b; }
.journey-state.is-failed strong { color: #f78b8b; }
.briefing-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.briefing-detail { border: 1px solid #26394c; border-radius: 12px; padding: 18px; background: rgba(13, 23, 35, .84); }
.briefing-detail h3 { margin: 0 0 10px; color: #dce8f2; font-size: 14px; }
.briefing-detail article { display: grid; gap: 4px; border-top: 1px solid #203245; padding: 10px 0; }
.briefing-detail article strong { overflow: hidden; color: #e7f0f8; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.briefing-detail article span { overflow: hidden; color: #8fa6b9; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }

.query-profile-panel {
  margin-top: 18px;
  border: 1px solid #26394c;
  border-radius: 12px;
  padding: 22px;
  background: rgba(13, 23, 35, .84);
}

.query-profile-panel > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}

.query-profile-panel h2 { margin: 7px 0; font-size: 20px; }
.query-profile-panel header small, .query-profile-panel header > span { color: #7890a7; font-size: 12px; }
.seed-query-list { display: grid; gap: 8px; margin-top: 16px; }
.query-profile-tools { margin-top: 16px; }
.query-profile-tools form { display: flex; gap: 7px; max-width: 440px; }
.query-profile-tools input { width: 100%; border: 1px solid #304359; border-radius: 8px; padding: 9px 10px; background: #0b131d; color: #edf3fb; outline: none; }
.query-profile-tools button, .query-profile-pagination button { border: 1px solid #304359; border-radius: 7px; padding: 8px 10px; background: transparent; color: #b9c9d8; font-size: 12px; font-weight: 800; cursor: pointer; }
.query-profile-tools button:hover, .query-profile-pagination button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.seed-query-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center; border: 1px solid #26394c; border-radius: 9px; padding: 12px; background: #0b131d; }
.seed-query-item strong { display: block; overflow: hidden; color: #e7f0f8; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.seed-query-item small { display: block; margin-top: 5px; color: #7f95a9; font-size: 12px; }
.seed-query-item button { border: 1px solid #38506a; border-radius: 7px; padding: 7px 10px; background: transparent; color: #c5d6e4; font-size: 12px; font-weight: 800; cursor: pointer; }
.seed-query-item button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.seed-query-item.is-disabled { opacity: .55; }
.query-profile-pagination { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px; color: #7d92a6; font-size: 12px; }
.query-profile-pagination div { display: flex; gap: 6px; }
.query-profile-pagination button:disabled { opacity: .35; cursor: not-allowed; }
.candidate-header-actions { display: flex; align-items: end; justify-content: end; gap: 10px; flex-wrap: wrap; }
.candidate-header-actions > button { border: 1px solid #8ef0bf; border-radius: 7px; padding: 9px 11px; background: #183226; color: #b2ffd6; font-size: 12px; font-weight: 900; cursor: pointer; }
.candidate-header-actions > button:hover { background: #21422f; }
.approval-dialog { width: min(100% - 32px, 510px); border: 1px solid #35516a; border-radius: 14px; padding: 0; background: #0d1722; color: #edf3fb; box-shadow: 0 30px 90px rgba(0, 0, 0, .6); }
.approval-dialog::backdrop { background: rgba(0, 0, 0, .68); }
.approval-dialog form { display: grid; gap: 14px; padding: 26px; }
.approval-dialog h2 { margin: 0; font-size: 22px; }
.approval-dialog p:not(.eyebrow):not(.form-message) { margin: 0; color: #a9bdcf; line-height: 1.65; font-size: 13px; }
.approval-dialog .dialog-note { border-left: 2px solid #8ef0bf; padding-left: 11px; color: #c8d9e5; }
.approval-dialog form > div { display: flex; justify-content: end; gap: 8px; margin-top: 5px; }
.approval-dialog form > div button[type="button"] { border: 1px solid #3b5269; border-radius: 8px; padding: 10px 12px; background: transparent; color: #c4d3df; font-weight: 800; cursor: pointer; }
.approval-dialog .primary-button { padding: 10px 12px; }

@media (max-width: 760px) {
  .query-profile-panel > header, .seed-query-item, .query-profile-pagination { align-items: stretch; flex-direction: column; }
  .candidate-header-actions { align-items: stretch; justify-content: stretch; }
  .seed-query-item { grid-template-columns: 1fr; }
}

/* ── BMpro 게시글 패널 ── */
.bmpro-panel {
  margin-top: 18px;
  border: 1px solid #26394c;
  border-radius: 12px;
  padding: 22px;
  background: rgba(13, 23, 35, .84);
  position: relative;
  overflow: hidden;
}
.bmpro-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, #8ef0bf, #4fc3f7, #8ef0bf);
  opacity: .6;
}
.bmpro-panel > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}
.bmpro-panel h2 { margin: 7px 0; font-size: 20px; }
.bmpro-panel header small { color: #7890a7; font-size: 12px; }
.bmpro-header-actions { display: flex; align-items: end; gap: 10px; }

/* ── BMpro 통계 요약 카드 ── */
.bmpro-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin-top: 16px;
}
.bmpro-stat-card {
  border: 1px solid #26394c;
  border-radius: 10px;
  padding: 14px 16px;
  background: rgba(11, 19, 29, .7);
  text-align: center;
  transition: border-color .2s, transform .15s;
}
.bmpro-stat-card:hover {
  border-color: #3d5a78;
  transform: translateY(-1px);
}
.bmpro-stat-card .stat-value {
  display: block;
  font-size: 26px;
  font-weight: 900;
  letter-spacing: -.02em;
  line-height: 1.2;
}
.bmpro-stat-card .stat-label {
  display: block;
  margin-top: 4px;
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.bmpro-stat-card.stat-success .stat-value { color: #8ef0bf; }
.bmpro-stat-card.stat-failed .stat-value { color: #f78b8b; }
.bmpro-stat-card.stat-pending .stat-value { color: #f7d66b; }
.bmpro-stat-card.stat-total .stat-value { color: #7fc3f0; }
.bmpro-stat-card.stat-domains .stat-value { color: #c9a0f0; }
.bmpro-stat-card.stat-recent .stat-value { color: #76d6ff; }
.bmpro-stat-card.stat-campaign .stat-value { color: #f3d278; }
.bmpro-completion-note { margin: 10px 0 0; border-left: 3px solid #398766; padding: 9px 11px; background: rgba(57, 135, 102, .1); color: #b9d9ca; font-size: 12px; line-height: 1.45; }
.bmpro-post-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 7px; align-items: center; }
.bmpro-post-actions .url-link { font-size: 12px; font-weight: 800; }
.bmpro-post-actions .copy-button { border: 1px solid #3d5872; border-radius: 6px; padding: 4px 7px; background: #111d2a; color: #c9d8e4; font-size: 12px; font-weight: 750; cursor: pointer; }
.bmpro-post-actions .copy-button:hover { border-color: #8ef0bf; color: #8ef0bf; }

/* ── BMpro 도구 모음 ── */
.bmpro-tools {
  display: flex;
  gap: 8px;
  margin-top: 14px;
  flex-wrap: wrap;
}
.bmpro-tools form {
  display: flex;
  gap: 7px;
}
.bmpro-tools input {
  width: 180px;
  border: 1px solid #304359;
  border-radius: 8px;
  padding: 9px 10px;
  background: #0b131d;
  color: #edf3fb;
  outline: none;
  transition: border-color .2s;
}
.bmpro-tools input:focus { border-color: #5a7a9a; }
.bmpro-tools button {
  border: 1px solid #304359;
  border-radius: 7px;
  padding: 8px 10px;
  background: transparent;
  color: #b9c9d8;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.bmpro-tools button:hover { border-color: #8ef0bf; color: #8ef0bf; }
.bmpro-panel .filters { display: flex; gap: 4px; }
.bmpro-panel .filters button {
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 6px 10px;
  background: transparent;
  color: #9aafc2;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.bmpro-panel .filters button.is-active { border-color: #8ef0bf; color: #8ef0bf; }
.bmpro-panel .filters button:hover { color: #c5dae8; }

/* ── BMpro 테이블 개선 ── */
.bmpro-panel .table-wrap {
  margin-top: 12px;
  border: 1px solid #1e2e3e;
  border-radius: 10px;
  overflow: hidden;
}
.bmpro-panel .table-wrap table {
  width: 100%;
  border-collapse: collapse;
}
.bmpro-panel .table-wrap th {
  padding: 10px 12px;
  background: rgba(11, 19, 29, .6);
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid #1e2e3e;
}
.bmpro-panel .table-wrap td {
  padding: 10px 12px;
  font-size: 13px;
  border-bottom: 1px solid #1a2836;
  vertical-align: middle;
}
.bmpro-panel .table-wrap tbody tr:last-child td { border-bottom: none; }
.bmpro-panel .table-wrap tbody tr:hover td { background: rgba(142, 240, 191, .03); }
.bmpro-panel .table-wrap td .url-link {
  display: inline-block;
  max-width: 320px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.bmpro-panel .table-wrap td .domain-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  background: rgba(79, 195, 247, .1);
  color: #7fc3f0;
  font-size: 12px;
  font-weight: 700;
}
.bmpro-panel .table-wrap td .campaign-tag {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 4px;
  background: rgba(201, 160, 240, .1);
  color: #c9a0f0;
  font-size: 12px;
  font-weight: 700;
}
.bmpro-panel .table-wrap td .post-title-text {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: 240px;
  color: #dce8f0;
  line-height: 1.4;
}

/* ── BMpro 발행일 배지 ── */
.bmpro-panel .table-wrap td .date-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: #8aa0b5;
  font-size: 12px;
  white-space: nowrap;
}
.bmpro-panel .table-wrap td .date-badge::before {
  content: '🕐';
  font-size: 12px;
  opacity: .7;
}

/* ── BMpro 상태 뱃지 개선 ── */
.bmpro-panel .table-wrap td .status-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
}
.bmpro-panel .table-wrap td .status-badge::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
}
.bmpro-panel .table-wrap td .status-badge.is-success {
  background: rgba(142, 240, 191, .12);
  color: #8ef0bf;
}
.bmpro-panel .table-wrap td .status-badge.is-success::before { background: #8ef0bf; }
.bmpro-panel .table-wrap td .status-badge.is-failed {
  background: rgba(247, 139, 139, .12);
  color: #f78b8b;
}
.bmpro-panel .table-wrap td .status-badge.is-failed::before { background: #f78b8b; }
.bmpro-panel .table-wrap td .status-badge.is-pending {
  background: rgba(247, 214, 107, .1);
  color: #f7d66b;
}
.bmpro-panel .table-wrap td .status-badge.is-pending::before { background: #f7d66b; }

/* ── BMpro 페이지네이션 ── */
.bmpro-panel .pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 14px;
  color: #7d92a6;
  font-size: 12px;
}
.bmpro-panel .pagination div { display: flex; gap: 6px; }
.bmpro-panel .pagination button {
  border: 1px solid #304359;
  border-radius: 7px;
  padding: 8px 12px;
  background: transparent;
  color: #b9c9d8;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.bmpro-panel .pagination button:hover:not(:disabled) { border-color: #8ef0bf; color: #8ef0bf; }
.bmpro-panel .pagination button:disabled { opacity: .35; cursor: not-allowed; }

/* ── BMpro 빈 상태 ── */
.bmpro-panel .table-wrap td.empty {
  padding: 40px 16px;
  text-align: center;
  color: #5a7085;
  font-size: 13px;
}

/* ── BMpro 로딩 스켈레톤 ── */
.bmpro-panel.is-loading .bmpro-stats .stat-value,
.bmpro-panel.is-loading .table-wrap td:not(.empty) {
  position: relative;
  color: transparent !important;
  overflow: hidden;
}
.bmpro-panel.is-loading .bmpro-stats .stat-value::after,
.bmpro-panel.is-loading .table-wrap td:not(.empty)::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(142, 240, 191, .06), transparent);
  animation: bmpro-shimmer 1.6s infinite;
}
@keyframes bmpro-shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* ── BMpro 알림 배너 ── */
.bmpro-notice {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  padding: 10px 14px;
  border: 1px solid #2a4055;
  border-radius: 8px;
  background: rgba(79, 195, 247, .05);
  color: #9ab8d0;
  font-size: 12px;
  line-height: 1.5;
}
.bmpro-notice strong { color: #c5dae8; }

@media (max-width: 760px) {
  .bmpro-panel > header { flex-direction: column; align-items: stretch; }
  .bmpro-stats { grid-template-columns: repeat(2, 1fr); }
  .bmpro-tools { flex-direction: column; }
  .bmpro-tools form { flex-direction: column; }
  .bmpro-tools input { width: 100%; }
  .bmpro-panel .table-wrap { overflow-x: auto; }
  .bmpro-panel .table-wrap td .url-link { max-width: 160px; }
  .bmpro-panel .table-wrap td .post-title-text { max-width: 120px; }
}

/* ── BMpro 탭 바 ── */
.bmpro-tab-bar {
  display: flex;
  gap: 4px;
  margin-top: 14px;
  border-bottom: 1px solid #1e2e3e;
  padding-bottom: 0;
}
.bmpro-tab-bar button {
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 8px 8px 0 0;
  padding: 9px 16px;
  background: transparent;
  color: #8aa0b5;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  margin-bottom: -1px;
}
.bmpro-tab-bar button:hover {
  background: rgba(142, 240, 191, .04);
  color: #c5dae8;
}
.bmpro-tab-bar button.is-active {
  border-color: #26394c;
  background: rgba(11, 19, 29, .5);
  color: #8ef0bf;
}

/* ── BMpro jobs 섹션 ── */
.bmpro-jobs-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin-top: 16px;
}
.bmpro-jobs-meta {
  margin-top: 14px;
}
.bmpro-campaign-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.campaign-stat-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #26394c;
  border-radius: 8px;
  padding: 8px 12px;
  background: rgba(11, 19, 29, .5);
  font-size: 12px;
}
.campaign-stat-item strong {
  color: #c9a0f0;
  font-weight: 800;
}
.campaign-stat-item .stat-count {
  color: #8aa0b5;
}
.bmpro-panel .table-wrap td .job-name-text {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: 200px;
  color: #dce8f0;
  font-weight: 700;
}
.bmpro-panel .table-wrap td .status-badge.is-active {
  background: rgba(142, 240, 191, .12);
  color: #8ef0bf;
}
.bmpro-panel .table-wrap td .status-badge.is-active::before { background: #8ef0bf; }
.bmpro-panel .table-wrap td .status-badge.is-paused {
  background: rgba(247, 214, 107, .1);
  color: #f7d66b;
}
.bmpro-panel .table-wrap td .status-badge.is-paused::before { background: #f7d66b; }

@media (max-width: 760px) {
  .bmpro-jobs-stats { grid-template-columns: repeat(2, 1fr); }
  .bmpro-campaign-stats { flex-direction: column; }
}

/* ── Phase 3 item 2: 시스템 헬스 체크 패널 ── */
.health-panel {
  margin-top: 18px;
  border: 1px solid #26394c;
  border-radius: 12px;
  padding: 22px;
  background: rgba(13, 23, 35, .84);
}
.health-panel > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}
.health-panel h2 { margin: 7px 0; font-size: 20px; }
.health-panel header small { color: #7890a7; font-size: 12px; }
.health-overall { display: flex; align-items: center; gap: 8px; }
.health-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 800;
}
.health-badge.is-healthy { background: rgba(142, 240, 191, .12); color: #8ef0bf; }
.health-badge.is-degraded { background: rgba(247, 214, 107, .1); color: #f7d66b; }
.health-badge.is-critical { background: rgba(247, 139, 139, .12); color: #f78b8b; }
.health-meta { margin-top: 12px; color: #8aa0b5; font-size: 12px; }
.health-meta strong { color: #c5dae8; }
.health-checks {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}
.health-check-item {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid #26394c;
  border-radius: 8px;
  padding: 10px 14px;
  background: rgba(11, 19, 29, .5);
  font-size: 13px;
}
.health-check-item.is-healthy { border-color: #1a4a2e; }
.health-check-item.is-warning { border-color: #4a3e1a; }
.health-check-icon { font-size: 16px; flex-shrink: 0; }
.health-check-name { color: #e7f0f8; font-weight: 700; min-width: 120px; }
.health-check-status { color: #8aa0b5; font-size: 12px; min-width: 60px; }
.health-check-detail { color: #6a8095; font-size: 12px; margin-left: auto; text-align: right; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Phase 3 item 3: 성능 메트릭 패널 ── */
.perf-panel {
  margin-top: 18px;
  border: 1px solid #26394c;
  border-radius: 12px;
  padding: 22px;
  background: rgba(13, 23, 35, .84);
}
.perf-panel > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}
.perf-panel h2 { margin: 7px 0; font-size: 20px; }
.perf-panel header small { color: #7890a7; font-size: 12px; }
.perf-section {
  margin-top: 20px;
}
.perf-section h3 {
  margin: 0 0 10px 0;
  font-size: 15px;
  color: #c5dae8;
  font-weight: 800;
}
.perf-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
}
.perf-card {
  border: 1px solid #26394c;
  border-radius: 10px;
  padding: 14px 16px;
  background: rgba(11, 19, 29, .7);
  text-align: center;
  transition: border-color .2s;
}
.perf-card:hover { border-color: #3d5a78; }
.perf-card .perf-value {
  display: block;
  font-size: 24px;
  font-weight: 900;
  letter-spacing: -.02em;
  line-height: 1.2;
  color: #7fc3f0;
}
.perf-card .perf-label {
  display: block;
  margin-top: 4px;
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* 일별 게시 분포 */
.perf-day-list {
  display: grid;
  gap: 6px;
}
.perf-day-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border: 1px solid #26394c;
  border-radius: 6px;
  background: rgba(11, 19, 29, .4);
  font-size: 12px;
}
.perf-day-date {
  min-width: 80px;
  color: #c5dae8;
  font-weight: 700;
}
.perf-day-bar {
  flex: 1;
  height: 8px;
  border-radius: 4px;
  background: rgba(247, 139, 139, .15);
  overflow: hidden;
}
.perf-day-bar-fill {
  display: block;
  height: 100%;
  border-radius: 4px;
  background: linear-gradient(90deg, #8ef0bf, #4fc3f7);
  transition: width .5s ease;
}
.perf-day-counts {
  min-width: 100px;
  text-align: right;
  color: #8aa0b5;
  font-size: 12px;
}

/* 캠페인별 게시 현황 */
.perf-campaign-list {
  display: grid;
  gap: 6px;
}
.perf-campaign-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border: 1px solid #26394c;
  border-radius: 6px;
  background: rgba(11, 19, 29, .4);
  font-size: 12px;
}
.perf-campaign-name {
  min-width: 120px;
  color: #c9a0f0;
  font-weight: 700;
}
.perf-campaign-bar {
  flex: 1;
  height: 8px;
  border-radius: 4px;
  background: rgba(247, 139, 139, .15);
  overflow: hidden;
}

/* ── 사이드바 그룹 레이블 ── */
.nav-group-label {
  display: block;
  padding: 16px 16px 6px;
  color: #5a738b;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
  user-select: none;
}

/* 메뉴가 화면보다 길어져도 하단 로그아웃 영역을 덮지 않고, 포인터가 메뉴 위에 있을 때 휠로 독립 스크롤된다. */
.console-sidebar { grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; }
.console-sidebar nav { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding-right: 5px; scrollbar-gutter: stable; }
.console-sidebar nav::-webkit-scrollbar { width: 7px; }
.console-sidebar nav::-webkit-scrollbar-thumb { border-radius: 99px; background: #38516a; }
.console-sidebar nav::-webkit-scrollbar-thumb:hover { background: #5f819f; }
.console-sidebar .nav-publish { border-color: #398766; background: rgba(57, 135, 102, .12); color: #b9f4d2; }
.console-sidebar .nav-publish:hover, .console-sidebar .nav-publish.is-active { border-color: #8ef0bf; background: rgba(57, 135, 102, .22); color: #effff5; }

/* ── 대시보드 (운영 현황) ── */
.dashboard {
  display: grid;
  gap: 18px;
}

.dashboard-health-bar {
  display: flex;
  align-items: center;
  gap: 10px;
}

.dashboard-health-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #304359;
  border-radius: 20px;
  padding: 7px 16px;
  background: rgba(11, 19, 29, .7);
  color: #b9c9d8;
  font-size: 13px;
  font-weight: 700;
  user-select: none;
}
.dashboard-health-badge.is-healthy {
  border-color: #2e7d5a;
  background: rgba(46, 125, 90, .15);
  color: #8ef0bf;
}
.dashboard-health-badge.is-degraded {
  border-color: #b8860b;
  background: rgba(184, 134, 11, .15);
  color: #ffd700;
}
.dashboard-health-badge.is-critical {
  border-color: #b22222;
  background: rgba(178, 34, 34, .15);
  color: #ff6b6b;
}

.dashboard-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
}

.dashboard-card {
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid #26394c;
  border-radius: 10px;
  padding: 14px 16px;
  background: rgba(11, 19, 29, .7);
  transition: border-color .2s, transform .15s;
}
.dashboard-card:hover {
  border-color: #3d5a7a;
  transform: translateY(-1px);
}

.dashboard-card-icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: rgba(13, 23, 35, .6);
  font-size: 18px;
}

.dashboard-card div {
  min-width: 0;
}

.dashboard-card strong {
  display: block;
  color: #edf3fb;
  font-size: 18px;
  font-weight: 800;
  line-height: 1.2;
}

.dashboard-card small {
  display: block;
  margin-top: 2px;
  color: #7890a7;
  font-size: 12px;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .console-sidebar { overflow: visible; }
  .console-sidebar nav { overflow: visible; padding-right: 0; }
  .dashboard-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}
.perf-campaign-bar-fill {
  display: block;
  height: 100%;
  border-radius: 4px;
  background: linear-gradient(90deg, #8ef0bf, #4fc3f7);
  transition: width .5s ease;
}
.perf-campaign-counts {
  min-width: 120px;
  text-align: right;
  color: #8aa0b5;
  font-size: 12px;
}

@media (max-width: 760px) {
  .health-panel > header { flex-direction: column; align-items: stretch; }
  .health-check-item { flex-wrap: wrap; }
  .health-check-detail { margin-left: 26px; max-width: 100%; }
  .perf-panel > header { flex-direction: column; align-items: stretch; }
  .perf-grid { grid-template-columns: repeat(2, 1fr); }
  .perf-day-item, .perf-campaign-item { flex-wrap: wrap; }
}

/* ============================================================
   BMpro 운영 현황 (bmpro-status-section)
   ============================================================ */
#bmpro-status-section {
  display: block;
}

.bmpro-status-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 16px;
}

.bmpro-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #304359;
  border-radius: 20px;
  padding: 7px 16px;
  background: rgba(11, 19, 29, .7);
  color: #b9c9d8;
  font-size: 13px;
  font-weight: 700;
  user-select: none;
}
.bmpro-status-badge.is-healthy {
  border-color: #2e7d5a;
  background: rgba(46, 125, 90, .15);
  color: #8ef0bf;
}
.bmpro-status-badge.is-degraded {
  border-color: #b8860b;
  background: rgba(184, 134, 11, .15);
  color: #ffd700;
}
.bmpro-status-badge.is-critical {
  border-color: #b22222;
  background: rgba(178, 34, 34, .15);
  color: #ff6b6b;
}

.bmpro-status-meta {
  color: #7890a7;
  font-size: 12px;
}
.bmpro-status-meta strong {
  color: #b9c9d8;
}

.bmpro-status-section-title {
  margin: 20px 0 10px;
  padding: 8px 12px;
  border-radius: 6px;
  background: rgba(13, 23, 35, .5);
  color: #8aa0b5;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .3px;
}

/* 스케줄 테이블 행 */
.bmpro-status-job-row {
  cursor: pointer;
  transition: background .15s;
}
.bmpro-status-job-row:hover {
  background: rgba(46, 125, 90, .08);
}
.bmpro-status-job-row.is-selected {
  background: rgba(46, 125, 90, .15);
}

.bmpro-status-view-btn {
  background: none;
  border: 1px solid #304359;
  border-radius: 6px;
  padding: 4px 8px;
  cursor: pointer;
  font-size: 14px;
}

/* ============================================================
   BMpro 파이프라인 (크롤링 → 매핑 → 게시)
   ============================================================ */
.pipeline-panel {
  margin-top: 18px;
  border: 1px solid #26394c;
  border-radius: 12px;
  padding: 22px;
  background: rgba(13, 23, 35, .84);
  position: relative;
  overflow: hidden;
}
.pipeline-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, #4fc3f7, #8ef0bf, #f7d66b);
  opacity: .6;
}
.pipeline-panel > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}
.pipeline-panel h2 { margin: 7px 0; font-size: 20px; }
.pipeline-panel header small { color: #7890a7; font-size: 12px; }

/* ── 3단계 시각화 ── */
.pipeline-stages {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-top: 18px;
}
.pipeline-stage {
  border: 1px solid #26394c;
  border-radius: 10px;
  padding: 16px;
  background: rgba(11, 19, 29, .7);
  transition: border-color .2s;
}
.pipeline-stage:hover {
  border-color: #3d5a78;
}
.pipeline-stage-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid #1e2e3e;
}
.pipeline-stage-header .stage-icon {
  font-size: 20px;
}
.pipeline-stage-header .stage-title {
  font-size: 15px;
  font-weight: 800;
  color: #e7f0f8;
}
.pipeline-stage-header .stage-subtitle {
  margin-left: auto;
  color: #6a8095;
  font-size: 12px;
}
.pipeline-stage-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
.pipeline-stat {
  text-align: center;
  padding: 8px 4px;
  border-radius: 6px;
  background: rgba(13, 23, 35, .5);
}
.pipeline-stat .stat-value {
  display: block;
  font-size: 22px;
  font-weight: 900;
  line-height: 1.2;
  color: #7fc3f0;
}
.pipeline-stat .stat-label {
  display: block;
  margin-top: 2px;
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.pipeline-stat.stat-success .stat-value { color: #8ef0bf; }
.pipeline-stat.stat-failed .stat-value { color: #f78b8b; }
.pipeline-stat.stat-warning .stat-value { color: #f7d66b; }
.pipeline-stat.stat-info .stat-value { color: #7fc3f0; }
.pipeline-stat.stat-purple .stat-value { color: #c9a0f0; }

/* ── 단계별 상세 정보 ── */
.pipeline-stage-detail {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid #1a2836;
}
.pipeline-stage-detail .detail-title {
  display: block;
  margin-bottom: 6px;
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.pipeline-risk-tag, .pipeline-type-tag {
  display: inline-block;
  margin: 2px 3px;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
}
.pipeline-risk-tag {
  background: rgba(247, 139, 139, .1);
  color: #f78b8b;
}
.pipeline-risk-tag.risk-low {
  background: rgba(142, 240, 191, .1);
  color: #8ef0bf;
}
.pipeline-risk-tag.risk-medium {
  background: rgba(247, 214, 107, .1);
  color: #f7d66b;
}
.pipeline-risk-tag.risk-high {
  background: rgba(247, 139, 139, .15);
  color: #f78b8b;
}
.pipeline-type-tag {
  background: rgba(79, 195, 247, .1);
  color: #7fc3f0;
}
.pipeline-no-data {
  color: #5a7085;
  font-size: 12px;
}

/* ── 캠페인 요약 ── */
.pipeline-campaign-summary {
  display: flex;
  gap: 12px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.pipeline-campaign-stat {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #26394c;
  border-radius: 8px;
  padding: 10px 14px;
  background: rgba(11, 19, 29, .5);
}
.pipeline-campaign-stat .stat-value {
  font-size: 18px;
  font-weight: 900;
  color: #c9a0f0;
}
.pipeline-campaign-stat .stat-label {
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 700;
}

/* ── 저장 시간 정보 ── */
.pipeline-meta {
  display: flex;
  gap: 16px;
  margin-top: 14px;
  color: #6a8095;
  font-size: 12px;
  flex-wrap: wrap;
}
.pipeline-meta strong {
  color: #8aa0b5;
}

/* ── 보드 필터 버튼 ── */
.pipeline-board-filters {
  display: flex;
  gap: 4px;
  margin-top: 16px;
}
.pipeline-board-filters button {
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 6px 12px;
  background: transparent;
  color: #9aafc2;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.pipeline-board-filters button.is-active {
  border-color: #8ef0bf;
  color: #8ef0bf;
}
.pipeline-board-filters button:hover {
  color: #c5dae8;
}

/* ── 파이프라인 테이블 ── */
.pipeline-panel .table-wrap {
  margin-top: 12px;
  border: 1px solid #1e2e3e;
  border-radius: 10px;
  overflow: hidden;
}
.pipeline-panel .table-wrap table {
  width: 100%;
  border-collapse: collapse;
}
.pipeline-panel .table-wrap th {
  padding: 10px 12px;
  background: rgba(11, 19, 29, .6);
  color: #8aa0b5;
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid #1e2e3e;
}
.pipeline-panel .table-wrap td {
  padding: 10px 12px;
  font-size: 13px;
  border-bottom: 1px solid #1a2836;
  vertical-align: middle;
}
.pipeline-panel .table-wrap tbody tr:last-child td { border-bottom: none; }
.pipeline-panel .table-wrap tbody tr:hover td { background: rgba(142, 240, 191, .03); }
.pipeline-panel .table-wrap td .url-link {
  display: inline-block;
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.pipeline-panel .table-wrap td.empty {
  padding: 40px 16px;
  text-align: center;
  color: #5a7085;
  font-size: 13px;
}

/* ── 파이프라인 행 스타일 ── */
.pipeline-row-mapped td {
  background: rgba(46, 125, 90, .03);
}
.pipeline-row-unmapped td {
  background: rgba(178, 34, 34, .03);
}

/* ── 파이프라인 셀 스타일 ── */
.pipeline-board-type {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 4px;
  background: rgba(79, 195, 247, .1);
  color: #7fc3f0;
  font-size: 12px;
  font-weight: 700;
}
.pipeline-risk-level {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
}
.pipeline-risk-level.risk-low {
  background: rgba(142, 240, 191, .1);
  color: #8ef0bf;
}
.pipeline-risk-level.risk-medium {
  background: rgba(247, 214, 107, .1);
  color: #f7d66b;
}
.pipeline-risk-level.risk-high {
  background: rgba(247, 139, 139, .15);
  color: #f78b8b;
}
.pipeline-access-status {
  color: #8aa0b5;
  font-size: 12px;
}
.pipeline-map-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 700;
}
.pipeline-map-status.is-mapped {
  color: #8ef0bf;
}
.pipeline-map-status.is-unmapped {
  color: #f78b8b;
}
.pipeline-job-name {
  color: #c9a0f0;
  font-size: 12px;
  font-weight: 700;
}

/* ── 로딩 스켈레톤 ── */
.pipeline-panel.is-loading .pipeline-stat .stat-value,
.pipeline-panel.is-loading .table-wrap td:not(.empty) {
  position: relative;
  color: transparent !important;
  overflow: hidden;
}
.pipeline-panel.is-loading .pipeline-stat .stat-value::after,
.pipeline-panel.is-loading .table-wrap td:not(.empty)::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(79, 195, 247, .06), transparent);
  animation: pipeline-shimmer 1.6s infinite;
}
@keyframes pipeline-shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

@media (max-width: 760px) {
  .pipeline-stages {
    grid-template-columns: 1fr;
  }
  .pipeline-panel > header {
    flex-direction: column;
    align-items: stretch;
  }
  .pipeline-panel .table-wrap {
    overflow-x: auto;
  }
  .pipeline-panel .table-wrap td .url-link {
    max-width: 140px;
  }
  .pipeline-campaign-summary {
    flex-direction: column;
  }
}

/* ============================================================
   캠페인 관리 (Campaign Panel)
   ============================================================ */
.campaign-panel {
  padding: 24px;
  background: var(--surface, #fff);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06);
}
.campaign-panel > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}
.campaign-panel > header h2 {
  margin: 0 0 4px;
  font-size: 20px;
  font-weight: 700;
  color: var(--text, #1a1a2e);
}
.campaign-panel > header p {
  margin: 0;
  font-size: 13px;
  color: var(--muted, #888);
}
.campaign-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}
.campaign-toolbar .input {
  flex: 1;
  max-width: 320px;
  padding: 8px 12px;
  border: 1px solid var(--border, #e0e0e0);
  border-radius: 6px;
  font-size: 13px;
  background: var(--bg, #fafafa);
  color: var(--text, #1a1a2e);
  transition: border-color .2s, box-shadow .2s;
}
.campaign-toolbar .input:focus {
  outline: none;
  border-color: var(--primary, #4fc3f7);
  box-shadow: 0 0 0 3px rgba(79,195,247,.15);
}
.campaign-summary {
  font-size: 12px;
  color: var(--muted, #888);
  white-space: nowrap;
}
.campaign-panel .table-wrap {
  overflow-x: auto;
}
.campaign-panel table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.campaign-panel table th {
  text-align: left;
  padding: 10px 12px;
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--muted, #888);
  border-bottom: 2px solid var(--border, #e0e0e0);
  white-space: nowrap;
}
.campaign-panel table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border, #eee);
  vertical-align: middle;
}
.campaign-panel table tbody tr:hover {
  background: rgba(79,195,247,.04);
}
.campaign-title-cell {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text, #1a1a2e);
}
.campaign-memo-cell {
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted, #888);
  font-size: 12px;
}
.campaign-date-cell {
  white-space: nowrap;
  font-size: 12px;
  color: var(--muted, #888);
}
.campaign-actions {
  white-space: nowrap;
  text-align: center;
}
.campaign-actions .btn {
  padding: 4px 8px;
  font-size: 13px;
  line-height: 1;
  border: 1px solid var(--border, #e0e0e0);
  border-radius: 4px;
  background: var(--bg, #fafafa);
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.campaign-actions .btn:hover {
  background: var(--surface, #fff);
  border-color: var(--primary, #4fc3f7);
}
.campaign-actions .btn-danger:hover {
  border-color: #e53935;
  color: #e53935;
}
.campaign-category-tag {
  display: inline-block;
  padding: 2px 8px;
  font-size: 12px;
  font-weight: 500;
  border-radius: 10px;
  background: rgba(79,195,247,.1);
  color: var(--primary, #0288d1);
}

/* 캠페인 다이얼로그 */
.campaign-dialog {
  border: none;
  border-radius: 12px;
  padding: 0;
  width: 520px;
  max-width: 90vw;
  box-shadow: 0 8px 32px rgba(0,0,0,.18);
  background: var(--surface, #fff);
  color: var(--text, #1a1a2e);
}
.campaign-dialog::backdrop {
  background: rgba(0,0,0,.35);
}
.campaign-dialog > form > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border, #eee);
}
.campaign-dialog > form > header h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
}
.btn-close {
  background: none;
  border: none;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  color: var(--muted, #888);
  padding: 4px;
  border-radius: 4px;
  transition: background .15s, color .15s;
}
.btn-close:hover {
  background: rgba(0,0,0,.06);
  color: var(--text, #1a1a2e);
}
.campaign-form-body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.campaign-form-body .form-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.campaign-form-body .form-group label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text, #1a1a2e);
}
.campaign-form-body .form-group .required {
  color: #e53935;
}
.campaign-form-body .form-group .input {
  padding: 8px 12px;
  border: 1px solid var(--border, #e0e0e0);
  border-radius: 6px;
  font-size: 13px;
  background: var(--bg, #fafafa);
  color: var(--text, #1a1a2e);
  transition: border-color .2s, box-shadow .2s;
  font-family: inherit;
}
.campaign-form-body .form-group .input:focus {
  outline: none;
  border-color: var(--primary, #4fc3f7);
  box-shadow: 0 0 0 3px rgba(79,195,247,.15);
}
.campaign-form-body .form-group select.input {
  cursor: pointer;
}
.campaign-content-input {
  resize: vertical;
  min-height: 100px;
  line-height: 1.5;
}
.campaign-dialog > form > footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 20px;
  border-top: 1px solid var(--border, #eee);
}
.campaign-dialog .btn {
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 600;
  border-radius: 6px;
  border: 1px solid var(--border, #e0e0e0);
  background: var(--bg, #fafafa);
  cursor: pointer;
  transition: background .15s, border-color .15s;
  color: var(--text, #1a1a2e);
}
.campaign-dialog .btn-primary {
  background: var(--primary, #4fc3f7);
  color: #fff;
  border-color: var(--primary, #4fc3f7);
}
.campaign-dialog .btn-primary:hover {
  background: #039be5;
  border-color: #039be5;
}
.campaign-dialog .btn:hover {
  border-color: var(--primary, #4fc3f7);
}

/* 캠페인도 콘솔의 다크 디자인 토큰을 사용한다. */
.campaign-panel { margin-top: 0; border: 1px solid #26394c; background: rgba(13, 23, 35, .84); box-shadow: 0 16px 40px rgba(0,0,0,.12); color: #edf3fb; }
.campaign-panel > header h2, .campaign-title-cell, .campaign-form-body .form-group label, .campaign-dialog > form > header h3 { color: #edf3fb; }
.campaign-panel > header p, .campaign-summary, .campaign-memo-cell, .campaign-date-cell, .campaign-panel table th { color: #8298ac; }
.campaign-panel .table-wrap { border: 1px solid #24364a; border-radius: 9px; }
.campaign-panel table th { background: #0c151f; border-bottom-color: #203245; }
.campaign-panel table td { border-bottom-color: #203245; color: #cbd8e5; }
.campaign-panel table tbody tr:hover { background: #12202c; }
.campaign-toolbar .input, .campaign-form-body .form-group .input { border-color: #304359; background: #0b131d; color: #edf3fb; }
.campaign-toolbar .input:focus, .campaign-form-body .form-group .input:focus { border-color: #8ef0bf; box-shadow: 0 0 0 3px rgba(142,240,191,.1); }
.campaign-category-tag { background: rgba(79,195,247,.12); color: #99d9ff; }
.campaign-actions .btn, .campaign-dialog .btn { border-color: #304359; background: #111d2a; color: #d5e4f0; }
.campaign-actions .btn:hover, .campaign-dialog .btn:hover { border-color: #8ef0bf; color: #8ef0bf; }
.campaign-dialog { border: 1px solid #35516a; background: #0d1722; color: #edf3fb; box-shadow: 0 30px 90px rgba(0,0,0,.6); }
.campaign-dialog > form > header, .campaign-dialog > form > footer { border-color: #26394c; }
.btn-close { color: #a8bbcc; }
.btn-close:hover { background: #172536; color: #fff; }
.campaign-dialog .btn-primary, .campaign-dialog .btn-primary:hover { border-color: #8ef0bf; background: #8ef0bf; color: #0a1513; }
.campaign-execution-plan { margin: 0 0 18px; border: 1px solid #304a60; border-radius: 10px; padding: 16px; background: rgba(8, 19, 29, .48); }
.campaign-execution-plan > header { display: block; padding: 0; border: 0; }
.campaign-execution-plan h3 { margin: 4px 0 0; color: #eaf5ff; font-size: 15px; }
.campaign-execution-plan small { display: block; margin-top: 7px; color: #8fa7b9; font-size: 12px; line-height: 1.45; }
.campaign-execution-plan .table-wrap { margin-top: 12px; }
.campaign-plan-unknown { color: #aabcc9; font-size: 12px; }
.campaign-plan-success { color: #8ef0bf; }
.campaign-plan-failed { color: #ffc1c1; }

@media (max-width: 760px) {
  .console-sidebar .sidebar-foot { display: flex; align-items: center; justify-content: space-between; padding: 0; }
  .console-sidebar nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .console-sidebar .nav-group-label { grid-column: 1 / -1; }
  .dashboard-intro, .section-heading { align-items: stretch; flex-direction: column; }
  .board-operation-summary > header, .board-operation-next-action { align-items: stretch; flex-direction: column; }
  .board-operation-summary > header small { white-space: normal; }
  .board-operation-lanes { grid-template-columns: 1fr; }
  .board-operation-card { min-height: 0; }
  .board-operation-card > p { min-height: 0; }
  .operations-command-header { align-items: stretch; flex-direction: column; gap: 8px; }
  .operations-command-lanes { grid-template-columns: 1fr; }
  .operation-lane { min-height: 0; }
  .operation-lane-result p { min-height: 0; }
  .operations-workbench > header, .board-work-case-panel > header { align-items: stretch; flex-direction: column; }
  .board-work-actions { justify-items: stretch; }
  .origin-summary-grid { grid-template-columns: 1fr; }
  .operations-work-queue > header, .operations-work-queue-item { align-items: stretch; flex-direction: column; }
  .operations-work-queue-item footer { justify-content: start; }
  .quick-actions { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 3px; }
  .quick-actions button { flex: 0 0 auto; }
  .attention-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .operations-answer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .operations-lanes { grid-template-columns: 1fr; }
  .last-refreshed { display: none; }
  .campaign-panel > header, .campaign-toolbar { align-items: stretch; flex-direction: column; }
  .campaign-toolbar .input { max-width: none; }
  .activity-item { align-items: stretch; flex-direction: column; gap: 6px; }
  .briefing-grid { grid-template-columns: 1fr; }
  .pipeline-readout { align-items: stretch; flex-direction: column; gap: 5px; }
  .pipeline-readout b { transform: rotate(90deg); }
  .outcome-visual { grid-template-columns: 1fr; }
  .journey-item { grid-template-columns: 1fr; gap: 7px; }
  .board-work-item { align-items: flex-start; flex-direction: column; gap: 7px; }
  .briefing-detail-grid { grid-template-columns: 1fr; }
}

/* Must remain last: legacy dashboard declarations above must not reopen these panels. */
#overview > .dashboard-health-bar,
#overview > .operations-lanes,
#overview > .board-operation-summary,
#overview > .operations-workbench { display: none !important; }

/* 보조 화면은 필요할 때만 펼친다. 기본 메뉴는 매일 확인하는 다섯 업무에 집중한다. */
.console-sidebar .nav-fold { display: block; border-top: 1px solid rgba(81, 111, 137, .22); padding: 7px 0; }
.console-sidebar .nav-fold summary { display: flex; align-items: center; justify-content: space-between; cursor: pointer; color: #9ab0c1; font-size: 12px; font-weight: 850; letter-spacing: .02em; list-style: none; }
.console-sidebar .nav-fold summary::-webkit-details-marker { display: none; }
.console-sidebar .nav-fold summary::before { content: '›'; margin-right: 7px; color: #6f8da6; font-size: 16px; transition: transform .15s ease; }
.console-sidebar .nav-fold[open] summary::before { transform: rotate(90deg); }
.console-sidebar .nav-fold summary small { margin-left: auto; border: 1px solid #304b63; border-radius: 99px; padding: 2px 6px; color: #829aab; font-size: 12px; }
.console-sidebar .nav-fold > a { margin-top: 4px; padding-left: 14px; }

.campaign-progress-panel { margin-top: 14px; border-top: 1px solid #294257; padding-top: 14px; }
.report-section { margin-top: 14px; }
.report-section > header h3 { margin: 4px 0 0; color: #e8f5fb; font-size: 15px; }
.report-section > header small { display: block; margin-top: 5px; color: #91a9ba; font-size: 12px; line-height: 1.45; }
.report-section .report-grid { margin-top: 12px; }
.report-section-today .report-card:first-child { border-color: #398766; background: linear-gradient(135deg, rgba(23, 76, 58, .42), rgba(5, 14, 22, .48)); }
.report-section-today .report-card:first-child strong { color: #8ef0bf; font-size: 18px; }
.campaign-progress-panel > header h3 { margin: 4px 0 0; color: #e8f5fb; font-size: 14px; }
.campaign-progress-panel > header small { display: block; margin-top: 5px; color: #91a9ba; font-size: 12px; line-height: 1.45; }
.campaign-progress-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 12px 0; }
.campaign-progress-summary article { display: grid; gap: 4px; min-width: 0; border: 1px solid #294359; border-radius: 9px; padding: 10px; background: rgba(6, 16, 25, .42); }
.campaign-progress-summary span, .campaign-progress-summary small { color: #91a9ba; font-size: 12px; line-height: 1.35; }
.campaign-progress-summary strong { color: #eaf5ff; font-size: 18px; }
.campaign-progress-panel .table-wrap { margin-top: 0; }
.campaign-progress-open { border: 0; padding: 0; background: transparent; color: #dcebf5; font: inherit; font-weight: 800; text-align: left; cursor: pointer; }
.campaign-progress-open:hover { color: #8ef0bf; text-decoration: underline; }
.delivery-control-panel { margin-top: 14px; border: 1px solid #38566d; border-radius: 11px; padding: 14px; background: rgba(11, 27, 40, .58); }
.delivery-control-panel > header h3 { margin: 4px 0 0; color: #e8f5fb; font-size: 14px; }
.delivery-control-panel > header small { display: block; margin-top: 5px; color: #91a9ba; font-size: 12px; line-height: 1.45; }
.delivery-health-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.delivery-health-card { display: grid; gap: 4px; min-width: 0; border: 1px solid #294359; border-radius: 9px; padding: 10px; background: rgba(6, 16, 25, .48); }
.delivery-health-card span, .delivery-health-card small { color: #91a9ba; font-size: 12px; line-height: 1.35; }
.delivery-health-card strong { color: #eaf5ff; font-size: 16px; }
.delivery-health-card.is-on_track { border-color: #398766; }.delivery-health-card.is-on_track strong { color: #8ef0bf; }
.delivery-health-card.is-risk { border-color: #907333; }.delivery-health-card.is-risk strong { color: #f3d278; }
.delivery-health-card.is-blocked { border-color: #93525a; }.delivery-health-card.is-blocked strong { color: #ffc1c1; }
.delivery-health-card.is-complete { border-color: #398766; }.delivery-health-card.is-complete strong { color: #8ef0bf; }
.delivery-blocker-row { display: flex; align-items: center; gap: 10px; margin-top: 11px; border-top: 1px solid #294257; padding-top: 10px; }
.delivery-blocker-row > strong { flex: 0 0 auto; color: #b7cad7; font-size: 12px; }
#today-delivery-blockers { display: flex; flex-wrap: wrap; gap: 7px; }
.delivery-blocker, .campaign-progress-state { display: inline-block; border: 1px solid #415d72; border-radius: 99px; padding: 4px 7px; color: #aebfcd; font-size: 12px; line-height: 1.2; }
.delivery-blocker b { color: #f3d278; }.campaign-progress-state { margin-top: 4px; font-weight: 800; }
.campaign-progress-state.is-complete { border-color: #398766; color: #8ef0bf; }.campaign-progress-state.is-running { border-color: #3d7598; color: #89d7ff; }.campaign-progress-state.is-attention { border-color: #907333; color: #f3d278; }
@media (max-width: 820px) { .campaign-progress-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 980px) { .delivery-health-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 620px) { .delivery-health-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .delivery-blocker-row { align-items: flex-start; flex-direction: column; gap: 7px; } }
#operations-report .report-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.operations-reference { margin-top: 9px; border: 1px solid #294257; border-radius: 8px; padding: 8px 10px; color: #8ea5b6; font-size: 12px; }
.operations-reference summary { display: flex; align-items: center; justify-content: space-between; cursor: pointer; color: #aebfcd; font-weight: 800; list-style: none; }
.operations-reference summary::-webkit-details-marker { display: none; }
.operations-reference summary::before { content: '›'; margin-right: 7px; color: #7190a7; font-size: 14px; }
.operations-reference[open] summary::before { transform: rotate(90deg); }
.operations-reference summary small { margin-left: auto; color: #718899; font-size: 12px; font-weight: 700; }
.operations-reference p { margin: 8px 0 0; border-top: 1px solid #203548; padding-top: 8px; color: #8ea5b6; line-height: 1.5; }
@media (max-width: 980px) { #operations-report .report-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { #operations-report .report-grid { grid-template-columns: 1fr; } }

/* Canonical operations view: explicit units, period and missing data. */
.truth-overview { display: grid; gap: 18px; }
.truth-intro,.truth-panel>header { display:flex; justify-content:space-between; gap:16px; align-items:center; }
.truth-intro h2 { margin:4px 0 8px; font-size:27px; letter-spacing:-.04em; }
.truth-intro p,.truth-caption,.truth-panel>p { color:#9aafc1; font-size:12px; line-height:1.65; margin:8px 0; }
.truth-overview a { color:#8ee8c1; text-decoration:none; }
.truth-verdict { border:1px solid #37536a; background:#10212e; border-radius:12px; padding:17px 20px; }
.truth-verdict.is-attention { border-color:#766334; background:#211f18; }
.truth-verdict.is-confirmed { border-color:#346c53; }
.truth-verdict strong { display:block; font-size:17px; color:#f0f6f9; }
.truth-verdict p { margin:8px 0 0; color:#b1c1ce; font-size:13px; line-height:1.6; }
.truth-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.truth-kpi { border:1px solid #2c4356; border-radius:12px; background:#101e2a; padding:19px; min-width:0; }
.truth-kpi>span { color:#c5d6e2; font-size:13px; }
.truth-kpi>strong { display:block; font-size:32px; color:#edf9f4; margin:14px 0; line-height:1.2; }
.truth-kpi>small { color:#99aec0; font-size:12px; line-height:1.6; }
.truth-columns { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:16px; align-items:start; }
.truth-panel { background:#0d1a26; border:1px solid #2c4356; border-radius:12px; padding:21px; min-width:0; }
.truth-panel h3 { margin:0; font-size:17px; }.truth-panel h4 { margin:22px 0 10px; font-size:13px; color:#aabecf; }
.truth-panel>header a { font-size:12px; }.truth-targets { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:16px 0; }
.truth-targets>div { padding:12px; background:#132635; border-radius:8px; }
.truth-targets dt,.truth-storage dt { font-size:12px; color:#aebfcd; }.truth-targets dd { margin:8px 0 0; font-size:21px; font-weight:750; }
.truth-blockers { padding:0; margin:0; list-style:none; }.truth-blockers li { display:flex; justify-content:space-between; gap:12px; border-bottom:1px solid #213747; padding:11px 0; font-size:12px; }
.truth-blockers b { white-space:nowrap; color:#f2d493; }
.truth-storage { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:22px 0; }.truth-storage dd { margin:10px 0; font-size:24px; font-weight:750; }.truth-storage small { color:#9aafc1; line-height:1.7; }
.truth-links { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }.truth-links a { padding:8px 10px; border:1px solid #355166; border-radius:7px; font-size:12px; }
.section-load-error { border:1px solid #956044; border-radius:9px; padding:14px; color:#ffd4ae; background:#2d211b; line-height:1.6; }
[data-stale="true"]> :not(.section-load-error) { opacity:.6; }
.engine-state i { background:#7892a6; box-shadow:none; }
.delivery-health-grid article strong { font-size:24px; }
@media(max-width:1100px){.truth-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.truth-columns{grid-template-columns:1fr;}}
@media(max-width:600px){.truth-intro{align-items:start;flex-direction:column;}.truth-intro h2{font-size:23px;}.truth-kpi{padding:14px;}.truth-kpi>strong{font-size:27px;}.truth-panel{padding:16px;}.truth-targets{grid-template-columns:repeat(2,minmax(0,1fr));}.truth-storage{grid-template-columns:1fr;}.last-refreshed{display:inline;}.console-topbar .engine-state{flex-wrap:wrap;}.truth-overview{min-width:0;}.truth-kpi>small{overflow-wrap:anywhere;}}

#mobile-nav-toggle { display:none; }
.console-sidebar nav a.nav-publish:not(.is-active) { background:transparent; border-color:transparent; color:#bad0e0; }
@media(max-width:820px){
 .console-sidebar { display:grid; grid-template-columns:1fr auto; align-items:center; padding:14px 18px; gap:12px; }
 #mobile-nav-toggle { display:block; background:#162b3a; border:1px solid #36536a; border-radius:8px; padding:9px 15px; color:#dceef7; }
 .console-sidebar nav,.console-sidebar .sidebar-foot { display:none; }
 .console-sidebar.mobile-nav-open nav { display:grid; grid-column:1/-1; max-height:60vh; overflow:auto; }
 .console-sidebar.mobile-nav-open .sidebar-foot { display:flex; grid-column:1/-1; }
 .console-sidebar>.brand-lockup { margin:0; }
}

/* Account onboarding settings. */
#onboarding-profile-form label { display:flex; flex-direction:column; gap:7px; font-size:14px; line-height:1.5; }
#onboarding-profile-form label:has(input[type="checkbox"]) { flex-direction:row; align-items:flex-start; gap:10px; }
#onboarding-profile-form small { color:var(--muted,#93a7bb); font-size:12px; }
#onboarding-profile-form input:not([type="checkbox"]) { display:block; width:100%; box-sizing:border-box; min-height:40px; padding:9px 12px; border:1px solid #304557; border-radius:8px; background:#0b1723; color:#e7f3fc; font:inherit; color-scheme:dark; }
#onboarding-profile-form input:focus-visible { outline:2px solid #90eac1; outline-offset:2px; }
#onboarding-profile-form input[type="checkbox"] { width:17px; height:17px; flex-shrink:0; margin-top:3px; accent-color:#90eac1; }
#onboarding-profile-form p, #account-onboarding > p { font-size:13px; color:#a8bdce; line-height:1.8; }
#onboarding-profile-form .primary-button { padding:10px 18px; font-size:14px; }
#account-onboarding table { min-width:680px; }

/* Lifecycle explanations stay within the existing console layout. */
#pipeline-lifecycle .lifecycle-note { margin: 16px 20px; line-height: 1.65; color: #b8cad8; }
#pipeline-lifecycle .lifecycle-issues { margin: 16px 20px; padding: 14px 18px; border: 1px solid #e6bd73; border-radius: 10px; background: #fff8e8; color: #744700; }
#pipeline-lifecycle .lifecycle-counts { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin: 20px; }
#pipeline-lifecycle .lifecycle-counts > div { display: flex; flex-direction: column; gap: 8px; padding: 18px; border: 1px solid #334b63; border-radius: 12px; background: #101f2d; color: #e7f0f8; }
#pipeline-lifecycle .lifecycle-counts strong { font-size: 26px; color: #8ef0bf; }
#pipeline-lifecycle .lifecycle-counts small, #pipeline-lifecycle td small { color: #a5b9cc; }
#pipeline-lifecycle .filters { margin: 20px; }
#pipeline-lifecycle td { vertical-align: top; line-height: 1.65; min-width: 125px; overflow-wrap: anywhere; }
#pipeline-lifecycle td:nth-last-child(2) { min-width: 230px; }
#pipeline-lifecycle .pagination { padding: 16px 20px; }
@media (max-width: 800px) { #pipeline-lifecycle .lifecycle-counts { grid-template-columns: repeat(2,minmax(0,1fr)); } }

/* ---- 게시 진행 · 캠페인 문구 (2026-10-02) ----
   콘솔 다크 팔레트를 토큰으로 묶어 상태 배지·버튼·카드를 한 규칙으로 맞춘다.
   상태는 색 + 기호 + 글자로 함께 표시한다. */
.console-shell { --c-ok:#8ef0bf; --c-ok-bg:rgba(142,240,191,.09); --c-warn:#f7d66b; --c-warn-bg:rgba(247,214,107,.09); --c-danger:#ff9d9d; --c-danger-bg:rgba(247,139,139,.1); --c-info:#9bdcff; --c-info-bg:rgba(79,195,247,.09); --c-muted:#8ea3b6; --c-text:#edf3fb; --c-sub:#c3d3e0; --c-line:#2c4356; --c-surface:#0d1a26; --c-surface-2:#101e2a; }
.visually-hidden { position:absolute!important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.console-main > section[aria-busy="true"] { position:relative; }
.console-main > section[aria-busy="true"]::before { content:''; position:absolute; top:-6px; left:0; height:3px; width:30%; border-radius:3px; background:var(--c-ok); animation:busy-slide 1.1s ease-in-out infinite; }
@keyframes busy-slide { 0% { transform:translateX(0); } 50% { transform:translateX(230%); } 100% { transform:translateX(0); } }
@media (prefers-reduced-motion: reduce) { .console-main > section[aria-busy="true"]::before { animation:none; width:100%; opacity:.5; } }

.flow-panel { display:grid; gap:16px; color:var(--c-text); }
.flow-intro { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; }
.flow-intro h2 { margin:4px 0 6px; font-size:24px; }
.flow-intro p { margin:0; color:var(--c-muted); font-size:13px; line-height:1.6; max-width:68ch; }
.flow-observed { white-space:nowrap; font-size:12px; color:var(--c-muted); }

.flow-steps { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; counter-reset:none; }
.flow-step { position:relative; display:flex; gap:10px; border:1px solid var(--c-line); border-radius:12px; background:var(--c-surface-2); padding:14px; min-width:0; }
.flow-step:not(:last-child)::after { content:'→'; position:absolute; right:-10px; top:50%; transform:translate(50%,-50%); color:var(--c-muted); font-size:14px; z-index:1; }
.flow-step-index { flex:none; width:22px; height:22px; border-radius:50%; display:grid; place-items:center; background:#16283a; color:var(--c-sub); font-size:12px; font-weight:800; }
.flow-step > div { min-width:0; }
.flow-step-label { display:block; font-size:13px; font-weight:800; color:var(--c-sub); }
.flow-step strong { display:block; font-size:26px; line-height:1.2; margin:6px 0 2px; color:var(--c-text); }
.flow-step small { display:block; color:var(--c-muted); font-size:12px; line-height:1.5; }
.flow-step ul { list-style:none; margin:8px 0 0; padding:0; font-size:12px; color:var(--c-sub); display:grid; gap:2px; }
.flow-step a { display:inline-block; margin-top:8px; font-size:12px; color:var(--c-ok); }

.flow-notice { border:1px solid #766334; background:#211f18; border-radius:12px; padding:14px 16px; font-size:13px; line-height:1.6; }
.flow-notice strong { display:flex; gap:8px; align-items:center; color:var(--c-warn); }
.flow-notice ul { margin:6px 0; padding-left:18px; color:var(--c-sub); }
.flow-notice a { color:var(--c-ok); font-weight:700; }

.flow-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.flow-filters { display:flex; flex-wrap:wrap; gap:6px; }
.flow-filters button { display:inline-flex; align-items:center; gap:6px; min-height:36px; border:1px solid #304359; border-radius:999px; background:#0f1a26; color:var(--c-sub); padding:6px 12px; font-size:12px; font-weight:700; cursor:pointer; }
.flow-filters button span { color:var(--c-muted); font-weight:800; }
.flow-filters button:hover { border-color:var(--c-ok); }
.flow-filters button.is-active { border-color:var(--c-ok); background:var(--c-ok-bg); color:var(--c-text); }
.flow-summary { margin:0; font-size:12px; color:var(--c-muted); }

.flow-targets, .campaign-list, .flow-worker-list { list-style:none; margin:0; padding:0; }
.flow-targets { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:12px; }
.flow-empty { border:1px dashed var(--c-line); border-radius:12px; padding:22px; color:var(--c-muted); font-size:13px; text-align:center; grid-column:1/-1; }
.flow-target { border:1px solid var(--c-line); border-left-width:4px; border-radius:12px; background:var(--c-surface-2); padding:14px 16px; display:grid; gap:8px; min-width:0; }
.flow-target.is-danger { border-left-color:var(--c-danger); }
.flow-target.is-warn { border-left-color:var(--c-warn); }
.flow-target.is-ok { border-left-color:var(--c-ok); }
.flow-target.is-info, .flow-target.is-active { border-left-color:var(--c-info); }
.flow-target-head { display:flex; align-items:flex-start; gap:10px; }
.flow-target-name { min-width:0; flex:1; }
.flow-target-name strong { display:block; font-size:15px; overflow-wrap:anywhere; }
.flow-target-name small { display:block; color:var(--c-muted); font-size:12px; overflow-wrap:anywhere; }
.flow-stage { flex:none; font-size:12px; color:var(--c-muted); border:1px solid var(--c-line); border-radius:6px; padding:2px 6px; }
.flow-reason, .flow-next, .flow-campaign, .flow-timing { margin:0; font-size:13px; line-height:1.55; color:var(--c-sub); }
.flow-reason strong { color:var(--c-text); }
.flow-next span { display:inline-block; margin-right:6px; font-size:12px; font-weight:800; color:var(--c-warn); }
.flow-timing { font-size:12px; color:var(--c-muted); overflow-wrap:anywhere; }
.flow-copy-here { color:var(--c-danger); font-size:12px; font-weight:700; }
.flow-timing .phase { color:var(--c-info); font-weight:700; }
.flow-actions, .campaign-card-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.flow-details summary { cursor:pointer; font-size:12px; color:var(--c-muted); }
.flow-details summary:hover { color:var(--c-text); }
.flow-details dl { margin:8px 0 0; display:grid; gap:4px; font-size:12px; }
.flow-details dl > div { display:grid; grid-template-columns:96px 1fr; gap:8px; }
.flow-details dt { color:var(--c-muted); }
.flow-details dd { margin:0; color:var(--c-sub); overflow-wrap:anywhere; }
.flow-workers > p { margin:6px 0 10px; }
.flow-worker-list { display:grid; gap:6px; font-size:13px; }
.flow-worker-list li { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.flow-worker-list li.is-ok b { color:var(--c-ok); }
.flow-worker-list li.is-warn b { color:var(--c-warn); }
.flow-worker-list small { color:var(--c-muted); }

.state-badge { flex:none; display:inline-flex; align-items:center; gap:6px; border:1px solid currentColor; border-radius:999px; padding:3px 10px; font-size:12px; font-weight:800; line-height:1.4; white-space:nowrap; }
.state-badge b { font-weight:900; }
.state-badge.is-ok { color:var(--c-ok); background:var(--c-ok-bg); }
.state-badge.is-warn { color:var(--c-warn); background:var(--c-warn-bg); }
.state-badge.is-danger { color:var(--c-danger); background:var(--c-danger-bg); }
.state-badge.is-info, .state-badge.is-active { color:var(--c-info); background:var(--c-info-bg); }
.state-badge.is-muted { color:var(--c-sub); background:#132232; border-color:#38506a; }

.flow-panel .btn, .campaign-panel .btn { display:inline-flex; align-items:center; justify-content:center; min-height:36px; padding:7px 13px; border:1px solid #3d5872; border-radius:8px; background:#111d2a; color:#d5e4f0; font-size:13px; font-weight:700; line-height:1.2; cursor:pointer; text-decoration:none; }
.flow-panel .btn:hover, .campaign-panel .btn:hover { border-color:var(--c-ok); color:var(--c-ok); }
.flow-panel .btn-primary, .campaign-panel .btn-primary { background:var(--c-ok); border-color:var(--c-ok); color:#0a1513; }
.flow-panel .btn-primary:hover, .campaign-panel .btn-primary:hover { background:#b5f7d6; color:#0a1513; }
.campaign-panel .btn-danger { border-color:#7a4545; color:#ffc1c1; }
.campaign-panel .btn-danger:hover { border-color:var(--c-danger); color:var(--c-danger); }
.flow-panel .btn:disabled, .campaign-panel .btn:disabled, .campaign-dialog .btn:disabled, .flow-dialog button:disabled { opacity:.55; cursor:not-allowed; }

.campaign-list { display:grid; gap:12px; }
.campaign-card { border:1px solid var(--c-line); border-radius:12px; background:var(--c-surface-2); padding:16px; display:grid; gap:10px; }
.campaign-card.is-held { border-left:4px solid var(--c-danger); }
.campaign-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; }
.campaign-card-head strong { font-size:16px; }
.campaign-card .tag { margin-left:8px; font-size:12px; color:var(--c-info); border:1px solid #2f5671; border-radius:6px; padding:1px 6px; }
.copy-detail { margin:0; font-size:12px; color:var(--c-warn); line-height:1.6; }
.campaign-copy-preview { margin:0; display:grid; gap:6px; font-size:13px; }
.campaign-copy-preview > div { display:grid; grid-template-columns:110px 1fr; gap:10px; }
.campaign-copy-preview dt { color:var(--c-muted); }
.campaign-copy-preview dd { margin:0; color:var(--c-sub); overflow-wrap:anywhere; }
.campaign-copy-preview .pre { white-space:pre-wrap; }
.campaign-copy-preview details summary { cursor:pointer; color:var(--c-muted); font-size:12px; margin-top:4px; }
.campaign-copy-preview .missing { color:var(--c-danger); font-style:normal; font-weight:700; }
.campaign-card .muted { color:var(--c-muted); font-size:12px; }
.campaign-toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.campaign-toolbar .input { flex:1 1 260px; min-height:38px; }

.campaign-form-message { margin:0 0 12px; border:1px solid #8f4b4b; background:#2a1717; color:#ffd0d0; border-radius:8px; padding:10px 12px; font-size:13px; line-height:1.5; }
.campaign-form-body .form-group label small, .copy-status-field small { margin-left:6px; color:var(--c-muted); font-weight:400; font-size:12px; }
.field-error { margin:4px 0 0; color:var(--c-danger); font-size:12px; }
.field-meta { margin:3px 0 0; text-align:right; color:var(--c-muted); font-size:12px; }
.campaign-form-body .input[aria-invalid="true"] { border-color:var(--c-danger); }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.copy-status-field { border:1px solid var(--c-line); border-radius:10px; padding:10px 14px 12px; margin:4px 0 0; display:grid; gap:8px; }
.copy-status-field legend { padding:0 6px; color:var(--c-text); font-size:13px; font-weight:700; }
.copy-status-field label { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--c-sub); cursor:pointer; }

.flow-dialog { border:1px solid #35516a; background:#0d1722; color:var(--c-text); border-radius:14px; padding:22px; max-width:min(520px, calc(100vw - 32px)); box-shadow:0 30px 90px rgba(0,0,0,.6); }
.flow-dialog::backdrop, .campaign-dialog::backdrop { background:rgba(3,8,14,.72); }
.flow-dialog h2 { margin:0 0 8px; font-size:18px; }
.flow-dialog p, .flow-dialog-points { font-size:13px; line-height:1.6; color:var(--c-sub); }
.flow-dialog-points { padding-left:18px; }
.flow-dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.flow-dialog .secondary-button { margin:0; padding:9px 14px; font-size:13px; }
.flow-dialog .primary-button { min-height:38px; padding:9px 16px; font-size:13px; }

@media (max-width: 1100px) {
  .flow-steps { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .flow-step:nth-child(3)::after { display:none; }
}
@media (max-width: 760px) {
  .flow-intro { flex-direction:column; align-items:flex-start; }
  .flow-steps { grid-template-columns:1fr; }
  .flow-step::after { display:none; }
  .flow-targets { grid-template-columns:1fr; }
  .flow-target-head { flex-wrap:wrap; }
  .flow-target-name { flex-basis:100%; order:3; }
  .flow-target-name strong { overflow-wrap:normal; word-break:keep-all; }
  .form-row { grid-template-columns:1fr; }
  .campaign-copy-preview > div, .flow-details dl > div { grid-template-columns:1fr; gap:2px; }
  .flow-panel .btn, .campaign-panel .btn { min-height:40px; }
}
/* Readability on the campaign page: no text below 12px. */
.campaign-execution-plan small, .campaign-plan-unknown, .campaign-card .tag, .campaign-form-body .form-group label small, .copy-status-field small, .field-meta { font-size:12px; }
.flow-step small { white-space:normal; overflow:visible; text-overflow:clip; }
.campaign-panel > header .btn { flex:none; white-space:nowrap; }

/* 공유 검색 예산 (#request) */
.quota-panel { border:1px solid #26394c; background:rgba(13,23,35,.84); border-radius:12px; padding:22px; display:grid; gap:14px; color:var(--c-text); min-width:0; }
.quota-panel > header { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; }
.quota-panel > header h2 { margin:7px 0; font-size:22px; }
.quota-panel > header small { display:block; color:var(--c-muted); font-size:13px; line-height:1.6; max-width:72ch; }
.quota-provider { display:grid; gap:12px; min-width:0; }
.quota-provider h3 { margin:0; font-size:16px; overflow-wrap:anywhere; }
.quota-provider h4 { margin:4px 0 0; font-size:14px; color:var(--c-sub); }
.truth-verdict.is-blocked { border-color:#7a3b3b; background:#241517; }
.quota-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:0; }
.quota-stats > div { border:1px solid var(--c-line); border-radius:10px; background:var(--c-surface-2); padding:12px 14px; min-width:0; }
.quota-stats dt { color:var(--c-muted); font-size:12px; font-weight:700; }
.quota-stats dd { margin:6px 0 4px; font-size:24px; font-weight:800; color:var(--c-text); overflow-wrap:anywhere; }
.quota-stats dd.quota-date { font-size:15px; line-height:1.4; }
.quota-stats small { display:block; color:var(--c-muted); font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.quota-breakdown, .quota-denials, .quota-coverage ul { margin:0; padding-left:18px; display:grid; gap:4px; color:var(--c-sub); font-size:13px; line-height:1.6; }
.quota-breakdown b, .quota-denials b { color:var(--c-text); }
.quota-reported p, .quota-muted { margin:0; color:var(--c-sub); font-size:13px; line-height:1.6; }
.quota-muted { color:var(--c-muted); }
.quota-table table { min-width:520px; }
.quota-table caption { text-align:left; padding:10px 12px; color:var(--c-sub); font-size:13px; font-weight:700; }
.quota-table th, .quota-table td { font-size:13px; padding:10px 12px; }
.quota-table thead th { font-size:12px; letter-spacing:.02em; text-transform:none; }
.quota-history summary, .quota-config summary { cursor:pointer; color:var(--c-sub); font-size:13px; font-weight:700; padding:6px 0; }
.quota-history summary:focus-visible, .quota-config summary:focus-visible { outline:2px solid var(--c-ok); outline-offset:2px; border-radius:4px; }
.quota-form { display:grid; gap:12px; margin-top:8px; }
.quota-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,220px)); gap:12px; }
.quota-form label { display:grid; gap:6px; color:var(--c-sub); font-size:13px; font-weight:700; min-width:0; }
.quota-form .input { width:100%; border:1px solid #304359; border-radius:8px; padding:9px 10px; background:#0b131d; color:var(--c-text); font-size:14px; }
.quota-form .input:focus { outline:none; border-color:var(--c-ok); box-shadow:0 0 0 3px rgba(142,240,191,.12); }
.quota-form .input[aria-invalid="true"] { border-color:var(--c-danger); }
.quota-form .field-error { min-height:0; color:var(--c-danger); font-size:12px; font-style:normal; }
.quota-lanes { border:1px solid var(--c-line); border-radius:10px; padding:10px 14px 14px; margin:0; display:grid; gap:10px; }
.quota-lanes legend { padding:0 6px; color:var(--c-text); font-size:13px; font-weight:700; }
.quota-lane { display:grid; grid-template-columns:minmax(120px,160px) repeat(2,minmax(0,160px)); gap:10px; align-items:end; }
.quota-lane > b { font-size:13px; color:var(--c-sub); padding-bottom:10px; }
/* 기록 모드 / 차단 모드 */
.quota-mode { display:inline-block; margin-bottom:6px; border-radius:999px; padding:3px 10px; font-size:12px; font-weight:800; letter-spacing:.02em; }
.quota-mode.is-record { background:var(--c-info-bg); color:var(--c-info); border:1px solid #2f5a72; }
.quota-mode.is-block { background:var(--c-danger-bg); color:var(--c-danger); border:1px solid #7a3b3b; }
.quota-modes { border:1px solid var(--c-line); border-radius:10px; padding:10px 14px 12px; margin:0; display:grid; gap:8px; }
.quota-modes legend { padding:0 6px; color:var(--c-text); font-size:13px; font-weight:700; }
.quota-modes label { display:flex !important; align-items:flex-start; gap:10px !important; cursor:pointer; }
.quota-modes input { width:18px; height:18px; margin-top:2px; accent-color:var(--c-ok); flex:none; }
.quota-modes span { display:grid; gap:2px; }
.quota-modes b { color:var(--c-text); font-size:14px; }
.quota-modes small { color:var(--c-muted); font-size:12px; font-weight:400; line-height:1.5; }
.quota-preview { border:1px solid #2f5a72; background:var(--c-info-bg); border-radius:10px; padding:12px 14px; color:var(--c-sub); font-size:13px; line-height:1.6; }
.quota-preview h4 { margin:0 0 6px; color:var(--c-text); font-size:14px; }
.quota-preview ul { margin:0; padding-left:18px; display:grid; gap:4px; }
.quota-preview[aria-busy="true"] { opacity:.7; }
.quota-actions { gap:8px; flex-wrap:wrap; }
.quota-actions .secondary-button { min-height:43px; padding:0 16px; border:1px solid #45627d; border-radius:9px; background:transparent; color:var(--c-sub); font-weight:800; cursor:pointer; }
.quota-actions .secondary-button:hover { border-color:var(--c-ok); color:var(--c-ok); }
.quota-checklist summary { cursor:pointer; color:var(--c-sub); font-size:13px; font-weight:700; padding:6px 0; }
.quota-checklist ul { list-style:none; margin:4px 0 8px; padding:0; display:grid; gap:4px; }
.quota-checklist li { display:grid; grid-template-columns:18px minmax(0,1fr) auto; gap:8px; align-items:baseline; font-size:13px; color:var(--c-sub); }
.quota-checklist li b { color:var(--c-muted); }
.quota-checklist li.is-done b { color:var(--c-ok); }
.quota-checklist li em { font-style:normal; color:var(--c-text); overflow-wrap:anywhere; text-align:right; }
.quota-gap { margin:6px 0 0 !important; }
.quota-gap.is-warn { color:var(--c-warn) !important; }
.quota-coverage li.is-covered::marker { color:var(--c-ok); }
.quota-coverage li.is-bypass { color:var(--c-warn); }
@media(max-width:600px){ .quota-checklist li { grid-template-columns:18px minmax(0,1fr); } .quota-checklist li em { grid-column:2; text-align:left; } .quota-actions button { width:100%; } }
.quota-warning { margin:0; border:1px solid #7a3b3b; background:var(--c-danger-bg); border-radius:8px; padding:10px 12px; color:#ffc9c9; font-size:13px; line-height:1.6; }
.quota-actions { display:flex; justify-content:flex-end; }
.quota-actions .primary-button { padding:0 18px; }
.form-message.is-success { color:var(--c-ok); }
.quota-coverage { border-top:1px solid var(--c-line); padding-top:12px; display:grid; gap:6px; }
.quota-coverage h4 { margin:0; font-size:14px; color:var(--c-sub); }
.flow-step li.is-warn { color:var(--c-warn); font-weight:700; }
@media(max-width:900px){ .quota-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px){
  .quota-panel { padding:16px; }
  .quota-panel > header { flex-direction:column; align-items:flex-start; }
  .quota-stats, .quota-form-grid { grid-template-columns:1fr; }
  .quota-lane { grid-template-columns:1fr 1fr; }
  .quota-lane > b { grid-column:1/-1; padding-bottom:0; }
  .quota-actions .primary-button { width:100%; }
}

/* 12px floor for the base stylesheet's small labels */
.brand-lockup small, .eyebrow, .login-card footer, .console-sidebar nav span, .sidebar-foot span, .console-topbar p, .engine-state,
.metric-grid span, .metric-grid small, .candidate-tools > span, th, .status, .copy-button, .seed-query-item small, .seed-query-item button { font-size:12px; }

/* 대상별 조치 안내 */
.flow-attention { list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.flow-attention li { display:grid; gap:4px; border-left:3px solid var(--c-warn); background:var(--c-warn-bg); border-radius:0 8px 8px 0; padding:8px 10px; font-size:13px; line-height:1.55; color:var(--c-sub); overflow-wrap:anywhere; }
.flow-attention li[data-kind="reader_account"] { border-left-color:var(--c-info); background:var(--c-info-bg); }
.flow-attention strong { color:var(--c-text); font-size:13px; }
.flow-attention a { color:var(--c-ok); font-weight:700; justify-self:start; }
.flow-notice-sub { margin:8px 0 0; color:var(--c-sub); font-weight:700; }

/* 긴 캠페인명·주소·오류는 줄을 바꿔 전부 보여 주고, 옆 버튼을 밀어내지 않는다 */
.operation-work-heading strong, .operations-work-queue-main strong, .board-work-case-panel td small, .saved-search-list strong, .saved-search-list span,
.queue-hold-list strong, .queue-hold-list span, .campaign-main strong, .campaign-main span, .board-work-item strong, .board-work-item span,
.journey-source a, .journey-state strong, .journey-state span, .briefing-detail article strong, .briefing-detail article span,
.seed-query-item strong, .health-check-detail, .url-link, .query, .bmpro-panel .table-wrap td .url-link, .pipeline-panel .table-wrap td .url-link {
  white-space:normal; overflow:visible; text-overflow:clip; overflow-wrap:anywhere;
}
.seed-query-item > div, .operations-work-queue-main, .board-work-item > div { min-width:0; }
.seed-query-item > button, .flow-actions button, .campaign-card-actions button { flex:none; }

/* 캠페인 저장 전 검사·미리보기 */
.campaign-check { display:grid; gap:8px; border:1px solid var(--c-line, #2c4356); border-radius:10px; padding:12px 14px; background:#0b1520; }
.campaign-check h4 { margin:0; font-size:14px; color:#edf3fb; }
.campaign-check .muted, .campaign-check small { color:#8ea3b6; font-size:12px; line-height:1.6; }
.campaign-check-head { display:flex; flex-wrap:wrap; gap:6px; }
.campaign-check-outcome { margin:0; color:#c3d3e0; font-size:13px; line-height:1.6; }
.campaign-check-errors { margin:0; padding-left:18px; color:#ff9d9d; font-size:13px; line-height:1.6; }
p.campaign-check-errors { padding-left:0; }
.campaign-check [aria-busy="true"] { opacity:.6; }
.campaign-preview summary { cursor:pointer; color:#c3d3e0; font-size:13px; font-weight:700; padding:4px 0; }
.campaign-preview-box { margin:6px 0; border:1px dashed #3a5468; border-radius:8px; padding:10px 12px; background:#0d1a26; max-height:240px; overflow:auto; }
.campaign-preview-box strong { display:block; color:#edf3fb; font-size:14px; overflow-wrap:anywhere; }
.campaign-preview-box .pre { margin:8px 0 0; color:#c3d3e0; font-size:13px; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }
.board-access { display:inline-block; margin-top:4px; color:#c3d3e0; font-size:12px; font-weight:700; }
.board-access.is-login_required { color:#f7d66b; }
.board-access.is-review_required, .board-access.is-unknown { color:#ffb5a7; }
/* 표 안의 상태·버튼은 한 덩어리로 유지 */
.status, .board-work-case-panel td .primary-button, .board-work-case-panel td .secondary-button { white-space:nowrap; }
.board-work-case-panel td:last-child { width:1%; }
@media(max-width:600px){
  .copy-status-field label { flex-wrap:wrap; }
  .copy-status-field label small { flex-basis:100%; padding-left:26px; }
}
.campaign-summary { white-space:normal; overflow-wrap:anywhere; min-width:0; }
.quota-table tr.is-out-of-scope th, .quota-table tr.is-out-of-scope td { color:var(--c-muted); }
.quota-table th small { display:block; color:var(--c-muted); font-size:12px; font-weight:400; }
.quota-split { margin:0; color:var(--c-sub); font-size:13px; }
.flow-causes { display:flex; flex-wrap:wrap; gap:6px; margin:0; }
.cause-chip { display:inline-block; border-radius:999px; padding:2px 9px; font-size:12px; font-weight:700; border:1px solid var(--c-line); color:var(--c-sub); }
.cause-chip.is-user_setup { border-color:#766334; color:var(--c-warn); }
.cause-chip.is-site_permission { border-color:#2f5a72; color:var(--c-info); }
.cause-chip.is-site_failure { border-color:#7a3b3b; color:var(--c-danger); }
.cause-chip.is-program { border-color:#7a3b3b; color:#ffc9c9; }
.cause-chip.is-submitted_unverified { border-color:#346c53; color:var(--c-ok); }
.campaign-targets { margin-top:6px; }
.campaign-targets summary { cursor:pointer; color:#c3d3e0; font-size:13px; font-weight:700; }
.campaign-targets ul { list-style:none; margin:6px 0; padding:0; display:grid; gap:6px; }
.campaign-targets li { display:grid; gap:2px; border-left:2px solid #2c4356; padding-left:8px; font-size:13px; overflow-wrap:anywhere; }
.campaign-targets li small { color:#8ea3b6; font-size:12px; }
.campaign-targets li span { color:#c3d3e0; font-size:12px; }
.campaign-targets a { color:#8ef0bf; font-size:12px; font-weight:700; }

/* 사이트 계정 */
.site-account-panel { display:grid; gap:12px; padding:0 20px 20px; }
.site-account-panel > header { padding:0; }
.site-account-panel tr.is-disabled td { color:#8ea3b6; }
.site-account-panel td small { color:#8ea3b6; font-size:12px; }
.site-account-panel td small.danger { color:#ff9d9d; }
.site-account-panel td { overflow-wrap:anywhere; }
.site-account-actions { display:flex; flex-wrap:wrap; gap:6px; }
.site-account-form { display:grid; gap:12px; border:1px solid #2c4356; border-radius:10px; padding:14px 16px; background:#0b1520; }
.site-account-form h3 { margin:0; font-size:15px; color:#edf3fb; overflow-wrap:anywhere; }
.site-account-form .muted { margin:0; color:#8ea3b6; font-size:13px; line-height:1.6; }
.site-account-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; }
.site-account-grid label { display:grid; gap:6px; color:#c3d3e0; font-size:13px; font-weight:700; min-width:0; }
.site-account-grid .input { width:100%; border:1px solid #304359; border-radius:8px; padding:9px 10px; background:#0b131d; color:#edf3fb; font-size:14px; }
.site-account-grid .input[readonly] { opacity:.7; }
.site-account-grid .input:focus { outline:none; border-color:#8ef0bf; box-shadow:0 0 0 3px rgba(142,240,191,.12); }
.site-account-grid .input[aria-invalid="true"] { border-color:#ff9d9d; }
.site-account-grid .field-error { color:#ff9d9d; font-size:12px; font-style:normal; }
.site-account-form .quota-modes { border-color:#2c4356; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Cards in one grid row share a height; spare height stays at the bottom instead of stretching rows. */
.flow-target { align-content:start; }
.flow-causes { align-items:flex-start; }
.site-account-grid { align-items:start; }
.site-account-grid label { align-content:start; }

/* 중앙 작업 · 서버 워커 설정 · 실행 전 확인 (server-ops-20261003-2) */
.central-jobs-head { display:flex; gap:16px; align-items:flex-start; justify-content:space-between; margin:12px 0; color:var(--c-sub); font-size:13px; line-height:1.6; }
.central-jobs-head p { margin:0; max-width:760px; }
.central-job-form { border:1px solid var(--c-line); border-radius:10px; padding:14px 16px; margin:12px 0; display:grid; gap:10px; }
.central-job-form h3 { margin:0; font-size:15px; }
.central-job-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:10px 14px; }
.central-job-grid label, .central-job-grid fieldset { display:grid; gap:4px; font-size:13px; color:var(--c-sub); min-width:0; }
.central-job-grid label.wide { grid-column:1 / -1; }
.central-job-grid fieldset { border:0; padding:0; margin:0; }
.central-job-grid label.inline, .central-job-form label.inline { display:flex; gap:6px; align-items:center; }
.central-job-grid input, .central-job-grid select, .central-job-grid textarea { width:100%; box-sizing:border-box; }
.field-error { color:var(--c-danger); font-size:12px; }
.field-error:empty { display:none; }
.form-hint { margin:0; font-size:12px; color:var(--c-sub); line-height:1.6; }
.cj-sub { display:block; color:var(--c-sub); font-size:12px; line-height:1.5; margin-top:2px; overflow-wrap:anywhere; }
.central-job-table td { vertical-align:top; }
.central-job-table .flow-actions { flex-wrap:wrap; }
.flow-preflight { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:6px 0; }
.preflight-title { font-size:12px; font-weight:700; color:var(--c-sub); margin-right:2px; }
.preflight-chip { display:inline-flex; gap:4px; align-items:center; border-radius:999px; padding:2px 9px; font-size:12px; border:1px solid var(--c-line); color:var(--c-sub); overflow-wrap:anywhere; }
.preflight-chip.is-ok { border-color:#346c53; color:var(--c-ok); }
.preflight-chip.is-bad { border-color:#766334; color:var(--c-warn); }
.preflight-note { flex-basis:100%; font-size:12px; color:var(--c-sub); }
.registered-targets tr.is-alias td, .registered-targets tr.is-outside_grant td { opacity:.75; }
.worker-apply-plan { margin:0; padding-left:20px; font-size:13px; line-height:1.7; }
.worker-apply-plan li.is-failed { color:var(--c-danger); }
.worker-apply-plan li.is-done, .worker-apply-plan li.is-skipped { color:var(--c-ok); }
#worker-settings input[type="number"] { width:90px; }
#worker-settings td .is-unknown { color:var(--c-warn); }
@media (max-width: 720px) {
  .central-jobs-head { flex-direction:column; }
  .central-job-grid { grid-template-columns:1fr; }
}

/* 회차·중앙 반영 표시 (server-ops-20261005-1) */
.flow-cycle { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; margin:4px 0; font-size:12px; color:var(--c-sub); }
.cycle-chip { border-radius:999px; padding:2px 9px; border:1px solid var(--c-line); font-weight:700; }
.cycle-chip.is-posted { border-color:#346c53; color:var(--c-ok); }
.cycle-chip.is-waiting { border-color:#2f5a72; color:var(--c-info); }
.cycle-prev a { color:var(--c-ok); }
.cycle-hold { color:var(--c-warn); }
.central-chip { display:inline-block; margin-top:4px; border-radius:999px; padding:1px 8px; font-size:12px; border:1px solid var(--c-line); }
.central-chip.is-ok { border-color:#346c53; color:var(--c-ok); }
.central-chip.is-wait { border-color:#766334; color:var(--c-warn); }
.central-chip.is-bad { border-color:#7a3b3b; color:var(--c-danger); }
/* Central delivery watch for directly added boards */
.delivery-watch { margin:12px 0; padding:12px 14px; border:1px solid var(--c-line); border-radius:10px; background:var(--c-surface-2); }
.delivery-watch h3 { margin:0 0 8px; font-size:14px; }
.delivery-watch ul { list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.delivery-watch li { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; padding:8px 10px; border-left:3px solid var(--c-line); background:var(--c-surface); border-radius:6px; overflow-wrap:anywhere; }
.delivery-watch li span { color:var(--c-sub); min-width:0; }
.delivery-watch li small { flex-basis:100%; color:var(--c-sub); font-size:12px; line-height:1.5; }
.delivery-watch li.is-success { border-left-color:var(--c-ok); } .delivery-watch li.is-success b { color:var(--c-ok); }
.delivery-watch li.is-warning { border-left-color:var(--c-warn); } .delivery-watch li.is-warning b { color:var(--c-warn); }
.delivery-watch li.is-error { border-left-color:var(--c-danger); } .delivery-watch li.is-error b { color:var(--c-danger); }
