/* ─────────────────────────────────────────────────────────────
   viewer2 — 새 주보 뷰어 (시험 중)
   한 화면 = 한 페이지 · 책장 넘김 · 스크롤할 때만 보이는 유리 메뉴
   글씨 크기·줄간격·여백은 보기 설정(view_settings.php)의 --jubo-* 변수를 따른다.
   ───────────────────────────────────────────────────────────── */
@font-face { font-family: 'RIDIBatang'; src: url('/RIDIBatang.otf') format('opentype'); font-display: swap; }
/* 사이트 글꼴 마루부리 (네이버 한글 웹폰트, mobile.css 와 같은 주소). 굵기별로 한 이름에 묶는다 */
@font-face { font-family: 'V2Maru'; font-weight: 300; font-display: swap; src: url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Light.woff2) format('woff2'), url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Light.woff) format('woff'); }
@font-face { font-family: 'V2Maru'; font-weight: 400; font-display: swap; src: url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Regular.woff2) format('woff2'), url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Regular.woff) format('woff'); }
@font-face { font-family: 'V2Maru'; font-weight: 600; font-display: swap; src: url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-SemiBold.woff2) format('woff2'), url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-SemiBold.woff) format('woff'); }
@font-face { font-family: 'V2Maru'; font-weight: 700; font-display: swap; src: url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Bold.woff2) format('woff2'), url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Bold.woff) format('woff'); }

