/* 카페24 상품관리 모듈 전용 스타일. 전역(erp.css) 은 건드리지 않는다. 클래스 접두사: cf24- 색상은 erp.css 의 :root 토큰을 재사용한다. */ /* .erp-page 는 flex column + overflow-y:auto 다. 자식의 flex-shrink 기본값이 1 이라 내용이 화면보다 길면 카드가 눌려 잘리고(스크롤도 안 생긴다), 시스템 화면의 [카페24 연결] 버튼처럼 카드 아래쪽이 사라진다. 축소를 막아 넘친 만큼 .erp-page 가 스크롤하게 한다. 이 파일은 카페24 템플릿에서만 로드되므로 다른 모듈에는 영향이 없다. */ .erp-page > * { flex-shrink: 0; } /* 2분할 화면은 편집 영역을 최대한 넓게 쓴다 — 이 페이지에서만 폭 제한을 푼다. box-sizing 을 함께 바꿔야 한다: .erp-page 는 width:100% + padding:24px 라서 max-width 를 풀면 padding 이 폭에 더해져 문서 전체에 가로 스크롤이 생긴다. */ .erp-page { max-width: none; box-sizing: border-box; } .cf24-card { margin-bottom: var(--sp-16, 16px); } /* ════════════════════════════════════════════════════════════ 좌우 2분할: 왼쪽 목록(좁게) | 오른쪽 상세페이지 편집(넓게) 각 칸이 따로 스크롤되고, 전체 높이는 화면에 맞춘다. ════════════════════════════════════════════════════════════ */ .cf24-split { display: grid; grid-template-columns: 550px minmax(0, 1fr); gap: var(--sp-12, 12px); align-items: stretch; } /* .erp-page 는 flex column 이다. 위 flex-shrink:0 규칙의 예외로, 분할 영역만은 남은 높이를 모두 차지하고 안에서 스크롤되게 한다(휴가/쿠팡 모듈과 같은 방식). */ .erp-page > .cf24-split { flex: 1 1 auto; min-height: 0; } .cf24-pane { min-height: 0; overflow: auto; margin-bottom: 0; padding: var(--sp-12, 12px); } .cf24-pane-list { display: flex; flex-direction: column; gap: var(--sp-8, 8px); overflow: hidden; /* 표만 스크롤 — 검색/필터는 고정 */ } .cf24-pane-editor { display: flex; flex-direction: column; gap: var(--sp-8, 8px); padding: var(--sp-16, 16px); } @media (max-width: 1100px) { .cf24-split { grid-template-columns: minmax(0, 1fr); } .cf24-pane { overflow: visible; } .cf24-pane-list { max-height: 45vh; } } /* ── 왼쪽: 검색·필터 ── */ .cf24-filters { display: flex; flex-direction: column; gap: var(--sp-8, 8px); flex: 0 0 auto; } .cf24-checks { display: flex; gap: var(--sp-12, 12px); font-size: var(--text-caption, 12px); } .cf24-checks label { display: flex; align-items: center; gap: 4px; cursor: pointer; } .cf24-list-count { font-size: var(--text-caption, 12px); color: var(--color-midtone-gray, #737373); } /* ── 왼쪽: 목록 표 (좁게) ── */ .cf24-list-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; } .cf24-list-table { font-size: 12px; table-layout: fixed; width: 100%; } .cf24-list-table thead th { position: sticky; top: 0; z-index: 1; padding: 6px 4px; white-space: nowrap; } .cf24-list-table tbody td { padding: 6px 4px; vertical-align: top; } /* 목록 폭 550px 기준. 고정폭을 뺀 나머지(약 290px)가 상품명 몫이다. 진열/판매 칸은 제목(2글자) + 정렬 화살표가 들어갈 만큼만. */ .cf24-col-no { width: 40px; text-align: right; color: var(--color-midtone-gray, #737373); } .cf24-col-flag { width: 40px; text-align: center; } .cf24-col-date { width: 78px; white-space: nowrap; color: var(--color-midtone-gray, #737373); } .cf24-col-name { word-break: break-word; } /* 긴 상품명은 2줄까지만 — 행 높이를 고르게 유지해 목록을 훑기 쉽게 한다. 전체 이름은 title 툴팁과 오른쪽 편집기 제목에서 확인한다. */ .cf24-col-name a { color: inherit; text-decoration: none; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; } .cf24-row { cursor: pointer; } .cf24-row:hover { background: var(--color-ghost-gray, #f2f2f2); } .cf24-row.is-active { background: var(--color-rich-black, #0a0a0a); } .cf24-row.is-active td, .cf24-row.is-active .cf24-col-name a { color: #fff; } /* 진열/판매 표시는 좁은 칸이라 배지 대신 점으로 */ .cf24-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--color-subtle-ash, #e5e5e5); } .cf24-dot-on { background: var(--color-success-green, #10c22b); } /* 제목행 클릭 정렬 */ .cf24-sortable { cursor: pointer; user-select: none; } .cf24-sortable::after { content: "↕"; opacity: 0.35; margin-left: 2px; } .cf24-sortable.is-asc::after { content: "▲"; opacity: 1; } .cf24-sortable.is-desc::after { content: "▼"; opacity: 1; } /* ── 오른쪽: 편집기 ── */ .cf24-editor-head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--sp-12, 12px); flex: 0 0 auto; } .cf24-editor-title { margin: 0; font-size: var(--text-heading, 18px); letter-spacing: -0.45px; } .cf24-editor-sub { margin: 4px 0 0; font-size: var(--text-caption, 12px); color: var(--color-midtone-gray, #737373); } .cf24-editor-badges { display: flex; gap: 4px; flex: 0 0 auto; } .cf24-editor-form { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; gap: var(--sp-8, 8px); } .cf24-editor-bar { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-8, 8px); flex-wrap: wrap; flex: 0 0 auto; } .cf24-editor-bar-right { display: flex; gap: var(--sp-8, 8px); align-items: center; } .cf24-check-inline { display: inline-flex; align-items: center; gap: 4px; margin-left: var(--sp-12, 12px); cursor: pointer; color: var(--color-rich-black, #0a0a0a); } .cf24-memo { width: 260px; padding: 6px var(--sp-10, 10px); border: 1px solid var(--color-subtle-ash, #e5e5e5); border-radius: var(--r-lg, 10px); font-size: 12px; } .cf24-html-main { flex: 1 1 auto; min-height: 340px; } /* ════════════════════════════════════════════════════════════ 문법 강조 편집기 투명한