@charset "utf-8";
/*═══════════════════════════════════════════════
  매물 상세 (property-rental / property-sale)
  theme/map/skin/board/property-rental/view.css

  · 클래스는 모두 .pv- 프리픽스 → style.css 와 충돌 없음
  · 색상 토큰은 상단 :root 에서 한 번에 조정
═══════════════════════════════════════════════*/
.pv {
    --pv-gold:      #b7a389;
    --pv-gold-deep: #98856c;
    --pv-ink:       #23201d;
    --pv-body:      #5c5956;
    --pv-mute:      #8d8781;
    --pv-line:      #e7e2da;
    --pv-fill:      #f7f5f2;
    --pv-radius:    14px;

    width: 100% !important;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 0 50px;   /* 푸터와의 간격 */
    border: 0;
    background: transparent;
    color: var(--pv-ink);
    font-family: 'Pretendard', 'Noto Sans KR', sans-serif;
}

.pv .pv-card {
    background: #fff;
    border: 1px solid var(--pv-line);
    border-radius: var(--pv-radius);
    padding: 26px;
    margin-bottom: 16px;
}

.pv .pv-sec-title {
    margin: 0 0 18px;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--pv-ink);
}

/*───────────── 상단 툴바 ─────────────*/
.pv-topbar {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 4px 22px;
}

.pv-topbar__back {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    font-size: 1.375rem;
    color: var(--pv-ink);
}

.pv-topbar__title {
    font-size: 1.125rem;
    font-weight: 600;
}

.pv-topbar__util {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

/* style.css 의 .property-favorite-btn 이 margin/padding/height 를 갖고 있어
   같은 요소에 함께 걸립니다. 아래에서 명시적으로 되돌립니다. */
.pv .pv-icon-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 42px;
    height: 42px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--pv-line);
    border-radius: 10px;
    background: #fff;
    font-size: 1.25rem;
    font-weight: 400;
    color: var(--pv-body);
    transition: all 0.2s;
}

.pv .pv-icon-btn:hover { border-color: var(--pv-gold); color: var(--pv-gold-deep); }
.pv .pv-icon-btn.active { border-color: var(--pv-gold); background: #fff; color: #d0574f; }

/*───────────── 히어로 ─────────────*/
.pv-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
    gap: 24px;
    align-items: start;
    margin-bottom: 30px;
}

.pv-hero__media { min-width: 0; }

/* 대표 사진 — 가로 기준 7:5 (1000 × 714) */
.pv-gallery {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 7 / 5;
    border-radius: var(--pv-radius);
    overflow: hidden;
    background: var(--pv-fill);
}

/* 사진 — 모양에 따라 다르게 채웁니다.

     가로로 긴 사진 → 가로·세로를 꽉 채웁니다 (넘치는 만큼만 잘림)
     세로로 긴 사진 → 세로를 채우고 좌우에 여백이 생깁니다

   어느 쪽인지는 아래 스크립트가 사진을 읽어 정합니다. */
.pv-gallery img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;          /* 기본값 — 가로로 긴 사진 */
    object-position: center;
}

/* 세로로 긴 사진 */
.pv-gallery img.is-tall {
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

.pv-gallery--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 5;
    color: var(--pv-mute);
}

.pv-thumbs {
    display: flex;
    gap: 8px;
    margin-top: 10px;
    overflow-x: auto;
    cursor: grab;

    /* 스크롤막대는 감추고 손으로 끌어 넘깁니다 */
    scrollbar-width: none;
    -ms-overflow-style: none;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    touch-action: pan-x pan-y;   /* 위아래 스크롤을 막지 않습니다 */
    user-select: none;
    -webkit-user-select: none;
}

.pv-thumbs::-webkit-scrollbar { display: none; }

.pv-thumbs.is-dragging { cursor: grabbing; scroll-behavior: auto; }

/* 끌 때 사진이 딸려오지 않게 */
.pv-thumbs img { pointer-events: none; -webkit-user-drag: none; }

/* 체크 상자는 끌기와 상관없이 눌립니다 */
.pv-thumbs .pv-pick,
.pv-thumbs .pv-pick * {
    pointer-events: auto;
    touch-action: auto;
    user-select: auto;
    -webkit-user-select: auto;
}

.pv-thumb {
    width: 88px;
    height: 66px;
    padding: 0;
    border: 2px solid transparent;
    border-radius: 8px;
    overflow: hidden;
    background: none;
}

.pv-thumb.is-active { border-color: var(--pv-gold); }
.pv-thumb img { width: 100%; height: 100%; object-fit: cover; }

.pv-hero__aside .pv-card { margin-bottom: 14px; }
.pv-hero__aside .pv-card:last-child { margin-bottom: 0; }

/*───────────── 요약 카드 ─────────────*/
.pv-badge {
    display: inline-block;
    padding: 7px 14px;
    border-radius: 999px;
    background: var(--pv-ink);
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
}

.pv .pv-title,
.property-view #bo_v_title {
    padding-top: 10px;
}

