/* ============================================================
 * skin/board/hive_baf_user/style.css
 * Before & After 게시판 스킨 — 8 레이아웃 공통
 * Module: hive_baf / Version: 1.0.0
 * ============================================================ */

.bv-wrap { max-width:1280px; margin:24px auto; padding:0 16px; font-family:'Noto Sans KR','Pretendard',sans-serif; color:#222; }

/* 슈퍼관리자 도구바 */
.bv-admin-bar { display:flex; gap:8px; padding:10px 14px; background:#ccfbf1; border:1px solid #5eead4; border-radius:8px; margin-bottom:16px; align-items:center; font-size:13px; flex-wrap:wrap; }
.bv-admin-bar strong { color:#0f766e; }
.bv-admin-btn { padding:7px 14px; background:var(--bv-main, #0d9488); color:#fff; border:0; border-radius:10px; cursor:pointer; font-size:12px; font-weight:600; text-decoration:none; transition:filter .15s, transform .15s, background .15s; }
.bv-admin-btn:hover { filter:brightness(1.08); transform:translateY(-1px); }
.bv-admin-btn.outline { background:rgba(0,0,0,.07); color:var(--bv-main, #0d9488); border:0; }
.bv-admin-btn.outline:hover { background:rgba(0,0,0,.12); filter:none; transform:none; }
.bv-admin-btn.danger { background:rgba(220,38,38,.09); color:#dc2626; }
.bv-admin-btn.danger:hover { background:rgba(220,38,38,.15); filter:none; }

/* 툴바 */
.bv-toolbar { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; flex-wrap:wrap; gap:12px; }
.bv-toolbar-right { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.bv-search { display:flex; align-items:center; gap:6px; }
.bv-search-sel,
.bv-sort-sel {
    height:36px; padding:0 28px 0 12px; border:0;
    border-radius:12px; font-size:13px; background:rgba(0,0,0,.045); color:inherit;
    appearance:none; -webkit-appearance:none; cursor:pointer;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none'/></svg>");
    background-repeat:no-repeat; background-position:right 10px center;
    transition:background .15s;
}
.bv-search-sel:hover,
.bv-sort-sel:hover { background-color:rgba(0,0,0,.07); }
.bv-search-input {
    height:36px; padding:0 14px; border:0; border-radius:12px;
    background:rgba(0,0,0,.045); color:inherit;
    font-size:13px; min-width:180px; transition:background .15s;
}
.bv-search-input::placeholder { color:#9ca3af; }
.bv-search-input:focus { outline:none; background:rgba(0,0,0,.07); }
.bv-search-btn {
    height:36px; padding:0 18px; background:var(--bv-main, #0d9488); color:#fff;
    border:0; border-radius:12px; font-size:13px; cursor:pointer; font-weight:600;
    white-space:nowrap; flex:0 0 auto; transition:filter .15s, transform .15s;
}
.bv-search-btn:hover { filter:brightness(1.08); transform:translateY(-1px); }

/* 모바일 툴바/검색 — 가로 넘침 방지, 행 단위 정렬 */
@media (max-width: 700px) {
    .bv-toolbar { gap:10px; }
    .bv-toolbar-right { width:100%; gap:8px; }
    .bv-search { flex-wrap:wrap; width:100%; gap:8px; }
    .bv-search-sel { flex:1 1 100%; width:100%; }
    .bv-search-form { display:flex !important; flex:1 1 100%; gap:8px; min-width:0; }
    .bv-search-input { flex:1 1 auto; min-width:0; width:auto; }
    .bv-sort-sel { flex:1 1 auto; }
    .bv-write-btn { flex:1 1 auto; text-align:center; }
}

/* 페이지네이션 (그누보드 표준 $write_pages wrap) */
.bv-pagination { display:flow-root; clear:both; margin:32px 0 20px; text-align:center; }
.bv-pagination .pg_wrap { display:inline-flex; float:none !important; gap:4px; vertical-align:top; }
.bv-pagination .pg_page,
.bv-pagination .pg_current,
.bv-pagination .pg_start, .bv-pagination .pg_prev,
.bv-pagination .pg_end,   .bv-pagination .pg_next {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:36px; height:36px; padding:0 10px;
    border:0; border-radius:8px; background:transparent; box-shadow:none;
    color:#888; text-decoration:none; font-size:14px;
    font-family:'Pretendard','Noto Sans KR',sans-serif;
    transition:color .15s, background .15s;
}
.bv-pagination .pg_page:hover,
.bv-pagination .pg_start:hover, .bv-pagination .pg_prev:hover,
.bv-pagination .pg_end:hover,   .bv-pagination .pg_next:hover {
    color:var(--bv-main, #0d9488); background:rgba(0,0,0,.04);
}
.bv-pagination .pg_current {
    background:transparent; color:var(--bv-main, #0d9488) !important;
    font-weight:700; border-radius:0;
    box-shadow:inset 0 -2px 0 var(--bv-main, #0d9488);
}

/* 슈퍼관리자 일괄 관리 도구 */
.bv-bulk-tools {
    margin-top:18px; padding:14px 18px;
    background:#fafafa; border:1px solid #e5e7eb; border-radius:10px;
}
.bv-bulk-all {
    display:inline-flex; align-items:center; gap:6px;
    font-size:13px; color:#444; font-weight:500;
    padding-bottom:12px; border-bottom:1px solid #f0f0f0; margin-bottom:12px; width:100%;
}
.bv-bulk-checks {
    display:flex; flex-wrap:wrap; gap:6px 14px;
    max-height:140px; overflow-y:auto; margin-bottom:12px;
    padding:4px;
}
.bv-bulk-chk {
    display:inline-flex; align-items:center; gap:5px;
    font-size:12px; color:#666; cursor:pointer; user-select:none;
    padding:3px 8px; border-radius:4px;
    transition:background .15s;
}
.bv-bulk-chk:hover { background:#f0f0f0; }
.bv-bulk-chk span { max-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bv-bulk-actions {
    display:flex; gap:6px; padding-top:12px; border-top:1px solid #f0f0f0;
    justify-content:flex-end;
}
.bv-bulk-btn {
    padding:8px 16px; border:0; background:rgba(0,0,0,.07); color:#555;
    border-radius:12px; font-size:12px; cursor:pointer; font-weight:600;
    transition:background .15s, color .15s;
}
.bv-bulk-btn:hover { background:rgba(0,0,0,.12); color:var(--bv-main, #0d9488); }
.bv-bulk-btn.danger { background:rgba(220,38,38,.09); color:#dc2626; }
.bv-bulk-btn.danger:hover { background:rgba(220,38,38,.15); }
.bv-write-btn { display:inline-flex; align-items:center; gap:4px; padding:10px 22px; background:var(--bv-main, #0d9488); color:#fff !important; border:0; border-radius:12px; font-size:14px; font-weight:600; text-decoration:none; transition:transform .15s, filter .15s; }
.bv-write-btn:hover { transform:translateY(-1px); filter:brightness(1.08); }
.bv-title { font-size:22px; font-weight:700; margin:0; }
.bv-title small { color:#888; font-weight:400; font-size:14px; margin-left:6px; }

/* 필터 chip 영역 (이미지1 "나와 비슷한 케이스 찾기") */
.bv-filter { background:#fff; border-radius:12px; padding:18px 22px; margin-bottom:16px; }
.bv-filter-head { display:flex; justify-content:space-between; align-items:center; padding-bottom:10px; margin-bottom:14px; border-bottom:1px solid #f0f0f0; cursor:pointer; }
.bv-filter-head h3 { margin:0; font-size:15px; font-weight:700; }
.bv-filter-head .toggle { color:#888; font-size:14px; transition:transform .2s; }
.bv-filter.collapsed .bv-filter-head { margin-bottom:0; padding-bottom:0; border-bottom:0; }
.bv-filter.collapsed .bv-filter-head .toggle { transform:rotate(-90deg); }
.bv-filter.collapsed .bv-filter-body,
.bv-filter.collapsed .bv-filter-actions { display:none; }
.bv-filter-body { display:grid; grid-template-columns:80px 1fr; gap:10px 14px; align-items:center; }
.bv-filter-label { font-size:13px; color:#666; font-weight:500; }
.bv-filter-chips { display:flex; flex-wrap:wrap; gap:6px; }
.bv-chip { padding:6px 14px; background:rgba(0,0,0,.05); border:0; border-radius:999px; font-size:12px; color:#666; cursor:pointer; user-select:none; transition:background .15s, color .15s; }
.bv-chip:hover { background:rgba(0,0,0,.09); }
.bv-chip.active { background:var(--bv-main, #0d9488); color:#fff; }
.bv-filter-actions { padding-top:12px; margin-top:10px; border-top:1px solid #f0f0f0; }
.bv-filter-reset { padding:7px 14px; background:rgba(0,0,0,.07); border:0; border-radius:12px; cursor:pointer; font-size:12px; color:#666; font-weight:600; transition:background .15s; }
.bv-filter-reset:hover { background:rgba(0,0,0,.12); }

/* 공통 카테고리 탭 — 모델 갤러리 기준 */
.bv-cats {
    display:flex; gap:0; margin-bottom:20px; overflow-x:auto;
    border-bottom:1px solid rgba(127,127,127,.18);
    border-bottom-color:color-mix(in srgb, currentColor 14%, transparent);
}
.bv-cat {
    position:relative; flex:0 0 auto; padding:12px 18px; color:#888;
    text-decoration:none; font-size:14px; border:0; white-space:nowrap;
}
.bv-cat::after {
    content:''; position:absolute; left:18px; right:18px; bottom:0;
    height:3px; border-radius:3px 3px 0 0; background:transparent;
}
.bv-cat.active { color:var(--bv-main, #0d9488); font-weight:700; }
.bv-cat.active::after { background:currentColor; }
.bv-cat .cnt { color:#aaa; font-size:12px; margin-left:4px; }
.bv-cat.active .cnt { color:inherit; }

/* ============================================================
 * 슬라이더 컴포넌트 (BafSlider) — img 기반, 자연 비율
 * ============================================================ */
.baf-slider {
    position:relative; width:100%;
    background:#e9e4dc; overflow:hidden; border-radius:12px;
    user-select:none; touch-action:none; line-height:0;
    cursor:ew-resize;
}
.baf-slider.single   { cursor:default; }
.baf-slider.dragging { cursor:grabbing; }
body.baf-no-select { user-select:none !important; -webkit-user-select:none !important; }

/* img 태그 — 가로 100% 세로 auto */
.baf-slider img { display:block; pointer-events:none; -webkit-user-drag:none; user-select:none; }
.baf-slider-img-single  { width:100%; height:auto; }
.baf-slider-img-base    { width:100%; height:auto; position:relative; z-index:1; }
.baf-slider-img-overlay {
    position:absolute; top:0; left:0; width:100%; height:100%;
    object-fit:cover; object-position:center;
    clip-path:inset(0 0 0 50%); z-index:2;
}
/* 사진 비율 다른 경우 — 슬라이더가 contain 모드로 동작 (잘림 없음) */
.baf-slider.contain .baf-slider-img-base    { object-fit:contain; height:auto; }
.baf-slider.contain .baf-slider-img-overlay { object-fit:contain; }

.baf-slider-label {
    position:absolute; top:22px; padding:7px 16px;
    background:rgba(0,0,0,.62); color:#fff; font-size:12px; font-weight:600;
    border-radius:16px; z-index:5; letter-spacing:.04em; pointer-events:none;
    backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
    line-height:1.2;
}
.baf-slider-label.before { left:22px; background:rgba(20,20,20,.65); }
.baf-slider-label.after  { right:22px; background:var(--bv-main, #0d9488); }
@media (max-width: 600px) {
    .baf-slider-label { top:14px; padding:5px 12px; font-size:11px; }
    .baf-slider-label.before { left:14px; }
    .baf-slider-label.after  { right:14px; }
}

/* 드래그 핸들 — 가운데 동그라미 + 위아래 세로선 */
.baf-slider-handle {
    position:absolute; top:0; bottom:0; left:50%; width:4px;
    background:rgba(255,255,255,.95); z-index:6;
    transform:translateX(-50%); pointer-events:none;
    box-shadow:0 2px 8px rgba(0,0,0,.18);
}
.baf-slider-handle-knob {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    width:48px; height:48px; border-radius:50%;
    background:#fff; color:var(--bv-main, #0d9488);
    display:flex; align-items:center; justify-content:center;
    font-size:16px; font-weight:700;
    box-shadow:0 4px 16px rgba(0,0,0,.20);
    pointer-events:auto; cursor:ew-resize;
    transition:transform .18s ease, box-shadow .18s ease;
}
.baf-slider-handle-knob span { display:block; line-height:1; transform:translateY(-1px); }
.baf-slider:hover .baf-slider-handle-knob,
.baf-slider.dragging .baf-slider-handle-knob {
    transform:translate(-50%,-50%) scale(1.08);
    box-shadow:0 6px 20px rgba(0,0,0,.26);
}
.baf-slider.single .baf-slider-handle { display:none; }

.baf-slider-empty {
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    color:#94a3b8; font-size:13px; min-height:280px; padding:60px 20px;
    background:linear-gradient(135deg, #f8fafc, #eef2f7);
    border-radius:12px; border:2px dashed #cbd5e1; gap:8px; line-height:1.5;
}
.baf-slider-empty > div:first-child { font-size:32px; }

/* ============================================================
 * 레이아웃: baf_slider (메인 상세형 — 이미지1)
 * ============================================================ */
.bv-slider-layout { background:#fff; border-radius:12px; overflow:hidden; box-shadow:0 1px 4px rgba(0,0,0,.04); padding:24px; }
.bv-slider-layout .baf-slider { max-width:100%; margin:0 auto; }
.bv-slider-meta { margin-top:18px; display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap; }
.bv-slider-info { flex:1; min-width:200px; }
.bv-slider-info h3 { margin:0 0 6px; font-size:18px; font-weight:700; }
.bv-slider-info .badge { display:inline-block; padding:3px 10px; background:var(--bv-main, #0d9488); color:#fff; border-radius:14px; font-size:11px; margin-bottom:8px; }
.bv-slider-info .desc { color:#666; font-size:13px; line-height:1.6; }
.bv-slider-angle-tabs { display:flex; gap:6px; }
.bv-angle-tab { padding:8px 16px; background:rgba(0,0,0,.05); border:0; border-radius:10px; cursor:pointer; font-size:13px; color:#666; transition:background .15s, color .15s; }
.bv-angle-tab:hover { background:rgba(0,0,0,.09); }
.bv-angle-tab.active { background:var(--bv-main, #0d9488); color:#fff; }
.bv-angle-tab:disabled { background:rgba(0,0,0,.03); color:#bbb; cursor:not-allowed; }
.bv-slider-pagination { display:flex; justify-content:flex-end; gap:8px; margin-top:14px; align-items:center; font-size:13px; color:#666; }
.bv-pg-btn { width:32px; height:32px; border-radius:50%; border:0; background:rgba(0,0,0,.06); cursor:pointer; transition:background .15s; }
.bv-pg-btn:hover { background:rgba(0,0,0,.1); }
.bv-pg-btn:disabled { color:#ccc; background:rgba(0,0,0,.03); cursor:not-allowed; }

/* ============================================================
 * 레이아웃: baf_split (좌우 분할 — 이미지2)
 * ============================================================ */
/* ============================================================
 * baf_split — 좌우 분할 (Before / After 50:50, 또는 사진 1장 단일)
 * ============================================================ */
.bv-split-card {
    margin-bottom:32px; padding-bottom:32px;
    max-width:1040px;            /* 페어/솔로 가로폭 통일 cap (520 × 2) */
    margin-left:auto; margin-right:auto;
    border-bottom:1px solid #f0f0f0;
}
.bv-split-card:last-of-type { border-bottom:0; }

.bv-split-pair {
    display:grid; grid-template-columns:1fr 1fr; gap:2px;
    border-radius:14px; overflow:hidden; background:#0f0f10;
    aspect-ratio:2/1;
    width:100%;
    position:relative;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:box-shadow .25s ease, transform .25s ease;
}
.bv-split-pair:hover { box-shadow:0 6px 16px rgba(0,0,0,.08); transform:translateY(-2px); }

/* 단일 사진(또는 빈 카드)일 때 — 페어와 동일한 가로폭, 동일한 비율(2/1) 유지 */
.bv-split-pair.is-single,
.bv-split-pair:has(> .bv-split-img.solo),
.bv-split-pair:has(> .bv-split-empty) {
    grid-template-columns:1fr !important;
}
.bv-split-pair.is-single .bv-split-img.solo,
.bv-split-pair > .bv-split-img.solo {
    width:100%;
    height:100%;
    aspect-ratio:2/1;            /* 페어와 동일 */
}

.bv-split-img {
    display:block; background:#0f0f10 no-repeat center / cover;
    position:relative; min-height:260px;
    transition:filter .25s ease;
}
.bv-split-img:hover { filter:brightness(1.04); }

.bv-split-label {
    position:absolute; top:18px; padding:7px 16px;
    color:#fff; font-size:12px; font-weight:600;
    border-radius:18px; letter-spacing:.04em; line-height:1.2;
    backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
    box-shadow:0 2px 10px rgba(0,0,0,.2);
}
.bv-split-label.before { left:18px; background:rgba(20,20,20,.7); }
.bv-split-label.after  { right:18px; background:var(--bv-main, #0d9488); }
.bv-split-img.solo .bv-split-label { left:18px; background:rgba(20,20,20,.7); }

.bv-split-empty {
    grid-column:1/-1; display:flex; align-items:center; justify-content:center;
    color:#9ca3af; font-size:14px; padding:80px 20px;
    background:linear-gradient(135deg, #f8fafc, #eef2f7);
}

/* 정보 영역 */
.bv-split-info {
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:20px; margin-top:18px; flex-wrap:wrap;
}
.bv-split-info-left { flex:1; min-width:0; }
.bv-split-cat {
    display:inline-block; padding:4px 12px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488);
    border-radius:14px; font-size:12px; font-weight:600;
    letter-spacing:.02em; margin-bottom:8px;
}
.bv-split-title {
    margin:0 0 12px; font-size:18px; font-weight:600; color:#1f2937;
    line-height:1.4; letter-spacing:-.01em;
}
.bv-split-title a { color:inherit; text-decoration:none; }
.bv-split-title a:hover { color:var(--bv-main, #0d9488); }

.bv-split-tags { display:flex; flex-wrap:wrap; gap:6px; }
.bv-split-tag {
    display:inline-flex; align-items:center;
    padding:4px 10px; border-radius:5px;
    background:#f5f5f5; color:#6b7280;
    font-size:11px; font-weight:500;
}
.bv-split-tag-angle { background:#fff; color:#374151; border:1px solid #e5e7eb; }
.bv-split-tag-phase {
    background:color-mix(in srgb, var(--bv-main, #0d9488) 10%, #fff);
    color:var(--bv-main, #0d9488); font-weight:600;
}

.bv-split-detail {
    align-self:flex-start; flex-shrink:0;
    padding:9px 18px; border:0; border-radius:12px;
    background:rgba(0,0,0,.07);
    color:#666 !important; text-decoration:none; font-size:13px; font-weight:600;
    transition:background .18s, color .18s, transform .18s;
}
.bv-split-detail:hover {
    background:rgba(0,0,0,.12);
    color:var(--bv-main, #0d9488) !important;
    transform:translateX(2px);
}

@media (max-width: 700px) {
    .bv-split-pair { aspect-ratio:1.4/1; }
    .bv-split-card { margin-bottom:24px; padding-bottom:24px; }
    .bv-split-title { font-size:16px; }
    .bv-split-info { flex-direction:column; gap:12px; }
    .bv-split-detail { align-self:stretch; text-align:center; }
}

/* ============================================================
 * baf_hover — 카드 hover 시 Before↔After cross-fade
 * ============================================================ */
.bv-hover-grid {
    display:grid; grid-template-columns:repeat(3, 1fr);
    gap:22px;
}
@media (max-width: 1024px) { .bv-hover-grid { grid-template-columns:repeat(2, 1fr); } }
@media (max-width: 600px)  { .bv-hover-grid { grid-template-columns:1fr; } }

.bv-hover-card {
    display:block; text-decoration:none; color:inherit;
    background:#fff; border-radius:14px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease;
}
@media (hover:hover) and (pointer:fine) and (min-width:769px) {
.bv-hover-card:hover {
    transform:translateY(-4px);
    box-shadow:0 6px 16px rgba(0,0,0,.08);
}
}

.bv-hover-imgs {
    position:relative; aspect-ratio:1/1; overflow:hidden;
    background:#0f0f10;
}
.bv-hover-img {
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    background:#0f0f10 no-repeat center / cover;
    transition:opacity .55s cubic-bezier(.4,0,.2,1), transform 6s ease;
}
.bv-hover-img.is-before { z-index:1; opacity:1; }
.bv-hover-img.is-after  { z-index:2; opacity:0; }
.bv-hover-img.solo      { opacity:1; }


/* 라벨 배지 */
.bv-hover-badge {
    position:absolute; top:14px; z-index:5;
    padding:5px 12px; border-radius:14px;
    font-size:11px; font-weight:600; color:#fff; letter-spacing:.04em;
    backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
    box-shadow:0 2px 8px rgba(0,0,0,.18);
    transition:opacity .3s ease;
    pointer-events:none;
}
.bv-hover-badge.before { left:14px; background:rgba(20,20,20,.7); }
.bv-hover-badge.after  { right:14px; background:var(--bv-main, #0d9488); opacity:0; }
.bv-hover-badge.solo   { left:14px; background:rgba(20,20,20,.7); }

.bv-hover-hint {
    position:absolute; bottom:14px; right:14px; z-index:5;
    padding:4px 10px; border-radius:10px;
    background:rgba(255,255,255,.92); color:#1f2937;
    font-size:10px; font-weight:500; letter-spacing:.02em;
    box-shadow:0 2px 6px rgba(0,0,0,.12);
    opacity:.85; transition:opacity .25s ease;
    pointer-events:none;
}

.bv-hover-card.is-showing-after .bv-hover-img.is-before, .bv-hover-card.is-showing-after .bv-hover-badge.before { opacity:0; }
.bv-hover-card.is-showing-after .bv-hover-img.is-after, .bv-hover-card.is-showing-after .bv-hover-badge.after { opacity:1; }
.bv-hover-card.is-showing-after .bv-hover-hint { opacity:0; }
.bv-hover-image-link { display:none; position:absolute; inset:0; z-index:6; }
.bv-hover-image-link.is-locked { display:block; }
.bv-hover-controls { display:flex; gap:4px; margin:12px 18px 0; padding:4px; border-radius:999px; background:#f3f6fa; }
.bv-hover-controls button { flex:1; min-width:0; min-height:44px; padding:8px 12px; border:0; border-radius:999px; box-shadow:none; background:transparent; color:#4a5565; font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
.bv-hover-controls button[aria-pressed="true"] { background:var(--bv-main,#70a7fe); color:#fff; }
.bv-hover-title a { color:inherit; text-decoration:none; }
.bv-hover-detail { display:inline-flex; align-items:center; gap:8px; min-height:44px; margin-top:8px; color:#29466c; text-decoration:none; font-size:13px; font-weight:600; }
.bv-hover-controls button:focus-visible, .bv-hover-title a:focus-visible, .bv-hover-detail:focus-visible { outline:2px solid #244c82; outline-offset:3px; }
.bv-hover-image-link:focus-visible { outline:3px solid #244c82; outline-offset:-4px; }
.bv-hover-hint { display:none; }
@media (hover:hover) and (pointer:fine) and (min-width:769px) {
    .bv-hover-image-link { display:block; }
    .bv-hover-controls { display:none; }
    .bv-hover-card:focus-within .bv-hover-controls { display:flex; }
    .bv-hover-hint { display:block; }
    .bv-hover-card.is-showing-after .bv-hover-img.is-after { transform:scale(1.04); }
}
@media (prefers-reduced-motion:reduce) {
    .bv-hover-card, .bv-hover-img, .bv-hover-badge, .bv-hover-hint { transition:none; }
    .bv-hover-card:hover, .bv-hover-card.is-showing-after .bv-hover-img.is-after { transform:none; }
}

.bv-hover-empty {
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    color:#9ca3af; font-size:36px;
    background:linear-gradient(135deg, #f8fafc, #eef2f7);
}

/* 본문 */
.bv-hover-body { padding:16px 18px; }
.bv-hover-cat {
    display:inline-block; padding:3px 10px; border-radius:12px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488); font-size:11px; font-weight:600;
    letter-spacing:.02em; margin-bottom:8px;
}
.bv-hover-title {
    margin:0 0 10px; font-size:15px; font-weight:600; color:#1f2937;
    line-height:1.4; letter-spacing:-.01em;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}
.bv-hover-tags { display:flex; flex-wrap:wrap; gap:5px; }
.bv-hover-tag {
    padding:2px 8px; border-radius:4px;
    background:#f5f5f5; color:#6b7280;
    font-size:11px; font-weight:500;
}
.bv-hover-tag.muted { background:#fafafa; color:#9ca3af; }

/* ============================================================
 * 레이아웃: baf_grid (BEST 캐러셀 + 4-column 카드 그리드)
 * ============================================================ */

/* ── BEST 섹션 ── */
.bv-best-section {
    background:linear-gradient(135deg, #fff8e1 0%, #fff 60%);
    border:1px solid #fde68a;
    border-radius:14px; padding:20px 22px; margin-bottom:28px;
}
.bv-best-head {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:14px;
}
.bv-best-head h3 {
    margin:0; font-size:16px; font-weight:700; color:#92400e;
    letter-spacing:.02em;
}
.bv-best-head h3::after { content:''; }
.bv-best-sub { font-size:11px; color:#a16207; }

.bv-best-scroll {
    display:flex; gap:14px; overflow-x:auto; overflow-y:hidden;
    padding:2px 2px 8px; scroll-snap-type:x mandatory;
    scrollbar-width:thin;
}
.bv-best-scroll::-webkit-scrollbar { height:6px; }
.bv-best-scroll::-webkit-scrollbar-thumb { background:#fde68a; border-radius:3px; }

.bv-best-card {
    flex:0 0 200px; scroll-snap-align:start;
    background:#fff; border-radius:10px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    text-decoration:none; color:inherit;
    transition:transform .2s ease, box-shadow .2s ease;
}
.bv-best-card:hover { transform:translateY(-3px); box-shadow:0 6px 16px rgba(0,0,0,.08); }

.bv-best-thumb {
    position:relative; aspect-ratio:1/1;
    background:#0f172a; display:grid;
}
.bv-best-thumb:has(.bv-best-thumb-half:nth-child(2)) { grid-template-columns:1fr 1fr; }
.bv-best-thumb-half {
    background:#0f172a no-repeat center / cover;
    border-right:1px solid rgba(255,255,255,.06);
}
.bv-best-thumb-half:last-child { border-right:0; }
.bv-best-thumb-solo { background:#0f172a no-repeat center / cover; grid-column:1/-1; }
.bv-best-empty {
    grid-column:1/-1; display:flex; align-items:center; justify-content:center;
    color:#64748b; font-size:30px; background:#1e293b;
}
.bv-best-rank {
    position:absolute; top:8px; left:8px;
    background:linear-gradient(135deg, #fbbf24, #f59e0b);
    color:#7c2d12; font-size:11px; font-weight:700;
    padding:3px 8px; border-radius:10px;
    box-shadow:0 2px 6px rgba(245,158,11,.3);
}
.bv-best-cap { padding:10px 12px 12px; }
.bv-best-cat {
    display:inline-block; font-size:10px; color:var(--bv-main, #0d9488);
    font-weight:600; margin-bottom:4px;
}
.bv-best-title {
    display:block; font-size:13px; font-weight:600; color:#1f2937;
    line-height:1.4; letter-spacing:-.01em;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}

/* ── 메인 카드 그리드 ── */
.bv-baf-grid {
    display:grid; grid-template-columns:repeat(4, 1fr); gap:18px;
}
@media (max-width:1100px) { .bv-baf-grid { grid-template-columns:repeat(3, 1fr); } }
@media (max-width:760px)  { .bv-baf-grid { grid-template-columns:repeat(2, 1fr); gap:12px; } }
@media (max-width:420px)  { .bv-baf-grid { grid-template-columns:1fr; } }

.bv-baf-card {
    display:flex; flex-direction:column;
    background:#fff; border-radius:12px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    text-decoration:none; color:inherit;
    transition:transform .2s ease, box-shadow .2s ease;
}
.bv-baf-card:hover {
    transform:translateY(-4px);
    box-shadow:0 6px 16px rgba(0,0,0,.08);
}

.bv-baf-thumb {
    position:relative; aspect-ratio:1/1;
    background:#0f172a; overflow:hidden;
    display:grid;
}
.bv-baf-thumb:has(.bv-baf-thumb-half.after) { grid-template-columns:1fr 1fr; }

.bv-baf-thumb-half, .bv-baf-thumb-solo {
    position:relative;
    background:#0f172a no-repeat center / cover;
    transition:transform .4s ease;
}
.bv-baf-thumb-half.before { border-right:1px solid rgba(255,255,255,.08); }
.bv-baf-thumb-solo { grid-column:1/-1; }
.bv-baf-card:hover .bv-baf-thumb-half,
.bv-baf-card:hover .bv-baf-thumb-solo { transform:scale(1.04); }

.bv-baf-thumb-lbl {
    position:absolute; bottom:8px; padding:3px 9px;
    background:rgba(20,20,20,.72); color:#fff;
    font-size:10px; font-weight:600; letter-spacing:.04em;
    border-radius:10px;
}
.bv-baf-thumb-half.before .bv-baf-thumb-lbl { left:8px; }
.bv-baf-thumb-half.after  .bv-baf-thumb-lbl {
    right:8px; background:var(--bv-main, #0d9488);
}
.bv-baf-thumb-solo .bv-baf-thumb-lbl { left:8px; }

.bv-baf-empty {
    grid-column:1/-1; display:flex; align-items:center; justify-content:center;
    color:#64748b; font-size:34px;
    background:linear-gradient(135deg, #1e293b, #0f172a);
}

.bv-baf-angle-chip {
    position:absolute; top:10px; right:10px; z-index:3;
    padding:4px 10px; border-radius:12px;
    background:rgba(255,255,255,.96); color:#1f2937;
    font-size:10px; font-weight:600;
    box-shadow:0 2px 8px rgba(0,0,0,.15);
    backdrop-filter:saturate(1.4);
}

.bv-baf-body { padding:14px 16px 16px; flex:1; display:flex; flex-direction:column; }
.bv-baf-cat {
    display:inline-block; padding:3px 9px; border-radius:10px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488); font-size:11px; font-weight:600;
    letter-spacing:.02em; margin-bottom:8px; align-self:flex-start;
}
.bv-baf-title {
    margin:0 0 10px; font-size:14px; font-weight:600; color:#1f2937;
    line-height:1.45; letter-spacing:-.01em;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
    min-height:2.9em;
}
.bv-baf-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:auto; }
.bv-baf-tag {
    padding:2px 8px; border-radius:4px;
    background:#f5f5f5; color:#6b7280;
    font-size:11px; font-weight:500;
}

/* ============================================================
 * 레이아웃: baf_vertical (세로 스크롤 — 모바일 우선)
 * 케이스마다 모든 시점/각도를 위에서 아래로 길게 펼쳐서 보여줌
 * 의료 SNS / 인스타그램 피드 톤
 * ============================================================ */
.bv-vt-feed {
    max-width:680px; margin:0 auto;
    display:flex; flex-direction:column; gap:36px;
}
@media (max-width:760px) { .bv-vt-feed { gap:28px; } }

.bv-vt-card {
    background:#fff; border-radius:14px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:box-shadow .2s ease;
}
.bv-vt-card:hover { box-shadow:0 6px 16px rgba(0,0,0,.08); }

.bv-vt-head {
    display:flex; align-items:center; gap:12px;
    padding:14px 18px; border-bottom:1px solid #f3f4f6;
}
.bv-vt-avatar {
    width:36px; height:36px; border-radius:50%;
    background:linear-gradient(135deg, var(--bv-main, #0d9488), color-mix(in srgb, var(--bv-main, #0d9488) 60%, #000));
    color:#fff; display:flex; align-items:center; justify-content:center;
    font-size:14px; font-weight:700;
    flex-shrink:0;
}
.bv-vt-head-info { flex:1; min-width:0; }
.bv-vt-cat {
    display:inline-block; padding:2px 8px; border-radius:10px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488); font-size:11px; font-weight:600;
    margin-bottom:4px;
}
.bv-vt-title {
    display:block; font-size:15px; font-weight:600; color:#1f2937;
    text-decoration:none; line-height:1.4;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.bv-vt-title:hover { color:var(--bv-main, #0d9488); }
.bv-vt-date { font-size:11px; color:#9ca3af; flex-shrink:0; }

/* 시점별 row — 케이스마다 자기 case_phases 만큼 반복 */
.bv-vt-rows { padding:8px 0; }
.bv-vt-row {
    padding:12px 18px;
    border-bottom:1px solid #f9fafb;
}
.bv-vt-row:last-child { border-bottom:0; }
.bv-vt-row-head {
    display:flex; align-items:center; gap:10px; margin-bottom:10px;
}
.bv-vt-phase-dot {
    width:8px; height:8px; border-radius:50%;
    background:var(--bv-main, #0d9488);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--bv-main, #0d9488) 18%, transparent);
}
.bv-vt-phase-lbl {
    font-size:13px; font-weight:600; color:#1f2937;
    letter-spacing:-.01em;
}
.bv-vt-phase-meta { font-size:11px; color:#9ca3af; }

.bv-vt-imgs {
    display:grid; gap:6px;
    grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));
}
.bv-vt-imgs.cols-1 { grid-template-columns:1fr; }
.bv-vt-imgs.cols-2 { grid-template-columns:1fr 1fr; }
.bv-vt-imgs.cols-3 { grid-template-columns:repeat(3, 1fr); }

.bv-vt-img-wrap {
    position:relative; aspect-ratio:1/1;
    background:#0f172a no-repeat center / cover;
    border-radius:8px; overflow:hidden;
    cursor:zoom-in;
    transition:transform .25s ease;
}
.bv-vt-img-wrap:hover { transform:scale(1.02); }
.bv-vt-angle-chip {
    position:absolute; top:6px; left:6px;
    padding:2px 7px; border-radius:8px;
    background:rgba(255,255,255,.95); color:#1f2937;
    font-size:10px; font-weight:600;
    box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.bv-vt-empty-row {
    display:flex; align-items:center; justify-content:center;
    height:100px; color:#cbd5e1; font-size:24px;
    background:linear-gradient(135deg, #f8fafc, #f1f5f9);
    border-radius:8px;
}

.bv-vt-foot {
    padding:14px 18px; border-top:1px solid #f3f4f6;
    display:flex; flex-wrap:wrap; gap:6px;
    background:#fafbfc;
}
.bv-vt-tag {
    padding:3px 10px; border-radius:10px;
    background:#fff; border:1px solid #e5e7eb;
    color:#6b7280; font-size:11px; font-weight:500;
}
.bv-vt-detail {
    margin-left:auto; align-self:center;
    color:var(--bv-main, #0d9488); font-size:12px; font-weight:600;
    text-decoration:none;
}
.bv-vt-detail:hover { text-decoration:underline; }

/* ============================================================
 * 레이아웃: baf_timeline (회복 과정 타임라인 — 시점 가로 step)
 * ============================================================ */
.bv-tl-feed { display:flex; flex-direction:column; gap:24px; }

.bv-tl-card {
    background:#fff; border-radius:14px;
    padding:22px 24px;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:box-shadow .2s ease;
}
.bv-tl-card:hover { box-shadow:0 6px 16px rgba(0,0,0,.08); }

.bv-tl-head {
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:16px; margin-bottom:18px;
    padding-bottom:16px; border-bottom:1px solid #f3f4f6;
}
.bv-tl-head-text { flex:1; min-width:0; }
.bv-tl-cat {
    display:inline-block; padding:3px 10px; border-radius:11px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488); font-size:11px; font-weight:600;
    margin-bottom:8px;
}
.bv-tl-title {
    display:block; font-size:18px; font-weight:700; color:#1f2937;
    text-decoration:none; line-height:1.4;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical;
}
.bv-tl-title:hover { color:var(--bv-main, #0d9488); }
.bv-tl-head-meta {
    display:flex; gap:6px; flex-wrap:wrap;
    margin-top:6px; font-size:12px; color:#9ca3af;
}
.bv-tl-detail {
    flex-shrink:0;
    color:var(--bv-main, #0d9488); font-size:13px; font-weight:600;
    text-decoration:none; padding:7px 14px;
    border:0; border-radius:999px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    transition:background .15s ease, color .15s ease;
}
.bv-tl-detail:hover {
    background:var(--bv-main, #0d9488); color:#fff;
}

/* 가로 스크롤 타임라인 트랙 */
.bv-tl-track {
    display:flex; gap:0; overflow-x:auto; overflow-y:hidden;
    padding:8px 2px 12px; scroll-snap-type:x proximity;
    scrollbar-width:thin;
    align-items:flex-start;
}
.bv-tl-track::-webkit-scrollbar { height:6px; }
.bv-tl-track::-webkit-scrollbar-thumb { background:#d1d5db; border-radius:3px; }

.bv-tl-step {
    flex:0 0 180px;
    scroll-snap-align:start;
    position:relative;
    display:flex; flex-direction:column; align-items:stretch;
    padding-right:36px;  /* 화살표 공간 */
}
.bv-tl-step:last-child { padding-right:0; }

.bv-tl-step-num {
    position:absolute; top:6px; left:6px; z-index:3;
    width:24px; height:24px; border-radius:50%;
    background:var(--bv-main, #0d9488); color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:700;
    box-shadow:0 2px 6px rgba(0,0,0,.18);
}
.bv-tl-step.is-start .bv-tl-step-num { background:#6b7280; }
.bv-tl-step.is-end .bv-tl-step-num   { background:linear-gradient(135deg, #f59e0b, #ef4444); }

.bv-tl-step-img {
    display:block; aspect-ratio:1/1;
    background:#0f172a no-repeat center / cover;
    border-radius:10px;
    border:3px solid #fff;
    box-shadow:0 1px 3px rgba(0,0,0,.08);
    transition:transform .25s ease, box-shadow .25s ease;
}
.bv-tl-step-img:hover {
    transform:scale(1.04);
    box-shadow:0 6px 16px rgba(0,0,0,.10);
}

.bv-tl-step-cap {
    margin-top:10px; padding:0 4px;
    text-align:center;
}
.bv-tl-step-phase {
    display:block; font-size:13px; font-weight:700; color:#1f2937;
    letter-spacing:-.01em;
}
.bv-tl-step-note {
    display:block; margin-top:3px;
    font-size:11px; color:#6b7280; font-style:italic;
}

.bv-tl-arrow {
    position:absolute; right:6px; top:calc(50% - 22px);
    transform:translateY(-50%);
    color:#cbd5e1; font-size:22px; font-weight:300;
    user-select:none;
    transition:color .25s ease;
}
.bv-tl-card:hover .bv-tl-arrow { color:var(--bv-main, #0d9488); }

.bv-tl-empty {
    flex:1; padding:40px;
    text-align:center; color:#cbd5e1;
    background:linear-gradient(135deg, #f8fafc, #f1f5f9);
    border-radius:10px;
}

@media (max-width:760px) {
    .bv-tl-card { padding:18px 16px; }
    .bv-tl-head { flex-direction:column; align-items:stretch; gap:10px; }
    .bv-tl-detail { align-self:flex-start; }
    .bv-tl-step { flex:0 0 140px; padding-right:28px; }
    .bv-tl-step-img { border-width:2px; }
    .bv-tl-arrow { right:3px; font-size:18px; }
}

/* ============================================================
 * 레이아웃: baf_compare (다중 케이스 동시 시점 비교)
 * ============================================================ */
.bv-cmp-wrap { display:flex; flex-direction:column; gap:18px; }

/* 시점 chip 바 — sticky 로 스크롤 시 따라옴 */
.bv-cmp-chips {
    position:sticky; top:0; z-index:50;
    display:flex; align-items:center; flex-wrap:wrap;
    gap:14px;
    padding:14px 18px;
    background:#fff;
    border-radius:14px;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    border:0;
}
.bv-cmp-chips-lbl {
    font-size:12px; font-weight:700; color:#1f2937;
    letter-spacing:-.01em;
    flex-shrink:0;
}
.bv-cmp-chips-track {
    display:flex; gap:6px; flex-wrap:wrap;
    flex:1; min-width:0;
}
.bv-cmp-chips-help {
    font-size:11px; color:#9ca3af;
    margin-left:auto;
}
.bv-cmp-chip {
    padding:6px 14px; border-radius:14px;
    background:#f3f4f6; border:1px solid transparent;
    color:#4b5563; font-size:12px; font-weight:600;
    cursor:pointer;
    transition:all .15s ease;
    white-space:nowrap;
}
.bv-cmp-chip:hover {
    background:color-mix(in srgb, var(--bv-main, #0d9488) 10%, #fff);
    color:var(--bv-main, #0d9488);
}
.bv-cmp-chip.is-active {
    background:var(--bv-main, #0d9488);
    color:#fff;
}

@media (max-width:760px) {
    .bv-cmp-chips { padding:12px 14px; gap:10px; }
    .bv-cmp-chips-help { display:none; }
}

/* 카드 그리드 */
.bv-cmp-grid {
    display:flex; flex-wrap:wrap;
    gap:16px;
}
.bv-cmp-grid > .bv-cmp-card { flex:1 1 240px; max-width:100%; }
@media (max-width:480px) {
    .bv-cmp-grid { gap:10px; }
    .bv-cmp-grid > .bv-cmp-card { flex:1 1 calc(50% - 5px); }
}

.bv-cmp-card {
    background:#fff; border-radius:12px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:transform .25s ease, box-shadow .25s ease;
    display:flex; flex-direction:column;
}
.bv-cmp-card:hover {
    transform:translateY(-3px);
    box-shadow:0 6px 16px rgba(0,0,0,.08);
}
.bv-cmp-card.is-na { opacity:.55; }

/* 이미지 영역 */
.bv-cmp-img {
    position:relative; display:block;
    aspect-ratio:1/1;
    background:#0f172a no-repeat center / cover;
    transition:background-image .35s ease;
}
.bv-cmp-empty {
    position:absolute; inset:0;
    display:flex; align-items:center; justify-content:center;
    color:#64748b; font-size:34px;
    background:linear-gradient(135deg, #1e293b, #0f172a);
}
.bv-cmp-card.is-na .bv-cmp-img {
    background:linear-gradient(135deg, #f3f4f6, #e5e7eb) !important;
}

.bv-cmp-phase-tag {
    position:absolute; top:10px; left:10px; z-index:3;
    padding:4px 10px; border-radius:11px;
    background:var(--bv-main, #0d9488); color:#fff;
    font-size:11px; font-weight:700; letter-spacing:.02em;
    box-shadow:0 2px 8px rgba(0,0,0,.18);
    transition:transform .25s ease;
}
.bv-cmp-card:hover .bv-cmp-phase-tag { transform:scale(1.06); }

.bv-cmp-angle-tag {
    position:absolute; bottom:10px; right:10px; z-index:3;
    padding:3px 9px; border-radius:9px;
    background:rgba(255,255,255,.95); color:#1f2937;
    font-size:10px; font-weight:600;
    box-shadow:0 1px 4px rgba(0,0,0,.12);
}
.bv-cmp-angle-tag:empty { display:none; }

.bv-cmp-na {
    position:absolute; inset:50% 0 0 0;
    transform:translateY(-50%);
    text-align:center;
    font-size:13px; font-weight:600; color:#9ca3af;
    pointer-events:none;
}

/* 본문 */
.bv-cmp-body {
    padding:12px 14px 14px;
    display:flex; flex-direction:column; gap:6px;
}
.bv-cmp-cat {
    align-self:flex-start;
    padding:2px 9px; border-radius:10px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488);
    font-size:10px; font-weight:600;
    letter-spacing:.02em;
}
.bv-cmp-title {
    margin:0; font-size:13px; font-weight:600; line-height:1.4;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
    min-height:2.7em;
}
.bv-cmp-title a { color:#1f2937; text-decoration:none; }
.bv-cmp-title a:hover { color:var(--bv-main, #0d9488); }

.bv-cmp-meta {
    display:flex; flex-wrap:wrap; gap:4px;
    margin-top:auto;
}
.bv-cmp-meta-tag {
    padding:2px 7px; border-radius:4px;
    background:#f5f5f5; color:#6b7280;
    font-size:10px; font-weight:500;
}

/* ============================================================
 * 레이아웃: baf_blog (의사 매거진형 — 큰 비주얼 + 본문, 전체 화면)
 * ============================================================ */
.bv-blog-feed {
    display:flex; flex-direction:column; gap:36px;
    width:100%;     /* 전체 화면 (max-width 제거) */
}

.bv-blog-card {
    background:#fff; border-radius:16px; overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:box-shadow .25s ease, transform .25s ease;
    display:grid; grid-template-columns:minmax(380px, 44%) 1fr; gap:0;
}
.bv-blog-card:hover {
    box-shadow:0 6px 16px rgba(0,0,0,.08);
    transform:translateY(-3px);
}
@media (max-width:880px) {
    .bv-blog-card { grid-template-columns:1fr; }
}

/* 비주얼 영역 */
.bv-blog-visual {
    position:relative;
    display:block;
    background:#0f172a;
    overflow:hidden;
    aspect-ratio:4/3;     /* 더 와이드한 캔버스 */
}
@media (max-width:880px) {
    .bv-blog-visual { aspect-ratio:16/10; }
}

.bv-blog-pair {
    display:grid; grid-template-columns:1fr 1fr;
    height:100%; gap:1px;
}
.bv-blog-pair-img {
    position:relative;
    background:#0f172a no-repeat center / cover;
    transition:transform .4s ease;
}
.bv-blog-card:hover .bv-blog-pair-img { transform:scale(1.04); }

.bv-blog-pair-lbl {
    position:absolute; bottom:12px; padding:4px 11px;
    background:rgba(20,20,20,.72); color:#fff;
    font-size:11px; font-weight:600; letter-spacing:.04em;
    border-radius:11px;
}
.bv-blog-pair-img:not(.after) .bv-blog-pair-lbl { left:12px; }
.bv-blog-pair-img.after .bv-blog-pair-lbl       { right:12px; background:var(--bv-main, #0d9488); }

.bv-blog-solo {
    position:relative; height:100%;
    background:#0f172a no-repeat center / cover;
    transition:transform .4s ease;
}
.bv-blog-card:hover .bv-blog-solo { transform:scale(1.04); }
.bv-blog-solo-lbl {
    position:absolute; bottom:12px; left:12px; padding:4px 11px;
    background:rgba(20,20,20,.72); color:#fff;
    font-size:11px; font-weight:600; letter-spacing:.04em;
    border-radius:11px;
}

.bv-blog-empty {
    width:100%; height:100%;
    display:flex; align-items:center; justify-content:center;
    color:#64748b; font-size:36px;
    background:linear-gradient(135deg, #1e293b, #0f172a);
}

.bv-blog-cat-badge {
    position:absolute; top:14px; left:14px; z-index:3;
    padding:5px 12px; border-radius:13px;
    background:rgba(255,255,255,.95);
    color:var(--bv-main, #0d9488);
    font-size:11px; font-weight:700; letter-spacing:.02em;
    box-shadow:0 2px 8px rgba(0,0,0,.18);
}

/* 본문 영역 */
.bv-blog-body {
    padding:26px 28px;
    display:flex; flex-direction:column;
}
@media (max-width:760px) {
    .bv-blog-body { padding:20px 18px; }
}

.bv-blog-byline {
    display:flex; align-items:center; gap:10px;
    margin-bottom:14px;
    font-size:12px; color:#6b7280;
}
.bv-blog-avatar {
    width:36px; height:36px; border-radius:50%;
    background:linear-gradient(135deg, var(--bv-main, #0d9488), color-mix(in srgb, var(--bv-main, #0d9488) 50%, #000));
    display:flex; align-items:center; justify-content:center;
    overflow:hidden;
    color:#fff; font-size:13px; font-weight:700;
    flex-shrink:0;
}
.bv-blog-avatar img { width:100%; height:100%; object-fit:cover; }
.bv-blog-byline-text { line-height:1.3; }
.bv-blog-byline-text strong {
    display:block; color:#1f2937; font-size:13px; font-weight:700;
}
.bv-blog-byline-text em {
    display:block; font-style:normal; color:#9ca3af; font-size:11px;
    margin-top:1px;
}
.bv-blog-byline-meta {
    margin-left:auto; font-size:11px; color:#9ca3af;
    flex-shrink:0; text-align:right; line-height:1.4;
}

.bv-blog-title {
    margin:0 0 12px;
    font-size:21px; font-weight:700;
    line-height:1.35; letter-spacing:-.015em;
}
.bv-blog-title a {
    color:#111827; text-decoration:none;
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}
.bv-blog-title a:hover { color:var(--bv-main, #0d9488); }

.bv-blog-excerpt {
    margin:0 0 18px;
    color:#4b5563; font-size:14.5px; line-height:1.8;
    white-space:pre-line;        /* 줄바꿈 보존 (단락 구분) */
    overflow:hidden; text-overflow:ellipsis;
    display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical;
}
@media (max-width:760px) {
    .bv-blog-excerpt { -webkit-line-clamp:5; font-size:14px; line-height:1.7; }
}

.bv-blog-foot {
    margin-top:auto;
    display:flex; flex-wrap:wrap; align-items:center;
    gap:10px;
    padding-top:16px; border-top:1px solid #f3f4f6;
}
.bv-blog-tags { display:flex; flex-wrap:wrap; gap:6px; flex:1; min-width:0; }
.bv-blog-tag {
    padding:3px 10px; border-radius:10px;
    background:#f3f4f6; color:#4b5563;
    font-size:11px; font-weight:500;
}
.bv-blog-tag.angle { background:#fff; border:1px solid #e5e7eb; color:#374151; }
.bv-blog-tag.phase {
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488); font-weight:600;
}
.bv-blog-readmore {
    color:var(--bv-main, #0d9488); font-size:13px; font-weight:700;
    text-decoration:none; flex-shrink:0;
    transition:transform .2s ease;
}
.bv-blog-readmore:hover { transform:translateX(3px); }

/* ============================================================
 * VIEW (글 상세) — 슬라이더 메인 + 사이드바
 * ============================================================ */
.bv-view { background:#fff; border-radius:12px; padding:32px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.bv-view-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; padding-bottom:14px; border-bottom:1px solid #f0f0f0; }
.bv-view-back { color:#666; text-decoration:none; font-size:13px; }
.bv-view-grid { display:grid; grid-template-columns:1fr 320px; gap:32px; align-items:start; }
.bv-view-side { position:sticky; top:80px; align-self:start; }
.bv-view-side .hv-admin-memo { box-sizing:border-box;margin:0 0 18px;padding:18px;border:1px solid #f2c96d;border-radius:12px;background:#fffaf0;color:#3f3525;box-shadow:0 4px 16px rgba(80,55,10,.07); }
.bv-view-side .hv-admin-memo h2 { margin:0;font-size:17px;line-height:1.4; }
.bv-view-side .hv-admin-memo__help { margin:4px 0 13px;color:#806b45;font-size:14px; }
.bv-view-side .hv-admin-memo__label { display:block;margin-bottom:7px;font-size:15px;font-weight:600; }
.bv-view-side .hv-admin-memo__input { box-sizing:border-box;width:100%;min-height:160px;padding:11px 12px;resize:vertical;border:1px solid #dbc89f;border-radius:8px;background:#fff;color:#292524;font-size:16px;font-family:inherit;line-height:1.65; }
.bv-view-side .hv-admin-memo__input:focus { outline:3px solid rgba(217,164,52,.22);border-color:#b98922; }
.bv-view-side .hv-admin-memo__footer { display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px; }
.bv-view-side .hv-admin-memo__status { color:#806b45;font-size:13px; }
.bv-view-side .hv-admin-memo__save { flex:0 0 auto;padding:8px 12px;border:0;border-radius:7px;background:#8a6515;color:#fff;font-weight:700;cursor:pointer; }
.bv-view-side .hv-admin-memo__save:disabled { opacity:.55;cursor:wait; }
.bv-view > .hv-admin-memo--floating { box-sizing:border-box;margin:0 0 20px;padding:18px;border:1px solid #f2c96d;border-radius:12px;background:#fffaf0;color:#3f3525;box-shadow:0 4px 16px rgba(80,55,10,.07); }
.bv-view > .hv-admin-memo--floating h2 { margin:0;font-size:17px;line-height:1.4; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__help { margin:4px 0 13px;color:#806b45;font-size:12px; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__label { display:block;margin-bottom:7px;font-size:13px;font-weight:600; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__input { box-sizing:border-box;width:100%;min-height:140px;padding:10px 11px;resize:vertical;border:1px solid #dbc89f;border-radius:8px;background:#fff;color:#292524;font:inherit;line-height:1.55; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__input:focus { outline:3px solid rgba(217,164,52,.22);border-color:#b98922; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__footer { display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__status { color:#806b45;font-size:11px; }
.bv-view > .hv-admin-memo--floating .hv-admin-memo__save { flex:0 0 auto;padding:8px 12px;border:0;border-radius:7px;background:#8a6515;color:#fff;font-weight:700;cursor:pointer; }
@media (min-width:1540px) {
    .bv-view > .hv-admin-memo--floating { position:fixed;z-index:20;top:120px;right:24px;width:290px;max-height:calc(100vh - 144px);overflow:auto;margin:0; }
}
@media (max-width:900px){ .bv-view-grid { grid-template-columns:1fr; } .bv-view-side { position:static; } }
.bv-view-main h1 { font-size:24px; font-weight:700; margin:0 0 6px; }
.bv-view-meta-line { font-size:13px; color:#888; margin-bottom:18px; }
.bv-view-meta-line .badge { display:inline-block; padding:3px 8px; background:var(--bv-main, #0d9488); color:#fff; border-radius:4px; font-size:11px; margin-right:6px; }
.bv-view-content { margin-top:24px; line-height:1.75; font-size:15px; color:#333; }
.bv-view-content img { max-width:100%; height:auto; border-radius:6px; margin:8px 0; }

/* ============================================================
   모델 갤러리 — 대표사진 + 정보 + 3열 썸네일
   ============================================================ */
.bv-layout-baf_model_gallery .bv-toolbar { margin-bottom:28px; }
.bv-mg-feed { display:flex; flex-direction:column; gap:72px; }
.bv-mg-card {
    position:relative;
    display:grid;
    grid-template-columns:minmax(0, 1.08fr) minmax(340px, .92fr);
    gap:40px;
    align-items:stretch;
    min-width:0;
}
.bv-mg-drag {
    position:absolute;
    top:12px;
    left:12px;
    z-index:8;
    width:42px;
    height:42px;
    padding:0;
    border:1px solid rgba(255,255,255,.72);
    border-radius:10px;
    color:#fff;
    background:rgba(0,0,0,.5);
    box-shadow:0 4px 14px rgba(0,0,0,.18);
    font-size:22px;
    line-height:40px;
    cursor:grab;
    touch-action:none;
    backdrop-filter:blur(6px);
}
.bv-mg-drag:active { cursor:grabbing; }
.bv-mg-main {
    position:relative;
    display:block;
    min-width:0;
    min-height:0;
    aspect-ratio:1 / 1;
    overflow:hidden;
    border-radius:20px;
    background:#f2f2f2;
    cursor:grab;
    touch-action:pan-y;
    user-select:none;
    -webkit-user-select:none;
}
.bv-mg-main.is-swiping { cursor:grabbing; }
.bv-mg-main img, .bv-mg-main video { width:100%; height:100%; display:block; object-fit:cover; transition:opacity .2s ease; -webkit-user-drag:none; user-select:none; }
.bv-mg-main img { pointer-events:none; }
.bv-mg-main video { background:#111; }
.bv-mg-period {
    position:absolute;
    left:0; right:0; bottom:0;
    min-height:38px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:7px 14px;
    color:#fff;
    background:color-mix(in srgb,var(--bv-main,#0d9488) 52%,transparent);
    font-size:16px;
    line-height:1.35;
    backdrop-filter:blur(5px);
}
.bv-mg-empty { position:absolute; inset:0; display:grid; place-items:center; color:#aaa; }
.bv-mg-info { min-width:0; display:flex; flex-direction:column; }
.bv-mg-copy { min-width:0; max-width:100%; padding:4px 0 28px; overflow-wrap:anywhere; }
.bv-mg-name { margin:0 0 14px; color:#777; font-size:17px; }
.bv-mg-name strong { color:#111; font-size:20px; font-weight:800; }
.bv-mg-title { max-width:100%; margin:0; color:#111; font-size:clamp(22px,2.4vw,32px); font-weight:800; line-height:1.35; overflow-wrap:anywhere; word-break:break-word; }
.bv-mg-title a { color:inherit; text-decoration:none; }
.bv-mg-tags { display:flex; flex-wrap:wrap; gap:7px 12px; max-width:100%; margin-top:15px; color:#666; font-size:15px; overflow-wrap:anywhere; }
.bv-mg-tags span { min-width:0; max-width:100%; overflow-wrap:anywhere; word-break:break-word; }
.bv-mg-desc { max-width:100%; margin:18px 0 0; color:#555; font-size:15px; line-height:1.75; overflow-wrap:anywhere; word-break:break-word; white-space:normal; }
.bv-mg-thumbs {
    display:grid;
    grid-template-columns:repeat(3, minmax(0,1fr));
    gap:7px;
    margin-top:auto;
}
.bv-mg-thumb {
    position:relative;
    aspect-ratio:1 / 1;
    padding:0;
    overflow:hidden;
    border:2px solid transparent;
    border-radius:15px;
    background:#eee;
    cursor:pointer;
    transition:border-color .2s ease, transform .2s ease, opacity .2s ease;
}
.bv-mg-thumb:hover { transform:translateY(-2px); }
.bv-mg-thumb.active { border-color:var(--bv-main,#111); }
.bv-mg-thumb img, .bv-mg-thumb video { width:100%; height:100%; display:block; object-fit:cover; filter:grayscale(1); transition:filter .2s ease; }
.bv-mg-thumb.active img, .bv-mg-thumb:hover img,
.bv-mg-thumb.active video, .bv-mg-thumb:hover video { filter:grayscale(0); }
.bv-mg-play { position:absolute; left:50%; top:50%; z-index:2; display:grid; place-items:center; width:34px; height:34px; padding-left:2px; border-radius:50%; color:#fff; background:rgba(0,0,0,.58); box-shadow:0 2px 10px rgba(0,0,0,.25); font-size:14px; transform:translate(-50%,-50%); pointer-events:none; }
.bv-mg-detail { align-self:flex-end; margin-top:18px; color:#555; font-size:13px; text-decoration:none; }
.bv-mg-thumb-wrap { position:relative; min-width:0; }
.bv-mg-thumb-wrap .bv-mg-thumb { width:100%; display:block; }
.bv-mg-marquee-guide { display:flex; align-items:center; gap:12px; margin:0 0 18px; padding:13px 16px; border:1px solid color-mix(in srgb,var(--bv-main,#0d9488) 25%,#fff); border-radius:12px; background:color-mix(in srgb,var(--bv-main,#0d9488) 7%,#fff); color:var(--bv-main,#0d9488); font-size:14px; line-height:1.5; }
.bv-mg-marquee-guide strong { flex:none; }
.bv-mg-marquee-pick { position:absolute; z-index:4; top:8px; right:8px; display:flex; align-items:center; gap:5px; min-width:36px; min-height:36px; padding:7px 10px; border:2px solid var(--bv-main,#0d9488); border-radius:9px; background:rgba(255,255,255,.94); color:var(--bv-main,#0d9488); cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.25); font-size:12px; font-weight:700; line-height:1; white-space:nowrap; }
.bv-mg-marquee-pick input { position:absolute; width:1px; height:1px; opacity:0; }
.bv-mg-marquee-check { display:none; font-size:16px; font-weight:800; line-height:1; }
.bv-mg-marquee-pick:has(input:checked) { border-color:var(--bv-main,#0d9488); background:var(--bv-main,#0d9488); color:#fff; }
.bv-mg-marquee-pick:has(input:checked) .bv-mg-marquee-check { display:inline; }
.bv-mg-marquee-pick:focus-within { outline:3px solid color-mix(in srgb,var(--bv-main,#0d9488) 38%,transparent); outline-offset:2px; }
.bv-mg-marquee-pick:has(input:disabled) { cursor:wait; opacity:.6; }
.bv-sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
@media(max-width:768px){.bv-mg-marquee-guide{align-items:flex-start;flex-direction:column;gap:3px}.bv-mg-marquee-text{font-size:11px}}
.bv-mg-cover-btn {
    position:absolute;
    top:7px;
    right:7px;
    z-index:4;
    width:28px;
    height:28px;
    padding:0;
    border:1px solid rgba(255,255,255,.75);
    border-radius:50%;
    color:#fff;
    background:rgba(0,0,0,.48);
    font-size:16px;
    line-height:26px;
    cursor:pointer;
    backdrop-filter:blur(4px);
}
.bv-mg-thumb-wrap.is-cover .bv-mg-cover-btn { color:#ffd86b; background:rgba(0,0,0,.65); }
.bv-mg-view-meta { display:flex; flex-wrap:wrap; gap:7px 16px; margin-top:18px; color:#999; font-size:12px; }
.bv-mg-view-content { max-width:820px; margin:46px auto 0; padding-top:32px; border-top:1px solid #eee; }
.bv-mg-lock { display:none; }
.bv-mg-card.bv-locked .bv-mg-lock,
.bv-mg-view.bv-locked .bv-mg-lock {
    position:absolute; left:0; right:0; bottom:0; z-index:3;
    min-height:140px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
    padding:18px 16px; color:#fff; background:rgba(15,15,15,.72); font-weight:500;
    -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
}
.bv-mg-lock .text { max-width:32em; text-align:center; line-height:1.55; word-break:keep-all; text-wrap:balance; text-shadow:0 1px 5px rgba(0,0,0,.3); }
.bv-mg-lock .text strong, .bv-mg-lock .text small { display:block; }
.bv-mg-lock .text strong { font-size:14px; font-weight:700; }
.bv-mg-lock .text small { margin-top:2px; font-size:13px; font-weight:400; }

/* 중간 화면: PC 2열을 유지한 채 이미지·정보 영역이 같은 비율로 유동 축소된다. */
@media (max-width:1180px) {
    .bv-mg-card { grid-template-columns:minmax(0,1.05fr) minmax(290px,.95fr); gap:clamp(20px,3vw,34px); }
    .bv-mg-main { width:100%; max-width:none; border-radius:16px; }
    .bv-mg-info { width:auto; max-width:none; }
    .bv-mg-copy { padding-bottom:16px; }
    .bv-mg-thumbs { gap:6px; }
    .bv-mg-name { margin-bottom:9px; }
    .bv-mg-title { font-size:clamp(21px,2.5vw,28px); }
    .bv-mg-desc { margin-top:13px; line-height:1.65; }
}

/* 실제 모바일 구간에서만 세로 1열로 전환한다. */
@media (max-width:760px) {
    .bv-mg-feed { gap:52px; }
    .bv-mg-card { grid-template-columns:1fr; gap:22px; }
    .bv-mg-main,
    .bv-mg-info { width:100%; max-width:none; }
    .bv-mg-copy { padding-bottom:20px; }
    .bv-mg-thumbs { margin-top:0; }
    .bv-mg-detail { align-self:flex-start; }
}

@media (max-width:520px) {
    .bv-mg-feed { gap:42px; }
    .bv-mg-name { margin-bottom:8px; font-size:14px; }
    .bv-mg-name strong { font-size:17px; }
    .bv-mg-title { font-size:22px; }
    .bv-mg-tags { font-size:13px; gap:5px 9px; }
    .bv-mg-desc { font-size:14px; margin-top:13px; }
    .bv-mg-thumb { border-radius:10px; }
}

/* 사이드: 메타 박스 + 즐겨찾기 + 공유 */
.bv-side-card { background:#fafafa; border:1px solid #eee; border-radius:10px; padding:18px; margin-bottom:14px; }
.bv-side-card h4 { margin:0 0 12px; font-size:13px; font-weight:600; color:#444; }
.bv-meta-row { display:flex; padding:6px 0; font-size:13px; border-bottom:1px dashed #eee; }
.bv-meta-row:last-child { border-bottom:0; }
.bv-meta-row .k { width:90px; color:#888; flex-shrink:0; }
.bv-meta-row .v { flex:1; color:#333; }
.bv-fav-btn { display:block; width:100%; padding:11px; background:rgba(0,0,0,.07); border:0; border-radius:12px; cursor:pointer; font-size:13px; color:#666; font-weight:600; transition:background .15s; }
.bv-fav-btn:hover { background:rgba(0,0,0,.12); }
.bv-fav-btn.on { background:#fef3c7; color:#92400e; }
.bv-share-btn { display:block; width:100%; padding:11px; background:var(--bv-main, #0d9488); color:#fff; border:0; border-radius:12px; cursor:pointer; font-size:13px; font-weight:600; margin-top:6px; transition:filter .15s, transform .15s; }
.bv-share-btn:hover { filter:brightness(1.08); transform:translateY(-1px); }

/* 유사 케이스 추천 */
.bv-similar { margin-top:20px; }
.bv-similar h2 { font-size:14px; font-weight:600; margin:0 0 10px; }

/* ============================================================
 * 비로그인 블러 + LOGIN 오버레이
 * ============================================================ */
.bv-locked { position:relative; }
/* 은은한 스크림 — 과한 블러 대신 부드러운 그라데이션으로 가독성 확보 */
.bv-login-overlay { position:absolute; left:0; right:0; bottom:0; min-height:clamp(112px,28%,150px); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; padding:18px 16px; z-index:10; pointer-events:none; border-radius:0; background:rgba(15,15,15,.72); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.bv-login-overlay .text { max-width:32em; color:#fff; font-size:14px; font-weight:400; text-align:center; line-height:1.55; padding:0 8px; word-break:keep-all; text-wrap:balance; text-shadow:0 1px 6px rgba(0,0,0,.4); }
.bv-login-overlay .text strong, .bv-login-overlay .text span { display:block; }
.bv-login-overlay .text strong { font-weight:700; }
.bv-login-overlay.is-compact { min-height:100px; gap:7px; padding:12px 10px; }
.bv-login-overlay.is-compact .text { font-size:14px; line-height:1.5; }
.bv-login-overlay.is-compact .bv-login-btn { padding:8px 24px; font-size:14px; }
.bv-login-btn { pointer-events:auto; display:inline-flex; align-items:center; gap:6px; padding:11px 34px; background:var(--bv-main, #0d9488); color:#fff; border:0; border-radius:999px; font-size:14px; font-weight:600; cursor:pointer; text-decoration:none; box-shadow:0 4px 16px rgba(0,0,0,.10); transition:transform .15s, filter .15s; }
.bv-login-btn:hover { transform:translateY(-1px); filter:brightness(1.08); }

/* ============================================================
 * Lightbox
 * ============================================================ */
.bv-lightbox { position:fixed; inset:0; z-index:99999; background:rgba(0,0,0,.92); display:none; align-items:center; justify-content:center; }
.bv-lightbox.open { display:flex; }
.bv-lightbox img { max-width:96vw; max-height:96vh; object-fit:contain; }
.bv-lightbox-close { position:fixed; top:20px; right:20px; width:40px; height:40px; border-radius:50%; background:#fff; border:0; font-size:20px; cursor:pointer; }

/* ============================================================
 * 글쓰기 폼 — 의료/뷰티 톤 카드형
 * ============================================================ */
.bv-write {
    background:#fff; border-radius:16px; padding:36px 40px;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    max-width:920px; margin:0 auto;
}
.bv-write-head { margin-bottom:26px; padding-bottom:22px; border-bottom:1px solid #f0f0f0; }
.bv-write-head h1, .bv-write-head h2 { margin:0 0 6px; font-size:24px; font-weight:700; color:#0f172a; letter-spacing:-.01em; }
.bv-write-help { margin:0; font-size:13px; color:#6b7280; line-height:1.6; }
.bv-write-help strong { color:var(--bv-main, #0d9488); }

.bv-write-tbl { width:100%; border-collapse:collapse; margin-bottom:24px; }
.bv-write-tbl th {
    width:160px; padding:18px 4px 18px 0; text-align:left; vertical-align:top;
    border-bottom:1px solid #f3f4f6;
    font-weight:500; color:#374151; font-size:13px;
}
.bv-write-tbl td {
    padding:14px 0 14px 16px; border-bottom:1px solid #f3f4f6;
}
.bv-write-tbl tr:last-child th, .bv-write-tbl tr:last-child td { border-bottom:0; }
.bv-write-tbl .req { color:#ef4444; margin-left:2px; }
.bv-write-tbl tr.section th {
    background:linear-gradient(135deg, var(--bv-main, #0d9488), color-mix(in srgb, var(--bv-main, #0d9488) 80%, #000 20%));
    color:#fff; padding:12px 16px; font-weight:600; font-size:13px;
    border:0; border-radius:8px; letter-spacing:.02em;
}
.bv-write-tbl tr.section td { display:none; }
.bv-write-tbl tr.section + tr th { padding-top:22px; }

.bv-input {
    padding:11px 14px; border:1px solid #e5e7eb; border-radius:8px;
    font-size:14px; box-sizing:border-box; font-family:inherit;
    background:#fff; color:#1f2937;
    transition:border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.bv-input.wide { width:100%; }
.bv-input.small { width:160px; }
.bv-input:focus {
    outline:none; border-color:var(--bv-main, #0d9488);
    box-shadow:0 0 0 4px rgba(13,148,136,.12);
}
textarea.bv-input { font-family:inherit; resize:vertical; min-height:80px; }
select.bv-input {
    appearance:none; -webkit-appearance:none;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat; background-position:right 14px center;
    padding-right:36px;
}

/* 사진 업로드 매트릭스 (각도 × 시점) */
.bv-photo-matrix { display:grid; gap:14px; }
.bv-photo-row { display:grid; grid-template-columns:80px repeat(auto-fit, minmax(160px,1fr)); gap:10px; align-items:start; padding:10px; background:#fafafa; border-radius:8px; }
.bv-photo-row .angle-label { font-size:13px; font-weight:600; color:#0d9488; padding-top:8px; }
.bv-photo-cell { background:#fff; border:2px dashed #cbd5e1; border-radius:6px; padding:10px; text-align:center; cursor:pointer; }
.bv-photo-cell:hover { border-color:var(--bv-main, #0d9488); }
.bv-photo-cell .phase-label { font-size:11px; color:#888; margin-bottom:6px; }
.bv-photo-cell input[type="file"] { font-size:11px; width:100%; }
.bv-photo-cell .preview { margin-top:6px; }
.bv-photo-cell .preview img { width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:4px; }
.bv-photo-cell .existing { margin-bottom:6px; position:relative; }
.bv-photo-cell .existing img { width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:4px; }
.bv-photo-cell .existing .del { position:absolute; top:4px; right:4px; padding:2px 6px; background:rgba(220,38,38,.85); color:#fff; border-radius:3px; font-size:11px; cursor:pointer; }

.bv-write-actions {
    display:flex; gap:10px; padding-top:24px; border-top:1px solid #f0f0f0;
    justify-content:flex-end;
}
.bv-btn-submit {
    padding:13px 32px; background:var(--bv-main, #0d9488); color:#fff;
    border:0; border-radius:12px; font-size:14px; font-weight:600; cursor:pointer;
    transition:transform .18s, filter .18s;
    letter-spacing:.02em;
}
.bv-btn-submit:hover { transform:translateY(-1px); filter:brightness(1.08); }
.bv-btn-submit:active { transform:translateY(0); }
.bv-btn-cancel {
    padding:13px 28px; background:rgba(0,0,0,.07); color:#6b7280;
    border:0; border-radius:12px; font-size:14px; font-weight:600;
    text-decoration:none; display:inline-flex; align-items:center;
    transition:background .18s;
}
.bv-btn-cancel:hover { background:rgba(0,0,0,.12); }

.bv-help { display:block; margin-top:6px; color:#9ca3af; font-size:12px; line-height:1.5; }
.bv-no-content-check { display:inline-flex;align-items:center;gap:8px;margin:0 0 2px;padding:9px 12px;border:1px solid #d7dde5;border-radius:8px;background:#f8fafc;color:#334155;font-size:13px;font-weight:700;cursor:pointer; }
.bv-no-content-check input { position:absolute;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0!important; }
.bv-no-content-box { display:inline-grid!important;place-items:center;box-sizing:border-box;width:20px!important;height:20px!important;min-width:20px;border:2px solid #64748b;border-radius:4px;background:#fff;color:transparent;font-size:14px;font-weight:900;line-height:1; }
.bv-no-content-check input:checked + .bv-no-content-box { border-color:var(--bv-main,#0d9488);background:var(--bv-main,#0d9488);color:#fff; }
.bv-no-content-check input:focus-visible + .bv-no-content-box { outline:3px solid rgba(13,148,136,.24);outline-offset:2px; }
.wr_content.is-content-empty .cheditor-container,.wr_content.is-content-empty iframe,.wr_content.is-content-empty textarea[name="wr_content"] { opacity:.42; }
.bv-radio-group { display:flex; flex-wrap:wrap; gap:14px; padding:6px 0; }
.bv-radio-group label {
    font-size:13px; cursor:pointer; user-select:none;
    display:inline-flex; align-items:center; gap:6px;
    padding:6px 12px; border:1px solid #e5e7eb; border-radius:8px;
    background:#fff; transition:border-color .18s, background .18s;
}
.bv-radio-group label:hover { border-color:var(--bv-main, #0d9488); background:rgba(13,148,136,.04); }
.bv-radio-group input[type="radio"], .bv-radio-group input[type="checkbox"] {
    appearance:auto !important; pointer-events:auto !important;
    accent-color:var(--bv-main, #0d9488); margin:0;
}

@media (max-width: 700px) {
    .bv-write { padding:24px 18px; border-radius:12px; }
    .bv-write-tbl th { display:block; width:auto; padding:12px 0 4px; }
    .bv-write-tbl td { display:block; padding:0 0 16px; }
}
.bv-write-tbl .req { color:#dc2626; }
.bv-write-tbl .section th { background:var(--bv-main, #0d9488); color:#fff; padding:10px 16px; border:0; font-weight:600; font-size:13px; }
.bv-input.small { width:140px; }
.bv-help { display:block; margin-top:4px; color:#888; font-size:11px; }
.bv-radio-group { display:flex; flex-wrap:wrap; gap:14px; padding:6px 0; }
.bv-radio-group label { font-size:13px; cursor:pointer; user-select:none; }
.bv-radio-group input[type="radio"], .bv-radio-group input[type="checkbox"] { appearance:auto !important; pointer-events:auto !important; accent-color:var(--bv-main, #0d9488); margin-right:4px; }
.bv-photo-matrix-help { padding:8px 0 12px; }

/* ============================================================
 * View 페이지 추가 클래스
 * ============================================================ */
.bv-view { padding:24px; background:#fff; border-radius:12px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.bv-view-actions { display:flex; gap:6px; }
.bv-view-cat { display:inline-block; padding:4px 10px; background:var(--bv-main, #0d9488); color:#fff; border-radius:4px; font-size:11px; margin-bottom:8px; }
.bv-view-title { font-size:24px; font-weight:700; margin:0 0 8px; line-height:1.4; }
.bv-view-meta { font-size:13px; color:#888; margin-bottom:18px; }
.bv-view-meta span { margin-right:6px; }
.bv-view-slider-wrap { position:relative; margin-bottom:14px; }

/* Carousel — 케이스/페어 간 슬라이드 (translate3d, 깜박임 없음) */
.bv-carousel { position:relative; overflow:hidden; border-radius:12px; }
.bv-carousel-track {
    display:flex; will-change:transform;
    transition:transform .55s cubic-bezier(.4, 0, .2, 1);
}
.bv-carousel-slide {
    flex:0 0 100%; min-width:0; max-width:100%;
    position:relative;
}
.bv-carousel-slide .baf-slider { border-radius:0; box-shadow:none; }
.bv-carousel { background:transparent; }

/* 슬라이드 정보 막대 — 슬라이더 하단 (각도 / 시점 / 분류) */
.bv-slide-tagbar {
    position:absolute; bottom:14px; left:14px; right:14px; z-index:5;
    display:flex; flex-wrap:wrap; gap:6px;
    pointer-events:none; justify-content:space-between; align-items:center;
}
.bv-tag-angle, .bv-tag-phase, .bv-tag-cat {
    display:inline-flex; align-items:center;
    padding:6px 14px; border-radius:14px;
    font-size:13px; font-weight:600; letter-spacing:.02em;
    backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
    box-shadow:0 4px 12px rgba(0,0,0,.25);
    line-height:1;
}
.bv-tag-angle { background:rgba(255,255,255,.94); color:#1f2937; }
.bv-tag-phase { background:var(--bv-main, #0d9488); color:#fff; margin-left:auto; }
.bv-tag-cat   { background:rgba(0,0,0,.62); color:#fff; }
@media (max-width: 600px) {
    .bv-slide-tagbar { bottom:10px; left:10px; right:10px; gap:4px; }
    .bv-tag-angle, .bv-tag-phase, .bv-tag-cat { padding:4px 10px; font-size:11px; }
}

/* 슬라이더 좌우 화살표 + 캡션 + dots */
.bv-slide-nav {
    position:absolute; top:50%; transform:translateY(-50%);
    width:44px; height:44px; border-radius:50%;
    background:rgba(0,0,0,.55); color:#fff; border:0;
    font-size:24px; line-height:1; cursor:pointer; z-index:7;
    display:flex; align-items:center; justify-content:center;
    backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
    transition:background .18s, transform .18s;
}
.bv-slide-nav:hover { background:rgba(0,0,0,.75); }
.bv-slide-nav.prev { left:14px; }
.bv-slide-nav.next { right:14px; }

@media (max-width: 700px) {
    .bv-slide-nav { width:38px; height:38px; font-size:20px; }
    .bv-slide-nav.prev { left:8px; }
    .bv-slide-nav.next { right:8px; }
}
.bv-slide-nav:active { transform:translateY(-50%) scale(.96); }

.bv-slide-info {
    display:flex; align-items:center; justify-content:space-between; gap:14px;
    margin:14px 0 6px; padding:10px 14px;
    background:#f9fafb; border-radius:10px; border:1px solid #f0f0f0;
    flex-wrap:wrap;
}
.bv-slide-caption {
    font-size:14px; font-weight:600; color:var(--bv-main, #0d9488);
    letter-spacing:-.01em;
}
.bv-slide-counter { font-size:12px; color:#9ca3af; font-variant-numeric:tabular-nums; }
.bv-slide-counter span { color:#1f2937; font-weight:600; }
.bv-slide-dots { display:flex; gap:0; align-items:center; }
/* 누르는 영역 24×24(WCAG 2.2), 보이는 점은 ::before 로 그대로 */
.bv-slide-dot {
    position:relative; width:24px; height:24px;
    background:none; border:0; cursor:pointer; padding:0;
}
.bv-slide-dot::before {
    content:""; position:absolute; left:50%; top:50%;
    width:8px; height:8px; border-radius:50%; background:#d1d5db;
    transform:translate(-50%,-50%);
    transition:background .18s, transform .18s, width .18s;
}
.bv-slide-dot:hover::before { background:#9ca3af; transform:translate(-50%,-50%) scale(1.2); }
.bv-slide-dot.active::before { background:var(--bv-main, #0d9488); width:24px; border-radius:4px; }
.bv-slide-detail {
    margin-left:auto; padding:7px 14px;
    background:var(--bv-main, #0d9488); color:#fff !important;
    border-radius:8px; text-decoration:none;
    font-size:12px; font-weight:600;
    transition:filter .15s, transform .15s;
}
.bv-slide-detail:hover { filter:brightness(1.1); transform:translateX(2px); }

/* ============================================================
 * baf_slider 레이아웃 — 레퍼런스 디자인 (no border, hover-reveal arrows)
 * ============================================================ */
.bv-stage-wrap {
    background:transparent; padding:0 0 24px; position:relative;
    border:0; box-shadow:none; border-radius:0;
}

/* 메인 스테이지 — carousel + 화살표 (슬라이더 위 hover reveal) */
.bv-stage { position:relative; padding:0; }
.bv-stage-nav {
    position:absolute; top:50%; transform:translateY(-50%) scale(.92);
    width:54px; height:54px; border-radius:50%;
    background:rgba(255,255,255,.92);
    border:0; color:#333; cursor:pointer; z-index:7;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 4px 16px rgba(0,0,0,.10);
    opacity:0; pointer-events:none;
    transition:opacity .25s ease, transform .25s ease, color .2s, background .2s;
}
.bv-stage-nav svg { width:24px; height:24px; }
.bv-stage:hover .bv-stage-nav,
.bv-stage:focus-within .bv-stage-nav {
    opacity:1; pointer-events:auto;
    transform:translateY(-50%) scale(1);
}
.bv-stage-nav:hover {
    color:var(--bv-main, #0d9488);
    background:#fff;
    box-shadow:0 6px 16px rgba(0,0,0,.14);
}
.bv-stage-nav.prev { left:14px; }
.bv-stage-nav.next { right:14px; }
.bv-stage-nav:active { transform:translateY(-50%) scale(.95); }

/* 모바일 — 평소에도 화살표 표시 (hover 없음) */
@media (hover: none) {
    .bv-stage-nav { opacity:1; pointer-events:auto; transform:translateY(-50%) scale(1); }
}

.bv-stage .bv-carousel { background:transparent; }
.bv-stage .baf-slider { border-radius:8px; box-shadow:none; }
.bv-baf-media-hive .bv-stage .baf-slider,
.bv-baf-media-hive .bv-view-slider-wrap .baf-slider{aspect-ratio:50/29;background:#fafafa}
.bv-baf-media-hive .bv-stage .baf-slider .baf-slider-img-single,
.bv-baf-media-hive .bv-stage .baf-slider .baf-slider-img-base,
.bv-baf-media-hive .bv-stage .baf-slider .baf-slider-img-overlay,
.bv-baf-media-hive .bv-view-slider-wrap .baf-slider .baf-slider-img-single,
.bv-baf-media-hive .bv-view-slider-wrap .baf-slider .baf-slider-img-base,
.bv-baf-media-hive .bv-view-slider-wrap .baf-slider .baf-slider-img-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;transform:scale(1.015);transform-origin:center}

/* 케이스 안 angle 별 슬라이더 — display 토글 (깜박임 없음) */
.bv-case-sliders { position:relative; }
.bv-case-slider { display:none; }
.bv-case-slider.is-active { display:block; }

/* 케이스 정보 (카테고리 + 제목 + 점선 + 부제 + 각도 탭) */
.bv-case-info { padding:28px 12px 8px; text-align:center; }
.bv-case-tag-row {
    display:inline-flex; align-items:center; gap:14px;
    margin-bottom:18px; flex-wrap:wrap; justify-content:center;
}
.bv-case-cat {
    display:inline-flex; align-items:center;
    padding:6px 18px; border-radius:18px;
    background:color-mix(in srgb, var(--bv-main, #0d9488) 12%, #fff);
    color:var(--bv-main, #0d9488);
    font-size:13px; font-weight:600; letter-spacing:.02em;
}
.bv-case-title { font-size:18px; font-weight:600; color:#222; letter-spacing:-.01em; }
.bv-case-divider {
    height:0; border-top:1px dashed #d4d4d4;
    margin:0 0 16px; max-width:680px; margin-left:auto; margin-right:auto;
}
.bv-case-sub {
    color:#888; font-size:13px; line-height:1.7;
    margin-bottom:22px; padding:0 20px;
}
.bv-case-angle-tabs {
    display:inline-flex; gap:6px; padding:4px;
    background:#f5f5f5; border-radius:8px;
}
.bv-case-angle-tab {
    padding:7px 18px; border:0; background:transparent;
    color:#888; font-size:13px; cursor:pointer; border-radius:6px;
    transition:background .2s, color .2s;
    font-family:inherit;
}
.bv-case-angle-tab:hover { color:#333; }
.bv-case-angle-tab.is-active {
    background:#fff; color:var(--bv-main, #0d9488); font-weight:600;
    box-shadow:0 1px 3px rgba(0,0,0,.08);
}

/* 카운터 + dots + 자세히 */
.bv-stage-bottom {
    display:flex; align-items:center; justify-content:center; gap:16px;
    padding:18px 0 0; flex-wrap:wrap;
}
.bv-stage-bottom .bv-slide-dots { gap:0; }
.bv-stage-detail {
    margin-left:auto; padding:9px 18px;
    background:rgba(0,0,0,.07); color:#666 !important;
    border:0; border-radius:12px;
    text-decoration:none; font-size:12px; font-weight:600;
    transition:background .2s, color .2s;
}
.bv-stage-detail:hover { background:rgba(0,0,0,.12); color:var(--bv-main, #0d9488) !important; }

/* 다른 케이스 그리드 (4 columns) */
.bv-other-grid {
    display:flex; flex-wrap:wrap; gap:14px;
    margin:32px 0 18px;
}
.bv-other-grid > .bv-other-card {
    flex:0 0 calc((100% - (14px * (var(--bv-other-cols-pc, 4) - 1))) / var(--bv-other-cols-pc, 4));
    width:calc((100% - (14px * (var(--bv-other-cols-pc, 4) - 1))) / var(--bv-other-cols-pc, 4));
    min-width:0;
}
.bv-other-card {
    display:block; text-decoration:none; color:inherit;
    background:transparent; border:0; padding:0; cursor:pointer;
    font-family:inherit; text-align:left; width:100%;
    min-width:0;            /* 그리드 자식 오버플로우 방지 — 긴 캡션이 칸 너비를 늘리지 않게 */
    transition:transform .2s;
}
.bv-other-card:hover { transform:translateY(-2px); }
.bv-other-pair {
    display:flex; gap:0; aspect-ratio:2/1;
    border-radius:6px; overflow:hidden; background:#e9e4dc;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    transition:box-shadow .2s, outline .2s;
    outline:2px solid transparent; outline-offset:0;
}
.bv-other-card:hover .bv-other-pair {
    box-shadow:0 4px 14px rgba(0,0,0,.14);
}
.bv-other-card.is-active .bv-other-pair {
    outline:2px solid var(--bv-main, #0d9488);
    outline-offset:2px;
    box-shadow:0 4px 18px rgba(0,0,0,.18);
}
.bv-other-card.is-active .bv-other-cap {
    color:var(--bv-main, #0d9488); font-weight:600;
}
.bv-other-img { display:block; flex:1; background:#e9e4dc no-repeat center / cover; min-width:0; }
.bv-other-img.is-empty { background:#eee; }
.bv-other-img img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.bv-other-pair.is-solo { background:#e9e4dc; }
.bv-baf-media-hive .bv-other-pair{aspect-ratio:50/29}
.bv-baf-media-hive .bv-other-pair,.bv-baf-media-hive .bv-other-img{background:#fafafa}
.bv-baf-media-hive .bv-other-img{display:flex;align-items:center;justify-content:center;overflow:hidden}
.bv-baf-media-hive .bv-other-img img{object-fit:contain;transform:scale(1.06);transform-origin:center}
.bv-other-cap {
    display:block; margin-top:8px; text-align:center;
    font-size:12px; color:#666; line-height:1.4;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

/* 비로그인 블러 — 메인 뷰어와 동일한 방식 (블러 + 균일 그라데이션 스크림) */
.bv-other-grid.bv-locked .bv-other-pair { position:relative; }
.bv-other-grid.bv-locked .bv-other-pair::after {
    content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
    background:linear-gradient(180deg, rgba(0,0,0,.18) 0%, rgba(0,0,0,.34) 100%);
}

/* 하단 주의 문구 */
.bv-stage-warning {
    clear:both; margin:0; padding:40px 16px 12px;
    background:transparent; border:0;
    text-align:center; font-size:12px; color:#777; line-height:1.7;
}

@media (max-width: 900px) {
    .bv-stage-nav { width:44px; height:44px; }
    .bv-stage-nav.prev { left:8px; }
    .bv-stage-nav.next { right:8px; }
    .bv-stage-nav svg { width:20px; height:20px; }
    .bv-other-grid { margin:24px 0; }
    .bv-stage-bottom { padding:18px 0 0; }
    .bv-stage-warning { margin:0; padding-top:30px; }
}
@media (max-width: 768px) {
    .bv-other-grid > .bv-other-card {
        flex-basis:calc((100% - (14px * (var(--bv-other-cols-mo, 2) - 1))) / var(--bv-other-cols-mo, 2));
        width:calc((100% - (14px * (var(--bv-other-cols-mo, 2) - 1))) / var(--bv-other-cols-mo, 2));
    }
}
@media (max-width: 600px) {
    .bv-stage-wrap { padding:0 0 18px; }
    .bv-stage-nav { width:36px; height:36px; }
    .bv-stage-nav.prev { left:6px; }
    .bv-stage-nav.next { right:6px; }
    .bv-case-info { padding:20px 4px 4px; }
    .bv-case-title { font-size:16px; }
    .bv-case-sub { font-size:12px; padding:0 4px; }
}
.bv-angle-tabs { display:flex; gap:6px; margin:14px 0; flex-wrap:wrap; }

.bv-side-card h2 { margin:0 0 12px; font-size:13px; font-weight:600; color:#444; }
.bv-meta-list { margin:0; }
.bv-meta-list dt { font-size:12px; color:#888; margin-top:8px; }
.bv-meta-list dt:first-child { margin-top:0; }
.bv-meta-list dd { margin:2px 0 0; padding:0; font-size:13px; color:#333; font-weight:500; }
.bv-side-doctor { display:flex; gap:10px; align-items:center; }
.bv-side-doctor img { width:48px; height:48px; border-radius:50%; object-fit:cover; }
.bv-side-doctor strong { display:block; font-size:13px; color:#333; }
.bv-side-doctor span { display:block; font-size:11px; color:#888; }
.bv-side-doctor small { font-size:11px; color:#0f766e; }
.bv-side-actions { margin-top:8px; }

.bv-similar-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(180px,1fr)); gap:14px; }
.bv-similar-card { display:block; text-decoration:none; color:inherit; }
.bv-similar-thumb {
    position:relative; overflow:hidden; line-height:0;
    aspect-ratio:4/3; background:#e9e4dc; border-radius:8px; margin-bottom:6px;
}
.bv-similar-thumb img,.bv-similar-thumb video { display:block; width:100%; height:100%; object-fit:cover; }
.bv-similar-empty { display:grid; place-items:center; width:100%; height:100%; color:#777; font-size:12px; line-height:1.4; }
.bv-similar-title { font-size:13px; color:#444; line-height:1.4; }
/* 비로그인 마스킹 — 원본 비율 유지 + 블러 + 균일 스크림 */
.bv-similar.bv-locked .bv-similar-thumb::after {
    content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
    background:linear-gradient(180deg, rgba(0,0,0,.16) 0%, rgba(0,0,0,.30) 100%);
}

.bv-comments { margin-top:32px; padding-top:24px; border-top:1px solid #eee; }

/* 이전/다음 글 navigation */
.bv-prev-next {
    display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px;
    margin:32px 0 0; padding:18px 0; border-top:1px solid #f0f0f0;
}
.bv-pn-item {
    min-width:0; box-sizing:border-box;
    display:flex; flex-direction:column; gap:6px;
    padding:14px 18px; border:1px solid #e5e7eb; border-radius:10px;
    text-decoration:none; color:inherit; background:#fafafa;
    transition:border-color .18s, background .18s;
}
.bv-pn-item:hover { border-color:var(--bv-main, #0d9488); background:#fff; }
.bv-pn-item.disabled { pointer-events:none; opacity:.5; background:#f3f4f6; }
.bv-pn-item.next { text-align:right; }
.bv-pn-item .lbl { font-size:12px; color:var(--bv-main, #0d9488); font-weight:600; }
.bv-pn-item .subj {
    font-size:13px; color:#444;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
@media (max-width: 700px) {
    .bv-prev-next { grid-template-columns:1fr; }
}

/* 타임라인 (view 페이지) */
.bv-timeline-wrap { margin-top:24px; padding:18px; background:#f9fafb; border-radius:10px; }
.bv-timeline-wrap h2 { margin:0 0 12px; font-size:14px; font-weight:600; }
.bv-tl-item { flex:0 0 180px; text-align:center; }
.bv-tl-label { font-size:12px; color:#666; font-weight:500; }

/* 블로그형 view */
.bv-blog-view { padding:0 0 32px; }
.bv-blog-doctor-box { display:flex; gap:14px; align-items:flex-start; padding:14px; margin:14px 0 22px; background:#f9fafb; border-radius:10px; border-left:3px solid var(--bv-main, #0d9488); flex-wrap:wrap; }
.bv-blog-doctor-box img { width:56px; height:56px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.bv-blog-doctor-box strong { display:block; font-size:14px; color:#333; }
.bv-blog-doctor-box span { display:block; font-size:12px; color:#666; margin-top:2px; }
.bv-blog-doctor-box p { margin:6px 0 0; font-size:13px; color:#666; line-height:1.5; flex-basis:100%; }
.bv-blog-doctor-box .bv-blog-date { margin-left:auto; font-size:12px; color:#999; flex-basis:auto; }

/* ============================================================
 * 사진 인라인 업로드 패널 (view 페이지)
 * ============================================================ */
.bv-photo-edit {
    background:linear-gradient(135deg, #f9fafb, #f3f4f6);
    border:1px solid #e5e7eb; border-radius:14px;
    padding:22px 24px; margin:0 0 22px;
}
.bv-photo-edit-head { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:18px; flex-wrap:wrap; gap:6px; }
.bv-photo-edit-head h3 { margin:0; font-size:15px; font-weight:700; color:#1f2937; letter-spacing:-.01em; }
.bv-photo-edit-head p { margin:0; font-size:12px; color:#6b7280; line-height:1.6; }

.bv-photo-edit-rows { display:flex; flex-direction:column; gap:14px; }
.bv-photo-edit-row {
    display:grid; grid-template-columns:80px 1fr; gap:14px; align-items:center;
    padding:14px; background:#fff; border-radius:10px;
    border:1px solid #f0f0f0;
}
.bv-photo-edit-row-lbl {
    font-size:13px; font-weight:600; color:var(--bv-main, #0d9488);
    text-align:center; padding:8px 4px; border-right:1px solid #f0f0f0;
}

/* contenteditable inline edit — 평소 텍스트 그대로, 클릭 시 편집 가능 */
.bv-photo-edit-row-lbl[contenteditable="true"],
.bv-photo-cell-lbl[contenteditable="true"] {
    cursor:text; outline:none; border-radius:4px;
    transition:background .15s, box-shadow .15s, color .15s;
    -webkit-user-select:text; user-select:text;
}
.bv-photo-edit-row-lbl[contenteditable="true"]:hover,
.bv-photo-cell-lbl[contenteditable="true"]:hover {
    background:rgba(0,0,0,.05);
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);
}
.bv-photo-edit-row-lbl[contenteditable="true"]:focus,
.bv-photo-cell-lbl[contenteditable="true"]:focus {
    background:rgba(13,148,136,.1);
    box-shadow:inset 0 0 0 2px var(--bv-main, #0d9488);
    color:#1f2937;
}
.bv-photo-edit-row-lbl[contenteditable="true"].saved,
.bv-photo-cell-lbl[contenteditable="true"].saved {
    background:rgba(22,163,74,.15);
    box-shadow:inset 0 0 0 2px #16a34a;
    color:#065f46;
}
.bv-photo-edit-row-lbl[contenteditable="true"].save-fail,
.bv-photo-cell-lbl[contenteditable="true"].save-fail {
    background:rgba(220,38,38,.12);
    box-shadow:inset 0 0 0 2px #dc2626;
}
.bv-photo-edit-row-lbl[contenteditable="true"]:empty::before,
.bv-photo-cell-lbl[contenteditable="true"]:empty::before {
    content:attr(data-label-key);
    color:#bbb;
}
.bv-photo-edit-row-cells {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:10px;
}

.bv-photo-cell {
    display:flex; flex-direction:column; gap:6px;
}
.bv-photo-cell-lbl { font-size:11px; color:#6b7280; text-align:center; font-weight:500; }
.bv-photo-cell-img {
    aspect-ratio:1/1; background:#0f0f10 no-repeat center / cover;
    border-radius:8px; position:relative; box-shadow:0 1px 4px rgba(0,0,0,.06);
}
.bv-photo-cell-del {
    position:absolute; top:6px; right:6px; width:24px; height:24px;
    border-radius:50%; background:rgba(220,38,38,.92); color:#fff;
    border:0; font-size:14px; cursor:pointer; line-height:1;
    box-shadow:0 2px 6px rgba(0,0,0,.2);
    transition:transform .15s;
}
.bv-photo-cell-del:hover { transform:scale(1.1); background:#dc2626; }
.bv-photo-cell-empty {
    display:flex; flex-direction:column; gap:4px; aspect-ratio:1/1;
    border:2px dashed #cbd5e1; border-radius:8px;
    align-items:center; justify-content:center; cursor:pointer;
    background:#fafafa;
    transition:border-color .18s, background .18s, color .18s;
}
.bv-photo-cell-empty:hover {
    border-color:var(--bv-main, #0d9488); background:rgba(13,148,136,.05);
    color:var(--bv-main, #0d9488);
}
.bv-photo-cell-empty .ico { font-size:28px; color:#cbd5e1; line-height:1; transition:color .18s; }
.bv-photo-cell-empty .txt { font-size:11px; color:#9ca3af; }
.bv-photo-cell-empty:hover .ico,
.bv-photo-cell-empty:hover .txt { color:var(--bv-main, #0d9488); }
.bv-photo-cell-cap {
    width:100%; margin-top:6px; padding:5px 8px;
    border:1px solid #e5e7eb; border-radius:5px;
    font-size:11px; color:#444; text-align:center; font-family:inherit;
    transition:border-color .18s, background .18s;
}
.bv-photo-cell-cap:focus { outline:none; border-color:var(--bv-main, #0d9488); background:#fafffe; }
.bv-photo-cell-cap:disabled { background:#f5f5f5; color:#bbb; cursor:not-allowed; }
.bv-photo-cell-cap.saved { border-color:#16a34a; background:#f0fdf4; }

.bv-photo-cell.uploading {
    opacity:.5; pointer-events:none; position:relative;
}
.bv-photo-cell.uploading::after {
    content:''; position:absolute; top:50%; left:50%;
    width:28px; height:28px; margin:-14px 0 0 -14px;
    border:3px solid rgba(13,148,136,.2);
    border-top-color:var(--bv-main, #0d9488);
    border-radius:50%; animation:bvSpin .8s linear infinite;
}
@keyframes bvSpin { to { transform:rotate(360deg); } }

@media (max-width: 700px) {
    .bv-photo-edit-row { grid-template-columns:1fr; }
    .bv-photo-edit-row-lbl { border-right:0; border-bottom:1px solid #f0f0f0; padding:0 0 8px; }
}

/* ============================================================
 * Case Review — reference-based search/filter/card layout
 * Accent follows --bv-main (site main color / cf_10).
 * ============================================================ */
.bv-cr-finder { margin-bottom:38px; padding:28px 30px; border:1px solid color-mix(in srgb, var(--bv-main) 18%, rgba(60,60,67,.14)); background:#fff; box-shadow:0 8px 28px rgba(0,0,0,.04); }
.bv-cr-finder-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; padding-bottom:16px; border-bottom:1px dashed rgba(60,60,67,.14); }
.bv-cr-finder-head h3 { margin:0; color:#1d1d1f; }
.bv-cr-finder-head h3 span { margin-right:6px; color:var(--bv-main); }
.bv-cr-finder-head p { margin:5px 0 0; color:#6e6e73; }
.bv-cr-finder-toggle { display:inline-flex; flex:0 0 auto; align-self:center; align-items:center; justify-content:center; gap:8px; min-height:44px; margin-left:auto; padding:8px 14px 8px 16px; border:1px solid rgba(60,60,67,.24); border-radius:999px; color:#1d1d1f; background:#fff; box-shadow:0 2px 8px rgba(0,0,0,.05); cursor:pointer; font-family:inherit; font-weight:700; line-height:1; transition:border-color .18s,color .18s,background .18s,box-shadow .18s; }
.bv-cr-finder-toggle:hover { border-color:var(--bv-main); color:var(--bv-main); background:color-mix(in srgb,var(--bv-main) 4%,#fff); box-shadow:0 4px 12px rgba(0,0,0,.09); }
.bv-cr-finder-toggle .arrow { display:block; width:20px; height:20px; flex:0 0 20px; color:var(--bv-main); fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:transform .22s ease; }
.bv-cr-finder-body { display:block; }
.bv-cr-finder.is-collapsed .bv-cr-finder-body { display:none; }
.bv-cr-finder.is-collapsed .bv-cr-search { margin-bottom:0; }
.bv-cr-finder.is-collapsed .bv-cr-finder-toggle .arrow { transform:rotate(180deg); }
.bv-cr-search { display:grid; grid-template-columns:44px minmax(0,1fr) auto; align-items:center; max-width:760px; min-height:58px; margin:0 auto 26px; border:1px solid rgba(60,60,67,.24); background:#fff; box-shadow:0 6px 18px rgba(0,0,0,.05); }
.bv-cr-search-icon { color:var(--bv-main); text-align:center; font-size:20px; }
.bv-cr-search input { min-width:0; height:56px; padding:0 10px; border:0; outline:0; color:#222; background:transparent; font-family:inherit; }
.bv-cr-search input::placeholder { color:#8e8e93; opacity:1; }
.bv-cr-search button { min-width:86px; height:46px; margin-right:5px; padding:0 22px; border:0; color:#fff; background:var(--bv-main); cursor:pointer; font-family:inherit; font-weight:700; transition:filter .15s; }
.bv-cr-search button:hover { filter:brightness(.92); }
.bv-cr-filter-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:34px; row-gap:10px; }
.bv-cr-filter-row { display:grid; grid-template-columns:84px minmax(0,1fr); align-items:start; gap:10px; min-width:0; }
.bv-cr-filter-row > strong { padding-top:8px; color:#1d1d1f; }
.bv-cr-chips { display:flex; flex-wrap:wrap; gap:6px; }
.bv-cr-chips .bv-chip { appearance:none; min-height:40px; padding:8px 15px; border:1px solid rgba(60,60,67,.24); border-radius:999px; color:#6e6e73; background:#fff; cursor:pointer; font-family:inherit; font-weight:500; line-height:1.2; transition:.15s; }
.bv-cr-chips .bv-chip:hover { border-color:color-mix(in srgb, var(--bv-main) 55%, rgba(60,60,67,.14)); color:var(--bv-main); }
.bv-cr-chips .bv-chip.active { border-color:var(--bv-main); color:#fff; background:var(--bv-main); font-weight:700; }
.bv-cr-reset { display:block; margin:18px 0 0 auto; border:0; color:#6e6e73; background:transparent; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }

.bv-cr-categories { display:flex; align-items:stretch; justify-content:flex-start; gap:0; margin:0 0 20px; overflow-x:auto; border-bottom:0; scrollbar-width:none; }
.bv-cr-categories::-webkit-scrollbar { display:none; }
.bv-cr-categories a { position:relative; flex:0 0 auto; padding:12px 18px; border-bottom:2px solid transparent; color:#888; font-size:14px; text-decoration:none; white-space:nowrap; }
.bv-cr-categories a span { margin-left:4px; color:#aaa; font-size:12px; }
.bv-cr-categories a::after { display:none; }
.bv-cr-categories a.active { border-bottom-color:var(--bv-main); color:var(--bv-main); font-weight:700; }
.bv-cr-list-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 14px; }
.bv-cr-list-head p { margin:0; color:#6e6e73; }
.bv-cr-list-head p strong { color:var(--bv-main); }
.bv-cr-write { padding:10px 17px; color:#fff; background:var(--bv-main); text-decoration:none; font-weight:700; }
.bv-cr-marquee-guide { display:flex; align-items:center; gap:10px 18px; margin:0 0 18px; padding:14px 18px; border:1px solid color-mix(in srgb,var(--bv-main) 28%,rgba(60,60,67,.14)); background:color-mix(in srgb,var(--bv-main) 5%,#fff); color:#6e6e73; }
.bv-cr-marquee-guide strong { flex:0 0 auto; color:var(--bv-main); }
.bv-cr-marquee-pick { display:inline-flex; align-items:center; gap:6px; margin-left:auto; padding:7px 10px; border:1px solid rgba(60,60,67,.24); border-radius:999px; background:#fff; color:#6e6e73; cursor:pointer; font-weight:700; white-space:nowrap; }
.bv-cr-marquee-pick input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; }
.bv-cr-marquee-pick span { display:grid; place-items:center; width:18px; height:18px; border:1px solid rgba(60,60,67,.24); border-radius:50%; color:transparent; font-size:12px; }
.bv-cr-marquee-pick em { font-style:normal; }
.bv-cr-marquee-pick:has(input:checked) { border-color:var(--bv-main); color:var(--bv-main); background:color-mix(in srgb,var(--bv-main) 6%,#fff); }
.bv-cr-marquee-pick input:checked + span { border-color:var(--bv-main); background:var(--bv-main); color:#fff; }
.bv-cr-marquee-pick:focus-within { outline:2px solid var(--bv-main); outline-offset:2px; }
.bv-cr-marquee-pick input:disabled ~ * { opacity:.55; }
@media(max-width:700px) {
    .bv-cr-marquee-guide { align-items:flex-start; flex-direction:column; }
    .bv-cr-case-line { flex-wrap:wrap; }
    .bv-cr-marquee-pick { order:3; width:100%; justify-content:center; margin-left:0; }
}

.bv-cr-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:34px; }
.bv-cr-card { overflow:hidden; border:1px solid rgba(60,60,67,.14); background:#fff; box-shadow:0 8px 25px rgba(0,0,0,.05); }
.bv-cr-card-head { min-height:190px; padding:24px 26px 18px; }
.bv-cr-case-line { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-bottom:14px; border-bottom:1px dashed rgba(60,60,67,.14); }
.bv-cr-case-no { color:var(--bv-main); font-weight:800; letter-spacing:.08em; }
.bv-cr-case-cat { padding:7px 12px; border:1px solid rgba(60,60,67,.24); border-radius:999px; color:#6e6e73; }
.bv-cr-card-head h3 { margin:14px 0 10px; line-height:1.45; word-break:keep-all; }
.bv-cr-card-head h3 a { color:#1d1d1f; text-decoration:none; }
.bv-cr-summary { display:flex; flex-wrap:wrap; gap:8px 16px; color:#6e6e73; }
.bv-cr-summary span::before { content:'◆'; margin-right:5px; color:var(--bv-main); font-size:7px; }
.bv-cr-photos { display:grid; grid-template-columns:1fr 1fr; aspect-ratio:1.75/1; background:#f5f5f7; }
.bv-cr-photo { position:relative; min-width:0; overflow:hidden; background:#f5f5f7 center 22%/cover no-repeat; transition:background-image .18s; }
.bv-cr-photo + .bv-cr-photo { border-left:2px solid #fff; }
.bv-cr-photo > span { position:absolute; top:12px; left:12px; z-index:2; padding:7px 12px; color:#fff; background:color-mix(in srgb, var(--bv-main) 72%, var(--bv-main)); font-weight:800; letter-spacing:.1em; }
.bv-cr-photo.is-empty::after { content:'등록된 사진이 없습니다'; position:absolute; inset:0; display:grid; place-items:center; color:#6e6e73; font-size:inherit; }
.bv-cr-card.bv-locked .bv-cr-photo.after { background:var(--bv-main); }
.bv-cr-lock { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; width:100%; padding:32px; border:0; color:#fff; background:linear-gradient(140deg, color-mix(in srgb, var(--bv-main) 25%, var(--bv-main)), var(--bv-main)); cursor:pointer; text-align:center; }
.bv-cr-lock small { color:rgba(255,255,255,.72); }
.bv-cr-lock strong { max-width:28em; line-height:1.6; word-break:keep-all; text-wrap:balance; }
.bv-cr-angle-tabs { display:flex; justify-content:center; gap:5px; padding:5px 16px 12px; border-bottom:1px dashed rgba(60,60,67,.14); }
.bv-cr-angle-tabs button { min-width:62px; min-height:42px; padding:9px 14px; border:1px solid rgba(60,60,67,.24); color:#6e6e73; background:#fff; cursor:pointer; font-family:inherit; font-weight:600; }
.bv-cr-angle-tabs button.active { border-color:var(--bv-main); color:#fff; background:var(--bv-main); }
.bv-cr-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 24px; padding:20px 26px 12px; }
.bv-cr-meta div { display:grid; grid-template-columns:78px minmax(0,1fr); gap:10px; padding:11px 0; border-bottom:1px solid rgba(60,60,67,.14); }
.bv-cr-meta span { color:#6e6e73; }
.bv-cr-meta strong { color:#1d1d1f; font-weight:700; word-break:keep-all; }
.bv-cr-card-foot { display:flex; align-items:center; justify-content:space-between; min-height:60px; padding:12px 26px 20px; }
.bv-cr-card-foot a { color:#1d1d1f; text-decoration:none; font-weight:800; }
.bv-cr-card-foot a span { color:var(--bv-main); }
.bv-cr-featured { color:var(--bv-main); font-weight:800; letter-spacing:.06em; }


@media (max-width:900px) {
    .bv-cr-filter-grid { grid-template-columns:1fr; }
    .bv-cr-grid { gap:20px; }
    .bv-cr-card-head { min-height:180px; padding:20px; }
    .bv-cr-meta { grid-template-columns:1fr; padding-right:20px; padding-left:20px; }
}
@media (max-width:700px) {
    .bv-cr-finder { margin-right:0; margin-left:0; padding:20px 14px; border-radius:8px; }
    .bv-cr-finder-head { margin-bottom:16px; padding-bottom:13px; }
    .bv-cr-finder-head > div { min-width:0; }
    .bv-cr-finder-toggle { width:44px; min-width:44px; height:44px; min-height:44px; padding:0; border-radius:50%; }
    .bv-cr-finder-toggle .arrow { width:22px; height:22px; flex-basis:22px; }
    .bv-cr-finder-toggle .label { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
    .bv-cr-finder-head p { line-height:1.5; }
    .bv-cr-search { grid-template-columns:40px minmax(0,1fr) 76px; width:100%; min-height:56px; margin-bottom:22px; border-radius:6px; }
    .bv-cr-search input { height:54px; padding:0 4px; }
    .bv-cr-search button { grid-column:auto; width:auto; min-width:70px; height:46px; margin:4px; padding:0 12px; border-radius:4px; }
    .bv-cr-filter-grid { row-gap:14px; }
    .bv-cr-filter-row { grid-template-columns:1fr; gap:7px; padding-bottom:10px; border-bottom:1px solid rgba(60,60,67,.14); }
    .bv-cr-filter-row > strong { padding-top:0; }
    .bv-cr-chips { flex-wrap:nowrap; gap:7px; margin-right:-14px; padding:0 14px 4px 0; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
    .bv-cr-chips::-webkit-scrollbar { display:none; }
    .bv-cr-chips .bv-chip { flex:0 0 auto; min-height:42px; }
    .bv-cr-categories { justify-content:flex-start; margin:0 0 20px; padding:0; }
    .bv-cr-categories a { padding:12px 18px; }
    .bv-cr-grid { grid-template-columns:1fr; }
    .bv-cr-card-head { min-height:0; }
    .bv-cr-photos { aspect-ratio:1.5/1; }
    .bv-cr-lock { padding:20px 12px; }
    .bv-cr-lock small { display:none; }
}
@media (max-width:390px) {
    .bv-cr-finder { padding-right:10px; padding-left:10px; }
    .bv-cr-search { grid-template-columns:36px minmax(0,1fr) 68px; }
    .bv-cr-search button { min-width:62px; padding:0 8px; }
    .bv-cr-search input { padding-left:2px; }
}

/* ============================================================
 * Case Review — logo / category / before-after / content card
 * Reference layout applied only to baf_case_review.
 * ============================================================ */
.bv-cr-card {
    overflow:hidden; border:1px solid rgba(60,60,67,.24);
    background:#fff; box-shadow:0 16px 38px rgba(0,0,0,.07);
    display:flex; flex-direction:column;
}
.bv-cr-card-head {
    min-height:0; padding:24px 26px;
    background:#fff;
}
.bv-cr-brand {
    display:flex; align-items:center; justify-content:center;
    min-height:58px; padding:0 0 18px;
    border-bottom:1px dashed rgba(60,60,67,.14);
    color:#111; text-align:center;
}
.bv-cr-brand img {
    display:block; width:auto; max-width:170px; height:auto; max-height:46px;
    object-fit:contain;
}
.bv-cr-brand strong { display:block; line-height:1; color:#111; }
.bv-cr-case-line {
    display:flex; align-items:center; justify-content:space-between;
    gap:16px; margin-top:24px; padding:0; border:0;
}
.bv-cr-case-cat {
    padding:8px 14px; border:1px solid rgba(60,60,67,.24); border-radius:999px;
    color:#6e6e73; background:#fff; font-weight:500;
}
.bv-cr-popular {
    display:inline-flex; align-items:center; gap:5px;
    margin-left:auto; padding:8px 12px; border:1px solid #d9d9d9;
    border-radius:999px; color:#555; background:#fff;
    box-shadow:0 4px 12px rgba(0,0,0,.12); font-weight:700;
}
.bv-cr-popular span { color:#555; font-size:.85em; }
.bv-cr-photos {
    display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    aspect-ratio:1.75/1; gap:2px; background:#f5f5f7;
    width:100%; min-width:0; overflow:hidden;
}
.bv-cr-photo {
    position:relative; width:auto; min-width:0; max-width:none; overflow:hidden; background-color:#f5f5f7;
    background-position:center 22%; background-size:cover; background-repeat:no-repeat;
}
.bv-cr-photo + .bv-cr-photo { border-left:0; }
.bv-cr-photo > span {
    top:13px; left:13px; padding:8px 12px;
    background:rgba(0,0,0,.88); font-weight:800; letter-spacing:.1em;
}
.bv-cr-card.bv-locked .bv-cr-photo.after {
    background-color:var(--bv-main);
    background-position:center center!important;
    background-size:100% 100%!important;
}
.bv-cr-card.bv-locked .bv-cr-photos { width:100%; min-width:0; }
.bv-cr-card.bv-locked .bv-cr-photo { width:auto; min-width:0; max-width:none; }
.bv-cr-card.bv-locked .bv-cr-lock { width:100%; height:100%; max-width:none; }
.bv-cr-lock {
    z-index:1; gap:0; padding:24px;
    color:#fff; background:rgba(167,105,63,.46);
    -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px);
}
.bv-cr-lock strong {
    max-width:22em; color:#fff; font-weight:800; line-height:1.55;
    text-shadow:0 1px 4px rgba(0,0,0,.22);
}
.bv-cr-angle-tabs {
    justify-content:center; gap:6px; padding:12px 20px;
    border-bottom:1px dashed rgba(60,60,67,.14); background:#fff;
}
.bv-cr-angle-tabs button {
    min-width:62px; min-height:42px; padding:8px 16px;
    border:1px solid rgba(60,60,67,.24); color:#6e6e73; background:#fff;
}
.bv-cr-angle-tabs button.active {
    border-color:var(--bv-main); color:#fff; background:var(--bv-main);
}
.bv-cr-content {
    display:flex; flex:1; flex-direction:column;
    padding:24px 26px; background:#fff;
}
.bv-cr-content h3 {
    margin:0; padding:0; color:#1d1d1f;
    font-weight:500; line-height:1.55; word-break:keep-all;
}
.bv-cr-content h3 a { color:inherit; text-decoration:none; }
.bv-cr-summary {
    display:flex; flex-wrap:wrap; gap:7px 14px;
    margin-top:12px; color:#6e6e73;
}
.bv-cr-summary:empty { display:none; }
.bv-cr-summary span::before {
    content:'◆'; margin-right:5px; color:var(--bv-main); font-size:7px;
}
.bv-cr-detail-chips {
    display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px; margin-top:18px;
}
.bv-cr-detail-chips span {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:0; min-height:38px; padding:7px 12px;
    border:1px solid rgba(60,60,67,.24); color:#8e8e93; background:#fff;
    font-weight:700;
}
.bv-cr-excerpt {
    margin:20px 0 0; color:#8e8e93; line-height:1.75;
    display:-webkit-box; overflow:hidden; -webkit-line-clamp:3; -webkit-box-orient:vertical;
}
.bv-cr-card-foot {
    min-height:52px; margin-top:auto; padding:20px 0 0;
    justify-content:flex-end;
}
.bv-cr-card-foot a { color:#1d1d1f; font-weight:800; }
.bv-cr-card-foot a span { color:var(--bv-main); }

@media (max-width:900px) {
    .bv-cr-card-head { min-height:0; padding:20px; }
}
@media (max-width:700px) {
    .bv-cr-card-head { min-height:0; padding:20px; }
    .bv-cr-brand { min-height:52px; padding-bottom:15px; }
    .bv-cr-brand img { max-width:145px; max-height:40px; }
    .bv-cr-case-line { margin-top:20px; }
    .bv-cr-photos { aspect-ratio:1.5/1; }
    .bv-cr-photo > span { top:10px; left:10px; padding:7px 10px; }
    .bv-cr-lock { padding:16px 10px; }
    .bv-cr-lock small { display:none; }
    .bv-cr-angle-tabs {
        justify-content:center; flex-wrap:nowrap; overflow-x:auto;
        padding:10px 12px; scrollbar-width:none;
    }
    .bv-cr-angle-tabs::-webkit-scrollbar { display:none; }
    .bv-cr-angle-tabs button { flex:0 0 auto; min-width:58px; min-height:40px; padding:7px 13px; }
    .bv-cr-content { padding:22px 20px; }
    .bv-cr-detail-chips { grid-template-columns:repeat(2,minmax(0,1fr)); }
}


/* Large side-by-side comparison; keep the case carousel and its thumbnails. */
.bv-stage .baf-slider.is-side-by-side { display:grid; grid-template-columns:minmax(0,var(--baf-before-ratio,1fr)) minmax(0,var(--baf-after-ratio,1fr)); gap:0; aspect-ratio:var(--baf-pair-ratio,2); min-height:0; background:transparent; cursor:default; }
.baf-slider.is-side-by-side .baf-side-photo { position:relative; margin:0; min-width:0; min-height:0; overflow:hidden; }
.baf-slider.is-side-by-side .baf-side-photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; object-position:center; transform:none; }
.baf-slider.is-side-by-side .baf-side-caption { position:absolute; z-index:2; top:12px; left:12px; max-width:calc(100% - 24px); box-sizing:border-box; padding:6px 12px; border-radius:18px; color:#fff; background:rgba(20,20,20,.72); font-size:12px; line-height:1.4; }
.baf-slider.is-side-by-side .after .baf-side-caption { background:var(--bv-main,#0d9488); }
@media(max-width:700px) { .baf-slider.is-side-by-side .baf-side-caption { top:8px; left:8px; max-width:calc(100% - 16px); padding:4px 8px; font-size:11px; } }

.bv-carousel-natural .bv-carousel-track { align-items:flex-start; }

/* ============================================================
 * 확정 스타일 v2 (2026-10-02): 목록 · 상세 · 글쓰기 공통 바탕
 * 회색 묶음(#f2f2f7) + 흰 카드, 알약 버튼, 세그먼트, 선 아이콘.
 * 빌더 값(--bv-main, --bv-text, --bv-bg, 여백·최대폭)은 인라인 규칙이 그대로 이긴다.
 * 공통 옵션은 lib hive_board_v2_tokens 가 --baf-tx/tx2/tx3/line/group/card/soft 로, 바꾼 글자·카드 값은
 * hive_board_v2_option_rules 규칙으로 넣는다. 아래 값은 옵션이 기본값일 때의 v2 모양.
 * 사이트 색은 --baf-main 하나로 받고, 그 위 글자색은 --baf-on 이 자동으로 고른다.
 * ============================================================ */
.bv-wrap {
    --baf-main: var(--bv-main, var(--index_color, var(--main, var(--hv-main, #1d1d1f))));
    --baf-on: #fff;
    --baf-group: #f2f2f7;
    --baf-card: #fff;
    --baf-line: rgba(60,60,67,.12);
    --baf-soft: rgba(118,118,128,.12);
    --baf-soft-hover: rgba(118,118,128,.2);
    --baf-tx: var(--bv-text, #1d1d1f);
    --baf-tx2: #6e6e73;
    --baf-tx3: #8e8e93;
    --baf-group-hover: #e9e9ee;
    --baf-tint: color-mix(in srgb, var(--baf-main) 12%, var(--baf-card));
    --baf-ink: color-mix(in srgb, var(--baf-main) 62%, #000);
    --baf-danger: #d23f31;
    box-sizing:border-box;
    font-family:'Pretendard Variable','Pretendard','Noto Sans KR',-apple-system,BlinkMacSystemFont,sans-serif;
    word-break:keep-all; overflow-wrap:anywhere;
}
@supports (color: oklch(from red l c h)) {
    .bv-wrap { --baf-on: oklch(from var(--baf-main) clamp(0, (0.6 - l) * 1000, 1) 0 0); }
}
.bv-wrap *, .bv-wrap *::before, .bv-wrap *::after { box-sizing:border-box; }
.bv-wrap :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible { outline:2px solid var(--baf-main); outline-offset:2px; }
.bv-wrap .sound_only { position:absolute !important; width:1px !important; height:1px !important; margin:0 !important; padding:0 !important; overflow:hidden !important; clip:rect(0 0 0 0) !important; border:0 !important; white-space:nowrap !important; }
.bv-ico { display:inline-block; flex:0 0 auto; width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; vertical-align:-.2em; }
.bv-ico-sm { width:16px; height:16px; }

/* ===== 관리자 도구 ===== */
.bv-wrap .bv-admin-bar { gap:8px; padding:10px 14px; border:0; border-radius:14px; background:var(--baf-group); color:var(--baf-tx2); font-size:13px; }
.bv-wrap .bv-admin-bar strong { display:inline-flex; align-items:center; gap:6px; color:var(--baf-tx); font-weight:700; }
.bv-wrap .bv-admin-bar code { padding:2px 6px; border-radius:6px; background:var(--baf-soft); color:var(--baf-tx); font-size:12px; }
.bv-wrap .bv-admin-bar a:not(.bv-admin-btn) { color:var(--baf-ink); }
.bv-wrap .bv-admin-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:36px; padding:0 14px; border:0; border-radius:999px; background:var(--baf-main); color:var(--baf-on); font:inherit; font-size:13px; font-weight:600; line-height:1.2; text-decoration:none; cursor:pointer; transition:background-color .2s ease, filter .2s ease; }
.bv-wrap .bv-admin-btn:hover { transform:none; filter:brightness(1.05); }
.bv-wrap .bv-admin-btn.outline { background:var(--baf-soft); color:var(--baf-tx); }
.bv-wrap .bv-admin-btn.outline:hover { background:var(--baf-soft-hover); filter:none; }
.bv-wrap .bv-admin-btn.danger { background:rgba(210,63,49,.1); color:var(--baf-danger); }
.bv-wrap .bv-admin-btn.danger:hover { background:rgba(210,63,49,.16); filter:none; }

/* ===== 제목줄 · 검색 · 정렬 ===== */
.bv-wrap .bv-toolbar { gap:12px; margin-bottom:16px; }
.bv-wrap .bv-title { margin:0; color:var(--baf-tx); font-size:22px; font-weight:700; letter-spacing:-.02em; line-height:1.3; }
.bv-wrap .bv-title small { margin-left:6px; color:var(--baf-tx3); font-size:14px; font-weight:500; letter-spacing:0; }
.bv-wrap .bv-search { gap:8px; }
.bv-wrap :is(.bv-search-sel,.bv-sort-sel) {
    height:44px; padding:0 34px 0 16px; border:0; border-radius:999px; background-color:var(--baf-soft); color:var(--baf-tx);
    font:inherit; font-size:14px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%236e6e73' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat; background-position:right 15px center;
}
.bv-wrap :is(.bv-search-sel,.bv-sort-sel):hover { background-color:var(--baf-soft-hover); }
.bv-wrap .bv-search-input {
    height:44px; min-width:220px; padding:0 16px 0 40px; border:0; border-radius:999px; background-color:var(--baf-soft); color:var(--baf-tx);
    font:inherit; font-size:14px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='M21 21l-4.3-4.3'/></svg>");
    background-repeat:no-repeat; background-position:left 15px center;
}
.bv-wrap .bv-search-input::placeholder { color:var(--baf-tx3); }
.bv-wrap .bv-search-input:focus { outline:none; background-color:var(--baf-soft-hover); box-shadow:0 0 0 2px var(--baf-main); }
.bv-wrap .bv-search-btn { height:44px; padding:0 20px; border-radius:999px; background:var(--baf-main); color:var(--baf-on); font:inherit; font-size:14px; font-weight:600; }
.bv-wrap .bv-search-btn:hover { transform:none; filter:brightness(1.05); }
.bv-wrap .bv-write-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:0 20px; border-radius:999px; background:var(--baf-main); color:var(--baf-on) !important; font-size:14px; font-weight:600; }
.bv-wrap .bv-write-btn:hover { transform:none; filter:brightness(1.05); }

/* ===== 찾기 필터: 회색 묶음 + 알약 ===== */
.bv-wrap .bv-filter { padding:16px 18px; border-radius:16px; background:var(--baf-group); }
.bv-wrap .bv-filter-head { min-height:28px; margin-bottom:12px; padding-bottom:0; border-bottom:0; }
.bv-wrap .bv-filter-head h3 { color:var(--baf-tx); font-size:16px; font-weight:700; }
.bv-wrap .bv-filter-head .toggle { display:inline-flex; color:var(--baf-tx2); }
.bv-wrap .bv-filter-body { grid-template-columns:96px minmax(0,1fr); gap:10px 12px; }
.bv-wrap .bv-filter-label { color:var(--baf-tx2); font-size:13px; font-weight:600; }
.bv-wrap .bv-chip { display:inline-flex; align-items:center; min-height:36px; padding:0 14px; border-radius:999px; background:var(--baf-card); color:var(--baf-tx); font-size:13px; font-weight:500; }
.bv-wrap .bv-chip:hover { background:color-mix(in srgb, var(--baf-card) 70%, transparent); }
.bv-wrap .bv-chip.active { background:var(--baf-main); color:var(--baf-on); font-weight:600; }
.bv-wrap .bv-filter-actions { margin-top:12px; padding-top:12px; border-top:1px solid var(--baf-line); }
.bv-wrap .bv-filter-reset { display:inline-flex; align-items:center; gap:6px; min-height:36px; padding:0 14px; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx); font-size:13px; }
.bv-wrap .bv-filter-reset:hover { background:var(--baf-soft-hover); }

/* ===== 페이지 번호 ===== */
.bv-wrap .bv-pagination { margin:28px 0 20px; }
.bv-wrap .bv-pagination :is(.pg_page,.pg_current,.pg_start,.pg_prev,.pg_end,.pg_next) { min-width:40px; height:40px; padding:0 12px; border-radius:999px; color:var(--baf-tx2); font-family:inherit; font-size:14px; }
.bv-wrap .bv-pagination :is(.pg_page,.pg_start,.pg_prev,.pg_end,.pg_next):hover { background:var(--baf-soft); color:var(--baf-tx); }
.bv-wrap .bv-pagination .pg_current { background:var(--baf-main); color:var(--baf-on) !important; font-weight:700; box-shadow:none; border-radius:999px; }

/* 빈 목록 */
.bv-wrap .bv-empty { display:flex; flex-direction:column; align-items:center; gap:10px; padding:64px 20px; border-radius:16px; background:var(--baf-group); color:var(--baf-tx2); font-size:14px; text-align:center; }
.bv-wrap .bv-empty .bv-ico { width:28px; height:28px; color:var(--baf-tx3); stroke-width:1.8; }

/* 사진 없음 자리 */
.bv-wrap :is(.bv-split-empty,.bv-best-empty,.bv-baf-empty,.bv-blog-empty,.bv-hover-empty,.bv-vt-empty-row,.bv-cmp-empty,.bv-tl-empty) { gap:8px; background:var(--baf-group); color:var(--baf-tx3); font-size:13px; }
.bv-wrap :is(.bv-split-empty,.bv-best-empty,.bv-baf-empty,.bv-blog-empty,.bv-hover-empty,.bv-vt-empty-row,.bv-cmp-empty,.bv-tl-empty) .bv-ico { width:26px; height:26px; stroke-width:1.8; }

/* ===== 전후 비교 슬라이더 ===== */
.bv-wrap .baf-slider { border-radius:14px; background:var(--baf-group); }
.bv-wrap .baf-slider-label { top:14px; padding:6px 12px; border-radius:999px; background:rgba(0,0,0,.55); color:#fff; font-size:12px; font-weight:600; letter-spacing:0; }
.bv-wrap .baf-slider-label.before { left:14px; background:rgba(0,0,0,.55); }
.bv-wrap .baf-slider-label.after { right:14px; background:var(--baf-main); color:var(--baf-on); }
.bv-wrap .baf-slider-handle { width:2px; background:#fff; box-shadow:0 0 0 .5px rgba(0,0,0,.12); }
.bv-wrap .baf-slider-handle-knob { width:44px; height:44px; color:var(--baf-tx); box-shadow:0 2px 10px rgba(0,0,0,.18); }
.bv-wrap .baf-slider-handle:focus-visible { outline:none; }
.bv-wrap .baf-slider-handle:focus-visible .baf-slider-handle-knob { outline:2px solid var(--baf-main); outline-offset:3px; }
.bv-wrap .baf-slider-empty { min-height:240px; padding:48px 20px; border:0; border-radius:14px; background:var(--baf-group); color:var(--baf-tx3); font-size:14px; }
.bv-wrap .baf-slider-empty > div:first-child { font-size:0; }
.bv-wrap .baf-slider-empty .bv-ico { width:30px; height:30px; stroke-width:1.8; }
.bv-wrap .baf-slider.is-side-by-side .baf-side-caption { padding:5px 11px; border-radius:999px; background:rgba(0,0,0,.55); font-size:12px; }
.bv-wrap .baf-slider.is-side-by-side .after .baf-side-caption { background:var(--baf-main); color:var(--baf-on); }

/* ===== 슬라이더형 목록: 큰 무대 ===== */
.bv-wrap .bv-stage .baf-slider { border-radius:16px; }
.bv-wrap .bv-carousel { border-radius:16px; }
.bv-wrap .bv-stage-nav { width:44px; height:44px; background:rgba(255,255,255,.94); color:var(--baf-tx); box-shadow:0 2px 10px rgba(0,0,0,.14); }
.bv-wrap .bv-stage-nav svg { width:22px; height:22px; stroke-width:2; }
.bv-wrap .bv-stage-nav:hover { background:#fff; color:var(--baf-tx); box-shadow:0 4px 14px rgba(0,0,0,.18); }
.bv-wrap .bv-case-info { padding:22px 8px 4px; }
.bv-wrap .bv-case-tag-row { gap:10px; margin-bottom:12px; }
.bv-wrap .bv-case-cat { min-height:28px; padding:0 12px; border-radius:999px; background:var(--baf-tint); color:var(--baf-ink); font-size:12.5px; font-weight:600; letter-spacing:0; }
.bv-wrap .bv-case-title { color:var(--baf-tx); font-size:19px; font-weight:700; letter-spacing:-.02em; line-height:1.4; }
.bv-wrap .bv-case-divider { max-width:560px; height:1px; margin:0 auto 14px; border:0; background:var(--baf-line); }
.bv-wrap .bv-case-sub { margin-bottom:16px; color:var(--baf-tx2); font-size:14px; line-height:1.6; }

/* 각도 전환: 세그먼트 */
.bv-wrap :is(.bv-case-angle-tabs,.bv-slider-angle-tabs,.bv-angle-tabs) { display:inline-flex; flex-wrap:nowrap; gap:2px; max-width:100%; margin-left:auto; margin-right:auto; padding:3px; overflow-x:auto; border-radius:999px; background:var(--baf-soft); scrollbar-width:none; }
.bv-wrap :is(.bv-case-angle-tabs,.bv-slider-angle-tabs,.bv-angle-tabs)::-webkit-scrollbar { display:none; }
.bv-wrap :is(.bv-case-angle-tab,.bv-angle-tab) { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; min-width:64px; min-height:38px; padding:0 18px; border:0; border-radius:999px; background:transparent; color:var(--baf-tx2); font:inherit; font-size:14px; font-weight:600; white-space:nowrap; cursor:pointer; transition:background-color .2s ease, color .2s ease, box-shadow .2s ease; }
.bv-wrap :is(.bv-case-angle-tab,.bv-angle-tab):hover { color:var(--baf-tx); background:transparent; }
.bv-wrap :is(.bv-case-angle-tab.is-active,.bv-angle-tab.active) { background:var(--baf-card); color:var(--baf-tx); box-shadow:0 1px 3px rgba(0,0,0,.12); }
.bv-wrap .bv-angle-tab:disabled { color:var(--baf-tx3); opacity:.6; cursor:not-allowed; }

/* 점 · 숫자 · 자세히 */
.bv-wrap .bv-stage-bottom { gap:12px; padding:16px 0 0; }
.bv-wrap .bv-slide-dot { width:24px; height:44px; }
.bv-wrap .bv-slide-dot::before { width:7px; height:7px; background:#c7c7cc; }
.bv-wrap .bv-slide-dot:hover::before { background:var(--baf-tx3); }
.bv-wrap .bv-slide-dot.active::before { width:20px; border-radius:4px; background:var(--baf-main); }
.bv-wrap .bv-slide-counter { color:var(--baf-tx3); font-size:13px; }
.bv-wrap .bv-slide-counter span { color:var(--baf-tx); }
.bv-wrap :is(.bv-stage-detail,.bv-split-detail,.bv-slide-detail,.bv-tl-detail,.bv-vt-detail) { display:inline-flex; align-items:center; justify-content:center; gap:4px; min-height:44px; padding:0 14px 0 18px; border:0; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx) !important; font-size:14px; font-weight:600; text-decoration:none; transition:background-color .2s ease; }
.bv-wrap :is(.bv-stage-detail,.bv-split-detail,.bv-slide-detail,.bv-tl-detail,.bv-vt-detail):hover { background:var(--baf-soft-hover); color:var(--baf-tx) !important; transform:none; filter:none; }
.bv-wrap .bv-slide-info { padding:8px 14px; border:0; border-radius:14px; background:var(--baf-group); }
.bv-wrap .bv-slide-caption { color:var(--baf-tx); }
.bv-wrap .bv-slide-nav { background:rgba(255,255,255,.94); color:var(--baf-tx); box-shadow:0 2px 10px rgba(0,0,0,.14); }
.bv-wrap .bv-slide-nav:hover { background:#fff; }
.bv-wrap .bv-slide-nav .bv-ico { width:22px; height:22px; }
.bv-wrap :is(.bv-tag-angle,.bv-tag-phase,.bv-tag-cat) { padding:6px 12px; border-radius:999px; font-size:12px; letter-spacing:0; box-shadow:none; }
.bv-wrap .bv-tag-angle { background:rgba(255,255,255,.94); color:var(--baf-tx); }
.bv-wrap .bv-tag-phase { background:var(--baf-main); color:var(--baf-on); }

/* 다른 케이스 썸네일 */
.bv-wrap .bv-other-grid { margin:28px 0 12px; }
.bv-wrap .bv-other-card { border-radius:14px; transition:transform .2s ease; }
.bv-wrap .bv-other-card:hover { transform:none; }
.bv-wrap .bv-other-pair { gap:2px; border-radius:12px; background:var(--baf-group); box-shadow:none; }
.bv-wrap .bv-other-card:hover .bv-other-pair { box-shadow:none; filter:brightness(.97); }
.bv-wrap .bv-other-card.is-active .bv-other-pair { outline:2px solid var(--baf-main); outline-offset:2px; box-shadow:none; }
.bv-wrap .bv-other-img, .bv-wrap .bv-other-pair.is-solo { background-color:var(--baf-group); }
.bv-wrap .bv-other-cap { margin-top:8px; color:var(--baf-tx2); font-size:13px; }
.bv-wrap .bv-other-card.is-active .bv-other-cap { color:var(--baf-tx); font-weight:600; }
.bv-wrap .bv-stage-warning { color:var(--baf-tx3); font-size:12px; line-height:1.7; }

/* 로그인 안내 */
.bv-wrap .bv-login-overlay { background:rgba(28,28,30,.72); }
.bv-wrap .bv-login-btn { min-height:44px; padding:0 28px; border-radius:999px; background:var(--baf-main); color:var(--baf-on); box-shadow:none; }
.bv-wrap .bv-login-btn:hover { transform:none; filter:brightness(1.05); }

/* 다른 레이아웃: 글자 하한 11.5px · 카드 결 정리 */
.bv-wrap :is(.bv-baf-thumb-lbl,.bv-baf-angle-chip,.bv-best-cat,.bv-best-rank,.bv-best-sub,.bv-baf-cat,.bv-baf-tag,.bv-split-tag) { font-size:11.5px; }
.bv-wrap :is(.bv-baf-card,.bv-best-card) { border-radius:16px; box-shadow:none; background:var(--baf-group); }
.bv-wrap :is(.bv-baf-card,.bv-best-card):hover { transform:none; box-shadow:none; }
.bv-wrap .bv-baf-card:hover :is(.bv-baf-thumb-half,.bv-baf-thumb-solo) { transform:scale(1.03); }
.bv-wrap :is(.bv-baf-cat,.bv-split-cat) { border-radius:999px; background:var(--baf-tint); color:var(--baf-ink); }
.bv-wrap :is(.bv-baf-tag,.bv-split-tag) { border:0; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx2); }
.bv-wrap .bv-split-tag-phase { background:var(--baf-tint); color:var(--baf-ink); }
.bv-wrap :is(.bv-baf-thumb-half.after .bv-baf-thumb-lbl,.bv-split-label.after) { background:var(--baf-main); color:var(--baf-on); }
.bv-wrap :is(.bv-baf-title,.bv-split-title,.bv-best-title) { color:var(--baf-tx); }
.bv-wrap .bv-split-pair { border-radius:16px; background:var(--baf-group); box-shadow:none; }
.bv-wrap .bv-split-pair:hover { transform:none; box-shadow:none; }
.bv-wrap .bv-split-card { border-bottom-color:var(--baf-line); }
.bv-wrap .bv-best-section { border:0; border-radius:16px; background:var(--baf-group); }
.bv-wrap .bv-best-head h3 { color:var(--baf-tx); }
.bv-wrap .bv-best-sub { color:var(--baf-tx2); }
.bv-wrap .bv-best-card { background:var(--baf-card); }
.bv-wrap .bv-best-rank { background:var(--baf-main); color:var(--baf-on); box-shadow:none; }
.bv-wrap .bv-best-cat { color:var(--baf-ink); }

/* 아이콘 크기 맞춤 (기호를 선 아이콘으로 바꾼 자리) */
.bv-wrap .bv-mg-cover-btn { display:inline-flex; align-items:center; justify-content:center; }
.bv-wrap .bv-mg-cover-btn .bv-ico { width:15px; height:15px; }
.bv-wrap .bv-mg-thumb-wrap.is-cover .bv-mg-cover-btn .bv-ico { fill:currentColor; }
.bv-wrap .bv-cr-marquee-pick span .bv-ico { width:12px; height:12px; stroke-width:3; }
.bv-wrap .bv-cr-finder-head h3 .bv-ico { margin-right:6px; color:var(--baf-tx2); }
.bv-wrap .bv-cr-search-icon .bv-ico { width:20px; height:20px; }
.bv-wrap .bv-cr-popular .bv-ico { fill:currentColor; }
.bv-wrap :is(.bv-split-tag,.bv-blog-tag,.bv-tag-phase) .bv-ico { width:13px; height:13px; }
.bv-wrap .bv-tl-arrow .bv-ico { width:20px; height:20px; }
.bv-wrap .bv-mg-play .bv-ico { width:15px; height:15px; }

/* ===== 상세 ===== */
.bv-wrap .bv-view { padding:0; border-radius:0; background:transparent; box-shadow:none; }
.bv-wrap .bv-view-head { margin-bottom:20px; padding-bottom:0; border-bottom:0; gap:8px; flex-wrap:wrap; }
.bv-wrap .bv-view-actions { display:flex; gap:6px; }
.bv-wrap .bv-view-cat { display:inline-flex; align-items:center; min-height:28px; margin-bottom:10px; padding:0 12px; border-radius:999px; background:var(--baf-tint); color:var(--baf-ink); font-size:12.5px; font-weight:600; }
.bv-wrap .bv-view-title { margin:0 0 10px; color:var(--baf-tx); font-size:28px; font-weight:700; line-height:1.3; letter-spacing:-.02em; }
.bv-wrap .bv-view-meta { display:flex; flex-wrap:wrap; align-items:center; gap:4px 0; margin-bottom:8px; color:var(--baf-tx2); font-size:13px; }
.bv-wrap .bv-view-meta > span { display:inline-flex; align-items:center; gap:5px; margin:0; }
.bv-wrap .bv-view-meta > span + span::before { content:""; width:3px; height:3px; margin:0 10px; border-radius:50%; background:var(--baf-tx3); }
.bv-wrap .bv-view-meta strong { color:var(--baf-tx); font-weight:600; }
.bv-wrap .bv-view-content { margin-top:28px; color:var(--baf-o-tx-mid,#333); font-size:16px; line-height:1.75; }
.bv-wrap .bv-view-content img { border-radius:12px; }

/* 사이드 카드 */
.bv-wrap .bv-side-card { margin-bottom:0; padding:18px; border:0; border-radius:16px; background:var(--baf-group); }
.bv-wrap .bv-side-card h2 { margin:0 0 10px; color:var(--baf-tx2); font-size:13px; font-weight:600; }
.bv-wrap .bv-meta-list { display:grid; grid-template-columns:auto minmax(0,1fr); margin:0; overflow:hidden; border-radius:12px; background:var(--baf-card); }
.bv-wrap .bv-meta-list dt, .bv-wrap .bv-meta-list dd { position:relative; margin:0; padding:12px 14px; font-size:14px; line-height:1.45; }
.bv-wrap .bv-meta-list dt { padding-right:8px; color:var(--baf-tx2); font-weight:500; white-space:nowrap; }
.bv-wrap .bv-meta-list dd { color:var(--baf-tx); font-weight:500; text-align:right; }
.bv-wrap .bv-meta-list dt:not(:first-of-type)::before { content:""; position:absolute; top:0; left:14px; width:calc(100% - 14px); height:1px; background:var(--baf-line); }
.bv-wrap .bv-meta-list dd:not(:first-of-type)::before { content:""; position:absolute; top:0; left:0; right:0; height:1px; background:var(--baf-line); }
.bv-wrap .bv-side-doctor img { width:52px; height:52px; }
.bv-wrap .bv-side-doctor strong { color:var(--baf-tx); font-size:15px; }
.bv-wrap .bv-side-doctor :is(span,small) { color:var(--baf-tx2); font-size:12.5px; }
.bv-wrap .bv-side-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:0; }
.bv-wrap :is(.bv-side-btn,.bv-fav-btn,.bv-share-btn) { display:inline-flex; flex:1 1 140px; align-items:center; justify-content:center; gap:6px; width:auto; min-height:44px; margin:0; padding:0 16px; border:0; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx); font:inherit; font-size:14px; font-weight:600; text-align:center; text-decoration:none; cursor:pointer; transition:background-color .2s ease; }
.bv-wrap :is(.bv-side-btn,.bv-fav-btn,.bv-share-btn):hover { background:var(--baf-soft-hover); transform:none; filter:none; }
.bv-wrap .bv-fav-btn.on { background:var(--baf-tint); color:var(--baf-ink); }
.bv-wrap .bv-fav-btn.on .bv-ico { fill:currentColor; }

/* 유사 케이스 */
.bv-wrap .bv-similar { margin-top:40px; }
.bv-wrap .bv-similar h2 { margin:0 0 14px; color:var(--baf-tx); font-size:18px; font-weight:700; letter-spacing:-.01em; }
.bv-wrap .bv-similar-grid { grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:16px; }
.bv-wrap .bv-similar-card { border-radius:14px; }
.bv-wrap .bv-similar-thumb { margin-bottom:8px; border-radius:12px; background:var(--baf-group); }
.bv-wrap .bv-similar-title { color:var(--baf-tx); font-size:14px; font-weight:500; line-height:1.45; }
.bv-wrap .bv-similar-empty { color:var(--baf-tx3); }

/* 이전 · 다음 글 */
.bv-wrap .bv-prev-next { gap:10px; margin:40px 0 0; padding:0; border-top:0; }
.bv-wrap .bv-pn-item { gap:4px; min-height:72px; padding:14px 18px; border:0; border-radius:16px; background:var(--baf-group); transition:background-color .2s ease; }
.bv-wrap .bv-pn-item:hover { border:0; background:var(--baf-group-hover); }
.bv-wrap .bv-pn-item.disabled { opacity:1; background:var(--baf-group); }
.bv-wrap .bv-pn-item.disabled .subj { color:var(--baf-tx3); }
.bv-wrap .bv-pn-item .lbl { display:inline-flex; align-items:center; gap:4px; color:var(--baf-tx2); font-size:12.5px; font-weight:600; }
.bv-wrap .bv-pn-item.next .lbl { justify-content:flex-end; }
.bv-wrap .bv-pn-item .subj { color:var(--baf-tx); font-size:15px; font-weight:500; }
.bv-wrap .bv-comments { margin-top:32px; padding-top:24px; border-top:1px solid var(--baf-line); }

/* 상세 사진 편집(관리자) */
.bv-wrap .bv-photo-edit { padding:20px; border:0; border-radius:16px; background:var(--baf-group); }
.bv-wrap .bv-photo-edit-head h3 { display:inline-flex; align-items:center; gap:6px; color:var(--baf-tx); font-size:16px; }
.bv-wrap .bv-photo-edit-head p { color:var(--baf-tx2); font-size:12.5px; }
.bv-wrap .bv-photo-edit-row { border:0; border-radius:14px; background:var(--baf-card); }
.bv-wrap .bv-photo-edit-row-lbl { border-right-color:var(--baf-line); color:var(--baf-tx); }
.bv-wrap .bv-photo-cell-empty .ico .bv-ico { width:22px; height:22px; }
.bv-wrap .bv-photo-cell-del { display:inline-flex; align-items:center; justify-content:center; }
.bv-wrap .bv-photo-cell-del .bv-ico { width:14px; height:14px; stroke-width:2.4; }

/* 확대 보기 닫기 */
.bv-lightbox-close { display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; color:#1d1d1f; }
.bv-lightbox-close .bv-ico { width:20px; height:20px; }
.bv-lightbox-close:focus-visible { outline:2px solid #fff; outline-offset:3px; }

/* ===== 글쓰기: 회색 바탕 위 흰 묶음 ===== */
.bv-wrap .bv-write { max-width:920px; padding:28px; border-radius:20px; background:var(--baf-group); box-shadow:none; }
.bv-wrap .bv-write-head { margin-bottom:20px; padding:0 4px; border-bottom:0; }
.bv-wrap .bv-write-head :is(h1,h2) { color:var(--baf-tx); font-size:24px; letter-spacing:-.02em; }
.bv-wrap .bv-write-help { color:var(--baf-tx2); font-size:14px; line-height:1.6; }
.bv-wrap .bv-write-help strong { color:var(--baf-tx); }
.bv-wrap .bv-write-tbl { margin-bottom:8px; border-collapse:separate; border-spacing:0; overflow:hidden; border-radius:16px; background:var(--baf-card); table-layout:fixed; }
.bv-wrap .bv-write-tbl :is(th,td) { border-bottom:0; background-color:var(--baf-card); }
.bv-wrap .bv-write-tbl th { padding:16px 8px 16px 18px; color:var(--baf-tx); font-size:14px; font-weight:600; line-height:1.4; }
.bv-wrap .bv-write-tbl td { padding:10px 18px 10px 8px; color:var(--baf-tx); font-size:14px; }
.bv-wrap .bv-write-tbl tr:not(.section) + tr:not(.section) > th { background-image:linear-gradient(var(--baf-line),var(--baf-line)); background-repeat:no-repeat; background-size:calc(100% - 18px) 1px; background-position:right top; }
.bv-wrap .bv-write-tbl tr:not(.section) + tr:not(.section) > td { background-image:linear-gradient(var(--baf-line),var(--baf-line)); background-repeat:no-repeat; background-size:100% 1px; background-position:left top; }
.bv-wrap .bv-write-tbl tr.section th { padding:26px 18px 8px; border:0; border-radius:0; background:var(--baf-group); color:var(--baf-tx2); font-size:13px; font-weight:600; letter-spacing:0; }
.bv-wrap .bv-write-tbl tr.section:first-child th { padding-top:10px; }
.bv-wrap .bv-write-tbl tr.section + tr th { padding-top:16px; }
.bv-wrap .bv-write-tbl .req { margin-left:2px; color:var(--baf-danger); }
.bv-wrap .bv-write-tbl code { padding:1px 6px; border-radius:6px; background:var(--baf-soft); color:var(--baf-tx); font-size:12.5px; }
.bv-wrap .bv-input { min-height:44px; padding:10px 14px; border:1px solid transparent; border-radius:12px; background-color:var(--baf-group); color:var(--baf-tx); font-size:15px; line-height:1.45; }
.bv-wrap .bv-input::placeholder { color:var(--baf-tx3); }
.bv-wrap .bv-input:focus { outline:none; border-color:var(--baf-main); background-color:var(--baf-card); box-shadow:0 0 0 3px color-mix(in srgb, var(--baf-main) 18%, transparent); }
.bv-wrap textarea.bv-input { min-height:96px; }
.bv-wrap select.bv-input { padding-right:38px; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%236e6e73' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>"); background-repeat:no-repeat; background-position:right 14px center; }
.bv-wrap input[type="file"].bv-input { padding:9px 12px; font-size:14px; }
.bv-wrap .bv-help { margin-top:6px; color:var(--baf-tx2); font-size:12.5px; line-height:1.55; }
.bv-wrap .bv-radio-group { gap:8px; padding:4px 0; }
.bv-wrap .bv-radio-group label { min-height:44px; padding:0 16px; border:0; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx); font-size:14px; }
.bv-wrap .bv-radio-group label:hover { border:0; background:var(--baf-soft-hover); }
.bv-wrap .bv-radio-group label:has(input:checked) { background:var(--baf-tint); color:var(--baf-ink); font-weight:600; }
.bv-wrap .bv-radio-group input[type="radio"], .bv-wrap .bv-radio-group input[type="checkbox"] { width:18px; height:18px; margin:0; accent-color:var(--baf-main); }
.bv-wrap .bv-no-content-check { min-height:44px; margin:0 0 4px; padding:0 16px 0 12px; border:0; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx); font-size:14px; font-weight:600; }
.bv-wrap .bv-no-content-box { border:2px solid var(--baf-tx3); border-radius:6px; background:var(--baf-card); color:transparent; }
.bv-wrap .bv-no-content-box .bv-ico { width:14px; height:14px; stroke-width:3; }
.bv-wrap .bv-no-content-check input:checked + .bv-no-content-box { border-color:var(--baf-main); background:var(--baf-main); color:var(--baf-on); }
.bv-wrap .bv-no-content-check input:focus-visible + .bv-no-content-box { outline:2px solid var(--baf-main); outline-offset:2px; }
.bv-wrap .bv-write-notice { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; padding:12px 14px; border-radius:12px; background:#fff4e5; color:#7a4a00; font-size:13px; }
.bv-wrap .bv-write-notice a { color:inherit; font-weight:600; text-decoration:underline; }
.bv-wrap .bv-link-search { max-width:320px; margin-bottom:8px; }
.bv-wrap .bv-link-list { max-height:260px; overflow-y:auto; padding:6px; border-radius:12px; background:var(--baf-group); }
.bv-wrap .bv-link-cat { margin:10px 8px 4px; color:var(--baf-tx3); font-size:12px; font-weight:600; }
.bv-wrap .bv-link-cat:first-child { margin-top:4px; }
.bv-wrap .baf-link-row { display:flex; align-items:center; gap:10px; min-height:44px; padding:6px 10px; border-radius:10px; color:var(--baf-tx); font-size:14px; cursor:pointer; }
.bv-wrap .baf-link-row:hover { background:var(--baf-card); }
.bv-wrap .baf-link-row .baf-link-cb { position:static !important; flex:none; width:18px; height:18px; margin:0; opacity:1 !important; accent-color:var(--baf-main); cursor:pointer; appearance:auto !important; -webkit-appearance:checkbox !important; }
.bv-wrap .baf-link-row .num { color:var(--baf-tx3); font-size:12px; }
.bv-wrap .bv-write-actions { gap:8px; margin-top:20px; padding-top:0; border-top:0; }
.bv-wrap .bv-btn-submit { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 30px; border-radius:999px; background:var(--baf-main); color:var(--baf-on); font:inherit; font-size:16px; font-weight:700; letter-spacing:0; }
.bv-wrap .bv-btn-submit:hover { transform:none; filter:brightness(1.05); }
.bv-wrap .bv-btn-submit:disabled { background:var(--baf-soft); color:var(--baf-tx3); cursor:wait; }
.bv-wrap .bv-btn-cancel { justify-content:center; min-height:50px; padding:0 26px; border-radius:999px; background:var(--baf-soft); color:var(--baf-tx); font-size:16px; }
.bv-wrap .bv-btn-cancel:hover { background:var(--baf-soft-hover); }

/* ===== 태블릿 · 휴대폰 ===== */
@media (max-width:900px) {
    .bv-wrap .bv-view-grid { gap:24px; }
}
@media (max-width:700px) {
    .bv-wrap .bv-toolbar { gap:10px; margin-bottom:12px; }
    .bv-wrap .bv-title { width:100%; font-size:21px; }
    .bv-wrap .bv-search-input { min-width:0; font-size:16px; }
    .bv-wrap .bv-filter-body { grid-template-columns:minmax(0,1fr); gap:6px; }
    .bv-wrap .bv-filter-label { margin-top:6px; }
    .bv-wrap .bv-write { padding:18px 12px; border-radius:16px; }
    .bv-wrap .bv-write-head { padding:0 4px; }
    .bv-wrap .bv-write-head :is(h1,h2) { font-size:22px; }
    /* 좁은 화면: 표를 블록으로 풀어 칸 최소폭 때문에 밖으로 넘치지 않게 */
    .bv-wrap .bv-write-tbl, .bv-wrap .bv-write-tbl tbody, .bv-wrap .bv-write-tbl tr { display:block; width:100%; }
    .bv-wrap .bv-write-tbl colgroup { display:none; }
    .bv-wrap .bv-write-tbl th { display:block; width:auto; padding:14px 16px 6px; }
    .bv-wrap .bv-write-tbl td { display:block; padding:0 16px 14px; }
    .bv-wrap .bv-write-tbl tr:not(.section) + tr:not(.section) > th { background-size:calc(100% - 16px) 1px; }
    .bv-wrap .bv-write-tbl tr:not(.section) + tr:not(.section) > td { background-image:none; }
    .bv-wrap .bv-write-tbl tr.section th { padding:22px 16px 8px; }
    .bv-wrap .bv-input { font-size:16px; }
    .bv-wrap .bv-input.small { width:100%; max-width:200px; }
    .bv-wrap .bv-link-search { max-width:none; width:100%; }
    .bv-wrap .bv-write-actions { flex-direction:column-reverse; }
    .bv-wrap :is(.bv-btn-submit,.bv-btn-cancel) { width:100%; }
    .bv-wrap .bv-prev-next { gap:8px; }
    .bv-wrap .bv-pn-item.next { text-align:left; }
    .bv-wrap .bv-pn-item.next .lbl { justify-content:flex-start; }
}
@media (max-width:600px) {
    .bv-wrap .bv-stage .baf-slider, .bv-wrap .bv-carousel { border-radius:14px; }
    .bv-wrap .bv-stage-nav { width:40px; height:40px; }
    .bv-wrap .bv-case-info { padding:16px 0 0; }
    .bv-wrap .bv-case-title { font-size:17px; }
    .bv-wrap .bv-case-sub { font-size:13px; }
    .bv-wrap :is(.bv-case-angle-tab,.bv-angle-tab) { min-width:56px; padding:0 14px; font-size:13.5px; }
    .bv-wrap .bv-stage-bottom { gap:8px; }
    .bv-wrap .bv-stage-detail { margin-left:0; }
    .bv-wrap .bv-other-grid { margin:22px 0 8px; }
    .bv-wrap .bv-other-cap { font-size:12.5px; }
    .bv-wrap .baf-slider-label { top:10px; padding:5px 10px; font-size:11.5px; }
    .bv-wrap .baf-slider-label.before { left:10px; }
    .bv-wrap .baf-slider-label.after { right:10px; }
    .bv-wrap .bv-view-title { font-size:23px; }
    .bv-wrap .bv-view-content { margin-top:22px; font-size:15px; line-height:1.7; }
    .bv-wrap .bv-similar-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
    .bv-wrap .bv-side-card { padding:16px; }
    .bv-wrap .bv-photo-edit { padding:14px; }
}
@media (prefers-reduced-motion:reduce) {
    .bv-wrap :is(.bv-admin-btn,.bv-case-angle-tab,.bv-angle-tab,.bv-stage-detail,.bv-other-card,.bv-side-btn,.bv-fav-btn,.bv-pn-item,.bv-stage-nav) { transition:none; }
    .bv-wrap .bv-carousel-track { transition:none; }
    .bv-wrap .bv-baf-card:hover :is(.bv-baf-thumb-half,.bv-baf-thumb-solo) { transform:none; }
}
/* 환자 동의·게시 기간(글쓰기·관리자 목록 안내) */
.bv-consent-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.bv-input-date{max-width:200px}
.bv-consent-quick{display:inline-flex;gap:6px}
.bv-consent-quick button{min-height:40px;padding:0 14px;border:1px solid var(--baf-line,#d2d2d7);border-radius:999px;background:#fff;color:#1d1d1f;font:inherit;font-size:13px;cursor:pointer}
.bv-consent-quick button:hover{background:var(--baf-group,#f2f2f7)}
.bv-consent-quick button:focus-visible{outline:2px solid #0066cc;outline-offset:2px}
.bv-consent-state{margin:8px 0 0;padding:8px 12px;border-radius:10px;background:#fff7e6;color:#7a4b00;font-size:13px;word-break:keep-all}
.bv-consent-state.is-hidden{background:#fdecec;color:#8a1c1c}
.bv-consent-note{margin:0 0 16px;padding:14px 16px;border-radius:14px;background:#fff7e6;color:#5c3b00;font-size:13px;line-height:1.6;word-break:keep-all}
.bv-consent-note p{margin:0 0 6px}
.bv-consent-note strong{margin-right:8px}
.bv-consent-note a{display:inline-block;margin-right:10px;color:inherit;text-decoration:underline}
.bv-consent-note small{color:#7a5a1f}
