:root {
  font-family: Inter, Pretendard, "Noto Sans KR", system-ui, sans-serif;
  color: #172022;
  background: #f3f5f1;
  font-synthesis: none;
  --ink: #172022;
  --muted: #66706d;
  --line: #dce2dc;
  --paper: #fffefa;
  --brand: #0a6654;
  --brand-dark: #084c40;
  --danger: #a63e3e;
  --shadow: 0 18px 45px rgba(23, 32, 34, 0.08);
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.topbar { display: flex; align-items: end; justify-content: space-between; gap: 2rem; padding: 2.4rem clamp(1.25rem, 4vw, 4rem) 2rem; background: var(--ink); color: #f8f6ee; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: .55rem; font-size: clamp(1.8rem, 4vw, 3.2rem); letter-spacing: -.045em; }
h2 { margin-bottom: .25rem; letter-spacing: -.025em; }
.subtitle { margin-bottom: 0; color: #c9d1cd; }
.eyebrow { margin-bottom: .4rem; color: #65bca8; font-size: .72rem; font-weight: 800; letter-spacing: .16em; }
.role-switcher { display: grid; gap: .45rem; min-width: 210px; color: #dce7e2; font-size: .78rem; }
.role-switcher select { color: #fff; background: #283533; border-color: #52625f; }
.layout { display: grid; grid-template-columns: 330px minmax(0, 1fr); gap: 1.25rem; padding: 1.25rem clamp(1rem, 3vw, 3rem) 3rem; }
.panel { background: var(--paper); border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); }
.sidebar { padding: 1.25rem; align-self: start; position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow: auto; }
.content { min-width: 0; }
.section-heading, .detail-header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.icon-button { border: 1px solid var(--line); border-radius: 999px; width: 36px; height: 36px; background: #fff; color: var(--ink); }
.session-card { margin: 1rem 0; padding: .85rem; border-radius: 12px; background: #edf6f2; font-size: .85rem; color: var(--brand-dark); }
.session-card strong { display: block; margin-bottom: .2rem; }
.field { display: grid; gap: .45rem; margin: .9rem 0; }
.field span { font-size: .78rem; font-weight: 750; color: var(--muted); }
input, select, textarea { width: 100%; border: 1px solid #cad3cc; border-radius: 10px; padding: .72rem .8rem; background: #fff; color: var(--ink); }
input:focus, select:focus, textarea:focus { outline: 3px solid rgba(10, 102, 84, .15); border-color: var(--brand); }
.compact { margin: .8rem 0; }
.campaign-list { display: grid; gap: .65rem; margin-top: 1rem; }
.campaign-card { width: 100%; text-align: left; border: 1px solid var(--line); border-radius: 12px; padding: .9rem; background: #fff; }
.campaign-card:hover, .campaign-card.active { border-color: var(--brand); background: #f0f8f5; }
.campaign-card strong { display: block; margin-bottom: .4rem; }
.meta { color: var(--muted); font-size: .78rem; }
.status { display: inline-flex; flex-shrink: 0; white-space: nowrap; padding: .25rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .68rem; font-weight: 800; letter-spacing: .04em; }
.status.ONGOING { color: #075a4a; background: #dff3ec; }
.status.COMPLETED { color: #234f83; background: #e2edf9; }
.status.CANCELLED { color: #883838; background: #f8e4e1; }
.empty-state { padding: min(12vw, 7rem) 2rem; text-align: center; color: var(--muted); }
.empty-state h2 { color: var(--ink); }
.empty-mark { font-size: 3.5rem; color: var(--brand); margin-bottom: 1rem; }
.detail { display: grid; gap: 1rem; }
/* display:grid 가 hidden 속성을 덮어 clearDetail() 뒤에도 지난 캠페인 내용이 보이던 결함(L8-A 독립 구현 검토 보고) — 다른 [hidden] 규칙과 같은 방식. */
.detail[hidden] { display: none; }
.detail > .panel { padding: clamp(1.1rem, 3vw, 2rem); }
.actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.primary, .secondary, .danger { border: 0; border-radius: 10px; padding: .72rem 1rem; font-weight: 750; }
.primary { color: #fff; background: var(--brand); }
.primary:hover { background: var(--brand-dark); }
.secondary { color: var(--ink); background: #edf0ec; }
.danger { color: #fff; background: var(--danger); }
.full { width: 100%; }
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin-top: 1.2rem; }
.metric { padding: .9rem; border: 1px solid var(--line); border-radius: 12px; }
.metric span { display: block; color: var(--muted); font-size: .72rem; margin-bottom: .3rem; }
.result-grid { display: grid; gap: .7rem; }
.result-row { border: 1px solid var(--line); border-radius: 12px; padding: .9rem; display: grid; grid-template-columns: 110px minmax(0, 1fr) auto; gap: .8rem; align-items: center; }
.result-row a { color: var(--brand); overflow-wrap: anywhere; }
.result-form { display: grid; grid-template-columns: 120px 150px 1fr 1.4fr auto; gap: .65rem; align-items: end; }
.notice { margin-bottom: 1rem; padding: .9rem 1rem; border-radius: 12px; background: #fff2d6; color: #714a00; border: 1px solid #eed79e; }
.notice.error { color: #7f2929; background: #fbe7e4; border-color: #efc2ba; }
.notice { display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap; }
.notice[hidden] { display: none; }
.notice .notice-action { padding: .45rem .8rem; }
.result-edit-form { grid-column: 1 / -1; display: grid; grid-template-columns: 120px 150px 1fr 1.4fr auto auto; gap: .65rem; align-items: end; }
/* 충돌 복구 중 잠금 표시 · 편집 불가로 바뀐 초안 회수 안내 */
.detail[aria-busy="true"] { opacity: .72; }
button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: .65; }
.draft-recovery { display: grid; gap: .55rem; margin-bottom: .8rem; padding: .9rem 1rem; border-radius: 12px; background: #fff2d6; color: #714a00; border: 1px solid #eed79e; }
.draft-recovery p { margin: 0; }
.draft-recovery textarea { font-size: .82rem; color: var(--ink); resize: vertical; }
.draft-recovery button { justify-self: start; padding: .45rem .8rem; }
.audit-list { margin: 0; padding: 0; list-style: none; display: grid; gap: .5rem; }
.audit-list li { padding: .7rem 0; border-bottom: 1px solid var(--line); font-size: .84rem; }
dialog { border: 0; padding: 0; border-radius: 18px; box-shadow: 0 30px 80px rgba(0,0,0,.25); width: min(560px, calc(100vw - 2rem)); }
dialog::backdrop { background: rgba(13, 21, 20, .55); }
.dialog-card { padding: 1.5rem; }
.dialog-actions { display: flex; justify-content: end; gap: .6rem; margin-top: 1rem; }
.two-cols { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.muted { color: var(--muted); }
/* WMS 읽기 전용 재고 조회 패널(W1) — OPERATOR 전용, 작은 독립 패널 */
.wms-hint { font-size: .8rem; margin-bottom: 1rem; }
.wms-search-form { display: flex; gap: .65rem; align-items: end; margin-bottom: .9rem; }
.wms-search-form .field { flex: 1; margin: 0; }
.wms-inline-notice { margin: 0 0 .9rem; padding: .8rem 1rem; }
.wms-result { display: grid; gap: .35rem; margin-top: 1rem; padding: 1rem; border: 1px solid var(--line); border-radius: 12px; background: #fafcf9; }
.wms-availability { padding: .3rem 0; }
.wms-availability.ok { color: var(--brand-dark); }
.wms-availability.zero { color: #714a00; }
.wms-availability.check { color: var(--danger); }
.wms-fetched-at { font-size: .74rem; }
/* 브랜루미 L7-IB — 조사 근거(업계 브리핑). 한글 낱말 경계에서만 줄바꿈(keep-all, 요약 패널 선례), 긴 주소·영문은 넘치지 않게 anywhere. */
.l7ib-section { word-break: keep-all; }
.l7ib-section p, .l7ib-section li, .l7ib-section .meta { overflow-wrap: anywhere; }
.l7ib-file-row { display: flex; flex-wrap: wrap; gap: .65rem; align-items: end; margin-bottom: .9rem; }
.l7ib-file-field { flex: 1 1 16rem; margin: 0; }
.l7ib-preview { margin: 0 0 1rem; padding: .9rem 1rem; border: 1px dashed var(--line); border-radius: 12px; background: #fafcf9; }
.l7ib-preview-list { margin: .5rem 0 .8rem; padding-left: 1.2rem; display: grid; gap: .45rem; }
.l7ib-existing { font-weight: 600; }
.l7ib-conflict-warning { margin: 0 0 .6rem; }
.l7ib-preview-conflict { padding: .35rem .5rem; border-left: 3px solid var(--danger); background: #fbe7e4; border-radius: 6px; }
.l7ib-existing-conflict { color: #7f2929; }
.l7ib-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.l7ib-row { padding: .85rem 1rem; border: 1px solid var(--line); border-radius: 12px; display: grid; gap: .35rem; }
.l7ib-row-head { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.l7ib-excerpt { margin: 0; padding: .55rem .7rem; border-left: 3px solid var(--line); background: #fafaf7; white-space: pre-wrap; }
.l7ib-decide-form { flex-wrap: wrap; }
/* L10-A — 과거 표시(재조회 실패·60초 경과)인 결과는 현재 값과 모양을 달리한다. 50건 초과 안내. */
.wms-result.past { border-style: dashed; background: #f4f4f1; }
.wms-result.past .wms-availability { color: #5b625d; }
.wms-more-hint { font-size: .8rem; margin: 0 0 .9rem; }
@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; }
  .sidebar { position: static; max-height: none; }
  .result-form { grid-template-columns: 1fr 1fr; }
  .result-form .wide, .result-edit-form .wide { grid-column: 1 / -1; }
  .result-edit-form { grid-template-columns: 1fr 1fr; }
  .metric-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .topbar { align-items: stretch; flex-direction: column; }
  .result-row, .result-form, .result-edit-form, .two-cols { grid-template-columns: 1fr; }
}
/* 브랜루미 L1 — 브랜드·제품 연결(운영자 전용) */
.brand-desk-toggle { margin-top: .55rem; }
.brand-desk { padding: clamp(1.1rem, 3vw, 2rem); margin-bottom: 1rem; }
.brand-desk[hidden] { display: none; }
.brand-hint { font-size: .8rem; margin-bottom: 1rem; }
.brand-inline-form { display: flex; flex-wrap: wrap; gap: .55rem; align-items: end; margin: .6rem 0; }
.brand-inline-form .field { flex: 1; min-width: 180px; margin: 0; }
.brand-inline-form input { flex: 1; min-width: 160px; }
.brand-grid-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; align-items: end; margin-bottom: .8rem; }
.brand-grid-form .field { margin: 0; }
.brand-grid-form .wide { grid-column: 1 / -1; }
.brand-list { display: grid; gap: .6rem; margin: 1rem 0; }
.brand-row { display: grid; grid-template-columns: minmax(0, 12rem) auto minmax(0, 1fr); gap: .6rem; align-items: center; padding: .6rem; border: 1px solid var(--line); border-radius: 12px; }
.brand-row.active { border-color: var(--brand); background: #f0f8f5; }
.brand-row .brand-inline-form { margin: 0; }
.brand-detail { border-top: 1px solid var(--line); padding-top: 1rem; }
.brand-detail h3 { margin: 1rem 0 .6rem; }
.brand-history { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; gap: .55rem; }
.brand-history li { display: grid; gap: .3rem; padding: .7rem .8rem; border: 1px solid var(--line); border-radius: 12px; font-size: .86rem; }
.brand-history li.muted { border-style: dashed; }
.brand-history .actions button { padding: .45rem .8rem; }
@media (max-width: 900px) {
  .brand-row, .brand-grid-form { grid-template-columns: 1fr; }
}
/* 브랜루미 L9-A — 브랜드 행의 「요약 보기」(4번째 칸). 좁은 화면은 위 규칙대로 한 줄에 하나. */
.brand-row { grid-template-columns: minmax(0, 12rem) auto minmax(0, 1fr) auto; }
@media (max-width: 900px) {
  .brand-row { grid-template-columns: 1fr; }
  .brand-row .brand-summary-open { justify-self: start; }
}
/* 브랜루미 L1 보정(L2-A 묶음) — 제품 참조 목록의 「비활성으로」 버튼이 가로로 늘어나지 않게 다른 목록 버튼과 같은 크기로 */
.brand-history li > button { justify-self: start; padding: .45rem .8rem; }
/* 브랜루미 L2-A — 기획·채널·작업(운영자 전용). 선택자는 l2a- 접두어만 쓴다. */
.l2a-section { border-top: 1px solid var(--line); padding-top: 1rem; margin-top: 1rem; }
.l2a-section h3 { margin: 0 0 .6rem; }
.l2a-hint { font-size: .8rem; }
.l2a-grid-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; align-items: end; margin: .6rem 0 .9rem; }
.l2a-grid-form .field { margin: 0; min-width: 0; }
.l2a-grid-form .wide, .l2a-form-actions { grid-column: 1 / -1; }
.l2a-grid-form textarea { resize: vertical; }
.l2a-form-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.l2a-list { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; gap: .6rem; }
.l2a-list > li { display: grid; gap: .4rem; padding: .75rem .85rem; border: 1px solid var(--line); border-radius: 12px; font-size: .88rem; min-width: 0; overflow-wrap: anywhere; }
.l2a-list > li.muted { border-style: dashed; }
.l2a-list .actions button, .l2a-prereq button, .l2a-inline-form button { padding: .45rem .8rem; }
.l2a-task-head { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.l2a-flag { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .72rem; font-weight: 800; }
.l2a-flag.on { color: #075a4a; background: #dff3ec; }
.l2a-flag.off { color: #883838; background: #f8e4e1; }
.l2a-flag.overdue { color: #7f2929; background: #fbe7e4; border: 1px solid #efc2ba; }
.l2a-flag.blocked { color: #714a00; background: #fff2d6; border: 1px solid #eed79e; }
.l2a-task-row.is-overdue { border-color: #efc2ba; }
.l2a-prereqs { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.l2a-prereq { display: inline-flex; flex-wrap: wrap; gap: .35rem; align-items: center; padding: .2rem .5rem; border: 1px dashed var(--line); border-radius: 10px; }
.l2a-inline-form { display: flex; flex-wrap: wrap; gap: .5rem; align-items: end; width: 100%; }
.l2a-inline-form .field { flex: 1; min-width: 0; margin: 0; }
.l2a-inline-notice { margin: 0 0 .6rem; padding: .7rem .9rem; }
@media (max-width: 600px) {
  .l2a-grid-form { grid-template-columns: 1fr; }
}

/* 브랜루미 L2-B — 작업 보드·달력(같은 자료의 보기 전환, 계약 §4 끝 문단). 선택자는 계속 l2a- 접두어. */
.l2a-view-switcher { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 .9rem; }
.l2a-view-button.is-active { background: var(--accent, #0f4c3a); color: #fff; border-color: transparent; }
.l2a-board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .7rem; margin: 0 0 1rem; }
.l2a-board-column { min-width: 0; border: 1px solid var(--line); border-radius: 12px; padding: .6rem; background: #fafbfa; }
.l2a-board-column h4 { margin: 0 0 .5rem; display: flex; gap: .4rem; align-items: baseline; font-size: .85rem; }
.l2a-board-list { margin: 0; padding: 0; list-style: none; display: grid; gap: .5rem; }
.l2a-board-card { display: grid; gap: .35rem; padding: .6rem .65rem; border: 1px solid var(--line); border-radius: 10px; background: #fff; font-size: .85rem; min-width: 0; overflow-wrap: anywhere; }
.l2a-board-card.is-overdue { border-color: #efc2ba; }
.l2a-board-empty { border: 1px dashed var(--line); border-radius: 10px; padding: .5rem; text-align: center; }
.l2a-board-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
.l2a-board-actions button { padding: .35rem .6rem; font-size: .8rem; }
.l2a-calendar-nav { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin: 0 0 .6rem; }
.l2a-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .35rem; margin: 0 0 .8rem; }
.l2a-calendar-weekday { text-align: center; font-size: .75rem; font-weight: 700; color: var(--muted, #6b7873); }
.l2a-calendar-cell { min-height: 4.4rem; border: 1px solid var(--line); border-radius: 8px; padding: .3rem; display: grid; gap: .2rem; align-content: start; min-width: 0; }
.l2a-calendar-cell.is-outside { opacity: .4; }
.l2a-calendar-cell.is-today { border-color: #0f4c3a; border-width: 2px; }
.l2a-calendar-cell.is-in-period { background: #f4f9f6; }
.l2a-calendar-date { font-size: .78rem; font-weight: 700; }
.l2a-calendar-tasks { display: grid; gap: .2rem; }
.l2a-calendar-chip { display: block; width: 100%; text-align: left; padding: .15rem .35rem; border-radius: 6px; border: 1px solid var(--line); background: #fff; font-size: .68rem; overflow-wrap: anywhere; }
.l2a-calendar-chip.is-overdue { border-color: #efc2ba; color: #7f2929; background: #fbe7e4; }
.l2a-calendar-outside { margin: 0 0 .6rem; }
/* 「기한 없음」 목록은 달력 칸의 칩과 같은 모양(인라인 칩)으로 — 목록 li 처럼 입력칸 같은 큰 상자로 보이지 않게. */
.l2a-nodate-list { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.l2a-nodate-list > li { display: inline-flex; align-items: center; gap: .4rem; }
.l2a-nodate-list .l2a-calendar-chip { display: inline-block; width: auto; }
.l2a-calendar-agenda { display: none; margin: 0 0 .8rem; padding: 0; list-style: none; gap: .5rem; }
.l2a-agenda-group { border: 1px solid var(--line); border-radius: 10px; padding: .5rem .6rem; display: grid; gap: .3rem; }
.l2a-agenda-group.is-today { border-color: #0f4c3a; }
@media (max-width: 640px) {
  .l2a-calendar-grid { display: none; }
  .l2a-calendar-agenda { display: grid; }
}
@media (max-width: 900px) {
  .l2a-board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .l2a-board { grid-template-columns: 1fr; }
}

/* 브랜루미 L3 — 전달 묶음·고객 회신 기록·실행 허가·실행 기록(운영자 전용). 선택자는 l3- 접두어만 쓴다. */
.l3-section { border-top: 1px solid var(--line); padding-top: 1rem; margin-top: 1rem; min-width: 0; }
.l3-section h3 { margin: 0 0 .6rem; }
.l3-hint { font-size: .8rem; overflow-wrap: anywhere; }
.l3-grid-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; align-items: end; margin: .6rem 0 .9rem; }
.l3-grid-form .field { margin: 0; min-width: 0; }
.l3-grid-form > * { min-width: 0; overflow-wrap: anywhere; }
.l3-section .meta, .l3-section p { overflow-wrap: anywhere; }
.l3-grid-form .wide, .l3-form-actions { grid-column: 1 / -1; }
.l3-grid-form input[type="file"] { max-width: 100%; min-width: 0; }
.l3-form-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.l3-fieldset { border: 1px dashed var(--line); border-radius: 10px; padding: .5rem .7rem; display: flex; flex-wrap: wrap; gap: .5rem 1rem; min-width: 0; }
.l3-check { display: inline-flex; gap: .35rem; align-items: center; min-width: 0; overflow-wrap: anywhere; }
.l3-check input { width: auto; }
.l3-asset-pick { display: grid; gap: .25rem; min-width: 0; overflow-wrap: anywhere; }
.l3-list { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; gap: .6rem; }
.l3-list > li { display: grid; gap: .4rem; padding: .75rem .85rem; border: 1px solid var(--line); border-radius: 12px; font-size: .88rem; min-width: 0; overflow-wrap: anywhere; }
.l3-list > li.muted { border-style: dashed; }
.l3-row-head { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.l3-assets { margin: 0; padding-left: 1.1rem; }
.l3-flag { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .72rem; font-weight: 800; }
.l3-flag.on { color: #075a4a; background: #dff3ec; }
.l3-flag.off { color: #883838; background: #f8e4e1; }
.l3-incident { border-color: #efc2ba !important; background: #fdf3f1; }
.l3-incident [data-l3-exec-kind] { color: #7f2929; }
.l3-inline-form { display: flex; flex-wrap: wrap; gap: .5rem; align-items: end; width: 100%; }
.l3-inline-form .field { flex: 1; min-width: 0; margin: 0; }
.l3-inline-form button, .l3-section .actions button { padding: .45rem .8rem; }
.l3-inline-notice { margin: 0 0 .6rem; padding: .7rem .9rem; }
@media (max-width: 720px) {
  .l3-grid-form { grid-template-columns: 1fr; }
}

/* 브랜루미 L6-A — 성과·결정(운영자 전용). 선택자는 l6a- 접두어만 쓴다. 조건부 칸은 hidden 으로 숨긴다(비활성으로 두지 않는다). */
.l6a-panel [hidden] { display: none !important; }
.l6a-section { border-top: 1px solid var(--line); padding-top: 1rem; margin-top: 1rem; min-width: 0; }
.l6a-section h3 { margin: 0 0 .6rem; }
.l6a-subheading { margin: .8rem 0 .4rem; font-size: .9rem; }
.l6a-hint { font-size: .8rem; overflow-wrap: anywhere; }
.l6a-section .meta, .l6a-section p { overflow-wrap: anywhere; }
.l6a-grid-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; align-items: end; margin: .6rem 0 .9rem; }
.l6a-grid-form .field { margin: 0; min-width: 0; }
.l6a-grid-form > * { min-width: 0; overflow-wrap: anywhere; }
.l6a-grid-form .wide, .l6a-form-actions { grid-column: 1 / -1; }
.l6a-grid-form textarea { width: 100%; max-width: 100%; box-sizing: border-box; }
.l6a-form-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.l6a-action-row { border: 1px dashed var(--line); border-radius: 10px; padding: .5rem .7rem; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; min-width: 0; }
.l6a-action-row .field { margin: 0; min-width: 0; }
.l6a-list { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; gap: .6rem; }
.l6a-list > li { display: grid; gap: .35rem; padding: .7rem .85rem; border: 1px solid var(--line); border-radius: 12px; font-size: .88rem; min-width: 0; overflow-wrap: anywhere; }
.l6a-list > li.muted { border-style: dashed; }
.l6a-list > li.is-superseded { opacity: .75; }
.l6a-row-head { display: flex; flex-wrap: wrap; gap: .45rem; align-items: baseline; }
.l6a-value { font-size: 1.05rem; font-weight: 800; }
.l6a-value.is-empty { color: #6b7570; }
.l6a-flag { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .72rem; font-weight: 800; }
.l6a-flag.on { color: #075a4a; background: #dff3ec; }
.l6a-reason { white-space: pre-wrap; overflow-wrap: anywhere; }
.l6a-superseded summary { cursor: pointer; font-size: .85rem; margin-bottom: .5rem; }
.l6a-ratios { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .4rem; }
.l6a-ratio { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem; padding: .45rem .6rem; border: 1px solid var(--line); border-radius: 10px; font-size: .82rem; min-width: 0; overflow-wrap: anywhere; }
.l6a-ratio.is-empty strong { font-weight: 600; color: #6b7570; }
.l6a-inline-notice { margin: 0 0 .6rem; padding: .7rem .9rem; }
@media (max-width: 720px) {
  .l6a-grid-form, .l6a-action-row { grid-template-columns: 1fr; }
}

/* 브랜루미 L6-B — CI 결과 반입(운영자 전용). 선택자는 l6b- 접두어만 쓴다. 쉬는 상태에서 비활성 요소를 두지 않는다. */
.l6b-panel [hidden] { display: none !important; }
.l6b-section { border-top: 1px solid var(--line); padding-top: 1rem; margin-top: 1rem; min-width: 0; }
.l6b-section h3 { margin: 0 0 .6rem; }
.l6b-subheading { margin: .8rem 0 .4rem; font-size: .9rem; }
.l6b-hint, .l6b-section .meta, .l6b-section p { overflow-wrap: anywhere; }
.l6b-hint { font-size: .8rem; }
.l6b-grid-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; align-items: end; margin: .6rem 0 .9rem; }
.l6b-grid-form .field { margin: 0; min-width: 0; }
.l6b-grid-form > * { min-width: 0; overflow-wrap: anywhere; }
.l6b-grid-form .wide, .l6b-form-actions { grid-column: 1 / -1; }
.l6b-form-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.l6b-fieldset { border: 1px dashed var(--line); border-radius: 10px; padding: .5rem .7rem; display: grid; gap: .4rem; min-width: 0; }
.l6b-check { display: flex; gap: .4rem; align-items: center; font-size: .88rem; }
.l6b-table-wrap { max-width: 100%; overflow-x: auto; margin: .4rem 0 .8rem; }
.l6b-table { width: 100%; border-collapse: collapse; font-size: .82rem; }
.l6b-table th, .l6b-table td { border-bottom: 1px solid var(--line); padding: .35rem .45rem; text-align: left; vertical-align: top; overflow-wrap: anywhere; }
.l6b-table .l6b-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.l6b-list { margin: 0 0 1rem; padding: 0; list-style: none; display: grid; gap: .6rem; }
.l6b-list > li { display: grid; gap: .35rem; padding: .7rem .85rem; border: 1px solid var(--line); border-radius: 12px; font-size: .88rem; min-width: 0; overflow-wrap: anywhere; }
.l6b-list > li.muted { border-style: dashed; }
.l6b-row-head { display: flex; flex-wrap: wrap; gap: .45rem; align-items: baseline; }
.l6b-flag { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .72rem; font-weight: 800; }
.l6b-flag.on { color: #075a4a; background: #dff3ec; }
.l6b-flag.warn { color: #7a3d00; background: #fdebd3; }
.l6b-details summary { cursor: pointer; font-size: .85rem; margin: .3rem 0; }
.l6b-plain { margin: .3rem 0 .6rem; padding-left: 1.1rem; font-size: .82rem; overflow-wrap: anywhere; }
.l6b-inline-notice { margin: 0 0 .6rem; padding: .7rem .9rem; }
@media (max-width: 640px) {
  .l6b-grid-form { grid-template-columns: minmax(0, 1fr); }
  /* 좁은 화면: 표를 행마다 카드로 쌓는다(가로 스크롤 없음). 칸 이름은 data-label. */
  .l6b-table thead { display: none; }
  .l6b-table, .l6b-table tbody, .l6b-table tr, .l6b-table td { display: block; width: 100%; box-sizing: border-box; }
  .l6b-table tr { border: 1px solid var(--line); border-radius: 10px; margin-bottom: .5rem; padding: .3rem .5rem; }
  .l6b-table td { border: 0; display: flex; justify-content: space-between; gap: .6rem; padding: .2rem 0; text-align: right; white-space: normal; }
  .l6b-table td::before { content: attr(data-label); font-weight: 700; text-align: left; flex: 0 0 auto; }
  .l6b-table td[colspan]::before { content: none; }
}
/* 브랜루미 L8-A — 고객 브랜드 접근 권한. CLIENT 브랜드 필터는 grant 가 없으면 hidden(비활성으로 두지 않는다). */
#brand-filter-field[hidden] { display: none; }
.grant-section { border-top: 1px solid var(--line); margin-top: 1rem; padding-top: .2rem; }
.field .grant-checkbox { display: inline-flex; align-items: center; gap: .45rem; min-height: 2.4rem; font-size: .9rem; color: inherit; }
.grant-checkbox input { width: 1.05rem; height: 1.05rem; }
.grant-section .brand-inline-form input[name="reason"] { min-width: 0; flex: 1 1 12rem; }

/* 브랜루미 L8-B1 — 로그인 화면·로그아웃·세션 만료 안내(계약 §7-B.4). 인증 거부 화면(/auth/callback)도 같은 카드를 쓴다. */
.logout-button { align-self: center; }
.logout-button[hidden], .role-switcher[hidden], .login-screen[hidden], .layout[hidden] { display: none; }
.login-screen { display: grid; place-items: start center; padding: clamp(1.5rem, 6vw, 4rem) 16px 3rem; }
.login-card, .auth-card { width: min(100%, 440px); box-sizing: border-box; padding: clamp(1.25rem, 5vw, 2rem); }
.login-card p, .auth-card p { color: var(--muted); overflow-wrap: anywhere; }
.login-link, .auth-actions a { display: inline-block; text-decoration: none; text-align: center; }
.login-link { display: block; margin-top: 1rem; }
.auth-page { display: grid; place-items: start center; padding: clamp(1.5rem, 6vw, 4rem) 16px; box-sizing: border-box; }
.auth-page h1 { font-size: clamp(1.3rem, 5vw, 1.8rem); }
.auth-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
.session-expired a.notice-action { text-decoration: none; padding: .45rem .8rem; }

/* 브랜루미 L7-A — AI 제안(운영자 전용, 계약 §6-C.5). 선택자는 l7a- 접두어만 쓴다. 출력 문장은 글자로만 넣는다. */
.l7a-slot { min-width: 0; }
.l7a-slot:empty { display: none; }
.l7a-slot [hidden] { display: none !important; }
.l7a-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; margin: .5rem 0 .7rem; }
.l7a-bar .meta { overflow-wrap: anywhere; }
.l7a-pending { font-size: .85rem; font-weight: 700; color: var(--brand-dark); }
.l7a-inline-notice { margin: 0 0 .6rem; padding: .7rem .9rem; overflow-wrap: anywhere; }
.l7a-card { display: grid; gap: .55rem; margin: 0 0 .9rem; padding: .85rem 1rem; border: 1px dashed #9fb8ae; border-radius: 12px; background: #f6faf8; min-width: 0; overflow-wrap: anywhere; }
.l7a-card-head { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; }
.l7a-card-title { font-size: .92rem; }
.l7a-badge { display: inline-flex; padding: .2rem .55rem; border-radius: 999px; background: #fff2d6; color: #714a00; border: 1px solid #eed79e; font-size: .72rem; font-weight: 800; }
.l7a-flag { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; background: #edf1ef; font-size: .72rem; font-weight: 800; }
.l7a-flag.on { color: #075a4a; background: #dff3ec; }
.l7a-meta { margin: 0; }
.l7a-choices { display: grid; gap: .45rem; }
.l7a-choice { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .15rem .55rem; align-items: start; padding: .5rem .6rem; border: 1px solid var(--line); border-radius: 10px; background: #fff; font-size: .88rem; }
.l7a-choice input[type="checkbox"] { width: 1.05rem; height: 1.05rem; margin: .15rem 0 0; }
.l7a-choice > .l7a-flag { grid-row: span 2; align-self: start; }
.l7a-choice-name { font-weight: 750; }
.l7a-choice .l7a-text { grid-column: 2; }
.l7a-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.l7a-block { display: grid; gap: .2rem; font-size: .86rem; }
.l7a-block-title { font-size: .75rem; font-weight: 800; color: var(--muted); }
.l7a-bullets { margin: 0; padding-left: 1.1rem; display: grid; gap: .15rem; }
.l7a-suggested { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem; margin: 0; }
.l7a-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.l7a-linked { margin: 0; color: var(--brand-dark); }
/* 브랜루미 L7-IB-2 — AI 기획 초안의 조사 근거 안내·인용 목록(계약 §6-H.3). 한글은 어절 단위로 줄바꿈. */
.l7ib2-hint { display: grid; gap: .1rem; margin: -.3rem 0 .7rem; word-break: keep-all; overflow-wrap: anywhere; }
.l7ib2-hint p { margin: 0; }
.l7ib2-cited { word-break: keep-all; }
.l7ib2-cited-items { margin: 0; padding: 0; list-style: none; display: grid; gap: .3rem; }
.l7ib2-cited-item { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .5rem; padding: .4rem .55rem; border: 1px solid var(--line); border-radius: 8px; background: #fff; overflow-wrap: anywhere; min-width: 0; }
.l7ib2-cited-title { font-weight: 700; }
.l7ib2-cited-meta { font-size: .8rem; }
/* 브랜루미 L9-A — 브랜드 요약(운영자 전용, 읽기만). 선택자는 summary- 접두어(와 #brand-summary)만 쓴다. */
.brand-summary { padding: clamp(1.1rem, 3vw, 2rem); margin-bottom: 1rem; }
.brand-summary[hidden] { display: none; }
/* 요약 화면이 열려 있는 동안 빈 상태·캠페인 상세는 가린다(닫거나 캠페인으로 이동하면 다시 보인다). */
.content.summary-open > #empty-state, .content.summary-open > #campaign-detail { display: none; }
.brand-summary h2:focus { outline: none; }
.summary-controls { display: flex; flex-wrap: wrap; gap: .6rem; align-items: end; }
.summary-controls .field { flex: 1; min-width: 220px; margin: 0; }
.summary-generated { margin: .7rem 0 0; }
.summary-next { margin-top: 1rem; padding: .9rem 1rem; border: 1px solid #cfe5dc; border-radius: 14px; background: #f0f8f5; }
.summary-next h3 { margin: 0 0 .5rem; font-size: 1rem; }
.summary-next p { margin: 0; }
.summary-next-list { margin: 0; padding-left: 1.3rem; display: grid; gap: .35rem; font-size: .88rem; }
.summary-next-list .summary-link { vertical-align: top; }
.summary-next-warn { color: #8a2f2f; }
.summary-next-warn span { margin-right: .5rem; }
.summary-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: .9rem; margin-top: 1rem; }
.summary-card { display: grid; align-content: start; gap: .6rem; min-width: 0; padding: 1rem; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.summary-card-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: start; gap: .4rem .6rem; }
.summary-card-head h3 { margin: 0; font-size: 1rem; }
.summary-basis { display: inline-flex; padding: .2rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 800; white-space: nowrap; border: 1px solid transparent; }
.summary-basis.basis-cm-db { color: #2f4a44; background: #edf1ef; border-color: #d5ddd8; }
.summary-basis.basis-bc-file-snapshot { color: #6b4a00; background: #fbf1d9; border-color: #ecd9a6; }
.summary-basis.basis-ci-import-snapshot { color: #234f83; background: #e2edf9; border-color: #c4d7ef; }
.summary-basis.basis-cp-live { color: #075a4a; background: #dff3ec; border-color: #b7e0d1; }
.summary-times { margin: 0; }
.summary-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: .4rem; margin: 0; }
.summary-stats div { padding: .45rem .6rem; border-radius: 10px; background: #f5f7f3; }
.summary-stats dt { font-size: .7rem; font-weight: 750; color: var(--muted); }
.summary-stats dd { margin: .1rem 0 0; font-size: 1.25rem; font-weight: 800; }
.summary-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; font-size: .84rem; }
.summary-list li { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .5rem; padding: .45rem .6rem; border: 1px solid var(--line); border-radius: 10px; min-width: 0; }
.summary-empty { margin: 0; font-size: .84rem; }
.summary-link { border: 0; background: none; padding: 0; color: var(--brand-dark); font-weight: 750; text-align: left; text-decoration: underline; text-underline-offset: 2px; overflow-wrap: anywhere; }
.summary-link:focus-visible, .summary-small:focus-visible { outline: 3px solid rgba(10, 102, 84, .35); outline-offset: 2px; }
.summary-flag { display: inline-flex; padding: .1rem .45rem; border-radius: 999px; font-size: .68rem; font-weight: 800; color: #4b5552; background: #edf0ec; }
.summary-flag.warn { color: #883838; background: #f8e4e1; }
.summary-failure { display: grid; gap: .4rem; justify-items: start; padding: .8rem; border: 1px dashed #d8b4ae; border-radius: 12px; background: #fdf5f3; }
.summary-failure p { margin: 0; font-size: .84rem; }
.summary-failure[data-state="not-configured"] { border-color: #cfd6d1; background: #f5f7f3; }
.summary-state { font-size: .9rem; }
.summary-small { padding: .45rem .8rem; }
/* 브랜루미 L9-B — CLIENT 사이드바 「브랜드 요약」(grant 가 없으면 hidden, 비활성으로 두지 않는다) · grant 0 이면 요약 선택 줄 숨김 */
.brand-summary-button { margin-bottom: .2rem; }
.brand-summary-button[hidden], .summary-controls[hidden] { display: none; }
@media (max-width: 600px) {
  .summary-grid { grid-template-columns: 1fr; }
  .summary-controls { flex-direction: column; align-items: stretch; }
  .summary-controls .field { min-width: 0; }
}
/* 브랜루미 L5-B — 브랜드 「허용 목적지」·기획 패널 「추적 링크」(계약 §4-B.4). 선택자는 l5b-·destination- 접두어만 쓴다. */
.destination-text { overflow-wrap: anywhere; }
.l5b-slot:empty { display: none; }
.l5b-link-list { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; gap: .6rem; }
.l5b-link-row { display: grid; gap: .35rem; min-width: 0; padding: .7rem .8rem; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.l5b-link-row[data-link-status="RETIRED"] { background: #f7f8f6; }
.l5b-link-head { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .5rem; min-width: 0; }
/* 브랜루미 L9-C — 추적 링크 머리 「CSV 내려받기」(§6-F.4)·요약 공개 뉴스룸 줄(§6-F.2). */
.l5b-links-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem .8rem; margin: 0 0 .6rem; min-width: 0; }
.l5b-links-head h3 { margin: 0; }
/* 요약 패널 본문 문구(안내·설명·통계 라벨·목록) — 한국어 낱말 중간 줄바꿈 금지(keep-all, 상속), 긴 slug·주소는 넘치지 않게(anywhere). 흐름 시험 관찰·검토 F3. */
#brand-summary { word-break: keep-all; }
#brand-summary p, #brand-summary li > span:not(.summary-flag) { overflow-wrap: anywhere; }
.l5b-url-line { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; min-width: 0; }
.l5b-url { flex: 1 1 16rem; min-width: 0; padding: .35rem .5rem; border-radius: 8px; background: #f0f4f2; font-size: .8rem; overflow-wrap: anywhere; word-break: break-all; }
.l5b-unconfirmed { color: #8a5a00; font-weight: 700; }
.l5b-link-actions { display: flex; flex-wrap: wrap; gap: .4rem .8rem; }
.l5b-link-actions .brand-inline-form { margin: 0; flex: 1 1 16rem; min-width: 0; }
.l5b-link-actions .brand-inline-form input { flex: 1 1 8rem; min-width: 0; }
.l5b-copy-fallback { margin: 0; }
.l5b-copy-fallback input { width: 100%; font-size: .8rem; }
/* 브랜루미 L8-C — 운영자 「등록 관리」(계약 §7-E.1). 브랜드 화면과 같은 자리·같은 폼 모양을 쓴다. */
.registry-desk-toggle { margin-top: .55rem; }
.registry-desk { padding: clamp(1.1rem, 3vw, 2rem); margin-bottom: 1rem; }
.registry-desk[hidden] { display: none; }
.registry-hint, .registry-note { font-size: .82rem; }
.registry-columns { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 1.4rem; align-items: start; }
.registry-section { min-width: 0; }
.registry-section h3 { margin-bottom: .7rem; }
.registry-list { margin: 0; padding: 0; list-style: none; display: grid; gap: .6rem; }
.registry-list > li { display: grid; gap: .35rem; padding: .75rem .85rem; border: 1px solid var(--line); border-radius: 12px; font-size: .86rem; min-width: 0; }
.registry-list > li.muted { border-style: dashed; }
.registry-org.active { border-color: var(--brand); background: #f0f8f5; }
.registry-org-head, .registry-user-head { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; min-width: 0; }
.registry-select { padding: .45rem .8rem; text-align: left; overflow-wrap: anywhere; }
.registry-role { color: var(--muted); font-size: .8rem; font-weight: 750; }
.registry-email { overflow-wrap: anywhere; }
.registry-list .brand-inline-form { margin: .2rem 0 0; }
.registry-list .brand-inline-form input { min-width: 0; flex: 1 1 10rem; }
.registry-list .brand-inline-form button { padding: .5rem .85rem; }
.registry-grants { margin: .2rem 0 0; padding: .6rem .7rem; border: 1px solid var(--line); border-radius: 10px; min-width: 0; }
.registry-grants-title { font-size: .76rem; font-weight: 800; color: var(--muted); padding: 0 .2rem; }
div.registry-grants .registry-grants-title { display: block; }
.registry-grants .meta { margin: .3rem 0 0; }
.registry-grant-options { display: flex; flex-wrap: wrap; gap: .35rem .9rem; margin-top: .3rem; }
.registry-grant-option { display: inline-flex; align-items: center; gap: .4rem; min-height: 2rem; font-size: .86rem; overflow-wrap: anywhere; }
.registry-grant-option input { width: 1.05rem; height: 1.05rem; flex: none; }
@media (max-width: 1100px) {
  .registry-columns { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .registry-desk .brand-grid-form { grid-template-columns: 1fr; }
}

/* 브랜루미 화면 소 묶음 2026-09-30 — 캠페인 상세 패널 접기·펼치기(계약 §4 「캠페인 상세 패널 접기·펼치기」, OPERATOR 만).
   접힌 본문은 hidden(다른 [hidden] 규칙과 같은 방식). 머리의 제목은 한글 낱말 경계에서만 줄바꿈(keep-all), 접기 버튼은 줄바꿈·줄어듦 없이 오른쪽.
   .detail 은 grid gap 1rem 이라 「모두 접기」 줄(.panel-controls)은 머리 패널과 첫 패널 사이 한 줄이다. 접기 버튼은 쉬는 상태에서 disabled 가 아니다. */
.panel-body[hidden] { display: none; }
.section-heading:has(> .panel-toggle) > div { min-width: 0; }
.section-heading:has(> .panel-toggle) h2 { word-break: keep-all; overflow-wrap: anywhere; }
.panel-toggle { flex-shrink: 0; white-space: nowrap; border: 1px solid var(--line); border-radius: 999px; padding: .4rem .85rem; background: #fff; color: var(--ink); font-size: .8rem; font-weight: 750; }
.panel-toggle:hover { background: #edf0ec; }
.panel-toggle[aria-expanded="false"] { color: var(--brand-dark); border-color: var(--brand); }
.panel-controls { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; }
.panel-controls .panel-controls-button { padding: .5rem .9rem; font-size: .82rem; white-space: nowrap; }
.panel-toggle:focus-visible, .panel-controls-button:focus-visible, .panel-jump-link:focus-visible { outline: 3px solid rgba(10, 102, 84, .35); outline-offset: 2px; }
/* 2026-10-24 PC 화면 점검 후보 CM1 — 「모두 접기」 줄 왼쪽 「구역」 바로가기(패널 이름 칩). 좁으면 줄바꿈하고 접기 버튼은 오른쪽에 남는다. */
.panel-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1rem; }
.panel-jump { display: flex; flex: 1 1 32rem; flex-wrap: wrap; align-items: center; gap: .4rem; min-width: 0; }
.panel-jump-label { margin-right: .2rem; color: var(--muted); font-size: .8rem; font-weight: 750; }
.panel-jump-link { min-height: 32px; padding: .25rem .7rem; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--brand-dark); font-size: .8rem; font-weight: 650; white-space: nowrap; }
.panel-jump-link:hover { background: #edf0ec; }
.panel-toolbar .panel-controls { margin-left: auto; }
#campaign-detail > .panel { scroll-margin-top: 1rem; }

/* 브랜루미 L10-B(계약 §7-F.3) — 물류 정보 확인 패널 안 「제품 매핑」 구역(OPERATOR 만). 한글 낱말 경계에서만 줄바꿈(keep-all),
   긴 SKU·상품명·근거는 넘치지 않게(anywhere). 매핑 재고 결과는 기존 재고 결과(.wms-result)와 같은 모양·과거 표시. */
.wms-map-section { display: grid; gap: .6rem; margin: 0 0 1.1rem; padding: 0 0 1rem; border-bottom: 1px solid var(--line); word-break: keep-all; overflow-wrap: anywhere; }
.wms-map-section h3 { margin: 0; font-size: 1rem; }
.wms-map-hint { font-size: .8rem; margin: 0; }
.wms-map-products, .wms-map-lines { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.wms-map-product { display: grid; gap: .45rem; padding: .75rem .9rem; border: 1px solid var(--line); border-radius: 12px; min-width: 0; }
.wms-map-product.target { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(10, 102, 84, .12); }
.wms-map-line { display: grid; gap: .35rem; padding: .6rem .7rem; border-radius: 10px; background: #fafcf9; min-width: 0; }
.wms-map-facts { display: flex; flex-wrap: wrap; gap: .35rem .7rem; align-items: baseline; min-width: 0; }
.wms-map-wh { color: var(--brand-dark); font-weight: 700; }
.wms-map-badge { padding: .05rem .5rem; border-radius: 999px; background: #e6efe9; font-size: .78rem; font-weight: 750; white-space: nowrap; }
.wms-map-evidence { font-size: .8rem; white-space: pre-line; }
.wms-map-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.wms-map-actions .primary, .wms-map-actions .secondary, .wms-map-actions .danger { padding: .5rem .85rem; font-size: .85rem; }
.wms-map-section .link-button, .wms-map-product .link-button { justify-self: start; border: 0; padding: .2rem 0; background: none; color: var(--brand-dark); font-weight: 700; text-align: left; text-decoration: underline; }
.danger-text { color: var(--danger) !important; }
.wms-map-deactivate-form { display: grid; gap: .5rem; }
.wms-map-deactivate-form .field { margin: 0; }
.wms-map-target-notice { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: space-between; margin: 0; }
.wms-map-link { display: flex; flex-wrap: wrap; gap: .5rem .8rem; align-items: center; margin: .8rem 0 0; min-width: 0; overflow-wrap: anywhere; word-break: keep-all; }
.wms-map-form { display: grid; gap: .6rem; margin: .8rem 0 0; padding: .9rem; border: 1px solid var(--brand); border-radius: 12px; word-break: keep-all; overflow-wrap: anywhere; }
.wms-map-form .field { margin: 0; }
.wms-map-form select, .wms-map-form textarea { width: 100%; max-width: 100%; }
.wms-map-form-title { margin: 0; }
.wms-map-result { display: grid; gap: .3rem; padding: .8rem .9rem; border: 1px solid var(--line); border-radius: 12px; background: #fafcf9; min-width: 0; }
.wms-map-result.past { border-style: dashed; background: #f4f4f1; }
.wms-map-result.past .wms-availability { color: #5b625d; }
.wms-map-rev { font-size: .8rem; font-weight: 750; color: var(--brand-dark); }
.wms-map-history summary { cursor: pointer; font-size: .85rem; }
.wms-map-history ul { margin: .4rem 0 0; padding-left: 1.1rem; font-size: .8rem; color: #5b625d; }
/* 브랜루미 ME-UI-03(계약 §7-H) — 캠페인 상세 머리의 「연결된 상품 성과 확인」(OPERATOR 만, 새 탭). */
.ci-work-link { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .8rem; margin-top: .75rem; }
.ci-work-link a.primary { display: inline-block; text-decoration: none; }
.ci-work-reason { color: var(--danger); font-size: .86rem; overflow-wrap: anywhere; }
.ci-work-link .meta { overflow-wrap: anywhere; }