.pv .pv-title {
    margin: 14px 0 8px;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--pv-ink);
    word-break: keep-all;
}

.pv-addr {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--pv-body);
    font-size: 1rem;
}

.pv-addr i { color: var(--pv-gold-deep); }

/*───────────── 핵심 스펙 ─────────────*/
.pv-spec-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}

.pv-spec {
    padding: 14px 16px;
    border: 1px solid var(--pv-line);
    border-radius: 10px;
    background: var(--pv-fill);
}

.pv-spec dt {
    margin-bottom: 6px;
    font-size: 0.8125rem;
    color: var(--pv-mute);
}

.pv-spec dd {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--pv-ink);
    white-space: nowrap;
}

.pv-note {
    margin-top: 14px;
    font-size: 0.8125rem;
    color: var(--pv-mute);
}

/*───────────── Check Point ─────────────*/
/*───────────── 버튼 ─────────────*/
.pv .pv-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    height: auto;
    min-height: 54px;
    margin: 0;
    padding: 0 18px;
    border: 1px solid var(--pv-gold);
    border-radius: 10px;
    background: #fff;
    color: var(--pv-gold-deep);
    font-size: 1.0625rem;
    font-weight: 600;
    transition: all 0.2s;
}

.pv .pv-btn--line:hover { background: var(--pv-fill); }

/* 전화 버튼 — 평소 골드 채움, 호버 시 검정 */
.pv .pv-btn--dark {
    background: var(--pv-gold-deep);
    border-color: var(--pv-gold-deep);
    color: #fff;
}

.pv .pv-btn--dark:hover {
    background: var(--pv-ink);
    border-color: var(--pv-ink);
    color: #fff;
}

.pv .pv-btn.active {
    background: var(--pv-gold);
    border-color: var(--pv-gold);
    color: #fff;
}

.pv-actions__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-top: 10px;
}

/* 첫 줄(지도에서 보기 · 관심매물)은 카드 위쪽에 붙습니다 */
.pv-actions__row:first-child { margin-top: 0; }

/*───────────── 상세 정보 그리드 ─────────────*/
.pv-info__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 22px;
    margin: 0;
}

/* 한 줄을 다 쓰는 행 (주소처럼 긴 값) */
.pv-info__row--full { grid-column: 1 / -1; }

.pv-info__row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 15px 18px;
    border-radius: 10px;
    background: var(--pv-fill);
}

.pv-info__row dt {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 130px;
    color: var(--pv-mute);
    font-size: 0.9375rem;
}

.pv-info__row dt i { font-size: 1.0625rem; }

.pv-info__row dd {
    margin: 0;
    font-weight: 600;
    color: var(--pv-ink);
    word-break: break-all;
}

/*───────────── 옵션 ─────────────*/
.pv-option-row {
    display: flex;
    gap: 18px;
    padding: 14px 0;
    border-bottom: 1px solid var(--pv-line);
}

.pv-option-row:last-child { border-bottom: 0; }

.pv-option-row strong {
    flex: 0 0 130px;
    color: var(--pv-mute);
    font-weight: 500;
}

.pv-option-row span {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.pv-option-row em {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 12px;
    border-radius: 999px;
    background: var(--pv-fill);
    color: var(--pv-ink);
    font-style: normal;
    font-size: 0.875rem;
}

.pv-option-row em i { color: var(--pv-gold-deep); }

/*───────────── 본문 (요약 컬럼 안으로 이동, 제목 없음) ─────────────*/
.pv-content .pv-sec-title { margin-bottom: 16px; }
.pv-content .pv-sec-title i { color: var(--pv-gold); }

/* 본문 목록 — 불릿·번호에 포인트 색 */
.pv-content #bo_v_con ul,
.pv-content #bo_v_con ol {
    padding-left: 22px;
    margin: 12px 0;
    list-style: revert;
}

.pv-content #bo_v_con li {
    margin-bottom: 6px;
    line-height: 1.8;
}

.pv-content #bo_v_con li::marker { color: var(--pv-gold); }

.pv-content #bo_v_con {
    color: var(--pv-body);
    line-height: 1.8;
    font-size: 0.9375rem;
    word-break: keep-all;
}

.pv-content #bo_v_con img { max-width: 100%; height: auto; }
.pv-content #bo_v_con p:not(:last-child) { margin-bottom: 0.7em; }

.pv-sign {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--pv-line);
    color: var(--pv-mute);
    font-size: 0.875rem;
}

/*───────────── 지도 ─────────────*/
.pv-map #propertyViewMap {
    width: 100%;
    height: 380px;
    border-radius: 10px;
    overflow: hidden;
    background: var(--pv-fill);
}

.pv-map__addr {
    margin-top: 12px;
    color: var(--pv-body);
}

/*───────────── 대장 정보 (접기) ─────────────*/
.pv-registry { padding: 8px 26px; }

.pv-details { border-bottom: 1px solid var(--pv-line); }
.pv-details:last-child { border-bottom: 0; }

.pv-details summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 0;
    font-size: 1.0625rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}

