:root {
  --bg: #f5f6f8;
  --panel: #ffffff;
  --line: #d9dee7;
  --text: #1f2933;
  --muted: #6b7280;
  --accent: #2563eb;
  --accent-weak: #eaf1ff;
  --accent-ink: #33517a; /* 차분한 슬레이트 블루 — 강조 텍스트에 은은한 고급 톤 */
  --ok: #15803d;
  --warn: #b45309;
  --radius: 8px;
}

.delivery-property-editor {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid #dce5df;
  border-radius: 12px;
  background: #f8faf9;
}
.delivery-property-editor-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}
.delivery-property-editor-head .form-hint {
  margin: 4px 0 0;
}
.delivery-property-editor-actions {
  display: flex;
  flex-wrap: wrap;
  flex: none;
  gap: 8px;
}
.delivery-property-editor > .selected-box {
  margin-top: 12px;
}
.delivery-property-editor > .file-choice-panel,
.delivery-property-editor > .form-actions {
  margin-top: 12px;
}

* {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  color: var(--text);
  background: var(--bg);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
  font-size: 14px;
  letter-spacing: 0;
}
a { color: inherit; text-decoration: none; }
button, .button {
  border: 1px solid var(--line);
  background: #fff;
  color: var(--text);
  min-height: 36px;
  padding: 0 12px;
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font: inherit;
}
button.primary, .primary {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
}
.danger-button {
  background: #fff1f0;
  border-color: #ffb4ab;
  color: #b42318;
}
.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: 142px;
  background: #0f172a;
  color: #f9fafb;
  padding: 18px 0 18px 12px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: inset -1px 0 0 rgba(255,255,255,.08);
}
.brand {
  font-size: 16px;
  font-weight: 800;
  padding: 4px 14px 12px 8px;
}
.sidebar nav {
  display: grid;
  gap: 6px;
  padding-right: 0;
}
.sidebar nav a {
  position: relative;
  min-height: 42px;
  padding: 11px 10px;
  border-radius: 10px 0 0 10px;
  color: #e5e7eb;
  font-weight: 800;
  border: 1px solid transparent;
  border-right: 0;
  transform: translateX(0);
}
.sidebar nav a::after {
  content: "";
  position: absolute;
  inset: 7px 0 7px auto;
  width: 4px;
  border-radius: 999px 0 0 999px;
  background: rgba(148, 163, 184, .55);
  opacity: .65;
}
.sidebar nav a:hover {
  background: #1e293b;
  color: #fff;
  transform: translateX(3px);
}
.sidebar nav a.active {
  background: var(--bg);
  color: var(--text);
  border-color: var(--line);
  box-shadow: -8px 10px 24px rgba(2, 6, 23, .18);
  transform: translateX(8px);
}
.sidebar nav a.active::before {
  content: "";
  position: absolute;
  right: 0;
  top: -10px;
  width: 10px;
  height: 10px;
  border-bottom-right-radius: 10px;
  box-shadow: 4px 4px 0 4px var(--bg);
}
.sidebar nav a.active::after {
  right: 0;
  inset-block: 0;
  width: 5px;
  border-radius: 0;
  background: var(--accent);
  opacity: 1;
}
.sidebar nav a.pb-warehouse-nav {
  color: #f0d68b;
}
.sidebar nav a.pb-warehouse-nav::after {
  background: #cba43a;
}
.sidebar nav a.pb-warehouse-nav:hover {
  color: #fff3c7;
  background: #2a261c;
}
.sidebar nav a.pb-warehouse-nav.active {
  border-color: #ddc474;
  background: #fff8df;
  color: #6f5315;
  box-shadow: -8px 10px 24px rgba(79, 57, 8, .18);
}
.sidebar nav a.pb-warehouse-nav.active::before {
  box-shadow: 4px 4px 0 4px #fff8df;
}
.sidebar nav a.pb-warehouse-nav.active::after {
  background: #c3921e;
}
.sidebar-foot a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 38px;
  padding: 10px 10px;
  border-radius: 6px;
  color: #e5e7eb;
  text-align: center;
}
.sidebar-foot a:hover { background: #1f2937; }
.sidebar-foot a.sidebar-manual-link {
  min-height: 34px;
  padding: 7px 9px;
  border: 1px solid #475569;
  background: #182235;
  color: #f0d68b;
  font-size: 12px;
  font-weight: 800;
}
.sidebar-foot a.sidebar-manual-link:hover {
  border-color: #cba43a;
  background: #2a261c;
  color: #fff3c7;
}
.sidebar-management-button {
  width: auto;
  min-height: 30px;
  justify-content: center;
  padding: 5px 9px;
  border-color: #334155;
  background: #182235;
  color: #e5e7eb;
  font-size: 12px;
  font-weight: 700;
}
.sidebar-management-button:hover {
  background: #263247;
  border-color: #475569;
  color: #fff;
}
.sidebar-foot {
  margin-top: auto;
  padding-right: 12px;
  display: grid;
  gap: 8px;
  color: #cbd5e1;
  overflow-wrap: anywhere;
}
.sidebar-foot > span {
  border-top: 1px solid #374151;
  margin-top: 2px;
  padding-top: 12px;
}
.app-shell {
  margin-left: 142px;
  padding: 24px;
}
.login-shell {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 24px;
}
.login-shell .flash-wrap {
  width: min(420px, 100%);
  margin-bottom: 0;
  padding: 0 28px;
}
.login-shell .flash {
  justify-self: start;
}
.login-card {
  width: min(420px, 100%);
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px;
}
.login-card h1 { margin: 0 0 8px; }
.login-card p { color: var(--muted); margin-bottom: 24px; }

/* 파트너 로그인 · 에디토리얼(고객 접속 페이지와 브랜드 통일) */
body:has(.login-editorial) { background: #f3f0e9; }
.login-editorial {
  background: #fbfaf6;
  border: 1px solid rgba(24, 33, 43, .14);
  border-radius: 3px;
  padding: 0;
  overflow: hidden;
  box-shadow: 0 18px 44px -32px rgba(23, 37, 54, .5);
}
.login-masthead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 30px;
  border-bottom: 1px solid rgba(24, 33, 43, .14);
  color: #9a7a4f;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .22em;
}
.login-masthead strong { color: #172536; font-weight: 800; }
.login-editorial .login-heading { padding: 30px 30px 0; }
.login-editorial h1 {
  margin: 0 0 10px;
  font-family: Georgia, "Apple SD Gothic Neo", serif;
  font-weight: 600;
  font-size: 34px;
  letter-spacing: -.01em;
  color: #172536;
}
.login-editorial .login-heading p {
  margin: 0;
  color: #68717a;
  font-size: 14px;
  line-height: 1.7;
}
.login-form {
  display: grid;
  gap: 14px;
  padding: 26px 30px 30px;
}
.login-form label {
  display: grid;
  gap: 7px;
  color: #263343;
  font-size: 12px;
  font-weight: 700;
}
.login-form input {
  min-height: 50px;
  border: 1px solid #cbc5ba;
  border-radius: 2px;
  padding: 0 14px;
  background: #fff;
  color: #172536;
  font-size: 15px;
}
.login-form input:focus {
  outline: none;
  border-color: #9a7a4f;
  box-shadow: 0 0 0 3px rgba(154, 122, 79, .14);
}
.login-form button.primary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  margin-top: 6px;
  border: 1px solid #172536;
  border-radius: 2px;
  background: #172536;
  color: #fbfaf6;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .04em;
}
.login-form button.primary:hover { border-color: #273d54; background: #273d54; }
.login-form button.primary span:last-child {
  color: #c9ae84;
  font-family: Georgia, serif;
  font-size: 19px;
  font-weight: 400;
}
@media (max-width: 560px) {
  .login-masthead { padding: 14px 22px; }
  .login-editorial .login-heading { padding: 24px 22px 0; }
  .login-editorial h1 { font-size: 30px; }
  .login-form { padding: 22px 22px 26px; }
}
.page-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}
.page-head h1 { margin: 0; font-size: 26px; }
.page-head p { margin: 6px 0 0; color: var(--muted); }
.actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.quick-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.quick-actions a {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 9px 12px;
  font-weight: 700;
}
.mobile-action-row { display: none; }
.mobile-panel-toggle { display: none; }
.always-action-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  width: 100%;
  max-width: 1040px;
  margin: -2px 0 14px;
}
.always-action-row .mobile-panel-toggle {
  display: flex;
  width: auto;
}
.delivery-calendar-action-row .mobile-panel-toggle {
  min-height: 42px;
}
.always-action-row .delivery-calendar-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: auto;
  min-width: 0;
  min-height: 42px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 400;
  white-space: nowrap;
}
.always-action-row .delivery-calendar-button svg {
  flex: 0 0 auto;
}
.pb-portal .pb-delivery-calendar-action {
  justify-content: flex-end;
}
.compact-toggle-button {
  min-width: 120px;
  min-height: 36px;
}
.always-collapsible {
  display: none;
  margin-bottom: 12px;
}
.always-collapsible.is-open { display: block; }
.muted-count {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}
.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding-top: 14px;
}
.pagination a, .pagination span, .pagination button {
  border: 1px solid var(--line);
  border-radius: 6px;
  min-height: 32px;
  padding: 6px 10px;
  background: #fff;
  font-weight: 800;
}
.pagination button {
  width: auto;
  cursor: pointer;
}
.pagination button:disabled {
  cursor: default;
  opacity: .42;
}
.pagination button.is-current {
  border-color: var(--accent);
  background: var(--accent);
  color: #fff;
}
.pagination .pagination-ellipsis {
  min-height: 0;
  padding: 4px 2px;
  border: 0;
  background: transparent;
}
.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.admin-dashboard-grid {
  max-width: 784px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pb-dashboard-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.panel, .list-panel, .detail-panel {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.panel {
  padding: 16px;
  min-height: 180px;
}
.account-password-panel {
  width: min(620px, 100%);
  min-height: 0;
}
.dashboard-panel {
  height: 300px;
  min-height: 300px;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}
.pb-dashboard-grid .dashboard-panel {
  height: 300px;
  min-height: 300px;
}
.panel-scroll {
  min-height: 0;
  overflow-y: auto;
  padding-right: 4px;
  -webkit-overflow-scrolling: touch;
}
.panel-scroll::-webkit-scrollbar {
  width: 8px;
}
.panel-scroll::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 999px;
}
.panel h2, .list-panel h2, .detail-panel h2 {
  font-size: 16px;
  margin: 0 0 12px;
}
.row {
  display: grid;
  gap: 3px;
  padding: 10px 0;
  border-top: 1px solid #edf0f5;
}
.row-link {
  color: inherit;
  text-decoration: none;
}
.row-link:hover {
  background: #f6f9ff;
}
/* 대시보드 강조 박스(최근 메모·향후 할일·피드백 대기)의 강조 텍스트는 은은한 슬레이트 블루로. */
.dashboard-emphasis .row b,
.dashboard-emphasis .row-link b {
  color: var(--accent-ink);
}
.recent-warehouse-title {
  margin-left: 3px;
  color: #c58b16;
}
.recent-warehouse-row {
  gap: 6px;
}
.recent-warehouse-primary,
.recent-warehouse-secondary {
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.recent-warehouse-primary > b {
  flex: 0 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.recent-warehouse-primary > strong {
  flex: none;
  color: #176047;
  font-size: 14px;
  white-space: nowrap;
}
.recent-warehouse-primary > em {
  flex: none;
  color: #394a43;
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
  white-space: nowrap;
}
.recent-warehouse-secondary {
  gap: 6px;
}
.row .recent-warehouse-secondary > b,
.row .recent-warehouse-secondary > time {
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}
.row .recent-warehouse-secondary > b {
  flex: 0 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
}
.row .recent-warehouse-secondary > time {
  flex: none;
}
.row .recent-warehouse-secondary > time::before {
  content: "·";
  margin-right: 6px;
  color: var(--muted);
}
/* 전달매물 호가 변동: 매물·호가변동 아래에 전달 내역(고객·의뢰·전달일)을 건별로 나열.
   한 매물(호가변동+전달내역)을 한 덩어리로 묶고, 항목 사이는 아래쪽 구분선으로 나눈다. */
.pb-change-row {
  padding-bottom: 10px;
  border-bottom: 1px solid #e2e8f0;
}
.pb-change-delivery-list {
  display: grid;
  gap: 2px;
  margin-top: 3px;
}
.pb-change-delivery-item {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted, #64748b);
  font-size: 12px;
  line-height: 1.4;
}
.pb-change-delivery-item > b {
  color: #334155;
  font-weight: 800;
}
/* 대시보드 패널 안내문: 제목 아래 작은 보조 설명 줄. */
.dashboard-panel > .panel-desc {
  margin: -2px 0 8px;
  color: var(--muted, #64748b);
  font-size: 12px;
  line-height: 1.4;
}
.dashboard-deal-title {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 5px 8px;
}
.dashboard-deal-title > span {
  color: var(--muted, #64748b);
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}
.dashboard-deal-title > .dashboard-deal-count {
  color: #176047;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}
/* 최근 메모/피드백: 각 항목의 공개범위(관리자만/양쪽 공유)를 작은 배지로 표시한다. */
.note-vis-badge {
  display: inline-flex;
  align-items: center;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 800;
  font-style: normal;
  vertical-align: 1px;
  white-space: nowrap;
}
.note-vis-admin {
  color: #b45309;
  background: #fff7ed;
  border: 1px solid #fed7aa;
}
.note-vis-shared {
  color: #1d4ed8;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
}
/* 새 공유 전달: 고객명 옆에 의뢰내용(의뢰 제목)을 보조 텍스트로 덧붙인다. */
.dashboard-request-title {
  margin-left: 6px;
  color: var(--muted, #64748b);
  font-weight: 600;
  font-size: 13px;
}
.dashboard-update-badge {
  display: inline-flex;
  align-items: center;
  margin-left: 5px;
  padding: 1px 5px;
  border-radius: 4px;
  color: #b45309;
  background: #fffbeb;
  font-size: 11px;
  font-weight: 800;
  vertical-align: 1px;
}
.advisor-announcement-admin-button {
  gap: 7px;
  border-color: #c8d1d8;
  background: #f8fafb;
  color: #314b5c;
  font-weight: 800;
  white-space: nowrap;
}
.advisor-announcement-admin-button:hover {
  border-color: #8fa2af;
  background: #f1f5f7;
}
.advisor-announcement-admin-button svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.advisor-announcement-admin-button b {
  padding: 2px 6px;
  border-radius: 999px;
  background: #e3e9ed;
  font-size: 11px;
}
.advisor-announcement-panel {
  width: min(640px, 100%);
}
.advisor-announcement-panel .picker-head {
  align-items: flex-start;
}
.advisor-announcement-panel .picker-head p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.advisor-announcement-current {
  padding: 14px;
  border: 1px solid #d8e0e5;
  border-radius: 7px;
  background: #f7f9fa;
}
.advisor-announcement-current-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: #71808a;
  font-size: 11px;
}
.advisor-announcement-current-head strong { color: #314b5c; }
.advisor-announcement-current h3 {
  margin: 12px 0 7px;
  font-size: 17px;
}
.advisor-announcement-current > p {
  margin: 0;
  color: #46545d;
  line-height: 1.6;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.advisor-announcement-current form {
  display: flex;
  justify-content: flex-end;
  margin-top: 13px;
}
.advisor-announcement-empty {
  margin: 0;
  padding: 13px;
  border-radius: 7px;
  color: var(--muted);
  background: #f7f9fa;
}
.advisor-announcement-form {
  display: grid;
  gap: 11px;
  padding-top: 2px;
  border-top: 1px solid var(--line);
}
.advisor-announcement-form label {
  display: grid;
  gap: 6px;
  color: #475569;
  font-size: 12px;
  font-weight: 800;
}
.advisor-announcement-form textarea {
  min-height: 130px;
  resize: vertical;
  line-height: 1.55;
}
.advisor-announcement-form > p {
  margin: -2px 0 0;
  color: #8a6a35;
  font-size: 11px;
}
.advisor-announcement-form > button {
  justify-self: end;
}
.pb-advisor-announcement {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  margin: 0 0 14px;
  padding: 15px 16px;
  border: 1px solid #cbd6dc;
  border-left: 4px solid #58758a;
  border-radius: 8px;
  background: #f7f9fa;
}
.pb-advisor-announcement-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  color: #3e5f74;
  background: #e5ecef;
}
.pb-advisor-announcement-icon svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.pb-advisor-announcement-copy { min-width: 0; }
.pb-advisor-announcement-copy > span {
  display: block;
  margin-bottom: 4px;
  color: #6e7e88;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .05em;
}
.pb-advisor-announcement-copy h2 {
  margin: 0;
  color: #243946;
  font-size: 16px;
}
.pb-advisor-announcement-copy p {
  margin: 6px 0 0;
  color: #4d5c65;
  line-height: 1.55;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.pb-advisor-announcement form { margin: 0; }
.pb-advisor-announcement form button {
  min-width: 64px;
  color: #314b5c;
  border-color: #9dafba;
  background: #fff;
  font-weight: 800;
}
.pb-dashboard-page-head {
  position: relative;
  display: block;
  padding-right: 94px;
}
.pb-dashboard-page-head .pb-advisor-announcement-reopen {
  position: absolute;
  top: 0;
  right: 0;
}
.pb-advisor-announcement-reopen {
  position: relative;
  gap: 6px;
  min-width: 84px;
  min-height: 36px;
  padding: 0 11px;
  border-color: #9dafba;
  color: #314b5c;
  background: #f5f8f9;
  font-size: 13px;
  font-weight: 900;
}
.pb-advisor-announcement-reopen:hover {
  border-color: #8fa2af;
  background: #eef3f5;
}
.pb-advisor-announcement-reopen svg {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.1;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.pb-advisor-announcement-reopen i {
  position: absolute;
  top: 3px;
  right: 4px;
  width: 8px;
  height: 8px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #d09a2d;
}
.pb-advisor-announcement-panel {
  width: min(560px, 100%);
}
.pb-advisor-announcement-panel .picker-head {
  align-items: flex-start;
}
.pb-advisor-announcement-panel .picker-head span {
  display: block;
  margin-bottom: 5px;
  color: #6e7e88;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .05em;
}
.pb-advisor-announcement-panel > p {
  min-height: 110px;
  margin: 0;
  padding: 14px;
  border: 1px solid #d8e0e5;
  border-radius: 7px;
  color: #46545d;
  background: #f7f9fa;
  line-height: 1.65;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.pb-advisor-announcement-panel > form {
  display: flex;
  justify-content: flex-end;
}
.row:first-of-type { border-top: 0; }
.row span { color: var(--muted); font-size: 13px; }
/* 최근 전달: 부분 열람 시 열람자만 파란 계열로 강조(미열람자는 회색 유지). */
.row span .recent-read { color: var(--accent-ink); }
.online-status-badge {
  display: inline-flex;
  align-items: center;
  margin-left: 6px;
  color: #15803d;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}
.online-status-badge::before {
  content: "";
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-radius: 999px;
  background: #22c55e;
}
.empty { color: var(--muted); margin: 0; }
.work-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 12px;
  align-items: start;
  min-width: 0;
}
.list-panel, .detail-panel {
  padding: 16px;
  min-width: 0;
  max-width: 100%;
}
.list-panel-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
}
/* 목록 제목이 필터 폼을 오른쪽 끝으로 밀어, 제목 앞 전체토글 아이콘 + 제목이 왼쪽에 붙게 한다. */
.list-panel-head h2 { margin: 0 auto 0 0; }
/* 전체 펼치기/접기 토글: 목록 제목 '앞'의 한 글자 크기 아이콘 버튼(⌃ 접기 / ⌄ 펼치기). */
.group-toggle-all {
  align-self: end; /* 제목이 헤더 행 하단에 정렬되므로 아이콘도 하단에 맞춰 같은 줄로 */
  justify-self: start; /* 모바일(list-panel-head가 grid)에서 버튼이 전체폭으로 늘어나지 않게 */
  flex: none;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  min-width: 26px;
  min-height: 26px; /* 전역 button min-height(36px)를 덮어 정사각형 유지 */
  padding: 0;
  margin: 0;
  border: 1px solid var(--line, #d9e1e7);
  border-radius: 6px;
  background: #fff;
  color: #47566a;
  cursor: pointer;
}
.group-toggle-all:hover { background: #f3f6f9; }
.group-toggle-all:active { background: #e9eef3; }
.group-toggle-all-icon { display: inline-flex; }
.group-toggle-all-icon svg { width: 15px; height: 15px; transition: transform .18s ease; }
/* 펼쳐진 상태(aria-expanded=true)면 셰브론을 위로 회전 → '접기' 방향 표시. */
.group-toggle-all[aria-expanded="true"] .group-toggle-all-icon svg { transform: rotate(180deg); }
.filter-form {
  min-width: 220px;
}
.dual-filter-form {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(120px, .7fr);
  gap: 8px;
  min-width: 360px;
}
/* 전달탭은 자문위원·상태·고객명 3필터 → 3열 */
.triple-filter-form {
  grid-template-columns: minmax(130px, 1fr) minmax(110px, .7fr) minmax(130px, 1fr);
  min-width: 460px;
}
/* 고객명 검색 콤보박스: 옆 select와 같은 폭, 아래로 펼쳐지는 자동완성 목록 */
.customer-combo {
  position: relative;
  display: block;
}
.customer-combo input[type="search"] {
  width: 100%;
  box-sizing: border-box;
}
.customer-combo-list {
  position: absolute;
  top: calc(100% + 2px);
  left: 0;
  right: 0;
  z-index: 40;
  margin: 0;
  padding: 4px;
  list-style: none;
  max-height: 260px;
  overflow-y: auto;
  background: var(--panel, #fff);
  border: 1px solid var(--line, #d9dee7);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
}
.customer-combo-list li { margin: 0; }
.customer-combo-option {
  display: block;
  width: 100%;
  text-align: left;
  padding: 7px 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  cursor: pointer;
  font-size: .92rem;
  color: var(--text, #1f2933);
}
.customer-combo-option:hover,
.customer-combo-option:focus {
  background: rgba(37, 99, 235, .1);
}
.customer-combo-empty {
  padding: 7px 10px;
  font-size: .85rem;
  color: var(--muted, #8a90a2);
}
.group-latest {
  font-weight: 400;
  font-size: .85em;
}
.customer-list-panel,
.request-list-panel,
.property-list-panel,
.delivery-list-panel,
.note-list-panel,
.task-list-panel {
  width: 100%;
}
.customer-list-panel {
  max-width: 784px;
}
.customer-groups {
  display: grid;
  gap: 12px;
}
.intake-panel {
  margin-bottom: 12px;
}
.intake-list {
  display: grid;
  gap: 0;
  overflow-x: auto;
}
.intake-card {
  position: relative;
  min-width: 1040px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  padding: 6px 56px 6px 14px;
  background: transparent;
  cursor: pointer;
}
.intake-card:hover {
  background: #f6f9ff;
}
.intake-line {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) minmax(130px, .9fr) 100px minmax(260px, 1.8fr) 150px;
  gap: 10px;
  align-items: end;
}
.intake-card .intake-line span {
  display: none;
}
.intake-list-header {
  min-width: 1040px;
  padding: 0 56px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.intake-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.intake-card-toolbar {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 14px;
}
.intake-content-cell strong {
  font-weight: 800;
}
.intake-review-form {
  border-bottom: 1px solid #edf0f5;
  padding-bottom: 12px;
}
.form-grid.intake-review-form {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.request-detail-grid.intake-detail-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.request-content-box.intake-contact-box {
  height: 59px;
  min-height: 59px;
  max-height: 59px;
}
.intake-reject-form {
  padding-top: 2px;
}
.customer-group {
  border: 1px solid #edf0f5;
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
  /* 그룹 페이지 넘길 때 그룹 바가 화면 맨 위에 딱 붙지 않게 약간 여백 (scrollIntoView 대상) */
  scroll-margin-top: 14px;
}
.group-header {
  width: 100%;
  border: 0;
  border-radius: 0;
  justify-content: space-between;
  background: #f8fafc;
  min-height: 42px;
  font-weight: 900;
}
.group-header b {
  color: var(--accent);
  margin-left: 4px;
}
.group-toggle-icon {
  width: 24px;
  text-align: center;
  font-size: 16px;
}
.group-body {
  padding: 10px;
}
.group-body[hidden] { display: none; }
.customer-card-list {
  display: grid;
  gap: 10px;
  overflow-x: auto;
}
.customer-card-list .customer-line-card {
  position: relative;
  min-width: 730px;
  padding: 6px 14px;
  margin-top: 0;
  cursor: pointer;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.customer-card-list .customer-line-card:hover {
  background: #f6f9ff;
}
.customer-line-card.customer-status-inactive > .customer-line-head strong {
  color: #94a3b8;
}
.customer-line-card.customer-status-active > .customer-line-head .customer-status-cell strong {
  color: #2563eb;
}
.customer-line-head {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) 82px minmax(220px, 1.35fr) 76px 112px 112px;
  gap: 5px;
  align-items: end;
}
.customer-line-card .customer-line-head span {
  display: none;
}
.customer-list-header {
  min-width: 730px;
  padding: 0 14px 6px;
  border-bottom: 2px solid #e2e8f0;
}
.customer-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.pb-customer-line-head {
  grid-template-columns: minmax(200px, 1.6fr) minmax(82px, .65fr) minmax(72px, .55fr) minmax(72px, .55fr) minmax(116px, 1fr) minmax(116px, 1fr);
  gap: 8px;
}
.pb-intake-resubmit-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
}
.pb-intake-resubmit-actions form {
  margin: 0;
}
.pb-intake-resubmit-actions button {
  min-height: 36px;
}
.admin-customer-line-head {
  grid-template-columns: 200px 82px 90px 120px 120px;
  gap: 6px;
}
.customer-card-list {
  gap: 0;
}
.customer-card-toolbar {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 656px;
  right: auto;
  display: flex;
  gap: 4px;
}
.customer-manager-cell strong,
.customer-memo-cell strong {
  font-weight: 800;
}
.customer-detail-panel {
  width: min(900px, 100%);
}
.customer-detail-grid {
  display: grid;
  grid-template-columns: minmax(150px, .9fr) 110px minmax(260px, 1.6fr);
  gap: 10px;
  align-items: end;
}
.admin-customer-detail-grid {
  grid-template-columns: minmax(200px, 1.15fr) 150px 96px minmax(260px, 1.45fr);
  position: relative;
}
.admin-customer-detail-grid::after {
  content: "";
  position: absolute;
  top: 19px;
  left: 0;
  right: 0;
  border-top: 1px solid #e5e7eb;
  pointer-events: none;
}
.pb-customer-detail-grid {
  grid-template-columns: minmax(240px, 1.6fr) minmax(110px, .6fr);
  position: relative;
}
.pb-customer-detail-grid::after {
  content: "";
  position: absolute;
  top: 19px;
  left: 0;
  right: 0;
  border-top: 1px solid #e5e7eb;
  pointer-events: none;
}
.pb-customer-memo-section {
  display: grid;
  gap: 8px;
}
.pb-customer-memo-section h3 {
  margin: 0;
  font-size: 15px;
}
.manager-picker-box {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #e5eaf3;
  border-radius: 6px;
  background: #fbfcff;
}
.manager-picker-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
}
.manager-picker-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.manager-choice-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  max-height: 190px;
  overflow-y: auto;
}
.manager-choice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
  min-height: 34px;
  padding: 6px 8px;
  border: 1px solid #edf0f5;
  border-radius: 6px;
  background: #fff;
  color: var(--text);
  font-size: 13px;
}
.manager-choice input {
  width: auto;
  min-height: auto;
}
.manager-choice span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 800;
}
.manager-choice em {
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
  font-weight: 800;
}
.manager-choice.is-disabled {
  opacity: .45;
  background: #f8fafc;
}
.group-more-button {
  width: 100%;
  margin-top: 10px;
  background: #f8fafc;
  font-weight: 900;
  color: var(--accent);
}
.table-wrap {
  width: 100%;
  max-width: 100%;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}
table {
  width: 100%;
  border-collapse: collapse;
  min-width: 720px;
}
.editable-table {
  min-width: 1040px;
}
.firm-edit-table {
  min-width: 980px;
}
.section-help {
  margin: -4px 0 12px;
  color: var(--muted);
  font-size: 12px;
}
.firm-edit-table th:first-child,
.firm-edit-table td:first-child {
  width: 176px;
}
.firm-logo-cell { vertical-align: middle; }
.firm-logo-preview {
  display: block;
  width: 160px;
  height: 44px;
  object-fit: contain;
  object-position: left center;
}
.firm-logo-empty {
  display: grid;
  width: 160px;
  height: 44px;
  place-items: center;
  border: 1px dashed #cbd5e1;
  border-radius: 7px;
  color: #94a3b8;
  font-size: 12px;
}
.firm-logo-input {
  width: 190px;
  max-width: 190px;
  font-size: 12px;
}
.firm-logo-actions {
  min-width: 180px;
}
.firm-logo-actions form {
  display: inline-block;
  margin: 3px 3px 3px 0;
}
.firm-logo-actions button { white-space: nowrap; }
.muted-button {
  background: #e2e8f0;
  color: #334155;
}
.firm-logo-mobile-preview { margin-bottom: 12px; }
.firm-logo-mobile-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 8px;
  margin-top: 8px;
}
.customer-edit-table {
  min-width: 760px;
}
.request-edit-table {
  min-width: 1460px;
}
.editable-table input,
.editable-table select {
  min-width: 112px;
}
.editable-table td {
  min-width: 116px;
}
th, td {
  text-align: left;
  border-bottom: 1px solid #edf0f5;
  padding: 10px 8px;
  vertical-align: top;
}
th {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
td { line-height: 1.45; }
.table-actions {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(110px, 1fr) auto auto;
  gap: 6px;
  min-width: 400px;
}
.table-actions form { display: contents; }
.button-pair {
  display: flex;
  gap: 6px;
  align-items: center;
  min-width: 70px;
}
.button-pair form { margin: 0; }
.button-pair button { min-width: 60px; }
.manager-cell {
  min-width: 180px;
  max-width: 240px;
  overflow-wrap: anywhere;
  color: var(--muted);
}
.budget-cell {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  min-width: 190px;
}
.mobile-edit-list { display: none; }
.edit-card {
  border: 1px solid #edf0f5;
  border-radius: 8px;
  padding: 12px;
  margin-top: 10px;
  background: #fff;
}
.request-card-list {
  display: grid;
  gap: 12px;
  overflow-x: auto;
}
.request-group .request-card-list {
  gap: 10px;
}
.property-card-list {
  display: grid;
  gap: 0;
  overflow-x: auto;
}
.property-card-list .property-card {
  position: relative;
  padding: 6px 154px 6px 14px;
  margin-top: 0;
  cursor: pointer;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.property-card-list .property-card:hover {
  background: #f6f9ff;
}
.property-card-list .property-card.property-is-sold {
  opacity: .48;
  background: #f8fafc;
  filter: grayscale(.25);
}
.property-card-list .property-card.property-is-sold:hover {
  opacity: .68;
  background: #f1f5f9;
}
.property-is-sold .property-name-label {
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
  text-decoration-color: currentColor;
}
.property-sold-badge {
  flex: none;
  margin-left: 7px;
  padding: 2px 6px;
  border: 1px solid #cbd5e1;
  border-radius: 999px;
  background: #f1f5f9;
  color: #64748b;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  line-height: 1.2;
}
.property-recommend-badge {
  flex: none;
  margin-left: 7px;
  padding: 2px 7px;
  border: 1px solid #f0c14b;
  border-radius: 999px;
  background: #fff7e0;
  color: #a86a00;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  line-height: 1.2;
}
/* 상세 모달 별(★) 추천 토글: 기본 흐린색, 켜지면 금색 */
.property-recommend-toggle span { color: #c3cbd2; transition: color .12s ease; }
.property-recommend-toggle.is-recommended { border-color: #f0c14b; background: #fff7e0; }
.property-recommend-toggle.is-recommended span { color: #f5a623; }
.property-title-cell strong:has(.property-delivery-summary-badge) {
  flex-wrap: wrap;
  align-content: center;
  row-gap: 2px;
  white-space: normal;
}
.property-title-cell strong:has(.property-delivery-summary-badge) .property-name-label {
  flex: 1 1 80px;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* 이름이 길어도 추천·매각 배지가 잘리지 않도록, 배지가 있으면 이름을 말줄임 처리한다. */
.property-title-cell strong:has(.property-recommend-badge) .property-name-label,
.property-title-cell strong:has(.property-sold-badge) .property-name-label {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.property-delivery-summary-badge {
  flex: none;
  /* 매물창고 주소열 위치 아이콘(.location-map-link)은 [data-map-filter-active]
     리스트에서 24px로 축소된다(style.css:7044). 배지도 같은 24px로 맞춰
     핀과 크기·세로 기준선이 일치하도록 한다. */
  min-height: 24px;
  margin: 0 0 0 23px;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  border: 1px solid #86d1b1;
  border-radius: 999px;
  background: #ecfdf5;
  color: #047857;
  font: inherit;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
}
.property-card .property-line-head .property-delivery-summary-badge span {
  display: inline !important;
  color: inherit;
  font: inherit;
}
.property-delivery-summary-badge i {
  color: #65a88c;
  font-style: normal;
}
.property-delivery-summary-badge:hover {
  border-color: #34a77b;
  background: #dff8ec;
}
.property-delivery-summary-badge[aria-busy="true"] {
  opacity: .6;
  cursor: wait;
}
/* 매물창고 행 왼쪽의 지도선택 체크박스는 전역 input 규칙(min-height:36px,
   width:100%, padding)을 그대로 물려받아 13x36px로 늘어난다. 그 탓에 매물 셀만
   높이가 42px로 커지고, align-items:end에서 매물명 텍스트가 다른 열보다 몇 px
   위로 떠 리스트 가로줄이 어긋나 보였다. 체크박스를 본래 크기로 되돌린다. */
.property-map-row-check-wrap {
  display: inline-flex;
  align-items: center;
}
.property-map-row-check-wrap input {
  width: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
}
.property-line-card {
  min-width: 1120px;
}
[data-paged-item][hidden] {
  display: none !important;
}
.property-line-head {
  display: grid;
  grid-template-columns: minmax(160px, 1.05fr) minmax(240px, 1.55fr) 88px 82px 82px 82px 96px;
  gap: 10px;
  align-items: end;
}
/* 관리자 매물 목록: 매물·주소·가격·등록일과 보조 기능 아이콘을 배치한다. */
.admin-property-list .property-line-head {
  grid-template-columns: 160px minmax(150px, 1fr) 58px 18px 58px 100px;
  gap: 6px;
}
.admin-property-list .property-line-card {
  min-width: 760px;
}
/* 아이콘 묶음은 절대배치 대신 [데이터 | 툴바] 2단으로 두어 가격 바로 뒤에 붙인다. */
.admin-property-list .property-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px;
  justify-content: stretch;
  align-items: center;
  column-gap: 8px;
  padding: 6px 14px;
}
.admin-property-list .property-card > .property-line-head {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  width: 100%;
}
.admin-property-list .property-card > .property-card-toolbar {
  grid-column: 2;
  grid-row: 1;
  position: static;
  transform: none;
  width: 110px;
  justify-content: flex-start;
}
.admin-property-list .property-card > form {
  display: contents;
}
.admin-property-list-panel {
  max-width: 784px;
}
.admin-property-list .property-list-header {
  box-sizing: border-box;
  min-width: 760px;
  padding: 0 132px 6px 14px;
}
.admin-property-list .property-list-header > span {
  align-self: end;
  white-space: nowrap;
}
.admin-property-list .property-name-header,
.admin-property-list .property-created-header {
  justify-self: start;
  text-align: left;
}
.admin-property-list .property-address-header {
  position: relative;
  left: 44px;
  justify-self: start;
  text-align: left;
}
.admin-property-list .property-price-header {
  position: static;
  left: auto;
  justify-self: stretch;
  text-align: right;
}
.admin-property-list .property-address-cell {
  width: 100%;
  min-width: 0;
  overflow: hidden;
}
.admin-property-list .property-address-value {
  display: flex;
  min-width: 0;
  overflow: hidden;
  align-items: center;
  white-space: nowrap;
}
.property-card-list .property-card .property-line-head .property-address-text {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
}
.property-card-list .property-card .property-line-head span {
  display: none;
}
.property-list-header {
  min-width: 1120px;
  padding: 0 154px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.property-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.property-name-header-mobile,
.property-overview-header {
  display: none;
}
.property-title-cell strong,
.property-address-cell strong {
  font-weight: 900;
}
.price-check-summary {
  color: inherit;
  font-size: inherit;
  font-weight: inherit !important;
  white-space: nowrap;
}
/* 가격 옆 변동 상세(금액·날짜)는 좁은 화면(폰)에선 화살표만 남기고 숨긴다. */
.price-check-detail { display: none; }
.price-check-same,
.price-check-baseline { color: inherit; }
.price-check-changed { color: #c2410c; }
.price-move-up { color: #dc2626; }
.price-move-down { color: #2563eb; }
.row span.price-move-up { color: #dc2626; }
.row span.price-move-down { color: #2563eb; }
.dashboard-change-lead { font-weight: 800; margin: 0 0 8px; }
.price-history-button { color: #175cd3; background: #eff8ff; border-color: #b2ddff; }
.property-price-history-panel { width: min(920px, 100%); }
.property-price-history-table-wrap { max-height: 520px; overflow: auto; }
.property-price-history-table { min-width: 800px; }
.property-price-history-table th,
.property-price-history-table td { white-space: nowrap; }
.property-memo-box {
  height: 88px;
  min-height: 88px;
  max-height: 88px;
  overflow-y: auto;
}
.property-card-toolbar {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 14px;
  display: flex;
  gap: 4px;
  z-index: 1;
}
.property-warehouse-audience-button {
  gap: 7px;
  min-height: 36px;
  padding: 0 12px;
  border-color: #d6bd72;
  background: #fffaf0;
  color: #755616;
  font-size: 14px;
  font-weight: 800;
  white-space: nowrap;
}
.property-warehouse-audience-button svg,
.property-warehouse-toggle svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.property-warehouse-audience-button b {
  padding: 2px 6px;
  border-radius: 999px;
  background: #ead796;
  color: #654b14;
  font-size: 11px;
}
.property-warehouse-toggle-form {
  display: flex;
  margin: 0;
}
.property-warehouse-toggle {
  width: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  height: 28px;
  padding: 0;
  border-color: #d8c589;
  background: #fffaf0;
  color: #9a741d;
}
.property-warehouse-toggle:hover {
  border-color: #b8912e;
  background: #fbf1cf;
}
.property-warehouse-toggle.is-active {
  border-color: #b68a1e;
  background: #d4aa3a;
  color: #fff;
  box-shadow: 0 0 0 2px rgba(212, 170, 58, .15);
}
.property-warehouse-toggle:disabled {
  border-color: #e2e8f0;
  background: #f8fafc;
  color: #cbd5e1;
  cursor: not-allowed;
}
.property-warehouse-audience-panel {
  width: min(680px, 100%);
  max-height: min(760px, calc(100dvh - 40px));
  overflow: hidden;
}
.property-warehouse-audience-panel .picker-head p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.property-warehouse-audience-form {
  display: grid;
  min-height: 0;
  gap: 12px;
}
.property-warehouse-audience-tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.property-warehouse-audience-tools > div {
  display: flex;
  gap: 6px;
}
.property-warehouse-audience-tools button {
  min-height: 30px;
  padding: 0 9px;
  font-size: 12px;
}
.property-warehouse-manager-groups {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: min(500px, calc(100dvh - 260px));
  overflow-y: auto;
  padding-right: 4px;
}
.property-warehouse-manager-group {
  flex: 0 0 auto;
  border: 1px solid #e5e7eb;
  border-radius: 7px;
  background: #fbfcfe;
  overflow: hidden;
}
.property-warehouse-manager-toggle {
  width: 100%;
  min-height: 34px;
  padding: 0 10px;
  border: 0;
  border-radius: 0;
  justify-content: space-between;
  color: #6b5a2c;
  background: #fffaf0;
  font-size: 12px;
  font-weight: 800;
  text-align: left;
}
.property-warehouse-manager-toggle:hover {
  background: #fbf1cf;
}
.property-warehouse-manager-toggle[aria-expanded="true"] {
  border-bottom: 1px solid #e5e7eb;
}
.property-warehouse-manager-toggle span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.property-warehouse-manager-toggle b {
  color: #9a741d;
  font-size: 11px;
}
.property-warehouse-manager-toggle i {
  min-width: 18px;
  color: #7a5d1a;
  font-size: 15px;
  font-style: normal;
  line-height: 1;
  text-align: center;
}
.property-warehouse-manager-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
}
.property-warehouse-manager-list[hidden] {
  display: none;
}
.property-warehouse-manager-list label {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 8px 10px;
  border-bottom: 1px solid #edf0f5;
  cursor: pointer;
}
.property-warehouse-manager-list input {
  width: 16px;
  height: 16px;
}
.selector-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}
.selected-box {
  min-height: 36px;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px 10px;
  background: #f8fafc;
  color: var(--text);
  font-weight: 800;
}
.delivery-list-panel {
  width: 100%;
}
.delivery-upload-panel {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding: 12px;
  border: 1px solid #e5eaf3;
  border-radius: 6px;
  background: #fbfcff;
}
.delivery-upload-head {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  min-height: 0;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f8fafc;
  text-align: left;
  cursor: pointer;
}
.delivery-upload-head-text {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
}
.delivery-upload-head span {
  color: var(--muted);
  font-size: 13px;
}
.delivery-upload-head .upload-toggle-icon {
  flex: none;
  font-size: 16px;
  font-weight: 800;
}
.delivery-upload-body {
  grid-column: 1 / -1;
  display: contents;
}
.delivery-upload-body[hidden] {
  display: none;
}
.inline-collapse-panel {
  display: grid;
  gap: 8px;
}
.inline-collapse-panel .delivery-upload-head {
  min-height: 34px;
  padding: 6px 10px;
}
.inline-collapse-body[hidden] {
  display: none;
}
.delivery-upload-mode {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.delivery-card-list {
  display: grid;
  gap: 0;
  overflow-x: auto;
}
.delivery-card-list .delivery-batch-card {
  position: relative;
  min-width: 1120px;
  padding: 6px 56px 6px 14px;
  margin-top: 0;
  cursor: pointer;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.delivery-card-list .delivery-batch-card:hover {
  background: #f6f9ff;
}
.delivery-batch-line {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(170px, 1.15fr) 104px 72px 96px 96px 72px;
  gap: 10px;
  align-items: end;
}
.delivery-card-list .delivery-batch-card .delivery-batch-line span {
  display: none;
}
.delivery-list-header {
  min-width: 1120px;
  padding: 0 56px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.delivery-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.pb-delivery-batch-line {
  grid-template-columns: minmax(180px, 1.3fr) minmax(250px, 1.8fr) minmax(104px, .75fr) minmax(64px, .45fr) minmax(78px, .55fr) minmax(88px, .65fr) minmax(64px, .45fr);
  gap: 8px;
}
.admin-delivery-batch-line {
  grid-template-columns: 200px minmax(220px, 1fr) minmax(220px, 1fr) 110px 100px 80px;
  gap: 8px;
}
.admin-delivery-list-panel {
  max-width: 784px;
}
.admin-delivery-card-list .delivery-batch-card {
  min-width: 730px;
  padding: 6px 14px;
}
.admin-delivery-card-list .delivery-list-header {
  min-width: 730px;
  padding: 0 14px 6px;
}
.admin-delivery-card-list .admin-delivery-batch-line {
  grid-template-columns: 130px 180px 190px 100px 78px 42px;
  gap: 6px;
}
.admin-delivery-card-list .delivery-date-full { display: inline !important; }
.delivery-date-short { display: none !important; }
.delivery-date-value > .delivery-date-full,
.delivery-date-value > .delivery-date-short {
  color: inherit;
  font: inherit;
}
.delivery-confirm-cell,
.delivery-confirm-status {
  justify-self: center;
  text-align: center;
}
.delivery-confirm-status i {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  vertical-align: middle;
  box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .08);
}
.delivery-confirm-status.is-confirmed i { background: #2563eb; }
.delivery-confirm-status.is-unconfirmed i { background: #dc2626; }
.request-delivery-confirm-head,
.request-delivery-confirm-status {
  justify-self: center;
  text-align: center;
}
.delivery-request-cell strong {
  font-weight: 900;
}
/* 매물명은 은은하게 구분되는 색 (너무 튀지 않게) */
.delivery-propnames-cell strong {
  color: #5a6b7b;
}
.delivery-batch-toolbar {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 14px;
}
.delivery-email-button {
  color: #2563eb;
  border-color: #bfdbfe;
  background: #eff6ff;
}
.delivery-customer-email-button {
  color: #047857;
  border-color: #a7f3d0;
  background: #ecfdf5;
}
.delivery-email-recipient-mark {
  fill: #fff;
  stroke-width: 1.7;
}
.delivery-kakao-button {
  color: #191919;
  border-color: #f5df00;
  background: #fee500;
}
.delivery-kakao-icon {
  width: 19px;
  height: 19px;
  fill: currentColor;
}
.delivery-kakao-status {
  margin-bottom: 12px;
  padding: 9px 12px;
  border: 1px solid;
  border-radius: 6px;
  font-size: 13px;
}
.delivery-kakao-status-target {
  display: inline-block;
  margin-right: 6px;
  padding: 3px 8px;
  border-radius: 999px;
  color: #fff;
  font-weight: 900;
  letter-spacing: -.01em;
}
.delivery-kakao-status.is-opening .delivery-kakao-status-target {
  background: #a16207;
}
.delivery-kakao-status.is-success .delivery-kakao-status-target {
  background: #15803d;
}
.delivery-kakao-status.is-error .delivery-kakao-status-target {
  background: #b91c1c;
}
.delivery-kakao-status.is-opening {
  color: #713f12;
  border-color: #fde047;
  background: #fefce8;
}
.delivery-kakao-status.is-success {
  color: #166534;
  border-color: #bbf7d0;
  background: #f0fdf4;
}
.delivery-kakao-status.is-error {
  color: #b91c1c;
  border-color: #fecaca;
  background: #fef2f2;
}
.kakao-target-panel {
  width: min(440px, 100%);
  gap: 10px;
}
.kakao-target-description {
  margin: 0;
  color: #64748b;
  font-size: 13px;
}
.kakao-target-choices {
  display: grid;
  gap: 8px;
}
.kakao-target-choices button {
  display: grid;
  gap: 5px;
  min-height: 66px;
  padding: 11px 13px;
  text-align: left;
  background: #fff;
}
.kakao-target-choices button strong {
  font-size: 14px;
}
.kakao-target-choices button span {
  color: #64748b;
  font-size: 12px;
  font-weight: 500;
}
.kakao-target-choices button[data-kakao-target-choice="advisor"]:hover {
  border-color: #eab308;
  background: #fefce8;
}
.kakao-target-choices button[data-kakao-target-choice="customer"]:hover {
  border-color: #10b981;
  background: #ecfdf5;
}
.kakao-share-preview[hidden],
.kakao-target-choices[hidden],
.kakao-target-description[hidden],
.kakao-target-choices button[hidden],
.kakao-share-preview-actions button[hidden] {
  display: none;
}
.kakao-share-preview {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.kakao-share-preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.kakao-share-preview-head strong {
  color: #1f2937;
  font-size: 13px;
}
.kakao-share-preview-head span {
  color: #64748b;
  font-size: 11px;
}
.kakao-share-preview-chat {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  max-height: min(490px, 58dvh);
  padding: 16px;
  overflow-y: auto;
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  background: #cfe0ee;
}
.kakao-share-preview-card {
  width: 274px;
  max-width: 100%;
  flex: 0 0 auto;
  overflow: hidden;
  border-radius: 11px;
  background: #fff;
  box-shadow: 0 4px 14px rgba(15, 23, 42, .08);
}
.kakao-share-preview-card pre {
  margin: 0;
  padding: 14px 14px 12px;
  color: #111827;
  font: inherit;
  font-size: 13px;
  line-height: 1.48;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.kakao-share-preview-link {
  margin: 0 10px 10px;
  padding: 11px 12px;
  border: 1px solid #e5e7eb;
  border-radius: 7px;
  background: #f4f5f6;
  color: #1f2937;
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}
.kakao-share-preview-note {
  margin: 0;
  color: #64748b;
  font-size: 11px;
  line-height: 1.45;
}
.kakao-share-preview-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.kakao-share-preview-actions button {
  min-width: 104px;
}
@media (max-width: 560px) {
  .kakao-share-preview-chat {
    max-height: 52dvh;
    padding: 12px;
  }
  .kakao-share-preview-actions button {
    flex: 1;
    min-width: 0;
  }
}
/* 자문위원 고객 발송 기록 모달 */
/* 매물 상세·개략보기·사진편집(z-index 1100~1400) 등 어떤 모달에서 링크를 만들어도
   그 위에 떠야 한다. 두 클래스를 다 갖고 있어 .request-edit-modal(1100, 이보다 뒤에 선언)에
   덮이지 않도록 특이도를 올려 고정한다. */
.request-edit-modal.share-log-modal {
  z-index: 5000;
}
.share-log-panel {
  width: min(460px, 100%);
  gap: 12px;
}
.share-log-desc {
  margin: 4px 0 0;
  color: #64748b;
  font-size: 13px;
}
.share-log-body {
  max-height: 46vh;
  overflow-y: auto;
  display: grid;
  gap: 12px;
}
.share-log-customer {
  display: grid;
  gap: 6px;
}
.share-log-customer-name {
  font-weight: 700;
  font-size: 14px;
  color: #0f172a;
}
.share-log-req {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 11px;
  border: 1px solid #e2e8f0;
  border-radius: 9px;
  background: #fff;
  cursor: pointer;
  font-size: 13px;
}
.share-log-req:hover {
  border-color: #94a3b8;
  background: #f8fafc;
}
.share-log-req input {
  width: 16px;
  height: 16px;
  flex: none;
}
/* 체크된 고객만 강조 — 어떤 고객의 비번인지 한눈에 */
.share-log-customer:has(input:checked) .share-log-req {
  border-color: #93b7f5;
  background: #eff5ff;
}
/* 첫 발송 고객: 받은매물 접근 비밀번호 강제 입력.
   기본은 hidden(체크된 고객만 노출). 클래스 display가 UA hidden을 덮으므로 명시적으로 숨김. */
.share-log-pw[hidden] { display: none; }
.share-log-pw {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  margin: 6px 0 2px 10px;
  padding: 9px 11px;
  border: 1px solid #ecd9ad;
  border-left: 3px solid #e0a93c;
  border-radius: 8px;
  background: #fffaf1;
}
.share-log-pw-label {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 100%;
  font-size: 12px;
  font-weight: 700;
  color: #7a5a12;
}
.share-log-pw-label > span { flex: none; }
.share-log-pw-label b { color: #c0392b; font-weight: 700; }
.share-log-pw-input {
  flex: 1 1 auto;
  min-width: 120px;
  height: 36px;
  padding: 0 11px;
  border: 1px solid #d9c08a;
  border-radius: 8px;
  background: #fff;
  font-size: 14px;
  font-weight: 700;
  color: #1f2937;
}
.share-log-pw-input:focus { border-color: #c98a1e; outline: none; box-shadow: 0 0 0 3px rgba(201, 138, 30, .15); }
.share-log-pw-hint { margin: 0; flex: 1 1 100%; font-size: 11px; line-height: 1.45; color: #a07f3c; }
.share-log-pw-hint b { color: #7a5a12; }
.share-log-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
/* 고객발송 이력 탭 — 고객>의뢰 2단계 접기 + 한 줄 행 */
.admin-share-history-head {
  align-items: flex-end;
  gap: 16px;
}
.admin-share-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin-top: 7px;
  color: #64748b;
  font-size: 12px;
}
.admin-share-summary b { color: #0f172a; }
.admin-share-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 8px;
}
.admin-share-filter label { display: grid; gap: 4px; font-size: 11px; color: #64748b; }
.admin-share-filter select,
.admin-share-filter input { min-width: 132px; height: 36px; }
.admin-share-filter .admin-share-search input { width: 190px; }
.admin-share-filter .button { min-height: 36px; }
.admin-share-columns { display: grid; gap: 14px; }
.admin-share-section { min-width: 0; }
.admin-share-section h3 {
  display: flex;
  align-items: baseline;
  gap: 7px;
  margin: 0 0 7px;
  font-size: 14px;
  color: #1e293b;
}
.admin-share-section h3 span { font-size: 11px; color: #94a3b8; }
.admin-share-table-wrap { overflow-x: auto; border: 1px solid #e2e8f0; border-radius: 9px; }
.admin-share-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 12px; }
.admin-share-table th {
  padding: 8px 10px;
  background: #f8fafc;
  border-bottom: 1px solid #e2e8f0;
  color: #64748b;
  font-size: 11px;
  text-align: left;
  white-space: nowrap;
}
.admin-share-table td { padding: 9px 10px; border-bottom: 1px solid #eef2f7; color: #475569; vertical-align: top; }
.admin-share-table tbody tr:last-child td { border-bottom: 0; }
.admin-share-table td:first-child { white-space: nowrap; }
.admin-share-table td b { display: block; color: #1e293b; font-size: 12px; }
.admin-share-table td small { display: block; margin-top: 2px; color: #94a3b8; font-size: 10px; }
.admin-share-kind,
.admin-share-state,
.admin-share-inactive {
  display: inline-flex;
  align-items: center;
  width: max-content;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}
.admin-share-kind { color: #475569; background: #f1f5f9; }
.admin-share-state.is-active { color: #166534; background: #dcfce7; }
.admin-share-state.is-expired { color: #78716c; background: #f1f1ee; }
.admin-share-inactive { margin-left: 4px; color: #9a3412; background: #ffedd5; }
.admin-share-local-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 8px;
}
.admin-share-local-pagination a,
.admin-share-local-pagination button {
  min-width: 48px;
  min-height: 30px;
  padding: 4px 9px;
  border: 1px solid #dbe3ec;
  border-radius: 7px;
  background: #fff;
  color: #475569;
  font-size: 11px;
  font-weight: 700;
  text-align: center;
}
.admin-share-local-pagination button:disabled { opacity: .38; }
.admin-share-local-pagination span { min-width: 48px; color: #94a3b8; font-size: 11px; text-align: center; }
.admin-share-local-pagination span b { color: #334155; }
.admin-deal-click-summary {
  margin-top: 16px;
  padding: 14px;
  border: 1px solid #dbe4df;
  border-radius: 11px;
  background: #f8fbf9;
}
.admin-deal-click-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.admin-deal-click-head h3 { margin: 0; color: #183d31; font-size: 14px; }
.admin-deal-click-head > span { color: #7b8d86; font-size: 10px; text-align: right; }
.admin-deal-click-kpis { display: grid; grid-template-columns: 120px 120px minmax(180px, 1fr); gap: 8px; margin-top: 11px; }
.admin-deal-click-kpis > span {
  display: grid;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid #e0e9e4;
  border-radius: 8px;
  background: #fff;
}
.admin-deal-click-kpis small { color: #7b8d86; font-size: 10px; }
.admin-deal-click-kpis b { color: #173f32; font-size: 13px; }
.admin-deal-click-distribution { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 9px; }
.admin-deal-click-distribution span {
  padding: 4px 8px;
  border-radius: 999px;
  background: #e9f1ed;
  color: #587067;
  font-size: 10px;
}
.admin-deal-click-distribution b { color: #1f5442; }
.admin-deal-click-ranking { display: grid; gap: 7px; margin-top: 12px; }
.admin-deal-click-rank { display: grid; grid-template-columns: minmax(120px, 220px) minmax(100px, 1fr) 38px; align-items: center; gap: 9px; }
.admin-deal-click-name { overflow: hidden; color: #334d44; font-size: 11px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.admin-deal-click-bar { height: 7px; overflow: hidden; border-radius: 999px; background: #e1ebe6; }
.admin-deal-click-bar i { display: block; height: 100%; min-width: 6px; border-radius: inherit; background: #4f8c70; }
.admin-deal-click-rank > b { color: #356b54; font-size: 11px; text-align: right; }
.admin-deal-click-empty { margin: 12px 0 0; padding: 10px; }

@media (max-width: 840px) {
  .admin-share-history-head { align-items: stretch; }
  .admin-share-filter { justify-content: flex-start; }
  .admin-share-filter label { flex: 1 1 135px; }
  .admin-share-filter select,
  .admin-share-filter input,
  .admin-share-filter .admin-share-search input { width: 100%; min-width: 0; }
  .admin-deal-click-head { align-items: flex-start; flex-direction: column; gap: 4px; }
  .admin-deal-click-head > span { text-align: left; }
  .admin-deal-click-kpis { grid-template-columns: 1fr 1fr; }
  .admin-deal-click-kpis > span:last-child { grid-column: 1 / -1; }
  .admin-deal-click-rank { grid-template-columns: minmax(90px, 1fr) minmax(70px, 1fr) 34px; }
}

.share-history-head-actions {
  display: flex;
  align-items: end;
  gap: 8px;
  flex: none;
}
.share-history-delete {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  color: #b0413a;
  background: #fdf2f1;
  border: 1px solid #f0d2ce;
  border-radius: 7px;
  cursor: pointer;
}
.share-history-delete svg { display: block; }
.share-history-delete:not(:disabled):hover {
  background: #fde4e1;
  border-color: #dc2626;
  color: #b91c1c;
}
/* 삭제 기능이 있다는 걸 처음부터 보이도록 항상 노출하고, 선택이 없을 때만 흐리게. */
.share-history-delete:disabled {
  opacity: .4;
  cursor: default;
}
.share-history-check {
  width: 16px;
  height: 16px;
  flex: none;
  cursor: pointer;
}
.share-history-expired {
  flex: none;
  padding: 4px 8px;
  border-radius: 999px;
  background: #f1f1ee;
  color: #8a8578;
  font-size: 11px;
  font-weight: 800;
}
/* 접기 아이콘: 공통 JS가 넣는 -/+ 텍스트를 숨기고 셰브론으로 대체(이 탭 한정) */
.sharelog-groups .group-toggle-icon {
  font-size: 0;
  position: relative;
  width: 14px;
  height: 14px;
  flex: none;
  color: #94a3b8;
}
.sharelog-groups .group-toggle-icon::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 7px;
  height: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translate(-50%, -70%) rotate(45deg);
  transition: transform .15s ease;
}
.sharelog-groups .group-header[aria-expanded="false"] .group-toggle-icon::before {
  transform: translate(-60%, -50%) rotate(-45deg);
}
/* 고객발송: 고객별 도구줄(받은매물 보기 + 접근 비번) */
.sharelog-customer-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin: 0 0 8px;
  padding: 8px 10px;
  border: 1px solid #e2e8f0;
  border-radius: 9px;
  background: #f8fafc;
}
.sharelog-pw {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}
.sharelog-pw-state {
  font-size: 12px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 999px;
}
.sharelog-pw-state.is-set { color: #166534; background: #dcfce7; }
.sharelog-pw-state.is-unset { color: #9a3412; background: #ffedd5; }
/* 자문위원용 고객 받은매물 대조 페이지 */
.pb-received-list { display: grid; gap: 10px; }
.pb-received-card {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 13px 16px; border: 1px solid #e2e8f0; border-radius: 10px; background: #fff;
}
.pb-received-info { min-width: 0; display: grid; gap: 3px; }
.pb-received-info strong { font-size: 14px; color: #0f172a; overflow-wrap: anywhere; }
.pb-received-addr { font-size: 12px; color: #64748b; overflow-wrap: anywhere; }
.pb-received-meta { flex: none; display: grid; gap: 2px; text-align: right; }
.pb-received-price { font-size: 13px; font-weight: 800; color: #1f2937; }
.pb-received-sent { font-size: 11px; color: #94a3b8; font-weight: 600; }
@media (max-width: 560px) {
  .pb-received-card { flex-direction: column; align-items: stretch; gap: 8px; }
  .pb-received-meta { text-align: left; }
}
.sharelog-request-group {
  margin: 6px 0 0;
}
.sharelog-request-header {
  background: #f8fafc;
  font-size: 13px;
}
.sharelog-request-title b {
  color: #475569;
  font-weight: 700;
  margin-left: 4px;
}
.sharelog-request-group .group-body {
  padding-left: 6px;
}
.share-history-items {
  list-style: none;
  margin: 0;
  padding: 0;
}
.share-history-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 6px;
  font-size: 13px;
  border-top: 1px solid #f1f5f9;
}
.share-history-item:first-child { border-top: 0; }
.share-history-sent {
  color: #64748b;
  font-variant-numeric: tabular-nums;
  flex: none;
  width: 84px;
}
.share-history-name {
  flex: none;
  max-width: 42%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.share-history-addr {
  color: #94a3b8;
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.share-history-link {
  flex: none;
}
@media (max-width: 640px) {
  .share-history-item { flex-wrap: wrap; gap: 4px 10px; }
  .share-history-name { max-width: 100%; }
  .share-history-addr { flex-basis: 100%; }
}
.delivery-email-icon {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.delivery-email-button.is-sending .delivery-email-icon {
  animation: email-send-pulse .8s ease-in-out infinite alternate;
}
.delivery-email-status {
  margin-bottom: 12px;
  padding: 9px 12px;
  border: 1px solid;
  border-radius: 6px;
  font-size: 13px;
}
.delivery-email-status.is-sending {
  display: flex;
  align-items: center;
  gap: 9px;
  color: #1d4ed8;
  border-color: #bfdbfe;
  background: #eff6ff;
}
.delivery-email-status.is-sending::before {
  content: "";
  width: 14px;
  height: 14px;
  flex: none;
  border: 2px solid #93c5fd;
  border-top-color: #2563eb;
  border-radius: 50%;
  animation: email-send-spin .7s linear infinite;
}
.delivery-email-status.is-success {
  color: #166534;
  border-color: #bbf7d0;
  background: #f0fdf4;
}
.delivery-email-status.is-error {
  color: #b91c1c;
  border-color: #fecaca;
  background: #fef2f2;
}
@keyframes email-send-spin {
  to { transform: rotate(360deg); }
}
@keyframes email-send-pulse {
  to { transform: translateY(-1px); opacity: .55; }
}
.delivery-batch-card .request-card-details {
  grid-template-columns: 1fr;
  margin-top: 10px;
}
.delivery-item-list {
  display: grid;
  gap: 0;
  overflow-x: auto;
}
.delivery-item-line {
  min-width: 560px;
  min-height: 38px;
  display: grid;
  grid-template-columns: minmax(120px, 1.3fr) minmax(170px, 1.9fr) minmax(72px, .8fr) minmax(72px, .7fr) minmax(116px, 1fr);
  gap: 8px;
  align-items: center;
  padding: 6px 10px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.delivery-item-line:hover {
  background: #f6f9ff;
}
.delivery-item-line.delivery-item-clickable {
  cursor: pointer;
}
.delivery-item-header {
  border-bottom: 2px solid #e2e8f0;
  min-height: 32px;
}
.delivery-item-header:hover {
  background: transparent;
}
.delivery-item-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
a.delivery-item-download {
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}
a.delivery-item-download strong {
  color: var(--accent, #2563eb);
}
.delivery-item-line strong,
.delivery-item-line span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.delivery-item-line span {
  color: var(--muted);
  font-size: 13px;
}
.delivery-file-links {
  display: grid;
  grid-template-columns: 28px minmax(28px, auto) auto;
  gap: 6px;
  align-items: center;
  justify-content: start;
  min-width: 0;
  white-space: nowrap;
}
/* 세 아이콘 자리 고정: 없으면 빈 슬롯으로 자리만 유지(밀리지 않게). */
.delivery-file-links .dfl-slot {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
}
.delivery-file-links .dfl-overview { justify-content: start; }
.delivery-file-links .dfl-deal { justify-content: start; }
.delivery-file-links a {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--accent, #2563eb);
  border: 1px solid #cfd9ea;
  border-radius: 7px;
  background: #f7f9fd;
  text-decoration: none;
  font-size: 0;
  line-height: 1;
  cursor: pointer;
}
.delivery-file-links a::before {
  content: "";
  display: block;
  width: 16px;
  height: 16px;
  background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12m0 0 4.5-4.5M12 15l-4.5-4.5M5 20h14'/%3E%3C/svg%3E");
}
.delivery-file-links a svg {
  display: none;
}
.delivery-file-links a:hover {
  color: #1d4ed8;
  background: #eef2ff;
}
/* IM은 파랑, 참고사례·기타 첨부자료는 주황으로 다운로드 성격을 구분한다. */
.delivery-file-links a.delivery-file-download.download-reference {
  color: #b45309;
  border-color: #f0c48a;
  background: #fff7ed;
}
.delivery-file-links a.delivery-file-download.download-reference::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b45309' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12m0 0 4.5-4.5M12 15l-4.5-4.5M5 20h14'/%3E%3C/svg%3E");
}
.delivery-file-links a.delivery-file-download.download-reference:hover {
  color: #92400e;
  border-color: #d99a4e;
  background: #ffedd5;
}
/* 실거래 사례 링크(관리자): 강제 다운로드 아이콘을 벗기고 지도 아이콘 + 사례수/＋로,
   초록 톤이라 파란 다운로드와 확실히 구분된다. */
.delivery-file-links a.delivery-deal-link {
  width: auto;
  min-width: 28px;
  flex: none;
  gap: 3px;
  padding: 0 7px;
  color: #176047;
  border-color: #bcd5c9;
  background: #eef7f2;
  font-size: 11px;
  font-weight: 800;
}
.delivery-file-links a.delivery-deal-link::before { display: none; }
.delivery-file-links a.delivery-deal-link svg {
  display: block;
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.delivery-file-links a.delivery-deal-link:hover {
  color: #0f4a37;
  border-color: #7eae97;
  background: #dcebe3;
}
.delivery-file-links a.delivery-deal-link b {
  font-size: 11px;
  line-height: 1;
  color: inherit;
}
.delivery-file-links a.delivery-deal-link b.deal-add {
  font-size: 14px;
  font-weight: 800;
}
.delivery-file-links .shared-property-overview-button,
.customer-file-list .shared-property-overview-button,
.property-card-toolbar .shared-property-overview-button,
.property-warehouse-file-links .im-builder-button {
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  max-width: 28px;
  max-height: 28px;
  flex: 0 0 28px;
  display: inline-grid;
  place-items: center;
  padding: 0;
  border: 1px solid #86d1b1;
  border-radius: 7px;
  background: #ecfdf5;
  color: #047857;
  font-family: Georgia, serif;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}
.delivery-file-links .shared-property-overview-button:hover,
.customer-file-list .shared-property-overview-button:hover,
.property-card-toolbar .shared-property-overview-button:hover {
  border-color: #34a97b;
  background: #dff7ed;
}
.delivery-batch-memos {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  margin-top: 10px;
}
.delivery-batch-memos div {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px;
  background: #f8fafc;
}
.delivery-advisor-message-form {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #e8e1d3;
  border-radius: 6px;
  background: #faf7f0;
}
.delivery-batch-memos .delivery-advisor-message-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 0 8px;
  border-width: 0 0 1px;
  border-radius: 0;
  background: transparent;
}
.delivery-batch-memos .delivery-advisor-message-head b {
  flex: 1;
  padding: 0;
  border: 0;
}
.delivery-advisor-message-save {
  width: 30px;
  min-width: 30px;
  height: 30px;
  min-height: 30px;
  padding: 0;
  color: #111827;
  background: #fff;
  border-color: #cbd5e1;
}
.delivery-advisor-message-form textarea {
  min-height: 110px;
  padding: 10px 11px;
  font-size: 13px;
  line-height: 1.5;
  font-weight: 400;
  background: #fff;
}
.delivery-batch-memos .delivery-advisor-original {
  background: #f8fafc;
}
.delivery-batch-memos .delivery-advisor-addenda {
  border-color: #e8e1d3;
  background: #faf7f0;
}
.delivery-batch-memos .delivery-advisor-addenda > b {
  color: #5b5341;
}
.delivery-batch-memos .delivery-advisor-addendum {
  margin-top: 8px;
  padding: 9px 10px;
  border: 1px solid #e3dcce;
  border-radius: 5px;
  background: #f4efe4;
}
.delivery-batch-memos .delivery-advisor-addendum-meta {
  padding: 0;
  border: 0;
  border-radius: 0;
  color: #9a8a6f;
  background: transparent;
  font-size: 11px;
  line-height: 1.4;
}
.delivery-batch-memos .delivery-advisor-addendum p {
  margin-top: 5px;
  color: #40392d;
}
.delivery-batch-memos b {
  display: block;
  padding-bottom: 8px;
  border-bottom: 1px solid #e2e8f0;
}
.delivery-batch-memos p {
  margin: 8px 0 0;
  color: var(--muted);
  white-space: pre-wrap;
}
.delivery-batch-memos .memo-private b,
.delivery-batch-memos .memo-private p {
  color: #b45309;
}
.delivery-card {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(260px, .9fr);
  gap: 12px;
  margin-top: 0;
  align-items: center;
}
.delivery-card.compact-line-card {
  grid-template-columns: minmax(130px, 1.1fr) minmax(220px, 1.7fr) 96px 112px auto 76px;
  gap: 10px;
  min-height: 44px;
  padding: 10px 12px;
}
.compact-line-card strong,
.compact-line-card span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.compact-line-card > span {
  color: var(--muted);
  font-size: 13px;
}
.delivery-card-main {
  display: grid;
  gap: 4px;
}
.delivery-card-main span,
.delivery-meta span {
  color: var(--muted);
  font-size: 13px;
}
.delivery-meta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
}
.file-choice-panel {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  display: grid;
  gap: 8px;
  background: #f8fafc;
}
.file-choice-list {
  display: grid;
  gap: 6px;
  max-height: 180px;
  overflow-y: auto;
}
.file-choice {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--text);
  font-size: 13px;
  font-weight: 700;
}
.file-choice input {
  width: auto;
  margin-top: 2px;
}
.picker-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, .38);
}
.picker-modal[hidden] { display: none; }
.delivery-picker-modal {
  /* 전달 상세가 lazy holder에 뒤늦게 추가돼도, 상세 안에서 연 선택창은 항상 그 위에 둔다. */
  z-index: 1200;
  place-items: start center;
  padding: clamp(24px, 5vh, 48px) 24px 24px;
}
.delivery-picker-modal .picker-panel {
  height: min(620px, calc(100dvh - 72px));
  max-height: none;
  box-sizing: border-box;
}
.picker-panel {
  width: min(720px, 100%);
  max-height: min(720px, calc(100vh - 48px));
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 14px;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 10px;
  box-shadow: 0 24px 80px rgba(15, 23, 42, .24);
}
.picker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.picker-head h2 {
  margin: 0;
  font-size: 16px;
}
.picker-head-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.request-back-button,
.delivery-back-button,
.delivery-property-back-button,
.delivery-note-back-button,
.delivery-task-back-button {
  min-height: 32px;
  font-size: 13px;
  color: var(--accent, #2563eb);
  border-color: #c7d2fe;
}
.request-back-button.icon-button,
.delivery-back-button.icon-button {
  width: 30px;
  min-width: 30px;
  min-height: 30px;
  padding: 0;
  font-size: 18px;
  line-height: 1;
}
.request-back-button:hover,
.delivery-back-button:hover,
.delivery-property-back-button:hover,
.delivery-note-back-button:hover,
.delivery-task-back-button:hover {
  background: #eef2ff;
}
.request-back-button[hidden],
.delivery-back-button[hidden],
.delivery-property-back-button[hidden],
.delivery-note-back-button[hidden],
.delivery-task-back-button[hidden] {
  display: none;
}
.picker-search {
  min-height: 42px;
}
.picker-list {
  display: grid;
  align-content: start;
  grid-auto-rows: max-content;
  gap: 8px;
  overflow: auto;
  min-height: 0;
}
.picker-item {
  width: 100%;
  min-height: 38px;
  display: grid;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  text-align: left;
}
.picker-item-customer {
  grid-template-columns: minmax(130px, 1.2fr) minmax(180px, 1.6fr) 86px;
}
.picker-item-property {
  grid-template-columns: minmax(120px, 1.2fr) minmax(220px, 1.8fr) 92px 88px 78px;
}
.picker-item strong,
.picker-item span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.picker-item span {
  color: var(--muted);
  font-size: 13px;
}
.picker-item.is-selected {
  border-color: var(--accent);
  background: var(--accent-weak);
}
.picker-actions {
  display: flex;
  justify-content: flex-end;
  padding-top: 4px;
}
.request-card {
  position: relative;
  padding: 44px 14px 14px;
  margin-top: 0;
}
.request-card-list .request-line-card {
  padding: 6px 118px 6px 14px;
  min-width: 1120px;
  cursor: pointer;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.request-card-list .request-line-card:hover {
  background: #f6f9ff;
}
.request-card-list .request-line-card.request-is-paused {
  opacity: .48;
  background: #f8fafc;
  filter: grayscale(.2);
}
.request-card-list .request-line-card.request-is-closed {
  opacity: .38;
  background: #f8fafc;
  filter: grayscale(.45);
}
.request-card-list .request-line-card.request-is-paused:hover,
.request-card-list .request-line-card.request-is-closed:hover {
  opacity: .68;
  background: #f1f5f9;
}
.request-is-paused .request-title-cell strong,
.request-is-closed .request-title-cell strong {
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
  text-decoration-color: currentColor;
}
.request-memo-content {
  display: grid;
  gap: 5px;
}
.request-memo-content strong {
  color: #475569;
  font-size: 12px;
}
.request-memo-content span {
  white-space: pre-wrap;
}
.request-group .request-card-list {
  gap: 0;
}
.request-card-list .request-line-card .request-line-head span {
  display: none;
}
.request-list-header {
  min-width: 1120px;
  padding: 0 118px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.request-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.request-card .request-card-form {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.request-card-head {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 150px 104px;
  gap: 8px;
  align-items: end;
}
.request-line-head {
  grid-template-columns: minmax(190px, 1.1fr) minmax(260px, 1.55fr) 128px 120px 104px 82px;
}
.pb-request-line-head {
  grid-template-columns: minmax(180px, 1.05fr) minmax(280px, 1.65fr) 120px 112px 92px 76px;
  gap: 8px;
}
.admin-request-line-head {
  grid-template-columns: 200px minmax(320px, 1fr) 120px 120px 92px 72px;
  gap: 8px;
}
.admin-request-list-panel {
  max-width: 784px;
}
.admin-request-card-list .request-line-card {
  min-width: 730px;
  padding: 6px 14px;
}
.admin-request-card-list .request-list-header {
  min-width: 730px;
  padding: 0 14px 6px;
}
.admin-request-card-list .admin-request-line-head {
  grid-template-columns: 170px 232px 124px 132px 60px;
  gap: 6px;
}
.admin-request-card-list .request-card-toolbar {
  left: 660px;
  right: auto;
}
.request-line-cell {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.request-line-cell span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.request-line-cell strong {
  min-height: 36px;
  display: flex;
  align-items: center;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 14px;
}
.request-title-cell strong {
  font-weight: 900;
}
.delivery-request-detail-link {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  color: #245f91;
  font-weight: 900;
  text-decoration: underline;
  text-decoration-color: #aac3d8;
  text-underline-offset: 3px;
  text-overflow: ellipsis;
  white-space: inherit;
  cursor: pointer;
}
.delivery-request-detail-link:hover {
  color: #174a78;
  text-decoration-color: currentColor;
}
.delivery-request-detail-link:focus-visible {
  outline: 2px solid #7eae97;
  outline-offset: 2px;
  border-radius: 2px;
}
.request-summary-field {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.request-summary-field span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.request-summary-field strong {
  min-height: 36px;
  border: 1px solid #edf0f5;
  border-radius: 6px;
  padding: 8px 10px;
  background: #f8fafc;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.request-card .request-card-details {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.request-card .request-card-details[hidden] {
  display: none;
}
.request-card .request-card-details .full {
  grid-column: 1 / -1;
}
.request-readonly-content {
  height: 176px;
  overflow-y: auto;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 12px;
  white-space: pre-wrap;
  color: var(--text);
  background: #f8fafc;
}
.request-detail-panel {
  width: min(980px, 100%);
  overflow-x: auto;
}

/* 아이패드 세로: 관리자 의뢰 상세의 고정 최소폭이 모달 오른쪽을 밀지 않게 한다. */
@media (min-width: 561px) and (max-width: 900px) {
  .request-edit-modal[id^="request-detail-"] > .request-detail-panel {
    overflow-x: hidden;
  }

  .request-edit-modal[id^="request-detail-"] > .request-detail-panel > * {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  .request-edit-modal[id^="request-detail-"] .request-detail-grid {
    min-width: 0;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.7fr) 86px 88px 68px 54px;
    gap: 8px;
  }

  .request-edit-modal[id^="request-detail-"] .linked-delivery-line {
    min-width: 0;
    grid-template-columns: 86px 54px 76px 78px minmax(0, 1fr) 36px;
    gap: 6px;
  }

  /* 전달 상세 모달(자문위원·관리자)도 동일하게 폭 넘침을 막고 열을 접는다. */
  .request-edit-modal[id^="pb-delivery-detail-"] > .request-detail-panel,
  .request-edit-modal[id^="delivery-detail-"] > .request-detail-panel {
    overflow-x: hidden;
  }
  .request-edit-modal[id^="pb-delivery-detail-"] > .request-detail-panel > *,
  .request-edit-modal[id^="delivery-detail-"] > .request-detail-panel > * {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  .delivery-detail-grid,
  .admin-delivery-detail-grid {
    min-width: 0;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 12px;
  }
  .delivery-detail-grid::after,
  .admin-delivery-detail-grid::after { display: none; }
  .delivery-detail-confirm-list { flex-wrap: wrap; }

  /* 고객 상세 모달(관리자): 561–900(패드 세로·폰 가로)에서 상단 정보 4열과 관련 의뢰 줄이
     고정폭(그리드 736px·줄 min-width 760px)이라 패널을 넘겨 가로 스크롤이 생겼다.
     의뢰·전달 상세처럼 열을 유동(minmax(0,…))으로 접어 폭에 맞춘다. (pb는 id가 pb-* 라 제외) */
  .request-edit-modal[id^="customer-detail-"] > .customer-detail-panel {
    overflow-x: hidden;
  }
  .request-edit-modal[id^="customer-detail-"] > .customer-detail-panel > * {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  .request-edit-modal[id^="customer-detail-"] .admin-customer-detail-grid {
    min-width: 0;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr) minmax(0, .6fr) minmax(0, 1.4fr);
    gap: 8px 12px;
  }
  .request-edit-modal[id^="customer-detail-"] .admin-customer-detail-grid::after { display: none; }
  .request-edit-modal[id^="customer-detail-"] .customer-request-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1.6fr) 96px minmax(0, 1fr) 64px;
    gap: 8px;
  }
}

.request-detail-grid {
  display: grid;
  grid-template-columns: minmax(140px, .9fr) minmax(300px, 1.8fr) 112px 112px 96px 80px;
  gap: 10px;
  align-items: end;
  position: relative;
}
.request-detail-grid::after {
  content: "";
  position: absolute;
  top: 19px;
  left: 0;
  right: 0;
  border-top: 1px solid #e5e7eb;
  pointer-events: none;
}
.request-detail-grid.property-detail-grid {
  grid-template-columns: minmax(120px, .9fr) minmax(210px, 1.45fr) 86px 96px 82px 82px 78px 100px;
  min-width: 926px;
}
.delivery-detail-grid {
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.8fr) minmax(0, .8fr) minmax(0, .8fr) minmax(0, .7fr) minmax(0, .7fr);
  min-width: 720px;
}
.admin-delivery-detail-grid {
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.55fr) minmax(88px, .72fr) minmax(78px, .62fr) minmax(176px, 1.2fr) 150px;
  min-width: 850px;
}
/* 관리자 전달 상세 데스크톱: 상태 칼럼은 고정하고 앞선 정보만 요청한 글자 폭만큼 왼쪽 정렬한다. */
@media (min-width: 901px) {
  .app-shell:not(.pb-portal) .admin-delivery-detail-grid > :nth-child(2) { transform: translateX(-14px); }
  .app-shell:not(.pb-portal) .admin-delivery-detail-grid > :nth-child(3),
  .app-shell:not(.pb-portal) .admin-delivery-detail-grid > :nth-child(4) { transform: translateX(-28px); }
  .app-shell:not(.pb-portal) .admin-delivery-detail-grid > :nth-child(5) { transform: translateX(-14px); }
}
.delivery-detail-confirm-list {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
  /* 고객·자문위원 배지를 왼쪽으로 당기고(≈2글자) 간격을 넓혀 답답하지 않게. */
  margin-left: -12px;
}
.delivery-detail-confirm-list.is-group {
  align-items: flex-start;
  flex-direction: column;
  gap: 5px;
}
.delivery-detail-confirm-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  color: #475569;
  font-size: 12px;
  line-height: 1.25;
  white-space: nowrap;
}
.delivery-detail-confirm-item i {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #94a3b8;
  box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .08);
}
.delivery-detail-confirm-item.is-confirmed i { background: #2563eb; }
.delivery-detail-confirm-item.is-unconfirmed i { background: #dc2626; }
.delivery-detail-confirm-item b,
.delivery-detail-confirm-item em {
  font: inherit;
  font-style: normal;
}
.delivery-detail-confirm-item b { font-weight: 800; }
.delivery-detail-confirm-item em { color: #64748b; }
.delivery-detail-confirm-item.is-confirmed em { color: #1d4ed8; }
.delivery-detail-confirm-item.is-unconfirmed em { color: #b91c1c; }

/* 고객 목록 전달건수: 공동고객 그룹으로 함께 받은 매물 수(공 N건)를 구분 색으로 표기. */
/* '.customer-line-head span{display:none}'(미니라벨 숨김)이 이 span도 지우므로 더 구체적으로 되살린다. */
.customer-line-card .customer-line-head .customer-group-delivery-count {
  display: inline;
  color: #0d9488;
  font-weight: 700;
}
.customer-group-delivery-count.has-direct { margin-left: 6px; }

/* 공동전달: '고객' 배지 하나로 접고, 클릭하면 수신자별 확인 현황을 말풍선으로 편다. */
/* 말풍선이 아래 '고객 공유' 패널 뒤로 깔리지 않도록 헤더 그리드를 위 레이어로 올린다. */
.admin-delivery-detail-grid { position: relative; z-index: 5; }
/* '.request-line-cell strong'의 overflow:hidden(말줄임)이 말풍선을 잘라내므로 이 셀만 푼다. */
.request-line-cell strong.delivery-detail-confirm-list { overflow: visible; }
.delivery-group-confirm { position: relative; display: inline-flex; }
.delivery-group-confirm > summary { list-style: none; cursor: pointer; }
.delivery-group-confirm > summary::-webkit-details-marker { display: none; }
.delivery-group-confirm-caret {
  width: 10px; height: 10px; fill: none; stroke: currentColor; stroke-width: 1.6;
  stroke-linecap: round; stroke-linejoin: round; opacity: .55;
  transition: transform .15s ease;
}
.delivery-group-confirm[open] > summary .delivery-group-confirm-caret { transform: rotate(180deg); }
.delivery-group-confirm-pop {
  position: absolute;
  top: calc(100% + 7px);
  left: 0;
  z-index: 40;
  min-width: 190px;
  max-width: 300px;
  padding: 8px 10px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, .16);
}
.delivery-group-confirm-pop::before {
  content: "";
  position: absolute;
  top: -5px; left: 14px;
  width: 9px; height: 9px;
  background: #fff;
  border-left: 1px solid #e2e8f0;
  border-top: 1px solid #e2e8f0;
  transform: rotate(45deg);
}
.delivery-group-confirm-row {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; line-height: 1.3; white-space: nowrap;
}
.delivery-group-confirm-row i {
  flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%;
  background: #94a3b8; box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .08);
}
.delivery-group-confirm-row.is-confirmed i { background: #2563eb; }
.delivery-group-confirm-row.is-unconfirmed i { background: #dc2626; }
.delivery-group-confirm-row b { font-weight: 700; color: #1e293b; }
.delivery-group-confirm-row em {
  font-style: normal; color: #64748b; margin-left: auto; padding-left: 12px;
}
.delivery-group-confirm-row.is-confirmed em { color: #1d4ed8; }
.delivery-group-confirm-row.is-unconfirmed em { color: #b91c1c; }

@media (max-width: 900px) {
  .app-shell:not(.pb-portal) .delivery-detail-confirm-list {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }
}
@media (max-width: 560px) {
  .request-edit-modal[id^="pb-delivery-detail-"] > .request-detail-panel,
  .request-edit-modal[id^="delivery-detail-"] > .request-detail-panel {
    overflow-x: hidden;
  }
  .request-edit-modal[id^="pb-delivery-detail-"] > .request-detail-panel > *,
  .request-edit-modal[id^="delivery-detail-"] > .request-detail-panel > * {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  .delivery-detail-grid,
  .admin-delivery-detail-grid {
    min-width: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 10px;
  }
  .delivery-detail-grid::after,
  .admin-delivery-detail-grid::after { display: none; }
}
.request-detail-panel > .picker-head,
.customer-detail-panel > .picker-head {
  margin-bottom: 10px;
}
.admin-delivery-detail-panel > .delivery-batch-memos {
  margin-top: 0;
}
.delivery-message-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  margin-top: 8px;
}
.delivery-message-stack > .delivery-customer-share-form,
.delivery-message-stack > .delivery-batch-memos {
  margin: 0 !important;
}
.delivery-status-inline-form {
  align-content: end;
  position: relative;
  top: -2px;
}
.delivery-status-inline-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 28px;
  gap: 6px;
  align-items: center;
  min-height: 36px;
}
.delivery-status-inline-controls select {
  min-width: 0;
  min-height: 28px;
  height: 28px;
  padding: 2px 7px;
  font-size: 12px;
}
.delivery-status-inline-controls .icon-button {
  width: 28px;
  min-width: 28px;
  min-height: 28px;
  height: 28px;
  padding: 0;
  color: #111827;
  background: #fff;
  border-color: #cbd5e1;
}

.delivery-share-options {
  display: flex;
  align-items: center;
  gap: 22px;
  min-height: 38px;
}
.delivery-customer-share-form {
  margin: 8px 0 6px;
  padding: 0;
  border: 1px solid #cbd8e8;
  border-radius: 8px;
  background: #f3f7fc;
  overflow: hidden;
}
.delivery-customer-share-details > summary {
  display: grid;
  grid-template-columns: 1fr auto 18px;
  align-items: center;
  gap: 10px;
  min-height: 32px;
  padding: 0 12px;
  color: #334155;
  cursor: pointer;
  list-style: none;
  font-size: 13px;
  font-weight: 700;
}
.delivery-customer-share-details > summary::-webkit-details-marker { display: none; }
.delivery-customer-share-summary-state {
  color: #64748b;
  font-size: 11px;
  font-weight: 600;
}
.delivery-customer-share-toggle {
  color: #64748b;
  text-align: center;
  font-size: 16px;
}
.delivery-customer-share-details[open] > summary {
  border-bottom: 1px solid #e2e8f0;
}
.delivery-customer-share-details[open] .delivery-customer-share-toggle {
  transform: rotate(45deg);
}
.delivery-customer-share-body {
  padding: 11px 12px 12px;
}
.delivery-customer-share-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.delivery-customer-share-head .check {
  min-height: 30px;
  margin: 0;
}
.delivery-customer-share-save {
  width: 30px;
  min-width: 30px;
  height: 30px;
  min-height: 30px;
  padding: 0;
  color: #111827;
  background: #fff;
  border-color: #cbd5e1;
  font-size: 14px;
}
.delivery-customer-share-save:hover {
  color: #111827;
  background: #f8fafc;
  border-color: #94a3b8;
}
.delivery-customer-share-body > label:not(.check) {
  display: grid;
  gap: 6px;
  margin-top: 8px;
  color: #475569;
  font-size: 12px;
  font-weight: 700;
}
.delivery-customer-share-form textarea {
  min-height: 72px;
  padding: 10px 11px;
  line-height: 1.55;
  background: #fff;
}
.delivery-advisor-share-details .delivery-advisor-original > b,
.delivery-advisor-share-details .delivery-advisor-addenda > b {
  display: block;
  padding-bottom: 8px;
  border-bottom: 1px solid #e2e8f0;
}
.delivery-advisor-share-details .delivery-advisor-original > p,
.delivery-advisor-share-details .delivery-advisor-addendum > p {
  margin: 8px 0 0;
  color: #475569;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.55;
}
/* 자문위원 전달 본문도 고객 전달 내용(.delivery-customer-share-content)과 같은 옅은 톤+왼쪽 바로
   "실제 전달 문구" 영역을 구분한다. */
.delivery-advisor-share-details .delivery-advisor-original > p {
  padding: 11px 13px;
  border-radius: 8px;
  border-left: 3px solid #cbd5e1;
  background: #f6f8fa;
}
.delivery-advisor-share-details .delivery-advisor-addenda {
  margin-top: 14px;
}
.delivery-advisor-share-details .delivery-advisor-addendum {
  margin-top: 8px;
  padding: 9px 10px;
  border: 1px solid #e3dcce;
  border-radius: 5px;
  background: #faf7f0;
}
.delivery-advisor-share-details .delivery-advisor-addendum-meta {
  color: #9a8a6f;
  font-size: 11px;
  line-height: 1.4;
}
/* 자문위원(pb) 전달 상세: 관리자 화면과 동일하게 최초 원문/정정·추가를 옅은 톤 박스로 구분한다.
   pb 모달에는 .delivery-advisor-share-details 래퍼가 없어 위 규칙이 닿지 않으므로 pb 패널에 별도 적용. */
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-original > p,
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-addendum > p {
  margin: 8px 0 0;
  color: #475569;
  line-height: 1.55;
}
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-original > p {
  padding: 11px 13px;
  border-radius: 8px;
  border-left: 3px solid #cbd5e1;
  background: #f6f8fa;
}
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-addenda {
  margin-top: 14px;
}
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-addendum {
  margin-top: 8px;
  padding: 9px 10px;
  border: 1px solid #e3dcce;
  border-radius: 5px;
  background: #faf7f0;
}
.pb-delivery-detail-panel .delivery-batch-memos .delivery-advisor-addendum-meta {
  color: #9a8a6f;
  font-size: 11px;
  line-height: 1.4;
}
.delivery-customer-message-label {
  padding-top: 9px;
  border-top: 1px solid #e2e8f0;
}
.delivery-customer-share-locked-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
  color: #475569;
  font-size: 12px;
}
.delivery-customer-share-locked-head span { color: #7c8799; font-size: 11px; }
.delivery-customer-share-content {
  /* 실제 고객에게 나가는 본문임을 라벨·버튼과 구분되게, 아주 옅은 무채색 톤과 왼쪽 바로 표시. */
  margin: 6px 0 2px;
  padding: 11px 13px;
  border-radius: 8px;
  border-left: 3px solid #cbd5e1;
  background: #f6f8fa;
  color: #475569;
  white-space: pre-wrap;
  line-height: 1.55;
}
.delivery-customer-share-remove-row {
  display: flex;
  justify-content: flex-end;
  margin-top: 10px;
}
.delivery-customer-share-remove {
  min-height: 30px;
  padding: 5px 10px;
  font-size: 11px;
}
.delivery-customer-share-disabled-note {
  margin: 10px 0 0;
  color: #9a3412;
  font-weight: 700;
}
.form-hint.warning { color: #b45309; }

/* 고객 전용 전달 자료 화면 */
.customer-portal-body {
  min-height: 100vh;
  margin: 0;
  color: #18212b;
  background:
    radial-gradient(circle at 12% 8%, rgba(166, 138, 96, .12), transparent 28%),
    linear-gradient(145deg, #eeeae1 0%, #f6f3ed 46%, #e9edf0 100%);
}
.customer-access-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 30px 20px;
}
.customer-access-card {
  position: relative;
  width: min(470px, 100%);
  overflow: hidden;
  border: 1px solid rgba(24, 33, 43, .14);
  border-radius: 3px;
  background: #fbfaf6;
  box-shadow: 0 24px 70px rgba(35, 40, 44, .12);
}
.customer-access-card::before {
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: #9a7a4f;
  content: "";
}
.customer-access-masthead {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 18px 34px 15px;
  border-bottom: 1px solid #d9d4ca;
  letter-spacing: .13em;
}
.customer-access-masthead strong {
  color: #172536;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  letter-spacing: .08em;
}
.customer-access-masthead span { color: #7b746a; font-size: 8px; font-weight: 700; }
.customer-access-content { padding: 28px 34px 30px; }
.customer-access-edition {
  display: flex;
  justify-content: space-between;
  color: #9a7a4f;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .16em;
}
.customer-access-heading { margin-top: 38px; }
.customer-access-eyebrow {
  margin: 0 0 11px;
  color: #9a7a4f;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .18em;
}
.customer-access-card h1 {
  margin: 0;
  color: #172536;
  font-family: Georgia, "Times New Roman", "Noto Serif KR", serif;
  font-size: clamp(30px, 7vw, 38px);
  font-weight: 500;
  letter-spacing: -.055em;
  line-height: 1.12;
}
.customer-access-intro {
  margin: 18px 0 0;
  color: #68717a;
  font-size: 13px;
  line-height: 1.8;
}
.customer-access-section-label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 34px;
  color: #8d8477;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .17em;
}
.customer-access-section-label::after { flex: 1; height: 1px; background: #d9d4ca; content: ""; }
.customer-access-form { display: grid; gap: 11px; margin-top: 30px; }
.customer-access-form label {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  color: #263343;
  font-size: 13px;
  font-weight: 700;
}
.customer-access-form label small { color: #9b948a; font-size: 8px; letter-spacing: .13em; }
.customer-access-form input {
  height: 54px;
  border: 1px solid #cbc5ba;
  border-radius: 2px;
  color: #172536;
  background: rgba(255, 255, 255, .56);
  text-align: center;
  letter-spacing: .55em;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 22px;
  font-weight: 600;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.customer-access-form input:focus {
  border-color: #9a7a4f;
  outline: none;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(154, 122, 79, .12);
}
.customer-access-form button {
  height: 50px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 3px;
  padding: 0 18px;
  border: 1px solid #172536;
  border-radius: 2px;
  color: #fff;
  background: #172536;
  font-size: 13px;
  letter-spacing: .02em;
}
.customer-access-form button:hover { border-color: #273d54; background: #273d54; }
.customer-access-form button span:last-child { color: #c9ae84; font-family: Georgia, serif; font-size: 20px; font-weight: 400; }
.customer-access-error, .customer-access-alert {
  padding: 12px 13px;
  border: 1px solid #dfc6bd;
  border-radius: 2px;
  color: #8d3f30 !important;
  background: #f8efeb;
  font-size: 13px;
}
.customer-access-alert { margin-top: 34px; }
.customer-access-note {
  margin: 25px 0 0 !important;
  color: #858079;
  font-size: 10px;
  line-height: 1.5;
}
.customer-access-note span { margin-right: 3px; color: #9a7a4f; font-size: 9px; }
.customer-link-guide-card > p strong { color: #1f5fe0; }
.customer-portal-header {
  display: flex;
  justify-content: space-between;
  align-items: end;
  max-width: 980px;
  margin: 0 auto;
  padding: 42px 24px 18px;
}
.customer-portal-header span { color: #1f5fe0; font-size: 12px; font-weight: 800; }
.customer-portal-header h1 { margin: 4px 0 0; font-size: 28px; }
.customer-logout { color: #64748b; font-size: 13px; text-decoration: none; }
.customer-portal-main { max-width: 980px; margin: 0 auto; padding: 0 24px 48px; }
.customer-map-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 16px;
  padding: 16px 18px;
  border: 1px solid rgba(24, 33, 43, .14);
  border-radius: 3px;
  background: #fbfaf6;
}
.customer-map-entry p { margin: 0 0 5px; color: #9a7a4f; font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.customer-map-entry strong { color: #4a4640; font-size: 13px; line-height: 1.45; }
.customer-map-open-button { min-height: 42px; }
/* 받은 매물 상태 필터(자문위원 발송이력 기반) */
.customer-interest-section { margin: 0 0 22px; }
.customer-interest-head { margin: 0 0 12px; }
.customer-interest-head h2 { margin: 2px 0 4px; font-size: 18px; color: #2b2822; letter-spacing: -.01em; }
.customer-interest-sub { margin: 0; color: #7c766c; font-size: 12px; line-height: 1.5; }
.customer-interest-filters { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 12px; }
.customer-interest-filter {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 11px; border: 1px solid rgba(24, 33, 43, .16); border-radius: 999px;
  background: #fff; color: #55504a; font-size: 12px; font-weight: 700; cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}
.customer-interest-filter b { font-weight: 800; color: #8a8377; }
.customer-interest-filter:hover { border-color: rgba(24, 33, 43, .3); }
.customer-interest-filter.is-active { background: #2b2822; border-color: #2b2822; color: #fff; }
.customer-interest-filter.is-active b { color: #d7cfae; }
.customer-interest-list { display: grid; gap: 10px; }
.customer-interest-empty-filtered { color: #9a948a; font-size: 13px; text-align: center; padding: 20px 0; }
/* 고객 포털 테이블: 카드 폭에 꽉 맞춰 넘침·모서리 잘림 방지 + 메모와 간격 */
.customer-item-list { overflow-x: visible; margin-top: 16px; }
.customer-item-list .delivery-item-line {
  min-width: 0;
  /* 자료 칼럼: 개략 + 다운로드(IM·참고자료 최대 2) + 거래사례 4개가 안 잘리게 폭 확보 */
  /* 자료 칼럼: '보기 ›' 텍스트 칩이 안 잘리게 폭 확보(칩이 쪼그라들지 않도록 넉넉히). */
  grid-template-columns: minmax(96px, 1.4fr) minmax(120px, 2.2fr) minmax(60px, .85fr) 90px;
}
/* 자료 칸: 기본 .delivery-file-links는 grid(첫칸 28px 고정)라 '보기 ›' 칩이 눌려 동그라미가 됨.
   고객 포털은 flex로 덮어써서 칩이 내용만큼 자연스럽게 늘어나게 한다. */
.customer-item-list .delivery-file-links {
  display: flex;
  justify-content: start;
  align-items: center;
}
/* 가격 열: 칼럼명 '가격'과 값 '550억' 모두 왼쪽 정렬(다른 칼럼과 일관). */
.customer-item-list .delivery-item-price { text-align: left !important; padding-right: 0; }
.customer-item-list .delivery-item-header span:nth-child(3) { text-align: left !important; padding-right: 0; }
/* 관리자·자문위원 전달 상세: 상태 열을 줄여 파일 열 자체를 왼쪽으로 옮긴다. */
.admin-delivery-detail-panel .delivery-item-line,
.pb-delivery-detail-panel .delivery-item-line {
  min-width: 486px;
  grid-template-columns: minmax(110px, 1.3fr) minmax(150px, 1.9fr) minmax(68px, .8fr) 58px 56px;
  column-gap: 6px;
}
.admin-delivery-detail-panel .delivery-file-links,
.pb-delivery-detail-panel .delivery-file-links {
  /* 이 화면의 파일 칸엔 개략 아이콘 1개뿐 → 칸 안 가운데로 모은다. */
  display: flex;
  justify-content: center;
  gap: 2px;
  overflow: visible;
  text-overflow: clip;
}
/* 헤더 "파일" 라벨도 아이콘 위 가운데로. */
.admin-delivery-detail-panel .delivery-item-header span:last-child,
.pb-delivery-detail-panel .delivery-item-header span:last-child {
  text-align: center;
}
/* 아이콘을 조금 키워 존재감을 준다(개략 모달 진입 버튼). */
.admin-delivery-detail-panel .delivery-file-links .shared-property-overview-button,
.pb-delivery-detail-panel .delivery-file-links .shared-property-overview-button,
.pb-delivery-detail-panel .delivery-file-links .im-builder-button {
  width: 32px;
  height: 32px;
  min-width: 32px;
  min-height: 32px;
  max-width: 32px;
  max-height: 32px;
  flex: 0 0 32px;
  border-radius: 8px;
}
.admin-delivery-detail-panel .delivery-file-links .shared-property-overview-button svg,
.pb-delivery-detail-panel .delivery-file-links .shared-property-overview-button svg,
.pb-delivery-detail-panel .delivery-file-links .im-builder-button svg {
  width: 17px;
  height: 17px;
}
.im-builder-button {
  display: inline-grid;
  place-items: center;
  padding: 0;
  border: 1px solid #9dc5da;
  background: #edf8fd;
  color: #0875b5;
  cursor: pointer;
}
.im-builder-button:hover { background: #dff2fb; border-color: #67abd0; }
.im-builder-button svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.im-builder-modal {
  z-index: 1320;
  padding: 24px;
  background: rgba(15, 23, 42, .58);
  backdrop-filter: blur(3px);
}
.im-builder-panel {
  width: min(820px, 100%);
  height: min(820px, calc(100dvh - 24px));
  max-height: calc(100dvh - 24px);
  grid-template-rows: auto minmax(0, 1fr);
  padding: 24px;
  overflow: hidden;
}
.im-builder-panel .picker-head { align-items: flex-start; }
.im-builder-panel .picker-head p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.im-builder-preview {
  position: relative;
  width: min(300px, 100%);
  aspect-ratio: 210 / 297;
  margin: 8px auto 0;
  overflow: hidden;
  border-radius: 4px;
  background: linear-gradient(145deg, #1d405f, #071d32);
  box-shadow: 0 18px 38px rgba(15, 23, 42, .25);
}
.im-builder-preview-landscape {
  width: min(360px, 100%);
  aspect-ratio: 297 / 210;
  background: #eef2f6;
  box-shadow: 0 12px 28px rgba(15, 23, 42, .2);
}
.im-builder-cover-src {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}
.im-builder-logo-chip {
  position: absolute;
  top: 6%;
  left: 6%;
  display: grid;
  width: 30%;
  height: 12%;
  padding: 2px 5px;
  place-items: center;
  border-radius: 3px;
  background: rgba(255, 255, 255, .96);
}
.im-builder-logo-chip img { max-width: 100%; max-height: 100%; object-fit: contain; }
.im-builder-photo,
.im-builder-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.im-builder-photo { object-fit: cover; }
.im-builder-overlay { background: rgba(5, 31, 55, .48); }
.im-builder-brand {
  position: absolute;
  top: 10%;
  right: 5%;
  display: grid;
  width: 32%;
  height: 16%;
  place-items: center;
}
.im-builder-brand img { width: 100%; height: 100%; object-fit: contain; }
.im-builder-title {
  position: absolute;
  top: 20%;
  left: 8%;
  right: 8%;
  display: grid;
  color: #fff;
}
.im-builder-title span {
  margin-bottom: 8%;
  font-size: clamp(13px, 3.6vw, 21px);
  font-weight: 900;
  letter-spacing: .04em;
}
.im-builder-title span::after {
  display: block;
  width: 30%;
  height: 3px;
  margin-top: 8%;
  background: var(--im-brand-accent, #2563eb);
  content: "";
}
.im-builder-title strong { font-size: clamp(22px, 6vw, 34px); }
.im-builder-title small { margin-top: 4%; font-size: 11px; }
.im-builder-cover-info {
  position: absolute;
  right: 7%;
  bottom: 4%;
  left: 7%;
  height: 20%;
  border-left: 4px solid #0875b5;
  background: rgba(255, 255, 255, .92);
}
.im-builder-form {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
}
.im-builder-body {
  display: grid;
  min-height: 0;
  grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
  align-items: start;
  gap: 20px;
  flex: 1;
  overflow-y: auto;
  padding: 4px 2px 10px;
}
.im-builder-controls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding: 8px 2px 2px;
}
.im-builder-controls label {
  display: grid;
  gap: 5px;
  color: #475569;
  font-size: 12px;
  font-weight: 800;
}
.im-builder-controls label.full { grid-column: 1 / -1; }
.im-builder-controls input,
.im-builder-controls textarea {
  width: 100%;
  min-width: 0;
  background: #fff;
}
.im-builder-controls textarea {
  min-height: 118px;
  resize: vertical;
  line-height: 1.5;
}
.im-builder-context {
  display: grid;
  grid-column: 1 / -1;
  gap: 3px;
  padding: 12px 14px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #f8fafc;
}
.im-builder-context strong { color: #0f172a; font-size: 14px; }
.im-builder-context span { color: var(--muted); font-size: 12px; }
.im-builder-note {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  text-align: left;
}
.im-builder-footer {
  flex: 0 0 auto;
  padding-top: 12px;
  border-top: 1px solid #e2e8f0;
  background: #fff;
}
.im-builder-download {
  display: flex;
  width: 100%;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.admin-delivery-detail-panel .delivery-file-links .dfl-slot,
.pb-delivery-detail-panel .delivery-file-links .dfl-slot {
  gap: 2px;
  overflow: visible;
  text-overflow: clip;
}
/* 관리자·자문위원 전달상세는 모바일에서도 데스크톱과 동일한 테이블(가로 스크롤) 유지 — 별도 카드 레이아웃 없음. */
/* 고객 포털 매물 목록: 데스크톱은 관리자와 같은 테이블. 좁은 화면은 카드로 심플하게. */
@media (max-width: 640px) {
  .customer-item-list { overflow-x: visible; }
  .customer-item-list .delivery-item-header { display: none; }
  .customer-item-list .delivery-item-line {
    min-width: 0;
    grid-template-columns: minmax(96px, 1.4fr) minmax(64px, 2fr) auto;
    grid-template-areas:
      "name  addr  price"
      "icons icons icons";
    column-gap: 10px;
    row-gap: 8px;
    align-items: center;
    padding: 12px 14px;
    margin-bottom: 8px;
    border: 1px solid #e6ebf3;
    border-radius: 11px;
    background: #fff;
  }
  .customer-item-list .delivery-item-line:last-child { margin-bottom: 0; }
  .customer-item-list .delivery-item-line:hover { background: #fff; }
  .customer-item-list .delivery-item-line > strong {
    grid-area: name; min-width: 0; font-size: 14px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .customer-item-list .delivery-item-line > .delivery-address-with-map { grid-area: addr; min-width: 0; }
  .customer-item-list .delivery-item-line > .delivery-address-with-map > span {
    display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .customer-item-list .delivery-item-line > .delivery-item-price {
    grid-area: price; justify-self: end; white-space: nowrap; overflow: visible;
    padding-right: 0;
  }
  /* 아이콘 1개만 있으므로 빈 그리드 트랙을 없애고(flex) 진짜 오른쪽 끝에 붙인다. */
  .customer-item-list .delivery-item-line > .delivery-file-links {
    grid-area: icons;
    justify-self: end;
    display: flex;
    justify-content: flex-end;
  }
  /* 아이콘 홀로 있는 줄이라 좀 더 크게 — 터치 타깃·존재감 확보. */
  .customer-item-list .delivery-file-links .shared-property-overview-button {
    width: 36px;
    height: 36px;
    min-width: 36px;
    min-height: 36px;
    max-width: 36px;
    max-height: 36px;
    flex: 0 0 36px;
    border-radius: 9px;
  }
  .customer-item-list .delivery-file-links .shared-property-overview-button svg {
    width: 19px;
    height: 19px;
  }
}
.customer-delivery-list { display: grid; gap: 12px; }
.customer-delivery-card {
  overflow: hidden;
  border: 1px solid #dbe3ee;
  border-radius: 12px;
  background: #fff;
}
.customer-delivery-card summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 19px 20px;
  cursor: pointer;
  list-style: none;
}
.customer-delivery-card summary::-webkit-details-marker { display: none; }
.customer-delivery-card summary > div { display: grid; gap: 4px; min-width: 0; }
.customer-delivery-card summary strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 19px;
}
.customer-delivery-date { color: #64748b; font-size: 12px; }
.customer-delivery-count { color: #7c8799; font-size: 11px; }
.customer-delivery-state {
  padding: 5px 9px;
  border-radius: 999px;
  color: #1d4ed8;
  background: #eff6ff;
  font-size: 11px;
  font-weight: 700;
}
/* ===== 고객 포털 · 에디토리얼 통일 (접속 페이지와 같은 언어: 페이퍼·잉크·골드·serif, 파랑 제거) ===== */
.customer-portal-body { background: #f3f0e9; }
.customer-portal-header { padding-bottom: 15px; border-bottom: 1px solid #d9d4ca; }
.customer-portal-eyebrow {
  margin: 0 0 7px;
  color: #9a7a4f;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .18em;
}
.customer-portal-header h1 {
  font-family: Georgia, "Apple SD Gothic Neo", "Noto Sans KR", serif;
  font-weight: 700;
  color: #172536;
  font-size: clamp(22px, 5.5vw, 30px);
  letter-spacing: -.01em;
  white-space: nowrap;
}
.customer-logout {
  color: #8d8477;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.customer-delivery-card {
  border: 1px solid rgba(24, 33, 43, .14);
  border-radius: 3px;
  background: #fbfaf6;
}
.customer-delivery-content { border-top: 1px solid #e6e0d5; }
.customer-delivery-card summary strong {
  font-family: Georgia, "Apple SD Gothic Neo", "Noto Sans KR", serif;
  font-weight: 700;
  color: #172536;
  font-size: 18px;
}
.customer-delivery-date { color: #9a7a4f; font-size: 9px; font-weight: 800; letter-spacing: .14em; }
.customer-delivery-count { color: #8d8477; font-size: 10px; }
.customer-delivery-state {
  padding: 4px 9px;
  border-radius: 2px;
  border: 1px solid #c9b48c;
  background: transparent;
  color: #6f5a34;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .12em;
}
/* 고객 포털 카드 썸네일(오픈리스트) — 에디토리얼 톤 */
.customer-card-summary { align-items: center; gap: 16px; }
.customer-card-thumb {
  flex: none;
  width: 168px;
  height: 112px;
  border-radius: 3px;
  overflow: hidden;
  background: #efe7d6;
  border: 1px solid rgba(24, 33, 43, .10);
  display: flex;
  align-items: center;
  justify-content: center;
}
.customer-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.customer-card-thumb-ph {
  width: 42px; height: 42px;
  color: #c2a978;
  fill: none; stroke: currentColor; stroke-width: 1.5;
  stroke-linecap: round; stroke-linejoin: round;
}
.customer-card-info { display: grid; gap: 4px; min-width: 0; flex: 1; }
.customer-card-addr {
  color: #a79e8c;
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
/* 제목: 한 줄 말줄임 대신 최대 2줄까지 줄바꿈(긴 매물명도 다 보이게). base의 nowrap보다 특이도 높게. */
.customer-delivery-card .customer-card-summary strong {
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.25;
}
.customer-delivery-card { transition: border-color .15s ease, box-shadow .15s ease; }
.customer-delivery-card:hover {
  border-color: #c9b48c;
  box-shadow: 0 4px 16px rgba(24, 33, 43, .06);
}
@media (max-width: 560px) {
  .customer-card-summary { gap: 12px; }
  .customer-card-thumb { width: 116px; height: 78px; }
  .customer-delivery-card summary { padding: 14px; }
  /* 모바일에선 카드가 좁아 주소가 중간에 잘려 지저분 — 주소는 숨기고 데스크탑에서만 노출. */
  .customer-card-addr { display: none; }
}
.customer-item-list .delivery-item-header span {
  color: #9a7a4f;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .12em;
}
/* '자료' 액션: '확인/새 자료'와 같은 골드 아웃라인 '보기 ›' 칩(고객 포털 한정, 공용 클래스 안 씀). */
.customer-item-list .customer-brief-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  width: auto;
  height: 25px;
  min-width: 0;
  max-width: none;
  min-height: 0;
  max-height: none;
  flex: none;
  padding: 0 11px;
  white-space: nowrap;
  border: 1px solid #c9b48c;
  border-radius: 999px;
  background: transparent;
  color: #6f5a34;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .06em;
  line-height: 1;
  cursor: pointer;
}
.customer-item-list .customer-brief-btn:hover {
  border-color: #b9995f;
  background: #f2ece0;
  color: #5a481f;
}
.customer-item-list .customer-brief-btn .ov-chevron { font-weight: 800; opacity: .8; }
/* 받은 매물 리스트의 '자료보기' 버튼 */
/* 받은 매물(관리자+자문 통합) 리스트 — 관리자 전달 카드와 동일 포맷, 펼침 없음 */
.customer-received-head { margin: 0 0 12px; }
.customer-received-head h2 {
  margin: 2px 0 4px;
  font-family: Georgia, "Apple SD Gothic Neo", "Noto Sans KR", serif;
  font-size: 20px; color: #172536;
}
.customer-received-sub { margin: 0; color: #7c766c; font-size: 12px; }
/* 관리자 카드는 <summary> 요소에 flex가 걸려 있으나, 이 카드는 div라 직접 지정한다. */
.customer-received-card .customer-card-summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 16px 18px;
}
.customer-received-title-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
}
.customer-received-title-row > strong {
  flex: 1;
  min-width: 0;
}
.customer-received-price {
  flex: none;
  color: #172536;
  font-size: 14px;
  font-weight: 800;
  white-space: nowrap;
}
.customer-received-action { flex: none; }
.customer-received-action .customer-brief-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  height: 32px;
  padding: 0 15px;
  flex: none;
  white-space: nowrap;
  border: 1px solid #c9b48c;
  border-radius: 999px;
  background: #fff;
  color: #6f5a34;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
  line-height: 1;
  cursor: pointer;
}
.customer-received-action .customer-brief-btn:hover { border-color: #b9995f; background: #f2ece0; color: #5a481f; }
.customer-received-action .customer-brief-btn .ov-chevron { font-weight: 800; opacity: .85; font-size: 15px; }
/* 만료된 매물의 '링크 요청' 버튼(회색 톤으로 구분) */
.customer-received-action .customer-brief-btn.is-expired {
  border-color: #d3d3cd;
  background: #f4f4f1;
  color: #8a8578;
}
.customer-received-action .customer-brief-btn.is-expired:hover {
  border-color: #b9b3a4;
  background: #ecebe5;
  color: #6f6a5d;
}
.customer-received-expiry {
  color: #54705f;
  font-size: 11px;
  font-weight: 700;
}
.customer-received-expiry.is-expired { color: #9a6b56; }
.pb-request-map-card.is-expired { background: #f7f7f4; }
.pb-request-map-card.is-expired .pb-request-map-card-name,
.pb-request-map-card.is-expired .pb-request-map-card-address { color: #817c73; }
.pb-request-map-overview.is-expired {
  border-color: #d3d3cd;
  background: #f0f0ec;
  color: #746f65;
}
@media (max-width: 560px) {
  .customer-received-card .customer-card-summary { padding: 14px; gap: 12px; }
}
/* 모바일: '상세보기' 버튼 숨기고 카드(만료 아님) 전체를 탭하면 모달로 진입 */
@media (max-width: 640px) {
  .customer-received-card .customer-received-action .customer-brief-btn:not(.is-expired) { display: none; }
  .customer-received-card:not([data-expired="1"]) { cursor: pointer; }
}
.customer-item-list .delivery-item-line > strong {
  font-family: Georgia, "Apple SD Gothic Neo", "Noto Sans KR", serif;
  color: #172536;
}
.customer-delivery-message { border-left: 2px solid #c9b48c; color: #4a4640; }
.customer-delivery-content { padding: 0 20px 20px; border-top: 1px solid #edf1f6; }
.customer-delivery-message {
  margin: 18px 0 6px;
  padding: 2px 0 2px 14px;
  border-left: 2px solid #cbd5e1;
  color: #475569;
  white-space: pre-wrap;
  line-height: 1.7;
  font-size: 15px;
}
.customer-property-card { padding: 22px 0; border-bottom: 1px solid #e8edf3; }
.customer-property-card:last-child { border-bottom: 0; }
.customer-property-eyebrow {
  color: #aab3c0;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .01em;
}
.customer-property-row {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.customer-property-col--main { flex: 1; min-width: 0; }
.customer-property-col--price { flex: none; text-align: right; }
.customer-property-col--confirm { flex: none; min-width: 66px; text-align: right; }
.customer-property-col--main h2 {
  margin: 5px 0 0;
  color: #1e293b;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.customer-property-price-num {
  display: block;
  margin: 5px 0 0;
  color: #0f172a;
  font-family: Georgia, "Times New Roman", "Apple SD Gothic Neo", "Noto Sans KR", serif;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.customer-property-address {
  margin: 9px 0 0;
  color: #64748b;
  font-size: 13px;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.customer-property-col--confirm .customer-file-list {
  margin-top: 6px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.customer-file-list { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.customer-file-list a {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid #cdd9ea;
  border-radius: 6px;
  color: #334155;
  background: #fff;
  text-decoration: none;
}
.customer-file-list a:hover { background: #f8fafc; border-color: #94a3b8; }
.customer-file-list svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.customer-file-unavailable { color: #94a3b8; }
.customer-empty-card { padding: 48px 24px; border: 1px solid #dbe3ee; border-radius: 12px; text-align: center; background: #fff; }
.customer-empty-card h2 { margin: 0 0 8px; font-size: 18px; }
.customer-empty-card p, .customer-empty { color: #64748b; }
@media (max-width: 640px) {
  .customer-access-shell {
    min-height: 100svh;
    place-items: start center;
    padding: max(18px, env(safe-area-inset-top)) 14px 24px;
  }
  .customer-access-card {
    margin-top: 2vh;
  }
  .customer-access-masthead { padding: 16px 22px 13px; }
  .customer-access-content { padding: 24px 22px 26px; }
  .customer-access-heading { margin-top: 30px; }
  .customer-access-card h1 { font-size: 31px; }
  .customer-access-intro { font-size: 12.5px; }
  .customer-access-section-label { margin-top: 28px; }
  .customer-access-form { margin-top: 26px; }
  .customer-portal-header { padding-top: 28px; }
  .customer-portal-main { padding-left: 14px; padding-right: 14px; }
  .customer-map-entry { align-items: stretch; flex-direction: column; gap: 12px; padding: 14px; }
  .customer-map-open-button { width: 100%; }
  .customer-delivery-card summary { padding-left: 16px; padding-right: 16px; }
  .customer-delivery-content { padding-left: 16px; padding-right: 16px; }
  .customer-property-card { padding: 20px 0; }
  .customer-property-head h2 { font-size: 18px; }
  .customer-file-list { gap: 5px; justify-content: end; }
  .delivery-share-options {
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 14px;
  }
  .delivery-share-options .check {
    min-width: 0;
    white-space: nowrap;
    font-size: 12px;
  }
}
.delivery-status-inline-controls .icon-button span {
  color: #111827;
  font-size: 15px;
  line-height: 1;
}
.request-detail-panel .request-readonly-content {
  height: 220px;
}
.pb-request-detail-panel .request-readonly-content {
  height: 280px;
}
.request-detail-panel .property-detail-memo {
  height: 108px;
}
.property-detail-edit-form {
  padding-top: 4px;
}
.property-detail-edit-form[hidden],
[data-property-detail-view][hidden],
[data-property-edit-toggle][hidden] {
  display: none !important;
}
.property-detail-edit-form .form-actions {
  gap: 8px;
}
.request-detail-modal.is-property-editing .property-detail-view-action {
  display: none;
}
.property-file-section {
  display: grid;
  gap: 8px;
}
.property-file-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.property-file-section-head button {
  min-height: 32px;
  font-size: 13px;
}
.property-file-section-actions {
  display: flex;
  align-items: center;
  gap: 7px;
}
.property-file-section-actions .property-basic-info-button {
  width: 32px;
  min-width: 32px;
  height: 32px;
  min-height: 32px;
  padding: 7px;
  color: #176047;
  border-color: #91b9a7;
  background: #f2faf6;
}
.property-file-section-actions .property-basic-info-button:hover,
.property-file-section-actions .property-basic-info-button.is-saved {
  color: #fff;
  border-color: #176047;
  background: #176047;
}
.property-file-section-actions .property-basic-info-button svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.property-file-add-panel {
  width: min(620px, 100%);
}
.property-file-section h3,
.property-file-group h4 {
  margin: 0;
}
.property-file-note {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 7px 10px 7px 90px;
  color: #64748b;
  background: #f8fafc;
  font-size: 12px;
}
.property-file-note span {
  font-weight: 700;
  white-space: nowrap;
}
.property-file-note p {
  margin: 0;
  color: #475569;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.property-file-groups {
  display: grid;
  gap: 8px;
}
.property-file-list {
  display: grid;
  gap: 0;
  border-top: 1px solid #e2e8f0;
}
.property-file-list > form {
  display: none;
}
.property-file-group {
  display: grid;
  gap: 6px;
}
.property-file-line {
  min-height: 38px;
  display: grid;
  grid-template-columns: 72px 112px 142px minmax(220px, 1fr) 82px 78px 34px;
  gap: 8px;
  align-items: center;
  padding: 7px 10px;
  border: 0;
  background: transparent;
}
.property-file-list-header {
  min-height: 30px;
  padding-top: 4px;
  padding-bottom: 4px;
  border-bottom: 2px solid #e2e8f0;
}
.property-file-list-header span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}
.property-file-line strong,
.property-file-line span,
.property-file-line a {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.property-file-line span {
  color: var(--muted);
  font-size: 13px;
}
/* pb 전달매물 상세: 관리자 삭제 칼럼이 없어 6칼럼으로 두고, 자료(개략) 아이콘·헤더를 칸 오른쪽 끝으로
   정렬해 왼쪽에 붙어 보이던 느낌을 없앤다. */
.pb-property-detail-panel .property-file-line {
  grid-template-columns: 72px 112px 142px minmax(200px, 1fr) 82px 96px;
}
.pb-property-detail-panel .property-file-line > *:nth-child(6) {
  justify-self: end;
}
.delivery-file-links .property-ai-info-button,
.property-card-toolbar .property-ai-info-button {
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  max-width: 28px;
  max-height: 28px;
  flex: 0 0 28px;
  display: inline-grid;
  place-items: center;
  padding: 0;
  border: 1px solid #dbe5f4;
  border-radius: 7px;
  background: #f8fafc;
  color: #64748b;
  font-size: 14px;
  line-height: 1;
  font-weight: 900;
  font-family: Georgia, serif;
  cursor: pointer;
}
.delivery-file-links .property-ai-info-button:hover,
.property-card-toolbar .property-ai-info-button:hover {
  border-color: #93c5fd;
  background: #eff6ff;
  color: #1d4ed8;
}
.property-ai-info-button.ai-state-unreviewed {
  border-color: #f6c76e;
  background: #fff8e6;
  color: #a16207;
}
.property-ai-info-button.ai-state-reviewed {
  border-color: #93c5fd;
  background: #eff6ff;
  color: #1d4ed8;
}
.property-ai-info-button.ai-state-applied {
  border-color: #86d1b1;
  background: #ecfdf5;
  color: #047857;
}
.property-ai-info-button.ai-state-error {
  border-color: #fca5a5;
  background: #fef2f2;
  color: #b91c1c;
}
.property-file-block {
  display: grid;
  gap: 0;
  border-bottom: 1px solid #edf0f5;
}
.property-file-delivery-toggle {
  min-height: 32px;
  border: 1px solid #dbe5f4;
  border-radius: 6px;
  background: #f8fafc;
  color: var(--text);
  font-weight: 800;
  cursor: pointer;
}
.property-file-delivery-toggle:hover {
  border-color: #c7d2fe;
  background: #fbfdff;
}
.property-file-deliveries {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 6px 10px 8px 90px;
  border-top: 1px dashed #e2e8f0;
}
.property-file-deliveries[hidden] {
  display: none;
}
.property-file-delivery-line {
  min-height: 36px;
  display: grid;
  grid-template-columns: minmax(190px, 1.35fr) minmax(180px, 1.3fr) 104px 96px 44px;
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid #edf0f5;
  border-radius: 6px;
  background: #fff;
  color: inherit;
  text-decoration: none;
}
.property-file-delivery-line:hover {
  border-color: #c7d2fe;
  background: #fbfdff;
}
.property-file-delivery-line strong,
.property-file-delivery-line span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.property-delivery-history-panel {
  width: min(680px, 100%);
  max-height: min(760px, calc(100dvh - 48px));
}
.property-delivery-history-panel .picker-head > div {
  min-width: 0;
}
.property-delivery-history-panel .picker-head h2,
.property-delivery-history-panel .picker-head p {
  margin: 0;
}
.property-delivery-history-panel .picker-head p {
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}
.property-delivery-customer-groups {
  display: grid;
  gap: 12px;
}
.property-delivery-customer-group {
  overflow: hidden;
  border: 1px solid #e2e8f0;
  border-radius: 9px;
  background: #fff;
}
.property-delivery-customer-group h3 {
  margin: 0;
  padding: 10px 12px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid #e2e8f0;
  background: #f8fafc;
  font-size: 14px;
}
.property-delivery-customer-group h3 span {
  color: #047857;
  font-size: 12px;
}
.property-delivery-history-list {
  display: grid;
}
.property-delivery-history-line {
  min-height: 42px;
  padding: 8px 12px;
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) 92px 16px;
  gap: 10px;
  align-items: center;
  border-bottom: 1px solid #edf0f5;
  color: inherit;
  text-decoration: none;
}
.property-delivery-history-line:last-child {
  border-bottom: 0;
}
.property-delivery-history-line:hover {
  background: #f6fbf8;
}
.property-delivery-history-line strong,
.property-delivery-history-line span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.property-delivery-history-line span {
  color: var(--muted);
  font-size: 13px;
}
.property-delivery-history-line b {
  color: #047857;
  font-size: 20px;
  text-align: right;
}
@media (max-width: 640px) {
  /* 휴대폰 매물 리스트에서는 'N명·N회' 전달 요약 배지를 숨긴다(관리자·자문위원 공통). */
  .property-delivery-summary-badge {
    display: none !important;
  }
  .property-delivery-history-modal {
    padding: 10px;
  }
  .property-delivery-history-line {
    grid-template-columns: 78px minmax(0, 1fr) 16px;
    gap: 7px;
  }
  .property-delivery-history-line > span:last-of-type {
    display: none;
  }
}
.property-file-delivery-line span {
  color: var(--muted);
  font-size: 13px;
}
.property-file-delivery-confirm {
  justify-self: center;
  overflow: visible !important;
  text-align: center;
}
.note-card-list,
.task-card-list {
  display: grid;
  gap: 0;
  overflow-x: auto;
}
.task-card-list {
  overflow-x: auto;
}
.task-card-list .task-line-card {
  min-width: 1120px;
  padding: 6px 118px 6px 14px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.task-card-list .task-line-card:hover {
  border-color: transparent;
  background: #f6f9ff;
}
.task-card-list .task-line-card .task-line-head span {
  display: none;
}
.task-card-list .task-list-header {
  min-width: 1120px;
  padding: 0 118px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.task-card-list .task-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.task-card-list .task-card-toolbar {
  top: 50%;
  transform: translateY(-50%);
}
.note-line-card,
.task-line-card {
  position: relative;
  padding: 12px 118px 12px 14px;
  margin-top: 0;
  cursor: pointer;
}
.note-line-card {
  min-width: 1120px;
}
.task-line-card {
  min-width: 0;
}
.note-line-card:hover,
.task-line-card:hover {
  border-color: #c7d2fe;
  background: #fbfdff;
}
.note-line-head,
.task-line-head {
  display: grid;
  gap: 10px;
  align-items: end;
}
.note-line-head {
  grid-template-columns: 120px 140px minmax(260px, 1.55fr) minmax(220px, 1.35fr) 120px;
}
.admin-note-list-panel {
  max-width: 784px;
}
.note-groups .admin-note-card-list .note-line-card {
  min-width: 730px;
  padding: 6px 14px;
}
.note-groups .admin-note-card-list .note-list-header {
  min-width: 730px;
  padding: 0 14px 6px;
}
.note-groups .admin-note-card-list .note-line-head {
  grid-template-columns: 96px 120px 180px 288px;
  gap: 6px;
}
.note-groups .admin-note-card-list .note-text-cell strong {
  color: #52677a;
}
.note-groups .note-card-list {
  gap: 0;
  overflow-x: auto;
}
.note-groups .note-line-card {
  padding: 6px 118px 6px 14px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
}
.note-groups .note-line-card:hover {
  border-color: transparent;
  background: #f6f9ff;
}
.note-groups .note-line-card .note-line-head span {
  display: none;
}
.note-groups .note-list-header {
  min-width: 1120px;
  padding: 0 118px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.note-groups .note-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.note-groups .note-card-toolbar {
  top: 50%;
  transform: translateY(-50%);
}
.compact-note-list {
  overflow-x: auto;
}
.compact-note-list .note-line-card {
  min-width: 680px;
  padding-right: 140px;
}
.compact-note-list .note-list-header {
  min-width: 680px;
}
.compact-note-list .note-line-head {
  grid-template-columns: 96px 96px minmax(160px, 1fr) 128px;
}
.compact-note-list .note-line-card .note-line-head span {
  display: none;
}
.compact-note-list .note-line-card {
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  margin-top: 0;
  padding-top: 6px;
  padding-bottom: 6px;
  background: transparent;
}
.compact-note-list .note-line-card:hover {
  background: #f6f9ff;
}
.compact-note-list .note-line-card .note-line-head strong {
  min-height: 30px;
  font-weight: 400;
}
.compact-note-list .note-list-header {
  padding: 0 140px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.compact-note-list .note-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.compact-note-list .note-card-toolbar {
  top: 50%;
  transform: translateY(-50%);
}
.compact-note-list.pb-feedback-note-list .note-line-head {
  grid-template-columns: 96px minmax(30em, 1fr) 128px;
}
.compact-note-list .task-line-card {
  min-width: 680px;
  padding: 6px 140px 6px 14px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  margin-top: 0;
  background: transparent;
}
.compact-note-list .task-line-card:hover {
  background: #f6f9ff;
}
.compact-note-list .task-line-head {
  grid-template-columns: minmax(160px, 1fr) 128px 96px 96px;
}
.compact-note-list .task-line-card .task-line-head span {
  display: none;
}
.compact-note-list .task-line-card .task-line-head strong {
  min-height: 30px;
  font-weight: 400;
}
.compact-note-list .task-list-header {
  min-width: 680px;
  padding: 0 140px 6px 14px;
  border-bottom: 2px solid #e2e8f0;
}
.compact-note-list .task-list-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.compact-note-list .task-card-toolbar {
  top: 50%;
  transform: translateY(-50%);
}
.task-line-head {
  grid-template-columns: minmax(240px, 1.7fr) minmax(128px, .9fr) minmax(120px, .85fr) minmax(200px, 1.35fr) 82px 82px;
}
.admin-task-list-panel {
  max-width: 784px;
}
.task-groups .admin-task-card-list .task-line-card {
  min-width: 730px;
  padding: 6px 14px;
}
.task-groups .admin-task-card-list .task-list-header {
  min-width: 730px;
  padding: 0 14px 6px;
}
.task-groups .admin-task-card-list .task-line-head {
  grid-template-columns: 240px 130px 130px 184px;
  gap: 6px;
}

/* Keep primary list rows visually even; emphasis belongs to headers and details. */
.customer-line-card > .customer-line-head strong,
.request-line-card > .request-line-head strong,
.property-line-card > .property-line-head strong,
.delivery-batch-card > .delivery-batch-line strong,
.note-line-card > .note-line-head strong,
.task-line-card > .task-line-head strong {
  font-weight: 400;
}

.note-card-toolbar,
.task-card-toolbar {
  position: absolute;
  top: 32px;
  right: 14px;
  display: flex;
  gap: 4px;
  z-index: 1;
}
.note-text-cell strong,
.task-title-cell strong {
  font-weight: 900;
}
.note-detail-grid,
.task-detail-grid {
  display: grid;
  gap: 10px;
  align-items: end;
}
.note-detail-grid {
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  position: relative;
}
.note-detail-grid::after {
  content: "";
  position: absolute;
  top: 19px;
  left: 0;
  right: 0;
  border-top: 1px solid #e5e7eb;
  pointer-events: none;
}
.task-detail-grid {
  grid-template-columns: minmax(180px, 1.4fr) minmax(110px, .8fr) minmax(100px, .8fr) minmax(130px, 1fr);
}
.task-detail-grid .request-line-cell {
  min-width: 0;
}
.task-detail-grid .request-line-cell strong,
.task-line-head .request-line-cell strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-detail-grid .request-line-cell strong {
  color: #475569;
  font-weight: 400;
}
.request-detail-actions {
  display: flex;
  justify-content: flex-end;
}
.request-delivery-disabled {
  opacity: .42;
  border-color: #cbd5e1 !important;
  background: #94a3b8 !important;
  box-shadow: none !important;
  cursor: not-allowed;
  pointer-events: none;
  user-select: none;
}
.linked-delivery-section {
  display: grid;
  gap: 8px;
}
.linked-delivery-section h3 {
  margin: 0;
  font-size: 15px;
}
.admin-request-delivery-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.admin-request-delivery-head > div:first-child { min-width: 0; }
.admin-request-delivery-head p { margin: 4px 0 0; color: #64748b; font-size: 12px; line-height: 1.4; }
.admin-request-delivery-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex: none; }
.admin-request-delivery-actions .button { min-height: 38px; display: inline-flex; align-items: center; }
.admin-request-map-label-mobile { display: none; }
@media (max-width: 700px) {
  .admin-request-delivery-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px 8px;
  }
  .admin-request-delivery-head > div:first-child,
  .admin-request-delivery-actions { display: contents; }
  .admin-request-delivery-head h3 { grid-column: 1 / -1; }
  .admin-request-delivery-head p {
    grid-column: 1;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .admin-request-delivery-actions .pb-request-map-open-button {
    grid-column: 2;
    min-height: 32px;
    gap: 5px;
    width: auto;
    padding: 0 9px;
    justify-content: center;
    font-size: 12px;
  }
  .admin-request-delivery-actions .pb-request-map-open-button svg { width: 15px; height: 15px; }
  .admin-request-map-label-desktop { display: none; }
  .admin-request-map-label-mobile { display: inline; }
  .admin-request-delivery-actions .button {
    grid-column: 1 / -1;
    width: 100%;
    margin-top: 3px;
    justify-content: center;
  }
}
.linked-delivery-list {
  display: grid;
  gap: 0;
  max-height: 180px;
  overflow-y: auto;
  overflow-x: auto;
}
.linked-delivery-line {
  min-width: 760px;
  min-height: 38px;
  display: grid;
  grid-template-columns: 104px 64px 108px 108px minmax(220px, 1fr) 44px;
  gap: 8px;
  align-items: center;
  padding: 6px 10px;
  border: 0;
  border-bottom: 1px solid #edf0f5;
  border-radius: 0;
  background: transparent;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
.linked-delivery-line.customer-request-line {
  grid-template-columns: minmax(260px, 1.8fr) 120px minmax(180px, 1.2fr) 96px;
}
.linked-delivery-line.pb-customer-request-line {
  min-width: 840px;
  grid-template-columns: minmax(220px, 1.35fr) 104px 116px 82px minmax(250px, 1.6fr);
}
a.linked-delivery-line:hover {
  background: #f6f9ff;
}
.linked-delivery-header {
  border-bottom: 2px solid #e2e8f0;
  cursor: default;
}
.linked-delivery-header span {
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
}
.linked-delivery-header:hover {
  background: transparent;
}
a.linked-delivery-line:hover strong {
  color: var(--accent, #2563eb);
}
.linked-delivery-line strong,
.linked-delivery-line span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.linked-delivery-line span {
  color: var(--muted);
  font-size: 13px;
}
.request-card-form textarea {
  min-height: 68px;
}
.request-content-box {
  height: 176px;
  min-height: 176px;
  max-height: 176px;
  overflow-y: auto;
}
.delivery-note-form .request-content-box {
  height: 117px;
  min-height: 117px;
  max-height: 117px;
}
.request-card-toolbar {
  position: absolute;
  top: 32px;
  right: 14px;
  display: flex;
  gap: 4px;
  z-index: 1;
}
.request-line-card .request-card-toolbar {
  top: 50%;
  transform: translateY(-50%);
}
.request-edit-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, .38);
}
.request-edit-modal[hidden] {
  display: none;
}

/* 상세 화면은 내용 높이와 관계없이 같은 상단선에서 시작한다.
   짧은 상세는 공통 최소 높이를 유지하고, 긴 상세만 아래로 확장·스크롤한다. */
@media (min-width: 561px) {
  .request-edit-modal:is(.request-detail-modal, .customer-detail-modal) {
    --detail-modal-top: clamp(72px, 14vh, 160px);
    place-items: start center;
    padding: var(--detail-modal-top) 24px 24px;
    overflow-y: auto;
  }

  .request-edit-modal:is(.request-detail-modal, .customer-detail-modal) > .request-edit-panel {
    width: min(980px, 100%);
    min-height: min(500px, calc(100dvh - var(--detail-modal-top) - 24px));
    max-height: min(720px, calc(100dvh - var(--detail-modal-top) - 24px));
    align-content: start;
  }
}

.request-edit-panel {
  width: min(980px, 100%);
  max-height: min(720px, calc(100vh - 48px));
  overflow-y: auto;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 14px;
  display: grid;
  gap: 12px;
  box-shadow: 0 24px 80px rgba(15, 23, 42, .24);
}
.property-ai-panel {
  width: min(1160px, 100%);
  max-height: min(900px, calc(100vh - 32px));
  padding: 0;
  gap: 0;
  overflow-y: auto;
  border: 0;
  border-radius: 14px;
  background: #f3f6f4;
  box-shadow: 0 30px 90px rgba(15, 23, 42, .3);
}
.shared-property-overview-modal {
  z-index: 1250;
  padding: 32px;
  background: rgba(17, 24, 39, .52);
  backdrop-filter: blur(3px);
}
.shared-property-overview-panel {
  width: min(760px, 100%);
  max-height: min(1100px, 86vh);
  padding: 0 40px 0;
  gap: 0;
  border: 0;
  border-radius: 3px;
  background: #fdfcf9;
  box-shadow: 0 34px 90px rgba(15, 23, 42, .34);
}
@media (min-width: 801px) {
  .shared-property-overview-modal {
    padding: 12px;
  }
  .shared-property-overview-panel {
    max-height: calc(100dvh - 24px);
  }
}
/* 하단 고정 다운로드 바: 스크롤해도 항상 보인다. 좌우/아래 음수 여백으로 패널 가장자리까지 채운다. */
.shared-property-overview-download-bar {
  position: sticky;
  bottom: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 -40px 0;
  padding: 14px 40px;
  border-top: 1px solid #d7dcd8;
  background: #fdfcf9;
  /* 콘텐츠 위에 떠 있는 층임을 명확히 해, 스크롤 시 겹침이 실수가 아니라 의도로 읽히게 한다. */
  box-shadow: 0 -10px 20px -8px rgba(15, 23, 42, .14);
}
.shared-property-overview-download-bar[hidden] { display: none; }
.shared-property-overview-download-label {
  color: #8a9692;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
  margin-right: 2px;
}
.shared-property-overview-download {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  padding: 0 18px;
  border: 1px solid #bcd5c9;
  border-radius: 10px;
  color: #176047;
  background: #fff;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.shared-property-overview-download:hover { background: #eef7f2; border-color: #7eae97; }
.shared-property-overview-download.is-im { background: #176047; border-color: #176047; color: #fff; }
.shared-property-overview-download.is-im:hover { background: #0f4a37; border-color: #0f4a37; }
/* 매물 공유 페이지: '받은 매물 전체 보기' 진입(자문위원 발송 리스트로) */
.shared-property-overview-received {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 40px;
  padding: 0 16px;
  margin-left: auto;
  border: 1px solid #bcd5c9;
  border-radius: 10px;
  background: #fff;
  color: #176047;
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}
.shared-property-overview-received:hover { background: #176047; border-color: #176047; color: #fff; }
.shared-property-overview-received .ov-chevron { font-size: 16px; font-weight: 800; transition: transform .16s ease; }
.shared-property-overview-received:hover .ov-chevron { transform: translateX(3px); }
.shared-property-overview-download svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.shared-property-overview-share {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  margin-left: auto;
  padding: 0 15px;
  border: 1px solid #d4c8ab;
  border-radius: 10px;
  color: #5b4c28;
  background: #faf7ef;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}
.shared-property-overview-share:hover { background: #f2ead7; border-color: #bca97e; }
.shared-property-overview-share svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.property-share-dialog {
  position: fixed;
  inset: 0;
  z-index: 8;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(18, 31, 28, .44);
  backdrop-filter: blur(2px);
}
.property-share-dialog[hidden] { display: none; }
.property-share-dialog-card {
  width: min(430px, 100%);
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  padding: 26px;
  border: 1px solid #d8ddd8;
  border-radius: 14px;
  background: #fdfcf9;
  box-shadow: 0 24px 70px rgba(15, 23, 42, .28);
}
.property-share-dialog-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.property-share-dialog-head span { color: #788781; font-size: 10px; font-weight: 800; letter-spacing: .13em; }
.property-share-dialog-head h3 { margin: 5px 0 0; color: #173c32; font-size: 23px; }
.property-share-dialog-card > p { margin: 18px 0 12px; color: #5f6b67; font-size: 14px; }
.property-share-file-options { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.property-share-file-options label {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 11px;
  border: 1px solid #d8ddd8;
  border-radius: 9px;
  background: #fff;
  color: #263c35;
  font-size: 12px;
  font-weight: 700;
}
.property-share-file-options input[type="radio"] {
  appearance: auto;
  width: 16px;
  min-width: 16px;
  height: 16px;
  min-height: 16px;
  margin: 0;
  padding: 0;
  flex: 0 0 16px;
  accent-color: #176047;
}
.property-share-file-options label.is-disabled { opacity: .45; }
.property-share-im-fields {
  margin-top: 14px;
  padding: 13px;
  border: 1px solid #dce5e1;
  border-radius: 10px;
  background: #f7faf8;
}
.property-share-im-fields[hidden] { display: none; }
.property-share-im-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.property-share-im-heading strong { color: #173c32; font-size: 14px; }
.property-share-im-heading span { color: #687772; font-size: 12px; }
.property-share-im-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.property-share-im-grid label { display: grid; gap: 5px; color: #60706a; font-size: 11px; font-weight: 700; }
.property-share-im-grid label.full { grid-column: 1 / -1; }
.property-share-im-grid input,
.property-share-im-grid textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #cad7d2;
  border-radius: 7px;
  background: #fff;
  color: #263c35;
  font: inherit;
  font-size: 12px;
  font-weight: 500;
  padding: 8px 9px;
}
.property-share-im-grid textarea { resize: vertical; line-height: 1.45; }
.property-share-im-fields > p { margin: 9px 0 0; color: #70807a; font-size: 11px; line-height: 1.45; }
.property-share-copy-button { width: 100%; margin-top: 16px; min-height: 46px; }
.property-share-copy-button[hidden] { display: none; }
.property-share-status { margin-top: 12px; padding: 10px 12px; border-radius: 8px; font-size: 12px; line-height: 1.5; }
.property-share-status.is-working { color: #4e625b; background: #edf1ef; }
.property-share-status.is-success { color: #176047; background: #e8f4ee; }
.property-share-status.is-error { color: #9a352f; background: #faecea; }
.property-share-result { margin-top: 12px; padding: 12px; border: 1px solid #c9ddd4; border-radius: 10px; background: #f4faf7; }
.property-share-result[hidden] { display: none; }
.property-share-result > label { display: grid; gap: 6px; color: #36564c; font-size: 11px; font-weight: 700; }
.property-share-result input {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #bfcfc9;
  border-radius: 7px;
  background: #fff;
  color: #263c35;
  font-size: 13px;
  padding: 10px;
}
.property-share-result-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; }
.property-share-result-actions .button { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; text-decoration: none; }
.property-share-result > p { margin: 9px 0 0; color: #60706a; font-size: 11px; line-height: 1.45; }
.property-share-result-actions .button.is-copied {
  animation: property-share-copied-pop 0.42s ease;
  background: #16a34a;
  border-color: #16a34a;
  color: #fff;
}
@keyframes property-share-copied-pop {
  0% { transform: scale(1); }
  35% { transform: scale(1.06); }
  100% { transform: scale(1); }
}
@media (max-width: 560px) {
  .property-share-im-grid { grid-template-columns: 1fr; }
  .property-share-im-grid label.full { grid-column: auto; }
}
.public-property-share-page { margin: 0; min-height: 100dvh; background: #27302f; }
.public-property-share-modal {
  display: flex;
  align-items: stretch;
  justify-content: center;
}
.public-property-share-modal .shared-property-overview-panel { position: relative; }
.public-property-share-back {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  flex: 0 0 auto;
  gap: 5px;
  margin: 2px 0 0;
  padding: 7px 14px;
  color: #356b5a;
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
  background: #eef5f1;
  border: 1px solid #cfe2d9;
  border-radius: 999px;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.public-property-share-back span { font-size: 20px; font-weight: 500; line-height: .7; }
.public-property-share-back:hover { color: #174d3d; background: #e2efe8; border-color: #b6d4c7; }
.public-property-share-back:focus-visible { outline: 2px solid #78aa99; outline-offset: 4px; }
.public-property-share-loader {
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 14px;
  width: min(330px, calc(100vw - 40px));
  min-height: 92px;
  padding: 18px 22px;
  border: 1px solid rgba(205, 216, 211, .9);
  border-radius: 14px;
  color: #183b32;
  background: #fdfcf9;
  text-align: left;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .3);
  transform: translate(-50%, -50%);
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.public-property-share-loader:hover {
  border-color: #8dad9f;
  background: #fff;
  box-shadow: 0 28px 80px rgba(0, 0, 0, .36);
  transform: translate(-50%, calc(-50% - 2px));
}
.public-property-share-loader:focus-visible {
  outline: 3px solid rgba(101, 156, 132, .42);
  outline-offset: 4px;
}
.public-property-share-loader-icon {
  display: grid;
  place-items: center;
  flex: 0 0 46px;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  color: #fff;
  background: #176047;
}
.public-property-share-loader-icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.public-property-share-loader-copy {
  display: grid;
  min-width: 0;
  gap: 4px;
}
.public-property-share-loader-copy strong {
  font-size: 17px;
  font-weight: 900;
  letter-spacing: -.02em;
}
.public-property-share-loader-copy small {
  color: #71817b;
  font-size: 11px;
  line-height: 1.45;
}
@media (min-width: 801px) {
  .public-property-share-modal {
    padding: 28px 32px;
    overflow: hidden;
  }
  .public-property-share-modal .shared-property-overview-panel {
    flex: 0 1 760px;
    width: min(760px, 100%);
    height: calc(100dvh - 56px);
    max-height: calc(100dvh - 56px);
    margin: 0 auto;
    overflow-y: auto;
  }
  .customer-portal-body .shared-property-overview-modal {
    padding: 28px 32px;
    overflow: hidden;
  }
  .customer-portal-body .shared-property-overview-modal .shared-property-overview-panel {
    width: min(760px, 100%);
    height: calc(100dvh - 56px);
    max-height: calc(100dvh - 56px);
    margin: 0 auto;
    overflow-y: auto;
  }
}
.public-property-share-invalid {
  width: min(560px, calc(100% - 40px));
  margin: 15vh auto 0;
  padding: 42px;
  border-radius: 4px;
  background: #fdfcf9;
  color: #183b32;
  box-shadow: 0 30px 90px rgba(0, 0, 0, .25);
}
.public-property-share-invalid > span { font-size: 10px; font-weight: 800; letter-spacing: .18em; }
.public-property-share-invalid h1 { margin: 14px 0 12px; font-size: 28px; }
.public-property-share-invalid p { margin: 0; color: #64716d; line-height: 1.7; }
.shared-property-overview-panel .picker-head > div {
  min-width: 0;
}
.shared-property-overview-panel .picker-head {
  align-items: flex-end;
  padding: 30px 0 23px;
  border-bottom: 3px solid #183b32;
}
.shared-property-overview-panel h2 {
  margin: 0;
  color: #17221f;
  font-family: "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: clamp(26px, 3vw, 36px);
  font-weight: 800;
  letter-spacing: -.045em;
  line-height: 1.15;
}
.shared-property-overview-panel h2::before {
  content: "PROPERTY BRIEF";
  display: block;
  margin-bottom: 8px;
  color: #567067;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .18em;
}
.shared-property-overview-panel .picker-head .icon-button {
  position: relative;
  z-index: 2;
  width: 32px;
  min-width: 32px;
  height: 32px;
  min-height: 32px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #edf0ed;
  color: #263b35;
  font-size: 18px;
  cursor: pointer;
}
/* 보이는 32px 원은 유지하고 실제 호버·클릭 영역만 8px 넓힌다.
   화면 배율 경계에서 손가락/기본 화살표 커서가 번갈아 깜빡이지 않게 한다. */
.shared-property-overview-panel .picker-head .icon-button::after {
  content: "";
  position: absolute;
  inset: -8px;
  border-radius: 50%;
  cursor: pointer;
}
.shared-property-overview-meta {
  margin: 9px 0 0;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #53645e;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -.015em;
  line-height: 1.45;
}
.shared-property-overview-meta > span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.shared-property-overview-action {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  width: auto;
  height: 23px;
  min-height: 0;
  padding: 0 7px;
  border: 1px solid #cbdacf;
  border-radius: 6px;
  background: #f1f6f2;
  color: #2f5a48;
  cursor: pointer;
}
.shared-property-overview-action:hover {
  border-color: #9dbaa9;
  background: #e6efe9;
}
.shared-property-overview-action svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* 위치·실거래: '눌러도 되는' 걸 분명히 — 둥근 알약 칩 + 초록 톤(이 페이지 지도 버튼과 동일 색). */
.shared-property-overview-badge,
.shared-property-overview-badge.deal-map-link {
  gap: 5px;
  height: 27px;
  min-height: 0;
  min-width: 0;
  width: max-content;
  padding: 0 11px 0 12px;
  white-space: nowrap;
  flex-wrap: nowrap;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1;
  border: 1px solid #bcd2c4;
  border-radius: 999px;
  /* 은은한 초록 그라데이션이 좌우로 흐르는 배경(가만히 있어도 시선 유도) */
  background: linear-gradient(100deg, #eef4f0 0%, #d2e8dc 25%, #a9d4bd 50%, #d2e8dc 75%, #eef4f0 100%);
  background-size: 220% 100%;
  color: #2f5a48;
  transition: background .16s ease, color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .12s ease;
  /* 그라데이션 흐름 + 아주 은은한 그림자 숨쉬기 */
  animation: ovBadgeSheen 4s ease-in-out infinite, ovBadgeGlow 3s ease-in-out infinite;
}
@keyframes ovBadgeSheen {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
/* hover/포커스/누름: 진한 초록으로 채워 확실한 클릭 대상임을 알림 */
.shared-property-overview-badge:hover,
.shared-property-overview-badge.deal-map-link:hover,
.shared-property-overview-badge:focus-visible,
.shared-property-overview-badge.deal-map-link:focus-visible {
  border-color: #2f5a48;
  background: #2f5a48;
  color: #fff;
  box-shadow: 0 3px 10px rgba(47, 90, 72, .28);
  transform: translateY(-1px);
  animation: none;
}
.shared-property-overview-badge:active,
.shared-property-overview-badge.deal-map-link:active {
  transform: translateY(0);
  box-shadow: 0 1px 4px rgba(47, 90, 72, .3);
}
.shared-property-overview-badge svg,
.shared-property-overview-badge.deal-map-link svg { width: 14px; height: 14px; }
.shared-property-overview-badge b { font-size: 12.5px; font-weight: 800; }
.shared-property-overview-badge .ov-chevron {
  margin-left: -3px;
  opacity: .9;
  font-size: 17px;
  font-weight: 800;
  line-height: 1;
  transition: transform .16s ease, opacity .16s ease;
  /* 꺽쇠가 주기적으로 확실히 밀렸다 돌아옴 → 시선 유도(버튼 크기는 그대로) */
  animation: ovChevronNudge 2.4s ease-in-out infinite;
}
.shared-property-overview-badge:hover .ov-chevron,
.shared-property-overview-badge.deal-map-link:hover .ov-chevron,
.shared-property-overview-badge:focus-visible .ov-chevron,
.shared-property-overview-badge.deal-map-link:focus-visible .ov-chevron {
  opacity: 1;
  transform: translateX(3px);
  animation: none;
}
@keyframes ovChevronNudge {
  0%, 55%, 100% { transform: translateX(0); opacity: .9; }
  67% { transform: translateX(6px); opacity: 1; }
  78% { transform: translateX(2px); opacity: 1; }
  89% { transform: translateX(6px); opacity: 1; }
}
@keyframes ovBadgeGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(47, 90, 72, 0); }
  50% { box-shadow: 0 1px 9px 0 rgba(47, 90, 72, .16); }
}
@media (prefers-reduced-motion: reduce) {
  .shared-property-overview-badge,
  .shared-property-overview-badge.deal-map-link,
  .shared-property-overview-badge .ov-chevron { animation: none; }
}
/* 모바일에서만 두 버튼 폭을 개별 조정(데스크탑은 원래 폭 유지) */
@media (max-width: 800px) {
  /* 위치: 꺽쇠 6px 움직임이 오른쪽 끝에 닿지 않게 여백 확보 */
  .shared-property-overview-badge:not(.deal-map-link) { padding-right: 11px; }
  /* 실거래: 꺽쇠를 건수에 바짝 붙이고(움직임은 기본 6px 유지), 여백은 그 움직임만 겨우 담게 */
  .shared-property-overview-badge.deal-map-link { padding-right: 11px; }
  /* 실거래 배지는 h3 제목 안에 있어 위쪽 '.shared-property-overview-section h3 span
     { margin:0 8px 0 0 }' 규칙이 내부 span(실거래 텍스트·꺽쇠)까지 8px 마진을 먹여
     건수↔꺽쇠가 벌어지고 오른쪽 빈 공간이 생긴다. 배지 내부 span 마진을 리셋하고
     꺽쇠만 다시 붙인다(더 높은 특이도로 덮음). */
  .overview-section-income h3 > .shared-property-overview-badge.deal-map-link > span {
    margin: 0;
  }
  .overview-section-income h3 > .shared-property-overview-badge.deal-map-link > .ov-chevron {
    margin-left: -3px;
  }
}
/* 위치: 주소 바로 뒤 inline(자연스러운 동선). */
/* 실거래: '가격·수익' 제목 아래, 붙여서(근거 링크 느낌). */
.shared-property-overview-section h3 > .shared-property-overview-badge.deal-map-link {
  margin-top: 10px;
}
/* 가격·수익 2행의 빈 세 번째 칸: 실거래를 정보 배지가 아니라 명확한 탐색 CTA로 보여준다. */
.overview-section-income .overview-deal-cta {
  position: relative;
  top: -7px;
  grid-column: 3;
  grid-row: 2;
  align-self: center;
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  align-items: center;
  justify-content: stretch;
  gap: 7px;
  width: auto;
  min-width: 0;
  height: 55px;
  min-height: 55px;
  padding: 3px 9px;
  overflow: hidden;
  border: 1px solid #a9ccb9;
  border-radius: 10px;
  background: linear-gradient(135deg, #eff8f3 0%, #dcefe5 100%);
  color: #18573f;
  box-shadow: 0 5px 14px rgba(31, 92, 67, .10);
  text-decoration: none;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
}
.overview-section-income .overview-deal-cta::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(110deg, transparent 15%, rgba(255, 255, 255, .72) 45%, transparent 72%);
  transform: translateX(-115%);
  animation: overviewDealCtaSheen 4.6s ease-in-out infinite;
}
.overview-section-income .overview-deal-cta:hover,
.overview-section-income .overview-deal-cta:focus-visible {
  border-color: #4e9274;
  background: linear-gradient(135deg, #e6f4ec 0%, #c9e7d6 100%);
  color: #104b35;
  box-shadow: 0 9px 22px rgba(31, 92, 67, .18);
  transform: translateY(-2px);
}
.overview-section-income .overview-deal-cta:focus-visible {
  outline: 2px solid rgba(38, 122, 85, .34);
  outline-offset: 2px;
}
.overview-section-income .overview-deal-cta-icon {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  margin: 0;
  border-radius: 50%;
  background: #247354;
  color: #fff;
}
.overview-section-income .overview-deal-cta-icon svg {
  width: 16px;
  height: 16px;
  stroke-width: 1.9;
}
.overview-section-income .overview-deal-cta-copy {
  position: relative;
  top: 2px;
  z-index: 1;
  display: grid;
  min-width: 0;
  gap: 2px;
  margin: 0;
  color: inherit;
  letter-spacing: -.01em;
}
.overview-section-income .overview-deal-cta-copy small {
  color: #557268;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .02em;
}
.overview-section-income .overview-deal-cta-copy strong {
  color: inherit;
  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
  white-space: nowrap;
}
.overview-section-income .overview-deal-cta-count {
  margin: 0;
  color: #0b6542;
  font-size: 14px;
  font-weight: 800;
  letter-spacing: -.03em;
}
.overview-section-income .overview-deal-cta-arrow {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #438268;
  font-size: 22px;
  font-weight: 500;
  line-height: 1;
  transition: transform .16s ease;
}
.overview-section-income .overview-deal-cta:hover .overview-deal-cta-arrow,
.overview-section-income .overview-deal-cta:focus-visible .overview-deal-cta-arrow {
  transform: translateX(3px);
}
@keyframes overviewDealCtaSheen {
  0%, 58%, 100% { transform: translateX(-115%); }
  76% { transform: translateX(115%); }
}
@media (prefers-reduced-motion: reduce) {
  .overview-section-income .overview-deal-cta::after { animation: none; }
}
.shared-property-overview-message {
  margin-top: 20px;
  padding: 14px 0;
  border: 0;
  border-bottom: 1px solid #d7dcd8;
  border-radius: 0;
  background: transparent;
  color: #5a6863;
}
.shared-property-overview-content {
  display: grid;
  gap: 0;
  /* 스티키 다운로드 바 높이만큼 여백을 둬서 마지막 줄이 바에 가리지 않게 한다. */
  padding-bottom: 72px;
}
/* 모바일·태블릿은 사진을 짧은 가로 배너로 두어 가격과 핵심정보가 바로 이어지게 한다. */
.shared-property-overview-content.has-front-photo {
  display: block;
}
.shared-property-overview-content.has-front-photo > .overview-media-col {
  width: 100%;
  margin: 22px 0 0;
}
.shared-property-overview-content.has-front-photo > .overview-media-col > .shared-property-overview-photo {
  aspect-ratio: 16 / 7;
}
/* 데탑(≥801): 세로 대표사진을 가격 옆 오른쪽에 고정한다. 아래 섹션은 전체폭. */
@media (min-width: 801px) {
  .shared-property-overview-content.has-front-photo {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 250px;
    column-gap: 28px;
    align-items: start;
  }
  .shared-property-overview-content.has-front-photo > .shared-property-overview-hero {
    grid-column: 1;
    grid-row: 1;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset {
    grid-column: 1;
    grid-row: 2;
    grid-template-columns: 110px minmax(0, 1fr);
    gap: 22px;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset .shared-property-overview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 22px;
  }
  .shared-property-overview-content.has-front-photo > .overview-media-col {
    grid-column: 2;
    grid-row: 1 / span 2;
    width: 250px;
    align-self: start;
    margin: 28px 0 25px;
  }
  .shared-property-overview-content.has-front-photo > .overview-media-col > .shared-property-overview-photo {
    aspect-ratio: 3 / 4;
  }
  .shared-property-overview-content.has-front-photo > .overview-media-col > .shared-property-overview-photo img {
    height: 100%;
    object-fit: cover;
  }
  .shared-property-overview-content.has-front-photo > .shared-property-overview-section:not(.overview-section-asset) {
    grid-column: 1 / -1;
    /* 아래 섹션 라벨 칼럼을 자산개요(110px)에 맞춰 세로 라인 정렬 */
    grid-template-columns: 110px minmax(0, 1fr);
  }
  /* 자산개요·사진 아래 구분선을 전체폭(사진 밑까지)으로 긋는다. */
  .shared-property-overview-content.has-front-photo::before {
    content: "";
    grid-column: 1 / -1;
    grid-row: 3;
    height: 0;
    border-top: 1px solid #d7dcd8;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset {
    border-bottom: 0;
  }
}
.shared-property-overview-photo {
  position: relative;
  margin: 28px 0 24px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  border: 1px solid #b9c4bd;
  border-radius: 3px;
  background: #e9eeeb;
}
.shared-property-overview-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.shared-property-overview-photo.is-clickable { cursor: zoom-in; }
.front-photo-open-hint {
  display: none;
  pointer-events: none;
}
@media (max-width: 800px) {
  .front-photo-open-hint {
    position: absolute;
    right: 8px;
    top: 8px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 7px;
    border: 1px solid rgba(255, 255, 255, .34);
    border-radius: 999px;
    background: rgba(15, 23, 42, .68);
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -.02em;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
    backdrop-filter: blur(2px);
  }
  .front-photo-open-hint::before {
    content: "";
    width: 11px;
    height: 11px;
    flex: none;
    background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E");
  }
}
/* 전면사진 라이트박스: 배너/사진 클릭 시 전체 사진을 크게 본다. */
.front-photo-lightbox {
  position: fixed;
  inset: 0;
  z-index: 4000;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  place-items: center;
  gap: 12px;
  padding: 20px 68px 16px;
  background: rgba(15, 23, 42, .82);
  backdrop-filter: blur(2px);
  cursor: zoom-out;
}
.front-photo-lightbox[hidden] { display: none; }
.front-photo-lightbox > .front-photo-lightbox-image {
  /* 세로 대표사진과 가로 상세사진을 모두 화면 안에서 충분히 크게 표시한다. */
  width: auto;
  height: auto;
  max-width: min(92vw, 1200px);
  max-height: min(78vh, calc(100dvh - 130px));
  object-fit: contain;
  border-radius: 4px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .5);
  /* 사진 자체는 클릭해도 닫히지 않는 감상 영역이므로 일반 커서로 둔다(닫기는 바깥 배경 클릭). */
  cursor: default;
}
.front-photo-lightbox > .front-photo-lightbox-video {
  /* 비율을 세로(9:16)로 고정해 로드 전 <video> 기본비율(2:1)로 떴다 세로로 튀는 점프를 없앤다.
     핵심: <video>는 내재크기(300x150=2:1)가 있어 width/height 둘 다 auto면 aspect-ratio를 무시하고
     내재비율을 쓴다. 그래서 '높이를 확정값'으로 주고 폭은 aspect-ratio로 계산되게 한다.
     (JS가 영상별 실제비율을 inline aspect-ratio로 덮음 → 가로영상은 16:9로) */
  aspect-ratio: 9 / 16;
  height: min(78vh, calc(100dvh - 130px));
  width: auto;
  max-width: 92vw;
  object-fit: contain;
  border-radius: 4px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .5);
  background: #000;
  cursor: default;
}
/* 라이트박스 하단 썸네일 줄의 영상 칸: ▶ 표식으로 구분. */
.front-photo-lightbox-thumb.is-video { position: relative; }
.front-photo-lightbox-thumb-play {
  position: absolute; inset: 0; margin: auto; width: 20px; height: 20px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, 0.6); border-radius: 999px; pointer-events: none;
}
.front-photo-lightbox-thumb-play svg { width: 11px; height: 11px; fill: #fff; margin-left: 1px; }
/* 영상 버퍼링 중 로딩 스피너 — 멈춘 것처럼 보이지 않게 "불러오는 중" 표시 */
.front-photo-lightbox-spinner {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 46px;
  height: 46px;
  margin: -23px 0 0 -23px;
  border: 4px solid rgba(255, 255, 255, .28);
  border-top-color: #fff;
  border-radius: 50%;
  animation: front-photo-lightbox-spin .8s linear infinite;
  z-index: 5;
  pointer-events: none;
}
.front-photo-lightbox-spinner[hidden] { display: none; }
@keyframes front-photo-lightbox-spin { to { transform: rotate(360deg); } }
.front-photo-lightbox-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, .92);
  color: #1e293b;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}
.front-photo-lightbox-close:hover { background: #fff; }
/* 라이트박스 좌우 이동 + 장수 표시(여러 장일 때만) */
.front-photo-lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, .9);
  color: #1e293b;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  z-index: 1;
}
.front-photo-lightbox-nav:hover { background: #fff; }
.front-photo-lightbox-nav[hidden] { display: none; }
.front-photo-lightbox-nav.is-prev { left: 12px; }
.front-photo-lightbox-nav.is-next { right: 12px; }
.front-photo-lightbox-counter {
  position: absolute;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(15, 23, 42, .72);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .02em;
}
.front-photo-lightbox-counter[hidden] { display: none; }
.front-photo-lightbox-thumbs {
  grid-row: 2;
  display: flex;
  max-width: min(92vw, 900px);
  gap: 8px;
  padding: 8px 10px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  border-radius: 8px;
  background: rgba(15, 23, 42, .72);
  cursor: default;
}
.front-photo-lightbox-thumbs[hidden] { display: none; }
.front-photo-lightbox-thumb {
  flex: 0 0 72px;
  width: 72px;
  height: 54px;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  border: 2px solid rgba(255, 255, 255, .48);
  border-radius: 5px;
  background: #dfe5e2;
  opacity: .72;
  cursor: pointer;
}
.front-photo-lightbox-thumb:hover { opacity: 1; }
.front-photo-lightbox-thumb.is-active {
  border-color: #60a5fa;
  opacity: 1;
}
.front-photo-lightbox-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* 개략모달 대표사진 위 썸네일 스트립(2장 이상일 때만) */
.overview-photo-thumbs {
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: 8px;
  display: flex;
  gap: 6px;
  flex-wrap: nowrap;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  z-index: 2;
}
.overview-photo-thumbs::-webkit-scrollbar { display: none; }
.overview-photo-thumb {
  /* 최대 9개의 상세사진을 대표사진 위 한 줄 가로 스크롤로 탐색한다. */
  flex: 0 0 44px;
  width: 44px;
  min-width: 0;
  height: 34px;
  padding: 0;
  border: 2px solid rgba(255, 255, 255, .8);
  border-radius: 4px;
  overflow: hidden;
  background: #e9eeeb;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35);
  opacity: .82;
  transition: opacity .12s, border-color .12s;
}
.overview-photo-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.overview-photo-thumb:hover { opacity: 1; }
@media (max-width: 800px) {
  .overview-photo-thumb { width: 40px; height: 30px; }
}
/* 사진 편집기: 등록된 사진 목록 */
.front-photo-saved {
  padding: 6px 12px 0;
  /* 그리드 아이템 기본 min-width:auto 때문에 nowrap 썸네일 목록(10장+)의
     min-content가 트랙을 밀어 모달·화면이 오른쪽으로 넘쳤다. 0으로 눌러
     아래 saved-list의 overflow-x 스크롤이 실제로 동작하게 한다. */
  min-width: 0;
}
.front-photo-saved-head { font-size: 12px; color: #475467; }
.front-photo-saved-head b { color: #1e293b; }
/* 이미지 직접 업로드 드롭존(IM 크롭과 나란히) */
.front-photo-upload-drop {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  margin: 8px 0 4px;
  padding: 12px 14px;
  border: 2px dashed #cbd5e1;
  border-radius: 12px;
  background: #f8fafc;
  cursor: pointer;
  text-align: center;
  transition: border-color 0.15s, background 0.15s;
}
.front-photo-upload-drop:hover { border-color: #94a3b8; background: #f1f5f9; }
.front-photo-upload-drop.is-dragover { border-color: #2563eb; background: #eff6ff; }
.front-photo-upload-drop.is-disabled { opacity: 0.5; pointer-events: none; }
.front-photo-upload-icon { font-size: 20px; color: #64748b; line-height: 1; }
.front-photo-upload-main { font-size: 13px; font-weight: 600; color: #334155; }
.front-photo-upload-hint { font-size: 11px; color: #94a3b8; }
.front-photo-saved-list {
  display: flex;
  gap: 8px;
  flex-wrap: nowrap;
  margin-top: 6px;
  padding-bottom: 4px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
}
.front-photo-saved-empty { font-size: 12px; color: #94a3b8; margin: 2px 0; }
.front-photo-saved-item {
  position: relative;
  flex: 0 0 92px;
  width: 92px;
  height: 68px;
  border: 1px solid #cbd5d1;
  border-radius: 4px;
  overflow: hidden;
  background: #eef2f0;
}
.front-photo-saved-item.is-primary { border-color: #2563eb; }
.front-photo-saved-item img { width: 100%; height: 100%; object-fit: contain; display: block; }
.front-photo-saved-badge {
  position: absolute;
  left: 4px;
  top: 4px;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(15, 23, 42, .7);
  color: #fff;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.4;
}
.front-photo-saved-item.is-primary .front-photo-saved-badge { background: #2563eb; }
.front-photo-saved-delete {
  position: absolute;
  right: 4px;
  top: 4px;
  width: 24px;
  min-width: 24px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(220, 38, 38, .9);
  color: #fff;
  font-size: 0;
  line-height: 0;
  cursor: pointer;
}
.front-photo-saved-delete::before,
.front-photo-saved-delete::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 10px;
  height: 2px;
  border-radius: 999px;
  background: #fff;
}
.front-photo-saved-delete::before { transform: translate(-50%, -50%) rotate(45deg); }
.front-photo-saved-delete::after { transform: translate(-50%, -50%) rotate(-45deg); }
.front-photo-saved-delete:hover { background: #dc2626; }
.shared-property-overview-hero {
  display: grid;
  gap: 8px;
  padding: 28px 0 24px;
  border-bottom: 1px solid #d7dcd8;
}

.front-photo-editor-modal {
  z-index: 1400;
  padding: 24px;
  background: rgba(15, 23, 42, .7);
}
/* 매물 상세 모달이 fetch로 body 끝(#crm-lazy-modal-holder)에 주입되면 같은 z-index(1100)의
   AI 개략정보 모달이 DOM 순서상 뒤로 밀려 상세 모달 뒤에서 열렸다. 상세에서 여는 최상위 모달이므로
   위로 올린다(개략보기 1250·사진편집 1400과 함께 1100 위). */
.property-ai-modal { z-index: 1300; }
.front-photo-editor-panel {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto auto;
  width: min(1180px, 100%);
  height: min(860px, calc(100dvh - 48px));
  max-height: calc(100dvh - 48px);
  padding: 0;
  overflow: hidden;
  gap: 0;
}
.front-photo-editor-panel > .picker-head {
  padding: 18px 22px;
  border-bottom: 1px solid #dbe3df;
}
.front-photo-editor-panel .picker-head h2 { margin: 0; }
.front-photo-editor-panel .picker-head p {
  margin: 5px 0 0;
  color: #64716c;
  font-size: 12px;
}
.front-photo-toolbar {
  display: flex;
  align-items: end;
  gap: 16px;
  padding: 14px 22px;
  border-bottom: 1px solid #e2e8e5;
  background: #f8faf9;
}
.front-photo-toolbar > label:first-child { flex: 1; }
.front-photo-toolbar label {
  display: grid;
  gap: 5px;
  color: #53615c;
  font-size: 11px;
  font-weight: 700;
}
.front-photo-toolbar select { width: 100%; }
.front-photo-page-controls {
  display: flex;
  align-items: center;
  gap: 7px;
}
.front-photo-page-controls button {
  min-width: 38px;
  padding: 8px 10px;
  font-size: 20px;
  line-height: 1;
}
.front-photo-page-controls label {
  display: flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}
.front-photo-page-controls input { width: 68px; text-align: center; }
.front-photo-toolbar .front-photo-ratio {
  display: flex;
  min-height: 40px;
  align-items: center;
  grid-template-columns: auto 1fr;
  white-space: nowrap;
}
.front-photo-toolbar .front-photo-ratio input { width: auto; }
.front-photo-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 250px;
  gap: 18px;
  min-height: 0;
  padding: 18px 22px;
  overflow: hidden;
  background: #e9eeeb;
}
.front-photo-stage {
  display: grid;
  min-height: 0;
  height: 100%;
  place-items: center;
  overflow: hidden;
  padding: 14px;
  border-radius: 8px;
  background: #2d3532;
}
.front-photo-canvas {
  position: relative;
  display: inline-block;
  max-width: 100%;
  line-height: 0;
  cursor: crosshair;
  touch-action: none;
  user-select: none;
}
.front-photo-canvas img {
  display: block;
  max-width: none;
  max-height: none;
  pointer-events: none;
}
.front-photo-canvas img.is-loading { opacity: .45; }
.front-photo-selection {
  position: absolute;
  z-index: 2;
  border: 2px solid #fff;
  outline: 2px solid #167a54;
  background: rgba(22, 122, 84, .16);
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, .42);
  pointer-events: none;
}
.front-photo-preview {
  align-self: stretch;
  display: grid;
  grid-template-rows: auto minmax(120px, 1fr);
  gap: 8px;
  min-height: 0;
  overflow: hidden;
}
.front-photo-preview > span {
  color: #4f5e58;
  font-size: 11px;
  font-weight: 800;
}
.front-photo-preview > div {
  display: grid;
  overflow: hidden;
  /* 미리보기 바깥 칸의 높이를 고정해 세로로 긴 선택도 PDF 작업영역을 밀지 않는다. */
  min-height: 120px;
  height: 100%;
  place-items: center;
  border-radius: 7px;
  background: #fff;
  color: #71817b;
}
.front-photo-preview p { padding: 15px; text-align: center; font-size: 12px; }
.front-photo-preview-image { position: relative; overflow: hidden; }
.front-photo-preview-image img { position: absolute; max-width: none; object-fit: fill; }
.front-photo-status {
  min-height: 38px;
  margin: 0;
  padding: 10px 22px;
  border-top: 1px solid #e2e8e5;
  color: #476056;
  font-size: 12px;
}
.front-photo-status.is-error { color: #b42318; }
.front-photo-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 22px 16px;
  border-top: 1px solid #e2e8e5;
}
.front-photo-actions > div { display: flex; gap: 8px; }
.danger-secondary { border-color: #efc7c3; color: #a1261c; background: #fff8f7; }

@media (max-width: 760px) {
  .front-photo-editor-modal { padding: 8px; }
  .front-photo-editor-panel { height: auto; max-height: calc(100dvh - 16px); }
  .front-photo-toolbar { align-items: stretch; flex-direction: column; gap: 10px; }
  .front-photo-page-controls { justify-content: center; }
  .front-photo-workspace { grid-template-columns: 1fr; padding: 10px; }
  .front-photo-stage { min-height: 280px; padding: 6px; }
  .front-photo-preview { display: none; }
  .front-photo-actions { align-items: stretch; flex-direction: column-reverse; }
  .front-photo-actions > button, .front-photo-actions > div, .front-photo-actions > div button { width: 100%; }
}
@media (max-width: 600px) {
  .front-photo-lightbox {
    gap: 8px;
    padding: 56px 12px 12px;
  }
  .front-photo-lightbox > .front-photo-lightbox-image {
    max-width: 96vw;
    max-height: calc(100dvh - 140px);
  }
  .front-photo-lightbox > .front-photo-lightbox-video {
    /* 폰: 비율 고정(9:16)은 base 상속. 높이 확정값(폭은 aspect-ratio로 계산) */
    max-width: 96vw;
    height: calc(100dvh - 140px);
  }
  .front-photo-lightbox-thumbs {
    max-width: 96vw;
    gap: 6px;
    padding: 6px 8px;
  }
  .front-photo-lightbox-thumb {
    flex-basis: 58px;
    width: 58px;
    height: 44px;
  }
}

/* 공동고객 그룹 관리와 고객 포털 표시 */
.customer-group-admin-panel { margin-top: 18px; margin-bottom: 12px; }
.customer-group-admin-head { display: flex; align-items: end; justify-content: space-between; gap: 18px; }
.customer-group-admin-head h2 { margin-bottom: 4px; }
.customer-group-admin-head p { margin: 0; color: var(--muted); }
.customer-group-create-form { display: flex; gap: 8px; align-items: end; }
.customer-group-create-form input { min-width: 210px; }
.customer-group-admin-list { display: grid; gap: 10px; margin-top: 16px; }
.customer-group-admin-card { border: 1px solid var(--line); border-radius: 12px; background: #fff; overflow: hidden; }
.customer-group-admin-card > summary { display: flex; justify-content: space-between; gap: 12px; padding: 14px 16px; cursor: pointer; }
.customer-group-admin-card > summary span { color: var(--muted); font-size: 13px; }
.customer-group-admin-body { padding: 0 16px 16px; border-top: 1px solid var(--line); }
.customer-group-link-box { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 8px; align-items: end; margin-top: 14px; }
.customer-group-link-box label { min-width: 0; }
.customer-group-link-box input { width: 100%; }
.customer-group-security-note { margin: 8px 0 14px; color: #8a4f0f; font-size: 12px; line-height: 1.55; }
.customer-group-edit-form { display: grid; gap: 12px; }
.customer-group-edit-form fieldset { margin: 0; border: 1px solid var(--line); border-radius: 10px; padding: 10px; }
.customer-group-edit-form legend { padding: 0 5px; font-weight: 700; }
.customer-group-member-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 7px; }
.customer-group-member-choice { display: grid; grid-template-columns: auto 1fr auto; gap: 7px; align-items: center; padding: 8px; border-radius: 8px; background: #f7f9fc; }
.customer-group-member-choice em { color: var(--muted); font-size: 11px; font-style: normal; }
.customer-group-rotate-form { margin: 0; }
.customer-detail-group-badges, .customer-portal-group-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.customer-detail-group-badges span, .customer-portal-group-badges span { display: inline-flex; align-items: center; border-radius: 999px; padding: 4px 9px; background: #e8f2ff; color: #075985; font-size: 12px; font-weight: 700; }
.delivery-customer-scope { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; padding: 10px 12px; border: 1px solid #bfdbfe; border-radius: 10px; background: #eff6ff; }
.delivery-customer-scope > strong { color: #1e3a5f; font-size: 13px; }
.delivery-customer-scope .check { margin: 0; }

@media (max-width: 760px) {
  .customer-group-admin-head { align-items: stretch; flex-direction: column; }
  .customer-group-create-form { align-items: stretch; }
  .customer-group-create-form input { min-width: 0; width: 100%; }
  .customer-group-link-box { grid-template-columns: 1fr; }
  .customer-group-admin-card > summary { flex-direction: column; }
  .customer-group-member-grid { grid-template-columns: 1fr; }
}

.shared-property-overview-hero span {
  color: #71817b;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .16em;
}
.shared-property-overview-hero strong {
  color: #163c30;
  font-family: Georgia, "Times New Roman", "Apple SD Gothic Neo", "Noto Sans KR", serif;
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.shared-property-overview-section {
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr);
  gap: 28px;
  padding: 27px 0 25px;
  border: 0;
  border-bottom: 1px solid #d7dcd8;
  border-radius: 0;
}
.shared-property-overview-section h3 {
  position: relative;
  margin: 2px 0 0;
  color: #1d332c;
  font-family: "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -.03em;
}
.shared-property-overview-section h3 .shared-property-overview-section-number {
  display: block;
  margin-bottom: 7px;
  color: #8a9692;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .14em;
}
.shared-property-overview-section h3 .shared-property-overview-section-title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  word-break: keep-all;
}
.shared-property-overview-section h3 .shared-property-overview-action {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.shared-property-overview-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: 26px;
  row-gap: 20px;
}
.shared-property-overview-grid > div {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: 6px;
  padding: 0 0 10px;
  border-bottom: 1px solid #e6e8e6;
  border-radius: 0;
  background: transparent;
}
.shared-property-overview-grid > div.is-wide {
  grid-column: 1 / -1;
}
.shared-property-overview-grid span {
  color: #7d8985;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .04em;
}
.shared-property-overview-grid strong {
  color: #1d2925;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.55;
  overflow-wrap: anywhere;
  white-space: pre-line;
}
.shared-property-overview-grid > div.is-multiline strong {
  white-space: pre-line;
}
.shared-property-overview-grid strong .overview-value-note {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: normal;
  color: #66736e;
  white-space: nowrap;
}
/* 개략 보기 모달: 검토 폼에서 강조로 고른 항목 (색+굵기만) */
.shared-property-overview-grid > div.is-emphasized span {
  color: #b5822a;
}
.shared-property-overview-grid > div.is-emphasized strong {
  color: #9a6a12;
  font-weight: 800;
}
.overview-section-summary .shared-property-overview-grid {
  grid-template-columns: 1fr;
}

@media (max-width: 800px) {
  .shared-property-overview-content.has-front-photo { grid-template-columns: 1fr; column-gap: 0; }
  .shared-property-overview-content.has-front-photo > .overview-media-col,
  .shared-property-overview-content.has-front-photo > .shared-property-overview-hero,
  .shared-property-overview-content.has-front-photo > .overview-section-asset {
    grid-column: 1;
    grid-row: auto;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset {
    grid-template-columns: 108px minmax(0, 1fr);
    gap: 20px;
  }
  .shared-property-overview-content.has-front-photo > .overview-media-col { margin-bottom: 0; }
  .shared-property-overview-modal {
    padding: 18px;
  }
  .shared-property-overview-panel {
    max-height: calc(100dvh - 36px);
    padding: 0 24px 0;
  }
  .shared-property-overview-download-bar { margin: 0 -24px 0; padding: 12px 24px; }
  .shared-property-overview-section {
    grid-template-columns: 108px minmax(0, 1fr);
    gap: 20px;
  }
  .shared-property-overview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.property-ai-head > div {
  min-width: 0;
}
.property-ai-top {
  position: sticky;
  z-index: 20;
  top: 0;
  padding: 20px 24px 14px;
  border-bottom: 1px solid #dbe3df;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(10px);
}
.property-ai-head {
  padding: 0;
  border: 0;
}
.property-ai-head h2 {
  margin: 0;
  color: #172a23;
  font-size: 22px;
  letter-spacing: -.035em;
}
.property-ai-head p {
  margin: 6px 0 0;
  color: #6a7872;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.property-ai-status-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 13px;
}
.property-ai-status {
  display: inline-flex;
  min-height: 26px;
  align-items: center;
  padding: 0 9px;
  border-radius: 999px;
  background: #f1f5f9;
  color: #475569;
  font-size: 12px;
  font-weight: 800;
}
.property-ai-status.is-warning {
  background: #fff8e6;
  color: #a16207;
}
.property-ai-status.is-success {
  background: #ecfdf5;
  color: #047857;
}
.property-ai-status.is-error {
  background: #fef2f2;
  color: #b91c1c;
}
.property-ai-meta {
  color: #79867f;
  font-size: 11px;
}
.property-ai-message {
  margin: 16px 24px 0;
  padding: 10px 12px;
  border: 1px solid #f6c76e;
  border-radius: 6px;
  background: #fffaf0;
  color: #92400e;
  font-size: 13px;
  white-space: pre-wrap;
}
.property-ai-message.is-success {
  border-color: #86d1b1;
  background: #ecfdf5;
  color: #047857;
}
.property-ai-message.is-error {
  border-color: #fca5a5;
  background: #fef2f2;
  color: #b91c1c;
}
.property-ai-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  padding: 20px 24px 16px;
  counter-reset: property-ai-section;
}
.property-ai-form fieldset {
  counter-increment: property-ai-section;
  min-width: 0;
  margin: 0;
  padding: 17px 16px 16px;
  border: 1px solid #dce4e0;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 4px 14px rgba(23, 42, 35, .035);
}
.property-ai-section-basic,
.property-ai-section-price,
.property-ai-section-land,
.property-ai-section-building,
.property-ai-section-consultant {
  grid-column: 1 / -1;
}
.property-ai-section-basic {
  border-top: 3px solid #2f6b57 !important;
}
.property-ai-section-price {
  border-top: 3px solid #b78636 !important;
  background: #fffdfa !important;
}
.property-ai-section-consultant {
  border-top: 3px solid #396f8f !important;
  background: #fbfdff !important;
}
.property-ai-form legend {
  padding: 0 8px 0 0;
  color: #223830;
  font-size: 15px;
  font-weight: 900;
  letter-spacing: -.02em;
}
.property-ai-form legend::before {
  content: counter(property-ai-section, decimal-leading-zero);
  display: inline-block;
  margin-right: 8px;
  color: #8a9992;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .1em;
}
.property-ai-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.property-ai-section-location .property-ai-grid,
.property-ai-section-summary .property-ai-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.property-ai-grid label {
  display: grid;
  align-content: start;
  gap: 6px;
  color: #6f7d77;
  font-size: 11px;
  font-weight: 800;
}
/* 개략정보 항목 출처 배지 — 값 입력란 아래 작은 pill로 표시. */
.ai-source-badge {
  justify-self: start;
  margin-top: 1px;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.6;
}
.ai-source-badge.is-hub { background: #e6f5f2; color: #0d9488; }
.ai-source-badge.is-land { background: #fff4db; color: #9a6700; }
.ai-source-badge.is-calc { background: #eef0fb; color: #4f46e5; }
.ai-source-badge.is-parse { background: #eef2f7; color: #64748b; }
.ai-source-badge[hidden] { display: none; }
/* 검토 폼: 항목별 "개략 모달에서 강조" 토글(별) */
.property-ai-grid label.ai-emph-label {
  position: relative;
}
.ai-emph-toggle {
  position: absolute;
  top: -1px;
  right: 0;
  width: 22px;
  height: 22px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #d9e1dd;
  border-radius: 6px;
  background: #fbfcfb;
  color: #c2ccc7;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  transition: color .12s ease, background .12s ease, border-color .12s ease;
}
.ai-emph-toggle:hover {
  border-color: #b7c4be;
  color: #8fa39b;
}
.ai-emph-toggle[aria-pressed="true"] {
  border-color: #d9a441;
  background: #fef6e6;
  color: #d9a441;
}
.ai-emph-toggle:disabled {
  opacity: .4;
  cursor: default;
}
.property-ai-grid input,
.property-ai-grid textarea {
  width: 100%;
  border-color: #d9e1dd;
  border-radius: 8px;
  background: #fbfcfb;
  color: #1f302a;
  font-size: 13px;
  font-weight: 650;
}
.property-ai-grid input {
  height: 38px;
}
.property-ai-grid input:focus,
.property-ai-grid textarea:focus {
  border-color: #5d8f7d;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(47, 107, 87, .1);
}
.property-ai-grid textarea {
  min-height: 82px;
  line-height: 1.55;
}
.property-ai-reference {
  margin: 0 24px 16px;
  border: 1px solid #dce4e0;
  border-radius: 10px;
  padding: 11px 13px;
  background: #fff;
}
.property-ai-reference summary {
  color: #334155;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}
.property-ai-warning-list,
.property-ai-evidence-list {
  display: grid;
  gap: 6px;
  margin-top: 10px;
}
.property-ai-warning-list p,
.property-ai-evidence-list p {
  margin: 0;
  padding: 7px 9px;
  border-radius: 5px;
  background: #f8fafc;
  color: #475569;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.property-ai-warning-list p {
  background: #fffaf0;
  color: #92400e;
}
.property-ai-actions,
.property-ai-actions > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.property-ai-actions {
  position: sticky;
  z-index: 20;
  bottom: 0;
  padding: 14px 24px;
  border-top: 1px solid #d7e0dc;
  background: rgba(255, 255, 255, .97);
  box-shadow: 0 -8px 24px rgba(23, 42, 35, .08);
  backdrop-filter: blur(10px);
}
.property-ai-actions button {
  min-height: 38px;
  border-radius: 8px;
  font-weight: 800;
}
.property-ai-actions button[hidden] { display: none !important; }
.property-ai-actions > div {
  justify-content: flex-end;
}
@media (max-width: 900px) {
  .property-ai-form {
    grid-template-columns: 1fr;
  }
  .property-ai-section {
    grid-column: 1 !important;
  }
  .property-ai-grid,
  .property-ai-section-location .property-ai-grid,
  .property-ai-section-summary .property-ai-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.data-management-panel {
  width: min(440px, 100%);
  padding: 18px;
  gap: 16px;
}
.data-management-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.data-management-head h2 {
  margin: 0;
  font-size: 18px;
}
.data-management-head p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 13px;
}
.data-management-actions {
  display: grid;
  gap: 8px;
}
.data-management-actions form {
  display: block;
}
.data-management-actions button,
.data-management-actions .button {
  width: 100%;
  min-height: 58px;
  padding: 10px 12px;
  display: grid;
  justify-items: start;
  align-content: center;
  gap: 3px;
}
.data-management-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
}
.google-drive-setting {
  border-top: 1px solid var(--line);
  padding-top: 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.google-drive-setting > div:first-child {
  display: grid;
  gap: 4px;
}
.google-drive-setting > div:first-child > span {
  color: var(--muted);
  font-size: 12px;
}
.google-drive-setting > .button,
.google-drive-setting-actions button {
  min-height: 32px;
  white-space: nowrap;
  font-size: 12px;
}
.google-drive-setting-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.google-drive-connected {
  color: var(--ok);
  font-size: 12px;
  font-weight: 800;
}
.google-drive-missing {
  color: #b45309;
  font-size: 12px;
  text-align: right;
}
.icon-button {
  width: 30px;
  min-width: 30px;
  min-height: 30px;
  padding: 0;
  font-size: 15px;
  font-weight: 900;
  line-height: 1;
}
.property-front-photo-button.is-registered {
  border-color: #86b99f;
  background: #e7f4ec;
  color: #16704a;
}
.property-front-photo-button.is-registered:hover {
  border-color: #58a27d;
  background: #d8eddf;
}
.property-front-photo-button.is-missing {
  border-color: #e6bd7a;
  background: #fff5df;
  color: #a45b08;
}
.property-front-photo-button.is-missing:hover {
  border-color: #d49a40;
  background: #ffebc5;
}
/* 매물 동영상 버튼(▶) — 전면사진 버튼과 동일한 등록/미등록 색으로 통일 */
.property-video-button.is-registered {
  border-color: #86b99f;
  background: #e7f4ec;
  color: #16704a;
}
.property-video-button.is-registered:hover {
  border-color: #58a27d;
  background: #d8eddf;
}
.property-video-button.is-missing {
  border-color: #e6bd7a;
  background: #fff5df;
  color: #a45b08;
}
.property-video-button.is-missing:hover {
  border-color: #d49a40;
  background: #ffebc5;
}
/* ── 매물 동영상 편집기(관리자) ── */
.property-video-panel { max-width: 560px; width: 100%; }
.property-video-count { margin: 2px 0 0; font-size: 13px; color: #64748b; }
.property-video-storage-warn {
  margin: 8px 0; padding: 10px 12px; border-radius: 10px;
  background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; font-size: 13px;
}
.property-video-dropzone {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  margin: 10px 0 4px; padding: 22px 16px; cursor: pointer; text-align: center;
  border: 2px dashed #cbd5e1; border-radius: 14px; background: #f8fafc;
  transition: border-color 0.15s, background 0.15s;
}
.property-video-dropzone:hover { border-color: #94a3b8; background: #f1f5f9; }
.property-video-dropzone.is-dragover {
  border-color: #2563eb; background: #eff6ff;
}
.property-video-dropzone.is-disabled { opacity: 0.5; pointer-events: none; }
.property-video-dropzone-icon { font-size: 26px; color: #64748b; line-height: 1; }
.property-video-dropzone-main { font-size: 14px; font-weight: 600; color: #334155; }
.property-video-hint { margin: 0; font-size: 12px; color: #94a3b8; }
.property-video-status {
  margin: 6px 0; padding: 8px 12px; border-radius: 8px;
  background: #eff6ff; color: #1e40af; font-size: 13px;
}
.property-video-status.is-error { background: #fef2f2; color: #b91c1c; }
.property-video-list { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.property-video-empty { margin: 8px 0; color: #94a3b8; font-size: 13px; }
.property-video-item {
  display: flex; align-items: center; gap: 12px;
  padding: 8px; border: 1px solid #e2e8f0; border-radius: 12px; background: #fff;
}
.property-video-item.is-primary { border-color: #2563eb; }
.property-video-thumb {
  position: relative; flex: 0 0 auto; width: 92px; height: 120px; border-radius: 8px;
  overflow: hidden; background: #0f172a; display: flex; align-items: center; justify-content: center;
}
.property-video-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.property-video-thumb video { width: 100%; height: 100%; object-fit: contain; background: #000; }
.property-video-thumb.is-clickable { cursor: pointer; }
.property-video-play {
  position: absolute; inset: 0; margin: auto; width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, 0.55); border-radius: 999px; pointer-events: none;
}
.property-video-play svg { width: 18px; height: 18px; fill: #fff; }
.property-video-thumb-label { color: #cbd5e1; font-size: 12px; }
.property-video-thumb.is-error .property-video-thumb-label { color: #fca5a5; }
.property-video-spinner {
  width: 22px; height: 22px; border: 3px solid rgba(255, 255, 255, 0.25);
  border-top-color: #fff; border-radius: 50%; animation: property-video-spin 0.8s linear infinite;
  margin-bottom: 6px;
}
.property-video-thumb.is-processing { flex-direction: column; }
@keyframes property-video-spin { to { transform: rotate(360deg); } }
.property-video-meta { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.property-video-badge {
  align-self: flex-start; font-size: 11px; font-weight: 700; color: #475569;
  background: #f1f5f9; border-radius: 999px; padding: 2px 8px;
}
.property-video-item.is-primary .property-video-badge { background: #2563eb; color: #fff; }
.property-video-name { font-size: 13px; color: #334155; word-break: break-all; }
.property-video-error { font-size: 12px; color: #b91c1c; }
.property-video-delete {
  flex: 0 0 auto; width: 30px; height: 30px; border-radius: 8px; border: 1px solid #fecaca;
  background: #fff; color: #b91c1c; font-size: 18px; line-height: 1; cursor: pointer;
}
.property-video-delete:hover { background: #fef2f2; }
/* ── 개략보기 미디어 열 — 갈래2: 대표 1개 + 썸네일 줄(사진·영상 통일) ── */
.overview-media-col { display: flex; flex-direction: column; gap: 12px; }
/* 미디어 열 안에서는 사진의 기존 상하 여백을 제거한다(정렬). */
.overview-media-col > .shared-property-overview-photo { margin: 0; }
/* 썸네일 줄의 영상 칸: 사진 썸네일과 같은 크기에 ▶만 얹어 구분한다. */
.overview-thumb-video { position: relative; }
.overview-thumb-play {
  position: absolute; inset: 0; margin: auto; width: 18px; height: 18px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, 0.55); border-radius: 999px; pointer-events: none;
}
.overview-thumb-play svg { width: 10px; height: 10px; fill: #fff; margin-left: 1px; }
.overview-photo-thumb.overview-thumb-video { border-color: rgba(255, 255, 255, .92); opacity: 1; }
/* 사진이 없고 영상만 대표일 때, 큰 슬롯 중앙의 재생 버튼. */
.overview-video-play.is-hero {
  position: absolute; inset: 0; margin: auto; width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, 0.6); border-radius: 999px; pointer-events: none; z-index: 1;
}
.overview-video-play.is-hero svg { width: 26px; height: 26px; fill: #fff; margin-left: 3px; }
/* 큰 슬롯에서 영상 인라인 재생: 대표 이미지를 덮는다. */
.overview-hero-video {
  position: absolute; inset: 0; z-index: 3; background: #000;
}
.overview-hero-video .overview-video-player {
  width: 100%; height: 100%; object-fit: contain; background: #000; display: block;
}
.overview-video-back {
  position: absolute; top: 6px; right: 6px; width: 28px; height: 28px; z-index: 4;
  display: flex; align-items: center; justify-content: center;
  border: 0; border-radius: 999px; cursor: pointer;
  background: rgba(15, 23, 42, 0.72); color: #fff; font-size: 18px; line-height: 1;
}
.overview-video-back:hover { background: rgba(15, 23, 42, 0.9); }
.form-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
.compact-submit {
  width: auto;
  min-width: 96px;
}
.card-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}
.request-expand-button {
  width: 30px;
  min-width: 30px;
  padding: 0;
  font-size: 16px;
  font-weight: 900;
}
.always-card { display: block; margin-bottom: 18px; }
.full-button { width: 100%; margin-top: 8px; }
.strong-cell { font-weight: 800; }
.address-cell { min-width: 210px; max-width: 320px; overflow-wrap: anywhere; }
.price-cell { min-width: 90px; font-weight: 800; white-space: nowrap; }
.area-cell { min-width: 130px; color: var(--muted); font-size: 13px; }
.compact-properties th:nth-child(1), .compact-properties td:nth-child(1) { width: 22%; }
.compact-properties th:nth-child(2), .compact-properties td:nth-child(2) { width: 38%; }
.compact-properties th:nth-child(3), .compact-properties td:nth-child(3) { width: 14%; }
.compact-properties th:nth-child(4), .compact-properties td:nth-child(4) { width: 10%; }
.compact-properties th:nth-child(5), .compact-properties td:nth-child(5) { width: 16%; }
.badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border-radius: 999px;
  background: var(--accent-weak);
  color: #1d4ed8;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.customer-core-fields {
  display: grid;
  grid-template-columns: minmax(220px, 1.4fr) minmax(160px, .8fr) minmax(150px, .7fr);
  gap: 10px;
}
label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-weight: 700;
  font-size: 12px;
}
input, select, textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 6px;
  min-height: 36px;
  padding: 8px 10px;
  color: var(--text);
  background: #fff;
  font: inherit;
}
input[readonly] {
  background: #f3f4f6;
  color: var(--muted);
}
textarea { min-height: 88px; resize: vertical; }
.full { grid-column: 1 / -1; }
.file-drop-label {
  border: 1.5px dashed #a8b5c7;
  border-radius: 8px;
  min-height: 118px;
  padding: 14px;
  align-content: center;
  background: #f8fafc;
  cursor: pointer;
}
.file-drop-label input {
  border: 0;
  background: transparent;
  padding: 0;
  min-height: auto;
}
.file-drop-label span {
  display: grid;
  place-items: center;
  min-height: 48px;
  color: var(--accent);
  font-size: 13px;
  font-weight: 800;
  text-align: center;
}
.file-drop-label.is-drag {
  border-color: var(--accent);
  background: var(--accent-weak);
}
.parse-status {
  min-height: 24px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.check {
  grid-auto-flow: column;
  grid-template-columns: auto 1fr;
  align-items: center;
  justify-content: start;
  color: var(--text);
  font-size: 14px;
}
.check input { width: auto; }
.inline-form {
  display: grid;
  grid-template-columns: 1fr 1fr 90px 56px;
  gap: 6px;
  align-items: center;
  border-top: 1px solid #edf0f5;
  padding: 8px 0;
}
.parsed { margin-bottom: 12px; }
.kv {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.kv div {
  border: 1px solid #edf0f5;
  border-radius: 6px;
  padding: 8px;
  display: grid;
  gap: 4px;
}
.kv b { color: var(--muted); font-size: 12px; }
.flash-wrap { margin-bottom: 12px; display: grid; gap: 8px; }
.flash {
  background: #fff7ed;
  border: 1px solid #fed7aa;
  color: #9a3412;
  border-radius: 6px;
  padding: 10px 12px;
}
.dashboard-ping-alert {
  position: sticky;
  top: 10px;
  z-index: 20;
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  align-items: center;
  margin-bottom: 12px;
}
.dashboard-ping-alert[hidden] {
  display: none;
}
.dashboard-ping-alert button:first-child {
  background: #0f172a;
  border-color: #0f172a;
  color: #fff;
  font-weight: 900;
}
.dashboard-ping-alert button:last-child {
  width: 34px;
  min-width: 34px;
  padding: 0;
}
.saving-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  place-items: center;
  background: rgba(17, 24, 39, .32);
  backdrop-filter: blur(2px);
}
.saving-overlay.is-active { display: grid; }
.scroll-to-top {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 60;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid #273d54;
  background: #1e293b;
  color: #fff;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  display: grid;
  place-items: center;
  box-shadow: 0 6px 18px rgba(2, 6, 23, .28);
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .18s ease, transform .18s ease, background .15s ease;
  pointer-events: none;
}
.scroll-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.scroll-to-top:hover { background: #273d54; }
@media (max-width: 840px) {
  .scroll-to-top { right: 16px; bottom: 16px; width: 42px; height: 42px; font-size: 20px; }
}
.saving-box {
  width: min(280px, calc(100vw - 48px));
  border-radius: 8px;
  background: #fff;
  border: 1px solid var(--line);
  padding: 22px;
  display: grid;
  place-items: center;
  gap: 8px;
  box-shadow: 0 18px 60px rgba(17, 24, 39, .18);
}
.saving-box span { color: var(--muted); font-size: 13px; }
.spinner {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 3px solid #dbeafe;
  border-top-color: var(--accent);
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

@media (max-width: 1120px) {
  .dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .work-layout { grid-template-columns: minmax(0, 1fr) 320px; }
  .app-shell { padding: 18px; }
}

@media (max-width: 840px) {
  body.authenticated-shell {
    --mobile-shell-menu-height: 58px;
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
  }
  .customer-core-fields {
    grid-template-columns: 1fr;
  }
  body.authenticated-shell > .sidebar {
    position: static;
    z-index: 100;
    flex: 0 0 auto;
    width: auto;
    max-width: 100vw;
    padding: 10px;
    flex-direction: row;
    align-items: center;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    touch-action: pan-x;
    box-shadow: none;
  }
  .brand { white-space: nowrap; padding: 8px; }
  .sidebar nav {
    display: flex;
    gap: 4px;
    min-width: max-content;
  }
  .sidebar nav a {
    min-height: 38px;
    border-radius: 10px 10px 0 0;
    border: 1px solid transparent;
    padding: 9px 12px;
    transform: none;
  }
  .sidebar nav a:hover {
    transform: none;
  }
  .sidebar nav a.active {
    transform: none;
    box-shadow: 0 -2px 18px rgba(2, 6, 23, .14);
  }
  .sidebar nav a::before {
    display: none;
  }
  .sidebar nav a::after {
    inset: auto 8px 0 8px;
    width: auto;
    height: 4px;
    border-radius: 999px 999px 0 0;
  }
  .sidebar-foot {
    margin: 0 0 0 auto;
    border: 0;
    padding: 0;
    grid-auto-flow: column;
    align-items: center;
    white-space: nowrap;
  }
  .sidebar-foot > span {
    border-top: 0;
    margin-top: 0;
    padding-top: 0;
  }
  .sidebar-foot a.sidebar-manual-link {
    width: auto;
    min-height: 34px;
    padding: 7px 10px;
    white-space: nowrap;
  }
  .sidebar-management-button {
    width: auto;
    white-space: nowrap;
  }
  body.authenticated-shell > .app-shell {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: 100vw;
    margin-left: 0;
    padding: 14px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
  }
  /* 모바일 상단 메뉴는 별도 고정 영역이므로, 상세 모달도 그 아래의 본문 영역만 덮는다.
     닫기 버튼이 메뉴 뒤로 들어가지 않고 첫 화면부터 항상 보이게 한다. */
  body.authenticated-shell > .app-shell .request-edit-modal {
    inset: var(--mobile-shell-menu-height) 0 0;
  }
  .work-layout { grid-template-columns: 1fr; }
  .detail-panel { order: -1; }
  .mobile-action-row {
    display: block;
    width: 100%;
    margin: -2px 0 14px;
  }
  .mobile-action-row .mobile-panel-toggle {
    display: flex;
    width: 100%;
    justify-content: center;
  }
  .collapsible-panel {
    display: none;
    order: -1;
  }
  .collapsible-panel.is-open { display: block; }
  .page-head { display: grid; }
  .actions { justify-content: flex-start; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .dashboard-panel {
    height: 250px;
    min-height: 250px;
  }
  .pb-dashboard-grid .dashboard-panel {
    height: 250px;
    min-height: 250px;
  }
}

@media (max-width: 560px) {
  body { font-size: 13px; }
  .app-shell {
    width: 100%;
    max-width: 100vw;
    overflow-x: hidden;
  }
  .mobile-action-row .mobile-panel-toggle {
    width: 100%;
    min-height: 52px;
  }
  .always-action-row {
    width: 100%;
    justify-content: stretch;
  }
  .always-action-row .mobile-panel-toggle {
    width: 100%;
    min-height: 52px;
  }
  .always-action-row .property-warehouse-audience-button {
    flex: 0 1 auto;
    min-width: 0;
    min-height: 52px;
    padding: 0 10px;
  }
  .always-action-row .property-warehouse-audience-button > span {
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .property-warehouse-audience-panel {
    max-height: calc(100dvh - var(--mobile-shell-menu-height) - 16px);
  }
  .property-warehouse-manager-list {
    grid-template-columns: minmax(0, 1fr);
  }
  .always-action-row .delivery-calendar-button {
    width: 52px;
    min-width: 52px;
    min-height: 52px;
    padding: 0;
  }
  .always-action-row .delivery-calendar-button-label {
    display: none;
  }
  .list-panel-head {
    display: grid;
    align-items: stretch;
  }
  .filter-form {
    min-width: 0;
  }
  .dual-filter-form {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    min-width: 0;
  }
  .triple-filter-form {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .dual-filter-form label,
  .dual-filter-form select {
    min-width: 0;
    width: 100%;
  }
  .form-grid, .kv { grid-template-columns: 1fr; }
  .delivery-upload-panel { grid-template-columns: 1fr; }
  .manager-choice-list { grid-template-columns: 1fr; }
  .page-head h1 { font-size: 22px; }
  .advisor-announcement-admin-button { width: 100%; min-height: 44px; }
  .advisor-announcement-current-head { display: grid; }
  .advisor-announcement-form > button { width: 100%; }
  .pb-advisor-announcement {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 10px 12px;
    padding: 13px;
  }
  .pb-advisor-announcement form { grid-column: 1 / -1; }
  .pb-advisor-announcement form button { width: 100%; min-height: 42px; }
  .pb-advisor-announcement-panel > form button { width: 100%; }
  .pb-dashboard-page-head .pb-advisor-announcement-reopen {
    width: auto;
    min-height: 36px;
  }
  .quick-actions a { flex: 1 1 calc(50% - 8px); text-align: center; }
  .inline-form { grid-template-columns: 1fr; }
  .table-wrap {
    border-radius: 6px;
    border: 1px solid #edf0f5;
    overflow-x: auto;
    overflow-y: hidden;
  }
  .desktop-edit-table { display: none; }
  .mobile-edit-list { display: grid; gap: 10px; }
  .edit-card .form-grid { grid-template-columns: 1fr; }
  .edit-card button { width: 100%; }
  .edit-card .icon-button {
    width: 34px;
    min-width: 34px;
  }
  .card-actions .icon-button {
    width: 34px;
  }
  .compact-submit {
    width: 120px;
  }
  .request-card {
    padding: 46px 12px 12px;
  }
  .request-line-card {
    min-width: 1120px;
    padding: 12px 118px 12px 14px;
  }
  .request-card-head,
  .request-card-details {
    grid-template-columns: 1fr;
  }
  .request-line-head {
    grid-template-columns: minmax(190px, 1.1fr) minmax(260px, 1.55fr) 128px 120px 104px 82px;
  }
  .request-card-details .full {
    grid-column: 1;
  }
  .request-card-toolbar {
    top: 10px;
    right: 12px;
  }
  .request-card-toolbar button {
    width: 30px;
  }
  .property-card {
    padding: 12px 154px 12px 14px;
  }
  .property-card-toolbar {
    top: 32px;
    right: 14px;
  }
  /* .property-card는 .edit-card이기도 해서 `.edit-card button { width:100% }`가
     위치보기 버튼까지 늘려버린다. 지도 아이콘은 정해진 폭으로 되돌린다. */
  .edit-card .location-map-link {
    width: 29px;
    min-width: 29px;
  }
  .selector-row,
  .delivery-card {
    grid-template-columns: 1fr;
  }
  .delivery-card.compact-line-card {
    grid-template-columns: minmax(130px, 1.1fr) minmax(220px, 1.7fr) 96px 112px auto 76px;
    min-width: 720px;
  }
  .delivery-meta {
    justify-content: flex-start;
  }
  .picker-modal {
    padding: 12px;
  }
  .delivery-picker-modal .picker-panel {
    height: calc(100dvh - 24px);
  }
  .picker-item-customer {
    min-width: 430px;
  }
  .picker-item-property {
    min-width: 650px;
  }
  table { min-width: 640px; }
  .compact-properties { min-width: 620px; }
  .editable-table { min-width: 1080px; }
  .firm-edit-table { min-width: 760px; }
  .customer-edit-table { min-width: 760px; }
  .request-edit-table { min-width: 1460px; }
  .list-panel, .detail-panel, .panel { padding: 12px; }
}

/* iOS Safari can auto-enlarge long Korean text blocks inside narrow modals. */
.request-detail-panel,
.request-detail-panel * {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
.request-detail-panel .request-line-cell span,
.request-detail-panel .delivery-item-header span,
.request-detail-panel .note-list-header span,
.request-detail-panel .task-list-header span {
  font-size: 12px;
  line-height: 1.35;
}
.request-detail-panel .request-line-cell strong,
.request-detail-panel .delivery-item-line strong,
.request-detail-panel .delivery-item-line span,
.request-detail-panel .note-line-card .note-line-head strong,
.request-detail-panel .task-line-card .task-line-head strong {
  font-size: 13px;
  line-height: 1.45;
}
.request-detail-panel .delivery-batch-memos b,
.request-detail-panel .delivery-customer-share-locked-head strong,
.request-detail-panel .delivery-customer-message-label {
  font-size: 13px;
  line-height: 1.35;
}
.request-detail-panel .delivery-batch-memos p,
.request-detail-panel .delivery-customer-share-content,
.request-detail-panel .delivery-customer-share-form textarea,
.request-detail-panel .request-readonly-content {
  font-size: 13px;
  line-height: 1.5;
  font-weight: 400;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.delivery-address-with-map {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.delivery-address-with-map > span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.delivery-location-link {
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: #285f91;
  font: inherit;
  line-height: inherit;
  text-align: left;
  text-decoration: underline;
  text-decoration-color: #a9c2d8;
  text-underline-offset: 2px;
  overflow-wrap: anywhere;
  cursor: pointer;
}
.delivery-location-link:hover {
  color: #174a78;
  text-decoration-color: currentColor;
}
.delivery-location-link:focus-visible {
  outline: 2px solid #7eae97;
  outline-offset: 2px;
  border-radius: 2px;
}
.location-map-modal-open {
  overflow: hidden;
}
.mobile-location-map-modal {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, .42);
  backdrop-filter: blur(2px);
}
.mobile-location-map-modal[hidden] {
  display: none;
}
.mobile-location-map-modal iframe {
  display: block;
  width: min(920px, 92vw);
  height: min(760px, 86dvh);
  border: 1px solid rgba(203, 215, 223, .9);
  border-radius: 14px;
  background: #eef2f5;
  box-shadow: 0 24px 70px rgba(15, 23, 42, .32);
}
@media (max-width: 560px) {
  .mobile-location-map-modal {
    padding: 12px;
  }
  .mobile-location-map-modal iframe {
    width: 94vw;
    height: 88dvh;
    border-radius: 12px;
  }
}
.deal-map-link {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-width: 29px;
  height: 29px;
  padding: 0 6px;
  border: 1px solid #bcd5c9;
  border-radius: 8px;
  background: #eef7f2;
  color: #176047;
  text-decoration: none;
}
.deal-map-link:hover {
  border-color: #7eae97;
  background: #dcebe3;
}
.deal-map-link svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.deal-map-link b {
  font-size: 10px !important;
  line-height: 1;
  color: inherit;
}
/* 매물 주변실거래 상태: 있음=초록(기본), 없음/미작성=회색 */
.property-deal-case-btn.dc-none,
.property-deal-case-btn.dc-todo {
  border-color: #d7dde5;
  background: #f4f6f9;
  color: #98a3b1;
}
.property-deal-case-btn.dc-none:hover,
.property-deal-case-btn.dc-todo:hover {
  border-color: #b9c3cf;
  background: #eef1f5;
}
/* 전달 상세 매물 목록: 사례 링크를 지도 아이콘 대신 "사례N" 텍스트로 작게 */
.delivery-item-line .deal-map-link.deal-map-link-text {
  height: 22px;
  min-width: 0;
  padding: 0 7px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: -.02em;
}
/* 개략정보 버튼을 문서 아이콘으로 */
.delivery-file-links .shared-property-overview-button svg,
.property-card-toolbar .shared-property-overview-button svg,
.property-warehouse-file-links .im-builder-button svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* 전달 상세 매물 목록: 가격 진하게 */
.delivery-item-line .delivery-item-price {
  font-weight: 700;
  color: #1f2933;
}

.location-map-link {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  min-width: 29px;
  height: 29px;
  margin-right: 4px;
  padding: 0 6px;
  border: 1px solid #bcd0e6;
  border-radius: 8px;
  background: #eef4fb;
  color: #1f5f91;
  cursor: pointer;
}
.location-map-link:hover {
  border-color: #7ea9d1;
  background: #dde9f7;
}
.location-map-link svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* 매물 목록의 위치 버튼만 한 단계 작게: 자문위원 매물창고·전달매물 목록과
   관리자 매물 목록에 동일 적용한다(상세 모달의 위치 버튼은 기존 크기 유지). */
.admin-property-list .property-address-cell .location-map-link,
.pb-portal .pb-property-mobile-list .property-address-cell .location-map-link {
  width: 24px;
  min-width: 24px;
  height: 24px;
  min-height: 24px;
  max-height: 24px;
  aspect-ratio: 1;
  margin-right: 3px;
  margin-bottom: 0;
  padding: 0;
  box-sizing: border-box;
  border-radius: 6px;
}
.admin-property-list .property-address-cell .location-map-link svg,
.pb-portal .pb-property-mobile-list .property-address-cell .location-map-link svg {
  width: 13px;
  height: 13px;
}

@media (max-width: 560px) {
  .request-edit-modal {
    padding: 12px;
  }
  .request-edit-panel {
    width: min(100%, calc(100vw - 24px));
    max-height: calc(100dvh - 24px);
  }
  .request-detail-panel .delivery-batch-memos p,
  .request-detail-panel .delivery-customer-share-content,
  .request-detail-panel .delivery-customer-share-form textarea,
  .request-detail-panel .delivery-advisor-message-form textarea,
  .request-detail-panel .request-readonly-content {
    font-size: 12px;
    line-height: 1.45;
  }
  .pb-request-detail-panel .request-readonly-content {
    height: 220px;
  }
  .property-ai-grid {
    grid-template-columns: 1fr;
  }
  .property-ai-section-location .property-ai-grid,
  .property-ai-section-summary .property-ai-grid {
    grid-template-columns: 1fr;
  }
  .property-ai-top {
    padding: 16px 16px 12px;
  }
  .property-ai-form {
    padding: 16px;
  }
  .property-ai-form fieldset {
    padding: 15px 13px 14px;
  }
  .property-ai-reference {
    margin: 0 16px 14px;
  }
  .property-ai-actions {
    padding: 12px 16px;
  }
  /* 휴대폰: 항목을 2열로 묶어 세로로 길게 늘어지는 걸 줄인다.
     is-wide(규제사항·임대현황 등)와 긴 값(주용도·준공리모델링)은 전체폭 1열로 뺀다. */
  .shared-property-overview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 14px;
  }
  .shared-property-overview-grid > div.is-wide,
  .shared-property-overview-grid > div[data-ov-key="building.approval_date"] {
    grid-column: 1 / -1;
  }
  /* 가격·수익: 6칸 그리드 — 1행 3개(각 2칸), 2행 평당가 2개(각 3칸=넓게).
     평당가 칸이 넓어져 "(건물 X억)" 주석이 한 줄로 들어간다. */
  .overview-section-income .shared-property-overview-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    column-gap: 12px;
  }
  .overview-section-income .shared-property-overview-grid > div {
    grid-column: span 2;
  }
  .overview-section-income .shared-property-overview-grid > div[data-ov-key="price.land_unit_price_manwon_per_pyeong"],
  .overview-section-income .shared-property-overview-grid > div[data-ov-key="price.gross_floor_unit_price_manwon_per_pyeong"] {
    grid-column: span 3;
  }
  .overview-section-income .shared-property-overview-grid > .overview-deal-cta {
    top: 0;
    grid-column: 1 / -1;
    grid-row: auto;
    height: auto;
    min-height: 49px;
    padding: 7px 12px;
  }
  .overview-section-income .overview-deal-cta-copy small {
    font-size: 12px;
  }
  /* 휴대폰에서는 실제 내용값과 작은 항목 라벨의 가독성을 높인다. */
  .shared-property-overview-grid strong {
    font-size: 15px;
  }
  .shared-property-overview-grid span {
    color: #66736e;
    font-size: 12px;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .shared-property-overview-content.has-front-photo > .overview-section-asset .shared-property-overview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 14px;
  }
  .shared-property-overview-modal {
    padding: 10px;
  }
  .shared-property-overview-panel {
    width: calc(100vw - 20px);
    max-height: calc(100dvh - 20px);
    padding: 0 18px 0;
  }
  .shared-property-overview-download-bar {
    margin: 0 -18px 0;
    padding: 12px 18px;
  }
  .shared-property-overview-download-bar.is-compact-actions {
    flex-wrap: nowrap;
    gap: 7px;
    padding-top: 10px;
    padding-bottom: 10px;
    overflow-x: auto;
  }
  .shared-property-overview-download-bar.is-compact-actions .shared-property-overview-download-label {
    flex: 0 0 auto;
    margin-right: auto;
  }
  .shared-property-overview-download-bar.is-compact-actions .shared-property-overview-download,
  .shared-property-overview-download-bar.is-compact-actions .shared-property-overview-share {
    flex: 0 0 38px;
    width: 38px;
    min-width: 38px;
    height: 38px;
    margin-left: 0;
    padding: 0;
    justify-content: center;
  }
  .shared-property-overview-download-bar.is-compact-actions .shared-property-overview-download > span,
  .shared-property-overview-download-bar.is-compact-actions .shared-property-overview-share > span {
    display: none;
  }
  .shared-property-overview-panel .picker-head {
    padding: 23px 0 18px;
  }
  .shared-property-overview-section {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 22px 0 20px;
  }
  .shared-property-overview-section h3 span {
    display: inline;
    margin: 0 8px 0 0;
  }
  .overview-section-income h3 .shared-property-overview-section-title {
    display: inline-flex;
    margin-right: 0;
    vertical-align: middle;
  }
  .overview-section-income h3 > .shared-property-overview-badge.deal-map-link {
    margin: 0 0 0 8px;
    vertical-align: middle;
  }
  /* 모바일: 섹션 제목 아래 항목들을 들여써서 시각적으로 묶는다. */
  .shared-property-overview-section .shared-property-overview-grid {
    padding-left: 13px;
    border-left: 2px solid #e3e7e4;
  }
  .overview-section-basic .shared-property-overview-grid > div:first-child,
  .overview-section-basic .shared-property-overview-grid > div:nth-child(2),
  .overview-section-price .shared-property-overview-grid > div:first-child {
    grid-column: 1;
  }
  .property-ai-grid .full {
    grid-column: 1;
  }
  .property-ai-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .property-ai-actions > div {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }
  .property-ai-actions > button {
    width: 100%;
  }
}

/* ================================================================
   관리자 목록 공통 폭·유동 칼럼
   자문위원 모드와 같은 1040px 최대폭을 사용하되, 관리자 전용 칼럼 수와
   액션 버튼 폭은 각 화면에 맞춰 유지한다.
   ================================================================ */
.app-shell:not(.pb-portal) .always-action-row,
.app-shell:not(.pb-portal) > .always-collapsible,
.app-shell:not(.pb-portal) .intake-panel,
.app-shell:not(.pb-portal) .customer-group-admin-panel,
.admin-dashboard-grid,
.app-shell:not(.pb-portal) .customer-list-panel,
.admin-request-list-panel,
.admin-property-list-panel,
.admin-delivery-list-panel,
.admin-note-list-panel,
.admin-task-list-panel {
  max-width: 1040px;
}

.app-shell:not(.pb-portal) .customer-list-panel {
  container-type: inline-size;
}

@media (min-width: 561px) {
  .app-shell:not(.pb-portal) .customer-card-list,
  .admin-request-card-list,
  .admin-property-list,
  .admin-delivery-card-list,
  .admin-note-card-list,
  .admin-task-card-list {
    overflow-x: visible;
  }

  .app-shell:not(.pb-portal) .customer-card-list .customer-line-card,
  .app-shell:not(.pb-portal) .customer-list-header,
  .admin-request-card-list .request-line-card,
  .admin-request-card-list .request-list-header,
  .admin-property-list .property-line-card,
  .admin-property-list .property-list-header,
  .admin-delivery-card-list .delivery-batch-card,
  .admin-delivery-card-list .delivery-list-header,
  .note-groups .admin-note-card-list .note-line-card,
  .note-groups .admin-note-card-list .note-list-header,
  .task-groups .admin-task-card-list .task-line-card,
  .task-groups .admin-task-card-list .task-list-header {
    min-width: 0;
  }

  /* 고객: 중간 폭에서는 날짜·상태 칼럼을 압축해 툴바 영역을 침범하지 않는다. */
  .app-shell:not(.pb-portal) .admin-customer-line-head {
    grid-template-columns: 200px 58px 52px 84px 84px;
    justify-content: start;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .customer-card-list .customer-line-card,
  .app-shell:not(.pb-portal) .customer-list-header {
    padding-left: 14px;
    padding-right: 88px;
  }
  .app-shell:not(.pb-portal) .customer-card-toolbar {
    left: auto;
    right: 14px;
  }

  /* 의뢰: 고객·제목은 남는 폭을 나눠 쓰고 날짜·횟수는 고정한다. */
  .admin-request-card-list .request-line-card,
  .admin-request-card-list .request-list-header {
    padding-left: 14px;
    padding-right: 88px;
  }
  .admin-request-card-list .admin-request-line-head {
    grid-template-columns: minmax(150px, 200px) minmax(200px, 320px) 124px 132px 60px;
    justify-content: start;
    gap: 6px;
  }
  .admin-request-card-list .request-card-toolbar {
    left: auto;
    right: 14px;
  }

  /* 매물: 수정·삭제를 상세로 옮기고 목록에는 보조 기능 아이콘만 남긴다. */
  .admin-property-list .property-card {
    grid-template-columns: minmax(0, 1fr) 108px;
    justify-content: stretch;
  }
  .admin-property-list .property-card > .property-card-toolbar {
    width: 108px;
    justify-content: flex-start;
  }
  .admin-property-list .property-line-head {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr) 110px 48px 104px;
    gap: 6px;
  }
  .admin-property-list .property-list-header {
    padding: 0 130px 6px 14px;
  }

  /* 전달: 긴 의뢰·매물명만 유동, 날짜·공유는 고정한다. */
  .admin-delivery-card-list .admin-delivery-batch-line {
    grid-template-columns: minmax(110px, .8fr) minmax(0, 1.25fr) minmax(0, 1.35fr) 104px 84px 42px;
    gap: 8px;
  }
  /* 의뢰와 매물명은 조금 분리하고, 전달일은 왼쪽으로 당긴다. */
  .admin-delivery-card-list .admin-delivery-batch-line > :nth-child(3) {
    position: relative;
    left: 20px;
    /* 전달일과 맞닿기 전에 한글 한 글자 정도 일찍 말줄임한다. */
    width: calc(100% - 41px);
  }
  .admin-delivery-card-list .admin-delivery-batch-line > :nth-child(4) {
    position: relative;
    left: -20px;
  }
  .admin-delivery-card-list .admin-delivery-batch-line > :nth-child(5) {
    position: relative;
    /* 직전 -20px 위치에서 오른쪽으로 두 글자(약 20px) 복원한다. */
    left: 0;
  }

  /* 메모·할 일: 액션은 상세 모달에 있으므로 목록의 텍스트 폭을 온전히 사용한다. */
  .note-groups .admin-note-card-list .note-line-card,
  .note-groups .admin-note-card-list .note-list-header,
  .task-groups .admin-task-card-list .task-line-card,
  .task-groups .admin-task-card-list .task-list-header {
    padding-left: 14px;
    padding-right: 14px;
  }
  .note-groups .admin-note-card-list .note-line-head {
    grid-template-columns: 90px minmax(100px, .8fr) minmax(140px, 1.2fr) minmax(0, 2fr);
    gap: 8px;
  }
  /* 내용은 의뢰와 두 글자 정도 더 분리하되, 남은 폭 전체에서 말줄임한다. */
  .note-groups .admin-note-card-list .note-line-head > :nth-child(4) {
    position: relative;
    left: 20px;
    width: calc(100% - 20px);
  }
  .task-groups .admin-task-card-list .task-line-head {
    grid-template-columns: minmax(150px, 1.2fr) 118px minmax(100px, .8fr) minmax(0, 1.5fr);
    gap: 8px;
  }
}

/* 고객 패널 자체가 넓을 때만 이력 칼럼을 펼친다.
   보기창은 넓지만 사이드바 때문에 패널이 좁은 경우의 툴바 겹침을 막는다. */
@container (min-width: 900px) {
  .app-shell:not(.pb-portal) .admin-customer-line-head {
    grid-template-columns: 200px 72px 68px 106px 106px;
    gap: 16px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(3) {
    position: relative;
    left: 36px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(4) {
    position: relative;
    left: 84px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(5) {
    position: relative;
    left: 126px;
  }
}

/* 중간 폭의 마지막 구간에서 5열이 더 이상 줄어들 수 없으면
   화면 폭과 무관하게 패널 기준으로 핵심 3열로 전환한다. */
@container (max-width: 670px) {
  .app-shell:not(.pb-portal) .customer-card-list .customer-line-card {
    padding: 8px 82px 8px 12px;
  }
  .app-shell:not(.pb-portal) .customer-list-header {
    padding: 0 82px 6px 12px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head {
    grid-template-columns: minmax(0, 1fr) 54px 82px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(3),
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(5) {
    display: none;
  }
  .app-shell:not(.pb-portal) .customer-card-toolbar {
    right: 10px;
  }
}

@media (min-width: 901px) {
  /* 5열(고객·제목·의뢰일·마지막전달일·전달)은 넓은 폭에서도 왼쪽으로 모아 배치한다. */
  .admin-request-card-list .admin-request-line-head > :nth-child(5) {
    position: relative;
    left: 8px;
  }
}

/* 패널이 최대폭에 가까울 때 남는 공간을 날짜 칼럼에 더 배분한다. */
@container (min-width: 980px) {
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(4) {
    left: 104px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(5) {
    left: 166px;
  }
}

/* ================================================================
   자문위원(pb) 좁은 단일 컬럼 레이아웃 (데스크톱 포함, 상시)
   자문위원 모드는 넓을 이유가 없어 페이지 폭을 좁게 고정하고,
   목록을 강제 확장(min-width) 없이 폭에 맞춰 채워 가로 스크롤을 없앤다.
   컬럼은 숨기지 않고 간격만 좁힌다. admin은 .pb-portal 스코프라 무영향.
   ================================================================ */
/* 자문위원 페이지 폭 좁게 고정(모달보다 살짝 크게) */
.app-shell.pb-portal { max-width: 1040px; }

/* 자문위원 프로그램 전체 최대폭 — 넓은 화면에서 더 늘어나지 않게 하되, 가운데가 아니라
   왼쪽에 고정하고 남는 폭은 오른쪽 여백으로 둔다. 관리자 모드(body에 클래스 없음)는 무영향. */
@media (min-width: 1240px) {
  body.pb-portal-body {
    max-width: 1240px;
    margin-inline: 0;
  }
  body.pb-portal-body .sidebar {
    left: 0;
  }
}

/* 모든 pb 목록: 강제 min-width 제거 → 좁은 폭에 맞춰 채움 */
.pb-portal .customer-card-list,
.pb-portal .request-card-list,
.pb-portal .delivery-card-list,
.pb-portal .property-card-list { overflow-x: visible; }
.pb-portal .customer-card-list .customer-line-card,
.pb-portal .customer-list-header,
.pb-portal .request-card-list .request-line-card,
.pb-portal .request-list-header,
.pb-portal .delivery-card-list .delivery-batch-card,
.pb-portal .delivery-list-header,
.pb-portal .property-card-list .property-line-card,
.pb-portal .property-card-list .property-card,
.pb-portal .property-list-header { min-width: 0; }

/* 고객 리스트: 고객명은 한글 약 15자 폭으로 제한하고 나머지 열을 연속 배치한다. */
.pb-portal .customer-card-list .customer-line-card { padding: 8px 14px; }
.pb-portal .customer-list-header { padding: 0 14px 6px; }
.pb-portal .pb-customer-line-head {
  grid-template-columns: minmax(180px, 200px) 92px 64px 64px 120px 120px;
  gap: 8px;
  justify-content: start;
}
/* 의뢰·전달은 왼쪽으로 모으고, 날짜 두 열은 오른쪽으로 밀어 전달 뒤 여백을 확보한다. */
.pb-portal .pb-customer-line-head > :nth-child(3),
.pb-portal .pb-customer-line-head > :nth-child(4) {
  justify-self: center;
  text-align: center;
}
.pb-portal .pb-customer-line-head > :nth-child(5) { transform: translateX(18px); }
.pb-portal .pb-customer-line-head > :nth-child(6) { transform: translateX(16px); }

/* pb 목록 툴바(+ 아이콘)를 오른쪽 끝으로, 여백은 좁게 */
.pb-portal .request-card-toolbar,
.pb-portal .property-card-toolbar { top: 50%; right: 8px; transform: translateY(-50%); }
.pb-portal .delivery-batch-toolbar { right: 8px; }

/* 의뢰 리스트: 큰 툴바 여백(118px) 축소 → 폭이 유독 넓던 문제 해결, 6칼럼 간격 좁힘 */
/* 카드 사이 gap:12px(다른 목록은 0) 때문에 줄 높이가 더 높아 보이던 문제 해결 */
.pb-portal .request-card-list { gap: 0; }
.pb-portal .request-card-list .request-line-card { padding: 8px 14px; }
.pb-portal .request-list-header { padding: 0 14px 6px; }
.pb-portal .pb-request-line-head {
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.7fr) minmax(0, .7fr) minmax(0, .8fr) minmax(0, .6fr) minmax(0, .5fr);
  gap: 10px;
}

/* 전달 리스트: 방식(5) 숨김 → 고객·의뢰·전달일·매물·상태·열람, 간격 좁힘 */
.pb-portal .delivery-card-list .delivery-batch-card { padding: 8px 14px; }
.pb-portal .delivery-list-header { padding: 0 14px 6px; }
.pb-portal .pb-delivery-batch-line {
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1.7fr) minmax(0, .75fr) minmax(0, 1.1fr) minmax(0, .5fr);
  gap: 10px;
}
/* 방식(5)·상태(6) 칼럼은 데스크톱에서 숨김 → 고객/의뢰(제목)/전달일/매물명/열람 */
.pb-portal .pb-delivery-batch-line > :nth-child(5),
.pb-portal .pb-delivery-batch-line > :nth-child(6) { display: none; }
/* 열람(7) 칼럼은 오른쪽 끝으로 정렬(헤더·값 모두). */
.pb-portal .pb-delivery-batch-line > :nth-child(7) { justify-self: end; text-align: right; }
/* 전달 리스트 가운데 컬럼: 기본(데스크톱)은 의뢰 제목, 폰(≤640)은 매물 이름으로 토글 */
.pb-portal .delivery-request-cell .pb-deliv-props { display: none; }
.pb-portal .delivery-list-header .pb-h-prop { display: none; }

/* 전달매물·매물창고 리스트: 기본 폭에서는 변동(4)·수익률(5)·종류(6)·상태(7)를 숨긴다. */
.pb-portal .property-card-list .property-line-card,
.pb-portal .property-card-list .property-card { padding: 8px 14px; }
.pb-portal .property-list-header { padding: 0 14px 6px; }
.pb-portal .property-line-head {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1.7fr) minmax(0, .7fr) minmax(0, .7fr);
  gap: 10px;
}
.pb-portal .property-line-head > :nth-child(4),
.pb-portal .property-line-head > :nth-child(5),
.pb-portal .property-line-head > :nth-child(6),
.pb-portal .property-line-head > :nth-child(7) { display: none; }
/* 데스크톱은 가격·변동사항·수익률·파일을 독립 열로 표시한다. */
@media (min-width: 901px) {
  .pb-portal .property-line-head {
    grid-template-columns: minmax(150px, 1.05fr) minmax(220px, 1.15fr) 86px 143px 58px 113px;
    gap: 12px;
  }
  .pb-portal .property-line-head > :nth-child(4),
  .pb-portal .property-line-head > :nth-child(5) { display: grid; }
  .pb-portal .pb-property-price-header,
  .pb-portal .pb-property-price-cell {
    box-sizing: border-box;
    padding-left: 22px;
    position: relative;
    left: 22px;
  }
  .pb-portal .pb-property-change-header,
  .pb-portal .pb-property-change-cell {
    position: relative;
    left: 33px;
    justify-self: stretch;
    text-align: left;
  }
  .pb-portal .pb-property-change-cell strong {
    justify-content: flex-start;
    text-align: left;
  }
  .pb-portal .pb-property-change-cell .price-check-detail { display: inline !important; }
  .pb-portal .pb-property-change-cell .price-check-summary,
  .pb-portal .pb-property-change-cell .price-check-detail {
    font-family: inherit !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
  }
  .pb-portal .pb-property-yield-header,
  .pb-portal .pb-property-yield-cell {
    position: relative;
    left: -33px;
    justify-self: stretch;
    text-align: right;
  }
  .pb-portal .pb-property-yield-cell strong {
    justify-content: flex-end;
    text-align: right;
  }
  .pb-portal .pb-price-change-mobile { display: none !important; }
}
@media (max-width: 900px) {
  .pb-portal .property-card-list .property-card .property-line-head .pb-price-change-mobile {
    display: inline !important;
    font: inherit;
  }
  .pb-portal .property-card-list .property-card .property-line-head .pb-price-change-mobile.price-move-up { color: #dc2626; }
  .pb-portal .property-card-list .property-card .property-line-head .pb-price-change-mobile.price-move-down { color: #2563eb; }
}
/* 공통 매물행 규칙이 내부 span을 모두 숨기므로 주소 전용 span은 더 강한 선택자로 복원한다. */
.pb-portal .property-card-list .property-card .property-line-head .pb-addr-full { display: inline; }
.pb-portal .property-card-list .property-card .property-line-head .pb-addr-mobile { display: none; }
.pb-portal .property-card-list .property-card .property-line-head .pb-addr-full,
.pb-portal .property-card-list .property-card .property-line-head .pb-addr-mobile {
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
}

/* 실제 폰 폭에서만 시·도/시·군·구를 생략한다. 441px부터는 즉시 전체 주소로 복원한다. */
@media (max-width: 440px) {
  .pb-portal .property-card-list .property-card .property-line-head .pb-addr-full { display: none; }
  .pb-portal .property-card-list .property-card .property-line-head .pb-addr-mobile { display: inline; }
}

/* ================================================================
   자문위원(pb) 상세 모달 · 공통(모든 폭): 좌우 고정 · 라벨 구분선 · 공통 축약
   레이아웃(다열 vs 2열/카드)은 아래 폭별 블록에서 나눈다.
   ================================================================ */
.pb-portal .request-detail-panel,
.pb-portal .customer-detail-panel { overflow-x: hidden; }
.pb-portal .pb-request-detail-panel .linked-delivery-list,
.pb-portal .customer-detail-panel .linked-delivery-list,
.pb-portal .pb-delivery-detail-panel .delivery-item-list,
.pb-portal .pb-property-detail-panel .property-file-list { overflow-x: hidden; }
.pb-portal .request-detail-grid::after { display: none; }
/* 라벨과 값 사이 아주 가는 구분선 */
.pb-portal .request-detail-grid .request-line-cell > span,
.pb-portal .delivery-detail-grid .request-line-cell > span,
.pb-portal .property-detail-grid .request-line-cell > span {
  padding-bottom: 4px;
  border-bottom: 1px solid #e9edf2;
}
/* 전달 상세: 방식 셀 숨김(전 폭 공통) */
.pb-portal .delivery-detail-grid > :nth-child(4) { display: none; }
/* 전달매물 상세: 가격변동(4)·종류(5) 숨김(전 폭 공통) → 매물·주소·가격·상태·최근전달일 */
.pb-portal .property-detail-grid > :nth-child(4),
.pb-portal .property-detail-grid > :nth-child(5) { display: none; }
.pb-portal .request-readonly-content { height: 118px; }
/* 전달 상세 매물목록: 상태 숨김 + 자료 왼쪽(전 폭 공통) */
.pb-portal .pb-delivery-detail-panel .delivery-item-line > .delivery-item-status,
.pb-portal .pb-delivery-detail-panel .delivery-item-header > span:nth-child(4) { display: none; }
.pb-portal .pb-delivery-detail-panel .delivery-action-headings,
.pb-portal .pb-delivery-detail-panel .delivery-file-links {
  display: grid;
  grid-template-columns: 57px 57px;
  gap: 4px;
  justify-content: start;
  align-items: center;
}
.pb-portal .pb-delivery-detail-panel .delivery-action-headings > span {
  text-align: center;
  overflow: visible;
  text-overflow: clip;
}
.pb-portal .pb-delivery-detail-panel .delivery-action-headings > .im-download-heading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1.05;
}
.pb-portal .pb-delivery-detail-panel .im-download-heading > small {
  margin-top: 3px;
  color: #778781;
  font-size: 8px;
  font-weight: 700;
}
.pb-portal .pb-delivery-detail-panel .delivery-file-links > button { justify-self: center; }
.pb-portal .pb-delivery-detail-panel .delivery-item-price,
.pb-portal .pb-delivery-detail-panel .delivery-item-header > span:nth-child(3) {
  transform: translateX(-8px);
}
.pb-portal .pb-property-detail-panel .property-file-deliveries { padding-left: 12px; }
.pb-portal .pb-customer-detail-grid { min-width: 0; }
/* 전달 N건 버튼: 좁은 칸에서 두 줄로 접히지 않게 글씨 축소·한 줄 고정 */
.pb-portal .pb-property-detail-panel .property-file-delivery-toggle {
  font-size: 12px;
  white-space: nowrap;
  padding: 3px 9px;
  min-height: 28px;
}
.pb-portal .pb-property-detail-panel .property-warehouse-latest-badge {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: 3px 10px;
  border: 1px solid #e6bf59;
  border-radius: 999px;
  background: #fff7d6;
  color: #8a5a00;
  font-size: 12px;
  font-weight: 850;
  line-height: 1;
}
.pb-portal .pb-property-detail-panel .property-warehouse-file-links {
  display: inline-flex;
  justify-content: flex-end;
  gap: 5px;
  overflow: visible;
}

/* 전달매물 상세 · 전달 파일 섹션 정리: 위 정보와 구분선으로 분리, 헤더 컴팩트, IM 라벨을 표에 밀착 */
.pb-portal .pb-property-detail-panel .property-file-section {
  border-top: 1px solid #eef1f5;
  padding-top: 12px;
  gap: 8px;
}
.pb-portal .pb-property-detail-panel .property-file-section-head h3 { font-size: 15px; }
.pb-portal .pb-property-detail-panel .property-file-group { gap: 0; }
.pb-portal .pb-property-detail-panel .property-file-group h4 {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .03em;
  color: #64748b;
  padding-bottom: 6px;
}

/* ================================================================
   >640 (사이~데탑): 다열 표 유지 + 유동(최소폭 제거) → 스크롤 없음, 폰 아님.
   세로 간격도 컴팩트하게(라벨/값이 여러 줄로 늘어지지 않도록).
   ================================================================ */
@media (min-width: 641px) {
  .pb-portal .request-detail-grid,
  .pb-portal .delivery-detail-grid,
  .pb-portal .property-detail-grid { min-width: 0; gap: 5px 14px; }
  .pb-portal .request-detail-grid {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.9fr) minmax(0, .85fr) minmax(0, .85fr) minmax(0, .7fr);
  }
  .pb-portal .delivery-detail-grid {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.9fr) minmax(0, .85fr) minmax(0, .8fr);
  }
  .pb-portal .property-detail-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.9fr) minmax(0, .8fr) minmax(0, .8fr) minmax(0, 1fr);
  }
  .pb-portal .request-detail-grid .request-line-cell,
  .pb-portal .delivery-detail-grid .request-line-cell,
  .pb-portal .property-detail-grid .request-line-cell { gap: 2px; }
  .pb-portal .request-detail-grid .request-line-cell strong,
  .pb-portal .delivery-detail-grid .request-line-cell strong,
  .pb-portal .property-detail-grid .request-line-cell strong { min-height: 0; }
  .pb-portal .property-detail-grid .request-line-cell strong { white-space: normal; }

  /* 의뢰 상세 전달이력: 5열 유동 (날짜·건수·방식·상태·파일명) */
  .pb-portal .pb-request-detail-panel .linked-delivery-line {
    min-width: 0;
    grid-template-columns: minmax(0, .8fr) minmax(0, .5fr) minmax(0, .7fr) minmax(0, .6fr) minmax(0, 1.6fr);
  }
  /* 고객 상세 하단 의뢰리스트: 5열 유동 (제목·의뢰일·목적·상태·의뢰내용) */
  .pb-portal .pb-customer-request-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr) minmax(0, .8fr) minmax(0, .55fr) minmax(0, 1.6fr);
  }
  .pb-portal .pb-customer-detail-grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, .6fr); }
  /* 전달 상세 매물목록: 기능명을 표시할 공간을 확보하고 가격을 조금 왼쪽으로 붙인다. */
  .pb-portal .pb-delivery-detail-panel .delivery-item-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.9fr) minmax(0, .7fr) 118px;
    column-gap: 6px;
  }
  /* 전달매물 파일표: 6열 유동. 파일명(4)은 넓히고 줄바꿈 허용해 잘리지 않게 */
  .pb-portal .pb-property-detail-panel .property-file-line {
    min-width: 0;
    grid-template-columns: 52px minmax(0, .85fr) minmax(0, 1fr) minmax(0, 2.1fr) minmax(0, .7fr) 96px;
    align-items: center;
  }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(4) { white-space: normal; }
  /* 파일 펼침 전달리스트: 5열 유동 + 카드 테두리 제거 → 위 파일표와 같은 납작한 표 행으로 통일 */
  .pb-portal .pb-property-detail-panel .property-file-deliveries { gap: 0; }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr) minmax(0, .9fr) minmax(0, .9fr) minmax(0, .8fr);
    border: 0;
    border-top: 1px solid #eef1f5;
    border-radius: 0;
    background: transparent;
    padding: 7px 10px;
  }
}

/* ================================================================
   ≤640 (폰): 상세 모달 2열/카드 축약 (그대로 유지)
   ================================================================ */
@media (max-width: 640px) {
  .pb-portal .request-detail-grid,
  .pb-portal .delivery-detail-grid,
  .pb-portal .property-detail-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    min-width: 0;
    gap: 10px 12px;
  }
  .pb-portal .property-detail-grid .request-line-cell strong { white-space: normal; min-height: 0; }
  .pb-portal .pb-customer-detail-grid { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); }

  /* 의뢰 상세 전달이력: 날짜·건수·파일명 (방식·상태 숨김) */
  .pb-portal .pb-request-detail-panel .linked-delivery-line {
    min-width: 0;
    grid-template-columns: 88px 48px minmax(0, 1fr);
    gap: 8px;
  }
  .pb-portal .pb-request-detail-panel .linked-delivery-line > :nth-child(3),
  .pb-portal .pb-request-detail-panel .linked-delivery-line > :nth-child(4) { display: none; }

  /* 고객 상세 하단 의뢰리스트: 제목·의뢰일·상태 (목적·의뢰내용 숨김) */
  .pb-portal .pb-customer-request-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1.5fr) 92px 64px;
    gap: 8px;
  }
  .pb-portal .pb-customer-request-line > :nth-child(3),
  .pb-portal .pb-customer-request-line > :nth-child(5) { display: none; }

  /* 전달 상세 매물목록: 매물·주소·가격·개략보기/로고 IM */
  .pb-portal .pb-delivery-detail-panel .delivery-item-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1.9fr) minmax(0, .75fr) 108px;
    column-gap: 6px;
  }
  .pb-portal .pb-delivery-detail-panel .delivery-action-headings,
  .pb-portal .pb-delivery-detail-panel .delivery-file-links {
    grid-template-columns: 52px 52px;
    gap: 4px;
  }
  .pb-portal .pb-delivery-detail-panel .delivery-action-headings > span { font-size: 10px; }
  .im-builder-modal { padding: 12px; }
  .im-builder-panel { height: calc(100dvh - 24px); max-height: calc(100dvh - 24px); padding: 16px; }
  .im-builder-body { grid-template-columns: 1fr; }
  .im-builder-preview { width: min(220px, 70vw); }
  .im-builder-controls { grid-template-columns: 1fr; }
  .im-builder-controls label.full,
  .im-builder-context,
  .im-builder-note { grid-column: 1; }

  /* 전달매물 파일표 → 파일별 카드 */
  .pb-portal .pb-property-detail-panel .property-file-list-header { display: none; }
  .pb-portal .pb-property-detail-panel .property-file-line {
    min-width: 0;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    grid-template-areas:
      "ver  name name icon"
      "upd  date date toggle";
    column-gap: 8px;
    row-gap: 3px;
    align-items: center;
    padding: 9px 10px;
  }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(1) { grid-area: ver; }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(2) { grid-area: upd; }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(3) { grid-area: date; }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(4) {
    grid-area: name;
    white-space: normal;
    font-weight: 700;
  }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(5) { grid-area: toggle; justify-self: end; }
  .pb-portal .pb-property-detail-panel .property-file-line > :nth-child(6) { grid-area: icon; justify-self: end; }

  /* 파일 펼침 전달리스트 → 카드 */
  .pb-portal .pb-property-detail-panel .property-file-delivery-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "cust  date"
      "title title"
      "way   state";
    gap: 3px 8px;
    align-items: center;
  }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line > :nth-child(1) { grid-area: cust; }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line > :nth-child(2) {
    grid-area: title;
    white-space: normal;
  }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line > :nth-child(3) { grid-area: date; justify-self: end; }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line > :nth-child(4) { grid-area: way; }
  .pb-portal .pb-property-detail-panel .property-file-delivery-line > :nth-child(5) { grid-area: state; justify-self: end; }
}

/* ================================================================
   자문위원(pb) 모바일(≤640px) · 목록 카드/축약 (좁은 폰 전용)
   위 상시 규칙보다 뒤에 두어 ≤640에서 목록만 더 축약한다.
   ================================================================ */
@media (max-width: 640px) {
  /* 목록 컨테이너: 강제 가로 스크롤 해제 */
  .pb-portal .customer-card-list,
  .pb-portal .request-card-list,
  .pb-portal .delivery-card-list { overflow-x: visible; }

  /* ---------- 고객 목록 (담당 고객 / 신규 신청) ---------- */
  .pb-portal .customer-card-list .customer-line-card {
    min-width: 0;
    padding: 11px 12px;
  }
  .pb-portal .customer-list-header {
    min-width: 0;
    padding: 0 12px 6px;
  }
  .pb-portal .customer-line-head {
    grid-template-columns: minmax(0, 1.7fr) minmax(0, .82fr) minmax(0, .72fr) minmax(0, .72fr);
    gap: 7px;
  }
  /* 담당 고객: 최근 전달일(5)·등록일(6) 숨김 → 고객명·상태·의뢰·전달 */
  .pb-portal .pb-customer-line-head > :nth-child(5),
  .pb-portal .pb-customer-line-head > :nth-child(6) { display: none; }

  /* ---------- 의뢰 목록 (폰: + 아이콘 제거) ---------- */
  .pb-portal .request-card-list .request-line-card {
    min-width: 0;
    padding: 12px 14px;
  }
  .pb-portal .request-list-header {
    min-width: 0;
    padding: 0 14px 6px;
  }
  .pb-portal .request-line-head {
    /* 고객·제목을 넓게(잘 보이게), 의뢰일·상태는 내용폭에 맞춰 고정으로 줄인다.
       의뢰일은 연도를 숨겨(MM-DD) 폭을 줄이고, 남은 폭은 제목으로 넘긴다. */
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 2.4fr) 52px 48px;
    gap: 10px;
  }
  /* 목적(4)·전달(6) 숨김 → 고객·제목·의뢰일·상태 */
  .pb-portal .pb-request-line-head > :nth-child(4),
  .pb-portal .pb-request-line-head > :nth-child(6) { display: none; }
  /* 상태(5, 마지막 표시 칼럼)를 오른쪽 끝으로 붙인다. */
  .pb-portal .pb-request-line-head > :nth-child(5) { justify-self: end; text-align: right; }
  /* + 상세 아이콘 제거 — 행 전체가 클릭되어 상세가 열림 */
  .pb-portal .request-card-toolbar { display: none; }

  /* ---------- 전달 목록 (폰: 고객·의뢰·전달일 3열, + 아이콘 제거) ---------- */
  .pb-portal .delivery-card-list .delivery-batch-card {
    min-width: 0;
    padding: 11px 14px;
  }
  .pb-portal .delivery-list-header {
    min-width: 0;
    padding: 0 14px 6px;
  }
  .pb-portal .pb-delivery-batch-line {
    /* 전달일은 연도를 숨겨(MM-DD) 폭을 줄이고, 남은 폭은 매물(가운데)로 넘긴다. */
    grid-template-columns: minmax(0, 1fr) minmax(0, 2.1fr) minmax(0, .55fr);
    gap: 8px;
  }
  /* 매물(4)·방식(5)·상태(6)·열람(7) 숨김 → 고객·의뢰·전달일 */
  .pb-portal .pb-delivery-batch-line > :nth-child(4),
  .pb-portal .pb-delivery-batch-line > :nth-child(5),
  .pb-portal .pb-delivery-batch-line > :nth-child(6),
  .pb-portal .pb-delivery-batch-line > :nth-child(7) { display: none; }
  /* + 상세 아이콘 제거 — 행 전체가 클릭되어 상세가 열림 */
  .pb-portal .delivery-batch-toolbar { display: none; }
  /* 가운데 컬럼: 의뢰 제목 → 매물 이름 (반복되는 의뢰 대신 전달 매물로 구분) */
  .pb-portal .delivery-request-cell .pb-deliv-title { display: none; }
  .pb-portal .delivery-request-cell .pb-deliv-props { display: flex; }
  .pb-portal .delivery-list-header .pb-h-req { display: none; }
  .pb-portal .delivery-list-header .pb-h-prop { display: inline; }

  /* ---------- 전달매물 목록 (가격대 그룹 안): 매물·주소·가격, + 아이콘 제거 ---------- */
  .pb-portal .property-card-list .property-line-card,
  .pb-portal .property-card-list .property-card {
    padding: 11px 14px;
  }
  .pb-portal .property-line-head {
    /* 가격은 1000억대까지만 표시하므로 좁은 고정폭으로 줄이고, 남는 폭은 주소로 넘긴다. */
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 2.1fr) 64px;
    gap: 8px;
  }
  /* 파일(8)도 추가로 숨김 → 매물·주소·가격 (가격변동/수익률/종류/상태는 상시 규칙에서 이미 숨김) */
  .pb-portal .property-line-head > :nth-child(8) { display: none; }
  /* 가격(3, 마지막 표시 칼럼)을 오른쪽 끝으로 붙인다. */
  .pb-portal .property-line-head > :nth-child(3) { justify-self: end; text-align: right; }
  /* + 상세 아이콘 제거 — 행 전체가 클릭되어 상세가 열림 */
  .pb-portal .property-card-toolbar { display: none; }
}

/* 관리자 매물 목록: 가격과 수익률 위치를 각각 보정한다. */
@media (min-width: 641px) {
  .app-shell:not(.pb-portal) .admin-property-list .property-address-cell {
    position: relative;
    left: 11px;
    width: calc(100% - 44px);
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    justify-self: stretch;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell strong,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell strong {
    justify-content: flex-end;
    text-align: right;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell {
    position: static;
    left: auto;
    justify-self: stretch;
    text-align: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell strong {
    justify-content: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-header {
    position: relative;
    left: -33px;
    justify-self: stretch;
    text-align: right;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell {
    position: relative;
    left: -33px;
  }
}

/* 관리자 매물 데스크톱: 주소를 생략하지 않고 변동·수익률·등록일을 독립 열로 정렬한다. */
@media (min-width: 901px) {
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head {
    grid-template-columns: 160px minmax(260px, 1fr) 64px 86px 58px 114px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-address-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-address-value,
  .app-shell:not(.pb-portal) .admin-property-list .property-address-text {
    position: static;
    left: auto;
    width: 100%;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-address-text {
    flex: 1 1 auto;
    line-height: 1.35;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-address-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    position: static;
    left: auto;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell strong {
    justify-content: flex-start;
    text-align: left;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-header {
    justify-self: start;
    text-align: left;
  }
  .app-shell:not(.pb-portal) .admin-property-list .price-check-detail {
    display: inline;
  }
  .app-shell:not(.pb-portal) .admin-property-list .price-check-summary,
  .app-shell:not(.pb-portal) .admin-property-list .price-check-detail {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    position: relative;
    left: -22px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-created-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-created-cell {
    box-sizing: border-box;
    padding-left: 16px;
  }
}

/* 관리자 가로형 모바일: 주소를 넓히고 가격·수익률 기준선을 열 구조로 조정한다. */
@media (min-width: 641px) and (max-width: 900px) {
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head {
    grid-template-columns: 160px minmax(150px, 1fr) 58px 18px 47px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-address-cell {
    position: static;
    left: auto;
    width: 100%;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-header,
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell {
    position: static;
    left: auto;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell {
    position: static;
    left: auto;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-header {
    position: static;
    left: auto;
    box-sizing: border-box;
    padding-right: 22px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    position: static;
    left: auto;
    box-sizing: border-box;
    padding-right: 11px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head > :nth-child(6) {
    display: none;
  }

  /* 관리자 매물 상세: 가로형 모바일에서도 데스크톱 최소폭이 모달 밖으로 밀지 않게 한다. */
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] > .request-detail-panel {
    box-sizing: border-box;
    width: min(980px, calc(100vw - 48px));
    min-width: 0;
    max-width: calc(100vw - 48px);
    overflow-x: hidden;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] > .request-detail-panel > *,
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] [data-property-detail-view],
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-section,
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-groups,
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-group,
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-list {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-detail-grid {
    min-width: 0;
    grid-template-columns: minmax(110px, 1fr) minmax(180px, 1.8fr) 80px 100px;
    gap: 9px 10px;
    align-items: start;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-detail-grid::after {
    display: none;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-detail-grid .request-line-cell {
    min-width: 0;
    align-content: start;
    gap: 4px;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-detail-grid .request-line-cell > span {
    display: block;
    width: 100%;
    min-height: 20px;
    padding-bottom: 4px;
    border-bottom: 1px solid #e7ebf0;
    line-height: 1.2;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-detail-grid .request-line-cell > strong {
    min-width: 0;
    min-height: 0;
    padding-top: 1px;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.4;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-list-header {
    display: none;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line {
    min-width: 0;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    grid-template-areas:
      "ver name name file"
      "upd date toggle del";
    gap: 4px 8px;
    padding: 9px 8px;
    border-bottom: 1px solid #edf0f5;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(1) { grid-area: ver; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(2) { grid-area: upd; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(3) { grid-area: date; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(4) {
    grid-area: name;
    white-space: normal;
    font-weight: 700;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(5) { grid-area: toggle; justify-self: end; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(6) { grid-area: file; justify-self: end; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-line > :nth-child(7) { grid-area: del; justify-self: end; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "file date"
      "title title"
      "state confirm";
    gap: 3px 8px;
  }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line > :nth-child(1) { grid-area: file; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line > :nth-child(2) { grid-area: title; white-space: normal; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line > :nth-child(3) { grid-area: date; justify-self: end; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line > :nth-child(4) { grid-area: state; }
  .app-shell:not(.pb-portal) .request-edit-modal[id^="property-detail-"] .property-file-delivery-line > :nth-child(5) { grid-area: confirm; justify-self: end; }
}

/* ================================================================
   관리자 모바일(≤640px) · 목록 축약 + 상세 모달 폭 고정
   데스크톱의 강제 최소폭을 제거하고 핵심 정보만 남긴다.
   ================================================================ */
@media (max-width: 640px) {
  .app-shell:not(.pb-portal) .customer-card-list,
  .app-shell:not(.pb-portal) .admin-request-card-list,
  .app-shell:not(.pb-portal) .admin-property-list,
  .app-shell:not(.pb-portal) .admin-delivery-card-list,
  .app-shell:not(.pb-portal) .admin-note-card-list,
  .app-shell:not(.pb-portal) .admin-task-card-list {
    width: 100%;
    max-width: 100%;
    overflow-x: visible;
  }

  .app-shell:not(.pb-portal) .customer-line-card,
  .app-shell:not(.pb-portal) .customer-list-header,
  .app-shell:not(.pb-portal) .request-line-card,
  .app-shell:not(.pb-portal) .request-list-header,
  .app-shell:not(.pb-portal) .property-line-card,
  .app-shell:not(.pb-portal) .property-list-header,
  .app-shell:not(.pb-portal) .delivery-batch-card,
  .app-shell:not(.pb-portal) .delivery-list-header,
  .app-shell:not(.pb-portal) .note-line-card,
  .app-shell:not(.pb-portal) .note-list-header,
  .app-shell:not(.pb-portal) .task-line-card,
  .app-shell:not(.pb-portal) .task-list-header {
    min-width: 0;
    max-width: 100%;
  }

  .app-shell:not(.pb-portal) .request-line-cell strong {
    min-height: 32px;
  }

  /* 고객: 고객·상태·최근 전달일 + 우측 수정/삭제 */
  .app-shell:not(.pb-portal) .customer-card-list .customer-line-card {
    padding: 8px 82px 8px 12px;
  }
  .app-shell:not(.pb-portal) .customer-list-header {
    padding: 0 82px 6px 12px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head {
    grid-template-columns: minmax(0, 1fr) 54px 82px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(3),
  .app-shell:not(.pb-portal) .admin-customer-line-head > :nth-child(5) {
    display: none;
  }
  .app-shell:not(.pb-portal) .customer-card-toolbar {
    left: auto;
    right: 10px;
  }

  /* 의뢰: 고객·제목·전달 + 우측 수정/삭제 */
  .app-shell:not(.pb-portal) .admin-request-card-list .request-line-card {
    padding: 8px 82px 8px 12px;
  }
  .app-shell:not(.pb-portal) .admin-request-card-list .request-list-header {
    padding: 0 82px 6px 12px;
  }
  .app-shell:not(.pb-portal) .admin-request-card-list .admin-request-line-head {
    grid-template-columns: minmax(72px, .9fr) minmax(0, 1.65fr) 34px;
    gap: 7px;
  }
  /* 의뢰일(3)·마지막 전달일(4) 숨김 → 고객·제목·전달 */
  .app-shell:not(.pb-portal) .admin-request-line-head > :nth-child(3),
  .app-shell:not(.pb-portal) .admin-request-line-head > :nth-child(4) {
    display: none;
  }
  .app-shell:not(.pb-portal) .admin-request-card-list .request-card-toolbar {
    left: auto;
    right: 10px;
  }

  /* 전달: 고객·매물명·전달일·확인 */
  .app-shell:not(.pb-portal) .admin-delivery-card-list .delivery-batch-card {
    padding: 8px 12px;
  }
  .app-shell:not(.pb-portal) .admin-delivery-card-list .delivery-list-header {
    padding: 0 12px 6px;
  }
  .app-shell:not(.pb-portal) .admin-delivery-card-list .admin-delivery-batch-line {
    grid-template-columns: minmax(72px, .85fr) minmax(0, 1.55fr) 48px 32px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .admin-delivery-batch-line > :nth-child(2),
  .app-shell:not(.pb-portal) .admin-delivery-batch-line > :nth-child(5) {
    display: none;
  }
  .app-shell:not(.pb-portal) .admin-delivery-batch-line > :nth-child(3),
  .app-shell:not(.pb-portal) .admin-delivery-batch-line > :nth-child(4),
  .app-shell:not(.pb-portal) .admin-delivery-batch-line > :nth-child(6) {
    left: auto;
    width: auto;
  }
  .app-shell:not(.pb-portal) .admin-delivery-card-list .delivery-date-full { display: none !important; }
  .app-shell:not(.pb-portal) .admin-delivery-card-list .delivery-date-short { display: inline !important; }

  /* 매물: 매물명·가격·수익률·개략보기 4열만 한 줄로 표시한다. */
  .app-shell:not(.pb-portal) .admin-property-list .property-card {
    display: block;
    position: relative;
    padding: 9px 12px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-list-header {
    padding: 0 12px 6px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head {
    /* 매물명이 7자까지 보이도록 이름 열을 넓히고, 비어 있던 등락(4)열을 접어 가격을 오른쪽으로 붙인다. */
    width: calc(100% - 66px);
    grid-template-columns: minmax(0, 1fr) 52px 40px;
    gap: 6px;
    align-items: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-list-header {
    width: 100%;
    grid-template-columns: minmax(0, 1fr) 52px 40px 66px;
  }
  /* 주소(2)·등락(4)·등록일(6) 열 숨김 → 매물명·가격·수익률·개략보기 */
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head > :nth-child(2),
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head > :nth-child(4),
  .app-shell:not(.pb-portal) .admin-property-list .property-line-head > :nth-child(6) {
    display: none;
  }
  /* 매물명 앞 지도 선택 체크박스 여백을 줄여 이름 글자 폭을 조금 더 확보한다. */
  .app-shell:not(.pb-portal) .admin-property-list .property-map-check-wrap {
    margin-right: 4px;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-name-header-desktop {
    display: none;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-name-header-mobile,
  .app-shell:not(.pb-portal) .admin-property-list .property-overview-header {
    display: inline;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-overview-header {
    justify-self: center;
    text-align: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    justify-self: stretch;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-cell strong,
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell strong {
    justify-content: flex-end;
    text-align: right;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell {
    position: static;
    left: auto;
    justify-self: stretch;
    text-align: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-price-change-cell strong {
    justify-content: center;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-card > .property-card-toolbar {
    position: absolute;
    top: 50%;
    right: 12px;
    bottom: auto;
    width: 52px;
    display: flex;
    justify-content: center;
    transform: translateY(-50%);
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-card-toolbar > .property-ai-info-button,
  .app-shell:not(.pb-portal) .admin-property-list .property-card-toolbar > .deal-map-link {
    display: none;
  }
  .app-shell:not(.pb-portal) .admin-property-list .property-yield-cell {
    justify-self: end;
    text-align: right;
  }

  /* 메모: 유형·고객·내용 */
  .app-shell:not(.pb-portal) .note-groups .admin-note-card-list .note-line-card,
  .app-shell:not(.pb-portal) .note-groups .admin-note-card-list .note-list-header {
    padding: 7px 12px;
  }
  .app-shell:not(.pb-portal) .note-groups .admin-note-card-list .note-line-head {
    grid-template-columns: 70px 86px minmax(0, 1fr);
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .note-groups .admin-note-card-list .note-line-head > :nth-child(3) {
    display: none;
  }
  .app-shell:not(.pb-portal) .note-groups .admin-note-card-list .note-line-head > :nth-child(4) {
    left: auto;
    width: auto;
  }

  /* 할 일: 제목·기한·고객 */
  .app-shell:not(.pb-portal) .task-groups .admin-task-card-list .task-line-card,
  .app-shell:not(.pb-portal) .task-groups .admin-task-card-list .task-list-header {
    padding: 7px 12px;
  }
  .app-shell:not(.pb-portal) .task-groups .admin-task-card-list .task-line-head {
    grid-template-columns: minmax(0, 1.35fr) 82px minmax(72px, .8fr);
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .task-groups .admin-task-card-list .task-line-head > :nth-child(4) {
    display: none;
  }

  /* 상세·수정 모달: 항상 화면 안쪽 8px에 고정하고 내부만 세로 스크롤한다. */
  .app-shell:not(.pb-portal) .request-edit-modal {
    place-items: start center;
    padding: 8px;
    overflow: hidden;
  }
  .app-shell:not(.pb-portal) .request-edit-modal > .request-edit-panel,
  .app-shell:not(.pb-portal) .request-edit-modal > .customer-detail-panel,
  .app-shell:not(.pb-portal) .request-edit-modal > .property-ai-panel,
  .app-shell:not(.pb-portal) .request-edit-modal > .shared-property-overview-panel {
    box-sizing: border-box;
    width: calc(100vw - 16px);
    min-width: 0;
    max-width: calc(100vw - 16px);
    max-height: calc(100dvh - var(--mobile-shell-menu-height) - 16px);
    margin: 0;
    overflow-x: hidden;
    overflow-y: auto;
  }
  .app-shell:not(.pb-portal) .request-edit-panel {
    padding: 12px;
    gap: 10px;
  }
  .app-shell:not(.pb-portal) .request-edit-panel > *,
  .app-shell:not(.pb-portal) .request-edit-panel form,
  .app-shell:not(.pb-portal) .request-edit-panel section,
  .app-shell:not(.pb-portal) .request-edit-panel div {
    min-width: 0;
    max-width: 100%;
  }
  .app-shell:not(.pb-portal) .request-edit-panel input,
  .app-shell:not(.pb-portal) .request-edit-panel select,
  .app-shell:not(.pb-portal) .request-edit-panel textarea {
    max-width: 100%;
  }
  .app-shell:not(.pb-portal) .picker-head {
    align-items: flex-start;
    gap: 8px;
  }
  .app-shell:not(.pb-portal) .picker-head h2 {
    min-width: 0;
  }
  .app-shell:not(.pb-portal) .picker-head-actions {
    flex-wrap: wrap;
    justify-content: flex-end;
  }

  /* 상세 상단 정보는 공통 2열. 데스크톱 최소폭과 가로 구분선을 제거한다. */
  .app-shell:not(.pb-portal) .request-detail-grid,
  .app-shell:not(.pb-portal) .customer-detail-grid,
  .app-shell:not(.pb-portal) .admin-customer-detail-grid,
  .app-shell:not(.pb-portal) .delivery-detail-grid,
  .app-shell:not(.pb-portal) .property-detail-grid,
  .app-shell:not(.pb-portal) .note-detail-grid,
  .app-shell:not(.pb-portal) .task-detail-grid {
    min-width: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px 10px;
    align-items: start;
  }
  .app-shell:not(.pb-portal) .request-detail-grid::after,
  .app-shell:not(.pb-portal) .admin-customer-detail-grid::after,
  .app-shell:not(.pb-portal) .note-detail-grid::after {
    display: none;
  }
  .app-shell:not(.pb-portal) .request-detail-grid .request-line-cell strong,
  .app-shell:not(.pb-portal) .customer-detail-grid .request-line-cell strong,
  .app-shell:not(.pb-portal) .delivery-detail-grid .request-line-cell strong,
  .app-shell:not(.pb-portal) .property-detail-grid .request-line-cell strong,
  .app-shell:not(.pb-portal) .note-detail-grid .request-line-cell strong,
  .app-shell:not(.pb-portal) .task-detail-grid .request-line-cell strong {
    min-height: 0;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  /* 자문위원 상세와 동일하게 각 칼럼명 아래에 개별 구분선을 둔다. */
  .app-shell:not(.pb-portal) .request-detail-grid .request-line-cell,
  .app-shell:not(.pb-portal) .customer-detail-grid .request-line-cell,
  .app-shell:not(.pb-portal) .delivery-detail-grid .request-line-cell,
  .app-shell:not(.pb-portal) .property-detail-grid .request-line-cell,
  .app-shell:not(.pb-portal) .note-detail-grid .request-line-cell,
  .app-shell:not(.pb-portal) .task-detail-grid .request-line-cell {
    align-content: start;
    gap: 4px;
  }
  .app-shell:not(.pb-portal) .request-detail-grid .request-line-cell > span,
  .app-shell:not(.pb-portal) .customer-detail-grid .request-line-cell > span,
  .app-shell:not(.pb-portal) .delivery-detail-grid .request-line-cell > span,
  .app-shell:not(.pb-portal) .property-detail-grid .request-line-cell > span,
  .app-shell:not(.pb-portal) .note-detail-grid .request-line-cell > span,
  .app-shell:not(.pb-portal) .task-detail-grid .request-line-cell > span {
    display: block;
    width: 100%;
    min-height: 20px;
    padding-bottom: 4px;
    border-bottom: 1px solid #e7ebf0;
    line-height: 1.2;
  }
  .app-shell:not(.pb-portal) .request-detail-grid .request-line-cell > strong,
  .app-shell:not(.pb-portal) .customer-detail-grid .request-line-cell > strong,
  .app-shell:not(.pb-portal) .delivery-detail-grid .request-line-cell > strong,
  .app-shell:not(.pb-portal) .property-detail-grid .request-line-cell > strong,
  .app-shell:not(.pb-portal) .note-detail-grid .request-line-cell > strong,
  .app-shell:not(.pb-portal) .task-detail-grid .request-line-cell > strong {
    align-items: flex-start;
    padding-top: 1px;
    line-height: 1.4;
  }

  /* 의뢰 상세 전달이력: 전달일·건수·매물명·확인 */
  .app-shell:not(.pb-portal) .request-detail-panel .linked-delivery-line:not(.customer-request-line) {
    min-width: 0;
    grid-template-columns: 82px 42px minmax(0, 1fr) 34px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .linked-delivery-line:not(.customer-request-line) > :nth-child(3),
  .app-shell:not(.pb-portal) .request-detail-panel .linked-delivery-line:not(.customer-request-line) > :nth-child(4) {
    display: none;
  }

  /* 고객 상세 관련 의뢰: 제목·의뢰일·상태 */
  .app-shell:not(.pb-portal) .customer-detail-panel .customer-request-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) 82px 54px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .customer-detail-panel .customer-request-line > :nth-child(3) {
    display: none;
  }

  /* 전달 상세 매물: 매물·주소·가격·자료, 상태는 상세 상단에서 확인 */
  .app-shell:not(.pb-portal) .admin-delivery-detail-panel .delivery-item-list {
    overflow-x: hidden;
  }
  .app-shell:not(.pb-portal) .admin-delivery-detail-panel .delivery-item-line {
    min-width: 0;
    grid-template-columns: minmax(72px, 1fr) minmax(0, 1.35fr) 58px 76px;
    gap: 5px;
    padding: 7px 6px;
  }
  .app-shell:not(.pb-portal) .admin-delivery-detail-panel .delivery-item-line > :nth-child(4) {
    display: none;
  }
  .app-shell:not(.pb-portal) .admin-delivery-detail-panel .delivery-file-links {
    grid-template-columns: repeat(2, 32px);
    gap: 4px;
  }

  /* 상세 안의 관련 메모·할 일도 3칼럼 카드로 축약한다. */
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-line-card,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-line-card,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-list-header,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-list-header {
    min-width: 0;
    max-width: 100%;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-line-card,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-line-card {
    padding: 7px 8px 45px;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-list-header,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-list-header {
    padding: 0 8px 6px;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-line-head {
    grid-template-columns: 70px minmax(0, 1fr) 82px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-line-head > :nth-child(2) {
    display: none;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-line-head {
    grid-template-columns: minmax(0, 1fr) 112px 58px;
    gap: 7px;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-line-head > :nth-child(4) {
    display: none;
  }
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .note-card-toolbar,
  .app-shell:not(.pb-portal) .request-detail-panel .compact-note-list .task-card-toolbar {
    top: auto;
    right: 8px;
    bottom: 7px;
    transform: none;
  }

  /* 매물 상세 파일표는 파일별 2행 카드로 전환한다. */
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-list-header {
    display: none;
  }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line {
    min-width: 0;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    grid-template-areas:
      "ver name name file"
      "upd date toggle del";
    gap: 4px 8px;
    padding: 9px 8px;
    border-bottom: 1px solid #edf0f5;
  }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(1) { grid-area: ver; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(2) { grid-area: upd; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(3) { grid-area: date; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(4) {
    grid-area: name;
    white-space: normal;
    font-weight: 700;
  }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(5) { grid-area: toggle; justify-self: end; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(6) { grid-area: file; justify-self: end; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-line > :nth-child(7) { grid-area: del; justify-self: end; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-toggle {
    min-height: 28px;
    padding: 3px 7px;
    white-space: nowrap;
    font-size: 12px;
    line-height: 1.2;
  }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "file date"
      "title title"
      "state confirm";
    gap: 3px 8px;
  }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line > :nth-child(1) { grid-area: file; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line > :nth-child(2) { grid-area: title; white-space: normal; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line > :nth-child(3) { grid-area: date; justify-self: end; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line > :nth-child(4) { grid-area: state; }
  .app-shell:not(.pb-portal) [id^="property-detail-"] .property-file-delivery-line > :nth-child(5) { grid-area: confirm; justify-self: end; }

  /* 개략보기·AI·표 모달도 화면 폭 안에 고정한다. */
  .app-shell:not(.pb-portal) .shared-property-overview-modal,
  .app-shell:not(.pb-portal) .property-share-dialog,
  .app-shell:not(.pb-portal) .im-builder-modal {
    padding: 8px;
  }
  .app-shell:not(.pb-portal) .shared-property-overview-panel,
  .app-shell:not(.pb-portal) .property-ai-panel,
  .app-shell:not(.pb-portal) .im-builder-panel {
    width: calc(100vw - 16px);
    min-width: 0;
    max-width: calc(100vw - 16px);
    max-height: calc(100dvh - 16px);
  }
  .app-shell:not(.pb-portal) .shared-property-overview-panel {
    padding-left: 18px;
    padding-right: 18px;
  }
  .app-shell:not(.pb-portal) .shared-property-overview-download-bar {
    margin-left: -18px;
    margin-right: -18px;
    padding-left: 18px;
    padding-right: 18px;
  }
  .app-shell:not(.pb-portal) .table-wrap,
  .app-shell:not(.pb-portal) .property-price-history-table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
  }
}

/* 휴대폰 사진 등록: 등록 썸네일 수와 무관하게 PDF 편집 공간을 확보하고 모달 전체를 스크롤한다. */
@media (max-width: 760px) {
  .app-shell:not(.pb-portal) .front-photo-editor-panel {
    grid-template-rows: repeat(6, auto);
    padding: 0;
    gap: 0;
    overflow-y: auto;
  }
  .app-shell:not(.pb-portal) .front-photo-workspace {
    overflow: visible;
  }
  .app-shell:not(.pb-portal) .front-photo-stage {
    min-height: min(520px, 58dvh);
  }
}

/* ============================================================
   매물 개략보기 — 매거진 타이포 (Pretendard 모던 고딕: 제목·가격·넘버·섹션·리드문)
   Pretendard(가변, 동적 서브셋)를 각 페이지 <head>에서 로드. 없으면 Apple SD Gothic Neo 폴백.
   세리프(궁서 느낌) 아님 — 각지고 현대적인 고딕으로 통일.
   ============================================================ */
:root { --ov-serif: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif; }
/* #1 제목·가격·섹션 넘버/제목을 현대 고딕 굵게 */
.shared-property-overview-panel h2 {
  font-family: var(--ov-serif);
  font-weight: 800;
  letter-spacing: -.035em;
}
.shared-property-overview-hero strong {
  font-family: var(--ov-serif);
  font-weight: 800;
  letter-spacing: -.03em;
}
.shared-property-overview-section h3,
.shared-property-overview-section h3 .shared-property-overview-section-title {
  font-family: var(--ov-serif);
  font-weight: 800;
  letter-spacing: -.03em;
}
.shared-property-overview-section h3 { font-size: 18px; }
.shared-property-overview-section h3 .shared-property-overview-section-number {
  font-family: var(--ov-serif);
  font-weight: 700;
  font-size: 26px;
  color: #c4c8c1;
  letter-spacing: -.02em;
}
/* #2 값 위계: 라벨은 값보다 작지만 흐릿하지 않게(가독), 강조(★) 값은 색·굵기로만 */
.shared-property-overview-grid span {
  letter-spacing: .02em;
  font-weight: 700;
  color: #6f7a74;
  font-size: 12px;
}
.shared-property-overview-grid > div.is-emphasized span { color: #b5822a; }
/* 강조값은 색(골드)+굵기로만 강조. 글자 크기는 절대 키우지 않는다 —
   키우면 값이 줄바뀜돼서 안 키우기로 합의된 부분. (일반 값과 동일 크기 유지) */
.shared-property-overview-grid > div.is-emphasized strong {
  font-family: var(--ov-serif);
  font-weight: 800;
  color: #8a5e10;
}
/* 핵심 특징 프로즈: 1~4 값과 '같은 크기'로 통일(크기 지정 안 함 → .grid strong 상속).
   본문임을 굵기(약간 가볍게)+넉넉한 줄간격으로만 구분한다. */
.overview-section-summary .shared-property-overview-grid strong {
  font-family: var(--ov-serif);
  font-weight: 450;
  line-height: 1.75;
  letter-spacing: -.01em;
  color: #2b332f;
}
/* #3 풀블리드 히어로(모바일) — 패널 좌우 패딩을 상쇄해 화면 끝까지 */
@media (max-width: 800px) {
  /* 헤더 초록 구분선을 사진처럼 풀블리드로: 안쪽 폭 바 vs 풀블리드 사진 폭 불일치 해소.
     경계선을 화면 끝까지 늘려(::after) 사진과 같은 폭 기준으로 맞춘다.(데스크톱은 기존 유지) */
  .shared-property-overview-panel .picker-head {
    border-bottom: 0;
    position: relative;
  }
  .shared-property-overview-panel .picker-head::after {
    content: "";
    position: absolute;
    left: -24px;
    right: -24px;
    bottom: 0;
    border-bottom: 2px solid #183b32;
  }
  /* 사진을 헤더(초록선) 바로 밑에 붙여, 선이 사진의 윗테두리처럼 이음새가 되게 한다.
     (선 아래 빈 띠 때문에 선이 붕 떠 보이던 것 해소) */
  .shared-property-overview-content.has-front-photo > .overview-media-col { margin-top: 0; }
  .shared-property-overview-hero strong { font-size: 44px; }
  .shared-property-overview-section h3 .shared-property-overview-section-number {
    font-size: 24px;
    margin-right: 8px;
    vertical-align: baseline;
  }
  .shared-property-overview-content.has-front-photo > .overview-media-col {
    margin-left: -24px;
    margin-right: -24px;
    width: calc(100% + 48px);
  }
  .overview-media-col > .shared-property-overview-photo {
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }
}
@media (max-width: 600px) {
  .shared-property-overview-content.has-front-photo > .overview-media-col {
    margin-left: -18px;
    margin-right: -18px;
    width: calc(100% + 36px);
  }
  /* 패널 좌우 패딩이 18px이므로 풀블리드 구분선도 -18px로 맞춘다. */
  .shared-property-overview-panel .picker-head::after {
    left: -18px;
    right: -18px;
  }
  /* 모바일은 라벨을 한 단계 더 키운다(작게 느껴진다는 피드백). */
  .shared-property-overview-grid span { font-size: 13px; }
}