html:has(body.v2), body.v2 { height: 100%; margin: 0; overflow: hidden; overscroll-behavior: none; }
body.v2 {
    --ink: #1f2328;
    --ink-soft: #4a5058;
    --accent: var(--main-color-darker, #3a3a3a);
    --accent-soft: var(--main-color-dark, #666);
    --rule: rgba(0, 0, 0, .08);
    --soft: rgba(255, 255, 255, .45);
    --page-bg: #fbfaf7;
    --veil: linear-gradient(180deg, rgba(255,255,255,.38), rgba(255,255,255,.50));
    --glass: rgba(255, 255, 255, .42);
    --glass-line: rgba(255, 255, 255, .55);
    --glass-ink: #1f2328;
    --gold: #b08040;
    --font: var(--jubo-font, 18px);
    --lh: var(--jubo-lh, 1.75);
    --gap: var(--jubo-p-space, 12px);
    --side: var(--jubo-margin, 20px);
    background: #222;
    color: var(--ink);
    font-family: 'V2Maru', MaruBuri, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
    -webkit-font-smoothing: antialiased;
    -webkit-tap-highlight-color: transparent;
}
body.v2.theme-light { --page-bg: #fbfaf7; }
body.v2.theme-dark {
    --ink: #e8e6e3; --ink-soft: #b4b0aa; --accent: #f0ede8; --accent-soft: #c9c4bc;
    --rule: rgba(255,255,255,.1); --soft: rgba(255,255,255,.06);
    --page-bg: #17181a; --glass: rgba(30,31,34,.55); --glass-line: rgba(255,255,255,.12); --glass-ink: #eee;
    --gold: #c9a96e;
    background: #000;
}
body.v2 button, body.v2 input { font-family: inherit; }
/* 글꼴 선택 (설정): 마루부리(기본) · 리디바탕 · 시스템. 성경 절 본문은 맑은물성경처럼 늘 리디바탕 */
body.v2[data-face="ridi"] { font-family: 'RIDIBatang', 'V2Maru', serif; }
body.v2[data-face="system"] { font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; }
.face-maru { font-family: 'V2Maru', serif; }
.face-ridi { font-family: 'RIDIBatang', serif; }
.face-system { font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; }
.v2-faces b { font-size: 17px; font-weight: 400; }
body.v2 #hd_login_msg, body.v2 #hd, body.v2 #container_title { display: none !important; }
/* 테마 공통 css 의 '* { transition: all .2s }' 를 끈다. 켜 두면 책장 넘김이 손가락보다 늦게 따라오고 잘린 모양이 어긋난다.
   (:where 로 우선순위를 0 으로 두어, 아래에서 따로 지정한 전환은 그대로 살아 있다) */
:where(body.v2) *, :where(body.v2) *::before, :where(body.v2) *::after { transition: none; }

/* 배경 (그래픽 테마일 때 각 페이지에 같은 그림이 깔린다) */
.v2-backdrop { position: fixed; inset: 0; background: var(--page-bg); }

/* ── 책 ─────────────────────────────────────────────────── */
.v2-book {
    position: fixed; inset: 0;
    overflow: hidden;
    touch-action: pan-y;
}
.v2-leaf { position: absolute; inset: 0; overflow: hidden; visibility: hidden; transform-origin: 0 0; }
.v2-page { position: absolute; inset: 0; transform-origin: 0 0; background: var(--page-bg); }
/* 그래픽 테마: 배경 그림을 아주 흐리게 깔고 옅은 막을 덮는다 (흐림은 서버에서 만든 작은 사본) */
body.v2.theme-graphic .v2-page,
body.v2.theme-graphic .v2-flap { background: var(--veil), var(--v2-bg-img) center / cover no-repeat, #e9e6e1; }
.v2-leaf.is-current, .v2-leaf.is-under, .v2-leaf.is-turning { visibility: visible; }
.v2-leaf.is-current { z-index: 2; }
.v2-leaf.is-under { z-index: 1; }
.v2-leaf.is-turning { z-index: 3; }
.v2-leaf.is-turning, .v2-leaf.is-turning > .v2-page, .v2-flapleaf, .v2-flap, .v2-ushadow { will-change: transform; }
.v2-book.fade .v2-leaf { transition: opacity .3s ease; }

/* 책장 넘김 (Apple 책 방식): 접힌 면(flap), 접힌 자리 음영, 아래 페이지에 드리운 그림자 */
.v2-flapleaf { position: absolute; left: 0; top: 0; z-index: 4; overflow: hidden; pointer-events: none; transform-origin: 0 0; }
.v2-flap { position: absolute; left: 0; top: 0; transform-origin: 0 0; background: var(--page-bg); box-shadow: 0 0 28px rgba(0,0,0,.35); }
/* 뒷면에 비치는 앞면 글씨 (거울처럼, 흐리게) */
.v2-flap > .v2-page { opacity: .22; background: none !important; pointer-events: none; }
.v2-flap::after { content: ''; position: absolute; inset: 0; background: rgba(255,255,255,.35); }
body.v2.theme-dark .v2-flap::after { background: rgba(255,255,255,.03); }
/* 말린 부분의 둥근 음영: 접힌 선 쪽이 어둡고, 조금 안쪽이 밝게 반사 */
.v2-crease { position: absolute; top: 0; z-index: 1; background: linear-gradient(270deg, rgba(0,0,0,.30) 0%, rgba(0,0,0,.08) 8%, rgba(255,255,255,.55) 22%, rgba(255,255,255,0) 55%, rgba(0,0,0,.10) 100%); }
.v2-ushadow { position: absolute; left: 0; top: 0; z-index: 2; pointer-events: none; transform-origin: 0 0;
    background: linear-gradient(90deg, rgba(0,0,0,.5), rgba(0,0,0,.18) 25%, transparent); }
.v2-scroll {
    position: absolute; inset: 0;
    overflow-y: auto; overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    touch-action: pan-y;
    scrollbar-width: none;
    padding: calc(env(safe-area-inset-top, 0px) + 56px) var(--side) calc(env(safe-area-inset-bottom, 0px) + 96px);
    box-sizing: border-box;
}
.v2-scroll::-webkit-scrollbar { display: none; }
.v2-body { max-width: 680px; margin: 0 auto; }

/* 페이지 제목 */
.v2-h {
    max-width: 680px; margin: 0 auto 28px;
    font-size: calc(var(--font) * 1.22); font-weight: 700; letter-spacing: -.02em; line-height: 1.35;
    color: var(--accent);
    padding-bottom: 14px;
    border-bottom: 1px solid var(--rule);
    position: relative;
}
.v2-h::after { content: ''; position: absolute; left: 0; bottom: -1px; width: 36px; height: 2px; background: var(--accent-soft); border-radius: 2px; }

/* 본문 */
.v2-body p { font-size: var(--font); line-height: var(--lh); margin: 0 0 var(--gap); color: var(--ink); word-break: keep-all; overflow-wrap: anywhere; }
.v2-body img { max-width: 100%; height: auto; display: block; }
.v2-body b, .v2-body strong { color: var(--accent); }
.v2-amen { margin-top: calc(var(--gap) * 2) !important; font-weight: 700; color: var(--accent) !important; }
.v2-who { font-weight: 700; color: var(--accent) !important; font-size: calc(var(--font) * .85) !important; letter-spacing: .04em; margin-top: calc(var(--gap) * 2) !important; }
.v2-who:first-child { margin-top: 0 !important; }

/* 이미지 페이지: 화면 폭 가득 (찬양 악보 등) */
.v2-image .v2-scroll { padding-left: 0; padding-right: 0; }
/* 제목은 가운데 놓인 악보(최대 900px)의 왼쪽 끝에 맞춘다. 좁은 화면에서는 양옆 여백만큼 들여 쓴다 */
.v2-image .v2-h { max-width: min(900px, calc(100% - var(--side) * 2)); margin-left: auto; margin-right: auto; }
.v2-image .v2-body { max-width: 900px; min-height: 100%; display: flex; align-items: center; }
.v2-image .v2-body img { width: 100%; }
.v2-wide-img { margin: 0 calc(var(--side) * -1) var(--gap) !important; }
.v2-wide-img img { width: 100%; }
.v2-intro-img img { width: 100%; border-radius: 4px; }

/* Celebration: 첫 화면 */
.v2-first .v2-h { font-family: 'RIDIBatang', serif; font-weight: 400; font-size: calc(var(--font) * 2); border: 0; letter-spacing: 0; }
.v2-first .v2-h::after { display: none; }

/* 예배 순서 */
.v2-order p {
    display: grid; grid-template-columns: 1fr auto; grid-template-areas: "l r" "c c";
    align-items: center; gap: 4px 12px;
    margin: 0 !important; padding: 14px 0;
    border-bottom: 1px solid var(--rule);
}
.v2-order p:last-child { border-bottom: 0; }
.v2-order .left { grid-area: l; font-weight: 600; color: var(--ink); }
.v2-order .right { grid-area: r; font-size: .85em; color: var(--accent-soft); text-align: right; }
.v2-order .center { grid-area: c; font-size: .9em; color: var(--accent); display: flex; flex-direction: column; gap: 2px; }
.v2-order .center:empty { display: none; }
.v2-order .jump-link { cursor: pointer; }
.v2-order .jump-link .left::after { content: '›'; margin-left: 6px; color: var(--accent-soft); font-weight: 400; }
.v2-order .jump-link:active { background: var(--soft); }
@media (min-width: 560px) {
    .v2-order p { grid-template-columns: 9em 1fr auto; grid-template-areas: "l c r"; }
    .v2-order .center { text-align: center; }
}

/* 신앙고백: 둘 다 보일 때는 소제목과 넉넉한 간격으로 나눈다. 설정에서 하나만 고를 수 있다 */
.v2-sub {
    display: inline-block; margin: 0 0 calc(var(--gap) * 1.2); padding: 4px 12px; border-radius: 999px;
    font-size: calc(var(--font) * .72); font-weight: 600; letter-spacing: .02em; line-height: 1.5;
    color: var(--accent); background: var(--soft); border: 1px solid var(--rule);
}
.v2-creed + .v2-creed { margin-top: calc(var(--gap) * 4 + 16px); }
body[data-creed="mgm"] .v2-creed[data-creed="apostles"],
body[data-creed="apostles"] .v2-creed[data-creed="mgm"] { display: none; }
body[data-creed="mgm"] .v2-creed + .v2-creed, body[data-creed="apostles"] .v2-creed + .v2-creed { margin-top: 0; }

/* 성경 본문: 맑은물성경 스타일 */
.v2-body .bible-verses { list-style: none; margin: 0 0 var(--gap); padding: 0; }
.v2-body .bible-verses li { display: flex; gap: .5em; margin-bottom: .6em; font-size: var(--font); line-height: var(--lh); color: var(--ink); }
.v2-body .bible-verses .v-num { flex: 0 0 auto; min-width: 1.5em; font-size: .7em; font-weight: 700; color: var(--gold); margin-top: .6em; font-family: -apple-system, 'Apple SD Gothic Neo', sans-serif; }
.v2-body .bible-verses .v-text { flex: 1; font-family: 'RIDIBatang', serif; }
.v2-body .b-text { font-family: 'RIDIBatang', serif; }
.v2-body .bible-comment {
    margin: calc(var(--gap) * 2) 0 0; padding: 16px 18px;
    background: var(--soft); border-left: 3px solid var(--accent-soft); border-radius: 0 6px 6px 0;
    font-size: calc(var(--font) * .92); line-height: 1.7; color: var(--ink);
}
.v2-sermon-title { text-align: left; font-weight: 700; color: var(--accent) !important; font-size: calc(var(--font) * 1.1) !important; margin: 18px 0 6px !important; }
.v2-body .v2-reftag {
    display: table; margin: 0 0 calc(var(--gap) * 1.4) !important; padding: 3px 12px; border-radius: 999px;
    font-size: calc(var(--font) * .74) !important; font-weight: 600; line-height: 1.6 !important; letter-spacing: .02em;
    color: var(--accent) !important; background: rgba(255, 255, 255, .55); border: 1px solid var(--rule);
    font-family: inherit !important;
}
body.v2.theme-dark .v2-body .v2-reftag { background: rgba(255, 255, 255, .06); }
.v2-blessing { text-align: center; font-family: 'RIDIBatang', serif; }

/* 유튜브: 화면 폭 가득 */
.v2-video { position: relative; margin: 0 calc(var(--side) * -1) var(--gap); aspect-ratio: 16 / 9; background: #000; }
.v2-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* 광고: 카드 대신 구분선 */
.v2-anno .anno-card { padding: 4px 0 18px; margin-bottom: 18px; border-bottom: 1px solid var(--rule); }
.v2-anno .anno-card:last-child { border-bottom: 0; }
.v2-anno .anno-header { font-weight: 700; color: var(--accent); font-size: calc(var(--font) * 1.05); line-height: 1.55; margin-bottom: 12px; }
.v2-anno { word-break: keep-all; overflow-wrap: anywhere; }
.v2-anno .anno-header:has(.no) { display: flex; gap: .35em; }
.v2-anno .anno-header .no { flex: 0 0 auto; min-width: 1.1em; font-variant-numeric: tabular-nums; }
.v2-anno .anno-list { list-style: none; margin: 0; padding: 0; }
.v2-anno .anno-list li { display: flex; gap: .35em; font-size: var(--font); line-height: 1.65; margin: 4px 0; color: var(--ink); }
.v2-anno .anno-list li::before { content: '•'; color: var(--accent-soft); flex: 0 0 auto; }
.v2-anno .anno-list li.sub { padding-left: 1.2em; opacity: .85; font-size: calc(var(--font) * .95); }
.v2-anno .anno-list li.sub::before { content: '-'; }
.v2-anno .anno-list li.category { font-weight: 700; color: var(--accent); margin-top: 12px; }
.v2-anno .anno-list li.category::before { content: '▸'; }
.v2-anno .anno-list li.notice { display: block; padding: 10px 14px; background: var(--soft); border-left: 3px solid var(--accent-soft); border-radius: 0 6px 6px 0; font-size: calc(var(--font) * .92); }
.v2-anno .anno-list li.notice::before { content: none; }

/* 마지막: 공감 · 출처 */
.v2-end { margin-top: 40px; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.v2-good {
    display: inline-flex; align-items: center; gap: 8px; padding: 10px 22px; border-radius: 999px;
    background: var(--glass); border: 1px solid var(--glass-line); color: var(--glass-ink) !important; text-decoration: none;
    backdrop-filter: blur(14px) saturate(160%); -webkit-backdrop-filter: blur(14px) saturate(160%);
}
.v2-end .bg-credit { font-size: 11px; opacity: .7; }

/* ── 유리 메뉴 (위·아래) ─────────────────────────────────── */
.v2-glass {
    background: var(--glass);
    border: 1px solid var(--glass-line);
    backdrop-filter: blur(20px) saturate(160%); -webkit-backdrop-filter: blur(20px) saturate(160%);
    box-shadow: 0 8px 32px rgba(0, 0, 0, .12), inset 0 1px 0 rgba(255, 255, 255, .35);
    color: var(--glass-ink);
}
.v2-top, .v2-bottom {
    position: fixed; left: 0; right: 0; z-index: 50;
    padding: 0 10px; box-sizing: border-box;
    transition: transform .35s cubic-bezier(.2,.7,.2,1), opacity .25s ease;
    pointer-events: none;
}
.v2-top { top: 0; padding-top: calc(env(safe-area-inset-top, 0px) + 8px); transform: translateY(-120%); opacity: 0; }
.v2-bottom { bottom: 0; padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 10px); transform: translateY(120%); opacity: 0; }
body.v2.top-on .v2-top, body.v2.bottom-on .v2-bottom { transform: none; opacity: 1; }
.v2-top > .v2-glass, .v2-bottom > .v2-glass { pointer-events: auto; max-width: 680px; margin: 0 auto; }
body.v2:not(.top-on) .v2-top > .v2-glass, body.v2:not(.bottom-on) .v2-bottom > .v2-glass { pointer-events: none; }

.v2-top .v2-glass { border-radius: 20px; padding: 8px 8px 8px 16px; }
.v2-top-row { display: flex; align-items: center; gap: 8px; }
.v2-title { flex: 1; min-width: 0; margin: 0; font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--glass-ink); }
.v2-count { font-size: 12px; opacity: .65; font-variant-numeric: tabular-nums; }
.v2-icon { width: 34px; height: 34px; border-radius: 50%; border: 0; background: transparent; color: var(--glass-ink); font-size: 16px; cursor: pointer; }
.v2-icon:active { background: rgba(255,255,255,.3); }
.v2-tabs { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 6px -8px 0 -16px; padding: 2px 8px 2px 12px; scroll-padding: 0 40px; }
.v2-tabs::-webkit-scrollbar { display: none; }
.v2-tabs button {
    flex: 0 0 auto; border: 1px solid transparent; background: rgba(255,255,255,.18); color: var(--glass-ink);
    font: inherit; font-size: 13px; padding: 6px 12px; border-radius: 999px; cursor: pointer; white-space: nowrap; opacity: .8;
}
body.v2.theme-dark .v2-tabs button { background: rgba(255,255,255,.06); }
body.v2 .v2-tabs button.on { background: var(--glass-ink); color: var(--page-bg); opacity: 1; font-weight: 600; }
body.v2.theme-graphic .v2-tabs button.on { color: #fff; background: var(--accent); }

.v2-bottom .v2-glass { border-radius: 24px; display: flex; justify-content: space-around; padding: 6px; max-width: 420px; }
.v2-btn {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 0 4px;
    border: 0; background: none; color: var(--glass-ink); text-decoration: none; font: inherit; cursor: pointer; border-radius: 16px;
}
.v2-btn i { font-size: 17px; }
.v2-btn span { font-size: 10.5px; opacity: .75; }
.v2-btn:active { background: rgba(255,255,255,.3); }

/* 맨 위 얇은 진행 표시 (메뉴가 숨어 있어도 보임) */
.v2-progress { position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 49; pointer-events: none; }
.v2-progress i { display: block; height: 100%; width: 0; background: var(--accent-soft); opacity: .6; transition: width .4s ease; }

/* 보기 설정 (아래에서 올라오는 유리 시트) */
.v2-sheet { position: fixed; inset: 0; z-index: 60; display: flex; align-items: flex-end; justify-content: center; background: rgba(0,0,0,.18); }
.v2-sheet[hidden] { display: none; }
.v2-sheet-in {
    width: 100%; max-width: 480px; margin: 0 10px calc(env(safe-area-inset-bottom, 0px) + 10px);
    border-radius: 26px; padding: 0 18px 18px; box-sizing: border-box;
    max-height: calc(100dvh - env(safe-area-inset-top, 0px) - 30px); overflow-y: auto; overscroll-behavior: contain;
    animation: v2-up .28s cubic-bezier(.2,.7,.2,1);
}
@keyframes v2-up { from { transform: translateY(30px); opacity: 0; } }
/* 제목·닫기·아래 선은 스크롤해도 위에 붙어 있다 */
.v2-sheet-head {
    position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between;
    margin: 0 -18px; padding: 14px 18px 10px; border-bottom: 1px solid var(--rule);
    background: var(--sheet-head, rgba(238, 238, 236, .97)); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
}
body.v2.theme-dark .v2-sheet-head { --sheet-head: rgba(34, 35, 38, .97); }
.v2-sheet-head + .v2-set { border-top: 0; }
.v2-sheet-head h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--glass-ink); }
.v2-set { display: block; padding: 12px 0; border-top: 1px solid var(--rule); color: var(--glass-ink); }
.v2-set-label { display: flex; justify-content: space-between; font-size: 13.5px; font-weight: 600; margin-bottom: 10px; opacity: .85; }
.v2-set-label output { font-weight: 400; font-variant-numeric: tabular-nums; opacity: .8; }
.v2-seg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 4px; border-radius: 14px; background: rgba(0,0,0,.06); }
body.v2.theme-dark .v2-seg { background: rgba(255,255,255,.06); }
.v2-seg button {
    display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 4px; border: 0; border-radius: 11px;
    background: transparent; color: var(--glass-ink); font: inherit; font-size: 12.5px; cursor: pointer;
}
.v2-seg button i { font-size: 15px; font-style: normal; }
.v2-seg button.on { background: var(--card-on, rgba(255,255,255,.85)); box-shadow: 0 2px 8px rgba(0,0,0,.1); font-weight: 700; }
body.v2.theme-dark .v2-seg button.on { background: rgba(255,255,255,.14); }
.v2-seg .sw { display: block; width: 26px; height: 26px; border-radius: 50%; border: 1px solid rgba(0,0,0,.12); }
.sw-light { background: #fbfaf7; }
.sw-dark { background: #17181a; }
.sw-graphic { background: var(--v2-bg-img) center / cover, #ddd; }
.v2-range input[type=range] { width: 100%; margin: 0; accent-color: var(--accent); height: 28px; }
.v2-reset { width: 100%; margin-top: 8px; padding: 10px; border: 1px solid var(--rule); border-radius: 12px; background: transparent; color: var(--glass-ink); font: inherit; font-size: 13px; cursor: pointer; opacity: .8; }

/* 슬라이드 넘김 */
.v2-leaf.is-sliding { visibility: visible; will-change: transform; }
.v2-leaf.is-sliding.is-current { z-index: 2; }

@media (prefers-reduced-motion: reduce) {
    .v2-top, .v2-bottom { transition: opacity .2s ease; }
}

/* 시편기도: 한 줄씩 같은 간격의 띠. 회중 응답(기울임 줄)만 밝게 */
.v2-psalm .v2-body p { margin: 0 calc(var(--side) * -1) !important; padding: 9px var(--side); }
.v2-psalm .v2-body p:has(> i) { padding: 0; }
.v2-psalm .v2-body p i {
    display: block; padding: 9px var(--side);
    background: rgba(255, 255, 255, .5);
    font-style: normal; font-weight: 700; color: var(--accent);
}
body.v2.theme-dark .v2-psalm .v2-body p i { background: rgba(255, 255, 255, .08); }

/* 붙여 넣은 글에서 생기는 빈 문단은 숨김 */
.v2-body p:empty { display: none; }
/* 링크 */
.v2-body a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--rule); word-break: break-all; }
/* 기도문 출처 (뉴스앤조이 등): 작은 태그 */
.v2-body .v2-source { display: inline-block; margin-top: calc(var(--gap) * 1.5) !important; padding: 3px 10px; border-radius: 999px;
    font-size: calc(var(--font) * .68) !important; line-height: 1.6 !important; color: var(--ink-soft) !important; background: var(--soft); border: 1px solid var(--rule); }
.v2-body .v2-source a { border: 0; color: inherit; }
/* 묵상 안내 상자 안의 소제목 (본문 배경 · 관찰 질문 · 묵상질문) */
/* 신앙고백 소제목과 같은 태그 모양 */
.v2-body .bible-comment .v2-gh {
    display: table; margin: 14px 0 6px; padding: 2px 10px; border-radius: 999px;
    font-size: .78em; font-weight: 600; line-height: 1.6; color: var(--accent);
    background: rgba(255, 255, 255, .55); border: 1px solid var(--rule);
}
body.v2.theme-dark .v2-body .bible-comment .v2-gh { background: rgba(255, 255, 255, .06); }
.v2-body .bible-comment .v2-gh:first-child { margin-top: 0; }

/* ── 표지 ── */
body.v2 .v2-page.v2-cover { background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.35) 70%, rgba(255,255,255,.55)), var(--v2-bg-sharp) center / cover no-repeat, #ddd; }
.v2-cover .v2-scroll { display: flex; align-items: center; justify-content: center; padding-top: 0; padding-bottom: 0; }
.v2-cover .v2-body { width: 100%; text-align: center; }
.v2-cover-in { display: flex; flex-direction: column; align-items: center; }
.v2-logo {
    width: min(58vw, 260px); aspect-ratio: 1193 / 502; margin-bottom: 34px;
    background: var(--main-color-darker, #555);
    -webkit-mask: url(/img/logotext.png) center / contain no-repeat; mask: url(/img/logotext.png) center / contain no-repeat;
}
.v2-cover .v2-body .v2-cover-kicker { margin: -18px 0 18px; font-size: 13px; letter-spacing: .3em; color: #4a5058; }
.v2-cover .v2-body .v2-cover-date { margin: 0 0 8px; font-size: 15px; letter-spacing: .18em; color: #3a3d42; font-variant-numeric: tabular-nums; }
.v2-cover-title { margin: 0; font-size: 22px; font-weight: 700; line-height: 1.45; color: #1f2328; word-break: keep-all; max-width: 15em; }
.v2-cover .v2-body .v2-cover-hint { position: absolute; left: 0; right: 0; bottom: calc(env(safe-area-inset-bottom, 0px) + 28px); margin: 0; font-size: 12.5px; letter-spacing: .08em; color: #4a5058; opacity: .7; animation: v2-hint 2.4s ease-in-out infinite; }
@keyframes v2-hint { 50% { transform: translateX(6px); opacity: .45; } }

/* ── 페이지 제목 세 가지 안 (주소 ?t=a|b|c 로 비교) ── */
/* b: 번호 + 큰 제목, 선 없음 */
body.v2[data-title="b"] .v2-h { border: 0; padding-bottom: 0; margin-bottom: 26px; font-size: calc(var(--font) * 1.28); }
body.v2[data-title="b"] .v2-h::after { display: none; }
body.v2[data-title="b"] .v2-h::before { content: attr(data-no); display: block; margin-bottom: 8px; font-size: 12px; font-weight: 600; letter-spacing: .24em; color: var(--accent-soft); font-variant-numeric: tabular-nums; }
/* c: 가운데 제목 + 선·점·선 장식 */
body.v2[data-title="c"] .v2-h { border: 0; text-align: center; padding-bottom: 0; margin-bottom: 30px; }
body.v2[data-title="c"] .v2-h::after {
    position: static; display: block; width: 64px; height: 9px; margin: 14px auto 0; border-radius: 0;
    background: radial-gradient(circle, var(--accent-soft) 2.2px, transparent 2.8px) center / 9px 9px no-repeat,
                linear-gradient(var(--accent-soft), var(--accent-soft)) left center / 24px 1px no-repeat,
                linear-gradient(var(--accent-soft), var(--accent-soft)) right center / 24px 1px no-repeat;
}

/* ── 악보 확대 (두 번 탭) ── */
.v2-image.zoom .v2-scroll { overflow: auto; touch-action: pan-x pan-y; }
.v2-image.zoom .v2-body { max-width: none; width: 220%; display: block; }
.v2-image.zoom .v2-h { display: none; }

/* 기울임(<i>) — 기존 주보 보기와 같은 뜻으로: 기울이지 않고 '강조 줄'로 보여 준다
   · 기도문 (함께 드리는 / 정의와 평화 / 공동체): 기도 제목 → 왼쪽 선이 있는 굵은 줄
   · 시편기도: 회중 응답 → 화면 폭 띠 (위에서 따로 지정)
   · 그 밖: 굵게만 */
.v2-body i, .v2-body em { font-style: normal; font-weight: 700; color: var(--accent); }
.v2-body p > i:only-child, .v2-body p > em:only-child, .v2-body p.v2-topic {
    display: block; position: relative; padding-left: 13px;
    font-size: .95em; line-height: 1.55;
}
/* 왼쪽 선은 글자 높이만큼만 (줄 간격까지 닿지 않게) */
.v2-body p > i:only-child::before, .v2-body p > em:only-child::before, .v2-body p.v2-topic::before {
    content: ''; position: absolute; left: 0; top: .32em; bottom: .32em; width: 3px; border-radius: 2px; background: var(--accent-soft);
}
.v2-body p:has(> i:only-child) { margin-top: calc(var(--gap) * 1.8); margin-bottom: calc(var(--gap) + 8px); }
.v2-body p:first-child:has(> i:only-child) { margin-top: 0; }
.v2-psalm .v2-body p > i:only-child { padding: 9px var(--side); border-left: 0; font-size: inherit; line-height: inherit; }
.v2-psalm .v2-body p > i:only-child::before { display: none; }
.v2-psalm .v2-body p:has(> i:only-child) { margin-bottom: 0 !important; }
.v2-psalm .v2-body p:has(> i:only-child) { margin-top: 0; }

/* 광고 줄 모양 (annoItem) */
.v2-anno .anno-list li.kv, .v2-anno .anno-list li.dt { display: grid; grid-template-columns: minmax(4.6em, auto) 1fr; gap: 10px; align-items: baseline; margin: 7px 0; }
.v2-anno .anno-list li.kv::before, .v2-anno .anno-list li.dt::before, .v2-anno .anno-list li.quote::before { content: none; }
.v2-anno .kv .k {
    justify-self: start; padding: 1px 9px; border-radius: 999px; white-space: nowrap;
    font-size: .76em; font-weight: 600; color: var(--accent); background: rgba(255, 255, 255, .55); border: 1px solid var(--rule);
}
body.v2.theme-dark .v2-anno .kv .k { background: rgba(255, 255, 255, .06); }
.v2-anno .anno-list li.kv.minor { font-size: calc(var(--font) * .94); }
.v2-anno .kv.minor .k { background: transparent; }
.v2-anno .dt .d { font-weight: 700; color: var(--accent); font-size: .92em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.v2-anno .sep { font-style: normal; font-weight: 400; color: var(--accent-soft); margin: 0 .15em; }
.v2-anno .anno-list li.quote { display: block; margin: 8px 0 12px; padding: 0; font-family: 'RIDIBatang', serif; font-size: calc(var(--font) * 1.08) !important; color: var(--accent) !important; }

/* 고정 소제목 줄 (함께 축복하기 첫 줄) */
.v2-body p.v2-topic { font-weight: 700; color: var(--accent); font-size: calc(var(--font) * .95); line-height: 1.55; margin-bottom: calc(var(--gap) + 8px); }