.pv-details summary::-webkit-details-marker { display: none; }
.pv-details summary i { color: var(--pv-gold); transition: transform 0.25s; }
.pv-details[open] summary i { transform: rotate(180deg); }
.pv-details .pv-info__grid { padding-bottom: 20px; }

/*───────────── 첨부파일 ─────────────*/
.pv-files li {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
}

.pv-files i { color: var(--pv-gold-deep); }

/*───────────── 매물 더보기 ─────────────*/
.pv-related__list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}

.pv-related__list a { display: block; }

.pv-related__thumb {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    margin-bottom: 12px;
    border-radius: 10px;
    background: var(--pv-fill) center / cover no-repeat;
}

.pv-related__list strong {
    display: block;
    margin-bottom: 5px;
    font-size: 1rem;
    font-weight: 600;
    color: var(--pv-ink);
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.pv-related__list em {
    font-style: normal;
    font-size: 0.9375rem;
    color: var(--pv-mute);
}

.pv-related__list a:hover strong { text-decoration: underline; }

/*───────────── 하단 이동 버튼 ─────────────*/
.pv-footer-nav {
    display: flex;
    justify-content: center;
    gap: 14px;
    margin: 34px 0 0;
}

.pv .pv-btn--pill {
    width: auto;
    min-width: 180px;
    min-height: 52px;
    border-radius: 999px;
}

.pv .pv-btn--pill:hover {
    background: var(--pv-gold-deep);
    border-color: var(--pv-gold-deep);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(152, 133, 108, 0.28);
}

.pv .pv-btn--pill:active {
    transform: translateY(0);
    box-shadow: none;
}

/* 나머지 버튼도 눌리는 느낌 통일 */
.pv .pv-btn--dark:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(35, 32, 29, 0.28); }
.pv .pv-btn--line:hover { border-color: var(--pv-gold-deep); }
.pv .pv-btn:active { transform: translateY(0); }

/*───────────── 관리자 영역 ─────────────
   그누보드 기본 .btn_bo_user / .more_opt 는 float 기반이라
   flex 컨테이너 안에서 높이가 0으로 접힙니다.
   그래서 이 스킨은 해당 클래스를 쓰지 않고 직접 구성합니다. */
.pv-adminbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    padding: 14px 18px;
    margin-bottom: 20px;
    border: 1px solid var(--pv-line);
    border-radius: 10px;
    background: var(--pv-fill);
}

.pv-adminbar__btns {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.pv-abtn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 38px;
    padding: 0 16px;
    border: 1px solid var(--pv-line);
    border-radius: 8px;
    background: #fff;
    color: var(--pv-body);
    font-size: 0.9375rem;
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    transition: all 0.18s;
}

.pv-abtn:hover {
    border-color: var(--pv-gold);
    color: var(--pv-gold-deep);
}

.pv-abtn i { font-size: 1.0625rem; }

.pv-abtn--primary {
    border-color: var(--pv-gold-deep);
    background: var(--pv-gold-deep);
    color: #fff;
}

.pv-abtn--primary:hover {
    background: var(--pv-ink);
    border-color: var(--pv-ink);
    color: #fff;
}

.pv-abtn--danger { color: #c0483f; }

.pv-abtn--danger:hover {
    border-color: #c0483f;
    background: #fdf3f2;
    color: #a83a32;
}

.pv-adminbar__meta {
    margin-left: auto;
    color: var(--pv-mute);
    font-size: 0.875rem;
}

/*═══════════════════════════════════════════════
  반응형
═══════════════════════════════════════════════*/
@media (max-width: 1024px) {
    .pv-hero { grid-template-columns: 1fr; }
    /* 좁은 화면 — 같은 7:5 비율을 씁니다.
       화면 폭에 따라 높이가 알아서 따라옵니다. */
    .pv-gallery--empty { aspect-ratio: 7 / 5; }

    .pv-related__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 780px) {
    .pv { padding-bottom: 40px; }
    .pv .pv-card { padding: 20px; border-radius: 12px; }
    .pv .pv-title { font-size: 1.625rem; }
    .pv-spec-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pv-spec dd { font-size: 1rem; }
    .pv-info__grid { grid-template-columns: 1fr; }
    .pv-info__row { gap: 10px; padding: 13px 14px; }
    .pv-info__row dt { flex: 0 0 100px; font-size: 0.875rem; }
    .pv-option-row { flex-direction: column; gap: 8px; }
    .pv-option-row strong { flex: none; }
    .pv-map #propertyViewMap { height: 260px; }
    .pv-footer-nav { flex-direction: column; }
    .pv .pv-btn--pill { width: 100%; }
    .pv-adminbar { padding: 12px 14px; }
    .pv-adminbar__meta { margin-left: 0; width: 100%; }
    .pv-abtn { height: 36px; padding: 0 12px; font-size: 0.875rem; }
}

@media (max-width: 480px) {
    .pv-related__list { grid-template-columns: 1fr; }
    .pv-actions__row { grid-template-columns: 1fr; }

    /* 썸네일 — 한 화면에 세 개가 꽉 차게.
       칸 사이 여백 둘(16px)을 뺀 나머지를 셋이 나눕니다.
       넷째부터는 옆으로 밀어 봅니다.

       바깥(li)과 안쪽(button)에 모두 폭을 줘야 합니다.
       하나만 잡으면 다른 쪽이 원래 크기(88px)로 남습니다. */
    .pv .pv-thumbs li {
        flex: 0 0 calc((100% - 16px) / 3);
        width: calc((100% - 16px) / 3);
        min-width: 0;
    }

    .pv .pv-thumbs .pv-thumb {
        width: 100% !important;
        height: auto !important;
        aspect-ratio: 4 / 3;
    }
}


/*═══════════════════════════════════════════════
  인쇄 전용 요소 — 화면에서는 숨김
═══════════════════════════════════════════════*/
.pv-print-head,
.pv-print-foot { display: none; }


/*═══════════════════════════════════════════════
  @media print — 매물 정보 출력용 (A4 1장 목표)
═══════════════════════════════════════════════*/
@media print {
    /* ── 용지 여백 ──
       프린터마다 물리적으로 인쇄 불가능한 가장자리가 있습니다.
       (보통 3~5mm, 일부 기종 6.35mm)
       아래 값은 그 영역을 피하도록 넉넉히 잡은 것입니다.
       위/아래 14mm · 좌우 13mm → 실제 인쇄 폭 184mm

       ※ 브라우저 인쇄창의 '여백'을 '없음'으로 두면 이 값이 무시되어
         가장자리가 잘릴 수 있습니다. '기본값'으로 두고 인쇄하세요. */
    @page {
        size: A4 portrait;
        margin: 14mm 13mm;
    }

    /* 문단이 페이지 경계에서 한두 줄만 떨어지는 것 방지 */
    p, li, dd, dt {
        orphans: 2;
        widows: 2;
    }

    /* ── 컨테이너 초기화 ──
       테마의 #wrap / .con 폭과 여백이 남아 있으면
       내용이 페이지 밖으로 밀려 오른쪽이 잘립니다. */
    html {
        overflow: visible !important;
        background: #fff !important;
        font-size: 10pt;
    }

    body {
        margin: 0 !important;
        padding: 0 !important;
        background: #fff !important;
    }

    #wrap,
    article#wrap,
    .pv,
    .pv .con {
        width: 100% !important;
        max-width: none !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        float: none !important;
    }

    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
        box-shadow: none !important;
    }

    /* ── 사이트 공통 UI 숨김 ── */
    #header,
    #footer,
    .mobile_screen,
    .fab_wrap,
    #mapChatLauncher,
    #mapChatPanel,
    #hd_login_msg,
    #hd_pop,
    #top_btn,
    .pv-topbar,
    .pv-adminbar,
    .pv-thumbs,
    .pv-actions,
    .pv-related,
    .pv-footer-nav,
    .pv-files,
    .pv-map #propertyViewMap {
        display: none !important;
    }

    /* ── 인쇄 전용 머리글 ── */
    .pv-print-head {
        display: flex !important;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10pt;
        padding-bottom: 5pt;
        margin-bottom: 8pt;
        border-bottom: 1.5pt solid #98856c;
    }

    .pv-print-head__brand { min-width: 0; }

    .pv-print-head__brand strong {
        display: block;
        margin-bottom: 2pt;
        font-size: 12pt;
        font-weight: 800;
        color: #23201d;
    }

    .pv-print-head__brand span {
        color: #5c5956;
        font-size: 7.5pt;
        line-height: 1.45;
    }

    .pv-print-head__meta {
        flex: 0 0 auto;
        text-align: right;
        white-space: nowrap;
        color: #5c5956;
        font-size: 7.5pt;
        line-height: 1.5;
    }

    .pv-print-head__meta span { display: block; }

    /* ── 카드 공통 ── */
    .pv .pv-card {
        margin: 0 0 6pt;
        padding: 0;
        border: 0;
        border-radius: 0;
        background: transparent;
        overflow: visible;
        break-inside: avoid;
        page-break-inside: avoid;
    }

    /* ── 상단: 사진 + 요약 ── */
    .pv-hero {
        display: grid !important;
        grid-template-columns: 38% 1fr;
        gap: 8pt;
        margin-bottom: 6pt;
        break-inside: avoid;
    }

    .pv-hero__media,
    .pv-hero__aside { min-width: 0; }

    .pv-gallery { border-radius: 2pt; }

    .pv-gallery img {
        aspect-ratio: auto;
        width: 100%;
        height: auto;
        max-height: 58mm;
        object-fit: contain;
    }

    .pv-badge {
        padding: 2pt 5pt;
        background: #23201d !important;
        color: #fff !important;
        font-size: 7.5pt;
    }

    .pv .pv-title {
        margin: 4pt 0 2pt;
        padding-top: 0;
        font-size: 15pt;
    }

    .pv-addr { font-size: 8.5pt; }
    .pv-addr i { display: none; }

    /* ── 핵심 스펙 3열 ── */
    .pv-spec-grid {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 3pt;
    }

    .pv-spec {
        min-width: 0;
        padding: 4pt 5pt;
        border: 0.5pt solid #ddd6cc;
        border-radius: 2pt;
        background: #f7f5f2 !important;
    }

    .pv-spec dt { margin-bottom: 1pt; font-size: 7pt; }
    .pv-spec dd { font-size: 9.5pt; white-space: normal; }
    .pv-note { margin-top: 3pt; font-size: 7pt; }

    /* ── 본문 (요약 컬럼 안) ── */
    .pv-content #bo_v_con { font-size: 8.5pt; line-height: 1.5; }
    .pv-content #bo_v_con img { max-height: 40mm; }

    /* ── 섹션 제목 ── */
    .pv .pv-sec-title {
        margin: 0 0 4pt;
        padding-bottom: 2pt;
        border-bottom: 0.75pt solid #98856c;
        font-size: 10pt;
    }

    /* ── 상세 정보 표 ── */
    .pv-info__grid {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0;
        border-top: 0.75pt solid #98856c;
    }

    .pv-info__row {
        display: flex;
        gap: 0;
        padding: 0;
        border-bottom: 0.5pt solid #ddd6cc;
        border-radius: 0;
        background: transparent !important;
        break-inside: avoid;
    }

    .pv-info__row dt {
        flex: 0 0 22mm;
        padding: 2.5pt 4pt;
        background: #f7f5f2 !important;
        color: #5c5956;
        font-size: 8pt;
    }

    .pv-info__row dt i { display: none; }

    .pv-info__row dd {
        min-width: 0;
        padding: 2.5pt 4pt;
        font-size: 8.5pt;
    }

    /* ── 옵션 ──
       화면용 flex 레이아웃은 인쇄 시 행 높이가 과하게 벌어집니다.
       인쇄에서는 한 줄 텍스트로 눕혀 압축합니다. */
    .pv-options { break-inside: auto; }

    .pv-option-row {
        display: block !important;
        padding: 2.5pt 0 2.5pt 5pt;
        border-bottom: 0.5pt solid #ddd6cc;
        line-height: 1.5;
        break-inside: avoid;
    }

    .pv-option-row strong {
        display: inline !important;
        flex: none !important;
        margin-right: 6pt;
        color: #5c5956;
        font-size: 8pt;
        font-weight: 500;
    }

    .pv-option-row span {
        display: inline !important;
        flex: none !important;
        gap: 0 !important;
    }

    .pv-option-row em {
        display: inline !important;
        padding: 0 !important;
        border-radius: 0;
        background: transparent !important;
        color: #23201d;
        font-size: 8pt;
    }

    .pv-option-row em i { display: none; }

    /* 항목 사이 구분점 */
    .pv-option-row em + em::before {
        content: " · ";
        color: #b7a389;
    }

    /* ── 위치: 지도 숨기고 주소만 ── */
    .pv-map { break-inside: avoid; }
    .pv-map__addr { margin-top: 0; padding-left: 5pt; font-size: 8.5pt; }

    /* ── 대장 정보: 접힘 상태여도 전부 출력 ── */
    .pv-registry { padding: 0; }
    .pv-details { border-bottom: 0; }

    .pv-details summary {
        padding: 0 0 2pt;
        margin-bottom: 4pt;
        border-bottom: 0.75pt solid #98856c;
        font-size: 10pt;
    }

    .pv-details summary i { display: none; }
    .pv-details > *:not(summary) { display: block !important; }

    /* ── 중개사 정보 ── */
    .pv-agent { break-inside: avoid; }

    /* ── 인쇄 전용 꼬리말 ── */
    .pv-print-foot {
        display: block !important;
        margin-top: 6pt;
        padding-top: 3pt;
        border-top: 0.5pt solid #ddd6cc;
        color: #8d8781;
        font-size: 7pt;
        text-align: center;
    }

    a[href]::after { content: none !important; }
}

/* 주소 비공개 안내 */
.pv-addr__note {
    color: var(--pv-mute);
    font-size: 0.875rem;
    font-weight: 400;
}

/* 상세 상단 매물상태 뱃지 */
.pv-badge--status {
    margin-left: 6px;
}

.pv-badge--status[data-status="계약중"]  { background: #b58121; }
.pv-badge--status[data-status="거래완료"] { background: #6b6560; }
.pv-badge--status[data-status="보류"]    { background: #c0483f; }

/*───────── 게시·수정 이력 ─────────*/
.pv-history {
    margin: 30px 0 0;
    padding: 18px 20px;
    border: 1px solid var(--pv-line);
    border-radius: 12px;
    background: var(--pv-fill);
    color: var(--pv-body);
    font-size: 0.875rem;
    line-height: 1.6;
}

.pv-history p,
.pv-history li {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
}

.pv-history__list {
    margin: 8px 0 0;
    padding: 8px 0 0;
    border-top: 1px solid var(--pv-line);
    list-style: none;
}

.pv-history__list li { padding: 3px 0; }

.pv-history b {
    flex: 0 0 66px;
    color: var(--pv-mute);
    font-weight: 500;
}

.pv-history span { color: var(--pv-ink); font-weight: 600; }
.pv-history em { color: var(--pv-mute); font-size: 0.8125rem; font-style: normal; }

/* 이력 — 관리자 전용 표시 */
.pv-history__tag {
    display: inline-block;
    margin-bottom: 10px !important;
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--pv-ink);
    color: #fff;
    font-size: 0.6875rem;
    font-weight: 700;
}

/*───────────────────────────────────────────────
  좌우 여백

  .pv 는 위아래 여백만 갖고 있어 화면이 좁아지면
  사진과 카드가 가장자리에 딱 붙습니다.
  안쪽 여백을 두고 폭 계산에 포함시킵니다.
───────────────────────────────────────────────*/
.pv {
    padding-left: 20px;
    padding-right: 20px;
    box-sizing: border-box;
}

@media (max-width: 780px) {
    .pv { padding-left: 16px; padding-right: 16px; }
}

@media (max-width: 480px) {
    .pv { padding-left: 14px; padding-right: 14px; }
}

/*───────────────────────────────────────────────
  사진 영역이 오른쪽으로 넘치던 문제

  좁은 화면에서 .pv-hero 가 한 칸(1fr)이 되는데,
  격자 칸의 최소 폭이 '내용 크기'로 잡힙니다.
  썸네일 줄이 가로로 길어 칸이 화면보다 넓어졌습니다.
  minmax(0, 1fr) 로 바꾸고 자식들의 최소 폭도 풀어 줍니다.
───────────────────────────────────────────────*/
@media (max-width: 1024px) {
    .pv .pv-hero { grid-template-columns: minmax(0, 1fr); }
}

.pv .pv-hero__media,
.pv .pv-hero__aside,
.pv .pv-gallery,
.pv .pv-thumbs { min-width: 0; max-width: 100%; }

.pv .pv-gallery img { max-width: 100%; }

/* 썸네일은 칸 안에서만 옆으로 넘깁니다 */
.pv .pv-thumbs {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* 가로 스크롤이 페이지 전체로 번지지 않게 */
.pv { overflow-x: hidden; }

/*═══════════════════════════════════════════════
  AI 사진보정 — 관리자에게만 보입니다
═══════════════════════════════════════════════*/
.pv-ai {
    margin-top: 12px;
    padding: 14px 16px 16px;
    border: 1px solid var(--pv-line);
    border-radius: 12px;
    background: var(--pv-fill);
}

.pv-ai__guide {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 12px;
    color: var(--pv-body);
    font-size: 0.875rem;
}

.pv-ai__guide b { color: var(--pv-ink); font-weight: 700; }

.pv .pv-ai__all {
    margin-left: auto;
    height: 30px;
    padding: 0 12px;
    border: 1px solid var(--pv-line);
    border-radius: 999px;
    background: #fff;
    color: var(--pv-body);
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
}

.pv .pv-ai__all:hover { border-color: var(--pv-gold); color: var(--pv-gold-deep); }

/*───────── 썸네일 위의 체크 ─────────*/
.pv-thumbs li { position: relative; }

.pv-pick {
    position: absolute;
    left: 2px;
    top: 2px;
    z-index: 2;
    display: none;
    cursor: pointer;
}

/* 보정 고르기를 열었을 때만 나타납니다 */
body.is-aipick .pv-pick { display: block; }

.pv-pick input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.pv-pick {
    padding: 3px;      /* 누르는 자리를 넓혀 줍니다 */
}

.pv-pick span {
    display: block;
    width: 22px;
    height: 22px;
    border: 2px solid #fff;
    border-radius: 5px;
    background: rgba(35, 32, 29, 0.55);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

.pv-pick input:checked + span {
    border-color: #fff;
    background: var(--pv-gold-deep);
}

.pv-pick input:checked + span::after {
    content: "";
    display: block;
    width: 5px;
    height: 10px;
    margin: 3px auto 0;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.pv-pick.is-busy { opacity: 0.5; cursor: default; }

.pv-thumbs li.is-picked .pv-thumb { border-color: var(--pv-gold-deep); }

.pv-pick__state {
    position: absolute;
    left: 4px;
    bottom: 4px;
    z-index: 2;
    padding: 1px 6px;
    border-radius: 4px;
    background: rgba(35, 32, 29, 0.72);
    color: #fff;
    font-size: 0.625rem;
    font-style: normal;
    font-weight: 700;
}

.pv-pick__state.is-going { background: #2f6fb5; }
.pv-pick__state.is-done  { background: #2e7d54; }
.pv-pick__state.is-stop  { background: #c0392b; }
.pv-pick__state.is-hold  { background: #a5652a; }

/*───────── 예약 버튼 ─────────*/
.pv-ai__foot {
    display: flex;
    align-items: center;
    gap: 8px;
}

.pv .pv-ai__go {
    height: 40px;
    padding: 0 18px;
    border: 0;
    border-radius: 10px;
    background: var(--pv-gold-deep);
    color: #fff;
    font-size: 0.9375rem;
    font-weight: 700;
    cursor: pointer;
}

.pv .pv-ai__go:hover { background: var(--pv-ink); }
.pv .pv-ai__go:disabled { opacity: 0.6; cursor: default; }

.pv .pv-ai__more { margin-left: auto; color: var(--pv-gold-deep); font-size: 0.8125rem; font-weight: 600; }
.pv .pv-ai__more:hover { color: var(--pv-ink); }

.pv-ai__msg {
    margin: 10px 0 0;
    color: var(--pv-mute);
    font-size: 0.8125rem;
    line-height: 1.6;
    white-space: pre-line;
}

.pv-ai__msg.is-ok   { color: #2e7d54; }
.pv-ai__msg.is-warn { color: #c0392b; }
.pv-ai__msg:empty   { display: none; }

/*───────── AI 사진보정 — 확인 단계 ─────────*/
.pv-ai__confirm {
    margin-top: 12px;
    padding: 14px 16px 16px;
    border: 1px solid var(--pv-gold-deep);
    border-radius: 10px;
    background: #fff;
}

.pv-ai__confirm[hidden] { display: none; }

.pv-ai__confirm-head {
    margin: 0 0 12px;
    color: var(--pv-ink);
    font-size: 0.9375rem;
    font-weight: 600;
}

.pv-ai__confirm-head b { color: var(--pv-gold-deep); font-size: 1.125rem; font-weight: 800; }

.pv-ai__picked {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 12px;
    padding: 0;
    list-style: none;
}

.pv-ai__picked li { position: relative; }

.pv-ai__picked span {
    display: block;
    width: 64px;
    height: 48px;
    border-radius: 6px;
    background-color: var(--pv-fill);
    background-size: cover;
    background-position: center;
}

.pv-ai__picked em {
    position: absolute;
    right: 4px;
    bottom: 4px;
    padding: 1px 5px;
    border-radius: 4px;
    background: rgba(35, 32, 29, 0.72);
    color: #fff;
    font-size: 0.625rem;
    font-style: normal;
    font-weight: 700;
}

.pv-ai__confirm-note {
    margin: 0 0 14px;
    color: var(--pv-mute);
    font-size: 0.8125rem;
    line-height: 1.6;
    word-break: keep-all;
}

.pv-ai__confirm-note b { color: var(--pv-body); }

.pv-ai__confirm-btns { display: flex; gap: 8px; }

.pv .pv-ai__cancel,
.pv .pv-ai__yes {
    height: 40px;
    padding: 0 18px;
    border-radius: 10px;
    font-size: 0.9375rem;
    font-weight: 700;
    cursor: pointer;
}

.pv .pv-ai__cancel {
    border: 1px solid var(--pv-line);
    background: #fff;
    color: var(--pv-body);
}

.pv .pv-ai__cancel:hover { border-color: var(--pv-gold); color: var(--pv-gold-deep); }

.pv .pv-ai__yes {
    flex: 1;
    border: 0;
    background: var(--pv-gold-deep);
    color: #fff;
}

.pv .pv-ai__yes:hover { background: var(--pv-ink); }

.pv .pv-ai__yes:disabled,
.pv .pv-ai__cancel:disabled { opacity: 0.6; cursor: default; }

/*───────── AI 사진보정 — 대표 사진 위의 여는 버튼 ─────────*/
.pv-gallery { position: relative; }

.pv .pv-ai__opener {
    position: absolute;
    right: 12px;
    bottom: 12px;
    z-index: 3;

    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 14px;
    border: 0;
    border-radius: 999px;
    background: rgba(35, 32, 29, 0.72);
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}

.pv .pv-ai__opener:hover { background: var(--pv-gold-deep); }

.pv .pv-ai__opener.is-open { background: var(--pv-gold-deep); }

.pv-ai__opener em {
    min-width: 18px;
    padding: 1px 6px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.24);
    color: #fff;
    font-size: 0.6875rem;
    font-style: normal;
    font-weight: 700;
    text-align: center;
}

.pv-ai[hidden] { display: none; }

@media (max-width: 560px) {
    .pv .pv-ai__opener { right: 8px; bottom: 8px; height: 32px; padding: 0 11px; font-size: 0.75rem; }
}

/* 확인 화면 — 담을 사진 · 뺄 사진 구분 */
.pv-ai__picked .pv-ai__label {
    flex: 1 1 100%;
    margin: 4px 0 2px;
    color: var(--pv-gold-deep);
    font-size: 0.75rem;
    font-weight: 700;
}

.pv-ai__picked .pv-ai__label.is-off { color: #c0392b; }

/* 잠긴 체크 — 손댈 수 없다는 것을 보여 줍니다 */
.pv-pick.is-busy { opacity: 0.75; cursor: not-allowed; }

.pv-pick.is-busy input:checked + span {
    background: var(--pv-mute);
    border-color: rgba(255, 255, 255, 0.7);
}

/* AI보정관리로 가는 링크 */
.pv .pv-ai__more {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 40px;
    padding: 0 16px;
    border: 1px solid var(--pv-line);
    border-radius: 10px;
    background: #fff;
    color: var(--pv-body) !important;
    font-size: 0.875rem;
    font-weight: 600;
}

.pv .pv-ai__more:hover {
    border-color: var(--pv-gold);
    color: var(--pv-gold-deep) !important;
}

.pv-ai__more em {
    min-width: 18px;
    padding: 1px 6px;
    border-radius: 999px;
    background: var(--pv-gold-deep);
    color: #fff;
    font-size: 0.6875rem;
    font-style: normal;
    font-weight: 700;
    text-align: center;
}

/*═══════════════════════════════════════════════
  관리자 메모 — 관리자에게만 보입니다
═══════════════════════════════════════════════*/
.pv .pv-note {
    border-color: var(--pv-gold-deep);
    background: var(--pv-fill);
}

.pv-note__head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.pv .pv-note__head .pv-sec-title { margin: 0; }

.pv-note__tag {
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--pv-gold-deep);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
}

.pv-note__when { margin-left: auto; color: var(--pv-mute); font-size: 0.8125rem; }

.pv-note__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 14px;
}

.pv-note__field { display: flex; flex-direction: column; gap: 5px; }

.pv-note__field label {
    color: var(--pv-body);
    font-size: 0.8125rem;
    font-weight: 700;
}

.pv .pv-note__input,
.pv .pv-note__memo {
    width: 100%;
    padding: 11px 13px;
    border: 1px solid var(--pv-line);
    border-radius: 9px;
    background: #fff;
    color: var(--pv-ink);
    font-size: 0.9375rem;
    font-family: inherit;
    box-sizing: border-box;
}

/*───────── 담당자 연락처 — 보기만 ─────────*/
.pv-note__contact {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 8px 14px;
    margin: 0 0 16px;
    padding: 14px 16px;
    border-radius: 9px;
    background: #fff;
}

.pv-note__contact dt {
    color: var(--pv-mute);
    font-size: 0.875rem;
    white-space: nowrap;
}

.pv-note__contact dd {
    margin: 0;
    color: var(--pv-ink);
    font-size: 0.9375rem;
    font-weight: 600;
}

.pv .pv-note__contact dd a { color: var(--pv-gold-deep); }
.pv .pv-note__contact dd a:hover { color: var(--pv-ink); }

/*───────── 메모 — 보기만 ─────────*/
.pv-note__list { margin: 0; padding: 0; list-style: none; }

.pv-note__list li {
    padding: 11px 14px;
    margin-bottom: 6px;
    border: 1px solid var(--pv-line);
    border-radius: 9px;
    background: #fff;
}

.pv-note__list p {
    margin: 0 0 4px;
    color: var(--pv-ink);
    font-size: 0.9375rem;
    line-height: 1.55;
    word-break: keep-all;
}

.pv-note__list span { color: var(--pv-mute); font-size: 0.8125rem; }

.pv-note__empty {
    margin: 0;
    padding: 22px;
    border: 1px dashed var(--pv-line);
    border-radius: 9px;
    color: var(--pv-mute);
    font-size: 0.875rem;
    text-align: center;
}

/* 고치러 가는 링크 */
.pv .pv-note__edit {
    margin-left: auto;
    padding: 6px 14px;
    border: 1px solid var(--pv-gold-deep);
    border-radius: 999px;
    color: var(--pv-gold-deep) !important;
    font-size: 0.8125rem;
    font-weight: 700;
}

.pv .pv-note__edit:hover { background: var(--pv-gold-deep); color: #fff !important; }

@media (max-width: 780px) {
    .pv-note__contact { grid-template-columns: 1fr; gap: 2px 0; }
    .pv-note__contact dt { margin-top: 6px; }
    .pv-note__edit { margin-left: 0; }
}

/* 인쇄할 때는 나오지 않습니다 */
@media print {
    .pv-note { display: none !important; }
}

/* 매물 더보기 — 제목과 전체 보기 */
.pv-related__head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
}

.pv .pv-related__head .pv-sec-title { margin: 0; }

.pv .pv-related__more {
    margin-left: auto;
    padding: 6px 14px;
    border: 1px solid var(--pv-line);
    border-radius: 999px;
    color: var(--pv-body);
    font-size: 0.875rem;
    font-weight: 600;
    white-space: nowrap;
}

.pv .pv-related__more:hover { border-color: var(--pv-gold); color: var(--pv-gold-deep); }

/*───────── 관리자에서 보기 ─────────
  관리자 버튼 줄 맨 오른쪽에 붙습니다. */
.pv .pv-abtn--gold {
    margin-left: auto;
    border-color: var(--pv-gold-deep);
    color: var(--pv-gold-deep);
}

.pv .pv-abtn--gold:hover { background: var(--pv-gold-deep); color: #fff; }

@media (max-width: 700px) {
    /* 좁은 화면에서는 줄이 접히므로 오른쪽 밀기를 풉니다 */
    .pv .pv-abtn--gold { margin-left: 0; }
}
